greybel-interpreter 0.4.4 → 0.4.8

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 CHANGED
@@ -202,10 +202,10 @@ var Debugger = /** @class */ (function () {
202
202
  resolve();
203
203
  }
204
204
  else {
205
- setImmediate(check);
205
+ setTimeout(check, 10);
206
206
  }
207
207
  };
208
- setImmediate(check);
208
+ setTimeout(check, 10);
209
209
  });
210
210
  };
211
211
  Debugger.prototype.interact = function (operationContext, item) {
@@ -272,12 +272,16 @@ var OperationContext = /** @class */ (function () {
272
272
  if (state.pending) {
273
273
  state.exit = true;
274
274
  return new Promise(function (resolve) {
275
- setImmediate(function () {
275
+ var check = function () {
276
276
  if (!state.pending) {
277
277
  state.exit = false;
278
278
  resolve(me);
279
279
  }
280
- });
280
+ else {
281
+ setTimeout(check, 10);
282
+ }
283
+ };
284
+ setTimeout(check, 10);
281
285
  });
282
286
  }
283
287
  return Promise.reject(new Error('No running process found.'));
package/dist/cps.js CHANGED
@@ -665,7 +665,7 @@ var CPSMap = function (visit, context) {
665
665
  return new call_1.default(item).prepare(visit);
666
666
  },
667
667
  'CallStatement': function (item) {
668
- return new call_1.default(item).prepare(visit);
668
+ return visit(item.expression);
669
669
  },
670
670
  'FeatureImportExpression': function (item) {
671
671
  return __awaiter(this, void 0, void 0, function () {
@@ -716,7 +716,7 @@ var CPSMap = function (visit, context) {
716
716
  resourceHandler = context.resourceHandler;
717
717
  return [4 /*yield*/, resourceHandler.getTargetRelativeTo(context.target,
718
718
  // @ts-ignore: FileSystemDirectory is always a string
719
- item.fileSystemDirectory.value)];
719
+ item.fileSystemDirectory)];
720
720
  case 1:
721
721
  target = _a.sent();
722
722
  return [4 /*yield*/, context.resourceHandler.get(target)];
@@ -162,7 +162,7 @@ var AssignExpression = /** @class */ (function (_super) {
162
162
  });
163
163
  });
164
164
  };
165
- operationContext.debugger.debug('Line', me.ast.line, 'AssignExpression', 'get', 'expr', me.expr);
165
+ operationContext.debugger.debug('Line', me.ast.start.line, 'AssignExpression', 'get', 'expr', me.expr);
166
166
  return [4 /*yield*/, evaluate(me.expr)];
167
167
  case 1: return [2 /*return*/, _a.sent()];
168
168
  }
@@ -123,7 +123,7 @@ var BinaryNegatedExpression = /** @class */ (function (_super) {
123
123
  });
124
124
  });
125
125
  };
126
- operationContext.debugger.debug('Line', me.ast.line, 'BinaryNegatedExpression', 'get', 'expr', me.expr);
126
+ operationContext.debugger.debug('Line', me.ast.start.line, 'BinaryNegatedExpression', 'get', 'expr', me.expr);
127
127
  return evaluate(me.expr);
128
128
  };
129
129
  return BinaryNegatedExpression;
@@ -77,7 +77,6 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
77
77
  };
78
78
  Object.defineProperty(exports, "__esModule", { value: true });
79
79
  exports.ExpressionSegment = void 0;
80
- var greyscript_core_1 = require("greyscript-core");
81
80
  var expression_1 = require("../types/expression");
82
81
  var operation_1 = require("../types/operation");
83
82
  var typer_1 = require("../typer");
