aontu 0.12.0 → 0.13.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.
Files changed (77) hide show
  1. package/aontu.ts +12 -2
  2. package/dist/aontu.d.ts +3 -0
  3. package/dist/aontu.js +9 -2
  4. package/dist/aontu.js.map +1 -1
  5. package/dist/aontu.min.js +1 -1
  6. package/dist/lib/err.js +22 -15
  7. package/dist/lib/err.js.map +1 -1
  8. package/dist/lib/lang.js +99 -33
  9. package/dist/lib/lang.js.map +1 -1
  10. package/dist/lib/op/disjunct.js +2 -2
  11. package/dist/lib/op/disjunct.js.map +1 -1
  12. package/dist/lib/op/op.js +1 -1
  13. package/dist/lib/op/op.js.map +1 -1
  14. package/dist/lib/op/unite.js +36 -6
  15. package/dist/lib/op/unite.js.map +1 -1
  16. package/dist/lib/type.d.ts +10 -8
  17. package/dist/lib/type.js +2 -27
  18. package/dist/lib/type.js.map +1 -1
  19. package/dist/lib/unify.d.ts +7 -4
  20. package/dist/lib/unify.js +27 -37
  21. package/dist/lib/unify.js.map +1 -1
  22. package/dist/lib/utility.d.ts +3 -0
  23. package/dist/lib/utility.js +17 -0
  24. package/dist/lib/utility.js.map +1 -0
  25. package/dist/lib/val/ConjunctVal.d.ts +7 -4
  26. package/dist/lib/val/ConjunctVal.js +62 -29
  27. package/dist/lib/val/ConjunctVal.js.map +1 -1
  28. package/dist/lib/val/DisjunctVal.d.ts +5 -2
  29. package/dist/lib/val/DisjunctVal.js +15 -7
  30. package/dist/lib/val/DisjunctVal.js.map +1 -1
  31. package/dist/lib/val/ListVal.d.ts +5 -2
  32. package/dist/lib/val/ListVal.js +39 -19
  33. package/dist/lib/val/ListVal.js.map +1 -1
  34. package/dist/lib/val/MapVal.d.ts +6 -3
  35. package/dist/lib/val/MapVal.js +56 -30
  36. package/dist/lib/val/MapVal.js.map +1 -1
  37. package/dist/lib/val/Nil.d.ts +8 -3
  38. package/dist/lib/val/Nil.js +31 -6
  39. package/dist/lib/val/Nil.js.map +1 -1
  40. package/dist/lib/val/PrefVal.d.ts +6 -2
  41. package/dist/lib/val/PrefVal.js +31 -11
  42. package/dist/lib/val/PrefVal.js.map +1 -1
  43. package/dist/lib/val/RefVal.d.ts +11 -5
  44. package/dist/lib/val/RefVal.js +198 -40
  45. package/dist/lib/val/RefVal.js.map +1 -1
  46. package/dist/lib/val/ValBase.d.ts +10 -9
  47. package/dist/lib/val/ValBase.js +25 -6
  48. package/dist/lib/val/ValBase.js.map +1 -1
  49. package/dist/lib/val/VarVal.d.ts +14 -0
  50. package/dist/lib/val/VarVal.js +79 -0
  51. package/dist/lib/val/VarVal.js.map +1 -0
  52. package/dist/lib/val.d.ts +42 -8
  53. package/dist/lib/val.js +63 -18
  54. package/dist/lib/val.js.map +1 -1
  55. package/lib/err.ts +28 -18
  56. package/lib/lang.ts +115 -41
  57. package/lib/op/disjunct.ts +10 -3
  58. package/lib/op/op.ts +1 -1
  59. package/lib/op/unite.ts +44 -4
  60. package/lib/type.ts +12 -40
  61. package/lib/unify.ts +43 -45
  62. package/lib/utility.ts +23 -0
  63. package/lib/utility.ts~ +80 -0
  64. package/lib/val/ConjunctVal.ts +90 -46
  65. package/lib/val/DisjunctVal.ts +35 -12
  66. package/lib/val/ListVal.ts +57 -22
  67. package/lib/val/MapVal.ts +78 -52
  68. package/lib/val/Nil.ts +55 -12
  69. package/lib/val/PrefVal.ts +56 -17
  70. package/lib/val/RefVal.ts +275 -63
  71. package/lib/val/ValBase.ts +33 -28
  72. package/lib/val/VarVal.ts +155 -0
  73. package/lib/val.ts +115 -25
  74. package/package.json +8 -8
  75. package/dist/lib/common.d.ts +0 -8
  76. package/dist/lib/common.js +0 -3
  77. package/dist/lib/common.js.map +0 -1
