@strapi/cloud-cli 5.48.1 → 5.50.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.
Files changed (69) hide show
  1. package/dist/config/local.js +17 -10
  2. package/dist/config/local.js.map +1 -1
  3. package/dist/create-growth-sso-trial/action.d.ts.map +1 -1
  4. package/dist/create-project/action.d.ts.map +1 -1
  5. package/dist/create-project/index.d.ts.map +1 -1
  6. package/dist/create-project/utils/project-questions.utils.d.ts.map +1 -1
  7. package/dist/deploy-project/action.d.ts.map +1 -1
  8. package/dist/deploy-project/action.js +23 -16
  9. package/dist/deploy-project/action.js.map +1 -1
  10. package/dist/deploy-project/index.d.ts.map +1 -1
  11. package/dist/environment/command.d.ts.map +1 -1
  12. package/dist/environment/link/action.d.ts.map +1 -1
  13. package/dist/environment/link/action.js +7 -3
  14. package/dist/environment/link/action.js.map +1 -1
  15. package/dist/environment/link/index.d.ts.map +1 -1
  16. package/dist/environment/list/action.d.ts.map +1 -1
  17. package/dist/environment/list/action.js +5 -1
  18. package/dist/environment/list/action.js.map +1 -1
  19. package/dist/environment/list/index.d.ts.map +1 -1
  20. package/dist/index.js +5 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/link/action.d.ts.map +1 -1
  23. package/dist/link/action.js +9 -5
  24. package/dist/link/action.js.map +1 -1
  25. package/dist/link/action.mjs +2 -2
  26. package/dist/link/action.mjs.map +1 -1
  27. package/dist/link/index.d.ts.map +1 -1
  28. package/dist/list-projects/action.d.ts.map +1 -1
  29. package/dist/list-projects/index.d.ts.map +1 -1
  30. package/dist/login/action.js +9 -4
  31. package/dist/login/action.js.map +1 -1
  32. package/dist/login/index.d.ts.map +1 -1
  33. package/dist/logout/action.d.ts.map +1 -1
  34. package/dist/package.json.js +1 -1
  35. package/dist/package.json.mjs +1 -1
  36. package/dist/services/build-logs.d.ts.map +1 -1
  37. package/dist/services/build-logs.js +5 -1
  38. package/dist/services/build-logs.js.map +1 -1
  39. package/dist/services/cli-api.js +10 -4
  40. package/dist/services/cli-api.js.map +1 -1
  41. package/dist/services/logger.d.ts.map +1 -1
  42. package/dist/services/logger.js +17 -11
  43. package/dist/services/logger.js.map +1 -1
  44. package/dist/services/notification.d.ts.map +1 -1
  45. package/dist/services/notification.js +7 -2
  46. package/dist/services/notification.js.map +1 -1
  47. package/dist/services/strapi-info-save.js +13 -8
  48. package/dist/services/strapi-info-save.js.map +1 -1
  49. package/dist/services/token.d.ts.map +1 -1
  50. package/dist/services/token.js +8 -3
  51. package/dist/services/token.js.map +1 -1
  52. package/dist/utils/analytics.d.ts.map +1 -1
  53. package/dist/utils/compress-files.d.ts.map +1 -1
  54. package/dist/utils/compress-files.js +5 -4
  55. package/dist/utils/compress-files.js.map +1 -1
  56. package/dist/utils/error-message-factories.d.ts.map +1 -1
  57. package/dist/utils/error-message-factories.js +9 -4
  58. package/dist/utils/error-message-factories.js.map +1 -1
  59. package/dist/utils/get-local-config.d.ts +1 -1
  60. package/dist/utils/get-local-config.d.ts.map +1 -1
  61. package/dist/utils/get-local-config.js +5 -1
  62. package/dist/utils/get-local-config.js.map +1 -1
  63. package/dist/utils/helpers.d.ts.map +1 -1
  64. package/dist/utils/helpers.js +5 -1
  65. package/dist/utils/helpers.js.map +1 -1
  66. package/dist/utils/pkg.d.ts.map +1 -1
  67. package/dist/utils/pkg.js +10 -5
  68. package/dist/utils/pkg.js.map +1 -1
  69. package/package.json +6 -6
@@ -11,6 +11,10 @@ var action$1 = require('../login/action.js');
11
11
  var analytics = require('../utils/analytics.js');
12
12
  var getLocalConfig = require('../utils/get-local-config.js');
13
13
 
14
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
15
+
16
+ var chalk__default = /*#__PURE__*/_interopDefault(chalk);
17
+
14
18
  const QUIT_OPTION = 'Quit';
