@forge/cli

13.4.0-next.3-experimental-f258a6d13.4.0-next.5-experimental-016ed9d
out/command-line/controller/site-controller.js
+out/command-line/controller/site-controller.jsNew file
+39
Index: package/out/command-line/controller/site-controller.js
===================================================================
--- package/out/command-line/controller/site-controller.js
+++ package/out/command-line/controller/site-controller.js
@@ -0,0 +1,39 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.SiteController = void 0;
+const site_1 = require("../../site");
+class SiteController {
+    view;
+    siteService;
+    constructor(view, siteService) {
+        this.view = view;
+        this.siteService = siteService;
+    }
+    async provision() {
+        const existing = await this.view.checkForExistingSite(() => this.siteService.getExistingSite());
+        if (existing) {
+            this.view.alreadyExists();
+            this.view.renderSite(existing);
+            return;
+        }
+        const result = await this.view.requestSite(() => this.siteService.provision());
+        await this.pollAndRender(result.taskId);
+    }
+    async pollAndRender(taskId) {
+        const outcome = await this.view.watchProvisioning(() => this.siteService.pollProvisioning(taskId, {
+            timeoutMs: site_1.DEFAULT_PROVISION_TIMEOUT_MS,
+            intervalMs: site_1.DEFAULT_PROVISION_POLL_INTERVAL_MS,
+            onStatus: (status) => this.view.reportStatus(status)
+        }));
+        if (outcome.kind === 'timeout') {
+            this.view.backgroundTimeout();
+            return;
+        }
+        if (outcome.kind === 'completedWithErrors') {
+            this.view.completedWithErrors();
+        }
+        this.view.renderSite(outcome.provisioning.site);
+    }
+}
+exports.SiteController = SiteController;
+//# sourceMappingURL=site-controller.js.map
\ No newline at end of file