@serverless-devs/s 2.2.2 → 3.0.0-85afd68d

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 (56) hide show
  1. package/lib/daemon/lib.js +327 -0
  2. package/lib/daemon/report.js +50 -0
  3. package/lib/daemon/update-cli.js +20 -0
  4. package/lib/daemon/update-component.js +21 -0
  5. package/lib/daemon/update-templates.js +19 -0
  6. package/lib/index.js +1677 -246
  7. package/package.json +62 -48
  8. package/readme.md +2 -2
  9. package/lib/check-node-version/index.js +0 -15
  10. package/lib/clean/index.js +0 -166
  11. package/lib/cli/index.js +0 -223
  12. package/lib/component/index.js +0 -286
  13. package/lib/config/add/index.js +0 -190
  14. package/lib/config/common/common.js +0 -194
  15. package/lib/config/delete/index.js +0 -121
  16. package/lib/config/get/index.js +0 -130
  17. package/lib/config/index.js +0 -39
  18. package/lib/config/rename/index.js +0 -132
  19. package/lib/constant.js +0 -8
  20. package/lib/daemon/template.js +0 -20
  21. package/lib/daemon/update.js +0 -9
  22. package/lib/edit/index.js +0 -104
  23. package/lib/error/command-error.js +0 -29
  24. package/lib/error/config-delete-error.js +0 -29
  25. package/lib/error/config-error.js +0 -29
  26. package/lib/error/config-get-error.js +0 -29
  27. package/lib/error/human-error.js +0 -76
  28. package/lib/error/human-warning.js +0 -20
  29. package/lib/error/index.js +0 -147
  30. package/lib/error/init-error.js +0 -29
  31. package/lib/error/serverless-error.js +0 -19
  32. package/lib/execDaemon.js +0 -35
  33. package/lib/global-agent/index.js +0 -22
  34. package/lib/help/index.js +0 -158
  35. package/lib/init/index.js +0 -106
  36. package/lib/init/init-config.js +0 -606
  37. package/lib/init/init-manager.js +0 -223
  38. package/lib/onboarding/index.js +0 -111
  39. package/lib/set/analysis/index.js +0 -118
  40. package/lib/set/index.js +0 -40
  41. package/lib/set/locale/index.js +0 -118
  42. package/lib/set/log/index.js +0 -118
  43. package/lib/set/proxy/index.js +0 -123
  44. package/lib/set/registry/index.js +0 -146
  45. package/lib/set/workspace/index.js +0 -119
  46. package/lib/special-commad/index.js +0 -156
  47. package/lib/update-notifier/index.js +0 -137
  48. package/lib/utils/common.js +0 -347
  49. package/lib/utils/core.js +0 -49
  50. package/lib/utils/handler-set-config.js +0 -130
  51. package/lib/utils/i18n/en.js +0 -46
  52. package/lib/utils/i18n/index.js +0 -16
  53. package/lib/utils/i18n/zh.js +0 -46
  54. package/lib/utils/index.js +0 -39
  55. package/lib/utils/logger.js +0 -12
  56. package/lib/verify/index.js +0 -224
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serverless-devs/s",
3
- "version": "2.2.2",
3
+ "version": "3.0.0-85afd68d",
4
4
  "description": "Serverless devs tool, serverless developer tool, supports Alibaba cloud, AWS, azure, baidu cloud, Huawei cloud, Google cloud and Tencent cloud.",
5
5
  "homepage": "https://www.serverless-devs.com",
6
6
  "keywords": [
@@ -29,62 +29,76 @@
29
29
  },
