@serverless-devs/engine 0.1.6-beta.1 → 0.1.6-beta.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serverless-devs/engine",
3
- "version": "0.1.6-beta.1",
3
+ "version": "0.1.6-beta.2",
4
4
  "description": "a engine lib for serverless-devs",
5
5
  "main": "lib/index.js",
6
6
  "author": "xsahxl",
@@ -24,12 +24,12 @@
24
24
  "string-argv": "^0.3.2",
25
25
  "xstate": "^4.37.2",
26
26
  "@serverless-devs/credential": "^0.0.10",
27
- "@serverless-devs/load-application": "^0.0.15",
28
- "@serverless-devs/load-component": "^0.0.9",
27
+ "@serverless-devs/load-application": "^0.0.16-beta.1",
29
28
  "@serverless-devs/logger": "^0.0.6",
29
+ "@serverless-devs/load-component": "^0.0.9",
30
+ "@serverless-devs/secret": "^0.0.3",
30
31
  "@serverless-devs/parse-spec": "^0.0.29",
31
- "@serverless-devs/utils": "^0.0.18",
32
- "@serverless-devs/secret": "^0.0.3"
32
+ "@serverless-devs/utils": "^0.0.18"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@types/deep-diff": "^1.0.5",
@@ -1 +0,0 @@
1
- export {};
package/lib/converter.js DELETED
@@ -1,242 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const parse_spec_1 = require("@serverless-devs/parse-spec");
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const lodash_1 = require("lodash");
9
- const regex = /\$\{(.+?)\}/;
10
- const dipper = {
11
- model_cache: {
12
- type: 'fc3',
13
- source: {
14
- templateSource: {
15
- templateUrl: 'https://api.devsapp.cn/v3/packages/start-modelscope-v3/zipball/0.1.6'
16
- }
17
- },
18
- build: {
19
- workdir: './model_download'
20
- },
21
- variables: {
22
- modelCache: {
23
- value: 'xxx',
24
- sensitive: false
25
- }
26
- },
27
- props: {
28
- region: 'cn-hangzhou',
29
- role: 'acs:ram::1431999136518149:role/aliyunfcserverlessdevsrole',
30
- functionName: 'model-cache',
31
- handler: 'index.handler',
32
- runtime: 'python3.9',
33
- code: './model_cache',
34
- vpcConfig: 'auto',
35
- nasConfig: 'auto'
36
- }
37
- },
38
- model_download: {
39
- type: 'fc3',
40
- source: {
41
- templateSource: {
42
- templateUrl: 'https://api.devsapp.cn/v3/packages/start-modelscope-v3/zipball/0.1.6'
43
- }
44
- },
45
- build: {
46
- workdir: './model_download',
47
- command: 'pip3 install'
48
- },
49
- variables: {
50
- modelID: {
51
- value: 'xxx',
52
- sensitive: false
53
- },
54
- modelRevision: {
55
- value: 'xxx',
56
- sensitive: false
57
- },
58
- modelAccessToken: {
59
- value: 'xxx',
60
- sensitive: true
61
- },
62
- modelCache: {
63
- value: 'xxx',
64
- sensitive: false
65
- }
66
- },
67
- props: {
68
- region: 'cn-hangzhou',
69
- role: 'acs:ram::1431999136518149:role/aliyunfcserverlessdevsrole',
70
- functionName: 'model-download-func',
71
- handler: 'index.handler',
72
- runtime: 'python3.9',
73
- code: './model_download',
74
- vpcConfig: '${OUTPUT.model_cache.vpcConfig}',
75
- nasConfig: '${OUTPUT.model_cache.nasConfig}',
76
- environmentVariables: {
77
- MODEL_ID: '${modelID}',
78
- MODEL_VERSION: '${modelRevision}',
79
- MODELSCOPE_CACHE: '${OUTPUT.model_cache.nasConfig.mountPoints.0.mountDir}',
80
- MODELSCOPE_TOKEN: '${modelAccessToken}',
81
- MODELSCOPE_DOMAIN: '${modelCache}',
82
- MODEL_CACHE: '${model_cache.modelCache}',
83
- MODEL_ENV: '${ENV.modelEnv}'
84
- }
85
- }
86
- }
87
- };
88
- const s = {
89
- vars: {
90
- modelEnv: 'testing'
91
- },
92
- model_cache: {
93
- component: 'fc3',
94
- vars: {
95
- modelCache: 'xxx'
96
- },
97
- props: {
98
- region: 'cn-hangzhou',
99
- role: 'acs:ram::1431999136518149:role/aliyunfcserverlessdevsrole',
100
- functionName: 'model-cache',
101
- handler: 'index.handler',
102
- runtime: 'python3.9',
103
- code: './model_cache',
104
- vpcConfig: 'auto',
105
- nasConfig: 'auto'
106
- }
107
- },
108
- model_download: {
109
- component: 'fc3',
110
- vars: {
111
- modelID: 'xxx',
112
- modelRevision: 'xxx',
113
- modelCache: 'xxx'
114
- },
115
- props: {
116
- region: 'cn-hangzhou',
117
- role: 'acs:ram::1431999136518149:role/aliyunfcserverlessdevsrole',
118
- functionName: 'model-download-func',
119
- handler: 'index.handler',
120
- runtime: 'python3.9',
121
- code: './model_download',
122
- vpcConfig: '${resources.model_cache.output.vpcConfig}',
123
- nasConfig: '${resources.model_cache.output.nasConfig}',
124
- environmentVariables: {
125
- MODEL_ID: '${this.vars.modelID}',
126
- MODEL_VERSION: '${this.vars.modelRevision}',
127
- MODELSCOPE_CACHE: '${resources.model_cache.output.nasConfig.mountPoints.0.mountDir}',
128
- MODELSCOPE_TOKEN: '${secret(modelAccessToken)}',
129
- MODELSCOPE_DOMAIN: '${this.vars.modelCache}',
130
- MODEL_CACHE: '${resources.model_cache.vars.modelCache}',
131
- MODEL_ENV: '${vars.modelEnv}'
132
- }
133
- }
134
- }
135
- };
136
- const context = {};
137
- for (const i of Object.keys(dipper)) {
138
- const resource = (0, lodash_1.get)(dipper, i);
139
- // type -> component
140
- const type = (0, lodash_1.get)(resource, 'type');
141
- (0, lodash_1.set)(resource, 'component', type);
142
- (0, lodash_1.unset)(resource, 'type');
143
- const variables = (0, lodash_1.get)(resource, 'variables');
144
- // variables -> vars
145
- const vars = {};
146
- for (const j of Object.keys(variables)) {
147
- const variable = (0, lodash_1.get)(variables, j);
148
- const value = (0, lodash_1.get)(variable, 'value');
149
- const sensitive = (0, lodash_1.get)(variable, 'sensitive');
150
- if (!sensitive) {
151
- (0, lodash_1.set)(vars, j, value);
152
- // ${modelRevision} -> ${this.vars.modelRevision}
153
- (0, lodash_1.set)(context, `${i}.${j}`, `\$\{this.vars.${j}\}`);
154
- }
155
- else {
156
- // ${modelAccessToken} -> ${secret(modelAccessToken)}
157
- (0, lodash_1.set)(context, `${i}.${j}`, `\$\{secret(${j})\}`);
158
- }
159
- }
160
- (0, lodash_1.set)(resource, 'vars', vars);
161
- (0, lodash_1.unset)(resource, 'variables');
162
- // unset build
163
- (0, lodash_1.unset)(resource, 'build');
164
- // unset source
165
- (0, lodash_1.unset)(resource, 'source');
166
- }
167
- // ${model_cache.modelCache} -> ${resources.model_cache.vars.modelCache}
168
- for (const i of Object.keys(dipper)) {
169
- const vars = (0, lodash_1.cloneDeep)((0, lodash_1.get)(dipper, `${i}.vars`));
170
- for (const j of Object.keys(vars)) {
171
- vars[j] = `\${resources.${i}.vars.${j}}`;
172
- }
173
- for (const j of Object.keys(context)) {
174
- (0, lodash_1.set)(context, `${j}.${i}`, vars);
175
- }
176
- }
177
- // ${OUTPUT.model_cache.vpcConfig} -> ${resources.model_cache.output.vpcConfig}
178
- for (const i of Object.keys(dipper)) {
179
- const props = (0, lodash_1.get)(dipper, `${i}.props`);
180
- // 深度遍历props
181
- const deepRead = (obj) => {
182
- for (const j of Object.keys(obj)) {
183
- if (typeof obj[j] === 'object') {
184
- deepRead(obj[j]);
185
- }
186
- else if (typeof obj[j] === 'string') {
187
- if (regex.test(obj[j])) {
188
- const match = obj[j].match(regex);
189
- if (match && match[1].startsWith('OUTPUT.')) {
190
- const value = match[1].split('.');
191
- const rest = value.slice(2).join('.');
192
- value.push('__value');
193
- const value2 = value.join('.');
194
- (0, lodash_1.set)(obj, j, `\$\{${value2}\}`);
195
- (0, lodash_1.set)(context, `${i}.${match[1]}.__value`, `\$\{resources.${value[1]}.output.${rest}\}`);
196
- }
197
- }
198
- }
199
- }
200
- };
201
- deepRead(props);
202
- }
203
- // ${ENV.modelEnv} -> ${vars.modelEnv}
204
- const vars = {};
205
- for (const i of Object.keys(dipper)) {
206
- const props = (0, lodash_1.cloneDeep)((0, lodash_1.get)(dipper, `${i}.props`));
207
- // 深度遍历props
208
- const deepRead = (obj) => {
209
- for (const j of Object.keys(obj)) {
210
- if (typeof obj[j] === 'object') {
211
- deepRead(obj[j]);
212
- }
213
- else if (typeof obj[j] === 'string') {
214
- if (regex.test(obj[j])) {
215
- const match = obj[j].match(regex);
216
- if (match && match[1].startsWith('ENV.')) {
217
- const value = match[1].replace('ENV.', 'vars.');
218
- (0, lodash_1.set)(vars, match[1].split('.')[1], 'testing');
219
- (0, lodash_1.set)(context, `${i}.${match[1]}`, `\$\{${value}\}`);
220
- }
221
- }
222
- }
223
- }
224
- };
225
- deepRead(props);
226
- }
227
- console.log('--------context---------');
228
- console.log(JSON.stringify(context));
229
- console.log('--------dipper----------');
230
- console.log(JSON.stringify(dipper));
231
- // global replace
232
- const res = {};
233
- for (const i of Object.keys(dipper)) {
234
- const _res = (0, parse_spec_1.getInputs)((0, lodash_1.get)(dipper, i), (0, lodash_1.get)(context, i), false);
235
- (0, lodash_1.set)(res, i, _res);
236
- }
237
- (0, lodash_1.set)(res, 'vars', vars);
238
- console.log('--------res---------');
239
- console.log(JSON.stringify(res));
240
- console.log('--------is result correct? --------');
241
- console.log(chalk_1.default.green((0, lodash_1.isEqual)(res, s)));
242
- //# sourceMappingURL=converter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"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"}