@serverless-devs/s 2.0.93 → 2.0.95-beta.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.
Files changed (41) hide show
  1. package/docs/zh/yaml.md +1 -1
  2. package/lib/clean/index.js +1 -1
  3. package/lib/cli/index.js +46 -45
  4. package/lib/component/index.js +80 -80
  5. package/lib/config/add/index.js +16 -16
  6. package/lib/config/delete/index.js +38 -37
  7. package/lib/config/get/index.js +30 -30
  8. package/lib/config/index.js +1 -1
  9. package/lib/core/command/command-manager.d.ts +1 -0
  10. package/lib/core/command/command-manager.js +46 -19
  11. package/lib/index.js +120 -100
  12. package/lib/init/index.js +95 -79
  13. package/lib/init/init-config.d.ts +37 -7
  14. package/lib/init/init-config.js +426 -90
  15. package/lib/init/init-manager.js +16 -17
  16. package/lib/set/analysis/index.js +1 -1
  17. package/lib/set/index.js +1 -1
  18. package/lib/set/locale/index.js +41 -40
  19. package/lib/set/registry/index.js +41 -40
  20. package/lib/set/workspace/index.js +1 -1
  21. package/lib/update-notifier/index.js +20 -20
  22. package/lib/utils/command-util.d.ts +1 -0
  23. package/lib/utils/command-util.js +33 -3
  24. package/package.json +3 -3
  25. package/spec/zh/0.0.1/readme.md +1 -1
  26. package/spec/zh/0.0.1/{serverless_pacakge_model → serverless_package_model}/1.purpose_and_goals.md +0 -0
  27. package/spec/zh/0.0.1/{serverless_pacakge_model → serverless_package_model}/2.overview_and_terminology.md +0 -0
  28. package/spec/zh/0.0.1/{serverless_pacakge_model → serverless_package_model}/3.package_model.md +0 -0
  29. package/spec/zh/0.0.1/{serverless_pacakge_model → serverless_package_model}/4.application_scopes.md +0 -0
  30. package/spec/zh/0.0.1/{serverless_pacakge_model → serverless_package_model}/5.design_principles.md +0 -0
  31. package/spec/zh/0.0.1/{serverless_pacakge_model → serverless_package_model}/readme.md +0 -0
  32. package/spec/zh/0.0.1/serverless_registry_model/2.overview_and_terminology.md +1 -1
  33. package/spec/zh/0.0.1/serverless_registry_model/3.registry_model.md +2 -2
  34. package/spec/zh/0.0.1/serverless_registry_model/5.design_principles.md +1 -1
  35. package/test/ci.sh +33 -0
  36. package/test/start-fc-http-nodejs12/code/index.js +47 -0
  37. package/test/start-fc-http-nodejs12/s.yaml +38 -0
  38. package/lib/init/template.d.ts +0 -20
  39. package/lib/init/template.js +0 -314
  40. package/lib/init/update-template.d.ts +0 -1
  41. package/lib/init/update-template.js +0 -33
@@ -1,3 +1,4 @@
1
+ export declare function setEnvbyDotenv(templateFile: string): Promise<void>;
1
2
  export declare function createUniversalCommand(command: string, customerCommandName?: string, description?: string): import("commander").Command;
2
3
  export declare function getCommandDetail(name: any, provider: any, version: any): Promise<any[]>;
3
4
  export declare function getParsedTemplateObj(templateFile: any): Promise<any>;
@@ -39,7 +39,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  return (mod && mod.__esModule) ? mod : { "default": mod };
40
40
  };
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.recordCommandHistory = exports.registerVerbose = exports.registerUniversalCommand = exports.registerCustomerCommand = exports.registerCommandChecker = exports.createCustomerCommand = exports.getCustomerCommandInfo = exports.getParsedTemplateObj = exports.getCommandDetail = exports.createUniversalCommand = void 0;
42
+ exports.recordCommandHistory = exports.registerVerbose = exports.registerUniversalCommand = exports.registerCustomerCommand = exports.registerCommandChecker = exports.createCustomerCommand = exports.getCustomerCommandInfo = exports.getParsedTemplateObj = exports.getCommandDetail = exports.createUniversalCommand = exports.setEnvbyDotenv = void 0;
43
43
  var os_1 = __importDefault(require("os"));
44
44
  var path_1 = __importDefault(require("path"));
45
45
  var commander_1 = require("commander");
