@jbrowse/jexl 5.0.1 → 6.0.0
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 +8 -3
- package/dist/Expression.d.ts +0 -12
- package/dist/Expression.js +0 -16
- package/dist/Expression.js.map +1 -1
- package/dist/Jexl.js +12 -16
- package/dist/Jexl.js.map +1 -1
- package/dist/Lexer.d.ts +12 -94
- package/dist/Lexer.js +41 -142
- package/dist/Lexer.js.map +1 -1
- package/dist/analyze.d.ts +2 -0
- package/dist/analyze.js +7 -7
- package/dist/analyze.js.map +1 -1
- package/dist/check.d.ts +0 -5
- package/dist/check.js +62 -240
- package/dist/check.js.map +1 -1
- package/dist/collections.d.ts +7 -0
- package/dist/collections.js +9 -2
- package/dist/collections.js.map +1 -1
- package/dist/conditions.d.ts +1 -1
- package/dist/conditions.js +28 -50
- package/dist/conditions.js.map +1 -1
- package/dist/errors.d.ts +5 -0
- package/dist/errors.js +8 -0
- package/dist/errors.js.map +1 -1
- package/dist/evaluator/compile.js +37 -24
- package/dist/evaluator/compile.js.map +1 -1
- package/dist/grammar.d.ts +2 -2
- package/dist/grammar.js +1 -8
- package/dist/grammar.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/operators.d.ts +5 -0
- package/dist/operators.js +9 -5
- package/dist/operators.js.map +1 -1
- package/dist/parser/Parser.d.ts +11 -12
- package/dist/parser/Parser.js +4 -10
- package/dist/parser/Parser.js.map +1 -1
- package/dist/print.d.ts +9 -0
- package/dist/print.js +183 -0
- package/dist/print.js.map +1 -0
- package/dist/types.d.ts +18 -21
- package/esm/Expression.d.ts +0 -12
- package/esm/Expression.js +0 -16
- package/esm/Expression.js.map +1 -1
- package/esm/Jexl.js +12 -16
- package/esm/Jexl.js.map +1 -1
- package/esm/Lexer.d.ts +12 -94
- package/esm/Lexer.js +40 -142
- package/esm/Lexer.js.map +1 -1
- package/esm/analyze.d.ts +2 -0
- package/esm/analyze.js +6 -7
- package/esm/analyze.js.map +1 -1
- package/esm/check.d.ts +0 -5
- package/esm/check.js +29 -206
- package/esm/check.js.map +1 -1
- package/esm/collections.d.ts +7 -0
- package/esm/collections.js +8 -1
- package/esm/collections.js.map +1 -1
- package/esm/conditions.d.ts +1 -1
- package/esm/conditions.js +27 -49
- package/esm/conditions.js.map +1 -1
- package/esm/errors.d.ts +5 -0
- package/esm/errors.js +7 -0
- package/esm/errors.js.map +1 -1
- package/esm/evaluator/compile.js +37 -24
- package/esm/evaluator/compile.js.map +1 -1
- package/esm/grammar.d.ts +2 -2
- package/esm/grammar.js +1 -8
- package/esm/grammar.js.map +1 -1
- package/esm/index.d.ts +2 -1
- package/esm/index.js +2 -1
- package/esm/index.js.map +1 -1
- package/esm/operators.d.ts +5 -0
- package/esm/operators.js +8 -5
- package/esm/operators.js.map +1 -1
- package/esm/parser/Parser.d.ts +11 -12
- package/esm/parser/Parser.js +4 -8
- package/esm/parser/Parser.js.map +1 -1
- package/esm/print.d.ts +9 -0
- package/esm/print.js +177 -0
- package/esm/print.js.map +1 -0
- package/esm/types.d.ts +18 -21
- package/package.json +2 -1
- package/src/Expression.ts +0 -20
- package/src/Jexl.ts +13 -20
- package/src/Lexer.ts +42 -144
- package/src/analyze.ts +10 -10
- package/src/check.ts +48 -250
- package/src/collections.ts +11 -1
- package/src/conditions.ts +39 -62
- package/src/errors.ts +10 -0
- package/src/evaluator/compile.ts +49 -36
- package/src/grammar.ts +3 -9
- package/src/index.ts +2 -1
- package/src/operators.ts +10 -6
- package/src/parser/Parser.ts +13 -19
- package/src/print.ts +203 -0
- package/src/types.ts +19 -23
package/esm/Lexer.js
CHANGED
|
@@ -17,22 +17,20 @@ const wholeWord = (word) => `(?<!${identPart})${word}(?!${identPart})`;
|
|
|
17
17
|
// unsigned: whether a leading '-' negates is decided separately, in getTokens
|
|
18
18
|
const numberPattern = String.raw `(?:(?:[0-9]*\.[0-9]+)|[0-9]+)(?:[eE][+-]?[0-9]+)?`;
|
|
19
19
|
const numericRegex = new RegExp(`^-?${numberPattern}$`);
|
|
20
|
-
const identRegex = new RegExp(`^${identPattern}$`);
|
|
21
|
-
|
|
22
|
-
//
|
|
23
|
-
//
|
|
24
|
-
const
|
|
25
|
-
// the escapes a template string's static text recognizes. One pass, so the
|
|
26
|
-
// backslash an escaped backslash yields can't be re-read as the start of the
|
|
27
|
-
// escape that follows it
|
|
20
|
+
export const identRegex = new RegExp(`^${identPattern}$`);
|
|
21
|
+
// the escapes each kind of literal recognizes. One pass, so the backslash an
|
|
22
|
+
// escaped backslash yields can't be re-read as the start of the escape that
|
|
23
|
+
// follows it
|
|
24
|
+
const quoteEscRegex = { "'": /\\([\\'])/g, '"': /\\([\\"])/g };
|
|
28
25
|
const templateEscRegex = /\\([`$\\])/g;
|
|
29
26
|
const whitespaceRegex = /^\s*$/;
|
|
27
|
+
// a backslash and the character after it are a pair, so an escaped backslash
|
|
28
|
+
// before the closing quote can't escape that quote
|
|
29
|
+
const quoted = (quote) => String.raw `${quote}(?:\\[\s\S]|[^${quote}\\])*${quote}`;
|
|
30
30
|
const preOpRegexElems = [
|
|
31
|
-
|
|
32
|
-
'
|
|
33
|
-
|
|
34
|
-
String.raw `'(?:(?:\\')|[^'])*'`,
|
|
35
|
-
String.raw `"(?:(?:\\")|[^"])*"`,
|
|
31
|
+
quoted('`'),
|
|
32
|
+
quoted("'"),
|
|
33
|
+
quoted('"'),
|
|
36
34
|
// Whitespace
|
|
37
35
|
String.raw `\s+`,
|
|
38
36
|
// ahead of the grammar's '.', so that '.5' is a number rather than a dot
|
|
@@ -53,8 +51,11 @@ const minusNegatesAfter = new Set([
|
|
|
53
51
|
'colon',
|
|
54
52
|
'comma',
|
|
55
53
|
'semicolon',
|
|
56
|
-
'arrow'
|
|
54
|
+
'arrow',
|
|
55
|
+
'assign'
|
|
57
56
|
]);
|
|
57
|
+
// whether a `-` after this token negates what follows rather than subtracting
|
|
58
|
+
const negates = (last) => !last || minusNegatesAfter.has(last.type);
|
|
58
59
|
/**
|
|
59
60
|
* Lexer handles the lexical parsing of a Jexl string. Its responsibility is to
|
|
60
61
|
* identify the "parts of speech" of a Jexl expression, and tokenize and label
|
|
@@ -81,25 +82,13 @@ class Lexer {
|
|
|
81
82
|
_clearCache() {
|
|
82
83
|
this._splitRegex = undefined;
|
|
83
84
|
}
|
|
84
|
-
/**
|
|
85
|
-
* Splits a Jexl expression string into an array of expression elements.
|
|
86
|
-
* @param {string} str A Jexl expression string
|
|
87
|
-
* @returns {Array<string>} An array of substrings defining the functional
|
|
88
|
-
* elements of the expression.
|
|
89
|
-
*/
|
|
85
|
+
/** Splits a Jexl string into its elements: tokens and runs of whitespace. */
|
|
90
86
|
getElements(str) {
|
|
91
|
-
|
|
92
|
-
return str.split(regex).filter(Boolean);
|
|
87
|
+
return str.split(this._getSplitRegex()).filter(Boolean);
|
|
93
88
|
}
|
|
94
89
|
/**
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
* elements that consist only of whitespace get appended to the previous
|
|
98
|
-
* token's "raw" property. For the structure of a token object, please see
|
|
99
|
-
* {@link Lexer#tokenize}.
|
|
100
|
-
* @param {Array<string>} elements An array of Jexl expression elements to be
|
|
101
|
-
* converted to tokens
|
|
102
|
-
* @returns {Array<{type, value, raw}>} an array of token objects.
|
|
90
|
+
* The tokens for a list of elements. Whitespace makes no token of its own;
|
|
91
|
+
* it joins the `raw` of the token before it.
|
|
103
92
|
*/
|
|
104
93
|
getTokens(elements) {
|
|
105
94
|
const tokens = [];
|
|
@@ -110,13 +99,13 @@ class Lexer {
|
|
|
110
99
|
let pendingMinus;
|
|
111
100
|
let offset = 0;
|
|
112
101
|
for (const element of elements) {
|
|
113
|
-
if (
|
|
102
|
+
if (whitespaceRegex.test(element)) {
|
|
114
103
|
const last = pendingMinus ?? tokens.at(-1);
|
|
115
104
|
if (last) {
|
|
116
105
|
last.raw += element;
|
|
117
106
|
}
|
|
118
107
|
}
|
|
119
|
-
else if (element === '-' &&
|
|
108
|
+
else if (element === '-' && negates(tokens.at(-1))) {
|
|
120
109
|
// a second prefix minus in a row ("- -x"): emit the pending one as a
|
|
121
110
|
// unary operator so this one can negate whatever comes next
|
|
122
111
|
if (pendingMinus) {
|
|
@@ -125,7 +114,7 @@ class Lexer {
|
|
|
125
114
|
pendingMinus = unaryMinusToken();
|
|
126
115
|
}
|
|
127
116
|
else if (pendingMinus) {
|
|
128
|
-
if (numericRegex.
|
|
117
|
+
if (numericRegex.test(element)) {
|
|
129
118
|
// fold the sign into the number, so "-1" stays a single literal
|
|
130
119
|
const token = this._createToken('-' + element, offset);
|
|
131
120
|
token.raw = pendingMinus.raw + element;
|
|
@@ -150,46 +139,15 @@ class Lexer {
|
|
|
150
139
|
return tokens;
|
|
151
140
|
}
|
|
152
141
|
/**
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
*
|
|
156
|
-
*
|
|
157
|
-
*
|
|
158
|
-
* [name]: <string>,
|
|
159
|
-
* value: <boolean|number|string>,
|
|
160
|
-
* raw: <string>
|
|
161
|
-
* }
|
|
162
|
-
*
|
|
163
|
-
* Type is one of the following:
|
|
164
|
-
*
|
|
165
|
-
* literal, identifier, binaryOp, unaryOp
|
|
166
|
-
*
|
|
167
|
-
* OR, if the token is a control character its type is the name of the element
|
|
168
|
-
* defined in the Grammar.
|
|
169
|
-
*
|
|
170
|
-
* Name appears only if the token is a control string found in
|
|
171
|
-
* {@link grammar#elements}, and is set to the name of the element.
|
|
172
|
-
*
|
|
173
|
-
* Value is the value of the token in the correct type (boolean or numeric as
|
|
174
|
-
* appropriate). Raw is the string representation of this value taken directly
|
|
175
|
-
* from the expression string, including any trailing spaces.
|
|
176
|
-
* @param {string} str The Jexl string to be tokenized
|
|
177
|
-
* @returns {Array<{type, value, raw}>} an array of token objects.
|
|
178
|
-
* @throws {Error} if the provided string contains an invalid token.
|
|
142
|
+
* Splits a Jexl string into tokens. A token's `type` is `literal`,
|
|
143
|
+
* `templateString`, `identifier` or the type of the grammar element it
|
|
144
|
+
* spells; its `value` is a literal's value or the template's parts; its `raw`
|
|
145
|
+
* is its source text and any whitespace after it.
|
|
146
|
+
* @throws {JexlSyntaxError} for text that is no token
|
|
179
147
|
*/
|
|
180
148
|
tokenize(str) {
|
|
181
|
-
|
|
182
|
-
return this.getTokens(elements);
|
|
149
|
+
return this.getTokens(this.getElements(str));
|
|
183
150
|
}
|
|
184
|
-
/**
|
|
185
|
-
* Creates a new token object from an element of a Jexl string. See
|
|
186
|
-
* {@link Lexer#tokenize} for a description of the token object.
|
|
187
|
-
* @param {string} element The element from which a token should be made
|
|
188
|
-
* @returns {{value: number|boolean|string, [name]: string, type: string,
|
|
189
|
-
* raw: string}} a token object describing the provided element.
|
|
190
|
-
* @throws {Error} if the provided string is not a valid expression element.
|
|
191
|
-
* @private
|
|
192
|
-
*/
|
|
193
151
|
_createToken(element, offset = 0) {
|
|
194
152
|
const token = {
|
|
195
153
|
type: 'literal',
|
|
@@ -204,7 +162,7 @@ class Lexer {
|
|
|
204
162
|
else if (element.startsWith('"') || element.startsWith("'")) {
|
|
205
163
|
token.value = this._unquote(element);
|
|
206
164
|
}
|
|
207
|
-
else if (numericRegex.
|
|
165
|
+
else if (numericRegex.test(element)) {
|
|
208
166
|
token.value = parseFloat(element);
|
|
209
167
|
}
|
|
210
168
|
else if (element === 'true' || element === 'false') {
|
|
@@ -216,7 +174,7 @@ class Lexer {
|
|
|
216
174
|
else if (Object.hasOwn(this._grammar.elements, element)) {
|
|
217
175
|
token.type = this._grammar.elements[element].type;
|
|
218
176
|
}
|
|
219
|
-
else if (identRegex.
|
|
177
|
+
else if (identRegex.test(element)) {
|
|
220
178
|
token.type = 'identifier';
|
|
221
179
|
}
|
|
222
180
|
else {
|
|
@@ -224,86 +182,26 @@ class Lexer {
|
|
|
224
182
|
}
|
|
225
183
|
return token;
|
|
226
184
|
}
|
|
227
|
-
/**
|
|
228
|
-
*
|
|
229
|
-
* regular expression. A word such as `in` also stops matching inside a
|
|
230
|
-
* longer name.
|
|
231
|
-
* @param {string} str The string to be escaped
|
|
232
|
-
* @returns {string} the RegExp-escaped string.
|
|
233
|
-
* @see https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions
|
|
234
|
-
* @private
|
|
235
|
-
*/
|
|
185
|
+
/** A grammar element's text as a regex. A word such as `in` also stops
|
|
186
|
+
* matching inside a longer name. */
|
|
236
187
|
_escapeRegExp(str) {
|
|
237
188
|
const escaped = str.replaceAll(/[.*+?^${}()|[\]\\]/g, String.raw `\$&`);
|
|
238
|
-
return identRegex.
|
|
189
|
+
return identRegex.test(str) ? wholeWord(escaped) : escaped;
|
|
239
190
|
}
|
|
240
|
-
/**
|
|
241
|
-
* Gets a RegEx object appropriate for splitting a Jexl string into its core
|
|
242
|
-
* elements.
|
|
243
|
-
* @returns {RegExp} An element-splitting RegExp object
|
|
244
|
-
* @private
|
|
245
|
-
*/
|
|
246
191
|
_getSplitRegex() {
|
|
247
192
|
if (!this._splitRegex) {
|
|
248
|
-
//
|
|
249
|
-
const
|
|
250
|
-
.sort((a, b) =>
|
|
251
|
-
|
|
252
|
-
})
|
|
253
|
-
.map((elem) => {
|
|
254
|
-
return this._escapeRegExp(elem);
|
|
255
|
-
});
|
|
256
|
-
this._splitRegex = new RegExp('(' +
|
|
257
|
-
[
|
|
258
|
-
preOpRegexElems.join('|'),
|
|
259
|
-
elemArray.join('|'),
|
|
260
|
-
postOpRegexElems.join('|')
|
|
261
|
-
].join('|') +
|
|
262
|
-
')');
|
|
193
|
+
// longest first, so that `==` wins over `=`
|
|
194
|
+
const elements = Object.keys(this._grammar.elements)
|
|
195
|
+
.sort((a, b) => b.length - a.length)
|
|
196
|
+
.map((element) => this._escapeRegExp(element));
|
|
197
|
+
this._splitRegex = new RegExp(`(${[...preOpRegexElems, ...elements, ...postOpRegexElems].join('|')})`);
|
|
263
198
|
}
|
|
264
199
|
return this._splitRegex;
|
|
265
200
|
}
|
|
266
|
-
/**
|
|
267
|
-
* Determines whether the addition of a '-' token should be interpreted as a
|
|
268
|
-
* negative symbol for an upcoming number, given an array of tokens already
|
|
269
|
-
* processed.
|
|
270
|
-
* @param {Array<Object>} tokens An array of tokens already processed
|
|
271
|
-
* @returns {boolean} true if adding a '-' should be considered a negative
|
|
272
|
-
* symbol; false otherwise
|
|
273
|
-
* @private
|
|
274
|
-
*/
|
|
275
|
-
_isNegative(tokens) {
|
|
276
|
-
const last = tokens.at(-1);
|
|
277
|
-
return !last || minusNegatesAfter.has(last.type);
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* A utility function to determine if a string consists of only space
|
|
281
|
-
* characters.
|
|
282
|
-
* @param {string} str A string to be tested
|
|
283
|
-
* @returns {boolean} true if the string is empty or consists of only spaces;
|
|
284
|
-
* false otherwise.
|
|
285
|
-
* @private
|
|
286
|
-
*/
|
|
287
|
-
_isWhitespace(str) {
|
|
288
|
-
return !!whitespaceRegex.exec(str);
|
|
289
|
-
}
|
|
290
|
-
/**
|
|
291
|
-
* Removes the beginning and trailing quotes from a string, unescapes any
|
|
292
|
-
* escaped quotes on its interior, and unescapes any escaped escape
|
|
293
|
-
* characters. Note that this function is not defensive; it assumes that the
|
|
294
|
-
* provided string is not empty, and that its first and last characters are
|
|
295
|
-
* actually quotes.
|
|
296
|
-
* @param {string} str A string whose first and last characters are quotes
|
|
297
|
-
* @returns {string} a string with the surrounding quotes stripped and escapes
|
|
298
|
-
* properly processed.
|
|
299
|
-
* @private
|
|
300
|
-
*/
|
|
201
|
+
/** A quoted string literal's text, unquoted and unescaped. */
|
|
301
202
|
_unquote(str) {
|
|
302
203
|
const quote = str.startsWith('"') ? '"' : "'";
|
|
303
|
-
return str
|
|
304
|
-
.slice(1, -1)
|
|
305
|
-
.replaceAll(escQuoteRegex[quote], quote)
|
|
306
|
-
.replaceAll(escEscRegex, '\\');
|
|
204
|
+
return str.slice(1, -1).replaceAll(quoteEscRegex[quote], '$1');
|
|
307
205
|
}
|
|
308
206
|
_parseTemplateString(str, offset = 0) {
|
|
309
207
|
const parts = [];
|
package/esm/Lexer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Lexer.js","sourceRoot":"","sources":["../src/Lexer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAK7C,2EAA2E;AAC3E,2EAA2E;AAC3E,wEAAwE;AACxE,0EAA0E;AAC1E,0DAA0D;AAC1D,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAA,uDAAuD,CAAA;AACpF,MAAM,SAAS,GAAG,IAAI,UAAU,MAAM,CAAA;AACtC,MAAM,YAAY,GAAG,IAAI,UAAU,IAAI,SAAS,GAAG,CAAA;AACnD,gFAAgF;AAChF,8EAA8E;AAC9E,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,SAAS,IAAI,IAAI,MAAM,SAAS,GAAG,CAAA;AAC9E,8EAA8E;AAC9E,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAA,mDAAmD,CAAA;AAEnF,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAA;AACvD,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,IAAI,YAAY,GAAG,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"Lexer.js","sourceRoot":"","sources":["../src/Lexer.ts"],"names":[],"mappings":"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"}
|
package/esm/analyze.d.ts
CHANGED
|
@@ -69,6 +69,8 @@ export interface AnalyzeOptions {
|
|
|
69
69
|
*/
|
|
70
70
|
env?: readonly string[];
|
|
71
71
|
}
|
|
72
|
+
/** A literal's value, or a template's with no interpolation. */
|
|
73
|
+
export declare function literalValue(node: AstNode): string | number | boolean | null | undefined;
|
|
72
74
|
/**
|
|
73
75
|
* Lists what an expression reads from its context, without evaluating it or
|
|
74
76
|
* consulting any registered function.
|
package/esm/analyze.js
CHANGED
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
* Jexl
|
|
3
3
|
* Copyright 2020 Tom Shawver
|
|
4
4
|
*/
|
|
5
|
+
import { unknownNode } from "./errors.js";
|
|
5
6
|
function literalKey(node) {
|
|
6
7
|
const value = literalValue(node);
|
|
7
8
|
return typeof value === 'boolean' ? String(value) : (value ?? undefined);
|
|
8
9
|
}
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
/** A literal's value, or a template's with no interpolation. */
|
|
11
|
+
export function literalValue(node) {
|
|
11
12
|
if (node.type === 'Literal') {
|
|
12
13
|
return node.value;
|
|
13
14
|
}
|
|
@@ -26,8 +27,7 @@ function extend(read, keys, dynamic = false) {
|
|
|
26
27
|
? { root: read.root, path, dynamic }
|
|
27
28
|
: { root: read.root, path };
|
|
28
29
|
}
|
|
29
|
-
function isBarePath(
|
|
30
|
-
const node = ast;
|
|
30
|
+
function isBarePath(node) {
|
|
31
31
|
if (node.type === 'Identifier') {
|
|
32
32
|
return !node.from || isBarePath(node.from);
|
|
33
33
|
}
|
|
@@ -131,8 +131,7 @@ export function analyze(ast, { accessors = {}, row, env } = {}) {
|
|
|
131
131
|
}
|
|
132
132
|
return subject.map((read) => extend(read, keys, dynamic));
|
|
133
133
|
}
|
|
134
|
-
function walk(
|
|
135
|
-
const node = ast;
|
|
134
|
+
function walk(node, scope) {
|
|
136
135
|
switch (node.type) {
|
|
137
136
|
case 'Literal': {
|
|
138
137
|
return [];
|
|
@@ -227,7 +226,7 @@ export function analyze(ast, { accessors = {}, row, env } = {}) {
|
|
|
227
226
|
return [];
|
|
228
227
|
}
|
|
229
228
|
default: {
|
|
230
|
-
|
|
229
|
+
return unknownNode(node);
|
|
231
230
|
}
|
|
232
231
|
}
|
|
233
232
|
}
|
package/esm/analyze.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../src/analyze.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../src/analyze.ts"],"names":[],"mappings":"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"}
|
package/esm/check.d.ts
CHANGED
|
@@ -93,11 +93,6 @@ export interface CheckResult {
|
|
|
93
93
|
type: Type;
|
|
94
94
|
}
|
|
95
95
|
export declare const UNKNOWN: Type;
|
|
96
|
-
/**
|
|
97
|
-
* Renders a tree back to expression text, for messages and suggestions. The
|
|
98
|
-
* text parses back to the same tree.
|
|
99
|
-
*/
|
|
100
|
-
export declare function print(ast: AstNode): string;
|
|
101
96
|
/** The type of a row whose fields `schema` declares. */
|
|
102
97
|
export declare function recordOf(schema: readonly FieldSchema[]): Type;
|
|
103
98
|
export declare function union(a: Type, b: Type): Type;
|