15
19
  async function promptForRelink(ctx, cloudApiService, existingConfig) {
16
20
  if (existingConfig && existingConfig.project) {
@@ -19,7 +23,7 @@ async function promptForRelink(ctx, cloudApiService, existingConfig) {
19
23
  {
20
24
  type: 'confirm',
21
25
  name: 'shouldRelink',
22
- message: `A project named ${chalk.cyan(existingConfig.project.displayName ? existingConfig.project.displayName : existingConfig.project.name)} is already linked to this local folder. Do you want to update the link?`,
26
+ message: `A project named ${chalk__default.default.cyan(existingConfig.project.displayName ? existingConfig.project.displayName : existingConfig.project.name)} is already linked to this local folder. Do you want to update the link?`,
23
27
  default: false
24
28
  }
25
29
  ]);
@@ -38,7 +42,7 @@ async function getProjectsList(ctx, cloudApiService, existingConfig) {
38
42
  const { data: { data: projectList } } = await cloudApiService.listLinkProjects();
39
43
  spinner.succeed();
40
44
  if (!Array.isArray(projectList)) {
41
- ctx.logger.log("We couldn't find any projects available for linking in Strapi Cloud.");
45
+ ctx.logger.log('No Cloud project found. To link a project, first create it via the Cloud dashboard (https://cloud.strapi.io).');
42
46
  return null;
43
47
  }
44
48
  const projects = projectList.filter((project)=>!(project.isMaintainer || project.name === existingConfig?.project?.name)).map((project)=>{
@@ -51,7 +55,7 @@ async function getProjectsList(ctx, cloudApiService, existingConfig) {
51
55
  };
52
56
  });
53
57
  if (projects.length === 0) {
54
- ctx.logger.log("We couldn't find any projects available for linking in Strapi Cloud.");
58
+ ctx.logger.log('No Cloud project found. To link a project, first create it via the Cloud dashboard (https://cloud.strapi.io).');
55
59
  return null;
56
60
  }
57
61
  return projects;
@@ -73,7 +77,7 @@ async function getUserSelection(ctx, projects) {
73
77
  choices: [
74
78
  ...projects,
75
79
  {
76
- name: chalk.grey(`(${QUIT_OPTION})`),
80
+ name: chalk__default.default.grey(`(${QUIT_OPTION})`),
77
81
  value: null
78
82
  }
79
83
  ]
@@ -131,7 +135,7 @@ var action = (async (ctx)=>{
131
135
  await strapiInfoSave.save({
132
136
  project: answer.linkProject
133
137
  });
134
- logger.log(` You have successfully linked your project to ${chalk.cyan(answer.linkProject.displayName)}. You are now able to deploy your project.`);
138
+ logger.log(` You have successfully linked your project to ${chalk__default.default.cyan(answer.linkProject.displayName)}. You are now able to deploy your project.`);
135
139
  await analytics.trackEvent(ctx, cloudApiService, 'didLinkProject', {
136
140
  projectInternalName: answer.linkProject
137
141
  });
@@ -1 +1 @@
1
- {"version":3,"file":"action.js","sources":["../../src/link/action.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport type { Answers } from 'inquirer';\nimport type { CLIContext } from '../types';\nimport type { CloudApiService } from '../services/cli-api';\n\nimport { LocalSave } from '../services/strapi-info-save';\nimport { cloudApiFactory, tokenServiceFactory, local } from '../services';\nimport { promptLogin } from '../login/action';\nimport { trackEvent } from '../utils/analytics';\nimport { getLocalConfig } from '../utils/get-local-config';\n\nconst QUIT_OPTION = 'Quit';\n\ninterface LinkProjectValue {\n name: string;\n displayName: string;\n}\n\ninterface LinkProjectAnswer extends Answers {\n linkProject: LinkProjectValue;\n}\n\ninterface LinkProjectInput extends Answers {\n linkProject: LinkProjectValue | string;\n}\n\ntype ProjectsList = {\n name: string;\n value: {\n name: string;\n displayName: string;\n };\n}[];\n\ntype Project = {\n name: string;\n displayName: string;\n isMaintainer: boolean;\n};\n\nasync function promptForRelink(\n ctx: CLIContext,\n cloudApiService: CloudApiService,\n existingConfig: LocalSave | null\n) {\n if (existingConfig && existingConfig.project) {\n const { default: inquirer } = await import('inquirer');\n const { shouldRelink } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'shouldRelink',\n message: `A project named ${chalk.cyan(\n existingConfig.project.displayName\n ? existingConfig.project.displayName\n : existingConfig.project.name\n )} is already linked to this local folder. Do you want to update the link?`,\n default: false,\n },\n ]);\n\n if (!shouldRelink) {\n await trackEvent(ctx, cloudApiService, 'didNotLinkProject', {\n currentProjectName: existingConfig.project?.name,\n });\n return false;\n }\n }\n\n return true;\n}\n\nasync function getProjectsList(\n ctx: CLIContext,\n cloudApiService: CloudApiService,\n existingConfig: LocalSave | null\n) {\n const spinner = ctx.logger.spinner('Fetching your projects...\\n').start();\n\n try {\n const {\n data: { data: projectList },\n } = await cloudApiService.listLinkProjects();\n spinner.succeed();\n\n if (!Array.isArray(projectList)) {\n ctx.logger.log(\"We couldn't find any projects available for linking in Strapi Cloud.\");\n return null;\n }\n const projects: ProjectsList = (projectList as unknown as Project[])\n .filter(\n (project: Project) =>\n !(project.isMaintainer || project.name === existingConfig?.project?.name)\n )\n .map((project: Project) => {\n return {\n name: project.displayName,\n value: { name: project.name, displayName: project.displayName },\n };\n });\n if (projects.length === 0) {\n ctx.logger.log(\"We couldn't find any projects available for linking in Strapi Cloud.\");\n return null;\n }\n return projects;\n } catch (e) {\n spinner.fail('An error occurred while fetching your projects from Strapi Cloud.');\n ctx.logger.debug('Failed to list projects', e);\n return null;\n }\n}\n\nasync function getUserSelection(\n ctx: CLIContext,\n projects: ProjectsList\n): Promise<LinkProjectAnswer | null> {\n const { logger } = ctx;\n try {\n const { default: inquirer } = await import('inquirer');\n const answer: LinkProjectInput = await inquirer.prompt([\n {\n type: 'list',\n name: 'linkProject',\n message: 'Which project do you want to link?',\n choices: [...projects, { name: chalk.grey(`(${QUIT_OPTION})`), value: null }],\n },\n ]);\n\n if (!answer.linkProject) {\n return null;\n }\n\n return answer as LinkProjectAnswer;\n } catch (e) {\n logger.debug('Failed to get user input', e);\n logger.error('An error occurred while trying to get your input.');\n return null;\n }\n}\n\nexport default async (ctx: CLIContext) => {\n const { getValidToken } = await tokenServiceFactory(ctx);\n const token = await getValidToken(ctx, promptLogin);\n const { logger } = ctx;\n\n if (!token) {\n return;\n }\n\n const cloudApiService = await cloudApiFactory(ctx, token);\n\n const existingConfig: LocalSave | null = await getLocalConfig(ctx);\n const shouldRelink = await promptForRelink(ctx, cloudApiService, existingConfig);\n\n if (!shouldRelink) {\n return;\n }\n await trackEvent(ctx, cloudApiService, 'willLinkProject', {});\n\n const projects: ProjectsList | null | undefined = await getProjectsList(\n ctx,\n cloudApiService,\n existingConfig\n );\n\n if (!projects) {\n return;\n }\n\n const answer: LinkProjectAnswer | null = await getUserSelection(ctx, projects);\n\n if (!answer) {\n return;\n }\n\n try {\n const { default: inquirer } = await import('inquirer');\n const { confirmAction } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'confirmAction',\n message:\n 'Warning: Once linked, deploying from CLI will replace the existing project and its data. Confirm to proceed:',\n default: false,\n },\n ]);\n\n if (!confirmAction) {\n await trackEvent(ctx, cloudApiService, 'didNotLinkProject', {\n cancelledProjectName: answer.linkProject.name,\n currentProjectName: existingConfig ? existingConfig.project?.name : null,\n });\n return;\n }\n\n await local.save({ project: answer.linkProject });\n logger.log(\n ` You have successfully linked your project to ${chalk.cyan(answer.linkProject.displayName)}. You are now able to deploy your project.`\n );\n await trackEvent(ctx, cloudApiService, 'didLinkProject', {\n projectInternalName: answer.linkProject,\n });\n } catch (e) {\n logger.debug('Failed to link project', e);\n logger.error('An error occurred while linking the project.');\n await trackEvent(ctx, cloudApiService, 'didNotLinkProject', {\n projectInternalName: answer.linkProject,\n });\n }\n};\n"],"names":["QUIT_OPTION","promptForRelink","ctx","cloudApiService","existingConfig","project","default","inquirer","shouldRelink","prompt","type","name","message","chalk","cyan","displayName","trackEvent","currentProjectName","getProjectsList","spinner","logger","start","data","projectList","listLinkProjects","succeed","Array","isArray","log","projects","filter","isMaintainer","map","value","length","e","fail","debug","getUserSelection","answer","choices","grey","linkProject","error","getValidToken","tokenServiceFactory","token","promptLogin","cloudApiFactory","getLocalConfig","confirmAction","cancelledProjectName","local","projectInternalName"],"mappings":";;;;;;;;;;;;;AAYA,MAAMA,WAAAA,GAAc,MAAA;AA6BpB,eAAeC,eAAAA,CACbC,GAAe,EACfC,eAAgC,EAChCC,cAAgC,EAAA;IAEhC,IAAIA,cAAAA,IAAkBA,cAAAA,CAAeC,OAAO,EAAE;AAC5C,QAAA,MAAM,EAAEC,OAAAA,EAASC,QAAQ,EAAE,GAAG,MAAM,OAAO,UAAA,CAAA;AAC3C,QAAA,MAAM,EAAEC,YAAY,EAAE,GAAG,MAAMD,QAAAA,CAASE,MAAM,CAAC;AAC7C,YAAA;gBACEC,IAAAA,EAAM,SAAA;gBACNC,IAAAA,EAAM,cAAA;gBACNC,OAAAA,EAAS,CAAC,gBAAgB,EAAEC,KAAAA,CAAMC,IAAI,CACpCV,cAAAA,CAAeC,OAAO,CAACU,WAAW,GAC9BX,eAAeC,OAAO,CAACU,WAAW,GAClCX,cAAAA,CAAeC,OAAO,CAACM,IAAI,CAAA,CAC/B,wEAAwE,CAAC;gBAC3EL,OAAAA,EAAS;AACX;AACD,SAAA,CAAA;AAED,QAAA,IAAI,CAACE,YAAAA,EAAc;YACjB,MAAMQ,oBAAAA,CAAWd,GAAAA,EAAKC,eAAAA,EAAiB,mBAAA,EAAqB;gBAC1Dc,kBAAAA,EAAoBb,cAAAA,CAAeC,OAAO,EAAEM;AAC9C,aAAA,CAAA;YACA,OAAO,KAAA;AACT,QAAA;AACF,IAAA;IAEA,OAAO,IAAA;AACT;AAEA,eAAeO,eAAAA,CACbhB,GAAe,EACfC,eAAgC,EAChCC,cAAgC,EAAA;AAEhC,IAAA,MAAMe,UAAUjB,GAAAA,CAAIkB,MAAM,CAACD,OAAO,CAAC,+BAA+BE,KAAK,EAAA;IAEvE,IAAI;QACF,MAAM,EACJC,IAAAA,EAAM,EAAEA,IAAAA,EAAMC,WAAW,EAAE,EAC5B,GAAG,MAAMpB,eAAAA,CAAgBqB,gBAAgB,EAAA;AAC1CL,QAAAA,OAAAA,CAAQM,OAAO,EAAA;AAEf,QAAA,IAAI,CAACC,KAAAA,CAAMC,OAAO,CAACJ,WAAAA,CAAAA,EAAc;YAC/BrB,GAAAA,CAAIkB,MAAM,CAACQ,GAAG,CAAC,sEAAA,CAAA;YACf,OAAO,IAAA;AACT,QAAA;QACA,MAAMC,QAAAA,GAAyB,WAACN,CAC7BO,MAAM,CACL,CAACzB,OAAAA,GACC,EAAEA,OAAAA,CAAQ0B,YAAY,IAAI1B,OAAAA,CAAQM,IAAI,KAAKP,cAAAA,EAAgBC,SAASM,IAAG,CAAA,CAAA,CAE1EqB,GAAG,CAAC,CAAC3B,OAAAA,GAAAA;YACJ,OAAO;AACLM,gBAAAA,IAAAA,EAAMN,QAAQU,WAAW;gBACzBkB,KAAAA,EAAO;AAAEtB,oBAAAA,IAAAA,EAAMN,QAAQM,IAAI;AAAEI,oBAAAA,WAAAA,EAAaV,QAAQU;AAAY;AAChE,aAAA;AACF,QAAA,CAAA,CAAA;QACF,IAAIc,QAAAA,CAASK,MAAM,KAAK,CAAA,EAAG;YACzBhC,GAAAA,CAAIkB,MAAM,CAACQ,GAAG,CAAC,sEAAA,CAAA;YACf,OAAO,IAAA;AACT,QAAA;QACA,OAAOC,QAAAA;AACT,IAAA,CAAA,CAAE,OAAOM,CAAAA,EAAG;AACVhB,QAAAA,OAAAA,CAAQiB,IAAI,CAAC,mEAAA,CAAA;AACblC,QAAAA,GAAAA,CAAIkB,MAAM,CAACiB,KAAK,CAAC,yBAAA,EAA2BF,CAAAA,CAAAA;QAC5C,OAAO,IAAA;AACT,IAAA;AACF;AAEA,eAAeG,gBAAAA,CACbpC,GAAe,EACf2B,QAAsB,EAAA;IAEtB,MAAM,EAAET,MAAM,EAAE,GAAGlB,GAAAA;IACnB,IAAI;AACF,QAAA,MAAM,EAAEI,OAAAA,EAASC,QAAQ,EAAE,GAAG,MAAM,OAAO,UAAA,CAAA;AAC3C,QAAA,MAAMgC,MAAAA,GAA2B,MAAMhC,QAAAA,CAASE,MAAM,CAAC;AACrD,YAAA;gBACEC,IAAAA,EAAM,MAAA;gBACNC,IAAAA,EAAM,aAAA;gBACNC,OAAAA,EAAS,oCAAA;gBACT4B,OAAAA,EAAS;AAAIX,oBAAAA,GAAAA,QAAAA;AAAU,oBAAA;wBAAElB,IAAAA,EAAME,KAAAA,CAAM4B,IAAI,CAAC,CAAC,CAAC,EAAEzC,WAAAA,CAAY,CAAC,CAAC,CAAA;wBAAGiC,KAAAA,EAAO;AAAK;AAAE;AAC/E;AACD,SAAA,CAAA;QAED,IAAI,CAACM,MAAAA,CAAOG,WAAW,EAAE;YACvB,OAAO,IAAA;AACT,QAAA;QAEA,OAAOH,MAAAA;AACT,IAAA,CAAA,CAAE,OAAOJ,CAAAA,EAAG;QACVf,MAAAA,CAAOiB,KAAK,CAAC,0BAAA,EAA4BF,CAAAA,CAAAA;AACzCf,QAAAA,MAAAA,CAAOuB,KAAK,CAAC,mDAAA,CAAA;QACb,OAAO,IAAA;AACT,IAAA;AACF;AAEA,aAAe,CAAA,OAAOzC,GAAAA,GAAAA;AACpB,IAAA,MAAM,EAAE0C,aAAa,EAAE,GAAG,MAAMC,yBAAAA,CAAoB3C,GAAAA,CAAAA;IACpD,MAAM4C,OAAAA,GAAQ,MAAMF,aAAAA,CAAc1C,GAAAA,EAAK6C,oBAAAA,CAAAA;IACvC,MAAM,EAAE3B,MAAM,EAAE,GAAGlB,GAAAA;AAEnB,IAAA,IAAI,CAAC4C,OAAAA,EAAO;AACV,QAAA;AACF,IAAA;IAEA,MAAM3C,eAAAA,GAAkB,MAAM6C,sBAAAA,CAAgB9C,GAAAA,EAAK4C,OAAAA,CAAAA;IAEnD,MAAM1C,cAAAA,GAAmC,MAAM6C,6BAAAA,CAAe/C,GAAAA,CAAAA;AAC9D,IAAA,MAAMM,YAAAA,GAAe,MAAMP,eAAAA,CAAgBC,GAAAA,EAAKC,eAAAA,EAAiBC,cAAAA,CAAAA;AAEjE,IAAA,IAAI,CAACI,YAAAA,EAAc;AACjB,QAAA;AACF,IAAA;AACA,IAAA,MAAMQ,oBAAAA,CAAWd,GAAAA,EAAKC,eAAAA,EAAiB,iBAAA,EAAmB,EAAC,CAAA;AAE3D,IAAA,MAAM0B,QAAAA,GAA4C,MAAMX,eAAAA,CACtDhB,GAAAA,EACAC,eAAAA,EACAC,cAAAA,CAAAA;AAGF,IAAA,IAAI,CAACyB,QAAAA,EAAU;AACb,QAAA;AACF,IAAA;IAEA,MAAMU,MAAAA,GAAmC,MAAMD,gBAAAA,CAAiBpC,GAAAA,EAAK2B,QAAAA,CAAAA;AAErE,IAAA,IAAI,CAACU,MAAAA,EAAQ;AACX,QAAA;AACF,IAAA;IAEA,IAAI;AACF,QAAA,MAAM,EAAEjC,OAAAA,EAASC,QAAQ,EAAE,GAAG,MAAM,OAAO,UAAA,CAAA;AAC3C,QAAA,MAAM,EAAE2C,aAAa,EAAE,GAAG,MAAM3C,QAAAA,CAASE,MAAM,CAAC;AAC9C,YAAA;gBACEC,IAAAA,EAAM,SAAA;gBACNC,IAAAA,EAAM,eAAA;gBACNC,OAAAA,EACE,8GAAA;gBACFN,OAAAA,EAAS;AACX;AACD,SAAA,CAAA;AAED,QAAA,IAAI,CAAC4C,aAAAA,EAAe;YAClB,MAAMlC,oBAAAA,CAAWd,GAAAA,EAAKC,eAAAA,EAAiB,mBAAA,EAAqB;gBAC1DgD,oBAAAA,EAAsBZ,MAAAA,CAAOG,WAAW,CAAC/B,IAAI;AAC7CM,gBAAAA,kBAAAA,EAAoBb,cAAAA,GAAiBA,cAAAA,CAAeC,OAAO,EAAEM,IAAAA,GAAO;AACtE,aAAA,CAAA;AACA,YAAA;AACF,QAAA;QAEA,MAAMyC,mBAAU,CAAC;AAAE/C,YAAAA,OAAAA,EAASkC,OAAOG;AAAY,SAAA,CAAA;AAC/CtB,QAAAA,MAAAA,CAAOQ,GAAG,CACR,CAAC,8CAA8C,EAAEf,KAAAA,CAAMC,IAAI,CAACyB,MAAAA,CAAOG,WAAW,CAAC3B,WAAW,CAAA,CAAE,0CAA0C,CAAC,CAAA;QAEzI,MAAMC,oBAAAA,CAAWd,GAAAA,EAAKC,eAAAA,EAAiB,gBAAA,EAAkB;AACvDkD,YAAAA,mBAAAA,EAAqBd,OAAOG;AAC9B,SAAA,CAAA;AACF,IAAA,CAAA,CAAE,OAAOP,CAAAA,EAAG;QACVf,MAAAA,CAAOiB,KAAK,CAAC,wBAAA,EAA0BF,CAAAA,CAAAA;AACvCf,QAAAA,MAAAA,CAAOuB,KAAK,CAAC,8CAAA,CAAA;QACb,MAAM3B,oBAAAA,CAAWd,GAAAA,EAAKC,eAAAA,EAAiB,mBAAA,EAAqB;AAC1DkD,YAAAA,mBAAAA,EAAqBd,OAAOG;AAC9B,SAAA,CAAA;AACF,IAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"action.js","sources":["../../src/link/action.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport type { Answers } from 'inquirer';\nimport type { CLIContext } from '../types';\nimport type { CloudApiService } from '../services/cli-api';\n\nimport { LocalSave } from '../services/strapi-info-save';\nimport { cloudApiFactory, tokenServiceFactory, local } from '../services';\nimport { promptLogin } from '../login/action';\nimport { trackEvent } from '../utils/analytics';\nimport { getLocalConfig } from '../utils/get-local-config';\n\nconst QUIT_OPTION = 'Quit';\n\ninterface LinkProjectValue {\n name: string;\n displayName: string;\n}\n\ninterface LinkProjectAnswer extends Answers {\n linkProject: LinkProjectValue;\n}\n\ninterface LinkProjectInput extends Answers {\n linkProject: LinkProjectValue | string;\n}\n\ntype ProjectsList = {\n name: string;\n value: {\n name: string;\n displayName: string;\n };\n}[];\n\ntype Project = {\n name: string;\n displayName: string;\n isMaintainer: boolean;\n};\n\nasync function promptForRelink(\n ctx: CLIContext,\n cloudApiService: CloudApiService,\n existingConfig: LocalSave | null\n) {\n if (existingConfig && existingConfig.project) {\n const { default: inquirer } = await import('inquirer');\n const { shouldRelink } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'shouldRelink',\n message: `A project named ${chalk.cyan(\n existingConfig.project.displayName\n ? existingConfig.project.displayName\n : existingConfig.project.name\n )} is already linked to this local folder. Do you want to update the link?`,\n default: false,\n },\n ]);\n\n if (!shouldRelink) {\n await trackEvent(ctx, cloudApiService, 'didNotLinkProject', {\n currentProjectName: existingConfig.project?.name,\n });\n return false;\n }\n }\n\n return true;\n}\n\nasync function getProjectsList(\n ctx: CLIContext,\n cloudApiService: CloudApiService,\n existingConfig: LocalSave | null\n) {\n const spinner = ctx.logger.spinner('Fetching your projects...\\n').start();\n\n try {\n const {\n data: { data: projectList },\n } = await cloudApiService.listLinkProjects();\n spinner.succeed();\n\n if (!Array.isArray(projectList)) {\n ctx.logger.log(\n 'No Cloud project found. To link a project, first create it via the Cloud dashboard (https://cloud.strapi.io).'\n );\n return null;\n }\n const projects: ProjectsList = (projectList as unknown as Project[])\n .filter(\n (project: Project) =>\n !(project.isMaintainer || project.name === existingConfig?.project?.name)\n )\n .map((project: Project) => {\n return {\n name: project.displayName,\n value: { name: project.name, displayName: project.displayName },\n };\n });\n if (projects.length === 0) {\n ctx.logger.log(\n 'No Cloud project found. To link a project, first create it via the Cloud dashboard (https://cloud.strapi.io).'\n );\n return null;\n }\n return projects;\n } catch (e) {\n spinner.fail('An error occurred while fetching your projects from Strapi Cloud.');\n ctx.logger.debug('Failed to list projects', e);\n return null;\n }\n}\n\nasync function getUserSelection(\n ctx: CLIContext,\n projects: ProjectsList\n): Promise<LinkProjectAnswer | null> {\n const { logger } = ctx;\n try {\n const { default: inquirer } = await import('inquirer');\n const answer: LinkProjectInput = await inquirer.prompt([\n {\n type: 'list',\n name: 'linkProject',\n message: 'Which project do you want to link?',\n choices: [...projects, { name: chalk.grey(`(${QUIT_OPTION})`), value: null }],\n },\n ]);\n\n if (!answer.linkProject) {\n return null;\n }\n\n return answer as LinkProjectAnswer;\n } catch (e) {\n logger.debug('Failed to get user input', e);\n logger.error('An error occurred while trying to get your input.');\n return null;\n }\n}\n\nexport default async (ctx: CLIContext) => {\n const { getValidToken } = await tokenServiceFactory(ctx);\n const token = await getValidToken(ctx, promptLogin);\n const { logger } = ctx;\n\n if (!token) {\n return;\n }\n\n const cloudApiService = await cloudApiFactory(ctx, token);\n\n const existingConfig: LocalSave | null = await getLocalConfig(ctx);\n const shouldRelink = await promptForRelink(ctx, cloudApiService, existingConfig);\n\n if (!shouldRelink) {\n return;\n }\n await trackEvent(ctx, cloudApiService, 'willLinkProject', {});\n\n const projects: ProjectsList | null | undefined = await getProjectsList(\n ctx,\n cloudApiService,\n existingConfig\n );\n\n if (!projects) {\n return;\n }\n\n const answer: LinkProjectAnswer | null = await getUserSelection(ctx, projects);\n\n if (!answer) {\n return;\n }\n\n try {\n const { default: inquirer } = await import('inquirer');\n const { confirmAction } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'confirmAction',\n message:\n 'Warning: Once linked, deploying from CLI will replace the existing project and its data. Confirm to proceed:',\n default: false,\n },\n ]);\n\n if (!confirmAction) {\n await trackEvent(ctx, cloudApiService, 'didNotLinkProject', {\n cancelledProjectName: answer.linkProject.name,\n currentProjectName: existingConfig ? existingConfig.project?.name : null,\n });\n return;\n }\n\n await local.save({ project: answer.linkProject });\n logger.log(\n ` You have successfully linked your project to ${chalk.cyan(answer.linkProject.displayName)}. You are now able to deploy your project.`\n );\n await trackEvent(ctx, cloudApiService, 'didLinkProject', {\n projectInternalName: answer.linkProject,\n });\n } catch (e) {\n logger.debug('Failed to link project', e);\n logger.error('An error occurred while linking the project.');\n await trackEvent(ctx, cloudApiService, 'didNotLinkProject', {\n projectInternalName: answer.linkProject,\n });\n }\n};\n"],"names":["QUIT_OPTION","promptForRelink","ctx","cloudApiService","existingConfig","project","default","inquirer","shouldRelink","prompt","type","name","message","chalk","cyan","displayName","trackEvent","currentProjectName","getProjectsList","spinner","logger","start","data","projectList","listLinkProjects","succeed","Array","isArray","log","projects","filter","isMaintainer","map","value","length","e","fail","debug","getUserSelection","answer","choices","grey","linkProject","error","getValidToken","tokenServiceFactory","token","promptLogin","cloudApiFactory","getLocalConfig","confirmAction","cancelledProjectName","local","projectInternalName"],"mappings":"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"}
@@ -36,7 +36,7 @@ async function getProjectsList(ctx, cloudApiService, existingConfig) {
36
36
  const { data: { data: projectList } } = await cloudApiService.listLinkProjects();
37
37
  spinner.succeed();
38
38
  if (!Array.isArray(projectList)) {
39
- ctx.logger.log("We couldn't find any projects available for linking in Strapi Cloud.");
39
+ ctx.logger.log('No Cloud project found. To link a project, first create it via the Cloud dashboard (https://cloud.strapi.io).');
40
40
  return null;
41
41
  }
42
42
  const projects = projectList.filter((project)=>!(project.isMaintainer || project.name === existingConfig?.project?.name)).map((project)=>{
@@ -49,7 +49,7 @@ async function getProjectsList(ctx, cloudApiService, existingConfig) {
49
49
  };
50
50
  });
51
51
  if (projects.length === 0) {
52
- ctx.logger.log("We couldn't find any projects available for linking in Strapi Cloud.");
52
+ ctx.logger.log('No Cloud project found. To link a project, first create it via the Cloud dashboard (https://cloud.strapi.io).');
53
53
  return null;
54
54
  }
55
55
  return projects;
@@ -1 +1 @@
1
- {"version":3,"file":"action.mjs","sources":["../../src/link/action.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport type { Answers } from 'inquirer';\nimport type { CLIContext } from '../types';\nimport type { CloudApiService } from '../services/cli-api';\n\nimport { LocalSave } from '../services/strapi-info-save';\nimport { cloudApiFactory, tokenServiceFactory, local } from '../services';\nimport { promptLogin } from '../login/action';\nimport { trackEvent } from '../utils/analytics';\nimport { getLocalConfig } from '../utils/get-local-config';\n\nconst QUIT_OPTION = 'Quit';\n\ninterface LinkProjectValue {\n name: string;\n displayName: string;\n}\n\ninterface LinkProjectAnswer extends Answers {\n linkProject: LinkProjectValue;\n}\n\ninterface LinkProjectInput extends Answers {\n linkProject: LinkProjectValue | string;\n}\n\ntype ProjectsList = {\n name: string;\n value: {\n name: string;\n displayName: string;\n };\n}[];\n\ntype Project = {\n name: string;\n displayName: string;\n isMaintainer: boolean;\n};\n\nasync function promptForRelink(\n ctx: CLIContext,\n cloudApiService: CloudApiService,\n existingConfig: LocalSave | null\n) {\n if (existingConfig && existingConfig.project) {\n const { default: inquirer } = await import('inquirer');\n const { shouldRelink } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'shouldRelink',\n message: `A project named ${chalk.cyan(\n existingConfig.project.displayName\n ? existingConfig.project.displayName\n : existingConfig.project.name\n )} is already linked to this local folder. Do you want to update the link?`,\n default: false,\n },\n ]);\n\n if (!shouldRelink) {\n await trackEvent(ctx, cloudApiService, 'didNotLinkProject', {\n currentProjectName: existingConfig.project?.name,\n });\n return false;\n }\n }\n\n return true;\n}\n\nasync function getProjectsList(\n ctx: CLIContext,\n cloudApiService: CloudApiService,\n existingConfig: LocalSave | null\n) {\n const spinner = ctx.logger.spinner('Fetching your projects...\\n').start();\n\n try {\n const {\n data: { data: projectList },\n } = await cloudApiService.listLinkProjects();\n spinner.succeed();\n\n if (!Array.isArray(projectList)) {\n ctx.logger.log(\"We couldn't find any projects available for linking in Strapi Cloud.\");\n return null;\n }\n const projects: ProjectsList = (projectList as unknown as Project[])\n .filter(\n (project: Project) =>\n !(project.isMaintainer || project.name === existingConfig?.project?.name)\n )\n .map((project: Project) => {\n return {\n name: project.displayName,\n value: { name: project.name, displayName: project.displayName },\n };\n });\n if (projects.length === 0) {\n ctx.logger.log(\"We couldn't find any projects available for linking in Strapi Cloud.\");\n return null;\n }\n return projects;\n } catch (e) {\n spinner.fail('An error occurred while fetching your projects from Strapi Cloud.');\n ctx.logger.debug('Failed to list projects', e);\n return null;\n }\n}\n\nasync function getUserSelection(\n ctx: CLIContext,\n projects: ProjectsList\n): Promise<LinkProjectAnswer | null> {\n const { logger } = ctx;\n try {\n const { default: inquirer } = await import('inquirer');\n const answer: LinkProjectInput = await inquirer.prompt([\n {\n type: 'list',\n name: 'linkProject',\n message: 'Which project do you want to link?',\n choices: [...projects, { name: chalk.grey(`(${QUIT_OPTION})`), value: null }],\n },\n ]);\n\n if (!answer.linkProject) {\n return null;\n }\n\n return answer as LinkProjectAnswer;\n } catch (e) {\n logger.debug('Failed to get user input', e);\n logger.error('An error occurred while trying to get your input.');\n return null;\n }\n}\n\nexport default async (ctx: CLIContext) => {\n const { getValidToken } = await tokenServiceFactory(ctx);\n const token = await getValidToken(ctx, promptLogin);\n const { logger } = ctx;\n\n if (!token) {\n return;\n }\n\n const cloudApiService = await cloudApiFactory(ctx, token);\n\n const existingConfig: LocalSave | null = await getLocalConfig(ctx);\n const shouldRelink = await promptForRelink(ctx, cloudApiService, existingConfig);\n\n if (!shouldRelink) {\n return;\n }\n await trackEvent(ctx, cloudApiService, 'willLinkProject', {});\n\n const projects: ProjectsList | null | undefined = await getProjectsList(\n ctx,\n cloudApiService,\n existingConfig\n );\n\n if (!projects) {\n return;\n }\n\n const answer: LinkProjectAnswer | null = await getUserSelection(ctx, projects);\n\n if (!answer) {\n return;\n }\n\n try {\n const { default: inquirer } = await import('inquirer');\n const { confirmAction } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'confirmAction',\n message:\n 'Warning: Once linked, deploying from CLI will replace the existing project and its data. Confirm to proceed:',\n default: false,\n },\n ]);\n\n if (!confirmAction) {\n await trackEvent(ctx, cloudApiService, 'didNotLinkProject', {\n cancelledProjectName: answer.linkProject.name,\n currentProjectName: existingConfig ? existingConfig.project?.name : null,\n });\n return;\n }\n\n await local.save({ project: answer.linkProject });\n logger.log(\n ` You have successfully linked your project to ${chalk.cyan(answer.linkProject.displayName)}. You are now able to deploy your project.`\n );\n await trackEvent(ctx, cloudApiService, 'didLinkProject', {\n projectInternalName: answer.linkProject,\n });\n } catch (e) {\n logger.debug('Failed to link project', e);\n logger.error('An error occurred while linking the project.');\n await trackEvent(ctx, cloudApiService, 'didNotLinkProject', {\n projectInternalName: answer.linkProject,\n });\n }\n};\n"],"names":["QUIT_OPTION","promptForRelink","ctx","cloudApiService","existingConfig","project","default","inquirer","shouldRelink","prompt","type","name","message","chalk","cyan","displayName","trackEvent","currentProjectName","getProjectsList","spinner","logger","start","data","projectList","listLinkProjects","succeed","Array","isArray","log","projects","filter","isMaintainer","map","value","length","e","fail","debug","getUserSelection","answer","choices","grey","linkProject","error","getValidToken","tokenServiceFactory","token","promptLogin","cloudApiFactory","getLocalConfig","confirmAction","cancelledProjectName","local","projectInternalName"],"mappings":"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"}
1
+ {"version":3,"file":"action.mjs","sources":["../../src/link/action.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport type { Answers } from 'inquirer';\nimport type { CLIContext } from '../types';\nimport type { CloudApiService } from '../services/cli-api';\n\nimport { LocalSave } from '../services/strapi-info-save';\nimport { cloudApiFactory, tokenServiceFactory, local } from '../services';\nimport { promptLogin } from '../login/action';\nimport { trackEvent } from '../utils/analytics';\nimport { getLocalConfig } from '../utils/get-local-config';\n\nconst QUIT_OPTION = 'Quit';\n\ninterface LinkProjectValue {\n name: string;\n displayName: string;\n}\n\ninterface LinkProjectAnswer extends Answers {\n linkProject: LinkProjectValue;\n}\n\ninterface LinkProjectInput extends Answers {\n linkProject: LinkProjectValue | string;\n}\n\ntype ProjectsList = {\n name: string;\n value: {\n name: string;\n displayName: string;\n };\n}[];\n\ntype Project = {\n name: string;\n displayName: string;\n isMaintainer: boolean;\n};\n\nasync function promptForRelink(\n ctx: CLIContext,\n cloudApiService: CloudApiService,\n existingConfig: LocalSave | null\n) {\n if (existingConfig && existingConfig.project) {\n const { default: inquirer } = await import('inquirer');\n const { shouldRelink } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'shouldRelink',\n message: `A project named ${chalk.cyan(\n existingConfig.project.displayName\n ? existingConfig.project.displayName\n : existingConfig.project.name\n )} is already linked to this local folder. Do you want to update the link?`,\n default: false,\n },\n ]);\n\n if (!shouldRelink) {\n await trackEvent(ctx, cloudApiService, 'didNotLinkProject', {\n currentProjectName: existingConfig.project?.name,\n });\n return false;\n }\n }\n\n return true;\n}\n\nasync function getProjectsList(\n ctx: CLIContext,\n cloudApiService: CloudApiService,\n existingConfig: LocalSave | null\n) {\n const spinner = ctx.logger.spinner('Fetching your projects...\\n').start();\n\n try {\n const {\n data: { data: projectList },\n } = await cloudApiService.listLinkProjects();\n spinner.succeed();\n\n if (!Array.isArray(projectList)) {\n ctx.logger.log(\n 'No Cloud project found. To link a project, first create it via the Cloud dashboard (https://cloud.strapi.io).'\n );\n return null;\n }\n const projects: ProjectsList = (projectList as unknown as Project[])\n .filter(\n (project: Project) =>\n !(project.isMaintainer || project.name === existingConfig?.project?.name)\n )\n .map((project: Project) => {\n return {\n name: project.displayName,\n value: { name: project.name, displayName: project.displayName },\n };\n });\n if (projects.length === 0) {\n ctx.logger.log(\n 'No Cloud project found. To link a project, first create it via the Cloud dashboard (https://cloud.strapi.io).'\n );\n return null;\n }\n return projects;\n } catch (e) {\n spinner.fail('An error occurred while fetching your projects from Strapi Cloud.');\n ctx.logger.debug('Failed to list projects', e);\n return null;\n }\n}\n\nasync function getUserSelection(\n ctx: CLIContext,\n projects: ProjectsList\n): Promise<LinkProjectAnswer | null> {\n const { logger } = ctx;\n try {\n const { default: inquirer } = await import('inquirer');\n const answer: LinkProjectInput = await inquirer.prompt([\n {\n type: 'list',\n name: 'linkProject',\n message: 'Which project do you want to link?',\n choices: [...projects, { name: chalk.grey(`(${QUIT_OPTION})`), value: null }],\n },\n ]);\n\n if (!answer.linkProject) {\n return null;\n }\n\n return answer as LinkProjectAnswer;\n } catch (e) {\n logger.debug('Failed to get user input', e);\n logger.error('An error occurred while trying to get your input.');\n return null;\n }\n}\n\nexport default async (ctx: CLIContext) => {\n const { getValidToken } = await tokenServiceFactory(ctx);\n const token = await getValidToken(ctx, promptLogin);\n const { logger } = ctx;\n\n if (!token) {\n return;\n }\n\n const cloudApiService = await cloudApiFactory(ctx, token);\n\n const existingConfig: LocalSave | null = await getLocalConfig(ctx);\n const shouldRelink = await promptForRelink(ctx, cloudApiService, existingConfig);\n\n if (!shouldRelink) {\n return;\n }\n await trackEvent(ctx, cloudApiService, 'willLinkProject', {});\n\n const projects: ProjectsList | null | undefined = await getProjectsList(\n ctx,\n cloudApiService,\n existingConfig\n );\n\n if (!projects) {\n return;\n }\n\n const answer: LinkProjectAnswer | null = await getUserSelection(ctx, projects);\n\n if (!answer) {\n return;\n }\n\n try {\n const { default: inquirer } = await import('inquirer');\n const { confirmAction } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'confirmAction',\n message:\n 'Warning: Once linked, deploying from CLI will replace the existing project and its data. Confirm to proceed:',\n default: false,\n },\n ]);\n\n if (!confirmAction) {\n await trackEvent(ctx, cloudApiService, 'didNotLinkProject', {\n cancelledProjectName: answer.linkProject.name,\n currentProjectName: existingConfig ? existingConfig.project?.name : null,\n });\n return;\n }\n\n await local.save({ project: answer.linkProject });\n logger.log(\n ` You have successfully linked your project to ${chalk.cyan(answer.linkProject.displayName)}. You are now able to deploy your project.`\n );\n await trackEvent(ctx, cloudApiService, 'didLinkProject', {\n projectInternalName: answer.linkProject,\n });\n } catch (e) {\n logger.debug('Failed to link project', e);\n logger.error('An error occurred while linking the project.');\n await trackEvent(ctx, cloudApiService, 'didNotLinkProject', {\n projectInternalName: answer.linkProject,\n });\n }\n};\n"],"names":["QUIT_OPTION","promptForRelink","ctx","cloudApiService","existingConfig","project","default","inquirer","shouldRelink","prompt","type","name","message","chalk","cyan","displayName","trackEvent","currentProjectName","getProjectsList","spinner","logger","start","data","projectList","listLinkProjects","succeed","Array","isArray","log","projects","filter","isMaintainer","map","value","length","e","fail","debug","getUserSelection","answer","choices","grey","linkProject","error","getValidToken","tokenServiceFactory","token","promptLogin","cloudApiFactory","getLocalConfig","confirmAction","cancelledProjectName","local","projectInternalName"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/link/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;;AAE3B,wBAK4B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/link/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;wBAOtB,sBAAsB;AAL3B,wBAK4B"}
@@ -1 +1 @@
1
- {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/list-projects/action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;8BAIhB,UAAU;AAArC,wBAsBE"}
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/list-projects/action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;yBAIrB,KAAK,UAAU;AAArC,wBAsBE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/list-projects/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;;AAE3B,wBAK4B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/list-projects/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;wBAOtB,sBAAsB;AAL3B,wBAK4B"}
@@ -16,6 +16,11 @@ var api = require('../config/api.js');
16
16
  var analytics = require('../utils/analytics.js');
17
17
  var context = require('../services/context.js');
18
18
 
19
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
20
+
21
+ var axios__default = /*#__PURE__*/_interopDefault(axios);
22
+ var chalk__default = /*#__PURE__*/_interopDefault(chalk);
23
+
19
24
  const openModule = import('open');
20
25
  async function promptLogin(ctx) {
21
26
  const { default: inquirer } = await import('inquirer');
@@ -54,7 +59,7 @@ async function loginAction(ctx, { showDashboardLink = true } = {}) {
54
59
  }
55
60
  if (showDashboardLink) {
56
61
  logger.log('To access your dashboard, please copy and paste the following URL into your web browser:');
57
- logger.log(chalk.underline(`${api.apiConfig.dashboardBaseUrl}/projects`));
62
+ logger.log(chalk__default.default.underline(`${api.apiConfig.dashboardBaseUrl}/projects`));
58
63
  }
59
64
  return true;
60
65
  } catch (e) {
@@ -82,7 +87,7 @@ async function loginAction(ctx, { showDashboardLink = true } = {}) {
82
87
  scope: cliConfig.scope,
83
88
  audience: cliConfig.audience
84
89
  });
85
- const deviceAuthResponse = await axios.post(cliConfig.deviceCodeAuthUrl, {
90
+ const deviceAuthResponse = await axios__default.default.post(cliConfig.deviceCodeAuthUrl, {
86
91
  client_id: cliConfig.clientId,
87
92
  scope: cliConfig.scope,
88
93
  audience: cliConfig.audience
@@ -115,7 +120,7 @@ async function loginAction(ctx, { showDashboardLink = true } = {}) {
115
120
  const spinnerFail = ()=>spinner.fail('Authentication failed!');
116
121
  while(!isAuthenticated){
117
122
  try {
118
- const tokenResponse = await axios.post(cliConfig.tokenUrl, tokenPayload);
123
+ const tokenResponse = await axios__default.default.post(cliConfig.tokenUrl, tokenPayload);
119
124
  const authTokenData = tokenResponse.data;
120
125
  if (tokenResponse.status === 200) {
121
126
  // Token validation
@@ -181,7 +186,7 @@ async function loginAction(ctx, { showDashboardLink = true } = {}) {
181
186
  if (showDashboardLink) {
182
187
  logger.log('You are now logged into Strapi Cloud.');
183
188
  logger.log('To access your dashboard, please copy and paste the following URL into your web browser:');
184
- logger.log(chalk.underline(`${api.apiConfig.dashboardBaseUrl}/projects`));
189
+ logger.log(chalk__default.default.underline(`${api.apiConfig.dashboardBaseUrl}/projects`));
185
190
  }
186
191
  await analytics.trackEvent(ctx, cloudApiService, 'didLogin', {
187
192
  loginMethod: 'cli',
@@ -1 +1 @@
1
- {"version":3,"file":"action.js","sources":["../../src/login/action.ts"],"sourcesContent":["import axios, { AxiosResponse, AxiosError } from 'axios';\nimport chalk from 'chalk';\nimport { tokenServiceFactory, cloudApiFactory } from '../services';\nimport type { CloudCliConfig, CLIContext } from '../types';\nimport { apiConfig } from '../config/api';\nimport { trackEvent } from '../utils/analytics';\nimport { setContext } from '../services/context';\n\nconst openModule = import('open');\n\nexport async function promptLogin(ctx: CLIContext) {\n const { default: inquirer } = await import('inquirer');\n const response = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'login',\n message: 'Would you like to login?',\n },\n ]);\n\n if (response.login) {\n const loginSuccessful = await loginAction(ctx);\n return loginSuccessful;\n }\n return false;\n}\n\nexport default async function loginAction(\n ctx: CLIContext,\n { showDashboardLink = true }: { showDashboardLink?: boolean } = {}\n): Promise<boolean> {\n const { logger, promptExperiment } = ctx;\n const tokenService = await tokenServiceFactory(ctx);\n const existingToken = await tokenService.retrieveToken();\n const cloudApiService = await cloudApiFactory(ctx, existingToken || undefined);\n\n if (existingToken) {\n const isTokenValid = await tokenService.isTokenValid(existingToken);\n if (isTokenValid) {\n try {\n const userInfo = await cloudApiService.getUserInfo();\n const { email } = userInfo.data.data;\n setContext({ ...ctx, user: userInfo.data.data });\n if (email) {\n logger.log(`You are already logged into your account (${email}).`);\n } else {\n logger.log('You are already logged in.');\n }\n if (showDashboardLink) {\n logger.log(\n 'To access your dashboard, please copy and paste the following URL into your web browser:'\n );\n logger.log(chalk.underline(`${apiConfig.dashboardBaseUrl}/projects`));\n }\n return true;\n } catch (e) {\n logger.debug('Failed to fetch user info', e);\n }\n }\n }\n\n let cliConfig: CloudCliConfig;\n try {\n logger.info('🔌 Connecting...');\n const config = await cloudApiService.config();\n cliConfig = config.data;\n } catch (e: unknown) {\n logger.error('🥲 Oops! Something went wrong while logging you in. Please try again.');\n logger.debug(e);\n return false;\n }\n await trackEvent(ctx, cloudApiService, 'willLoginAttempt', {\n ...(promptExperiment && { promptExperiment }),\n });\n\n logger.debug('🔐 Creating device authentication request...', {\n client_id: cliConfig.clientId,\n scope: cliConfig.scope,\n audience: cliConfig.audience,\n });\n const deviceAuthResponse = (await axios\n .post(cliConfig.deviceCodeAuthUrl, {\n client_id: cliConfig.clientId,\n scope: cliConfig.scope,\n audience: cliConfig.audience,\n })\n .catch((e: AxiosError) => {\n logger.error('There was an issue with the authentication process. Please try again.');\n if (e.message) {\n logger.debug(e.message, e);\n } else {\n logger.debug(e);\n }\n })) as AxiosResponse;\n\n openModule.then((open) => {\n open.default(deviceAuthResponse.data.verification_uri_complete).catch((e: Error) => {\n logger.error('We encountered an issue opening the browser. Please try again later.');\n logger.debug(e.message, e);\n });\n });\n\n logger.log('If a browser tab does not open automatically, please follow the next steps:');\n logger.log(\n `1. Open this url in your device: ${deviceAuthResponse.data.verification_uri_complete}`\n );\n logger.log(\n `2. Enter the following code: ${deviceAuthResponse.data.user_code} and confirm to login.\\n`\n );\n\n const tokenPayload = {\n grant_type: 'urn:ietf:params:oauth:grant-type:device_code',\n device_code: deviceAuthResponse.data.device_code,\n client_id: cliConfig.clientId,\n };\n\n let isAuthenticated = false;\n\n const authenticate = async () => {\n const spinner = logger.spinner('Waiting for authentication');\n spinner.start();\n const spinnerFail = () => spinner.fail('Authentication failed!');\n\n while (!isAuthenticated) {\n try {\n const tokenResponse = await axios.post(cliConfig.tokenUrl, tokenPayload);\n const authTokenData = tokenResponse.data;\n\n if (tokenResponse.status === 200) {\n // Token validation\n try {\n logger.debug('🔐 Validating token...');\n await tokenService.validateToken(authTokenData.id_token, cliConfig.jwksUrl);\n logger.debug('🔐 Token validation successful!');\n } catch (e: any) {\n logger.debug(e);\n spinnerFail();\n throw new Error('Unable to proceed: Token validation failed');\n }\n\n logger.debug('🔍 Fetching user information...');\n const cloudApiServiceWithToken = await cloudApiFactory(ctx, authTokenData.access_token);\n // Call to get user info to create the user in DB if not exists\n await cloudApiServiceWithToken.getUserInfo();\n logger.debug('🔍 User information fetched successfully!');\n\n try {\n logger.debug('📝 Saving login information...');\n await tokenService.saveToken(authTokenData.access_token);\n logger.debug('📝 Login information saved successfully!');\n isAuthenticated = true;\n } catch (e) {\n logger.error(\n 'There was a problem saving your login information. Please try logging in again.'\n );\n logger.debug(e);\n spinnerFail();\n return false;\n }\n }\n } catch (e: any) {\n if (e.message === 'Unable to proceed: Token validation failed') {\n logger.error(\n 'There seems to be a problem with your login information. Please try logging in again.'\n );\n spinnerFail();\n await trackEvent(ctx, cloudApiService, 'didNotLogin', {\n loginMethod: 'cli',\n ...(promptExperiment && { promptExperiment }),\n });\n return false;\n }\n if (\n e.response?.data.error &&\n !['authorization_pending', 'slow_down'].includes(e!.response.data.error)\n ) {\n logger.debug(e);\n spinnerFail();\n await trackEvent(ctx, cloudApiService, 'didNotLogin', {\n loginMethod: 'cli',\n ...(promptExperiment && { promptExperiment }),\n });\n return false;\n }\n // Await interval before retrying\n await new Promise((resolve) => {\n setTimeout(resolve, deviceAuthResponse.data.interval * 1000);\n });\n }\n }\n spinner.succeed('Authentication successful!');\n if (showDashboardLink) {\n logger.log('You are now logged into Strapi Cloud.');\n logger.log(\n 'To access your dashboard, please copy and paste the following URL into your web browser:'\n );\n logger.log(chalk.underline(`${apiConfig.dashboardBaseUrl}/projects`));\n }\n await trackEvent(ctx, cloudApiService, 'didLogin', {\n loginMethod: 'cli',\n ...(promptExperiment && { promptExperiment }),\n });\n };\n\n await authenticate();\n return isAuthenticated;\n}\n"],"names":["openModule","promptLogin","ctx","default","inquirer","response","prompt","type","name","message","login","loginSuccessful","loginAction","showDashboardLink","logger","promptExperiment","tokenService","tokenServiceFactory","existingToken","retrieveToken","cloudApiService","cloudApiFactory","undefined","isTokenValid","userInfo","getUserInfo","email","data","setContext","user","log","chalk","underline","apiConfig","dashboardBaseUrl","e","debug","cliConfig","info","config","error","trackEvent","client_id","clientId","scope","audience","deviceAuthResponse","axios","post","deviceCodeAuthUrl","catch","then","open","verification_uri_complete","user_code","tokenPayload","grant_type","device_code","isAuthenticated","authenticate","spinner","start","spinnerFail","fail","tokenResponse","tokenUrl","authTokenData","status","validateToken","id_token","jwksUrl","Error","cloudApiServiceWithToken","access_token","saveToken","loginMethod","includes","Promise","resolve","setTimeout","interval","succeed"],"mappings":"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"}
1
+ {"version":3,"file":"action.js","sources":["../../src/login/action.ts"],"sourcesContent":["import axios, { AxiosResponse, AxiosError } from 'axios';\nimport chalk from 'chalk';\nimport { tokenServiceFactory, cloudApiFactory } from '../services';\nimport type { CloudCliConfig, CLIContext } from '../types';\nimport { apiConfig } from '../config/api';\nimport { trackEvent } from '../utils/analytics';\nimport { setContext } from '../services/context';\n\nconst openModule = import('open');\n\nexport async function promptLogin(ctx: CLIContext) {\n const { default: inquirer } = await import('inquirer');\n const response = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'login',\n message: 'Would you like to login?',\n },\n ]);\n\n if (response.login) {\n const loginSuccessful = await loginAction(ctx);\n return loginSuccessful;\n }\n return false;\n}\n\nexport default async function loginAction(\n ctx: CLIContext,\n { showDashboardLink = true }: { showDashboardLink?: boolean } = {}\n): Promise<boolean> {\n const { logger, promptExperiment } = ctx;\n const tokenService = await tokenServiceFactory(ctx);\n const existingToken = await tokenService.retrieveToken();\n const cloudApiService = await cloudApiFactory(ctx, existingToken || undefined);\n\n if (existingToken) {\n const isTokenValid = await tokenService.isTokenValid(existingToken);\n if (isTokenValid) {\n try {\n const userInfo = await cloudApiService.getUserInfo();\n const { email } = userInfo.data.data;\n setContext({ ...ctx, user: userInfo.data.data });\n if (email) {\n logger.log(`You are already logged into your account (${email}).`);\n } else {\n logger.log('You are already logged in.');\n }\n if (showDashboardLink) {\n logger.log(\n 'To access your dashboard, please copy and paste the following URL into your web browser:'\n );\n logger.log(chalk.underline(`${apiConfig.dashboardBaseUrl}/projects`));\n }\n return true;\n } catch (e) {\n logger.debug('Failed to fetch user info', e);\n }\n }\n }\n\n let cliConfig: CloudCliConfig;\n try {\n logger.info('🔌 Connecting...');\n const config = await cloudApiService.config();\n cliConfig = config.data;\n } catch (e: unknown) {\n logger.error('🥲 Oops! Something went wrong while logging you in. Please try again.');\n logger.debug(e);\n return false;\n }\n await trackEvent(ctx, cloudApiService, 'willLoginAttempt', {\n ...(promptExperiment && { promptExperiment }),\n });\n\n logger.debug('🔐 Creating device authentication request...', {\n client_id: cliConfig.clientId,\n scope: cliConfig.scope,\n audience: cliConfig.audience,\n });\n const deviceAuthResponse = (await axios\n .post(cliConfig.deviceCodeAuthUrl, {\n client_id: cliConfig.clientId,\n scope: cliConfig.scope,\n audience: cliConfig.audience,\n })\n .catch((e: AxiosError) => {\n logger.error('There was an issue with the authentication process. Please try again.');\n if (e.message) {\n logger.debug(e.message, e);\n } else {\n logger.debug(e);\n }\n })) as AxiosResponse;\n\n openModule.then((open) => {\n open.default(deviceAuthResponse.data.verification_uri_complete).catch((e: Error) => {\n logger.error('We encountered an issue opening the browser. Please try again later.');\n logger.debug(e.message, e);\n });\n });\n\n logger.log('If a browser tab does not open automatically, please follow the next steps:');\n logger.log(\n `1. Open this url in your device: ${deviceAuthResponse.data.verification_uri_complete}`\n );\n logger.log(\n `2. Enter the following code: ${deviceAuthResponse.data.user_code} and confirm to login.\\n`\n );\n\n const tokenPayload = {\n grant_type: 'urn:ietf:params:oauth:grant-type:device_code',\n device_code: deviceAuthResponse.data.device_code,\n client_id: cliConfig.clientId,\n };\n\n let isAuthenticated = false;\n\n const authenticate = async () => {\n const spinner = logger.spinner('Waiting for authentication');\n spinner.start();\n const spinnerFail = () => spinner.fail('Authentication failed!');\n\n while (!isAuthenticated) {\n try {\n const tokenResponse = await axios.post(cliConfig.tokenUrl, tokenPayload);\n const authTokenData = tokenResponse.data;\n\n if (tokenResponse.status === 200) {\n // Token validation\n try {\n logger.debug('🔐 Validating token...');\n await tokenService.validateToken(authTokenData.id_token, cliConfig.jwksUrl);\n logger.debug('🔐 Token validation successful!');\n } catch (e: any) {\n logger.debug(e);\n spinnerFail();\n throw new Error('Unable to proceed: Token validation failed');\n }\n\n logger.debug('🔍 Fetching user information...');\n const cloudApiServiceWithToken = await cloudApiFactory(ctx, authTokenData.access_token);\n // Call to get user info to create the user in DB if not exists\n await cloudApiServiceWithToken.getUserInfo();\n logger.debug('🔍 User information fetched successfully!');\n\n try {\n logger.debug('📝 Saving login information...');\n await tokenService.saveToken(authTokenData.access_token);\n logger.debug('📝 Login information saved successfully!');\n isAuthenticated = true;\n } catch (e) {\n logger.error(\n 'There was a problem saving your login information. Please try logging in again.'\n );\n logger.debug(e);\n spinnerFail();\n return false;\n }\n }\n } catch (e: any) {\n if (e.message === 'Unable to proceed: Token validation failed') {\n logger.error(\n 'There seems to be a problem with your login information. Please try logging in again.'\n );\n spinnerFail();\n await trackEvent(ctx, cloudApiService, 'didNotLogin', {\n loginMethod: 'cli',\n ...(promptExperiment && { promptExperiment }),\n });\n return false;\n }\n if (\n e.response?.data.error &&\n !['authorization_pending', 'slow_down'].includes(e!.response.data.error)\n ) {\n logger.debug(e);\n spinnerFail();\n await trackEvent(ctx, cloudApiService, 'didNotLogin', {\n loginMethod: 'cli',\n ...(promptExperiment && { promptExperiment }),\n });\n return false;\n }\n // Await interval before retrying\n await new Promise((resolve) => {\n setTimeout(resolve, deviceAuthResponse.data.interval * 1000);\n });\n }\n }\n spinner.succeed('Authentication successful!');\n if (showDashboardLink) {\n logger.log('You are now logged into Strapi Cloud.');\n logger.log(\n 'To access your dashboard, please copy and paste the following URL into your web browser:'\n );\n logger.log(chalk.underline(`${apiConfig.dashboardBaseUrl}/projects`));\n }\n await trackEvent(ctx, cloudApiService, 'didLogin', {\n loginMethod: 'cli',\n ...(promptExperiment && { promptExperiment }),\n });\n };\n\n await authenticate();\n return isAuthenticated;\n}\n"],"names":["openModule","promptLogin","ctx","default","inquirer","response","prompt","type","name","message","login","loginSuccessful","loginAction","showDashboardLink","logger","promptExperiment","tokenService","tokenServiceFactory","existingToken","retrieveToken","cloudApiService","cloudApiFactory","undefined","isTokenValid","userInfo","getUserInfo","email","data","setContext","user","log","chalk","underline","apiConfig","dashboardBaseUrl","e","debug","cliConfig","info","config","error","trackEvent","client_id","clientId","scope","audience","deviceAuthResponse","axios","post","deviceCodeAuthUrl","catch","then","open","verification_uri_complete","user_code","tokenPayload","grant_type","device_code","isAuthenticated","authenticate","spinner","start","spinnerFail","fail","tokenResponse","tokenUrl","authTokenData","status","validateToken","id_token","jwksUrl","Error","cloudApiServiceWithToken","access_token","saveToken","loginMethod","includes","Promise","resolve","setTimeout","interval","succeed"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/login/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;;AAE3B,wBAK4B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/login/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;wBAOtB,sBAAsB;AAL3B,wBAK4B"}
@@ -1 +1 @@
1
- {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/logout/action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;8BAMhB,UAAU;AAArC,wBAsCE"}
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/logout/action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;yBAMrB,KAAK,UAAU;AAArC,wBAsCE"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var version = "5.48.1";
5
+ var version = "5.50.0";
6
6
  var packageJson = {
7
7
  version: version};
8
8
 
@@ -1,4 +1,4 @@
1
- var version = "5.48.1";
1
+ var version = "5.50.0";
2
2
  var packageJson = {
3
3
  version: version};
4
4
 
@@ -1 +1 @@
1
- {"version":3,"file":"build-logs.d.ts","sourceRoot":"","sources":["../../src/services/build-logs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AAE3D,QAAA,MAAM,uBAAuB,eAAgB,UAAU,WAClC,MAAM,SAAS,MAAM,aAAa,cAAc,qBAuEpE,CAAC;AAEF,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
1
+ {"version":3,"file":"build-logs.d.ts","sourceRoot":"","sources":["../../src/services/build-logs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AAE3D,QAAA,MAAM,uBAAuB,GAAI,YAAY,UAAU,MACvC,KAAK,MAAM,EAAE,OAAO,MAAM,EAAE,WAAW,cAAc,qBAuEpE,CAAC;AAEF,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
@@ -2,6 +2,10 @@
2
2
 
3
3
  var EventSource = require('eventsource');
4
4
 
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var EventSource__default = /*#__PURE__*/_interopDefault(EventSource);
8
+
5
9
  const buildLogsServiceFactory = ({ logger })=>{
6
10
  return async (url, token, cliConfig)=>{
7
11
  const CONN_TIMEOUT = Number(cliConfig.buildLogsConnectionTimeout);
@@ -12,7 +16,7 @@ const buildLogsServiceFactory = ({ logger })=>{
12
16
  const connect = (url)=>{
13
17
  const logsSpinner = logger.spinner('Connecting to the server to get build logs\n').start();
14
18
  logsSpinner.indent = 1;
15
- const es = new EventSource(`${url}`, {
19
+ const es = new EventSource__default.default(`${url}`, {
16
20
  headers: {
17
21
  Authorization: `Bearer ${token}`
18
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"build-logs.js","sources":["../../src/services/build-logs.ts"],"sourcesContent":["import EventSource from 'eventsource';\nimport { CLIContext, type CloudCliConfig } from '../types';\n\nconst buildLogsServiceFactory = ({ logger }: CLIContext) => {\n return async (url: string, token: string, cliConfig: CloudCliConfig) => {\n const CONN_TIMEOUT = Number(cliConfig.buildLogsConnectionTimeout);\n const MAX_RETRIES = Number(cliConfig.buildLogsMaxRetries);\n\n return new Promise((resolve, reject) => {\n let timeoutId: NodeJS.Timeout | null = null;\n let retries = 0;\n\n const connect = (url: string) => {\n const logsSpinner = logger.spinner('Connecting to the server to get build logs\\n').start();\n logsSpinner.indent = 1;\n const es = new EventSource(`${url}`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n const clearExistingTimeout = () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n\n const resetTimeout = () => {\n clearExistingTimeout();\n timeoutId = setTimeout(() => {\n if (logsSpinner.isSpinning) {\n logsSpinner.fail(\n 'We were unable to connect to the server to get build logs at this time. This could be due to a temporary issue.'\n );\n }\n es.close();\n reject(new Error('Connection timed out'));\n }, CONN_TIMEOUT);\n };\n\n es.onopen = resetTimeout;\n\n es.addEventListener('finished', (event) => {\n const data = JSON.parse(event.data);\n logger.log(data.msg);\n es.close();\n clearExistingTimeout();\n resolve(null);\n });\n\n es.addEventListener('log', (event) => {\n if (logsSpinner.isSpinning) {\n logsSpinner.succeed();\n }\n resetTimeout();\n const data = JSON.parse(event.data);\n logger.log(data.msg);\n });\n\n es.onerror = async () => {\n retries += 1;\n if (retries > MAX_RETRIES) {\n logsSpinner.fail(\n 'We were unable to connect to the server to get build logs at this time.'\n );\n es.close();\n clearExistingTimeout(); // Important to clear the event loop from remaining timeout - avoid to wait for nothing while the timeout is running\n reject(new Error('Max retries reached'));\n }\n };\n };\n\n connect(url);\n });\n };\n};\n\nexport { buildLogsServiceFactory };\n"],"names":["buildLogsServiceFactory","logger","url","token","cliConfig","CONN_TIMEOUT","Number","buildLogsConnectionTimeout","MAX_RETRIES","buildLogsMaxRetries","Promise","resolve","reject","timeoutId","retries","connect","logsSpinner","spinner","start","indent","es","EventSource","headers","Authorization","clearExistingTimeout","clearTimeout","resetTimeout","setTimeout","isSpinning","fail","close","Error","onopen","addEventListener","event","data","JSON","parse","log","msg","succeed","onerror"],"mappings":"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"}
1
+ {"version":3,"file":"build-logs.js","sources":["../../src/services/build-logs.ts"],"sourcesContent":["import EventSource from 'eventsource';\nimport { CLIContext, type CloudCliConfig } from '../types';\n\nconst buildLogsServiceFactory = ({ logger }: CLIContext) => {\n return async (url: string, token: string, cliConfig: CloudCliConfig) => {\n const CONN_TIMEOUT = Number(cliConfig.buildLogsConnectionTimeout);\n const MAX_RETRIES = Number(cliConfig.buildLogsMaxRetries);\n\n return new Promise((resolve, reject) => {\n let timeoutId: NodeJS.Timeout | null = null;\n let retries = 0;\n\n const connect = (url: string) => {\n const logsSpinner = logger.spinner('Connecting to the server to get build logs\\n').start();\n logsSpinner.indent = 1;\n const es = new EventSource(`${url}`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n\n const clearExistingTimeout = () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n\n const resetTimeout = () => {\n clearExistingTimeout();\n timeoutId = setTimeout(() => {\n if (logsSpinner.isSpinning) {\n logsSpinner.fail(\n 'We were unable to connect to the server to get build logs at this time. This could be due to a temporary issue.'\n );\n }\n es.close();\n reject(new Error('Connection timed out'));\n }, CONN_TIMEOUT);\n };\n\n es.onopen = resetTimeout;\n\n es.addEventListener('finished', (event) => {\n const data = JSON.parse(event.data);\n logger.log(data.msg);\n es.close();\n clearExistingTimeout();\n resolve(null);\n });\n\n es.addEventListener('log', (event) => {\n if (logsSpinner.isSpinning) {\n logsSpinner.succeed();\n }\n resetTimeout();\n const data = JSON.parse(event.data);\n logger.log(data.msg);\n });\n\n es.onerror = async () => {\n retries += 1;\n if (retries > MAX_RETRIES) {\n logsSpinner.fail(\n 'We were unable to connect to the server to get build logs at this time.'\n );\n es.close();\n clearExistingTimeout(); // Important to clear the event loop from remaining timeout - avoid to wait for nothing while the timeout is running\n reject(new Error('Max retries reached'));\n }\n };\n };\n\n connect(url);\n });\n };\n};\n\nexport { buildLogsServiceFactory };\n"],"names":["buildLogsServiceFactory","logger","url","token","cliConfig","CONN_TIMEOUT","Number","buildLogsConnectionTimeout","MAX_RETRIES","buildLogsMaxRetries","Promise","resolve","reject","timeoutId","retries","connect","logsSpinner","spinner","start","indent","es","EventSource","headers","Authorization","clearExistingTimeout","clearTimeout","resetTimeout","setTimeout","isSpinning","fail","close","Error","onopen","addEventListener","event","data","JSON","parse","log","msg","succeed","onerror"],"mappings":"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"}
@@ -8,18 +8,24 @@ var local = require('../config/local.js');
8
8
  var _package = require('../package.json.js');
9
9
  var context = require('./context.js');
10
10
 
11
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
+
13
+ var axios__default = /*#__PURE__*/_interopDefault(axios);
14
+ var fse__default = /*#__PURE__*/_interopDefault(fse);
15
+ var os__default = /*#__PURE__*/_interopDefault(os);
16
+
11
17
  const VERSION = 'v3';
12
18
  async function cloudApiFactory({ logger }, token) {
13
19
  const localConfig = await local.getLocalConfig();
14
20
  const customHeaders = {
15
21
  'x-device-id': localConfig.installId,
16
22
  'x-app-version': _package.default.version,
17
- 'x-os-name': os.type(),
18
- 'x-os-version': os.version(),
23
+ 'x-os-name': os__default.default.type(),
24
+ 'x-os-version': os__default.default.version(),
19
25
  'x-language': Intl.DateTimeFormat().resolvedOptions().locale,
20
26
  'x-node-version': process.versions.node
21
27
  };
22
- const axiosCloudAPI = axios.create({
28
+ const axiosCloudAPI = axios__default.default.create({
23
29
  baseURL: `${api.apiConfig.apiBaseUrl}/${VERSION}`,
24
30
  headers: {
25
31
  'Content-Type': 'application/json',
@@ -32,7 +38,7 @@ async function cloudApiFactory({ logger }, token) {
32
38
  return {
33
39
  deploy ({ filePath, project }, { onUploadProgress }) {
34
40
  return axiosCloudAPI.post(`/deploy/${project.name}`, {
35
- file: fse.createReadStream(filePath),
41
+ file: fse__default.default.createReadStream(filePath),
36
42
  targetEnvironment: project.targetEnvironment
37
43
  }, {
38
44
  headers: {
@@ -1 +1 @@
1
- {"version":3,"file":"cli-api.js","sources":["../../src/services/cli-api.ts"],"sourcesContent":["import axios, { type AxiosResponse } from 'axios';\nimport fse from 'fs-extra';\nimport os from 'os';\nimport { apiConfig } from '../config/api';\nimport type { CLIContext, CloudCliConfig, TrackPayload } from '../types';\nimport { getLocalConfig } from '../config/local';\n\nimport packageJson from '../../package.json';\nimport { getContext } from './context';\n\nexport const VERSION = 'v3';\n\nexport type ProjectInfo = {\n id: string;\n name: string;\n targetEnvironment?: string;\n displayName?: string;\n nodeVersion?: string;\n region?: string;\n plan?: string;\n url?: string;\n};\n\nexport type EnvironmentInfo = Record<string, unknown>;\n\nexport type EnvironmentDetails = {\n name: string;\n hasLiveDeployment: boolean;\n hasPendingDeployment: boolean;\n};\n\nexport type ProjectInput = Omit<ProjectInfo, 'id'>;\n\nexport type DeployResponse = {\n build_id: string;\n image: string;\n};\n\nexport type ListProjectsResponse = {\n data: {\n data: string;\n };\n};\n\nexport type ListEnvironmentsResponse = {\n data: {\n data: EnvironmentInfo[] | Record<string, never>;\n };\n};\n\nexport type ListLinkProjectsResponse = {\n data: {\n data: ProjectInfo[] | Record<string, never>;\n };\n};\n\nexport type ListLinkEnvironmentsResponse = {\n data: {\n data: EnvironmentDetails[] | Record<string, never>;\n };\n};\n\nexport type GetProjectResponse = {\n data: {\n displayName: string;\n updatedAt: string;\n suspendedAt?: string;\n isTrial: boolean;\n environments: string[];\n environmentsDetails: EnvironmentDetails[];\n };\n metadata: {\n dashboardUrls: {\n project: string;\n deployments: string;\n };\n };\n};\n\nexport type CreateTrialResponse = {\n licenseKey: string;\n};\n\nexport type CreateProjectResponse = {\n name: string;\n environmentInternalName: string;\n url?: string;\n};\n\nexport interface CloudApiService {\n deploy(\n deployInput: {\n filePath: string;\n project: { name: string; targetEnvironment?: string };\n },\n {\n onUploadProgress,\n }: {\n onUploadProgress: (progressEvent: { loaded: number; total?: number }) => void;\n }\n ): Promise<AxiosResponse<DeployResponse>>;\n\n createProject(createProjectInput: ProjectInput): Promise<{\n data: CreateProjectResponse;\n status: number;\n }>;\n\n getUserInfo(): Promise<AxiosResponse>;\n\n config(): Promise<AxiosResponse<CloudCliConfig>>;\n\n listProjects(): Promise<AxiosResponse<ListProjectsResponse>>;\n\n listLinkProjects(): Promise<AxiosResponse<ListLinkProjectsResponse>>;\n\n listEnvironments(project: { name: string }): Promise<AxiosResponse<ListEnvironmentsResponse>>;\n\n listLinkEnvironments(project: {\n name: string;\n }): Promise<AxiosResponse<ListLinkEnvironmentsResponse>>;\n\n getProject(project: { name: string }): Promise<AxiosResponse<GetProjectResponse>>;\n\n createTrial(createTrialInput: {\n strapiVersion: string;\n }): Promise<AxiosResponse<CreateTrialResponse>>;\n\n track(event: string, payload?: TrackPayload): Promise<AxiosResponse<void>>;\n}\n\nexport async function cloudApiFactory(\n { logger }: { logger: CLIContext['logger'] },\n token?: string\n): Promise<CloudApiService> {\n const localConfig = await getLocalConfig();\n const customHeaders = {\n 'x-device-id': localConfig.installId,\n 'x-app-version': packageJson.version,\n 'x-os-name': os.type(),\n 'x-os-version': os.version(),\n 'x-language': Intl.DateTimeFormat().resolvedOptions().locale,\n 'x-node-version': process.versions.node,\n };\n const axiosCloudAPI = axios.create({\n baseURL: `${apiConfig.apiBaseUrl}/${VERSION}`,\n headers: {\n 'Content-Type': 'application/json',\n ...customHeaders,\n },\n });\n\n if (token) {\n axiosCloudAPI.defaults.headers.Authorization = `Bearer ${token}`;\n }\n\n return {\n deploy({ filePath, project }, { onUploadProgress }) {\n return axiosCloudAPI.post(\n `/deploy/${project.name}`,\n { file: fse.createReadStream(filePath), targetEnvironment: project.targetEnvironment },\n {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n onUploadProgress,\n }\n );\n },\n\n async createProject({ name, nodeVersion, region, plan }) {\n const response = await axiosCloudAPI.post('/project', {\n projectName: name,\n region,\n nodeVersion,\n plan,\n });\n\n return {\n data: {\n id: response.data.id,\n name: response.data.name,\n environmentInternalName: response.data.environmentInternalName,\n },\n status: response.status,\n };\n },\n\n getUserInfo() {\n return axiosCloudAPI.get('/user');\n },\n\n async config(): Promise<AxiosResponse<CloudCliConfig>> {\n try {\n const response = await axiosCloudAPI.get('/config');\n\n if (response.status !== 200) {\n throw new Error('Error fetching cloud CLI config from the server.');\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! Couldn't retrieve the cloud CLI config from the server. Please try again.\"\n );\n\n throw error;\n }\n },\n\n async listProjects(): Promise<AxiosResponse<ListProjectsResponse>> {\n try {\n const response = await axiosCloudAPI.get('/projects');\n\n if (response.status !== 200) {\n throw new Error('Error fetching cloud projects from the server.');\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! Couldn't retrieve your project's list from the server. Please try again.\"\n );\n throw error;\n }\n },\n\n async listLinkProjects(): Promise<AxiosResponse<ListLinkProjectsResponse, unknown>> {\n try {\n const response = await axiosCloudAPI.get('/projects-linkable');\n\n if (response.status !== 200) {\n throw new Error('Error fetching cloud projects from the server.');\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! Couldn't retrieve your project's list from the server. Please try again.\"\n );\n throw error;\n }\n },\n\n async listEnvironments({ name }): Promise<AxiosResponse<ListEnvironmentsResponse>> {\n try {\n const response = await axiosCloudAPI.get(`/projects/${name}/environments`);\n\n if (response.status !== 200) {\n throw new Error('Error fetching cloud environments from the server.');\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! Couldn't retrieve your project's environments from the server. Please try again.\"\n );\n throw error;\n }\n },\n\n async listLinkEnvironments({ name }): Promise<AxiosResponse<ListLinkEnvironmentsResponse>> {\n try {\n const response = await axiosCloudAPI.get(`/projects/${name}/environments-linkable`);\n\n if (response.status !== 200) {\n throw new Error('Error fetching cloud environments from the server.');\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! Couldn't retrieve your project's environments from the server. Please try again.\"\n );\n throw error;\n }\n },\n\n async getProject({ name }): Promise<AxiosResponse<GetProjectResponse>> {\n try {\n const response = await axiosCloudAPI.get(`/projects/${name}`);\n\n if (response.status !== 200) {\n throw new Error(\"Error fetching project's details.\");\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! There was a problem retrieving your project's details. Please try again.\"\n );\n throw error;\n }\n },\n\n async createTrial({ strapiVersion }): Promise<AxiosResponse<CreateTrialResponse>> {\n try {\n const response = await axiosCloudAPI.post(`/cms-trial-request`, { strapiVersion });\n\n if (response.status !== 200) {\n throw new Error('Error creating trial.');\n }\n\n return response;\n } catch (error) {\n logger.debug('🥲 Oops! There was a problem creating your trial. Please try again.');\n throw error;\n }\n },\n\n track(event, payload = {}) {\n const ctx = getContext();\n if (ctx?.user?.id) {\n axiosCloudAPI.defaults.headers['x-user-id'] = ctx.user.id;\n }\n return axiosCloudAPI.post<void>('/track', {\n event,\n payload,\n });\n },\n };\n}\n"],"names":["VERSION","cloudApiFactory","logger","token","localConfig","getLocalConfig","customHeaders","installId","packageJson","version","os","type","Intl","DateTimeFormat","resolvedOptions","locale","process","versions","node","axiosCloudAPI","axios","create","baseURL","apiConfig","apiBaseUrl","headers","defaults","Authorization","deploy","filePath","project","onUploadProgress","post","name","file","fse","createReadStream","targetEnvironment","createProject","nodeVersion","region","plan","response","projectName","data","id","environmentInternalName","status","getUserInfo","get","config","Error","error","debug","listProjects","listLinkProjects","listEnvironments","listLinkEnvironments","getProject","createTrial","strapiVersion","track","event","payload","ctx","getContext","user"],"mappings":"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"}
1
+ {"version":3,"file":"cli-api.js","sources":["../../src/services/cli-api.ts"],"sourcesContent":["import axios, { type AxiosResponse } from 'axios';\nimport fse from 'fs-extra';\nimport os from 'os';\nimport { apiConfig } from '../config/api';\nimport type { CLIContext, CloudCliConfig, TrackPayload } from '../types';\nimport { getLocalConfig } from '../config/local';\n\nimport packageJson from '../../package.json';\nimport { getContext } from './context';\n\nexport const VERSION = 'v3';\n\nexport type ProjectInfo = {\n id: string;\n name: string;\n targetEnvironment?: string;\n displayName?: string;\n nodeVersion?: string;\n region?: string;\n plan?: string;\n url?: string;\n};\n\nexport type EnvironmentInfo = Record<string, unknown>;\n\nexport type EnvironmentDetails = {\n name: string;\n hasLiveDeployment: boolean;\n hasPendingDeployment: boolean;\n};\n\nexport type ProjectInput = Omit<ProjectInfo, 'id'>;\n\nexport type DeployResponse = {\n build_id: string;\n image: string;\n};\n\nexport type ListProjectsResponse = {\n data: {\n data: string;\n };\n};\n\nexport type ListEnvironmentsResponse = {\n data: {\n data: EnvironmentInfo[] | Record<string, never>;\n };\n};\n\nexport type ListLinkProjectsResponse = {\n data: {\n data: ProjectInfo[] | Record<string, never>;\n };\n};\n\nexport type ListLinkEnvironmentsResponse = {\n data: {\n data: EnvironmentDetails[] | Record<string, never>;\n };\n};\n\nexport type GetProjectResponse = {\n data: {\n displayName: string;\n updatedAt: string;\n suspendedAt?: string;\n isTrial: boolean;\n environments: string[];\n environmentsDetails: EnvironmentDetails[];\n };\n metadata: {\n dashboardUrls: {\n project: string;\n deployments: string;\n };\n };\n};\n\nexport type CreateTrialResponse = {\n licenseKey: string;\n};\n\nexport type CreateProjectResponse = {\n name: string;\n environmentInternalName: string;\n url?: string;\n};\n\nexport interface CloudApiService {\n deploy(\n deployInput: {\n filePath: string;\n project: { name: string; targetEnvironment?: string };\n },\n {\n onUploadProgress,\n }: {\n onUploadProgress: (progressEvent: { loaded: number; total?: number }) => void;\n }\n ): Promise<AxiosResponse<DeployResponse>>;\n\n createProject(createProjectInput: ProjectInput): Promise<{\n data: CreateProjectResponse;\n status: number;\n }>;\n\n getUserInfo(): Promise<AxiosResponse>;\n\n config(): Promise<AxiosResponse<CloudCliConfig>>;\n\n listProjects(): Promise<AxiosResponse<ListProjectsResponse>>;\n\n listLinkProjects(): Promise<AxiosResponse<ListLinkProjectsResponse>>;\n\n listEnvironments(project: { name: string }): Promise<AxiosResponse<ListEnvironmentsResponse>>;\n\n listLinkEnvironments(project: {\n name: string;\n }): Promise<AxiosResponse<ListLinkEnvironmentsResponse>>;\n\n getProject(project: { name: string }): Promise<AxiosResponse<GetProjectResponse>>;\n\n createTrial(createTrialInput: {\n strapiVersion: string;\n }): Promise<AxiosResponse<CreateTrialResponse>>;\n\n track(event: string, payload?: TrackPayload): Promise<AxiosResponse<void>>;\n}\n\nexport async function cloudApiFactory(\n { logger }: { logger: CLIContext['logger'] },\n token?: string\n): Promise<CloudApiService> {\n const localConfig = await getLocalConfig();\n const customHeaders = {\n 'x-device-id': localConfig.installId,\n 'x-app-version': packageJson.version,\n 'x-os-name': os.type(),\n 'x-os-version': os.version(),\n 'x-language': Intl.DateTimeFormat().resolvedOptions().locale,\n 'x-node-version': process.versions.node,\n };\n const axiosCloudAPI = axios.create({\n baseURL: `${apiConfig.apiBaseUrl}/${VERSION}`,\n headers: {\n 'Content-Type': 'application/json',\n ...customHeaders,\n },\n });\n\n if (token) {\n axiosCloudAPI.defaults.headers.Authorization = `Bearer ${token}`;\n }\n\n return {\n deploy({ filePath, project }, { onUploadProgress }) {\n return axiosCloudAPI.post(\n `/deploy/${project.name}`,\n { file: fse.createReadStream(filePath), targetEnvironment: project.targetEnvironment },\n {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n onUploadProgress,\n }\n );\n },\n\n async createProject({ name, nodeVersion, region, plan }) {\n const response = await axiosCloudAPI.post('/project', {\n projectName: name,\n region,\n nodeVersion,\n plan,\n });\n\n return {\n data: {\n id: response.data.id,\n name: response.data.name,\n environmentInternalName: response.data.environmentInternalName,\n },\n status: response.status,\n };\n },\n\n getUserInfo() {\n return axiosCloudAPI.get('/user');\n },\n\n async config(): Promise<AxiosResponse<CloudCliConfig>> {\n try {\n const response = await axiosCloudAPI.get('/config');\n\n if (response.status !== 200) {\n throw new Error('Error fetching cloud CLI config from the server.');\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! Couldn't retrieve the cloud CLI config from the server. Please try again.\"\n );\n\n throw error;\n }\n },\n\n async listProjects(): Promise<AxiosResponse<ListProjectsResponse>> {\n try {\n const response = await axiosCloudAPI.get('/projects');\n\n if (response.status !== 200) {\n throw new Error('Error fetching cloud projects from the server.');\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! Couldn't retrieve your project's list from the server. Please try again.\"\n );\n throw error;\n }\n },\n\n async listLinkProjects(): Promise<AxiosResponse<ListLinkProjectsResponse, unknown>> {\n try {\n const response = await axiosCloudAPI.get('/projects-linkable');\n\n if (response.status !== 200) {\n throw new Error('Error fetching cloud projects from the server.');\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! Couldn't retrieve your project's list from the server. Please try again.\"\n );\n throw error;\n }\n },\n\n async listEnvironments({ name }): Promise<AxiosResponse<ListEnvironmentsResponse>> {\n try {\n const response = await axiosCloudAPI.get(`/projects/${name}/environments`);\n\n if (response.status !== 200) {\n throw new Error('Error fetching cloud environments from the server.');\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! Couldn't retrieve your project's environments from the server. Please try again.\"\n );\n throw error;\n }\n },\n\n async listLinkEnvironments({ name }): Promise<AxiosResponse<ListLinkEnvironmentsResponse>> {\n try {\n const response = await axiosCloudAPI.get(`/projects/${name}/environments-linkable`);\n\n if (response.status !== 200) {\n throw new Error('Error fetching cloud environments from the server.');\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! Couldn't retrieve your project's environments from the server. Please try again.\"\n );\n throw error;\n }\n },\n\n async getProject({ name }): Promise<AxiosResponse<GetProjectResponse>> {\n try {\n const response = await axiosCloudAPI.get(`/projects/${name}`);\n\n if (response.status !== 200) {\n throw new Error(\"Error fetching project's details.\");\n }\n\n return response;\n } catch (error) {\n logger.debug(\n \"🥲 Oops! There was a problem retrieving your project's details. Please try again.\"\n );\n throw error;\n }\n },\n\n async createTrial({ strapiVersion }): Promise<AxiosResponse<CreateTrialResponse>> {\n try {\n const response = await axiosCloudAPI.post(`/cms-trial-request`, { strapiVersion });\n\n if (response.status !== 200) {\n throw new Error('Error creating trial.');\n }\n\n return response;\n } catch (error) {\n logger.debug('🥲 Oops! There was a problem creating your trial. Please try again.');\n throw error;\n }\n },\n\n track(event, payload = {}) {\n const ctx = getContext();\n if (ctx?.user?.id) {\n axiosCloudAPI.defaults.headers['x-user-id'] = ctx.user.id;\n }\n return axiosCloudAPI.post<void>('/track', {\n event,\n payload,\n });\n },\n };\n}\n"],"names":["VERSION","cloudApiFactory","logger","token","localConfig","getLocalConfig","customHeaders","installId","packageJson","version","os","type","Intl","DateTimeFormat","resolvedOptions","locale","process","versions","node","axiosCloudAPI","axios","create","baseURL","apiConfig","apiBaseUrl","headers","defaults","Authorization","deploy","filePath","project","onUploadProgress","post","name","file","fse","createReadStream","targetEnvironment","createProject","nodeVersion","region","plan","response","projectName","data","id","environmentInternalName","status","getUserInfo","get","config","Error","error","debug","listProjects","listLinkProjects","listEnvironments","listLinkEnvironments","getProject","createTrial","strapiVersion","track","event","payload","ctx","getContext","user"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/services/logger.ts"],"names":[],"mappings":"AAGA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACtC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,CAAC,CAAC;IAC/F,WAAW,EAAE,CACX,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,KACT,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC;CAC/D;AAMD,QAAA,MAAM,YAAY,aAAa,aAAa,KAAQ,MAqInD,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/services/logger.ts"],"names":[],"mappings":"AAGA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,WAAW,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACtC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,CAAC,CAAC;IAC/F,WAAW,EAAE,CACX,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,KACT,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC;CAC/D;AAMD,QAAA,MAAM,YAAY,GAAI,UAAS,aAAkB,KAAG,MAqInD,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}