@voxgig/model 3.5.0 → 5.0.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.
Files changed (47) hide show
  1. package/bin/voxgig-model +150 -31
  2. package/dist/{lib/build.d.ts → build.d.ts} +6 -5
  3. package/dist/{lib/build.js → build.js} +4 -3
  4. package/dist/build.js.map +1 -0
  5. package/dist/{lib/builder → builder}/local.js +13 -34
  6. package/dist/builder/local.js.map +1 -0
  7. package/dist/{lib/builder → builder}/model.js +5 -0
  8. package/dist/builder/model.js.map +1 -0
  9. package/dist/config.d.ts +12 -0
  10. package/dist/{lib/config.js → config.js} +6 -4
  11. package/dist/config.js.map +1 -0
  12. package/dist/model.d.ts +8 -7
  13. package/dist/model.js +35 -20
  14. package/dist/model.js.map +1 -1
  15. package/dist/tsconfig.tsbuildinfo +1 -0
  16. package/dist/{lib/types.d.ts → types.d.ts} +25 -3
  17. package/dist/types.js +4 -0
  18. package/dist/types.js.map +1 -0
  19. package/dist/{lib/watch.d.ts → watch.d.ts} +15 -18
  20. package/dist/watch.js +227 -0
  21. package/dist/watch.js.map +1 -0
  22. package/package.json +19 -20
  23. package/dist/lib/build.js.map +0 -1
  24. package/dist/lib/builder/local.js.map +0 -1
  25. package/dist/lib/builder/model.js.map +0 -1
  26. package/dist/lib/config.d.ts +0 -11
  27. package/dist/lib/config.js.map +0 -1
  28. package/dist/lib/model-builder.d.ts +0 -0
  29. package/dist/lib/model-builder.js +0 -2
  30. package/dist/lib/model-builder.js.map +0 -1
  31. package/dist/lib/types.js +0 -3
  32. package/dist/lib/types.js.map +0 -1
  33. package/dist/lib/util.d.ts +0 -7
  34. package/dist/lib/util.js +0 -94
  35. package/dist/lib/util.js.map +0 -1
  36. package/dist/lib/watch.js +0 -172
  37. package/dist/lib/watch.js.map +0 -1
  38. package/dist/model.min.js +0 -94
  39. package/lib/build.ts +0 -138
  40. package/lib/builder/local.ts +0 -130
  41. package/lib/builder/model.ts +0 -37
  42. package/lib/config.ts +0 -50
  43. package/lib/types.ts +0 -67
  44. package/lib/watch.ts +0 -250
  45. package/model.ts +0 -145
  46. /package/dist/{lib/builder → builder}/local.d.ts +0 -0
  47. /package/dist/{lib/builder → builder}/model.d.ts +0 -0
