shapedef 1.0.18 → 1.0.20

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 (48) hide show
  1. package/dist/cjs/index.d.ts +1 -0
  2. package/dist/cjs/index.d.ts.map +1 -1
  3. package/dist/cjs/index.js +1 -0
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/turing/evaluate.d.ts +23 -0
  6. package/dist/cjs/turing/evaluate.d.ts.map +1 -0
  7. package/dist/cjs/turing/evaluate.js +195 -0
  8. package/dist/cjs/turing/evaluate.js.map +1 -0
  9. package/dist/cjs/turing/index.d.ts +4 -0
  10. package/dist/cjs/turing/index.d.ts.map +1 -0
  11. package/dist/cjs/turing/index.js +20 -0
  12. package/dist/cjs/turing/index.js.map +1 -0
  13. package/dist/cjs/turing/op.d.ts +5 -0
  14. package/dist/cjs/turing/op.d.ts.map +1 -0
  15. package/dist/cjs/turing/op.js +3 -0
  16. package/dist/cjs/turing/op.js.map +1 -0
  17. package/dist/cjs/turing/turing.d.ts +59 -0
  18. package/dist/cjs/turing/turing.d.ts.map +1 -0
  19. package/dist/cjs/turing/turing.js +75 -0
  20. package/dist/cjs/turing/turing.js.map +1 -0
  21. package/dist/esm/index.d.ts +1 -0
  22. package/dist/esm/index.d.ts.map +1 -1
  23. package/dist/esm/index.js +1 -0
  24. package/dist/esm/index.js.map +1 -1
  25. package/dist/esm/turing/evaluate.d.ts +23 -0
  26. package/dist/esm/turing/evaluate.d.ts.map +1 -0
  27. package/dist/esm/turing/evaluate.js +195 -0
  28. package/dist/esm/turing/evaluate.js.map +1 -0
  29. package/dist/esm/turing/index.d.ts +4 -0
  30. package/dist/esm/turing/index.d.ts.map +1 -0
  31. package/dist/esm/turing/index.js +20 -0
  32. package/dist/esm/turing/index.js.map +1 -0
  33. package/dist/esm/turing/op.d.ts +5 -0
  34. package/dist/esm/turing/op.d.ts.map +1 -0
  35. package/dist/esm/turing/op.js +3 -0
  36. package/dist/esm/turing/op.js.map +1 -0
  37. package/dist/esm/turing/turing.d.ts +59 -0
  38. package/dist/esm/turing/turing.d.ts.map +1 -0
  39. package/dist/esm/turing/turing.js +75 -0
  40. package/dist/esm/turing/turing.js.map +1 -0
  41. package/package.json +1 -1
  42. package/src/index.ts +1 -0
  43. package/src/turing/evaluate.test.ts +407 -0
  44. package/src/turing/evaluate.ts +245 -0
  45. package/src/turing/index.ts +3 -0
  46. package/src/turing/op.ts +14 -0
  47. package/src/turing/turing.ts +160 -0
  48. package/dist/esm/package.json +0 -1
@@ -4,4 +4,5 @@ export * from "./shape-utils";
4
4
  export * from "./inputs";
5
5
  export * from "./translations";
6
6
  export * from "./validation";
7
+ export * from "./turing";
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -20,4 +20,5 @@ __exportStar(require("./shape-utils"), exports);
20
20
  __exportStar(require("./inputs"), exports);
21
21
  __exportStar(require("./translations"), exports);
22
22
  __exportStar(require("./validation"), exports);