30
30
  "scripts": {
31
31
  "start": "npm run watch",
32
- "prewatch": "rm -rf lib/* && cp -r ./src/daemon ./lib",
33
- "watch": "tsc -w",
34
- "test": "jest test/special-command.test",
35
- "prebuild": "rm -rf lib/*",
36
- "build": "tsc && cp -r ./src/daemon ./lib",
37
- "postbuild": "esbuild lib/index.js --bundle --log-level=error --minify --external:@serverless-devs/core --external:@serverless-devs/ui --platform=node --format=cjs --target=node10.4 --allow-overwrite --outfile=lib/index.js",
38
- "test:cov": "jest --coverage",
39
- "lint": "npm run typecheck && f2elint scan -i src",
40
- "fix": "f2elint fix",
41
- "typecheck": "npx tsc -p tsconfig.json --noEmit",
42
- "update": "rm -rf yarn.lock && rm -rf package-lock.json && rm -rf node_modules && yarn",
32
+ "test": "jest --testTimeout 10000",
33
+ "test:watch": "jest --testTimeout 10000 --watchAll",
34
+ "format": "prettier --write src/ __tests__/**/*.test.ts",
35
+ "watch": "npm run build -- --watch",
36
+ "prebuild": "rm -rf node_modules && npm install --production false",
37
+ "build": "node ./scripts/build.js",
38
+ "pkg": "pkg . --out-path releases",
39
+ "prepublishOnly": "npm run build",
43
40
  "beta": "npm publish --tag=beta",
44
- "pkg": "tsc && pkg bin/s"
41
+ "pub": "npm publish"
42
+ },
43
+ "pkg": {
44
+ "scripts": [
45
+ "./lib/daemon/**/*.js"
46
+ ]
45
47
  },
46
48
  "main": "./lib/index.js",
47
49
  "bin": {
48
50
  "s": "bin/s"
49
51
  },
52
+ "engines": {
53
+ "node": ">=14.14.0"
54
+ },
50
55
  "devDependencies": {
51
- "@serverless-devs/commander": "^6.2.6",
52
- "@serverless-devs/utils": "^0.0.4",
53
- "@types/jest": "^27.4.0",
54
- "@types/node": "^18.16.1",
55
- "@typescript-eslint/eslint-plugin": "^4.14.1",
56
- "@typescript-eslint/parser": "^4.14.1",
57
- "ajv": "^8.10.0",
58
- "babel-eslint": "^10.1.0",
59
- "boxen": "^5.0.0",
60
- "dotenv": "^10.0.0",
61
- "esbuild": "^0.14.0",
62
- "eslint": "^7.7.0",
63
- "eslint-config-prettier": "^7.2.0",
64
- "eslint-plugin-import": "^2.20.1",
65
- "eslint-plugin-prettier": "^3.1.2",
56
+ "@serverless-devs/core": "^0.1.66",
57
+ "@serverless-devs/credential": "^0.0.3",
58
+ "@serverless-devs/engine": "^0.0.25",
59
+ "@serverless-devs/load-application": "^0.0.10",
60
+ "@serverless-devs/load-component": "^0.0.6",
61
+ "@serverless-devs/logger": "^0.0.4",
62
+ "@serverless-devs/parse-spec": "^0.0.21",
63
+ "@serverless-devs/registry": "^0.0.4",
64
+ "@serverless-devs/utils": "^0.0.14",
65
+ "@types/fs-extra": "^11.0.4",
66
+ "@types/inquirer": "^9.0.7",
67
+ "@types/jest": "^29.5.8",
68
+ "@types/js-yaml": "^4.0.9",
69
+ "@types/lodash": "^4.14.201",
70
+ "@types/node": "^20.9.1",
71
+ "@types/semver": "^7.5.5",
72
+ "ajv": "^8.12.0",
73
+ "axios": "^1.6.2",
74
+ "boxen": "^7.1.1",
75
+ "chalk": "^5.3.0",
76
+ "commander": "^11.1.0",
77
+ "dotenv": "^16.3.1",
78
+ "dotenv-expand": "^10.0.0",
79
+ "esbuild": "^0.19.5",
80
+ "fs-extra": "^11.1.1",
66
81
  "global-agent": "^3.0.0",
67
- "husky": "^4.2.3",
68
- "inquirer": "8.2.0",
69
- "inquirer-autocomplete-prompt": "^1.3.0",
70
- "jest": "^29.5.0",
71
- "latest-version": "^5.1.0",
72
- "lint-staged": "^10.0.8",
73
- "open": "^8.4.0",
74
- "os-locale": "5.0.0",
75
- "pkg": "^5.8.0",
76
- "prettier": "^2.2.1",
77
- "semver": "^7.3.5",
78
- "semver-diff": "^3.1.1",
79
- "ts-jest": "^29.1.0",
80
- "ts-node": "^9.1.1",
81
- "typescript": "^5.0.4"
82
+ "inquirer": "^9.2.12",
83
+ "inquirer-autocomplete-prompt": "^3.0.1",
84
+ "jest": "^29.7.0",
85
+ "js-yaml": "^4.1.0",
86
+ "latest-version": "^7.0.0",
87
+ "leven": "^4.0.0",
88
+ "lodash": "^4.17.21",
89
+ "pkg": "^5.8.1",
90
+ "prettier": "^3.1.0",
91
+ "prettyjson": "^1.2.5",
92
+ "rimraf": "^5.0.5",
93
+ "semver": "^7.5.4",
94
+ "semver-diff": "^4.0.0",
95
+ "table-layout": "^3.0.2",
96
+ "ts-jest": "^29.1.1",
97
+ "ts-node": "^10.9.1",
98
+ "typescript": "^5.2.2",
99
+ "strip-ansi": "^7.1.0"
82
100
  },