@@ -49,9 +49,39 @@ var static_variable_1 = require("../constants/static-variable");
49
49
  var storage_1 = __importDefault(require("./storage"));
50
50
  var logger_1 = __importDefault(require("./logger"));
51
51
  var common_1 = require("./common");
52
+ var lodash_1 = require("lodash");
52
53
  var core_2 = __importDefault(require("./core"));
53
- var loadComponent = core_2.default.loadComponent, fs = core_2.default.fse, yaml = core_2.default.jsyaml;
54
+ var loadComponent = core_2.default.loadComponent, fs = core_2.default.fse, yaml = core_2.default.jsyaml, getYamlContent = core_2.default.getYamlContent;
54
55
  var getSubcommand = specification_1.version.getSubcommand, getServiceConfig = specification_1.version.getServiceConfig;
56
+ function setEnvbyDotenv(templateFile) {
57
+ return __awaiter(this, void 0, void 0, function () {
58
+ var spath, data, services, codeUri, key, element;
59
+ return __generator(this, function (_a) {
60
+ switch (_a.label) {
61
+ case 0:
62
+ spath = path_1.default.dirname(templateFile);
63
+ require('dotenv').config({ path: path_1.default.join(spath, '.env') });
64
+ return [4 /*yield*/, getYamlContent(templateFile)];
65
+ case 1:
66
+ data = _a.sent();
67
+ services = data.services;
68
+ for (key in services) {
69
+ element = services[key];
70
+ if (element.component === 'fc') {
71
+ codeUri = (0, lodash_1.get)(element, 'props.function.codeUri');
72
+ break;
73
+ }
74
+ }
75
+ if (codeUri) {
76
+ codeUri = path_1.default.isAbsolute(codeUri) ? codeUri : path_1.default.join(spath, codeUri);
77
+ require('dotenv').config({ path: path_1.default.join(codeUri, '.env') });
78
+ }
79
+ return [2 /*return*/];
80
+ }
81
+ });
82
+ });
83
+ }
84
+ exports.setEnvbyDotenv = setEnvbyDotenv;
55
85
  function createUniversalCommand(command, customerCommandName, description) {
56
86
  var _command = new commander_1.Command(command);
57
87
  var processArgv = [];
@@ -281,4 +311,4 @@ exports.default = {
281
311
  registerCustomerCommand: registerCustomerCommand,
282
312
  registerUniversalCommand: registerUniversalCommand,
283
313
  };
284
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2NvbW1hbmQtdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBb0I7QUFDcEIsOENBQXdCO0FBQ3hCLHVDQUFvQztBQUNwQyxnQ0FBeUM7QUFDekMsa0RBQWtEO0FBQ2xELGdFQUF5RTtBQUN6RSxzREFBZ0M7QUFDaEMsb0RBQThCO0FBQzlCLG1DQUFpQztBQUNqQyxnREFBMEI7QUFDbEIsSUFBQSxhQUFhLEdBQTRCLGNBQUksY0FBaEMsRUFBTyxFQUFFLEdBQW1CLGNBQUksSUFBdkIsRUFBVSxJQUFJLEdBQUssY0FBSSxPQUFULENBQVU7QUFFOUMsSUFBQSxhQUFhLEdBQXVCLHVCQUFPLGNBQTlCLEVBQUUsZ0JBQWdCLEdBQUssdUJBQU8saUJBQVosQ0FBYTtBQUVwRCxTQUFnQixzQkFBc0IsQ0FBQyxPQUFlLEVBQUUsbUJBQTRCLEVBQUUsV0FBb0I7SUFDeEcsSUFBTSxRQUFRLEdBQUcsSUFBSSxtQkFBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLElBQU0sV0FBVyxHQUFhLEVBQUUsQ0FBQztJQUNqQyxJQUFJLE1BQU0sR0FBYSxFQUFFLENBQUM7SUFDMUIsSUFBSSxvQkFBb0IsR0FBRyxtQkFBbUIsQ0FBQztJQUMvQyxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQzVDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNuQzthQUFNO1lBQ0wsTUFBTSxDQUFDLElBQUksQ0FB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
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC11dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2NvbW1hbmQtdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBb0I7QUFDcEIsOENBQXdCO0FBQ3hCLHVDQUFvQztBQUNwQyxnQ0FBeUM7QUFDekMsa0RBQWtEO0FBQ2xELGdFQUF5RTtBQUN6RSxzREFBZ0M7QUFDaEMsb0RBQThCO0FBQzlCLG1DQUFpQztBQUNqQyxpQ0FBNkI7QUFDN0IsZ0RBQTBCO0FBQ2xCLElBQUEsYUFBYSxHQUE0QyxjQUFJLGNBQWhELEVBQU8sRUFBRSxHQUFtQyxjQUFJLElBQXZDLEVBQVUsSUFBSSxHQUFxQixjQUFJLE9BQXpCLEVBQUUsY0FBYyxHQUFLLGNBQUksZUFBVCxDQUFVO0FBRTlELElBQUEsYUFBYSxHQUF1Qix1QkFBTyxjQUE5QixFQUFFLGdCQUFnQixHQUFLLHVCQUFPLGlCQUFaLENBQWE7QUFFcEQsU0FBc0IsY0FBYyxDQUFDLFlBQW9COzs7Ozs7b0JBQ2pELEtBQUssR0FBRyxjQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUN6QyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLGNBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDaEQscUJBQU0sY0FBYyxDQUFDLFlBQVksQ0FBQyxFQUFBOztvQkFBekMsSUFBSSxHQUFHLFNBQWtDO29CQUN2QyxRQUFRLEdBQUssSUFBSSxTQUFULENBQVU7b0JBRTFCLEtBQVcsR0FBRyxJQUFJLFFBQVEsRUFBRTt3QkFDcEIsT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDOUIsSUFBSSxPQUFPLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTs0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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serverless-devs/s",
3
- "version": "2.0.93",
3
+ "version": "2.0.95-beta.3",
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": [
@@ -31,7 +31,7 @@
31
31
  "prewatch": "rm -rf lib/* && cp -r ./src/daemon ./lib",
32
32
  "watch": "tsc -w",
33
33
  "test": "npx jest",
34
- "prebuild": "rm -rf lib",
34
+ "prebuild": "rm -rf lib/*",
35
35
  "build": "tsc && cp -r ./src/daemon ./lib",
36
36
  "postbuild": "./shell/postbuild.sh",
37
37
  "test:cov": "jest --coverage",
@@ -92,6 +92,6 @@
92
92
  ]
