greybel-interpreter 0.6.9 → 0.7.2

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 (83) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +2 -2
  3. package/dist/context.d.ts +98 -98
  4. package/dist/context.js +456 -456
  5. package/dist/cps.d.ts +17 -17
  6. package/dist/cps.js +872 -871
  7. package/dist/custom-types/boolean.d.ts +12 -12
  8. package/dist/custom-types/boolean.js +47 -47
  9. package/dist/custom-types/list.d.ts +26 -26
  10. package/dist/custom-types/list.js +236 -236
  11. package/dist/custom-types/map.d.ts +26 -26
  12. package/dist/custom-types/map.js +245 -245
  13. package/dist/custom-types/nil.d.ts +10 -10
  14. package/dist/custom-types/nil.js +44 -44
  15. package/dist/custom-types/number.d.ts +12 -12
  16. package/dist/custom-types/number.js +47 -47
  17. package/dist/custom-types/string.d.ts +25 -25
  18. package/dist/custom-types/string.js +172 -172
  19. package/dist/expressions/assign.d.ts +13 -13
  20. package/dist/expressions/assign.js +174 -174
  21. package/dist/expressions/binary-negated-expression.d.ts +18 -18
  22. package/dist/expressions/binary-negated-expression.js +127 -127
  23. package/dist/expressions/call.d.ts +14 -14
  24. package/dist/expressions/call.js +209 -208
  25. package/dist/expressions/import.d.ts +14 -14
  26. package/dist/expressions/import.js +155 -155
  27. package/dist/expressions/include.d.ts +13 -13
  28. package/dist/expressions/include.js +132 -132
  29. package/dist/expressions/list.d.ts +14 -14
  30. package/dist/expressions/list.js +142 -134
  31. package/dist/expressions/logical-and-binary.d.ts +22 -22
  32. package/dist/expressions/logical-and-binary.js +222 -222
  33. package/dist/expressions/map.d.ts +19 -19
  34. package/dist/expressions/map.js +197 -197
  35. package/dist/expressions/path.d.ts +31 -31
  36. package/dist/expressions/path.js +384 -383
  37. package/dist/index.d.ts +36 -36
  38. package/dist/index.js +93 -89
  39. package/dist/interpreter.d.ts +29 -29
  40. package/dist/interpreter.js +210 -210
  41. package/dist/operations/argument.d.ts +8 -8
  42. package/dist/operations/argument.js +145 -145
  43. package/dist/operations/body.d.ts +8 -8
  44. package/dist/operations/body.js +140 -140
  45. package/dist/operations/break.d.ts +7 -7
  46. package/dist/operations/break.js +34 -34
  47. package/dist/operations/continue.d.ts +7 -7
  48. package/dist/operations/continue.js +34 -34
  49. package/dist/operations/debugger.d.ts +7 -7
  50. package/dist/operations/debugger.js +32 -32
  51. package/dist/operations/else-if.d.ts +12 -12
  52. package/dist/operations/else-if.js +31 -31
  53. package/dist/operations/else.d.ts +10 -10
  54. package/dist/operations/else.js +30 -30
  55. package/dist/operations/for.d.ts +16 -16
  56. package/dist/operations/for.js +143 -143
  57. package/dist/operations/function.d.ts +26 -26
  58. package/dist/operations/function.js +145 -145
  59. package/dist/operations/if-statement.d.ts +8 -8
  60. package/dist/operations/if-statement.js +169 -169
  61. package/dist/operations/if.d.ts +12 -12
  62. package/dist/operations/if.js +31 -31
  63. package/dist/operations/new.d.ts +11 -11
  64. package/dist/operations/new.js +97 -96
  65. package/dist/operations/not.d.ts +11 -11
  66. package/dist/operations/not.js +96 -95
  67. package/dist/operations/reference.d.ts +11 -11
  68. package/dist/operations/reference.js +103 -102
  69. package/dist/operations/return.d.ts +11 -11
  70. package/dist/operations/return.js +106 -106
  71. package/dist/operations/while.d.ts +14 -14
  72. package/dist/operations/while.js +145 -133
  73. package/dist/resource.d.ts +9 -9
  74. package/dist/resource.js +29 -29
  75. package/dist/typer.d.ts +6 -6
  76. package/dist/typer.js +95 -95
  77. package/dist/types/custom-type.d.ts +22 -22
  78. package/dist/types/custom-type.js +67 -67
  79. package/dist/types/expression.d.ts +7 -7
  80. package/dist/types/expression.js +9 -9
  81. package/dist/types/operation.d.ts +10 -10
  82. package/dist/types/operation.js +38 -38
  83. package/package.json +44 -44
