@forge/cli
13.4.0-next.5-experimental-c57557413.4.0-next.7-experimental-ccd5143
out/site/site-service.js~
out/site/site-service.jsModified+32−2
Index: package/out/site/site-service.js
===================================================================
--- package/out/site/site-service.js
+++ package/out/site/site-service.js
@@ -1,24 +1,54 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-exports.SiteService = exports.SiteProvisioningFailedError = exports.DEFAULT_PROVISION_POLL_INTERVAL_MS = exports.DEFAULT_PROVISION_TIMEOUT_MS = void 0;
+exports.SiteService = exports.isActiveDemoSite = exports.SiteProvisioningFailedError = exports.DEFAULT_PROVISION_POLL_INTERVAL_MS = exports.DEFAULT_PROVISION_TIMEOUT_MS = void 0;
const cli_shared_1 = require("@forge/cli-shared");
+const INACTIVE_SITE_STATUSES = ['EXPIRED', 'DEACTIVATED', 'DELETED', 'INACTIVE', 'FAILED'];
exports.DEFAULT_PROVISION_TIMEOUT_MS = 3 * 60 * 1000;
exports.DEFAULT_PROVISION_POLL_INTERVAL_MS = 5 * 1000;
class SiteProvisioningFailedError extends cli_shared_1.UserError {
}
exports.SiteProvisioningFailedError = SiteProvisioningFailedError;
+const isActiveDemoSite = (site) => {
+ if (!site?.siteUrl) {
+ return false;
+ }
+ if (site.status && INACTIVE_SITE_STATUSES.includes(site.status.toUpperCase())) {
+ return false;
+ }
+ if (site.expiresAt) {
+ const expiresAt = Date.parse(site.expiresAt);
+ if (!Number.isNaN(expiresAt) && expiresAt <= Date.now()) {
+ return false;
+ }
+ }
+ return true;
+};
+exports.isActiveDemoSite = isActiveDemoSite;
class SiteService {
client;
- constructor(client) {
+ logger;
+ constructor(client, logger = cli_shared_1.NullLogger) {
this.client = client;
+ this.logger = logger;
}
async provision() {
return this.client.provisionDemoSite();
}
async getExistingSite() {
return this.client.getDemoSite();
}
+ async hasActiveDemoSite() {
+ try {
+ const site = await this.client.getDemoSite();
+ this.logger.debug(cli_shared_1.Text.site.debug.demoSiteLookup(site?.siteUrl, site?.status, site?.expiresAt));
+ return (0, exports.isActiveDemoSite)(site);
+ }
+ catch (error) {
+ this.logger.debug(cli_shared_1.Text.site.debug.demoSiteLookupFailed(error instanceof Error ? error.message : String(error)));
+ return true;
+ }
+ }
async pollProvisioning(taskId, options = {}) {
const timeoutMs = options.timeoutMs ?? exports.DEFAULT_PROVISION_TIMEOUT_MS;
const intervalMs = options.intervalMs ?? exports.DEFAULT_PROVISION_POLL_INTERVAL_MS;
const deadline = Date.now() + timeoutMs;