@voxgig/model 7.6.0 → 7.8.1

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
@@ -8,7 +8,7 @@ const Pkg = require('../package.json')
8
8
  const { Model } = require('../dist/model.js')
9
9
 
10
10
  const { Jsonic } = require('jsonic')
11
- const { Gubu, Fault, One, Any } = require('gubu')
11
+ const { Shape, Fault, One, Any } = require('shape')
12
12
 
13
13
 
14
14
 
@@ -106,7 +106,7 @@ function resolveOptions() {
106
106
 
107
107
 
108
108
  function validateOptions(rawOptions) {
109
- const optShape = Gubu({
109
+ const optShape = Shape({
110
110
  model: Fault('The first command line argument must be the model file path.', String),
111
111
  watch: Boolean,
112
112
  debug: One(String,Boolean),
package/dist/build.d.ts CHANGED
@@ -17,9 +17,12 @@ declare class BuildImpl implements Build {
17
17
  args: any;
18
18
  aontu: Aontu;
19
19
  deps: any;
20
+ cacheSig: Map<string, number> | null;
20
21
  constructor(spec: BuildSpec, log: Log);
21
22
  run(rspec: RunSpec): Promise<BuildResult>;
22
23
  resolveModel(): Promise<boolean>;
24
+ snapshotSig(): Map<string, number>;
25
+ cacheHit(): boolean;
23
26
  }
24
27
  declare function makeBuild(spec: BuildSpec, log: Log): BuildImpl;
25
28
  export { makeBuild, BuildSpec, };
package/dist/build.js CHANGED
@@ -7,6 +7,9 @@ class BuildImpl {
7
7
  constructor(spec, log) {
8
8
  this.use = {};
9
9
  this.errs = [];
10
+ // Signature of the last successful generate: path -> mtimeMs (-1 = missing).
11
+ // When every tracked file still matches, resolveModel() reuses this.model.
12
+ this.cacheSig = null;
10
13
  this.id = String(Math.random()).substring(3, 9);
11
14
  this.log = log;
12
15
  this.spec = spec;
@@ -58,9 +61,9 @@ class BuildImpl {
58
61
  }
59
62
  }
60
63
  }
61
- // Reload after pre production since model files may have been modified.
62
- const reload = forceReload || !hasErr;
63
- // TODO: only reload if mode changed
64
+ // Only reload when a pre-producer actually modified model sources
65
+ // (signalled via pr.reload). Previously this always ran on success.
66
+ const reload = forceReload && !hasErr;
64
67
  if (reload) {
65
68
  runlog.push('model:full');
66
69
  hasErr = await this.resolveModel();
@@ -95,6 +98,9 @@ class BuildImpl {
95
98
  return br;
96
99
  }
97
100
  async resolveModel() {
101
+ if (this.model && this.cacheSig && this.cacheHit()) {
102
+ return false;
103
+ }
98
104
  let hasErr = false;
99
105
  let src = '';
100
106
  if (!hasErr) {
@@ -113,8 +119,38 @@ class BuildImpl {
113
119
  this.model = this.aontu.generate(src, this.opts);
114
120
  hasErr = this.opts.errs && 0 < this.opts.errs.length;
115
121
  }
122
+ this.cacheSig = hasErr ? null : this.snapshotSig();
116
123
  return hasErr;
117
124
  }
125
+ // Collect mtimeMs for the root file and every file aontu recorded as a dep.
126
+ snapshotSig() {
127
+ const sig = new Map();
128
+ sig.set(this.path, mtime(this.fs, this.path));
129
+ for (const parent of Object.keys(this.deps)) {
130
+ for (const child of Object.keys(this.deps[parent])) {
131
+ if (!sig.has(child))
132
+ sig.set(child, mtime(this.fs, child));
133
+ }
134
+ }
135
+ return sig;
136
+ }
137
+ cacheHit() {
138
+ if (!this.cacheSig)
139
+ return false;
140
+ for (const [path, prev] of this.cacheSig) {
141
+ if (mtime(this.fs, path) !== prev)
142
+ return false;
143
+ }
144
+ return true;
145
+ }
146
+ }
147
+ function mtime(fs, path) {
148
+ try {
149
+ return fs.statSync(path).mtimeMs;
150
+ }
151
+ catch {
152
+ return -1;
153
+ }
118
154
  }
119
155
  function makeBuild(spec, log) {
120
156
  return new BuildImpl(spec, log);
package/dist/build.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,21 @@ const model_producer = async (build, ctx) => {
26
26
  filename = filenameparts[1];
27
27
  }
28
28
  let file = build.opts.base + '/' + filename + '.json';
29
+ // Skip write when output is unchanged — avoids mtime churn that would
30
+ // invalidate caches (here and in downstream watchers).
31
+ let existing;
32
+ try {
33
+ existing = build.fs.readFileSync(file, 'utf8');
34
+ }
35
+ catch { }
36
+ if (existing === json) {
37
+ build.log.debug({
38
+ point: 'write-model-skip',
39
+ path: file,
40
+ note: file.replace(process.cwd(), '.') + ' (unchanged)'
41
+ });
42
+ return pr;
43
+ }
29
44
  build.log.info({
30
45
  point: 'write-model',
31
46
  path: file,
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/producer/model.ts"],"names":[],"mappings":";;;;;;AACA,gDAAuB;AAKvB,iDAAiD;AACjD,MAAM,cAAc,GAAa,KAAK,EAAE,KAAY,EAAE,GAAiB,EAAE,EAAE;IACzE,IAAI,EAAE,GAAmB;QACvB,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,EAAE;KACX,CAAA;IAED,IAAI,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAE/C,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,CAAC;QAClB,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;IAC7B,CAAC;IAED,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,QAAQ,GAAG,OAAO,CAAA;IAErD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QACb,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC;KACvC,CAAC,CAAA;IAEF,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3D,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAGlC,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAGC,wCAAc"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/producer/model.ts"],"names":[],"mappings":";;;;;;AACA,gDAAuB;AAKvB,iDAAiD;AACjD,MAAM,cAAc,GAAa,KAAK,EAAE,KAAY,EAAE,GAAiB,EAAE,EAAE;IACzE,IAAI,EAAE,GAAmB;QACvB,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,EAAE;KACX,CAAA;IAED,IAAI,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAE/C,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,CAAC;QAClB,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;IAC7B,CAAC;IAED,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,QAAQ,GAAG,OAAO,CAAA;IAErD,sEAAsE;IACtE,uDAAuD;IACvD,IAAI,QAA4B,CAAA;IAChC,IAAI,CAAC;QAAC,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,CAAC;IAEhE,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;YACd,KAAK,EAAE,kBAAkB;YACzB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,cAAc;SACxD,CAAC,CAAA;QACF,OAAO,EAAE,CAAA;IACX,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QACb,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC;KACvC,CAAC,CAAA;IAEF,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3D,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAGlC,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAGC,wCAAc"}
@@ -1 +1 @@
1
- {"root":["../src/build.ts","../src/config.ts","../src/model.ts","../src/types.ts","../src/watch.ts","../src/producer/local.ts","../src/producer/model.ts"],"version":"5.9.3"}
1
+ {"root":["../src/build.ts","../src/config.ts","../src/model.ts","../src/types.ts","../src/watch.ts","../src/producer/local.ts","../src/producer/model.ts"],"version":"6.0.3"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voxgig/model",
3
- "version": "7.6.0",
3
+ "version": "7.8.1",
4
4
  "main": "dist/model.js",
5
5
  "type": "commonjs",
6
6
  "types": "dist/model.d.ts",
@@ -43,10 +43,10 @@
43
43
  "LICENSE"
44
44
  ],
45
45
  "dependencies": {
46
- "aontu": "0.38.0",
46
+ "aontu": "0.41.0",
47
47
  "chokidar": "5.0.0",
48
- "gubu": "^9.0.0",
49
- "memfs": "^4.57.1"
48
+ "shape": "^10.0.1",
49
+ "memfs": "^4.57.2"
50
50
  },
51
51
  "peerDependencies": {
52
52
  "@voxgig/util": ">=0",
@@ -58,8 +58,7 @@
58
58
  }
59
59
  },
60
60
  "devDependencies": {
61
- "@hapi/code": "^9.0.3",
62
- "@types/node": "25.5.0",
63
- "typescript": "^5.9.3"
61
+ "@types/node": "25.6.0",
62
+ "typescript": "^6.0.3"
64
63
  }
65
64
  }