@@ -1,133 +1,145 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
- return new (P || (P = Promise))(function (resolve, reject) {
20
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
- step((generator = generator.apply(thisArg, _arguments || [])).next());
24
- });
25
- };
26
- var __generator = (this && this.__generator) || function (thisArg, body) {
27
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
- function verb(n) { return function (v) { return step([n, v]); }; }
30
- function step(op) {
31
- if (f) throw new TypeError("Generator is already executing.");
32
- while (_) try {
33
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
- if (y = 0, t) op = [op[0] & 2, t.value];
35
- switch (op[0]) {
36
- case 0: case 1: t = op; break;
37
- case 4: _.label++; return { value: op[1], done: false };
38
- case 5: _.label++; y = op[1]; op = [0]; continue;
39
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
- default:
41
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
- if (t[2]) _.ops.pop();
46
- _.trys.pop(); continue;
47
- }
48
- op = body.call(thisArg, _);
49
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
- }
52
- };
53
- Object.defineProperty(exports, "__esModule", { value: true });
54
- var operation_1 = require("../types/operation");
55
- var expression_1 = require("../types/expression");
56
- var context_1 = require("../context");
57
- var typer_1 = require("../typer");
58
- var WhileOperation = /** @class */ (function (_super) {
59
- __extends(WhileOperation, _super);
60
- function WhileOperation(ast, options) {
61
- var _this = _super.call(this) || this;
62
- var me = _this;
63
- me.ast = ast;
64
- me.condition = options.condition;
65
- me.body = options.body;
66
- return _this;
67
- }
68
- WhileOperation.prototype.run = function (operationContext) {
69
- return __awaiter(this, void 0, void 0, function () {
70
- var me, opc, loopContext, resolveCondition;
71
- return __generator(this, function (_a) {
72
- switch (_a.label) {
73
- case 0:
74
- me = this;
75
- opc = operationContext.fork({
76
- type: context_1.ContextType.LOOP,
77
- state: context_1.ContextState.TEMPORARY
78
- });
79
- loopContext = {
80
- isBreak: false,
81
- isContinue: false
82
- };
83
- resolveCondition = function (item) {
84
- return __awaiter(this, void 0, void 0, function () {
85
- var value, value;
86
- return __generator(this, function (_a) {
87
- switch (_a.label) {
88
- case 0:
89
- if (!(item instanceof expression_1.Expression)) return [3 /*break*/, 2];
90
- return [4 /*yield*/, item.get(opc)];
91
- case 1:
92
- value = _a.sent();
93
- return [2 /*return*/, value.toTruthy()];
94
- case 2:
95
- if (!(item instanceof operation_1.Operation)) return [3 /*break*/, 4];
96
- return [4 /*yield*/, item.get(opc)];
97
- case 3:
98
- value = _a.sent();
99
- return [2 /*return*/, value.toTruthy()];
100
- case 4:
101
- if ((0, typer_1.isCustomValue)(item)) {
102
- return [2 /*return*/, item.toTruthy()];
103
- }
104
- _a.label = 5;
105
- case 5:
106
- operationContext.debugger.raise('Unexpected condition', me, item);
107
- return [2 /*return*/];
108
- }
109
- });
110
- });
111
- };
112
- opc.setMemory('loopContext', loopContext);
113
- _a.label = 1;
114
- case 1: return [4 /*yield*/, resolveCondition(me.condition)];
115
- case 2:
116
- if (!_a.sent()) return [3 /*break*/, 4];
117
- loopContext.isContinue = false;
118
- return [4 /*yield*/, me.body.run(opc)];
119
- case 3:
120
- _a.sent();
121
- if (loopContext.isContinue)
122
- return [3 /*break*/, 1];
123
- if (loopContext.isBreak)
124
- return [3 /*break*/, 4];
125
- return [3 /*break*/, 1];
126
- case 4: return [2 /*return*/];
127
- }
128
- });
129
- });
130
- };
131
- return WhileOperation;
132
- }(operation_1.Operation));
133
- exports.default = WhileOperation;
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (_) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ var operation_1 = require("../types/operation");
55
+ var expression_1 = require("../types/expression");
56
+ var context_1 = require("../context");
57
+ var typer_1 = require("../typer");
58
+ var WhileOperation = /** @class */ (function (_super) {
59
+ __extends(WhileOperation, _super);
60
+ function WhileOperation(ast, options) {
61
+ var _this = _super.call(this) || this;
62
+ var me = _this;
63
+ me.ast = ast;
64
+ me.condition = options.condition;
65
+ me.body = options.body;
66
+ return _this;
67
+ }
68
+ WhileOperation.prototype.run = function (operationContext) {
69
+ return __awaiter(this, void 0, void 0, function () {
70
+ var me, opc, loopContext, resolveCondition;
71
+ var _this = this;
72
+ return __generator(this, function (_a) {
73
+ me = this;
74
+ opc = operationContext.fork({
75
+ type: context_1.ContextType.LOOP,
76
+ state: context_1.ContextState.TEMPORARY
77
+ });
78
+ loopContext = {
79
+ isBreak: false,
80
+ isContinue: false
81
+ };
82
+ resolveCondition = function (item) {
83
+ return __awaiter(this, void 0, void 0, function () {
84
+ var value, value;
85
+ return __generator(this, function (_a) {
86
+ switch (_a.label) {
87
+ case 0:
88
+ if (!(item instanceof expression_1.Expression)) return [3 /*break*/, 2];
89
+ return [4 /*yield*/, item.get(opc)];
90
+ case 1:
91
+ value = _a.sent();
92
+ return [2 /*return*/, value.toTruthy()];
93
+ case 2:
94
+ if (!(item instanceof operation_1.Operation)) return [3 /*break*/, 4];
95
+ return [4 /*yield*/, item.get(opc)];
96
+ case 3:
97
+ value = _a.sent();
98
+ return [2 /*return*/, value.toTruthy()];
99
+ case 4:
100
+ if ((0, typer_1.isCustomValue)(item)) {
101
+ return [2 /*return*/, item.toTruthy()];
102
+ }
103
+ _a.label = 5;
104
+ case 5:
105
+ operationContext.debugger.raise('Unexpected condition', me, item);
106
+ return [2 /*return*/];
107
+ }
108
+ });
109
+ });
110
+ };
111
+ opc.setMemory('loopContext', loopContext);
112
+ return [2 /*return*/, new Promise(function (resolve, reject) {
113
+ var iteration = function () { return __awaiter(_this, void 0, void 0, function () {
114
+ var condition;
115
+ return __generator(this, function (_a) {
116
+ switch (_a.label) {
117
+ case 0:
118
+ loopContext.isContinue = false;
119
+ return [4 /*yield*/, resolveCondition(me.condition)];
120
+ case 1:
121
+ condition = _a.sent();
122
+ if (!condition) {
123
+ resolve();
124
+ return [2 /*return*/];
125
+ }
126
+ return [4 /*yield*/, me.body.run(opc)];
127
+ case 2:
128
+ _a.sent();
129
+ if (loopContext.isBreak || operationContext.isExit()) {
130
+ resolve();
131
+ return [2 /*return*/];
132
+ }
133
+ process.nextTick(iteration);
134
+ return [2 /*return*/];
135
+ }
136
+ });
137
+ }); };
138
+ iteration();
139
+ })];
140
+ });
141
+ });
142
+ };
143
+ return WhileOperation;
144
+ }(operation_1.Operation));
145
+ exports.default = WhileOperation;
@@ -1,9 +1,9 @@
1
- export interface ResourceHandler {
2
- getTargetRelativeTo(source: string, target: string): Promise<string>;
3
- has(target: string): Promise<boolean>;
4
- get(target: string): Promise<string>;
5
- resolve(target: string): Promise<string>;
6
- }
7
- export declare class ResourceProvider {
8
- getHandler(): ResourceHandler;
9
- }
1
+ export interface ResourceHandler {
2
+ getTargetRelativeTo(source: string, target: string): Promise<string>;
3
+ has(target: string): Promise<boolean>;
4
+ get(target: string): Promise<string>;
5
+ resolve(target: string): Promise<string>;
6
+ }
7
+ export declare class ResourceProvider {
8
+ getHandler(): ResourceHandler;
9
+ }
package/dist/resource.js CHANGED
@@ -1,29 +1,29 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ResourceProvider = void 0;
4
- var ResourceProvider = /** @class */ (function () {
5
- function ResourceProvider() {
6
- }
7
- ResourceProvider.prototype.getHandler = function () {
8
- var fs = require('fs');
9
- var path = require('path');
10
- return {
11
- getTargetRelativeTo: function (source, target) {
12
- var base = path.resolve(source, '..');
13
- var result = path.resolve(base, target);
14
- return Promise.resolve(fs.existsSync(result) ? result : result + '.src');
15
- },
16
- has: function (target) {
17
- return Promise.resolve(fs.existsSync(target));
18
- },
19
- get: function (target) {
20
- return Promise.resolve(fs.readFileSync(target, 'utf8'));
21
- },
22
- resolve: function (target) {
23
- return Promise.resolve(path.resolve(target));
24
- }
25
- };
26
- };
27
- return ResourceProvider;
28
- }());
29
- exports.ResourceProvider = ResourceProvider;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResourceProvider = void 0;
4
+ var ResourceProvider = /** @class */ (function () {
5
+ function ResourceProvider() {
6
+ }
7
+ ResourceProvider.prototype.getHandler = function () {
8
+ var fs = require('fs');
9
+ var path = require('path');
10
+ return {
11
+ getTargetRelativeTo: function (source, target) {
12
+ var base = path.resolve(source, '..');
13
+ var result = path.resolve(base, target);
14
+ return Promise.resolve(fs.existsSync(result) ? result : result + '.src');
15
+ },
16
+ has: function (target) {
17
+ return Promise.resolve(fs.existsSync(target));
18
+ },
19
+ get: function (target) {
20
+ return Promise.resolve(fs.readFileSync(target, 'utf8'));
21
+ },
22
+ resolve: function (target) {
23
+ return Promise.resolve(path.resolve(target));
24
+ }
25
+ };
26
+ };
27
+ return ResourceProvider;
28
+ }());
29
+ exports.ResourceProvider = ResourceProvider;
package/dist/typer.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- export declare const isCustomValue: (value: any) => boolean;
2
- export declare const isCustomMap: (value: any) => boolean;
3
- export declare const isCustomList: (value: any) => boolean;
4
- export declare const isCustomString: (value: any) => boolean;
5
- export declare const isCustomNumber: (value: any) => boolean;
6
- export declare const cast: (value: any) => any;
1
+ export declare const isCustomValue: (value: any) => boolean;
2
+ export declare const isCustomMap: (value: any) => boolean;
3
+ export declare const isCustomList: (value: any) => boolean;
4
+ export declare const isCustomString: (value: any) => boolean;
5
+ export declare const isCustomNumber: (value: any) => boolean;
6
+ export declare const cast: (value: any) => any;
package/dist/typer.js CHANGED
@@ -1,95 +1,95 @@
1
- "use strict";
2
- var __read = (this && this.__read) || function (o, n) {
3
- var m = typeof Symbol === "function" && o[Symbol.iterator];
4
- if (!m) return o;
5
- var i = m.call(o), r, ar = [], e;
6
- try {
7
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
- }
9
- catch (error) { e = { error: error }; }
10
- finally {
11
- try {
12
- if (r && !r.done && (m = i["return"])) m.call(i);
13
- }
14
- finally { if (e) throw e.error; }
15
- }
16
- return ar;
17
- };
18
- var __importDefault = (this && this.__importDefault) || function (mod) {
19
- return (mod && mod.__esModule) ? mod : { "default": mod };
20
- };
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.cast = exports.isCustomNumber = exports.isCustomString = exports.isCustomList = exports.isCustomMap = exports.isCustomValue = void 0;
23
- var boolean_1 = __importDefault(require("./custom-types/boolean"));
24
- var list_1 = __importDefault(require("./custom-types/list"));
25
- var map_1 = __importDefault(require("./custom-types/map"));
26
- var nil_1 = __importDefault(require("./custom-types/nil"));
27
- var number_1 = __importDefault(require("./custom-types/number"));
28
- var string_1 = __importDefault(require("./custom-types/string"));
29
- var operation_1 = require("./types/operation");
30
- var isCustomValue = function (value) {
31
- return value instanceof boolean_1.default ||
32
- value instanceof number_1.default ||
33
- value instanceof list_1.default ||
34
- value instanceof map_1.default ||
35
- value instanceof nil_1.default ||
36
- value instanceof string_1.default;
37
- };
38
- exports.isCustomValue = isCustomValue;
39
- var isCustomMap = function (value) {
40
- return value instanceof map_1.default;
41
- };
42
- exports.isCustomMap = isCustomMap;
43
- var isCustomList = function (value) {
44
- return value instanceof list_1.default;
45
- };
46
- exports.isCustomList = isCustomList;
47
- var isCustomString = function (value) {
48
- return value instanceof string_1.default;
49
- };
50
- exports.isCustomString = isCustomString;
51
- var isCustomNumber = function (value) {
52
- return value instanceof number_1.default;
53
- };
54
- exports.isCustomNumber = isCustomNumber;
55
- var cast = function (value) {
56
- if (value == null)
57
- return new nil_1.default();
58
- if ((0, exports.isCustomValue)(value) || value instanceof operation_1.Operation) {
59
- return value;
60
- }
61
- var type = typeof value;
62
- if (type === 'string') {
63
- return new string_1.default(value);
64
- }
65
- else if (type === 'number') {
66
- return new number_1.default(value);
67
- }
68
- else if (type === 'boolean') {
69
- return new boolean_1.default(value);
70
- }
71
- else if (type === 'object') {
72
- if (Array.isArray(value)) {
73
- value = value.map(exports.cast);
74
- return new list_1.default(value);
75
- }
76
- var result_1 = new Map();
77
- if (value instanceof Map) {
78
- value.forEach(function (item, key) {
79
- result_1.set(key, (0, exports.cast)(item));
80
- });
81
- }
82
- else {
83
- Object.entries(value).forEach(function (_a) {
84
- var _b = __read(_a, 2), key = _b[0], item = _b[1];
85
- result_1.set(key, (0, exports.cast)(item));
86
- });
87
- }
88
- return new map_1.default(result_1);
89
- }
90
- else if (type === 'function') {
91
- return value;
92
- }
93
- throw new Error("Unexpected type ".concat(type));
94
- };
95
- exports.cast = cast;
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ var __importDefault = (this && this.__importDefault) || function (mod) {
19
+ return (mod && mod.__esModule) ? mod : { "default": mod };
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.cast = exports.isCustomNumber = exports.isCustomString = exports.isCustomList = exports.isCustomMap = exports.isCustomValue = void 0;
23
+ var boolean_1 = __importDefault(require("./custom-types/boolean"));
24
+ var list_1 = __importDefault(require("./custom-types/list"));
25
+ var map_1 = __importDefault(require("./custom-types/map"));
26
+ var nil_1 = __importDefault(require("./custom-types/nil"));
27
+ var number_1 = __importDefault(require("./custom-types/number"));
28
+ var string_1 = __importDefault(require("./custom-types/string"));
29
+ var operation_1 = require("./types/operation");
30
+ var isCustomValue = function (value) {
31
+ return value instanceof boolean_1.default ||
32
+ value instanceof number_1.default ||
33
+ value instanceof list_1.default ||
34
+ value instanceof map_1.default ||
35
+ value instanceof nil_1.default ||
36
+ value instanceof string_1.default;
37
+ };
38
+ exports.isCustomValue = isCustomValue;
39
+ var isCustomMap = function (value) {
40
+ return value instanceof map_1.default;
41
+ };
42
+ exports.isCustomMap = isCustomMap;
43
+ var isCustomList = function (value) {
44
+ return value instanceof list_1.default;
45
+ };
46
+ exports.isCustomList = isCustomList;
47
+ var isCustomString = function (value) {
48
+ return value instanceof string_1.default;
49
+ };
50
+ exports.isCustomString = isCustomString;
51
+ var isCustomNumber = function (value) {
52
+ return value instanceof number_1.default;
53
+ };
54
+ exports.isCustomNumber = isCustomNumber;
55
+ var cast = function (value) {
56
+ if (value == null)
57
+ return new nil_1.default();
58
+ if ((0, exports.isCustomValue)(value) || value instanceof operation_1.Operation) {
59
+ return value;
60
+ }
61
+ var type = typeof value;
62
+ if (type === 'string') {
63
+ return new string_1.default(value);
64
+ }
65
+ else if (type === 'number') {
66
+ return new number_1.default(value);
67
+ }
68
+ else if (type === 'boolean') {
69
+ return new boolean_1.default(value);
70
+ }
71
+ else if (type === 'object') {
72
+ if (Array.isArray(value)) {
73
+ value = value.map(exports.cast);
74
+ return new list_1.default(value);
75
+ }
76
+ var result_1 = new Map();
77
+ if (value instanceof Map) {
78
+ value.forEach(function (item, key) {
79
+ result_1.set(key, (0, exports.cast)(item));
80
+ });
81
+ }
82
+ else {
83
+ Object.entries(value).forEach(function (_a) {
84
+ var _b = __read(_a, 2), key = _b[0], item = _b[1];
85
+ result_1.set(key, (0, exports.cast)(item));
86
+ });
87
+ }
88
+ return new map_1.default(result_1);
89
+ }
90
+ else if (type === 'function') {
91
+ return value;
92
+ }
93
+ throw new Error("Unexpected type ".concat(type));
94
+ };
95
+ exports.cast = cast;
@@ -1,22 +1,22 @@
1
- export declare abstract class CustomType {
2
- static intrinsics: Map<string, Function>;
3
- getType(): string;
4
- toNumber(): number;
5
- toString(): string;
6
- toTruthy(): boolean;
7
- valueOf(): any;
8
- }
9
- export declare abstract class CustomLiteralType extends CustomType {
10
- value: any;
11
- }
12
- export declare abstract class CustomObjectType extends CustomType {
13
- value: any;
14
- has(path: any[]): Promise<boolean>;
15
- set(path: any[], value: any): Promise<void>;
16
- get(path: any[]): Promise<any>;
17
- getCallable(path: any[]): Promise<Callable>;
18
- }
19
- export interface Callable {
20
- origin: any;
21
- context: any;
22
- }
1
+ export declare abstract class CustomType {
2
+ static intrinsics: Map<string, Function>;
3
+ getType(): string;
4
+ toNumber(): number;
5
+ toString(): string;
6
+ toTruthy(): boolean;
7
+ valueOf(): any;
8
+ }
9
+ export declare abstract class CustomLiteralType extends CustomType {
10
+ value: any;
11
+ }
12
+ export declare abstract class CustomObjectType extends CustomType {
13
+ value: any;
14
+ has(path: any[]): Promise<boolean>;
15
+ set(path: any[], value: any): Promise<void>;
16
+ get(path: any[]): Promise<any>;
17
+ getCallable(path: any[]): Promise<Callable>;
18
+ }
19
+ export interface Callable {
20
+ origin: any;
21
+ context: any;
22
+ }