aontu 0.50.0 → 0.51.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.
Files changed (102) hide show
  1. package/dist/aontu.d.ts +4 -2
  2. package/dist/aontu.js +18 -2
  3. package/dist/aontu.js.map +1 -1
  4. package/dist/cli.js +33 -7
  5. package/dist/cli.js.map +1 -1
  6. package/dist/exactjson.d.ts +37 -0
  7. package/dist/exactjson.js +228 -0
  8. package/dist/exactjson.js.map +1 -0
  9. package/dist/hints.js +61 -4
  10. package/dist/hints.js.map +1 -1
  11. package/dist/keyorder.d.ts +9 -0
  12. package/dist/keyorder.js +65 -0
  13. package/dist/keyorder.js.map +1 -0
  14. package/dist/lang.js +200 -4
  15. package/dist/lang.js.map +1 -1
  16. package/dist/lsp.js +12 -2
  17. package/dist/lsp.js.map +1 -1
  18. package/dist/tsconfig.tsbuildinfo +1 -1
  19. package/dist/val/BagVal.js +8 -5
  20. package/dist/val/BagVal.js.map +1 -1
  21. package/dist/val/BigDecimalVal.d.ts +13 -0
  22. package/dist/val/BigDecimalVal.js +80 -0
  23. package/dist/val/BigDecimalVal.js.map +1 -0
  24. package/dist/val/BigIntegerVal.d.ts +11 -0
  25. package/dist/val/BigIntegerVal.js +75 -0
  26. package/dist/val/BigIntegerVal.js.map +1 -0
  27. package/dist/val/Decimal.d.ts +32 -0
  28. package/dist/val/Decimal.js +318 -0
  29. package/dist/val/Decimal.js.map +1 -0
  30. package/dist/val/IntegerVal.d.ts +2 -0
  31. package/dist/val/IntegerVal.js +75 -3
  32. package/dist/val/IntegerVal.js.map +1 -1
  33. package/dist/val/KeyFuncVal.d.ts +1 -1
  34. package/dist/val/KeyFuncVal.js +33 -3
  35. package/dist/val/KeyFuncVal.js.map +1 -1
  36. package/dist/val/LowerFuncVal.js +20 -3
  37. package/dist/val/LowerFuncVal.js.map +1 -1
  38. package/dist/val/MapVal.js +6 -4
  39. package/dist/val/MapVal.js.map +1 -1
  40. package/dist/val/MoveFuncVal.js +25 -8
  41. package/dist/val/MoveFuncVal.js.map +1 -1
  42. package/dist/val/NumberVal.d.ts +1 -0
  43. package/dist/val/NumberVal.js +23 -2
  44. package/dist/val/NumberVal.js.map +1 -1
  45. package/dist/val/PathFuncVal.js +9 -1
  46. package/dist/val/PathFuncVal.js.map +1 -1
  47. package/dist/val/PlusOpVal.d.ts +3 -1
  48. package/dist/val/PlusOpVal.js +140 -29
  49. package/dist/val/PlusOpVal.js.map +1 -1
  50. package/dist/val/PrefVal.d.ts +2 -0
  51. package/dist/val/PrefVal.js +40 -4
  52. package/dist/val/PrefVal.js.map +1 -1
  53. package/dist/val/RefVal.js +57 -2
  54. package/dist/val/RefVal.js.map +1 -1
  55. package/dist/val/ScalarKindVal.d.ts +12 -2
  56. package/dist/val/ScalarKindVal.js +100 -11
  57. package/dist/val/ScalarKindVal.js.map +1 -1
  58. package/dist/val/ScalarVal.d.ts +1 -0
  59. package/dist/val/ScalarVal.js +16 -1
  60. package/dist/val/ScalarVal.js.map +1 -1
  61. package/dist/val/SuperFuncVal.d.ts +1 -1
  62. package/dist/val/SuperFuncVal.js +14 -1
  63. package/dist/val/SuperFuncVal.js.map +1 -1
  64. package/dist/val/UpperFuncVal.js +20 -3
  65. package/dist/val/UpperFuncVal.js.map +1 -1
  66. package/dist/val/VarVal.js +7 -1
  67. package/dist/val/VarVal.js.map +1 -1
  68. package/dist/val/numkind.d.ts +6 -0
  69. package/dist/val/numkind.js +224 -0
  70. package/dist/val/numkind.js.map +1 -0
  71. package/dist/val/valutil.d.ts +1 -0
  72. package/dist/val/valutil.js +35 -0
  73. package/dist/val/valutil.js.map +1 -1
  74. package/package.json +7 -7
  75. package/src/aontu.ts +23 -2
  76. package/src/cli.ts +36 -8
  77. package/src/exactjson.ts +254 -0
  78. package/src/hints.ts +73 -4
  79. package/src/keyorder.ts +73 -0
  80. package/src/lang.ts +229 -5
  81. package/src/lsp.ts +10 -2
  82. package/src/val/BagVal.ts +8 -5
  83. package/src/val/BigDecimalVal.ts +117 -0
  84. package/src/val/BigIntegerVal.ts +110 -0
  85. package/src/val/Decimal.ts +385 -0
  86. package/src/val/IntegerVal.ts +79 -3
  87. package/src/val/KeyFuncVal.ts +35 -3
  88. package/src/val/LowerFuncVal.ts +21 -4
  89. package/src/val/MapVal.ts +6 -4
  90. package/src/val/MoveFuncVal.ts +26 -9
  91. package/src/val/NumberVal.ts +25 -2
  92. package/src/val/PathFuncVal.ts +9 -1
  93. package/src/val/PlusOpVal.ts +168 -32
  94. package/src/val/PrefVal.ts +66 -5
  95. package/src/val/RefVal.ts +61 -2
  96. package/src/val/ScalarKindVal.ts +115 -10
  97. package/src/val/ScalarVal.ts +18 -1
  98. package/src/val/SuperFuncVal.ts +14 -1
  99. package/src/val/UpperFuncVal.ts +21 -4
  100. package/src/val/VarVal.ts +7 -1
  101. package/src/val/numkind.ts +256 -0
  102. package/src/val/valutil.ts +36 -0
