aontu 0.44.0 → 0.46.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/cli.d.ts +9 -0
- package/dist/cli.js +203 -0
- package/dist/cli.js.map +1 -0
- package/dist/ctx.d.ts +2 -5
- package/dist/ctx.js +1 -2
- package/dist/ctx.js.map +1 -1
- package/dist/lang.d.ts +1 -5
- package/dist/lang.js +24 -100
- package/dist/lang.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/type.d.ts +0 -5
- package/dist/type.js.map +1 -1
- package/dist/unify.js +13 -292
- package/dist/unify.js.map +1 -1
- package/dist/utility.js +2 -6
- package/dist/utility.js.map +1 -1
- package/dist/val/BagVal.d.ts +3 -0
- 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 +14 -137
- package/dist/val/ConjunctVal.js.map +1 -1
- package/dist/val/CopyFuncVal.js +2 -3
- package/dist/val/CopyFuncVal.js.map +1 -1
- package/dist/val/DisjunctVal.js +0 -4
- package/dist/val/DisjunctVal.js.map +1 -1
- package/dist/val/ExpectVal.js +3 -16
- package/dist/val/ExpectVal.js.map +1 -1
- package/dist/val/JunctionVal.d.ts +0 -1
- package/dist/val/JunctionVal.js +1 -6
- package/dist/val/JunctionVal.js.map +1 -1
- package/dist/val/KeyFuncVal.js +2 -0
- package/dist/val/KeyFuncVal.js.map +1 -1
- package/dist/val/ListVal.d.ts +0 -1
- package/dist/val/ListVal.js +66 -33
- package/dist/val/ListVal.js.map +1 -1
- package/dist/val/MapVal.d.ts +2 -3
- package/dist/val/MapVal.js +95 -67
- package/dist/val/MapVal.js.map +1 -1
- package/dist/val/MoveFuncVal.d.ts +1 -2
- package/dist/val/MoveFuncVal.js +13 -78
- package/dist/val/MoveFuncVal.js.map +1 -1
- package/dist/val/PathFuncVal.js +4 -25
- package/dist/val/PathFuncVal.js.map +1 -1
- package/dist/val/PlusOpVal.d.ts +1 -1
- package/dist/val/PrefVal.js +5 -18
- package/dist/val/PrefVal.js.map +1 -1
- package/dist/val/{PathVal.d.ts → RefVal.d.ts} +3 -4
- package/dist/val/{PathVal.js → RefVal.js} +77 -75
- package/dist/val/RefVal.js.map +1 -0
- package/dist/val/Val.d.ts +1 -2
- package/dist/val/Val.js +8 -7
- package/dist/val/Val.js.map +1 -1
- package/dist/val/VarVal.js +2 -2
- package/dist/val/VarVal.js.map +1 -1
- package/package.json +9 -4
- package/src/cli.ts +193 -0
- package/src/ctx.ts +3 -16
- package/src/lang.ts +23 -113
- package/src/type.ts +0 -5
- package/src/unify.ts +13 -310
- package/src/utility.ts +2 -5
- package/src/val/BagVal.ts +7 -6
- package/src/val/ConjunctVal.ts +13 -131
- package/src/val/CopyFuncVal.ts +2 -3
- package/src/val/DisjunctVal.ts +0 -6
- package/src/val/ExpectVal.ts +4 -18
- package/src/val/JunctionVal.ts +1 -5
- package/src/val/KeyFuncVal.ts +3 -0
- package/src/val/ListVal.ts +88 -38
- package/src/val/MapVal.ts +124 -75
- package/src/val/MoveFuncVal.ts +14 -79
- package/src/val/PathFuncVal.ts +4 -29
- package/src/val/PrefVal.ts +6 -19
- package/src/val/{RefVal.ts.old → RefVal.ts} +19 -30
- package/src/val/Val.ts +9 -9
- package/src/val/VarVal.ts +2 -2
- package/README.md +0 -18
- package/dist/val/PathVal.js.map +0 -1
- package/dist/val/SpreadVal.d.ts +0 -20
- package/dist/val/SpreadVal.js +0 -194
- package/dist/val/SpreadVal.js.map +0 -1
- package/src/val/PathVal.ts +0 -435
- package/src/val/SpreadVal.ts +0 -275
package/dist/val/Val.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Val.js","sourceRoot":"","sources":["../../src/val/Val.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;;;;;;;;;;;;;AA+bvD,sBAAK;AA7bP,yCAAmC;AAInC,kCAEgB;AAqChB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAA;AA+Yb,oBAAI;AA7YN,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;AA8Y7B,wBAAM;AA5YR,yDAAyD;AACzD,4EAA4E;AAC5E,wEAAwE;AACxE,6CAA6C;AAC7C,MAAM,SAAS,GAAU,MAAM,CAAC,MAAM,CAAC,EAAE,CAAqB,CAAA;AAyY5D,8BAAS;AAtYX,IAAI,EAAE,GAAG,IAAI,CAAA;AAGb,MAAe,GAAG;
|
|
1
|
+
{"version":3,"file":"Val.js","sourceRoot":"","sources":["../../src/val/Val.ts"],"names":[],"mappings":"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"}
|
package/dist/val/VarVal.js
CHANGED
|
@@ -24,7 +24,7 @@ class VarVal extends FeatureVal_1.FeatureVal {
|
|
|
24
24
|
if (this.peg.isVal) {
|
|
25
25
|
// $.a.b.c - convert path to absolute
|
|
26
26
|
// if (this.peg instanceof RefVal) {
|
|
27
|
-
if (this.peg.
|
|
27
|
+
if (this.peg.isRef) {
|
|
28
28
|
this.peg.absolute = true;
|
|
29
29
|
nameVal = this.peg;
|
|
30
30
|
}
|
|
@@ -37,7 +37,7 @@ class VarVal extends FeatureVal_1.FeatureVal {
|
|
|
37
37
|
nameVal = new StringVal_1.StringVal({ peg: '' + this.peg }, ctx);
|
|
38
38
|
}
|
|
39
39
|
// if (!(nameVal instanceof RefVal) && DONE === nameVal.dc) {
|
|
40
|
-
if (!(nameVal.
|
|
40
|
+
if (!(nameVal.isRef) && type_1.DONE === nameVal.dc) {
|
|
41
41
|
if (nameVal instanceof StringVal_1.StringVal) {
|
|
42
42
|
let found = ctx.vars[nameVal.peg];
|
|
43
43
|
if (undefined === found) {
|
package/dist/val/VarVal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VarVal.js","sourceRoot":"","sources":["../../src/val/VarVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AASzD,kCAEgB;AAEhB,gCAIe;AAQf,2CAAuC;AAEvC,6CAAyC;AACzC,uCAAmC;AACnC,6CAAyC;AACzC,2CAAuC;AACvC,6CAAyC;AAGzC,wCAImB;AAGnB,qDAAqD;AAErD,MAAM,MAAO,SAAQ,uBAAU;IAG7B,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QANlB,UAAK,GAAG,IAAI,CAAA;IAOZ,CAAC;IAGD,KAAK,CAAC,IAAS,EAAE,GAAiB;QAChC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,IAAI,IAAA,qBAAW,EAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAE1E,IAAI,GAAQ,CAAA;QAEZ,IAAI,OAAO,CAAA;QAEX,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACnB,qCAAqC;YACrC,oCAAoC;YACpC,IAAI,IAAI,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"VarVal.js","sourceRoot":"","sources":["../../src/val/VarVal.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aontu",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.46.0",
|
|
4
4
|
"main": "dist/aontu.js",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"types": "dist/aontu.d.ts",
|
|
7
|
+
"bin": {
|
|
8
|
+
"aontu": "dist/cli.js"
|
|
9
|
+
},
|
|
7
10
|
"description": "Unifier.",
|
|
8
11
|
"homepage": "https://github.com/rjrodger/aontu",
|
|
9
12
|
"keywords": [
|
|
@@ -16,6 +19,7 @@
|
|
|
16
19
|
},
|
|
17
20
|
"scripts": {
|
|
18
21
|
"test": "node --enable-source-maps --test \"dist-test/**/*.test.js\"",
|
|
22
|
+
"test-cov": "node --enable-source-maps --experimental-test-coverage --test \"dist-test/**/*.test.js\"",
|
|
19
23
|
"test-some": "node --enable-source-maps --test-name-pattern=\"$TEST_PATTERN\" --test \"dist-test/**/*.test.js\"",
|
|
20
24
|
"watch": "tsc --build src test -w",
|
|
21
25
|
"build": "tsc --build src test",
|
|
@@ -36,14 +40,15 @@
|
|
|
36
40
|
"LICENSE"
|
|
37
41
|
],
|
|
38
42
|
"dependencies": {
|
|
43
|
+
"@jsonic/directive": "2.2.0",
|
|
39
44
|
"@jsonic/expr": "2.3.2",
|
|
40
|
-
"@jsonic/multisource": "2.
|
|
45
|
+
"@jsonic/multisource": "2.9.1",
|
|
41
46
|
"@jsonic/path": "2.1.0",
|
|
42
47
|
"jsonic": "2.28.0"
|
|
43
48
|
},
|
|
44
49
|
"devDependencies": {
|
|
45
|
-
"@types/node": "25.
|
|
46
|
-
"memfs": "4.57.
|
|
50
|
+
"@types/node": "25.9.2",
|
|
51
|
+
"memfs": "4.57.6",
|
|
47
52
|
"typescript": "6.0.3"
|
|
48
53
|
},
|
|
49
54
|
"aliasify": {
|
package/src/cli.ts
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/* Copyright (c) 2025 Richard Rodger, MIT License */
|
|
3
|
+
|
|
4
|
+
// Command-line interface for Aontu.
|
|
5
|
+
//
|
|
6
|
+
// aontu [options] [file]
|
|
7
|
+
//
|
|
8
|
+
// With a file argument, the file is evaluated and the result printed.
|
|
9
|
+
// With no file on an interactive terminal, a REPL is started. With no
|
|
10
|
+
// file and piped input, the source is read from stdin. See HELP below.
|
|
11
|
+
|
|
12
|
+
import * as Fs from 'node:fs'
|
|
13
|
+
import * as Path from 'node:path'
|
|
14
|
+
import * as Readline from 'node:readline'
|
|
15
|
+
|
|
16
|
+
import { Aontu, AontuError } from './aontu'
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
type Mode = 'json' | 'canon'
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
const HELP = `Usage: aontu [options] [file]
|
|
23
|
+
|
|
24
|
+
Evaluate an Aontu source file and print the result as JSON.
|
|
25
|
+
With no file on an interactive terminal, start a REPL.
|
|
26
|
+
With no file and piped input, read the source from stdin.
|
|
27
|
+
|
|
28
|
+
Options:
|
|
29
|
+
-c, --canon Print the canonical form instead of generated JSON
|
|
30
|
+
-h, --help Show this help and exit
|
|
31
|
+
-v, --version Print the version and exit
|
|
32
|
+
|
|
33
|
+
REPL commands:
|
|
34
|
+
:help Show REPL help
|
|
35
|
+
:canon Switch to canonical-form output
|
|
36
|
+
:json Switch to JSON output
|
|
37
|
+
:quit, :exit Exit the REPL (or press Ctrl-D)
|
|
38
|
+
`
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
function version(): string {
|
|
42
|
+
try {
|
|
43
|
+
const txt = Fs.readFileSync(Path.join(__dirname, '..', 'package.json'), 'utf8')
|
|
44
|
+
return JSON.parse(txt).version ?? '0.0.0'
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return '0.0.0'
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
// Evaluate source, returning either the rendered output or the error
|
|
53
|
+
// message. Never throws.
|
|
54
|
+
function evalSource(
|
|
55
|
+
aontu: Aontu,
|
|
56
|
+
src: string,
|
|
57
|
+
mode: Mode,
|
|
58
|
+
): { ok: boolean; text: string } {
|
|
59
|
+
try {
|
|
60
|
+
const text = 'canon' === mode
|
|
61
|
+
? aontu.unify(src).canon
|
|
62
|
+
: JSON.stringify(aontu.generate(src), null, 2)
|
|
63
|
+
return { ok: true, text }
|
|
64
|
+
}
|
|
65
|
+
catch (err: any) {
|
|
66
|
+
const msg = (err instanceof AontuError || true === err?.aontu)
|
|
67
|
+
? err.message
|
|
68
|
+
: String(err?.message ?? err)
|
|
69
|
+
return { ok: false, text: msg }
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
function runFile(file: string, mode: Mode): number {
|
|
75
|
+
let src: string
|
|
76
|
+
try {
|
|
77
|
+
src = Fs.readFileSync(file, 'utf8')
|
|
78
|
+
}
|
|
79
|
+
catch (err: any) {
|
|
80
|
+
process.stderr.write(`aontu: cannot read ${file}: ${err.message}\n`)
|
|
81
|
+
return 1
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const aontu = new Aontu({ path: Path.resolve(file) })
|
|
85
|
+
const res = evalSource(aontu, src, mode)
|
|
86
|
+
;(res.ok ? process.stdout : process.stderr).write(res.text + '\n')
|
|
87
|
+
return res.ok ? 0 : 1
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
function runStdin(mode: Mode): Promise<number> {
|
|
92
|
+
return new Promise((resolve) => {
|
|
93
|
+
let src = ''
|
|
94
|
+
process.stdin.setEncoding('utf8')
|
|
95
|
+
process.stdin.on('data', (d) => (src += d))
|
|
96
|
+
process.stdin.on('end', () => {
|
|
97
|
+
const res = evalSource(new Aontu(), src, mode)
|
|
98
|
+
;(res.ok ? process.stdout : process.stderr).write(res.text + '\n')
|
|
99
|
+
resolve(res.ok ? 0 : 1)
|
|
100
|
+
})
|
|
101
|
+
})
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
function runRepl(initialMode: Mode): void {
|
|
106
|
+
let mode = initialMode
|
|
107
|
+
const aontu = new Aontu()
|
|
108
|
+
const rl = Readline.createInterface({
|
|
109
|
+
input: process.stdin,
|
|
110
|
+
output: process.stdout,
|
|
111
|
+
prompt: 'aontu> ',
|
|
112
|
+
})
|
|
113
|
+
|
|
114
|
+
process.stdout.write(
|
|
115
|
+
`Aontu v${version()} REPL — :help for commands, :quit to exit\n`)
|
|
116
|
+
rl.prompt()
|
|
117
|
+
|
|
118
|
+
rl.on('line', (line) => {
|
|
119
|
+
const s = line.trim()
|
|
120
|
+
|
|
121
|
+
if ('' === s) {
|
|
122
|
+
rl.prompt()
|
|
123
|
+
return
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if (s.startsWith(':')) {
|
|
127
|
+
switch (s) {
|
|
128
|
+
case ':help': process.stdout.write(HELP); break
|
|
129
|
+
case ':canon': mode = 'canon'; process.stdout.write('canon output\n'); break
|
|
130
|
+
case ':json': mode = 'json'; process.stdout.write('json output\n'); break
|
|
131
|
+
case ':quit': case ':exit': rl.close(); return
|
|
132
|
+
default: process.stdout.write(`unknown command: ${s} (try :help)\n`)
|
|
133
|
+
}
|
|
134
|
+
rl.prompt()
|
|
135
|
+
return
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const res = evalSource(aontu, s, mode)
|
|
139
|
+
process.stdout.write(res.text + '\n')
|
|
140
|
+
rl.prompt()
|
|
141
|
+
})
|
|
142
|
+
|
|
143
|
+
rl.on('close', () => {
|
|
144
|
+
process.stdout.write('\n')
|
|
145
|
+
process.exit(0)
|
|
146
|
+
})
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
function main(argv: string[]): void {
|
|
151
|
+
let mode: Mode = 'json'
|
|
152
|
+
let file: string | undefined
|
|
153
|
+
|
|
154
|
+
for (const arg of argv.slice(2)) {
|
|
155
|
+
if ('-c' === arg || '--canon' === arg) {
|
|
156
|
+
mode = 'canon'
|
|
157
|
+
}
|
|
158
|
+
else if ('-h' === arg || '--help' === arg) {
|
|
159
|
+
process.stdout.write(HELP)
|
|
160
|
+
process.exit(0)
|
|
161
|
+
}
|
|
162
|
+
else if ('-v' === arg || '--version' === arg) {
|
|
163
|
+
process.stdout.write(version() + '\n')
|
|
164
|
+
process.exit(0)
|
|
165
|
+
}
|
|
166
|
+
else if (arg.startsWith('-')) {
|
|
167
|
+
process.stderr.write(`aontu: unknown option ${arg} (try --help)\n`)
|
|
168
|
+
process.exit(2)
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
file = arg
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if (null != file) {
|
|
176
|
+
process.exit(runFile(file, mode))
|
|
177
|
+
}
|
|
178
|
+
else if (process.stdin.isTTY) {
|
|
179
|
+
runRepl(mode)
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
runStdin(mode).then((code) => process.exit(code))
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
// Only run when invoked as a program, not when imported (e.g. by tests).
|
|
188
|
+
if (require.main === module) {
|
|
189
|
+
main(process.argv)
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
export { evalSource, main }
|
package/src/ctx.ts
CHANGED
|
@@ -24,7 +24,7 @@ type AontuContextConfig = {
|
|
|
24
24
|
fs?: any
|
|
25
25
|
path?: string[]
|
|
26
26
|
root?: Val
|
|
27
|
-
seen?:
|
|
27
|
+
seen?: Record<string, number>
|
|
28
28
|
seenI?: number
|
|
29
29
|
src?: string
|
|
30
30
|
srcpath?: string
|
|
@@ -41,14 +41,12 @@ class AontuContext {
|
|
|
41
41
|
path: string[] // Path to current Val.
|
|
42
42
|
vc: number // Val counter to create unique val ids.
|
|
43
43
|
cc: number = -1
|
|
44
|
-
sc: number = 0 // Unresolved spread count
|
|
45
|
-
|
|
46
44
|
vars: Record<string, Val> = {}
|
|
47
45
|
src?: string
|
|
48
46
|
fs?: FST
|
|
49
47
|
|
|
50
48
|
seenI: number
|
|
51
|
-
seen:
|
|
49
|
+
seen: Record<string, number>
|
|
52
50
|
|
|
53
51
|
collect: boolean
|
|
54
52
|
|
|
@@ -89,17 +87,6 @@ class AontuContext {
|
|
|
89
87
|
// cached child is safe to reuse.
|
|
90
88
|
_childCache?: Map<string, AontuContext>
|
|
91
89
|
|
|
92
|
-
// Per-iteration cache for PathVal.find() clone results.
|
|
93
|
-
// Key: "pathId|targetId" — avoids repeated deep-clone + walk for
|
|
94
|
-
// the same (path, resolved-target) pair within one fixpoint pass.
|
|
95
|
-
// Cleared at the start of each iteration (alongside `seen`).
|
|
96
|
-
_refCloneCache?: Map<string, Val>
|
|
97
|
-
|
|
98
|
-
// Per-iteration cache for unite() results when both operands are
|
|
99
|
-
// done. Key: "aId|bId". Cleared per fixpoint iteration.
|
|
100
|
-
_uniteCache?: Map<string, Val>
|
|
101
|
-
|
|
102
|
-
|
|
103
90
|
|
|
104
91
|
constructor(cfg: AontuContextConfig) {
|
|
105
92
|
this.root = cfg.root
|
|
@@ -120,7 +107,7 @@ class AontuContext {
|
|
|
120
107
|
|
|
121
108
|
this.vars = cfg.vars ?? this.vars
|
|
122
109
|
this.seenI = cfg.seenI ?? 0
|
|
123
|
-
this.seen = cfg.seen ??
|
|
110
|
+
this.seen = cfg.seen ?? {}
|
|
124
111
|
|
|
125
112
|
this.srcpath = cfg.srcpath ?? undefined
|
|
126
113
|
|
package/src/lang.ts
CHANGED
|
@@ -25,10 +25,6 @@ import {
|
|
|
25
25
|
makeFileResolver
|
|
26
26
|
} from '@jsonic/multisource/resolver/file'
|
|
27
27
|
|
|
28
|
-
import {
|
|
29
|
-
preloadFiles
|
|
30
|
-
} from '@jsonic/multisource'
|
|
31
|
-
|
|
32
28
|
import {
|
|
33
29
|
makePkgResolver
|
|
34
30
|
} from '@jsonic/multisource/resolver/pkg'
|
|
@@ -79,8 +75,7 @@ import { NilVal } from './val/NilVal'
|
|
|
79
75
|
import { NullVal } from './val/NullVal'
|
|
80
76
|
import { NumberVal } from './val/NumberVal'
|
|
81
77
|
import { PrefVal } from './val/PrefVal'
|
|
82
|
-
import {
|
|
83
|
-
// RefVal replaced by PathVal — see RefVal.ts.old
|
|
78
|
+
import { RefVal } from './val/RefVal'
|
|
84
79
|
import { StringVal } from './val/StringVal'
|
|
85
80
|
import { VarVal } from './val/VarVal'
|
|
86
81
|
import { PlusOpVal } from './val/PlusOpVal'
|
|
@@ -96,7 +91,6 @@ import { PrefFuncVal } from './val/PrefFuncVal'
|
|
|
96
91
|
import { CloseFuncVal } from './val/CloseFuncVal'
|
|
97
92
|
import { OpenFuncVal } from './val/OpenFuncVal'
|
|
98
93
|
import { SuperFuncVal } from './val/SuperFuncVal'
|
|
99
|
-
import { SpreadVal } from './val/SpreadVal'
|
|
100
94
|
|
|
101
95
|
|
|
102
96
|
let AontuJsonic: Plugin = function AontuLang(jsonic: Jsonic) {
|
|
@@ -116,17 +110,6 @@ let AontuJsonic: Plugin = function AontuLang(jsonic: Jsonic) {
|
|
|
116
110
|
}
|
|
117
111
|
|
|
118
112
|
|
|
119
|
-
// Helper: create a SpreadVal from the raw SPREAD symbol data.
|
|
120
|
-
function makeSpreadVal(rawSpread: any): SpreadVal {
|
|
121
|
-
const constraint = Array.isArray(rawSpread.v)
|
|
122
|
-
? (rawSpread.v.length > 1
|
|
123
|
-
? new ConjunctVal({ peg: rawSpread.v })
|
|
124
|
-
: rawSpread.v[0])
|
|
125
|
-
: rawSpread.v
|
|
126
|
-
return new SpreadVal({ peg: constraint })
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
|
|
130
113
|
jsonic.options({
|
|
131
114
|
hint: {
|
|
132
115
|
unknown: `
|
|
@@ -240,25 +223,12 @@ help isolate the syntax error.`,
|
|
|
240
223
|
addsite(new DisjunctVal({ peg: terms }), r, ctx),
|
|
241
224
|
|
|
242
225
|
'dot-prefix': (r: Rule, ctx: JsonicContext, _op: Op, terms: any) => {
|
|
243
|
-
|
|
244
|
-
if (ctx.meta.paths) { ctx.meta.paths.push(pv) }
|
|
245
|
-
return pv
|
|
226
|
+
return addsite(new RefVal({ peg: terms, prefix: true }), r, ctx)
|
|
246
227
|
},
|
|
247
228
|
|
|
248
229
|
'dot-infix': (r: Rule, ctx: JsonicContext, _op: Op, terms: any) => {
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
// Remove consumed intermediates
|
|
252
|
-
for (const t of terms) {
|
|
253
|
-
if (t instanceof PathVal) {
|
|
254
|
-
const idx = paths.indexOf(t)
|
|
255
|
-
if (idx >= 0) paths.splice(idx, 1)
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
const pv = addsite(new PathVal({ peg: terms }), r, ctx)
|
|
260
|
-
if (paths) { paths.push(pv) }
|
|
261
|
-
return pv
|
|
230
|
+
// // console.log('DOT-INFIX-OP', terms)
|
|
231
|
+
return addsite(new RefVal({ peg: terms }), r, ctx)
|
|
262
232
|
},
|
|
263
233
|
|
|
264
234
|
'star-prefix': (r: Rule, ctx: JsonicContext, _op: Op, terms: any) =>
|
|
@@ -266,7 +236,7 @@ help isolate the syntax error.`,
|
|
|
266
236
|
|
|
267
237
|
'dollar-prefix': (r: Rule, ctx: JsonicContext, _op: Op, terms: any) => {
|
|
268
238
|
// $.a.b absolute path
|
|
269
|
-
if (terms[0] instanceof
|
|
239
|
+
if (terms[0] instanceof RefVal) {
|
|
270
240
|
terms[0].absolute = true
|
|
271
241
|
return terms[0]
|
|
272
242
|
}
|
|
@@ -301,9 +271,6 @@ help isolate the syntax error.`,
|
|
|
301
271
|
})
|
|
302
272
|
}
|
|
303
273
|
const out = addsite(val, r, ctx)
|
|
304
|
-
if (out.isKeyFunc && ctx.meta.keys) {
|
|
305
|
-
ctx.meta.keys.push(out)
|
|
306
|
-
}
|
|
307
274
|
return out
|
|
308
275
|
},
|
|
309
276
|
}
|
|
@@ -314,11 +281,11 @@ help isolate the syntax error.`,
|
|
|
314
281
|
op: {
|
|
315
282
|
// disjunct < conjunct: c & b | a -> (c & b) | a
|
|
316
283
|
'conjunct': {
|
|
317
|
-
infix: true, src: '&', left: 16_000_000, right: 17_000_000
|
|
284
|
+
infix: true, src: '&', left: 16_000_000, right: 17_000_000
|
|
318
285
|
},
|
|
319
286
|
|
|
320
287
|
'disjunct': {
|
|
321
|
-
infix: true, src: '|', left: 14_000_000, right: 15_000_000
|
|
288
|
+
infix: true, src: '|', left: 14_000_000, right: 15_000_000
|
|
322
289
|
},
|
|
323
290
|
|
|
324
291
|
'plus-infix': {
|
|
@@ -357,6 +324,7 @@ help isolate the syntax error.`,
|
|
|
357
324
|
paren: true,
|
|
358
325
|
preval: {
|
|
359
326
|
active: true,
|
|
327
|
+
// allow: ['floor'], //Object.keys(funcMap)
|
|
360
328
|
},
|
|
361
329
|
osrc: '(',
|
|
362
330
|
csrc: ')',
|
|
@@ -477,46 +445,26 @@ help isolate the syntax error.`,
|
|
|
477
445
|
{ s: [OPTKEY, QM], p: 'pair', b: 2, g: 'pair,list,val,imp,jsonic,aontu-optional' },
|
|
478
446
|
])
|
|
479
447
|
|
|
480
|
-
|
|
481
448
|
.bc((r: Rule, ctx: JsonicContext) => {
|
|
482
449
|
const optionalKeys = r.u.aontu_optional_keys ?? []
|
|
483
450
|
|
|
484
451
|
let mo = r.node
|
|
485
452
|
|
|
486
|
-
// Extract spread constraint before creating MapVal.
|
|
487
|
-
// If a spread exists, wrap: ConjunctVal([MapVal, SpreadVal])
|
|
488
|
-
const rawSpread = (mo as any)[SPREAD]
|
|
489
|
-
if (rawSpread) {
|
|
490
|
-
delete (mo as any)[SPREAD]
|
|
491
|
-
}
|
|
492
|
-
|
|
493
453
|
// Handle defered conjuncts, e.g. `{x:1 @"foo"}`
|
|
494
454
|
if (mo.___merge) {
|
|
495
455
|
let mop = { ...mo }
|
|
496
456
|
delete mop.___merge
|
|
497
457
|
|
|
458
|
+
// TODO: needs addpath?
|
|
498
459
|
let mopv = new MapVal({ peg: mop })
|
|
499
460
|
mopv.optionalKeys = optionalKeys
|
|
500
461
|
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
terms.push(makeSpreadVal(rawSpread))
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
r.node = addsite(new ConjunctVal({ peg: terms }), r, ctx)
|
|
462
|
+
r.node =
|
|
463
|
+
addsite(new ConjunctVal({ peg: [mopv, ...mo.___merge] }), r, ctx)
|
|
507
464
|
}
|
|
508
465
|
else {
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
if (rawSpread && '&' === rawSpread.o) {
|
|
513
|
-
const spreadVal = makeSpreadVal(rawSpread)
|
|
514
|
-
r.node = addsite(
|
|
515
|
-
new ConjunctVal({ peg: [mapVal, spreadVal] }), r, ctx)
|
|
516
|
-
}
|
|
517
|
-
else {
|
|
518
|
-
r.node = addsite(mapVal, r, ctx)
|
|
519
|
-
}
|
|
466
|
+
r.node = addsite(new MapVal({ peg: mo }), r, ctx)
|
|
467
|
+
r.node.optionalKeys = optionalKeys
|
|
520
468
|
}
|
|
521
469
|
|
|
522
470
|
return undefined
|
|
@@ -538,39 +486,20 @@ help isolate the syntax error.`,
|
|
|
538
486
|
|
|
539
487
|
let ao = r.node
|
|
540
488
|
|
|
541
|
-
// Extract spread from list before creating ListVal.
|
|
542
|
-
const rawSpread = (ao as any)[SPREAD]
|
|
543
|
-
if (rawSpread) {
|
|
544
|
-
delete (ao as any)[SPREAD]
|
|
545
|
-
}
|
|
546
|
-
|
|
547
489
|
if (ao.___merge) {
|
|
548
490
|
let aop = [...ao]
|
|
549
491
|
delete (aop as any).___merge
|
|
550
492
|
|
|
493
|
+
// TODO: needs addpath?
|
|
551
494
|
let aopv = new ListVal({ peg: aop })
|
|
552
495
|
aopv.optionalKeys = optionalKeys
|
|
553
496
|
|
|
554
|
-
let terms = [aopv, ...ao.___merge]
|
|
555
|
-
if (rawSpread && '&' === rawSpread.o) {
|
|
556
|
-
terms.push(makeSpreadVal(rawSpread))
|
|
557
|
-
}
|
|
558
|
-
|
|
559
497
|
r.node =
|
|
560
|
-
addsite(new ConjunctVal({ peg:
|
|
498
|
+
addsite(new ConjunctVal({ peg: [aopv, ...ao.___merge] }), r, ctx)
|
|
561
499
|
}
|
|
562
500
|
else {
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
if (rawSpread && '&' === rawSpread.o) {
|
|
567
|
-
const spreadVal = makeSpreadVal(rawSpread)
|
|
568
|
-
r.node = addsite(
|
|
569
|
-
new ConjunctVal({ peg: [listVal, spreadVal] }), r, ctx)
|
|
570
|
-
}
|
|
571
|
-
else {
|
|
572
|
-
r.node = addsite(listVal, r, ctx)
|
|
573
|
-
}
|
|
501
|
+
r.node = addsite(new ListVal({ peg: ao }), r, ctx)
|
|
502
|
+
r.node.optionalKeys = optionalKeys
|
|
574
503
|
}
|
|
575
504
|
|
|
576
505
|
return undefined
|
|
@@ -626,13 +555,11 @@ help isolate the syntax error.`,
|
|
|
626
555
|
}
|
|
627
556
|
])
|
|
628
557
|
|
|
629
|
-
//
|
|
630
|
-
// The path gets adjusted correctly when SpreadVal applies
|
|
631
|
-
// the constraint via spreadClone(keyctx).
|
|
558
|
+
// NOTE: manually adjust path - @jsonic/path ignores as not pair:true
|
|
632
559
|
.ao((r) => {
|
|
633
560
|
if (0 < r.d && r.u.spread) {
|
|
634
|
-
r.child.k.path = r.k.path
|
|
635
|
-
r.child.k.key =
|
|
561
|
+
r.child.k.path = [...r.k.path, '&']
|
|
562
|
+
r.child.k.key = '&'
|
|
636
563
|
}
|
|
637
564
|
})
|
|
638
565
|
|
|
@@ -720,18 +647,10 @@ function makeModelResolver(options: any) {
|
|
|
720
647
|
...(options.resolver?.mem || {})
|
|
721
648
|
})
|
|
722
649
|
|
|
723
|
-
|
|
650
|
+
// TODO: make this consistent with other resolvers
|
|
651
|
+
let fileResolver = makeFileResolver((spec: any) => {
|
|
724
652
|
return 'string' === typeof spec ? spec : spec?.peg
|
|
725
|
-
}
|
|
726
|
-
|
|
727
|
-
let preload: { [fullpath: string]: string } | undefined
|
|
728
|
-
if (options.preload) {
|
|
729
|
-
preload = preloadFiles(options.preload)
|
|
730
|
-
}
|
|
731
|
-
|
|
732
|
-
let fileResolver = makeFileResolver(
|
|
733
|
-
preload ? { pathfinder, preload } : pathfinder
|
|
734
|
-
)
|
|
653
|
+
})
|
|
735
654
|
|
|
736
655
|
let pkgResolver = makePkgResolver({
|
|
737
656
|
require: useRequire,
|
|
@@ -780,8 +699,6 @@ class Lang {
|
|
|
780
699
|
jsonic: Jsonic
|
|
781
700
|
opts: AontuOptions
|
|
782
701
|
idcount: number | undefined
|
|
783
|
-
paths: PathVal[] = []
|
|
784
|
-
keys: KeyFuncVal[] = []
|
|
785
702
|
|
|
786
703
|
|
|
787
704
|
constructor(options?: Partial<AontuOptions>) {
|
|
@@ -815,14 +732,9 @@ class Lang {
|
|
|
815
732
|
// const start = performance.now()
|
|
816
733
|
|
|
817
734
|
// JSONIC-UPDATE - check meta
|
|
818
|
-
this.paths = []
|
|
819
|
-
this.keys = []
|
|
820
|
-
|
|
821
735
|
let jm: any = {
|
|
822
736
|
fs: opts?.fs,
|
|
823
737
|
fileName: opts?.path ?? this.opts.path,
|
|
824
|
-
paths: this.paths,
|
|
825
|
-
keys: this.keys,
|
|
826
738
|
multisource: {
|
|
827
739
|
path: opts?.path ?? this.opts.path,
|
|
828
740
|
deps: (opts && opts.deps) || undefined
|
|
@@ -867,7 +779,5 @@ class Lang {
|
|
|
867
779
|
|
|
868
780
|
export {
|
|
869
781
|
Lang,
|
|
870
|
-
PathVal,
|
|
871
|
-
KeyFuncVal,
|
|
872
782
|
Site,
|
|
873
783
|
}
|
package/src/type.ts
CHANGED
|
@@ -30,11 +30,6 @@ type AontuOptions = {
|
|
|
30
30
|
collect?: boolean // Collect errors into an errs property, rather than throw them.
|
|
31
31
|
err?: any[]
|
|
32
32
|
explain?: any[]
|
|
33
|
-
preload?: { // Preload files into memory before parsing.
|
|
34
|
-
folders: string[] // Folders to scan.
|
|
35
|
-
ext?: string[] // Extensions (default: ['.jsonic', '.json']).
|
|
36
|
-
recursive?: boolean // Recurse into subfolders (default: false).
|
|
37
|
-
}
|
|
38
33
|
}
|
|
39
34
|
|
|
40
35
|
|