package/dist/watch.js ADDED
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ /* Copyright © 2021-2024 Voxgig Ltd, MIT License. */
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.Watch = void 0;
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const build_1 = require("./build");
10
+ const chokidar_1 = require("chokidar");
11
+ const promises_1 = require("fs/promises");
12
+ const print = console.log;
13
+ const warn = console.warn;
14
+ class Watch {
15
+ constructor(wspec, log) {
16
+ this.wspec = wspec;
17
+ this.log = log;
18
+ this.name = wspec.name || 'model';
19
+ this.fsw = new chokidar_1.FSWatcher();
20
+ this.lastChangeTime = 0;
21
+ this.runq = [];
22
+ this.doneq = [];
23
+ this.canons = [];
24
+ this.startTime = 0;
25
+ this.lastChange = { path: '', when: 0 };
26
+ this.lastTrigger = { path: '', when: 0 };
27
+ this.running = false;
28
+ this.lastrun = undefined;
29
+ this.idle = wspec.idle || 111;
30
+ this.fsw.on('change', async (path) => {
31
+ // console.log('CHANGE', Date.now() - this.startTime, path)
32
+ this.handleChange(path);
33
+ });
34
+ }
35
+ // Returns first BuildResult
36
+ start() {
37
+ this.startTime = Date.now();
38
+ this.handleChange('<start>');
39
+ // Check if there have been no recent changes, if so, run build.
40
+ setInterval(() => {
41
+ // const start = this.startTime
42
+ const now = Date.now();
43
+ const idleDuration = now - this.lastChange.when;
44
+ // Only trigger a build if there was a actual change
45
+ const trigger = this.lastChange.when !== this.lastTrigger.when &&
46
+ this.lastChange.path !== this.lastTrigger.path;
47
+ // console.log('CHECK-A', {
48
+ // tick: (now - start),
49
+ // idleDuration,
50
+ // trigger,
51
+ // running: this.running,
52
+ // path: this.lastChange.path
53
+ // })
54
+ if (trigger) {
55
+ // Only add to build queue if we've been idle.
56
+ // This allows external compilation outputting multiple files to complete fully.
57
+ // IMPORTANT: always trigger a new build if there were changes *inside* a build period
58
+ if (this.idle < idleDuration) {
59
+ this.lastTrigger.path = this.lastChange.path;
60
+ this.lastTrigger.when = this.lastChange.when;
61
+ const path = this.lastChange.path;
62
+ const canon = this.canon(path);
63
+ this.runq.push({
64
+ canon,
65
+ path,
66
+ start: now,
67
+ end: -1,
68
+ });
69
+ // Defer builds to the event loop to keep idle checking separate.
70
+ setImmediate(this.drain.bind(this));
71
+ }
72
+ }
73
+ }, (this.idle * 1.1 / 2) | 0);
74
+ }
75
+ // If path is inside a watched folder, return folder as canonical reference.
76
+ canon(path) {
77
+ for (const canon of this.canons) {
78
+ if (canon.isFolder && path.startsWith(canon.path)) {
79
+ return canon.path;
80
+ }
81
+ }
82
+ return path;
83
+ }
84
+ handleChange(path) {
85
+ // Record most recent (last) changed path and time
86
+ this.lastChange.path = path;
87
+ this.lastChange.when = Date.now();
88
+ }
89
+ async drain() {
90
+ // If already running, all items in queue will be drained from this.runq in the while loop
91
+ if (this.running) {
92
+ return;
93
+ }
94
+ this.running = true;
95
+ let r;
96
+ // While there are queued runs, run them sequentially
97
+ while (r = this.runq.shift()) {
98
+ // console.log('===DRAIN-RUN', this.runq.length, new Date(), r.start, r.canon)
99
+ // TODO: collect results and errors!!!
100
+ let br = await this.run(this.name, false, r.canon);
101
+ // console.log('BR', br)
102
+ r.end = Date.now();
103
+ this.doneq.push(r);
104
+ this.lastrun = r;
105
+ // console.log('===DRAIN-DONE', this.runq.length, new Date(), r.start, r.canon)
106
+ }
107
+ this.running = false;
108
+ }
109
+ async add(path) {
110
+ if (!node_path_1.default.isAbsolute(path)) {
111
+ path = node_path_1.default.join(this.wspec.require, path);
112
+ }
113
+ // Ignore if aleady added
114
+ if (this.canons.find((c) => c.path === path)) {
115
+ return;
116
+ }
117
+ const fileStat = await (0, promises_1.stat)(path);
118
+ const canon = {
119
+ path: path,
120
+ isFolder: fileStat.isDirectory(),
121
+ when: Date.now()
122
+ };
123
+ this.canons.push(canon);
124
+ this.fsw.add(path);
125
+ // console.log('ADD', canon)
126
+ }
127
+ async update(br) {
128
+ let build = br.build;
129
+ let files = Object.keys(build.root.deps).reduce((files, target) => {
130
+ files = files.concat(Object.keys(build.root.deps[target]));
131
+ return files;
132
+ }, [build.path]);
133
+ // TODO: remove deleted files
134
+ files.forEach(async (file) => {
135
+ if ('string' === typeof (file) &&
136
+ '' !== file &&
137
+ build.opts.base !== file) {
138
+ await this.add(file);
139
+ }
140
+ });
141
+ }
142
+ async run(name, once, trigger) {
143
+ // console.trace()
144
+ this.lastChangeTime = Date.now();
145
+ // print('\n@voxgig/model =================', this.lastChangeTime, new Date(this.lastChangeTime))
146
+ // print('TRIGGER:', trigger, '\n')
147
+ this.log.info({
148
+ point: 'build-start', last: this.lastChangeTime, watch: name,
149
+ note: 'watch:' + name + ' last:' + new Date(this.lastChangeTime).toISOString()
150
+ });
151
+ this.log.info({
152
+ point: 'build-trigger', trigger,
153
+ note: 'watch:' + name + ' trigger:' + ('' + trigger).replace(process.cwd() + '/', '')
154
+ });
155
+ // TODO: build spec should not have src!
156
+ let src = (await (0, promises_1.readFile)(this.wspec.path)).toString();
157
+ this.wspec.src = src;
158
+ this.build = this.build || (0, build_1.makeBuild)(this.wspec, this.log);
159
+ // TODO: better way to do this?
160
+ this.build.src = src;
161
+ let br = await this.build.run();
162
+ // print('\nFILES:\n' + this.descDeps((br as any).build.root.deps) + '\n')
163
+ const deps = this.descDeps(br.build.root.deps);
164
+ this.log.debug({
165
+ point: 'deps', deps,
166
+ note: 'watch:' + name + ' deps:\n' + deps
167
+ });
168
+ if (br.ok) {
169
+ const rootkeys = Object.keys(br?.build?.model).join(';');
170
+ this.log.info({
171
+ point: 'root-keys', keys: rootkeys,
172
+ note: 'watch:' + name + ' keys: ' + rootkeys
173
+ });
174
+ // print('TOP:', Object.keys(br?.build?.model).join(', '), '\n')
175
+ if (!once) {
176
+ // There may be new files.
177
+ await this.update(br);
178
+ }
179
+ }
180
+ else {
181
+ warn('MODEL ERRORS: ' + br.err?.length);
182
+ this.handleErrors(br);
183
+ }
184
+ this.last = br;
185
+ this.log.info({
186
+ point: 'build-end', watch: name,
187
+ note: 'watch:' + name + '\n',
188
+ });
189
+ return br;
190
+ }
191
+ async stop() {
192
+ await this.fsw.close();
193
+ }
194
+ handleErrors(br) {
195
+ if (br.err) {
196
+ for (let be of br.err) {
197
+ // TODO: print stack if not a model error
198
+ if (be.isVal && be.msg) {
199
+ warn(be.msg);
200
+ }
201
+ // else if (be.message) {
202
+ // warn(be.message)
203
+ // }
204
+ else {
205
+ warn(be);
206
+ }
207
+ }
208
+ }
209
+ }
210
+ descDeps(deps) {
211
+ if (null == deps) {
212
+ return '';
213
+ }
214
+ let cwd = process.cwd();
215
+ let desc = [];
216
+ for (let entryPath of Object.keys(deps)) {
217
+ desc.push(' ' + entryPath);
218
+ for (let depPath of Object.keys(deps[entryPath])) {
219
+ depPath = depPath.replace(cwd, '.');
220
+ desc.push(' ' + depPath);
221
+ }
222
+ }
223
+ return desc.join('\n');
224
+ }
225
+ }
226
+ exports.Watch = Watch;
227
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voxgig/model",
3
- "version": "3.5.0",
3
+ "version": "5.0.0",
4
4
  "main": "dist/model.js",
