@forthic/interp 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +28 -0
- package/README.md +50 -0
- package/dist/cjs/forthic/ForthicError.d.ts +19 -0
- package/dist/cjs/forthic/ForthicError.js +39 -0
- package/dist/cjs/forthic/ForthicError.js.map +1 -0
- package/dist/cjs/forthic/global_module/map_word.d.ts +28 -0
- package/dist/cjs/forthic/global_module/map_word.js +157 -0
- package/dist/cjs/forthic/global_module/map_word.js.map +1 -0
- package/dist/cjs/forthic/global_module.d.ts +167 -0
- package/dist/cjs/forthic/global_module.js +2434 -0
- package/dist/cjs/forthic/global_module.js.map +1 -0
- package/dist/cjs/forthic/interpreter.d.ts +70 -0
- package/dist/cjs/forthic/interpreter.js +386 -0
- package/dist/cjs/forthic/interpreter.js.map +1 -0
- package/dist/cjs/forthic/module.d.ts +101 -0
- package/dist/cjs/forthic/module.js +277 -0
- package/dist/cjs/forthic/module.js.map +1 -0
- package/dist/cjs/forthic/tokenizer.d.ts +77 -0
- package/dist/cjs/forthic/tokenizer.js +335 -0
- package/dist/cjs/forthic/tokenizer.js.map +1 -0
- package/dist/cjs/forthic/utils.d.ts +11 -0
- package/dist/cjs/forthic/utils.js +86 -0
- package/dist/cjs/forthic/utils.js.map +1 -0
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.js +20 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/esm/forthic/ForthicError.d.ts +19 -0
- package/dist/esm/forthic/ForthicError.js +39 -0
- package/dist/esm/forthic/ForthicError.js.map +1 -0
- package/dist/esm/forthic/global_module/map_word.d.ts +28 -0
- package/dist/esm/forthic/global_module/map_word.js +157 -0
- package/dist/esm/forthic/global_module/map_word.js.map +1 -0
- package/dist/esm/forthic/global_module.d.ts +167 -0
- package/dist/esm/forthic/global_module.js +2434 -0
- package/dist/esm/forthic/global_module.js.map +1 -0
- package/dist/esm/forthic/interpreter.d.ts +70 -0
- package/dist/esm/forthic/interpreter.js +386 -0
- package/dist/esm/forthic/interpreter.js.map +1 -0
- package/dist/esm/forthic/module.d.ts +101 -0
- package/dist/esm/forthic/module.js +277 -0
- package/dist/esm/forthic/module.js.map +1 -0
- package/dist/esm/forthic/tokenizer.d.ts +77 -0
- package/dist/esm/forthic/tokenizer.js +335 -0
- package/dist/esm/forthic/tokenizer.js.map +1 -0
- package/dist/esm/forthic/utils.d.ts +11 -0
- package/dist/esm/forthic/utils.js +86 -0
- package/dist/esm/forthic/utils.js.map +1 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +20 -0
- package/dist/esm/index.js.map +1 -0
- package/package.json +58 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
BSD 2-CLAUSE LICENSE
|
|
2
|
+
|
|
3
|
+
Copyright 2024 LinkedIn Corporation.
|
|
4
|
+
All Rights Reserved.
|
|
5
|
+
|
|
6
|
+
Redistribution and use in source and binary forms, with or without
|
|
7
|
+
modification, are permitted provided that the following conditions are
|
|
8
|
+
met:
|
|
9
|
+
|
|
10
|
+
1. Redistributions of source code must retain the above copyright
|
|
11
|
+
notice, this list of conditions and the following disclaimer.
|
|
12
|
+
|
|
13
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
14
|
+
notice, this list of conditions and the following disclaimer in the
|
|
15
|
+
documentation and/or other materials provided with the
|
|
16
|
+
distribution.
|
|
17
|
+
|
|
18
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
19
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
20
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
21
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
22
|
+
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
23
|
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
24
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
25
|
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
26
|
+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
27
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
28
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
package/README.md
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# @forthic/interp
|
|
2
|
+
|
|
3
|
+
A Forthic interpreter that runs within TypeScript.
|
|
4
|
+
|
|
5
|
+
## Description
|
|
6
|
+
|
|
7
|
+
This package provides a Forthic interpreter that allows you to execute Forthic code within your JavaScript/TypeScript projects. Forthic is a stack-based programming language inspired by Forth.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
You can install the package using npm:
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
npm install @forthic/interp
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Or using yarn:
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
yarn add @forthic/interp
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Usage
|
|
24
|
+
Here's a basic example of how to use the Forthic interpreter:
|
|
25
|
+
|
|
26
|
+
```js
|
|
27
|
+
import { Interpreter } from "@forthic/interp"
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
(async () => {
|
|
31
|
+
const interp = new Interpreter();
|
|
32
|
+
await interp.run("[1 2 3] '3 *' MAP");
|
|
33
|
+
const result = interp.stack_pop();
|
|
34
|
+
console.log("Howdy!", {result});
|
|
35
|
+
})();
|
|
36
|
+
|
|
37
|
+
// Output:
|
|
38
|
+
//
|
|
39
|
+
// Howdy! { result: [ 3, 6, 9 ] }
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## License
|
|
43
|
+
This project is licensed under the BSD-2-Clause License see the [LICENSE](./LICENSE) file for details.
|
|
44
|
+
|
|
45
|
+
## Author
|
|
46
|
+
Rino Jose
|
|
47
|
+
|
|
48
|
+
## Links
|
|
49
|
+
- [Repository](https://github.com/linkedin/forthic/forthic-ts)
|
|
50
|
+
- [Issues](https://github.com/linkedin/forthic/issues)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface ICodeLocation {
|
|
2
|
+
screen_name: string;
|
|
3
|
+
line: number;
|
|
4
|
+
column: number;
|
|
5
|
+
start_pos: number;
|
|
6
|
+
end_pos: number;
|
|
7
|
+
}
|
|
8
|
+
export declare class ForthicError {
|
|
9
|
+
error_key: string;
|
|
10
|
+
title: string;
|
|
11
|
+
description: string;
|
|
12
|
+
location?: ICodeLocation;
|
|
13
|
+
caught_error: any;
|
|
14
|
+
constructor(error_key: string, title: string, description: string, location?: any);
|
|
15
|
+
set_caught_error(error: any): void;
|
|
16
|
+
get_title(): string;
|
|
17
|
+
get_description(): string;
|
|
18
|
+
get_error_stack(): this[];
|
|
19
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ForthicError = void 0;
|
|
4
|
+
class ForthicError {
|
|
5
|
+
constructor(error_key, title, description, location = null) {
|
|
6
|
+
this.error_key = error_key;
|
|
7
|
+
this.title = title;
|
|
8
|
+
this.description = description;
|
|
9
|
+
this.location = location;
|
|
10
|
+
console.log("ForthixError", { error_key, title, description, location });
|
|
11
|
+
this.caught_error = null;
|
|
12
|
+
}
|
|
13
|
+
set_caught_error(error) {
|
|
14
|
+
this.caught_error = error;
|
|
15
|
+
}
|
|
16
|
+
get_title() {
|
|
17
|
+
return this.title;
|
|
18
|
+
}
|
|
19
|
+
get_description() {
|
|
20
|
+
return `${this.description}`;
|
|
21
|
+
}
|
|
22
|
+
get_error_stack() {
|
|
23
|
+
const MAX_DEPTH = 100;
|
|
24
|
+
let cur_error = this;
|
|
25
|
+
const result = [cur_error];
|
|
26
|
+
for (let i = 0; i < MAX_DEPTH; i++) {
|
|
27
|
+
if (cur_error.caught_error) {
|
|
28
|
+
result.push(cur_error.caught_error);
|
|
29
|
+
cur_error = cur_error.caught_error;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return result.reverse();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.ForthicError = ForthicError;
|
|
39
|
+
//# sourceMappingURL=ForthicError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ForthicError.js","sourceRoot":"","sources":["../../../src/forthic/ForthicError.ts"],"names":[],"mappings":";;;AAQA,MAAa,YAAY;IAOvB,YACE,SAAiB,EACjB,KAAa,EACb,WAAmB,EACnB,QAAQ,GAAG,IAAI;QAEf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,gBAAgB,CAAC,KAAU;QACzB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,eAAe;QACb,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC;IAED,eAAe;QACb,MAAM,SAAS,GAAG,GAAG,CAAC;QAEtB,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;gBACpC,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,MAAM;YACR,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;CACF;AAhDD,oCAgDC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Interpreter } from "../interpreter";
|
|
2
|
+
type MapWordFlags = {
|
|
3
|
+
depth?: number;
|
|
4
|
+
interps?: number;
|
|
5
|
+
push_error?: boolean;
|
|
6
|
+
with_key?: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare class MapWord {
|
|
9
|
+
forthic: any;
|
|
10
|
+
forthic_location: any;
|
|
11
|
+
items: any[];
|
|
12
|
+
flags: MapWordFlags;
|
|
13
|
+
depth: number;
|
|
14
|
+
num_interps: number;
|
|
15
|
+
push_error?: boolean;
|
|
16
|
+
with_key?: boolean;
|
|
17
|
+
cur_index: number;
|
|
18
|
+
result: any[];
|
|
19
|
+
errors: any[];
|
|
20
|
+
is_debugging: boolean;
|
|
21
|
+
processing_item: boolean;
|
|
22
|
+
is_done: boolean;
|
|
23
|
+
constructor(items: any[], forthic: any, forthic_location: any, flags: MapWordFlags);
|
|
24
|
+
execute(interp: Interpreter): Promise<void>;
|
|
25
|
+
normal_execute(interp: Interpreter): Promise<void>;
|
|
26
|
+
map(interp: Interpreter, items: any[]): Promise<any[]>;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MapWord = void 0;
|
|
4
|
+
const interpreter_1 = require("../interpreter");
|
|
5
|
+
// ( items forthic -- [ ? ] )
|
|
6
|
+
class MapWord {
|
|
7
|
+
constructor(items, forthic, forthic_location, flags) {
|
|
8
|
+
this.forthic = forthic;
|
|
9
|
+
this.forthic_location = forthic_location;
|
|
10
|
+
this.items = items;
|
|
11
|
+
this.flags = flags;
|
|
12
|
+
// MAP flags
|
|
13
|
+
this.depth = flags.depth || 0;
|
|
14
|
+
this.num_interps = flags.interps || 1;
|
|
15
|
+
this.push_error = flags.push_error;
|
|
16
|
+
this.with_key = flags.with_key;
|
|
17
|
+
this.cur_index = 0;
|
|
18
|
+
this.result = [];
|
|
19
|
+
this.errors = [];
|
|
20
|
+
this.is_debugging = false;
|
|
21
|
+
this.processing_item = false;
|
|
22
|
+
this.is_done = false;
|
|
23
|
+
}
|
|
24
|
+
async execute(interp) {
|
|
25
|
+
await this.normal_execute(interp);
|
|
26
|
+
}
|
|
27
|
+
async normal_execute(interp) {
|
|
28
|
+
this.is_debugging = false;
|
|
29
|
+
const items = this.items;
|
|
30
|
+
if (!items || items.length === 0) {
|
|
31
|
+
interp.stack_push(items);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
this.result = [];
|
|
35
|
+
this.errors = [];
|
|
36
|
+
if (this.num_interps > 1) {
|
|
37
|
+
const group_size = Math.ceil(items.length / this.num_interps);
|
|
38
|
+
interp.stack_push(items);
|
|
39
|
+
interp.stack_push(group_size);
|
|
40
|
+
await interp.run("GROUPS-OF");
|
|
41
|
+
const groups = interp.stack_pop();
|
|
42
|
+
// Clone and load up interpreters
|
|
43
|
+
const interp_runs = [];
|
|
44
|
+
for (let i = 0; i < groups.length; i++) {
|
|
45
|
+
const group = groups[i];
|
|
46
|
+
const new_interp = (0, interpreter_1.dup_interpreter)(interp);
|
|
47
|
+
const interp_run = this.map(new_interp, group);
|
|
48
|
+
interp_runs.push(interp_run);
|
|
49
|
+
}
|
|
50
|
+
const run_results = await Promise.all(interp_runs);
|
|
51
|
+
// Gather results
|
|
52
|
+
let result = [];
|
|
53
|
+
let errors = [];
|
|
54
|
+
for (const res of run_results) {
|
|
55
|
+
result = [...result, ...res[0]];
|
|
56
|
+
errors = [...errors, ...res[1]];
|
|
57
|
+
}
|
|
58
|
+
this.result = result;
|
|
59
|
+
this.errors = errors;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
await this.map(interp, items);
|
|
63
|
+
}
|
|
64
|
+
// Return results
|
|
65
|
+
interp.stack_push(this.result);
|
|
66
|
+
if (this.push_error)
|
|
67
|
+
interp.stack_push(this.errors);
|
|
68
|
+
}
|
|
69
|
+
async map(interp, items) {
|
|
70
|
+
const forthic = this.forthic;
|
|
71
|
+
const forthic_location = this.forthic_location;
|
|
72
|
+
const self = this;
|
|
73
|
+
if (!items) {
|
|
74
|
+
interp.stack_push(items);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
// This maps the forthic over an item, storing errors if needed
|
|
78
|
+
async function map_value(key, value, errors) {
|
|
79
|
+
if (self.with_key)
|
|
80
|
+
interp.stack_push(key);
|
|
81
|
+
interp.stack_push(value);
|
|
82
|
+
if (self.push_error) {
|
|
83
|
+
let error = null;
|
|
84
|
+
try {
|
|
85
|
+
// If this runs successfully, it would have pushed the result onto the stack
|
|
86
|
+
await interp.run(forthic, forthic_location);
|
|
87
|
+
}
|
|
88
|
+
catch (e) {
|
|
89
|
+
// Since this didn't run successfully, push null onto the stack
|
|
90
|
+
interp.stack_push(null);
|
|
91
|
+
error = e;
|
|
92
|
+
}
|
|
93
|
+
errors.push(error);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
await interp.run(forthic, forthic_location);
|
|
97
|
+
}
|
|
98
|
+
return interp.stack_pop();
|
|
99
|
+
}
|
|
100
|
+
// This recursively descends a record structure
|
|
101
|
+
async function descend_record(record, depth, accum, errors) {
|
|
102
|
+
const keys = Object.keys(record);
|
|
103
|
+
for (let i = 0; i < keys.length; i++) {
|
|
104
|
+
const k = keys[i];
|
|
105
|
+
const item = record[k];
|
|
106
|
+
if (depth > 0) {
|
|
107
|
+
if (item instanceof Array) {
|
|
108
|
+
accum[k] = [];
|
|
109
|
+
await descend_list(item, depth - 1, accum[k], errors);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
accum[k] = {};
|
|
113
|
+
await descend_record(item, depth - 1, accum[k], errors);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
accum[k] = await map_value(k, item, errors);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return accum;
|
|
121
|
+
}
|
|
122
|
+
// This recursively descends a list
|
|
123
|
+
async function descend_list(items, depth, accum, errors) {
|
|
124
|
+
for (let i = 0; i < items.length; i++) {
|
|
125
|
+
const item = items[i];
|
|
126
|
+
if (depth > 0) {
|
|
127
|
+
if (item instanceof Array) {
|
|
128
|
+
accum.push([]);
|
|
129
|
+
await descend_list(item, depth - 1, accum[accum.length - 1], errors);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
accum.push({});
|
|
133
|
+
await descend_record(item, depth - 1, accum[accum.length - 1], errors);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
accum.push(await map_value(i, item, errors));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return accum;
|
|
141
|
+
}
|
|
142
|
+
const errors = [];
|
|
143
|
+
let result;
|
|
144
|
+
const depth = this.depth;
|
|
145
|
+
if (items instanceof Array) {
|
|
146
|
+
result = await descend_list(items, depth, [], errors);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
result = await descend_record(items, depth, {}, errors);
|
|
150
|
+
}
|
|
151
|
+
this.result = result;
|
|
152
|
+
this.errors = errors;
|
|
153
|
+
return [result, errors];
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
exports.MapWord = MapWord;
|
|
157
|
+
//# sourceMappingURL=map_word.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map_word.js","sourceRoot":"","sources":["../../../../src/forthic/global_module/map_word.ts"],"names":[],"mappings":";;;AAAA,gDAAiD;AAUjD,6BAA6B;AAC7B,MAAa,OAAO;IAgBlB,YACE,KAAY,EACZ,OAAY,EACZ,gBAAqB,EACrB,KAAmB;QAEnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,YAAY;QACZ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAE/B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,MAAmB;QAC/B,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAmB;QACtC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;YAC9D,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACzB,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC9B,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YAElC,iCAAiC;YACjC,MAAM,WAAW,GAAG,EAAE,CAAC;YAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM,UAAU,GAAG,IAAA,6BAAe,EAAC,MAAM,CAAC,CAAC;gBAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBAC/C,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAEnD,iBAAiB;YACjB,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC9B,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,iBAAiB;QACjB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE/B,IAAI,IAAI,CAAC,UAAU;YAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAmB,EAAE,KAAY;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QAED,+DAA+D;QAC/D,KAAK,UAAU,SAAS,CAAC,GAAoB,EAAE,KAAU,EAAE,MAAa;YACtE,IAAI,IAAI,CAAC,QAAQ;gBAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC1C,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAEzB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,IAAI,KAAK,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC;oBACH,4EAA4E;oBAC5E,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;gBAC9C,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,+DAA+D;oBAC/D,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBACxB,KAAK,GAAG,CAAC,CAAC;gBACZ,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC;QAC5B,CAAC;QAED,+CAA+C;QAC/C,KAAK,UAAU,cAAc,CAC3B,MAA8B,EAC9B,KAAa,EACb,KAA6B,EAC7B,MAAa;YAEb,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBACd,IAAI,IAAI,YAAY,KAAK,EAAE,CAAC;wBAC1B,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;wBACd,MAAM,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;oBACxD,CAAC;yBAAM,CAAC;wBACN,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;wBACd,MAAM,cAAc,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;oBAC1D,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QAED,mCAAmC;QACnC,KAAK,UAAU,YAAY,CACzB,KAAY,EACZ,KAAa,EACb,KAAY,EACZ,MAAa;YAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBACd,IAAI,IAAI,YAAY,KAAK,EAAE,CAAC;wBAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACf,MAAM,YAAY,CAChB,IAAI,EACJ,KAAK,GAAG,CAAC,EACT,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EACvB,MAAM,CACP,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACf,MAAM,cAAc,CAClB,IAAI,EACJ,KAAK,GAAG,CAAC,EACT,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EACvB,MAAM,CACP,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,IAAI,MAAW,CAAC;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC;CACF;AApMD,0BAoMC"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { Module, Word } from "./module";
|
|
2
|
+
import type { Interpreter } from "./interpreter";
|
|
3
|
+
export declare class GlobalModule extends Module {
|
|
4
|
+
module_id: string;
|
|
5
|
+
literal_handlers: Array<(value: any) => any>;
|
|
6
|
+
constructor(interp: Interpreter);
|
|
7
|
+
find_word(name: string): Word | null;
|
|
8
|
+
find_literal_word(string: string): Word | null;
|
|
9
|
+
to_bool(str_val: string): boolean | null;
|
|
10
|
+
to_int(str_val: string): number | null;
|
|
11
|
+
to_float(str_val: string): number | null;
|
|
12
|
+
to_literal_date(str_val: string): Date | null;
|
|
13
|
+
to_time(str_val: string): Date | null;
|
|
14
|
+
make_element_word(element_name: string): (interp: Interpreter) => Promise<void>;
|
|
15
|
+
add_element_word(element_name: string): void;
|
|
16
|
+
word_VARIABLES(interp: Interpreter): void;
|
|
17
|
+
word_bang(interp: Interpreter): void;
|
|
18
|
+
word_at(interp: Interpreter): void;
|
|
19
|
+
word_bang_at(interp: Interpreter): void;
|
|
20
|
+
word_INTERPRET(interp: Interpreter): Promise<void>;
|
|
21
|
+
word_EXPORT(interp: Interpreter): void;
|
|
22
|
+
word_USE_MODULES(interp: Interpreter): Promise<void>;
|
|
23
|
+
word_REC(interp: Interpreter): void;
|
|
24
|
+
word_REC_at(interp: Interpreter): void;
|
|
25
|
+
word_pipe_REC_at(interp: Interpreter): Promise<void>;
|
|
26
|
+
word_l_REC_bang(interp: Interpreter): void;
|
|
27
|
+
word_APPEND(interp: Interpreter): void;
|
|
28
|
+
word_REVERSE(interp: Interpreter): void;
|
|
29
|
+
word_UNIQUE(interp: Interpreter): void;
|
|
30
|
+
word_L_DEL(interp: Interpreter): void;
|
|
31
|
+
word_RELABEL(interp: Interpreter): void;
|
|
32
|
+
word_BY_FIELD(interp: Interpreter): void;
|
|
33
|
+
word_GROUP_BY_FIELD(interp: Interpreter): void;
|
|
34
|
+
word_GROUP_BY(interp: Interpreter): Promise<void>;
|
|
35
|
+
word_GROUPS_OF(interp: Interpreter): void;
|
|
36
|
+
word_INDEX(interp: Interpreter): Promise<void>;
|
|
37
|
+
word_MAP(interp: Interpreter): Promise<void>;
|
|
38
|
+
word_FOREACH(interp: Interpreter): Promise<void>;
|
|
39
|
+
word_INVERT_KEYS(interp: Interpreter): void;
|
|
40
|
+
word_ZIP(interp: Interpreter): void;
|
|
41
|
+
word_ZIP_WITH(interp: Interpreter): Promise<void>;
|
|
42
|
+
word_KEYS(interp: Interpreter): void;
|
|
43
|
+
word_VALUES(interp: Interpreter): void;
|
|
44
|
+
word_LENGTH(interp: Interpreter): void;
|
|
45
|
+
word_RANGE(interp: Interpreter): Promise<void>;
|
|
46
|
+
word_SLICE(interp: Interpreter): void;
|
|
47
|
+
word_DIFFERENCE(interp: Interpreter): void;
|
|
48
|
+
word_INTERSECTION(interp: Interpreter): void;
|
|
49
|
+
word_UNION(interp: Interpreter): void;
|
|
50
|
+
word_SELECT(interp: Interpreter): Promise<void>;
|
|
51
|
+
word_TAKE(interp: Interpreter): void;
|
|
52
|
+
word_DROP(interp: Interpreter): void;
|
|
53
|
+
word_ROTATE(interp: Interpreter): void;
|
|
54
|
+
word_ROTATE_ELEMENT(interp: Interpreter): void;
|
|
55
|
+
word_ARRAY_q(interp: Interpreter): void;
|
|
56
|
+
word_SHUFFLE(interp: Interpreter): void;
|
|
57
|
+
word_FIELD_KEY_FUNC(interp: Interpreter): void;
|
|
58
|
+
word_SORT(interp: Interpreter): Promise<void>;
|
|
59
|
+
word_NTH(interp: Interpreter): void;
|
|
60
|
+
word_LAST(interp: Interpreter): void;
|
|
61
|
+
word_UNPACK(interp: Interpreter): void;
|
|
62
|
+
word_FLATTEN(interp: Interpreter): void;
|
|
63
|
+
word_KEY_OF(interp: Interpreter): void;
|
|
64
|
+
word_REDUCE(interp: Interpreter): Promise<void>;
|
|
65
|
+
word_POP(interp: Interpreter): void;
|
|
66
|
+
word_DUP(interp: Interpreter): void;
|
|
67
|
+
word_SWAP(interp: Interpreter): void;
|
|
68
|
+
word_to_STR(interp: Interpreter): void;
|
|
69
|
+
word_CONCAT(interp: Interpreter): void;
|
|
70
|
+
word_SPLIT(interp: Interpreter): void;
|
|
71
|
+
word_JOIN(interp: Interpreter): void;
|
|
72
|
+
word_slash_N(interp: Interpreter): void;
|
|
73
|
+
word_slash_R(interp: Interpreter): void;
|
|
74
|
+
word_slash_T(interp: Interpreter): void;
|
|
75
|
+
word_LOWERCASE(interp: Interpreter): void;
|
|
76
|
+
word_UPPERCASE(interp: Interpreter): void;
|
|
77
|
+
word_ASCII(interp: Interpreter): void;
|
|
78
|
+
word_STRIP(interp: Interpreter): void;
|
|
79
|
+
word_REPLACE(interp: Interpreter): void;
|
|
80
|
+
word_RE_MATCH(interp: Interpreter): void;
|
|
81
|
+
word_RE_MATCH_ALL(interp: Interpreter): void;
|
|
82
|
+
word_RE_MATCH_GROUP(interp: Interpreter): void;
|
|
83
|
+
word_AM(interp: Interpreter): void;
|
|
84
|
+
word_PM(interp: Interpreter): void;
|
|
85
|
+
word_NOW(interp: Interpreter): void;
|
|
86
|
+
word_to_TIME(interp: Interpreter): void;
|
|
87
|
+
word_TIME_to_STR(interp: Interpreter): void;
|
|
88
|
+
word_to_DATE(interp: Interpreter): void;
|
|
89
|
+
word_TODAY(interp: Interpreter): void;
|
|
90
|
+
word_MONDAY(interp: Interpreter): void;
|
|
91
|
+
word_TUESDAY(interp: Interpreter): void;
|
|
92
|
+
word_WEDNESDAY(interp: Interpreter): void;
|
|
93
|
+
word_THURSDAY(interp: Interpreter): void;
|
|
94
|
+
word_FRIDAY(interp: Interpreter): void;
|
|
95
|
+
word_SATURDAY(interp: Interpreter): void;
|
|
96
|
+
word_SUNDAY(interp: Interpreter): void;
|
|
97
|
+
static get_day_this_week(day_of_week: any): Date;
|
|
98
|
+
word_ADD_DAYS(interp: Interpreter): void;
|
|
99
|
+
word_SUBTRACT_DATES(interp: Interpreter): void;
|
|
100
|
+
word_DATE_to_STR(interp: Interpreter): void;
|
|
101
|
+
word_DATE_to_INT(interp: Interpreter): void;
|
|
102
|
+
word_DATE_TIME_to_DATETIME(interp: Interpreter): void;
|
|
103
|
+
word_DATETIME_to_TIMESTAMP(interp: Interpreter): void;
|
|
104
|
+
word_TIMESTAMP_to_DATETIME(interp: Interpreter): void;
|
|
105
|
+
word_STR_to_DATETIME(interp: Interpreter): void;
|
|
106
|
+
word_STR_to_TIMESTAMP(interp: Interpreter): void;
|
|
107
|
+
word_DAYS_AGO(interp: Interpreter): void;
|
|
108
|
+
word_plus(interp: Interpreter): void;
|
|
109
|
+
word_times(interp: Interpreter): void;
|
|
110
|
+
word_divide_by(interp: Interpreter): void;
|
|
111
|
+
word_MOD(interp: Interpreter): void;
|
|
112
|
+
word_MEAN(interp: Interpreter): void;
|
|
113
|
+
word_MAX(interp: Interpreter): void;
|
|
114
|
+
word_MIN(interp: Interpreter): void;
|
|
115
|
+
word_ROUND(interp: Interpreter): void;
|
|
116
|
+
word_equal_equal(interp: Interpreter): void;
|
|
117
|
+
word_not_equal(interp: Interpreter): void;
|
|
118
|
+
word_greater_than(interp: Interpreter): void;
|
|
119
|
+
word_greater_than_or_equal(interp: Interpreter): void;
|
|
120
|
+
word_less_than(interp: Interpreter): void;
|
|
121
|
+
word_less_than_or_equal(interp: Interpreter): void;
|
|
122
|
+
word_OR(interp: Interpreter): void;
|
|
123
|
+
word_AND(interp: Interpreter): void;
|
|
124
|
+
word_NOT(interp: Interpreter): void;
|
|
125
|
+
word_IN(interp: Interpreter): void;
|
|
126
|
+
word_ANY(interp: Interpreter): void;
|
|
127
|
+
word_ALL(interp: Interpreter): void;
|
|
128
|
+
word_to_BOOL(interp: Interpreter): void;
|
|
129
|
+
word_to_INT(interp: Interpreter): void;
|
|
130
|
+
word_to_FLOAT(interp: Interpreter): void;
|
|
131
|
+
word_BUCKET(interp: Interpreter): void;
|
|
132
|
+
word_UNIFORM_RANDOM(interp: Interpreter): void;
|
|
133
|
+
word_RANGE_INDEX(interp: Interpreter): void;
|
|
134
|
+
word_RANGE_BUCKETS(interp: Interpreter): Promise<void>;
|
|
135
|
+
word_INFINITY(interp: Interpreter): Promise<void>;
|
|
136
|
+
word_bang_PUSH_ERROR(interp: Interpreter): void;
|
|
137
|
+
word_bang_WITH_KEY(interp: Interpreter): void;
|
|
138
|
+
word_bang_COMPARATOR(interp: Interpreter): void;
|
|
139
|
+
word_bang_PUSH_REST(interp: Interpreter): void;
|
|
140
|
+
word_bang_DEPTH(interp: Interpreter): void;
|
|
141
|
+
word_bang_OVERWRITE(interp: Interpreter): void;
|
|
142
|
+
word_bang_DELAY(interp: Interpreter): void;
|
|
143
|
+
word_bang_INTERPS(interp: Interpreter): void;
|
|
144
|
+
word_bang_NOTE_PROGRESS(interp: Interpreter): void;
|
|
145
|
+
word_URL_ENCODE(interp: Interpreter): void;
|
|
146
|
+
word_URL_DECODE(interp: Interpreter): void;
|
|
147
|
+
word_QUOTE_CHAR(interp: Interpreter): void;
|
|
148
|
+
word_QUOTED(interp: Interpreter): void;
|
|
149
|
+
word_CONSOLE_LOG(interp: Interpreter): void;
|
|
150
|
+
word_PROFILE_START(interp: Interpreter): void;
|
|
151
|
+
word_PROFILE_END(interp: Interpreter): void;
|
|
152
|
+
word_PROFILE_TIMESTAMP(interp: Interpreter): void;
|
|
153
|
+
word_PROFILE_DATA(interp: Interpreter): void;
|
|
154
|
+
word_NULL(interp: Interpreter): void;
|
|
155
|
+
word_DEFAULT(interp: Interpreter): void;
|
|
156
|
+
word_star_DEFAULT(interp: Interpreter): Promise<void>;
|
|
157
|
+
word_REC_DEFAULTS(interp: Interpreter): void;
|
|
158
|
+
word_l_REPEAT(interp: Interpreter): Promise<void>;
|
|
159
|
+
word_IDENTITY(_interp: Interpreter): Promise<void>;
|
|
160
|
+
word_to_FIXED(interp: Interpreter): void;
|
|
161
|
+
word_to_JSON(interp: Interpreter): void;
|
|
162
|
+
word_PRETTIFY(interp: Interpreter): void;
|
|
163
|
+
word_JSON_to(interp: Interpreter): void;
|
|
164
|
+
word_LOAD_SCREEN(interp: Interpreter): Promise<void>;
|
|
165
|
+
word_dot_s(interp: Interpreter): void;
|
|
166
|
+
word_minus(interp: Interpreter): void;
|
|
167
|
+
}
|