@@ -1,78 +1,104 @@
1
1
  "use strict";
2
- /* Copyright (c) 2021 Richard Rodger, MIT License */
2
+ /* Copyright (c) 2021-2023 Richard Rodger, MIT License */
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.MapVal = void 0;
5
5
  const type_1 = require("../type");
6
6
  const op_1 = require("../op/op");
7
+ const val_1 = require("../val");
8
+ const ConjunctVal_1 = require("../val/ConjunctVal");
9
+ const Nil_1 = require("../val/Nil");
7
10
  const ValBase_1 = require("../val/ValBase");
8
- const Nil_1 = require("./Nil");
9
- const ConjunctVal_1 = require("./ConjunctVal");
10
11
  class MapVal extends ValBase_1.ValBase {
11
- constructor(peg, ctx) {
12
- super(peg, ctx);
12
+ constructor(spec, ctx) {
13
+ super(spec, ctx);
13
14
  this.spread = {
14
15
  cj: undefined,
15
16
  };
17
+ if (null == this.peg) {
18
+ throw new Error('MapVal spec.peg undefined');
19
+ }
16
20
  let spread = this.peg[MapVal.SPREAD];
17
21
  delete this.peg[MapVal.SPREAD];
22
+ // console.log('MC', this.id, peg, spread)
18
23
  if (spread) {
19
24
  if ('&' === spread.o) {
20
- // TODO: handle existing spread!
21
- this.spread.cj =
22
- new ConjunctVal_1.ConjunctVal(Array.isArray(spread.v) ? spread.v : [spread.v], ctx);
25
+ let tmv = Array.isArray(spread.v) ? spread.v : [spread.v];
26
+ this.spread.cj = new ConjunctVal_1.ConjunctVal({ peg: tmv }, ctx);
23
27
  }
24
28
  }
25
29
  }
26
30
  // NOTE: order of keys is not preserved!
27
31
  // not possible in any case - consider {a,b} unify {b,a}
28
32
  unify(peer, ctx) {
29
- // if (null == ctx) {
30
- // console.trace()
31
- // }
33
+ // let mark = Math.random()
32
34
  let done = true;
33
- let out = type_1.TOP === peer ? this : new MapVal({}, ctx);
35
+ let out = val_1.TOP === peer ? this : new MapVal({ peg: {} }, ctx);
34
36
  out.spread.cj = this.spread.cj;
35
37
  if (peer instanceof MapVal) {
36
- out.spread.cj = null == out.spread.cj ? peer.spread.cj : (null == peer.spread.cj ? out.spread.cj : (out.spread.cj = new ConjunctVal_1.ConjunctVal([out.spread.cj, peer.spread.cj], ctx)));
38
+ out.spread.cj = null == out.spread.cj ? peer.spread.cj : (null == peer.spread.cj ? out.spread.cj : (out.spread.cj =
39
+ new ConjunctVal_1.ConjunctVal({ peg: [out.spread.cj, peer.spread.cj] }, ctx)));
37
40
  }
38
41
  out.done = this.done + 1;
39
- if (this.spread.cj) {
40
- out.spread.cj =
41
- type_1.DONE !== this.spread.cj.done ? (0, op_1.unite)(ctx, this.spread.cj) :
42
- this.spread.cj;
43
- done = (done && type_1.DONE === out.spread.cj.done);
44
- }
45
- let spread_cj = out.spread.cj || type_1.TOP;
46
- // Always unify children first
42
+ let spread_cj = out.spread.cj || val_1.TOP;
43
+ // Always unify own children first
47
44
  for (let key in this.peg) {
48
- // console.log('MAP ukA', key, this.peg[key].canon)
49
- out.peg[key] =
50
- (0, op_1.unite)(ctx.descend(key), this.peg[key], spread_cj);
51
- // console.log('MAP ukB', key, out.peg[key].canon)
45
+ let keyctx = ctx.descend(key);
46
+ let key_spread_cj = spread_cj.clone(null, keyctx);
47
+ // console.log('M0', this.id, mark, Object.keys(this.peg).join('~'),
48
+ // 'p=', this.path.join('.'),
49
+ // 'k=', key, peer.top || peer.constructor.name,
50
+ // 'pp=', this.peg[key].path.join('.'),
51
+ // this.peg[key].canon,
52
+ // 'sp=', key_spread_cj.path.join('.'),
53
+ // key_spread_cj.canon)
54
+ // if (1000000000 === this.id) {
55
+ // console.dir(key_spread_cj, { depth: null })
56
+ // }
57
+ out.peg[key] = (0, op_1.unite)(keyctx, this.peg[key], key_spread_cj, 'map-own');
52
58
  done = (done && type_1.DONE === out.peg[key].done);
53
59
  }
54
60
  if (peer instanceof MapVal) {
55
- let upeer = (0, op_1.unite)(ctx, peer);
61
+ let upeer = (0, op_1.unite)(ctx, peer, undefined, 'map-peer-map');
56
62
  for (let peerkey in upeer.peg) {
63
+ // console.log('M1', this.id, mark, Object.keys(this.peg).join('~'),
64
+ // 'pk=', peerkey)
57
65
  let peerchild = upeer.peg[peerkey];
58
66
  let child = out.peg[peerkey];
59
67
  let oval = out.peg[peerkey] =
60
68
  undefined === child ? peerchild :
61
69
  child instanceof Nil_1.Nil ? child :
62
70
  peerchild instanceof Nil_1.Nil ? peerchild :
63
- (0, op_1.unite)(ctx.descend(peerkey), child, peerchild);
71
+ (0, op_1.unite)(ctx.descend(peerkey), child, peerchild, 'map-peer');
64
72
  if (this.spread.cj) {
65
- out.peg[peerkey] = (0, op_1.unite)(ctx, out.peg[peerkey], spread_cj);
73
+ let key_ctx = ctx.descend(peerkey);
74
+ let key_spread_cj = spread_cj.clone(null, key_ctx);
75
+ out.peg[peerkey] =
76
+ new ConjunctVal_1.ConjunctVal({ peg: [out.peg[peerkey], key_spread_cj] }, key_ctx);
77
+ done = false;
78
+ }
79
+ else {
80
+ done = (done && type_1.DONE === oval.done);
66
81
  }
67
- done = (done && type_1.DONE === oval.done);
68
82
  }
69
83
  }
70
- else if (type_1.TOP !== peer) {
84
+ else if (val_1.TOP !== peer) {
71
85
  return Nil_1.Nil.make(ctx, 'map', this, peer);
72
86
  }
73
87
  out.done = done ? type_1.DONE : out.done;
74
88
  return out;
75
89
  }
90
+ clone(spec, ctx) {
91
+ let out = super.clone(spec, ctx);
92
+ out.peg = {};
93
+ for (let entry of Object.entries(this.peg)) {
94
+ out.peg[entry[0]] =
95
+ entry[1] instanceof ValBase_1.ValBase ? entry[1].clone(null, ctx) : entry[1];
96
+ }
97
+ if (this.spread.cj) {
98
+ out.spread.cj = this.spread.cj.clone(null, ctx);
99
+ }
100
+ return out;
101
+ }
76
102
  get canon() {
77
103
  let keys = Object.keys(this.peg);
78
104
  return '{' +
@@ -1 +1 @@
1
- {"version":3,"file":"MapVal.js","sourceRoot":"","sources":["../../../lib/val/MapVal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MapVal.js","sourceRoot":"","sources":["../../../lib/val/MapVal.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Val } from '../type';
1
+ import type { Val, ValSpec } from '../type';
2
2
  import { Context } from '../unify';
3
3
  import { ValBase } from '../val/ValBase';
4
4
  declare class Nil extends ValBase {
@@ -8,9 +8,14 @@ declare class Nil extends ValBase {
8
8
  secondary?: Val;
9
9
  msg: string;
10
10
  static make: (ctx?: Context, why?: any, av?: Val, bv?: Val) => Nil;
11
- constructor(why?: any, ctx?: Context);
11
+ constructor(spec?: {
12
+ why?: string;
13
+ msg?: string;
14
+ err?: Nil | Nil[] | Error | Error[];
15
+ } | string, ctx?: Context);
12
16
  unify(_peer: Val, _ctx: Context): this;
17
+ clone(spec?: ValSpec, ctx?: Context): Val;
13
18
  get canon(): string;
14
- gen(_ctx?: Context): undefined;
19
+ gen(ctx?: Context): undefined;
15
20
  }
16
21
  export { Nil, };
@@ -1,33 +1,58 @@
1
1
  "use strict";
2
- /* Copyright (c) 2021-2022 Richard Rodger, MIT License */
2
+ /* Copyright (c) 2021-2023 Richard Rodger, MIT License */
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.Nil = void 0;
5
5
  const type_1 = require("../type");
6
+ const err_1 = require("../err");
6
7
  const ValBase_1 = require("../val/ValBase");
7
8
  class Nil extends ValBase_1.ValBase {
8
- constructor(why, ctx) {
9
- super(null, ctx);
9
+ constructor(spec, ctx) {
10
+ super(spec && 'string' !== typeof spec ? spec : {}, ctx);
10
11
  this.nil = true;
11
12
  this.msg = '';
12
- this.why = why;
13
+ if (spec && 'object' === typeof spec) {
14
+ this.why = spec === null || spec === void 0 ? void 0 : spec.why;
15
+ this.msg = 'string' === typeof (spec === null || spec === void 0 ? void 0 : spec.msg) ? spec.msg : this.msg;
16
+ this.err = spec ? (Array.isArray(spec.err) ? [...spec.err] : [spec.err]) : [];
17
+ }
13
18
  // Nil is always DONE, by definition.
14
19
  this.done = type_1.DONE;
15
20
  }
16
21
  unify(_peer, _ctx) {
17
22
  return this;
18
23
  }
24
+ clone(spec, ctx) {
25
+ let out = super.clone(spec, ctx);
26
+ out.why = this.why;
27
+ // Should these clone?
28
+ // out.primary = this.primary?.clone()
29
+ // out.secondary = this.secondary?.clone()
30
+ out.primary = this.primary;
31
+ out.secondary = this.secondary;
32
+ out.msg = this.msg;
33
+ return out;
34
+ }
19
35
  get canon() {
20
36
  return 'nil';
21
37
  }
22
- gen(_ctx) {
38
+ gen(ctx) {
39
+ // Unresolved nil cannot be generated, so always an error.
40
+ (0, err_1.descErr)(this);
41
+ if (ctx) {
42
+ ctx.err.push(this);
43
+ }
44
+ else {
45
+ throw new Error(this.msg);
46
+ }
23
47
  return undefined;
24
48
  }
25
49
  }
26
50
  exports.Nil = Nil;
27
51
  // TODO: include Val generating nil, thus capture type
28
52
  // A Nil is an error - should not happen - unify failed
53
+ // refactor ,make(spec,ctx)
29
54
  Nil.make = (ctx, why, av, bv) => {
30
- let nil = new Nil(why, ctx);
55
+ let nil = new Nil({ why }, ctx);
31
56
  // TODO: this should be done lazily, for multiple terms
32
57
  // Terms later in same file are considered the primary error location.
33
58
  if (null != av) {
@@ -1 +1 @@
1
- {"version":3,"file":"Nil.js","sourceRoot":"","sources":["../../../lib/val/Nil.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAOzD,kCAEgB;AAOhB,4CAEuB;AAMvB,MAAM,GAAI,SAAQ,iBAAO;IAiDvB,YAAY,GAAS,EAAE,GAAa;QAClC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAjDlB,QAAG,GAAG,IAAI,CAAA;QAIV,QAAG,GAAW,EAAE,CAAA;QA8Cd,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QAEd,qCAAqC;QACrC,IAAI,CAAC,IAAI,GAAG,WAAI,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,KAAU,EAAE,IAAa;QAC7B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,KAAK;QACP,OAAO,KAAK,CAAA;IACd,CAAC;IAED,GAAG,CAAC,IAAc;QAChB,OAAO,SAAS,CAAA;IAClB,CAAC;;AAID,kBAAG;AAhEH,sDAAsD;AAEtD,uDAAuD;AAChD,QAAI,GAAG,CAAC,GAAa,EAAE,GAAS,EAAE,EAAQ,EAAE,EAAQ,EAAE,EAAE;IAC7D,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAE3B,uDAAuD;IAEvD,sEAAsE;IACtE,IAAI,IAAI,IAAI,EAAE,EAAE;QACd,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAA;QAChB,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAA;QAChB,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAA;QAEhB,GAAG,CAAC,OAAO,GAAG,EAAE,CAAA;QAEhB,IAAI,IAAI,IAAI,EAAE,EAAE;YACd,GAAG,CAAC,SAAS,GAAG,EAAE,CAAA;YAElB,IAAI,WAAW,GACb,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CACtB,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;gBAClB,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CACzC,CAAA;YAEH,IAAI,WAAW,EAAE;gBACf,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAA;gBAChB,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAA;gBAChB,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAA;gBAChB,GAAG,CAAC,OAAO,GAAG,EAAE,CAAA;gBAChB,GAAG,CAAC,SAAS,GAAG,EAAE,CAAA;aACnB;SACF;KACF;IAED,IAAI,GAAG,EAAE;QACP,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KAClB;IAED,OAAO,GAAG,CAAA;AACZ,CAAC,AArCU,CAqCV"}
1
+ {"version":3,"file":"Nil.js","sourceRoot":"","sources":["../../../lib/val/Nil.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,15 @@
1
- import type { Val } from '../type';
1
+ import type { Val, ValSpec } from '../type';
2
2
  import { Context } from '../unify';
3
3
  import { ValBase } from '../val/ValBase';
4
4
  declare class PrefVal extends ValBase {
5
5
  pref: Val;
6
- constructor(peg: any, pref?: any, ctx?: Context);
6
+ constructor(spec: {
7
+ peg: any;
8
+ pref?: any;
9
+ }, ctx?: Context);
7
10
  unify(peer: Val, ctx: Context): Val;
8
11
  same(peer: Val): boolean;
12
+ clone(spec?: ValSpec, ctx?: Context): Val;
9
13
  get canon(): any;
10
14
  gen(ctx?: Context): any;
11
15
  }
@@ -1,15 +1,16 @@
1
1
  "use strict";
2
- /* Copyright (c) 2021-2022 Richard Rodger, MIT License */
2
+ /* Copyright (c) 2021-2023 Richard Rodger, MIT License */
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.PrefVal = void 0;
5
5
  const type_1 = require("../type");
6
+ const err_1 = require("../err");
6
7
  const op_1 = require("../op/op");
7
8
  const Nil_1 = require("../val/Nil");
8
9
  const ValBase_1 = require("../val/ValBase");
9
10
  class PrefVal extends ValBase_1.ValBase {
10
- constructor(peg, pref, ctx) {
11
- super(peg, ctx);
12
- this.pref = pref || peg;
11
+ constructor(spec, ctx) {
12
+ super(spec, ctx);
13
+ this.pref = spec.pref || spec.peg;
13
14
  }
14
15
  // PrefVal unify always returns a PrefVal
15
16
  // PrefVals can only be removed by becoming Nil in a Disjunct
@@ -17,12 +18,17 @@ class PrefVal extends ValBase_1.ValBase {
17
18
  let done = true;
18
19
  let out;
19
20
  if (peer instanceof PrefVal) {
20
- out = new PrefVal((0, op_1.unite)(ctx, this.peg, peer.peg, 'Pref000'), (0, op_1.unite)(ctx, this.pref, peer.pref, 'Pref010'), ctx);
21
+ out = new PrefVal({
22
+ peg: (0, op_1.unite)(ctx, this.peg, peer.peg, 'Pref000'),
23
+ pref: (0, op_1.unite)(ctx, this.pref, peer.pref, 'Pref010'),
24
+ }, ctx);
21
25
  }
22
26
  else {
23
- out = new PrefVal(
24
- // TODO: find a better way to drop Nil non-errors
25
- (0, op_1.unite)(ctx === null || ctx === void 0 ? void 0 : ctx.clone({ err: [] }), this.peg, peer, 'Pref020'), (0, op_1.unite)(ctx === null || ctx === void 0 ? void 0 : ctx.clone({ err: [] }), this.pref, peer, 'Pref030'), ctx);
27
+ out = new PrefVal({
28
+ // TODO: find a better way to drop Nil non-errors
29
+ peg: (0, op_1.unite)(ctx === null || ctx === void 0 ? void 0 : ctx.clone({ err: [] }), this.peg, peer, 'Pref020'),
30
+ pref: (0, op_1.unite)(ctx === null || ctx === void 0 ? void 0 : ctx.clone({ err: [] }), this.pref, peer, 'Pref030'),
31
+ }, ctx);
26
32
  }
27
33
  done = done && type_1.DONE === out.peg.done &&
28
34
  (null != out.pref ? type_1.DONE === out.pref.done : true);
@@ -46,14 +52,28 @@ class PrefVal extends ValBase_1.ValBase {
46
52
  (this.pref instanceof ValBase_1.ValBase && this.pref.same(peer.pref)));
47
53
  return pegsame && prefsame;
48
54
  }
55
+ clone(spec, ctx) {
56
+ let out = super.clone(spec, ctx);
57
+ out.pref = this.pref.clone(null, ctx);
58
+ return out;
59
+ }
49
60
  get canon() {
50
61
  return this.pref instanceof Nil_1.Nil ? this.peg.canon : '*' + this.pref.canon;
51
62
  }
52
63
  gen(ctx) {
53
64
  let val = !(this.pref instanceof Nil_1.Nil) ? this.pref :
54
- !(this.peg instanceof Nil_1.Nil) ? this.peg :
55
- undefined;
56
- return undefined === val ? undefined : val.gen(ctx);
65
+ (!(this.peg instanceof Nil_1.Nil) ? this.peg :
66
+ this.pref);
67
+ if (val instanceof Nil_1.Nil) {
68
+ (0, err_1.descErr)(val);
69
+ if (ctx) {
70
+ ctx.err.push(val);
71
+ }
72
+ else {
73
+ throw new Error(val.msg);
74
+ }
75
+ }
76
+ return val.gen(ctx);
57
77
  }
58
78
  }
59
79
  exports.PrefVal = PrefVal;
@@ -1 +1 @@
1
- {"version":3,"file":"PrefVal.js","sourceRoot":"","sources":["../../../lib/val/PrefVal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PrefVal.js","sourceRoot":"","sources":["../../../lib/val/PrefVal.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,21 @@
1
- import type { Val } from '../type';
1
+ import type { Val, ValSpec } from '../type';
2
2
  import { Context } from '../unify';
3
+ import { StringVal } from '../val';
3
4
  import { ValBase } from '../val/ValBase';
4
5
  declare class RefVal extends ValBase {
5
- parts: string[];
6
6
  absolute: boolean;
7
- sep: string;
8
- constructor(peg: any[] | string, abs?: boolean);
7
+ prefix: boolean;
8
+ constructor(spec: {
9
+ peg: any[];
10
+ absolute?: boolean;
11
+ prefix?: boolean;
12
+ }, ctx?: Context);
9
13
  append(part: any): void;
10
14
  unify(peer: Val, ctx: Context): Val;
15
+ find(ctx: Context): Val | StringVal | undefined;
11
16
  same(peer: Val): boolean;
12
- get canon(): any;
17
+ clone(spec?: ValSpec, ctx?: Context): Val;
18
+ get canon(): string;
13
19
  gen(ctx?: Context): undefined;
14
20
  }
15
21
  export { RefVal, };