@@ -1 +1 @@
1
- {"version":"7.0.2","root":["../src/aontu.ts","../src/cli.ts","../src/ctx.ts","../src/err.ts","../src/hints.ts","../src/lang.ts","../src/lsp-server.ts","../src/lsp.ts","../src/site.ts","../src/type.ts","../src/unify.ts","../src/utility.ts","../src/val/BagVal.ts","../src/val/BooleanVal.ts","../src/val/CloseFuncVal.ts","../src/val/ConjunctVal.ts","../src/val/CopyFuncVal.ts","../src/val/DisjunctVal.ts","../src/val/ExpectVal.ts","../src/val/FeatureVal.ts","../src/val/FuncBaseVal.ts","../src/val/HideFuncVal.ts","../src/val/IntegerVal.ts","../src/val/JunctionVal.ts","../src/val/KeyFuncVal.ts","../src/val/ListVal.ts","../src/val/LowerFuncVal.ts","../src/val/MapVal.ts","../src/val/MoveFuncVal.ts","../src/val/NilVal.ts","../src/val/NullVal.ts","../src/val/NumberVal.ts","../src/val/OpBaseVal.ts","../src/val/OpenFuncVal.ts","../src/val/PathFuncVal.ts","../src/val/PlusOpVal.ts","../src/val/PrefFuncVal.ts","../src/val/PrefVal.ts","../src/val/RefVal.ts","../src/val/ScalarKindVal.ts","../src/val/ScalarVal.ts","../src/val/StringVal.ts","../src/val/SuperFuncVal.ts","../src/val/TopVal.ts","../src/val/TypeFuncVal.ts","../src/val/UpperFuncVal.ts","../src/val/Val.ts","../src/val/VarVal.ts","../src/val/top.ts","../src/val/valutil.ts"],"packageJsons":["../node_modules/@tabnas/debug/package.json","../node_modules/@tabnas/directive/package.json","../node_modules/@tabnas/expr/package.json","../node_modules/@tabnas/json/package.json","../node_modules/@tabnas/jsonic/package.json","../node_modules/@tabnas/multisource/package.json","../node_modules/@tabnas/parser/package.json","../node_modules/@tabnas/path/package.json","../node_modules/@types/node/package.json","../node_modules/undici-types/package.json","../package.json"],"missingPackageJsons":["../node_modules/@tabnas/debug/dist/package.json","../node_modules/@tabnas/expr/dist/package.json","../node_modules/@tabnas/jsonic/dist/package.json","../node_modules/@tabnas/multisource/dist/package.json","../node_modules/@tabnas/multisource/dist/resolver/package.json","../node_modules/@tabnas/multisource/resolver/file/package.json","../node_modules/@tabnas/multisource/resolver/mem/package.json","../node_modules/@tabnas/multisource/resolver/pkg/package.json","../node_modules/@tabnas/parser/dist/package.json","../node_modules/@tabnas/path/dist/package.json","../node_modules/@types/assert/package.json","../node_modules/@types/assert/strict/package.json","../node_modules/@types/async_hooks/package.json","../node_modules/@types/buffer/package.json","../node_modules/@types/child_process/package.json","../node_modules/@types/cluster/package.json","../node_modules/@types/console/package.json","../node_modules/@types/constants/package.json","../node_modules/@types/crypto/package.json","../node_modules/@types/dgram/package.json","../node_modules/@types/diagnostics_channel/package.json","../node_modules/@types/dns/package.json","../node_modules/@types/dns/promises/package.json","../node_modules/@types/domain/package.json","../node_modules/@types/events/package.json","../node_modules/@types/fs/package.json","../node_modules/@types/fs/promises/package.json","../node_modules/@types/http/package.json","../node_modules/@types/http2/package.json","../node_modules/@types/https/package.json","../node_modules/@types/inspector/package.json","../node_modules/@types/inspector/promises/package.json","../node_modules/@types/module/package.json","../node_modules/@types/net/package.json","../node_modules/@types/node/assert/package.json","../node_modules/@types/node/dns/package.json","../node_modules/@types/node/fs/package.json","../node_modules/@types/node/inspector/package.json","../node_modules/@types/node/path/package.json","../node_modules/@types/node/readline/package.json","../node_modules/@types/node/stream/package.json","../node_modules/@types/node/test/package.json","../node_modules/@types/node/timers/package.json","../node_modules/@types/node/util/package.json","../node_modules/@types/node/web-globals/package.json","../node_modules/@types/node/zlib/package.json","../node_modules/@types/os/package.json","../node_modules/@types/path/package.json","../node_modules/@types/path/posix/package.json","../node_modules/@types/path/win32/package.json","../node_modules/@types/perf_hooks/package.json","../node_modules/@types/process/package.json","../node_modules/@types/punycode/package.json","../node_modules/@types/querystring/package.json","../node_modules/@types/readline/package.json","../node_modules/@types/readline/promises/package.json","../node_modules/@types/repl/package.json","../node_modules/@types/stream/consumers/package.json","../node_modules/@types/stream/iter/package.json","../node_modules/@types/stream/package.json","../node_modules/@types/stream/promises/package.json","../node_modules/@types/stream/web/package.json","../node_modules/@types/string_decoder/package.json","../node_modules/@types/timers/package.json","../node_modules/@types/timers/promises/package.json","../node_modules/@types/tls/package.json","../node_modules/@types/trace_events/package.json","../node_modules/@types/tty/package.json","../node_modules/@types/url/package.json","../node_modules/@types/util/package.json","../node_modules/@types/util/types/package.json","../node_modules/@types/v8/package.json","../node_modules/@types/vm/package.json","../node_modules/@types/wasi/package.json","../node_modules/@types/worker_threads/package.json","../node_modules/@types/zlib/package.json","../node_modules/assert/package.json","../node_modules/assert/strict/package.json","../node_modules/async_hooks/package.json","../node_modules/buffer/package.json","../node_modules/child_process/package.json","../node_modules/cluster/package.json","../node_modules/console/package.json","../node_modules/constants/package.json","../node_modules/crypto/package.json","../node_modules/dgram/package.json","../node_modules/diagnostics_channel/package.json","../node_modules/dns/package.json","../node_modules/dns/promises/package.json","../node_modules/domain/package.json","../node_modules/events/package.json","../node_modules/fs/package.json","../node_modules/fs/promises/package.json","../node_modules/http/package.json","../node_modules/http2/package.json","../node_modules/https/package.json","../node_modules/inspector/package.json","../node_modules/inspector/promises/package.json","../node_modules/module/package.json","../node_modules/net/package.json","../node_modules/os/package.json","../node_modules/path/package.json","../node_modules/path/posix/package.json","../node_modules/path/win32/package.json","../node_modules/perf_hooks/package.json","../node_modules/process/package.json","../node_modules/punycode/package.json","../node_modules/querystring/package.json","../node_modules/readline/package.json","../node_modules/readline/promises/package.json","../node_modules/repl/package.json","../node_modules/stream/consumers/package.json","../node_modules/stream/iter/package.json","../node_modules/stream/package.json","../node_modules/stream/promises/package.json","../node_modules/stream/web/package.json","../node_modules/string_decoder/package.json","../node_modules/timers/package.json","../node_modules/timers/promises/package.json","../node_modules/tls/package.json","../node_modules/trace_events/package.json","../node_modules/tty/package.json","../node_modules/url/package.json","../node_modules/util/package.json","../node_modules/util/types/package.json","../node_modules/v8/package.json","../node_modules/vm/package.json","../node_modules/wasi/package.json","../node_modules/worker_threads/package.json","../node_modules/zlib/package.json"]}
1
+ {"version":"7.0.2","root":["../src/aontu.ts","../src/cli.ts","../src/ctx.ts","../src/err.ts","../src/exactjson.ts","../src/hints.ts","../src/keyorder.ts","../src/lang.ts","../src/lsp-server.ts","../src/lsp.ts","../src/site.ts","../src/type.ts","../src/unify.ts","../src/utility.ts","../src/val/BagVal.ts","../src/val/BigDecimalVal.ts","../src/val/BigIntegerVal.ts","../src/val/BooleanVal.ts","../src/val/CloseFuncVal.ts","../src/val/ConjunctVal.ts","../src/val/CopyFuncVal.ts","../src/val/Decimal.ts","../src/val/DisjunctVal.ts","../src/val/ExpectVal.ts","../src/val/FeatureVal.ts","../src/val/FuncBaseVal.ts","../src/val/HideFuncVal.ts","../src/val/IntegerVal.ts","../src/val/JunctionVal.ts","../src/val/KeyFuncVal.ts","../src/val/ListVal.ts","../src/val/LowerFuncVal.ts","../src/val/MapVal.ts","../src/val/MoveFuncVal.ts","../src/val/NilVal.ts","../src/val/NullVal.ts","../src/val/NumberVal.ts","../src/val/OpBaseVal.ts","../src/val/OpenFuncVal.ts","../src/val/PathFuncVal.ts","../src/val/PlusOpVal.ts","../src/val/PrefFuncVal.ts","../src/val/PrefVal.ts","../src/val/RefVal.ts","../src/val/ScalarKindVal.ts","../src/val/ScalarVal.ts","../src/val/StringVal.ts","../src/val/SuperFuncVal.ts","../src/val/TopVal.ts","../src/val/TypeFuncVal.ts","../src/val/UpperFuncVal.ts","../src/val/Val.ts","../src/val/VarVal.ts","../src/val/numkind.ts","../src/val/top.ts","../src/val/valutil.ts"],"packageJsons":["../node_modules/@tabnas/debug/package.json","../node_modules/@tabnas/directive/package.json","../node_modules/@tabnas/expr/package.json","../node_modules/@tabnas/json/package.json","../node_modules/@tabnas/jsonic/package.json","../node_modules/@tabnas/multisource/package.json","../node_modules/@tabnas/parser/package.json","../node_modules/@tabnas/path/package.json","../node_modules/@types/node/package.json","../node_modules/undici-types/package.json","../package.json"],"missingPackageJsons":["../node_modules/@tabnas/debug/dist/package.json","../node_modules/@tabnas/expr/dist/package.json","../node_modules/@tabnas/jsonic/dist/package.json","../node_modules/@tabnas/multisource/dist/package.json","../node_modules/@tabnas/multisource/dist/resolver/package.json","../node_modules/@tabnas/multisource/resolver/file/package.json","../node_modules/@tabnas/multisource/resolver/mem/package.json","../node_modules/@tabnas/multisource/resolver/pkg/package.json","../node_modules/@tabnas/parser/dist/package.json","../node_modules/@tabnas/path/dist/package.json","../node_modules/@types/assert/package.json","../node_modules/@types/assert/strict/package.json","../node_modules/@types/async_hooks/package.json","../node_modules/@types/buffer/package.json","../node_modules/@types/child_process/package.json","../node_modules/@types/cluster/package.json","../node_modules/@types/console/package.json","../node_modules/@types/constants/package.json","../node_modules/@types/crypto/package.json","../node_modules/@types/dgram/package.json","../node_modules/@types/diagnostics_channel/package.json","../node_modules/@types/dns/package.json","../node_modules/@types/dns/promises/package.json","../node_modules/@types/domain/package.json","../node_modules/@types/events/package.json","../node_modules/@types/fs/package.json","../node_modules/@types/fs/promises/package.json","../node_modules/@types/http/package.json","../node_modules/@types/http2/package.json","../node_modules/@types/https/package.json","../node_modules/@types/inspector/package.json","../node_modules/@types/inspector/promises/package.json","../node_modules/@types/module/package.json","../node_modules/@types/net/package.json","../node_modules/@types/node/assert/package.json","../node_modules/@types/node/dns/package.json","../node_modules/@types/node/fs/package.json","../node_modules/@types/node/inspector/package.json","../node_modules/@types/node/path/package.json","../node_modules/@types/node/readline/package.json","../node_modules/@types/node/stream/package.json","../node_modules/@types/node/test/package.json","../node_modules/@types/node/timers/package.json","../node_modules/@types/node/util/package.json","../node_modules/@types/node/web-globals/package.json","../node_modules/@types/node/zlib/package.json","../node_modules/@types/os/package.json","../node_modules/@types/path/package.json","../node_modules/@types/path/posix/package.json","../node_modules/@types/path/win32/package.json","../node_modules/@types/perf_hooks/package.json","../node_modules/@types/process/package.json","../node_modules/@types/punycode/package.json","../node_modules/@types/querystring/package.json","../node_modules/@types/readline/package.json","../node_modules/@types/readline/promises/package.json","../node_modules/@types/repl/package.json","../node_modules/@types/stream/consumers/package.json","../node_modules/@types/stream/iter/package.json","../node_modules/@types/stream/package.json","../node_modules/@types/stream/promises/package.json","../node_modules/@types/stream/web/package.json","../node_modules/@types/string_decoder/package.json","../node_modules/@types/timers/package.json","../node_modules/@types/timers/promises/package.json","../node_modules/@types/tls/package.json","../node_modules/@types/trace_events/package.json","../node_modules/@types/tty/package.json","../node_modules/@types/url/package.json","../node_modules/@types/util/package.json","../node_modules/@types/util/types/package.json","../node_modules/@types/v8/package.json","../node_modules/@types/vm/package.json","../node_modules/@types/wasi/package.json","../node_modules/@types/worker_threads/package.json","../node_modules/@types/zlib/package.json","../node_modules/assert/package.json","../node_modules/assert/strict/package.json","../node_modules/async_hooks/package.json","../node_modules/buffer/package.json","../node_modules/child_process/package.json","../node_modules/cluster/package.json","../node_modules/console/package.json","../node_modules/constants/package.json","../node_modules/crypto/package.json","../node_modules/dgram/package.json","../node_modules/diagnostics_channel/package.json","../node_modules/dns/package.json","../node_modules/dns/promises/package.json","../node_modules/domain/package.json","../node_modules/events/package.json","../node_modules/fs/package.json","../node_modules/fs/promises/package.json","../node_modules/http/package.json","../node_modules/http2/package.json","../node_modules/https/package.json","../node_modules/inspector/package.json","../node_modules/inspector/promises/package.json","../node_modules/module/package.json","../node_modules/net/package.json","../node_modules/os/package.json","../node_modules/path/package.json","../node_modules/path/posix/package.json","../node_modules/path/win32/package.json","../node_modules/perf_hooks/package.json","../node_modules/process/package.json","../node_modules/punycode/package.json","../node_modules/querystring/package.json","../node_modules/readline/package.json","../node_modules/readline/promises/package.json","../node_modules/repl/package.json","../node_modules/stream/consumers/package.json","../node_modules/stream/iter/package.json","../node_modules/stream/package.json","../node_modules/stream/promises/package.json","../node_modules/stream/web/package.json","../node_modules/string_decoder/package.json","../node_modules/timers/package.json","../node_modules/timers/promises/package.json","../node_modules/tls/package.json","../node_modules/trace_events/package.json","../node_modules/tty/package.json","../node_modules/url/package.json","../node_modules/util/package.json","../node_modules/util/types/package.json","../node_modules/v8/package.json","../node_modules/vm/package.json","../node_modules/wasi/package.json","../node_modules/worker_threads/package.json","../node_modules/zlib/package.json"]}
@@ -8,6 +8,7 @@ const Val_1 = require("./Val");
8
8
  const NilVal_1 = require("./NilVal");
