@voxgig/system 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cmd.ts +16 -4
- package/dist/cmd.js +14 -2
- package/dist/cmd.js.map +1 -1
- package/dist/lib/add.d.ts +4 -1
- package/dist/lib/add.js +84 -0
- package/dist/lib/add.js.map +1 -1
- package/dist/lib/template.js +60 -17
- package/dist/lib/template.js.map +1 -1
- package/dist/system.d.ts +2 -1
- package/dist/system.js +1 -0
- package/dist/system.js.map +1 -1
- package/lib/add.ts +98 -1
- package/lib/template.ts +64 -19
- package/package.json +1 -1
- package/system.ts +2 -1
package/cmd.ts
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
// are found via model/model.jsonic and appended to. Run the project's
|
|
17
17
|
// model build (npm run model-build) afterwards to compile.
|
|
18
18
|
|
|
19
|
-
import { addEntity, addSrv, addMsg, addFields } from './lib/add'
|
|
19
|
+
import { addEntity, addSrv, addMsg, addFields, addEnv } from './lib/add'
|
|
20
20
|
import {
|
|
21
21
|
listTemplates, ejectFragment, ejectCode, diffTemplates,
|
|
22
22
|
} from './lib/template'
|
|
@@ -29,6 +29,7 @@ const USAGE = `Usage: voxgig-system <command> [args...]
|
|
|
29
29
|
add msg [name|spec] add a message (path: thing.save.item)
|
|
30
30
|
add field <entity> [field...] add field(s) to an entity
|
|
31
31
|
add fields <entity> [field...] alias of add field
|
|
32
|
+
add env [name|spec] declare a target environment
|
|
32
33
|
|
|
33
34
|
template list templates + the layer providing each
|
|
34
35
|
template eject <name> copy a fragment into backend/tm/lambda/
|
|
@@ -40,6 +41,7 @@ spec: jsonic definition with config options, e.g.
|
|
|
40
41
|
add entity '{name:thing,field:{title:{kind:String}}}'
|
|
41
42
|
add srv '{name:thing,user:{required:false}}'
|
|
42
43
|
add msg '{name:thing.save.item,params:{title:String}}'
|
|
44
|
+
add env aws | add env '{name:aws,region:eu-west-1,stage:prd}'
|
|
43
45
|
add field thing title 'done:Boolean' 'note:{kind:String,valid:Skip}'
|
|
44
46
|
|
|
45
47
|
Generation templates resolve in layers (first hit wins): project
|
|
@@ -140,6 +142,11 @@ async function main() {
|
|
|
140
142
|
const res = addMsg(start, args[0])
|
|
141
143
|
report([res])
|
|
142
144
|
}
|
|
145
|
+
else if ('env' === element) {
|
|
146
|
+
requireArgs(args, 1, 'add env')
|
|
147
|
+
const res = addEnv(start, args[0])
|
|
148
|
+
report([res])
|
|
149
|
+
}
|
|
143
150
|
else if ('field' === element || 'fields' === element) {
|
|
144
151
|
requireArgs(args, 2, 'add field')
|
|
145
152
|
const res = addFields(start, args[0], args.slice(1))
|
|
@@ -166,10 +173,15 @@ function requireArgs(args: string[], n: number, what: string) {
|
|
|
166
173
|
}
|
|
167
174
|
}
|
|
168
175
|
|
|
169
|
-
function report(results: { file: string, text: string }[]) {
|
|
176
|
+
function report(results: { file: string, text: string, skipped?: boolean }[]) {
|
|
170
177
|
for (const res of results) {
|
|
171
|
-
|
|
172
|
-
|
|
178
|
+
if (res.skipped) {
|
|
179
|
+
console.log('already present (no change): ' + res.file)
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
console.log('appended to ' + res.file + ':')
|
|
183
|
+
console.log(res.text)
|
|
184
|
+
}
|
|
173
185
|
}
|
|
174
186
|
}
|
|
175
187
|
|
package/dist/cmd.js
CHANGED
|
@@ -26,6 +26,7 @@ const USAGE = `Usage: voxgig-system <command> [args...]
|
|
|
26
26
|
add msg [name|spec] add a message (path: thing.save.item)
|
|
27
27
|
add field <entity> [field...] add field(s) to an entity
|
|
28
28
|
add fields <entity> [field...] alias of add field
|
|
29
|
+
add env [name|spec] declare a target environment
|
|
29
30
|
|
|
30
31
|
template list templates + the layer providing each
|
|
31
32
|
template eject <name> copy a fragment into backend/tm/lambda/
|
|
@@ -37,6 +38,7 @@ spec: jsonic definition with config options, e.g.
|
|
|
37
38
|
add entity '{name:thing,field:{title:{kind:String}}}'
|
|
38
39
|
add srv '{name:thing,user:{required:false}}'
|
|
39
40
|
add msg '{name:thing.save.item,params:{title:String}}'
|
|
41
|
+
add env aws | add env '{name:aws,region:eu-west-1,stage:prd}'
|
|
40
42
|
add field thing title 'done:Boolean' 'note:{kind:String,valid:Skip}'
|
|
41
43
|
|
|
42
44
|
Generation templates resolve in layers (first hit wins): project
|
|
@@ -128,6 +130,11 @@ async function main() {
|
|
|
128
130
|
const res = (0, add_1.addMsg)(start, args[0]);
|
|
129
131
|
report([res]);
|
|
130
132
|
}
|
|
133
|
+
else if ('env' === element) {
|
|
134
|
+
requireArgs(args, 1, 'add env');
|
|
135
|
+
const res = (0, add_1.addEnv)(start, args[0]);
|
|
136
|
+
report([res]);
|
|
137
|
+
}
|
|
131
138
|
else if ('field' === element || 'fields' === element) {
|
|
132
139
|
requireArgs(args, 2, 'add field');
|
|
133
140
|
const res = (0, add_1.addFields)(start, args[0], args.slice(1));
|
|
@@ -152,8 +159,13 @@ function requireArgs(args, n, what) {
|
|
|
152
159
|
}
|
|
153
160
|
function report(results) {
|
|
154
161
|
for (const res of results) {
|
|
155
|
-
|
|
156
|
-
|
|
162
|
+
if (res.skipped) {
|
|
163
|
+
console.log('already present (no change): ' + res.file);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
console.log('appended to ' + res.file + ':');
|
|
167
|
+
console.log(res.text);
|
|
168
|
+
}
|
|
157
169
|
}
|
|
158
170
|
}
|
|
159
171
|
if (require.main === module) {
|
package/dist/cmd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd.js","sourceRoot":"","sources":["../cmd.ts"],"names":[],"mappings":";;AACA,+CAA+C;;
|
|
1
|
+
{"version":3,"file":"cmd.js","sourceRoot":"","sources":["../cmd.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/add.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export type ModelFiles = {
|
|
|
8
8
|
export type AddResult = {
|
|
9
9
|
file: string;
|
|
10
10
|
text: string;
|
|
11
|
+
skipped?: boolean;
|
|
11
12
|
};
|
|
12
13
|
declare function resolveModelFolder(start: string): string;
|
|
13
14
|
declare function resolveModelFiles(start: string): ModelFiles;
|
|
@@ -16,4 +17,6 @@ declare function addEntity(start: string, arg: string): AddResult;
|
|
|
16
17
|
declare function addSrv(start: string, arg: string): AddResult;
|
|
17
18
|
declare function addMsg(start: string, arg: string): AddResult;
|
|
18
19
|
declare function addFields(start: string, entref: string, fieldargs: string[]): AddResult[];
|
|
19
|
-
export { resolveModelFolder, resolveModelFiles, addEntity, addSrv, addMsg, addFields, fmt, };
|
|
20
|
+
export { resolveModelFolder, resolveModelFiles, addEntity, addSrv, addMsg, addFields, addEnv, ENV_KINDS, fmt, };
|
|
21
|
+
declare const ENV_KINDS: string[];
|
|
22
|
+
declare function addEnv(start: string, arg: string): AddResult;
|
package/dist/lib/add.js
CHANGED
|
@@ -4,12 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
5
|
};
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ENV_KINDS = void 0;
|
|
7
8
|
exports.resolveModelFolder = resolveModelFolder;
|
|
8
9
|
exports.resolveModelFiles = resolveModelFiles;
|
|
9
10
|
exports.addEntity = addEntity;
|
|
10
11
|
exports.addSrv = addSrv;
|
|
11
12
|
exports.addMsg = addMsg;
|
|
12
13
|
exports.addFields = addFields;
|
|
14
|
+
exports.addEnv = addEnv;
|
|
13
15
|
exports.fmt = fmt;
|
|
14
16
|
// Add elements (entity, srv, msg, field) to a Voxgig system project by
|
|
15
17
|
// appending jsonic blocks to the project's model source files. Appending
|
|
@@ -147,6 +149,21 @@ function parseArg(arg, kind) {
|
|
|
147
149
|
throw new Error('invalid ' + kind + ' argument: ' + arg +
|
|
148
150
|
' - provide a name, {name:...,...spec}, or {thename:{...spec}}');
|
|
149
151
|
}
|
|
152
|
+
// The last compiled model (model.json next to the model source), used to
|
|
153
|
+
// make the add operations idempotent: an element that already exists in
|
|
154
|
+
// the compiled model is skipped rather than appended again. Formatting
|
|
155
|
+
// of the sources is irrelevant since the check is semantic. Returns null
|
|
156
|
+
// when the model has not been compiled yet (adds then simply append -
|
|
157
|
+
// aontu unification of an identical element converges anyway).
|
|
158
|
+
function compiledModel(files) {
|
|
159
|
+
const p = node_path_1.default.join(files.folder, 'model.json');
|
|
160
|
+
try {
|
|
161
|
+
return JSON.parse(node_fs_1.default.readFileSync(p, 'utf8'));
|
|
162
|
+
}
|
|
163
|
+
catch (e) {
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
150
167
|
// Default zone for entities: the single non-sys zone shape spread already
|
|
151
168
|
// in the entity file (`<zone>: &: ...`), else 'app'.
|
|
152
169
|
function defaultZone(entFile) {
|
|
@@ -160,6 +177,7 @@ function defaultZone(entFile) {
|
|
|
160
177
|
// add entity [String(name)|Jsonic(spec)]
|
|
161
178
|
// Names may be zone-qualified: app/thing. Spec: { name, zone?, ...def }.
|
|
162
179
|
function addEntity(start, arg) {
|
|
180
|
+
var _a, _b, _c;
|
|
163
181
|
const files = resolveModelFiles(start);
|
|
164
182
|
const { name: rawname, def } = parseArg(arg, 'entity');
|
|
165
183
|
let zone = def.zone;
|
|
@@ -171,6 +189,11 @@ function addEntity(start, arg) {
|
|
|
171
189
|
name = parts[1];
|
|
172
190
|
}
|
|
173
191
|
zone = zone || defaultZone(files.ent);
|
|
192
|
+
// Idempotent: entity already in the compiled model.
|
|
193
|
+
const model = compiledModel(files);
|
|
194
|
+
if ((_c = (_b = (_a = model === null || model === void 0 ? void 0 : model.main) === null || _a === void 0 ? void 0 : _a.ent) === null || _b === void 0 ? void 0 : _b[zone]) === null || _c === void 0 ? void 0 : _c[name]) {
|
|
195
|
+
return { file: files.ent, text: '', skipped: true };
|
|
196
|
+
}
|
|
174
197
|
if (null == def.field) {
|
|
175
198
|
def.field = {};
|
|
176
199
|
}
|
|
@@ -188,8 +211,14 @@ function addEntity(start, arg) {
|
|
|
188
211
|
// The plain-name form wires the service to its aim messages and a private
|
|
189
212
|
// web area (matching the standard project scaffold).
|
|
190
213
|
function addSrv(start, arg) {
|
|
214
|
+
var _a, _b;
|
|
191
215
|
const files = resolveModelFiles(start);
|
|
192
216
|
const { name, def } = parseArg(arg, 'srv');
|
|
217
|
+
// Idempotent: service already in the compiled model.
|
|
218
|
+
const model = compiledModel(files);
|
|
219
|
+
if ((_b = (_a = model === null || model === void 0 ? void 0 : model.main) === null || _a === void 0 ? void 0 : _a.srv) === null || _b === void 0 ? void 0 : _b[name]) {
|
|
220
|
+
return { file: files.srv, text: '', skipped: true };
|
|
221
|
+
}
|
|
193
222
|
if (null == def.in) {
|
|
194
223
|
def.in = {
|
|
195
224
|
aim: { [name]: {} },
|
|
@@ -212,6 +241,7 @@ function addSrv(start, arg) {
|
|
|
212
241
|
// 'aim' is prepended if missing. Spec: { name: 'thing.save.item', ...meta }
|
|
213
242
|
// where meta (params, transport, file, ...) lands under the '$' key.
|
|
214
243
|
function addMsg(start, arg) {
|
|
244
|
+
var _a;
|
|
215
245
|
const files = resolveModelFiles(start);
|
|
216
246
|
// A pure message path (thing.save.item, aim:thing:save:item) is taken
|
|
217
247
|
// as-is - jsonic would otherwise parse the colon form as a nested map.
|
|
@@ -244,6 +274,17 @@ function addMsg(start, arg) {
|
|
|
244
274
|
if (path.length < 2) {
|
|
245
275
|
throw new Error('invalid msg path: ' + path.join('.'));
|
|
246
276
|
}
|
|
277
|
+
// Idempotent: message path already in the compiled model.
|
|
278
|
+
const model = compiledModel(files);
|
|
279
|
+
if (null != model) {
|
|
280
|
+
let node = (_a = model.main) === null || _a === void 0 ? void 0 : _a.msg;
|
|
281
|
+
for (const p of path) {
|
|
282
|
+
node = node === null || node === void 0 ? void 0 : node[p];
|
|
283
|
+
}
|
|
284
|
+
if (null != node) {
|
|
285
|
+
return { file: files.msg, text: '', skipped: true };
|
|
286
|
+
}
|
|
287
|
+
}
|
|
247
288
|
const prefix = path.join(': ');
|
|
248
289
|
const text = 0 === Object.keys(meta).length ?
|
|
249
290
|
'\n' + prefix + ': {}' :
|
|
@@ -255,6 +296,7 @@ function addMsg(start, arg) {
|
|
|
255
296
|
// | {name:title,kind:String}
|
|
256
297
|
// A label is derived from the name when not given.
|
|
257
298
|
function addFields(start, entref, fieldargs) {
|
|
299
|
+
var _a, _b, _c, _d, _e;
|
|
258
300
|
const files = resolveModelFiles(start);
|
|
259
301
|
let zone;
|
|
260
302
|
let name;
|
|
@@ -268,6 +310,7 @@ function addFields(start, entref, fieldargs) {
|
|
|
268
310
|
if (0 === fieldargs.length) {
|
|
269
311
|
throw new Error('no fields given');
|
|
270
312
|
}
|
|
313
|
+
const model = compiledModel(files);
|
|
271
314
|
const out = [];
|
|
272
315
|
for (const arg of fieldargs) {
|
|
273
316
|
let parsed;
|
|
@@ -303,6 +346,11 @@ function addFields(start, entref, fieldargs) {
|
|
|
303
346
|
else {
|
|
304
347
|
throw new Error('invalid field argument: ' + arg);
|
|
305
348
|
}
|
|
349
|
+
// Idempotent: field already on the entity in the compiled model.
|
|
350
|
+
if ((_e = (_d = (_c = (_b = (_a = model === null || model === void 0 ? void 0 : model.main) === null || _a === void 0 ? void 0 : _a.ent) === null || _b === void 0 ? void 0 : _b[zone]) === null || _c === void 0 ? void 0 : _c[name]) === null || _d === void 0 ? void 0 : _d.field) === null || _e === void 0 ? void 0 : _e[fname]) {
|
|
351
|
+
out.push({ file: files.ent, text: '', skipped: true });
|
|
352
|
+
continue;
|
|
353
|
+
}
|
|
306
354
|
if (null == def.kind) {
|
|
307
355
|
def.kind = 'String';
|
|
308
356
|
}
|
|
@@ -325,4 +373,40 @@ function addFields(start, entref, fieldargs) {
|
|
|
325
373
|
}
|
|
326
374
|
return out;
|
|
327
375
|
}
|
|
376
|
+
// The environment kinds @voxgig/build's EnvGen supports (kind defaults
|
|
377
|
+
// to the env name; an unknown kind fails generation with this list too).
|
|
378
|
+
const ENV_KINDS = ['local', 'basic', 'docker', 'vm', 'aws', 'azure', 'cloudflare'];
|
|
379
|
+
exports.ENV_KINDS = ENV_KINDS;
|
|
380
|
+
// add env [String(name)|Jsonic(spec)]
|
|
381
|
+
// Declares a target environment in the model (main: env: <name>: {...}).
|
|
382
|
+
// Name form: `add env aws`. Spec form: `add env
|
|
383
|
+
// '{name:aws2,kind:aws,region:eu-west-1,stage:prd}'`. Appends to the
|
|
384
|
+
// model file referenced as `main: env: @"..."` when present, else to the
|
|
385
|
+
// root model file.
|
|
386
|
+
function addEnv(start, arg) {
|
|
387
|
+
var _a, _b;
|
|
388
|
+
const files = resolveModelFiles(start);
|
|
389
|
+
const { name, def } = parseArg(arg, 'env');
|
|
390
|
+
const kind = def.kind || name;
|
|
391
|
+
if (!ENV_KINDS.includes(kind)) {
|
|
392
|
+
throw new Error('unknown environment kind: ' + kind +
|
|
393
|
+
' (known: ' + ENV_KINDS.join(', ') +
|
|
394
|
+
'; use {name:..., kind:...} for a custom-named env)');
|
|
395
|
+
}
|
|
396
|
+
// Idempotent: environment already in the compiled model.
|
|
397
|
+
const model = compiledModel(files);
|
|
398
|
+
if ((_b = (_a = model === null || model === void 0 ? void 0 : model.main) === null || _a === void 0 ? void 0 : _a.env) === null || _b === void 0 ? void 0 : _b[name]) {
|
|
399
|
+
return { file: files.model, text: '', skipped: true };
|
|
400
|
+
}
|
|
401
|
+
if (null == def.active) {
|
|
402
|
+
def.active = true;
|
|
403
|
+
}
|
|
404
|
+
// Target: the env model file when referenced, else the root model file.
|
|
405
|
+
const src = node_fs_1.default.readFileSync(files.model, 'utf8');
|
|
406
|
+
const m = src.match(/main:\s*env:\s*@"([^"]+)"/);
|
|
407
|
+
const target = m ? node_path_1.default.join(files.folder, m[1]) : files.model;
|
|
408
|
+
const prefix = m ? '' : 'main: env: ';
|
|
409
|
+
const text = '\n' + prefix + name + ': ' + fmt(def, 0);
|
|
410
|
+
return append(target, text);
|
|
411
|
+
}
|
|
328
412
|
//# sourceMappingURL=add.js.map
|
package/dist/lib/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../lib/add.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../lib/add.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/template.js
CHANGED
|
@@ -15,9 +15,12 @@ exports.diffTemplates = diffTemplates;
|
|
|
15
15
|
//
|
|
16
16
|
// Layered resolution (first hit wins):
|
|
17
17
|
// 1. backend/src/gen/<name>.ts compiled generator override (deep custom)
|
|
18
|
-
// 2. backend/tm
|
|
18
|
+
// 2. backend/tm/<area>/<frag> project fragment (text-level custom)
|
|
19
19
|
// 3. @voxgig/build package defaults
|
|
20
20
|
//
|
|
21
|
+
// Fragment names are area-qualified (lambda/srv.yml.frag,
|
|
22
|
+
// env/aws/serverless.yml.frag); bare names default to the lambda area.
|
|
23
|
+
//
|
|
21
24
|
// eject copies a package fragment (or, with code=true, a template source
|
|
22
25
|
// rewired to the package's public API) into the project, recording
|
|
23
26
|
// provenance in tm/lambda/.ejected.json so diff can show upstream drift
|
|
@@ -32,9 +35,9 @@ const GENERATORS = ['srv_yml', 'srv_handler', 'res_yml'];
|
|
|
32
35
|
exports.GENERATORS = GENERATORS;
|
|
33
36
|
// Generator shorthand -> default fragment.
|
|
34
37
|
const GENERATOR_FRAG = {
|
|
35
|
-
srv_yml: 'srv.yml.frag',
|
|
36
|
-
srv_handler: 'srv_handler.ts.frag',
|
|
37
|
-
res_yml: 'res.role.yml.frag',
|
|
38
|
+
srv_yml: 'lambda/srv.yml.frag',
|
|
39
|
+
srv_handler: 'lambda/srv_handler.ts.frag',
|
|
40
|
+
res_yml: 'lambda/res.role.yml.frag',
|
|
38
41
|
};
|
|
39
42
|
function resolveProject(start) {
|
|
40
43
|
const files = (0, add_1.resolveModelFiles)(start);
|
|
@@ -52,10 +55,10 @@ function resolveProject(start) {
|
|
|
52
55
|
const pkg = node_path_1.default.dirname(pkgjson);
|
|
53
56
|
return {
|
|
54
57
|
backend,
|
|
55
|
-
tm: node_path_1.default.join(backend, 'tm'
|
|
58
|
+
tm: node_path_1.default.join(backend, 'tm'),
|
|
56
59
|
gen: node_path_1.default.join(backend, 'src', 'gen'),
|
|
57
60
|
pkg,
|
|
58
|
-
pkgtm: node_path_1.default.join(pkg, 'tm'
|
|
61
|
+
pkgtm: node_path_1.default.join(pkg, 'tm'),
|
|
59
62
|
};
|
|
60
63
|
}
|
|
61
64
|
function pkgVersion(project) {
|
|
@@ -64,13 +67,54 @@ function pkgVersion(project) {
|
|
|
64
67
|
function sha256(content) {
|
|
65
68
|
return node_crypto_1.default.createHash('sha256').update(content).digest('hex');
|
|
66
69
|
}
|
|
70
|
+
// Provenance lives at tm/.ejected.json; the pre-area location
|
|
71
|
+
// (tm/lambda/.ejected.json) and bare fragment keys are still read, with
|
|
72
|
+
// bare keys normalized to the lambda area.
|
|
67
73
|
function readProvenance(project) {
|
|
68
|
-
const
|
|
69
|
-
|
|
74
|
+
const out = {};
|
|
75
|
+
for (const p of [
|
|
76
|
+
node_path_1.default.join(project.tm, 'lambda', '.ejected.json'),
|
|
77
|
+
node_path_1.default.join(project.tm, '.ejected.json'),
|
|
78
|
+
]) {
|
|
79
|
+
if (node_fs_1.default.existsSync(p)) {
|
|
80
|
+
const prov = JSON.parse(node_fs_1.default.readFileSync(p, 'utf8'));
|
|
81
|
+
for (const key of Object.keys(prov)) {
|
|
82
|
+
const norm = (key.includes('/') || key.startsWith('code:')) ?
|
|
83
|
+
key : 'lambda/' + key;
|
|
84
|
+
out[norm] = prov[key];
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return out;
|
|
70
89
|
}
|
|
71
90
|
function writeProvenance(project, prov) {
|
|
72
91
|
node_fs_1.default.mkdirSync(project.tm, { recursive: true });
|
|
73
92
|
node_fs_1.default.writeFileSync(node_path_1.default.join(project.tm, '.ejected.json'), JSON.stringify(prov, null, 2) + '\n');
|
|
93
|
+
const old = node_path_1.default.join(project.tm, 'lambda', '.ejected.json');
|
|
94
|
+
if (node_fs_1.default.existsSync(old)) {
|
|
95
|
+
node_fs_1.default.rmSync(old);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// All package fragments, as area-qualified relative names.
|
|
99
|
+
function pkgFragments(project) {
|
|
100
|
+
const out = [];
|
|
101
|
+
const walk = (rel) => {
|
|
102
|
+
const dir = node_path_1.default.join(project.pkgtm, rel);
|
|
103
|
+
if (!node_fs_1.default.existsSync(dir)) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
for (const e of node_fs_1.default.readdirSync(dir, { withFileTypes: true })) {
|
|
107
|
+
const relpath = '' === rel ? e.name : rel + '/' + e.name;
|
|
108
|
+
if (e.isDirectory()) {
|
|
109
|
+
walk(relpath);
|
|
110
|
+
}
|
|
111
|
+
else if (e.name.endsWith('.frag')) {
|
|
112
|
+
out.push(relpath);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
walk('');
|
|
117
|
+
return out.sort();
|
|
74
118
|
}
|
|
75
119
|
// List each template with the layer that currently provides it.
|
|
76
120
|
function listTemplates(start) {
|
|
@@ -85,14 +129,12 @@ function listTemplates(start) {
|
|
|
85
129
|
'project (src/gen/' + gen + '.ts)' : 'package',
|
|
86
130
|
});
|
|
87
131
|
}
|
|
88
|
-
const
|
|
89
|
-
.filter((f) => f.endsWith('.frag')).sort();
|
|
90
|
-
for (const frag of frags) {
|
|
132
|
+
for (const frag of pkgFragments(project)) {
|
|
91
133
|
rows.push({
|
|
92
134
|
name: frag,
|
|
93
135
|
kind: 'fragment',
|
|
94
136
|
layer: node_fs_1.default.existsSync(node_path_1.default.join(project.tm, frag)) ?
|
|
95
|
-
'project (tm/
|
|
137
|
+
'project (tm/' + frag + ')' : 'package',
|
|
96
138
|
});
|
|
97
139
|
}
|
|
98
140
|
return rows;
|
|
@@ -100,20 +142,21 @@ function listTemplates(start) {
|
|
|
100
142
|
// Eject a fragment (text template) into backend/tm/lambda/.
|
|
101
143
|
function ejectFragment(start, name) {
|
|
102
144
|
const project = resolveProject(start);
|
|
103
|
-
|
|
145
|
+
let frag = GENERATOR_FRAG[name] || name;
|
|
146
|
+
if (!frag.includes('/')) {
|
|
147
|
+
frag = 'lambda/' + frag;
|
|
148
|
+
}
|
|
104
149
|
const srcpath = node_path_1.default.join(project.pkgtm, frag);
|
|
105
150
|
if (!node_fs_1.default.existsSync(srcpath)) {
|
|
106
|
-
const avail = node_fs_1.default.readdirSync(project.pkgtm)
|
|
107
|
-
.filter((f) => f.endsWith('.frag')).sort();
|
|
108
151
|
throw new Error('unknown fragment: ' + frag +
|
|
109
|
-
' (available: ' +
|
|
152
|
+
' (available: ' + pkgFragments(project).join(', ') + ')');
|
|
110
153
|
}
|
|
111
154
|
const dest = node_path_1.default.join(project.tm, frag);
|
|
112
155
|
if (node_fs_1.default.existsSync(dest)) {
|
|
113
156
|
throw new Error('already ejected: ' + node_path_1.default.relative(start, dest));
|
|
114
157
|
}
|
|
115
158
|
const content = node_fs_1.default.readFileSync(srcpath, 'utf8');
|
|
116
|
-
node_fs_1.default.mkdirSync(
|
|
159
|
+
node_fs_1.default.mkdirSync(node_path_1.default.dirname(dest), { recursive: true });
|
|
117
160
|
node_fs_1.default.writeFileSync(dest, content);
|
|
118
161
|
const prov = readProvenance(project);
|
|
119
162
|
prov[frag] = {
|
package/dist/lib/template.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../lib/template.ts"],"names":[],"mappings":";AAAA,+CAA+C;;;;;;
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../lib/template.ts"],"names":[],"mappings":"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"}
|
package/dist/system.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Msg } from './lib/types';
|
|
2
2
|
import { Utility } from './lib/utility';
|
|
3
3
|
import { MakeSrv } from './srv/make';
|
|
4
|
-
import { addEntity, addSrv, addMsg, addFields, resolveModelFiles } from './lib/add';
|
|
4
|
+
import { addEntity, addSrv, addMsg, addFields, addEnv, resolveModelFiles } from './lib/add';
|
|
5
5
|
import { listTemplates, ejectFragment, ejectCode, diffTemplates } from './lib/template';
|
|
6
6
|
declare function messages(seneca: any, options: any, reload: any): void;
|
|
7
7
|
declare function gubuify(params: any, Gubu: any): any;
|
|
@@ -25,6 +25,7 @@ declare const Add: {
|
|
|
25
25
|
srv: typeof addSrv;
|
|
26
26
|
msg: typeof addMsg;
|
|
27
27
|
fields: typeof addFields;
|
|
28
|
+
env: typeof addEnv;
|
|
28
29
|
resolveModelFiles: typeof resolveModelFiles;
|
|
29
30
|
};
|
|
30
31
|
declare const Template: {
|
package/dist/system.js
CHANGED
package/dist/system.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.js","sourceRoot":"","sources":["../system.ts"],"names":[],"mappings":";AAAA,+CAA+C;;;;;;
|
|
1
|
+
{"version":3,"file":"system.js","sourceRoot":"","sources":["../system.ts"],"names":[],"mappings":"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"}
|
package/lib/add.ts
CHANGED
|
@@ -29,7 +29,8 @@ export type ModelFiles = {
|
|
|
29
29
|
|
|
30
30
|
export type AddResult = {
|
|
31
31
|
file: string // file appended to
|
|
32
|
-
text: string // the appended block
|
|
32
|
+
text: string // the appended block ('' when skipped)
|
|
33
|
+
skipped?: boolean // true when the element already exists (no change)
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
|
|
@@ -179,6 +180,23 @@ function parseArg(arg: string, kind: string): { name: string, def: any } {
|
|
|
179
180
|
}
|
|
180
181
|
|
|
181
182
|
|
|
183
|
+
// The last compiled model (model.json next to the model source), used to
|
|
184
|
+
// make the add operations idempotent: an element that already exists in
|
|
185
|
+
// the compiled model is skipped rather than appended again. Formatting
|
|
186
|
+
// of the sources is irrelevant since the check is semantic. Returns null
|
|
187
|
+
// when the model has not been compiled yet (adds then simply append -
|
|
188
|
+
// aontu unification of an identical element converges anyway).
|
|
189
|
+
function compiledModel(files: ModelFiles): any {
|
|
190
|
+
const p = Path.join(files.folder, 'model.json')
|
|
191
|
+
try {
|
|
192
|
+
return JSON.parse(Fs.readFileSync(p, 'utf8'))
|
|
193
|
+
}
|
|
194
|
+
catch (e: any) {
|
|
195
|
+
return null
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
|
|
182
200
|
// Default zone for entities: the single non-sys zone shape spread already
|
|
183
201
|
// in the entity file (`<zone>: &: ...`), else 'app'.
|
|
184
202
|
function defaultZone(entFile: string): string {
|
|
@@ -207,6 +225,12 @@ function addEntity(start: string, arg: string): AddResult {
|
|
|
207
225
|
}
|
|
208
226
|
zone = zone || defaultZone(files.ent)
|
|
209
227
|
|
|
228
|
+
// Idempotent: entity already in the compiled model.
|
|
229
|
+
const model = compiledModel(files)
|
|
230
|
+
if (model?.main?.ent?.[zone]?.[name]) {
|
|
231
|
+
return { file: files.ent, text: '', skipped: true }
|
|
232
|
+
}
|
|
233
|
+
|
|
210
234
|
if (null == def.field) {
|
|
211
235
|
def.field = {}
|
|
212
236
|
}
|
|
@@ -232,6 +256,12 @@ function addSrv(start: string, arg: string): AddResult {
|
|
|
232
256
|
const files = resolveModelFiles(start)
|
|
233
257
|
const { name, def } = parseArg(arg, 'srv')
|
|
234
258
|
|
|
259
|
+
// Idempotent: service already in the compiled model.
|
|
260
|
+
const model = compiledModel(files)
|
|
261
|
+
if (model?.main?.srv?.[name]) {
|
|
262
|
+
return { file: files.srv, text: '', skipped: true }
|
|
263
|
+
}
|
|
264
|
+
|
|
235
265
|
if (null == def.in) {
|
|
236
266
|
def.in = {
|
|
237
267
|
aim: { [name]: {} },
|
|
@@ -296,6 +326,18 @@ function addMsg(start: string, arg: string): AddResult {
|
|
|
296
326
|
throw new Error('invalid msg path: ' + path.join('.'))
|
|
297
327
|
}
|
|
298
328
|
|
|
329
|
+
// Idempotent: message path already in the compiled model.
|
|
330
|
+
const model = compiledModel(files)
|
|
331
|
+
if (null != model) {
|
|
332
|
+
let node: any = model.main?.msg
|
|
333
|
+
for (const p of path) {
|
|
334
|
+
node = node?.[p]
|
|
335
|
+
}
|
|
336
|
+
if (null != node) {
|
|
337
|
+
return { file: files.msg, text: '', skipped: true }
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
|
|
299
341
|
const prefix = path.join(': ')
|
|
300
342
|
const text = 0 === Object.keys(meta).length ?
|
|
301
343
|
'\n' + prefix + ': {}' :
|
|
@@ -327,6 +369,8 @@ function addFields(start: string, entref: string, fieldargs: string[])
|
|
|
327
369
|
throw new Error('no fields given')
|
|
328
370
|
}
|
|
329
371
|
|
|
372
|
+
const model = compiledModel(files)
|
|
373
|
+
|
|
330
374
|
const out: AddResult[] = []
|
|
331
375
|
|
|
332
376
|
for (const arg of fieldargs) {
|
|
@@ -366,6 +410,12 @@ function addFields(start: string, entref: string, fieldargs: string[])
|
|
|
366
410
|
throw new Error('invalid field argument: ' + arg)
|
|
367
411
|
}
|
|
368
412
|
|
|
413
|
+
// Idempotent: field already on the entity in the compiled model.
|
|
414
|
+
if (model?.main?.ent?.[zone]?.[name]?.field?.[fname]) {
|
|
415
|
+
out.push({ file: files.ent, text: '', skipped: true })
|
|
416
|
+
continue
|
|
417
|
+
}
|
|
418
|
+
|
|
369
419
|
if (null == def.kind) {
|
|
370
420
|
def.kind = 'String'
|
|
371
421
|
}
|
|
@@ -401,5 +451,52 @@ export {
|
|
|
401
451
|
addSrv,
|
|
402
452
|
addMsg,
|
|
403
453
|
addFields,
|
|
454
|
+
addEnv,
|
|
455
|
+
ENV_KINDS,
|
|
404
456
|
fmt,
|
|
405
457
|
}
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
// The environment kinds @voxgig/build's EnvGen supports (kind defaults
|
|
461
|
+
// to the env name; an unknown kind fails generation with this list too).
|
|
462
|
+
const ENV_KINDS =
|
|
463
|
+
['local', 'basic', 'docker', 'vm', 'aws', 'azure', 'cloudflare']
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
// add env [String(name)|Jsonic(spec)]
|
|
467
|
+
// Declares a target environment in the model (main: env: <name>: {...}).
|
|
468
|
+
// Name form: `add env aws`. Spec form: `add env
|
|
469
|
+
// '{name:aws2,kind:aws,region:eu-west-1,stage:prd}'`. Appends to the
|
|
470
|
+
// model file referenced as `main: env: @"..."` when present, else to the
|
|
471
|
+
// root model file.
|
|
472
|
+
function addEnv(start: string, arg: string): AddResult {
|
|
473
|
+
const files = resolveModelFiles(start)
|
|
474
|
+
const { name, def } = parseArg(arg, 'env')
|
|
475
|
+
|
|
476
|
+
const kind = def.kind || name
|
|
477
|
+
if (!ENV_KINDS.includes(kind)) {
|
|
478
|
+
throw new Error('unknown environment kind: ' + kind +
|
|
479
|
+
' (known: ' + ENV_KINDS.join(', ') +
|
|
480
|
+
'; use {name:..., kind:...} for a custom-named env)')
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
// Idempotent: environment already in the compiled model.
|
|
484
|
+
const model = compiledModel(files)
|
|
485
|
+
if (model?.main?.env?.[name]) {
|
|
486
|
+
return { file: files.model, text: '', skipped: true }
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
if (null == def.active) {
|
|
490
|
+
def.active = true
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
// Target: the env model file when referenced, else the root model file.
|
|
494
|
+
const src = Fs.readFileSync(files.model, 'utf8')
|
|
495
|
+
const m = src.match(/main:\s*env:\s*@"([^"]+)"/)
|
|
496
|
+
const target = m ? Path.join(files.folder, m[1]) : files.model
|
|
497
|
+
const prefix = m ? '' : 'main: env: '
|
|
498
|
+
|
|
499
|
+
const text = '\n' + prefix + name + ': ' + fmt(def, 0)
|
|
500
|
+
|
|
501
|
+
return append(target, text)
|
|
502
|
+
}
|
package/lib/template.ts
CHANGED
|
@@ -5,9 +5,12 @@
|
|
|
5
5
|
//
|
|
6
6
|
// Layered resolution (first hit wins):
|
|
7
7
|
// 1. backend/src/gen/<name>.ts compiled generator override (deep custom)
|
|
8
|
-
// 2. backend/tm
|
|
8
|
+
// 2. backend/tm/<area>/<frag> project fragment (text-level custom)
|
|
9
9
|
// 3. @voxgig/build package defaults
|
|
10
10
|
//
|
|
11
|
+
// Fragment names are area-qualified (lambda/srv.yml.frag,
|
|
12
|
+
// env/aws/serverless.yml.frag); bare names default to the lambda area.
|
|
13
|
+
//
|
|
11
14
|
// eject copies a package fragment (or, with code=true, a template source
|
|
12
15
|
// rewired to the package's public API) into the project, recording
|
|
13
16
|
// provenance in tm/lambda/.ejected.json so diff can show upstream drift
|
|
@@ -26,18 +29,18 @@ const GENERATORS = ['srv_yml', 'srv_handler', 'res_yml']
|
|
|
26
29
|
|
|
27
30
|
// Generator shorthand -> default fragment.
|
|
28
31
|
const GENERATOR_FRAG: Record<string, string> = {
|
|
29
|
-
srv_yml: 'srv.yml.frag',
|
|
30
|
-
srv_handler: 'srv_handler.ts.frag',
|
|
31
|
-
res_yml: 'res.role.yml.frag',
|
|
32
|
+
srv_yml: 'lambda/srv.yml.frag',
|
|
33
|
+
srv_handler: 'lambda/srv_handler.ts.frag',
|
|
34
|
+
res_yml: 'lambda/res.role.yml.frag',
|
|
32
35
|
}
|
|
33
36
|
|
|
34
37
|
|
|
35
38
|
export type Project = {
|
|
36
39
|
backend: string // the project backend folder (holds model/, tm/, src/)
|
|
37
|
-
tm: string // backend/tm
|
|
40
|
+
tm: string // backend/tm (project fragment root)
|
|
38
41
|
gen: string // backend/src/gen
|
|
39
42
|
pkg: string // resolved @voxgig/build package folder
|
|
40
|
-
pkgtm: string // package tm
|
|
43
|
+
pkgtm: string // package tm root
|
|
41
44
|
}
|
|
42
45
|
|
|
43
46
|
|
|
@@ -59,10 +62,10 @@ function resolveProject(start: string): Project {
|
|
|
59
62
|
|
|
60
63
|
return {
|
|
61
64
|
backend,
|
|
62
|
-
tm: Path.join(backend, 'tm'
|
|
65
|
+
tm: Path.join(backend, 'tm'),
|
|
63
66
|
gen: Path.join(backend, 'src', 'gen'),
|
|
64
67
|
pkg,
|
|
65
|
-
pkgtm: Path.join(pkg, 'tm'
|
|
68
|
+
pkgtm: Path.join(pkg, 'tm'),
|
|
66
69
|
}
|
|
67
70
|
}
|
|
68
71
|
|
|
@@ -81,15 +84,58 @@ type Provenance = Record<string, {
|
|
|
81
84
|
package: string, version: string, sha256: string
|
|
82
85
|
}>
|
|
83
86
|
|
|
87
|
+
// Provenance lives at tm/.ejected.json; the pre-area location
|
|
88
|
+
// (tm/lambda/.ejected.json) and bare fragment keys are still read, with
|
|
89
|
+
// bare keys normalized to the lambda area.
|
|
84
90
|
function readProvenance(project: Project): Provenance {
|
|
85
|
-
const
|
|
86
|
-
|
|
91
|
+
const out: Provenance = {}
|
|
92
|
+
for (const p of [
|
|
93
|
+
Path.join(project.tm, 'lambda', '.ejected.json'),
|
|
94
|
+
Path.join(project.tm, '.ejected.json'),
|
|
95
|
+
]) {
|
|
96
|
+
if (Fs.existsSync(p)) {
|
|
97
|
+
const prov = JSON.parse(Fs.readFileSync(p, 'utf8'))
|
|
98
|
+
for (const key of Object.keys(prov)) {
|
|
99
|
+
const norm = (key.includes('/') || key.startsWith('code:')) ?
|
|
100
|
+
key : 'lambda/' + key
|
|
101
|
+
out[norm] = prov[key]
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return out
|
|
87
106
|
}
|
|
88
107
|
|
|
89
108
|
function writeProvenance(project: Project, prov: Provenance) {
|
|
90
109
|
Fs.mkdirSync(project.tm, { recursive: true })
|
|
91
110
|
Fs.writeFileSync(Path.join(project.tm, '.ejected.json'),
|
|
92
111
|
JSON.stringify(prov, null, 2) + '\n')
|
|
112
|
+
const old = Path.join(project.tm, 'lambda', '.ejected.json')
|
|
113
|
+
if (Fs.existsSync(old)) {
|
|
114
|
+
Fs.rmSync(old)
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
// All package fragments, as area-qualified relative names.
|
|
120
|
+
function pkgFragments(project: Project): string[] {
|
|
121
|
+
const out: string[] = []
|
|
122
|
+
const walk = (rel: string) => {
|
|
123
|
+
const dir = Path.join(project.pkgtm, rel)
|
|
124
|
+
if (!Fs.existsSync(dir)) {
|
|
125
|
+
return
|
|
126
|
+
}
|
|
127
|
+
for (const e of Fs.readdirSync(dir, { withFileTypes: true })) {
|
|
128
|
+
const relpath = '' === rel ? e.name : rel + '/' + e.name
|
|
129
|
+
if (e.isDirectory()) {
|
|
130
|
+
walk(relpath)
|
|
131
|
+
}
|
|
132
|
+
else if (e.name.endsWith('.frag')) {
|
|
133
|
+
out.push(relpath)
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
walk('')
|
|
138
|
+
return out.sort()
|
|
93
139
|
}
|
|
94
140
|
|
|
95
141
|
|
|
@@ -115,14 +161,12 @@ function listTemplates(start: string): TemplateRow[] {
|
|
|
115
161
|
})
|
|
116
162
|
}
|
|
117
163
|
|
|
118
|
-
const
|
|
119
|
-
.filter((f) => f.endsWith('.frag')).sort()
|
|
120
|
-
for (const frag of frags) {
|
|
164
|
+
for (const frag of pkgFragments(project)) {
|
|
121
165
|
rows.push({
|
|
122
166
|
name: frag,
|
|
123
167
|
kind: 'fragment',
|
|
124
168
|
layer: Fs.existsSync(Path.join(project.tm, frag)) ?
|
|
125
|
-
'project (tm/
|
|
169
|
+
'project (tm/' + frag + ')' : 'package',
|
|
126
170
|
})
|
|
127
171
|
}
|
|
128
172
|
|
|
@@ -134,13 +178,14 @@ function listTemplates(start: string): TemplateRow[] {
|
|
|
134
178
|
function ejectFragment(start: string, name: string): string {
|
|
135
179
|
const project = resolveProject(start)
|
|
136
180
|
|
|
137
|
-
|
|
181
|
+
let frag = GENERATOR_FRAG[name] || name
|
|
182
|
+
if (!frag.includes('/')) {
|
|
183
|
+
frag = 'lambda/' + frag
|
|
184
|
+
}
|
|
138
185
|
const srcpath = Path.join(project.pkgtm, frag)
|
|
139
186
|
if (!Fs.existsSync(srcpath)) {
|
|
140
|
-
const avail = Fs.readdirSync(project.pkgtm)
|
|
141
|
-
.filter((f) => f.endsWith('.frag')).sort()
|
|
142
187
|
throw new Error('unknown fragment: ' + frag +
|
|
143
|
-
' (available: ' +
|
|
188
|
+
' (available: ' + pkgFragments(project).join(', ') + ')')
|
|
144
189
|
}
|
|
145
190
|
|
|
146
191
|
const dest = Path.join(project.tm, frag)
|
|
@@ -149,7 +194,7 @@ function ejectFragment(start: string, name: string): string {
|
|
|
149
194
|
}
|
|
150
195
|
|
|
151
196
|
const content = Fs.readFileSync(srcpath, 'utf8')
|
|
152
|
-
Fs.mkdirSync(
|
|
197
|
+
Fs.mkdirSync(Path.dirname(dest), { recursive: true })
|
|
153
198
|
Fs.writeFileSync(dest, content)
|
|
154
199
|
|
|
155
200
|
const prov = readProvenance(project)
|
package/package.json
CHANGED
package/system.ts
CHANGED
|
@@ -13,7 +13,7 @@ import { Utility } from './lib/utility'
|
|
|
13
13
|
|
|
14
14
|
import { MakeSrv } from './srv/make'
|
|
15
15
|
|
|
16
|
-
import { addEntity, addSrv, addMsg, addFields, resolveModelFiles } from './lib/add'
|
|
16
|
+
import { addEntity, addSrv, addMsg, addFields, addEnv, resolveModelFiles } from './lib/add'
|
|
17
17
|
import { listTemplates, ejectFragment, ejectCode, diffTemplates } from './lib/template'
|
|
18
18
|
|
|
19
19
|
|
|
@@ -222,6 +222,7 @@ const Add = {
|
|
|
222
222
|
srv: addSrv,
|
|
223
223
|
msg: addMsg,
|
|
224
224
|
fields: addFields,
|
|
225
|
+
env: addEnv,
|
|
225
226
|
resolveModelFiles,
|
|
226
227
|
}
|
|
227
228
|
|