aontu 0.40.0 → 0.42.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/dist/aontu.js +7 -0
- package/dist/aontu.js.map +1 -1
- package/dist/ctx.d.ts +14 -2
- package/dist/ctx.js +56 -9
- package/dist/ctx.js.map +1 -1
- package/dist/err.js +36 -15
- package/dist/err.js.map +1 -1
- package/dist/lang.d.ts +5 -1
- package/dist/lang.js +100 -24
- package/dist/lang.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/type.d.ts +5 -0
- package/dist/type.js.map +1 -1
- package/dist/unify.js +372 -55
- package/dist/unify.js.map +1 -1
- package/dist/utility.js +6 -2
- package/dist/utility.js.map +1 -1
- package/dist/val/BagVal.d.ts +0 -3
- package/dist/val/BagVal.js +6 -6
- package/dist/val/BagVal.js.map +1 -1
- package/dist/val/ConjunctVal.d.ts +1 -1
- package/dist/val/ConjunctVal.js +138 -15
- package/dist/val/ConjunctVal.js.map +1 -1
- package/dist/val/CopyFuncVal.js +3 -2
- package/dist/val/CopyFuncVal.js.map +1 -1
- package/dist/val/DisjunctVal.js +40 -10
- package/dist/val/DisjunctVal.js.map +1 -1
- package/dist/val/ExpectVal.js +17 -4
- package/dist/val/ExpectVal.js.map +1 -1
- package/dist/val/FuncBaseVal.js +2 -2
- package/dist/val/FuncBaseVal.js.map +1 -1
- package/dist/val/IntegerVal.js +1 -1
- package/dist/val/IntegerVal.js.map +1 -1
- package/dist/val/JunctionVal.d.ts +1 -0
- package/dist/val/JunctionVal.js +6 -1
- package/dist/val/JunctionVal.js.map +1 -1
- package/dist/val/KeyFuncVal.js +0 -2
- package/dist/val/KeyFuncVal.js.map +1 -1
- package/dist/val/ListVal.d.ts +1 -0
- package/dist/val/ListVal.js +36 -65
- package/dist/val/ListVal.js.map +1 -1
- package/dist/val/MapVal.d.ts +3 -2
- package/dist/val/MapVal.js +71 -91
- package/dist/val/MapVal.js.map +1 -1
- package/dist/val/MoveFuncVal.d.ts +2 -1
- package/dist/val/MoveFuncVal.js +78 -13
- package/dist/val/MoveFuncVal.js.map +1 -1
- package/dist/val/NilVal.d.ts +2 -1
- package/dist/val/NilVal.js +15 -1
- package/dist/val/NilVal.js.map +1 -1
- package/dist/val/OpBaseVal.js +1 -1
- package/dist/val/OpBaseVal.js.map +1 -1
- package/dist/val/PathFuncVal.js +25 -4
- package/dist/val/PathFuncVal.js.map +1 -1
- package/dist/val/{RefVal.d.ts → PathVal.d.ts} +4 -3
- package/dist/val/{RefVal.js → PathVal.js} +75 -77
- package/dist/val/PathVal.js.map +1 -0
- package/dist/val/PlusOpVal.d.ts +1 -1
- package/dist/val/PrefVal.js +20 -7
- package/dist/val/PrefVal.js.map +1 -1
- package/dist/val/SpreadVal.d.ts +20 -0
- package/dist/val/SpreadVal.js +194 -0
- package/dist/val/SpreadVal.js.map +1 -0
- package/dist/val/Val.d.ts +4 -1
- package/dist/val/Val.js +88 -44
- package/dist/val/Val.js.map +1 -1
- package/dist/val/VarVal.js +3 -3
- package/dist/val/VarVal.js.map +1 -1
- package/package.json +6 -7
- package/src/aontu.ts +9 -1
- package/src/ctx.ts +95 -11
- package/src/err.ts +37 -17
- package/src/lang.ts +113 -23
- package/src/tsconfig.json +2 -1
- package/src/type.ts +5 -0
- package/src/unify.ts +390 -64
- package/src/utility.ts +5 -2
- package/src/val/BagVal.ts +6 -7
- package/src/val/ConjunctVal.ts +133 -15
- package/src/val/CopyFuncVal.ts +3 -2
- package/src/val/DisjunctVal.ts +43 -11
- package/src/val/ExpectVal.ts +19 -5
- package/src/val/FuncBaseVal.ts +2 -2
- package/src/val/IntegerVal.ts +1 -1
- package/src/val/JunctionVal.ts +5 -1
- package/src/val/KeyFuncVal.ts +0 -3
- package/src/val/ListVal.ts +40 -86
- package/src/val/MapVal.ts +78 -119
- package/src/val/MoveFuncVal.ts +79 -14
- package/src/val/NilVal.ts +17 -1
- package/src/val/OpBaseVal.ts +1 -1
- package/src/val/PathFuncVal.ts +29 -4
- package/src/val/PathVal.ts +435 -0
- package/src/val/PrefVal.ts +21 -8
- package/src/val/{RefVal.ts → RefVal.ts.old} +31 -20
- package/src/val/SpreadVal.ts +275 -0
- package/src/val/Val.ts +141 -50
- package/src/val/VarVal.ts +3 -3
- package/dist/val/RefVal.js.map +0 -1
package/dist/aontu.js
CHANGED
|
@@ -124,6 +124,13 @@ function handleErrors(errs, out, ac) {
|
|
|
124
124
|
out.err.map((err) => ac.adderr(err));
|
|
125
125
|
}
|
|
126
126
|
if (0 < ac.err.length) {
|
|
127
|
+
// Error message formatting is deferred by adderr (many NilVals are
|
|
128
|
+
// transient). Materialize msgs here before the caller sees them.
|
|
129
|
+
for (const err of ac.err) {
|
|
130
|
+
if (null == err?.msg || '' === err.msg) {
|
|
131
|
+
(0, err_1.descErr)(err, ac);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
127
134
|
if (ac.collect) {
|
|
128
135
|
if (out) {
|
|
129
136
|
out.err = ac.err;
|
package/dist/aontu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aontu.js","sourceRoot":"","sources":["../src/aontu.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;
|
|
1
|
+
{"version":3,"file":"aontu.js","sourceRoot":"","sources":["../src/aontu.ts"],"names":[],"mappings":"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"}
|
package/dist/ctx.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ type AontuContextConfig = {
|
|
|
7
7
|
fs?: any;
|
|
8
8
|
path?: string[];
|
|
9
9
|
root?: Val;
|
|
10
|
-
seen?:
|
|
10
|
+
seen?: Map<string, number>;
|
|
11
11
|
seenI?: number;
|
|
12
12
|
src?: string;
|
|
13
13
|
srcpath?: string;
|
|
@@ -22,11 +22,12 @@ declare class AontuContext {
|
|
|
22
22
|
path: string[];
|
|
23
23
|
vc: number;
|
|
24
24
|
cc: number;
|
|
25
|
+
sc: number;
|
|
25
26
|
vars: Record<string, Val>;
|
|
26
27
|
src?: string;
|
|
27
28
|
fs?: FST;
|
|
28
29
|
seenI: number;
|
|
29
|
-
seen:
|
|
30
|
+
seen: Map<string, number>;
|
|
30
31
|
collect: boolean;
|
|
31
32
|
err: any[];
|
|
32
33
|
explain: any[] | null;
|
|
@@ -36,6 +37,17 @@ declare class AontuContext {
|
|
|
36
37
|
_pathstr: string | undefined;
|
|
37
38
|
_pathidx: number | undefined;
|
|
38
39
|
_pathmap: Map<string, number>;
|
|
40
|
+
_pathTrie: Map<number, Map<string, {
|
|
41
|
+
idx: number;
|
|
42
|
+
path: string[];
|
|
43
|
+
}>>;
|
|
44
|
+
_pathidxNext: {
|
|
45
|
+
n: number;
|
|
46
|
+
};
|
|
47
|
+
_trialMode?: boolean;
|
|
48
|
+
_childCache?: Map<string, AontuContext>;
|
|
49
|
+
_refCloneCache?: Map<string, Val>;
|
|
50
|
+
_uniteCache?: Map<string, Val>;
|
|
39
51
|
constructor(cfg: AontuContextConfig);
|
|
40
52
|
clone(cfg: {
|
|
41
53
|
root?: Val;
|
package/dist/ctx.js
CHANGED
|
@@ -9,6 +9,7 @@ const err_1 = require("./err");
|
|
|
9
9
|
class AontuContext {
|
|
10
10
|
constructor(cfg) {
|
|
11
11
|
this.cc = -1;
|
|
12
|
+
this.sc = 0; // Unresolved spread count
|
|
12
13
|
this.vars = {};
|
|
13
14
|
this.root = cfg.root;
|
|
14
15
|
this.path = [...(cfg.path ?? [])];
|
|
@@ -22,10 +23,13 @@ class AontuContext {
|
|
|
22
23
|
this.cc = null == cfg.cc ? this.cc : cfg.cc;
|
|
23
24
|
this.vars = cfg.vars ?? this.vars;
|
|
24
25
|
this.seenI = cfg.seenI ?? 0;
|
|
25
|
-
this.seen = cfg.seen ??
|
|
26
|
+
this.seen = cfg.seen ?? new Map();
|
|
26
27
|
this.srcpath = cfg.srcpath ?? undefined;
|
|
27
28
|
this.deps = cfg.deps ?? {};
|
|
28
29
|
this._pathmap = new Map();
|
|
30
|
+
this._pathTrie = new Map();
|
|
31
|
+
this._pathidxNext = { n: 1 }; // 0 reserved for the root path
|
|
32
|
+
this._pathidx = 0;
|
|
29
33
|
this.opts = (0, type_1.DEFAULT_OPTS)();
|
|
30
34
|
this.addopts(cfg.opts);
|
|
31
35
|
}
|
|
@@ -38,21 +42,62 @@ class AontuContext {
|
|
|
38
42
|
ctx.err = cfg.err ?? ctx.err;
|
|
39
43
|
ctx.explain = Array.isArray(cfg.explain) ? cfg.explain : ctx.explain;
|
|
40
44
|
ctx._pathstr = undefined;
|
|
41
|
-
|
|
45
|
+
// Path didn't move unless cfg.path was supplied, so pathidx stays
|
|
46
|
+
// valid in the common case. For cfg.path-override (4 calls per
|
|
47
|
+
// run, fixpoint advances) fall back to the join-based lookup.
|
|
48
|
+
if (cfg.path !== undefined) {
|
|
49
|
+
ctx._pathidx = undefined;
|
|
50
|
+
}
|
|
42
51
|
return ctx;
|
|
43
52
|
}
|
|
44
53
|
descend(key) {
|
|
54
|
+
// C3: reuse the child ctx from a previous descend with the same
|
|
55
|
+
// (parent, key). Saves one Object.create + several property
|
|
56
|
+
// writes per hit; ~48% hit rate on foo-sdk.
|
|
57
|
+
//
|
|
58
|
+
// NB: must use hasOwnProperty here — plain `this._childCache`
|
|
59
|
+
// would walk the prototype chain and read the *parent's* cache
|
|
60
|
+
// (ctxs are created via Object.create(parent)), so keys would
|
|
61
|
+
// cross-contaminate between sibling branches.
|
|
62
|
+
let childCache;
|
|
63
|
+
if (Object.prototype.hasOwnProperty.call(this, '_childCache')) {
|
|
64
|
+
childCache = this._childCache;
|
|
65
|
+
const cached = childCache.get(key);
|
|
66
|
+
if (cached !== undefined)
|
|
67
|
+
return cached;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
childCache = new Map();
|
|
71
|
+
this._childCache = childCache;
|
|
72
|
+
}
|
|
45
73
|
const ctx = Object.create(this);
|
|
46
|
-
ctx.path = this.path.concat(key);
|
|
47
74
|
ctx._pathstr = undefined;
|
|
48
|
-
|
|
75
|
+
// Trie doubles as both pathidx assignment and path-array cache.
|
|
76
|
+
// (parent_pathidx, key) uniquely identifies a descended path,
|
|
77
|
+
// and is visited many times across fixpoint passes. Caching the
|
|
78
|
+
// materialised array lets descend share references instead of
|
|
79
|
+
// allocating a fresh concat every time.
|
|
80
|
+
const parentIdx = this._pathidx;
|
|
81
|
+
let childMap = this._pathTrie.get(parentIdx);
|
|
82
|
+
if (childMap === undefined) {
|
|
83
|
+
childMap = new Map();
|
|
84
|
+
this._pathTrie.set(parentIdx, childMap);
|
|
85
|
+
}
|
|
86
|
+
let entry = childMap.get(key);
|
|
87
|
+
if (entry === undefined) {
|
|
88
|
+
entry = { idx: this._pathidxNext.n++, path: this.path.concat(key) };
|
|
89
|
+
childMap.set(key, entry);
|
|
90
|
+
}
|
|
91
|
+
ctx._pathidx = entry.idx;
|
|
92
|
+
ctx.path = entry.path;
|
|
93
|
+
childCache.set(key, ctx);
|
|
49
94
|
return ctx;
|
|
50
95
|
}
|
|
51
96
|
addopts(opts) {
|
|
52
97
|
if (null != opts) {
|
|
53
98
|
Object.assign(this.opts, opts);
|
|
54
99
|
}
|
|
55
|
-
this.collect =
|
|
100
|
+
this.collect = this.opts.collect ?? (null != this.opts.err || this.collect);
|
|
56
101
|
this.err = this.opts.err ?? this.err;
|
|
57
102
|
this.deps = this.opts.deps ?? this.deps;
|
|
58
103
|
this.fs = this.opts.fs ?? this.fs;
|
|
@@ -69,15 +114,17 @@ class AontuContext {
|
|
|
69
114
|
if (!this.err.includes(err)) {
|
|
70
115
|
this.err.push(err);
|
|
71
116
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
117
|
+
// NOTE: error message formatting is deferred to errmsg() / NilVal.gen.
|
|
118
|
+
// Many NilVals are transient (disjunct member trials, etc.) and never
|
|
119
|
+
// surface to the user — eager descErr was a major hot path.
|
|
75
120
|
}
|
|
76
121
|
}
|
|
77
122
|
errmsg() {
|
|
78
123
|
// return this.errlist
|
|
79
124
|
return this.err
|
|
80
|
-
.map((err) => err
|
|
125
|
+
.map((err) => (err && (null == err.msg || '' === err.msg)
|
|
126
|
+
? ((0, err_1.descErr)(err, this), err.msg)
|
|
127
|
+
: err?.msg))
|
|
81
128
|
.filter(msg => null != msg)
|
|
82
129
|
.join('\n------\n');
|
|
83
130
|
}
|
package/dist/ctx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ctx.js","sourceRoot":"","sources":["../src/ctx.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAKzD,iCAAqC;AAGrC,yCAAqC;AACrC,2CAAuC;AAIvC,+BAEc;AAuBd,MAAM,YAAY;
|
|
1
|
+
{"version":3,"file":"ctx.js","sourceRoot":"","sources":["../src/ctx.ts"],"names":[],"mappings":"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"}
|
package/dist/err.js
CHANGED
|
@@ -17,6 +17,20 @@ function getHint(why, details) {
|
|
|
17
17
|
return undefined;
|
|
18
18
|
}
|
|
19
19
|
function makeNilErr(ctx, why, av, bv, attempt, details) {
|
|
20
|
+
// C1-inner: when a DisjunctVal trial is in progress, failures are
|
|
21
|
+
// transient markers — none of the NilVal fields (site, path,
|
|
22
|
+
// primary, secondary, details) ever surface to the user because
|
|
23
|
+
// DisjunctVal replaces the oval entry with TRIAL_NIL and filters
|
|
24
|
+
// by isNil. Allocating a fresh NilVal per failure (~60k per
|
|
25
|
+
// foo-sdk run from IntegerVal/BooleanVal/ScalarVal.unify et al.)
|
|
26
|
+
// is pure waste. Short-circuit to the shared sentinel; push once
|
|
27
|
+
// to ctx.err so the caller's `trialErr.length > 0` check still
|
|
28
|
+
// signals failure.
|
|
29
|
+
if (ctx !== undefined && ctx._trialMode === true) {
|
|
30
|
+
if (ctx.err.length === 0)
|
|
31
|
+
ctx.err.push(NilVal_1.TRIAL_NIL);
|
|
32
|
+
return NilVal_1.TRIAL_NIL;
|
|
33
|
+
}
|
|
20
34
|
const nilval = NilVal_1.NilVal.make(ctx, why, av, bv, attempt, details);
|
|
21
35
|
return nilval;
|
|
22
36
|
}
|
|
@@ -96,32 +110,39 @@ function resolveFile(url) {
|
|
|
96
110
|
}
|
|
97
111
|
function resolveSrc(v, errctx, position) {
|
|
98
112
|
let src = undefined;
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
113
|
+
const url = v?.site.url;
|
|
114
|
+
// Cache reads on errctx for the lifetime of the error-formatting pass.
|
|
115
|
+
// When many NilVals share the same source file (common during batch
|
|
116
|
+
// descErr after unify), this avoids re-reading the same file N times.
|
|
117
|
+
const cache = errctx ? (errctx._srcCache ??= new Map()) : null;
|
|
118
|
+
if (null != url) {
|
|
119
|
+
if (cache && cache.has(url)) {
|
|
120
|
+
src = cache.get(url);
|
|
105
121
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
122
|
+
else {
|
|
123
|
+
try {
|
|
124
|
+
const fileExists = errctx?.fs?.existsSync(url);
|
|
125
|
+
if (fileExists) {
|
|
126
|
+
src = errctx?.fs?.readFileSync(url, 'utf8') ?? undefined;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
catch (fe) {
|
|
130
|
+
// ignore as more important to report original error
|
|
131
|
+
}
|
|
132
|
+
if (cache && null != src) {
|
|
133
|
+
cache.set(url, src);
|
|
134
|
+
}
|
|
109
135
|
}
|
|
110
136
|
}
|
|
111
|
-
else {
|
|
112
|
-
// console.log(v)
|
|
113
|
-
// console.trace()
|
|
114
|
-
}
|
|
115
137
|
if (undefined == src || '' === src) {
|
|
116
138
|
if (errctx?.src) {
|
|
117
139
|
src = errctx.src;
|
|
118
140
|
}
|
|
119
141
|
else if (errctx) {
|
|
120
|
-
src = 'SOURCE-NOT-FOUND:' + (null !=
|
|
142
|
+
src = 'SOURCE-NOT-FOUND:' + (null != url ? (' ' + url) : '') +
|
|
121
143
|
(null == errctx?.fs ? ' (NO-FS)' : '');
|
|
122
144
|
}
|
|
123
145
|
}
|
|
124
|
-
// console.log('AONTU-resolveSrc', position, v, v?.site.url, errctx?.fs, src?.length)
|
|
125
146
|
return src;
|
|
126
147
|
}
|
|
127
148
|
class AontuError extends Error {
|
package/dist/err.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"err.js","sourceRoot":"","sources":["../src/err.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;
|
|
1
|
+
{"version":3,"file":"err.js","sourceRoot":"","sources":["../src/err.ts"],"names":[],"mappings":"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"}
|
package/dist/lang.d.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { Jsonic } from 'jsonic';
|
|
2
2
|
import type { Val, AontuOptions } from './type';
|
|
3
3
|
import { Site } from './site';
|
|
4
|
+
import { PathVal } from './val/PathVal';
|
|
5
|
+
import { KeyFuncVal } from './val/KeyFuncVal';
|
|
4
6
|
declare class Lang {
|
|
5
7
|
jsonic: Jsonic;
|
|
6
8
|
opts: AontuOptions;
|
|
7
9
|
idcount: number | undefined;
|
|
10
|
+
paths: PathVal[];
|
|
11
|
+
keys: KeyFuncVal[];
|
|
8
12
|
constructor(options?: Partial<AontuOptions>);
|
|
9
13
|
parse(src: string, opts?: Partial<AontuOptions>): Val;
|
|
10
14
|
}
|
|
11
|
-
export { Lang, Site, };
|
|
15
|
+
export { Lang, PathVal, KeyFuncVal, Site, };
|
package/dist/lang.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/* Copyright (c) 2021-2025 Richard Rodger, MIT License */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.Site = exports.Lang = void 0;
|
|
4
|
+
exports.Site = exports.KeyFuncVal = exports.PathVal = exports.Lang = void 0;
|
|
5
5
|
// import { performance } from 'node:perf_hooks'
|
|
6
6
|
const jsonic_1 = require("jsonic");
|
|
7
7
|
const debug_1 = require("jsonic/debug");
|
|
8
8
|
const multisource_1 = require("@jsonic/multisource");
|
|
9
9
|
// TODO: @jsonic/multisource should support virtual fs
|
|
10
10
|
const file_1 = require("@jsonic/multisource/resolver/file");
|
|
11
|
+
const multisource_2 = require("@jsonic/multisource");
|
|
11
12
|
const pkg_1 = require("@jsonic/multisource/resolver/pkg");
|
|
12
13
|
const mem_1 = require("@jsonic/multisource/resolver/mem");
|
|
13
14
|
const expr_1 = require("@jsonic/expr");
|
|
@@ -27,7 +28,9 @@ const NilVal_1 = require("./val/NilVal");
|
|
|
27
28
|
const NullVal_1 = require("./val/NullVal");
|
|
28
29
|
const NumberVal_1 = require("./val/NumberVal");
|
|
29
30
|
const PrefVal_1 = require("./val/PrefVal");
|
|
30
|
-
const
|
|
31
|
+
const PathVal_1 = require("./val/PathVal");
|
|
32
|
+
Object.defineProperty(exports, "PathVal", { enumerable: true, get: function () { return PathVal_1.PathVal; } });
|
|
33
|
+
// RefVal replaced by PathVal — see RefVal.ts.old
|
|
31
34
|
const StringVal_1 = require("./val/StringVal");
|
|
32
35
|
const VarVal_1 = require("./val/VarVal");
|
|
33
36
|
const PlusOpVal_1 = require("./val/PlusOpVal");
|
|
@@ -35,6 +38,7 @@ const UpperFuncVal_1 = require("./val/UpperFuncVal");
|
|
|
35
38
|
const LowerFuncVal_1 = require("./val/LowerFuncVal");
|
|
36
39
|
const CopyFuncVal_1 = require("./val/CopyFuncVal");
|
|
37
40
|
const KeyFuncVal_1 = require("./val/KeyFuncVal");
|
|
41
|
+
Object.defineProperty(exports, "KeyFuncVal", { enumerable: true, get: function () { return KeyFuncVal_1.KeyFuncVal; } });
|
|
38
42
|
const TypeFuncVal_1 = require("./val/TypeFuncVal");
|
|
39
43
|
const HideFuncVal_1 = require("./val/HideFuncVal");
|
|
40
44
|
const MoveFuncVal_1 = require("./val/MoveFuncVal");
|
|
@@ -43,6 +47,7 @@ const PrefFuncVal_1 = require("./val/PrefFuncVal");
|
|
|
43
47
|
const CloseFuncVal_1 = require("./val/CloseFuncVal");
|
|
44
48
|
const OpenFuncVal_1 = require("./val/OpenFuncVal");
|
|
45
49
|
const SuperFuncVal_1 = require("./val/SuperFuncVal");
|
|
50
|
+
const SpreadVal_1 = require("./val/SpreadVal");
|
|
46
51
|
let AontuJsonic = function AontuLang(jsonic) {
|
|
47
52
|
jsonic.use(path_1.Path);
|
|
48
53
|
// TODO: refactor Val constructor
|
|
@@ -54,6 +59,15 @@ let AontuJsonic = function AontuLang(jsonic) {
|
|
|
54
59
|
v.path = r.k ? [...(r.k.path || [])] : [];
|
|
55
60
|
return v;
|
|
56
61
|
};
|
|
62
|
+
// Helper: create a SpreadVal from the raw SPREAD symbol data.
|
|
63
|
+
function makeSpreadVal(rawSpread) {
|
|
64
|
+
const constraint = Array.isArray(rawSpread.v)
|
|
65
|
+
? (rawSpread.v.length > 1
|
|
66
|
+
? new ConjunctVal_1.ConjunctVal({ peg: rawSpread.v })
|
|
67
|
+
: rawSpread.v[0])
|
|
68
|
+
: rawSpread.v;
|
|
69
|
+
return new SpreadVal_1.SpreadVal({ peg: constraint });
|
|
70
|
+
}
|
|
57
71
|
jsonic.options({
|
|
58
72
|
hint: {
|
|
59
73
|
unknown: `
|
|
@@ -147,16 +161,34 @@ help isolate the syntax error.`,
|
|
|
147
161
|
'conjunct-infix': (r, ctx, _op, terms) => addsite(new ConjunctVal_1.ConjunctVal({ peg: terms }), r, ctx),
|
|
148
162
|
'disjunct-infix': (r, ctx, _op, terms) => addsite(new DisjunctVal_1.DisjunctVal({ peg: terms }), r, ctx),
|
|
149
163
|
'dot-prefix': (r, ctx, _op, terms) => {
|
|
150
|
-
|
|
164
|
+
const pv = addsite(new PathVal_1.PathVal({ peg: terms, prefix: true }), r, ctx);
|
|
165
|
+
if (ctx.meta.paths) {
|
|
166
|
+
ctx.meta.paths.push(pv);
|
|
167
|
+
}
|
|
168
|
+
return pv;
|
|
151
169
|
},
|
|
152
170
|
'dot-infix': (r, ctx, _op, terms) => {
|
|
153
|
-
|
|
154
|
-
|
|
171
|
+
const paths = ctx.meta.paths;
|
|
172
|
+
if (paths) {
|
|
173
|
+
// Remove consumed intermediates
|
|
174
|
+
for (const t of terms) {
|
|
175
|
+
if (t instanceof PathVal_1.PathVal) {
|
|
176
|
+
const idx = paths.indexOf(t);
|
|
177
|
+
if (idx >= 0)
|
|
178
|
+
paths.splice(idx, 1);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
const pv = addsite(new PathVal_1.PathVal({ peg: terms }), r, ctx);
|
|
183
|
+
if (paths) {
|
|
184
|
+
paths.push(pv);
|
|
185
|
+
}
|
|
186
|
+
return pv;
|
|
155
187
|
},
|
|
156
188
|
'star-prefix': (r, ctx, _op, terms) => addsite(new PrefVal_1.PrefVal({ peg: terms[0] }), r, ctx),
|
|
157
189
|
'dollar-prefix': (r, ctx, _op, terms) => {
|
|
158
190
|
// $.a.b absolute path
|
|
159
|
-
if (terms[0] instanceof
|
|
191
|
+
if (terms[0] instanceof PathVal_1.PathVal) {
|
|
160
192
|
terms[0].absolute = true;
|
|
161
193
|
return terms[0];
|
|
162
194
|
}
|
|
@@ -187,6 +219,9 @@ help isolate the syntax error.`,
|
|
|
187
219
|
});
|
|
188
220
|
}
|
|
189
221
|
const out = addsite(val, r, ctx);
|
|
222
|
+
if (out.isKeyFunc && ctx.meta.keys) {
|
|
223
|
+
ctx.meta.keys.push(out);
|
|
224
|
+
}
|
|
190
225
|
return out;
|
|
191
226
|
},
|
|
192
227
|
};
|
|
@@ -195,10 +230,10 @@ help isolate the syntax error.`,
|
|
|
195
230
|
op: {
|
|
196
231
|
// disjunct < conjunct: c & b | a -> (c & b) | a
|
|
197
232
|
'conjunct': {
|
|
198
|
-
infix: true, src: '&', left: 16_000_000, right: 17_000_000
|
|
233
|
+
infix: true, src: '&', left: 16_000_000, right: 17_000_000,
|
|
199
234
|
},
|
|
200
235
|
'disjunct': {
|
|
201
|
-
infix: true, src: '|', left: 14_000_000, right: 15_000_000
|
|
236
|
+
infix: true, src: '|', left: 14_000_000, right: 15_000_000,
|
|
202
237
|
},
|
|
203
238
|
'plus-infix': {
|
|
204
239
|
src: '+',
|
|
@@ -231,7 +266,6 @@ help isolate the syntax error.`,
|
|
|
231
266
|
paren: true,
|
|
232
267
|
preval: {
|
|
233
268
|
active: true,
|
|
234
|
-
// allow: ['floor'], //Object.keys(funcMap)
|
|
235
269
|
},
|
|
236
270
|
osrc: '(',
|
|
237
271
|
csrc: ')',
|
|
@@ -325,19 +359,34 @@ help isolate the syntax error.`,
|
|
|
325
359
|
.bc((r, ctx) => {
|
|
326
360
|
const optionalKeys = r.u.aontu_optional_keys ?? [];
|
|
327
361
|
let mo = r.node;
|
|
362
|
+
// Extract spread constraint before creating MapVal.
|
|
363
|
+
// If a spread exists, wrap: ConjunctVal([MapVal, SpreadVal])
|
|
364
|
+
const rawSpread = mo[type_1.SPREAD];
|
|
365
|
+
if (rawSpread) {
|
|
366
|
+
delete mo[type_1.SPREAD];
|
|
367
|
+
}
|
|
328
368
|
// Handle defered conjuncts, e.g. `{x:1 @"foo"}`
|
|
329
369
|
if (mo.___merge) {
|
|
330
370
|
let mop = { ...mo };
|
|
331
371
|
delete mop.___merge;
|
|
332
|
-
// TODO: needs addpath?
|
|
333
372
|
let mopv = new MapVal_1.MapVal({ peg: mop });
|
|
334
373
|
mopv.optionalKeys = optionalKeys;
|
|
335
|
-
|
|
336
|
-
|
|
374
|
+
let terms = [mopv, ...mo.___merge];
|
|
375
|
+
if (rawSpread && '&' === rawSpread.o) {
|
|
376
|
+
terms.push(makeSpreadVal(rawSpread));
|
|
377
|
+
}
|
|
378
|
+
r.node = addsite(new ConjunctVal_1.ConjunctVal({ peg: terms }), r, ctx);
|
|
337
379
|
}
|
|
338
380
|
else {
|
|
339
|
-
|
|
340
|
-
|
|
381
|
+
let mapVal = new MapVal_1.MapVal({ peg: mo });
|
|
382
|
+
mapVal.optionalKeys = optionalKeys;
|
|
383
|
+
if (rawSpread && '&' === rawSpread.o) {
|
|
384
|
+
const spreadVal = makeSpreadVal(rawSpread);
|
|
385
|
+
r.node = addsite(new ConjunctVal_1.ConjunctVal({ peg: [mapVal, spreadVal] }), r, ctx);
|
|
386
|
+
}
|
|
387
|
+
else {
|
|
388
|
+
r.node = addsite(mapVal, r, ctx);
|
|
389
|
+
}
|
|
341
390
|
}
|
|
342
391
|
return undefined;
|
|
343
392
|
})
|
|
@@ -350,18 +399,33 @@ help isolate the syntax error.`,
|
|
|
350
399
|
.bc((r, ctx) => {
|
|
351
400
|
const optionalKeys = r.u.aontu_optional_keys ?? [];
|
|
352
401
|
let ao = r.node;
|
|
402
|
+
// Extract spread from list before creating ListVal.
|
|
403
|
+
const rawSpread = ao[type_1.SPREAD];
|
|
404
|
+
if (rawSpread) {
|
|
405
|
+
delete ao[type_1.SPREAD];
|
|
406
|
+
}
|
|
353
407
|
if (ao.___merge) {
|
|
354
408
|
let aop = [...ao];
|
|
355
409
|
delete aop.___merge;
|
|
356
|
-
// TODO: needs addpath?
|
|
357
410
|
let aopv = new ListVal_1.ListVal({ peg: aop });
|
|
358
411
|
aopv.optionalKeys = optionalKeys;
|
|
412
|
+
let terms = [aopv, ...ao.___merge];
|
|
413
|
+
if (rawSpread && '&' === rawSpread.o) {
|
|
414
|
+
terms.push(makeSpreadVal(rawSpread));
|
|
415
|
+
}
|
|
359
416
|
r.node =
|
|
360
|
-
addsite(new ConjunctVal_1.ConjunctVal({ peg:
|
|
417
|
+
addsite(new ConjunctVal_1.ConjunctVal({ peg: terms }), r, ctx);
|
|
361
418
|
}
|
|
362
419
|
else {
|
|
363
|
-
|
|
364
|
-
|
|
420
|
+
let listVal = new ListVal_1.ListVal({ peg: ao });
|
|
421
|
+
listVal.optionalKeys = optionalKeys;
|
|
422
|
+
if (rawSpread && '&' === rawSpread.o) {
|
|
423
|
+
const spreadVal = makeSpreadVal(rawSpread);
|
|
424
|
+
r.node = addsite(new ConjunctVal_1.ConjunctVal({ peg: [listVal, spreadVal] }), r, ctx);
|
|
425
|
+
}
|
|
426
|
+
else {
|
|
427
|
+
r.node = addsite(listVal, r, ctx);
|
|
428
|
+
}
|
|
365
429
|
}
|
|
366
430
|
return undefined;
|
|
367
431
|
});
|
|
@@ -404,11 +468,13 @@ help isolate the syntax error.`,
|
|
|
404
468
|
g: 'aontu-optional-pair'
|
|
405
469
|
}
|
|
406
470
|
])
|
|
407
|
-
//
|
|
471
|
+
// Spread children inherit the parent path directly.
|
|
472
|
+
// The path gets adjusted correctly when SpreadVal applies
|
|
473
|
+
// the constraint via spreadClone(keyctx).
|
|
408
474
|
.ao((r) => {
|
|
409
475
|
if (0 < r.d && r.u.spread) {
|
|
410
|
-
r.child.k.path =
|
|
411
|
-
r.child.k.key =
|
|
476
|
+
r.child.k.path = r.k.path;
|
|
477
|
+
r.child.k.key = r.k.key;
|
|
412
478
|
}
|
|
413
479
|
})
|
|
414
480
|
.bc((rule) => {
|
|
@@ -472,10 +538,14 @@ function makeModelResolver(options) {
|
|
|
472
538
|
let memResolver = (0, mem_1.makeMemResolver)({
|
|
473
539
|
...(options.resolver?.mem || {})
|
|
474
540
|
});
|
|
475
|
-
|
|
476
|
-
let fileResolver = (0, file_1.makeFileResolver)((spec) => {
|
|
541
|
+
const pathfinder = (spec) => {
|
|
477
542
|
return 'string' === typeof spec ? spec : spec?.peg;
|
|
478
|
-
}
|
|
543
|
+
};
|
|
544
|
+
let preload;
|
|
545
|
+
if (options.preload) {
|
|
546
|
+
preload = (0, multisource_2.preloadFiles)(options.preload);
|
|
547
|
+
}
|
|
548
|
+
let fileResolver = (0, file_1.makeFileResolver)(preload ? { pathfinder, preload } : pathfinder);
|
|
479
549
|
let pkgResolver = (0, pkg_1.makePkgResolver)({
|
|
480
550
|
require: useRequire,
|
|
481
551
|
...(options.resolver?.pkg || {})
|
|
@@ -507,6 +577,8 @@ function makeModelResolver(options) {
|
|
|
507
577
|
class Lang {
|
|
508
578
|
constructor(options) {
|
|
509
579
|
// const start = performance.now()
|
|
580
|
+
this.paths = [];
|
|
581
|
+
this.keys = [];
|
|
510
582
|
this.opts = Object.assign((0, type_1.DEFAULT_OPTS)(), options);
|
|
511
583
|
const modelResolver = makeModelResolver(this.opts);
|
|
512
584
|
this.jsonic = jsonic_1.Jsonic.make();
|
|
@@ -528,9 +600,13 @@ class Lang {
|
|
|
528
600
|
parse(src, opts) {
|
|
529
601
|
// const start = performance.now()
|
|
530
602
|
// JSONIC-UPDATE - check meta
|
|
603
|
+
this.paths = [];
|
|
604
|
+
this.keys = [];
|
|
531
605
|
let jm = {
|
|
532
606
|
fs: opts?.fs,
|
|
533
607
|
fileName: opts?.path ?? this.opts.path,
|
|
608
|
+
paths: this.paths,
|
|
609
|
+
keys: this.keys,
|
|
534
610
|
multisource: {
|
|
535
611
|
path: opts?.path ?? this.opts.path,
|
|
536
612
|
deps: (opts && opts.deps) || undefined
|