9
9
  const FeatureVal_1 = require("./FeatureVal");
10
10
  const ExpectVal_1 = require("./ExpectVal");
11
+ const keyorder_1 = require("../keyorder");
11
12
  class BagVal extends FeatureVal_1.FeatureVal {
12
13
  constructor(spec, ctx) {
13
14
  super(spec, ctx);
@@ -38,15 +39,17 @@ class BagVal extends FeatureVal_1.FeatureVal {
38
39
  if (this.mark.type || this.mark.hide) {
39
40
  return undefined;
40
41
  }
41
- // Maps emit their keys alphabetically so the generated output is
42
- // independent of insertion/unification order (and matches the Go
43
- // port, whose JSON marshaling also sorts map keys). Lists keep their
44
- // numeric index order.
42
+ // Maps emit their keys in CODE POINT order so the generated output
43
+ // is independent of insertion/unification order and matches the Go
44
+ // port. Lists keep their numeric index order.
45
+ //
46
+ // The keys are String()-coerced because a list entry carries a
47
+ // numeric index here; the coercion is a no-op for every map key.
45
48
  let entries = (0, utility_1.items)(this.peg);
46
49
  if (this.isMap) {
47
50
  entries = entries
48
51
  .slice()
49
- .sort((a, b) => (a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0));
52
+ .sort((a, b) => (0, keyorder_1.cmpCodePoint)(String(a[0]), String(b[0])));
50
53
  }
51
54
  for (let item of entries) {
52
55
  const p = item[0];
@@ -1 +1 @@
1
- {"version":3,"file":"BagVal.js","sourceRoot":"","sources":["../../src/val/BagVal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BagVal.js","sourceRoot":"","sources":["../../src/val/BagVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAWzD,wCAEmB;AAEnB,gCAAmC;AACnC,+BAA6B;AAG7B,qCAAiC;AACjC,6CAAyC;AACzC,2CAAuC;AACvC,0CAA0C;AAG1C,MAAe,MAAO,SAAQ,uBAAU;IAWtC,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAdlB,UAAK,GAAG,IAAI,CAAA;QACZ,cAAS,GAAG,IAAI,CAAA;QAEhB,WAAM,GAAY,KAAK,CAAA;QACvB,iBAAY,GAAa,EAAE,CAAA;QAE3B,WAAM,GAAG;YACP,EAAE,EAAG,SAA6B;SACnC,CAAA;IAOD,CAAC;IAED,KAAK,CAAC,GAAiB,EAAE,IAAc;QACrC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAW,CAAA;QAC5C,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QACxB,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,iBAAiB,CAAC,GAAW,EAAE,GAAQ,EAAE,MAAW,EAAE,GAAiB;QACrE,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,OAAO,GAAG,CAAA;QACZ,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,qBAAS,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAA;QAClD,SAAS,CAAC,GAAG,GAAG,GAAG,CAAA;QACnB,SAAS,CAAC,MAAM,GAAG,MAAM,CAAA;QACzB,OAAO,SAAS,CAAA;IAClB,CAAC;IAGD,GAAG,CAAC,GAAiB;QACnB,IAAI,GAAG,GAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAEnC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACrC,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,mEAAmE;QACnE,mEAAmE;QACnE,8CAA8C;QAC9C,EAAE;QACF,+DAA+D;QAC/D,iEAAiE;QACjE,IAAI,OAAO,GAAG,IAAA,eAAK,EAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC7B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,GAAG,OAAO;iBACd,KAAK,EAAE;iBACP,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,IAAA,uBAAY,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACvE,CAAC;QAED,KAAK,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YAErB,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACvC,SAAQ;YACV,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;YAEnD,6DAA6D;YAC7D,iEAAiE;YACjE,+CAA+C;YAC/C,MAAM,GAAG,GAAG,CAAC,CAAM,EAAE,EAAE;gBACrB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;gBACZ,CAAC;qBACI,CAAC;oBACJ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACb,CAAC;YACH,CAAC,CAAA;YAED,gEAAgE;YAChE,IAAI,KAAK,CAAC,UAAU,IAAI,QAAQ,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;gBAElD,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBAE1B,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;oBACvB,SAAQ;gBACV,CAAC;gBAED,GAAG,CAAC,IAAI,CAAC,CAAA;YACX,CAAC;iBAEI,IAAI,KAAK,CAAC,QAAQ;mBAClB,KAAK,CAAC,KAAK;mBACX,KAAK,CAAC,MAAM;mBACZ,KAAK,CAAC,MAAM;mBACZ,KAAK,CAAC,KAAK;mBACX,KAAK,CAAC,UAAU;mBAChB,KAAK,CAAC,KAAK,EACd,CAAC;gBACD,sEAAsE;gBACtE,sEAAsE;gBACtE,uEAAuE;gBACvE,oEAAoE;gBACpE,mEAAmE;gBACnE,0DAA0D;gBAC1D,gCAAgC;gBAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;gBAEnE,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBAE1B,IAAI,QAAQ,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,IAAA,WAAK,EAAC,IAAI,CAAC,CAAC,EAAE,CAAC;oBACpD,SAAQ;gBACV,CAAC;gBAED,8DAA8D;gBAC9D,+DAA+D;gBAC/D,+DAA+D;gBAC/D,iDAAiD;gBACjD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;oBACvB,SAAQ;gBACV,CAAC;gBAED,GAAG,CAAC,IAAI,CAAC,CAAA;YACX,CAAC;iBACI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBACrB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACnB,CAAC;iBACI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAA;gBAC1C,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,GAAG,YAAY,CAAA;gBACxE,IAAI,EAAE,GAAG,KAAK,CAAA;gBACd,IAAI,EAAE,GAAG,SAAS,CAAA;gBAElB,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;oBAChB,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAA;oBACrC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;wBACd,EAAE,GAAG,IAAI,eAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;wBACxB,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;oBACrB,CAAC;oBACD,EAAE,GAAG,EAAE,CAAC,GAAG,CAAA;gBACb,CAAC;gBAED,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;gBAE1B,IAAA,gBAAU,EAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;gBAEjD,MAAK;YACP,CAAC;YAED,oCAAoC;QACtC,CAAC;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;CAEF;QAIC,MAAM"}
@@ -0,0 +1,13 @@
1
+ import type { Val, ValSpec } from '../type';
2
+ import { AontuContext } from '../ctx';
3
+ import { ScalarVal } from './ScalarVal';
4
+ import { Decimal } from './Decimal';
5
+ declare class BigDecimalVal extends ScalarVal {
6
+ isBigDecimal: boolean;
7
+ peg: Decimal;
8
+ constructor(spec: ValSpec, ctx?: AontuContext);
9
+ unify(peer: any, ctx: AontuContext): Val;
10
+ samePeg(peg: any): boolean;
11
+ get canon(): string;
12
+ }
13
+ export { BigDecimalVal, };
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ /* Copyright (c) 2025 Richard Rodger, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.BigDecimalVal = void 0;
5
+ const err_1 = require("../err");
6
+ const ScalarVal_1 = require("./ScalarVal");
7
+ const ScalarKindVal_1 = require("./ScalarKindVal");
8
+ const Decimal_1 = require("./Decimal");
9
+ const utility_1 = require("../utility");
10
+ // The exact base-10 decimal leaf of the number tower, reached only by a
11
+ // `0d` literal carrying a `.` or an exponent (`0d1.5`, `0d1e3`) or by
12
+ // direct construction.
13
+ //
14
+ // Its peg is a Decimal -- an OBJECT, so unlike every other scalar leaf
15
+ // its identity cannot be `===` on the peg. Two bigdecimals are the same
16
+ // value when their NUMBERS are equal (D2), which normalisation at
17
+ // construction reduces to a two-field comparison; `samePeg` and `unify`
18
+ // below are the two places that must not forget it.
19
+ class BigDecimalVal extends ScalarVal_1.ScalarVal {
20
+ constructor(spec, ctx) {
21
+ // Exact-input construction (D8): a Decimal, or a decimal literal as
22
+ // text (`'1.5'`, `'0d1e3'`). A JS `number` is deliberately NOT
23
+ // accepted -- binary64 has already rounded it, so `0.1` could never
24
+ // arrive exact.
25
+ let peg = spec.peg;
26
+ if ('string' === typeof peg) {
27
+ try {
28
+ peg = Decimal_1.Decimal.fromString(peg);
29
+ }
30
+ catch {
31
+ // Includes a budget refusal (Decimal.fromString enforces D6),
32
+ // so an over-budget string cannot enter through this route
33
+ // either.
34
+ throw new err_1.AontuError('not-bigdecimal: ' + spec.peg);
35
+ }
36
+ }
37
+ if (!(peg instanceof Decimal_1.Decimal)) {
38
+ throw new err_1.AontuError('not-bigdecimal: ' + peg);
39
+ }
40
+ super({ ...spec, peg, kind: ScalarKindVal_1.BigDecimal }, ctx);
41
+ this.isBigDecimal = true;
42
+ }
43
+ unify(peer, ctx) {
44
+ const te = ctx.explain && (0, utility_1.explainOpen)(ctx, ctx.explain, 'BigDecimal', this, peer);
45
+ let out = this;
46
+ if (null != peer) {
47
+ if (peer.isScalarKind) {
48
+ out = peer.unify(this, te ? ctx.clone({ explain: (0, utility_1.ec)(te, 'KND') }) : ctx);
49
+ }
50
+ else if (peer.isScalar &&
51
+ peer.kind === this.kind &&
52
+ this.peg.equals(peer.peg)) {
53
+ // Same kind and equal NUMBER. Never `peer.peg === this.peg`:
54
+ // that is object identity, and `0d0.10 & 0d0.1` (two Decimals
55
+ // holding one value) has to succeed.
56
+ out = this;
57
+ }
58
+ else if (peer.isTop) {
59
+ out = this;
60
+ }
61
+ else {
62
+ out = (0, err_1.makeNilErr)(ctx, 'scalar_' +
63
+ (peer.kind === this.kind ? 'value' : 'kind'), this, peer);
64
+ }
65
+ }
66
+ else {
67
+ out = super.unify(peer, ctx);
68
+ }
69
+ (0, utility_1.explainClose)(te, out);
70
+ return out;
71
+ }
72
+ samePeg(peg) {
73
+ return peg instanceof Decimal_1.Decimal && this.peg.equals(peg);
74
+ }
75
+ get canon() {
76
+ return this.peg.canon();
77
+ }
78
+ }
79
+ exports.BigDecimalVal = BigDecimalVal;
80
+ //# sourceMappingURL=BigDecimalVal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BigDecimalVal.js","sourceRoot":"","sources":["../../src/val/BigDecimalVal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Val, ValSpec } from '../type';
2
+ import { AontuContext } from '../ctx';
3
+ import { ScalarVal } from './ScalarVal';
4
+ declare class BigIntegerVal extends ScalarVal {
5
+ isBigInteger: boolean;
6
+ peg: bigint;
7
+ constructor(spec: ValSpec, ctx?: AontuContext);
8
+ unify(peer: any, ctx: AontuContext): Val;
9
+ get canon(): string;
10
+ }
11
+ export { BigIntegerVal, };
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ /* Copyright (c) 2025 Richard Rodger, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.BigIntegerVal = void 0;
5
+ const err_1 = require("../err");
6
+ const ScalarVal_1 = require("./ScalarVal");
7
+ const ScalarKindVal_1 = require("./ScalarKindVal");
8
+ const utility_1 = require("../utility");
9
+ // The unbounded exact integer leaf of the number tower, reached only by
10
+ // a `0d` literal with no fraction and no exponent (`0d5`, `-0d5`,
11
+ // `0d123456789012345678901234567890`) or by direct construction.
12
+ //
13
+ // Its peg is a native bigint: exact at any magnitude, immutable, and
14
+ // compared by VALUE with `===` (D2 -- two separately built bigints
15
+ // holding the same number are `===`, which is exactly the property the
16
+ // Go port has to reproduce by hand for `*big.Int`).
17
+ //
18
+ // `biginteger` is DISJOINT from `integer`: `5 & 0d5` is an error, since
19
+ // a successful meet would have to pick one of the two kinds and either
20
+ // choice makes `&` asymmetric in kind.
21
+ class BigIntegerVal extends ScalarVal_1.ScalarVal {
22
+ constructor(spec, ctx) {
23
+ // Exact-input construction (D8): a bigint, or the digits as text. A
24
+ // JS `number` is deliberately NOT accepted -- it has already been
25
+ // rounded before this library could inspect it, so an exact value
26
+ // above 2^53 could never arrive that way intact.
27
+ let peg = spec.peg;
28
+ if ('string' === typeof peg) {
29
+ if (!/^[-+]?[0-9]+$/.test(peg)) {
30
+ throw new err_1.AontuError('not-biginteger: ' + peg);
31
+ }
32
+ peg = BigInt(peg);
33
+ }
34
+ if ('bigint' !== typeof peg) {
35
+ throw new err_1.AontuError('not-biginteger: ' + peg);
36
+ }
37
+ super({ ...spec, peg, kind: ScalarKindVal_1.BigInteger }, ctx);
38
+ this.isBigInteger = true;
39
+ }
40
+ unify(peer, ctx) {
41
+ const te = ctx.explain && (0, utility_1.explainOpen)(ctx, ctx.explain, 'BigInteger', this, peer);
42
+ let out = this;
43
+ if (null != peer) {
44
+ if (peer.isScalarKind) {
45
+ out = peer.unify(this, te ? ctx.clone({ explain: (0, utility_1.ec)(te, 'KND') }) : ctx);
46
+ }
47
+ else if (peer.isScalar &&
48
+ peer.kind === this.kind &&
49
+ peer.peg === this.peg) {
50
+ // Same kind and equal NUMBER (bigint `===` is value equality).
51
+ out = this;
52
+ }
53
+ else if (peer.isTop) {
54
+ out = this;
55
+ }
56
+ else {
57
+ out = (0, err_1.makeNilErr)(ctx, 'scalar_' +
58
+ (peer.kind === this.kind ? 'value' : 'kind'), this, peer);
59
+ }
60
+ }
61
+ else {
62
+ out = super.unify(peer, ctx);
63
+ }
64
+ (0, utility_1.explainClose)(te, out);
65
+ return out;
66
+ }
67
+ // The sign renders BEFORE the marker (`-0d5`): `0d-5` is not a literal
68
+ // this language accepts, so canon must not produce it.
69
+ get canon() {
70
+ const neg = this.peg < 0n;
71
+ return (neg ? '-0d' : '0d') + (neg ? -this.peg : this.peg).toString();
72
+ }
73
+ }
74
+ exports.BigIntegerVal = BigIntegerVal;
75
+ //# sourceMappingURL=BigIntegerVal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BigIntegerVal.js","sourceRoot":"","sources":["../../src/val/BigIntegerVal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ declare const DECIMAL_COEFFICIENT_BUDGET = 4096;
2
+ declare const DECIMAL_SCALE_BUDGET = 4096;
3
+ declare class Decimal {
4
+ readonly unscaled: bigint;
5
+ readonly scale: number;
6
+ constructor(unscaled: bigint, scale: number);
7
+ equals(peer: Decimal): boolean;
8
+ compare(peer: Decimal): number;
9
+ negate(): Decimal;
10
+ add(peer: Decimal): Decimal;
11
+ ceil(): Decimal;
12
+ floor(): Decimal;
13
+ private intPart;
14
+ isZero(): boolean;
15
+ toString(): string;
16
+ canon(): string;
17
+ static fromString(src: string): Decimal;
18
+ }
19
+ declare function decimalOverBudget(d: Decimal): boolean;
20
+ declare const BIG_LITERAL_RE: RegExp;
21
+ type BigLiteral = {
22
+ leaf: 'biginteger';
23
+ int: bigint;
24
+ } | {
25
+ leaf: 'bigdecimal';
26
+ dec: Decimal;
27
+ } | {
28
+ leaf: 'error';
29
+ code: string;
30
+ };
31
+ declare function readBigLiteral(m: RegExpExecArray | (string | undefined)[]): BigLiteral;
32
+ export { BIG_LITERAL_RE, BigLiteral, DECIMAL_COEFFICIENT_BUDGET, DECIMAL_SCALE_BUDGET, Decimal, decimalOverBudget, readBigLiteral, };