93
93
  },
94
94
  "dependencies": {
95
- "@serverless-devs/core": "latest"
95
+ "@serverless-devs/core": "^0.1.15-beta.5"
96
96
  }
97
97
  }
@@ -10,7 +10,7 @@
10
10
  - 时间:2021.9.16
11
11
  - 内容:
12
12
  - [Serverless Registry Model](./serverless_registry_model)
13
- - [Serverless Package Model](./serverless_tool_model)
13
+ - [Serverless Package Model](./serverless_package_model)
14
14
  - [Serverless User Model](./serverless_user_model)
15
15
 
16
16
  ## 简介
@@ -12,7 +12,7 @@
12
12
  - Serverless Registry 将会同时承载应用和组件;
13
13
  - 应用和组件在 Serverless Registry 上将会具有不同数据结构的元数据;
14
14
  - Serverless Registry 的应用可以通过规范的 API 进行查询和获取;
15
- - Serverless Registry 可以且仅可以承载符合 [Serverless Package Model 规范](./serverless_pacakge_model.md)的 Package (包括应用与组件);
15
+ - Serverless Registry 可以且仅可以承载符合 [Serverless Package Model 规范](./../serverless_package_model)的 Package (包括应用与组件);
16
16
  - Serverless Registry 所承载的内容可以在之后的版本进行拓展;
17
17
  - Serverless Registry 可以根据 Registry 建设者/组织的需求增加符合自身需要的权限鉴定策略;
18
18
  - Serverless Registry 中的 Package (包括应用与组件)应当具备版本的划分能力,以及 Package 的增加、删除的能力;
@@ -25,9 +25,9 @@ Package 开发者和 Serverless 开发者在发布 Package 以及使用 Package
25
25
 
