greybel-interpreter 2.6.10 → 2.6.12
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/dist/context.js +3 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/operations/evaluate.js +5 -4
- package/dist/types/nil.js +1 -1
- package/dist/utils/deep-equal.d.ts +1 -0
- package/dist/utils/deep-equal.js +43 -0
- package/dist/utils/next-tick.d.ts +1 -0
- package/dist/utils/next-tick.js +10 -0
- package/package.json +1 -1
package/dist/context.js
CHANGED
|
@@ -211,6 +211,9 @@ class OperationContext {
|
|
|
211
211
|
}
|
|
212
212
|
setPending(pending) {
|
|
213
213
|
this.processState.isPending = pending;
|
|
214
|
+
if (!this.processState.isPending && this.processState.isExit) {
|
|
215
|
+
this.processState.isExit = false;
|
|
216
|
+
}
|
|
214
217
|
return this;
|
|
215
218
|
}
|
|
216
219
|
lookupAllOfType(validate) {
|
|
@@ -235,7 +238,6 @@ class OperationContext {
|
|
|
235
238
|
return new Promise((resolve) => {
|
|
236
239
|
const check = () => {
|
|
237
240
|
if (!this.processState.isPending) {
|
|
238
|
-
this.processState.isExit = false;
|
|
239
241
|
resolve(this);
|
|
240
242
|
}
|
|
241
243
|
else {
|
package/dist/index.d.ts
CHANGED
|
@@ -43,3 +43,4 @@ export { CustomObject, CustomValueWithIntrinsics } from './types/with-intrinsics
|
|
|
43
43
|
export { PrepareError, RuntimeError } from './utils/error';
|
|
44
44
|
export { ObjectValue } from './utils/object-value';
|
|
45
45
|
export { Path } from './utils/path';
|
|
46
|
+
export { deepEqual } from './utils/deep-equal';
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Operation = exports.Not = exports.Noop = exports.NewInstance = exports.NegatedBinary = exports.MapOperation = exports.Literal = exports.List = exports.Include = exports.Import = exports.IfStatement = exports.Clause = exports.FunctionOperation = exports.For = exports.StringProcessorHandler = exports.NumberProcessorHandler = exports.MapProcessorHandler = exports.ListProcessorHandler = exports.handleString = exports.handleNumber = exports.handleMap = exports.handleList = exports.handle = exports.GenericProcessorHandler = exports.Evaluate = exports.DebuggerStatement = exports.Continue = exports.Chunk = exports.Call = exports.Break = exports.Block = exports.Assign = exports.Interpreter = exports.HandlerContainer = exports.ResourceHandler = exports.DefaultResourceHandler = exports.OutputHandler = exports.DefaultOutputHandler = exports.ErrorHandler = exports.DefaultErrorHandler = exports.CPSContext = exports.CPS = exports.Scope = exports.ProcessState = exports.OperationContext = exports.LoopState = exports.FunctionState = exports.Debugger = exports.ContextType = exports.ContextState = void 0;
|
|
4
|
-
exports.Path = exports.ObjectValue = exports.RuntimeError = exports.PrepareError = exports.CustomValueWithIntrinsics = exports.CustomObject = exports.CustomStringIterator = exports.CustomString = exports.CustomNumber = exports.CustomNil = exports.CustomMapIterator = exports.CustomMap = exports.CustomListIterator = exports.CustomList = exports.CustomFunction = exports.Argument = exports.DefaultType = exports.CustomBoolean = exports.CustomValue = exports.While = exports.Return = exports.ResolveResult = exports.Resolve = exports.OperationSegment = exports.IndexSegment = exports.IdentifierSegment = exports.Reference = void 0;
|
|
4
|
+
exports.deepEqual = exports.Path = exports.ObjectValue = exports.RuntimeError = exports.PrepareError = exports.CustomValueWithIntrinsics = exports.CustomObject = exports.CustomStringIterator = exports.CustomString = exports.CustomNumber = exports.CustomNil = exports.CustomMapIterator = exports.CustomMap = exports.CustomListIterator = exports.CustomList = exports.CustomFunction = exports.Argument = exports.DefaultType = exports.CustomBoolean = exports.CustomValue = exports.While = exports.Return = exports.ResolveResult = exports.Resolve = exports.OperationSegment = exports.IndexSegment = exports.IdentifierSegment = exports.Reference = void 0;
|
|
5
5
|
var context_1 = require("./context");
|
|
6
6
|
Object.defineProperty(exports, "ContextState", { enumerable: true, get: function () { return context_1.ContextState; } });
|
|
7
7
|
Object.defineProperty(exports, "ContextType", { enumerable: true, get: function () { return context_1.ContextType; } });
|
|
@@ -124,3 +124,5 @@ var object_value_1 = require("./utils/object-value");
|
|
|
124
124
|
Object.defineProperty(exports, "ObjectValue", { enumerable: true, get: function () { return object_value_1.ObjectValue; } });
|
|
125
125
|
var path_1 = require("./utils/path");
|
|
126
126
|
Object.defineProperty(exports, "Path", { enumerable: true, get: function () { return path_1.Path; } });
|
|
127
|
+
var deep_equal_1 = require("./utils/deep-equal");
|
|
128
|
+
Object.defineProperty(exports, "deepEqual", { enumerable: true, get: function () { return deep_equal_1.deepEqual; } });
|
|
@@ -19,6 +19,7 @@ const map_1 = require("../types/map");
|
|
|
19
19
|
const nil_1 = require("../types/nil");
|
|
20
20
|
const number_1 = require("../types/number");
|
|
21
21
|
const string_1 = require("../types/string");
|
|
22
|
+
const deep_equal_1 = require("../utils/deep-equal");
|
|
22
23
|
const operation_1 = require("./operation");
|
|
23
24
|
exports.GenericProcessorHandler = {
|
|
24
25
|
[greyscript_core_1.Operator.And]: (a, b) => new boolean_1.CustomBoolean(a.toTruthy() && b.toTruthy()),
|
|
@@ -125,13 +126,13 @@ exports.ListProcessorHandler = {
|
|
|
125
126
|
},
|
|
126
127
|
[greyscript_core_1.Operator.Equal]: (left, right) => {
|
|
127
128
|
if (right instanceof list_1.CustomList) {
|
|
128
|
-
return new boolean_1.CustomBoolean(
|
|
129
|
+
return new boolean_1.CustomBoolean((0, deep_equal_1.deepEqual)(left, right));
|
|
129
130
|
}
|
|
130
131
|
return default_1.DefaultType.Void;
|
|
131
132
|
},
|
|
132
133
|
[greyscript_core_1.Operator.NotEqual]: (left, right) => {
|
|
133
134
|
if (right instanceof list_1.CustomList) {
|
|
134
|
-
return new boolean_1.CustomBoolean(
|
|
135
|
+
return new boolean_1.CustomBoolean(!(0, deep_equal_1.deepEqual)(left, right));
|
|
135
136
|
}
|
|
136
137
|
return default_1.DefaultType.Void;
|
|
137
138
|
},
|
|
@@ -157,13 +158,13 @@ exports.MapProcessorHandler = {
|
|
|
157
158
|
},
|
|
158
159
|
[greyscript_core_1.Operator.Equal]: (left, right) => {
|
|
159
160
|
if (right instanceof map_1.CustomMap) {
|
|
160
|
-
return new boolean_1.CustomBoolean(
|
|
161
|
+
return new boolean_1.CustomBoolean((0, deep_equal_1.deepEqual)(left, right));
|
|
161
162
|
}
|
|
162
163
|
return default_1.DefaultType.Void;
|
|
163
164
|
},
|
|
164
165
|
[greyscript_core_1.Operator.NotEqual]: (left, right) => {
|
|
165
166
|
if (right instanceof map_1.CustomMap) {
|
|
166
|
-
return new boolean_1.CustomBoolean(
|
|
167
|
+
return new boolean_1.CustomBoolean(!(0, deep_equal_1.deepEqual)(left, right));
|
|
167
168
|
}
|
|
168
169
|
return default_1.DefaultType.Void;
|
|
169
170
|
}
|
package/dist/types/nil.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function deepEqual(a: any, b: any, maxDepth?: number): boolean;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deepEqual = void 0;
|
|
4
|
+
const list_1 = require("../types/list");
|
|
5
|
+
const map_1 = require("../types/map");
|
|
6
|
+
const with_intrinsics_1 = require("../types/with-intrinsics");
|
|
7
|
+
function equalInner(a, b, maxDepth, depth = 0) {
|
|
8
|
+
if (maxDepth <= depth)
|
|
9
|
+
return a === b;
|
|
10
|
+
if (a.value === b.value)
|
|
11
|
+
return true;
|
|
12
|
+
if (a && b && a instanceof with_intrinsics_1.CustomObject && b instanceof with_intrinsics_1.CustomObject) {
|
|
13
|
+
if (a.constructor !== b.constructor)
|
|
14
|
+
return false;
|
|
15
|
+
if (a instanceof list_1.CustomList) {
|
|
16
|
+
const length = a.value.length;
|
|
17
|
+
if (length !== b.value.length)
|
|
18
|
+
return false;
|
|
19
|
+
for (let i = length; i-- !== 0;)
|
|
20
|
+
if (!equalInner(a.value[i], b.value[i], maxDepth, depth + 1))
|
|
21
|
+
return false;
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
if (a instanceof map_1.CustomMap) {
|
|
25
|
+
if (a.value.size !== b.value.size)
|
|
26
|
+
return false;
|
|
27
|
+
for (const i of a.value.keys()) {
|
|
28
|
+
if (!b.value.has(i) ||
|
|
29
|
+
!equalInner(a.value.get(i), b.value.get(i), maxDepth, depth + 1)) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
// true if both NaN, false otherwise
|
|
38
|
+
return Number.isNaN(a.value) && Number.isNaN(b.value);
|
|
39
|
+
}
|
|
40
|
+
function deepEqual(a, b, maxDepth = 10) {
|
|
41
|
+
return equalInner(a, b, maxDepth);
|
|
42
|
+
}
|
|
43
|
+
exports.deepEqual = deepEqual;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const nextTick: () => Promise<void>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.nextTick = void 0;
|
|
4
|
+
const set_immediate_1 = require("./set-immediate");
|
|
5
|
+
const nextTick = () => {
|
|
6
|
+
return new Promise((resolve) => {
|
|
7
|
+
(0, set_immediate_1.setImmediate)(resolve);
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
exports.nextTick = nextTick;
|