@forthix/forthic 0.10.0 → 0.12.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 (147) hide show
  1. package/dist/cjs/common/runtime_client.d.ts +30 -0
  2. package/dist/cjs/common/runtime_client.js +10 -0
  3. package/dist/cjs/common/runtime_client.js.map +1 -0
  4. package/dist/cjs/common/type_utils.d.ts +7 -1
  5. package/dist/cjs/common/type_utils.js +13 -2
  6. package/dist/cjs/common/type_utils.js.map +1 -1
  7. package/dist/cjs/forthic/interpreter.js +6 -3
  8. package/dist/cjs/forthic/interpreter.js.map +1 -1
  9. package/dist/cjs/forthic/modules/standard/array_module.d.ts +17 -7
  10. package/dist/cjs/forthic/modules/standard/array_module.js +326 -78
  11. package/dist/cjs/forthic/modules/standard/array_module.js.map +1 -1
  12. package/dist/cjs/forthic/modules/standard/boolean_module.d.ts +5 -6
  13. package/dist/cjs/forthic/modules/standard/boolean_module.js +43 -60
  14. package/dist/cjs/forthic/modules/standard/boolean_module.js.map +1 -1
  15. package/dist/cjs/forthic/modules/standard/classic/classic_module.d.ts +56 -0
  16. package/dist/cjs/forthic/modules/standard/classic/classic_module.js +616 -0
  17. package/dist/cjs/forthic/modules/standard/classic/classic_module.js.map +1 -0
  18. package/dist/cjs/forthic/modules/standard/core_module.d.ts +11 -14
  19. package/dist/cjs/forthic/modules/standard/core_module.js +91 -97
  20. package/dist/cjs/forthic/modules/standard/core_module.js.map +1 -1
  21. package/dist/cjs/forthic/modules/standard/datetime_module.d.ts +4 -2
  22. package/dist/cjs/forthic/modules/standard/datetime_module.js +39 -20
  23. package/dist/cjs/forthic/modules/standard/datetime_module.js.map +1 -1
  24. package/dist/cjs/forthic/modules/standard/json_module.d.ts +0 -1
  25. package/dist/cjs/forthic/modules/standard/json_module.js +0 -15
  26. package/dist/cjs/forthic/modules/standard/json_module.js.map +1 -1
  27. package/dist/cjs/forthic/modules/standard/math_module.d.ts +7 -12
  28. package/dist/cjs/forthic/modules/standard/math_module.js +76 -137
  29. package/dist/cjs/forthic/modules/standard/math_module.js.map +1 -1
  30. package/dist/cjs/forthic/modules/standard/record_module.d.ts +15 -4
  31. package/dist/cjs/forthic/modules/standard/record_module.js +311 -45
  32. package/dist/cjs/forthic/modules/standard/record_module.js.map +1 -1
  33. package/dist/cjs/forthic/modules/standard/string_module.d.ts +14 -6
  34. package/dist/cjs/forthic/modules/standard/string_module.js +183 -60
  35. package/dist/cjs/forthic/modules/standard/string_module.js.map +1 -1
  36. package/dist/cjs/forthic/tokenizer.js +29 -1
  37. package/dist/cjs/forthic/tokenizer.js.map +1 -1
  38. package/dist/cjs/grpc/config_loader.d.ts +3 -0
  39. package/dist/cjs/grpc/config_loader.js +5 -0
  40. package/dist/cjs/grpc/config_loader.js.map +1 -1
  41. package/dist/cjs/grpc/remote_module.d.ts +3 -3
  42. package/dist/cjs/grpc/remote_module.js +1 -1
  43. package/dist/cjs/grpc/remote_module.js.map +1 -1
  44. package/dist/cjs/grpc/remote_word.d.ts +3 -3
  45. package/dist/cjs/grpc/remote_word.js +1 -1
  46. package/dist/cjs/grpc/remote_word.js.map +1 -1
  47. package/dist/cjs/grpc/runtime_manager.d.ts +5 -4
  48. package/dist/cjs/grpc/runtime_manager.js +2 -2
  49. package/dist/cjs/grpc/runtime_manager.js.map +1 -1
  50. package/dist/cjs/grpc/serializer.d.ts +2 -2
  51. package/dist/cjs/grpc/serializer.js +11 -10
  52. package/dist/cjs/grpc/serializer.js.map +1 -1
  53. package/dist/cjs/jsonrpc/browser-stub.d.ts +8 -0
  54. package/dist/cjs/jsonrpc/browser-stub.js +18 -0
  55. package/dist/cjs/jsonrpc/browser-stub.js.map +1 -0
  56. package/dist/cjs/jsonrpc/client.d.ts +31 -0
  57. package/dist/cjs/jsonrpc/client.js +98 -0
  58. package/dist/cjs/jsonrpc/client.js.map +1 -0
  59. package/dist/cjs/jsonrpc/errors.d.ts +18 -0
  60. package/dist/cjs/jsonrpc/errors.js +23 -0
  61. package/dist/cjs/jsonrpc/errors.js.map +1 -0
  62. package/dist/cjs/jsonrpc/index.d.ts +16 -0
  63. package/dist/cjs/jsonrpc/index.js +26 -0
  64. package/dist/cjs/jsonrpc/index.js.map +1 -0
  65. package/dist/cjs/jsonrpc/serializer.d.ts +8 -0
  66. package/dist/cjs/jsonrpc/serializer.js +14 -0
  67. package/dist/cjs/jsonrpc/serializer.js.map +1 -0
  68. package/dist/cjs/jsonrpc/server.d.ts +15 -0
  69. package/dist/cjs/jsonrpc/server.js +386 -0
  70. package/dist/cjs/jsonrpc/server.js.map +1 -0
  71. package/dist/cjs/websocket/serializer.d.ts +4 -4
  72. package/dist/cjs/websocket/serializer.js +15 -14
  73. package/dist/cjs/websocket/serializer.js.map +1 -1
  74. package/dist/esm/common/runtime_client.d.ts +30 -0
  75. package/dist/esm/common/runtime_client.js +9 -0
  76. package/dist/esm/common/runtime_client.js.map +1 -0
  77. package/dist/esm/common/type_utils.d.ts +7 -1
  78. package/dist/esm/common/type_utils.js +12 -2
  79. package/dist/esm/common/type_utils.js.map +1 -1
  80. package/dist/esm/forthic/interpreter.js +6 -3
  81. package/dist/esm/forthic/interpreter.js.map +1 -1
  82. package/dist/esm/forthic/modules/standard/array_module.d.ts +17 -7
  83. package/dist/esm/forthic/modules/standard/array_module.js +293 -72
  84. package/dist/esm/forthic/modules/standard/array_module.js.map +1 -1
  85. package/dist/esm/forthic/modules/standard/boolean_module.d.ts +5 -6
  86. package/dist/esm/forthic/modules/standard/boolean_module.js +38 -54
  87. package/dist/esm/forthic/modules/standard/boolean_module.js.map +1 -1
  88. package/dist/esm/forthic/modules/standard/classic/classic_module.d.ts +56 -0
  89. package/dist/esm/forthic/modules/standard/classic/classic_module.js +500 -0
  90. package/dist/esm/forthic/modules/standard/classic/classic_module.js.map +1 -0
  91. package/dist/esm/forthic/modules/standard/core_module.d.ts +11 -14
  92. package/dist/esm/forthic/modules/standard/core_module.js +76 -82
  93. package/dist/esm/forthic/modules/standard/core_module.js.map +1 -1
  94. package/dist/esm/forthic/modules/standard/datetime_module.d.ts +4 -2
  95. package/dist/esm/forthic/modules/standard/datetime_module.js +30 -17
  96. package/dist/esm/forthic/modules/standard/datetime_module.js.map +1 -1
  97. package/dist/esm/forthic/modules/standard/json_module.d.ts +0 -1
  98. package/dist/esm/forthic/modules/standard/json_module.js +0 -12
  99. package/dist/esm/forthic/modules/standard/json_module.js.map +1 -1
  100. package/dist/esm/forthic/modules/standard/math_module.d.ts +7 -12
  101. package/dist/esm/forthic/modules/standard/math_module.js +69 -117
  102. package/dist/esm/forthic/modules/standard/math_module.js.map +1 -1
  103. package/dist/esm/forthic/modules/standard/record_module.d.ts +15 -4
  104. package/dist/esm/forthic/modules/standard/record_module.js +292 -44
  105. package/dist/esm/forthic/modules/standard/record_module.js.map +1 -1
  106. package/dist/esm/forthic/modules/standard/string_module.d.ts +14 -6
  107. package/dist/esm/forthic/modules/standard/string_module.js +151 -54
  108. package/dist/esm/forthic/modules/standard/string_module.js.map +1 -1
  109. package/dist/esm/forthic/tokenizer.js +29 -1
  110. package/dist/esm/forthic/tokenizer.js.map +1 -1
  111. package/dist/esm/grpc/config_loader.d.ts +3 -0
  112. package/dist/esm/grpc/config_loader.js +5 -0
  113. package/dist/esm/grpc/config_loader.js.map +1 -1
  114. package/dist/esm/grpc/remote_module.d.ts +3 -3
  115. package/dist/esm/grpc/remote_module.js +1 -1
  116. package/dist/esm/grpc/remote_module.js.map +1 -1
  117. package/dist/esm/grpc/remote_word.d.ts +3 -3
  118. package/dist/esm/grpc/remote_word.js +1 -1
  119. package/dist/esm/grpc/remote_word.js.map +1 -1
  120. package/dist/esm/grpc/runtime_manager.d.ts +5 -4
  121. package/dist/esm/grpc/runtime_manager.js +2 -2
  122. package/dist/esm/grpc/runtime_manager.js.map +1 -1
  123. package/dist/esm/grpc/serializer.d.ts +2 -2
  124. package/dist/esm/grpc/serializer.js +12 -11
  125. package/dist/esm/grpc/serializer.js.map +1 -1
  126. package/dist/esm/jsonrpc/browser-stub.d.ts +8 -0
  127. package/dist/esm/jsonrpc/browser-stub.js +12 -0
  128. package/dist/esm/jsonrpc/browser-stub.js.map +1 -0
  129. package/dist/esm/jsonrpc/client.d.ts +31 -0
  130. package/dist/esm/jsonrpc/client.js +94 -0
  131. package/dist/esm/jsonrpc/client.js.map +1 -0
  132. package/dist/esm/jsonrpc/errors.d.ts +18 -0
  133. package/dist/esm/jsonrpc/errors.js +18 -0
  134. package/dist/esm/jsonrpc/errors.js.map +1 -0
  135. package/dist/esm/jsonrpc/index.d.ts +16 -0
  136. package/dist/esm/jsonrpc/index.js +16 -0
  137. package/dist/esm/jsonrpc/index.js.map +1 -0
  138. package/dist/esm/jsonrpc/serializer.d.ts +8 -0
  139. package/dist/esm/jsonrpc/serializer.js +9 -0
  140. package/dist/esm/jsonrpc/serializer.js.map +1 -0
  141. package/dist/esm/jsonrpc/server.d.ts +15 -0
  142. package/dist/esm/jsonrpc/server.js +349 -0
  143. package/dist/esm/jsonrpc/server.js.map +1 -0
  144. package/dist/esm/websocket/serializer.d.ts +4 -4
  145. package/dist/esm/websocket/serializer.js +16 -15
  146. package/dist/esm/websocket/serializer.js.map +1 -1
  147. package/package.json +15 -2