23
+ __exportStar(require("./turing"), exports);
23
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,qDAAmC;AACnC,gDAA8B;AAC9B,2CAAyB;AACzB,iDAA+B;AAC/B,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,qDAAmC;AACnC,gDAA8B;AAC9B,2CAAyB;AACzB,iDAA+B;AAC/B,+CAA6B;AAC7B,2CAAyB"}
@@ -0,0 +1,23 @@
1
+ import { TuringNode } from "./turing";
2
+ export declare class EvalFrame {
3
+ symbols: Map<string, TuringNode>;
4
+ constructor(symbols?: Record<string, TuringNode> | Map<string, TuringNode>);
5
+ extend(symbols: Record<string, TuringNode> | Map<string, TuringNode>): void;
6
+ }
7
+ export declare class EvalContext {
8
+ frames: EvalFrame[];
9
+ get frame(): EvalFrame;
10
+ beginFrame(): EvalFrame;
11
+ endFrame(): EvalFrame;
12
+ with<T>(fn: (frame: EvalFrame) => T): T;
13
+ }
14
+ export declare const createEvalContext: (vars: Record<string, unknown>) => EvalContext;
15
+ export type EvalResult = {
16
+ ok: true;
17
+ node: TuringNode;
18
+ } | {
19
+ ok: false;
20
+ error: string;
21
+ };
22
+ export declare const turingEvaluate: (ctx: EvalContext, node: TuringNode) => EvalResult;
23
+ //# sourceMappingURL=evaluate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../../src/turing/evaluate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,UAAU,EAAE,MAAM,UAAU,CAAC;AAE9C,qBAAa,SAAS;IACpB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAa;gBAEjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAM1E,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;CAWrE;AAED,qBAAa,WAAW;IACtB,MAAM,EAAE,SAAS,EAAE,CAAqB;IAExC,IAAI,KAAK,IAAI,SAAS,CAIrB;IAED,UAAU,IAAI,SAAS;IAMvB,QAAQ,IAAI,SAAS;IAMrB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,CAAC,GAAG,CAAC;CAMxC;AAED,eAAO,MAAM,iBAAiB,GAC5B,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,WAWF,CAAC;AAEF,MAAM,MAAM,UAAU,GAClB;IACE,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,UAAU,CAAC;CAClB,GACD;IACE,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAYN,eAAO,MAAM,cAAc,GACzB,KAAK,WAAW,EAChB,MAAM,UAAU,KACf,UAyJF,CAAC"}
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.turingEvaluate = exports.createEvalContext = exports.EvalContext = exports.EvalFrame = void 0;
4
+ const turing_1 = require("./turing");
5
+ class EvalFrame {
6
+ symbols = new Map();
7
+ constructor(symbols) {
8
+ if (symbols) {
9
+ this.extend(symbols);
10
+ }
11
+ }
12
+ extend(symbols) {
13
+ if (symbols instanceof Map) {
14
+ for (const [k, v] of Array.from(symbols.entries())) {
15
+ this.symbols.set(k, v);
16
+ }
17
+ }
18
+ else {
19
+ for (const [k, v] of Object.entries(symbols)) {
20
+ this.symbols.set(k, v);
21
+ }
22
+ }
23
+ }
24
+ }
25
+ exports.EvalFrame = EvalFrame;
26
+ class EvalContext {
27
+ frames = [new EvalFrame()];
28
+ get frame() {
29
+ if (this.frames.length <= 0)
30
+ throw new Error("Out of frames");
31
+ const frame = this.frames[this.frames.length - 1];
32
+ return frame;
33
+ }
34
+ beginFrame() {
35
+ const frame = new EvalFrame();
36
+ this.frames.push(frame);
37
+ return frame;
38
+ }
39
+ endFrame() {
40
+ const frame = this.frames.pop() || null;
41
+ if (!frame)
42
+ throw new Error("endFrame(): Out of frames");
43
+ return frame;
44
+ }
45
+ with(fn) {
46
+ const frame = this.beginFrame();
47
+ const r = fn(frame);
48
+ this.endFrame();
49
+ return r;
50
+ }
51
+ }
52
+ exports.EvalContext = EvalContext;
53
+ const createEvalContext = (vars) => {
54
+ const ctx = new EvalContext();
55
+ ctx.frame.extend(Object.assign({}, ...Object.entries(vars).map(([k, v]) => {
56
+ return { [k]: turing_1.turing.auto(v) };
57
+ })));
58
+ return ctx;
59
+ };
60
+ exports.createEvalContext = createEvalContext;
61
+ const ok = (node) => ({
62
+ ok: true,
63
+ node,
64
+ });
65
+ const err = (error) => ({
66
+ ok: false,
67
+ error,
68
+ });
69
+ const turingEvaluate = (ctx, node) => {
70
+ switch (node.type) {
71
+ case "number":
72
+ case "date":
73
+ case "bool":
74
+ case "nil":
75
+ case "str":
76
+ return ok(node);
77
+ case "ref": {
78
+ const value = ctx.frame.symbols.get(node.name);
79
+ if (!value)
80
+ return err(`Undefined variable: ${node.name}`);
81
+ return (0, exports.turingEvaluate)(ctx, value);
82
+ }
83
+ case "binop": {
84
+ const leftR = (0, exports.turingEvaluate)(ctx, node.left);
85
+ if (!leftR.ok)
86
+ return leftR;
87
+ const rightR = (0, exports.turingEvaluate)(ctx, node.right);
88
+ if (!rightR.ok)
89
+ return rightR;
90
+ const left = leftR.node;
91
+ const right = rightR.node;
92
+ const op = node.op;
93
+ switch (op) {
94
+ case "add": {
95
+ if (left.type === "number" && right.type === "number")
96
+ return ok(turing_1.turing.number(left.value + right.value));
97
+ if (left.type === "str" && right.type === "str")
98
+ return ok(turing_1.turing.str(left.value + right.value));
99
+ return err(`Invalid operation '${op}' for (${left.type}, ${right.type})`);
100
+ }
101
+ case "sub": {
102
+ if (left.type === "number" && right.type === "number")
103
+ return ok(turing_1.turing.number(left.value - right.value));
104
+ if (left.type === "str" && right.type === "str")
105
+ return ok(turing_1.turing.str(left.value.replace(right.value, "")));
106
+ return err(`Invalid operation '${op}' for (${left.type}, ${right.type})`);
107
+ }
108
+ case "mul": {
109
+ if (left.type === "number" && right.type === "number")
110
+ return ok(turing_1.turing.number(left.value * right.value));
111
+ return err(`Invalid operation '${op}' for (${left.type}, ${right.type})`);
112
+ }
113
+ case "div": {
114
+ if (left.type === "number" && right.type === "number")
115
+ return ok(turing_1.turing.number(left.value / right.value));
116
+ return err(`Invalid operation '${op}' for (${left.type}, ${right.type})`);
117
+ }
118
+ case "mod": {
119
+ if (left.type === "number" && right.type === "number")
120
+ return ok(turing_1.turing.number(left.value % right.value));
121
+ return err(`Invalid operation '${op}' for (${left.type}, ${right.type})`);
122
+ }
123
+ case "and": {
124
+ if (left.type === "bool" && right.type === "bool")
125
+ return ok(turing_1.turing.bool(left.value && right.value));
126
+ return err(`Invalid operation '${op}' for (${left.type}, ${right.type})`);
127
+ }
128
+ case "or": {
129
+ if (left.type === "bool" && right.type === "bool")
130
+ return ok(turing_1.turing.bool(left.value || right.value));
131
+ return err(`Invalid operation '${op}' for (${left.type}, ${right.type})`);
132
+ }
133
+ case "eq": {
134
+ if (left.type !== right.type)
135
+ return ok(turing_1.turing.bool(false));
136
+ if (left.type === "bool" && right.type === "bool")
137
+ return ok(turing_1.turing.bool(left.value === right.value));
138
+ if (left.type === "number" && right.type === "number")
139
+ return ok(turing_1.turing.bool(left.value === right.value));
140
+ if (left.type === "str" && right.type === "str")
141
+ return ok(turing_1.turing.bool(left.value === right.value));
142
+ if (left.type === "date" && right.type === "date")
143
+ return ok(turing_1.turing.bool(left.value.getTime() === right.value.getTime()));
144
+ if (left.type === "nil" && right.type === "nil")
145
+ return ok(turing_1.turing.bool(left.value === right.value));
146
+ return err(`Invalid operation '${op}' for (${left.type}, ${right.type})`);
147
+ }
148
+ case "neq": {
149
+ if (left.type !== right.type)
150
+ return ok(turing_1.turing.bool(true));
151
+ if (left.type === "bool" && right.type === "bool")
152
+ return ok(turing_1.turing.bool(left.value !== right.value));
153
+ if (left.type === "number" && right.type === "number")
154
+ return ok(turing_1.turing.bool(left.value !== right.value));
155
+ if (left.type === "str" && right.type === "str")
156
+ return ok(turing_1.turing.bool(left.value !== right.value));
157
+ if (left.type === "date" && right.type === "date")
158
+ return ok(turing_1.turing.bool(left.value.getTime() !== right.value.getTime()));
159
+ if (left.type === "nil" && right.type === "nil")
160
+ return ok(turing_1.turing.bool(left.value !== right.value));
161
+ return err(`Invalid operation '${op}' for (${left.type}, ${right.type})`);
162
+ }
163
+ case "gt": {
164
+ if (left.type === "number" && right.type === "number")
165
+ return ok(turing_1.turing.bool(left.value > right.value));
166
+ return err(`Invalid operation '${op}' for (${left.type}, ${right.type})`);
167
+ }
168
+ case "gte": {
169
+ if (left.type === "number" && right.type === "number")
170
+ return ok(turing_1.turing.bool(left.value >= right.value));
171
+ return err(`Invalid operation '${op}' for (${left.type}, ${right.type})`);
172
+ }
173
+ case "lt": {
174
+ if (left.type === "number" && right.type === "number")
175
+ return ok(turing_1.turing.bool(left.value < right.value));
176
+ return err(`Invalid operation '${op}' for (${left.type}, ${right.type})`);
177
+ }
178
+ case "lte": {
179
+ if (left.type === "number" && right.type === "number")
180
+ return ok(turing_1.turing.bool(left.value <= right.value));
181
+ return err(`Invalid operation '${op}' for (${left.type}, ${right.type})`);
182
+ }
183
+ case "regex-match": {
184
+ if (left.type === "str" && right.type === "str") {
185
+ const reg = new RegExp(right.value);
186
+ return ok(turing_1.turing.bool(reg.test(left.value)));
187
+ }
188
+ return err(`Invalid operation '${op}' for (${left.type}, ${right.type})`);
189
+ }
190
+ }
191
+ }
192
+ }
193
+ };
194
+ exports.turingEvaluate = turingEvaluate;
195
+ //# sourceMappingURL=evaluate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../../src/turing/evaluate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from "./op";
2
+ export * from "./turing";
3
+ export * from "./evaluate";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/turing/index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAC;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./op"), exports);
18
+ __exportStar(require("./turing"), exports);
19
+ __exportStar(require("./evaluate"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/turing/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uCAAqB;AACrB,2CAAyB;AACzB,6CAA2B"}
@@ -0,0 +1,5 @@
1
+ export type TuringOpCompare = "eq" | "neq" | "gt" | "gte" | "lt" | "lte" | "regex-match";
2
+ export type TuringOpBool = "or" | "and";
3
+ export type TuringOpArith = "add" | "sub" | "mul" | "div" | "mod";
4
+ export type TuringOp = TuringOpCompare | TuringOpBool | TuringOpArith;
5
+ //# sourceMappingURL=op.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"op.d.ts","sourceRoot":"","sources":["../../../src/turing/op.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GACvB,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,aAAa,CAAC;AAElB,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,KAAK,CAAC;AAExC,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAElE,MAAM,MAAM,QAAQ,GAAG,eAAe,GAAG,YAAY,GAAG,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=op.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"op.js","sourceRoot":"","sources":["../../../src/turing/op.ts"],"names":[],"mappings":""}
@@ -0,0 +1,59 @@
1
+ import { OutputOfShape, Shape, ShapeBool, ShapeDate, ShapeNil, ShapeNumber, ShapeRef, ShapeStr, ShapeUnknown } from "../shape";
2
+ import { TuringOp } from "./op";
3
+ export type TuringPhantom = {
4
+ out: any;
5
+ };
6
+ export type LooseTuring = {
7
+ type: string;
8
+ __phantom: TuringPhantom;
9
+ };
10
+ export type OutputOfTuring<T> = [
11
+ T
12
+ ] extends [LooseTuring] ? T["__phantom"]["out"] : never;
13
+ export interface TuringBase<Type extends string> {
14
+ type: Type;
15
+ __phantom: TuringPhantom;
16
+ }
17
+ export interface TuringWithOutput<Type extends string, Out> extends TuringBase<Type> {
18
+ __phantom: {
19
+ out: Out;
20
+ };
21
+ }
22
+ export interface TuringWithShape<Type extends string, S extends Shape> extends TuringWithOutput<Type, OutputOfShape<S>> {
23
+ shape: S;
24
+ }
25
+ export interface TuringNumber extends TuringWithShape<"number", ShapeNumber> {
26
+ value: number;
27
+ }
28
+ export interface TuringBool extends TuringWithShape<"bool", ShapeBool> {
29
+ value: boolean;
30
+ }
31
+ export interface TuringStr extends TuringWithShape<"str", ShapeStr> {
32
+ value: string;
33
+ }
34
+ export interface TuringDate extends TuringWithShape<"date", ShapeDate> {
35
+ value: Date;
36
+ }
37
+ export interface TuringNil extends TuringWithShape<"nil", ShapeNil> {
38
+ value: null;
39
+ }
40
+ export interface TuringRef<Name extends string = string> extends TuringWithShape<"ref", ShapeRef<Name>> {
41
+ name: Name;
42
+ }
43
+ export interface TuringBinop<Op extends TuringOp = TuringOp, Left extends TuringNode = TuringNode, Right extends TuringNode = TuringNode> extends TuringWithShape<"binop", ShapeUnknown> {
44
+ op: Op;
45
+ left: Left;
46
+ right: Right;
47
+ }
48
+ export type TuringNode = TuringNumber | TuringBool | TuringStr | TuringDate | TuringNil | TuringRef | TuringBinop;
49
+ export declare namespace turing {
50
+ const number: (x: number) => TuringNumber;
51
+ const bool: (x: boolean) => TuringBool;
52
+ const str: (x: string) => TuringStr;
53
+ const date: (x: Date) => TuringDate;
54
+ const nil: () => TuringNil;
55
+ function ref<Name extends string>(name: Name): TuringRef<Name>;
56
+ function binop<Left extends TuringNode, Op extends TuringOp, Right extends TuringNode>(left: Left, op: Op, right: Right): TuringBinop<Op, Left, Right>;
57
+ function auto(x: unknown): TuringNode;
58
+ }
59
+ //# sourceMappingURL=turing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turing.d.ts","sourceRoot":"","sources":["../../../src/turing/turing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.turing = void 0;
4
+ const shape_1 = require("../shape");
5
+ const makeBase = () => {
6
+ return {};
7
+ };
8
+ var turing;
9
+ (function (turing) {
10
+ turing.number = (x) => ({
11
+ type: "number",
12
+ value: x,
13
+ shape: shape_1.shapes.number(),
14
+ ...makeBase(),
15
+ });
16
+ turing.bool = (x) => ({
17
+ type: "bool",
18
+ value: x,
19
+ shape: shape_1.shapes.bool(),
20
+ ...makeBase(),
21
+ });
22
+ turing.str = (x) => ({
23
+ type: "str",
24
+ value: x,
25
+ shape: shape_1.shapes.str(),
26
+ ...makeBase(),
27
+ });
28
+ turing.date = (x) => ({
29
+ type: "date",
30
+ value: x,
31
+ shape: shape_1.shapes.date(),
32
+ ...makeBase(),
33
+ });
34
+ turing.nil = () => ({
35
+ type: "nil",
36
+ value: null,
37
+ shape: shape_1.shapes.nil(),
38
+ ...makeBase(),
39
+ });
40
+ function ref(name) {
41
+ return {
42
+ type: "ref",
43
+ name: name,
44
+ shape: shape_1.shapes.ref(name),
45
+ ...makeBase(),
46
+ };
47
+ }
48
+ turing.ref = ref;
49
+ function binop(left, op, right) {
50
+ return {
51
+ type: "binop",
52
+ left,
53
+ right,
54
+ op,
55
+ shape: shape_1.shapes.unknown(),
56
+ ...makeBase(),
57
+ };
58
+ }
59
+ turing.binop = binop;
60
+ function auto(x) {
61
+ if (x === null)
62
+ return turing.nil();
63
+ if (typeof x === "undefined")
64
+ return turing.nil();
65
+ if (typeof x === "number")
66
+ return turing.number(x);
67
+ if (typeof x === "string")
68
+ return turing.str(x);
69
+ if (typeof x === "boolean")
70
+ return turing.bool(x);
71
+ return turing.nil();
72
+ }
73
+ turing.auto = auto;
74
+ })(turing || (exports.turing = turing = {}));
75
+ //# sourceMappingURL=turing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turing.js","sourceRoot":"","sources":["../../../src/turing/turing.ts"],"names":[],"mappings":";;;AAAA,oCAWkB;AA4ElB,MAAM,QAAQ,GAAG,GAAgC,EAAE;IACjD,OAAO,EAAoB,CAAC;AAC9B,CAAC,CAAC;AAEF,IAAiB,MAAM,CAoEtB;AApED,WAAiB,MAAM;IACR,aAAM,GAAG,CAAC,CAAS,EAAgB,EAAE,CAAC,CAAC;QAClD,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,cAAM,CAAC,MAAM,EAAE;QACtB,GAAG,QAAQ,EAAE;KACd,CAAC,CAAC;IAEU,WAAI,GAAG,CAAC,CAAU,EAAc,EAAE,CAAC,CAAC;QAC/C,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,cAAM,CAAC,IAAI,EAAE;QACpB,GAAG,QAAQ,EAAE;KACd,CAAC,CAAC;IAEU,UAAG,GAAG,CAAC,CAAS,EAAa,EAAE,CAAC,CAAC;QAC5C,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,cAAM,CAAC,GAAG,EAAE;QACnB,GAAG,QAAQ,EAAE;KACd,CAAC,CAAC;IAEU,WAAI,GAAG,CAAC,CAAO,EAAc,EAAE,CAAC,CAAC;QAC5C,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,cAAM,CAAC,IAAI,EAAE;QACpB,GAAG,QAAQ,EAAE;KACd,CAAC,CAAC;IAEU,UAAG,GAAG,GAAc,EAAE,CAAC,CAAC;QACnC,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,cAAM,CAAC,GAAG,EAAE;QACnB,GAAG,QAAQ,EAAE;KACd,CAAC,CAAC;IAEH,SAAgB,GAAG,CAAsB,IAAU;QACjD,OAAO;YACL,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,cAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACvB,GAAG,QAAQ,EAAE;SACd,CAAC;IACJ,CAAC;IAPe,UAAG,MAOlB,CAAA;IAED,SAAgB,KAAK,CAInB,IAAU,EAAE,EAAM,EAAE,KAAY;QAChC,OAAO;YACL,IAAI,EAAE,OAAO;YACb,IAAI;YACJ,KAAK;YACL,EAAE;YACF,KAAK,EAAE,cAAM,CAAC,OAAO,EAAE;YACvB,GAAG,QAAQ,EAAE;SACd,CAAC;IACJ,CAAC;IAbe,YAAK,QAapB,CAAA;IAED,SAAgB,IAAI,CAAC,CAAU;QAC7B,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,OAAA,GAAG,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,KAAK,WAAW;YAAE,OAAO,OAAA,GAAG,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,OAAA,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,OAAA,GAAG,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,OAAO,CAAC,KAAK,SAAS;YAAE,OAAO,OAAA,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO,OAAA,GAAG,EAAE,CAAC;IACf,CAAC;IAPe,WAAI,OAOnB,CAAA;AACH,CAAC,EApEgB,MAAM,sBAAN,MAAM,QAoEtB"}
@@ -4,4 +4,5 @@ export * from "./shape-utils";
4
4
  export * from "./inputs";
5
5
  export * from "./translations";
6
6
  export * from "./validation";
7
+ export * from "./turing";
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
package/dist/esm/index.js CHANGED
@@ -20,4 +20,5 @@ __exportStar(require("./shape-utils"), exports);
20
20
  __exportStar(require("./inputs"), exports);
21
21
  __exportStar(require("./translations"), exports);
22
22
  __exportStar(require("./validation"), exports);
23
+ __exportStar(require("./turing"), exports);
23
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,qDAAmC;AACnC,gDAA8B;AAC9B,2CAAyB;AACzB,iDAA+B;AAC/B,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,qDAAmC;AACnC,gDAA8B;AAC9B,2CAAyB;AACzB,iDAA+B;AAC/B,+CAA6B;AAC7B,2CAAyB"}
@@ -0,0 +1,23 @@
1
+ import { TuringNode } from "./turing";
2
+ export declare class EvalFrame {
3
+ symbols: Map<string, TuringNode>;
4
+ constructor(symbols?: Record<string, TuringNode> | Map<string, TuringNode>);
5
+ extend(symbols: Record<string, TuringNode> | Map<string, TuringNode>): void;
6
+ }
7
+ export declare class EvalContext {
8
+ frames: EvalFrame[];
9
+ get frame(): EvalFrame;
10
+ beginFrame(): EvalFrame;
11
+ endFrame(): EvalFrame;
12
+ with<T>(fn: (frame: EvalFrame) => T): T;
13
+ }
14
+ export declare const createEvalContext: (vars: Record<string, unknown>) => EvalContext;
15
+ export type EvalResult = {
16
+ ok: true;
17
+ node: TuringNode;
18
+ } | {
19
+ ok: false;
20
+ error: string;
21
+ };
22
+ export declare const turingEvaluate: (ctx: EvalContext, node: TuringNode) => EvalResult;
23
+ //# sourceMappingURL=evaluate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../../src/turing/evaluate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,UAAU,EAAE,MAAM,UAAU,CAAC;AAE9C,qBAAa,SAAS;IACpB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAa;gBAEjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAM1E,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;CAWrE;AAED,qBAAa,WAAW;IACtB,MAAM,EAAE,SAAS,EAAE,CAAqB;IAExC,IAAI,KAAK,IAAI,SAAS,CAIrB;IAED,UAAU,IAAI,SAAS;IAMvB,QAAQ,IAAI,SAAS;IAMrB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,CAAC,GAAG,CAAC;CAMxC;AAED,eAAO,MAAM,iBAAiB,GAC5B,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,WAWF,CAAC;AAEF,MAAM,MAAM,UAAU,GAClB;IACE,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,UAAU,CAAC;CAClB,GACD;IACE,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAYN,eAAO,MAAM,cAAc,GACzB,KAAK,WAAW,EAChB,MAAM,UAAU,KACf,UAyJF,CAAC"}