5
5
  "type": "commonjs",
6
6
  "types": "dist/model.d.ts",
@@ -19,16 +19,16 @@
19
19
  "url": "git://github.com/voxgig/model.git"
20
20
  },
21
21
  "scripts": {
22
- "test": "jest --coverage",
23
- "test-pure": "jest --coverage --config jest.config.pure.js",
24
- "test-some": "jest -t",
25
- "test-watch": "jest --coverage --watchAll",
22
+ "test": "node --enable-source-maps --test dist-test",
23
+ "test22": "node --enable-source-maps --test \"dist-test/*.test.js\"",
24
+ "test-some": "node --enable-source-maps --test-name-pattern=\"$npm_config_pattern\" --test dist-test",
25
+ "test-cov": "rm -rf ./coverage && mkdir -p ./coverage && node --experimental-test-coverage --test-reporter=spec --test-reporter-destination=stdout --test-reporter=lcov --test-reporter-destination=coverage/lcov.info --enable-source-maps --test \"dist-test/*.test.js\"",
26
+ "watch": "tsc --build src test -w",
27
+ "build": "tsc --build src test",
26
28
  "test-model": "voxgig-model test/sys01/model/model.jsonic",
27
- "model": "voxgig-model model/sys.jsonic",
28
- "model-build": "voxgig-model model/sys.jsonic --once",
29
- "watch": "tsc -w -d",
30
- "build": "tsc -d",
31
- "clean": "rm -rf node_modules yarn.lock package-lock.json",
29
+ "model": "voxgig-model -w model/sys.jsonic",
30
+ "model-build": "voxgig-model -g debug model/sys.jsonic",
31
+ "clean": "rm -rf node_modules dist dist-test yarn.lock package-lock.json",
32
32
  "reset": "npm run clean && npm i && npm run build && npm test",
33
33
  "repo-tag": "REPO_VERSION=`node -e \"console.log(require('./package').version)\"` && echo TAG: v$REPO_VERSION && git commit -a -m v$REPO_VERSION && git push && git tag v$REPO_VERSION && git push --tags;",
34
34
  "repo-publish": "npm run clean && npm i && npm run repo-publish-quick",
@@ -44,17 +44,16 @@
44
44
  "LICENSE"
45
45
  ],