@@ -0,0 +1,616 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ClassicModule = void 0;
13
+ const interpreter_js_1 = require("../../../interpreter.js");
14
+ const word_js_1 = require("../../../decorators/word.js");
15
+ /**
16
+ * ClassicModule - holds legacy/classic Forthic words that remain live
17
+ * for back-compat but are not surfaced in the LLM-targeted documentation.
18
+ *
19
+ * Words living here continue to parse and execute identically to before.
20
+ * The split is purely a documentation / prompt-generation concern: the doc
21
+ * generator targets `modules/standard/*.ts` (top level only) and excludes
22
+ * this directory, so classic words don't appear in small-LLM system prompts.
23
+ *
24
+ * Implementations are inlined here rather than delegated cross-module so
25
+ * the file is self-contained.
26
+ */
27
+ class ClassicModule extends word_js_1.DecoratedModule {
28
+ static {
29
+ (0, word_js_1.registerModuleDoc)(ClassicModule, `
30
+ Legacy/classic Forthic words retained for back-compat.
31
+
32
+ These words remain fully functional at runtime. They are intentionally
33
+ omitted from LLM-targeted documentation in favor of canonical siblings
34
+ in the sibling standard modules.
35
+ `);
36
+ }
37
+ constructor() {
38
+ super("classic");
39
+ }
40
+ // ========================================
41
+ // Word-form arithmetic aliases
42
+ // (Canonical siblings: + - * / live in math_module.)
43
+ // ========================================
44
+ async ADD(interp) {
45
+ const b = interp.stack_pop();
46
+ if (Array.isArray(b)) {
47
+ let result = 0;
48
+ for (const num of b) {
49
+ if (num !== null && num !== undefined) {
50
+ result += num;
51
+ }
52
+ }
53
+ interp.stack_push(result);
54
+ return;
55
+ }
56
+ const a = interp.stack_pop();
57
+ const num_a = a === null || a === undefined ? 0 : a;
58
+ const num_b = b === null || b === undefined ? 0 : b;
59
+ interp.stack_push(num_a + num_b);
60
+ }
61
+ async SUBTRACT(a, b) {
62
+ if (a === null || a === undefined || b === null || b === undefined) {
63
+ return null;
64
+ }
65
+ return a - b;
66
+ }
67
+ async MULTIPLY(interp) {
68
+ const b = interp.stack_pop();
69
+ if (Array.isArray(b)) {
70
+ let result = 1;
71
+ for (const num of b) {
72
+ if (num === null || num === undefined) {
73
+ interp.stack_push(null);
74
+ return;
75
+ }
76
+ result *= num;
77
+ }
78
+ interp.stack_push(result);
79
+ return;
80
+ }
81
+ const a = interp.stack_pop();
82
+ if (a === null || a === undefined || b === null || b === undefined) {
83
+ interp.stack_push(null);
84
+ return;
85
+ }
86
+ interp.stack_push(a * b);
87
+ }
88
+ async DIVIDE(a, b) {
89
+ if (a === null || a === undefined || b === null || b === undefined) {
90
+ return null;
91
+ }
92
+ if (b === 0) {
93
+ return null;
94
+ }
95
+ return a / b;
96
+ }
97
+ // ========================================
98
+ // Synonyms (canonical sibling: NOP lives in core_module.)
99
+ // ========================================
100
+ async IDENTITY() {
101
+ // No-op
102
+ }
103
+ async POP(_a) {
104
+ // No return = push nothing
105
+ }
106
+ // ========================================
107
+ // Module / control niche
108
+ // ========================================
109
+ async INTERPRET(string) {
110
+ const string_location = this.interp.get_string_location();
111
+ if (string)
112
+ await this.interp.run(string, string_location);
113
+ }
114
+ async EXPORT(names) {
115
+ this.interp.cur_module().add_exportable(names);
116
+ }
117
+ async ["*DEFAULT"](value, default_forthic) {
118
+ if (value === undefined || value === null || value === "") {
119
+ const string_location = this.interp.get_string_location();
120
+ await this.interp.run(default_forthic, string_location);
121
+ return this.interp.stack_pop();
122
+ }
123
+ return value;
124
+ }
125
+ // ========================================
126
+ // Profiling / logging diagnostics
127
+ // ========================================
128
+ async ["PROFILE-START"]() {
129
+ this.interp.start_profiling();
130
+ }
131
+ async ["PROFILE-END"]() {
132
+ this.interp.stop_profiling();
133
+ }
134
+ async ["PROFILE-TIMESTAMP"](label) {
135
+ this.interp.add_timestamp(label);
136
+ }
137
+ async ["PROFILE-DATA"]() {
138
+ const histogram = this.interp.word_histogram();
139
+ const timestamps = this.interp.profile_timestamps();
140
+ const result = {
141
+ word_counts: [],
142
+ timestamps: [],
143
+ };
144
+ histogram.forEach((val) => {
145
+ const rec = { word: val["word"], count: val["count"] };
146
+ result["word_counts"].push(rec);
147
+ });
148
+ let prev_time = 0.0;
149
+ timestamps.forEach((t) => {
150
+ const rec = {
151
+ label: t["label"],
152
+ time_ms: t["time_ms"],
153
+ delta: t["time_ms"] - prev_time,
154
+ };
155
+ prev_time = t["time_ms"];
156
+ result["timestamps"].push(rec);
157
+ });
158
+ return result;
159
+ }
160
+ async START_LOG() {
161
+ this.interp.startStream();
162
+ }
163
+ async END_LOG() {
164
+ this.interp.endStream();
165
+ }
166
+ // ========================================
167
+ // Niche logic
168
+ // ========================================
169
+ async XOR(a, b) {
170
+ return (a || b) && !(a && b);
171
+ }
172
+ async NAND(a, b) {
173
+ return !(a && b);
174
+ }
175
+ // ========================================
176
+ // Niche array operations
177
+ // ========================================
178
+ async SHUFFLE(array) {
179
+ if (!array)
180
+ return array;
181
+ const result = [...array];
182
+ for (let i = result.length - 1; i > 0; i--) {
183
+ const j = Math.floor(Math.random() * (i + 1));
184
+ [result[i], result[j]] = [result[j], result[i]];
185
+ }
186
+ return result;
187
+ }
188
+ async ROTATE(container) {
189
+ if (!container)
190
+ return container;
191
+ let result = container;
192
+ if (container instanceof Array) {
193
+ if (container.length > 0) {
194
+ result = [...container];
195
+ const val = result.pop();
196
+ result.unshift(val);
197
+ }
198
+ }
199
+ return result;
200
+ }
201
+ // ========================================
202
+ // Niche record operations
203
+ // ========================================
204
+ async RELABEL(container, old_keys, new_keys) {
205
+ if (!container)
206
+ return container;
207
+ if (old_keys.length !== new_keys.length) {
208
+ throw new Error("RELABEL: old_keys and new_keys must be same length");
209
+ }
210
+ const new_to_old = {};
211
+ for (let i = 0; i < old_keys.length; i++) {
212
+ new_to_old[new_keys[i]] = old_keys[i];
213
+ }
214
+ let result;
215
+ if (container instanceof Array) {
216
+ result = [];
217
+ Object.keys(new_to_old)
218
+ .sort()
219
+ .forEach((k) => result.push(container[new_to_old[k]]));
220
+ }
221
+ else {
222
+ result = {};
223
+ Object.keys(new_to_old).forEach((k) => (result[k] = container[new_to_old[k]]));
224
+ }
225
+ return result;
226
+ }
227
+ async INVERT_KEYS(record) {
228
+ const result = {};
229
+ Object.keys(record).forEach((first_key) => {
230
+ const sub_record = record[first_key];
231
+ Object.keys(sub_record).forEach((second_key) => {
232
+ const value = sub_record[second_key];
233
+ if (!result[second_key])
234
+ result[second_key] = {};
235
+ result[second_key][first_key] = value;
236
+ });
237
+ });
238
+ return result;
239
+ }
240
+ // ========================================
241
+ // Niche math
242
+ // ========================================
243
+ async INFINITY() {
244
+ return Infinity;
245
+ }
246
+ async ["UNIFORM-RANDOM"](low, high) {
247
+ return Math.random() * (high - low) + low;
248
+ }
249
+ // ========================================
250
+ // Niche json
251
+ // ========================================
252
+ async JSON_PRETTIFY(json) {
253
+ if (!json || json.trim() === "") {
254
+ return "";
255
+ }
256
+ const obj = JSON.parse(json);
257
+ return JSON.stringify(obj, null, 2);
258
+ }
259
+ // ========================================
260
+ // Niche string
261
+ // ========================================
262
+ async slash_R() {
263
+ return "\r";
264
+ }
265
+ async RE_MATCH_GROUP(match, num) {
266
+ let result = null;
267
+ if (match)
268
+ result = match[num];
269
+ return result;
270
+ }
271
+ async URL_ENCODE(str) {
272
+ let result = "";
273
+ if (str)
274
+ result = encodeURIComponent(str);
275
+ return result;
276
+ }
277
+ async URL_DECODE(urlencoded) {
278
+ let result = "";
279
+ if (urlencoded)
280
+ result = decodeURIComponent(urlencoded);
281
+ return result;
282
+ }
283
+ // ========================================
284
+ // Niche datetime
285
+ // ========================================
286
+ async DATE_to_INT(date) {
287
+ if (!date || typeof date.year !== "number") {
288
+ return null;
289
+ }
290
+ const year = date.year;
291
+ const month = String(date.month).padStart(2, "0");
292
+ const day = String(date.day).padStart(2, "0");
293
+ return parseInt(`${year}${month}${day}`, 10);
294
+ }
295
+ // ========================================
296
+ // Superseded by modern variants (PR 4)
297
+ // SELECT -> FILTER (array_module)
298
+ // IN -> CONTAINS? (boolean_module, container-first arg order)
299
+ // <REPEAT -> TIMES-RUN (array_module, simpler semantics)
300
+ // <DEL -> DELETE (record_module)
301
+ // >FIXED -> FORMAT-FIXED (math_module)
302
+ // SUBTRACT-DATES -> DAYS-BETWEEN (datetime_module)
303
+ // ========================================
304
+ async SELECT(container, forthic, options) {
305
+ const interp = this.interp;
306
+ const string_location = interp.get_string_location();
307
+ const flags = {
308
+ with_key: options.with_key ?? null,
309
+ };
310
+ if (!container) {
311
+ interp.stack_push(container);
312
+ return;
313
+ }
314
+ let result;
315
+ if (container instanceof Array) {
316
+ result = [];
317
+ for (let i = 0; i < container.length; i++) {
318
+ const item = container[i];
319
+ if (flags.with_key)
320
+ interp.stack_push(i);
321
+ interp.stack_push(item);
322
+ await interp.run(forthic, string_location);
323
+ const should_select = interp.stack_pop();
324
+ if (should_select)
325
+ result.push(item);
326
+ }
327
+ }
328
+ else {
329
+ result = {};
330
+ const keys = Object.keys(container);
331
+ for (let i = 0; i < keys.length; i++) {
332
+ const k = keys[i];
333
+ const v = container[k];
334
+ if (flags.with_key)
335
+ interp.stack_push(k);
336
+ interp.stack_push(v);
337
+ await interp.run(forthic, string_location);
338
+ const should_select = interp.stack_pop();
339
+ if (should_select)
340
+ result[k] = v;
341
+ }
342
+ }
343
+ return result;
344
+ }
345
+ async IN(item, array) {
346
+ if (!Array.isArray(array)) {
347
+ return false;
348
+ }
349
+ return array.includes(item);
350
+ }
351
+ async l_REPEAT(interp) {
352
+ const num_times = interp.stack_pop();
353
+ const forthic = interp.stack_pop();
354
+ const string_location = interp.get_string_location();
355
+ for (let i = 0; i < num_times; i++) {
356
+ const item = interp.stack_pop();
357
+ interp.stack_push(item);
358
+ await interp.run(forthic, string_location);
359
+ const res = interp.stack_pop();
360
+ interp.stack_push(item);
361
+ interp.stack_push(res);
362
+ }
363
+ }
364
+ async l_DEL(container, key) {
365
+ if (!container)
366
+ return container;
367
+ if (container instanceof Array) {
368
+ container.splice(key, 1);
369
+ }
370
+ else {
371
+ delete container[key];
372
+ }
373
+ return container;
374
+ }
375
+ async to_FIXED(num, digits) {
376
+ if (num === null || num === undefined) {
377
+ return null;
378
+ }
379
+ return num.toFixed(digits);
380
+ }
381
+ async REC_DEFAULTS(record, key_vals) {
382
+ key_vals.forEach((key_val) => {
383
+ const key = key_val[0];
384
+ const value = record[key];
385
+ if (value === undefined || value === null || value === "") {
386
+ record[key] = key_val[1];
387
+ }
388
+ });
389
+ return record;
390
+ }
391
+ async SUBTRACT_DATES(date1, date2) {
392
+ if (!date1 || !date2 || typeof date1.year !== "number" || typeof date2.year !== "number") {
393
+ return null;
394
+ }
395
+ const duration = date2.until(date1, { largestUnit: "days" });
396
+ return duration.days;
397
+ }
398
+ }
399
+ exports.ClassicModule = ClassicModule;
400
+ __decorate([
401
+ (0, word_js_1.ForthicDirectWord)("( a:number b:number -- sum:number ) OR ( numbers:number[] -- sum:number )", "Add two numbers or sum array", "ADD"),
402
+ __metadata("design:type", Function),
403
+ __metadata("design:paramtypes", [interpreter_js_1.Interpreter]),
404
+ __metadata("design:returntype", Promise)
405
+ ], ClassicModule.prototype, "ADD", null);
406
+ __decorate([
407
+ (0, word_js_1.ForthicWord)("( a:number b:number -- difference:number )", "Subtract b from a", "SUBTRACT"),
408
+ __metadata("design:type", Function),
409
+ __metadata("design:paramtypes", [Number, Number]),
410
+ __metadata("design:returntype", Promise)
411
+ ], ClassicModule.prototype, "SUBTRACT", null);
412
+ __decorate([
413
+ (0, word_js_1.ForthicDirectWord)("( a:number b:number -- product:number ) OR ( numbers:number[] -- product:number )", "Multiply two numbers or product of array", "MULTIPLY"),
414
+ __metadata("design:type", Function),
415
+ __metadata("design:paramtypes", [interpreter_js_1.Interpreter]),
416
+ __metadata("design:returntype", Promise)
417
+ ], ClassicModule.prototype, "MULTIPLY", null);
418
+ __decorate([
419
+ (0, word_js_1.ForthicWord)("( a:number b:number -- quotient:number )", "Divide a by b", "DIVIDE"),
420
+ __metadata("design:type", Function),
421
+ __metadata("design:paramtypes", [Number, Number]),
422
+ __metadata("design:returntype", Promise)
423
+ ], ClassicModule.prototype, "DIVIDE", null);
424
+ __decorate([
425
+ (0, word_js_1.ForthicWord)("( -- )", "Does nothing (identity operation)"),
426
+ __metadata("design:type", Function),
427
+ __metadata("design:paramtypes", []),
428
+ __metadata("design:returntype", Promise)
429
+ ], ClassicModule.prototype, "IDENTITY", null);
430
+ __decorate([
431
+ (0, word_js_1.ForthicWord)("( a:any -- )", "Removes top item from stack. Surfaced as DROP in core_module."),
432
+ __metadata("design:type", Function),
433
+ __metadata("design:paramtypes", [Object]),
434
+ __metadata("design:returntype", Promise)
435
+ ], ClassicModule.prototype, "POP", null);
436
+ __decorate([
437
+ (0, word_js_1.ForthicWord)("( string:string -- )", "Interprets Forthic string in current context. Surfaced as RUN in core."),
438
+ __metadata("design:type", Function),
439
+ __metadata("design:paramtypes", [String]),
440
+ __metadata("design:returntype", Promise)
441
+ ], ClassicModule.prototype, "INTERPRET", null);
442
+ __decorate([
443
+ (0, word_js_1.ForthicWord)("( names:string[] -- )", "Exports words from current module"),
444
+ __metadata("design:type", Function),
445
+ __metadata("design:paramtypes", [Array]),
446
+ __metadata("design:returntype", Promise)
447
+ ], ClassicModule.prototype, "EXPORT", null);
448
+ __decorate([
449
+ (0, word_js_1.ForthicWord)("( value:any default_forthic:string -- result:any )", "Returns value or executes Forthic if value is null/undefined/empty string"),
450
+ __metadata("design:type", Function),
451
+ __metadata("design:paramtypes", [Object, String]),
452
+ __metadata("design:returntype", Promise)
453
+ ], ClassicModule.prototype, "*DEFAULT", null);
454
+ __decorate([
455
+ (0, word_js_1.ForthicWord)("( -- )", "Starts profiling word execution"),
456
+ __metadata("design:type", Function),
457
+ __metadata("design:paramtypes", []),
458
+ __metadata("design:returntype", Promise)
459
+ ], ClassicModule.prototype, "PROFILE-START", null);
460
+ __decorate([
461
+ (0, word_js_1.ForthicWord)("( -- )", "Stops profiling word execution"),
462
+ __metadata("design:type", Function),
463
+ __metadata("design:paramtypes", []),
464
+ __metadata("design:returntype", Promise)
465
+ ], ClassicModule.prototype, "PROFILE-END", null);
466
+ __decorate([
467
+ (0, word_js_1.ForthicWord)("( label:string -- )", "Records profiling timestamp with label"),
468
+ __metadata("design:type", Function),
469
+ __metadata("design:paramtypes", [String]),
470
+ __metadata("design:returntype", Promise)
471
+ ], ClassicModule.prototype, "PROFILE-TIMESTAMP", null);
472
+ __decorate([
473
+ (0, word_js_1.ForthicWord)("( -- profile_data:object )", "Returns profiling data (word counts and timestamps)"),
474
+ __metadata("design:type", Function),
475
+ __metadata("design:paramtypes", []),
476
+ __metadata("design:returntype", Promise)
477
+ ], ClassicModule.prototype, "PROFILE-DATA", null);
478
+ __decorate([
479
+ (0, word_js_1.ForthicWord)("( -- )", "Starts logging interpreter stream", "START-LOG"),
480
+ __metadata("design:type", Function),
481
+ __metadata("design:paramtypes", []),
482
+ __metadata("design:returntype", Promise)
483
+ ], ClassicModule.prototype, "START_LOG", null);
484
+ __decorate([
485
+ (0, word_js_1.ForthicWord)("( -- )", "Ends logging interpreter stream", "END-LOG"),
486
+ __metadata("design:type", Function),
487
+ __metadata("design:paramtypes", []),
488
+ __metadata("design:returntype", Promise)
489
+ ], ClassicModule.prototype, "END_LOG", null);
490
+ __decorate([
491
+ (0, word_js_1.ForthicWord)("( a:boolean b:boolean -- result:boolean )", "Logical XOR (exclusive or)"),
492
+ __metadata("design:type", Function),
493
+ __metadata("design:paramtypes", [Boolean, Boolean]),
494
+ __metadata("design:returntype", Promise)
495
+ ], ClassicModule.prototype, "XOR", null);
496
+ __decorate([
497
+ (0, word_js_1.ForthicWord)("( a:boolean b:boolean -- result:boolean )", "Logical NAND (not and)"),
498
+ __metadata("design:type", Function),
499
+ __metadata("design:paramtypes", [Boolean, Boolean]),
500
+ __metadata("design:returntype", Promise)
501
+ ], ClassicModule.prototype, "NAND", null);
502
+ __decorate([
503
+ (0, word_js_1.ForthicWord)("( array:any[] -- array:any[] )", "Shuffle array randomly"),
504
+ __metadata("design:type", Function),
505
+ __metadata("design:paramtypes", [Array]),
506
+ __metadata("design:returntype", Promise)
507
+ ], ClassicModule.prototype, "SHUFFLE", null);
508
+ __decorate([
509
+ (0, word_js_1.ForthicWord)("( container:any -- container:any )", "Rotate container by moving last element to front"),
510
+ __metadata("design:type", Function),
511
+ __metadata("design:paramtypes", [Object]),
512
+ __metadata("design:returntype", Promise)
513
+ ], ClassicModule.prototype, "ROTATE", null);
514
+ __decorate([
515
+ (0, word_js_1.ForthicWord)("( container:any old_keys:any[] new_keys:any[] -- container:any )", "Rename record keys"),
516
+ __metadata("design:type", Function),
517
+ __metadata("design:paramtypes", [Object, Array, Array]),
518
+ __metadata("design:returntype", Promise)
519
+ ], ClassicModule.prototype, "RELABEL", null);
520
+ __decorate([
521
+ (0, word_js_1.ForthicWord)("( record:any -- inverted:any )", "Invert two-level nested record structure", "INVERT-KEYS"),
522
+ __metadata("design:type", Function),
523
+ __metadata("design:paramtypes", [Object]),
524
+ __metadata("design:returntype", Promise)
525
+ ], ClassicModule.prototype, "INVERT_KEYS", null);
526
+ __decorate([
527
+ (0, word_js_1.ForthicWord)("( -- infinity:number )", "Push Infinity value"),
528
+ __metadata("design:type", Function),
529
+ __metadata("design:paramtypes", []),
530
+ __metadata("design:returntype", Promise)
531
+ ], ClassicModule.prototype, "INFINITY", null);
532
+ __decorate([
533
+ (0, word_js_1.ForthicWord)("( low:number high:number -- random:number )", "Generate random number in range [low, high)"),
534
+ __metadata("design:type", Function),
535
+ __metadata("design:paramtypes", [Number, Number]),
536
+ __metadata("design:returntype", Promise)
537
+ ], ClassicModule.prototype, "UNIFORM-RANDOM", null);
538
+ __decorate([
539
+ (0, word_js_1.ForthicWord)("( json:string -- pretty:string )", "Format JSON with 2-space indentation", "JSON-PRETTIFY"),
540
+ __metadata("design:type", Function),
541
+ __metadata("design:paramtypes", [String]),
542
+ __metadata("design:returntype", Promise)
543
+ ], ClassicModule.prototype, "JSON_PRETTIFY", null);
544
+ __decorate([
545
+ (0, word_js_1.ForthicWord)("( -- char:string )", "Carriage return character", "/R"),
546
+ __metadata("design:type", Function),
547
+ __metadata("design:paramtypes", []),
548
+ __metadata("design:returntype", Promise)
549
+ ], ClassicModule.prototype, "slash_R", null);
550
+ __decorate([
551
+ (0, word_js_1.ForthicWord)("( match:any num:number -- result:any )", "Get capture group from regex match", "RE-MATCH-GROUP"),
552
+ __metadata("design:type", Function),
553
+ __metadata("design:paramtypes", [Object, Number]),
554
+ __metadata("design:returntype", Promise)
555
+ ], ClassicModule.prototype, "RE_MATCH_GROUP", null);
556
+ __decorate([
557
+ (0, word_js_1.ForthicWord)("( str:string -- encoded:string )", "URL encode string", "URL-ENCODE"),
558
+ __metadata("design:type", Function),
559
+ __metadata("design:paramtypes", [String]),
560
+ __metadata("design:returntype", Promise)
561
+ ], ClassicModule.prototype, "URL_ENCODE", null);
562
+ __decorate([
563
+ (0, word_js_1.ForthicWord)("( urlencoded:string -- decoded:string )", "URL decode string", "URL-DECODE"),
564
+ __metadata("design:type", Function),
565
+ __metadata("design:paramtypes", [String]),
566
+ __metadata("design:returntype", Promise)
567
+ ], ClassicModule.prototype, "URL_DECODE", null);
568
+ __decorate([
569
+ (0, word_js_1.ForthicWord)("( date:Temporal.PlainDate -- int:number )", "Convert date to integer (YYYYMMDD)", "DATE>INT"),
570
+ __metadata("design:type", Function),
571
+ __metadata("design:paramtypes", [Object]),
572
+ __metadata("design:returntype", Promise)
573
+ ], ClassicModule.prototype, "DATE_to_INT", null);
574
+ __decorate([
575
+ (0, word_js_1.ForthicWord)("( container:any forthic:string [options:WordOptions] -- filtered:any )", "Filter items with predicate. Surfaced as FILTER in array_module.", "SELECT"),
576
+ __metadata("design:type", Function),
577
+ __metadata("design:paramtypes", [Object, String, Object]),
578
+ __metadata("design:returntype", Promise)
579
+ ], ClassicModule.prototype, "SELECT", null);
580
+ __decorate([
581
+ (0, word_js_1.ForthicWord)("( item:any array:any[] -- in:boolean )", "Check if item is in array. Surfaced as CONTAINS? in boolean_module (with reversed args: haystack-first)."),
582
+ __metadata("design:type", Function),
583
+ __metadata("design:paramtypes", [Object, Array]),
584
+ __metadata("design:returntype", Promise)
585
+ ], ClassicModule.prototype, "IN", null);
586
+ __decorate([
587
+ (0, word_js_1.ForthicDirectWord)("( item:any forthic:string num_times:number -- )", "Repeat execution of forthic num_times. Surfaced as TIMES-RUN in array_module (simpler ( num forthic -- ) semantics).", "<REPEAT"),
588
+ __metadata("design:type", Function),
589
+ __metadata("design:paramtypes", [interpreter_js_1.Interpreter]),
590
+ __metadata("design:returntype", Promise)
591
+ ], ClassicModule.prototype, "l_REPEAT", null);
592
+ __decorate([
593
+ (0, word_js_1.ForthicWord)("( container:any key:any -- container:any )", "Delete key from record or index from array. Surfaced as DELETE in record_module.", "<DEL"),
594
+ __metadata("design:type", Function),
595
+ __metadata("design:paramtypes", [Object, Object]),
596
+ __metadata("design:returntype", Promise)
597
+ ], ClassicModule.prototype, "l_DEL", null);
598
+ __decorate([
599
+ (0, word_js_1.ForthicWord)("( num:number digits:number -- result:string )", "Format number with fixed decimal places. Surfaced as FORMAT-FIXED in math_module.", ">FIXED"),
600
+ __metadata("design:type", Function),
601
+ __metadata("design:paramtypes", [Number, Number]),
602
+ __metadata("design:returntype", Promise)
603
+ ], ClassicModule.prototype, "to_FIXED", null);
604
+ __decorate([
605
+ (0, word_js_1.ForthicWord)("( record:any key_vals:any[] -- record:any )", "Set default values for missing/empty fields. Modern path is `defaults_rec input_rec MERGE`.", "REC-DEFAULTS"),
606
+ __metadata("design:type", Function),
607
+ __metadata("design:paramtypes", [Object, Array]),
608
+ __metadata("design:returntype", Promise)
609
+ ], ClassicModule.prototype, "REC_DEFAULTS", null);
610
+ __decorate([
611
+ (0, word_js_1.ForthicWord)("( date1:Temporal.PlainDate date2:Temporal.PlainDate -- num_days:number )", "Get difference in days between dates (date1 - date2). Surfaced as DAYS-BETWEEN in datetime_module.", "SUBTRACT-DATES"),
612
+ __metadata("design:type", Function),
613
+ __metadata("design:paramtypes", [Object, Object]),
614
+ __metadata("design:returntype", Promise)
615
+ ], ClassicModule.prototype, "SUBTRACT_DATES", null);
616
+ //# sourceMappingURL=classic_module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classic_module.js","sourceRoot":"","sources":["../../../../../../src/forthic/modules/standard/classic/classic_module.ts"],"names":[],"mappings":"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"}