aontu 0.53.0 → 0.55.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.d.ts +3 -2
- package/dist/aontu.js +36 -7
- package/dist/aontu.js.map +1 -1
- package/dist/cli.d.ts +2 -1
- package/dist/cli.js +500 -8
- package/dist/cli.js.map +1 -1
- package/dist/ctx.d.ts +5 -0
- package/dist/ctx.js +1 -0
- package/dist/ctx.js.map +1 -1
- package/dist/diff.js.map +1 -1
- package/dist/err.js +7 -1
- package/dist/err.js.map +1 -1
- package/dist/graph.d.ts +2 -5
- package/dist/graph.js +83 -46
- package/dist/graph.js.map +1 -1
- package/dist/hcanon.js +9 -10
- package/dist/hcanon.js.map +1 -1
- package/dist/hints.js +94 -26
- package/dist/hints.js.map +1 -1
- package/dist/jsonschema.js +34 -0
- package/dist/jsonschema.js.map +1 -1
- package/dist/lang.js +593 -191
- package/dist/lang.js.map +1 -1
- package/dist/lsp.d.ts +1 -1
- package/dist/lsp.js +86 -6
- package/dist/lsp.js.map +1 -1
- package/dist/mcp.js +153 -6
- package/dist/mcp.js.map +1 -1
- package/dist/mod-tool.js +42 -8
- package/dist/mod-tool.js.map +1 -1
- package/dist/mod.d.ts +4 -0
- package/dist/mod.js +97 -2
- package/dist/mod.js.map +1 -1
- package/dist/patch.d.ts +5 -0
- package/dist/patch.js +25 -25
- package/dist/patch.js.map +1 -1
- package/dist/provenance.d.ts +1 -0
- package/dist/provenance.js +2 -1
- package/dist/provenance.js.map +1 -1
- package/dist/query.js.map +1 -1
- package/dist/reach.d.ts +1 -0
- package/dist/reach.js +49 -21
- package/dist/reach.js.map +1 -1
- package/dist/relation.d.ts +4 -0
- package/dist/relation.js +125 -200
- package/dist/relation.js.map +1 -1
- package/dist/sig.d.ts +25 -0
- package/dist/sig.js +277 -0
- package/dist/sig.js.map +1 -0
- package/dist/sigdecl.d.ts +2 -0
- package/dist/sigdecl.js +11 -0
- package/dist/sigdecl.js.map +1 -0
- package/dist/siggate.d.ts +4 -0
- package/dist/siggate.js +90 -0
- package/dist/siggate.js.map +1 -0
- package/dist/std.js +75 -16
- package/dist/std.js.map +1 -1
- package/dist/subsume.js +57 -10
- package/dist/subsume.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/unify.d.ts +2 -2
- package/dist/unify.js +93 -114
- package/dist/unify.js.map +1 -1
- package/dist/utility.d.ts +1 -2
- package/dist/utility.js +7 -61
- package/dist/utility.js.map +1 -1
- package/dist/val/AggFuncVal.d.ts +12 -1
- package/dist/val/AggFuncVal.js +165 -3
- package/dist/val/AggFuncVal.js.map +1 -1
- package/dist/val/BagVal.d.ts +2 -0
- package/dist/val/BagVal.js +56 -8
- package/dist/val/BagVal.js.map +1 -1
- package/dist/val/ConstraintVal.js +33 -5
- package/dist/val/ConstraintVal.js.map +1 -1
- package/dist/val/ContainerKindVal.d.ts +35 -0
- package/dist/val/ContainerKindVal.js +99 -0
- package/dist/val/ContainerKindVal.js.map +1 -0
- package/dist/val/CopyFuncVal.js +0 -7
- package/dist/val/CopyFuncVal.js.map +1 -1
- package/dist/val/DisjunctVal.d.ts +1 -2
- package/dist/val/DisjunctVal.js +146 -39
- package/dist/val/DisjunctVal.js.map +1 -1
- package/dist/val/ExpectVal.js +37 -2
- package/dist/val/ExpectVal.js.map +1 -1
- package/dist/val/FuncBaseVal.d.ts +1 -0
- package/dist/val/FuncBaseVal.js +19 -8
- package/dist/val/FuncBaseVal.js.map +1 -1
- package/dist/val/GraphAtomVal.d.ts +39 -0
- package/dist/val/GraphAtomVal.js +184 -0
- package/dist/val/GraphAtomVal.js.map +1 -0
- package/dist/val/JunctionVal.js +22 -5
- package/dist/val/JunctionVal.js.map +1 -1
- package/dist/val/ListVal.js +27 -34
- package/dist/val/ListVal.js.map +1 -1
- package/dist/val/MapVal.d.ts +1 -0
- package/dist/val/MapVal.js +82 -35
- package/dist/val/MapVal.js.map +1 -1
- package/dist/val/PathFuncVal.d.ts +2 -2
- package/dist/val/PathFuncVal.js +75 -16
- package/dist/val/PathFuncVal.js.map +1 -1
- package/dist/val/PathVal.d.ts +25 -0
- package/dist/val/PathVal.js +150 -0
- package/dist/val/PathVal.js.map +1 -0
- package/dist/val/PlusOpVal.d.ts +2 -1
- package/dist/val/PlusOpVal.js +50 -35
- package/dist/val/PlusOpVal.js.map +1 -1
- package/dist/val/PrefVal.d.ts +2 -0
- package/dist/val/PrefVal.js +159 -32
- package/dist/val/PrefVal.js.map +1 -1
- package/dist/val/RecurseVal.d.ts +19 -0
- package/dist/val/RecurseVal.js +217 -0
- package/dist/val/RecurseVal.js.map +1 -0
- package/dist/val/RefVal.d.ts +2 -1
- package/dist/val/RefVal.js +105 -72
- package/dist/val/RefVal.js.map +1 -1
- package/dist/val/ReferFuncVal.d.ts +30 -7
- package/dist/val/ReferFuncVal.js +395 -94
- package/dist/val/ReferFuncVal.js.map +1 -1
- package/dist/val/ScalarKindVal.d.ts +4 -2
- package/dist/val/ScalarKindVal.js +12 -1
- package/dist/val/ScalarKindVal.js.map +1 -1
- package/dist/val/SuperFuncVal.d.ts +4 -2
- package/dist/val/SuperFuncVal.js +118 -14
- package/dist/val/SuperFuncVal.js.map +1 -1
- package/dist/val/TopVal.d.ts +1 -1
- package/dist/val/Val.d.ts +2 -3
- package/dist/val/Val.js +39 -20
- package/dist/val/Val.js.map +1 -1
- package/dist/val/arith.js +4 -1
- package/dist/val/arith.js.map +1 -1
- package/dist/vet.d.ts +1 -0
- package/dist/vet.js +32 -1
- package/dist/vet.js.map +1 -1
- package/dist/view.d.ts +90 -0
- package/dist/view.js +2168 -0
- package/dist/view.js.map +1 -0
- package/grammar/aontu.gbnf +18 -10
- package/grammar/aontu.lark +15 -10
- package/grammar/aontu.tmLanguage.json +184 -0
- package/package.json +10 -3
- package/skill/grammar-card.md +1 -2
- package/src/aontu.ts +37 -7
- package/src/cli.ts +553 -8
- package/src/ctx.ts +20 -0
- package/src/diff.ts +4 -2
- package/src/err.ts +8 -1
- package/src/graph.ts +125 -75
- package/src/hcanon.ts +9 -11
- package/src/hints.ts +112 -29
- package/src/jsonschema.ts +41 -0
- package/src/lang.ts +642 -203
- package/src/lsp.ts +75 -6
- package/src/mcp.ts +164 -6
- package/src/mod-tool.ts +48 -9
- package/src/mod.ts +110 -1
- package/src/patch.ts +31 -27
- package/src/provenance.ts +8 -1
- package/src/query.ts +4 -2
- package/src/reach.ts +52 -23
- package/src/relation.ts +139 -236
- package/src/sig.ts +345 -0
- package/src/sigdecl.ts +11 -0
- package/src/siggate.ts +144 -0
- package/src/std.ts +77 -16
- package/src/subsume.ts +59 -10
- package/src/unify.ts +102 -125
- package/src/utility.ts +7 -67
- package/src/val/AggFuncVal.ts +231 -4
- package/src/val/BagVal.ts +58 -9
- package/src/val/ConstraintVal.ts +34 -5
- package/src/val/ContainerKindVal.ts +158 -0
- package/src/val/CopyFuncVal.ts +0 -7
- package/src/val/DisjunctVal.ts +152 -40
- package/src/val/ExpectVal.ts +39 -4
- package/src/val/FuncBaseVal.ts +21 -8
- package/src/val/GraphAtomVal.ts +264 -0
- package/src/val/JunctionVal.ts +23 -6
- package/src/val/ListVal.ts +30 -37
- package/src/val/MapVal.ts +87 -39
- package/src/val/PathFuncVal.ts +107 -19
- package/src/val/PathVal.ts +221 -0
- package/src/val/PlusOpVal.ts +56 -37
- package/src/val/PrefVal.ts +186 -38
- package/src/val/RecurseVal.ts +285 -0
- package/src/val/RefVal.ts +105 -83
- package/src/val/ReferFuncVal.ts +445 -100
- package/src/val/ScalarKindVal.ts +12 -0
- package/src/val/SuperFuncVal.ts +137 -13
- package/src/val/TopVal.ts +1 -1
- package/src/val/Val.ts +44 -35
- package/src/val/arith.ts +4 -1
- package/src/vet.ts +41 -4
- package/src/view.ts +2882 -0
- package/dist/val/IdFuncVal.d.ts +0 -13
- package/dist/val/IdFuncVal.js +0 -54
- package/dist/val/IdFuncVal.js.map +0 -1
- package/src/val/IdFuncVal.ts +0 -91
package/dist/val/AggFuncVal.js
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/* Copyright (c) 2025 Richard Rodger, MIT License */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.GreatestFuncVal = exports.LeastFuncVal = exports.SumFuncVal = exports.PickFuncVal = exports.AggFuncVal = void 0;
|
|
4
|
+
exports.GreatestFuncVal = exports.LeastFuncVal = exports.SumFuncVal = exports.PickFuncVal = exports.JoinFuncVal = exports.AggFuncVal = void 0;
|
|
5
5
|
const err_1 = require("../err");
|
|
6
6
|
const IntegerVal_1 = require("./IntegerVal");
|
|
7
7
|
const ListVal_1 = require("./ListVal");
|
|
8
|
+
const StringVal_1 = require("./StringVal");
|
|
8
9
|
const FuncBaseVal_1 = require("./FuncBaseVal");
|
|
9
10
|
const arith_1 = require("./arith");
|
|
10
11
|
const numcmp_1 = require("./numcmp");
|
|
12
|
+
const keyorder_1 = require("../keyorder");
|
|
13
|
+
const PlusOpVal_1 = require("./PlusOpVal");
|
|
11
14
|
// The children of a bag, in the order the aggregate sees them: source
|
|
12
15
|
// order for a list, sorted-key order for a map -- `each`'s order, and
|
|
13
16
|
// for the same reason (a map has no order of its own, so the language
|
|
@@ -17,7 +20,14 @@ function bagChildren(data) {
|
|
|
17
20
|
return data.peg;
|
|
18
21
|
}
|
|
19
22
|
if (true === data?.isMap) {
|
|
20
|
-
|
|
23
|
+
// THE ONE MAP-KEY ORDER (../keyorder.ts), not a bare `.sort()`:
|
|
24
|
+
// JavaScript compares by UTF-16 code unit, so an astral key's
|
|
25
|
+
// leading surrogate sorts BELOW U+E000-U+FFFF and `pick` answered
|
|
26
|
+
// in a different order from `each`, from canon, and from Go --
|
|
27
|
+
// which sorts UTF-8 bytes, i.e. code points. `pick` is the
|
|
28
|
+
// order-preserving projection, so that was one model producing two
|
|
29
|
+
// different generated files (BUGS.md 62).
|
|
30
|
+
return Object.keys(data.peg).sort(keyorder_1.cmpCodePoint).map((k) => data.peg[k]);
|
|
21
31
|
}
|
|
22
32
|
return undefined;
|
|
23
33
|
}
|
|
@@ -184,6 +194,158 @@ class PickFuncVal extends FuncBaseVal_1.FuncBaseVal {
|
|
|
184
194
|
}
|
|
185
195
|
}
|
|
186
196
|
exports.PickFuncVal = PickFuncVal;
|
|
197
|
+
// Which of the three a value is.
|
|
198
|
+
//
|
|
199
|
+
// `text` -- `+` would take it, so the fold can.
|
|
200
|
+
//
|
|
201
|
+
// `never` -- a SETTLED value that will never become text: a map, a
|
|
202
|
+
// list, a null. This is `join_member`, class `conflict`, and it names
|
|
203
|
+
// the member rather than the call, because "one of these is not a
|
|
204
|
+
// string" is only actionable if you are told which.
|
|
205
|
+
//
|
|
206
|
+
// `notyet` -- an unresolved kind, a top, a stable residue. NOT a join
|
|
207
|
+
// failure at all: the call stays residual and generation reports
|
|
208
|
+
// `mapval_no_gen`, class `incomplete`, exactly as docs/trust.md
|
|
209
|
+
// requires ("a stable residue ... is ordinary incompleteness"). Getting
|
|
210
|
+
// this split wrong in either direction is the defect that matters here:
|
|
211
|
+
// refusing a residue makes `join` unusable inside a schema, and
|
|
212
|
+
// deferring on a map makes a real error arrive as a shrug.
|
|
213
|
+
function memberVerdict(v) {
|
|
214
|
+
const u = unpref(v);
|
|
215
|
+
if (undefined !== (0, PlusOpVal_1.plusText)(u)) {
|
|
216
|
+
return 'text';
|
|
217
|
+
}
|
|
218
|
+
if (true === u?.isMap || true === u?.isList || true === u?.isNull) {
|
|
219
|
+
return 'never';
|
|
220
|
+
}
|
|
221
|
+
return 'notyet';
|
|
222
|
+
}
|
|
223
|
+
// The separator is a STRING or it is nothing.
|
|
224
|
+
//
|
|
225
|
+
// A number would render perfectly well through `+`, and is still
|
|
226
|
+
// refused: the separator is not a member of the fold, it is the
|
|
227
|
+
// parameter naming the text between members, and `join(x, 5)` is far
|
|
228
|
+
// likelier a mistake than an intent to separate with "5". `pick`'s key
|
|
229
|
+
// argument draws the same line for the same reason. This is the
|
|
230
|
+
// direction that can be loosened later without breaking a document;
|
|
231
|
+
// the other direction cannot.
|
|
232
|
+
function sepVerdict(v) {
|
|
233
|
+
const u = unpref(v);
|
|
234
|
+
if (u?.isVal && u.isScalar) {
|
|
235
|
+
return 'string' === typeof u.peg ? 'text' : 'never';
|
|
236
|
+
}
|
|
237
|
+
if (true === u?.isMap || true === u?.isList || true === u?.isNull) {
|
|
238
|
+
return 'never';
|
|
239
|
+
}
|
|
240
|
+
return 'notyet';
|
|
241
|
+
}
|
|
242
|
+
class JoinFuncVal extends FuncBaseVal_1.FuncBaseVal {
|
|
243
|
+
constructor(spec, ctx) {
|
|
244
|
+
super(spec, ctx);
|
|
245
|
+
this.isJoinFunc = true;
|
|
246
|
+
// The bag must settle before it is folded, exactly as it must before
|
|
247
|
+
// it is summed or projected.
|
|
248
|
+
this.staged = true;
|
|
249
|
+
}
|
|
250
|
+
// A `make` OVERRIDE, WHERE ITS AggFuncVal SIBLINGS HAVE NONE, and the
|
|
251
|
+
// difference is worth stating because it is not arbitrary. `sum`,
|
|
252
|
+
// `pick` and the rest are staged and nothing more: they residuate
|
|
253
|
+
// before `unify` reaches the rebuild branch, so a `make` there would
|
|
254
|
+
// be unreachable code pretending to be a contract, and the base's
|
|
255
|
+
// `func:<name>` refusal is the loud answer if that ever changes.
|
|
256
|
+
//
|
|
257
|
+
// `join` is the first builtin that is BOTH staged AND defers its
|
|
258
|
+
// resolution (see `deferResolve`). A deferred call has settled
|
|
259
|
+
// arguments, so it does reach the rebuild branch, and without this it
|
|
260
|
+
// raised `func:join` on the first document with an unresolved member
|
|
261
|
+
// — where the Go port residuated and reported `mapval_no_gen`.
|
|
262
|
+
// Opposite answers on `join($.m, ",")` with `m: [string]`, caught by
|
|
263
|
+
// running both engines rather than by either test suite. `super` and
|
|
264
|
+
// bare `id`, the two other deferring calls, each carry the same
|
|
265
|
+
// override for the same reason.
|
|
266
|
+
make(_ctx, spec) {
|
|
267
|
+
return new JoinFuncVal(spec);
|
|
268
|
+
}
|
|
269
|
+
funcname() {
|
|
270
|
+
return 'join';
|
|
271
|
+
}
|
|
272
|
+
// The base does not drive: `unify` drives by hand, because a staged
|
|
273
|
+
// func must advance what it is waiting on every pass rather than only
|
|
274
|
+
// on the pass it fires.
|
|
275
|
+
prepare(_ctx, _args) {
|
|
276
|
+
return null;
|
|
277
|
+
}
|
|
278
|
+
unify(peer, ctx) {
|
|
279
|
+
// BOTH arguments, unlike `pick`, which drives only its bag: `pick`'s
|
|
280
|
+
// key is a bare word the parser has already made a string, while a
|
|
281
|
+
// separator is an ordinary expression and `join($.rows, $.sep)` has
|
|
282
|
+
// to wait for it.
|
|
283
|
+
const ready = this.driveStagedArgs(ctx, 2);
|
|
284
|
+
if (!ready || !ctx.settle) {
|
|
285
|
+
return this.residuate(peer, ctx);
|
|
286
|
+
}
|
|
287
|
+
return super.unify(peer, ctx);
|
|
288
|
+
}
|
|
289
|
+
// The `notyet` half of the verdict, taken before `resolve` runs: with
|
|
290
|
+
// arguments settled but a member still a kind, the call rides the
|
|
291
|
+
// ordinary args-not-done path and residuates, which is what makes an
|
|
292
|
+
// unresolved member ordinary incompleteness rather than a refusal.
|
|
293
|
+
deferResolve(_ctx, args) {
|
|
294
|
+
const children = bagChildren(args?.[0]);
|
|
295
|
+
if (undefined === children) {
|
|
296
|
+
// Not a bag at all: let `resolve` say so rather than waiting for
|
|
297
|
+
// a settling that has already happened.
|
|
298
|
+
return false;
|
|
299
|
+
}
|
|
300
|
+
const sep = args?.[1];
|
|
301
|
+
if (undefined !== sep && 'notyet' === sepVerdict(sep)) {
|
|
302
|
+
return true;
|
|
303
|
+
}
|
|
304
|
+
return children.some((c) => 'notyet' === memberVerdict(c));
|
|
305
|
+
}
|
|
306
|
+
resolve(ctx, args) {
|
|
307
|
+
const children = bagChildren(args?.[0]);
|
|
308
|
+
if (undefined === children) {
|
|
309
|
+
return this.place((0, err_1.makeNilErr)(ctx, 'aggregate_data', this, undefined, 'join'));
|
|
310
|
+
}
|
|
311
|
+
// Arity is [1,2], so a second argument is present or the separator
|
|
312
|
+
// is the empty string -- which makes `join(coll)` concatenation.
|
|
313
|
+
// The separator's SHAPE is settled before resolve runs: the
|
|
314
|
+
// signature gate refuses every concrete non-string
|
|
315
|
+
// (docs/design/SIGNATURES.0.md; join(d: map|list, sep?: string)),
|
|
316
|
+
// and deferResolve holds the call while sepVerdict answers notyet
|
|
317
|
+
// -- so a present separator here is text.
|
|
318
|
+
let sep = '';
|
|
319
|
+
if (1 < args.length) {
|
|
320
|
+
sep = unpref(args[1]).peg;
|
|
321
|
+
}
|
|
322
|
+
// NO NIL-MEMBER GUARD, WHERE `sum` HAS ONE, and the difference is
|
|
323
|
+
// the fold's shape rather than an oversight. `sum` folds with
|
|
324
|
+
// `arith`, which MINTS a nil part-way through — a non-numeric child
|
|
325
|
+
// or an overflow — so it has to stop and return it. `join` folds
|
|
326
|
+
// already-unified values, and a nil among a list's elements
|
|
327
|
+
// collapses the list before this call resolves: `join([least([])],
|
|
328
|
+
// ",")` reports `aggregate_empty` at the member's own path,
|
|
329
|
+
// `$.o.0`, and never reaches here. A guard was written, the
|
|
330
|
+
// ADR-002 gate found it unexecuted, and probing confirmed no
|
|
331
|
+
// spelling reaches it, so it is removed rather than excused.
|
|
332
|
+
const parts = [];
|
|
333
|
+
for (const child of children) {
|
|
334
|
+
const u = unpref(child);
|
|
335
|
+
const text = (0, PlusOpVal_1.plusText)(u);
|
|
336
|
+
if (undefined === text) {
|
|
337
|
+
return this.place((0, err_1.makeNilErr)(ctx, 'join_member', this, undefined, 'join', { member: String(u?.canon) }));
|
|
338
|
+
}
|
|
339
|
+
parts.push(text);
|
|
340
|
+
}
|
|
341
|
+
// Every part is already a string, so this IS the `+` fold seeded
|
|
342
|
+
// with `""` -- written as one concatenation because a loop of `+`
|
|
343
|
+
// over settled strings cannot differ from it, and because the Go
|
|
344
|
+
// twin's strings.Join must produce the same bytes.
|
|
345
|
+
return this.place(new StringVal_1.StringVal({ peg: parts.join(sep) }));
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
exports.JoinFuncVal = JoinFuncVal;
|
|
187
349
|
// The three the registry names. Each is its operation and nothing else.
|
|
188
350
|
class SumFuncVal extends AggFuncVal {
|
|
189
351
|
constructor(spec, ctx) { super(spec, ctx, 'sum'); }
|
|
@@ -197,6 +359,6 @@ class GreatestFuncVal extends AggFuncVal {
|
|
|
197
359
|
constructor(spec, ctx) {
|
|
198
360
|
super(spec, ctx, 'greatest');
|
|
199
361
|
}
|
|
200
|
-
} /* node:coverage ignore next
|
|
362
|
+
} /* node:coverage ignore next 10 */
|
|
201
363
|
exports.GreatestFuncVal = GreatestFuncVal;
|
|
202
364
|
//# sourceMappingURL=AggFuncVal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AggFuncVal.js","sourceRoot":"","sources":["../../src/val/AggFuncVal.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAsDpD,gCAAmC;AACnC,6CAAyC;AACzC,uCAAmC;AACnC,+CAA2C;AAC3C,mCAA+B;AAC/B,qCAAqC;
|
|
1
|
+
{"version":3,"file":"AggFuncVal.js","sourceRoot":"","sources":["../../src/val/AggFuncVal.ts"],"names":[],"mappings":"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"}
|
package/dist/val/BagVal.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ declare abstract class BagVal extends FeatureVal {
|
|
|
7
7
|
isGenable: boolean;
|
|
8
8
|
closed: boolean;
|
|
9
9
|
optionalKeys: string[];
|
|
10
|
+
aliasKeys: string[];
|
|
10
11
|
spread: {
|
|
11
12
|
cj: Val | undefined;
|
|
12
13
|
};
|
|
@@ -21,3 +22,4 @@ export declare function sizingResidue(v: any): {
|
|
|
21
22
|
con: any;
|
|
22
23
|
bag: any;
|
|
23
24
|
} | undefined;
|
|
25
|
+
export declare function bagGenable(child: any): boolean;
|
package/dist/val/BagVal.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.BagVal = void 0;
|
|
5
5
|
exports.sizingResidue = sizingResidue;
|
|
6
|
+
exports.bagGenable = bagGenable;
|
|
6
7
|
const utility_1 = require("../utility");
|
|
7
8
|
const err_1 = require("../err");
|
|
8
9
|
const Val_1 = require("./Val");
|
|
@@ -17,6 +18,16 @@ class BagVal extends FeatureVal_1.FeatureVal {
|
|
|
17
18
|
this.isGenable = true;
|
|
18
19
|
this.closed = false;
|
|
19
20
|
this.optionalKeys = [];
|
|
21
|
+
// ALIAS DECLARATIONS, by key. `%uint8: …` binds a name for this file
|
|
22
|
+
// and is not a field of the document: it does not generate and does
|
|
23
|
+
// not appear in canon, so a document using aliases and its expanded
|
|
24
|
+
// twin are the SAME document and hash identically
|
|
25
|
+
// (docs/design/ALIASES.0.md §4).
|
|
26
|
+
//
|
|
27
|
+
// Keyed on the map rather than marked on the value, because a
|
|
28
|
+
// reference copies the value it resolves to -- a mark riding the
|
|
29
|
+
// value would erase the referring field along with the declaration.
|
|
30
|
+
this.aliasKeys = [];
|
|
20
31
|
this.spread = {
|
|
21
32
|
cj: undefined,
|
|
22
33
|
};
|
|
@@ -83,6 +94,17 @@ class BagVal extends FeatureVal_1.FeatureVal {
|
|
|
83
94
|
this.mark.hide !== peer.mark.hide) {
|
|
84
95
|
return false;
|
|
85
96
|
}
|
|
97
|
+
// The SPREAD is part of the shape (BUGS.md §52 regime 4): `[]`
|
|
98
|
+
// and `[&: T]` share an empty key set, and calling them the same
|
|
99
|
+
// value collapsed the disjunction to its first arm before any
|
|
100
|
+
// data could pick -- the vacuous-schema hole. Two spreads are the
|
|
101
|
+
// same when their canons are.
|
|
102
|
+
const scj = this.spread?.cj;
|
|
103
|
+
const pcj = peer.spread?.cj;
|
|
104
|
+
if ((null == scj) !== (null == pcj) ||
|
|
105
|
+
(null != scj && null != pcj && scj.canon !== pcj.canon)) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
86
108
|
const keys = Object.keys(this.peg);
|
|
87
109
|
if (keys.length !== Object.keys(peer.peg).length) {
|
|
88
110
|
return false;
|
|
@@ -123,6 +145,13 @@ class BagVal extends FeatureVal_1.FeatureVal {
|
|
|
123
145
|
if ((child.mark.type || child.mark.hide) && true !== ctx?.probe) {
|
|
124
146
|
continue;
|
|
125
147
|
}
|
|
148
|
+
// An alias declaration contributes no field, and unlike a marked
|
|
149
|
+
// one it is skipped even under `probe`: the probe descends
|
|
150
|
+
// through output marks to check what a `--at` anchor really
|
|
151
|
+
// holds, and an alias is not part of the document at all.
|
|
152
|
+
if (this.aliasKeys.includes('' + p)) {
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
126
155
|
const optional = this.optionalKeys.includes('' + p);
|
|
127
156
|
// Lists append compactly: a skipped element (hidden, dropped
|
|
128
157
|
// optional) must not leave a hole/null at its index (matches the
|
|
@@ -152,14 +181,7 @@ class BagVal extends FeatureVal_1.FeatureVal {
|
|
|
152
181
|
// atom decides, in ConjunctVal.gen. Any OTHER conjunct is
|
|
153
182
|
// unresolved and falls through to the residue error below,
|
|
154
183
|
// exactly as before.
|
|
155
|
-
else if (child
|
|
156
|
-
|| child.isMap
|
|
157
|
-
|| child.isList
|
|
158
|
-
|| child.isPref
|
|
159
|
-
|| child.isRef
|
|
160
|
-
|| child.isDisjunct
|
|
161
|
-
|| child.isNil
|
|
162
|
-
|| undefined !== sizingResidue(child)) {
|
|
184
|
+
else if (bagGenable(child)) {
|
|
163
185
|
// An optional child is generated in an isolated collect context so an
|
|
164
186
|
// unresolved inner value (a bare type that survived unification, e.g.
|
|
165
187
|
// an absent optional sub-map's `field: string`) is dropped rather than
|
|
@@ -223,4 +245,30 @@ function sizingResidue(v) {
|
|
|
223
245
|
return undefined !== con && (true === bag?.isMap || true === bag?.isList) ?
|
|
224
246
|
{ con, bag } : undefined;
|
|
225
247
|
}
|
|
248
|
+
// bagGenable is the bag's generability whitelist. A graph atom
|
|
249
|
+
// (RELATIONS P2) is exactly as generable as the value it carries: the
|
|
250
|
+
// atom is transparent at generation, so wrapping a field's value in
|
|
251
|
+
// acyclic() must not change whether the bag accepts it -- an unmet
|
|
252
|
+
// rel() refuses required generation with or without the atom, and a
|
|
253
|
+
// BARE atom generates nothing and is dropped, exactly as an unmet
|
|
254
|
+
// rel() under an optional key is.
|
|
255
|
+
function bagGenable(child) {
|
|
256
|
+
if (true === child.isGraphAtom) {
|
|
257
|
+
return undefined === child.held || bagGenable(child.held);
|
|
258
|
+
}
|
|
259
|
+
// The recursive residual carries its own generation refusal
|
|
260
|
+
// (recursion_unexpanded), which names the schema and the site --
|
|
261
|
+
// the bag's generic residue error would bury both.
|
|
262
|
+
if (true === child.isRecurse) {
|
|
263
|
+
return true;
|
|
264
|
+
}
|
|
265
|
+
return true === child.isScalar
|
|
266
|
+
|| true === child.isMap
|
|
267
|
+
|| true === child.isList
|
|
268
|
+
|| true === child.isPref
|
|
269
|
+
|| true === child.isRef
|
|
270
|
+
|| true === child.isDisjunct
|
|
271
|
+
|| true === child.isNil
|
|
272
|
+
|| undefined !== sizingResidue(child);
|
|
273
|
+
}
|
|
226
274
|
//# sourceMappingURL=BagVal.js.map
|
package/dist/val/BagVal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BagVal.js","sourceRoot":"","sources":["../../src/val/BagVal.ts"],"names":[],"mappings":";AAAA,yDAAyD
|
|
1
|
+
{"version":3,"file":"BagVal.js","sourceRoot":"","sources":["../../src/val/BagVal.ts"],"names":[],"mappings":"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"}
|
|
@@ -401,6 +401,15 @@ function numericLeaf(v) {
|
|
|
401
401
|
function stringLeaf(v) {
|
|
402
402
|
return true === v?.isScalar && 'string' === typeof v.peg && v.isString;
|
|
403
403
|
}
|
|
404
|
+
// The VALUE-admission widening of stringLeaf: a path value is a string
|
|
405
|
+
// with more structure (path <: string, ADR-016), so the string-domain
|
|
406
|
+
// constraints admit one -- `refer() & re("auth$")` must still check a
|
|
407
|
+
// link whose value is now a path. The ARGUMENT sites keep the strict
|
|
408
|
+
// test: a pattern, a bound or an exclusion is spelled with a plain
|
|
409
|
+
// string, never a path.
|
|
410
|
+
function stringishLeaf(v) {
|
|
411
|
+
return stringLeaf(v) || (true === v?.isScalar && true === v.isPath);
|
|
412
|
+
}
|
|
404
413
|
// Scalar identity: leaf AND value, the lattice's own rule (1 and 1.0
|
|
405
414
|
// are different scalars). Exact numeric comparison decides the value
|
|
406
415
|
// half for numeric leaves.
|
|
@@ -408,6 +417,12 @@ function sameScalar(a, b) {
|
|
|
408
417
|
if (numericLeaf(a) && numericLeaf(b)) {
|
|
409
418
|
return (0, numcmp_1.towerRank)(a) === (0, numcmp_1.towerRank)(b) && 0 === (0, numcmp_1.cmpNumeric)(a, b);
|
|
410
419
|
}
|
|
420
|
+
if (true === a?.isPath || true === b?.isPath) {
|
|
421
|
+
// Path identity is kind AND spelling (ADR-016): `neq(path($.x))`
|
|
422
|
+
// excludes exactly that address, and never a plain string that
|
|
423
|
+
// happens to spell it.
|
|
424
|
+
return true === a?.isPath && true === b?.isPath && a.peg === b.peg;
|
|
425
|
+
}
|
|
411
426
|
if (stringLeaf(a) && stringLeaf(b)) {
|
|
412
427
|
return a.peg === b.peg;
|
|
413
428
|
}
|
|
@@ -567,7 +582,7 @@ class ConstraintVal extends FeatureVal_1.FeatureVal {
|
|
|
567
582
|
}
|
|
568
583
|
let domain = undefined;
|
|
569
584
|
for (const a of args) {
|
|
570
|
-
const d = numericLeaf(a) ? 'number' :
|
|
585
|
+
const d = numericLeaf(a) ? 'number' : stringishLeaf(a) ? 'string' : undefined;
|
|
571
586
|
if (null == d || (null != domain && d !== domain)) {
|
|
572
587
|
return bad('invalid-arg');
|
|
573
588
|
}
|
|
@@ -646,7 +661,7 @@ class ConstraintVal extends FeatureVal_1.FeatureVal {
|
|
|
646
661
|
}
|
|
647
662
|
return;
|
|
648
663
|
}
|
|
649
|
-
const domain = numericLeaf(a) ? 'number' :
|
|
664
|
+
const domain = numericLeaf(a) ? 'number' : stringishLeaf(a) ? 'string' : undefined;
|
|
650
665
|
if (null == domain) {
|
|
651
666
|
return bad('invalid-arg');
|
|
652
667
|
}
|
|
@@ -665,7 +680,20 @@ class ConstraintVal extends FeatureVal_1.FeatureVal {
|
|
|
665
680
|
// Every branch of the ladder assigns, so no initialiser: a
|
|
666
681
|
// residual is stable and the ladder is total.
|
|
667
682
|
let out;
|
|
668
|
-
|
|
683
|
+
// A rel residual or a graph atom HOLDS constraints for the value
|
|
684
|
+
// they stand for (RELATIONS P1/P2): hand the drive over before
|
|
685
|
+
// any settling, exactly as a container does, so `rel(t) & re(x)`
|
|
686
|
+
// reads the same in either order. Reached through the INCLUDE
|
|
687
|
+
// flow (a loaded schema's conjunct re-drives with the constraint
|
|
688
|
+
// on the left) -- inline documents route rel/atom peers through
|
|
689
|
+
// unite's b-drives first, which is why use-cases/12-relations
|
|
690
|
+
// refused without this arm while every inline row stayed green;
|
|
691
|
+
// pinned by constraint-hands-drive-to-rel-and-atom.
|
|
692
|
+
if (true === peer?.isRel
|
|
693
|
+
|| true === peer?.isGraphAtom) {
|
|
694
|
+
out = peer.unify(this, ctx);
|
|
695
|
+
}
|
|
696
|
+
else if (null != this.pending) {
|
|
669
697
|
out = this.settle(peer, ctx);
|
|
670
698
|
}
|
|
671
699
|
else if (null != this.invalid) {
|
|
@@ -776,7 +804,7 @@ class ConstraintVal extends FeatureVal_1.FeatureVal {
|
|
|
776
804
|
// Only a string among the scalars has a length, and it is counted
|
|
777
805
|
// in CODE POINTS -- not UTF-16 units (this host's native count)
|
|
778
806
|
// and not bytes (Go's). Iterating a string yields code points.
|
|
779
|
-
if (!
|
|
807
|
+
if (!stringishLeaf(peer)) {
|
|
780
808
|
return this.fail(ctx, peer);
|
|
781
809
|
}
|
|
782
810
|
if (!stateAdmits(this.count, countVal([...peer.peg].length))) {
|
|
@@ -1426,7 +1454,7 @@ function constraintAdmitsScalar(g, scalar) {
|
|
|
1426
1454
|
// the count.
|
|
1427
1455
|
function stateAdmits(s, peer) {
|
|
1428
1456
|
const domainOf = numericLeaf(peer) ? 'number' :
|
|
1429
|
-
|
|
1457
|
+
stringishLeaf(peer) ? 'string' : undefined;
|
|
1430
1458
|
if (null == s.domain) {
|
|
1431
1459
|
// A sizing residual has no domain, and admits any scalar the sizing
|
|
1432
1460
|
// atoms can then rule on. Booleans and null are not among them:
|