aontu 0.30.1 → 0.31.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 (184) hide show
  1. package/dist/ctx.d.ts +51 -0
  2. package/dist/ctx.js +105 -0
  3. package/dist/ctx.js.map +1 -0
  4. package/dist/err.d.ts +12 -0
  5. package/dist/err.js +123 -0
  6. package/dist/err.js.map +1 -0
  7. package/dist/hints.d.ts +8 -0
  8. package/dist/hints.js +90 -0
  9. package/dist/hints.js.map +1 -0
  10. package/dist/lang.d.ts +11 -0
  11. package/dist/lang.js +569 -0
  12. package/dist/lang.js.map +1 -0
  13. package/dist/site.d.ts +12 -0
  14. package/dist/site.js +27 -0
  15. package/dist/site.js.map +1 -0
  16. package/dist/tsconfig.tsbuildinfo +1 -0
  17. package/dist/type.d.ts +32 -0
  18. package/dist/type.js +16 -0
  19. package/dist/type.js.map +1 -0
  20. package/dist/unify.d.ts +14 -0
  21. package/dist/unify.js +162 -0
  22. package/dist/unify.js.map +1 -0
  23. package/dist/utility.d.ts +14 -0
  24. package/dist/utility.js +128 -0
  25. package/dist/utility.js.map +1 -0
  26. package/dist/val/BagVal.d.ts +10 -0
  27. package/dist/val/BagVal.js +15 -0
  28. package/dist/val/BagVal.js.map +1 -0
  29. package/dist/val/BooleanVal.d.ts +9 -0
  30. package/dist/val/BooleanVal.js +16 -0
  31. package/dist/val/BooleanVal.js.map +1 -0
  32. package/dist/val/CloseFuncVal.d.ts +11 -0
  33. package/dist/val/CloseFuncVal.js +32 -0
  34. package/dist/val/CloseFuncVal.js.map +1 -0
  35. package/dist/val/ConjunctVal.d.ts +14 -0
  36. package/dist/val/ConjunctVal.js +187 -0
  37. package/dist/val/ConjunctVal.js.map +1 -0
  38. package/dist/val/CopyFuncVal.d.ts +14 -0
  39. package/dist/val/CopyFuncVal.js +43 -0
  40. package/dist/val/CopyFuncVal.js.map +1 -0
  41. package/dist/val/DisjunctVal.d.ts +19 -0
  42. package/dist/val/DisjunctVal.js +194 -0
  43. package/dist/val/DisjunctVal.js.map +1 -0
  44. package/dist/val/FeatureVal.d.ts +10 -0
  45. package/dist/val/FeatureVal.js +29 -0
  46. package/dist/val/FeatureVal.js.map +1 -0
  47. package/dist/val/FuncBaseVal.d.ts +15 -0
  48. package/dist/val/FuncBaseVal.js +131 -0
  49. package/dist/val/FuncBaseVal.js.map +1 -0
  50. package/dist/val/HideFuncVal.d.ts +12 -0
  51. package/dist/val/HideFuncVal.js +48 -0
  52. package/dist/val/HideFuncVal.js.map +1 -0
  53. package/dist/val/IntegerVal.d.ts +9 -0
  54. package/dist/val/IntegerVal.js +46 -0
  55. package/dist/val/IntegerVal.js.map +1 -0
  56. package/dist/val/JunctionVal.d.ts +12 -0
  57. package/dist/val/JunctionVal.js +31 -0
  58. package/dist/val/JunctionVal.js.map +1 -0
  59. package/dist/val/KeyFuncVal.d.ts +13 -0
  60. package/dist/val/KeyFuncVal.js +64 -0
  61. package/dist/val/KeyFuncVal.js.map +1 -0
  62. package/dist/val/ListVal.d.ts +17 -0
  63. package/dist/val/ListVal.js +186 -0
  64. package/dist/val/ListVal.js.map +1 -0
  65. package/dist/val/LowerFuncVal.d.ts +12 -0
  66. package/dist/val/LowerFuncVal.js +40 -0
  67. package/dist/val/LowerFuncVal.js.map +1 -0
  68. package/dist/val/MapVal.d.ts +16 -0
  69. package/dist/val/MapVal.js +233 -0
  70. package/dist/val/MapVal.js.map +1 -0
  71. package/dist/val/MoveFuncVal.d.ts +12 -0
  72. package/dist/val/MoveFuncVal.js +44 -0
  73. package/dist/val/MoveFuncVal.js.map +1 -0
  74. package/dist/val/NilVal.d.ts +25 -0
  75. package/dist/val/NilVal.js +92 -0
  76. package/dist/val/NilVal.js.map +1 -0
  77. package/dist/val/NullVal.d.ts +9 -0
  78. package/dist/val/NullVal.js +18 -0
  79. package/dist/val/NullVal.js.map +1 -0
  80. package/dist/val/NumberVal.d.ts +9 -0
  81. package/dist/val/NumberVal.js +44 -0
  82. package/dist/val/NumberVal.js.map +1 -0
  83. package/dist/val/OpBaseVal.d.ts +18 -0
  84. package/dist/val/OpBaseVal.js +152 -0
  85. package/dist/val/OpBaseVal.js.map +1 -0
  86. package/dist/val/OpenFuncVal.d.ts +11 -0
  87. package/dist/val/OpenFuncVal.js +30 -0
  88. package/dist/val/OpenFuncVal.js.map +1 -0
  89. package/dist/val/PathFuncVal.d.ts +13 -0
  90. package/dist/val/PathFuncVal.js +42 -0
  91. package/dist/val/PathFuncVal.js.map +1 -0
  92. package/dist/val/PlusOpVal.d.ts +16 -0
  93. package/dist/val/PlusOpVal.js +59 -0
  94. package/dist/val/PlusOpVal.js.map +1 -0
  95. package/dist/val/PrefFuncVal.d.ts +11 -0
  96. package/dist/val/PrefFuncVal.js +39 -0
  97. package/dist/val/PrefFuncVal.js.map +1 -0
  98. package/dist/val/PrefVal.d.ts +15 -0
  99. package/dist/val/PrefVal.js +112 -0
  100. package/dist/val/PrefVal.js.map +1 -0
  101. package/dist/val/RefVal.d.ts +22 -0
  102. package/dist/val/RefVal.js +310 -0
  103. package/dist/val/RefVal.js.map +1 -0
  104. package/dist/val/ScalarKindVal.d.ts +16 -0
  105. package/dist/val/ScalarKindVal.js +76 -0
  106. package/dist/val/ScalarKindVal.js.map +1 -0
  107. package/dist/val/ScalarVal.d.ts +16 -0
  108. package/dist/val/ScalarVal.js +62 -0
  109. package/dist/val/ScalarVal.js.map +1 -0
  110. package/dist/val/StringVal.d.ts +10 -0
  111. package/dist/val/StringVal.js +19 -0
  112. package/dist/val/StringVal.js.map +1 -0
  113. package/dist/val/SuperFuncVal.d.ts +11 -0
  114. package/dist/val/SuperFuncVal.js +22 -0
  115. package/dist/val/SuperFuncVal.js.map +1 -0
  116. package/dist/val/TopVal.d.ts +16 -0
  117. package/dist/val/TopVal.js +38 -0
  118. package/dist/val/TopVal.js.map +1 -0
  119. package/dist/val/TypeFuncVal.d.ts +12 -0
  120. package/dist/val/TypeFuncVal.js +35 -0
  121. package/dist/val/TypeFuncVal.js.map +1 -0
  122. package/dist/val/UpperFuncVal.d.ts +12 -0
  123. package/dist/val/UpperFuncVal.js +40 -0
  124. package/dist/val/UpperFuncVal.js.map +1 -0
  125. package/dist/val/Val.d.ts +90 -0
  126. package/dist/val/Val.js +205 -0
  127. package/dist/val/Val.js.map +1 -0
  128. package/dist/val/VarVal.d.ts +13 -0
  129. package/dist/val/VarVal.js +109 -0
  130. package/dist/val/VarVal.js.map +1 -0
  131. package/dist/val/top.d.ts +2 -0
  132. package/dist/val/top.js +10 -0
  133. package/dist/val/top.js.map +1 -0
  134. package/dist/val/valutil.d.ts +2 -0
  135. package/dist/val/valutil.js +30 -0
  136. package/dist/val/valutil.js.map +1 -0
  137. package/package.json +3 -5
  138. package/src/aontu.ts +218 -0
  139. package/src/ctx.ts +201 -0
  140. package/src/err.ts +172 -0
  141. package/src/hints.ts +129 -0
  142. package/src/lang.ts +782 -0
  143. package/src/site.ts +34 -0
  144. package/src/tsconfig.json +16 -0
  145. package/src/type.ts +72 -0
  146. package/src/unify.ts +233 -0
  147. package/src/utility.ts +185 -0
  148. package/src/val/BagVal.ts +33 -0
  149. package/src/val/BooleanVal.ts +32 -0
  150. package/src/val/CloseFuncVal.ts +61 -0
  151. package/src/val/ConjunctVal.ts +285 -0
  152. package/src/val/CopyFuncVal.ts +82 -0
  153. package/src/val/DisjunctVal.ts +288 -0
  154. package/src/val/FeatureVal.ts +56 -0
  155. package/src/val/FuncBaseVal.ts +204 -0
  156. package/src/val/HideFuncVal.ts +85 -0
  157. package/src/val/IntegerVal.ts +75 -0
  158. package/src/val/JunctionVal.ts +54 -0
  159. package/src/val/KeyFuncVal.ts +103 -0
  160. package/src/val/ListVal.ts +286 -0
  161. package/src/val/LowerFuncVal.ts +73 -0
  162. package/src/val/MapVal.ts +349 -0
  163. package/src/val/MoveFuncVal.ts +83 -0
  164. package/src/val/NilVal.ts +156 -0
  165. package/src/val/NullVal.ts +38 -0
  166. package/src/val/NumberVal.ts +75 -0
  167. package/src/val/OpBaseVal.ts +231 -0
  168. package/src/val/OpenFuncVal.ts +60 -0
  169. package/src/val/PathFuncVal.ts +75 -0
  170. package/src/val/PlusOpVal.ts +92 -0
  171. package/src/val/PrefFuncVal.ts +73 -0
  172. package/src/val/PrefVal.ts +170 -0
  173. package/src/val/RefVal.ts +436 -0
  174. package/src/val/ScalarKindVal.ts +125 -0
  175. package/src/val/ScalarVal.ts +107 -0
  176. package/src/val/StringVal.ts +37 -0
  177. package/src/val/SuperFuncVal.ts +46 -0
  178. package/src/val/TopVal.ts +69 -0
  179. package/src/val/TypeFuncVal.ts +69 -0
  180. package/src/val/UpperFuncVal.ts +72 -0
  181. package/src/val/Val.ts +318 -0
  182. package/src/val/VarVal.ts +171 -0
  183. package/src/val/top.ts +12 -0
  184. package/src/val/valutil.ts +31 -0
