@voxgig/model 0.19.0 → 0.21.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 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
  }
@@ -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
- console.log('BUILDING ', this.path, new Date() + ' ...');
27
+ let hasErr = false;
25
28
  this.root = (0, aontu_1.Aontu)(this.src, this.opts);
26
- let nil = this.root;
27
- console.log('MODEL: ' + (nil.nil ? nil.why : 'ok'));
28
- if (this.root.err) {
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
- for (let builder of this.res) {
36
- let br = await builder.build(this);
37
- br.path = builder.path;
38
- br.builder = builder.build.name;
39
- brlog.push(br);
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: true, build: this, builders: brlog };
56
+ return { ok: !hasErr, build: this, builders: brlog, err: this.err };
42
57
  }
43
58
  }
44
59
  exports.Build = Build;
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../lib/build.ts"],"names":[],"mappings":";;;AAEA,iCAAuC;AAiCvC,MAAM,KAAK;IAWT,YAAY,IAAU;QAPtB,SAAI,GAAQ,WAAG,CAAC,IAAI,EAAE,CAAA;QAKtB,QAAG,GAA4B,EAAE,CAAA;QAG/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;QAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;QAC9C,IAAI,CAAC,IAAI,GAAG,EAAE,CAAA;QAEd,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;SAC3B;QAED,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;SACjC;QAED,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,CAAA;QAEzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAA;IACzC,CAAC;IAGD,KAAK,CAAC,GAAG;QACP,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,GAAG,MAAM,CAAC,CAAA;QAExD,IAAI,CAAC,IAAI,GAAG,IAAA,aAAK,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QAEtC,IAAI,GAAG,GAAI,IAAI,CAAC,IAAY,CAAA;QAC5B,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAEnD,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACjB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YACxB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;SAC5C;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;QAG5B,4CAA4C;QAC5C,IAAI,KAAK,GAAG,EAAE,CAAA;QACd,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE;YAC5B,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAClC,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;YACtB,EAAE,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAA;YAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;SACf;QAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;IACnD,CAAC;CACF;AAIC,sBAAK"}
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
- // TODO: need to provide project root via build
10
- let root = path_1.default.resolve(build.path, '..', '..');
11
- // TODO: build should do this
12
- console.log('LOCAL root:', root);
13
- let configbuild = build.use.config;
14
- let config = configbuild.watch.last.build.model;
15
- console.log('CONFIG BUILD');
16
- console.dir(config, { depth: null });
17
- let builders = config.sys.model.builders;
18
- let ok = true;
19
- let brlog = [];
20
- // TODO: order by comma sep string
21
- for (let name in builders) {
22
- let builder = builders[name];
23
- let action_path = path_1.default.join(root, builder.load);
24
- // TODO: need to watch these files too, and their deps!
25
- console.log('ACTION PATH', name, action_path);
26
- let action = require(action_path);
27
- let br = await action(build.model, build);
28
- ok = ok && null != br && br.ok;
29
- brlog.push(br);
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;IAC/C,IAAI,IAAI,GAAG,cAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IAE/C,6BAA6B;IAC7B,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;IAChC,IAAI,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAA;IAElC,IAAI,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;IAC/C,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAEpC,IAAI,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAA;IAExC,IAAI,EAAE,GAAG,IAAI,CAAA;IACb,IAAI,KAAK,GAAG,EAAE,CAAA;IAEd,kCAAkC;IAClC,KAAK,IAAI,IAAI,IAAI,QAAQ,EAAE;QACzB,IAAI,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC5B,IAAI,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QAE/C,uDAAuD;QACvD,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;QAE7C,IAAI,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;QACjC,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QACzC,EAAE,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;QAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;KACf;IAED,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;AAC1B,CAAC,CAAA;AAGC,sCAAa"}
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
- let json = JSON.stringify(build.root.gen(), null, 2);
11
- let filename = path_1.default.basename(build.path);
12
- let filenameparts = filename.match(/^(.*)\.[^.]+$/);
13
- if (filenameparts) {
14
- filename = filenameparts[1];
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;IAEpD,IAAI,QAAQ,GAAG,cAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACxC,IAAI,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;IACnD,IAAI,aAAa,EAAE;QACjB,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;KAC5B;IAED,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,QAAQ,GAAG,OAAO,CAAA;IAErD,MAAM,IAAA,oBAAS,EAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAE3B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;AACrB,CAAC,CAAA;AAGC,sCAAa"}
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"}
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
- // load config as a model
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":";AACA,yBAAyB;AACzB,wCAAwC;AACxC,0BAA0B;;;AAM1B,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;SACF,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"}
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
@@ -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.joins = exports.dive = void 0;
4
5
  function dive(node, depth, mapper) {
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../lib/util.ts"],"names":[],"mappings":";;;AAIA,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"}
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"}
@@ -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
- console.log('WATCH', this.fsw.getWatched());
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
- if (!once) {
48
- // There may be new files.
49
- this.update(br);
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
@@ -1 +1 @@
1
- {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../lib/watch.ts"],"names":[],"mappings":";;;AAEA,mCAA4C;AAC5C,uCAAoC;AAEpC,0CAAsC;AAGtC,MAAM,KAAK;IAKT,YAAY,IAAS;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,GAAG,GAAG,IAAI,oBAAS,EAAE,CAAA;QAC1B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED,MAAM,CAAC,EAAe;QAGpB,IAAI,KAAK,GAAI,EAAE,CAAC,KAAe,CAAA;QAE/B,4CAA4C;QAC5C,sCAAsC;QAEtC,gCAAgC;QAEhC,qCAAqC;QACrC,iCAAiC;QAEjC,IAAI,KAAK,GACP,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,KAAe,EAAE,MAAW,EAAE,EAAE;YACnE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YAC1D,OAAO,KAAK,CAAA;QACd,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;QAGlB,wCAAwC;QAExC,6BAA6B;QAC7B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAY,EAAE,EAAE;YAC7B,IAAI,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC;gBAC5B,EAAE,KAAK,IAAI;gBACX,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,EACxB;gBACA,2BAA2B;gBAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;aACnB;QACH,CAAC,CAAC,CAAA;QAEF,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAA;QAC7C,CAAC,EAAE,GAAG,CAAC,CAAA;IAET,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAa;QACrB,wCAAwC;QACxC,IAAI,GAAG,GAAG,CAAC,MAAM,IAAA,mBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;QACrD,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QAEnB,IAAI,KAAK,GAAG,IAAI,aAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAA;QAE1B,IAAI,CAAC,IAAI,EAAE;YACT,0BAA0B;YAC1B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;SAChB;QAED,IAAI,CAAC,IAAI,GAAG,EAAE,CAAA;QACd,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAE3D,OAAO,EAAE,CAAA;IACX,CAAC;IAGD,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;IACxB,CAAC;CACF;AAIC,sBAAK"}
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../lib/watch.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAGpD,mCAA4C;AAC5C,uCAAoC;AAEpC,0CAAsC;AAGtC,MAAM,KAAK;IAKT,YAAY,IAAS;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,GAAG,GAAG,IAAI,oBAAS,EAAE,CAAA;QAC1B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED,MAAM,CAAC,EAAe;QACpB,IAAI,KAAK,GAAI,EAAE,CAAC,KAAe,CAAA;QAE/B,IAAI,KAAK,GACP,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,KAAe,EAAE,MAAW,EAAE,EAAE;YACnE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YAC1D,OAAO,KAAK,CAAA;QACd,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;QAGlB,6BAA6B;QAC7B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAY,EAAE,EAAE;YAC7B,IAAI,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC;gBAC5B,EAAE,KAAK,IAAI;gBACX,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,EACxB;gBACA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;aACnB;QACH,CAAC,CAAC,CAAA;QAEF,qBAAqB;QACrB,gDAAgD;QAChD,UAAU;IAEZ,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAa;;QACrB,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;QAE1C,wCAAwC;QACxC,IAAI,GAAG,GAAG,CAAC,MAAM,IAAA,mBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;QACrD,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QAEnB,IAAI,KAAK,GAAG,IAAI,aAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,EAAE,GAAgB,MAAM,KAAK,CAAC,GAAG,EAAE,CAAA;QAEvC,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAE,EAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QAE7E,IAAI,EAAE,CAAC,EAAE,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,KAAK,0CAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;YAEnE,IAAI,CAAC,IAAI,EAAE;gBACT,0BAA0B;gBAC1B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;aAChB;SACF;aACI;YACH,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAG,MAAA,EAAE,CAAC,GAAG,0CAAE,MAAM,CAAA,CAAC,CAAA;YAC9C,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;SACtB;QAED,IAAI,CAAC,IAAI,GAAG,EAAE,CAAA;QAEd,OAAO,EAAE,CAAA;IACX,CAAC;IAGD,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;IACxB,CAAC;IAGD,YAAY,CAAC,EAAe;QAC1B,IAAI,EAAE,CAAC,GAAG,EAAE;YACV,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE;gBACrB,IAAI,EAAE,CAAC,GAAG,EAAE;oBACV,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;iBACpB;qBACI,IAAI,EAAE,CAAC,OAAO,EAAE;oBACnB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;iBACxB;qBACI;oBACH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;iBAChB;aACF;SACF;IACH,CAAC;IAED,QAAQ,CAAC,IAAqD;QAC5D,IAAI,IAAI,GAAG,EAAE,CAAA;QACb,KAAK,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACvC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,CAAA;YAC3B,KAAK,IAAI,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE;gBAChD,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAA;aAC5B;SACF;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;CACF;AAIC,sBAAK"}
package/dist/model.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- /* Copyright © 2021-2022 Voxgig Ltd, MIT License. */
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
- console.log('MODEL SPEC', spec);
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":"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"}
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
- console.log('BUILDING ', this.path, new Date() + ' ...')
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
- let nil = (this.root as Nil)
74
- console.log('MODEL: ' + (nil.nil ? nil.why : 'ok'))
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
- for (let builder of this.res) {
87
- let br = await builder.build(this)
88
- br.path = builder.path
89
- br.builder = builder.build.name
90
- brlog.push(br)
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: true, build: this, builders: brlog }
111
+ return { ok: !hasErr, build: this, builders: brlog, err: this.err }
94
112
  }
95
113
  }
96
114
 
@@ -5,37 +5,43 @@ import { Build, Builder } from '../build'
5
5
 
6
6
 
7
7
  const local_builder: Builder = async (build: Build) => {
8
- // TODO: need to provide project root via build
9
- let root = Path.resolve(build.path, '..', '..')
8
+ try {
9
+ // TODO: need to provide project root via build
10
+ let root = Path.resolve(build.path, '..', '..')
10
11
 
11
- // TODO: build should do this
12
- console.log('LOCAL root:', root)
13
- let configbuild = build.use.config
12
+ // TODO: build should do this
13
+ // console.log('LOCAL root:', root)
14
+ let configbuild = build.use.config
14
15
 
15
- let config = configbuild.watch.last.build.model
16
- console.log('CONFIG BUILD')
17
- console.dir(config, { depth: null })
16
+ let config = configbuild.watch.last.build.model
17
+ // console.log('CONFIG BUILD')
18
+ // console.dir(config, { depth: null })
18
19
 
19
- let builders = config.sys.model.builders
20
+ let builders = config.sys.model.builders
20
21
 
21
- let ok = true
22
- let brlog = []
22
+ let ok = true
23
+ let brlog = []
23
24
 
24
- // TODO: order by comma sep string
25
- for (let name in builders) {
26
- let builder = builders[name]
27
- let action_path = Path.join(root, builder.load)
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
- // TODO: need to watch these files too, and their deps!
30
- console.log('ACTION PATH', name, action_path)
30
+ // TODO: need to watch these files too, and their deps!
31
+ // console.log('ACTION PATH', name, action_path)
31
32
 
32
- let action = require(action_path)
33
- let br = await action(build.model, build)
34
- ok = ok && null != br && br.ok
35
- brlog.push(br)
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 {
@@ -8,19 +8,24 @@ import { Build, Builder } from '../build'
8
8
 
9
9
  const model_builder: Builder = async (build: Build) => {
10
10
 
11
- let json = JSON.stringify(build.root.gen(), null, 2)
11
+ try {
12
+ let json = JSON.stringify(build.root.gen(), null, 2)
12
13
 
13
- let filename = Path.basename(build.path)
14
- let filenameparts = filename.match(/^(.*)\.[^.]+$/)
15
- if (filenameparts) {
16
- filename = filenameparts[1]
17
- }
14
+ let filename = Path.basename(build.path)
15
+ let filenameparts = filename.match(/^(.*)\.[^.]+$/)
16
+ if (filenameparts) {
17
+ filename = filenameparts[1]
18
+ }
18
19
 
19
- let file = build.opts.base + '/' + filename + '.json'
20
+ let file = build.opts.base + '/' + filename + '.json'
20
21
 
21
- await writeFile(file, json)
22
+ await writeFile(file, json)
22
23
 
23
- return { ok: true }
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
@@ -1,3 +1,4 @@
1
+ /* Copyright © 2021-2023 Voxgig Ltd, MIT License. */
1
2
 
2
3
 
3
4
  type DiveMapper = (path: any[], leaf: any) => any[]
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
- console.log('WATCH', this.fsw.getWatched())
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 (!once) {
72
- // There may be new files.
73
- this.update(br)
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-2022 Voxgig Ltd, MIT License. */
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.19.0",
3
+ "version": "0.21.0",
4
4
  "main": "dist/model.js",
5
5
  "type": "commonjs",
6
6
  "types": "dist/model.d.ts",
@@ -42,15 +42,15 @@
42
42
  "LICENSE"
43
43
  ],
44
44
  "dependencies": {
45
- "aontu": "0.12.0",
45
+ "aontu": "0.14.1",
46
46
  "chokidar": "3.5.3"
47
47
  },
48
48
  "devDependencies": {
49
- "@types/jest": "^29.5.0",
50
- "esbuild": "^0.17.12",
49
+ "@types/jest": "^29.5.2",
50
+ "esbuild": "^0.18.8",
51
51
  "esbuild-jest": "^0.5.0",
52
52
  "jest": "^29.5.0",
53
53
  "es-jest": "^2.1.0",
54
- "typescript": "^5.0.2"
54
+ "typescript": "^5.1.3"
55
55
  }
56
56
  }