@strapi/cloud-cli 5.12.1 → 5.12.3
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.d.ts.map +1 -0
- package/dist/bin.js +5 -18
- package/dist/bin.js.map +1 -1
- package/dist/bin.mjs +3 -16
- package/dist/bin.mjs.map +1 -1
- package/dist/cloud/command.d.ts.map +1 -0
- package/dist/cloud/command.js +14 -0
- package/dist/cloud/command.js.map +1 -0
- package/dist/cloud/command.mjs +12 -0
- package/dist/cloud/command.mjs.map +1 -0
- package/dist/config/api.d.ts.map +1 -0
- package/dist/config/api.js +11 -0
- package/dist/config/api.js.map +1 -0
- package/dist/config/api.mjs +9 -0
- package/dist/config/api.mjs.map +1 -0
- package/dist/config/local.d.ts.map +1 -0
- package/dist/config/local.js +60 -0
- package/dist/config/local.js.map +1 -0
- package/dist/config/local.mjs +55 -0
- package/dist/config/local.mjs.map +1 -0
- package/dist/create-project/action.d.ts.map +1 -0
- package/dist/create-project/action.js +95 -0
- package/dist/create-project/action.js.map +1 -0
- package/dist/create-project/action.mjs +93 -0
- package/dist/create-project/action.mjs.map +1 -0
- package/dist/create-project/command.d.ts.map +1 -0
- package/dist/create-project/command.js +14 -0
- package/dist/create-project/command.js.map +1 -0
- package/dist/create-project/command.mjs +12 -0
- package/dist/create-project/command.mjs.map +1 -0
- package/dist/create-project/index.d.ts.map +1 -0
- package/dist/create-project/index.js +18 -0
- package/dist/create-project/index.js.map +1 -0
- package/dist/create-project/index.mjs +12 -0
- package/dist/create-project/index.mjs.map +1 -0
- package/dist/create-project/utils/get-project-name-from-pkg.d.ts.map +1 -0
- package/dist/create-project/utils/get-project-name-from-pkg.js +15 -0
- package/dist/create-project/utils/get-project-name-from-pkg.js.map +1 -0
- package/dist/create-project/utils/get-project-name-from-pkg.mjs +13 -0
- package/dist/create-project/utils/get-project-name-from-pkg.mjs.map +1 -0
- package/dist/create-project/utils/project-questions.utils.d.ts.map +1 -0
- package/dist/create-project/utils/project-questions.utils.js +63 -0
- package/dist/create-project/utils/project-questions.utils.js.map +1 -0
- package/dist/create-project/utils/project-questions.utils.mjs +59 -0
- package/dist/create-project/utils/project-questions.utils.mjs.map +1 -0
- package/dist/deploy-project/action.d.ts.map +1 -0
- package/dist/deploy-project/action.js +287 -0
- package/dist/deploy-project/action.js.map +1 -0
- package/dist/deploy-project/action.mjs +266 -0
- package/dist/deploy-project/action.mjs.map +1 -0
- package/dist/deploy-project/command.d.ts.map +1 -0
- package/dist/deploy-project/command.js +14 -0
- package/dist/deploy-project/command.js.map +1 -0
- package/dist/deploy-project/command.mjs +12 -0
- package/dist/deploy-project/command.mjs.map +1 -0
- package/dist/deploy-project/index.d.ts.map +1 -0
- package/dist/deploy-project/index.js +18 -0
- package/dist/deploy-project/index.js.map +1 -0
- package/dist/deploy-project/index.mjs +12 -0
- package/dist/deploy-project/index.mjs.map +1 -0
- package/dist/environment/command.d.ts.map +1 -0
- package/dist/environment/command.js +15 -0
- package/dist/environment/command.js.map +1 -0
- package/dist/environment/command.mjs +13 -0
- package/dist/environment/command.mjs.map +1 -0
- package/dist/environment/link/action.d.ts.map +1 -0
- package/dist/environment/link/action.js +117 -0
- package/dist/environment/link/action.js.map +1 -0
- package/dist/environment/link/action.mjs +115 -0
- package/dist/environment/link/action.mjs.map +1 -0
- package/dist/environment/link/command.d.ts.map +1 -0
- package/dist/environment/link/command.js +13 -0
- package/dist/environment/link/command.js.map +1 -0
- package/dist/environment/link/command.mjs +11 -0
- package/dist/environment/link/command.mjs.map +1 -0
- package/dist/environment/link/index.d.ts.map +1 -0
- package/dist/environment/link/index.js +18 -0
- package/dist/environment/link/index.js.map +1 -0
- package/dist/environment/link/index.mjs +12 -0
- package/dist/environment/link/index.mjs.map +1 -0
- package/dist/environment/list/action.d.ts.map +1 -0
- package/dist/environment/list/action.js +57 -0
- package/dist/environment/list/action.js.map +1 -0
- package/dist/environment/list/action.mjs +55 -0
- package/dist/environment/list/action.mjs.map +1 -0
- package/dist/environment/list/command.d.ts.map +1 -0
- package/dist/environment/list/command.js +13 -0
- package/dist/environment/list/command.js.map +1 -0
- package/dist/environment/list/command.mjs +11 -0
- package/dist/environment/list/command.mjs.map +1 -0
- package/dist/environment/list/index.d.ts.map +1 -0
- package/dist/environment/list/index.js +18 -0
- package/dist/environment/list/index.js.map +1 -0
- package/dist/environment/list/index.mjs +12 -0
- package/dist/environment/list/index.mjs.map +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +59 -29
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +60 -25
- package/dist/index.mjs.map +1 -1
- package/dist/link/action.d.ts.map +1 -0
- package/dist/link/action.js +146 -0
- package/dist/link/action.js.map +1 -0
- package/dist/link/action.mjs +144 -0
- package/dist/link/action.mjs.map +1 -0
- package/dist/link/command.d.ts.map +1 -0
- package/dist/link/command.js +13 -0
- package/dist/link/command.js.map +1 -0
- package/dist/link/command.mjs +11 -0
- package/dist/link/command.mjs.map +1 -0
- package/dist/link/index.d.ts.map +1 -0
- package/dist/link/index.js +18 -0
- package/dist/link/index.js.map +1 -0
- package/dist/link/index.mjs +12 -0
- package/dist/link/index.mjs.map +1 -0
- package/dist/list-projects/action.d.ts.map +1 -0
- package/dist/list-projects/action.js +34 -0
- package/dist/list-projects/action.js.map +1 -0
- package/dist/list-projects/action.mjs +32 -0
- package/dist/list-projects/action.mjs.map +1 -0
- package/dist/list-projects/command.d.ts.map +1 -0
- package/dist/list-projects/command.js +13 -0
- package/dist/list-projects/command.js.map +1 -0
- package/dist/list-projects/command.mjs +11 -0
- package/dist/list-projects/command.mjs.map +1 -0
- package/dist/list-projects/index.d.ts.map +1 -0
- package/dist/list-projects/index.js +18 -0
- package/dist/list-projects/index.js.map +1 -0
- package/dist/list-projects/index.mjs +12 -0
- package/dist/list-projects/index.mjs.map +1 -0
- package/dist/login/action.d.ts.map +1 -0
- package/dist/login/action.js +177 -0
- package/dist/login/action.js.map +1 -0
- package/dist/login/action.mjs +172 -0
- package/dist/login/action.mjs.map +1 -0
- package/dist/login/command.d.ts.map +1 -0
- package/dist/login/command.js +14 -0
- package/dist/login/command.js.map +1 -0
- package/dist/login/command.mjs +12 -0
- package/dist/login/command.mjs.map +1 -0
- package/dist/login/index.d.ts.map +1 -0
- package/dist/login/index.js +18 -0
- package/dist/login/index.js.map +1 -0
- package/dist/login/index.mjs +12 -0
- package/dist/login/index.mjs.map +1 -0
- package/dist/logout/action.d.ts.map +1 -0
- package/dist/logout/action.js +46 -0
- package/dist/logout/action.js.map +1 -0
- package/dist/logout/action.mjs +44 -0
- package/dist/logout/action.mjs.map +1 -0
- package/dist/logout/command.d.ts.map +1 -0
- package/dist/logout/command.js +14 -0
- package/dist/logout/command.js.map +1 -0
- package/dist/logout/command.mjs +12 -0
- package/dist/logout/command.mjs.map +1 -0
- package/dist/logout/index.d.ts.map +1 -0
- package/dist/logout/index.js +18 -0
- package/dist/logout/index.js.map +1 -0
- package/dist/logout/index.mjs +12 -0
- package/dist/logout/index.mjs.map +1 -0
- package/dist/package.json.js +129 -0
- package/dist/package.json.js.map +1 -0
- package/dist/package.json.mjs +105 -0
- package/dist/package.json.mjs.map +1 -0
- package/dist/services/build-logs.d.ts.map +1 -0
- package/dist/services/build-logs.js +67 -0
- package/dist/services/build-logs.js.map +1 -0
- package/dist/services/build-logs.mjs +65 -0
- package/dist/services/build-logs.mjs.map +1 -0
- package/dist/services/cli-api.d.ts.map +1 -0
- package/dist/services/cli-api.js +146 -0
- package/dist/services/cli-api.js.map +1 -0
- package/dist/services/cli-api.mjs +143 -0
- package/dist/services/cli-api.mjs.map +1 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +14 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/index.mjs +6 -0
- package/dist/services/index.mjs.map +1 -0
- package/dist/services/logger.d.ts.map +1 -0
- package/dist/services/logger.js +128 -0
- package/dist/services/logger.js.map +1 -0
- package/dist/services/logger.mjs +107 -0
- package/dist/services/logger.mjs.map +1 -0
- package/dist/services/notification.d.ts.map +1 -0
- package/dist/services/notification.js +37 -0
- package/dist/services/notification.js.map +1 -0
- package/dist/services/notification.mjs +35 -0
- package/dist/services/notification.mjs.map +1 -0
- package/dist/services/strapi-info-save.d.ts.map +1 -0
- package/dist/services/strapi-info-save.js +53 -0
- package/dist/services/strapi-info-save.js.map +1 -0
- package/dist/services/strapi-info-save.mjs +47 -0
- package/dist/services/strapi-info-save.mjs.map +1 -0
- package/dist/services/token.d.ts.map +1 -0
- package/dist/services/token.js +126 -0
- package/dist/services/token.js.map +1 -0
- package/dist/services/token.mjs +124 -0
- package/dist/services/token.mjs.map +1 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/utils/analytics.d.ts.map +1 -0
- package/dist/utils/analytics.js +12 -0
- package/dist/utils/analytics.js.map +1 -0
- package/dist/utils/analytics.mjs +10 -0
- package/dist/utils/analytics.mjs.map +1 -0
- package/dist/utils/compress-files.d.ts.map +1 -0
- package/dist/utils/compress-files.js +102 -0
- package/dist/utils/compress-files.js.map +1 -0
- package/dist/utils/compress-files.mjs +78 -0
- package/dist/utils/compress-files.mjs.map +1 -0
- package/dist/utils/get-local-config.d.ts.map +1 -0
- package/dist/utils/get-local-config.js +37 -0
- package/dist/utils/get-local-config.js.map +1 -0
- package/dist/utils/get-local-config.mjs +34 -0
- package/dist/utils/get-local-config.mjs.map +1 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +33 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/helpers.mjs +31 -0
- package/dist/utils/helpers.mjs.map +1 -0
- package/dist/utils/pkg.d.ts.map +1 -0
- package/dist/utils/pkg.js +65 -0
- package/dist/utils/pkg.js.map +1 -0
- package/dist/utils/pkg.mjs +43 -0
- package/dist/utils/pkg.mjs.map +1 -0
- package/dist/utils/tests/compress-files.test.d.ts.map +1 -0
- package/package.json +5 -5
- package/dist/chunks/index-Cs4iEXVp.mjs +0 -1869
- package/dist/chunks/index-Cs4iEXVp.mjs.map +0 -1
- package/dist/chunks/index-DuvtFoFz.js +0 -1896
- package/dist/chunks/index-DuvtFoFz.js.map +0 -1
- package/dist/src/bin.d.ts.map +0 -1
- package/dist/src/cloud/command.d.ts.map +0 -1
- package/dist/src/config/api.d.ts.map +0 -1
- package/dist/src/config/local.d.ts.map +0 -1
- package/dist/src/create-project/action.d.ts.map +0 -1
- package/dist/src/create-project/command.d.ts.map +0 -1
- package/dist/src/create-project/index.d.ts.map +0 -1
- package/dist/src/create-project/utils/get-project-name-from-pkg.d.ts.map +0 -1
- package/dist/src/create-project/utils/project-questions.utils.d.ts.map +0 -1
- package/dist/src/deploy-project/action.d.ts.map +0 -1
- package/dist/src/deploy-project/command.d.ts.map +0 -1
- package/dist/src/deploy-project/index.d.ts.map +0 -1
- package/dist/src/environment/command.d.ts.map +0 -1
- package/dist/src/environment/link/action.d.ts.map +0 -1
- package/dist/src/environment/link/command.d.ts.map +0 -1
- package/dist/src/environment/link/index.d.ts.map +0 -1
- package/dist/src/environment/list/action.d.ts.map +0 -1
- package/dist/src/environment/list/command.d.ts.map +0 -1
- package/dist/src/environment/list/index.d.ts.map +0 -1
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/link/action.d.ts.map +0 -1
- package/dist/src/link/command.d.ts.map +0 -1
- package/dist/src/link/index.d.ts.map +0 -1
- package/dist/src/list-projects/action.d.ts.map +0 -1
- package/dist/src/list-projects/command.d.ts.map +0 -1
- package/dist/src/list-projects/index.d.ts.map +0 -1
- package/dist/src/login/action.d.ts.map +0 -1
- package/dist/src/login/command.d.ts.map +0 -1
- package/dist/src/login/index.d.ts.map +0 -1
- package/dist/src/logout/action.d.ts.map +0 -1
- package/dist/src/logout/command.d.ts.map +0 -1
- package/dist/src/logout/index.d.ts.map +0 -1
- package/dist/src/services/build-logs.d.ts.map +0 -1
- package/dist/src/services/cli-api.d.ts.map +0 -1
- package/dist/src/services/index.d.ts.map +0 -1
- package/dist/src/services/logger.d.ts.map +0 -1
- package/dist/src/services/notification.d.ts.map +0 -1
- package/dist/src/services/strapi-info-save.d.ts.map +0 -1
- package/dist/src/services/token.d.ts.map +0 -1
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/utils/analytics.d.ts.map +0 -1
- package/dist/src/utils/compress-files.d.ts.map +0 -1
- package/dist/src/utils/get-local-config.d.ts.map +0 -1
- package/dist/src/utils/helpers.d.ts.map +0 -1
- package/dist/src/utils/pkg.d.ts.map +0 -1
- package/dist/src/utils/tests/compress-files.test.d.ts.map +0 -1
- /package/dist/{src/bin.d.ts → bin.d.ts} +0 -0
- /package/dist/{src/cloud → cloud}/command.d.ts +0 -0
- /package/dist/{src/config → config}/api.d.ts +0 -0
- /package/dist/{src/config → config}/local.d.ts +0 -0
- /package/dist/{src/create-project → create-project}/action.d.ts +0 -0
- /package/dist/{src/create-project → create-project}/command.d.ts +0 -0
- /package/dist/{src/create-project → create-project}/index.d.ts +0 -0
- /package/dist/{src/create-project → create-project}/utils/get-project-name-from-pkg.d.ts +0 -0
- /package/dist/{src/create-project → create-project}/utils/project-questions.utils.d.ts +0 -0
- /package/dist/{src/deploy-project → deploy-project}/action.d.ts +0 -0
- /package/dist/{src/deploy-project → deploy-project}/command.d.ts +0 -0
- /package/dist/{src/deploy-project → deploy-project}/index.d.ts +0 -0
- /package/dist/{src/environment → environment}/command.d.ts +0 -0
- /package/dist/{src/environment → environment}/link/action.d.ts +0 -0
- /package/dist/{src/environment → environment}/link/command.d.ts +0 -0
- /package/dist/{src/environment → environment}/link/index.d.ts +0 -0
- /package/dist/{src/environment → environment}/list/action.d.ts +0 -0
- /package/dist/{src/environment → environment}/list/command.d.ts +0 -0
- /package/dist/{src/environment → environment}/list/index.d.ts +0 -0
- /package/dist/{src/index.d.ts → index.d.ts} +0 -0
- /package/dist/{src/link → link}/action.d.ts +0 -0
- /package/dist/{src/link → link}/command.d.ts +0 -0
- /package/dist/{src/link → link}/index.d.ts +0 -0
- /package/dist/{src/list-projects → list-projects}/action.d.ts +0 -0
- /package/dist/{src/list-projects → list-projects}/command.d.ts +0 -0
- /package/dist/{src/list-projects → list-projects}/index.d.ts +0 -0
- /package/dist/{src/login → login}/action.d.ts +0 -0
- /package/dist/{src/login → login}/command.d.ts +0 -0
- /package/dist/{src/login → login}/index.d.ts +0 -0
- /package/dist/{src/logout → logout}/action.d.ts +0 -0
- /package/dist/{src/logout → logout}/command.d.ts +0 -0
- /package/dist/{src/logout → logout}/index.d.ts +0 -0
- /package/dist/{src/services → services}/build-logs.d.ts +0 -0
- /package/dist/{src/services → services}/cli-api.d.ts +0 -0
- /package/dist/{src/services → services}/index.d.ts +0 -0
- /package/dist/{src/services → services}/logger.d.ts +0 -0
- /package/dist/{src/services → services}/notification.d.ts +0 -0
- /package/dist/{src/services → services}/strapi-info-save.d.ts +0 -0
- /package/dist/{src/services → services}/token.d.ts +0 -0
- /package/dist/{src/types.d.ts → types.d.ts} +0 -0
- /package/dist/{src/utils → utils}/analytics.d.ts +0 -0
- /package/dist/{src/utils → utils}/compress-files.d.ts +0 -0
- /package/dist/{src/utils → utils}/get-local-config.d.ts +0 -0
- /package/dist/{src/utils → utils}/helpers.d.ts +0 -0
- /package/dist/{src/utils → utils}/pkg.d.ts +0 -0
- /package/dist/{src/utils → utils}/tests/compress-files.test.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.js","sources":["../../src/list-projects/command.ts"],"sourcesContent":["import { type StrapiCloudCommand } from '../types';\nimport { runAction } from '../utils/helpers';\nimport action from './action';\n\n/**\n * `$ list project from the cloud`\n */\nconst command: StrapiCloudCommand = ({ command, ctx }) => {\n command\n .command('cloud:projects')\n .alias('projects')\n .description('List Strapi Cloud projects')\n .option('-d, --debug', 'Enable debugging mode with verbose logs')\n .option('-s, --silent', \"Don't log anything\")\n .action(() => runAction('projects', action)(ctx));\n};\n\nexport default command;\n"],"names":["command","ctx","alias","description","option","action","runAction"],"mappings":";;;;;AAIA;;AAEC,UACKA,OAA8B,GAAA,CAAC,EAAEA,OAAO,EAAEC,GAAG,EAAE,GAAA;IACnDD,OACGA,CAAAA,OAAO,CAAC,gBACRE,CAAAA,CAAAA,KAAK,CAAC,UACNC,CAAAA,CAAAA,WAAW,CAAC,4BAAA,CAAA,CACZC,MAAM,CAAC,eAAe,yCACtBA,CAAAA,CAAAA,MAAM,CAAC,cAAgB,EAAA,oBAAA,CAAA,CACvBC,MAAM,CAAC,IAAMC,iBAAU,CAAA,UAAA,EAAYD,MAAQJ,CAAAA,CAAAA,GAAAA,CAAAA,CAAAA;AAChD;;;;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { runAction } from '../utils/helpers.mjs';
|
|
2
|
+
import action from './action.mjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* `$ list project from the cloud`
|
|
6
|
+
*/ const command = ({ command, ctx })=>{
|
|
7
|
+
command.command('cloud:projects').alias('projects').description('List Strapi Cloud projects').option('-d, --debug', 'Enable debugging mode with verbose logs').option('-s, --silent', "Don't log anything").action(()=>runAction('projects', action)(ctx));
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export { command as default };
|
|
11
|
+
//# sourceMappingURL=command.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.mjs","sources":["../../src/list-projects/command.ts"],"sourcesContent":["import { type StrapiCloudCommand } from '../types';\nimport { runAction } from '../utils/helpers';\nimport action from './action';\n\n/**\n * `$ list project from the cloud`\n */\nconst command: StrapiCloudCommand = ({ command, ctx }) => {\n command\n .command('cloud:projects')\n .alias('projects')\n .description('List Strapi Cloud projects')\n .option('-d, --debug', 'Enable debugging mode with verbose logs')\n .option('-s, --silent', \"Don't log anything\")\n .action(() => runAction('projects', action)(ctx));\n};\n\nexport default command;\n"],"names":["command","ctx","alias","description","option","action","runAction"],"mappings":";;;AAIA;;AAEC,UACKA,OAA8B,GAAA,CAAC,EAAEA,OAAO,EAAEC,GAAG,EAAE,GAAA;IACnDD,OACGA,CAAAA,OAAO,CAAC,gBACRE,CAAAA,CAAAA,KAAK,CAAC,UACNC,CAAAA,CAAAA,WAAW,CAAC,4BAAA,CAAA,CACZC,MAAM,CAAC,eAAe,yCACtBA,CAAAA,CAAAA,MAAM,CAAC,cAAgB,EAAA,oBAAA,CAAA,CACvBC,MAAM,CAAC,IAAMC,SAAU,CAAA,UAAA,EAAYD,MAAQJ,CAAAA,CAAAA,GAAAA,CAAAA,CAAAA;AAChD;;;;"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var action = require('./action.js');
|
|
6
|
+
var command = require('./command.js');
|
|
7
|
+
|
|
8
|
+
var listProjects = {
|
|
9
|
+
name: 'list-projects',
|
|
10
|
+
description: 'List Strapi Cloud projects',
|
|
11
|
+
action,
|
|
12
|
+
command
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
exports.action = action;
|
|
16
|
+
exports.command = command;
|
|
17
|
+
exports.default = listProjects;
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/list-projects/index.ts"],"sourcesContent":["import action from './action';\nimport command from './command';\nimport type { StrapiCloudCommandInfo } from '../types';\n\nexport { action, command };\n\nexport default {\n name: 'list-projects',\n description: 'List Strapi Cloud projects',\n action,\n command,\n} as StrapiCloudCommandInfo;\n"],"names":["name","description","action","command"],"mappings":";;;;;;;AAMA,mBAAe;IACbA,IAAM,EAAA,eAAA;IACNC,WAAa,EAAA,4BAAA;AACbC,IAAAA,MAAAA;AACAC,IAAAA;AACF,CAA4B;;;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import action from './action.mjs';
|
|
2
|
+
import command from './command.mjs';
|
|
3
|
+
|
|
4
|
+
var listProjects = {
|
|
5
|
+
name: 'list-projects',
|
|
6
|
+
description: 'List Strapi Cloud projects',
|
|
7
|
+
action,
|
|
8
|
+
command
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export { action, command, listProjects as default };
|
|
12
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/list-projects/index.ts"],"sourcesContent":["import action from './action';\nimport command from './command';\nimport type { StrapiCloudCommandInfo } from '../types';\n\nexport { action, command };\n\nexport default {\n name: 'list-projects',\n description: 'List Strapi Cloud projects',\n action,\n command,\n} as StrapiCloudCommandInfo;\n"],"names":["name","description","action","command"],"mappings":";;;AAMA,mBAAe;IACbA,IAAM,EAAA,eAAA;IACNC,WAAa,EAAA,4BAAA;AACbC,IAAAA,MAAAA;AACAC,IAAAA;AACF,CAA4B;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/login/action.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAkB,UAAU,EAAE,MAAM,UAAU,CAAC;AAM3D,wBAAsB,WAAW,CAAC,GAAG,EAAE,UAAU,oBAchD;AAED,wBAA8B,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAgK3E"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var axios = require('axios');
|
|
6
|
+
var chalk = require('chalk');
|
|
7
|
+
var inquirer = require('inquirer');
|
|
8
|
+
var cliApi = require('../services/cli-api.js');
|
|
9
|
+
require('fs-extra');
|
|
10
|
+
require('path');
|
|
11
|
+
require('lodash');
|
|
12
|
+
var token = require('../services/token.js');
|
|
13
|
+
require('fast-safe-stringify');
|
|
14
|
+
require('ora');
|
|
15
|
+
require('cli-progress');
|
|
16
|
+
var api = require('../config/api.js');
|
|
17
|
+
var analytics = require('../utils/analytics.js');
|
|
18
|
+
|
|
19
|
+
const openModule = import('open');
|
|
20
|
+
async function promptLogin(ctx) {
|
|
21
|
+
const response = await inquirer.prompt([
|
|
22
|
+
{
|
|
23
|
+
type: 'confirm',
|
|
24
|
+
name: 'login',
|
|
25
|
+
message: 'Would you like to login?'
|
|
26
|
+
}
|
|
27
|
+
]);
|
|
28
|
+
if (response.login) {
|
|
29
|
+
const loginSuccessful = await loginAction(ctx);
|
|
30
|
+
return loginSuccessful;
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
async function loginAction(ctx) {
|
|
35
|
+
const { logger } = ctx;
|
|
36
|
+
const tokenService = await token.tokenServiceFactory(ctx);
|
|
37
|
+
const existingToken = await tokenService.retrieveToken();
|
|
38
|
+
const cloudApiService = await cliApi.cloudApiFactory(ctx, existingToken || undefined);
|
|
39
|
+
if (existingToken) {
|
|
40
|
+
const isTokenValid = await tokenService.isTokenValid(existingToken);
|
|
41
|
+
if (isTokenValid) {
|
|
42
|
+
try {
|
|
43
|
+
const userInfo = await cloudApiService.getUserInfo();
|
|
44
|
+
const { email } = userInfo.data.data;
|
|
45
|
+
if (email) {
|
|
46
|
+
logger.log(`You are already logged into your account (${email}).`);
|
|
47
|
+
} else {
|
|
48
|
+
logger.log('You are already logged in.');
|
|
49
|
+
}
|
|
50
|
+
logger.log('To access your dashboard, please copy and paste the following URL into your web browser:');
|
|
51
|
+
logger.log(chalk.underline(`${api.apiConfig.dashboardBaseUrl}/projects`));
|
|
52
|
+
return true;
|
|
53
|
+
} catch (e) {
|
|
54
|
+
logger.debug('Failed to fetch user info', e);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
let cliConfig;
|
|
59
|
+
try {
|
|
60
|
+
logger.info('🔌 Connecting to the Strapi Cloud API...');
|
|
61
|
+
const config = await cloudApiService.config();
|
|
62
|
+
cliConfig = config.data;
|
|
63
|
+
} catch (e) {
|
|
64
|
+
logger.error('🥲 Oops! Something went wrong while logging you in. Please try again.');
|
|
65
|
+
logger.debug(e);
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
await analytics.trackEvent(ctx, cloudApiService, 'willLoginAttempt', {});
|
|
69
|
+
logger.debug('🔐 Creating device authentication request...', {
|
|
70
|
+
client_id: cliConfig.clientId,
|
|
71
|
+
scope: cliConfig.scope,
|
|
72
|
+
audience: cliConfig.audience
|
|
73
|
+
});
|
|
74
|
+
const deviceAuthResponse = await axios.post(cliConfig.deviceCodeAuthUrl, {
|
|
75
|
+
client_id: cliConfig.clientId,
|
|
76
|
+
scope: cliConfig.scope,
|
|
77
|
+
audience: cliConfig.audience
|
|
78
|
+
}).catch((e)=>{
|
|
79
|
+
logger.error('There was an issue with the authentication process. Please try again.');
|
|
80
|
+
if (e.message) {
|
|
81
|
+
logger.debug(e.message, e);
|
|
82
|
+
} else {
|
|
83
|
+
logger.debug(e);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
openModule.then((open)=>{
|
|
87
|
+
open.default(deviceAuthResponse.data.verification_uri_complete).catch((e)=>{
|
|
88
|
+
logger.error('We encountered an issue opening the browser. Please try again later.');
|
|
89
|
+
logger.debug(e.message, e);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
logger.log('If a browser tab does not open automatically, please follow the next steps:');
|
|
93
|
+
logger.log(`1. Open this url in your device: ${deviceAuthResponse.data.verification_uri_complete}`);
|
|
94
|
+
logger.log(`2. Enter the following code: ${deviceAuthResponse.data.user_code} and confirm to login.\n`);
|
|
95
|
+
const tokenPayload = {
|
|
96
|
+
grant_type: 'urn:ietf:params:oauth:grant-type:device_code',
|
|
97
|
+
device_code: deviceAuthResponse.data.device_code,
|
|
98
|
+
client_id: cliConfig.clientId
|
|
99
|
+
};
|
|
100
|
+
let isAuthenticated = false;
|
|
101
|
+
const authenticate = async ()=>{
|
|
102
|
+
const spinner = logger.spinner('Waiting for authentication');
|
|
103
|
+
spinner.start();
|
|
104
|
+
const spinnerFail = ()=>spinner.fail('Authentication failed!');
|
|
105
|
+
while(!isAuthenticated){
|
|
106
|
+
try {
|
|
107
|
+
const tokenResponse = await axios.post(cliConfig.tokenUrl, tokenPayload);
|
|
108
|
+
const authTokenData = tokenResponse.data;
|
|
109
|
+
if (tokenResponse.status === 200) {
|
|
110
|
+
// Token validation
|
|
111
|
+
try {
|
|
112
|
+
logger.debug('🔐 Validating token...');
|
|
113
|
+
await tokenService.validateToken(authTokenData.id_token, cliConfig.jwksUrl);
|
|
114
|
+
logger.debug('🔐 Token validation successful!');
|
|
115
|
+
} catch (e) {
|
|
116
|
+
logger.debug(e);
|
|
117
|
+
spinnerFail();
|
|
118
|
+
throw new Error('Unable to proceed: Token validation failed');
|
|
119
|
+
}
|
|
120
|
+
logger.debug('🔍 Fetching user information...');
|
|
121
|
+
const cloudApiServiceWithToken = await cliApi.cloudApiFactory(ctx, authTokenData.access_token);
|
|
122
|
+
// Call to get user info to create the user in DB if not exists
|
|
123
|
+
await cloudApiServiceWithToken.getUserInfo();
|
|
124
|
+
logger.debug('🔍 User information fetched successfully!');
|
|
125
|
+
try {
|
|
126
|
+
logger.debug('📝 Saving login information...');
|
|
127
|
+
await tokenService.saveToken(authTokenData.access_token);
|
|
128
|
+
logger.debug('📝 Login information saved successfully!');
|
|
129
|
+
isAuthenticated = true;
|
|
130
|
+
} catch (e) {
|
|
131
|
+
logger.error('There was a problem saving your login information. Please try logging in again.');
|
|
132
|
+
logger.debug(e);
|
|
133
|
+
spinnerFail();
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
} catch (e) {
|
|
138
|
+
if (e.message === 'Unable to proceed: Token validation failed') {
|
|
139
|
+
logger.error('There seems to be a problem with your login information. Please try logging in again.');
|
|
140
|
+
spinnerFail();
|
|
141
|
+
await analytics.trackEvent(ctx, cloudApiService, 'didNotLogin', {
|
|
142
|
+
loginMethod: 'cli'
|
|
143
|
+
});
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
if (e.response?.data.error && ![
|
|
147
|
+
'authorization_pending',
|
|
148
|
+
'slow_down'
|
|
149
|
+
].includes(e.response.data.error)) {
|
|
150
|
+
logger.debug(e);
|
|
151
|
+
spinnerFail();
|
|
152
|
+
await analytics.trackEvent(ctx, cloudApiService, 'didNotLogin', {
|
|
153
|
+
loginMethod: 'cli'
|
|
154
|
+
});
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
// Await interval before retrying
|
|
158
|
+
await new Promise((resolve)=>{
|
|
159
|
+
setTimeout(resolve, deviceAuthResponse.data.interval * 1000);
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
spinner.succeed('Authentication successful!');
|
|
164
|
+
logger.log('You are now logged into Strapi Cloud.');
|
|
165
|
+
logger.log('To access your dashboard, please copy and paste the following URL into your web browser:');
|
|
166
|
+
logger.log(chalk.underline(`${api.apiConfig.dashboardBaseUrl}/projects`));
|
|
167
|
+
await analytics.trackEvent(ctx, cloudApiService, 'didLogin', {
|
|
168
|
+
loginMethod: 'cli'
|
|
169
|
+
});
|
|
170
|
+
};
|
|
171
|
+
await authenticate();
|
|
172
|
+
return isAuthenticated;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
exports.default = loginAction;
|
|
176
|
+
exports.promptLogin = promptLogin;
|
|
177
|
+
//# sourceMappingURL=action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.js","sources":["../../src/login/action.ts"],"sourcesContent":["import axios, { AxiosResponse, AxiosError } from 'axios';\nimport chalk from 'chalk';\nimport inquirer from 'inquirer';\nimport { tokenServiceFactory, cloudApiFactory } from '../services';\nimport type { CloudCliConfig, CLIContext } from '../types';\nimport { apiConfig } from '../config/api';\nimport { trackEvent } from '../utils/analytics';\n\nconst openModule = import('open');\n\nexport async function promptLogin(ctx: CLIContext) {\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(ctx: CLIContext): Promise<boolean> {\n const { logger } = 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 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 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 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 to the Strapi Cloud API...');\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\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', { loginMethod: 'cli' });\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', { loginMethod: 'cli' });\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 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 await trackEvent(ctx, cloudApiService, 'didLogin', { loginMethod: 'cli' });\n };\n\n await authenticate();\n return isAuthenticated;\n}\n"],"names":["openModule","promptLogin","ctx","response","inquirer","prompt","type","name","message","login","loginSuccessful","loginAction","logger","tokenService","tokenServiceFactory","existingToken","retrieveToken","cloudApiService","cloudApiFactory","undefined","isTokenValid","userInfo","getUserInfo","email","data","log","chalk","underline","apiConfig","dashboardBaseUrl","e","debug","cliConfig","info","config","error","trackEvent","client_id","clientId","scope","audience","deviceAuthResponse","axios","post","deviceCodeAuthUrl","catch","then","open","default","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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"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import inquirer from 'inquirer';
|
|
4
|
+
import { cloudApiFactory } from '../services/cli-api.mjs';
|
|
5
|
+
import 'fs-extra';
|
|
6
|
+
import 'path';
|
|
7
|
+
import 'lodash';
|
|
8
|
+
import { tokenServiceFactory } from '../services/token.mjs';
|
|
9
|
+
import 'fast-safe-stringify';
|
|
10
|
+
import 'ora';
|
|
11
|
+
import 'cli-progress';
|
|
12
|
+
import { apiConfig } from '../config/api.mjs';
|
|
13
|
+
import { trackEvent } from '../utils/analytics.mjs';
|
|
14
|
+
|
|
15
|
+
const openModule = import('open');
|
|
16
|
+
async function promptLogin(ctx) {
|
|
17
|
+
const response = await inquirer.prompt([
|
|
18
|
+
{
|
|
19
|
+
type: 'confirm',
|
|
20
|
+
name: 'login',
|
|
21
|
+
message: 'Would you like to login?'
|
|
22
|
+
}
|
|
23
|
+
]);
|
|
24
|
+
if (response.login) {
|
|
25
|
+
const loginSuccessful = await loginAction(ctx);
|
|
26
|
+
return loginSuccessful;
|
|
27
|
+
}
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
async function loginAction(ctx) {
|
|
31
|
+
const { logger } = ctx;
|
|
32
|
+
const tokenService = await tokenServiceFactory(ctx);
|
|
33
|
+
const existingToken = await tokenService.retrieveToken();
|
|
34
|
+
const cloudApiService = await cloudApiFactory(ctx, existingToken || undefined);
|
|
35
|
+
if (existingToken) {
|
|
36
|
+
const isTokenValid = await tokenService.isTokenValid(existingToken);
|
|
37
|
+
if (isTokenValid) {
|
|
38
|
+
try {
|
|
39
|
+
const userInfo = await cloudApiService.getUserInfo();
|
|
40
|
+
const { email } = userInfo.data.data;
|
|
41
|
+
if (email) {
|
|
42
|
+
logger.log(`You are already logged into your account (${email}).`);
|
|
43
|
+
} else {
|
|
44
|
+
logger.log('You are already logged in.');
|
|
45
|
+
}
|
|
46
|
+
logger.log('To access your dashboard, please copy and paste the following URL into your web browser:');
|
|
47
|
+
logger.log(chalk.underline(`${apiConfig.dashboardBaseUrl}/projects`));
|
|
48
|
+
return true;
|
|
49
|
+
} catch (e) {
|
|
50
|
+
logger.debug('Failed to fetch user info', e);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
let cliConfig;
|
|
55
|
+
try {
|
|
56
|
+
logger.info('🔌 Connecting to the Strapi Cloud API...');
|
|
57
|
+
const config = await cloudApiService.config();
|
|
58
|
+
cliConfig = config.data;
|
|
59
|
+
} catch (e) {
|
|
60
|
+
logger.error('🥲 Oops! Something went wrong while logging you in. Please try again.');
|
|
61
|
+
logger.debug(e);
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
await trackEvent(ctx, cloudApiService, 'willLoginAttempt', {});
|
|
65
|
+
logger.debug('🔐 Creating device authentication request...', {
|
|
66
|
+
client_id: cliConfig.clientId,
|
|
67
|
+
scope: cliConfig.scope,
|
|
68
|
+
audience: cliConfig.audience
|
|
69
|
+
});
|
|
70
|
+
const deviceAuthResponse = await axios.post(cliConfig.deviceCodeAuthUrl, {
|
|
71
|
+
client_id: cliConfig.clientId,
|
|
72
|
+
scope: cliConfig.scope,
|
|
73
|
+
audience: cliConfig.audience
|
|
74
|
+
}).catch((e)=>{
|
|
75
|
+
logger.error('There was an issue with the authentication process. Please try again.');
|
|
76
|
+
if (e.message) {
|
|
77
|
+
logger.debug(e.message, e);
|
|
78
|
+
} else {
|
|
79
|
+
logger.debug(e);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
openModule.then((open)=>{
|
|
83
|
+
open.default(deviceAuthResponse.data.verification_uri_complete).catch((e)=>{
|
|
84
|
+
logger.error('We encountered an issue opening the browser. Please try again later.');
|
|
85
|
+
logger.debug(e.message, e);
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
logger.log('If a browser tab does not open automatically, please follow the next steps:');
|
|
89
|
+
logger.log(`1. Open this url in your device: ${deviceAuthResponse.data.verification_uri_complete}`);
|
|
90
|
+
logger.log(`2. Enter the following code: ${deviceAuthResponse.data.user_code} and confirm to login.\n`);
|
|
91
|
+
const tokenPayload = {
|
|
92
|
+
grant_type: 'urn:ietf:params:oauth:grant-type:device_code',
|
|
93
|
+
device_code: deviceAuthResponse.data.device_code,
|
|
94
|
+
client_id: cliConfig.clientId
|
|
95
|
+
};
|
|
96
|
+
let isAuthenticated = false;
|
|
97
|
+
const authenticate = async ()=>{
|
|
98
|
+
const spinner = logger.spinner('Waiting for authentication');
|
|
99
|
+
spinner.start();
|
|
100
|
+
const spinnerFail = ()=>spinner.fail('Authentication failed!');
|
|
101
|
+
while(!isAuthenticated){
|
|
102
|
+
try {
|
|
103
|
+
const tokenResponse = await axios.post(cliConfig.tokenUrl, tokenPayload);
|
|
104
|
+
const authTokenData = tokenResponse.data;
|
|
105
|
+
if (tokenResponse.status === 200) {
|
|
106
|
+
// Token validation
|
|
107
|
+
try {
|
|
108
|
+
logger.debug('🔐 Validating token...');
|
|
109
|
+
await tokenService.validateToken(authTokenData.id_token, cliConfig.jwksUrl);
|
|
110
|
+
logger.debug('🔐 Token validation successful!');
|
|
111
|
+
} catch (e) {
|
|
112
|
+
logger.debug(e);
|
|
113
|
+
spinnerFail();
|
|
114
|
+
throw new Error('Unable to proceed: Token validation failed');
|
|
115
|
+
}
|
|
116
|
+
logger.debug('🔍 Fetching user information...');
|
|
117
|
+
const cloudApiServiceWithToken = await cloudApiFactory(ctx, authTokenData.access_token);
|
|
118
|
+
// Call to get user info to create the user in DB if not exists
|
|
119
|
+
await cloudApiServiceWithToken.getUserInfo();
|
|
120
|
+
logger.debug('🔍 User information fetched successfully!');
|
|
121
|
+
try {
|
|
122
|
+
logger.debug('📝 Saving login information...');
|
|
123
|
+
await tokenService.saveToken(authTokenData.access_token);
|
|
124
|
+
logger.debug('📝 Login information saved successfully!');
|
|
125
|
+
isAuthenticated = true;
|
|
126
|
+
} catch (e) {
|
|
127
|
+
logger.error('There was a problem saving your login information. Please try logging in again.');
|
|
128
|
+
logger.debug(e);
|
|
129
|
+
spinnerFail();
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
} catch (e) {
|
|
134
|
+
if (e.message === 'Unable to proceed: Token validation failed') {
|
|
135
|
+
logger.error('There seems to be a problem with your login information. Please try logging in again.');
|
|
136
|
+
spinnerFail();
|
|
137
|
+
await trackEvent(ctx, cloudApiService, 'didNotLogin', {
|
|
138
|
+
loginMethod: 'cli'
|
|
139
|
+
});
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
if (e.response?.data.error && ![
|
|
143
|
+
'authorization_pending',
|
|
144
|
+
'slow_down'
|
|
145
|
+
].includes(e.response.data.error)) {
|
|
146
|
+
logger.debug(e);
|
|
147
|
+
spinnerFail();
|
|
148
|
+
await trackEvent(ctx, cloudApiService, 'didNotLogin', {
|
|
149
|
+
loginMethod: 'cli'
|
|
150
|
+
});
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
// Await interval before retrying
|
|
154
|
+
await new Promise((resolve)=>{
|
|
155
|
+
setTimeout(resolve, deviceAuthResponse.data.interval * 1000);
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
spinner.succeed('Authentication successful!');
|
|
160
|
+
logger.log('You are now logged into Strapi Cloud.');
|
|
161
|
+
logger.log('To access your dashboard, please copy and paste the following URL into your web browser:');
|
|
162
|
+
logger.log(chalk.underline(`${apiConfig.dashboardBaseUrl}/projects`));
|
|
163
|
+
await trackEvent(ctx, cloudApiService, 'didLogin', {
|
|
164
|
+
loginMethod: 'cli'
|
|
165
|
+
});
|
|
166
|
+
};
|
|
167
|
+
await authenticate();
|
|
168
|
+
return isAuthenticated;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export { loginAction as default, promptLogin };
|
|
172
|
+
//# sourceMappingURL=action.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.mjs","sources":["../../src/login/action.ts"],"sourcesContent":["import axios, { AxiosResponse, AxiosError } from 'axios';\nimport chalk from 'chalk';\nimport inquirer from 'inquirer';\nimport { tokenServiceFactory, cloudApiFactory } from '../services';\nimport type { CloudCliConfig, CLIContext } from '../types';\nimport { apiConfig } from '../config/api';\nimport { trackEvent } from '../utils/analytics';\n\nconst openModule = import('open');\n\nexport async function promptLogin(ctx: CLIContext) {\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(ctx: CLIContext): Promise<boolean> {\n const { logger } = 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 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 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 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 to the Strapi Cloud API...');\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\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', { loginMethod: 'cli' });\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', { loginMethod: 'cli' });\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 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 await trackEvent(ctx, cloudApiService, 'didLogin', { loginMethod: 'cli' });\n };\n\n await authenticate();\n return isAuthenticated;\n}\n"],"names":["openModule","promptLogin","ctx","response","inquirer","prompt","type","name","message","login","loginSuccessful","loginAction","logger","tokenService","tokenServiceFactory","existingToken","retrieveToken","cloudApiService","cloudApiFactory","undefined","isTokenValid","userInfo","getUserInfo","email","data","log","chalk","underline","apiConfig","dashboardBaseUrl","e","debug","cliConfig","info","config","error","trackEvent","client_id","clientId","scope","audience","deviceAuthResponse","axios","post","deviceCodeAuthUrl","catch","then","open","default","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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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/login/command.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAInD;;GAEG;AACH,QAAA,MAAM,OAAO,EAAE,kBAWd,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var commander = require('commander');
|
|
4
|
+
var helpers = require('../utils/helpers.js');
|
|
5
|
+
var action = require('./action.js');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* `$ cloud device flow login`
|
|
9
|
+
*/ const command = ({ ctx })=>{
|
|
10
|
+
return commander.createCommand('cloud:login').alias('login').description('Strapi Cloud Login').addHelpText('after', '\nAfter running this command, you will be prompted to enter your authentication information.').option('-d, --debug', 'Enable debugging mode with verbose logs').option('-s, --silent', "Don't log anything").action(()=>helpers.runAction('login', action.default)(ctx));
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
module.exports = command;
|
|
14
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.js","sources":["../../src/login/command.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport type { StrapiCloudCommand } from '../types';\nimport { runAction } from '../utils/helpers';\nimport action from './action';\n\n/**\n * `$ cloud device flow login`\n */\nconst command: StrapiCloudCommand = ({ ctx }) => {\n return createCommand('cloud:login')\n .alias('login')\n .description('Strapi Cloud Login')\n .addHelpText(\n 'after',\n '\\nAfter running this command, you will be prompted to enter your authentication information.'\n )\n .option('-d, --debug', 'Enable debugging mode with verbose logs')\n .option('-s, --silent', \"Don't log anything\")\n .action(() => runAction('login', action)(ctx));\n};\n\nexport default command;\n"],"names":["command","ctx","createCommand","alias","description","addHelpText","option","action","runAction"],"mappings":";;;;;;AAKA;;AAEC,IACKA,MAAAA,OAAAA,GAA8B,CAAC,EAAEC,GAAG,EAAE,GAAA;IAC1C,OAAOC,uBAAAA,CAAc,aAClBC,CAAAA,CAAAA,KAAK,CAAC,OAAA,CAAA,CACNC,WAAW,CAAC,oBAAA,CAAA,CACZC,WAAW,CACV,OACA,EAAA,8FAAA,CAAA,CAEDC,MAAM,CAAC,aAAA,EAAe,yCACtBA,CAAAA,CAAAA,MAAM,CAAC,cAAA,EAAgB,oBACvBC,CAAAA,CAAAA,MAAM,CAAC,IAAMC,iBAAU,CAAA,OAAA,EAASD,cAAQN,CAAAA,CAAAA,GAAAA,CAAAA,CAAAA;AAC7C;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createCommand } from 'commander';
|
|
2
|
+
import { runAction } from '../utils/helpers.mjs';
|
|
3
|
+
import loginAction from './action.mjs';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* `$ cloud device flow login`
|
|
7
|
+
*/ const command = ({ ctx })=>{
|
|
8
|
+
return createCommand('cloud:login').alias('login').description('Strapi Cloud Login').addHelpText('after', '\nAfter running this command, you will be prompted to enter your authentication information.').option('-d, --debug', 'Enable debugging mode with verbose logs').option('-s, --silent', "Don't log anything").action(()=>runAction('login', loginAction)(ctx));
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export { command as default };
|
|
12
|
+
//# sourceMappingURL=command.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.mjs","sources":["../../src/login/command.ts"],"sourcesContent":["import { createCommand } from 'commander';\nimport type { StrapiCloudCommand } from '../types';\nimport { runAction } from '../utils/helpers';\nimport action from './action';\n\n/**\n * `$ cloud device flow login`\n */\nconst command: StrapiCloudCommand = ({ ctx }) => {\n return createCommand('cloud:login')\n .alias('login')\n .description('Strapi Cloud Login')\n .addHelpText(\n 'after',\n '\\nAfter running this command, you will be prompted to enter your authentication information.'\n )\n .option('-d, --debug', 'Enable debugging mode with verbose logs')\n .option('-s, --silent', \"Don't log anything\")\n .action(() => runAction('login', action)(ctx));\n};\n\nexport default command;\n"],"names":["command","ctx","createCommand","alias","description","addHelpText","option","action","runAction"],"mappings":";;;;AAKA;;AAEC,IACKA,MAAAA,OAAAA,GAA8B,CAAC,EAAEC,GAAG,EAAE,GAAA;IAC1C,OAAOC,aAAAA,CAAc,aAClBC,CAAAA,CAAAA,KAAK,CAAC,OAAA,CAAA,CACNC,WAAW,CAAC,oBAAA,CAAA,CACZC,WAAW,CACV,OACA,EAAA,8FAAA,CAAA,CAEDC,MAAM,CAAC,aAAA,EAAe,yCACtBA,CAAAA,CAAAA,MAAM,CAAC,cAAA,EAAgB,oBACvBC,CAAAA,CAAAA,MAAM,CAAC,IAAMC,SAAU,CAAA,OAAA,EAASD,WAAQN,CAAAA,CAAAA,GAAAA,CAAAA,CAAAA;AAC7C;;;;"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var action = require('./action.js');
|
|
6
|
+
var command = require('./command.js');
|
|
7
|
+
|
|
8
|
+
var login = {
|
|
9
|
+
name: 'login',
|
|
10
|
+
description: 'Strapi Cloud Login',
|
|
11
|
+
action: action.default,
|
|
12
|
+
command
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
exports.action = action.default;
|
|
16
|
+
exports.command = command;
|
|
17
|
+
exports.default = login;
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/login/index.ts"],"sourcesContent":["import action from './action';\nimport command from './command';\nimport type { StrapiCloudCommandInfo } from '../types';\n\nexport { action, command };\n\nexport default {\n name: 'login',\n description: 'Strapi Cloud Login',\n action,\n command,\n} as StrapiCloudCommandInfo;\n"],"names":["name","description","action","command"],"mappings":";;;;;;;AAMA,YAAe;IACbA,IAAM,EAAA,OAAA;IACNC,WAAa,EAAA,oBAAA;AACbC,YAAAA,cAAAA;AACAC,IAAAA;AACF,CAA4B;;;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import loginAction from './action.mjs';
|
|
2
|
+
import command from './command.mjs';
|
|
3
|
+
|
|
4
|
+
var login = {
|
|
5
|
+
name: 'login',
|
|
6
|
+
description: 'Strapi Cloud Login',
|
|
7
|
+
action: loginAction,
|
|
8
|
+
command
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export { loginAction as action, command, login as default };
|
|
12
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/login/index.ts"],"sourcesContent":["import action from './action';\nimport command from './command';\nimport type { StrapiCloudCommandInfo } from '../types';\n\nexport { action, command };\n\nexport default {\n name: 'login',\n description: 'Strapi Cloud Login',\n action,\n command,\n} as StrapiCloudCommandInfo;\n"],"names":["name","description","action","command"],"mappings":";;;AAMA,YAAe;IACbA,IAAM,EAAA,OAAA;IACNC,WAAa,EAAA,oBAAA;AACbC,YAAAA,WAAAA;AACAC,IAAAA;AACF,CAA4B;;;;"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var cliApi = require('../services/cli-api.js');
|
|
4
|
+
require('fs-extra');
|
|
5
|
+
require('path');
|
|
6
|
+
require('lodash');
|
|
7
|
+
var token = require('../services/token.js');
|
|
8
|
+
require('chalk');
|
|
9
|
+
require('fast-safe-stringify');
|
|
10
|
+
require('ora');
|
|
11
|
+
require('cli-progress');
|
|
12
|
+
var analytics = require('../utils/analytics.js');
|
|
13
|
+
|
|
14
|
+
const openModule = import('open');
|
|
15
|
+
var action = (async (ctx)=>{
|
|
16
|
+
const { logger } = ctx;
|
|
17
|
+
const { retrieveToken, eraseToken } = await token.tokenServiceFactory(ctx);
|
|
18
|
+
const token$1 = await retrieveToken();
|
|
19
|
+
if (!token$1) {
|
|
20
|
+
logger.log("You're already logged out.");
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const cloudApiService = await cliApi.cloudApiFactory(ctx, token$1);
|
|
24
|
+
const config = await cloudApiService.config();
|
|
25
|
+
const cliConfig = config.data;
|
|
26
|
+
try {
|
|
27
|
+
await eraseToken();
|
|
28
|
+
openModule.then((open)=>{
|
|
29
|
+
open.default(`${cliConfig.baseUrl}/oidc/logout?client_id=${encodeURIComponent(cliConfig.clientId)}&logout_hint=${encodeURIComponent(token$1)}
|
|
30
|
+
`).catch((e)=>{
|
|
31
|
+
// Failing to open the logout URL is not a critical error, so we just log it
|
|
32
|
+
logger.debug(e.message, e);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
logger.log('🔌 You have been logged out from the CLI. If you are on a shared computer, please make sure to log out from the Strapi Cloud Dashboard as well.');
|
|
36
|
+
} catch (e) {
|
|
37
|
+
logger.error('🥲 Oops! Something went wrong while logging you out. Please try again.');
|
|
38
|
+
logger.debug(e);
|
|
39
|
+
}
|
|
40
|
+
await analytics.trackEvent(ctx, cloudApiService, 'didLogout', {
|
|
41
|
+
loginMethod: 'cli'
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
module.exports = action;
|
|
46
|
+
//# sourceMappingURL=action.js.map
|