@@ -0,0 +1,171 @@
1
+ /* Copyright (c) 2021-2023 Richard Rodger, MIT License */
2
+
3
+
4
+
5
+ import type {
6
+ Val,
7
+ ValSpec,
8
+ } from '../type'
9
+
10
+ import {
11
+ DONE,
12
+ } from '../type'
13
+
14
+ import {
15
+ descErr,
16
+ makeNilErr,
17
+ AontuError
18
+ } from '../err'
19
+
20
+ import {
21
+ AontuContext,
22
+ } from '../ctx'
23
+
24
+
25
+
26
+ import { StringVal } from './StringVal'
27
+ import { NilVal } from './NilVal'
28
+ import { FeatureVal } from './FeatureVal'
29
+ import { NullVal } from './NullVal'
30
+ import { BooleanVal } from './BooleanVal'
31
+ import { NumberVal } from './NumberVal'
32
+ import { IntegerVal } from './IntegerVal'
33
+
34
+
35
+ import {
36
+ explainOpen,
37
+ ec,
38
+ explainClose,
39
+ } from '../utility'
40
+
41
+
42
+ // TODO: KEY, SELF, PARENT are reserved names - error
43
+
44
+ class VarVal extends FeatureVal {
45
+ isVar = true
46
+
47
+ constructor(
48
+ spec: ValSpec,
49
+ ctx?: AontuContext
50
+ ) {
51
+ super(spec, ctx)
52
+ }
53
+
54
+
55
+ unify(peer: Val, ctx: AontuContext): Val {
56
+ const te = ctx.explain && explainOpen(ctx, ctx.explain, 'Var', this, peer)
57
+
58
+ let out: Val
59
+
60
+ let nameVal
61
+
62
+ if (this.peg.isVal) {
63
+ // $.a.b.c - convert path to absolute
64
+ // if (this.peg instanceof RefVal) {
65
+ if (this.peg.isRef) {
66
+ this.peg.absolute = true
67
+ nameVal = this.peg
68
+ }
69
+ else {
70
+ nameVal = this.peg.unify(peer, ctx.clone({ explain: ec(te, 'PEG') }))
71
+ }
72
+ }
73
+ else {
74
+ // TODO: how to pass row+col?
75
+ nameVal = new StringVal({ peg: '' + this.peg }, ctx)
76
+ }
77
+
78
+ // if (!(nameVal instanceof RefVal) && DONE === nameVal.dc) {
79
+ if (!(nameVal.isRef) && DONE === nameVal.dc) {
80
+ if (nameVal instanceof StringVal) {
81
+ let found = ctx.vars[nameVal.peg]
82
+ if (undefined === found) {
83
+ out = makeNilErr(ctx, 'unknown_var', this, peer)
84
+ }
85
+
86
+ // TODO: support complex values
87
+ const ft = typeof found
88
+ if (null === found) {
89
+ out = this.place(new NullVal({ peg: null }))
90
+ }
91
+ else if ('string' === ft) {
92
+ out = new StringVal({ peg: found })
93
+ }
94
+ else if ('boolean' === ft) {
95
+ out = new BooleanVal({ peg: found })
96
+ }
97
+ else if ('number' === ft) {
98
+ out = Number.isInteger(found) ?
99
+ new IntegerVal({ peg: found }) :
100
+ new NumberVal({ peg: found })
101
+ }
102
+ else if ('object' === ft && found.isVal) {
103
+ out = found
104
+ }
105
+ else {
106
+ out = makeNilErr(ctx, 'invalid_var_kind', this, peer)
107
+ }
108
+ }
109
+ else {
110
+ out = makeNilErr(ctx, 'var[' + typeof nameVal + ']', this, peer)
111
+ }
112
+ }
113
+ else {
114
+ out = nameVal
115
+ }
116
+
117
+ explainClose(te, out)
118
+
119
+ return out
120
+ }
121
+
122
+
123
+ same(peer: Val): boolean {
124
+ return null == peer ? false : peer instanceof VarVal && this.peg === peer.peg
125
+ }
126
+
127
+
128
+ clone(ctx: AontuContext, spec?: ValSpec): Val {
129
+ let out = (super.clone(ctx, spec) as VarVal)
130
+ return out
131
+ }
132
+
133
+
134
+ get canon() {
135
+ return '$' + (this.peg?.isVal ? this.peg.canon : '' + this.peg)
136
+ }
137
+
138
+
139
+ gen(ctx?: AontuContext) {
140
+ // Unresolved var cannot be generated, so always an error.
141
+ let nil = makeNilErr(
142
+ ctx,
143
+ 'var',
144
+ this,
145
+ undefined
146
+ )
147
+
148
+ // TODO: refactor to use Site
149
+ nil.path = this.path
150
+ nil.site.url = this.site.url
151
+ nil.site.row = this.site.row
152
+ nil.site.col = this.site.col
153
+
154
+ descErr(nil, ctx)
155
+
156
+ if (ctx) {
157
+ // ctx.err.push(nil)
158
+ ctx.adderr(nil)
159
+ }
160
+ else {
161
+ throw new AontuError(nil.msg)
162
+ }
163
+
164
+ return undefined
165
+ }
166
+ }
167
+
168
+
169
+ export {
170
+ VarVal,
171
+ }
package/src/val/top.ts ADDED
@@ -0,0 +1,12 @@
1
+ /* Copyright (c) 2025 Richard Rodger, MIT License */
2
+
3
+
4
+ import { TopVal } from './TopVal'
5
+
6
+ const TOP = new TopVal({})
7
+
8
+
9
+ export function top(): TopVal {
10
+ return TOP
11
+ }
12
+
@@ -0,0 +1,31 @@
1
+ /* Copyright (c) 2021-2025 Richard Rodger, MIT License */
2
+
3
+ import { AontuError } from '../err'
4
+ import { ScalarVal } from './ScalarVal'
5
+ import { NumberVal } from './NumberVal'
6
+ import { StringVal } from './StringVal'
7
+ import { BooleanVal } from './BooleanVal'
8
+ import { NullVal } from './NullVal'
9
+
10
+
11
+ // TODO: move to FuncBaseVal
12
+ export function makeScalar(scalar: any): ScalarVal {
13
+ const st = typeof scalar
14
+ const spec = { peg: scalar }
15
+
16
+ if ('number' === st) {
17
+ return new NumberVal(spec)
18
+ }
19
+ else if ('string' === st) {
20
+ return new StringVal(spec)
21
+ }
22
+ else if ('boolean' === st) {
23
+ return new BooleanVal(spec)
24
+ }
25
+ else if (null === scalar) {
26
+ return new NullVal(spec)
27
+ }
28
+ else {
29
+ throw new AontuError('Not a scalar: ' + scalar)
30
+ }
31
+ }