@@ -125,9 +124,6 @@ var CallExpression = /** @class */ (function (_super) {
125
124
  return __generator(this, function (_c) {
126
125
  switch (_c.label) {
127
126
  case 0:
128
- if (greyscript_core_1.ASTType.CallStatement === node.type) {
129
- return [2 /*return*/, buildExpression(node.expression)];
130
- }
131
127
  _a = ExpressionSegment.bind;
132
128
  return [4 /*yield*/, visit(node.base)];
133
129
  case 1:
@@ -169,7 +165,7 @@ var CallExpression = /** @class */ (function (_super) {
169
165
  return [4 /*yield*/, node.path.get(opc, me.expr)];
170
166
  case 2:
171
167
  pathExpr = _f.sent();
172
- operationContext.debugger.debug('Line', me.ast.line, 'CallExpression', 'pathExpr', pathExpr);
168
+ operationContext.debugger.debug('Line', me.ast.start.line, 'CallExpression', 'pathExpr', pathExpr);
173
169
  if (!pathExpr.handle) return [3 /*break*/, 8];
174
170
  if (!(0, typer_1.isCustomMap)(pathExpr.handle)) return [3 /*break*/, 7];
175
171
  return [4 /*yield*/, pathExpr.handle.getCallable(pathExpr.path)];
@@ -203,7 +199,7 @@ var CallExpression = /** @class */ (function (_super) {
203
199
  });
204
200
  });
205
201
  };
206
- operationContext.debugger.debug('Line', me.ast.line, 'CallExpression', 'get', 'expr', me.expr);
202
+ operationContext.debugger.debug('Line', me.ast.start.line, 'CallExpression', 'get', 'expr', me.expr);
207
203
  return evaluate(me.expr);
208
204
  };
209
205
  return CallExpression;
@@ -143,7 +143,7 @@ var ImportExpression = /** @class */ (function (_super) {
143
143
  });
144
144
  });
145
145
  };
146
- operationContext.debugger.debug('Line', me.ast.line, 'ImportExpression', 'get', 'expr', me.expr);
146
+ operationContext.debugger.debug('Line', me.ast.start.line, 'ImportExpression', 'get', 'expr', me.expr);
147
147
  return [4 /*yield*/, evaluate(me.expr)];
148
148
  case 1: return [2 /*return*/, _a.sent()];
149
149
  }
@@ -120,7 +120,7 @@ var IncludeExpression = /** @class */ (function (_super) {
120
120
  });
121
121
  });
122
122
  };
123
- operationContext.debugger.debug('Line', me.ast.line, 'IncludeExpression', 'get', 'expr', me.expr);
123
+ operationContext.debugger.debug('Line', me.ast.start.line, 'IncludeExpression', 'get', 'expr', me.expr);
124
124
  return [4 /*yield*/, evaluate(me.expr)];
125
125
  case 1: return [2 /*return*/, _a.sent()];
126
126
  }
@@ -126,7 +126,7 @@ var ListExpression = /** @class */ (function (_super) {
126
126
  });
127
127
  });
128
128
  };
129
- operationContext.debugger.debug('Line', me.ast.line, 'ListExpression', 'get', 'expr', me.expr);
129
+ operationContext.debugger.debug('Line', me.ast.start.line, 'ListExpression', 'get', 'expr', me.expr);
130
130
  return evaluate(me.expr.values);
131
131
  };
132
132
  return ListExpression;
@@ -204,7 +204,7 @@ var LogicalAndBinaryExpression = /** @class */ (function (_super) {
204
204
  }
205
205
  });
206
206
  }); };
207
- operationContext.debugger.debug('Line', me.ast.line, 'LogicalAndBinaryExpression', 'get', 'expr', me.expr);
207
+ operationContext.debugger.debug('Line', me.ast.start.line, 'LogicalAndBinaryExpression', 'get', 'expr', me.expr);
208
208
  return evaluate(me.expr);
209
209
  };
210
210
  return LogicalAndBinaryExpression;
@@ -110,12 +110,11 @@ var MapExpression = /** @class */ (function (_super) {
110
110
  return __generator(this, function (_b) {
111
111
  switch (_b.label) {
112
112
  case 0:
113
- _a = {};
114
- return [4 /*yield*/, visit(item.key)];
115
- case 1:
116
- _a.key = _b.sent();
113
+ _a = {
114
+ key: item.key
115
+ };
117
116
  return [4 /*yield*/, visit(item.value)];
118
- case 2: return [2 /*return*/, (_a.value = _b.sent(),
117
+ case 1: return [2 /*return*/, (_a.value = _b.sent(),
119
118
  _a)];
120
119
  }
121
120
  });
@@ -147,12 +146,7 @@ var MapExpression = /** @class */ (function (_super) {
147
146
  current = values_1_1.value;
148
147
  key = void 0;
149
148
  value = void 0;
150
- if ((0, typer_1.isCustomValue)(current.key)) {
151
- key = current.key.valueOf();
152
- }
153
- else {
154
- operationContext.debugger.raise('Unexpected key', me, current.key);
155
- }
149
+ key = current.key;
156
150
  if (!(0, typer_1.isCustomValue)(current.value)) return [3 /*break*/, 3];
157
151
  value = current.value;
158
152
  return [3 /*break*/, 6];
@@ -188,7 +182,7 @@ var MapExpression = /** @class */ (function (_super) {
188
182
  });
189
183
  });
190
184
  };
191
- operationContext.debugger.debug('Line', me.ast.line, 'MapExpression', 'get', 'expr', me.expr);
185
+ operationContext.debugger.debug('Line', me.ast.start.line, 'MapExpression', 'get', 'expr', me.expr);
192
186
  return evaluate(me.expr.values);
193
187
  };
194
188
  return MapExpression;
@@ -315,7 +315,7 @@ var PathExpression = /** @class */ (function (_super) {
315
315
  });
316
316
  });
