UNPKG

@wix/cli

Version:

CLI tool for building Wix sites and applications

733 lines (719 loc) 24.7 kB
import { createRequire as _createRequire } from 'node:module'; const require = _createRequire(import.meta.url); import { useHttpClient } from "./chunk-FYLO6WOU.js"; import { usePanoramaMethodLogger } from "./chunk-3B6VL2WO.js"; import { isHttpApplicationError, isHttpError, pRetry, resolveUrl, serializer, toURLSearchParams } from "./chunk-CCWE4DS6.js"; import { require_index_node } from "./chunk-U5H3SP3I.js"; import { require_react } from "./chunk-QNHANFRW.js"; import { getTestOverrides } from "./chunk-XZUGLEBK.js"; import { external_exports } from "./chunk-SDLCFZRL.js"; import { CliError, CliErrorCode } from "./chunk-CO5A7CZG.js"; import { __toESM, init_esm_shims } from "./chunk-EXLZF52D.js"; // ../backend-as-a-service-client/src/useBackendAsAServiceClient.ts init_esm_shims(); var import_react = __toESM(require_react(), 1); // ../cli-http-client/src/fetch-error.ts init_esm_shims(); var import_http_client = __toESM(require_index_node(), 1); async function createHttpErrorFromFetch(originalResponse) { const res = originalResponse.clone(); return (0, import_http_client.createHttpError)({ name: "Error", message: `Request failed with status code ${res.status}`, response: { config: {}, data: await res.text(), status: res.status, statusText: res.statusText, headers: Object.fromEntries(res.headers) }, code: res.statusText, config: {}, toJSON: () => res, __CANCEL__: false }); } // ../backend-as-a-service-client/src/backend-as-a-service-client.ts init_esm_shims(); import { randomUUID } from "node:crypto"; // ../../node_modules/@wix/ambassador-velo-backend-v1-app-deployment/es/build/http.impl.js init_esm_shims(); var _appDeployment = { createdDate: "google.protobuf.Timestamp", updatedDate: "google.protobuf.Timestamp" }; var _completeAppDeploymentRequest = { appDeployment: "_appDeployment" }; var _completeAppDeploymentResponse = { appDeployment: "_appDeployment" }; var _createAppDeploymentRequest = { appDeployment: "_appDeployment" }; var _createAppDeploymentResponse = { appDeployment: "_appDeployment" }; function resolveWixVeloBackendV1AppDeploymentManagementUrl(opts) { var domainToMappings = { "manage._base_domain_": [ { srcPath: "/_api/wix-code-app-deployments", destPath: "" } ] }; return resolveUrl(Object.assign(opts, { domainToMappings })); } function createAppDeployment(payload) { var _a = serializer(_createAppDeploymentRequest, { _appDeployment }), toReq = _a.toJSON, fromReq = _a.fromJSON; var fromRes = serializer(_createAppDeploymentResponse, { _appDeployment }).fromJSON; function __createAppDeployment(_a2) { var host = _a2.host; var serializedData = toReq(payload); var metadata = { entityFqdn: "wix.velo.backend.v1.app_deployment", method: "POST", methodFqn: "wix.velo.backend.v1.AppDeploymentManagement.CreateAppDeployment", migrationOptions: { optInTransformResponse: true }, url: resolveWixVeloBackendV1AppDeploymentManagementUrl({ protoPath: "/v1/app-projects/{appDeployment.appProjectId}/app-deployments", data: serializedData, host }), data: serializedData, transformResponse: fromRes }; return metadata; } __createAppDeployment.fromReq = fromReq; __createAppDeployment.__isAmbassador = true; return __createAppDeployment; } function completeAppDeployment(payload) { var _a = serializer(_completeAppDeploymentRequest, { _appDeployment }), toReq = _a.toJSON, fromReq = _a.fromJSON; var fromRes = serializer(_completeAppDeploymentResponse, { _appDeployment }).fromJSON; function __completeAppDeployment(_a2) { var host = _a2.host; var serializedData = toReq(payload); var metadata = { entityFqdn: "wix.velo.backend.v1.app_deployment", method: "POST", methodFqn: "wix.velo.backend.v1.AppDeploymentManagement.CompleteAppDeployment", migrationOptions: { optInTransformResponse: true }, url: resolveWixVeloBackendV1AppDeploymentManagementUrl({ protoPath: "/v1/app-projects/{appDeployment.appProjectId}/app-deployments/{appDeployment.id}/complete", data: serializedData, host }), data: serializedData, transformResponse: fromRes }; return metadata; } __completeAppDeployment.fromReq = fromReq; __completeAppDeployment.__isAmbassador = true; return __completeAppDeployment; } // ../../node_modules/@wix/ambassador-velo-backend-v1-app-project/build/es/http.impl.js init_esm_shims(); var _appProject = { createdDate: "google.protobuf.Timestamp", updatedDate: "google.protobuf.Timestamp", customDomain: "_customDomain" }; var _createAppProjectRequest = { appProject: "_appProject" }; var _createAppProjectResponse = { appProject: "_appProject" }; var _customDomain = { connectionDate: "google.protobuf.Timestamp" }; var _getAppProjectRequest = {}; var _getAppProjectResponse = { appProject: "_appProject" }; function resolveWixVeloBackendV1AppProjectLifecycleUrl(opts) { var domainToMappings = { "manage._base_domain_": [ { srcPath: "/_api/wix-code-app-projects", destPath: "" } ], "www._base_domain_": [ { srcPath: "/_api/wix-code-app-projects", destPath: "" } ], "vibe._base_domain_": [ { srcPath: "/_api/wix-code-app-projects", destPath: "" } ] }; return resolveUrl(Object.assign(opts, { domainToMappings })); } function createAppProject(payload) { var _a = serializer(_createAppProjectRequest, { _appProject, _customDomain }), toReq = _a.toJSON, fromReq = _a.fromJSON; var fromRes = serializer(_createAppProjectResponse, { _appProject, _customDomain }).fromJSON; function __createAppProject(_a2) { var host = _a2.host; var serializedData = toReq(payload); var metadata = { entityFqdn: "wix.velo.backend.v1.app_project", method: "POST", methodFqn: "wix.velo.backend.v1.AppProjectLifecycle.CreateAppProject", migrationOptions: { optInTransformResponse: true }, url: resolveWixVeloBackendV1AppProjectLifecycleUrl({ protoPath: "/v1/app-projects", data: serializedData, host }), data: serializedData, transformResponse: fromRes }; return metadata; } __createAppProject.fromReq = fromReq; __createAppProject.__isAmbassador = true; return __createAppProject; } function getAppProject(payload) { var _a = serializer(_getAppProjectRequest, {}), toReq = _a.toJSON, fromReq = _a.fromJSON; var fromRes = serializer(_getAppProjectResponse, { _appProject, _customDomain }).fromJSON; function __getAppProject(_a2) { var host = _a2.host; var serializedData = toReq(payload); var metadata = { entityFqdn: "wix.velo.backend.v1.app_project", method: "GET", methodFqn: "wix.velo.backend.v1.AppProjectLifecycle.GetAppProject", migrationOptions: { optInTransformResponse: true }, url: resolveWixVeloBackendV1AppProjectLifecycleUrl({ protoPath: "/v1/app-projects/{appProjectId}", data: serializedData, host }), params: toURLSearchParams(serializedData), transformResponse: fromRes }; return metadata; } __getAppProject.fromReq = fromReq; __getAppProject.__isAmbassador = true; return __getAppProject; } // ../../node_modules/@wix/ambassador-velo-backend-v2-app-environment-variable/es/build/http.impl.js init_esm_shims(); var _appEnvironmentVariable = { createdDate: "google.protobuf.Timestamp", updatedDate: "google.protobuf.Timestamp" }; var _bulkAppEnvironmentVariableResult = { item: "_appEnvironmentVariable" }; var _bulkUpsertAppEnvironmentVariablesRequest = {}; var _bulkUpsertAppEnvironmentVariablesResponse = { results: "_bulkAppEnvironmentVariableResult", appEnvironmentVariables: "_appEnvironmentVariable" }; var _deleteAppEnvironmentVariableByEnvironmentAndKeyRequest = {}; var _deleteAppEnvironmentVariableByEnvironmentAndKeyResponse = {}; var _getAppEnvironmentVariablesByEnvironmentRequest = {}; var _getAppEnvironmentVariablesByEnvironmentResponse = { appEnvironmentVariables: "_appEnvironmentVariable" }; function resolveWixVeloBackendV2AppEnvironmentVariableServiceUrl(opts) { var domainToMappings = { "manage._base_domain_": [ { srcPath: "/_api/wix-code-app-environments", destPath: "" } ] }; return resolveUrl(Object.assign(opts, { domainToMappings })); } function bulkUpsertAppEnvironmentVariables(payload) { var _a = serializer(_bulkUpsertAppEnvironmentVariablesRequest, {}), toReq = _a.toJSON, fromReq = _a.fromJSON; var fromRes = serializer(_bulkUpsertAppEnvironmentVariablesResponse, { _appEnvironmentVariable, _bulkAppEnvironmentVariableResult }).fromJSON; function __bulkUpsertAppEnvironmentVariables(_a2) { var host = _a2.host; var serializedData = toReq(payload); var metadata = { entityFqdn: "wix.velo.backend.v2.app_environment_variable", method: "POST", methodFqn: "wix.velo.backend.v2.AppEnvironmentVariableService.BulkUpsertAppEnvironmentVariables", migrationOptions: { optInTransformResponse: true }, url: resolveWixVeloBackendV2AppEnvironmentVariableServiceUrl({ protoPath: "/v2/bulk/app-projects/{appProjectId}/app-environment-variables/upsert", data: serializedData, host }), data: serializedData, transformResponse: fromRes }; return metadata; } __bulkUpsertAppEnvironmentVariables.fromReq = fromReq; __bulkUpsertAppEnvironmentVariables.__isAmbassador = true; return __bulkUpsertAppEnvironmentVariables; } function getAppEnvironmentVariablesByEnvironment(payload) { var _a = serializer(_getAppEnvironmentVariablesByEnvironmentRequest, {}), toReq = _a.toJSON, fromReq = _a.fromJSON; var fromRes = serializer(_getAppEnvironmentVariablesByEnvironmentResponse, { _appEnvironmentVariable }).fromJSON; function __getAppEnvironmentVariablesByEnvironment(_a2) { var host = _a2.host; var serializedData = toReq(payload); var metadata = { entityFqdn: "wix.velo.backend.v2.app_environment_variable", method: "GET", methodFqn: "wix.velo.backend.v2.AppEnvironmentVariableService.GetAppEnvironmentVariablesByEnvironment", migrationOptions: { optInTransformResponse: true }, url: resolveWixVeloBackendV2AppEnvironmentVariableServiceUrl({ protoPath: "/v2/app-projects/{appProjectId}/app-environment-variables/environment/{environment}", data: serializedData, host }), params: toURLSearchParams(serializedData), transformResponse: fromRes }; return metadata; } __getAppEnvironmentVariablesByEnvironment.fromReq = fromReq; __getAppEnvironmentVariablesByEnvironment.__isAmbassador = true; return __getAppEnvironmentVariablesByEnvironment; } function deleteAppEnvironmentVariableByEnvironmentAndKey(payload) { var _a = serializer(_deleteAppEnvironmentVariableByEnvironmentAndKeyRequest, {}), toReq = _a.toJSON, fromReq = _a.fromJSON; var fromRes = serializer(_deleteAppEnvironmentVariableByEnvironmentAndKeyResponse, {}).fromJSON; function __deleteAppEnvironmentVariableByEnvironmentAndKey(_a2) { var host = _a2.host; var serializedData = toReq(payload); var metadata = { entityFqdn: "wix.velo.backend.v2.app_environment_variable", method: "DELETE", methodFqn: "wix.velo.backend.v2.AppEnvironmentVariableService.DeleteAppEnvironmentVariableByEnvironmentAndKey", migrationOptions: { optInTransformResponse: true }, url: resolveWixVeloBackendV2AppEnvironmentVariableServiceUrl({ protoPath: "/v2/app-projects/{appProjectId}/app-environment-variables/environment/{environment}/key/{key}", data: serializedData, host }), params: toURLSearchParams(serializedData), transformResponse: fromRes }; return metadata; } __deleteAppEnvironmentVariableByEnvironmentAndKey.fromReq = fromReq; __deleteAppEnvironmentVariableByEnvironmentAndKey.__isAmbassador = true; return __deleteAppEnvironmentVariableByEnvironmentAndKey; } // ../../node_modules/@wix/ambassador-velo-backend-v2-app-environment-variable/es/build/types.impl.js init_esm_shims(); var WebhookIdentityType; (function(WebhookIdentityType3) { WebhookIdentityType3["UNKNOWN"] = "UNKNOWN"; WebhookIdentityType3["ANONYMOUS_VISITOR"] = "ANONYMOUS_VISITOR"; WebhookIdentityType3["MEMBER"] = "MEMBER"; WebhookIdentityType3["WIX_USER"] = "WIX_USER"; WebhookIdentityType3["APP"] = "APP"; })(WebhookIdentityType || (WebhookIdentityType = {})); var SortOrder; (function(SortOrder3) { SortOrder3["ASC"] = "ASC"; SortOrder3["DESC"] = "DESC"; })(SortOrder || (SortOrder = {})); var Mutability; (function(Mutability2) { Mutability2["UNKNOWN_MUTABILITY"] = "UNKNOWN_MUTABILITY"; Mutability2["STATIC"] = "STATIC"; Mutability2["DYNAMIC"] = "DYNAMIC"; })(Mutability || (Mutability = {})); var Sensitivity; (function(Sensitivity2) { Sensitivity2["UNKNOWN_SENSITIVITY"] = "UNKNOWN_SENSITIVITY"; Sensitivity2["PUBLIC"] = "PUBLIC"; Sensitivity2["SECRET"] = "SECRET"; })(Sensitivity || (Sensitivity = {})); // ../backend-as-a-service-client/src/schemas.ts init_esm_shims(); // ../../node_modules/@wix/ambassador-velo-backend-v1-app-deployment/es/build/types.impl.js init_esm_shims(); var CloudProvider; (function(CloudProvider2) { CloudProvider2["UNKNOWN_CLOUD_PROVIDER"] = "UNKNOWN_CLOUD_PROVIDER"; CloudProvider2["CLOUD_FLARE"] = "CLOUD_FLARE"; CloudProvider2["KUBERNETES"] = "KUBERNETES"; })(CloudProvider || (CloudProvider = {})); var DeploymentState; (function(DeploymentState2) { DeploymentState2["UNKNOWN_DEPLOYMENT_STATE"] = "UNKNOWN_DEPLOYMENT_STATE"; DeploymentState2["STATICS_UPLOAD_PENDING"] = "STATICS_UPLOAD_PENDING"; DeploymentState2["DEPLOY_SUCCESS"] = "DEPLOY_SUCCESS"; DeploymentState2["DEPLOY_FAILED"] = "DEPLOY_FAILED"; })(DeploymentState || (DeploymentState = {})); var SortOrder2; (function(SortOrder3) { SortOrder3["ASC"] = "ASC"; SortOrder3["DESC"] = "DESC"; })(SortOrder2 || (SortOrder2 = {})); var WebhookIdentityType2; (function(WebhookIdentityType3) { WebhookIdentityType3["UNKNOWN"] = "UNKNOWN"; WebhookIdentityType3["ANONYMOUS_VISITOR"] = "ANONYMOUS_VISITOR"; WebhookIdentityType3["MEMBER"] = "MEMBER"; WebhookIdentityType3["WIX_USER"] = "WIX_USER"; WebhookIdentityType3["APP"] = "APP"; })(WebhookIdentityType2 || (WebhookIdentityType2 = {})); // ../backend-as-a-service-client/src/schemas.ts var staticFileMetadata = external_exports.object({ path: external_exports.string(), hash: external_exports.string(), size: external_exports.number().optional(), contentType: external_exports.string() }); var StaticFileUploadUrlSchema = external_exports.object({ uploadUrl: external_exports.string().url(), staticFileMetadata }); var AppDeploymentSchema = external_exports.object({ id: external_exports.string().uuid(), deploymentBaseUrl: external_exports.string(), cloudProviderOverride: external_exports.nativeEnum(CloudProvider) }).passthrough(); var CompleteAppDeploymentSchema = external_exports.object({ appDeployment: AppDeploymentSchema }); var AppProjectSchema = external_exports.object({ appProject: external_exports.object({ id: external_exports.string().uuid(), baseUrl: external_exports.string().url(), customDomain: external_exports.object({ domain: external_exports.string() }).optional() }) }); var CreateAppProjectSchema = external_exports.object({ appProject: external_exports.object({ id: external_exports.string().uuid(), baseUrl: external_exports.string().url(), customDomain: external_exports.object({ domain: external_exports.string() }).optional() }) }); var CreateAppDeploymentSchema = external_exports.object({ staticFilesUploadUrls: external_exports.array(StaticFileUploadUrlSchema).optional(), uploadAuthToken: external_exports.string().optional(), appDeployment: AppDeploymentSchema.optional(), uploadBuckets: external_exports.array( external_exports.object({ hashes: external_exports.array(external_exports.string()).optional() }) ).optional() }); var StaticFileUploadSchema = external_exports.object({ result: external_exports.object({ // The `jwt` field is optional because it is only returned in the last file upload. jwt: external_exports.string().optional() }).optional() }).passthrough(); var AppEnvironmentVariableSchema = external_exports.object({ key: external_exports.string(), value: external_exports.string() }); var AppEnvironmentVariablesSchema = external_exports.array(AppEnvironmentVariableSchema).optional().transform((variables) => { return (variables ?? []).reduce((acc, curr) => { acc[curr.key] = curr.value; return acc; }, {}); }); var GetAppEnvironmentVariablesSchema = external_exports.object({ appEnvironmentVariables: AppEnvironmentVariablesSchema }); var UpsertAppEnvironmentVariablesSchema = external_exports.object({ appEnvironmentVariables: AppEnvironmentVariablesSchema, results: external_exports.array(external_exports.unknown()).optional(), bulkActionMetadata: external_exports.object({ totalSuccesses: external_exports.number().optional(), totalFailures: external_exports.number().optional(), undetailedFailures: external_exports.number().optional() }).optional() }); // ../backend-as-a-service-client/src/backend-as-a-service-client.ts var { minRetryTimeout } = getTestOverrides(); var APP_PROJECT_TYPE_ID = "79144b61-68b9-4b0b-bfa7-e3adfa610101"; var HEADLESS_PROJECT_TYPE_ID = "eb363dea-85a0-4159-9b05-949542be5079"; var BackendAsAServiceClient = class { constructor(httpClient) { this.httpClient = httpClient; this.retryOptions = { retries: 3, minTimeout: minRetryTimeout, maxTimeout: 3 * 1e3 }; } retryOptions; getAppProject = async (appId) => { try { const { data } = await pRetry( () => this.httpClient.request(getAppProject({ appProjectId: appId })), this.retryOptions ); return AppProjectSchema.parse(data).appProject; } catch (e) { if (isHttpError(e) && e.response?.status === 404) { return; } throw new CliError({ code: CliErrorCode.FailedToGetAppProject(), cause: e }); } }; createAppProject = async ({ cloudProvider, projectType, ...appProjectOptions }) => { try { const { data } = await this.httpClient.request( createAppProject({ appProject: { ...appProjectOptions, appProjectTypeId: projectType === "HEADLESS" ? HEADLESS_PROJECT_TYPE_ID : APP_PROJECT_TYPE_ID, cloudProviderOverride: cloudProvider } }) ); return CreateAppProjectSchema.parse(data).appProject; } catch (e) { throw new CliError({ code: CliErrorCode.FailedCreatingAppProject(), cause: e }); } }; createAppDeployment = async (appId, files, staticFilesMetadata, generateAppDeploymentGroupId) => { try { const { data } = await pRetry( () => this.httpClient.request( createAppDeployment({ appDeployment: { appProjectId: appId, files, staticFilesMetadata, appDeploymentGroupId: generateAppDeploymentGroupId ? randomUUID() : void 0 } }) ), this.retryOptions ); return CreateAppDeploymentSchema.parse(data); } catch (e) { throw new CliError({ code: CliErrorCode.FailedCreatingAppDeployment(), cause: e }); } }; completeAppDeployment = async (appDeployment, staticsCompletionToken) => { try { const { data } = await pRetry( () => this.httpClient.request( completeAppDeployment({ appDeployment, staticsCompletionToken }) ), this.retryOptions ); return CompleteAppDeploymentSchema.parse(data).appDeployment; } catch (e) { throw new CliError({ code: CliErrorCode.FailedFinalizingAppDeployment(), cause: e }); } }; postForm = async (endpointUrl, token, formData) => { try { const responseJson = await pRetry( async () => { const response = await fetch(endpointUrl, { method: "POST", headers: { Authorization: `Bearer ${token}` }, body: formData }); if (!response.ok) { const error = await createHttpErrorFromFetch(response); throw error; } return response.json(); }, { retries: 3 } ); return StaticFileUploadSchema.parse(responseJson); } catch (e) { throw new CliError({ code: CliErrorCode.FailedToUploadStaticFiles(), cause: e, info: { endpointUrl } }); } }; putBinaryFile = async (endpointUrl, fileContent, contentType) => { try { await pRetry( async () => { const response = await fetch(endpointUrl, { method: "PUT", headers: { "Content-Type": contentType }, body: fileContent }); if (!response.ok) { const error = await createHttpErrorFromFetch(response); throw error; } }, { retries: 3 } ); } catch (e) { throw new CliError({ code: CliErrorCode.FailedToUploadStaticFiles(), cause: e, info: { endpointUrl } }); } }; // Env management getAppEnvironmentVariables = async (appId, environment) => { try { const { data } = await pRetry( () => this.httpClient.request( getAppEnvironmentVariablesByEnvironment({ appProjectId: appId, environment }) ), this.retryOptions ); const { appEnvironmentVariables } = GetAppEnvironmentVariablesSchema.parse(data); return appEnvironmentVariables; } catch (e) { throw new CliError({ code: CliErrorCode.FailedToGetAppEnvironmentVariablesByEnvironment(), cause: e }); } }; upsertAppEnvironmentVariables = async (appId, environment, variables) => { let result; try { const { data } = await this.httpClient.request( bulkUpsertAppEnvironmentVariables({ appProjectId: appId, environment, variables, mutability: Mutability.STATIC, returnEntity: true, returnAllEnvironment: true }) ); result = UpsertAppEnvironmentVariablesSchema.parse(data); } catch (e) { throw new CliError({ code: CliErrorCode.FailedToBulkUpsertAppEnvironmentVariables(), cause: e }); } const { bulkActionMetadata, appEnvironmentVariables } = result; if (bulkActionMetadata?.totalFailures || bulkActionMetadata?.undetailedFailures) { throw new CliError({ code: CliErrorCode.FailedToBulkUpsertAppEnvironmentVariables(), cause: void 0, info: { ...result } }); } return appEnvironmentVariables; }; deleteAppEnvironmentVariable = async (appId, environment, variable) => { try { await this.httpClient.request( deleteAppEnvironmentVariableByEnvironmentAndKey({ appProjectId: appId, environment, key: variable }) ); } catch (e) { if (isHttpError(e) && isHttpApplicationError(e)) { const applicationError = e.response?.data.details.applicationError; if (applicationError?.code === "APP_ENVIRONMENT_VARIABLE_NOT_FOUND") { return; } } throw new CliError({ code: CliErrorCode.FailedToDeleteAppEnvironmentVariableByEnvironmentAndKey(), cause: e }); } }; }; // ../backend-as-a-service-client/src/useBackendAsAServiceClient.ts function useBackendAsAServiceClient() { const httpClient = useHttpClient({ type: "backoffice" }); const client = (0, import_react.useMemo)( () => new BackendAsAServiceClient(httpClient), [httpClient] ); return usePanoramaMethodLogger(client); } // ../backend-as-a-service-client/src/index.ts init_esm_shims(); export { CloudProvider, useBackendAsAServiceClient }; //# sourceMappingURL=chunk-JQOAY3IH.js.map