@voxgig/model 0.20.0 → 0.22.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/bin/voxgig-model +2 -7
- package/dist/lib/build.d.ts +2 -0
- package/dist/lib/build.js +29 -14
- package/dist/lib/build.js.map +1 -1
- package/dist/lib/builder/local.js +28 -22
- package/dist/lib/builder/local.js.map +1 -1
- package/dist/lib/builder/model.js +14 -8
- package/dist/lib/builder/model.js.map +1 -1
- package/dist/lib/config.js +3 -4
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/util.js +1 -0
- package/dist/lib/util.js.map +1 -1
- package/dist/lib/watch.d.ts +4 -0
- package/dist/lib/watch.js +42 -14
- package/dist/lib/watch.js.map +1 -1
- package/dist/model.js +3 -7
- package/dist/model.js.map +1 -1
- package/lib/build.ts +35 -17
- package/lib/builder/local.ts +28 -22
- package/lib/builder/model.ts +14 -9
- package/lib/config.ts +4 -1
- package/lib/util.ts +1 -0
- package/lib/watch.ts +48 -21
- package/model.ts +4 -10
- package/package.json +3 -3
package/bin/voxgig-model
CHANGED
|
@@ -15,7 +15,8 @@ if(null == path || '' == path) {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
let fstats = Fs.statSync(path)
|
|
18
|
-
let base = path
|
|
18
|
+
// let base = path
|
|
19
|
+
let base = Path.resolve(path)
|
|
19
20
|
|
|
20
21
|
if (fstats.isFile()) {
|
|
21
22
|
let basedesc = Path.parse(base)
|
|
@@ -23,7 +24,6 @@ if (fstats.isFile()) {
|
|
|
23
24
|
}
|
|
24
25
|
|
|
25
26
|
path = Path.resolve(path)
|
|
26
|
-
// console.log('PATH', path)
|
|
27
27
|
|
|
28
28
|
let src = Fs.readFileSync(path).toString()
|
|
29
29
|
|
|
@@ -34,18 +34,13 @@ let spec = {
|
|
|
34
34
|
require: process.cwd()
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
// console.log('CMD SPEC', spec)
|
|
38
|
-
|
|
39
37
|
let model = new Model(spec)
|
|
40
38
|
|
|
41
|
-
|
|
42
39
|
async function run() {
|
|
43
40
|
if(once) {
|
|
44
41
|
let br = await model.run()
|
|
45
|
-
console.log('OK:'+br.ok, once)
|
|
46
42
|
}
|
|
47
43
|
else {
|
|
48
|
-
console.log('WATCHING...')
|
|
49
44
|
model.start()
|
|
50
45
|
}
|
|
51
46
|
}
|
package/dist/lib/build.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ interface BuildResult {
|
|
|
5
5
|
path?: string;
|
|
6
6
|
build?: Build;
|
|
7
7
|
builders?: BuildResult[];
|
|
8
|
+
err?: any[];
|
|
8
9
|
}
|
|
9
10
|
interface BuildAction {
|
|
10
11
|
path: string;
|
|
@@ -35,6 +36,7 @@ declare class Build {
|
|
|
35
36
|
use: {
|
|
36
37
|
[name: string]: any;
|
|
37
38
|
};
|
|
39
|
+
err: any[];
|
|
38
40
|
constructor(spec: Spec);
|
|
39
41
|
run(): Promise<BuildResult>;
|
|
40
42
|
}
|
package/dist/lib/build.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/* Copyright © 2021-2023 Voxgig Ltd, MIT License. */
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
4
|
exports.Build = void 0;
|
|
4
5
|
const aontu_1 = require("aontu");
|
|
@@ -6,6 +7,7 @@ class Build {
|
|
|
6
7
|
constructor(spec) {
|
|
7
8
|
this.root = aontu_1.Nil.make();
|
|
8
9
|
this.use = {};
|
|
10
|
+
this.err = [];
|
|
9
11
|
this.spec = spec;
|
|
10
12
|
this.src = spec.src;
|
|
11
13
|
this.base = null == spec.base ? '' : spec.base;
|
|
@@ -13,6 +15,7 @@ class Build {
|
|
|
13
15
|
this.opts = {};
|
|
14
16
|
if (null != spec.base) {
|
|
15
17
|
this.opts.base = spec.base;
|
|
18
|
+
this.opts.path = spec.path;
|
|
16
19
|
}
|
|
17
20
|
if (null != spec.require) {
|
|
18
21
|
this.opts.require = spec.require;
|
|
@@ -21,24 +24,36 @@ class Build {
|
|
|
21
24
|
Object.assign(this.use, spec.use || {});
|
|
22
25
|
}
|
|
23
26
|
async run() {
|
|
24
|
-
|
|
27
|
+
let hasErr = false;
|
|
25
28
|
this.root = (0, aontu_1.Aontu)(this.src, this.opts);
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
console.log('MODEL ERR');
|
|
30
|
-
console.dir(this.root.err, { depth: null });
|
|
29
|
+
hasErr = this.root.err && 0 < this.root.err.length;
|
|
30
|
+
if (hasErr) {
|
|
31
|
+
this.err.push(...this.root.err);
|
|
31
32
|
}
|
|
32
|
-
this.model = this.root.gen();
|
|
33
|
-
// TODO: only call if path value has changed
|
|
34
33
|
let brlog = [];
|
|
35
|
-
|
|
36
|
-
let
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
if (!hasErr) {
|
|
35
|
+
let genctx = new aontu_1.Context({ root: this.root });
|
|
36
|
+
this.model = this.root.gen(genctx);
|
|
37
|
+
hasErr = genctx.err && 0 < genctx.err.length;
|
|
38
|
+
if (hasErr) {
|
|
39
|
+
this.err.push(...genctx.err);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
// TODO: only call if path value has changed
|
|
43
|
+
for (let builder of this.res) {
|
|
44
|
+
try {
|
|
45
|
+
let br = await builder.build(this);
|
|
46
|
+
br.path = builder.path;
|
|
47
|
+
br.builder = builder.build.name;
|
|
48
|
+
brlog.push(br);
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
this.err.push(e);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
40
55
|
}
|
|
41
|
-
return { ok:
|
|
56
|
+
return { ok: !hasErr, build: this, builders: brlog, err: this.err };
|
|
42
57
|
}
|
|
43
58
|
}
|
|
44
59
|
exports.Build = Build;
|
package/dist/lib/build.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../lib/build.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../lib/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,29 +6,35 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.local_builder = void 0;
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
8
|
const local_builder = async (build) => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
let
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
9
|
+
try {
|
|
10
|
+
// TODO: need to provide project root via build
|
|
11
|
+
let root = path_1.default.resolve(build.path, '..', '..');
|
|
12
|
+
// TODO: build should do this
|
|
13
|
+
// console.log('LOCAL root:', root)
|
|
14
|
+
let configbuild = build.use.config;
|
|
15
|
+
let config = configbuild.watch.last.build.model;
|
|
16
|
+
// console.log('CONFIG BUILD')
|
|
17
|
+
// console.dir(config, { depth: null })
|
|
18
|
+
let builders = config.sys.model.builders;
|
|
19
|
+
let ok = true;
|
|
20
|
+
let brlog = [];
|
|
21
|
+
// TODO: order by comma sep string
|
|
22
|
+
for (let name in builders) {
|
|
23
|
+
let builder = builders[name];
|
|
24
|
+
let action_path = path_1.default.join(root, builder.load);
|
|
25
|
+
// TODO: need to watch these files too, and their deps!
|
|
26
|
+
// console.log('ACTION PATH', name, action_path)
|
|
27
|
+
let action = require(action_path);
|
|
28
|
+
let br = await action(build.model, build);
|
|
29
|
+
ok = ok && null != br && br.ok;
|
|
30
|
+
brlog.push(br);
|
|
31
|
+
}
|
|
32
|
+
return { ok: ok, brlog };
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
console.log('MODEL BUILD local', e);
|
|
36
|
+
throw e;
|
|
30
37
|
}
|
|
31
|
-
return { ok: ok, brlog };
|
|
32
38
|
};
|
|
33
39
|
exports.local_builder = local_builder;
|
|
34
40
|
//# sourceMappingURL=local.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../../lib/builder/local.ts"],"names":[],"mappings":";;;;;;AACA,gDAAuB;AAKvB,MAAM,aAAa,GAAY,KAAK,EAAE,KAAY,EAAE,EAAE;IACpD,+CAA+C;
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../../lib/builder/local.ts"],"names":[],"mappings":";;;;;;AACA,gDAAuB;AAKvB,MAAM,aAAa,GAAY,KAAK,EAAE,KAAY,EAAE,EAAE;IACpD,IAAI;QACF,+CAA+C;QAC/C,IAAI,IAAI,GAAG,cAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAE/C,6BAA6B;QAC7B,mCAAmC;QACnC,IAAI,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAA;QAElC,IAAI,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;QAC/C,8BAA8B;QAC9B,uCAAuC;QAEvC,IAAI,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAA;QAExC,IAAI,EAAE,GAAG,IAAI,CAAA;QACb,IAAI,KAAK,GAAG,EAAE,CAAA;QAEd,kCAAkC;QAClC,KAAK,IAAI,IAAI,IAAI,QAAQ,EAAE;YACzB,IAAI,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;YAC5B,IAAI,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;YAE/C,uDAAuD;YACvD,gDAAgD;YAEhD,IAAI,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;YACjC,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YACzC,EAAE,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;YAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;SACf;QAED,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;KACzB;IAAC,OAAO,CAAM,EAAE;QACf,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAA;QACnC,MAAM,CAAC,CAAA;KACR;AAEH,CAAC,CAAA;AAGC,sCAAa"}
|
|
@@ -7,15 +7,21 @@ exports.model_builder = void 0;
|
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
8
|
const promises_1 = require("fs/promises");
|
|
9
9
|
const model_builder = async (build) => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
try {
|
|
11
|
+
let json = JSON.stringify(build.root.gen(), null, 2);
|
|
12
|
+
let filename = path_1.default.basename(build.path);
|
|
13
|
+
let filenameparts = filename.match(/^(.*)\.[^.]+$/);
|
|
14
|
+
if (filenameparts) {
|
|
15
|
+
filename = filenameparts[1];
|
|
16
|
+
}
|
|
17
|
+
let file = build.opts.base + '/' + filename + '.json';
|
|
18
|
+
await (0, promises_1.writeFile)(file, json);
|
|
19
|
+
return { ok: true };
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
console.log('MODEL BUILD model', e);
|
|
23
|
+
throw e;
|
|
15
24
|
}
|
|
16
|
-
let file = build.opts.base + '/' + filename + '.json';
|
|
17
|
-
await (0, promises_1.writeFile)(file, json);
|
|
18
|
-
return { ok: true };
|
|
19
25
|
};
|
|
20
26
|
exports.model_builder = model_builder;
|
|
21
27
|
//# sourceMappingURL=model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../lib/builder/model.ts"],"names":[],"mappings":";;;;;;AACA,gDAAuB;AAEvB,0CAAuC;AAKvC,MAAM,aAAa,GAAY,KAAK,EAAE,KAAY,EAAE,EAAE;IAEpD,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../lib/builder/model.ts"],"names":[],"mappings":";;;;;;AACA,gDAAuB;AAEvB,0CAAuC;AAKvC,MAAM,aAAa,GAAY,KAAK,EAAE,KAAY,EAAE,EAAE;IAEpD,IAAI;QACF,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QAEpD,IAAI,QAAQ,GAAG,cAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;QACnD,IAAI,aAAa,EAAE;YACjB,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;SAC5B;QAED,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,QAAQ,GAAG,OAAO,CAAA;QAErD,MAAM,IAAA,oBAAS,EAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAE3B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;KACpB;IAAC,OAAO,CAAM,EAAE;QACf,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAA;QACnC,MAAM,CAAC,CAAA;KACR;AACH,CAAC,CAAA;AAGC,sCAAa"}
|
package/dist/lib/config.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
// from model / config.jsonic by default
|
|
4
|
-
// config defines builders
|
|
2
|
+
/* Copyright © 2021-2023 Voxgig Ltd, MIT License. */
|
|
5
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
4
|
exports.Config = void 0;
|
|
7
5
|
const watch_1 = require("./watch");
|
|
@@ -18,7 +16,8 @@ class Config {
|
|
|
18
16
|
build: model_1.model_builder
|
|
19
17
|
},
|
|
20
18
|
...(spec.res || [])
|
|
21
|
-
]
|
|
19
|
+
],
|
|
20
|
+
require: spec.require
|
|
22
21
|
};
|
|
23
22
|
this.watch = new watch_1.Watch(this.build);
|
|
24
23
|
}
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAWpD,mCAA+B;AAG/B,2CAA+C;AAO/C,MAAM,MAAM;IAIV,YAAY,IAAU;QACpB,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE;gBACH;oBACE,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,qBAAa;iBACrB;gBACD,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;aACpB;YACD,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAA;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,aAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,GAAG;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;IAC1B,CAAC;CACF;AAGQ,wBAAM"}
|
package/dist/lib/util.js
CHANGED
package/dist/lib/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../lib/util.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../lib/util.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAKpD,SAAS,IAAI,CAAC,IAAS,EAAE,KAA2B,EAAE,MAAmB;IACvE,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,IAAI,QAAQ,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAC/D,MAAM,GAAG,UAAU,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAA;IAErD,IAAI,KAAK,GAAU,EAAE,CAAA;IAErB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CACzB,CAAC,KAAY,EAAE,KAAY,EAAE,EAAE;QAC7B,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAClB,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAEpB,IAAI,CAAC,IAAI,CAAC,EAAE;YACV,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;SAC3B;aACI;YACH,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;YACjC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBAC9B,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;gBACrB,OAAO,KAAK,CAAA;YACd,CAAC,CAAC,CAAA;YACF,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;SACxB;QAED,OAAO,KAAK,CAAA;IACd,CAAC,EACD,KAAK,CACN,CAAA;IAED,IAAI,MAAM,EAAE;QACV,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YAChC,KAAK,GAAI,MAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YAC3C,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YACtB,OAAO,CAAC,CAAA;QACV,CAAC,CAAC,EAAE,EAAS,CAAC,CAAA;KACf;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AA2BC,oBAAI;AAxBN;;;;EAIE;AACF,SAAS,KAAK,CAAC,GAAU,EAAE,GAAG,IAAc;IAC1C,GAAG,GAAG,GAAG,IAAI,EAAE,CAAA;IACf,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;IACjB,IAAI,EAAE,GAAG,EAAE,CAAA;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACnC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACf,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACzC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;oBAC5B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;oBAChB,MAAK;iBACN;aACF;SACF;KACF;IACD,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACpB,CAAC;AAIC,sBAAK"}
|
package/dist/lib/watch.d.ts
CHANGED
|
@@ -9,5 +9,9 @@ declare class Watch {
|
|
|
9
9
|
start(): Promise<void>;
|
|
10
10
|
run(once: boolean): Promise<BuildResult>;
|
|
11
11
|
stop(): Promise<void>;
|
|
12
|
+
handleErrors(br: BuildResult): void;
|
|
13
|
+
descDeps(deps: Record<string, Record<string, {
|
|
14
|
+
tar: string;
|
|
15
|
+
}>>): string;
|
|
12
16
|
}
|
|
13
17
|
export { Watch };
|
package/dist/lib/watch.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/* Copyright © 2021-2023 Voxgig Ltd, MIT License. */
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
4
|
exports.Watch = void 0;
|
|
4
5
|
const build_1 = require("./build");
|
|
@@ -12,49 +13,76 @@ class Watch {
|
|
|
12
13
|
}
|
|
13
14
|
update(br) {
|
|
14
15
|
let build = br.build;
|
|
15
|
-
// TODO: remove dep map building from Aontu
|
|
16
|
-
//let depmap = (build.root as any).map
|
|
17
|
-
// console.log('DEPMAP', depmap)
|
|
18
|
-
//let files = Object.keys(depmap.url)
|
|
19
|
-
//console.log('DEP FILES', files)
|
|
20
16
|
let files = Object.keys(build.root.deps).reduce((files, target) => {
|
|
21
17
|
files = files.concat(Object.keys(build.root.deps[target]));
|
|
22
18
|
return files;
|
|
23
19
|
}, [build.path]);
|
|
24
|
-
//console.log('DEPS', build.base, files)
|
|
25
20
|
// TODO: remove deleted files
|
|
26
21
|
files.forEach((file) => {
|
|
27
22
|
if ('string' === typeof (file) &&
|
|
28
23
|
'' !== file &&
|
|
29
24
|
build.opts.base !== file) {
|
|
30
|
-
// console.log('ADD', file)
|
|
31
25
|
this.fsw.add(file);
|
|
32
26
|
}
|
|
33
27
|
});
|
|
34
|
-
setTimeout(() => {
|
|
35
|
-
|
|
36
|
-
}, 100)
|
|
28
|
+
// setTimeout(() => {
|
|
29
|
+
// console.log('WATCH', this.fsw.getWatched())
|
|
30
|
+
// }, 100)
|
|
37
31
|
}
|
|
38
32
|
async start() {
|
|
39
33
|
await this.run(false);
|
|
40
34
|
}
|
|
41
35
|
async run(once) {
|
|
36
|
+
var _a, _b;
|
|
37
|
+
console.log('\n@voxgig/model', new Date());
|
|
42
38
|
// TODO: build spec should not have src!
|
|
43
39
|
let src = (await (0, promises_1.readFile)(this.spec.path)).toString();
|
|
44
40
|
this.spec.src = src;
|
|
45
41
|
let build = new build_1.Build(this.spec);
|
|
46
42
|
let br = await build.run();
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
43
|
+
console.log('\nFILES:\n' + this.descDeps(br.build.root.deps) + '\n');
|
|
44
|
+
if (br.ok) {
|
|
45
|
+
console.log('TOP:', Object.keys((_a = br === null || br === void 0 ? void 0 : br.build) === null || _a === void 0 ? void 0 : _a.model).join(', '), '\n');
|
|
46
|
+
if (!once) {
|
|
47
|
+
// There may be new files.
|
|
48
|
+
this.update(br);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
console.log('MODEL ERRORS: ' + ((_b = br.err) === null || _b === void 0 ? void 0 : _b.length));
|
|
53
|
+
this.handleErrors(br);
|
|
50
54
|
}
|
|
51
55
|
this.last = br;
|
|
52
|
-
console.log('WATCH RUN DONE', this.spec.path, this.last.ok);
|
|
53
56
|
return br;
|
|
54
57
|
}
|
|
55
58
|
async stop() {
|
|
56
59
|
await this.fsw.close();
|
|
57
60
|
}
|
|
61
|
+
handleErrors(br) {
|
|
62
|
+
if (br.err) {
|
|
63
|
+
for (let be of br.err) {
|
|
64
|
+
if (be.msg) {
|
|
65
|
+
console.log(be.msg);
|
|
66
|
+
}
|
|
67
|
+
else if (be.message) {
|
|
68
|
+
console.log(be.message);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
console.log(be);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
descDeps(deps) {
|
|
77
|
+
let desc = [];
|
|
78
|
+
for (let entryPath of Object.keys(deps)) {
|
|
79
|
+
desc.push(' ' + entryPath);
|
|
80
|
+
for (let depPath of Object.keys(deps[entryPath])) {
|
|
81
|
+
desc.push(' ' + depPath);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return desc.join('\n');
|
|
85
|
+
}
|
|
58
86
|
}
|
|
59
87
|
exports.Watch = Watch;
|
|
60
88
|
//# sourceMappingURL=watch.js.map
|
package/dist/lib/watch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../lib/watch.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../lib/watch.ts"],"names":[],"mappings":"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"}
|
package/dist/model.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* Copyright © 2021-
|
|
2
|
+
/* Copyright © 2021-2023 Voxgig Ltd, MIT License. */
|
|
3
3
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
5
|
};
|
|
@@ -18,15 +18,11 @@ const intern = makeIntern();
|
|
|
18
18
|
class Model {
|
|
19
19
|
constructor(spec) {
|
|
20
20
|
this.trigger_model = false;
|
|
21
|
-
|
|
21
|
+
// Config is a special Watch to handle model config.
|
|
22
22
|
this.config = intern.makeConfig(spec, {
|
|
23
23
|
path: '/',
|
|
24
24
|
build: async (build) => {
|
|
25
|
-
console.log('TRIGGER MODEL', this.trigger_model);
|
|
26
25
|
if (this.trigger_model) {
|
|
27
|
-
console.log('CONFIG CHANGE'); //, this)
|
|
28
|
-
// console.trace()
|
|
29
|
-
// rebuild if config changes
|
|
30
26
|
// TODO: fix!!!
|
|
31
27
|
this.build.use.config.watch.last.build = build;
|
|
32
28
|
return this.watch.run(true);
|
|
@@ -37,6 +33,7 @@ class Model {
|
|
|
37
33
|
}
|
|
38
34
|
}
|
|
39
35
|
});
|
|
36
|
+
// The actual model.
|
|
40
37
|
this.build = {
|
|
41
38
|
src: spec.src,
|
|
42
39
|
path: spec.path,
|
|
@@ -62,7 +59,6 @@ class Model {
|
|
|
62
59
|
return br.ok ? this.watch.run(true) : br;
|
|
63
60
|
}
|
|
64
61
|
async start() {
|
|
65
|
-
console.log('MODEL START');
|
|
66
62
|
this.trigger_model = false;
|
|
67
63
|
await this.config.start();
|
|
68
64
|
return this.watch.start();
|
package/dist/model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../model.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;;;;AAEpD,6BAA6B;AAC7B,4CAAmB;AAEnB,yCAAqC;AAErC,uCAAmC;AAEnC,+CAAmD;AACnD,+CAAmD;AAEnD,qCAGmB;
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../model.ts"],"names":[],"mappings":"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"}
|
package/lib/build.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
/* Copyright © 2021-2023 Voxgig Ltd, MIT License. */
|
|
1
2
|
|
|
2
3
|
|
|
3
|
-
import { Aontu, Val, Nil } from 'aontu'
|
|
4
|
+
import { Aontu, Val, Nil, Context } from 'aontu'
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
interface BuildResult {
|
|
@@ -9,6 +10,7 @@ interface BuildResult {
|
|
|
9
10
|
path?: string
|
|
10
11
|
build?: Build
|
|
11
12
|
builders?: BuildResult[]
|
|
13
|
+
err?: any[]
|
|
12
14
|
}
|
|
13
15
|
|
|
14
16
|
interface BuildAction {
|
|
@@ -43,6 +45,8 @@ class Build {
|
|
|
43
45
|
spec: Spec
|
|
44
46
|
model: any
|
|
45
47
|
use: { [name: string]: any } = {}
|
|
48
|
+
err: any[] = []
|
|
49
|
+
|
|
46
50
|
|
|
47
51
|
constructor(spec: Spec) {
|
|
48
52
|
this.spec = spec
|
|
@@ -53,6 +57,7 @@ class Build {
|
|
|
53
57
|
|
|
54
58
|
if (null != spec.base) {
|
|
55
59
|
this.opts.base = spec.base
|
|
60
|
+
this.opts.path = spec.path
|
|
56
61
|
}
|
|
57
62
|
|
|
58
63
|
if (null != spec.require) {
|
|
@@ -66,31 +71,44 @@ class Build {
|
|
|
66
71
|
|
|
67
72
|
|
|
68
73
|
async run(): Promise<BuildResult> {
|
|
69
|
-
|
|
74
|
+
let hasErr = false
|
|
70
75
|
|
|
71
76
|
this.root = Aontu(this.src, this.opts)
|
|
77
|
+
hasErr = this.root.err && 0 < this.root.err.length
|
|
72
78
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
if (this.root.err) {
|
|
77
|
-
console.log('MODEL ERR')
|
|
78
|
-
console.dir(this.root.err, { depth: null })
|
|
79
|
+
if (hasErr) {
|
|
80
|
+
this.err.push(...this.root.err)
|
|
79
81
|
}
|
|
80
82
|
|
|
81
|
-
this.model = this.root.gen()
|
|
82
83
|
|
|
83
|
-
|
|
84
|
-
// TODO: only call if path value has changed
|
|
85
84
|
let brlog = []
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
85
|
+
|
|
86
|
+
if (!hasErr) {
|
|
87
|
+
let genctx = new Context({ root: this.root })
|
|
88
|
+
this.model = this.root.gen(genctx)
|
|
89
|
+
|
|
90
|
+
hasErr = genctx.err && 0 < genctx.err.length
|
|
91
|
+
if (hasErr) {
|
|
92
|
+
this.err.push(...genctx.err)
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
|
|
96
|
+
// TODO: only call if path value has changed
|
|
97
|
+
for (let builder of this.res) {
|
|
98
|
+
try {
|
|
99
|
+
let br = await builder.build(this)
|
|
100
|
+
br.path = builder.path
|
|
101
|
+
br.builder = builder.build.name
|
|
102
|
+
brlog.push(br)
|
|
103
|
+
}
|
|
104
|
+
catch (e: any) {
|
|
105
|
+
this.err.push(e)
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
91
109
|
}
|
|
92
110
|
|
|
93
|
-
return { ok:
|
|
111
|
+
return { ok: !hasErr, build: this, builders: brlog, err: this.err }
|
|
94
112
|
}
|
|
95
113
|
}
|
|
96
114
|
|
package/lib/builder/local.ts
CHANGED
|
@@ -5,37 +5,43 @@ import { Build, Builder } from '../build'
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
const local_builder: Builder = async (build: Build) => {
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
try {
|
|
9
|
+
// TODO: need to provide project root via build
|
|
10
|
+
let root = Path.resolve(build.path, '..', '..')
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
// TODO: build should do this
|
|
13
|
+
// console.log('LOCAL root:', root)
|
|
14
|
+
let configbuild = build.use.config
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
let config = configbuild.watch.last.build.model
|
|
17
|
+
// console.log('CONFIG BUILD')
|
|
18
|
+
// console.dir(config, { depth: null })
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
let builders = config.sys.model.builders
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
let ok = true
|
|
23
|
+
let brlog = []
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
// TODO: order by comma sep string
|
|
26
|
+
for (let name in builders) {
|
|
27
|
+
let builder = builders[name]
|
|
28
|
+
let action_path = Path.join(root, builder.load)
|
|
28
29
|
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
// TODO: need to watch these files too, and their deps!
|
|
31
|
+
// console.log('ACTION PATH', name, action_path)
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
let action = require(action_path)
|
|
34
|
+
let br = await action(build.model, build)
|
|
35
|
+
ok = ok && null != br && br.ok
|
|
36
|
+
brlog.push(br)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return { ok: ok, brlog }
|
|
40
|
+
} catch (e: any) {
|
|
41
|
+
console.log('MODEL BUILD local', e)
|
|
42
|
+
throw e
|
|
36
43
|
}
|
|
37
44
|
|
|
38
|
-
return { ok: ok, brlog }
|
|
39
45
|
}
|
|
40
46
|
|
|
41
47
|
export {
|
package/lib/builder/model.ts
CHANGED
|
@@ -8,19 +8,24 @@ import { Build, Builder } from '../build'
|
|
|
8
8
|
|
|
9
9
|
const model_builder: Builder = async (build: Build) => {
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
try {
|
|
12
|
+
let json = JSON.stringify(build.root.gen(), null, 2)
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
let filename = Path.basename(build.path)
|
|
15
|
+
let filenameparts = filename.match(/^(.*)\.[^.]+$/)
|
|
16
|
+
if (filenameparts) {
|
|
17
|
+
filename = filenameparts[1]
|
|
18
|
+
}
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
let file = build.opts.base + '/' + filename + '.json'
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
await writeFile(file, json)
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
return { ok: true }
|
|
25
|
+
} catch (e: any) {
|
|
26
|
+
console.log('MODEL BUILD model', e)
|
|
27
|
+
throw e
|
|
28
|
+
}
|
|
24
29
|
}
|
|
25
30
|
|
|
26
31
|
export {
|
package/lib/config.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/* Copyright © 2021-2023 Voxgig Ltd, MIT License. */
|
|
2
|
+
|
|
1
3
|
|
|
2
4
|
// load config as a model
|
|
3
5
|
// from model / config.jsonic by default
|
|
@@ -32,7 +34,8 @@ class Config {
|
|
|
32
34
|
build: model_builder
|
|
33
35
|
},
|
|
34
36
|
...(spec.res || [])
|
|
35
|
-
]
|
|
37
|
+
],
|
|
38
|
+
require: spec.require
|
|
36
39
|
}
|
|
37
40
|
|
|
38
41
|
this.watch = new Watch(this.build)
|
package/lib/util.ts
CHANGED
package/lib/watch.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* Copyright © 2021-2023 Voxgig Ltd, MIT License. */
|
|
1
2
|
|
|
2
3
|
|
|
3
4
|
import { Build, BuildResult } from './build'
|
|
@@ -18,18 +19,8 @@ class Watch {
|
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
update(br: BuildResult) {
|
|
21
|
-
|
|
22
|
-
|
|
23
22
|
let build = (br.build as Build)
|
|
24
23
|
|
|
25
|
-
// TODO: remove dep map building from Aontu
|
|
26
|
-
//let depmap = (build.root as any).map
|
|
27
|
-
|
|
28
|
-
// console.log('DEPMAP', depmap)
|
|
29
|
-
|
|
30
|
-
//let files = Object.keys(depmap.url)
|
|
31
|
-
//console.log('DEP FILES', files)
|
|
32
|
-
|
|
33
24
|
let files: string[] =
|
|
34
25
|
Object.keys(build.root.deps).reduce((files: string[], target: any) => {
|
|
35
26
|
files = files.concat(Object.keys(build.root.deps[target]))
|
|
@@ -37,22 +28,19 @@ class Watch {
|
|
|
37
28
|
}, [build.path])
|
|
38
29
|
|
|
39
30
|
|
|
40
|
-
//console.log('DEPS', build.base, files)
|
|
41
|
-
|
|
42
31
|
// TODO: remove deleted files
|
|
43
32
|
files.forEach((file: string) => {
|
|
44
33
|
if ('string' === typeof (file) &&
|
|
45
34
|
'' !== file &&
|
|
46
35
|
build.opts.base !== file
|
|
47
36
|
) {
|
|
48
|
-
// console.log('ADD', file)
|
|
49
37
|
this.fsw.add(file)
|
|
50
38
|
}
|
|
51
39
|
})
|
|
52
40
|
|
|
53
|
-
setTimeout(() => {
|
|
54
|
-
|
|
55
|
-
}, 100)
|
|
41
|
+
// setTimeout(() => {
|
|
42
|
+
// console.log('WATCH', this.fsw.getWatched())
|
|
43
|
+
// }, 100)
|
|
56
44
|
|
|
57
45
|
}
|
|
58
46
|
|
|
@@ -61,20 +49,31 @@ class Watch {
|
|
|
61
49
|
}
|
|
62
50
|
|
|
63
51
|
async run(once: boolean) {
|
|
52
|
+
console.log('\n@voxgig/model', new Date())
|
|
53
|
+
|
|
64
54
|
// TODO: build spec should not have src!
|
|
65
55
|
let src = (await readFile(this.spec.path)).toString()
|
|
66
56
|
this.spec.src = src
|
|
67
57
|
|
|
68
58
|
let build = new Build(this.spec)
|
|
69
|
-
let br = await build.run()
|
|
59
|
+
let br: BuildResult = await build.run()
|
|
60
|
+
|
|
61
|
+
console.log('\nFILES:\n' + this.descDeps((br as any).build.root.deps) + '\n')
|
|
70
62
|
|
|
71
|
-
if (
|
|
72
|
-
|
|
73
|
-
|
|
63
|
+
if (br.ok) {
|
|
64
|
+
console.log('TOP:', Object.keys(br?.build?.model).join(', '), '\n')
|
|
65
|
+
|
|
66
|
+
if (!once) {
|
|
67
|
+
// There may be new files.
|
|
68
|
+
this.update(br)
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
console.log('MODEL ERRORS: ' + br.err?.length)
|
|
73
|
+
this.handleErrors(br)
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
this.last = br
|
|
77
|
-
console.log('WATCH RUN DONE', this.spec.path, this.last.ok)
|
|
78
77
|
|
|
79
78
|
return br
|
|
80
79
|
}
|
|
@@ -83,6 +82,34 @@ class Watch {
|
|
|
83
82
|
async stop() {
|
|
84
83
|
await this.fsw.close()
|
|
85
84
|
}
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
handleErrors(br: BuildResult) {
|
|
88
|
+
if (br.err) {
|
|
89
|
+
for (let be of br.err) {
|
|
90
|
+
if (be.msg) {
|
|
91
|
+
console.log(be.msg)
|
|
92
|
+
}
|
|
93
|
+
else if (be.message) {
|
|
94
|
+
console.log(be.message)
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
console.log(be)
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
descDeps(deps: Record<string, Record<string, { tar: string }>>) {
|
|
104
|
+
let desc = []
|
|
105
|
+
for (let entryPath of Object.keys(deps)) {
|
|
106
|
+
desc.push(' ' + entryPath)
|
|
107
|
+
for (let depPath of Object.keys(deps[entryPath])) {
|
|
108
|
+
desc.push(' ' + depPath)
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return desc.join('\n')
|
|
112
|
+
}
|
|
86
113
|
}
|
|
87
114
|
|
|
88
115
|
|
package/model.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* Copyright © 2021-
|
|
1
|
+
/* Copyright © 2021-2023 Voxgig Ltd, MIT License. */
|
|
2
2
|
|
|
3
3
|
// TODO: remove need for this
|
|
4
4
|
import Fs from 'fs'
|
|
@@ -27,17 +27,13 @@ class Model {
|
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
constructor(spec: Spec) {
|
|
30
|
-
console.log('MODEL SPEC', spec)
|
|
31
30
|
|
|
31
|
+
// Config is a special Watch to handle model config.
|
|
32
32
|
this.config = intern.makeConfig(spec, {
|
|
33
33
|
path: '/',
|
|
34
34
|
build: async (build: Build) => {
|
|
35
|
-
console.log('TRIGGER MODEL', this.trigger_model)
|
|
36
35
|
|
|
37
36
|
if (this.trigger_model) {
|
|
38
|
-
console.log('CONFIG CHANGE')//, this)
|
|
39
|
-
// console.trace()
|
|
40
|
-
// rebuild if config changes
|
|
41
37
|
|
|
42
38
|
// TODO: fix!!!
|
|
43
39
|
this.build.use.config.watch.last.build = build
|
|
@@ -52,7 +48,7 @@ class Model {
|
|
|
52
48
|
})
|
|
53
49
|
|
|
54
50
|
|
|
55
|
-
|
|
51
|
+
// The actual model.
|
|
56
52
|
this.build = {
|
|
57
53
|
src: spec.src,
|
|
58
54
|
path: spec.path,
|
|
@@ -63,8 +59,6 @@ class Model {
|
|
|
63
59
|
path: '/',
|
|
64
60
|
build: model_builder
|
|
65
61
|
},
|
|
66
|
-
|
|
67
|
-
|
|
68
62
|
{
|
|
69
63
|
path: '/',
|
|
70
64
|
build: local_builder
|
|
@@ -73,6 +67,7 @@ class Model {
|
|
|
73
67
|
require: spec.require
|
|
74
68
|
}
|
|
75
69
|
|
|
70
|
+
|
|
76
71
|
this.watch = new Watch(this.build)
|
|
77
72
|
}
|
|
78
73
|
|
|
@@ -83,7 +78,6 @@ class Model {
|
|
|
83
78
|
}
|
|
84
79
|
|
|
85
80
|
async start() {
|
|
86
|
-
console.log('MODEL START')
|
|
87
81
|
this.trigger_model = false
|
|
88
82
|
await this.config.start()
|
|
89
83
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voxgig/model",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"main": "dist/model.js",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"types": "dist/model.d.ts",
|
|
@@ -42,12 +42,12 @@
|
|
|
42
42
|
"LICENSE"
|
|
43
43
|
],
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"aontu": "0.
|
|
45
|
+
"aontu": "0.14.2",
|
|
46
46
|
"chokidar": "3.5.3"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@types/jest": "^29.5.2",
|
|
50
|
-
"esbuild": "^0.
|
|
50
|
+
"esbuild": "^0.18.9",
|
|
51
51
|
"esbuild-jest": "^0.5.0",
|
|
52
52
|
"jest": "^29.5.0",
|
|
53
53
|
"es-jest": "^2.1.0",
|