(workspaceName: string)
| 534 | } |
| 535 | |
| 536 | async ensureProvisioningSession(workspaceName: string): Promise<CoderApiSession> { |
| 537 | const existing = this.provisioningSessions.get(workspaceName); |
| 538 | if (existing) { |
| 539 | return existing; |
| 540 | } |
| 541 | |
| 542 | const pending = this.provisioningSessionPromises.get(workspaceName); |
| 543 | if (pending) { |
| 544 | return pending; |
| 545 | } |
| 546 | |
| 547 | const tokenName = `mux-${workspaceName}-${Date.now().toString(36)}`; |
| 548 | const sessionPromise = this.createApiSession(tokenName) |
| 549 | .then((session) => { |
| 550 | this.provisioningSessions.set(workspaceName, session); |
| 551 | this.provisioningSessionPromises.delete(workspaceName); |
| 552 | return session; |
| 553 | }) |
| 554 | .catch((error: unknown) => { |
| 555 | this.provisioningSessionPromises.delete(workspaceName); |
| 556 | throw error; |
| 557 | }); |
| 558 | this.provisioningSessionPromises.set(workspaceName, sessionPromise); |
| 559 | return sessionPromise; |
| 560 | } |
| 561 | |
| 562 | takeProvisioningSession(workspaceName: string): CoderApiSession | undefined { |
| 563 | const session = this.provisioningSessions.get(workspaceName); |
no test coverage detected