46
46
  "dependencies": {
47
- "@voxgig/util": "^0.0.3",
48
- "aontu": "0.22.0",
49
- "chokidar": "4.0.1"
47
+ "aontu": "0.25.0",
48
+ "chokidar": "4.0.1",
49
+ "gubu": "^8.3.0"
50
+ },
51
+ "peerDependencies": {
52
+ "@voxgig/util": ">=0"
50
53
  },
51
54
  "devDependencies": {
52
- "@types/jest": "^29.5.13",
53
- "@types/node": "22.6.1",
54
- "es-jest": "^2.1.0",
55
- "esbuild": "^0.24.0",
56
- "esbuild-jest": "^0.5.0",
57
- "jest": "^29.7.0",
58
- "typescript": "^5.6.2"
55
+ "@types/node": "22.9.0",
56
+ "typescript": "^5.6.3",
57
+ "@hapi/code": "^9.0.3"
59
58
  }
60
59
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../lib/build.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"local.js","sourceRoot":"","sources":["../../../lib/builder/local.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../lib/builder/model.ts"],"names":[],"mappings":";;;;;;AACA,gDAAuB;AAEvB,0CAAuC;AAKvC,iDAAiD;AACjD,MAAM,aAAa,GAAY,KAAK,EAAE,KAAY,EAAE,GAAiB,EAAE,EAAE;IACvE,IAAI,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IACpD,CAAC;IAED,IAAI,CAAC;QACH,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,CAAC;YAClB,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;QAC7B,CAAC;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,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;IACnD,CAAC;IACD,OAAO,CAAM,EAAE,CAAC;QACd,MAAM,CAAC,CAAA;IACT,CAAC;AACH,CAAC,CAAA;AAGC,sCAAa"}
@@ -1,11 +0,0 @@
1
- import type { BuildResult, Spec } from './types';
2
- import { Watch } from './watch';
3
- declare class Config {
4
- build: any;
5
- watch: Watch;
6
- constructor(spec: Spec);
7
- run(): Promise<BuildResult>;
8
- start(): Promise<BuildResult>;
9
- stop(): Promise<void>;
10
- }
11
- export { Config, Spec };
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAKpD,mCAA+B;AAS/B,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,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"}
File without changes
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=model-builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-builder.js","sourceRoot":"","sources":["../../lib/model-builder.ts"],"names":[],"mappings":""}
package/dist/lib/types.js DELETED
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":""}
@@ -1,7 +0,0 @@
1
- type DiveMapper = (path: any[], leaf: any) => any[];
2
- declare function dive(node: any, depth?: number | DiveMapper, mapper?: DiveMapper): any[];
3
- declare function joins(arr: any[], ...seps: string[]): string;
4
- declare function get(root: any, path: string | string[]): any;
5
- declare function pinify(path: string[]): string;
6
- declare function camelify(input: any[] | string): string;
7
- export { dive, joins, get, pinify, camelify, };
package/dist/lib/util.js DELETED
@@ -1,94 +0,0 @@
1
- "use strict";
2
- /* Copyright © 2021-2023 Voxgig Ltd, MIT License. */
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.camelify = exports.pinify = exports.get = exports.joins = exports.dive = void 0;
5
- function dive(node, depth, mapper) {
6
- let d = (null == depth || 'number' != typeof depth) ? 2 : depth;
7
- mapper = 'function' === typeof depth ? depth : mapper;
8
- let items = [];
9
- Object.entries(node || {}).reduce((items, entry) => {
10
- let key = entry[0];
11
- let child = entry[1];
12
- // console.log('CHILD', d, key, child)
13
- if ('$' === key) {
14
- // console.log('BBB', d)
15
- items.push([[], child]);
16
- }
17
- else if (d <= 1 ||
18
- null == child ||
19
- 'object' !== typeof child ||
20
- 0 === Object.keys(child).length) {
21
- // console.log('AAA', d)
22
- items.push([[key], child]);
23
- }
24
- else {
25
- // console.log('CCC', d)
26
- let children = dive(child, d - 1);
27
- children = children.map(child => {
28
- child[0].unshift(key);
29
- return child;
30
- });
31
- items.push(...children);
32
- }
33
- return items;
34
- }, items);
35
- // console.log('ITEMS', items)
36
- if (mapper) {
37
- return items.reduce(((a, entry) => {
38
- entry = mapper(entry[0], entry[1]);
39
- if (null != entry[0]) {
40
- a[entry[0]] = entry[1];
41
- }
42
- return a;
43
- }), {});
44
- }
45
- return items;
46
- }
47
- exports.dive = dive;
48
- /*
49
- * , => a,b
50
- * :, => a:1,b:2
51
- * :,/ => a:1,b:2/c:3,d:4/e:5,f:6
52
- */
53
- function joins(arr, ...seps) {
54
- arr = arr || [];
55
- seps = seps || [];
56
- let sa = [];
57
- for (let i = 0; i < arr.length; i++) {
58
- sa.push(arr[i]);
59
- if (i < arr.length - 1) {
60
- for (let j = seps.length - 1; -1 < j; j--) {
61
- if (0 === (i + 1) % (1 << j)) {
62
- sa.push(seps[j]);
63
- break;
64
- }
65
- }
66
- }
67
- }
68
- return sa.join('');
69
- }
70
- exports.joins = joins;
71
- function get(root, path) {
72
- path = 'string' === typeof path ? path.split('.') : path;
73
- let node = root;
74
- for (let i = 0; i < path.length && null != node; i++) {
75
- node = node[path[i]];
76
- }
77
- return node;
78
- }
79
- exports.get = get;
80
- function pinify(path) {
81
- let pin = path
82
- .map((p, i) => p + (i % 2 ? (i === path.length - 1 ? '' : ',') : ':'))
83
- .join('');
84
- return pin;
85
- }
86
- exports.pinify = pinify;
87
- function camelify(input) {
88
- let parts = 'string' == typeof input ? input.split('-') : input.map(n => '' + n);
89
- return parts
90
- .map((p) => ('' === p ? '' : (p[0].toUpperCase() + p.substring(1))))
91
- .join('');
92
- }
93
- exports.camelify = camelify;
94
- //# sourceMappingURL=util.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../lib/util.ts"],"names":[],"mappings":"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"}
package/dist/lib/watch.js DELETED
@@ -1,172 +0,0 @@
1
- "use strict";
2
- /* Copyright © 2021-2024 Voxgig Ltd, MIT License. */
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.Watch = void 0;
8
- const node_path_1 = __importDefault(require("node:path"));
9
- const build_1 = require("./build");
10
- const chokidar_1 = require("chokidar");
11
- const promises_1 = require("fs/promises");
12
- const print = console.log;
13
- const warn = console.warn;
14
- class Watch {
15
- constructor(spec) {
16
- this.spec = spec;
17
- this.fsw = new chokidar_1.FSWatcher();
18
- this.last_change_time = 0;
19
- this.runq = [];
20
- this.doneq = [];
21
- this.canons = [];
22
- this.running = false;
23
- // const run = this.run.bind(this)
24
- const drain = this.drain.bind(this);
25
- this.fsw.on('change', async (path) => {
26
- // TODO: needs a much more robust queue that checks for dups,
27
- // otherwise BuildContext state will have concurrency corruptions
28
- // Avoid rebuilding when, for example, TS rewrites all files in dist
29
- // const dorun = 1111 < Date.now() - this.last_change_time
30
- // console.log('CHANGE', dorun, this.last_change_time, args)
31
- const canon = this.canon(path);
32
- const running = this.runq.find((run) => run.canon === canon);
33
- if (running) {
34
- // console.log('RUNNING', canon, path)
35
- return;
36
- }
37
- this.runq.push({
38
- canon,
39
- path,
40
- start: Date.now(),
41
- end: -1,
42
- });
43
- // console.log('RUNQ-ADD', this.runq)
44
- setImmediate(drain);
45
- });
46
- }
47
- async drain() {
48
- if (this.running) {
49
- return;
50
- }
51
- this.running = true;
52
- let r;
53
- while (r = this.runq[0]) {
54
- // console.log('DRAIN')
55
- let br = await this.run(false, r.canon);
56
- // console.log('BR', br)
57
- this.runq.shift();
58
- r.end = Date.now();
59
- this.doneq.push(r);
60
- // console.log('DONEQ', this.doneq)
61
- }
62
- this.running = false;
63
- }
64
- async add(path) {
65
- if (!node_path_1.default.isAbsolute(path)) {
66
- path = node_path_1.default.join(this.spec.require, path);
67
- }
68
- // Ignore if aleady added
69
- if (this.canons.find((c) => c.path === path)) {
70
- return;
71
- }
72
- const fileStat = await (0, promises_1.stat)(path);
73
- const canon = {
74
- path: path,
75
- isFolder: fileStat.isDirectory(),
76
- when: Date.now()
77
- };
78
- this.canons.push(canon);
79
- this.fsw.add(path);
80
- // console.log('ADD', canon)
81
- }
82
- // If path is inside a watched folder, return folder as canonical reference.
83
- canon(path) {
84
- for (const canon of this.canons) {
85
- if (canon.isFolder && path.startsWith(canon.path)) {
86
- return canon.path;
87
- }
88
- }
89
- return path;
90
- }
91
- async update(br) {
92
- let build = br.build;
93
- let files = Object.keys(build.root.deps).reduce((files, target) => {
94
- files = files.concat(Object.keys(build.root.deps[target]));
95
- return files;
96
- }, [build.path]);
97
- // TODO: remove deleted files
98
- files.forEach(async (file) => {
99
- if ('string' === typeof (file) &&
100
- '' !== file &&
101
- build.opts.base !== file) {
102
- await this.add(file);
103
- }
104
- });
105
- }
106
- // Returns first BuildResult
107
- async start() {
108
- return await this.run(false, '<start>');
109
- }
110
- async run(once, trigger) {
111
- // console.trace()
112
- var _a, _b;
113
- this.last_change_time = Date.now();
114
- print('\n@voxgig/model', this.last_change_time, new Date(this.last_change_time));
115
- print('TRIGGER:', trigger, '\n');
116
- // TODO: build spec should not have src!
117
- let src = (await (0, promises_1.readFile)(this.spec.path)).toString();
118
- this.spec.src = src;
119
- this.build = this.build || (0, build_1.makeBuild)(this.spec);
120
- // TODO: better way to do this?
121
- this.build.src = src;
122
- let br = await this.build.run();
123
- print('\nFILES:\n' + this.descDeps(br.build.root.deps) + '\n');
124
- if (br.ok) {
125
- print('TOP:', Object.keys((_a = br === null || br === void 0 ? void 0 : br.build) === null || _a === void 0 ? void 0 : _a.model).join(', '), '\n');
126
- if (!once) {
127
- // There may be new files.
128
- await this.update(br);
129
- }
130
- }
131
- else {
132
- warn('MODEL ERRORS: ' + ((_b = br.err) === null || _b === void 0 ? void 0 : _b.length));
133
- this.handleErrors(br);
134
- }
135
- this.last = br;
136
- return br;
137
- }
138
- async stop() {
139
- await this.fsw.close();
140
- }
141
- handleErrors(br) {
142
- if (br.err) {
143
- for (let be of br.err) {
144
- // TODO: print stack if not a model error
145
- if (be.isVal && be.msg) {
146
- warn(be.msg);
147
- }
148
- // else if (be.message) {
149
- // warn(be.message)
150
- // }
151
- else {
152
- warn(be);
153
- }
154
- }
155
- }
156
- }
157
- descDeps(deps) {
158
- if (null == deps) {
159
- return '';
160
- }
161
- let desc = [];
162
- for (let entryPath of Object.keys(deps)) {
163
- desc.push(' ' + entryPath);
164
- for (let depPath of Object.keys(deps[entryPath])) {
165
- desc.push(' ' + depPath);
166
- }
167
- }
168
- return desc.join('\n');
169
- }
170
- }
171
- exports.Watch = Watch;
172
- //# sourceMappingURL=watch.js.map