26
26
  ![](https://serverless-article-picture.oss-cn-hangzhou.aliyuncs.com/1631783208215_20210916090651949970.png)
27
27
 
28
- 通过上述流程,可以看到对于 Package 开发者而言,需要按照[Serverless Package Model 规范](./serverless_pacakge_model.md)提供相对应的 Package 到 Serverless Registry,而对于 Serverless 开发者而言,则需通过 Serverless Devs 开发者工具 工具中,进行 Package 的下载和使用。在整个过程中,涉及到的核心规范如下:
28
+ 通过上述流程,可以看到对于 Package 开发者而言,需要按照[Serverless Package Model 规范](./../serverless_package_model)提供相对应的 Package 到 Serverless Registry,而对于 Serverless 开发者而言,则需通过 Serverless Devs 开发者工具 工具中,进行 Package 的下载和使用。在整个过程中,涉及到的核心规范如下:
29
29
 
30
- - Serverless Registry 在接受 Package 开发者贡献的组件与应用时,接受且只接受标准zip格式的压缩包,且压缩包中包括的代码等内容符合且必须符合符合 [Serverless Package Model 规范](./serverless_pacakge_model.md);
30
+ - Serverless Registry 在接受 Package 开发者贡献的组件与应用时,接受且只接受标准zip格式的压缩包,且压缩包中包括的代码等内容符合且必须符合符合 [Serverless Package Model 规范](./../serverless_package_model);
31
31
  - 对于发布在 Serverless Registry 上的应用和组件,Serverless Registry 需要按照以下规范提供对应 Package 版本查询功能以及相对应的下载功能:
32
32
  - 全部版本查询:
33
33
  - Method:GET
@@ -1,3 +1,3 @@
1
1
  # 设计原则
2
2
 
3
- 为了更加公平和开放,上述的设计规范参照于Github相关接口设计,所以可以认为 Serverless Devs 开发者工具 天然支持 Github 作为其默认的 Serverless Registry (https://api.github.com/repos/)。
3
+ 为了更加公平和开放,上述的设计规范参照于Github相关接口设计,所以可以认为 Serverless Devs 开发者工具 天然支持 Github 作为其默认的 Serverless Registry ( https://api.github.com/repos/ )。
package/test/ci.sh ADDED
@@ -0,0 +1,33 @@
1
+ #!/bin/bash
2
+ echo './bin/s -v'
3
+ ./bin/s -v
4
+
5
+ echo './bin/s -h'
6
+ ./bin/s -h
7
+
8
+ echo './bin/s config add --AccountID 12345 --AccessKeyID 12345 --AccessKeySecret 12345 -a test -f'
9
+ ./bin/s config add --AccountID 12345 --AccessKeyID 12345 --AccessKeySecret 12345 -a test -f
10
+
11
+ echo './bin/s config get'
12
+ ./bin/s config get
13
+
14
+ echo './bin/s config delete -a test'
15
+ ./bin/s config delete -a test
16
+
17
+ echo './bin/s cli fc-api listServices'
18
+ ./bin/s cli fc-api
19
+
20
+ echo './bin/s component'
21
+ ./bin/s component
22
+
23
+ echo './bin/s component --component fc-api'
24
+ ./bin/s component --component fc-api
25
+
26
+ echo './bin/s clean --component fc-api'
27
+ ./bin/s clean --component fc-api
28
+
29
+ echo './bin/s clean --cache'
30
+ ./bin/s clean --cache
31
+
32
+
33
+
@@ -0,0 +1,47 @@
1
+ var getRawBody = require('raw-body');
2
+ var getFormBody = require('body/form');
3
+ var body = require('body');
4
+
5
+
6
+ /*
7
+ To enable the initializer feature (https://help.aliyun.com/document_detail/156876.html)
8
+ please implement the initializer function as below:
9
+ exports.initializer = (context, callback) => {
10
+ console.log('initializing');
11
+ callback(null, '');
12
+ };
13
+ */
14
+
15
+ exports.handler = (req, resp, context) => {
16
+ console.log('hello world');
17
+
18
+ var params = {
19
+ path: req.path,
20
+ queries: req.queries,
21
+ headers: req.headers,
22
+ method : req.method,
23
+ requestURI : req.url,
24
+ clientIP : req.clientIP,
25
+ }
26
+
27
+ getRawBody(req, function(err, body) {
28
+ for (var key in req.queries) {
29
+ var value = req.queries[key];
30
+ resp.setHeader(key, value);
31
+ }
32
+ params.body = body.toString();
33
+ resp.send(JSON.stringify(params, null, ' '));
34
+ });
35
+
36
+ /*
37
+ getFormBody(req, function(err, formBody) {
38
+ for (var key in req.queries) {
39
+ var value = req.queries[key];
40
+ resp.setHeader(key, value);
41
+ }
42
+ params.body = formBody;
43
+ console.log(formBody);
44
+ resp.send(JSON.stringify(params));
45
+ });
46
+ */
47
+ }
@@ -0,0 +1,38 @@
1
+ edition: 1.0.0 # 命令行YAML规范版本,遵循语义化版本(Semantic Versioning)规范
2
+ name: fcDeployApp # 项目名称
3
+ access: "default" # 秘钥别名
4
+
5
+ services:
6
+ fc-deploy-test: # 服务名称
7
+ component: devsapp/fc # 组件名称
8
+ props: # 组件的属性值
9
+ region: cn-hangzhou
10
+ service:
11
+ name: fc-deploy-service
12
+ description: 'demo for fc-deploy component'
13
+ internetAccess: true
14
+ function:
15
+ name: http-trigger-nodejs12
16
+ description: this is a test
17
+ runtime: nodejs12
18
+ codeUri: ./code
19
+ # ossBucket:
20
+ # ossKey: # conflict with codeUri
21
+ handler: index.handler
22
+ memorySize: 128
23
+ timeout: 60
24
+ triggers:
25
+ - name: httpTrigger
26
+ type: http
27
+ config:
28
+ authType: anonymous
29
+ methods:
30
+ - GET
31
+ customDomains:
32
+ - domainName: auto
33
+ protocol: HTTP
34
+ routeConfigs:
35
+ - path: /*
36
+ methods:
37
+ - GET
38
+ # 函数计算FC组件文档参考地址:https://github.com/devsapp/fc
@@ -1,20 +0,0 @@
1
- declare const _default: {
2
- Code: number;
3
- Status: string;
4
- Body: {
5
- name_zh: string;
6
- name_en: string;
7
- value: string;
8
- templates: {
9
- id: number;
10
- name_zh: string;
11
- name_en: string;
12
- value: string;
13
- is_deploy: boolean;
14
- rank: number;
15
- category_id: number;
16
- created_time: string;
17
- }[];
18
- }[];
19
- };
20
- export default _default;
@@ -1,314 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = {
4
- Code: 200,
5
- Status: 'Success',
6
- Body: [
7
- {
8
- name_zh: 'fc-runtime-starter - 快速部署一个 FC 函数',
9
- name_en: 'fc-runtime-starter - Deploy FC function in 5 minutes',
10
- value: 'fc-runtime-starter',
11
- templates: [
12
- {
13
- id: 1,
14
- name_zh: 'fc-http-nodejs - 快速部署一个 nodejs12 http函数',
15
- name_en: 'fc-http-nodejs - Deploy FC nodejs12 runtime http function',
16
- value: 'devsapp/start-fc-http-nodejs12',
17
- is_deploy: true,
18
- rank: 1,
19
- category_id: 1,
20
- created_time: '2021-10-03T11:06:34.473Z',
21
- },
22
- {
23
- id: 2,
24
- name_zh: 'fc-http-python - 快速部署一个 python3 http函数',
25
- name_en: 'fc-http-python - Deploy FC python3 runtime http function',
26
- value: 'devsapp/start-fc-http-python3',
27
- is_deploy: true,
28
- rank: 2,
29
- category_id: 1,
30
- created_time: '2021-10-03T12:36:26.450Z',
31
- },
32
- {
33
- id: 7,
34
- name_zh: 'fc-http-java - 快速部署一个 java8 http函数',
35
- name_en: 'fc-http-java - Deploy FC java8 runtime http function',
36
- value: 'devsapp/start-fc-http-java8',
37
- is_deploy: false,
38
- rank: 4,
39
- category_id: 1,
40
- created_time: '2021-10-12T06:29:59.392Z',
41
- },
42
- {
43
- id: 23,
44
- name_zh: 'fc-event-nodejs - 快速部署一个 nodejs12 event函数',
45
- name_en: 'fc-event-nodejs - Deploy FC nodejs12 runtime event function',
46
- value: 'devsapp/start-fc-event-nodejs12',
47
- is_deploy: true,
48
- rank: 5,
49
- category_id: 1,
50
- created_time: '2021-10-13T07:43:38.542Z',
51
- },
52
- {
53
- id: 24,
54
- name_zh: 'fc-event-python - 快速部署一个 python3 event函数',
55
- name_en: 'fc-event-python - Deploy FC python3 runtime event function',
56
- value: 'devsapp/start-fc-event-python3',
57
- is_deploy: true,
58
- rank: 6,
59
- category_id: 1,
60
- created_time: '2021-10-13T07:57:35.429Z',
61
- },
62
- {
63
- id: 25,
64
- name_zh: 'fc-http-php - 快速部署一个 php http函数',
65
- name_en: 'fc-http-php - Deploy FC php runtime http function',
66
- value: 'devsapp/start-fc-http-php7',
67
- is_deploy: true,
68
- rank: 3,
69
- category_id: 1,
70
- created_time: '2021-10-13T08:01:38.523Z',
71
- },
72
- {
73
- id: 26,
74
- name_zh: 'fc-event-php - 快速部署一个 php event函数',
75
- name_en: 'fc-event-php - Deploy FC php runtime event function',
76
- value: 'devsapp/start-fc-event-php7',
77
- is_deploy: true,
78
- rank: 7,
79
- category_id: 1,
80
- created_time: '2021-10-13T08:04:27.547Z',
81
- },
82
- {
83
- id: 27,
84
- name_zh: 'fc-event-java - 快速部署一个 java8 event函数',
85
- name_en: 'fc-event-java - Deploy FC java8 runtime event function',
86
- value: 'devsapp/start-fc-event-java8',
87
- is_deploy: false,
88
- rank: 8,
89
- category_id: 1,
90
- created_time: '2021-10-13T08:09:34.561Z',
91
- },
92
- ],
93
- },
94
- {
95
- name_zh: 'fc-custom-container-stater - 快速部署一个 custom-container 应用',
96
- name_en: 'fc-custom-container-stater - Deploy FC function with custom-container',
97
- value: 'fc-custom-container-stater',
98
- templates: [
99
- {
100
- id: 3,
101
- name_zh: 'fc-custom-container-event-python3 - 快速部署一个通过事件触发的 python3 应用',
102
- name_en: 'fc-custom-container-event-python3 - Deploy python3 event-triggered application',
103
- value: 'devsapp/start-fc-custom-container-event-python3.9',
104
- is_deploy: false,
105
- rank: 0,
106
- category_id: 4,
107
- created_time: '2021-10-12T06:23:10.797Z',
108
- },
109
- {
110
- id: 4,
111
- name_zh: 'fc-custom-container-event-cpp - 快速部署一个通过事件触发的 cpp 应用',
112
- name_en: 'fc-custom-container-event-cpp - Deploy cpp event-triggered application',
113
- value: 'devsapp/start-fc-custom-container-event-cpp',
114
- is_deploy: false,
115
- rank: 0,
116
- category_id: 4,
117
- created_time: '2021-10-12T06:25:15.558Z',
118
- },
119
- {
120
- id: 5,
121
- name_zh: 'fc-custom-container-http-springboot - 快速部署一个通过 HTTP 请求触发的 springboot 应用',
122
- name_en: 'fc-custom-container-http-springboot - Deploy springboot HTTP Request-triggered application',
123
- value: 'devsapp/start-fc-custom-container-http-springboot',
124
- is_deploy: false,
125
- rank: 0,
126
- category_id: 4,
127
- created_time: '2021-10-12T06:26:38.646Z',
128
- },
129
- {
130
- id: 6,
131
- name_zh: 'fc-custom-container-http-aspdotnetcore - 快速部署一个通过 HTTP 请求触发的 aspdotnetcore 应用',
132
- name_en: 'fc-custom-container-http-aspdotnetcore - Deploy dotnetcore HTTP Request-triggered application',
133
- value: 'devsapp/start-fc-custom-container-http-aspdotnetcore',
134
- is_deploy: false,
135
- rank: 0,
136
- category_id: 4,
137
- created_time: '2021-10-12T06:27:57.306Z',
138
- },
139
- ],
140
- },
141
- {
142
- name_zh: 'web-framework-stater - 快速部署一个 Web 框架',
143
- name_en: 'web-framework-stater-Quickly deploy a web framework',
144
- value: 'web',
145
- templates: [
146
- {
147
- id: 8,
148
- name_zh: 'express-starter - 快速部署一个 express 基础应用',
149
- name_en: 'express-starter - Deploy express application',
150
- value: 'devsapp/start-express',
151
- is_deploy: false,
152
- rank: 0,
153
- category_id: 5,
154
- created_time: '2021-10-12T06:42:50.811Z',
155
- },
156
- {
157
- id: 9,
158
- name_zh: 'koa-starter - 快速部署一个 koa 基础应用',
159
- name_en: 'koa-starter - Deploy koa application',
160
- value: 'devsapp/start-koa',
161
- is_deploy: true,
162
- rank: 0,
163
- category_id: 5,
164
- created_time: '2021-10-12T06:44:17.038Z',
165
- },
166
- {
167
- id: 10,
168
- name_zh: 'nuxtjs-starter - 快速部署一个 nuxtjs 基础应用',
169
- name_en: 'nuxtjs-starter - Deploy nuxtjs application',
170
- value: 'devsapp/start-nuxt',
171
- is_deploy: true,
172
- rank: 0,
173
- category_id: 5,
174
- created_time: '2021-10-12T06:45:11.491Z',
175
- },
176
- {
177
- id: 11,
178
- name_zh: 'eggjs-starter - 快速部署一个 eggjs 基础应用',
179
- name_en: 'eggjs-starter - Deploy eggjs application',
180
- value: 'devsapp/start-egg',
181
- is_deploy: true,
182
- rank: 0,
183
- category_id: 5,
184
- created_time: '2021-10-12T06:51:54.762Z',
185
- },
186
- {
187
- id: 12,
188
- name_zh: 'flask-starter - 快速部署一个 flask 基础应用',
189
- name_en: 'flask-starter - Deploy flask application',
190
- value: 'devsapp/start-flask',
191
- is_deploy: false,
192
- rank: 0,
193
- category_id: 5,
194
- created_time: '2021-10-12T06:52:38.428Z',
195
- },
196
- {
197
- id: 13,
198
- name_zh: 'SpringBoot-starter - 快速部署一个 SpringBoot 基础应用',
199
- name_en: 'SpringBoot-starter - Deploy SpringBoot application',
200
- value: 'devsapp/start-springboot',
201
- is_deploy: false,
202
- rank: 0,
203
- category_id: 5,
204
- created_time: '2021-10-12T06:55:44.149Z',
205
- },
206
- {
207
- id: 14,
208
- name_zh: 'Zblog-starter - 快速部署一个 Zblog 基础应用',
209
- name_en: 'Zblog-starter - Deploy Zblog application',
210
- value: 'devsapp/start-zblog',
211
- is_deploy: false,
212
- rank: 0,
213
- category_id: 5,
214
- created_time: '2021-10-12T06:56:32.239Z',
215
- },
216
- ],
217
- },
218
- {
219
- name_zh: 'static-website-stater - 快速部署一个静态网站',
220
- name_en: 'static-website-stater-Quickly deploy a static website',
221
- value: 'static-site',
222
- templates: [
223
- {
224
- id: 15,
225
- name_zh: 'website-starter - 快速部署一个静态网站',
226
- name_en: 'website-starter - Deploy static website',
227
- value: 'devsapp/website-base',
228
- is_deploy: true,
229
- rank: 0,
230
- category_id: 6,
231
- created_time: '2021-10-12T07:15:48.795Z',
232
- },
233
- {
234
- id: 16,
235
- name_zh: 'react-starter - 快速部署一个 React.js 应用',
236
- name_en: 'react-starter - Deploy React.js application',
237
- value: 'devsapp/website-react',
238
- is_deploy: true,
239
- rank: 0,
240
- category_id: 6,
241
- created_time: '2021-10-12T07:16:39.534Z',
242
- },
243
- {
244
- id: 17,
245
- name_zh: 'vue-starter - 快速部署一个 Vue.js 应用',
246
- name_en: 'vue-starter - Deploy Vue.js application',
247
- value: 'devsapp/website-vue',
248
- is_deploy: true,
249
- rank: 0,
250
- category_id: 6,
251
- created_time: '2021-10-12T07:17:17.360Z',
252
- },
253
- ],
254
- },
255
- {
256
- name_zh: 'serverless-best-practice - 快速体验 Serverless 最佳实践',
257
- name_en: 'serverless-best-practice-Quickly experience serverless best practices',
258
- value: 'best-practice',
259
- templates: [
260
- {
261
- id: 18,
262
- name_zh: 'puppeteer - 快速部署一个基于 puppeteer 截图的 Web 应用',
263
- name_en: 'puppeteer - Deploy screenshot application base on puppeteer + fc',
264
- value: 'devsapp/puppeteer-app',
265
- is_deploy: false,
266
- rank: 0,
267
- category_id: 7,
268
- created_time: '2021-10-12T07:17:59.874Z',
269
- },
270
- {
271
- id: 19,
272
- name_zh: 'ffmpeg - 快速部署一个基于 ffmpeg 实现音视频处理应用',
273
- name_en: 'ffmpeg - Deploy audio and video processing application base on ffmpeg + fc',
274
- value: 'devsapp/ffmpeg-app',
275
- is_deploy: false,
276
- rank: 0,
277
- category_id: 7,
278
- created_time: '2021-10-12T07:18:40.591Z',
279
- },
280
- {
281
- id: 20,
282
- name_zh: 'pdf2Img - 快速部署一个 pdf 转图片应用',
283
- name_en: 'pdf2Img - Deploy pdf to images application',
284
- value: 'devsapp/start-pdf2img',
285
- is_deploy: false,
286
- rank: 0,
287
- category_id: 7,
288
- created_time: '2021-10-12T07:19:25.791Z',
289
- },
290
- {
291
- id: 21,
292
- name_zh: 'tensorflow - 快速部署一个 tensorflow 应用',
293
- name_en: 'tensorflow - Deploy tensorflow application',
294
- value: 'devsapp/start-tensorflow',
295
- is_deploy: false,
296
- rank: 0,
297
- category_id: 7,
298
- created_time: '2021-10-12T07:20:07.140Z',
299
- },
300
- {
301
- id: 22,
302
- name_zh: 'todoList - 快速部署一个基于 nodejs 的网页 TodoList 应用',
303
- name_en: 'todoList - Deploy todoList application',
304
- value: 'devsapp/todolist-app',
305
- is_deploy: false,
306
- rank: 0,
307
- category_id: 7,
308
- created_time: '2021-10-12T07:20:44.323Z',
309
- },
310
- ],
311
- },
312
- ],
313
- };
314
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5pdC90ZW1wbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtCQUFlO0lBQ2IsSUFBSSxFQUFFLEdBQUc7SUFDVCxNQUFNLEVBQUUsU0FBUztJQUNqQixJQUFJLEVBQUU7UUFDSjtZQUNFLE9BQU8sRUFBRSxtQ0FBbUM7WUFDNUMsT0FBTyxFQUFFLHNEQUFzRDtZQUMvRCxLQUFLLEVBQUUsb0JBQW9CO1lBQzNCLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxFQUFFLEVBQUUsQ0FBQztvQkFDTCxPQUFPLEVBQUUseUNBQXlDO29CQUNsRCxPQUFPLEVBQUUsMkRBQTJEO29CQUNwRSxLQUFLLEVBQUUsZ0NBQWdDO29CQUN2QyxTQUFTLEVBQUUsSUFBSTtvQkFDZixJQUFJLEVBQUUsQ0FBQztvQkFDUCxXQUFXLEVBQUUsQ0FBQztvQkFDZCxZQUFZLEVBQUUsMEJBQTBCO2lCQUN6QztnQkFDRDtvQkFDRSxFQUFFLEVBQUUsQ0FBQztvQkFDTCxPQUFPLEVBQUUsd0NBQXdDO29CQUNqRCxPQUFPLEVBQUUsMERBQTBEO29CQUNuRSxLQUFLLEVBQUUsK0JBQStCO29CQUN0QyxTQUFTLEVBQUUsSUFBSTtvQkFDZixJQUFJLEVBQUUsQ0FBQztvQkFDUCxXQUFXLEVBQUUsQ0FBQztvQkFDZCxZQUFZLEVBQUUsMEJBQTBCO2lCQUN6QztnQkFDRDtvQkFDRSxFQUFFLEVBQUUsQ0FBQztvQkFDTCxPQUFPLEVBQUUsb0NBQW9DO29CQUM3QyxPQUFPLEVBQUUsc0RBQXNEO29CQUMvRCxLQUFLLEVBQUUsNkJBQTZCO29CQUNwQyxTQUFTLEVBQUUsS0FBSztvQkFDaEIsSUFBSSxFQUFFLENBQUM7b0JBQ1AsV0FBVyxFQUFFLENBQUM7b0JBQ2QsWUFBWSxFQUFFLDBCQUEwQjtpQkFDekM7Z0JBQ0Q7b0JBQ0UsRUFBRSxFQUFFLEVBQUU7b0JBQ04sT0FBTyxFQUFFLDJDQUEyQztv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