@elaraai/east 1.0.83 → 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 +12 -7
- package/dist/src/naming.d.ts.map +1 -1
- package/dist/src/naming.js +30 -13
- package/dist/src/naming.js.map +1 -1
- package/dist/src/naming.spec.js +49 -0
- package/dist/src/naming.spec.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 +60 -6
- package/dist/src/runner_protocol.d.ts.map +1 -1
- package/dist/src/runner_protocol.js +48 -6
- package/dist/src/runner_protocol.js.map +1 -1
- package/dist/src/serialization/beast2/index.d.ts +2 -2
- package/dist/src/serialization/beast2/index.d.ts.map +1 -1
- package/dist/src/serialization/beast2/index.js +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 +74 -7
- package/dist/src/serialization/beast2/v5/lazy.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/lazy.js +129 -27
- package/dist/src/serialization/beast2/v5/lazy.js.map +1 -1
- package/dist/src/serialization/beast2/v5/lazy.spec.js +251 -16
- package/dist/src/serialization/beast2/v5/lazy.spec.js.map +1 -1
- package/dist/src/serialization/beast2/v5/stream.d.ts +139 -23
- package/dist/src/serialization/beast2/v5/stream.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/stream.js +196 -44
- package/dist/src/serialization/beast2/v5/stream.js.map +1 -1
- package/dist/src/serialization/beast2/v5/type-section.d.ts.map +1 -1
- package/dist/src/serialization/beast2/v5/type-section.js +25 -12
- package/dist/src/serialization/beast2/v5/type-section.js.map +1 -1
- package/dist/src/serialization/beast2/v5/type-section.spec.d.ts +6 -0
- package/dist/src/serialization/beast2/v5/type-section.spec.d.ts.map +1 -0
- package/dist/src/serialization/beast2/v5/type-section.spec.js +41 -0
- package/dist/src/serialization/beast2/v5/type-section.spec.js.map +1 -0
- 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/serialization/index.js +1 -1
- package/dist/src/serialization/index.js.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 +7 -4
|
@@ -0,0 +1,627 @@
|
|
|
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 jq translator: a checked program as ordinary East IR, typed from the
|
|
7
|
+
* checker's types (`devdocs/QUERY.md` §15).
|
|
8
|
+
*
|
|
9
|
+
* A filter is generated with a continuation that receives each of its
|
|
10
|
+
* outputs: `a | b` generates `b` in `a`'s continuation, `.[]` is a loop, and
|
|
11
|
+
* early exit (`first`, `limit`, `label`) is a labelled break out of every loop
|
|
12
|
+
* between. Every value is built by an East builtin, so a query runs wherever
|
|
13
|
+
* East IR runs; a runtime's only part is the `Query` builtin, which carries a
|
|
14
|
+
* query beside its translation and runs the translation (#1041).
|
|
15
|
+
*
|
|
16
|
+
* @packageDocumentation
|
|
17
|
+
*/
|
|
18
|
+
import type { AST, Label } from "../../ast.js";
|
|
19
|
+
import type { BuiltinName } from "../../builtins.js";
|
|
20
|
+
import { BlockBuilder } from "../../expr/block.js";
|
|
21
|
+
import { Expr } from "../../expr/expr.js";
|
|
22
|
+
import type { FunctionExpr } from "../../expr/function.js";
|
|
23
|
+
import { type EastType } from "../../types.js";
|
|
24
|
+
import { type CheckJqResult } from "./check.js";
|
|
25
|
+
import { type Facts, type Result, type Shape } from "./shapes.js";
|
|
26
|
+
import { type JqNode, type JqPattern } from "./spans.js";
|
|
27
|
+
/** Options for {@link translateJq}. */
|
|
28
|
+
export interface TranslateJqOptions {
|
|
29
|
+
/**
|
|
30
|
+
* Stop after this many outputs of a `many` query, and one more, so a caller
|
|
31
|
+
* can tell the result was cut short: the caller's limit.
|
|
32
|
+
*/
|
|
33
|
+
maxOutputs?: number;
|
|
34
|
+
/** Translate the tooling-only builtins, `signature`, `source`, `calls` and `captures`, to calls of platform functions the host gives. */
|
|
35
|
+
tooling?: boolean;
|
|
36
|
+
}
|
|
37
|
+
/** A checked program as East IR. */
|
|
38
|
+
export interface JqTranslation {
|
|
39
|
+
/**
|
|
40
|
+
* The translation's parameters, in order: one per field of an e3 root the
|
|
41
|
+
* program reads (`name` the field's), or the one input (`name` `null`).
|
|
42
|
+
*/
|
|
43
|
+
inputs: {
|
|
44
|
+
name: string | null;
|
|
45
|
+
type: EastType;
|
|
46
|
+
}[];
|
|
47
|
+
/** The result's type: the element type `T` for `one`, `Option<T>` for `maybe`, `Array<T>` for `many`. */
|
|
48
|
+
resultType: EastType;
|
|
49
|
+
/**
|
|
50
|
+
* The translation over given inputs, as a block expression.
|
|
51
|
+
*
|
|
52
|
+
* @param inputs - one expression per {@link JqTranslation.inputs}, in order
|
|
53
|
+
* @returns the result, of {@link JqTranslation.resultType}
|
|
54
|
+
*/
|
|
55
|
+
build(...inputs: Expr[]): Expr;
|
|
56
|
+
/** The translation as an East function of its inputs. */
|
|
57
|
+
fn(): FunctionExpr<any[], any>;
|
|
58
|
+
/**
|
|
59
|
+
* A call of the `Query` builtin over given inputs, as `East.jq` emits it
|
|
60
|
+
* (#1041): the builtin's arguments are the program as written and a root's
|
|
61
|
+
* input names, a typed constant (`QueryCallType`), and the translation, an
|
|
62
|
+
* East function of every input the query was checked against, which reads
|
|
63
|
+
* those the query reads and whose type carries the query's types; the
|
|
64
|
+
* call's arguments are the inputs. Running the call runs the translation,
|
|
65
|
+
* and printers print it back as `East.jq`.
|
|
66
|
+
*
|
|
67
|
+
* @param inputs - one expression per field of a root, in the root's order,
|
|
68
|
+
* or the one input
|
|
69
|
+
* @returns the result, of {@link JqTranslation.resultType}
|
|
70
|
+
* @throws {TranslationError} When the inputs are not one per field of the
|
|
71
|
+
* root, or the one input.
|
|
72
|
+
*/
|
|
73
|
+
call(...inputs: Expr[]): Expr;
|
|
74
|
+
}
|
|
75
|
+
/** The input of a program checked as an e3 root: each field it reads, an input of its own. @internal */
|
|
76
|
+
export interface RootValue {
|
|
77
|
+
readonly root: true;
|
|
78
|
+
readonly fields: ReadonlyMap<string, Expr>;
|
|
79
|
+
}
|
|
80
|
+
/** A value the translation passes along: an East expression, or the root. @internal */
|
|
81
|
+
export type Value = Expr | RootValue;
|
|
82
|
+
/**
|
|
83
|
+
* A type with its parts readable, for code that has decided its kind: an
|
|
84
|
+
* array's `value`, a dict's `key`, a struct's `fields`.
|
|
85
|
+
*
|
|
86
|
+
* @internal
|
|
87
|
+
*/
|
|
88
|
+
export type TypeParts = EastType & {
|
|
89
|
+
readonly value: EastType;
|
|
90
|
+
readonly key: EastType;
|
|
91
|
+
readonly element: EastType;
|
|
92
|
+
readonly node: EastType;
|
|
93
|
+
readonly fields: Record<string, EastType>;
|
|
94
|
+
readonly cases: Record<string, EastType>;
|
|
95
|
+
readonly inputs: EastType[];
|
|
96
|
+
readonly output: EastType;
|
|
97
|
+
};
|
|
98
|
+
/** A type, its parts readable. @internal */
|
|
99
|
+
export declare function parts(type: EastType): TypeParts;
|
|
100
|
+
/** A block being written. @internal */
|
|
101
|
+
export type Block = BlockBuilder<any>;
|
|
102
|
+
/** What receives each output of a filter: the block to write in, and the output. @internal */
|
|
103
|
+
export type Emit = ($: Block, value: Expr) => void;
|
|
104
|
+
/**
|
|
105
|
+
* A position's new value in an update: the value, and whether it is an
|
|
106
|
+
* option whose `none` deletes the position (`|=` with no output).
|
|
107
|
+
*
|
|
108
|
+
* @internal
|
|
109
|
+
*/
|
|
110
|
+
export interface Update {
|
|
111
|
+
readonly value: Expr;
|
|
112
|
+
readonly optional: boolean;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* What gives a position's new value in an update, from its old value: the
|
|
116
|
+
* new value, or `undefined` when the update never gives one there.
|
|
117
|
+
*
|
|
118
|
+
* @internal
|
|
119
|
+
*/
|
|
120
|
+
export type UpdateFn = ($: Block, old: Expr) => Update | undefined;
|
|
121
|
+
/** A `def` or a filter parameter in scope. */
|
|
122
|
+
type Binding = {
|
|
123
|
+
kind: "def";
|
|
124
|
+
node: Extract<JqNode, {
|
|
125
|
+
type: "def";
|
|
126
|
+
}>;
|
|
127
|
+
path: string;
|
|
128
|
+
env: () => Env;
|
|
129
|
+
} | {
|
|
130
|
+
kind: "param";
|
|
131
|
+
arg: JqNode;
|
|
132
|
+
path: string;
|
|
133
|
+
env: Env;
|
|
134
|
+
};
|
|
135
|
+
/** What is in scope where a node is generated. @internal */
|
|
136
|
+
export interface Env {
|
|
137
|
+
readonly vars: ReadonlyMap<string, Value>;
|
|
138
|
+
readonly defs: ReadonlyMap<string, Binding>;
|
|
139
|
+
readonly labels: ReadonlyMap<string, Label>;
|
|
140
|
+
/** Which instance of a `def`'s body this is, as the checker names it. */
|
|
141
|
+
readonly instance: string;
|
|
142
|
+
/** Recursive defs being generated, by their instance signature: the reference holding each one's function. */
|
|
143
|
+
readonly recursion: ReadonlyMap<string, Expr>;
|
|
144
|
+
/**
|
|
145
|
+
* The path of a fold's update that sets a key of the fold's state in place:
|
|
146
|
+
* nothing else holds the state, so it changes without a copy (#1093).
|
|
147
|
+
*/
|
|
148
|
+
readonly inPlace?: string;
|
|
149
|
+
}
|
|
150
|
+
/** A call of a builtin being translated. @internal */
|
|
151
|
+
export interface CallSite {
|
|
152
|
+
/** The builtin as called. */
|
|
153
|
+
readonly name: string;
|
|
154
|
+
readonly path: string;
|
|
155
|
+
readonly args: readonly JqNode[];
|
|
156
|
+
readonly argPaths: readonly string[];
|
|
157
|
+
readonly $: Block;
|
|
158
|
+
readonly x: Value;
|
|
159
|
+
readonly env: Env;
|
|
160
|
+
readonly emit: Emit;
|
|
161
|
+
}
|
|
162
|
+
/** A builtin's translation. @internal */
|
|
163
|
+
export type BuiltinRule = (t: Translator, call: CallSite) => void;
|
|
164
|
+
/**
|
|
165
|
+
* Raised when a checked program holds something the translator cannot
|
|
166
|
+
* express. The checker refuses what a query may not do, so this marks a gap
|
|
167
|
+
* in the translation, never a mistake in the query.
|
|
168
|
+
*/
|
|
169
|
+
export declare class TranslationError extends Error {
|
|
170
|
+
constructor(message: string);
|
|
171
|
+
}
|
|
172
|
+
/** Whether a value is the root. @internal */
|
|
173
|
+
export declare function isRoot(value: Value): value is RootValue;
|
|
174
|
+
/** The translator for one checked program. @internal */
|
|
175
|
+
export declare class Translator {
|
|
176
|
+
readonly checked: CheckJqResult;
|
|
177
|
+
readonly options: TranslateJqOptions;
|
|
178
|
+
private readonly locs;
|
|
179
|
+
private readonly retyped;
|
|
180
|
+
constructor(checked: CheckJqResult, options: TranslateJqOptions);
|
|
181
|
+
/** The error for a gap in the translation. */
|
|
182
|
+
gap(message: string): TranslationError;
|
|
183
|
+
/** The location of a node in the jq text, as the IR's source map holds it: file `jq`, its line and column. */
|
|
184
|
+
loc(path: string): bigint;
|
|
185
|
+
mk(ast: AST): Expr;
|
|
186
|
+
ast(e: Expr): AST;
|
|
187
|
+
type(e: Expr): TypeParts;
|
|
188
|
+
block(): Block;
|
|
189
|
+
/** Whether a block has ended: its last statement breaks, raises or returns. */
|
|
190
|
+
ended($: Block): boolean;
|
|
191
|
+
/** A call of an East builtin. */
|
|
192
|
+
b(name: BuiltinName, typeParameters: EastType[], args: Expr[], output: EastType, path: string): Expr;
|
|
193
|
+
/** A constant of a type. */
|
|
194
|
+
value(v: unknown, type: EastType, path?: string): Expr;
|
|
195
|
+
int(n: number | bigint, path?: string): Expr;
|
|
196
|
+
float(n: number, path?: string): Expr;
|
|
197
|
+
str(s: string, path?: string): Expr;
|
|
198
|
+
bool(v: boolean, path?: string): Expr;
|
|
199
|
+
null(path?: string): Expr;
|
|
200
|
+
/**
|
|
201
|
+
* A value as a wider type it is a subtype of. A recursive type equals its
|
|
202
|
+
* node to East's type checks, but a value passes between the two through
|
|
203
|
+
* its wrapper, which this adds or takes away.
|
|
204
|
+
*/
|
|
205
|
+
as(e: Expr, type: EastType): Expr;
|
|
206
|
+
/**
|
|
207
|
+
* An option holding a value. An option that can only be none
|
|
208
|
+
* (`Option<Never>`, over an empty collection's elements) is never made
|
|
209
|
+
* some: the payload, a value that never arrives, stands for it, as East's
|
|
210
|
+
* builders cannot spell a case of Never.
|
|
211
|
+
*/
|
|
212
|
+
some(payload: Expr, optionType: EastType): Expr;
|
|
213
|
+
none(optionType: EastType): Expr;
|
|
214
|
+
/**
|
|
215
|
+
* A case of a variant type, wrapped when the type is recursive. A case of
|
|
216
|
+
* Never is never made: the payload, which never arrives, stands for it.
|
|
217
|
+
*/
|
|
218
|
+
variantOf(type: EastType, name: string, payload: Expr): Expr;
|
|
219
|
+
/**
|
|
220
|
+
* A struct of a type from its fields' values, wrapped when the type is
|
|
221
|
+
* recursive. A struct with a field of Never is never made: that field's
|
|
222
|
+
* value, which never arrives, stands for it.
|
|
223
|
+
*/
|
|
224
|
+
struct(type: EastType, fields: Readonly<Record<string, Expr>>): Expr;
|
|
225
|
+
/** A field of a struct value. */
|
|
226
|
+
field(struct: Expr, name: string): Expr;
|
|
227
|
+
/** A value read through its recursive wrapper and references: what jq sees. */
|
|
228
|
+
open(e: Expr): Expr;
|
|
229
|
+
/** A call of a function value. */
|
|
230
|
+
callFn(fn: Expr, args: Expr[], path: string): Expr;
|
|
231
|
+
/** An East function value, built from a body that gives its result. */
|
|
232
|
+
lambda(inputs: EastType[], output: EastType, names: string[], body: ($: Block, ...params: Expr[]) => Expr | void, path: string): Expr;
|
|
233
|
+
/** A function of East's float library, called on a number. */
|
|
234
|
+
round(name: "roundFloor" | "roundCeil" | "roundHalf" | "roundTrunc", v: Expr, $: Block, path: string): Expr;
|
|
235
|
+
/** Declares a variable holding a value: `let` when `mutable`, else `const`. */
|
|
236
|
+
declare($: Block, init: Expr, name: string, mutable?: boolean, type?: EastType): Expr;
|
|
237
|
+
/** A value bound to a variable of its own, unless it is one already or a constant: so it is computed once. */
|
|
238
|
+
bind($: Block, e: Expr, name: string): Expr;
|
|
239
|
+
assign($: Block, variable: Expr, value: Expr): void;
|
|
240
|
+
/** An expression evaluated for its effect. */
|
|
241
|
+
stmt($: Block, e: Expr): void;
|
|
242
|
+
/** A runtime error, located at a node. */
|
|
243
|
+
raise($: Block, message: Expr | string, path: string): void;
|
|
244
|
+
brk($: Block, label: Label): void;
|
|
245
|
+
/** A block's statements as one body, closed as the builder closes a block: null-terminated. */
|
|
246
|
+
body(inner: Block): AST;
|
|
247
|
+
/**
|
|
248
|
+
* Statements the last of which diverges, as one body, assembled as the
|
|
249
|
+
* builders assemble one: a single statement is that statement.
|
|
250
|
+
*/
|
|
251
|
+
diverging(statements: AST[]): AST;
|
|
252
|
+
/** A block that gives a value: its statements, then the value. */
|
|
253
|
+
blockValue(build: ($: Block) => Expr, type: EastType): AST;
|
|
254
|
+
/** Loops over an array, set, dict, vector or matrix: each element (a set's key; a dict's value, and its key). */
|
|
255
|
+
forEach($: Block, collection: Expr, each: ($: Block, value: Expr, key: Expr | undefined, label: Label) => void, path: string, name?: string): void;
|
|
256
|
+
/** A loop while a condition holds; `true` for one left only by `break`. */
|
|
257
|
+
whileLoop($: Block, condition: Expr | true, body: ($: Block, label: Label) => void, path: string): void;
|
|
258
|
+
/** A block that runs once, with a label that leaves it early: how a stream stops. */
|
|
259
|
+
once($: Block, body: ($: Block, label: Label) => void, path: string): void;
|
|
260
|
+
/** `if`, with an optional `else`. */
|
|
261
|
+
ifElse($: Block, condition: Expr, then: ($: Block) => void, otherwise: (($: Block) => void) | undefined, path: string): void;
|
|
262
|
+
/** Runs `then` where a condition holds and `otherwise` where it does not; a known condition runs one of them only. */
|
|
263
|
+
branch($: Block, condition: Expr | boolean, then: ($: Block) => void, otherwise: ($: Block) => void, path: string): void;
|
|
264
|
+
/** A statement that runs a handler for the case a variant holds; a case with no handler does nothing. */
|
|
265
|
+
match($: Block, v: Expr, handlers: Readonly<Record<string, ($: Block, payload: Expr) => void>>, path: string): void;
|
|
266
|
+
/** A value chosen by the case a variant holds: each case's block gives it. */
|
|
267
|
+
matchValue(v: Expr, cases: Readonly<Record<string, ($: Block, payload: Expr) => Expr>>, type: EastType, path: string): Expr;
|
|
268
|
+
/** A variant with each case's payload given by `f` of it, of the variant type the new payloads make. */
|
|
269
|
+
mapPayloads(v: Expr, f: ($: Block, name: string, payload: Expr) => Expr, path: string): Expr;
|
|
270
|
+
/** A value chosen by a condition. */
|
|
271
|
+
ifValue(condition: Expr, then: ($: Block) => Expr, otherwise: ($: Block) => Expr, type: EastType, path: string): Expr;
|
|
272
|
+
/** `try`/`catch`: the handler receives the error's message. */
|
|
273
|
+
tryCatch($: Block, body: ($: Block) => void, handler: ($: Block, message: Expr) => void, path: string): void;
|
|
274
|
+
emptyArray(element: EastType): Expr;
|
|
275
|
+
/** Appends a value to an array variable. */
|
|
276
|
+
push($: Block, array: Expr, v: Expr, path: string): void;
|
|
277
|
+
/** Sets a key of a dict variable, inserting it or replacing its value. */
|
|
278
|
+
put($: Block, dict: Expr, key: Expr, v: Expr, path: string): void;
|
|
279
|
+
/** An array-like value as an array: an array itself, a set's keys, a vector's elements, a matrix's rows. */
|
|
280
|
+
asArray($: Block, v: Expr, path: string): Expr | undefined;
|
|
281
|
+
/** The number of elements of an array. */
|
|
282
|
+
size(array: Expr, path: string): Expr;
|
|
283
|
+
lt(a: Expr, b: Expr, path: string): Expr;
|
|
284
|
+
eq(a: Expr, b: Expr, path: string): Expr;
|
|
285
|
+
add(a: Expr, b: Expr, path: string): Expr;
|
|
286
|
+
not(a: Expr, path: string): Expr;
|
|
287
|
+
/** A literal node's value and type, as the program writes it. */
|
|
288
|
+
literal(node: Extract<JqNode, {
|
|
289
|
+
type: "literal";
|
|
290
|
+
}>): {
|
|
291
|
+
type: EastType;
|
|
292
|
+
value: unknown;
|
|
293
|
+
};
|
|
294
|
+
/** A node's value when it is a literal, as the program writes it. */
|
|
295
|
+
literalOf(node: JqNode | undefined): {
|
|
296
|
+
type: EastType;
|
|
297
|
+
value: unknown;
|
|
298
|
+
} | undefined;
|
|
299
|
+
/** An expression's value when it is a constant. */
|
|
300
|
+
constant(e: Expr): {
|
|
301
|
+
value: unknown;
|
|
302
|
+
} | undefined;
|
|
303
|
+
/** What checking a node gave in an instance. */
|
|
304
|
+
result(path: string, env: Env): Result | null;
|
|
305
|
+
/** The one type a node's outputs share, as the checker collects them. */
|
|
306
|
+
typeAt(path: string, env: Env): TypeParts;
|
|
307
|
+
/** A node's text. */
|
|
308
|
+
text(path: string): string;
|
|
309
|
+
/** What narrowing proved about a value of a type in a shape. */
|
|
310
|
+
factsIn(shape: Shape | null | undefined, type: EastType): Facts | undefined;
|
|
311
|
+
/** The instance a node's records are in for an input: its own, or one checked again for this input's type. */
|
|
312
|
+
envFor(path: string, env: Env, x: Value): Env;
|
|
313
|
+
/**
|
|
314
|
+
* A value as a type the checker widened it to: Integer as Float, `T` or
|
|
315
|
+
* `null` as `Option<T>`, and arrays, dicts, structs and variants element by
|
|
316
|
+
* element; and a string literal the checker read as a DateTime, as the
|
|
317
|
+
* DateTime it writes.
|
|
318
|
+
*
|
|
319
|
+
* @throws {TranslationError} When the type is not wider.
|
|
320
|
+
*/
|
|
321
|
+
widenTo($: Block, e: Expr, to: EastType, path: string): Expr;
|
|
322
|
+
/**
|
|
323
|
+
* Gives a value to `emit` as the checker's type for it: widened, or
|
|
324
|
+
* narrowed as narrowing proved. A `null` where the checker proved a value
|
|
325
|
+
* never reaches `emit`, and an option it proved present gives its payload.
|
|
326
|
+
*/
|
|
327
|
+
emitAs($: Block, e: Expr, to: EastType, path: string, emit: Emit): void;
|
|
328
|
+
/** Whether a value is true to jq, not `false` or `null`: a constant when its type decides it. */
|
|
329
|
+
truthy(e: Expr, path: string): Expr | boolean;
|
|
330
|
+
asExpr(v: Expr | boolean): Expr;
|
|
331
|
+
/**
|
|
332
|
+
* Generates a node: code in `$` that gives each of its outputs to `emit`,
|
|
333
|
+
* as the checker's type for them.
|
|
334
|
+
*/
|
|
335
|
+
gen(node: JqNode, path: string, $: Block, x: Value, env: Env, emit: Emit): void;
|
|
336
|
+
/** Generates a node, each output as the one type its outputs share. */
|
|
337
|
+
collected(node: JqNode, path: string, $: Block, x: Value, env: Env, emit: Emit): void;
|
|
338
|
+
/**
|
|
339
|
+
* The one output of a node that gives exactly one, as an expression of a
|
|
340
|
+
* type: the value itself when the node gives it once in `$`, else a
|
|
341
|
+
* variable each place that gives it assigns.
|
|
342
|
+
*/
|
|
343
|
+
one(node: JqNode, path: string, $: Block, x: Value, env: Env, type: EastType): Expr;
|
|
344
|
+
/** A value of a type to start a variable with, assigned before it is read. */
|
|
345
|
+
placeholder(type: EastType): Expr;
|
|
346
|
+
/** A plain value of a type, when there is one. */
|
|
347
|
+
zeroOf(type: EastType, seen: ReadonlySet<EastType>): Expr | undefined;
|
|
348
|
+
private genNode;
|
|
349
|
+
/**
|
|
350
|
+
* `-v`: a number negated. Any other value raises jq's error, naming its
|
|
351
|
+
* kind, as a lenient place (`try`, `?`) lets it by; an option is null, or
|
|
352
|
+
* its value.
|
|
353
|
+
*/
|
|
354
|
+
negate($: Block, v: Expr, path: string, emit: Emit): void;
|
|
355
|
+
/** `$__loc__`: where a node is, as jq gives it. */
|
|
356
|
+
location(path: string): Expr;
|
|
357
|
+
/** A value that must be an expression: the root is only ever read a field at a time. */
|
|
358
|
+
expr(v: Value, path: string): Expr;
|
|
359
|
+
/** `.name` on a value, as jq reads it: `facts` say which cases a variant can hold. */
|
|
360
|
+
readField($: Block, v: Value, name: string, optional: boolean, path: string, facts: Facts | undefined, emit: Emit): void;
|
|
361
|
+
/** A dict's value at a key: `null` when it lacks the key. */
|
|
362
|
+
dictGet($: Block, dict: Expr, key: Expr, path: string, emit: Emit): void;
|
|
363
|
+
private genIndex;
|
|
364
|
+
/** `.[k]` on a value. */
|
|
365
|
+
indexOf($: Block, v: Expr, k: Expr, optional: boolean, path: string, emit: Emit): void;
|
|
366
|
+
private genSlice;
|
|
367
|
+
/** `.[a:b]` on a value: half-open, negative bounds counted from the end, clamped. */
|
|
368
|
+
sliceOf($: Block, v: Expr, a: Expr | undefined, b: Expr | undefined, optional: boolean, path: string, emit: Emit): void;
|
|
369
|
+
/** A slice bound as an index: absent or null for its default, negative from the end, clamped to the length. */
|
|
370
|
+
boundOf($: Block, b: Expr | undefined, fallback: Expr, length: Expr, path: string): Expr;
|
|
371
|
+
/** `.[]` on a value: an array's elements, a set's, a dict's values in key order, a struct's field values in order. */
|
|
372
|
+
iterate($: Block, v: Expr, optional: boolean, path: string, emit: Emit): void;
|
|
373
|
+
/** The kinds of value `..` finds directly inside a value of a type, as the checker walks them. */
|
|
374
|
+
childKinds(type: EastType): EastType[];
|
|
375
|
+
/** Gives each value `..` finds directly inside a value to `emit`, in order. */
|
|
376
|
+
children($: Block, v: Expr, path: string, emit: Emit): void;
|
|
377
|
+
/**
|
|
378
|
+
* `..`: a value and every value inside it, in pre-order. A recursive type
|
|
379
|
+
* is walked with a stack of the kinds of value it holds, so the IR needs no
|
|
380
|
+
* recursion.
|
|
381
|
+
*/
|
|
382
|
+
descend($: Block, v: Expr, path: string, emit: Emit): void;
|
|
383
|
+
/**
|
|
384
|
+
* A depth-first walk with an explicit stack of values of several kinds:
|
|
385
|
+
* `visit` gets each value in pre-order, and a `push` for the values to walk
|
|
386
|
+
* after it, first to last.
|
|
387
|
+
*/
|
|
388
|
+
walkStack($: Block, start: Expr, kinds: readonly EastType[], path: string, visit: ($: Block, value: Expr, push: Emit) => void): void;
|
|
389
|
+
private genObject;
|
|
390
|
+
/**
|
|
391
|
+
* A string with interpolations: each combination of the interpolated
|
|
392
|
+
* values, each written by `text` (`tostring`, or a format).
|
|
393
|
+
*/
|
|
394
|
+
genString(parts: readonly {
|
|
395
|
+
type: string;
|
|
396
|
+
value: any;
|
|
397
|
+
}[], path: string, $: Block, x: Value, env: Env, emit: Emit, text: ($: Block, v: Expr) => Expr, partsPath: string): void;
|
|
398
|
+
/** Two strings joined. */
|
|
399
|
+
concat(a: Expr, b: Expr, path: string): Expr;
|
|
400
|
+
/** jq's `tostring`: a string as it is, `null` as `null`, anything else as its East text (§13.9). */
|
|
401
|
+
tostring($: Block, v: Expr, path: string): Expr;
|
|
402
|
+
private genBinary;
|
|
403
|
+
/** A comparison: East's order within a kind, jq's order across kinds (null, booleans, numbers, strings, arrays, objects). */
|
|
404
|
+
compare($: Block, op: string, a: Expr, b: Expr, path: string): Expr;
|
|
405
|
+
/**
|
|
406
|
+
* An arithmetic operator on two values, as jq defines it for their kinds:
|
|
407
|
+
* its value, or an error expression (of type Never) for kinds it does not
|
|
408
|
+
* combine, which only a lenient place (`try`, `?`) lets through.
|
|
409
|
+
*/
|
|
410
|
+
arith($: Block, op: string, a: Expr, b: Expr, path: string): Expr;
|
|
411
|
+
/**
|
|
412
|
+
* jq's `%`: the remainder of the numbers truncated to 64-bit integers, one
|
|
413
|
+
* beyond the range taken as its end (±Infinity too). Integers give an
|
|
414
|
+
* Integer; with a Float, a NaN gives NaN, and the remainder is a Float. A
|
|
415
|
+
* divisor of 0 raises, as IntegerRemainder does.
|
|
416
|
+
*/
|
|
417
|
+
private remainder;
|
|
418
|
+
/** A Float truncated to an Integer as jq's `dtoi` takes it: below the range its least, above it its greatest. */
|
|
419
|
+
private truncated;
|
|
420
|
+
/**
|
|
421
|
+
* jq's string repetition: `n` copies of a string, a Float count truncated,
|
|
422
|
+
* at most 2³¹ − 1 as jq takes it. A negative count, or NaN, gives null.
|
|
423
|
+
*/
|
|
424
|
+
private repeat;
|
|
425
|
+
/** jq's split of a string by a separator: an empty string has no parts. */
|
|
426
|
+
split($: Block, s: Expr, separator: Expr, path: string): Expr;
|
|
427
|
+
/** Whether a Float is NaN: East's order puts it above +Infinity. */
|
|
428
|
+
isNan(f: Expr, path: string): Expr;
|
|
429
|
+
/** An expression that raises an error: of type Never, so it stands for a value of any type. */
|
|
430
|
+
failure(message: string, path: string): Expr;
|
|
431
|
+
/** Gives a value to `emit`, unless it is an error expression, which runs as a statement instead. */
|
|
432
|
+
give($: Block, v: Expr, emit: Emit): void;
|
|
433
|
+
/** A value chosen by the case a variant holds, of the one type the cases' values share. */
|
|
434
|
+
matchAuto(v: Expr, cases: Readonly<Record<string, ($: Block, payload: Expr) => Expr>>, path: string): Expr;
|
|
435
|
+
/** `a + b` on structs: `b`'s fields win, and new ones follow; `a * b` merges fields that are objects in both deeply. */
|
|
436
|
+
mergeStructs($: Block, a: Expr, b: Expr, deep: boolean, path: string): Expr;
|
|
437
|
+
/**
|
|
438
|
+
* `a + b` on dicts: every key of both, `b`'s value where both hold one;
|
|
439
|
+
* `a * b` merges those values deeply where both are objects.
|
|
440
|
+
*/
|
|
441
|
+
mergeDicts($: Block, a: Expr, b: Expr, deep: boolean, path: string): Expr;
|
|
442
|
+
/**
|
|
443
|
+
* Two values merged as jq's `*` merges them: structs and dicts deeply, an
|
|
444
|
+
* option of one where both hold a value; anything else is `b`.
|
|
445
|
+
*/
|
|
446
|
+
deepMerge($: Block, a: Expr, b: Expr, path: string): Expr;
|
|
447
|
+
private genAlternative;
|
|
448
|
+
/** Gives a value to `emit` when it is neither false nor null, out of its option. */
|
|
449
|
+
present($: Block, v: Expr, path: string, emit: Emit): void;
|
|
450
|
+
private genIf;
|
|
451
|
+
/**
|
|
452
|
+
* Runs a condition's continuation with its input opened when the condition
|
|
453
|
+
* tests its type: `type == "number"` on an option then knows which it holds,
|
|
454
|
+
* and the branch it rules out is never generated.
|
|
455
|
+
*/
|
|
456
|
+
narrowed($: Block, x: Value, conditionPath: string, env: Env, then: ($: Block, value: Value) => void): void;
|
|
457
|
+
private genTry;
|
|
458
|
+
private genFold;
|
|
459
|
+
/**
|
|
460
|
+
* Whether a fold's update may set a key of its state in place, as jq
|
|
461
|
+
* changes a value nothing else holds (#1093). The state is a dict; the
|
|
462
|
+
* update sets a key of it, `.[k]` or `.name` with `=`, `|=` or an
|
|
463
|
+
* arithmetic update, perhaps further down (`.[k].n += 1`), where only the
|
|
464
|
+
* state's own key is set in place; the value of `=` and of an arithmetic
|
|
465
|
+
* update is one value, which holds nothing of the state; and a `foreach`
|
|
466
|
+
* gives what its `extract` reads of the state, never the state. A key is
|
|
467
|
+
* of an immutable type, so it never holds the state, and `|=`'s update runs
|
|
468
|
+
* on the old value at the key, which cannot reach the state.
|
|
469
|
+
*/
|
|
470
|
+
private updatesInPlace;
|
|
471
|
+
/**
|
|
472
|
+
* Whether a filter's outputs on a fold's state hold nothing of it: they
|
|
473
|
+
* are of an immutable type, which holds no dict, or {@link stateHeldBy}
|
|
474
|
+
* finds them read from the state or made without it.
|
|
475
|
+
*/
|
|
476
|
+
private holdsNoState;
|
|
477
|
+
private genBind;
|
|
478
|
+
/**
|
|
479
|
+
* Binds a pattern's variables to the parts of a value, each as the type the
|
|
480
|
+
* checker gave the variable where the body runs.
|
|
481
|
+
*/
|
|
482
|
+
destructure($: Block, pattern: JqPattern, path: string, value: Value, env: Env, bodyPath: string, then: ($: Block, vars: ReadonlyMap<string, Value>) => void): void;
|
|
483
|
+
private genCall;
|
|
484
|
+
/**
|
|
485
|
+
* A recursive def with value parameters: an East function held in a
|
|
486
|
+
* reference, which its own body calls through the reference. It returns
|
|
487
|
+
* its whole stream as an array, so early exit does not reach into it.
|
|
488
|
+
*/
|
|
489
|
+
private genRecursive;
|
|
490
|
+
/** A call of a recursive def through its reference: its stream, in order. */
|
|
491
|
+
private callRecursive;
|
|
492
|
+
/** A builtin, by its rule. */
|
|
493
|
+
genBuiltin(name: string, args: readonly JqNode[], argPaths: readonly string[], path: string, $: Block, x: Value, env: Env, emit: Emit): void;
|
|
494
|
+
private genUpdate;
|
|
495
|
+
/** What an update gives: the value, `null` where it deleted `.` itself (an optional value's `none`), as jq gives it. */
|
|
496
|
+
private whole;
|
|
497
|
+
/** The type of an update's new value: an optional one's payload. */
|
|
498
|
+
updateType(update: Update): EastType;
|
|
499
|
+
/** The first output of a filter: exactly it when there is always one, else an option whose `none` is no output. */
|
|
500
|
+
firstOf(node: JqNode, path: string, $: Block, x: Expr, env: Env): Update | undefined;
|
|
501
|
+
/**
|
|
502
|
+
* A value with the positions a path names updated: `f` gives each
|
|
503
|
+
* position's new value from its old one, or none, which deletes it. With
|
|
504
|
+
* `inPlace`, `v` is a fold's state nothing else holds, and the key of it
|
|
505
|
+
* the path sets is set in place (#1093); a position further down is set in
|
|
506
|
+
* a copy, as any other is.
|
|
507
|
+
*
|
|
508
|
+
* @returns the value updated; an option of it, none where `.` itself was
|
|
509
|
+
* deleted; or `undefined` where it always is
|
|
510
|
+
*/
|
|
511
|
+
modify($: Block, v: Expr, target: JqNode, path: string, env: Env, f: UpdateFn, inPlace?: boolean): Update | undefined;
|
|
512
|
+
/**
|
|
513
|
+
* An update where a filter keeps the value (`select(f)`, `numbers`):
|
|
514
|
+
* `each` calls `then` with the value, narrowed, each time the filter keeps
|
|
515
|
+
* it, and `f` gives the new value there; where it is not kept, it stays.
|
|
516
|
+
*/
|
|
517
|
+
private selected;
|
|
518
|
+
/** An update's value where the position cannot be deleted (a struct field, a variant's payload): an error where it has none. */
|
|
519
|
+
required($: Block, update: Update, path: string): Expr;
|
|
520
|
+
/**
|
|
521
|
+
* A position that cannot be deleted: its new value, or where the update
|
|
522
|
+
* never gives one, an error raised there (and a value of its type for the
|
|
523
|
+
* code after, which never runs).
|
|
524
|
+
*/
|
|
525
|
+
private kept;
|
|
526
|
+
/**
|
|
527
|
+
* A struct of some fields' values: of the original's type, recursive
|
|
528
|
+
* wrapper and all, when its fields' types are the original's.
|
|
529
|
+
*/
|
|
530
|
+
private rebuilt;
|
|
531
|
+
/**
|
|
532
|
+
* A struct with one field replaced or added, or deleted by an update that
|
|
533
|
+
* gives none; a dict's string key set, in place with `inPlace`, as
|
|
534
|
+
* {@link Translator.setIndex} sets it; a variant's payload; `null` made a
|
|
535
|
+
* struct. With `?`, a value of another kind is unchanged.
|
|
536
|
+
*/
|
|
537
|
+
setField($: Block, v: Expr, name: string, optional: boolean, path: string, env: Env, f: UpdateFn, inPlace?: boolean): Expr;
|
|
538
|
+
/**
|
|
539
|
+
* A variant with its payload updated, in each case the checker found it can
|
|
540
|
+
* hold there; in the others it is as it was. A payload cannot be deleted.
|
|
541
|
+
*/
|
|
542
|
+
private setPayload;
|
|
543
|
+
/** An array without the element at an index. */
|
|
544
|
+
private without;
|
|
545
|
+
/**
|
|
546
|
+
* An array or dict with one element replaced, or deleted where the update
|
|
547
|
+
* gives none; an empty struct or `null` made a dict. With `?`, a value of
|
|
548
|
+
* another kind is unchanged. With `inPlace`, a dict nothing else holds is
|
|
549
|
+
* changed itself, not a copy of it, while its values' type stays (#1093).
|
|
550
|
+
*/
|
|
551
|
+
setIndex($: Block, v: Expr, key: Expr, optional: boolean, path: string, f: UpdateFn, inPlace?: boolean): Expr;
|
|
552
|
+
/**
|
|
553
|
+
* An array with a slice replaced by the array the update gives, or deleted
|
|
554
|
+
* where it gives none; `null`'s slice is null, so the update's array is
|
|
555
|
+
* the value. With `?`, a value of another kind is unchanged.
|
|
556
|
+
*/
|
|
557
|
+
setSlice($: Block, v: Expr, a: Expr | undefined, b: Expr | undefined, optional: boolean, path: string, f: UpdateFn): Expr;
|
|
558
|
+
/**
|
|
559
|
+
* Every element, dict value or struct field replaced; an element or value
|
|
560
|
+
* with no new value is deleted, and a field whose update never gives one.
|
|
561
|
+
* With `?`, a value of another kind is unchanged.
|
|
562
|
+
*/
|
|
563
|
+
setEach($: Block, v: Expr, optional: boolean, path: string, f: UpdateFn): Expr;
|
|
564
|
+
/**
|
|
565
|
+
* `..`, `recurse` or `recurse(.a[])` in an update's path: in pre-order,
|
|
566
|
+
* each position the walk visits is updated by `f`, then the positions
|
|
567
|
+
* inside it that it had before its update, in turn. A value of a recursive
|
|
568
|
+
* type is walked by a function its own positions call, through a
|
|
569
|
+
* reference, each declared before the walk.
|
|
570
|
+
*/
|
|
571
|
+
private walkUpdate;
|
|
572
|
+
/**
|
|
573
|
+
* A value with the positions `..` finds inside it walked: an option's
|
|
574
|
+
* value's positions, a variant's payload (its case's name is not a
|
|
575
|
+
* position), and the elements, dict values and struct fields of
|
|
576
|
+
* {@link Translator.walkElements}; only those `old`, the value before its
|
|
577
|
+
* own update, had.
|
|
578
|
+
*/
|
|
579
|
+
private walkInside;
|
|
580
|
+
/**
|
|
581
|
+
* `recurse(.a.b[])`'s positions inside a value, walked: along the fields,
|
|
582
|
+
* then each element there that `old` had.
|
|
583
|
+
*/
|
|
584
|
+
private walkAlong;
|
|
585
|
+
/**
|
|
586
|
+
* The positions `.[]` names inside a value, each walked by `node`: an
|
|
587
|
+
* array's elements, a set's, a dict's values, a struct's fields, and those
|
|
588
|
+
* of an option's value; only those `old` had. An element or dict value the
|
|
589
|
+
* walk gives no value is deleted.
|
|
590
|
+
*/
|
|
591
|
+
private walkElements;
|
|
592
|
+
}
|
|
593
|
+
/** How jq names a value's kind in its error messages. @internal */
|
|
594
|
+
export declare function jqKind(type: EastType): string;
|
|
595
|
+
/**
|
|
596
|
+
* Translates a checked jq program to East IR.
|
|
597
|
+
*
|
|
598
|
+
* @param checked - what {@link checkJq} made of the program; it must have no
|
|
599
|
+
* error
|
|
600
|
+
* @param options - `maxOutputs` for a limit, `tooling` for the tooling-only
|
|
601
|
+
* builtins
|
|
602
|
+
* @returns the translation: its inputs, its result type, and builders for the
|
|
603
|
+
* IR
|
|
604
|
+
* @throws {TranslationError} When the program does not check, or holds
|
|
605
|
+
* something the translator cannot express.
|
|
606
|
+
*
|
|
607
|
+
* @remarks
|
|
608
|
+
* Streams become loops that give each output to what consumes it, and the
|
|
609
|
+
* program's result is its sink: the value for `one`, an `Option` for `maybe`,
|
|
610
|
+
* an `Array` for `many`. Checked as an e3 root, each root field the program
|
|
611
|
+
* reads is an input of its own, so a lazy dataset is read only where the
|
|
612
|
+
* query reads it (`devdocs/QUERY.md` §15).
|
|
613
|
+
*
|
|
614
|
+
* @example
|
|
615
|
+
* ```ts
|
|
616
|
+
* const Order = StructType({ id: IntegerType, total: FloatType });
|
|
617
|
+
* const checked = checkJq(".orders | map(.total) | add", StructType({ orders: ArrayType(Order) }), { root: true });
|
|
618
|
+
* const translation = translateJq(checked);
|
|
619
|
+
* translation.inputs; // [{ name: "orders", type: ArrayType(Order) }]
|
|
620
|
+
* translation.resultType; // FloatType
|
|
621
|
+
* const total = East.compile(translation.fn(), []);
|
|
622
|
+
* total([{ id: 1n, total: 2.5 }, { id: 2n, total: 4.0 }]); // 6.5
|
|
623
|
+
* ```
|
|
624
|
+
*/
|
|
625
|
+
export declare function translateJq(checked: CheckJqResult, options?: TranslateJqOptions): JqTranslation;
|
|
626
|
+
export {};
|
|
627
|
+
//# sourceMappingURL=translate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../../../../src/query/jq/translate.ts"],"names":[],"mappings":"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"}
|