@elaraai/east 1.0.84 → 1.0.85
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/src/analyze.d.ts.map +1 -1
- package/dist/src/analyze.js +48 -0
- package/dist/src/analyze.js.map +1 -1
- package/dist/src/ast_to_ir.coerce_to.spec.js +4 -4
- package/dist/src/ast_to_ir.coerce_to.spec.js.map +1 -1
- package/dist/src/ast_to_ir.d.ts +6 -1
- package/dist/src/ast_to_ir.d.ts.map +1 -1
- package/dist/src/ast_to_ir.js +20 -7
- package/dist/src/ast_to_ir.js.map +1 -1
- package/dist/src/builtins.d.ts +1 -1
- package/dist/src/builtins.d.ts.map +1 -1
- package/dist/src/builtins.js +52 -0
- package/dist/src/builtins.js.map +1 -1
- package/dist/src/codegen/canonical.d.ts +37 -0
- package/dist/src/codegen/canonical.d.ts.map +1 -0
- package/dist/src/codegen/canonical.js +208 -0
- package/dist/src/codegen/canonical.js.map +1 -0
- package/dist/src/codegen/codegen.spec.js +132 -201
- package/dist/src/codegen/codegen.spec.js.map +1 -1
- package/dist/src/codegen/printer.d.ts.map +1 -1
- package/dist/src/codegen/printer.js +142 -24
- package/dist/src/codegen/printer.js.map +1 -1
- package/dist/src/codegen/spellings.d.ts +4 -1
- package/dist/src/codegen/spellings.d.ts.map +1 -1
- package/dist/src/codegen/spellings.js +5 -1
- package/dist/src/codegen/spellings.js.map +1 -1
- package/dist/src/compile/builtins/index.d.ts.map +1 -1
- package/dist/src/compile/builtins/index.js +2 -0
- package/dist/src/compile/builtins/index.js.map +1 -1
- package/dist/src/compile/builtins/primitives.d.ts.map +1 -1
- package/dist/src/compile/builtins/primitives.js +2 -1
- package/dist/src/compile/builtins/primitives.js.map +1 -1
- package/dist/src/compile/builtins/query.d.ts +10 -0
- package/dist/src/compile/builtins/query.d.ts.map +1 -0
- package/dist/src/compile/builtins/query.js +5 -0
- package/dist/src/compile/builtins/query.js.map +1 -0
- package/dist/src/expr/block.d.ts.map +1 -1
- package/dist/src/expr/block.js +2 -1
- package/dist/src/expr/block.js.map +1 -1
- package/dist/src/expr/index.d.ts +75 -47
- package/dist/src/expr/index.d.ts.map +1 -1
- package/dist/src/expr/index.js +31 -0
- package/dist/src/expr/index.js.map +1 -1
- package/dist/src/expr/libs/datetime.d.ts +20 -20
- package/dist/src/expr/libs/datetime.d.ts.map +1 -1
- package/dist/src/expr/libs/datetime.js +208 -167
- package/dist/src/expr/libs/datetime.js.map +1 -1
- package/dist/src/expr/libs/float.d.ts +15 -15
- package/dist/src/expr/libs/float.d.ts.map +1 -1
- package/dist/src/expr/libs/float.js +298 -267
- package/dist/src/expr/libs/float.js.map +1 -1
- package/dist/src/expr/libs/integer.d.ts +12 -12
- package/dist/src/expr/libs/integer.d.ts.map +1 -1
- package/dist/src/expr/libs/integer.js +219 -194
- package/dist/src/expr/libs/integer.js.map +1 -1
- package/dist/src/expr/libs/lazy.d.ts +28 -0
- package/dist/src/expr/libs/lazy.d.ts.map +1 -0
- package/dist/src/expr/libs/lazy.js +55 -0
- package/dist/src/expr/libs/lazy.js.map +1 -0
- package/dist/src/expr/libs/lazy.spec.d.ts +6 -0
- package/dist/src/expr/libs/lazy.spec.d.ts.map +1 -0
- package/dist/src/expr/libs/lazy.spec.js +102 -0
- package/dist/src/expr/libs/lazy.spec.js.map +1 -0
- package/dist/src/expr/query.d.ts +60 -0
- package/dist/src/expr/query.d.ts.map +1 -0
- package/dist/src/expr/query.js +84 -0
- package/dist/src/expr/query.js.map +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal.d.ts +4 -0
- package/dist/src/internal.d.ts.map +1 -1
- package/dist/src/internal.js +9 -0
- package/dist/src/internal.js.map +1 -1
- package/dist/src/location.d.ts +22 -0
- package/dist/src/location.d.ts.map +1 -1
- package/dist/src/location.js +31 -0
- package/dist/src/location.js.map +1 -1
- package/dist/src/naming.d.ts +5 -3
- package/dist/src/naming.d.ts.map +1 -1
- package/dist/src/naming.js.map +1 -1
- package/dist/src/portable.spec.d.ts +6 -0
- package/dist/src/portable.spec.d.ts.map +1 -0
- package/dist/src/portable.spec.js +181 -0
- package/dist/src/portable.spec.js.map +1 -0
- package/dist/src/query/evaluate.d.ts +98 -0
- package/dist/src/query/evaluate.d.ts.map +1 -0
- package/dist/src/query/evaluate.js +193 -0
- package/dist/src/query/evaluate.js.map +1 -0
- package/dist/src/query/index.d.ts +17 -0
- package/dist/src/query/index.d.ts.map +1 -0
- package/dist/src/query/index.js +17 -0
- package/dist/src/query/index.js.map +1 -0
- package/dist/src/query/jq/catalog.d.ts +174 -0
- package/dist/src/query/jq/catalog.d.ts.map +1 -0
- package/dist/src/query/jq/catalog.js +1740 -0
- package/dist/src/query/jq/catalog.js.map +1 -0
- package/dist/src/query/jq/check.d.ts +210 -0
- package/dist/src/query/jq/check.d.ts.map +1 -0
- package/dist/src/query/jq/check.js +2261 -0
- package/dist/src/query/jq/check.js.map +1 -0
- package/dist/src/query/jq/complete.d.ts +89 -0
- package/dist/src/query/jq/complete.d.ts.map +1 -0
- package/dist/src/query/jq/complete.js +320 -0
- package/dist/src/query/jq/complete.js.map +1 -0
- package/dist/src/query/jq/describe.d.ts +53 -0
- package/dist/src/query/jq/describe.d.ts.map +1 -0
- package/dist/src/query/jq/describe.js +149 -0
- package/dist/src/query/jq/describe.js.map +1 -0
- package/dist/src/query/jq/lex.d.ts +118 -0
- package/dist/src/query/jq/lex.d.ts.map +1 -0
- package/dist/src/query/jq/lex.js +371 -0
- package/dist/src/query/jq/lex.js.map +1 -0
- package/dist/src/query/jq/literals.d.ts +49 -0
- package/dist/src/query/jq/literals.d.ts.map +1 -0
- package/dist/src/query/jq/literals.js +78 -0
- package/dist/src/query/jq/literals.js.map +1 -0
- package/dist/src/query/jq/messages.d.ts +126 -0
- package/dist/src/query/jq/messages.d.ts.map +1 -0
- package/dist/src/query/jq/messages.js +172 -0
- package/dist/src/query/jq/messages.js.map +1 -0
- package/dist/src/query/jq/parse.d.ts +70 -0
- package/dist/src/query/jq/parse.d.ts.map +1 -0
- package/dist/src/query/jq/parse.js +1013 -0
- package/dist/src/query/jq/parse.js.map +1 -0
- package/dist/src/query/jq/print.d.ts +59 -0
- package/dist/src/query/jq/print.d.ts.map +1 -0
- package/dist/src/query/jq/print.js +587 -0
- package/dist/src/query/jq/print.js.map +1 -0
- package/dist/src/query/jq/shapes.d.ts +345 -0
- package/dist/src/query/jq/shapes.d.ts.map +1 -0
- package/dist/src/query/jq/shapes.js +584 -0
- package/dist/src/query/jq/shapes.js.map +1 -0
- package/dist/src/query/jq/spans.d.ts +133 -0
- package/dist/src/query/jq/spans.d.ts.map +1 -0
- package/dist/src/query/jq/spans.js +195 -0
- package/dist/src/query/jq/spans.js.map +1 -0
- package/dist/src/query/jq/split.d.ts +334 -0
- package/dist/src/query/jq/split.d.ts.map +1 -0
- package/dist/src/query/jq/split.js +2108 -0
- package/dist/src/query/jq/split.js.map +1 -0
- package/dist/src/query/jq/strftime.d.ts +20 -0
- package/dist/src/query/jq/strftime.d.ts.map +1 -0
- package/dist/src/query/jq/strftime.js +65 -0
- package/dist/src/query/jq/strftime.js.map +1 -0
- package/dist/src/query/jq/summary.d.ts +139 -0
- package/dist/src/query/jq/summary.d.ts.map +1 -0
- package/dist/src/query/jq/summary.js +222 -0
- package/dist/src/query/jq/summary.js.map +1 -0
- package/dist/src/query/jq/translate-builtins.d.ts +21 -0
- package/dist/src/query/jq/translate-builtins.d.ts.map +1 -0
- package/dist/src/query/jq/translate-builtins.js +1873 -0
- package/dist/src/query/jq/translate-builtins.js.map +1 -0
- package/dist/src/query/jq/translate.d.ts +627 -0
- package/dist/src/query/jq/translate.d.ts.map +1 -0
- package/dist/src/query/jq/translate.js +3364 -0
- package/dist/src/query/jq/translate.js.map +1 -0
- package/dist/src/query/types.d.ts +505 -0
- package/dist/src/query/types.d.ts.map +1 -0
- package/dist/src/query/types.js +231 -0
- package/dist/src/query/types.js.map +1 -0
- package/dist/src/runner_exec.d.ts +134 -0
- package/dist/src/runner_exec.d.ts.map +1 -0
- package/dist/src/runner_exec.js +371 -0
- package/dist/src/runner_exec.js.map +1 -0
- package/dist/src/runner_exec.spec.d.ts +6 -0
- package/dist/src/runner_exec.spec.d.ts.map +1 -0
- package/dist/src/runner_exec.spec.js +198 -0
- package/dist/src/runner_exec.spec.js.map +1 -0
- package/dist/src/runner_io.d.ts +370 -0
- package/dist/src/runner_io.d.ts.map +1 -0
- package/dist/src/runner_io.js +563 -0
- package/dist/src/runner_io.js.map +1 -0
- package/dist/src/runner_io.spec.d.ts +6 -0
- package/dist/src/runner_io.spec.d.ts.map +1 -0
- package/dist/src/runner_io.spec.js +224 -0
- package/dist/src/runner_io.spec.js.map +1 -0
- package/dist/src/runner_merge.d.ts +95 -0
- package/dist/src/runner_merge.d.ts.map +1 -0
- package/dist/src/runner_merge.js +238 -0
- package/dist/src/runner_merge.js.map +1 -0
- package/dist/src/runner_protocol.d.ts +11 -4
- package/dist/src/runner_protocol.d.ts.map +1 -1
- package/dist/src/runner_protocol.js +11 -4
- package/dist/src/runner_protocol.js.map +1 -1
- package/dist/src/serialization/beast2/index.d.ts +1 -1
- package/dist/src/serialization/beast2/index.d.ts.map +1 -1
- package/dist/src/serialization/beast2/index.js.map +1 -1
- package/dist/src/serialization/beast2/v5/frames.d.ts +10 -6
- package/dist/src/serialization/beast2/v5/frames.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/frames.js +10 -6
- package/dist/src/serialization/beast2/v5/frames.js.map +1 -1
- package/dist/src/serialization/beast2/v5/frames.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/frames.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/frames.spec.js +42 -0
- package/dist/src/serialization/beast2/v5/frames.spec.js.map +1 -0
- package/dist/src/serialization/beast2/v5/index.spec.js +108 -0
- package/dist/src/serialization/beast2/v5/index.spec.js.map +1 -1
- package/dist/src/serialization/beast2/v5/lazy.d.ts +12 -7
- package/dist/src/serialization/beast2/v5/lazy.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/lazy.js +16 -6
- package/dist/src/serialization/beast2/v5/lazy.js.map +1 -1
- package/dist/src/serialization/beast2/v5/lazy.spec.js +159 -18
- package/dist/src/serialization/beast2/v5/lazy.spec.js.map +1 -1
- package/dist/src/serialization/beast2/v5/stream.d.ts +110 -21
- package/dist/src/serialization/beast2/v5/stream.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/stream.js +153 -42
- package/dist/src/serialization/beast2/v5/stream.js.map +1 -1
- package/dist/src/serialization/beast2/v5/weight.d.ts +36 -0
- package/dist/src/serialization/beast2/v5/weight.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/weight.js +238 -0
- package/dist/src/serialization/beast2/v5/weight.js.map +1 -0
- package/dist/src/serialization/crc32.d.ts +38 -0
- package/dist/src/serialization/crc32.d.ts.map +1 -0
- package/dist/src/serialization/crc32.js +70 -0
- package/dist/src/serialization/crc32.js.map +1 -0
- package/dist/src/serialization/crc32.spec.d.ts +6 -0
- package/dist/src/serialization/crc32.spec.d.ts.map +1 -0
- package/dist/src/serialization/crc32.spec.js +92 -0
- package/dist/src/serialization/crc32.spec.js.map +1 -0
- package/dist/src/serialization/east-inferred.spec.js +4 -0
- package/dist/src/serialization/east-inferred.spec.js.map +1 -1
- package/dist/src/serialization/east.d.ts.map +1 -1
- package/dist/src/serialization/east.js +134 -110
- package/dist/src/serialization/east.js.map +1 -1
- package/dist/src/serialization/east.spec.js +185 -4
- package/dist/src/serialization/east.spec.js.map +1 -1
- package/dist/src/serialization/east_text.d.ts +25 -0
- package/dist/src/serialization/east_text.d.ts.map +1 -0
- package/dist/src/serialization/east_text.js +29 -0
- package/dist/src/serialization/east_text.js.map +1 -0
- package/dist/src/serialization/index.d.ts +1 -1
- package/dist/src/serialization/index.d.ts.map +1 -1
- package/dist/src/types.d.ts +1 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +7 -6
- package/dist/src/types.js.map +1 -1
- package/package.json +6 -3
|
@@ -0,0 +1,584 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The checker's view of a stream: how many outputs a filter gives, and the
|
|
7
|
+
* type each output has, with what narrowing has proved about it.
|
|
8
|
+
*
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
11
|
+
import { jsonFlatOptionPayload } from "../../serialization/json.js";
|
|
12
|
+
import { toEastTypeValue } from "../../type_of_type.js";
|
|
13
|
+
import { ArrayType, DictType, FloatType, NeverType, NullType, OptionType, StringType, StructType, VariantType, isTypeEqual, } from "../../types.js";
|
|
14
|
+
/** Exactly one output. @internal */
|
|
15
|
+
export const ONE = { lo: 1, hi: 1 };
|
|
16
|
+
/** None or one output. @internal */
|
|
17
|
+
export const MAYBE = { lo: 0, hi: 1 };
|
|
18
|
+
/** No output: `empty`, `error`, `break`. @internal */
|
|
19
|
+
export const ZERO = { lo: 0, hi: 0 };
|
|
20
|
+
/** Any number of outputs. @internal */
|
|
21
|
+
export const MANY = { lo: 0, hi: 2 };
|
|
22
|
+
/** At least one output, possibly more. @internal */
|
|
23
|
+
export const SOME = { lo: 1, hi: 2 };
|
|
24
|
+
/**
|
|
25
|
+
* The multiplicity of `a | b`: each output of `a` feeds `b`.
|
|
26
|
+
*
|
|
27
|
+
* @remarks
|
|
28
|
+
* Not `then`: a module that exports a `then` is a thenable, and a promise
|
|
29
|
+
* resolved with its namespace calls that `then` and waits on it forever — as
|
|
30
|
+
* vitest's module runner resolves every module it loads.
|
|
31
|
+
*
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
export function piped(a, b) {
|
|
35
|
+
const lo = a.lo === 1 && b.lo === 1 ? 1 : 0;
|
|
36
|
+
const hi = a.hi === 0 || b.hi === 0 ? 0 : (a.hi === 2 || b.hi === 2 ? 2 : 1);
|
|
37
|
+
return { lo, hi };
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The multiplicity of `a, b`: the outputs of `a`, then those of `b`.
|
|
41
|
+
*
|
|
42
|
+
* @internal
|
|
43
|
+
*/
|
|
44
|
+
export function also(a, b) {
|
|
45
|
+
return { lo: a.lo === 1 || b.lo === 1 ? 1 : 0, hi: Math.min(2, a.hi + b.hi) };
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The multiplicity of a choice between two filters: `if`, `//`, `try`.
|
|
49
|
+
*
|
|
50
|
+
* @internal
|
|
51
|
+
*/
|
|
52
|
+
export function either(a, b) {
|
|
53
|
+
return { lo: a.lo === 1 && b.lo === 1 ? 1 : 0, hi: Math.max(a.hi, b.hi) };
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The multiplicity a checked query records.
|
|
57
|
+
*
|
|
58
|
+
* @internal
|
|
59
|
+
*/
|
|
60
|
+
export function wireMultiplicity(m) {
|
|
61
|
+
if (m.hi === 2)
|
|
62
|
+
return "many";
|
|
63
|
+
return m.hi === 1 && m.lo === 1 ? "one" : "maybe";
|
|
64
|
+
}
|
|
65
|
+
/** The shape after a reported problem. @internal */
|
|
66
|
+
export const ERROR = { kind: "error" };
|
|
67
|
+
/**
|
|
68
|
+
* The shape of outputs of one type.
|
|
69
|
+
*
|
|
70
|
+
* @internal
|
|
71
|
+
*/
|
|
72
|
+
export function typed(type, facts) {
|
|
73
|
+
return { kind: "type", type, facts };
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* A union of members, flattened, with members of the same type and case
|
|
77
|
+
* merged; a single member is its own shape.
|
|
78
|
+
*
|
|
79
|
+
* @internal
|
|
80
|
+
*/
|
|
81
|
+
export function union(members) {
|
|
82
|
+
const merged = [];
|
|
83
|
+
for (const member of members) {
|
|
84
|
+
if (member.shape.type.type === "Never")
|
|
85
|
+
continue;
|
|
86
|
+
if (!merged.some(m => m.case === member.case && isTypeEqual(m.shape.type, member.shape.type)))
|
|
87
|
+
merged.push(member);
|
|
88
|
+
}
|
|
89
|
+
if (merged.length === 0)
|
|
90
|
+
return typed(NeverType);
|
|
91
|
+
if (merged.length === 1)
|
|
92
|
+
return merged[0].shape;
|
|
93
|
+
return { kind: "union", members: merged };
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* The members of a shape: one for a `type` shape.
|
|
97
|
+
*
|
|
98
|
+
* @internal
|
|
99
|
+
*/
|
|
100
|
+
export function membersOf(shape) {
|
|
101
|
+
if (shape.kind === "type")
|
|
102
|
+
return [{ shape, case: undefined }];
|
|
103
|
+
if (shape.kind === "union")
|
|
104
|
+
return shape.members;
|
|
105
|
+
return [];
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* A type with its recursive wrapper and references read through: what a
|
|
109
|
+
* value of it is made of.
|
|
110
|
+
*
|
|
111
|
+
* @internal
|
|
112
|
+
*/
|
|
113
|
+
export function unwrap(type) {
|
|
114
|
+
let t = type;
|
|
115
|
+
for (;;) {
|
|
116
|
+
if (t.type === "Recursive")
|
|
117
|
+
t = t.node;
|
|
118
|
+
else if (t.type === "Ref")
|
|
119
|
+
t = t.value;
|
|
120
|
+
else
|
|
121
|
+
return t;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* The payload of an option that jq sees as `null` or the value: East JSON's
|
|
126
|
+
* flat options (`jsonFlatOptionPayload`).
|
|
127
|
+
*
|
|
128
|
+
* @param type - a type
|
|
129
|
+
* @returns the `some` payload's type, or `undefined` when the type is not a
|
|
130
|
+
* flat option (jq then sees it as `{type, value}`)
|
|
131
|
+
*
|
|
132
|
+
* @internal
|
|
133
|
+
*/
|
|
134
|
+
export function nullablePayload(type) {
|
|
135
|
+
if (type.type !== "Variant")
|
|
136
|
+
return undefined;
|
|
137
|
+
if (jsonFlatOptionPayload(toEastTypeValue(type)) === null)
|
|
138
|
+
return undefined;
|
|
139
|
+
return type.cases["some"];
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Whether jq sees values of a type as `null`: Null, or a flat option.
|
|
143
|
+
*
|
|
144
|
+
* @internal
|
|
145
|
+
*/
|
|
146
|
+
export function canBeNull(type) {
|
|
147
|
+
return type.type === "Null" || nullablePayload(type) !== undefined;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* The type jq's `T` or `null` becomes: `Option<T>`, or `T` itself when it can
|
|
151
|
+
* already be `null`.
|
|
152
|
+
*
|
|
153
|
+
* @returns the type, or `undefined` when no type holds both: `T` is an option
|
|
154
|
+
* jq sees as `{type, value}`, and wrapping it again would too
|
|
155
|
+
*
|
|
156
|
+
* @internal
|
|
157
|
+
*/
|
|
158
|
+
export function orNull(type) {
|
|
159
|
+
if (type.type === "Never")
|
|
160
|
+
return NullType;
|
|
161
|
+
if (canBeNull(type))
|
|
162
|
+
return type;
|
|
163
|
+
const option = OptionType(type);
|
|
164
|
+
return nullablePayload(option) === undefined ? undefined : option;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* The one type two outputs can share, as jq's typed outputs unify.
|
|
168
|
+
*
|
|
169
|
+
* @param a - one output's type
|
|
170
|
+
* @param b - another's
|
|
171
|
+
* @returns their common type, or `undefined` when they have none
|
|
172
|
+
*
|
|
173
|
+
* @remarks
|
|
174
|
+
* - Equal types unify to themselves, and `Never` (no value) to the other.
|
|
175
|
+
* - A reference is read through, as jq sees its value: `Ref<T>` and `U`
|
|
176
|
+
* unify as `T` and `U` do.
|
|
177
|
+
* - A recursive type and its node unify to the recursive type; another
|
|
178
|
+
* recursive type only with `null`, or an option of it.
|
|
179
|
+
* - Integer and Float unify to Float.
|
|
180
|
+
* - `null` and `T` unify to `Option<T>`; `Option<T>` and `U` to
|
|
181
|
+
* `Option<T ⊔ U>`.
|
|
182
|
+
* - Arrays, sets, dicts and vectors unify element-wise; `Array<Never>` (an
|
|
183
|
+
* empty `[]`) takes the other's element type.
|
|
184
|
+
* - Structs with the same field names unify field by field, in the first's
|
|
185
|
+
* field order; `Struct{}` (an empty `{}`) unifies with any dict.
|
|
186
|
+
* - Variants unify case by case, taking every case of both.
|
|
187
|
+
*
|
|
188
|
+
* @internal
|
|
189
|
+
*/
|
|
190
|
+
export function unify(a, b) {
|
|
191
|
+
if (isTypeEqual(a, b))
|
|
192
|
+
return a;
|
|
193
|
+
if (a.type === "Never")
|
|
194
|
+
return b;
|
|
195
|
+
if (b.type === "Never")
|
|
196
|
+
return a;
|
|
197
|
+
if (a.type === "Ref")
|
|
198
|
+
return unify(a.value, b);
|
|
199
|
+
if (b.type === "Ref")
|
|
200
|
+
return unify(a, b.value);
|
|
201
|
+
if (a.type === "Recursive" && isTypeEqual(a.node, b))
|
|
202
|
+
return a;
|
|
203
|
+
if (b.type === "Recursive" && isTypeEqual(b.node, a))
|
|
204
|
+
return b;
|
|
205
|
+
if ((a.type === "Integer" && b.type === "Float") || (a.type === "Float" && b.type === "Integer"))
|
|
206
|
+
return FloatType;
|
|
207
|
+
// null and T.
|
|
208
|
+
if (a.type === "Null")
|
|
209
|
+
return orNull(b);
|
|
210
|
+
if (b.type === "Null")
|
|
211
|
+
return orNull(a);
|
|
212
|
+
const aPayload = nullablePayload(a);
|
|
213
|
+
const bPayload = nullablePayload(b);
|
|
214
|
+
if (aPayload !== undefined || bPayload !== undefined) {
|
|
215
|
+
const inner = unify(aPayload ?? a, bPayload ?? b);
|
|
216
|
+
return inner === undefined ? undefined : orNull(inner);
|
|
217
|
+
}
|
|
218
|
+
if (a.type === "Recursive" || b.type === "Recursive")
|
|
219
|
+
return undefined;
|
|
220
|
+
switch (a.type) {
|
|
221
|
+
case "Array": {
|
|
222
|
+
if (b.type !== "Array")
|
|
223
|
+
return undefined;
|
|
224
|
+
const element = unify(a.value, b.value);
|
|
225
|
+
return element === undefined ? undefined : ArrayType(element);
|
|
226
|
+
}
|
|
227
|
+
case "Set": {
|
|
228
|
+
if (b.type !== "Set" || !isTypeEqual(a.key, b.key))
|
|
229
|
+
return undefined;
|
|
230
|
+
return a;
|
|
231
|
+
}
|
|
232
|
+
case "Dict": {
|
|
233
|
+
if (b.type === "Struct" && Object.keys(b.fields).length === 0)
|
|
234
|
+
return a;
|
|
235
|
+
if (b.type !== "Dict" || !isTypeEqual(a.key, b.key))
|
|
236
|
+
return undefined;
|
|
237
|
+
const value = unify(a.value, b.value);
|
|
238
|
+
return value === undefined ? undefined : DictType(a.key, value);
|
|
239
|
+
}
|
|
240
|
+
case "Struct": {
|
|
241
|
+
if (b.type === "Dict" && Object.keys(a.fields).length === 0)
|
|
242
|
+
return b;
|
|
243
|
+
if (b.type !== "Struct")
|
|
244
|
+
return undefined;
|
|
245
|
+
const aFields = a.fields;
|
|
246
|
+
const bFields = b.fields;
|
|
247
|
+
const names = Object.keys(aFields);
|
|
248
|
+
if (names.length !== Object.keys(bFields).length || !names.every(name => name in bFields))
|
|
249
|
+
return undefined;
|
|
250
|
+
const fields = {};
|
|
251
|
+
for (const name of names) {
|
|
252
|
+
const field = unify(aFields[name], bFields[name]);
|
|
253
|
+
if (field === undefined)
|
|
254
|
+
return undefined;
|
|
255
|
+
fields[name] = field;
|
|
256
|
+
}
|
|
257
|
+
return StructType(fields);
|
|
258
|
+
}
|
|
259
|
+
case "Variant": {
|
|
260
|
+
if (b.type !== "Variant")
|
|
261
|
+
return undefined;
|
|
262
|
+
const aCases = a.cases;
|
|
263
|
+
const bCases = b.cases;
|
|
264
|
+
const cases = { ...aCases };
|
|
265
|
+
for (const [name, payload] of Object.entries(bCases)) {
|
|
266
|
+
if (name in cases) {
|
|
267
|
+
const merged = unify(cases[name], payload);
|
|
268
|
+
if (merged === undefined)
|
|
269
|
+
return undefined;
|
|
270
|
+
cases[name] = merged;
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
cases[name] = payload;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return VariantType(cases);
|
|
277
|
+
}
|
|
278
|
+
case "Vector":
|
|
279
|
+
case "Matrix":
|
|
280
|
+
return undefined;
|
|
281
|
+
default:
|
|
282
|
+
return undefined;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* The types `..` and `recurse` give on values of some types: each type, then
|
|
287
|
+
* the types of the values inside it, depth first, each once. Inside a value
|
|
288
|
+
* are an option's value, the elements of an array, set or vector, a matrix's
|
|
289
|
+
* rows, a dict's values, a struct's fields, and a variant's case name and
|
|
290
|
+
* payloads (jq's `{type, value}`).
|
|
291
|
+
*
|
|
292
|
+
* @param types - the input's types
|
|
293
|
+
* @returns the types, in the order the walk first meets them
|
|
294
|
+
*
|
|
295
|
+
* @internal
|
|
296
|
+
*/
|
|
297
|
+
export function descendTypes(types) {
|
|
298
|
+
const seen = [];
|
|
299
|
+
const visit = (type) => {
|
|
300
|
+
if (seen.some(s => isTypeEqual(s, type)))
|
|
301
|
+
return;
|
|
302
|
+
seen.push(type);
|
|
303
|
+
const t = unwrap(type);
|
|
304
|
+
const payload = nullablePayload(t);
|
|
305
|
+
if (payload !== undefined) {
|
|
306
|
+
visit(payload);
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
switch (t.type) {
|
|
310
|
+
case "Array":
|
|
311
|
+
visit(t.value);
|
|
312
|
+
break;
|
|
313
|
+
case "Set":
|
|
314
|
+
visit(t.key);
|
|
315
|
+
break;
|
|
316
|
+
case "Vector":
|
|
317
|
+
visit(t.element);
|
|
318
|
+
break;
|
|
319
|
+
case "Matrix":
|
|
320
|
+
visit(ArrayType(t.element));
|
|
321
|
+
break;
|
|
322
|
+
case "Dict":
|
|
323
|
+
visit(t.value);
|
|
324
|
+
break;
|
|
325
|
+
case "Struct":
|
|
326
|
+
for (const f of Object.values(t.fields))
|
|
327
|
+
visit(f);
|
|
328
|
+
break;
|
|
329
|
+
case "Variant":
|
|
330
|
+
visit(StringType);
|
|
331
|
+
for (const c of Object.values(t.cases))
|
|
332
|
+
visit(c);
|
|
333
|
+
break;
|
|
334
|
+
default: break;
|
|
335
|
+
}
|
|
336
|
+
};
|
|
337
|
+
types.forEach(visit);
|
|
338
|
+
return seen;
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* The one type a shape's outputs share.
|
|
342
|
+
*
|
|
343
|
+
* @param shape - a shape
|
|
344
|
+
* @returns the type, `Never` for no outputs, or `undefined` when the members
|
|
345
|
+
* have no common type (or the shape is an error)
|
|
346
|
+
*
|
|
347
|
+
* @internal
|
|
348
|
+
*/
|
|
349
|
+
export function unifyShape(shape) {
|
|
350
|
+
if (shape.kind === "error")
|
|
351
|
+
return undefined;
|
|
352
|
+
if (shape.kind === "type")
|
|
353
|
+
return shape.type;
|
|
354
|
+
let type = NeverType;
|
|
355
|
+
for (const member of shape.members) {
|
|
356
|
+
const next = unify(type, member.shape.type);
|
|
357
|
+
if (next === undefined)
|
|
358
|
+
return undefined;
|
|
359
|
+
type = next;
|
|
360
|
+
}
|
|
361
|
+
return type;
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Prints a type for a diagnostic, as jq's users read one: `Integer`,
|
|
365
|
+
* `Option<Float>`, `Array<String>`, `Dict<String, Float>`,
|
|
366
|
+
* `Struct{id: Integer, total: Float}`, `Variant{cancelled, pending, shipped}`.
|
|
367
|
+
*
|
|
368
|
+
* @param type - the type
|
|
369
|
+
* @param depth - how many levels of structs to spell out
|
|
370
|
+
* @returns its text
|
|
371
|
+
*
|
|
372
|
+
* @remarks
|
|
373
|
+
* A struct deeper than `depth` prints as `Struct{…}`, and one with more than
|
|
374
|
+
* six fields lists six and `…`. A recursive type prints its node, and a
|
|
375
|
+
* reference back into it as `…`.
|
|
376
|
+
*
|
|
377
|
+
* @internal
|
|
378
|
+
*/
|
|
379
|
+
export function describeType(type, depth = 2) {
|
|
380
|
+
const seen = [];
|
|
381
|
+
const print = (t, level) => {
|
|
382
|
+
switch (t.type) {
|
|
383
|
+
case "Never":
|
|
384
|
+
case "Null":
|
|
385
|
+
case "Boolean":
|
|
386
|
+
case "Integer":
|
|
387
|
+
case "Float":
|
|
388
|
+
case "String":
|
|
389
|
+
case "DateTime":
|
|
390
|
+
case "Blob":
|
|
391
|
+
return t.type;
|
|
392
|
+
case "Array": return `Array<${print(t.value, level)}>`;
|
|
393
|
+
case "Set": return `Set<${print(t.key, level)}>`;
|
|
394
|
+
case "Ref": return `Ref<${print(t.value, level)}>`;
|
|
395
|
+
case "Vector": return `Vector<${print(t.element, level)}>`;
|
|
396
|
+
case "Matrix": return `Matrix<${print(t.element, level)}>`;
|
|
397
|
+
case "Dict": return `Dict<${print(t.key, level)}, ${print(t.value, level)}>`;
|
|
398
|
+
case "Variant": {
|
|
399
|
+
const payload = nullablePayload(t);
|
|
400
|
+
if (payload !== undefined)
|
|
401
|
+
return `Option<${print(payload, level)}>`;
|
|
402
|
+
const cases = t.cases;
|
|
403
|
+
if (Object.keys(cases).length === 2 && "none" in cases && "some" in cases)
|
|
404
|
+
return `Option<${print(cases["some"], level)}>`;
|
|
405
|
+
return `Variant{${Object.keys(cases).join(", ")}}`;
|
|
406
|
+
}
|
|
407
|
+
case "Struct": {
|
|
408
|
+
const fields = Object.entries(t.fields);
|
|
409
|
+
if (level >= depth)
|
|
410
|
+
return fields.length === 0 ? "Struct{}" : "Struct{…}";
|
|
411
|
+
const shown = fields.slice(0, 6).map(([name, field]) => `${name}: ${print(field, level + 1)}`);
|
|
412
|
+
return `Struct{${shown.join(", ")}${fields.length > 6 ? ", …" : ""}}`;
|
|
413
|
+
}
|
|
414
|
+
case "Recursive": {
|
|
415
|
+
if (seen.includes(t))
|
|
416
|
+
return "…";
|
|
417
|
+
seen.push(t);
|
|
418
|
+
const text = print(t.node, level);
|
|
419
|
+
seen.pop();
|
|
420
|
+
return text;
|
|
421
|
+
}
|
|
422
|
+
case "Function":
|
|
423
|
+
case "AsyncFunction":
|
|
424
|
+
return `${t.type}([${t.inputs.map(input => print(input, level)).join(", ")}], ${print(t.output, level)})`;
|
|
425
|
+
}
|
|
426
|
+
};
|
|
427
|
+
return print(type, 0);
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* The names jq's `type` gives, and East's additions for its own types.
|
|
431
|
+
*
|
|
432
|
+
* @internal
|
|
433
|
+
*/
|
|
434
|
+
export const JQ_TYPE_NAMES = ["null", "boolean", "number", "string", "array", "object", "datetime", "blob", "function"];
|
|
435
|
+
/**
|
|
436
|
+
* The names `type` can give for values of a type: an option's `null` and its
|
|
437
|
+
* payload's.
|
|
438
|
+
*
|
|
439
|
+
* @internal
|
|
440
|
+
*/
|
|
441
|
+
export function jqTypeNames(type) {
|
|
442
|
+
const t = unwrap(type);
|
|
443
|
+
const payload = nullablePayload(t);
|
|
444
|
+
if (payload !== undefined)
|
|
445
|
+
return ["null", ...jqTypeNames(payload)];
|
|
446
|
+
switch (t.type) {
|
|
447
|
+
case "Never": return [];
|
|
448
|
+
case "Null": return ["null"];
|
|
449
|
+
case "Boolean": return ["boolean"];
|
|
450
|
+
case "Integer":
|
|
451
|
+
case "Float": return ["number"];
|
|
452
|
+
case "String": return ["string"];
|
|
453
|
+
case "Array":
|
|
454
|
+
case "Set":
|
|
455
|
+
case "Vector":
|
|
456
|
+
case "Matrix": return ["array"];
|
|
457
|
+
case "Dict":
|
|
458
|
+
case "Struct":
|
|
459
|
+
case "Variant": return ["object"];
|
|
460
|
+
case "DateTime": return ["datetime"];
|
|
461
|
+
case "Blob": return ["blob"];
|
|
462
|
+
case "Function":
|
|
463
|
+
case "AsyncFunction": return ["function"];
|
|
464
|
+
default: return [];
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* Narrows a shape to the outputs whose jq type is one of some names: what
|
|
469
|
+
* `select(type == "object")` keeps.
|
|
470
|
+
*
|
|
471
|
+
* @internal
|
|
472
|
+
*/
|
|
473
|
+
export function narrowTypes(shape, types) {
|
|
474
|
+
if (shape.kind === "error")
|
|
475
|
+
return shape;
|
|
476
|
+
const members = [];
|
|
477
|
+
for (const member of membersOf(shape)) {
|
|
478
|
+
const t = unwrap(member.shape.type);
|
|
479
|
+
const payload = nullablePayload(t);
|
|
480
|
+
if (payload !== undefined) {
|
|
481
|
+
const keepsNull = types.includes("null");
|
|
482
|
+
const keepsValue = jqTypeNames(payload).some(name => types.includes(name));
|
|
483
|
+
if (keepsNull && keepsValue)
|
|
484
|
+
members.push(member);
|
|
485
|
+
else if (keepsValue)
|
|
486
|
+
members.push({ shape: typed(payload), case: member.case });
|
|
487
|
+
else if (keepsNull)
|
|
488
|
+
members.push({ shape: typed(NullType), case: member.case });
|
|
489
|
+
continue;
|
|
490
|
+
}
|
|
491
|
+
if (jqTypeNames(t).some(name => types.includes(name)))
|
|
492
|
+
members.push(member);
|
|
493
|
+
}
|
|
494
|
+
return union(members);
|
|
495
|
+
}
|
|
496
|
+
/**
|
|
497
|
+
* Narrows a shape: the variant at `path` holds only `cases`.
|
|
498
|
+
*
|
|
499
|
+
* @param shape - the shape of `.`
|
|
500
|
+
* @param path - the field names from `.` to the variant
|
|
501
|
+
* @param cases - the cases it holds
|
|
502
|
+
* @returns the shape with the fact added, or the shape unchanged when the
|
|
503
|
+
* path does not lead to a variant
|
|
504
|
+
*
|
|
505
|
+
* @internal
|
|
506
|
+
*/
|
|
507
|
+
export function refine(shape, path, cases) {
|
|
508
|
+
if (shape.kind === "error")
|
|
509
|
+
return shape;
|
|
510
|
+
if (shape.kind === "union") {
|
|
511
|
+
return union(shape.members.map(member => ({ shape: refine(member.shape, path, cases), case: member.case })));
|
|
512
|
+
}
|
|
513
|
+
const facts = refineFacts(shape.type, shape.facts, path, cases);
|
|
514
|
+
return facts === undefined ? shape : typed(shape.type, facts);
|
|
515
|
+
}
|
|
516
|
+
function refineFacts(type, facts, path, cases) {
|
|
517
|
+
const t = unwrap(type);
|
|
518
|
+
const payload = nullablePayload(t);
|
|
519
|
+
if (payload !== undefined) {
|
|
520
|
+
const inner = refineFacts(payload, facts?.kind === "present" ? facts.payload : undefined, path, cases);
|
|
521
|
+
return inner === undefined ? undefined : { kind: "present", payload: inner };
|
|
522
|
+
}
|
|
523
|
+
if (path.length === 0) {
|
|
524
|
+
if (t.type !== "Variant")
|
|
525
|
+
return undefined;
|
|
526
|
+
const known = facts?.kind === "cases" ? facts.cases : undefined;
|
|
527
|
+
const kept = cases.filter(c => c in t.cases && (known === undefined || known.has(c)));
|
|
528
|
+
const single = kept.length === 1 && facts?.kind === "cases" && facts.cases.size === 1 ? facts.payload : undefined;
|
|
529
|
+
return { kind: "cases", cases: new Set(kept), payload: single };
|
|
530
|
+
}
|
|
531
|
+
if (t.type !== "Struct")
|
|
532
|
+
return undefined;
|
|
533
|
+
const [name, ...rest] = path;
|
|
534
|
+
const fields = t.fields;
|
|
535
|
+
if (!(name in fields))
|
|
536
|
+
return undefined;
|
|
537
|
+
const known = facts?.kind === "fields" ? facts.fields : new Map();
|
|
538
|
+
const inner = refineFacts(fields[name], known.get(name), rest, cases);
|
|
539
|
+
if (inner === undefined)
|
|
540
|
+
return undefined;
|
|
541
|
+
const next = new Map(known);
|
|
542
|
+
next.set(name, inner);
|
|
543
|
+
return { kind: "fields", fields: next };
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* The cases a variant can hold, given what is known about it.
|
|
547
|
+
*
|
|
548
|
+
* @internal
|
|
549
|
+
*/
|
|
550
|
+
export function casesOf(type, facts) {
|
|
551
|
+
const t = unwrap(type);
|
|
552
|
+
if (t.type !== "Variant")
|
|
553
|
+
return [];
|
|
554
|
+
const all = Object.keys(t.cases);
|
|
555
|
+
return facts?.kind === "cases" ? all.filter(c => facts.cases.has(c)) : all;
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
558
|
+
* Whether values of a type can be sorted and compared by East's total order:
|
|
559
|
+
* every data type (no functions).
|
|
560
|
+
*
|
|
561
|
+
* @internal
|
|
562
|
+
*/
|
|
563
|
+
export function isOrdered(type) {
|
|
564
|
+
const seen = new Set();
|
|
565
|
+
const check = (t) => {
|
|
566
|
+
if (seen.has(t))
|
|
567
|
+
return true;
|
|
568
|
+
seen.add(t);
|
|
569
|
+
switch (t.type) {
|
|
570
|
+
case "Function":
|
|
571
|
+
case "AsyncFunction": return false;
|
|
572
|
+
case "Array":
|
|
573
|
+
case "Ref": return check(t.value);
|
|
574
|
+
case "Set": return check(t.key);
|
|
575
|
+
case "Dict": return check(t.key) && check(t.value);
|
|
576
|
+
case "Struct": return Object.values(t.fields).every(check);
|
|
577
|
+
case "Variant": return Object.values(t.cases).every(check);
|
|
578
|
+
case "Recursive": return check(t.node);
|
|
579
|
+
default: return true;
|
|
580
|
+
}
|
|
581
|
+
};
|
|
582
|
+
return check(type);
|
|
583
|
+
}
|
|
584
|
+
//# sourceMappingURL=shapes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shapes.js","sourceRoot":"","sources":["../../../../src/query/jq/shapes.ts"],"names":[],"mappings":"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"}
|