sh-ast 0.7.0 → 0.8.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 +89 -4
- package/dist/analyze/index.d.ts +2 -2
- package/dist/analyze/index.d.ts.map +1 -1
- package/dist/analyze/index.js +1 -1
- package/dist/analyze/index.js.map +1 -1
- package/dist/analyze/resolve-argv0.d.ts +209 -16
- package/dist/analyze/resolve-argv0.d.ts.map +1 -1
- package/dist/analyze/resolve-argv0.js +363 -6
- package/dist/analyze/resolve-argv0.js.map +1 -1
- package/dist/analyze.d.ts +211 -16
- package/dist/errors.d.ts +14 -27
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +15 -28
- package/dist/errors.js.map +1 -1
- package/dist/sh-ast.d.ts +18 -30
- package/dist/syntax-snapshot.d.ts.map +1 -1
- package/dist/syntax-snapshot.js +18 -3
- package/dist/syntax-snapshot.js.map +1 -1
- package/dist/syntax-wire.d.ts +12 -0
- package/dist/syntax-wire.d.ts.map +1 -1
- package/dist/syntax-wire.js +99 -15
- package/dist/syntax-wire.js.map +1 -1
- package/dist/syntax.d.ts +3 -2
- package/dist/syntax.d.ts.map +1 -1
- package/dist/syntax.js +42 -13
- package/dist/syntax.js.map +1 -1
- package/dist/wasm-instance.d.ts +8 -0
- package/dist/wasm-instance.d.ts.map +1 -1
- package/dist/wasm-instance.js +36 -8
- package/dist/wasm-instance.js.map +1 -1
- package/package.json +1 -1
- package/shim/sh-ast.wasm +0 -0
- package/dist/parse-depth-guard.d.ts +0 -11
- package/dist/parse-depth-guard.d.ts.map +0 -1
- package/dist/parse-depth-guard.js +0 -633
- package/dist/parse-depth-guard.js.map +0 -1
package/dist/syntax-wire.js
CHANGED
|
@@ -80,6 +80,8 @@ export function decodeWire(text) {
|
|
|
80
80
|
catch (cause) {
|
|
81
81
|
throw new ShInternalError(`Invalid syntax bridge JSON: ${String(cause)}`);
|
|
82
82
|
}
|
|
83
|
+
if (!mayContainBytesTag(text))
|
|
84
|
+
return parsed;
|
|
83
85
|
const visit = (item) => {
|
|
84
86
|
if (Array.isArray(item)) {
|
|
85
87
|
for (let index = 0; index < item.length; index++) {
|
|
@@ -117,6 +119,39 @@ export function decodeWire(text) {
|
|
|
117
119
|
};
|
|
118
120
|
return visit(parsed);
|
|
119
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* Reports whether bridge JSON can contain a Bytes member. The Go producer spells
|
|
124
|
+
* every ASCII key literally (encoding/json escapes only quotes, backslashes,
|
|
125
|
+
* controls, HTML metacharacters and line separators), so a Bytes key always
|
|
126
|
+
* appears as the exact characters `"Bytes"`. Their absence therefore proves no
|
|
127
|
+
* record needs byte restoration. Their presence, including an ordinary string
|
|
128
|
+
* value spelled Bytes, only selects the complete restoration walk.
|
|
129
|
+
*/
|
|
130
|
+
function mayContainBytesTag(text) {
|
|
131
|
+
return text.includes('"Bytes"');
|
|
132
|
+
}
|
|
133
|
+
/** Decodes one compact position tuple, or returns undefined when it is malformed. */
|
|
134
|
+
function positionFromTuple(tuple) {
|
|
135
|
+
if (tuple.length !== 4)
|
|
136
|
+
return undefined;
|
|
137
|
+
const [Offset, Line, Col, flags] = tuple;
|
|
138
|
+
if (typeof Offset !== 'number' ||
|
|
139
|
+
typeof Line !== 'number' ||
|
|
140
|
+
typeof Col !== 'number' ||
|
|
141
|
+
typeof flags !== 'number' ||
|
|
142
|
+
!Number.isInteger(flags) ||
|
|
143
|
+
flags < 0 ||
|
|
144
|
+
flags > 7)
|
|
145
|
+
return undefined;
|
|
146
|
+
return {
|
|
147
|
+
Offset,
|
|
148
|
+
Line,
|
|
149
|
+
Col,
|
|
150
|
+
IsValid: (flags & 1) !== 0,
|
|
151
|
+
IsRecovered: (flags & 2) !== 0,
|
|
152
|
+
OffsetOverflow: (flags & 4) !== 0,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
120
155
|
/** A Go string is text only when every original byte is valid UTF-8. @internal */
|
|
121
156
|
export function isGoString(value) {
|
|
122
157
|
return typeof value === 'string' || value instanceof Uint8Array;
|
|
@@ -161,34 +196,67 @@ function isTypedNil(value, implementers) {
|
|
|
161
196
|
* Validates complete records against the pinned schema, including nil-bearing
|
|
162
197
|
* boundaries. This is a boundary check, not a semantic shell interpretation.
|
|
163
198
|
*/
|
|
164
|
-
function matchesRecord(value,
|
|
165
|
-
if (!isRecord(value) || typeof value.Type !== 'string' || active
|
|
199
|
+
function matchesRecord(value, check) {
|
|
200
|
+
if (!isRecord(value) || typeof value.Type !== 'string' || check.active?.has(value))
|
|
166
201
|
return false;
|
|
167
202
|
if (!Object.hasOwn(SYNTAX_SCHEMA, value.Type))
|
|
168
203
|
return false;
|
|
169
|
-
const
|
|
170
|
-
if (Object.keys(value).length !==
|
|
204
|
+
const fields = fieldEntries(value.Type);
|
|
205
|
+
if (Object.keys(value).length !== fields.length + 1)
|
|
171
206
|
return false;
|
|
172
|
-
active
|
|
207
|
+
check.active?.add(value);
|
|
173
208
|
try {
|
|
174
|
-
|
|
209
|
+
for (const [name, field] of fields) {
|
|
210
|
+
if (!Object.hasOwn(value, name))
|
|
211
|
+
return false;
|
|
212
|
+
let child = value[name];
|
|
213
|
+
if (check.restore && field.kind === 'position' && Array.isArray(child)) {
|
|
214
|
+
const position = positionFromTuple(child);
|
|
215
|
+
if (position === undefined)
|
|
216
|
+
return false;
|
|
217
|
+
value[name] = child = position;
|
|
218
|
+
}
|
|
219
|
+
if (!matchesField(child, field, check))
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
return true;
|
|
175
223
|
}
|
|
176
224
|
finally {
|
|
177
|
-
active
|
|
225
|
+
check.active?.delete(value);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Field descriptors in schema order for each record type. The generated schema
|
|
230
|
+
* is immutable, so listing its entries once per type avoids rebuilding the same
|
|
231
|
+
* arrays for every record a large File contains.
|
|
232
|
+
*/
|
|
233
|
+
const FIELD_ENTRIES = new Map();
|
|
234
|
+
/** Returns the cached field list for a type already known to be in the schema. */
|
|
235
|
+
function fieldEntries(type) {
|
|
236
|
+
let entries = FIELD_ENTRIES.get(type);
|
|
237
|
+
if (entries === undefined) {
|
|
238
|
+
entries = Object.entries(SYNTAX_SCHEMA[type].fields);
|
|
239
|
+
FIELD_ENTRIES.set(type, entries);
|
|
178
240
|
}
|
|
241
|
+
return entries;
|
|
179
242
|
}
|
|
180
243
|
/** Checks one upstream field without conflating a nil slice with an empty one. */
|
|
181
|
-
function matchesField(value, field,
|
|
244
|
+
function matchesField(value, field, check) {
|
|
182
245
|
if (value === null)
|
|
183
246
|
return field.nullable;
|
|
184
247
|
if (field.slice) {
|
|
185
|
-
|
|
186
|
-
|
|
248
|
+
if (!Array.isArray(value))
|
|
249
|
+
return false;
|
|
250
|
+
for (const item of value) {
|
|
251
|
+
if (item === null ? !field.elementNullable : !matchesScalar(item, field, check))
|
|
252
|
+
return false;
|
|
253
|
+
}
|
|
254
|
+
return true;
|
|
187
255
|
}
|
|
188
|
-
return matchesScalar(value, field,
|
|
256
|
+
return matchesScalar(value, field, check);
|
|
189
257
|
}
|
|
190
258
|
/** Each scalar category retains its upstream domain rather than JS coercions. */
|
|
191
|
-
function matchesScalar(value, field,
|
|
259
|
+
function matchesScalar(value, field, check) {
|
|
192
260
|
switch (field.kind) {
|
|
193
261
|
case 'boolean':
|
|
194
262
|
return typeof value === 'boolean';
|
|
@@ -199,14 +267,14 @@ function matchesScalar(value, field, active) {
|
|
|
199
267
|
case 'operator':
|
|
200
268
|
return (typeof value === 'number' && Number.isInteger(value) && value >= 0 && value <= 0xffff_ffff);
|
|
201
269
|
case 'struct':
|
|
202
|
-
return isRecord(value) && value.Type === field.type && matchesRecord(value,
|
|
270
|
+
return isRecord(value) && value.Type === field.type && matchesRecord(value, check);
|
|
203
271
|
case 'interface':
|
|
204
272
|
return (isRecord(value) &&
|
|
205
273
|
typeof value.Type === 'string' &&
|
|
206
274
|
field.type !== null &&
|
|
207
275
|
Object.hasOwn(SYNTAX_INTERFACES, field.type) &&
|
|
208
276
|
(isTypedNil(value, SYNTAX_INTERFACES[field.type]) ||
|
|
209
|
-
(SYNTAX_INTERFACES[field.type].includes(value.Type) && matchesRecord(value,
|
|
277
|
+
(SYNTAX_INTERFACES[field.type].includes(value.Type) && matchesRecord(value, check))));
|
|
210
278
|
}
|
|
211
279
|
}
|
|
212
280
|
/** Narrows complete syntax.Nodes or typed nil Node interfaces; auxiliaries are excluded. @internal */
|
|
@@ -217,10 +285,26 @@ export function isSyntaxNode(value) {
|
|
|
217
285
|
typeof value.Type === 'string' &&
|
|
218
286
|
Object.hasOwn(SYNTAX_SCHEMA, value.Type) &&
|
|
219
287
|
SYNTAX_SCHEMA[value.Type].node &&
|
|
220
|
-
matchesRecord(value, new Set()));
|
|
288
|
+
matchesRecord(value, { active: new Set(), restore: false }));
|
|
221
289
|
}
|
|
222
290
|
/** The public parser's root is the precise upstream File representation. @internal */
|
|
223
291
|
export function isSyntaxFile(value) {
|
|
224
292
|
return isSyntaxNode(value) && value.Type === 'File';
|
|
225
293
|
}
|
|
294
|
+
/**
|
|
295
|
+
* Validates a parse response's File exactly as isSyntaxFile does while rebuilding
|
|
296
|
+
* its positions. The bridge spells each File position as a compact
|
|
297
|
+
* [Offset, Line, Col, Flags] tuple (flags: bit 0 IsValid, bit 1 IsRecovered,
|
|
298
|
+
* bit 2 OffsetOverflow) because positions are most of a parse response. Each
|
|
299
|
+
* tuple is replaced in place by the identical six-member SyntaxPos record, in
|
|
300
|
+
* its usual member order, and then checked like any other position. Only a
|
|
301
|
+
* freshly decoded response may be passed: the graph is mutated, and a false
|
|
302
|
+
* result can leave it partly restored, so callers must discard it.
|
|
303
|
+
* @internal
|
|
304
|
+
*/
|
|
305
|
+
export function restoreSyntaxFile(value) {
|
|
306
|
+
return isRecord(value) && value.Type === 'File' && matchesRecord(value, RESTORING);
|
|
307
|
+
}
|
|
308
|
+
/** Restoring validation state; it carries no per-call data and is shared. */
|
|
309
|
+
const RESTORING = { active: null, restore: true };
|
|
226
310
|
//# sourceMappingURL=syntax-wire.js.map
|
package/dist/syntax-wire.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syntax-wire.js","sourceRoot":"","sources":["../src/syntax-wire.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"syntax-wire.js","sourceRoot":"","sources":["../src/syntax-wire.ts"],"names":[],"mappings":"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"}
|
package/dist/syntax.d.ts
CHANGED
|
@@ -28,8 +28,9 @@ export interface ParseOptions {
|
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
30
|
* Parses exact source bytes, or well-formed Unicode text encoded as UTF-8. First
|
|
31
|
-
* use synchronously initializes WASM.
|
|
32
|
-
*
|
|
31
|
+
* use synchronously initializes WASM. Native node-nesting work has a fixed binding
|
|
32
|
+
* resource budget; exceeding it throws {@link ShParseMaxDepthError}. Subsequent
|
|
33
|
+
* parse calls remain usable after that refusal.
|
|
33
34
|
* The returned File and its Node subtrees are plain syntax data: ordinary
|
|
34
35
|
* structuredClone(node), without transfers, makes an independent editable copy
|
|
35
36
|
* while retaining position values, byte strings, typed nils and internal aliases.
|
package/dist/syntax.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syntax.d.ts","sourceRoot":"","sources":["../src/syntax.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAepF,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC/E,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAExF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,gFAAgF;IAChF,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,mEAAmE;IACnE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0FAA0F;IAC1F,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,kFAAkF;IAClF,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,qFAAqF;IACrF,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACjC;AAED
|
|
1
|
+
{"version":3,"file":"syntax.d.ts","sourceRoot":"","sources":["../src/syntax.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAepF,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC/E,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAExF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,gFAAgF;IAChF,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,mEAAmE;IACnE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0FAA0F;IAC1F,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,kFAAkF;IAClF,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,qFAAqF;IACrF,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACjC;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,OAAO,GAAE,YAAiB,GAAG,IAAI,CAEvF;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,GAAG,UAAU,EAC3B,OAAO,GAAE,YAAiB,GACzB,UAAU,CAMZ;AAwBD;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,CAE7C;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,CAE7C;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CACpB,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,MAAM,EAAE,MAAM,GAAG,MAAM,GACtB,SAAS,CAQX"}
|
package/dist/syntax.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { ShInternalError } from './errors.js';
|
|
2
|
-
import { assertParseDepthWithinLimit } from './parse-depth-guard.js';
|
|
1
|
+
import { ShInternalError, ShParseMaxDepthError } from './errors.js';
|
|
3
2
|
import { InputError, LangError, ParseError } from './syntax-errors.js';
|
|
4
|
-
import { assertUnicodeString, decodeWire, encodeWire, isGoString, isRecord, isSyntaxFile, isSyntaxNode, isSyntaxPos, } from './syntax-wire.js';
|
|
3
|
+
import { assertUnicodeString, decodeWire, encodeWire, isGoString, isRecord, isSyntaxFile, isSyntaxNode, isSyntaxPos, restoreSyntaxFile, } from './syntax-wire.js';
|
|
5
4
|
import { callSyntax } from './wasm-instance.js';
|
|
6
5
|
import { createPositionSnapshot } from './syntax-snapshot.js';
|
|
7
6
|
export { InputError, LangError, ParseError } from './syntax-errors.js';
|
|
8
7
|
export { rawOperator } from './syntax-operator.js';
|
|
9
8
|
/**
|
|
10
9
|
* Parses exact source bytes, or well-formed Unicode text encoded as UTF-8. First
|
|
11
|
-
* use synchronously initializes WASM.
|
|
12
|
-
*
|
|
10
|
+
* use synchronously initializes WASM. Native node-nesting work has a fixed binding
|
|
11
|
+
* resource budget; exceeding it throws {@link ShParseMaxDepthError}. Subsequent
|
|
12
|
+
* parse calls remain usable after that refusal.
|
|
13
13
|
* The returned File and its Node subtrees are plain syntax data: ordinary
|
|
14
14
|
* structuredClone(node), without transfers, makes an independent editable copy
|
|
15
15
|
* while retaining position values, byte strings, typed nils and internal aliases.
|
|
@@ -39,14 +39,15 @@ function invokeParse(operation, source, options) {
|
|
|
39
39
|
if (typeof source === 'string')
|
|
40
40
|
assertUnicodeString(source);
|
|
41
41
|
const bytes = typeof source === 'string' ? new TextEncoder().encode(source) : source;
|
|
42
|
-
// Decoding here supplies only an ASCII-structure risk estimate. The original
|
|
43
|
-
// bytes, including malformed UTF-8, are always sent unchanged to the parser.
|
|
44
|
-
assertParseDepthWithinLimit(typeof source === 'string' ? source : new TextDecoder().decode(source));
|
|
45
42
|
validateOptions(options);
|
|
46
|
-
const result =
|
|
47
|
-
|
|
43
|
+
const result = decodeResponse(operation, bytes, encodeWire(options));
|
|
44
|
+
// Parse responses, including partial Files beside parser errors, spell File
|
|
45
|
+
// positions compactly; one boundary validation also restores their records.
|
|
46
|
+
const file = result.File === null ? null : restoreSyntaxFile(result.File) ? result.File : undefined;
|
|
47
|
+
throwResponseError(result, file);
|
|
48
|
+
if (!file)
|
|
48
49
|
throw new ShInternalError('The syntax parser returned an incomplete or invalid File record');
|
|
49
|
-
return { file
|
|
50
|
+
return { file, response: result };
|
|
50
51
|
}
|
|
51
52
|
/**
|
|
52
53
|
* Computes a node's starting position from its current fields using upstream's
|
|
@@ -106,18 +107,47 @@ function positionOf(operation, node) {
|
|
|
106
107
|
}
|
|
107
108
|
/** Decodes one complete response before translating its upstream failure kind. */
|
|
108
109
|
function invoke(operation, payload, options = '{}') {
|
|
110
|
+
const result = decodeResponse(operation, payload, options);
|
|
111
|
+
throwResponseError(result, result.File === null ? null : isSyntaxFile(result.File) ? result.File : undefined);
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
/** Calls the bridge and decodes its complete JSON response record. */
|
|
115
|
+
function decodeResponse(operation, payload, options) {
|
|
109
116
|
const result = decodeWire(callSyntax(operation, payload, options));
|
|
110
117
|
if (!isRecord(result))
|
|
111
118
|
throw new ShInternalError('The syntax bridge returned a non-record response');
|
|
119
|
+
return result;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Translates a response's Error member, if any, into the matching exception.
|
|
123
|
+
* file is the response's already validated File: null when absent from the
|
|
124
|
+
* bridge's perspective, undefined when missing or invalid.
|
|
125
|
+
*/
|
|
126
|
+
function throwResponseError(result, file) {
|
|
112
127
|
if (result.Error !== undefined) {
|
|
113
128
|
const error = result.Error;
|
|
114
129
|
if (!isRecord(error) || !isGoString(error.Message))
|
|
115
130
|
throw new ShInternalError('The syntax bridge returned a malformed error');
|
|
116
131
|
if (error.Kind === 'InputError')
|
|
117
132
|
throw new InputError(error.Message);
|
|
133
|
+
if (error.Kind === 'ParseDepthError') {
|
|
134
|
+
// Resource responses contain no partial tree or snapshots. Validate the
|
|
135
|
+
// native work counters here without restricting the public constructor.
|
|
136
|
+
if (typeof error.MaxDepth !== 'number' ||
|
|
137
|
+
!Number.isSafeInteger(error.MaxDepth) ||
|
|
138
|
+
error.MaxDepth <= 0 ||
|
|
139
|
+
typeof error.Depth !== 'number' ||
|
|
140
|
+
!Number.isSafeInteger(error.Depth) ||
|
|
141
|
+
error.Depth <= error.MaxDepth ||
|
|
142
|
+
Object.hasOwn(result, 'File') ||
|
|
143
|
+
Object.hasOwn(result, 'Positions') ||
|
|
144
|
+
Object.hasOwn(result, 'PositionErrors')) {
|
|
145
|
+
throw new ShInternalError('The syntax bridge returned a malformed parser resource refusal');
|
|
146
|
+
}
|
|
147
|
+
throw new ShParseMaxDepthError(error.MaxDepth, error.Depth);
|
|
148
|
+
}
|
|
118
149
|
if (error.Kind === 'InternalError')
|
|
119
150
|
throw new ShInternalError(typeof error.Message === 'string' ? error.Message : new TextDecoder().decode(error.Message));
|
|
120
|
-
const file = result.File === null ? null : isSyntaxFile(result.File) ? result.File : undefined;
|
|
121
151
|
if (file === undefined || !isGoString(error.Filename) || !isSyntaxPos(error.Pos))
|
|
122
152
|
throw new ShInternalError('The syntax bridge dropped a partial result or error position');
|
|
123
153
|
if (error.Kind === 'ParseError' &&
|
|
@@ -134,6 +164,5 @@ function invoke(operation, payload, options = '{}') {
|
|
|
134
164
|
}
|
|
135
165
|
throw new ShInternalError('The syntax bridge returned an unknown or incomplete upstream error');
|
|
136
166
|
}
|
|
137
|
-
return result;
|
|
138
167
|
}
|
|
139
168
|
//# sourceMappingURL=syntax.js.map
|
package/dist/syntax.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syntax.js","sourceRoot":"","sources":["../src/syntax.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"syntax.js","sourceRoot":"","sources":["../src/syntax.ts"],"names":[],"mappings":"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"}
|
package/dist/wasm-instance.d.ts
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import '../shim/wasm_exec.js';
|
|
2
|
+
/**
|
|
3
|
+
* Reinterprets a raw i32 returned by a WASM export as the unsigned 32-bit
|
|
4
|
+
* linear-memory address it denotes. WebAssembly hands i32 results to JS as
|
|
5
|
+
* signed numbers, so any address at or above 2 GiB would otherwise read as
|
|
6
|
+
* negative and be rejected by typed-array views.
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export declare function toAddress(raw: number): number;
|
|
2
10
|
/**
|
|
3
11
|
* Calls the lossless syntax protocol synchronously with byte-exact payloads.
|
|
4
12
|
* Every returned allocation is released even when a later allocation, exported
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasm-instance.d.ts","sourceRoot":"","sources":["../src/wasm-instance.ts"],"names":[],"mappings":"AAIA,OAAO,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"wasm-instance.d.ts","sourceRoot":"","sources":["../src/wasm-instance.ts"],"names":[],"mappings":"AAIA,OAAO,sBAAsB,CAAC;AAmE9B;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAyBD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,SAAO,GAAG,MAAM,CAkCzF"}
|
package/dist/wasm-instance.js
CHANGED
|
@@ -35,6 +35,34 @@ function ensureInstance() {
|
|
|
35
35
|
shimExports = instance.exports;
|
|
36
36
|
return shimExports;
|
|
37
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Reinterprets a raw i32 returned by a WASM export as the unsigned 32-bit
|
|
40
|
+
* linear-memory address it denotes. WebAssembly hands i32 results to JS as
|
|
41
|
+
* signed numbers, so any address at or above 2 GiB would otherwise read as
|
|
42
|
+
* negative and be rejected by typed-array views.
|
|
43
|
+
* @internal
|
|
44
|
+
*/
|
|
45
|
+
export function toAddress(raw) {
|
|
46
|
+
return raw >>> 0;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Creates a byte view over linear memory, converting the engine's RangeError
|
|
50
|
+
* for an unusable range into the package's typed internal failure so callers
|
|
51
|
+
* never see a buffer-view error from the bridge.
|
|
52
|
+
*/
|
|
53
|
+
function viewMemory(memory, ptr, len) {
|
|
54
|
+
try {
|
|
55
|
+
return len === undefined
|
|
56
|
+
? new Uint8Array(memory.buffer)
|
|
57
|
+
: new Uint8Array(memory.buffer, ptr, len);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
if (error instanceof RangeError) {
|
|
61
|
+
throw new ShInternalError(`The syntax bridge could not address WASM linear memory (address ${String(ptr)}, ${String(len ?? 'whole buffer')} bytes); memory may be exhausted: ${error.message}`);
|
|
62
|
+
}
|
|
63
|
+
throw error;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
38
66
|
const encoder = new TextEncoder();
|
|
39
67
|
const decoder = new TextDecoder();
|
|
40
68
|
/**
|
|
@@ -52,28 +80,28 @@ export function callSyntax(operation, payload, options = '{}') {
|
|
|
52
80
|
}
|
|
53
81
|
const allocations = [];
|
|
54
82
|
const write = (bytes) => {
|
|
55
|
-
const ptr = exports.alloc(bytes.length);
|
|
83
|
+
const ptr = toAddress(exports.alloc(bytes.length));
|
|
56
84
|
allocations.push(ptr);
|
|
57
85
|
if (ptr === 0)
|
|
58
86
|
throw new ShInternalError('The syntax bridge returned a null input allocation');
|
|
59
|
-
|
|
87
|
+
viewMemory(exports.mem, ptr, bytes.length).set(bytes);
|
|
60
88
|
return { ptr, len: bytes.length };
|
|
61
89
|
};
|
|
62
90
|
try {
|
|
63
91
|
const op = write(encoder.encode(operation));
|
|
64
92
|
const input = write(payload);
|
|
65
93
|
const opts = write(encoder.encode(options));
|
|
66
|
-
const result = process(op.ptr, op.len, input.ptr, input.len, opts.ptr, opts.len);
|
|
94
|
+
const result = toAddress(process(op.ptr, op.len, input.ptr, input.len, opts.ptr, opts.len));
|
|
67
95
|
if (result === 0)
|
|
68
96
|
throw new ShInternalError('The syntax bridge returned a null result');
|
|
69
97
|
allocations.push(result);
|
|
70
|
-
const memory =
|
|
98
|
+
const memory = viewMemory(exports.mem, result);
|
|
71
99
|
if (result >= memory.length)
|
|
72
100
|
throw new ShInternalError('The syntax bridge returned an out-of-bounds result');
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
if (end ===
|
|
101
|
+
// The native search finds the first NUL exactly as a byte loop would, without
|
|
102
|
+
// interpreting each byte of a megabyte-scale response in JavaScript.
|
|
103
|
+
const end = memory.indexOf(0, result);
|
|
104
|
+
if (end === -1)
|
|
77
105
|
throw new ShInternalError('The syntax bridge result has no terminator');
|
|
78
106
|
return decoder.decode(memory.subarray(result, end));
|
|
79
107
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasm-instance.js","sourceRoot":"","sources":["../src/wasm-instance.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,sBAAsB,CAAC;AAM9B,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,4EAA4E;AAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;AAuB9D,yFAAyF;AACzF,SAAS,aAAa,CAAC,KAA0B;IAC/C,MAAM,SAAS,GAAG,KAA6B,CAAC;IAChD,OAAO,CACL,SAAS,CAAC,GAAG,YAAY,WAAW,CAAC,MAAM;QAC3C,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU;QACrC,OAAO,SAAS,CAAC,IAAI,KAAK,UAAU,CACrC,CAAC;AACJ,CAAC;AAED,IAAI,UAA0C,CAAC;AAC/C,IAAI,WAAoC,CAAC;AAEzC;;;;;GAKG;AACH,SAAS,cAAc;IACrB,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IACpC,UAAU,KAAK,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC;IACpB,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;IACvE,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,eAAe,CACvB,gFAAgF,CACjF,CAAC;IACJ,CAAC;IACD,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC;IAC/B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAClC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,SAAiB,EAAE,OAAmB,EAAE,OAAO,GAAG,IAAI;IAC/E,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IACtC,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,MAAM,IAAI,eAAe,CACvB,uEAAuE,CACxE,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,CAAC,KAAiB,EAAgC,EAAE;QAChE,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"wasm-instance.js","sourceRoot":"","sources":["../src/wasm-instance.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/shim/sh-ast.wasm
CHANGED
|
Binary file
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Throws {@link ShParseMaxDepthError} if `text`'s conservatively-estimated
|
|
3
|
-
* structural nesting depth (see {@link estimateMaxNestingDepth}) exceeds
|
|
4
|
-
* {@link MAX_PARSE_NESTING_DEPTH} — called by {@link parseSync} *before* it
|
|
5
|
-
* ever hands `text` to the WASM shim, so pathological input never reaches
|
|
6
|
-
* (and never risks crashing) the shared WASM instance in the first place.
|
|
7
|
-
*
|
|
8
|
-
* @internal
|
|
9
|
-
*/
|
|
10
|
-
export declare function assertParseDepthWithinLimit(text: string): void;
|
|
11
|
-
//# sourceMappingURL=parse-depth-guard.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse-depth-guard.d.ts","sourceRoot":"","sources":["../src/parse-depth-guard.ts"],"names":[],"mappings":"AAgnBA;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAK9D"}
|