@strapi/cloud-cli 5.37.1 → 5.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.js.map +1 -1
- package/dist/bin.mjs.map +1 -1
- package/dist/cloud/command.js.map +1 -1
- package/dist/cloud/command.mjs.map +1 -1
- package/dist/config/api.js.map +1 -1
- package/dist/config/api.mjs.map +1 -1
- package/dist/config/local.js.map +1 -1
- package/dist/config/local.mjs.map +1 -1
- package/dist/create-growth-sso-trial/action.js.map +1 -1
- package/dist/create-growth-sso-trial/action.mjs.map +1 -1
- package/dist/create-project/action.js.map +1 -1
- package/dist/create-project/action.mjs.map +1 -1
- package/dist/create-project/command.js.map +1 -1
- package/dist/create-project/command.mjs.map +1 -1
- package/dist/create-project/index.js.map +1 -1
- package/dist/create-project/index.mjs.map +1 -1
- package/dist/create-project/utils/get-project-name-from-pkg.js.map +1 -1
- package/dist/create-project/utils/get-project-name-from-pkg.mjs.map +1 -1
- package/dist/create-project/utils/project-questions.utils.js.map +1 -1
- package/dist/create-project/utils/project-questions.utils.mjs.map +1 -1
- package/dist/deploy-project/action.js.map +1 -1
- package/dist/deploy-project/action.mjs.map +1 -1
- package/dist/deploy-project/command.js.map +1 -1
- package/dist/deploy-project/command.mjs.map +1 -1
- package/dist/deploy-project/index.js.map +1 -1
- package/dist/deploy-project/index.mjs.map +1 -1
- package/dist/environment/command.js.map +1 -1
- package/dist/environment/command.mjs.map +1 -1
- package/dist/environment/link/action.js.map +1 -1
- package/dist/environment/link/action.mjs.map +1 -1
- package/dist/environment/link/command.js.map +1 -1
- package/dist/environment/link/command.mjs.map +1 -1
- package/dist/environment/link/index.js.map +1 -1
- package/dist/environment/link/index.mjs.map +1 -1
- package/dist/environment/list/action.js.map +1 -1
- package/dist/environment/list/action.mjs.map +1 -1
- package/dist/environment/list/command.js.map +1 -1
- package/dist/environment/list/command.mjs.map +1 -1
- package/dist/environment/list/index.js.map +1 -1
- package/dist/environment/list/index.mjs.map +1 -1
- package/dist/index.js +22 -22
- package/dist/index.js.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/link/action.js.map +1 -1
- package/dist/link/action.mjs.map +1 -1
- package/dist/link/command.js.map +1 -1
- package/dist/link/command.mjs.map +1 -1
- package/dist/link/index.js.map +1 -1
- package/dist/link/index.mjs.map +1 -1
- package/dist/list-projects/action.js.map +1 -1
- package/dist/list-projects/action.mjs.map +1 -1
- package/dist/list-projects/command.js.map +1 -1
- package/dist/list-projects/command.mjs.map +1 -1
- package/dist/list-projects/index.js.map +1 -1
- package/dist/list-projects/index.mjs.map +1 -1
- package/dist/login/action.js.map +1 -1
- package/dist/login/action.mjs.map +1 -1
- package/dist/login/command.js.map +1 -1
- package/dist/login/command.mjs.map +1 -1
- package/dist/login/index.js.map +1 -1
- package/dist/login/index.mjs.map +1 -1
- package/dist/logout/action.js.map +1 -1
- package/dist/logout/action.mjs.map +1 -1
- package/dist/logout/command.js.map +1 -1
- package/dist/logout/command.mjs.map +1 -1
- package/dist/logout/index.js.map +1 -1
- package/dist/logout/index.mjs.map +1 -1
- package/dist/package.json.js +2 -120
- package/dist/package.json.js.map +1 -1
- package/dist/package.json.mjs +3 -102
- package/dist/package.json.mjs.map +1 -1
- package/dist/services/build-logs.js.map +1 -1
- package/dist/services/build-logs.mjs.map +1 -1
- package/dist/services/cli-api.js.map +1 -1
- package/dist/services/cli-api.mjs.map +1 -1
- package/dist/services/context.js.map +1 -1
- package/dist/services/context.mjs.map +1 -1
- package/dist/services/logger.js.map +1 -1
- package/dist/services/logger.mjs.map +1 -1
- package/dist/services/notification.js.map +1 -1
- package/dist/services/notification.mjs.map +1 -1
- package/dist/services/strapi-info-save.js.map +1 -1
- package/dist/services/strapi-info-save.mjs.map +1 -1
- package/dist/services/token.js.map +1 -1
- package/dist/services/token.mjs.map +1 -1
- package/dist/utils/analytics.js.map +1 -1
- package/dist/utils/analytics.mjs.map +1 -1
- package/dist/utils/compress-files.js.map +1 -1
- package/dist/utils/compress-files.mjs.map +1 -1
- package/dist/utils/error-message-factories.js.map +1 -1
- package/dist/utils/error-message-factories.mjs.map +1 -1
- package/dist/utils/get-local-config.js.map +1 -1
- package/dist/utils/get-local-config.mjs.map +1 -1
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/helpers.mjs.map +1 -1
- package/dist/utils/pkg.js.map +1 -1
- package/dist/utils/pkg.mjs.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.mjs","sources":["../../src/services/notification.ts"],"sourcesContent":["import EventSource from 'eventsource';\nimport EventEmitter from 'node:events';\nimport type { CLIContext, CloudCliConfig } from '../types';\n\ntype Event = {\n type: string;\n data: string;\n lastEventId: string;\n origin: string;\n};\n\ntype DeploymentNotificationData = {\n event:\n | 'deploymentFailed'\n | 'deploymentCompleted'\n | 'environmentCreationFailed'\n | 'environmentCreationCompleted';\n userId: string;\n projectName: string;\n environmentName: string;\n createdAt: string;\n message?: string;\n};\n\nexport function notificationServiceFactory({ logger }: CLIContext) {\n return (url: string, token: string, cliConfig: CloudCliConfig) => {\n const CONN_TIMEOUT = Number(cliConfig.notificationsConnectionTimeout);\n const eventEmitter = new EventEmitter();\n\n const es = new EventSource(url, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n let timeoutId: NodeJS.Timeout;\n\n const resetTimeout = () => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n logger.log(\n 'We were unable to connect to the server at this time. This could be due to a temporary issue. Please try again in a moment.'\n );\n es.close();\n eventEmitter.emit('connectionTimedOut');\n }, CONN_TIMEOUT); // 5 minutes\n };\n\n es.onopen = () => {\n resetTimeout();\n };\n es.onmessage = (event: Event) => {\n resetTimeout();\n if (!event.data) {\n return;\n }\n const data: DeploymentNotificationData = JSON.parse(event.data);\n\n if (data.message) {\n logger.log(data.message);\n }\n\n // Close connection when a specific event is received\n if (\n data.event === 'deploymentCompleted' ||\n data.event === 'deploymentFailed' ||\n data.event === 'environmentCreationFailed' ||\n data.event === 'environmentCreationCompleted'\n ) {\n clearTimeout(timeoutId);\n es.close();\n }\n eventEmitter.emit(data.event, data);\n };\n\n const waitForEnvironmentCreation = (environmentName: string) => {\n return new Promise((resolve, reject) => {\n eventEmitter.on('environmentCreationCompleted', (data: DeploymentNotificationData) => {\n if (data.environmentName !== environmentName) {\n return;\n }\n resolve('Environment created successfully');\n eventEmitter.removeAllListeners('environmentCreationCompleted');\n });\n eventEmitter.on('environmentCreationFailed', (data: DeploymentNotificationData) => {\n if (data.environmentName !== environmentName) {\n return;\n }\n reject(new Error(`Environment creation failed`, { cause: 'EnvironmentCreationFailed' }));\n eventEmitter.removeAllListeners('environmentCreationFailed');\n });\n\n eventEmitter.on('connectionTimedOut', () => {\n reject(new Error('Connection timed out'));\n });\n });\n };\n const close = () => {\n clearTimeout(timeoutId);\n es.close();\n eventEmitter.removeAllListeners();\n };\n return { waitForEnvironmentCreation, close };\n };\n}\n"],"names":["notificationServiceFactory","logger","url","token","cliConfig","CONN_TIMEOUT","Number","notificationsConnectionTimeout","eventEmitter","EventEmitter","es","EventSource","headers","Authorization","timeoutId","resetTimeout","clearTimeout","setTimeout","log","close","emit","onopen","onmessage","event","data","JSON","parse","message","waitForEnvironmentCreation","environmentName","Promise","resolve","reject","on","removeAllListeners","Error","cause"],"mappings":";;;AAwBO,SAASA,0BAAAA,CAA2B,EAAEC,MAAM,EAAc,EAAA;IAC/D,OAAO,CAACC,KAAaC,
|
|
1
|
+
{"version":3,"file":"notification.mjs","sources":["../../src/services/notification.ts"],"sourcesContent":["import EventSource from 'eventsource';\nimport EventEmitter from 'node:events';\nimport type { CLIContext, CloudCliConfig } from '../types';\n\ntype Event = {\n type: string;\n data: string;\n lastEventId: string;\n origin: string;\n};\n\ntype DeploymentNotificationData = {\n event:\n | 'deploymentFailed'\n | 'deploymentCompleted'\n | 'environmentCreationFailed'\n | 'environmentCreationCompleted';\n userId: string;\n projectName: string;\n environmentName: string;\n createdAt: string;\n message?: string;\n};\n\nexport function notificationServiceFactory({ logger }: CLIContext) {\n return (url: string, token: string, cliConfig: CloudCliConfig) => {\n const CONN_TIMEOUT = Number(cliConfig.notificationsConnectionTimeout);\n const eventEmitter = new EventEmitter();\n\n const es = new EventSource(url, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n let timeoutId: NodeJS.Timeout;\n\n const resetTimeout = () => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n logger.log(\n 'We were unable to connect to the server at this time. This could be due to a temporary issue. Please try again in a moment.'\n );\n es.close();\n eventEmitter.emit('connectionTimedOut');\n }, CONN_TIMEOUT); // 5 minutes\n };\n\n es.onopen = () => {\n resetTimeout();\n };\n es.onmessage = (event: Event) => {\n resetTimeout();\n if (!event.data) {\n return;\n }\n const data: DeploymentNotificationData = JSON.parse(event.data);\n\n if (data.message) {\n logger.log(data.message);\n }\n\n // Close connection when a specific event is received\n if (\n data.event === 'deploymentCompleted' ||\n data.event === 'deploymentFailed' ||\n data.event === 'environmentCreationFailed' ||\n data.event === 'environmentCreationCompleted'\n ) {\n clearTimeout(timeoutId);\n es.close();\n }\n eventEmitter.emit(data.event, data);\n };\n\n const waitForEnvironmentCreation = (environmentName: string) => {\n return new Promise((resolve, reject) => {\n eventEmitter.on('environmentCreationCompleted', (data: DeploymentNotificationData) => {\n if (data.environmentName !== environmentName) {\n return;\n }\n resolve('Environment created successfully');\n eventEmitter.removeAllListeners('environmentCreationCompleted');\n });\n eventEmitter.on('environmentCreationFailed', (data: DeploymentNotificationData) => {\n if (data.environmentName !== environmentName) {\n return;\n }\n reject(new Error(`Environment creation failed`, { cause: 'EnvironmentCreationFailed' }));\n eventEmitter.removeAllListeners('environmentCreationFailed');\n });\n\n eventEmitter.on('connectionTimedOut', () => {\n reject(new Error('Connection timed out'));\n });\n });\n };\n const close = () => {\n clearTimeout(timeoutId);\n es.close();\n eventEmitter.removeAllListeners();\n };\n return { waitForEnvironmentCreation, close };\n };\n}\n"],"names":["notificationServiceFactory","logger","url","token","cliConfig","CONN_TIMEOUT","Number","notificationsConnectionTimeout","eventEmitter","EventEmitter","es","EventSource","headers","Authorization","timeoutId","resetTimeout","clearTimeout","setTimeout","log","close","emit","onopen","onmessage","event","data","JSON","parse","message","waitForEnvironmentCreation","environmentName","Promise","resolve","reject","on","removeAllListeners","Error","cause"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strapi-info-save.js","sources":["../../src/services/strapi-info-save.ts"],"sourcesContent":["import fse from 'fs-extra';\nimport path from 'path';\nimport { merge } from 'lodash';\nimport type { ProjectInfo } from './cli-api';\n\nexport const LOCAL_SAVE_FILENAME = '.strapi-cloud.json';\n\nexport type LocalSave = {\n project?: Omit<ProjectInfo, 'id'>;\n};\n\n// Utility type for making all properties optional recursively\ntype DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n\nexport type LocalPatch = {\n project?: DeepPartial<Omit<ProjectInfo, 'id'>>;\n};\n\nconst getFilePath = (directoryPath?: string): string =>\n path.join(directoryPath || process.cwd(), LOCAL_SAVE_FILENAME);\n\nexport async function save(data: LocalSave, { directoryPath }: { directoryPath?: string } = {}) {\n const pathToFile = getFilePath(directoryPath);\n // Ensure the directory exists and creates it if not\n await fse.ensureDir(path.dirname(pathToFile));\n await fse.writeJson(pathToFile, data, { encoding: 'utf8' });\n}\n\nexport async function retrieve({\n directoryPath,\n}: { directoryPath?: string } = {}): Promise<LocalSave> {\n const pathToFile = getFilePath(directoryPath);\n const pathExists = await fse.pathExists(pathToFile);\n if (!pathExists) {\n return {};\n }\n return fse.readJSON(pathToFile, { encoding: 'utf8' });\n}\n\nexport async function patch(\n patchData: LocalPatch,\n { directoryPath }: { directoryPath?: string } = {}\n) {\n const pathToFile = getFilePath(directoryPath);\n const existingData = await retrieve({ directoryPath });\n if (!existingData) {\n throw new Error('No configuration data found to patch.');\n }\n const newData = merge(existingData, patchData);\n await fse.writeJson(pathToFile, newData, { encoding: 'utf8' });\n}\n\nexport async function deleteConfig({ directoryPath }: { directoryPath?: string } = {}) {\n const pathToFile = getFilePath(directoryPath);\n const pathExists = await fse.pathExists(pathToFile);\n if (pathExists) {\n await fse.remove(pathToFile);\n }\n}\n"],"names":["LOCAL_SAVE_FILENAME","getFilePath","directoryPath","path","join","process","cwd","save","data","pathToFile","fse","ensureDir","dirname","writeJson","encoding","retrieve","pathExists","readJSON","patch","patchData","existingData","Error","newData","merge","deleteConfig","remove"],"mappings":";;;;;;AAKO,MAAMA,sBAAsB;AAenC,MAAMC,WAAAA,GAAc,CAACC,
|
|
1
|
+
{"version":3,"file":"strapi-info-save.js","sources":["../../src/services/strapi-info-save.ts"],"sourcesContent":["import fse from 'fs-extra';\nimport path from 'path';\nimport { merge } from 'lodash';\nimport type { ProjectInfo } from './cli-api';\n\nexport const LOCAL_SAVE_FILENAME = '.strapi-cloud.json';\n\nexport type LocalSave = {\n project?: Omit<ProjectInfo, 'id'>;\n};\n\n// Utility type for making all properties optional recursively\ntype DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n\nexport type LocalPatch = {\n project?: DeepPartial<Omit<ProjectInfo, 'id'>>;\n};\n\nconst getFilePath = (directoryPath?: string): string =>\n path.join(directoryPath || process.cwd(), LOCAL_SAVE_FILENAME);\n\nexport async function save(data: LocalSave, { directoryPath }: { directoryPath?: string } = {}) {\n const pathToFile = getFilePath(directoryPath);\n // Ensure the directory exists and creates it if not\n await fse.ensureDir(path.dirname(pathToFile));\n await fse.writeJson(pathToFile, data, { encoding: 'utf8' });\n}\n\nexport async function retrieve({\n directoryPath,\n}: { directoryPath?: string } = {}): Promise<LocalSave> {\n const pathToFile = getFilePath(directoryPath);\n const pathExists = await fse.pathExists(pathToFile);\n if (!pathExists) {\n return {};\n }\n return fse.readJSON(pathToFile, { encoding: 'utf8' });\n}\n\nexport async function patch(\n patchData: LocalPatch,\n { directoryPath }: { directoryPath?: string } = {}\n) {\n const pathToFile = getFilePath(directoryPath);\n const existingData = await retrieve({ directoryPath });\n if (!existingData) {\n throw new Error('No configuration data found to patch.');\n }\n const newData = merge(existingData, patchData);\n await fse.writeJson(pathToFile, newData, { encoding: 'utf8' });\n}\n\nexport async function deleteConfig({ directoryPath }: { directoryPath?: string } = {}) {\n const pathToFile = getFilePath(directoryPath);\n const pathExists = await fse.pathExists(pathToFile);\n if (pathExists) {\n await fse.remove(pathToFile);\n }\n}\n"],"names":["LOCAL_SAVE_FILENAME","getFilePath","directoryPath","path","join","process","cwd","save","data","pathToFile","fse","ensureDir","dirname","writeJson","encoding","retrieve","pathExists","readJSON","patch","patchData","existingData","Error","newData","merge","deleteConfig","remove"],"mappings":";;;;;;AAKO,MAAMA,sBAAsB;AAenC,MAAMC,WAAAA,GAAc,CAACC,aAAAA,GACnBC,IAAAA,CAAKC,IAAI,CAACF,aAAAA,IAAiBG,OAAAA,CAAQC,GAAG,EAAA,EAAIN,mBAAAA,CAAAA;AAErC,eAAeO,KAAKC,IAAe,EAAE,EAAEN,aAAa,EAA8B,GAAG,EAAE,EAAA;AAC5F,IAAA,MAAMO,aAAaR,WAAAA,CAAYC,aAAAA,CAAAA;;AAE/B,IAAA,MAAMQ,GAAAA,CAAIC,SAAS,CAACR,IAAAA,CAAKS,OAAO,CAACH,UAAAA,CAAAA,CAAAA;AACjC,IAAA,MAAMC,GAAAA,CAAIG,SAAS,CAACJ,UAAAA,EAAYD,IAAAA,EAAM;QAAEM,QAAAA,EAAU;AAAO,KAAA,CAAA;AAC3D;AAEO,eAAeC,QAAAA,CAAS,EAC7Bb,aAAa,EACc,GAAG,EAAE,EAAA;AAChC,IAAA,MAAMO,aAAaR,WAAAA,CAAYC,aAAAA,CAAAA;AAC/B,IAAA,MAAMc,UAAAA,GAAa,MAAMN,GAAAA,CAAIM,UAAU,CAACP,UAAAA,CAAAA;AACxC,IAAA,IAAI,CAACO,UAAAA,EAAY;AACf,QAAA,OAAO,EAAC;AACV,IAAA;IACA,OAAON,GAAAA,CAAIO,QAAQ,CAACR,UAAAA,EAAY;QAAEK,QAAAA,EAAU;AAAO,KAAA,CAAA;AACrD;AAEO,eAAeI,MACpBC,SAAqB,EACrB,EAAEjB,aAAa,EAA8B,GAAG,EAAE,EAAA;AAElD,IAAA,MAAMO,aAAaR,WAAAA,CAAYC,aAAAA,CAAAA;IAC/B,MAAMkB,YAAAA,GAAe,MAAML,QAAAA,CAAS;AAAEb,QAAAA;AAAc,KAAA,CAAA;AACpD,IAAA,IAAI,CAACkB,YAAAA,EAAc;AACjB,QAAA,MAAM,IAAIC,KAAAA,CAAM,uCAAA,CAAA;AAClB,IAAA;IACA,MAAMC,OAAAA,GAAUC,aAAMH,YAAAA,EAAcD,SAAAA,CAAAA;AACpC,IAAA,MAAMT,GAAAA,CAAIG,SAAS,CAACJ,UAAAA,EAAYa,OAAAA,EAAS;QAAER,QAAAA,EAAU;AAAO,KAAA,CAAA;AAC9D;AAEO,eAAeU,YAAAA,CAAa,EAAEtB,aAAa,EAA8B,GAAG,EAAE,EAAA;AACnF,IAAA,MAAMO,aAAaR,WAAAA,CAAYC,aAAAA,CAAAA;AAC/B,IAAA,MAAMc,UAAAA,GAAa,MAAMN,GAAAA,CAAIM,UAAU,CAACP,UAAAA,CAAAA;AACxC,IAAA,IAAIO,UAAAA,EAAY;QACd,MAAMN,GAAAA,CAAIe,MAAM,CAAChB,UAAAA,CAAAA;AACnB,IAAA;AACF;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strapi-info-save.mjs","sources":["../../src/services/strapi-info-save.ts"],"sourcesContent":["import fse from 'fs-extra';\nimport path from 'path';\nimport { merge } from 'lodash';\nimport type { ProjectInfo } from './cli-api';\n\nexport const LOCAL_SAVE_FILENAME = '.strapi-cloud.json';\n\nexport type LocalSave = {\n project?: Omit<ProjectInfo, 'id'>;\n};\n\n// Utility type for making all properties optional recursively\ntype DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n\nexport type LocalPatch = {\n project?: DeepPartial<Omit<ProjectInfo, 'id'>>;\n};\n\nconst getFilePath = (directoryPath?: string): string =>\n path.join(directoryPath || process.cwd(), LOCAL_SAVE_FILENAME);\n\nexport async function save(data: LocalSave, { directoryPath }: { directoryPath?: string } = {}) {\n const pathToFile = getFilePath(directoryPath);\n // Ensure the directory exists and creates it if not\n await fse.ensureDir(path.dirname(pathToFile));\n await fse.writeJson(pathToFile, data, { encoding: 'utf8' });\n}\n\nexport async function retrieve({\n directoryPath,\n}: { directoryPath?: string } = {}): Promise<LocalSave> {\n const pathToFile = getFilePath(directoryPath);\n const pathExists = await fse.pathExists(pathToFile);\n if (!pathExists) {\n return {};\n }\n return fse.readJSON(pathToFile, { encoding: 'utf8' });\n}\n\nexport async function patch(\n patchData: LocalPatch,\n { directoryPath }: { directoryPath?: string } = {}\n) {\n const pathToFile = getFilePath(directoryPath);\n const existingData = await retrieve({ directoryPath });\n if (!existingData) {\n throw new Error('No configuration data found to patch.');\n }\n const newData = merge(existingData, patchData);\n await fse.writeJson(pathToFile, newData, { encoding: 'utf8' });\n}\n\nexport async function deleteConfig({ directoryPath }: { directoryPath?: string } = {}) {\n const pathToFile = getFilePath(directoryPath);\n const pathExists = await fse.pathExists(pathToFile);\n if (pathExists) {\n await fse.remove(pathToFile);\n }\n}\n"],"names":["LOCAL_SAVE_FILENAME","getFilePath","directoryPath","path","join","process","cwd","save","data","pathToFile","fse","ensureDir","dirname","writeJson","encoding","retrieve","pathExists","readJSON","patch","patchData","existingData","Error","newData","merge","deleteConfig","remove"],"mappings":";;;;AAKO,MAAMA,sBAAsB;AAenC,MAAMC,WAAAA,GAAc,CAACC,
|
|
1
|
+
{"version":3,"file":"strapi-info-save.mjs","sources":["../../src/services/strapi-info-save.ts"],"sourcesContent":["import fse from 'fs-extra';\nimport path from 'path';\nimport { merge } from 'lodash';\nimport type { ProjectInfo } from './cli-api';\n\nexport const LOCAL_SAVE_FILENAME = '.strapi-cloud.json';\n\nexport type LocalSave = {\n project?: Omit<ProjectInfo, 'id'>;\n};\n\n// Utility type for making all properties optional recursively\ntype DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n\nexport type LocalPatch = {\n project?: DeepPartial<Omit<ProjectInfo, 'id'>>;\n};\n\nconst getFilePath = (directoryPath?: string): string =>\n path.join(directoryPath || process.cwd(), LOCAL_SAVE_FILENAME);\n\nexport async function save(data: LocalSave, { directoryPath }: { directoryPath?: string } = {}) {\n const pathToFile = getFilePath(directoryPath);\n // Ensure the directory exists and creates it if not\n await fse.ensureDir(path.dirname(pathToFile));\n await fse.writeJson(pathToFile, data, { encoding: 'utf8' });\n}\n\nexport async function retrieve({\n directoryPath,\n}: { directoryPath?: string } = {}): Promise<LocalSave> {\n const pathToFile = getFilePath(directoryPath);\n const pathExists = await fse.pathExists(pathToFile);\n if (!pathExists) {\n return {};\n }\n return fse.readJSON(pathToFile, { encoding: 'utf8' });\n}\n\nexport async function patch(\n patchData: LocalPatch,\n { directoryPath }: { directoryPath?: string } = {}\n) {\n const pathToFile = getFilePath(directoryPath);\n const existingData = await retrieve({ directoryPath });\n if (!existingData) {\n throw new Error('No configuration data found to patch.');\n }\n const newData = merge(existingData, patchData);\n await fse.writeJson(pathToFile, newData, { encoding: 'utf8' });\n}\n\nexport async function deleteConfig({ directoryPath }: { directoryPath?: string } = {}) {\n const pathToFile = getFilePath(directoryPath);\n const pathExists = await fse.pathExists(pathToFile);\n if (pathExists) {\n await fse.remove(pathToFile);\n }\n}\n"],"names":["LOCAL_SAVE_FILENAME","getFilePath","directoryPath","path","join","process","cwd","save","data","pathToFile","fse","ensureDir","dirname","writeJson","encoding","retrieve","pathExists","readJSON","patch","patchData","existingData","Error","newData","merge","deleteConfig","remove"],"mappings":";;;;AAKO,MAAMA,sBAAsB;AAenC,MAAMC,WAAAA,GAAc,CAACC,aAAAA,GACnBC,aAAAA,CAAKC,IAAI,CAACF,aAAAA,IAAiBG,OAAAA,CAAQC,GAAG,EAAA,EAAIN,mBAAAA,CAAAA;AAErC,eAAeO,KAAKC,IAAe,EAAE,EAAEN,aAAa,EAA8B,GAAG,EAAE,EAAA;AAC5F,IAAA,MAAMO,aAAaR,WAAAA,CAAYC,aAAAA,CAAAA;;AAE/B,IAAA,MAAMQ,YAAAA,CAAIC,SAAS,CAACR,aAAAA,CAAKS,OAAO,CAACH,UAAAA,CAAAA,CAAAA;AACjC,IAAA,MAAMC,YAAAA,CAAIG,SAAS,CAACJ,UAAAA,EAAYD,IAAAA,EAAM;QAAEM,QAAAA,EAAU;AAAO,KAAA,CAAA;AAC3D;AAEO,eAAeC,QAAAA,CAAS,EAC7Bb,aAAa,EACc,GAAG,EAAE,EAAA;AAChC,IAAA,MAAMO,aAAaR,WAAAA,CAAYC,aAAAA,CAAAA;AAC/B,IAAA,MAAMc,UAAAA,GAAa,MAAMN,YAAAA,CAAIM,UAAU,CAACP,UAAAA,CAAAA;AACxC,IAAA,IAAI,CAACO,UAAAA,EAAY;AACf,QAAA,OAAO,EAAC;AACV,IAAA;IACA,OAAON,YAAAA,CAAIO,QAAQ,CAACR,UAAAA,EAAY;QAAEK,QAAAA,EAAU;AAAO,KAAA,CAAA;AACrD;AAEO,eAAeI,MACpBC,SAAqB,EACrB,EAAEjB,aAAa,EAA8B,GAAG,EAAE,EAAA;AAElD,IAAA,MAAMO,aAAaR,WAAAA,CAAYC,aAAAA,CAAAA;IAC/B,MAAMkB,YAAAA,GAAe,MAAML,QAAAA,CAAS;AAAEb,QAAAA;AAAc,KAAA,CAAA;AACpD,IAAA,IAAI,CAACkB,YAAAA,EAAc;AACjB,QAAA,MAAM,IAAIC,KAAAA,CAAM,uCAAA,CAAA;AAClB,IAAA;IACA,MAAMC,OAAAA,GAAUC,MAAMH,YAAAA,EAAcD,SAAAA,CAAAA;AACpC,IAAA,MAAMT,YAAAA,CAAIG,SAAS,CAACJ,UAAAA,EAAYa,OAAAA,EAAS;QAAER,QAAAA,EAAU;AAAO,KAAA,CAAA;AAC9D;AAEO,eAAeU,YAAAA,CAAa,EAAEtB,aAAa,EAA8B,GAAG,EAAE,EAAA;AACnF,IAAA,MAAMO,aAAaR,WAAAA,CAAYC,aAAAA,CAAAA;AAC/B,IAAA,MAAMc,UAAAA,GAAa,MAAMN,YAAAA,CAAIM,UAAU,CAACP,UAAAA,CAAAA;AACxC,IAAA,IAAIO,UAAAA,EAAY;QACd,MAAMN,YAAAA,CAAIe,MAAM,CAAChB,UAAAA,CAAAA;AACnB,IAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.js","sources":["../../src/services/token.ts"],"sourcesContent":["import jwksClient, { type JwksClient, type SigningKey } from 'jwks-rsa';\nimport type { JwtHeader, VerifyErrors } from 'jsonwebtoken';\nimport jwt from 'jsonwebtoken';\nimport { getLocalConfig, saveLocalConfig } from '../config/local';\nimport type { CloudCliConfig, CLIContext } from '../types';\nimport { cloudApiFactory } from './cli-api';\n\nlet cliConfig: CloudCliConfig;\n\ninterface DecodedToken {\n [key: string]: any;\n}\n\nexport async function tokenServiceFactory({ logger }: { logger: CLIContext['logger'] }) {\n const cloudApiService = await cloudApiFactory({ logger });\n\n async function saveToken(str: string) {\n const appConfig = await getLocalConfig();\n\n if (!appConfig) {\n logger.error('There was a problem saving your token. Please try again.');\n return;\n }\n\n appConfig.token = str;\n\n try {\n await saveLocalConfig(appConfig);\n } catch (e: Error | unknown) {\n logger.debug(e);\n logger.error('There was a problem saving your token. Please try again.');\n }\n }\n\n async function retrieveToken() {\n const appConfig = await getLocalConfig();\n if (appConfig.token) {\n // check if token is still valid\n if (await isTokenValid(appConfig.token)) {\n return appConfig.token;\n }\n }\n return undefined;\n }\n\n async function validateToken(idToken: string, jwksUrl: string): Promise<void> {\n const client: JwksClient = jwksClient({\n jwksUri: jwksUrl,\n });\n\n // Get the Key from the JWKS using the token header's Key ID (kid)\n const getKey = (header: JwtHeader, callback: (e: Error | null, key?: string) => void) => {\n client.getSigningKey(header.kid, (e: Error | null, key?: SigningKey) => {\n if (e) {\n callback(e);\n } else if (key) {\n const publicKey = 'publicKey' in key ? key.publicKey : key.rsaPublicKey;\n callback(null, publicKey);\n } else {\n callback(new Error('Key not found'));\n }\n });\n };\n\n const decodedToken = jwt.decode(idToken, { complete: true }) as DecodedToken;\n if (!decodedToken) {\n if (typeof idToken === 'undefined' || idToken === '') {\n logger.warn('You need to be logged in to use this feature. Please log in and try again.');\n } else {\n logger.error(\n 'There seems to be a problem with your login information. Please try logging in again.'\n );\n }\n return Promise.reject(new Error('Invalid token'));\n }\n\n // Verify the JWT token signature using the JWKS Key\n return new Promise<void>((resolve, reject) => {\n jwt.verify(idToken, getKey, (err: VerifyErrors | null) => {\n if (err) {\n reject(err);\n }\n if (decodedToken.payload.exp < Math.floor(Date.now() / 1000)) {\n reject(new Error('Token is expired'));\n }\n resolve();\n });\n });\n }\n\n async function isTokenValid(token: string) {\n try {\n const config = await cloudApiService.config();\n\n cliConfig = config.data;\n if (token) {\n await validateToken(token, cliConfig.jwksUrl);\n return true;\n }\n return false;\n } catch (e) {\n logger.debug(e);\n return false;\n }\n }\n\n async function eraseToken() {\n const appConfig = await getLocalConfig();\n if (!appConfig) {\n return;\n }\n\n delete appConfig.token;\n\n try {\n await saveLocalConfig(appConfig);\n } catch (e: Error | unknown) {\n logger.debug(e);\n logger.error(\n 'There was an issue removing your login information. Please try logging out again.'\n );\n throw e;\n }\n }\n\n async function getValidToken(\n ctx: CLIContext,\n loginAction: (ctx: CLIContext) => Promise<boolean>\n ) {\n let token = await retrieveToken();\n\n while (!token || !(await isTokenValid(token))) {\n logger.log(\n token\n ? 'Oops! Your token seems expired or invalid. Please login again.'\n : \"We couldn't find a valid token. You need to be logged in to use this feature.\"\n );\n if (!(await loginAction(ctx))) return null;\n token = await retrieveToken();\n }\n\n return token;\n }\n\n return {\n saveToken,\n retrieveToken,\n validateToken,\n isTokenValid,\n eraseToken,\n getValidToken,\n };\n}\n"],"names":["cliConfig","tokenServiceFactory","logger","cloudApiService","cloudApiFactory","saveToken","str","appConfig","getLocalConfig","error","token","saveLocalConfig","e","debug","retrieveToken","isTokenValid","undefined","validateToken","idToken","jwksUrl","client","jwksClient","jwksUri","getKey","header","callback","getSigningKey","kid","key","publicKey","rsaPublicKey","Error","decodedToken","jwt","decode","complete","warn","Promise","reject","resolve","verify","err","payload","exp","Math","floor","Date","now","config","data","eraseToken","getValidToken","ctx","loginAction","log"],"mappings":";;;;;;;AAOA,IAAIA,SAAAA;AAMG,eAAeC,mBAAAA,CAAoB,EAAEC,MAAM,EAAoC,EAAA;IACpF,MAAMC,eAAAA,GAAkB,MAAMC,
|
|
1
|
+
{"version":3,"file":"token.js","sources":["../../src/services/token.ts"],"sourcesContent":["import jwksClient, { type JwksClient, type SigningKey } from 'jwks-rsa';\nimport type { JwtHeader, VerifyErrors } from 'jsonwebtoken';\nimport jwt from 'jsonwebtoken';\nimport { getLocalConfig, saveLocalConfig } from '../config/local';\nimport type { CloudCliConfig, CLIContext } from '../types';\nimport { cloudApiFactory } from './cli-api';\n\nlet cliConfig: CloudCliConfig;\n\ninterface DecodedToken {\n [key: string]: any;\n}\n\nexport async function tokenServiceFactory({ logger }: { logger: CLIContext['logger'] }) {\n const cloudApiService = await cloudApiFactory({ logger });\n\n async function saveToken(str: string) {\n const appConfig = await getLocalConfig();\n\n if (!appConfig) {\n logger.error('There was a problem saving your token. Please try again.');\n return;\n }\n\n appConfig.token = str;\n\n try {\n await saveLocalConfig(appConfig);\n } catch (e: Error | unknown) {\n logger.debug(e);\n logger.error('There was a problem saving your token. Please try again.');\n }\n }\n\n async function retrieveToken() {\n const appConfig = await getLocalConfig();\n if (appConfig.token) {\n // check if token is still valid\n if (await isTokenValid(appConfig.token)) {\n return appConfig.token;\n }\n }\n return undefined;\n }\n\n async function validateToken(idToken: string, jwksUrl: string): Promise<void> {\n const client: JwksClient = jwksClient({\n jwksUri: jwksUrl,\n });\n\n // Get the Key from the JWKS using the token header's Key ID (kid)\n const getKey = (header: JwtHeader, callback: (e: Error | null, key?: string) => void) => {\n client.getSigningKey(header.kid, (e: Error | null, key?: SigningKey) => {\n if (e) {\n callback(e);\n } else if (key) {\n const publicKey = 'publicKey' in key ? key.publicKey : key.rsaPublicKey;\n callback(null, publicKey);\n } else {\n callback(new Error('Key not found'));\n }\n });\n };\n\n const decodedToken = jwt.decode(idToken, { complete: true }) as DecodedToken;\n if (!decodedToken) {\n if (typeof idToken === 'undefined' || idToken === '') {\n logger.warn('You need to be logged in to use this feature. Please log in and try again.');\n } else {\n logger.error(\n 'There seems to be a problem with your login information. Please try logging in again.'\n );\n }\n return Promise.reject(new Error('Invalid token'));\n }\n\n // Verify the JWT token signature using the JWKS Key\n return new Promise<void>((resolve, reject) => {\n jwt.verify(idToken, getKey, (err: VerifyErrors | null) => {\n if (err) {\n reject(err);\n }\n if (decodedToken.payload.exp < Math.floor(Date.now() / 1000)) {\n reject(new Error('Token is expired'));\n }\n resolve();\n });\n });\n }\n\n async function isTokenValid(token: string) {\n try {\n const config = await cloudApiService.config();\n\n cliConfig = config.data;\n if (token) {\n await validateToken(token, cliConfig.jwksUrl);\n return true;\n }\n return false;\n } catch (e) {\n logger.debug(e);\n return false;\n }\n }\n\n async function eraseToken() {\n const appConfig = await getLocalConfig();\n if (!appConfig) {\n return;\n }\n\n delete appConfig.token;\n\n try {\n await saveLocalConfig(appConfig);\n } catch (e: Error | unknown) {\n logger.debug(e);\n logger.error(\n 'There was an issue removing your login information. Please try logging out again.'\n );\n throw e;\n }\n }\n\n async function getValidToken(\n ctx: CLIContext,\n loginAction: (ctx: CLIContext) => Promise<boolean>\n ) {\n let token = await retrieveToken();\n\n while (!token || !(await isTokenValid(token))) {\n logger.log(\n token\n ? 'Oops! Your token seems expired or invalid. Please login again.'\n : \"We couldn't find a valid token. You need to be logged in to use this feature.\"\n );\n if (!(await loginAction(ctx))) return null;\n token = await retrieveToken();\n }\n\n return token;\n }\n\n return {\n saveToken,\n retrieveToken,\n validateToken,\n isTokenValid,\n eraseToken,\n getValidToken,\n };\n}\n"],"names":["cliConfig","tokenServiceFactory","logger","cloudApiService","cloudApiFactory","saveToken","str","appConfig","getLocalConfig","error","token","saveLocalConfig","e","debug","retrieveToken","isTokenValid","undefined","validateToken","idToken","jwksUrl","client","jwksClient","jwksUri","getKey","header","callback","getSigningKey","kid","key","publicKey","rsaPublicKey","Error","decodedToken","jwt","decode","complete","warn","Promise","reject","resolve","verify","err","payload","exp","Math","floor","Date","now","config","data","eraseToken","getValidToken","ctx","loginAction","log"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.mjs","sources":["../../src/services/token.ts"],"sourcesContent":["import jwksClient, { type JwksClient, type SigningKey } from 'jwks-rsa';\nimport type { JwtHeader, VerifyErrors } from 'jsonwebtoken';\nimport jwt from 'jsonwebtoken';\nimport { getLocalConfig, saveLocalConfig } from '../config/local';\nimport type { CloudCliConfig, CLIContext } from '../types';\nimport { cloudApiFactory } from './cli-api';\n\nlet cliConfig: CloudCliConfig;\n\ninterface DecodedToken {\n [key: string]: any;\n}\n\nexport async function tokenServiceFactory({ logger }: { logger: CLIContext['logger'] }) {\n const cloudApiService = await cloudApiFactory({ logger });\n\n async function saveToken(str: string) {\n const appConfig = await getLocalConfig();\n\n if (!appConfig) {\n logger.error('There was a problem saving your token. Please try again.');\n return;\n }\n\n appConfig.token = str;\n\n try {\n await saveLocalConfig(appConfig);\n } catch (e: Error | unknown) {\n logger.debug(e);\n logger.error('There was a problem saving your token. Please try again.');\n }\n }\n\n async function retrieveToken() {\n const appConfig = await getLocalConfig();\n if (appConfig.token) {\n // check if token is still valid\n if (await isTokenValid(appConfig.token)) {\n return appConfig.token;\n }\n }\n return undefined;\n }\n\n async function validateToken(idToken: string, jwksUrl: string): Promise<void> {\n const client: JwksClient = jwksClient({\n jwksUri: jwksUrl,\n });\n\n // Get the Key from the JWKS using the token header's Key ID (kid)\n const getKey = (header: JwtHeader, callback: (e: Error | null, key?: string) => void) => {\n client.getSigningKey(header.kid, (e: Error | null, key?: SigningKey) => {\n if (e) {\n callback(e);\n } else if (key) {\n const publicKey = 'publicKey' in key ? key.publicKey : key.rsaPublicKey;\n callback(null, publicKey);\n } else {\n callback(new Error('Key not found'));\n }\n });\n };\n\n const decodedToken = jwt.decode(idToken, { complete: true }) as DecodedToken;\n if (!decodedToken) {\n if (typeof idToken === 'undefined' || idToken === '') {\n logger.warn('You need to be logged in to use this feature. Please log in and try again.');\n } else {\n logger.error(\n 'There seems to be a problem with your login information. Please try logging in again.'\n );\n }\n return Promise.reject(new Error('Invalid token'));\n }\n\n // Verify the JWT token signature using the JWKS Key\n return new Promise<void>((resolve, reject) => {\n jwt.verify(idToken, getKey, (err: VerifyErrors | null) => {\n if (err) {\n reject(err);\n }\n if (decodedToken.payload.exp < Math.floor(Date.now() / 1000)) {\n reject(new Error('Token is expired'));\n }\n resolve();\n });\n });\n }\n\n async function isTokenValid(token: string) {\n try {\n const config = await cloudApiService.config();\n\n cliConfig = config.data;\n if (token) {\n await validateToken(token, cliConfig.jwksUrl);\n return true;\n }\n return false;\n } catch (e) {\n logger.debug(e);\n return false;\n }\n }\n\n async function eraseToken() {\n const appConfig = await getLocalConfig();\n if (!appConfig) {\n return;\n }\n\n delete appConfig.token;\n\n try {\n await saveLocalConfig(appConfig);\n } catch (e: Error | unknown) {\n logger.debug(e);\n logger.error(\n 'There was an issue removing your login information. Please try logging out again.'\n );\n throw e;\n }\n }\n\n async function getValidToken(\n ctx: CLIContext,\n loginAction: (ctx: CLIContext) => Promise<boolean>\n ) {\n let token = await retrieveToken();\n\n while (!token || !(await isTokenValid(token))) {\n logger.log(\n token\n ? 'Oops! Your token seems expired or invalid. Please login again.'\n : \"We couldn't find a valid token. You need to be logged in to use this feature.\"\n );\n if (!(await loginAction(ctx))) return null;\n token = await retrieveToken();\n }\n\n return token;\n }\n\n return {\n saveToken,\n retrieveToken,\n validateToken,\n isTokenValid,\n eraseToken,\n getValidToken,\n };\n}\n"],"names":["cliConfig","tokenServiceFactory","logger","cloudApiService","cloudApiFactory","saveToken","str","appConfig","getLocalConfig","error","token","saveLocalConfig","e","debug","retrieveToken","isTokenValid","undefined","validateToken","idToken","jwksUrl","client","jwksClient","jwksUri","getKey","header","callback","getSigningKey","kid","key","publicKey","rsaPublicKey","Error","decodedToken","jwt","decode","complete","warn","Promise","reject","resolve","verify","err","payload","exp","Math","floor","Date","now","config","data","eraseToken","getValidToken","ctx","loginAction","log"],"mappings":";;;;;AAOA,IAAIA,SAAAA;AAMG,eAAeC,mBAAAA,CAAoB,EAAEC,MAAM,EAAoC,EAAA;IACpF,MAAMC,eAAAA,GAAkB,MAAMC,
|
|
1
|
+
{"version":3,"file":"token.mjs","sources":["../../src/services/token.ts"],"sourcesContent":["import jwksClient, { type JwksClient, type SigningKey } from 'jwks-rsa';\nimport type { JwtHeader, VerifyErrors } from 'jsonwebtoken';\nimport jwt from 'jsonwebtoken';\nimport { getLocalConfig, saveLocalConfig } from '../config/local';\nimport type { CloudCliConfig, CLIContext } from '../types';\nimport { cloudApiFactory } from './cli-api';\n\nlet cliConfig: CloudCliConfig;\n\ninterface DecodedToken {\n [key: string]: any;\n}\n\nexport async function tokenServiceFactory({ logger }: { logger: CLIContext['logger'] }) {\n const cloudApiService = await cloudApiFactory({ logger });\n\n async function saveToken(str: string) {\n const appConfig = await getLocalConfig();\n\n if (!appConfig) {\n logger.error('There was a problem saving your token. Please try again.');\n return;\n }\n\n appConfig.token = str;\n\n try {\n await saveLocalConfig(appConfig);\n } catch (e: Error | unknown) {\n logger.debug(e);\n logger.error('There was a problem saving your token. Please try again.');\n }\n }\n\n async function retrieveToken() {\n const appConfig = await getLocalConfig();\n if (appConfig.token) {\n // check if token is still valid\n if (await isTokenValid(appConfig.token)) {\n return appConfig.token;\n }\n }\n return undefined;\n }\n\n async function validateToken(idToken: string, jwksUrl: string): Promise<void> {\n const client: JwksClient = jwksClient({\n jwksUri: jwksUrl,\n });\n\n // Get the Key from the JWKS using the token header's Key ID (kid)\n const getKey = (header: JwtHeader, callback: (e: Error | null, key?: string) => void) => {\n client.getSigningKey(header.kid, (e: Error | null, key?: SigningKey) => {\n if (e) {\n callback(e);\n } else if (key) {\n const publicKey = 'publicKey' in key ? key.publicKey : key.rsaPublicKey;\n callback(null, publicKey);\n } else {\n callback(new Error('Key not found'));\n }\n });\n };\n\n const decodedToken = jwt.decode(idToken, { complete: true }) as DecodedToken;\n if (!decodedToken) {\n if (typeof idToken === 'undefined' || idToken === '') {\n logger.warn('You need to be logged in to use this feature. Please log in and try again.');\n } else {\n logger.error(\n 'There seems to be a problem with your login information. Please try logging in again.'\n );\n }\n return Promise.reject(new Error('Invalid token'));\n }\n\n // Verify the JWT token signature using the JWKS Key\n return new Promise<void>((resolve, reject) => {\n jwt.verify(idToken, getKey, (err: VerifyErrors | null) => {\n if (err) {\n reject(err);\n }\n if (decodedToken.payload.exp < Math.floor(Date.now() / 1000)) {\n reject(new Error('Token is expired'));\n }\n resolve();\n });\n });\n }\n\n async function isTokenValid(token: string) {\n try {\n const config = await cloudApiService.config();\n\n cliConfig = config.data;\n if (token) {\n await validateToken(token, cliConfig.jwksUrl);\n return true;\n }\n return false;\n } catch (e) {\n logger.debug(e);\n return false;\n }\n }\n\n async function eraseToken() {\n const appConfig = await getLocalConfig();\n if (!appConfig) {\n return;\n }\n\n delete appConfig.token;\n\n try {\n await saveLocalConfig(appConfig);\n } catch (e: Error | unknown) {\n logger.debug(e);\n logger.error(\n 'There was an issue removing your login information. Please try logging out again.'\n );\n throw e;\n }\n }\n\n async function getValidToken(\n ctx: CLIContext,\n loginAction: (ctx: CLIContext) => Promise<boolean>\n ) {\n let token = await retrieveToken();\n\n while (!token || !(await isTokenValid(token))) {\n logger.log(\n token\n ? 'Oops! Your token seems expired or invalid. Please login again.'\n : \"We couldn't find a valid token. You need to be logged in to use this feature.\"\n );\n if (!(await loginAction(ctx))) return null;\n token = await retrieveToken();\n }\n\n return token;\n }\n\n return {\n saveToken,\n retrieveToken,\n validateToken,\n isTokenValid,\n eraseToken,\n getValidToken,\n };\n}\n"],"names":["cliConfig","tokenServiceFactory","logger","cloudApiService","cloudApiFactory","saveToken","str","appConfig","getLocalConfig","error","token","saveLocalConfig","e","debug","retrieveToken","isTokenValid","undefined","validateToken","idToken","jwksUrl","client","jwksClient","jwksUri","getKey","header","callback","getSigningKey","kid","key","publicKey","rsaPublicKey","Error","decodedToken","jwt","decode","complete","warn","Promise","reject","resolve","verify","err","payload","exp","Math","floor","Date","now","config","data","eraseToken","getValidToken","ctx","loginAction","log"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.js","sources":["../../src/utils/analytics.ts"],"sourcesContent":["import type { CLIContext, CloudApiService, TrackPayload } from '../types';\n\nconst trackEvent = async (\n ctx: CLIContext,\n cloudApiService: CloudApiService,\n eventName: string,\n eventData: TrackPayload\n) => {\n try {\n await cloudApiService.track(eventName, eventData);\n } catch (e) {\n ctx.logger.debug(`Failed to track ${eventName}`, e);\n }\n};\n\nexport { trackEvent };\n"],"names":["trackEvent","ctx","cloudApiService","eventName","eventData","track","e","logger","debug"],"mappings":";;AAEA,MAAMA,
|
|
1
|
+
{"version":3,"file":"analytics.js","sources":["../../src/utils/analytics.ts"],"sourcesContent":["import type { CLIContext, CloudApiService, TrackPayload } from '../types';\n\nconst trackEvent = async (\n ctx: CLIContext,\n cloudApiService: CloudApiService,\n eventName: string,\n eventData: TrackPayload\n) => {\n try {\n await cloudApiService.track(eventName, eventData);\n } catch (e) {\n ctx.logger.debug(`Failed to track ${eventName}`, e);\n }\n};\n\nexport { trackEvent };\n"],"names":["trackEvent","ctx","cloudApiService","eventName","eventData","track","e","logger","debug"],"mappings":";;AAEA,MAAMA,UAAAA,GAAa,OACjBC,GAAAA,EACAC,eAAAA,EACAC,SAAAA,EACAC,SAAAA,GAAAA;IAEA,IAAI;QACF,MAAMF,eAAAA,CAAgBG,KAAK,CAACF,SAAAA,EAAWC,SAAAA,CAAAA;AACzC,IAAA,CAAA,CAAE,OAAOE,CAAAA,EAAG;QACVL,GAAAA,CAAIM,MAAM,CAACC,KAAK,CAAC,CAAC,gBAAgB,EAAEL,WAAW,EAAEG,CAAAA,CAAAA;AACnD,IAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.mjs","sources":["../../src/utils/analytics.ts"],"sourcesContent":["import type { CLIContext, CloudApiService, TrackPayload } from '../types';\n\nconst trackEvent = async (\n ctx: CLIContext,\n cloudApiService: CloudApiService,\n eventName: string,\n eventData: TrackPayload\n) => {\n try {\n await cloudApiService.track(eventName, eventData);\n } catch (e) {\n ctx.logger.debug(`Failed to track ${eventName}`, e);\n }\n};\n\nexport { trackEvent };\n"],"names":["trackEvent","ctx","cloudApiService","eventName","eventData","track","e","logger","debug"],"mappings":"AAEA,MAAMA,
|
|
1
|
+
{"version":3,"file":"analytics.mjs","sources":["../../src/utils/analytics.ts"],"sourcesContent":["import type { CLIContext, CloudApiService, TrackPayload } from '../types';\n\nconst trackEvent = async (\n ctx: CLIContext,\n cloudApiService: CloudApiService,\n eventName: string,\n eventData: TrackPayload\n) => {\n try {\n await cloudApiService.track(eventName, eventData);\n } catch (e) {\n ctx.logger.debug(`Failed to track ${eventName}`, e);\n }\n};\n\nexport { trackEvent };\n"],"names":["trackEvent","ctx","cloudApiService","eventName","eventData","track","e","logger","debug"],"mappings":"AAEA,MAAMA,UAAAA,GAAa,OACjBC,GAAAA,EACAC,eAAAA,EACAC,SAAAA,EACAC,SAAAA,GAAAA;IAEA,IAAI;QACF,MAAMF,eAAAA,CAAgBG,KAAK,CAACF,SAAAA,EAAWC,SAAAA,CAAAA;AACzC,IAAA,CAAA,CAAE,OAAOE,CAAAA,EAAG;QACVL,GAAAA,CAAIM,MAAM,CAACC,KAAK,CAAC,CAAC,gBAAgB,EAAEL,WAAW,EAAEG,CAAAA,CAAAA;AACnD,IAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compress-files.js","sources":["../../src/utils/compress-files.ts"],"sourcesContent":["import * as fse from 'fs-extra';\nimport * as tar from 'tar';\nimport * as path from 'path';\nimport { minimatch } from 'minimatch';\n\nconst IGNORED_PATTERNS = [\n '**/.git/**',\n '**/node_modules/**',\n '**/build/**',\n '**/data/uploads/**',\n '**/dist/**',\n '**/.cache/**',\n '**/.circleci/**',\n '**/.github/**',\n '**/.gitignore',\n '**/.gitkeep',\n '**/.gitlab-ci.yml',\n '**/.idea/**',\n '**/public/uploads/**',\n '**/.vscode/**',\n];\n\nconst isIgnoredFile = (folderPath: string, file: string, ignorePatterns: string[]): boolean => {\n ignorePatterns.push(...IGNORED_PATTERNS);\n const relativeFilePath = path.join(folderPath, file);\n let isIgnored = false;\n for (const pattern of ignorePatterns) {\n if (pattern.startsWith('!')) {\n if (minimatch(relativeFilePath, pattern.slice(1), { matchBase: true, dot: true })) {\n return false;\n }\n } else if (minimatch(relativeFilePath, pattern, { matchBase: true, dot: true })) {\n if (path.basename(file) !== '.gitkeep') {\n isIgnored = true;\n }\n }\n }\n return isIgnored;\n};\n\nconst getFiles = async (\n dirPath: string,\n ignorePatterns: string[] = [],\n subfolder: string = ''\n): Promise<string[]> => {\n const arrayOfFiles: string[] = [];\n const entries = await fse.readdir(path.join(dirPath, subfolder));\n\n for (const entry of entries) {\n const entryPathFromRoot = path.join(subfolder, entry);\n const entryPath = path.relative(dirPath, entryPathFromRoot);\n const isIgnored = isIgnoredFile(dirPath, entryPathFromRoot, ignorePatterns);\n\n if (!isIgnored) {\n if (fse.statSync(entryPath).isDirectory()) {\n const subFiles = await getFiles(dirPath, ignorePatterns, entryPathFromRoot);\n arrayOfFiles.push(...subFiles);\n } else {\n arrayOfFiles.push(entryPath);\n }\n }\n }\n return arrayOfFiles;\n};\n\nconst readGitignore = async (folderPath: string): Promise<string[]> => {\n const gitignorePath = path.resolve(folderPath, '.gitignore');\n const pathExist = await fse.pathExists(gitignorePath);\n\n if (!pathExist) return [];\n\n const gitignoreContent = await fse.readFile(gitignorePath, 'utf8');\n\n return gitignoreContent\n .split(/\\r?\\n/)\n .filter((line) => Boolean(line.trim()) && !line.startsWith('#'));\n};\n\nconst compressFilesToTar = async (\n storagePath: string,\n folderToCompress: string,\n filename: string\n): Promise<void> => {\n const ignorePatterns = await readGitignore(folderToCompress);\n const filesToCompress = await getFiles(folderToCompress, ignorePatterns);\n\n return tar.c(\n {\n gzip: true,\n file: path.resolve(storagePath, filename),\n },\n filesToCompress\n );\n};\n\nexport { compressFilesToTar, isIgnoredFile };\n"],"names":["IGNORED_PATTERNS","isIgnoredFile","folderPath","file","ignorePatterns","push","relativeFilePath","path","join","isIgnored","pattern","startsWith","minimatch","slice","matchBase","dot","basename","getFiles","dirPath","subfolder","arrayOfFiles","entries","fse","readdir","entry","entryPathFromRoot","entryPath","relative","statSync","isDirectory","subFiles","readGitignore","gitignorePath","resolve","pathExist","pathExists","gitignoreContent","readFile","split","filter","line","Boolean","trim","compressFilesToTar","storagePath","folderToCompress","filename","filesToCompress","tar","c","gzip"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAMA,
|
|
1
|
+
{"version":3,"file":"compress-files.js","sources":["../../src/utils/compress-files.ts"],"sourcesContent":["import * as fse from 'fs-extra';\nimport * as tar from 'tar';\nimport * as path from 'path';\nimport { minimatch } from 'minimatch';\n\nconst IGNORED_PATTERNS = [\n '**/.git/**',\n '**/node_modules/**',\n '**/build/**',\n '**/data/uploads/**',\n '**/dist/**',\n '**/.cache/**',\n '**/.circleci/**',\n '**/.github/**',\n '**/.gitignore',\n '**/.gitkeep',\n '**/.gitlab-ci.yml',\n '**/.idea/**',\n '**/public/uploads/**',\n '**/.vscode/**',\n];\n\nconst isIgnoredFile = (folderPath: string, file: string, ignorePatterns: string[]): boolean => {\n ignorePatterns.push(...IGNORED_PATTERNS);\n const relativeFilePath = path.join(folderPath, file);\n let isIgnored = false;\n for (const pattern of ignorePatterns) {\n if (pattern.startsWith('!')) {\n if (minimatch(relativeFilePath, pattern.slice(1), { matchBase: true, dot: true })) {\n return false;\n }\n } else if (minimatch(relativeFilePath, pattern, { matchBase: true, dot: true })) {\n if (path.basename(file) !== '.gitkeep') {\n isIgnored = true;\n }\n }\n }\n return isIgnored;\n};\n\nconst getFiles = async (\n dirPath: string,\n ignorePatterns: string[] = [],\n subfolder: string = ''\n): Promise<string[]> => {\n const arrayOfFiles: string[] = [];\n const entries = await fse.readdir(path.join(dirPath, subfolder));\n\n for (const entry of entries) {\n const entryPathFromRoot = path.join(subfolder, entry);\n const entryPath = path.relative(dirPath, entryPathFromRoot);\n const isIgnored = isIgnoredFile(dirPath, entryPathFromRoot, ignorePatterns);\n\n if (!isIgnored) {\n if (fse.statSync(entryPath).isDirectory()) {\n const subFiles = await getFiles(dirPath, ignorePatterns, entryPathFromRoot);\n arrayOfFiles.push(...subFiles);\n } else {\n arrayOfFiles.push(entryPath);\n }\n }\n }\n return arrayOfFiles;\n};\n\nconst readGitignore = async (folderPath: string): Promise<string[]> => {\n const gitignorePath = path.resolve(folderPath, '.gitignore');\n const pathExist = await fse.pathExists(gitignorePath);\n\n if (!pathExist) return [];\n\n const gitignoreContent = await fse.readFile(gitignorePath, 'utf8');\n\n return gitignoreContent\n .split(/\\r?\\n/)\n .filter((line) => Boolean(line.trim()) && !line.startsWith('#'));\n};\n\nconst compressFilesToTar = async (\n storagePath: string,\n folderToCompress: string,\n filename: string\n): Promise<void> => {\n const ignorePatterns = await readGitignore(folderToCompress);\n const filesToCompress = await getFiles(folderToCompress, ignorePatterns);\n\n return tar.c(\n {\n gzip: true,\n file: path.resolve(storagePath, filename),\n },\n filesToCompress\n );\n};\n\nexport { compressFilesToTar, isIgnoredFile };\n"],"names":["IGNORED_PATTERNS","isIgnoredFile","folderPath","file","ignorePatterns","push","relativeFilePath","path","join","isIgnored","pattern","startsWith","minimatch","slice","matchBase","dot","basename","getFiles","dirPath","subfolder","arrayOfFiles","entries","fse","readdir","entry","entryPathFromRoot","entryPath","relative","statSync","isDirectory","subFiles","readGitignore","gitignorePath","resolve","pathExist","pathExists","gitignoreContent","readFile","split","filter","line","Boolean","trim","compressFilesToTar","storagePath","folderToCompress","filename","filesToCompress","tar","c","gzip"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compress-files.mjs","sources":["../../src/utils/compress-files.ts"],"sourcesContent":["import * as fse from 'fs-extra';\nimport * as tar from 'tar';\nimport * as path from 'path';\nimport { minimatch } from 'minimatch';\n\nconst IGNORED_PATTERNS = [\n '**/.git/**',\n '**/node_modules/**',\n '**/build/**',\n '**/data/uploads/**',\n '**/dist/**',\n '**/.cache/**',\n '**/.circleci/**',\n '**/.github/**',\n '**/.gitignore',\n '**/.gitkeep',\n '**/.gitlab-ci.yml',\n '**/.idea/**',\n '**/public/uploads/**',\n '**/.vscode/**',\n];\n\nconst isIgnoredFile = (folderPath: string, file: string, ignorePatterns: string[]): boolean => {\n ignorePatterns.push(...IGNORED_PATTERNS);\n const relativeFilePath = path.join(folderPath, file);\n let isIgnored = false;\n for (const pattern of ignorePatterns) {\n if (pattern.startsWith('!')) {\n if (minimatch(relativeFilePath, pattern.slice(1), { matchBase: true, dot: true })) {\n return false;\n }\n } else if (minimatch(relativeFilePath, pattern, { matchBase: true, dot: true })) {\n if (path.basename(file) !== '.gitkeep') {\n isIgnored = true;\n }\n }\n }\n return isIgnored;\n};\n\nconst getFiles = async (\n dirPath: string,\n ignorePatterns: string[] = [],\n subfolder: string = ''\n): Promise<string[]> => {\n const arrayOfFiles: string[] = [];\n const entries = await fse.readdir(path.join(dirPath, subfolder));\n\n for (const entry of entries) {\n const entryPathFromRoot = path.join(subfolder, entry);\n const entryPath = path.relative(dirPath, entryPathFromRoot);\n const isIgnored = isIgnoredFile(dirPath, entryPathFromRoot, ignorePatterns);\n\n if (!isIgnored) {\n if (fse.statSync(entryPath).isDirectory()) {\n const subFiles = await getFiles(dirPath, ignorePatterns, entryPathFromRoot);\n arrayOfFiles.push(...subFiles);\n } else {\n arrayOfFiles.push(entryPath);\n }\n }\n }\n return arrayOfFiles;\n};\n\nconst readGitignore = async (folderPath: string): Promise<string[]> => {\n const gitignorePath = path.resolve(folderPath, '.gitignore');\n const pathExist = await fse.pathExists(gitignorePath);\n\n if (!pathExist) return [];\n\n const gitignoreContent = await fse.readFile(gitignorePath, 'utf8');\n\n return gitignoreContent\n .split(/\\r?\\n/)\n .filter((line) => Boolean(line.trim()) && !line.startsWith('#'));\n};\n\nconst compressFilesToTar = async (\n storagePath: string,\n folderToCompress: string,\n filename: string\n): Promise<void> => {\n const ignorePatterns = await readGitignore(folderToCompress);\n const filesToCompress = await getFiles(folderToCompress, ignorePatterns);\n\n return tar.c(\n {\n gzip: true,\n file: path.resolve(storagePath, filename),\n },\n filesToCompress\n );\n};\n\nexport { compressFilesToTar, isIgnoredFile };\n"],"names":["IGNORED_PATTERNS","isIgnoredFile","folderPath","file","ignorePatterns","push","relativeFilePath","path","join","isIgnored","pattern","startsWith","minimatch","slice","matchBase","dot","basename","getFiles","dirPath","subfolder","arrayOfFiles","entries","fse","readdir","entry","entryPathFromRoot","entryPath","relative","statSync","isDirectory","subFiles","readGitignore","gitignorePath","resolve","pathExist","pathExists","gitignoreContent","readFile","split","filter","line","Boolean","trim","compressFilesToTar","storagePath","folderToCompress","filename","filesToCompress","tar","c","gzip"],"mappings":";;;;;AAKA,MAAMA,
|
|
1
|
+
{"version":3,"file":"compress-files.mjs","sources":["../../src/utils/compress-files.ts"],"sourcesContent":["import * as fse from 'fs-extra';\nimport * as tar from 'tar';\nimport * as path from 'path';\nimport { minimatch } from 'minimatch';\n\nconst IGNORED_PATTERNS = [\n '**/.git/**',\n '**/node_modules/**',\n '**/build/**',\n '**/data/uploads/**',\n '**/dist/**',\n '**/.cache/**',\n '**/.circleci/**',\n '**/.github/**',\n '**/.gitignore',\n '**/.gitkeep',\n '**/.gitlab-ci.yml',\n '**/.idea/**',\n '**/public/uploads/**',\n '**/.vscode/**',\n];\n\nconst isIgnoredFile = (folderPath: string, file: string, ignorePatterns: string[]): boolean => {\n ignorePatterns.push(...IGNORED_PATTERNS);\n const relativeFilePath = path.join(folderPath, file);\n let isIgnored = false;\n for (const pattern of ignorePatterns) {\n if (pattern.startsWith('!')) {\n if (minimatch(relativeFilePath, pattern.slice(1), { matchBase: true, dot: true })) {\n return false;\n }\n } else if (minimatch(relativeFilePath, pattern, { matchBase: true, dot: true })) {\n if (path.basename(file) !== '.gitkeep') {\n isIgnored = true;\n }\n }\n }\n return isIgnored;\n};\n\nconst getFiles = async (\n dirPath: string,\n ignorePatterns: string[] = [],\n subfolder: string = ''\n): Promise<string[]> => {\n const arrayOfFiles: string[] = [];\n const entries = await fse.readdir(path.join(dirPath, subfolder));\n\n for (const entry of entries) {\n const entryPathFromRoot = path.join(subfolder, entry);\n const entryPath = path.relative(dirPath, entryPathFromRoot);\n const isIgnored = isIgnoredFile(dirPath, entryPathFromRoot, ignorePatterns);\n\n if (!isIgnored) {\n if (fse.statSync(entryPath).isDirectory()) {\n const subFiles = await getFiles(dirPath, ignorePatterns, entryPathFromRoot);\n arrayOfFiles.push(...subFiles);\n } else {\n arrayOfFiles.push(entryPath);\n }\n }\n }\n return arrayOfFiles;\n};\n\nconst readGitignore = async (folderPath: string): Promise<string[]> => {\n const gitignorePath = path.resolve(folderPath, '.gitignore');\n const pathExist = await fse.pathExists(gitignorePath);\n\n if (!pathExist) return [];\n\n const gitignoreContent = await fse.readFile(gitignorePath, 'utf8');\n\n return gitignoreContent\n .split(/\\r?\\n/)\n .filter((line) => Boolean(line.trim()) && !line.startsWith('#'));\n};\n\nconst compressFilesToTar = async (\n storagePath: string,\n folderToCompress: string,\n filename: string\n): Promise<void> => {\n const ignorePatterns = await readGitignore(folderToCompress);\n const filesToCompress = await getFiles(folderToCompress, ignorePatterns);\n\n return tar.c(\n {\n gzip: true,\n file: path.resolve(storagePath, filename),\n },\n filesToCompress\n );\n};\n\nexport { compressFilesToTar, isIgnoredFile };\n"],"names":["IGNORED_PATTERNS","isIgnoredFile","folderPath","file","ignorePatterns","push","relativeFilePath","path","join","isIgnored","pattern","startsWith","minimatch","slice","matchBase","dot","basename","getFiles","dirPath","subfolder","arrayOfFiles","entries","fse","readdir","entry","entryPathFromRoot","entryPath","relative","statSync","isDirectory","subFiles","readGitignore","gitignorePath","resolve","pathExist","pathExists","gitignoreContent","readFile","split","filter","line","Boolean","trim","compressFilesToTar","storagePath","folderToCompress","filename","filesToCompress","tar","c","gzip"],"mappings":";;;;;AAKA,MAAMA,gBAAAA,GAAmB;AACvB,IAAA,YAAA;AACA,IAAA,oBAAA;AACA,IAAA,aAAA;AACA,IAAA,oBAAA;AACA,IAAA,YAAA;AACA,IAAA,cAAA;AACA,IAAA,iBAAA;AACA,IAAA,eAAA;AACA,IAAA,eAAA;AACA,IAAA,aAAA;AACA,IAAA,mBAAA;AACA,IAAA,aAAA;AACA,IAAA,sBAAA;AACA,IAAA;AACD,CAAA;AAED,MAAMC,aAAAA,GAAgB,CAACC,UAAAA,EAAoBC,IAAAA,EAAcC,cAAAA,GAAAA;AACvDA,IAAAA,cAAAA,CAAeC,IAAI,CAAA,GAAIL,gBAAAA,CAAAA;AACvB,IAAA,MAAMM,gBAAAA,GAAmBC,IAAAA,CAAKC,IAAI,CAACN,UAAAA,EAAYC,IAAAA,CAAAA;AAC/C,IAAA,IAAIM,SAAAA,GAAY,KAAA;IAChB,KAAK,MAAMC,WAAWN,cAAAA,CAAgB;QACpC,IAAIM,OAAAA,CAAQC,UAAU,CAAC,GAAA,CAAA,EAAM;AAC3B,YAAA,IAAIC,SAAAA,CAAUN,gBAAAA,EAAkBI,OAAAA,CAAQG,KAAK,CAAC,CAAA,CAAA,EAAI;gBAAEC,SAAAA,EAAW,IAAA;gBAAMC,GAAAA,EAAK;aAAK,CAAA,EAAI;gBACjF,OAAO,KAAA;AACT,YAAA;QACF,CAAA,MAAO,IAAIH,SAAAA,CAAUN,gBAAAA,EAAkBI,OAAAA,EAAS;YAAEI,SAAAA,EAAW,IAAA;YAAMC,GAAAA,EAAK;SAAK,CAAA,EAAI;AAC/E,YAAA,IAAIR,IAAAA,CAAKS,QAAQ,CAACb,IAAAA,CAAAA,KAAU,UAAA,EAAY;gBACtCM,SAAAA,GAAY,IAAA;AACd,YAAA;AACF,QAAA;AACF,IAAA;IACA,OAAOA,SAAAA;AACT;AAEA,MAAMQ,WAAW,OACfC,OAAAA,EACAd,iBAA2B,EAAE,EAC7Be,YAAoB,EAAE,GAAA;AAEtB,IAAA,MAAMC,eAAyB,EAAE;IACjC,MAAMC,OAAAA,GAAU,MAAMC,GAAAA,CAAIC,OAAO,CAAChB,IAAAA,CAAKC,IAAI,CAACU,OAAAA,EAASC,SAAAA,CAAAA,CAAAA;IAErD,KAAK,MAAMK,SAASH,OAAAA,CAAS;AAC3B,QAAA,MAAMI,iBAAAA,GAAoBlB,IAAAA,CAAKC,IAAI,CAACW,SAAAA,EAAWK,KAAAA,CAAAA;AAC/C,QAAA,MAAME,SAAAA,GAAYnB,IAAAA,CAAKoB,QAAQ,CAACT,OAAAA,EAASO,iBAAAA,CAAAA;QACzC,MAAMhB,SAAAA,GAAYR,aAAAA,CAAciB,OAAAA,EAASO,iBAAAA,EAAmBrB,cAAAA,CAAAA;AAE5D,QAAA,IAAI,CAACK,SAAAA,EAAW;AACd,YAAA,IAAIa,GAAAA,CAAIM,QAAQ,CAACF,SAAAA,CAAAA,CAAWG,WAAW,EAAA,EAAI;AACzC,gBAAA,MAAMC,QAAAA,GAAW,MAAMb,QAAAA,CAASC,OAAAA,EAASd,cAAAA,EAAgBqB,iBAAAA,CAAAA;AACzDL,gBAAAA,YAAAA,CAAaf,IAAI,CAAA,GAAIyB,QAAAA,CAAAA;YACvB,CAAA,MAAO;AACLV,gBAAAA,YAAAA,CAAaf,IAAI,CAACqB,SAAAA,CAAAA;AACpB,YAAA;AACF,QAAA;AACF,IAAA;IACA,OAAON,YAAAA;AACT,CAAA;AAEA,MAAMW,gBAAgB,OAAO7B,UAAAA,GAAAA;AAC3B,IAAA,MAAM8B,aAAAA,GAAgBzB,IAAAA,CAAK0B,OAAO,CAAC/B,UAAAA,EAAY,YAAA,CAAA;AAC/C,IAAA,MAAMgC,SAAAA,GAAY,MAAMZ,GAAAA,CAAIa,UAAU,CAACH,aAAAA,CAAAA;IAEvC,IAAI,CAACE,SAAAA,EAAW,OAAO,EAAE;AAEzB,IAAA,MAAME,gBAAAA,GAAmB,MAAMd,GAAAA,CAAIe,QAAQ,CAACL,aAAAA,EAAe,MAAA,CAAA;AAE3D,IAAA,OAAOI,gBAAAA,CACJE,KAAK,CAAC,OAAA,CAAA,CACNC,MAAM,CAAC,CAACC,IAAAA,GAASC,OAAAA,CAAQD,KAAKE,IAAI,EAAA,CAAA,IAAO,CAACF,IAAAA,CAAK7B,UAAU,CAAC,GAAA,CAAA,CAAA;AAC/D,CAAA;AAEA,MAAMgC,kBAAAA,GAAqB,OACzBC,WAAAA,EACAC,gBAAAA,EACAC,QAAAA,GAAAA;IAEA,MAAM1C,cAAAA,GAAiB,MAAM2B,aAAAA,CAAcc,gBAAAA,CAAAA;IAC3C,MAAME,eAAAA,GAAkB,MAAM9B,QAAAA,CAAS4B,gBAAAA,EAAkBzC,cAAAA,CAAAA;IAEzD,OAAO4C,GAAAA,CAAIC,CAAC,CACV;QACEC,IAAAA,EAAM,IAAA;QACN/C,IAAAA,EAAMI,IAAAA,CAAK0B,OAAO,CAACW,WAAAA,EAAaE,QAAAA;KAClC,EACAC,eAAAA,CAAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-message-factories.js","sources":["../../src/utils/error-message-factories.ts"],"sourcesContent":["import chalk from 'chalk';\nimport boxen from 'boxen';\nimport { apiConfig } from '../config/api';\n\ntype EnvironmentErrorMessage = {\n projectName: string;\n firstLine: string;\n secondLine: string;\n};\n\nexport const environmentErrorMessageFactory = ({\n projectName,\n firstLine,\n secondLine,\n}: EnvironmentErrorMessage) => {\n return [\n chalk.yellow(firstLine),\n '',\n chalk.cyan(secondLine),\n chalk.blue(' → ') +\n chalk.blue.underline(`${apiConfig.dashboardBaseUrl}/projects/${projectName}`),\n ].join('\\n');\n};\n\nexport const environmentCreationErrorFactory = (environmentErrorMessage: string) =>\n boxen(environmentErrorMessage, {\n padding: 1,\n margin: 1,\n borderStyle: 'round',\n borderColor: 'white',\n titleAlignment: 'left',\n });\n"],"names":["environmentErrorMessageFactory","projectName","firstLine","secondLine","chalk","yellow","cyan","blue","underline","apiConfig","dashboardBaseUrl","join","environmentCreationErrorFactory","environmentErrorMessage","boxen","padding","margin","borderStyle","borderColor","titleAlignment"],"mappings":";;;;;;AAUO,MAAMA,iCAAiC,CAAC,EAC7CC,WAAW,EACXC,SAAS,EACTC,UAAU,EACc,GAAA;IACxB,OAAO;AACLC,QAAAA,KAAAA,CAAMC,MAAM,CAACH,SAAAA,CAAAA;AACb,QAAA,EAAA;AACAE,QAAAA,KAAAA,CAAME,IAAI,CAACH,UAAAA,CAAAA;AACXC,QAAAA,KAAAA,CAAMG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"error-message-factories.js","sources":["../../src/utils/error-message-factories.ts"],"sourcesContent":["import chalk from 'chalk';\nimport boxen from 'boxen';\nimport { apiConfig } from '../config/api';\n\ntype EnvironmentErrorMessage = {\n projectName: string;\n firstLine: string;\n secondLine: string;\n};\n\nexport const environmentErrorMessageFactory = ({\n projectName,\n firstLine,\n secondLine,\n}: EnvironmentErrorMessage) => {\n return [\n chalk.yellow(firstLine),\n '',\n chalk.cyan(secondLine),\n chalk.blue(' → ') +\n chalk.blue.underline(`${apiConfig.dashboardBaseUrl}/projects/${projectName}`),\n ].join('\\n');\n};\n\nexport const environmentCreationErrorFactory = (environmentErrorMessage: string) =>\n boxen(environmentErrorMessage, {\n padding: 1,\n margin: 1,\n borderStyle: 'round',\n borderColor: 'white',\n titleAlignment: 'left',\n });\n"],"names":["environmentErrorMessageFactory","projectName","firstLine","secondLine","chalk","yellow","cyan","blue","underline","apiConfig","dashboardBaseUrl","join","environmentCreationErrorFactory","environmentErrorMessage","boxen","padding","margin","borderStyle","borderColor","titleAlignment"],"mappings":";;;;;;AAUO,MAAMA,iCAAiC,CAAC,EAC7CC,WAAW,EACXC,SAAS,EACTC,UAAU,EACc,GAAA;IACxB,OAAO;AACLC,QAAAA,KAAAA,CAAMC,MAAM,CAACH,SAAAA,CAAAA;AACb,QAAA,EAAA;AACAE,QAAAA,KAAAA,CAAME,IAAI,CAACH,UAAAA,CAAAA;AACXC,QAAAA,KAAAA,CAAMG,IAAI,CAAC,MAAA,CAAA,GACTH,KAAAA,CAAMG,IAAI,CAACC,SAAS,CAAC,CAAA,EAAGC,aAAAA,CAAUC,gBAAgB,CAAC,UAAU,EAAET,WAAAA,CAAAA,CAAa;AAC/E,KAAA,CAACU,IAAI,CAAC,IAAA,CAAA;AACT;AAEO,MAAMC,+BAAAA,GAAkC,CAACC,uBAAAA,GAC9CC,MAAMD,uBAAAA,EAAyB;QAC7BE,OAAAA,EAAS,CAAA;QACTC,MAAAA,EAAQ,CAAA;QACRC,WAAAA,EAAa,OAAA;QACbC,WAAAA,EAAa,OAAA;QACbC,cAAAA,EAAgB;KAClB;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-message-factories.mjs","sources":["../../src/utils/error-message-factories.ts"],"sourcesContent":["import chalk from 'chalk';\nimport boxen from 'boxen';\nimport { apiConfig } from '../config/api';\n\ntype EnvironmentErrorMessage = {\n projectName: string;\n firstLine: string;\n secondLine: string;\n};\n\nexport const environmentErrorMessageFactory = ({\n projectName,\n firstLine,\n secondLine,\n}: EnvironmentErrorMessage) => {\n return [\n chalk.yellow(firstLine),\n '',\n chalk.cyan(secondLine),\n chalk.blue(' → ') +\n chalk.blue.underline(`${apiConfig.dashboardBaseUrl}/projects/${projectName}`),\n ].join('\\n');\n};\n\nexport const environmentCreationErrorFactory = (environmentErrorMessage: string) =>\n boxen(environmentErrorMessage, {\n padding: 1,\n margin: 1,\n borderStyle: 'round',\n borderColor: 'white',\n titleAlignment: 'left',\n });\n"],"names":["environmentErrorMessageFactory","projectName","firstLine","secondLine","chalk","yellow","cyan","blue","underline","apiConfig","dashboardBaseUrl","join","environmentCreationErrorFactory","environmentErrorMessage","boxen","padding","margin","borderStyle","borderColor","titleAlignment"],"mappings":";;;;AAUO,MAAMA,iCAAiC,CAAC,EAC7CC,WAAW,EACXC,SAAS,EACTC,UAAU,EACc,GAAA;IACxB,OAAO;AACLC,QAAAA,KAAAA,CAAMC,MAAM,CAACH,SAAAA,CAAAA;AACb,QAAA,EAAA;AACAE,QAAAA,KAAAA,CAAME,IAAI,CAACH,UAAAA,CAAAA;AACXC,QAAAA,KAAAA,CAAMG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"error-message-factories.mjs","sources":["../../src/utils/error-message-factories.ts"],"sourcesContent":["import chalk from 'chalk';\nimport boxen from 'boxen';\nimport { apiConfig } from '../config/api';\n\ntype EnvironmentErrorMessage = {\n projectName: string;\n firstLine: string;\n secondLine: string;\n};\n\nexport const environmentErrorMessageFactory = ({\n projectName,\n firstLine,\n secondLine,\n}: EnvironmentErrorMessage) => {\n return [\n chalk.yellow(firstLine),\n '',\n chalk.cyan(secondLine),\n chalk.blue(' → ') +\n chalk.blue.underline(`${apiConfig.dashboardBaseUrl}/projects/${projectName}`),\n ].join('\\n');\n};\n\nexport const environmentCreationErrorFactory = (environmentErrorMessage: string) =>\n boxen(environmentErrorMessage, {\n padding: 1,\n margin: 1,\n borderStyle: 'round',\n borderColor: 'white',\n titleAlignment: 'left',\n });\n"],"names":["environmentErrorMessageFactory","projectName","firstLine","secondLine","chalk","yellow","cyan","blue","underline","apiConfig","dashboardBaseUrl","join","environmentCreationErrorFactory","environmentErrorMessage","boxen","padding","margin","borderStyle","borderColor","titleAlignment"],"mappings":";;;;AAUO,MAAMA,iCAAiC,CAAC,EAC7CC,WAAW,EACXC,SAAS,EACTC,UAAU,EACc,GAAA;IACxB,OAAO;AACLC,QAAAA,KAAAA,CAAMC,MAAM,CAACH,SAAAA,CAAAA;AACb,QAAA,EAAA;AACAE,QAAAA,KAAAA,CAAME,IAAI,CAACH,UAAAA,CAAAA;AACXC,QAAAA,KAAAA,CAAMG,IAAI,CAAC,MAAA,CAAA,GACTH,KAAAA,CAAMG,IAAI,CAACC,SAAS,CAAC,CAAA,EAAGC,SAAAA,CAAUC,gBAAgB,CAAC,UAAU,EAAET,WAAAA,CAAAA,CAAa;AAC/E,KAAA,CAACU,IAAI,CAAC,IAAA,CAAA;AACT;AAEO,MAAMC,+BAAAA,GAAkC,CAACC,uBAAAA,GAC9CC,MAAMD,uBAAAA,EAAyB;QAC7BE,OAAAA,EAAS,CAAA;QACTC,MAAAA,EAAQ,CAAA;QACRC,WAAAA,EAAa,OAAA;QACbC,WAAAA,EAAa,OAAA;QACbC,cAAAA,EAAgB;KAClB;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-local-config.js","sources":["../../src/utils/get-local-config.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { CLIContext } from '../types';\nimport { local } from '../services';\nimport { LocalSave } from '../services/strapi-info-save';\n\nasync function getLocalConfig(ctx: CLIContext): Promise<LocalSave | null> {\n try {\n return await local.retrieve();\n } catch (e) {\n ctx.logger.debug('Failed to get project config', e);\n ctx.logger.error('An error occurred while retrieving config data from your local project.');\n return null;\n }\n}\n\nasync function getLocalProject(ctx: CLIContext) {\n const localConfig = await getLocalConfig(ctx);\n\n if (!localConfig || !localConfig.project) {\n ctx.logger.warn(\n `\\nWe couldn't find a valid local project config.\\nPlease link your local project to an existing Strapi Cloud project using the ${chalk.cyan(\n 'link'\n )} command.`\n );\n process.exit(1);\n }\n return localConfig.project;\n}\n\nexport { getLocalConfig, getLocalProject };\n"],"names":["getLocalConfig","ctx","local","e","logger","debug","error","getLocalProject","localConfig","project","warn","chalk","cyan","process","exit"],"mappings":";;;;;;;;;;;;;;;;AAKA,eAAeA,eAAeC,GAAe,EAAA;IAC3C,IAAI;QACF,OAAO,MAAMC,uBAAc,EAAA;AAC7B,
|
|
1
|
+
{"version":3,"file":"get-local-config.js","sources":["../../src/utils/get-local-config.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { CLIContext } from '../types';\nimport { local } from '../services';\nimport { LocalSave } from '../services/strapi-info-save';\n\nasync function getLocalConfig(ctx: CLIContext): Promise<LocalSave | null> {\n try {\n return await local.retrieve();\n } catch (e) {\n ctx.logger.debug('Failed to get project config', e);\n ctx.logger.error('An error occurred while retrieving config data from your local project.');\n return null;\n }\n}\n\nasync function getLocalProject(ctx: CLIContext) {\n const localConfig = await getLocalConfig(ctx);\n\n if (!localConfig || !localConfig.project) {\n ctx.logger.warn(\n `\\nWe couldn't find a valid local project config.\\nPlease link your local project to an existing Strapi Cloud project using the ${chalk.cyan(\n 'link'\n )} command.`\n );\n process.exit(1);\n }\n return localConfig.project;\n}\n\nexport { getLocalConfig, getLocalProject };\n"],"names":["getLocalConfig","ctx","local","e","logger","debug","error","getLocalProject","localConfig","project","warn","chalk","cyan","process","exit"],"mappings":";;;;;;;;;;;;;;;;AAKA,eAAeA,eAAeC,GAAe,EAAA;IAC3C,IAAI;QACF,OAAO,MAAMC,uBAAc,EAAA;AAC7B,IAAA,CAAA,CAAE,OAAOC,CAAAA,EAAG;AACVF,QAAAA,GAAAA,CAAIG,MAAM,CAACC,KAAK,CAAC,8BAAA,EAAgCF,CAAAA,CAAAA;QACjDF,GAAAA,CAAIG,MAAM,CAACE,KAAK,CAAC,yEAAA,CAAA;QACjB,OAAO,IAAA;AACT,IAAA;AACF;AAEA,eAAeC,gBAAgBN,GAAe,EAAA;IAC5C,MAAMO,WAAAA,GAAc,MAAMR,cAAAA,CAAeC,GAAAA,CAAAA;AAEzC,IAAA,IAAI,CAACO,WAAAA,IAAe,CAACA,WAAAA,CAAYC,OAAO,EAAE;AACxCR,QAAAA,GAAAA,CAAIG,MAAM,CAACM,IAAI,CACb,CAAC,+HAA+H,EAAEC,KAAAA,CAAMC,IAAI,CAC1I,MAAA,CAAA,CACA,SAAS,CAAC,CAAA;AAEdC,QAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,IAAA;AACA,IAAA,OAAON,YAAYC,OAAO;AAC5B;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-local-config.mjs","sources":["../../src/utils/get-local-config.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { CLIContext } from '../types';\nimport { local } from '../services';\nimport { LocalSave } from '../services/strapi-info-save';\n\nasync function getLocalConfig(ctx: CLIContext): Promise<LocalSave | null> {\n try {\n return await local.retrieve();\n } catch (e) {\n ctx.logger.debug('Failed to get project config', e);\n ctx.logger.error('An error occurred while retrieving config data from your local project.');\n return null;\n }\n}\n\nasync function getLocalProject(ctx: CLIContext) {\n const localConfig = await getLocalConfig(ctx);\n\n if (!localConfig || !localConfig.project) {\n ctx.logger.warn(\n `\\nWe couldn't find a valid local project config.\\nPlease link your local project to an existing Strapi Cloud project using the ${chalk.cyan(\n 'link'\n )} command.`\n );\n process.exit(1);\n }\n return localConfig.project;\n}\n\nexport { getLocalConfig, getLocalProject };\n"],"names":["getLocalConfig","ctx","local","e","logger","debug","error","getLocalProject","localConfig","project","warn","chalk","cyan","process","exit"],"mappings":";;;;;;;;;;;;;;AAKA,eAAeA,eAAeC,GAAe,EAAA;IAC3C,IAAI;QACF,OAAO,MAAMC,QAAc,EAAA;AAC7B,
|
|
1
|
+
{"version":3,"file":"get-local-config.mjs","sources":["../../src/utils/get-local-config.ts"],"sourcesContent":["import chalk from 'chalk';\nimport type { CLIContext } from '../types';\nimport { local } from '../services';\nimport { LocalSave } from '../services/strapi-info-save';\n\nasync function getLocalConfig(ctx: CLIContext): Promise<LocalSave | null> {\n try {\n return await local.retrieve();\n } catch (e) {\n ctx.logger.debug('Failed to get project config', e);\n ctx.logger.error('An error occurred while retrieving config data from your local project.');\n return null;\n }\n}\n\nasync function getLocalProject(ctx: CLIContext) {\n const localConfig = await getLocalConfig(ctx);\n\n if (!localConfig || !localConfig.project) {\n ctx.logger.warn(\n `\\nWe couldn't find a valid local project config.\\nPlease link your local project to an existing Strapi Cloud project using the ${chalk.cyan(\n 'link'\n )} command.`\n );\n process.exit(1);\n }\n return localConfig.project;\n}\n\nexport { getLocalConfig, getLocalProject };\n"],"names":["getLocalConfig","ctx","local","e","logger","debug","error","getLocalProject","localConfig","project","warn","chalk","cyan","process","exit"],"mappings":";;;;;;;;;;;;;;AAKA,eAAeA,eAAeC,GAAe,EAAA;IAC3C,IAAI;QACF,OAAO,MAAMC,QAAc,EAAA;AAC7B,IAAA,CAAA,CAAE,OAAOC,CAAAA,EAAG;AACVF,QAAAA,GAAAA,CAAIG,MAAM,CAACC,KAAK,CAAC,8BAAA,EAAgCF,CAAAA,CAAAA;QACjDF,GAAAA,CAAIG,MAAM,CAACE,KAAK,CAAC,yEAAA,CAAA;QACjB,OAAO,IAAA;AACT,IAAA;AACF;AAEA,eAAeC,gBAAgBN,GAAe,EAAA;IAC5C,MAAMO,WAAAA,GAAc,MAAMR,cAAAA,CAAeC,GAAAA,CAAAA;AAEzC,IAAA,IAAI,CAACO,WAAAA,IAAe,CAACA,WAAAA,CAAYC,OAAO,EAAE;AACxCR,QAAAA,GAAAA,CAAIG,MAAM,CAACM,IAAI,CACb,CAAC,+HAA+H,EAAEC,KAAAA,CAAMC,IAAI,CAC1I,MAAA,CAAA,CACA,SAAS,CAAC,CAAA;AAEdC,QAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,IAAA;AACA,IAAA,OAAON,YAAYC,OAAO;AAC5B;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../../src/utils/helpers.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { has } from 'lodash/fp';\n\n// TODO: Remove duplicated code by extracting to a shared package\n\nconst assertCwdContainsStrapiProject = (name: string) => {\n const logErrorAndExit = () => {\n console.log(\n `You need to run ${chalk.yellow(\n `strapi ${name}`\n )} in a Strapi project. Make sure you are in the right directory.`\n );\n process.exit(1);\n };\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const pkgJSON = require(`${process.cwd()}/package.json`);\n if (\n !has('dependencies.@strapi/strapi', pkgJSON) &&\n !has('devDependencies.@strapi/strapi', pkgJSON)\n ) {\n logErrorAndExit();\n }\n } catch (err) {\n logErrorAndExit();\n }\n};\n\nconst runAction =\n (name: string, action: (...args: any[]) => Promise<unknown>) =>\n (...args: unknown[]) => {\n assertCwdContainsStrapiProject(name);\n\n Promise.resolve()\n .then(() => {\n return action(...args);\n })\n .catch((error) => {\n console.error(error);\n process.exit(1);\n });\n };\n\nexport { runAction };\n"],"names":["assertCwdContainsStrapiProject","name","logErrorAndExit","console","log","chalk","yellow","process","exit","pkgJSON","require","cwd","has","err","runAction","action","args","Promise","resolve","then","catch","error"],"mappings":";;;;;AAGA;AAEA,MAAMA,iCAAiC,CAACC,IAAAA,GAAAA;AACtC,IAAA,MAAMC,
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../src/utils/helpers.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { has } from 'lodash/fp';\n\n// TODO: Remove duplicated code by extracting to a shared package\n\nconst assertCwdContainsStrapiProject = (name: string) => {\n const logErrorAndExit = () => {\n console.log(\n `You need to run ${chalk.yellow(\n `strapi ${name}`\n )} in a Strapi project. Make sure you are in the right directory.`\n );\n process.exit(1);\n };\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const pkgJSON = require(`${process.cwd()}/package.json`);\n if (\n !has('dependencies.@strapi/strapi', pkgJSON) &&\n !has('devDependencies.@strapi/strapi', pkgJSON)\n ) {\n logErrorAndExit();\n }\n } catch (err) {\n logErrorAndExit();\n }\n};\n\nconst runAction =\n (name: string, action: (...args: any[]) => Promise<unknown>) =>\n (...args: unknown[]) => {\n assertCwdContainsStrapiProject(name);\n\n Promise.resolve()\n .then(() => {\n return action(...args);\n })\n .catch((error) => {\n console.error(error);\n process.exit(1);\n });\n };\n\nexport { runAction };\n"],"names":["assertCwdContainsStrapiProject","name","logErrorAndExit","console","log","chalk","yellow","process","exit","pkgJSON","require","cwd","has","err","runAction","action","args","Promise","resolve","then","catch","error"],"mappings":";;;;;AAGA;AAEA,MAAMA,iCAAiC,CAACC,IAAAA,GAAAA;AACtC,IAAA,MAAMC,eAAAA,GAAkB,IAAA;AACtBC,QAAAA,OAAAA,CAAQC,GAAG,CACT,CAAC,gBAAgB,EAAEC,KAAAA,CAAMC,MAAM,CAC7B,CAAC,OAAO,EAAEL,IAAAA,CAAAA,CAAM,CAAA,CAChB,+DAA+D,CAAC,CAAA;AAEpEM,QAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,IAAA,CAAA;IAEA,IAAI;;AAEF,QAAA,MAAMC,UAAUC,OAAAA,CAAQ,CAAA,EAAGH,QAAQI,GAAG,EAAA,CAAG,aAAa,CAAC,CAAA;AACvD,QAAA,IACE,CAACC,MAAAA,CAAI,6BAAA,EAA+BH,YACpC,CAACG,MAAAA,CAAI,kCAAkCH,OAAAA,CAAAA,EACvC;AACAP,YAAAA,eAAAA,EAAAA;AACF,QAAA;AACF,IAAA,CAAA,CAAE,OAAOW,GAAAA,EAAK;AACZX,QAAAA,eAAAA,EAAAA;AACF,IAAA;AACF,CAAA;AAEA,MAAMY,SAAAA,GACJ,CAACb,IAAAA,EAAcc,MAAAA,GACf,CAAC,GAAGC,IAAAA,GAAAA;QACFhB,8BAAAA,CAA+BC,IAAAA,CAAAA;QAE/BgB,OAAAA,CAAQC,OAAO,EAAA,CACZC,IAAI,CAAC,IAAA;AACJ,YAAA,OAAOJ,MAAAA,CAAAA,GAAUC,IAAAA,CAAAA;QACnB,CAAA,CAAA,CACCI,KAAK,CAAC,CAACC,KAAAA,GAAAA;AACNlB,YAAAA,OAAAA,CAAQkB,KAAK,CAACA,KAAAA,CAAAA;AACdd,YAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,QAAA,CAAA,CAAA;AACJ,IAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.mjs","sources":["../../src/utils/helpers.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { has } from 'lodash/fp';\n\n// TODO: Remove duplicated code by extracting to a shared package\n\nconst assertCwdContainsStrapiProject = (name: string) => {\n const logErrorAndExit = () => {\n console.log(\n `You need to run ${chalk.yellow(\n `strapi ${name}`\n )} in a Strapi project. Make sure you are in the right directory.`\n );\n process.exit(1);\n };\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const pkgJSON = require(`${process.cwd()}/package.json`);\n if (\n !has('dependencies.@strapi/strapi', pkgJSON) &&\n !has('devDependencies.@strapi/strapi', pkgJSON)\n ) {\n logErrorAndExit();\n }\n } catch (err) {\n logErrorAndExit();\n }\n};\n\nconst runAction =\n (name: string, action: (...args: any[]) => Promise<unknown>) =>\n (...args: unknown[]) => {\n assertCwdContainsStrapiProject(name);\n\n Promise.resolve()\n .then(() => {\n return action(...args);\n })\n .catch((error) => {\n console.error(error);\n process.exit(1);\n });\n };\n\nexport { runAction };\n"],"names":["assertCwdContainsStrapiProject","name","logErrorAndExit","console","log","chalk","yellow","process","exit","pkgJSON","require","cwd","has","err","runAction","action","args","Promise","resolve","then","catch","error"],"mappings":";;;AAGA;AAEA,MAAMA,iCAAiC,CAACC,IAAAA,GAAAA;AACtC,IAAA,MAAMC,
|
|
1
|
+
{"version":3,"file":"helpers.mjs","sources":["../../src/utils/helpers.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { has } from 'lodash/fp';\n\n// TODO: Remove duplicated code by extracting to a shared package\n\nconst assertCwdContainsStrapiProject = (name: string) => {\n const logErrorAndExit = () => {\n console.log(\n `You need to run ${chalk.yellow(\n `strapi ${name}`\n )} in a Strapi project. Make sure you are in the right directory.`\n );\n process.exit(1);\n };\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const pkgJSON = require(`${process.cwd()}/package.json`);\n if (\n !has('dependencies.@strapi/strapi', pkgJSON) &&\n !has('devDependencies.@strapi/strapi', pkgJSON)\n ) {\n logErrorAndExit();\n }\n } catch (err) {\n logErrorAndExit();\n }\n};\n\nconst runAction =\n (name: string, action: (...args: any[]) => Promise<unknown>) =>\n (...args: unknown[]) => {\n assertCwdContainsStrapiProject(name);\n\n Promise.resolve()\n .then(() => {\n return action(...args);\n })\n .catch((error) => {\n console.error(error);\n process.exit(1);\n });\n };\n\nexport { runAction };\n"],"names":["assertCwdContainsStrapiProject","name","logErrorAndExit","console","log","chalk","yellow","process","exit","pkgJSON","require","cwd","has","err","runAction","action","args","Promise","resolve","then","catch","error"],"mappings":";;;AAGA;AAEA,MAAMA,iCAAiC,CAACC,IAAAA,GAAAA;AACtC,IAAA,MAAMC,eAAAA,GAAkB,IAAA;AACtBC,QAAAA,OAAAA,CAAQC,GAAG,CACT,CAAC,gBAAgB,EAAEC,KAAAA,CAAMC,MAAM,CAC7B,CAAC,OAAO,EAAEL,IAAAA,CAAAA,CAAM,CAAA,CAChB,+DAA+D,CAAC,CAAA;AAEpEM,QAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,IAAA,CAAA;IAEA,IAAI;;AAEF,QAAA,MAAMC,UAAUC,OAAAA,CAAQ,CAAA,EAAGH,QAAQI,GAAG,EAAA,CAAG,aAAa,CAAC,CAAA;AACvD,QAAA,IACE,CAACC,GAAAA,CAAI,6BAAA,EAA+BH,YACpC,CAACG,GAAAA,CAAI,kCAAkCH,OAAAA,CAAAA,EACvC;AACAP,YAAAA,eAAAA,EAAAA;AACF,QAAA;AACF,IAAA,CAAA,CAAE,OAAOW,GAAAA,EAAK;AACZX,QAAAA,eAAAA,EAAAA;AACF,IAAA;AACF,CAAA;AAEA,MAAMY,SAAAA,GACJ,CAACb,IAAAA,EAAcc,MAAAA,GACf,CAAC,GAAGC,IAAAA,GAAAA;QACFhB,8BAAAA,CAA+BC,IAAAA,CAAAA;QAE/BgB,OAAAA,CAAQC,OAAO,EAAA,CACZC,IAAI,CAAC,IAAA;AACJ,YAAA,OAAOJ,MAAAA,CAAAA,GAAUC,IAAAA,CAAAA;QACnB,CAAA,CAAA,CACCI,KAAK,CAAC,CAACC,KAAAA,GAAAA;AACNlB,YAAAA,OAAAA,CAAQkB,KAAK,CAACA,KAAAA,CAAAA;AACdd,YAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,QAAA,CAAA,CAAA;AACJ,IAAA;;;;"}
|
package/dist/utils/pkg.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pkg.js","sources":["../../src/utils/pkg.ts"],"sourcesContent":["import * as fse from 'fs-extra';\nimport os from 'os';\nimport pkgUp from 'pkg-up';\nimport * as yup from 'yup';\nimport chalk from 'chalk';\nimport { Logger } from '../services/logger';\n\ninterface Export {\n types?: string;\n source: string;\n module?: string;\n import?: string;\n require?: string;\n default: string;\n}\n\nconst packageJsonSchema = yup.object({\n name: yup.string().required(),\n exports: yup.lazy((value) =>\n yup\n .object(\n typeof value === 'object'\n ? Object.entries(value).reduce(\n (acc, [key, value]) => {\n if (typeof value === 'object') {\n acc[key] = yup\n .object({\n types: yup.string().optional(),\n source: yup.string().required(),\n module: yup.string().optional(),\n import: yup.string().required(),\n require: yup.string().required(),\n default: yup.string().required(),\n })\n .noUnknown(true);\n } else {\n acc[key] = yup\n .string()\n .matches(/^\\.\\/.*\\.json$/)\n .required();\n }\n\n return acc;\n },\n {} as Record<string, yup.SchemaOf<string> | yup.SchemaOf<Export>>\n )\n : undefined\n )\n .optional()\n ),\n});\n\ntype PackageJson = yup.Asserts<typeof packageJsonSchema>;\n\n/**\n * @description being a task to load the package.json starting from the current working directory\n * using a shallow find for the package.json and `fs` to read the file. If no package.json is found,\n * the process will throw with an appropriate error message.\n */\nconst loadPkg = async ({ cwd, logger }: { cwd: string; logger: Logger }): Promise<PackageJson> => {\n const pkgPath = await pkgUp({ cwd });\n\n if (!pkgPath) {\n throw new Error('Could not find a package.json in the current directory');\n }\n\n const buffer = await fse.readFile(pkgPath);\n\n const pkg = JSON.parse(buffer.toString());\n\n logger.debug('Loaded package.json:', os.EOL, pkg);\n\n return pkg;\n};\n\n/**\n * @description validate the package.json against a standardised schema using `yup`.\n * If the validation fails, the process will throw with an appropriate error message.\n */\nconst validatePkg = async ({ pkg }: { pkg: object }): Promise<PackageJson> => {\n try {\n return await packageJsonSchema.validate(pkg, {\n strict: true,\n });\n } catch (err) {\n if (err instanceof yup.ValidationError) {\n switch (err.type) {\n case 'required':\n if (err.path) {\n throw new Error(\n `'${err.path}' in 'package.json' is required as type '${chalk.magenta(\n yup.reach(packageJsonSchema, err.path).type\n )}'`\n );\n }\n break;\n /**\n * This will only be thrown if there are keys in the export map\n * that we don't expect so we can therefore make some assumptions\n */\n case 'noUnknown':\n if (err.path && err.params && 'unknown' in err.params) {\n throw new Error(\n `'${err.path}' in 'package.json' contains the unknown key ${chalk.magenta(\n err.params.unknown\n )}, for compatability only the following keys are allowed: ${chalk.magenta(\n \"['types', 'source', 'import', 'require', 'default']\"\n )}`\n );\n }\n break;\n default:\n if (err.path && err.params && 'type' in err.params && 'value' in err.params) {\n throw new Error(\n `'${err.path}' in 'package.json' must be of type '${chalk.magenta(\n err.params.type\n )}' (
|
|
1
|
+
{"version":3,"file":"pkg.js","sources":["../../src/utils/pkg.ts"],"sourcesContent":["import * as fse from 'fs-extra';\nimport os from 'os';\nimport pkgUp from 'pkg-up';\nimport * as yup from 'yup';\nimport chalk from 'chalk';\nimport { Logger } from '../services/logger';\n\ninterface Export {\n types?: string;\n source: string;\n module?: string;\n import?: string;\n require?: string;\n default: string;\n}\n\nconst packageJsonSchema = yup.object({\n name: yup.string().required(),\n exports: yup.lazy((value) =>\n yup\n .object(\n typeof value === 'object'\n ? Object.entries(value).reduce(\n (acc, [key, value]) => {\n if (typeof value === 'object') {\n acc[key] = yup\n .object({\n types: yup.string().optional(),\n source: yup.string().required(),\n module: yup.string().optional(),\n import: yup.string().required(),\n require: yup.string().required(),\n default: yup.string().required(),\n })\n .noUnknown(true);\n } else {\n acc[key] = yup\n .string()\n .matches(/^\\.\\/.*\\.json$/)\n .required();\n }\n\n return acc;\n },\n {} as Record<string, yup.SchemaOf<string> | yup.SchemaOf<Export>>\n )\n : undefined\n )\n .optional()\n ),\n});\n\ntype PackageJson = yup.Asserts<typeof packageJsonSchema>;\n\n/**\n * @description being a task to load the package.json starting from the current working directory\n * using a shallow find for the package.json and `fs` to read the file. If no package.json is found,\n * the process will throw with an appropriate error message.\n */\nconst loadPkg = async ({ cwd, logger }: { cwd: string; logger: Logger }): Promise<PackageJson> => {\n const pkgPath = await pkgUp({ cwd });\n\n if (!pkgPath) {\n throw new Error('Could not find a package.json in the current directory');\n }\n\n const buffer = await fse.readFile(pkgPath);\n\n const pkg = JSON.parse(buffer.toString());\n\n logger.debug('Loaded package.json:', os.EOL, pkg);\n\n return pkg;\n};\n\n/**\n * @description validate the package.json against a standardised schema using `yup`.\n * If the validation fails, the process will throw with an appropriate error message.\n */\nconst validatePkg = async ({ pkg }: { pkg: object }): Promise<PackageJson> => {\n try {\n return await packageJsonSchema.validate(pkg, {\n strict: true,\n });\n } catch (err) {\n if (err instanceof yup.ValidationError) {\n switch (err.type) {\n case 'required':\n if (err.path) {\n throw new Error(\n `'${err.path}' in 'package.json' is required as type '${chalk.magenta(\n yup.reach(packageJsonSchema, err.path).type\n )}'`\n );\n }\n break;\n /**\n * This will only be thrown if there are keys in the export map\n * that we don't expect so we can therefore make some assumptions\n */\n case 'noUnknown':\n if (err.path && err.params && 'unknown' in err.params) {\n throw new Error(\n `'${err.path}' in 'package.json' contains the unknown key ${chalk.magenta(\n err.params.unknown\n )}, for compatability only the following keys are allowed: ${chalk.magenta(\n \"['types', 'source', 'import', 'require', 'default']\"\n )}`\n );\n }\n break;\n default:\n if (err.path && err.params && 'type' in err.params && 'value' in err.params) {\n throw new Error(\n `'${err.path}' in 'package.json' must be of type '${chalk.magenta(\n err.params.type\n )}' (received '${chalk.magenta(typeof err.params.value)}')`\n );\n }\n }\n }\n\n throw err;\n }\n};\n\nexport type { PackageJson, Export };\nexport { loadPkg, validatePkg };\n"],"names":["yup","object","name","string","required","exports","lazy","value","Object","entries","reduce","acc","key","types","optional","source","module","import","require","default","noUnknown","matches","undefined","loadPkg","cwd","logger","pkgPath","pkgUp","Error","buffer","fse","readFile","pkg","JSON","parse","toString","debug","os","EOL"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgB0BA,cAAAA,CAAIC,MAAM,CAAC;IACnCC,IAAAA,EAAMF,cAAAA,CAAIG,MAAM,EAAA,CAAGC,QAAQ,EAAA;IAC3BC,OAAAA,EAASL,cAAAA,CAAIM,IAAI,CAAC,CAACC,QACjBP,cAAAA,CACGC,MAAM,CACL,OAAOM,KAAAA,KAAU,WACbC,MAAAA,CAAOC,OAAO,CAACF,KAAAA,CAAAA,CAAOG,MAAM,CAC1B,CAACC,GAAAA,EAAK,CAACC,GAAAA,EAAKL,KAAAA,CAAM,GAAA;YAChB,IAAI,OAAOA,UAAU,QAAA,EAAU;AAC7BI,gBAAAA,GAAG,CAACC,GAAAA,CAAI,GAAGZ,cAAAA,CACRC,MAAM,CAAC;oBACNY,KAAAA,EAAOb,cAAAA,CAAIG,MAAM,EAAA,CAAGW,QAAQ,EAAA;oBAC5BC,MAAAA,EAAQf,cAAAA,CAAIG,MAAM,EAAA,CAAGC,QAAQ,EAAA;oBAC7BY,MAAAA,EAAQhB,cAAAA,CAAIG,MAAM,EAAA,CAAGW,QAAQ,EAAA;oBAC7BG,MAAAA,EAAQjB,cAAAA,CAAIG,MAAM,EAAA,CAAGC,QAAQ,EAAA;oBAC7Bc,OAAAA,EAASlB,cAAAA,CAAIG,MAAM,EAAA,CAAGC,QAAQ,EAAA;oBAC9Be,OAAAA,EAASnB,cAAAA,CAAIG,MAAM,EAAA,CAAGC,QAAQ;AAChC,iBAAA,CAAA,CACCgB,SAAS,CAAC,IAAA,CAAA;YACf,CAAA,MAAO;gBACLT,GAAG,CAACC,IAAI,GAAGZ,cAAAA,CACRG,MAAM,EAAA,CACNkB,OAAO,CAAC,gBAAA,CAAA,CACRjB,QAAQ,EAAA;AACb,YAAA;YAEA,OAAOO,GAAAA;QACT,CAAA,EACA,EAAC,CAAA,GAEHW,SAAAA,CAAAA,CAELR,QAAQ,EAAA;AAEf,CAAA;AAIA;;;;AAIC,UACKS,OAAAA,GAAU,OAAO,EAAEC,GAAG,EAAEC,MAAM,EAAmC,GAAA;IACrE,MAAMC,OAAAA,GAAU,MAAMC,KAAAA,CAAM;AAAEH,QAAAA;AAAI,KAAA,CAAA;AAElC,IAAA,IAAI,CAACE,OAAAA,EAAS;AACZ,QAAA,MAAM,IAAIE,KAAAA,CAAM,wDAAA,CAAA;AAClB,IAAA;AAEA,IAAA,MAAMC,MAAAA,GAAS,MAAMC,cAAAA,CAAIC,QAAQ,CAACL,OAAAA,CAAAA;AAElC,IAAA,MAAMM,GAAAA,GAAMC,IAAAA,CAAKC,KAAK,CAACL,OAAOM,QAAQ,EAAA,CAAA;AAEtCV,IAAAA,MAAAA,CAAOW,KAAK,CAAC,sBAAA,EAAwBC,EAAAA,CAAGC,GAAG,EAAEN,GAAAA,CAAAA;IAE7C,OAAOA,GAAAA;AACT;;;;"}
|
package/dist/utils/pkg.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pkg.mjs","sources":["../../src/utils/pkg.ts"],"sourcesContent":["import * as fse from 'fs-extra';\nimport os from 'os';\nimport pkgUp from 'pkg-up';\nimport * as yup from 'yup';\nimport chalk from 'chalk';\nimport { Logger } from '../services/logger';\n\ninterface Export {\n types?: string;\n source: string;\n module?: string;\n import?: string;\n require?: string;\n default: string;\n}\n\nconst packageJsonSchema = yup.object({\n name: yup.string().required(),\n exports: yup.lazy((value) =>\n yup\n .object(\n typeof value === 'object'\n ? Object.entries(value).reduce(\n (acc, [key, value]) => {\n if (typeof value === 'object') {\n acc[key] = yup\n .object({\n types: yup.string().optional(),\n source: yup.string().required(),\n module: yup.string().optional(),\n import: yup.string().required(),\n require: yup.string().required(),\n default: yup.string().required(),\n })\n .noUnknown(true);\n } else {\n acc[key] = yup\n .string()\n .matches(/^\\.\\/.*\\.json$/)\n .required();\n }\n\n return acc;\n },\n {} as Record<string, yup.SchemaOf<string> | yup.SchemaOf<Export>>\n )\n : undefined\n )\n .optional()\n ),\n});\n\ntype PackageJson = yup.Asserts<typeof packageJsonSchema>;\n\n/**\n * @description being a task to load the package.json starting from the current working directory\n * using a shallow find for the package.json and `fs` to read the file. If no package.json is found,\n * the process will throw with an appropriate error message.\n */\nconst loadPkg = async ({ cwd, logger }: { cwd: string; logger: Logger }): Promise<PackageJson> => {\n const pkgPath = await pkgUp({ cwd });\n\n if (!pkgPath) {\n throw new Error('Could not find a package.json in the current directory');\n }\n\n const buffer = await fse.readFile(pkgPath);\n\n const pkg = JSON.parse(buffer.toString());\n\n logger.debug('Loaded package.json:', os.EOL, pkg);\n\n return pkg;\n};\n\n/**\n * @description validate the package.json against a standardised schema using `yup`.\n * If the validation fails, the process will throw with an appropriate error message.\n */\nconst validatePkg = async ({ pkg }: { pkg: object }): Promise<PackageJson> => {\n try {\n return await packageJsonSchema.validate(pkg, {\n strict: true,\n });\n } catch (err) {\n if (err instanceof yup.ValidationError) {\n switch (err.type) {\n case 'required':\n if (err.path) {\n throw new Error(\n `'${err.path}' in 'package.json' is required as type '${chalk.magenta(\n yup.reach(packageJsonSchema, err.path).type\n )}'`\n );\n }\n break;\n /**\n * This will only be thrown if there are keys in the export map\n * that we don't expect so we can therefore make some assumptions\n */\n case 'noUnknown':\n if (err.path && err.params && 'unknown' in err.params) {\n throw new Error(\n `'${err.path}' in 'package.json' contains the unknown key ${chalk.magenta(\n err.params.unknown\n )}, for compatability only the following keys are allowed: ${chalk.magenta(\n \"['types', 'source', 'import', 'require', 'default']\"\n )}`\n );\n }\n break;\n default:\n if (err.path && err.params && 'type' in err.params && 'value' in err.params) {\n throw new Error(\n `'${err.path}' in 'package.json' must be of type '${chalk.magenta(\n err.params.type\n )}' (
|
|
1
|
+
{"version":3,"file":"pkg.mjs","sources":["../../src/utils/pkg.ts"],"sourcesContent":["import * as fse from 'fs-extra';\nimport os from 'os';\nimport pkgUp from 'pkg-up';\nimport * as yup from 'yup';\nimport chalk from 'chalk';\nimport { Logger } from '../services/logger';\n\ninterface Export {\n types?: string;\n source: string;\n module?: string;\n import?: string;\n require?: string;\n default: string;\n}\n\nconst packageJsonSchema = yup.object({\n name: yup.string().required(),\n exports: yup.lazy((value) =>\n yup\n .object(\n typeof value === 'object'\n ? Object.entries(value).reduce(\n (acc, [key, value]) => {\n if (typeof value === 'object') {\n acc[key] = yup\n .object({\n types: yup.string().optional(),\n source: yup.string().required(),\n module: yup.string().optional(),\n import: yup.string().required(),\n require: yup.string().required(),\n default: yup.string().required(),\n })\n .noUnknown(true);\n } else {\n acc[key] = yup\n .string()\n .matches(/^\\.\\/.*\\.json$/)\n .required();\n }\n\n return acc;\n },\n {} as Record<string, yup.SchemaOf<string> | yup.SchemaOf<Export>>\n )\n : undefined\n )\n .optional()\n ),\n});\n\ntype PackageJson = yup.Asserts<typeof packageJsonSchema>;\n\n/**\n * @description being a task to load the package.json starting from the current working directory\n * using a shallow find for the package.json and `fs` to read the file. If no package.json is found,\n * the process will throw with an appropriate error message.\n */\nconst loadPkg = async ({ cwd, logger }: { cwd: string; logger: Logger }): Promise<PackageJson> => {\n const pkgPath = await pkgUp({ cwd });\n\n if (!pkgPath) {\n throw new Error('Could not find a package.json in the current directory');\n }\n\n const buffer = await fse.readFile(pkgPath);\n\n const pkg = JSON.parse(buffer.toString());\n\n logger.debug('Loaded package.json:', os.EOL, pkg);\n\n return pkg;\n};\n\n/**\n * @description validate the package.json against a standardised schema using `yup`.\n * If the validation fails, the process will throw with an appropriate error message.\n */\nconst validatePkg = async ({ pkg }: { pkg: object }): Promise<PackageJson> => {\n try {\n return await packageJsonSchema.validate(pkg, {\n strict: true,\n });\n } catch (err) {\n if (err instanceof yup.ValidationError) {\n switch (err.type) {\n case 'required':\n if (err.path) {\n throw new Error(\n `'${err.path}' in 'package.json' is required as type '${chalk.magenta(\n yup.reach(packageJsonSchema, err.path).type\n )}'`\n );\n }\n break;\n /**\n * This will only be thrown if there are keys in the export map\n * that we don't expect so we can therefore make some assumptions\n */\n case 'noUnknown':\n if (err.path && err.params && 'unknown' in err.params) {\n throw new Error(\n `'${err.path}' in 'package.json' contains the unknown key ${chalk.magenta(\n err.params.unknown\n )}, for compatability only the following keys are allowed: ${chalk.magenta(\n \"['types', 'source', 'import', 'require', 'default']\"\n )}`\n );\n }\n break;\n default:\n if (err.path && err.params && 'type' in err.params && 'value' in err.params) {\n throw new Error(\n `'${err.path}' in 'package.json' must be of type '${chalk.magenta(\n err.params.type\n )}' (received '${chalk.magenta(typeof err.params.value)}')`\n );\n }\n }\n }\n\n throw err;\n }\n};\n\nexport type { PackageJson, Export };\nexport { loadPkg, validatePkg };\n"],"names":["yup","object","name","string","required","exports","lazy","value","Object","entries","reduce","acc","key","types","optional","source","module","import","require","default","noUnknown","matches","undefined","loadPkg","cwd","logger","pkgPath","pkgUp","Error","buffer","fse","readFile","pkg","JSON","parse","toString","debug","os","EOL"],"mappings":";;;;;;AAgB0BA,GAAAA,CAAIC,MAAM,CAAC;IACnCC,IAAAA,EAAMF,GAAAA,CAAIG,MAAM,EAAA,CAAGC,QAAQ,EAAA;IAC3BC,OAAAA,EAASL,GAAAA,CAAIM,IAAI,CAAC,CAACC,QACjBP,GAAAA,CACGC,MAAM,CACL,OAAOM,KAAAA,KAAU,WACbC,MAAAA,CAAOC,OAAO,CAACF,KAAAA,CAAAA,CAAOG,MAAM,CAC1B,CAACC,GAAAA,EAAK,CAACC,GAAAA,EAAKL,KAAAA,CAAM,GAAA;YAChB,IAAI,OAAOA,UAAU,QAAA,EAAU;AAC7BI,gBAAAA,GAAG,CAACC,GAAAA,CAAI,GAAGZ,GAAAA,CACRC,MAAM,CAAC;oBACNY,KAAAA,EAAOb,GAAAA,CAAIG,MAAM,EAAA,CAAGW,QAAQ,EAAA;oBAC5BC,MAAAA,EAAQf,GAAAA,CAAIG,MAAM,EAAA,CAAGC,QAAQ,EAAA;oBAC7BY,MAAAA,EAAQhB,GAAAA,CAAIG,MAAM,EAAA,CAAGW,QAAQ,EAAA;oBAC7BG,MAAAA,EAAQjB,GAAAA,CAAIG,MAAM,EAAA,CAAGC,QAAQ,EAAA;oBAC7Bc,OAAAA,EAASlB,GAAAA,CAAIG,MAAM,EAAA,CAAGC,QAAQ,EAAA;oBAC9Be,OAAAA,EAASnB,GAAAA,CAAIG,MAAM,EAAA,CAAGC,QAAQ;AAChC,iBAAA,CAAA,CACCgB,SAAS,CAAC,IAAA,CAAA;YACf,CAAA,MAAO;gBACLT,GAAG,CAACC,IAAI,GAAGZ,GAAAA,CACRG,MAAM,EAAA,CACNkB,OAAO,CAAC,gBAAA,CAAA,CACRjB,QAAQ,EAAA;AACb,YAAA;YAEA,OAAOO,GAAAA;QACT,CAAA,EACA,EAAC,CAAA,GAEHW,SAAAA,CAAAA,CAELR,QAAQ,EAAA;AAEf,CAAA;AAIA;;;;AAIC,UACKS,OAAAA,GAAU,OAAO,EAAEC,GAAG,EAAEC,MAAM,EAAmC,GAAA;IACrE,MAAMC,OAAAA,GAAU,MAAMC,KAAAA,CAAM;AAAEH,QAAAA;AAAI,KAAA,CAAA;AAElC,IAAA,IAAI,CAACE,OAAAA,EAAS;AACZ,QAAA,MAAM,IAAIE,KAAAA,CAAM,wDAAA,CAAA;AAClB,IAAA;AAEA,IAAA,MAAMC,MAAAA,GAAS,MAAMC,GAAAA,CAAIC,QAAQ,CAACL,OAAAA,CAAAA;AAElC,IAAA,MAAMM,GAAAA,GAAMC,IAAAA,CAAKC,KAAK,CAACL,OAAOM,QAAQ,EAAA,CAAA;AAEtCV,IAAAA,MAAAA,CAAOW,KAAK,CAAC,sBAAA,EAAwBC,EAAAA,CAAGC,GAAG,EAAEN,GAAAA,CAAAA;IAE7C,OAAOA,GAAAA;AACT;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/cloud-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.38.0",
|
|
4
4
|
"description": "Commands to interact with the Strapi Cloud",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"strapi",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"watch": "run -T rollup -c -w"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@strapi/utils": "5.
|
|
50
|
+
"@strapi/utils": "5.38.0",
|
|
51
51
|
"axios": "1.13.5",
|
|
52
52
|
"boxen": "5.1.2",
|
|
53
53
|
"chalk": "4.1.2",
|
|
@@ -72,8 +72,8 @@
|
|
|
72
72
|
"@types/cli-progress": "3.11.5",
|
|
73
73
|
"@types/eventsource": "1.1.15",
|
|
74
74
|
"@types/lodash": "^4.14.191",
|
|
75
|
-
"eslint-config-custom": "5.
|
|
76
|
-
"tsconfig": "5.
|
|
75
|
+
"eslint-config-custom": "5.38.0",
|
|
76
|
+
"tsconfig": "5.38.0"
|
|
77
77
|
},
|
|
78
78
|
"engines": {
|
|
79
79
|
"node": ">=20.0.0 <=24.x.x",
|