317
317
  };
318
- operationContext.debugger.debug('Line', me.ast.line, 'PathExpression', 'get', 'expr', me.expr);
318
+ operationContext.debugger.debug('Line', me.ast.start.line, 'PathExpression', 'get', 'expr', me.expr);
319
319
  return [4 /*yield*/, evaluate(me.expr)];
320
320
  case 1:
321
321
  resultExpr = _c.sent();
@@ -186,10 +186,10 @@ var Interpreter = /** @class */ (function (_super) {
186
186
  me.debugger.raise(err_2);
187
187
  return [3 /*break*/, 8];
188
188
  case 7:
189
- me.apiContext.setPending(false);
190
- setImmediate(function () {
189
+ setTimeout(function () {
190
+ me.apiContext.setPending(false);
191
191
  me.emit('exit', me);
192
- });
192
+ }, 100);
193
193
  return [7 /*endfinally*/];
194
194
  case 8: return [2 /*return*/, me];
195
195
  }
@@ -67,8 +67,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
67
67
  Object.defineProperty(exports, "__esModule", { value: true });
68
68
  var typer_1 = require("../typer");
69
69
  var operation_1 = require("../types/operation");
70
- var expression_1 = require("../types/expression");
70
+ var path_1 = __importDefault(require("../expressions/path"));
71
71
  var assign_1 = __importDefault(require("../expressions/assign"));
72
+ var nil_1 = __importDefault(require("../custom-types/nil"));
72
73
  var ArgumentOperation = /** @class */ (function (_super) {
73
74
  __extends(ArgumentOperation, _super);
74
75
  function ArgumentOperation(ast) {
@@ -80,19 +81,19 @@ var ArgumentOperation = /** @class */ (function (_super) {
80
81
  }
81
82
  ArgumentOperation.prototype.get = function (operationContext) {
82
83
  return __awaiter(this, void 0, void 0, function () {
83
- var me, stack, args, stack_1, stack_1_1, entity, _a, _b, _c, _d, e_1_1;
84
- var e_1, _e;
85
- return __generator(this, function (_f) {
86
- switch (_f.label) {
84
+ var me, stack, args, stack_1, stack_1_1, entity, _a, _b, arg, e_1_1;
85
+ var e_1, _c;
86
+ return __generator(this, function (_d) {
87
+ switch (_d.label) {
87
88
  case 0:
88
89
  me = this;
89
90
  stack = me.stack;
90
91
  args = [];
91
- _f.label = 1;
92
+ _d.label = 1;
92
93
  case 1:
93
- _f.trys.push([1, 11, 12, 13]);
94
+ _d.trys.push([1, 11, 12, 13]);
94
95
  stack_1 = __values(stack), stack_1_1 = stack_1.next();
95
- _f.label = 2;
96
+ _d.label = 2;
96
97
  case 2:
97
98
  if (!!stack_1_1.done) return [3 /*break*/, 10];
98
99
  entity = stack_1_1.value;
@@ -103,33 +104,34 @@ var ArgumentOperation = /** @class */ (function (_super) {
103
104
  if (!(entity instanceof assign_1.default)) return [3 /*break*/, 6];
104
105
  return [4 /*yield*/, entity.get(operationContext, me)];
105
106
  case 4:
106
- _f.sent();
107
+ _d.sent();
107
108
  _b = (_a = args).push;
108
109
  return [4 /*yield*/, entity.expr.left.get(operationContext)];
109
110
  case 5:
110
- _b.apply(_a, [_f.sent()]);
111
+ _b.apply(_a, [_d.sent()]);
111
112
  return [3 /*break*/, 9];
112
113
  case 6:
113
- if (!(entity instanceof expression_1.Expression)) return [3 /*break*/, 8];
114
- _d = (_c = args).push;
114
+ if (!(entity instanceof path_1.default)) return [3 /*break*/, 8];
115
115
  return [4 /*yield*/, entity.get(operationContext, me)];
116
116
  case 7:
117
- _d.apply(_c, [_f.sent()]);
117
+ arg = _d.sent();
118
+ operationContext.set(arg.path, new nil_1.default());
119
+ args.push(arg);
118
120
  return [3 /*break*/, 9];
119
121
  case 8:
120
122
  operationContext.debugger.raise('Unexpected argument', me, entity);
121
- _f.label = 9;
123
+ _d.label = 9;
122
124
  case 9:
123
125
  stack_1_1 = stack_1.next();
124
126
  return [3 /*break*/, 2];
125
127
  case 10: return [3 /*break*/, 13];
126
128
  case 11:
127
- e_1_1 = _f.sent();
129
+ e_1_1 = _d.sent();
128
130
  e_1 = { error: e_1_1 };
129
131
  return [3 /*break*/, 13];
130
132
  case 12:
131
133
  try {
132
- if (stack_1_1 && !stack_1_1.done && (_e = stack_1.return)) _e.call(stack_1);
134
+ if (stack_1_1 && !stack_1_1.done && (_c = stack_1.return)) _c.call(stack_1);
133
135
  }
134
136
  finally { if (e_1) throw e_1.error; }
135
137
  return [7 /*endfinally*/];
@@ -54,6 +54,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
54
54
  var operation_1 = require("../types/operation");
55
55
  var uuid_1 = require("uuid");
56
56
  var context_1 = require("../context");
57
+ var typer_1 = require("../typer");
57
58
  var FunctionOperation = /** @class */ (function (_super) {
58
59
  __extends(FunctionOperation, _super);
59
60
  function FunctionOperation(ast, options) {
@@ -111,7 +112,7 @@ var FunctionOperation = /** @class */ (function (_super) {
111
112
  _a.label = 2;
112
113
  case 2:
113
114
  if (!(index < max)) return [3 /*break*/, 5];
114
- if (!incArgs[index]) return [3 /*break*/, 4];
115
+ if (!(incArgs === null || incArgs === void 0 ? void 0 : incArgs[index])) return [3 /*break*/, 4];
115
116
  return [4 /*yield*/, opc.set(args[index].path, incArgs[index])];
116
117
  case 3:
117
118
  _a.sent();
@@ -122,7 +123,7 @@ var FunctionOperation = /** @class */ (function (_super) {
122
123
  case 5: return [4 /*yield*/, me.body.run(opc)];
123
124
  case 6:
124
125
  _a.sent();
125
- return [2 /*return*/, functionContext.value];
126
+ return [2 /*return*/, (0, typer_1.cast)(functionContext.value)];
126
127
  }
127
128
  });
128
129
  });
@@ -66,9 +66,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
66
66
  };
67
67
  Object.defineProperty(exports, "__esModule", { value: true });
68
68
  var operation_1 = require("../types/operation");
69
+ var expression_1 = require("../types/expression");
69
70
  var if_1 = __importDefault(require("./if"));
70
71
  var else_if_1 = __importDefault(require("./else-if"));
71
72
  var else_1 = __importDefault(require("./else"));
73
+ var typer_1 = require("../typer");
72
74
  var IfStatementOperation = /** @class */ (function (_super) {
73
75
  __extends(IfStatementOperation, _super);
74
76
  function IfStatementOperation(ast) {
@@ -80,7 +82,7 @@ var IfStatementOperation = /** @class */ (function (_super) {
80
82
  }
81
83
  IfStatementOperation.prototype.run = function (operationContext) {
82
84
  return __awaiter(this, void 0, void 0, function () {
83
- var me, clauses, clauses_1, clauses_1_1, clause, isValid, e_1_1;
85
+ var me, clauses, clauses_1, clauses_1_1, clause, condition, isValid, e_1_1;
84
86
  var e_1, _a;
85
87
  return __generator(this, function (_b) {
86
88
  switch (_b.label) {
@@ -89,46 +91,59 @@ var IfStatementOperation = /** @class */ (function (_super) {
89
91
  clauses = me.clauses;
90
92
  _b.label = 1;
91
93
  case 1:
92
- _b.trys.push([1, 11, 12, 13]);
94
+ _b.trys.push([1, 14, 15, 16]);
93
95
  clauses_1 = __values(clauses), clauses_1_1 = clauses_1.next();
94
96
  _b.label = 2;
95
97
  case 2:
96
- if (!!clauses_1_1.done) return [3 /*break*/, 10];
98
+ if (!!clauses_1_1.done) return [3 /*break*/, 13];
97
99
  clause = clauses_1_1.value;
98
- if (!(clause instanceof if_1.default || clause instanceof else_if_1.default)) return [3 /*break*/, 6];
99
- return [4 /*yield*/, clause.condition.get(operationContext)];
100
+ if (!(clause instanceof if_1.default || clause instanceof else_if_1.default)) return [3 /*break*/, 9];
101
+ condition = clause.condition;
102
+ isValid = void 0;
103
+ if (!(0, typer_1.isCustomValue)(condition)) return [3 /*break*/, 3];
104
+ isValid = condition.valueOf();
105
+ return [3 /*break*/, 6];
100
106
  case 3:
101
- isValid = _b.sent();
102
- if (!isValid.valueOf()) return [3 /*break*/, 5];
103
- return [4 /*yield*/, clause.body.run(operationContext)];
107
+ if (!(condition instanceof expression_1.Expression ||
108
+ condition instanceof operation_1.Operation)) return [3 /*break*/, 5];
109
+ return [4 /*yield*/, condition.get(operationContext)];
104
110
  case 4:
105
- _b.sent();
106
- return [3 /*break*/, 10];
107
- case 5: return [3 /*break*/, 9];
111
+ isValid = _b.sent();
112
+ return [3 /*break*/, 6];
113
+ case 5:
114
+ operationContext.debugger.raise('Unexpected condition in clause', me, clause.condition);
115
+ _b.label = 6;
108
116
  case 6:
109
- if (!(clause instanceof else_1.default)) return [3 /*break*/, 8];
117
+ if (!isValid.valueOf()) return [3 /*break*/, 8];
110
118
  return [4 /*yield*/, clause.body.run(operationContext)];
111
119
  case 7:
112
120
  _b.sent();
113
- return [3 /*break*/, 10];
114
- case 8:
115
- operationContext.debugger.raise('Invalid operation in if statement.', me, clause);
116
- _b.label = 9;
121
+ return [3 /*break*/, 13];
122
+ case 8: return [3 /*break*/, 12];
117
123
  case 9:
124
+ if (!(clause instanceof else_1.default)) return [3 /*break*/, 11];
125
+ return [4 /*yield*/, clause.body.run(operationContext)];
126
+ case 10:
127
+ _b.sent();
128
+ return [3 /*break*/, 13];
129
+ case 11:
130
+ operationContext.debugger.raise('Invalid operation in if statement.', me, clause);
131
+ _b.label = 12;
132
+ case 12:
118
133
  clauses_1_1 = clauses_1.next();
119
134
  return [3 /*break*/, 2];
120
- case 10: return [3 /*break*/, 13];
121
- case 11:
135
+ case 13: return [3 /*break*/, 16];
136
+ case 14:
122
137
  e_1_1 = _b.sent();
123
138
  e_1 = { error: e_1_1 };
124
- return [3 /*break*/, 13];
125
- case 12:
139
+ return [3 /*break*/, 16];
140
+ case 15:
126
141
  try {
127
142
  if (clauses_1_1 && !clauses_1_1.done && (_a = clauses_1.return)) _a.call(clauses_1);
128
143
  }
129
144
  finally { if (e_1) throw e_1.error; }
130
145
  return [7 /*endfinally*/];
131
- case 13: return [2 /*return*/];
146
+ case 16: return [2 /*return*/];
132
147
  }
133
148
  });
134
149
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "greybel-interpreter",
3
- "version": "0.4.4",
3
+ "version": "0.4.8",
4
4
  "description": "Interpreter",
5
5
  "main": "dist/index",
6
6
  "typings": "dist/index",
@@ -34,8 +34,8 @@
34
34
  "typescript": "^4.5.4"
35
35
  },
36
36
  "dependencies": {
37
- "greybel-core": "^0.1.9",
38
- "greyscript-core": "^0.1.7",
37
+ "greybel-core": "^0.2.1",
38
+ "greyscript-core": "^0.2.1",
39
39
  "uuid": "^8.3.2"
40
40
  },
41
41
  "keywords": [