@elaraai/east 0.0.1-beta.17 → 0.0.1-beta.19
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/README.md +1 -1
- package/dist/src/error.d.ts +4 -0
- package/dist/src/error.d.ts.map +1 -1
- package/dist/src/error.js +20 -0
- package/dist/src/error.js.map +1 -1
- package/dist/src/expr/array.d.ts +34 -0
- package/dist/src/expr/array.d.ts.map +1 -1
- package/dist/src/expr/array.js +39 -0
- package/dist/src/expr/array.js.map +1 -1
- package/dist/src/expr/blob.d.ts +40 -0
- package/dist/src/expr/blob.d.ts.map +1 -1
- package/dist/src/expr/blob.js +44 -0
- package/dist/src/expr/blob.js.map +1 -1
- package/dist/src/expr/boolean.d.ts +36 -0
- package/dist/src/expr/boolean.d.ts.map +1 -1
- package/dist/src/expr/boolean.js +41 -0
- package/dist/src/expr/boolean.js.map +1 -1
- package/dist/src/expr/datetime.d.ts +107 -0
- package/dist/src/expr/datetime.d.ts.map +1 -1
- package/dist/src/expr/datetime.js +119 -0
- package/dist/src/expr/datetime.js.map +1 -1
- package/dist/src/expr/dict.d.ts +34 -0
- package/dist/src/expr/dict.d.ts.map +1 -1
- package/dist/src/expr/dict.js +39 -0
- package/dist/src/expr/dict.js.map +1 -1
- package/dist/src/expr/float.d.ts +107 -0
- package/dist/src/expr/float.d.ts.map +1 -1
- package/dist/src/expr/float.js +122 -0
- package/dist/src/expr/float.js.map +1 -1
- package/dist/src/expr/function.d.ts +9 -2
- package/dist/src/expr/function.d.ts.map +1 -1
- package/dist/src/expr/function.js.map +1 -1
- package/dist/src/expr/integer.d.ts +107 -0
- package/dist/src/expr/integer.d.ts.map +1 -1
- package/dist/src/expr/integer.js +119 -0
- package/dist/src/expr/integer.js.map +1 -1
- package/dist/src/expr/set.d.ts +34 -0
- package/dist/src/expr/set.d.ts.map +1 -1
- package/dist/src/expr/set.js +39 -0
- package/dist/src/expr/set.js.map +1 -1
- package/dist/src/expr/string.d.ts +106 -0
- package/dist/src/expr/string.d.ts.map +1 -1
- package/dist/src/expr/string.js +119 -0
- package/dist/src/expr/string.js.map +1 -1
- package/dist/src/expr/types.d.ts +6 -6
- package/dist/src/expr/types.d.ts.map +1 -1
- package/dist/src/expr/variant.d.ts +72 -11
- package/dist/src/expr/variant.d.ts.map +1 -1
- package/dist/src/expr/variant.js +36 -39
- package/dist/src/expr/variant.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,7 +6,8 @@ import type { AST } from "../ast.js";
|
|
|
6
6
|
import { BooleanType, NeverType, StringType, TypeUnion, VariantType } from "../types.js";
|
|
7
7
|
import type { BlockBuilder } from "./block.js";
|
|
8
8
|
import { Expr, type ToExpr } from "./expr.js";
|
|
9
|
-
import type { ExprType, TypeOf } from "./types.js";
|
|
9
|
+
import type { ExprType, TypeOf, SubtypeExprOrValue } from "./types.js";
|
|
10
|
+
import type { BooleanExpr } from "./boolean.js";
|
|
10
11
|
/**
|
|
11
12
|
* Expression representing variant (sum type/tagged union) values.
|
|
12
13
|
*
|
|
@@ -134,17 +135,17 @@ export declare class VariantExpr<Cases extends Record<string, any>> extends Expr
|
|
|
134
135
|
unwrap<Case extends keyof Cases>(name: Case): ExprType<Cases[Case]>;
|
|
135
136
|
unwrap(): "some" extends keyof Cases ? ExprType<Cases["some"]> : ExprType<NeverType>;
|
|
136
137
|
/**
|
|
137
|
-
* Pattern match on this variant
|
|
138
|
+
* Pattern match on this variant.
|
|
138
139
|
*
|
|
139
|
-
* This method
|
|
140
|
-
*
|
|
141
|
-
*
|
|
140
|
+
* This method supports two modes:
|
|
141
|
+
* 1. **Exhaustive matching**: Provide handlers for all cases, no default needed
|
|
142
|
+
* 2. **Partial matching**: Provide handlers for some cases with a default fallback
|
|
142
143
|
*
|
|
143
|
-
* @typeParam Handlers -
|
|
144
|
-
* @typeParam Default - Type of the default handler function
|
|
145
|
-
* @param handlers - Object mapping case names to handler functions
|
|
146
|
-
* @param defaultHandler -
|
|
147
|
-
* @returns Expression of the union type of all handler return types
|
|
144
|
+
* @typeParam Handlers - Record of case handlers (all cases required for exhaustive, partial for default mode)
|
|
145
|
+
* @typeParam Default - Type of the default handler function (only for partial matching)
|
|
146
|
+
* @param handlers - Object mapping case names to handler functions
|
|
147
|
+
* @param defaultHandler - Optional handler for unmatched cases (required if not all cases are handled)
|
|
148
|
+
* @returns Expression of the union type of all handler return types
|
|
148
149
|
*
|
|
149
150
|
* @see {@link Expr.match} for exhaustive pattern matching requiring all cases
|
|
150
151
|
* @see {@link unwrap} for extracting a single case value
|
|
@@ -153,7 +154,23 @@ export declare class VariantExpr<Cases extends Record<string, any>> extends Expr
|
|
|
153
154
|
* ```ts
|
|
154
155
|
* const OptionType = VariantType({ some: IntegerType, none: NullType });
|
|
155
156
|
*
|
|
156
|
-
* //
|
|
157
|
+
* // Exhaustive matching - all cases handled, no default needed
|
|
158
|
+
* const getValue = East.function([OptionType], IntegerType, ($, opt) => {
|
|
159
|
+
* $.return(opt.match({
|
|
160
|
+
* some: ($, val) => val,
|
|
161
|
+
* none: ($) => 0n
|
|
162
|
+
* }));
|
|
163
|
+
* });
|
|
164
|
+
* const compiled = East.compile(getValue.toIR(), []);
|
|
165
|
+
* compiled(Expr.variant("some", 42n)); // 42n
|
|
166
|
+
* compiled(Expr.variant("none", null)); // 0n
|
|
167
|
+
* ```
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* ```ts
|
|
171
|
+
* const OptionType = VariantType({ some: IntegerType, none: NullType });
|
|
172
|
+
*
|
|
173
|
+
* // Partial matching - only handle some cases, use default for rest
|
|
157
174
|
* const getOrZero = East.function([OptionType], IntegerType, ($, opt) => {
|
|
158
175
|
* $.return(opt.match({
|
|
159
176
|
* some: ($, val) => val
|
|
@@ -181,10 +198,54 @@ export declare class VariantExpr<Cases extends Record<string, any>> extends Expr
|
|
|
181
198
|
* compiled(Expr.variant("pending", null)); // 0n
|
|
182
199
|
* ```
|
|
183
200
|
*/
|
|
201
|
+
match<Handlers extends {
|
|
202
|
+
[K in keyof Cases]: ($: BlockBuilder<NeverType>, data: ExprType<Cases[K]>) => any;
|
|
203
|
+
}>(handlers: Handlers): ExprType<TypeOf<{
|
|
204
|
+
[K in keyof Handlers]: ReturnType<Handlers[K]>;
|
|
205
|
+
}[keyof Handlers]>>;
|
|
184
206
|
match<Handlers extends {
|
|
185
207
|
[K in keyof Cases]?: ($: BlockBuilder<NeverType>, data: ExprType<Cases[K]>) => any;
|
|
186
208
|
}, Default extends ($: BlockBuilder<NeverType>) => any>(handlers: Handlers, defaultHandler: Default): ExprType<TypeUnion<TypeOf<{
|
|
187
209
|
[K in keyof Handlers]: ReturnType<NonNullable<Handlers[K]>>;
|
|
188
210
|
}[keyof Handlers]>, TypeOf<ReturnType<Default>>>>;
|
|
211
|
+
/**
|
|
212
|
+
* Checks if this variant equals another variant (same tag and value).
|
|
213
|
+
*
|
|
214
|
+
* @param other - The variant to compare against
|
|
215
|
+
* @returns A BooleanExpr that is true if the variants are equal
|
|
216
|
+
*
|
|
217
|
+
* @example
|
|
218
|
+
* ```ts
|
|
219
|
+
* const OptionType = VariantType({ some: IntegerType, none: NullType });
|
|
220
|
+
*
|
|
221
|
+
* const isEqual = East.function([OptionType, OptionType], BooleanType, ($, a, b) => {
|
|
222
|
+
* $.return(a.equals(b));
|
|
223
|
+
* });
|
|
224
|
+
* const compiled = East.compile(isEqual.toIR(), []);
|
|
225
|
+
* compiled(variant("some", 42n), variant("some", 42n)); // true
|
|
226
|
+
* compiled(variant("some", 42n), variant("some", 0n)); // false
|
|
227
|
+
* compiled(variant("some", 42n), variant("none", null)); // false
|
|
228
|
+
* ```
|
|
229
|
+
*/
|
|
230
|
+
equals(other: SubtypeExprOrValue<VariantType<Cases>>): BooleanExpr;
|
|
231
|
+
/**
|
|
232
|
+
* Checks if this variant does not equal another variant.
|
|
233
|
+
*
|
|
234
|
+
* @param other - The variant to compare against
|
|
235
|
+
* @returns A BooleanExpr that is true if the variants are not equal
|
|
236
|
+
*
|
|
237
|
+
* @example
|
|
238
|
+
* ```ts
|
|
239
|
+
* const OptionType = VariantType({ some: IntegerType, none: NullType });
|
|
240
|
+
*
|
|
241
|
+
* const isNotEqual = East.function([OptionType, OptionType], BooleanType, ($, a, b) => {
|
|
242
|
+
* $.return(a.notEquals(b));
|
|
243
|
+
* });
|
|
244
|
+
* const compiled = East.compile(isNotEqual.toIR(), []);
|
|
245
|
+
* compiled(variant("some", 42n), variant("some", 0n)); // true
|
|
246
|
+
* compiled(variant("some", 42n), variant("some", 42n)); // false
|
|
247
|
+
* ```
|
|
248
|
+
*/
|
|
249
|
+
notEquals(other: SubtypeExprOrValue<VariantType<Cases>>): BooleanExpr;
|
|
189
250
|
}
|
|
190
251
|
//# sourceMappingURL=variant.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variant.d.ts","sourceRoot":"","sources":["../../../src/expr/variant.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"variant.d.ts","sourceRoot":"","sources":["../../../src/expr/variant.ts"],"names":[],"mappings":"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"}
|
package/dist/src/expr/variant.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { get_location } from "../location.js";
|
|
2
2
|
import { BooleanType, NeverType, StringType, TypeUnion, VariantType } from "../types.js";
|
|
3
|
+
import { equal, notEqual } from "./block.js";
|
|
3
4
|
import { Expr } from "./expr.js";
|
|
4
5
|
/**
|
|
5
6
|
* Expression representing variant (sum type/tagged union) values.
|
|
@@ -101,61 +102,57 @@ export class VariantExpr extends Expr {
|
|
|
101
102
|
const handlers = Object.fromEntries(Object.keys(this.cases).map(caseName => [caseName, caseName === name ? (_$, data) => data : ($, _data) => onOther($)]));
|
|
102
103
|
return Expr.match(this, handlers);
|
|
103
104
|
}
|
|
105
|
+
// Implementation
|
|
106
|
+
match(handlers, defaultHandler) {
|
|
107
|
+
// Build complete handler set by filling unhandled cases with default (if provided)
|
|
108
|
+
const completeHandlers = Object.fromEntries(Object.keys(this.cases).map(caseName => [
|
|
109
|
+
caseName,
|
|
110
|
+
handlers[caseName] ?? (defaultHandler ? (($, _data) => defaultHandler($)) : undefined)
|
|
111
|
+
]));
|
|
112
|
+
return Expr.match(this, completeHandlers);
|
|
113
|
+
}
|
|
104
114
|
/**
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
* This method allows partial matching where you only need to handle the cases you care about,
|
|
108
|
-
* with a required default handler for any unmatched cases. This is more ergonomic than
|
|
109
|
-
* exhaustive matching when you only need to handle a subset of cases.
|
|
115
|
+
* Checks if this variant equals another variant (same tag and value).
|
|
110
116
|
*
|
|
111
|
-
* @
|
|
112
|
-
* @
|
|
113
|
-
* @param handlers - Object mapping case names to handler functions (not all cases required)
|
|
114
|
-
* @param defaultHandler - Required handler for any unmatched cases
|
|
115
|
-
* @returns Expression of the union type of all handler return types and default return type
|
|
116
|
-
*
|
|
117
|
-
* @see {@link Expr.match} for exhaustive pattern matching requiring all cases
|
|
118
|
-
* @see {@link unwrap} for extracting a single case value
|
|
117
|
+
* @param other - The variant to compare against
|
|
118
|
+
* @returns A BooleanExpr that is true if the variants are equal
|
|
119
119
|
*
|
|
120
120
|
* @example
|
|
121
121
|
* ```ts
|
|
122
122
|
* const OptionType = VariantType({ some: IntegerType, none: NullType });
|
|
123
123
|
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
* $.return(opt.match({
|
|
127
|
-
* some: ($, val) => val
|
|
128
|
-
* }, ($) => 0n));
|
|
124
|
+
* const isEqual = East.function([OptionType, OptionType], BooleanType, ($, a, b) => {
|
|
125
|
+
* $.return(a.equals(b));
|
|
129
126
|
* });
|
|
130
|
-
* const compiled = East.compile(
|
|
131
|
-
* compiled(
|
|
132
|
-
* compiled(
|
|
127
|
+
* const compiled = East.compile(isEqual.toIR(), []);
|
|
128
|
+
* compiled(variant("some", 42n), variant("some", 42n)); // true
|
|
129
|
+
* compiled(variant("some", 42n), variant("some", 0n)); // false
|
|
130
|
+
* compiled(variant("some", 42n), variant("none", null)); // false
|
|
133
131
|
* ```
|
|
132
|
+
*/
|
|
133
|
+
equals(other) {
|
|
134
|
+
return equal(this, other);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Checks if this variant does not equal another variant.
|
|
138
|
+
*
|
|
139
|
+
* @param other - The variant to compare against
|
|
140
|
+
* @returns A BooleanExpr that is true if the variants are not equal
|
|
134
141
|
*
|
|
135
142
|
* @example
|
|
136
143
|
* ```ts
|
|
137
|
-
* const
|
|
144
|
+
* const OptionType = VariantType({ some: IntegerType, none: NullType });
|
|
138
145
|
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
* $.return(result.match({
|
|
142
|
-
* ok: ($, val) => val,
|
|
143
|
-
* error: ($, _msg) => -1n
|
|
144
|
-
* }, ($) => 0n)); // pending -> 0
|
|
146
|
+
* const isNotEqual = East.function([OptionType, OptionType], BooleanType, ($, a, b) => {
|
|
147
|
+
* $.return(a.notEquals(b));
|
|
145
148
|
* });
|
|
146
|
-
* const compiled = East.compile(
|
|
147
|
-
* compiled(
|
|
148
|
-
* compiled(
|
|
149
|
-
* compiled(Expr.variant("pending", null)); // 0n
|
|
149
|
+
* const compiled = East.compile(isNotEqual.toIR(), []);
|
|
150
|
+
* compiled(variant("some", 42n), variant("some", 0n)); // true
|
|
151
|
+
* compiled(variant("some", 42n), variant("some", 42n)); // false
|
|
150
152
|
* ```
|
|
151
153
|
*/
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
const completeHandlers = Object.fromEntries(Object.keys(this.cases).map(caseName => [
|
|
155
|
-
caseName,
|
|
156
|
-
handlers[caseName] ?? (($, _data) => defaultHandler($))
|
|
157
|
-
]));
|
|
158
|
-
return Expr.match(this, completeHandlers);
|
|
154
|
+
notEquals(other) {
|
|
155
|
+
return notEqual(this, other);
|
|
159
156
|
}
|
|
160
157
|
}
|
|
161
158
|
//# sourceMappingURL=variant.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variant.js","sourceRoot":"","sources":["../../../src/expr/variant.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEzF,OAAO,EAAE,IAAI,EAAe,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"variant.js","sourceRoot":"","sources":["../../../src/expr/variant.ts"],"names":[],"mappings":"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"}
|