83
101
  "lint-staged": {
84
102
  "**/*.{js,jsx,ts}": "f2elint exec eslint"
85
- },
86
- "dependencies": {
87
- "@serverless-devs/core": "^0.1.65",
88
- "@serverless-devs/ui": "latest"
89
103
  }
90
- }
104
+ }
package/readme.md CHANGED
@@ -46,11 +46,11 @@ $ npm install @serverless-devs/s -g
46
46
  ```
47
47
  ❸ 在命令行中执行命令`s`,并按回车,开启你的 Serverless 之旅;
48
48
 
49
- > 更多详细信息可以参考[Serverless Devs 安装文档](./docs/zh/install.md)和[快速入门指南](./docs/zh/quick_start.md)
49
+ > 更多详细信息可以参考[Serverless Devs 安装文档](./docs/zh/quick_start.md)和[快速入门指南](./docs/zh/quick_start.md)
50
50
 
51
51
  # 帮助文档
52
52
 
53
- - [安装文档](./docs/zh/install.md)
53
+ - [安装文档](./docs/zh/quick_start.md)
54
54
  - [命令行操作](./docs/zh/command/readme.md)
55
55
  - [Yaml规范](./docs/zh/yaml.md)
56
56
  - [配置继承/多环境](./docs/zh/extend.md)
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var error_1 = require("../error");
4
- function checkNodeVersion() {
5
- var nodeVersion = Number(process.version.split('.')[0].slice(1));
6
- if (nodeVersion < 12) {
7
- new error_1.HumanError({
8
- errorMessage: 'Node.js version must be greater than or equal to 12.0.0',
9
- tips: "Your current Node.js version is ".concat(process.version, ", please upgrade your Node.js version at https://nodejs.org/en/."),
10
- });
11
- process.exit(1);
12
- }
13
- }
14
- exports.default = checkNodeVersion;
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hlY2stbm9kZS12ZXJzaW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsa0NBQXNDO0FBRXRDLFNBQVMsZ0JBQWdCO0lBQ3ZCLElBQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRSxJQUFJLFdBQVcsR0FBRyxFQUFFLEVBQUU7UUFDcEIsSUFBSSxrQkFBVSxDQUFDO1lBQ2IsWUFBWSxFQUFFLHlEQUF5RDtZQUN2RSxJQUFJLEVBQUUsMENBQW1DLE9BQU8sQ0FBQyxPQUFPLHFFQUFrRTtTQUMzSCxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2pCO0FBQ0gsQ0FBQztBQUVELGtCQUFlLGdCQUFnQixDQUFDIn0=
@@ -1,166 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- var __importDefault = (this && this.__importDefault) || function (mod) {
39
- return (mod && mod.__esModule) ? mod : { "default": mod };
40
- };
41
- var core_1 = __importDefault(require("../utils/core"));
42
- var i18n_1 = __importDefault(require("../utils/i18n"));
43
- var path_1 = __importDefault(require("path"));
44
- var logger_1 = __importDefault(require("../utils/logger"));
45
- var handler_set_config_1 = require("../utils/handler-set-config");
46
- var common_1 = require("../utils/common");
47
- var error_1 = require("../error");
48
- var rimraf = core_1.default.rimraf, fs = core_1.default.fse, colors = core_1.default.colors, getRootHome = core_1.default.getRootHome;
49
- var description = "Clean up the cache related functions of serverless devs. You can clean up the environment, unused dependent packages and related cache contents through this command.\n \n Example:\n $ s clean --component fc-api\n $ s clean --all\n\n Tips:\n Get all installed component: s component\n\n".concat((0, common_1.emoji)('📖'), " Document: ").concat(colors.underline('https://github.com/Serverless-Devs/Serverless-Devs/tree/master/docs/zh/command/clean.md'));
50
- function run(program) {
51
- return __awaiter(this, void 0, void 0, function () {
52
- var command, doAction;
53
- var _this = this;
54
- return __generator(this, function (_a) {
55
- command = program
56
- .command('clean')
57
- .usage('[options]')
58
- .option('--all', (0, i18n_1.default)('clean_up_the_environment'))
59
- .option('--cache [dirName]', (0, i18n_1.default)('delete_the_file_under_the_cache'))
60
- .option('--component [componentName]', (0, i18n_1.default)('remove_components'))
61
- .helpOption('-h, --help', (0, i18n_1.default)('display_help_for_command'))
62
- .description(description)
63
- .addHelpCommand(false)
64
- .action(function (options) { return __awaiter(_this, void 0, void 0, function () {
65
- var error_2;
66
- return __generator(this, function (_a) {
67
- switch (_a.label) {
68
- case 0:
69
- _a.trys.push([0, 2, , 4]);
70
- return [4 /*yield*/, doAction(options)];
71
- case 1:
72
- _a.sent();
73
- return [3 /*break*/, 4];
74
- case 2:
75
- error_2 = _a.sent();
76
- return [4 /*yield*/, (0, error_1.HandleError)(error_2)];
77
- case 3:
78
- _a.sent();
79
- return [3 /*break*/, 4];
80
- case 4: return [2 /*return*/];
81
- }
82
- });
83
- }); });
84
- doAction = function (args) { return __awaiter(_this, void 0, void 0, function () {
85
- var sPath, cachePath, componentsPath, githubPath, devsappPath, files, spath, sdir, error_3, registry, filePath, filePath;
86
- return __generator(this, function (_a) {
87
- switch (_a.label) {
88
- case 0:
89
- sPath = getRootHome();
90
- cachePath = path_1.default.join(sPath, 'cache');
91
- componentsPath = path_1.default.join(sPath, 'components');
92
- githubPath = path_1.default.join(componentsPath, 'github.com');
93
- devsappPath = path_1.default.join(componentsPath, 'devsapp.cn');
94
- if (!args.all) return [3 /*break*/, 5];
95
- files = ['cache', 'components'];
96
- files.forEach(function (file) {
97
- rimraf.sync(path_1.default.join(sPath, file));
98
- });
99
- _a.label = 1;
100
- case 1:
101
- _a.trys.push([1, 3, , 4]);
102
- return [4 /*yield*/, core_1.default.getTemplatePath()];
103
- case 2:
104
- spath = _a.sent();
105
- sdir = path_1.default.join(path_1.default.dirname(spath), '.s');
106
- rimraf.sync(sdir);
107
- return [3 /*break*/, 4];
108
- case 3:
109
- error_3 = _a.sent();
110
- return [3 /*break*/, 4];
111
- case 4:
112
- logger_1.default.log('The environment of Serverless Devs has been cleaned up successfully.', 'green');
113
- return [2 /*return*/];
114
- case 5:
115
- if (args.cache) {
116
- // cache 无参数
117
- if (typeof args.cache === 'boolean') {
118
- rimraf.sync(path_1.default.join(cachePath));
119
- logger_1.default.log('Cache has been cleaned up successfully.', 'green');
120
- }
121
- // cache 有参数
122
- if (typeof args.cache === 'string') {
123
- rimraf.sync(path_1.default.join(cachePath, args.cache));
124
- logger_1.default.log("Cache [".concat(args.cache, "] has been cleaned up successfully."), 'green');
125
- }
126
- return [2 /*return*/];
127
- }
128
- if (args.component) {
129
- // component 无参数
130
- if (typeof args.component === 'boolean') {
131
- rimraf.sync(componentsPath);
132
- logger_1.default.log('Component has been cleaned up successfully.', 'green');
133
- }
134
- // component 有参数
135
- if (typeof args.component === 'string') {
136
- registry = (0, handler_set_config_1.getConfig)('registry');
137
- // s 源
138
- if (registry === 'http://registry.devsapp.cn/simple') {
139
- filePath = path_1.default.join(devsappPath, args.component);
140
- if (fs.existsSync(filePath)) {
141
- rimraf.sync(filePath);
142
- logger_1.default.log("Component [".concat(args.component, "] has been cleaned up successfully."), 'green');
143
- }
144
- }
145
- // git 源
146
- if (registry === 'https://api.github.com/repos') {
147
- filePath = path_1.default.join(githubPath, args.component);
148
- if (fs.existsSync(filePath)) {
149
- rimraf.sync(filePath);
150
- logger_1.default.log("Component [".concat(args.component, "] has been cleaned up successfully."), 'green');
151
- }
152
- }
153
- }
154
- return [2 /*return*/];
155
- }
156
- command.help();
157
- return [2 /*return*/];
158
- }
159
- });
160
- }); };
161
- return [2 /*return*/];
162
- });
163
- });
164
- }
165
- module.exports = run;
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xlYW4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUFpQztBQUNqQyx1REFBaUM7QUFDakMsOENBQXdCO0FBQ3hCLDJEQUFxQztBQUNyQyxrRUFBd0Q7QUFDeEQsMENBQXdDO0FBQ3hDLGtDQUF1QztBQUUvQixJQUFBLE1BQU0sR0FBbUMsY0FBSSxPQUF2QyxFQUFPLEVBQUUsR0FBMEIsY0FBSSxJQUE5QixFQUFFLE1BQU0sR0FBa0IsY0FBSSxPQUF0QixFQUFFLFdBQVcsR0FBSyxjQUFJLFlBQVQsQ0FBVTtBQUV0RCxJQUFNLFdBQVcsR0FBRyxxVUFTbEIsSUFBQSxjQUFLLEVBQUMsSUFBSSxDQUFDLHdCQUFjLE1BQU0sQ0FBQyxTQUFTLENBQ3pDLHlGQUF5RixDQUMxRixDQUFFLENBQUM7QUFFSixTQUFlLEdBQUcsQ0FBQyxPQUFPOzs7OztZQUNsQixPQUFPLEdBQUcsT0FBTztpQkFDcEIsT0FBTyxDQUFDLE9BQU8sQ0FBQztpQkFDaEIsS0FBSyxDQUFDLFdBQVcsQ0FBQztpQkFDbEIsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFBLGNBQUksRUFBQywwQkFBMEIsQ0FBQyxDQUFDO2lCQUNqRCxNQUFNLENBQUMsbUJBQW1CLEVBQUUsSUFBQSxjQUFJLEVBQUMsaUNBQWlDLENBQUMsQ0FBQztpQkFDcEUsTUFBTSxDQUFDLDZCQUE2QixFQUFFLElBQUEsY0FBSSxFQUFDLG1CQUFtQixDQUFDLENBQUM7aUJBQ2hFLFVBQVUsQ0FBQyxZQUFZLEVBQUUsSUFBQSxjQUFJLEVBQUMsMEJBQTBCLENBQUMsQ0FBQztpQkFDMUQsV0FBVyxDQUFDLFdBQVcsQ0FBQztpQkFDeEIsY0FBYyxDQUFDLEtBQUssQ0FBQztpQkFDckIsTUFBTSxDQUFDLFVBQU0sT0FBTzs7Ozs7OzRCQUVqQixxQkFB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
package/lib/cli/index.js DELETED
@@ -1,223 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- var __importDefault = (this && this.__importDefault) || function (mod) {
39
- return (mod && mod.__esModule) ? mod : { "default": mod };
40
- };
41
- var core_1 = __importDefault(require("../utils/core"));
42
- var path_1 = __importDefault(require("path"));
43
- var error_1 = require("../error");
44
- var utils_1 = require("../utils");
45
- var chalk = core_1.default.chalk, loadComponent = core_1.default.loadComponent, lodash = core_1.default.lodash;
46
- var underline = chalk.underline;
47
- var isEmpty = lodash.isEmpty, isString = lodash.isString, includes = lodash.includes;
48
- var description = "Directly use serverless devs to use components, develop and manage applications without yaml configuration.\n \n Example:\n $ s cli fc-api listServices\n $ s cli fc-api listFunctions --service-name my-service\n $ s cli fc-api deploy -p \"{/\"function/\": /\"function-name/\"}\"\n\n".concat((0, utils_1.emoji)('📖'), " Document: ").concat(underline('https://github.com/Serverless-Devs/Serverless-Devs/tree/master/docs/zh/command/cli.md'));
49
- var throwError = function (error) {
50
- var jsonMsg;
51
- try {
52
- jsonMsg = JSON.parse(error.message);
53
- }
54
- catch (error) { }
55
- if (jsonMsg && jsonMsg.tips) {
56
- throw new Error(JSON.stringify({
57
- code: 101,
58
- message: jsonMsg.message,
59
- tips: jsonMsg.tips,
60
- }));
61
- }
62
- else {
63
- throw new Error(JSON.stringify({
64
- code: 101,
65
- message: error.message,
66
- stack: error.stack,
67
- }));
68
- }
69
- };
70
- function run(program) {
71
- return __awaiter(this, void 0, void 0, function () {
72
- var command, doAction;
73
- var _this = this;
74
- return __generator(this, function (_a) {
75
- command = program
76
- .command('cli')
77
- .usage('[component] [method] [options]')
78
- .option('-a, --access <aliasName>', 'Specify the access alias name.')
79
- .option('-p, --props <jsonString>', 'The json string of props')
80
- .helpOption('-h, --help', 'Display help for command')
81
- .allowUnknownOption()
82
- .description(description)
83
- .addHelpCommand(false)
84
- .action(function (options) { return __awaiter(_this, void 0, void 0, function () {
85
- var error_2;
86
- return __generator(this, function (_a) {
87
- switch (_a.label) {
88
- case 0:
89
- _a.trys.push([0, 2, , 4]);
90
- return [4 /*yield*/, doAction(options)];
91
- case 1:
92
- _a.sent();
93
- return [3 /*break*/, 4];
94
- case 2:
95
- error_2 = _a.sent();
96
- return [4 /*yield*/, (0, error_1.HandleError)(error_2)];
97
- case 3:
98
- _a.sent();
99
- return [3 /*break*/, 4];
100
- case 4: return [2 /*return*/];
101
- }
102
- });
103
- }); });
104
- doAction = function (options) { return __awaiter(_this, void 0, void 0, function () {
105
- function getCurentCredential(access) {
106
- return __awaiter(this, void 0, void 0, function () {
107
- return __generator(this, function (_a) {
108
- switch (_a.label) {
109
- case 0:
110
- if (!(access === core_1.default.ALIYUN_CLI)) return [3 /*break*/, 2];
111
- return [4 /*yield*/, core_1.default.getCredential(access)];
112
- case 1: return [2 /*return*/, _a.sent()];
113
- case 2: return [4 /*yield*/, (0, utils_1.getCredentialWithExisted)(access)];
114
- case 3: return [2 /*return*/, _a.sent()];
115
- }
116
- });
117
- });
118
- }
119
- function execComponent(_method) {
120
- return __awaiter(this, void 0, void 0, function () {
121
- var credentials, tempProp, p, argsObj, inputs, res, error_3;
122
- return __generator(this, function (_a) {
123
- switch (_a.label) {
124
- case 0: return [4 /*yield*/, getCurentCredential(access)];
125
- case 1:
126
- credentials = _a.sent();
127
- tempProp = {};
128
- try {
129
- p = argvData.props || argvData.p;
130
- tempProp = p ? JSON.parse(p) : {};
131
- }
132
- catch (e) {
133
- throw new Error('-p/--props parameter format error');
134
- }
135
- argsObj = rawData
136
- .slice(3)
137
- .filter(function (o) { return !includes(argvData._argsObj, o); })
138
- .concat(argvData._argsObj);
139
- inputs = {
140
- props: tempProp,
141
- credentials: credentials || {},
142
- appName: 'default',
143
- project: {
144
- component: componentName,
145
- access: access,
146
- projectName: 'default',
147
- provider: undefined,
148
- },
149
- command: _method,
150
- args: argsObj.join(' '),
151
- argsObj: argsObj,
152
- path: {
153
- configPath: process.cwd(),
154
- },
155
- };
156
- _a.label = 2;
157
- case 2:
158
- _a.trys.push([2, 4, , 5]);
159
- return [4 /*yield*/, instance[_method](inputs)];
160
- case 3:
161
- res = _a.sent();
162
- if (isEmpty(res)) {
163
- return [2 /*return*/, utils_1.logger.success("End of method: ".concat(_method))];
164
- }
165
- isString(res) ? utils_1.logger.success(res) : utils_1.logger.output(res);
166
- return [3 /*break*/, 5];
167
- case 4:
168
- error_3 = _a.sent();
169
- throwError(error_3);
170
- return [3 /*break*/, 5];
171
- case 5: return [2 /*return*/];
172
- }
173
- });
174
- });
175
- }
176
- var argvData, rawData, _a, access, help, _b, componentName, method, instance, docResult, publishPath;
177
- return __generator(this, function (_c) {
178
- switch (_c.label) {
179
- case 0:
180
- argvData = core_1.default.getGlobalArgs(process.argv.slice(2));
181
- rawData = argvData._, _a = argvData.access, access = _a === void 0 ? 'default' : _a, help = argvData.help;
182
- // s cli
183
- if (rawData.length === 1 || (rawData.length === 1 && help)) {
184
- command.help();
185
- }
186
- _b = rawData.slice(1), componentName = _b[0], method = _b[1];
187
- return [4 /*yield*/, loadComponent(componentName)];
188
- case 1:
189
- instance = _c.sent();
190
- if (!(rawData.length === 2)) return [3 /*break*/, 5];
191
- if (!instance['index']) return [3 /*break*/, 3];
192
- return [4 /*yield*/, execComponent('index')];
193
- case 2: return [2 /*return*/, _c.sent()];
194
- case 3:
195
- if (instance.__doc && instance.__doc().length > 1685) {
196
- docResult = instance.__doc();
197
- return [2 /*return*/, utils_1.logger.log(docResult)];
198
- }
199
- publishPath = path_1.default.join(instance.__path, 'publish.yml');
200
- return [4 /*yield*/, (0, utils_1.specifyServiceHelp)(publishPath)];
201
- case 4:
202
- _c.sent();
203
- return [2 /*return*/];
204
- case 5:
205
- if (!(rawData.length >= 3)) return [3 /*break*/, 8];
206
- if (!instance[method]) return [3 /*break*/, 7];
207
- return [4 /*yield*/, execComponent(method)];
208
- case 6: return [2 /*return*/, _c.sent()];
209
- case 7: throw new Error(JSON.stringify({
210
- code: 100,
211
- message: 'The specified command cannot be found.',
212
- tips: 'Please refer to the help document of [-h/--help] command.',
213
- }));
214
- case 8: return [2 /*return*/];
215
- }
216
- });
217
- }); };
218
- return [2 /*return*/];
219
- });
220
- });
221
- }
222
- module.exports = run;
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1REFBaUM7QUFDakMsOENBQXdCO0FBQ3hCLGtDQUF1QztBQUN2QyxrQ0FBdUY7QUFDL0UsSUFBQSxLQUFLLEdBQTRCLGNBQUksTUFBaEMsRUFBRSxhQUFhLEdBQWEsY0FBSSxjQUFqQixFQUFFLE1BQU0sR0FBSyxjQUFJLE9BQVQsQ0FBVTtBQUN0QyxJQUFBLFNBQVMsR0FBSyxLQUFLLFVBQVYsQ0FBVztBQUNwQixJQUFBLE9BQU8sR0FBeUIsTUFBTSxRQUEvQixFQUFFLFFBQVEsR0FBZSxNQUFNLFNBQXJCLEVBQUUsUUFBUSxHQUFLLE1BQU0sU0FBWCxDQUFZO0FBRS9DLElBQU0sV0FBVyxHQUFHLDhUQU9sQixJQUFBLGFBQUssRUFBQyxJQUFJLENBQUMsd0JBQWMsU0FBUyxDQUNsQyx1RkFBdUYsQ0FDeEYsQ0FBRSxDQUFDO0FBRUosSUFBTSxVQUFVLEdBQUcsVUFBQSxLQUFLO0lBQ3RCLElBQUksT0FBTyxDQUFDO0lBQ1osSUFBSTtRQUNGLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUNyQztJQUFDLE9BQU8sS0FBSyxFQUFFLEdBQUc7SUFDbkIsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtRQUMzQixNQUFNLElBQUksS0FBSyxDQUNiLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDYixJQUFJLEVBQUUsR0FBRztZQUNULE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztZQUN4QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7U0FDbkIsQ0FBQyxDQUNILENBQUM7S0FDSDtTQUFNO1FBQ0wsTUFBTSxJQUFJLEtBQUssQ0FDYixJQUFJLENBQUMsU0FBUyxDQUFD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