sh-ast 0.4.0 → 0.5.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.
@@ -0,0 +1,322 @@
1
+ import { InputError } from './syntax-errors.js';
2
+ import { afterItemStart, atStatementEnd } from './syntax-walk-bounds.js';
3
+ import { nilDereference, WalkPanicError } from './syntax-walk-errors.js';
4
+ export { WalkPanicError } from './syntax-walk-errors.js';
5
+ /**
6
+ * Walks synchronously using the pinned upstream case ordering. Each accepted entry is followed by its
7
+ * children and a null exit. Returning false prunes the entry without an exit;
8
+ * boolean exit return values are ignored. Every callback must return a boolean
9
+ * synchronously; other results produce InputError. Callback exceptions retain their identity,
10
+ * and upstream deferred comment callbacks still run during exception unwinding.
11
+ *
12
+ * Children and later fields are read live. Each list captures its array reference
13
+ * and length when traversal reaches that list, then reads existing later slots
14
+ * when reached. Replacing or reordering later slots is observed and can cause
15
+ * a node to be skipped or revisited. Indices added beyond the captured extent
16
+ * are not visited by that active list. Replacing the owner's array field does not
17
+ * redirect an active list, but a later walk or print sees the current field.
18
+ * Changes made before a list is reached are observed when it starts.
19
+ *
20
+ * Supported edits preserve each node's Type (and TypedNil.Kind), required field
21
+ * shapes and every index within each active list's captured extent. Leaving
22
+ * holes or shrinking an array below that extent (for example through truncation,
23
+ * deletion, or length-reducing splice/shift) is outside the mutation contract.
24
+ * These are not runtime validation rules. Ordinary JavaScript object and array
25
+ * aliases remain shared; the binding does not model distinct Go slice headers or
26
+ * capacity-dependent allocation over shared backing storage.
27
+ *
28
+ * Comments on Stmt, CaseItem and ArrayElem are copied before their callbacks,
29
+ * including position and byte-string values; editing a copy does not edit the
30
+ * stored comment. Last/CondLast/ThenLast/DoLast callbacks receive the stored
31
+ * JavaScript Comment object. Replacing its array slot leaves any previously
32
+ * retained callback object unchanged: there is no Go value-slot pointer identity.
33
+ * Reentrant walks maintain independent traversal state.
34
+ * @public
35
+ */
36
+ export function walk(node, callback) {
37
+ visit(node, callback);
38
+ }
39
+ /**
40
+ * Calls user code without intercepting its exceptions, then enforces Go's bool
41
+ * return domain before traversal can consume the result. Exit results share
42
+ * that domain even though their boolean values do not control traversal.
43
+ */
44
+ function invokeCallback(node, callback) {
45
+ const result = callback(node);
46
+ if (typeof result !== 'boolean') {
47
+ throw new InputError('Walk callbacks must return a boolean synchronously');
48
+ }
49
+ return result;
50
+ }
51
+ /** An unconditional concrete-pointer child is observable even when the pointer is nil. */
52
+ function pointer(node, kind, callback) {
53
+ visit(node ?? { Type: 'TypedNil', Kind: kind }, callback);
54
+ }
55
+ /** Optional fields skip null; a typed-nil interface is nevertheless a non-null interface. */
56
+ function optional(node, callback) {
57
+ if (node !== null) {
58
+ visit(node, callback);
59
+ }
60
+ }
61
+ /**
62
+ * Captures one ordinary array and its initial extent when this list is reached.
63
+ * Later existing slots are read live; appends and owner-field replacements cannot
64
+ * extend or redirect the active list. Removing indices within its captured
65
+ * extent is unsupported.
66
+ */
67
+ function list(nodes, kind, callback) {
68
+ if (nodes === null) {
69
+ return;
70
+ }
71
+ const length = nodes.length;
72
+ for (let index = 0; index < length; index++) {
73
+ const node = nodes[index] ?? null;
74
+ if (kind === null) {
75
+ visit(node, callback);
76
+ }
77
+ else {
78
+ pointer(node, kind, callback);
79
+ }
80
+ }
81
+ }
82
+ /**
83
+ * Visits stored JavaScript Comment objects, unlike the copies used by item loops.
84
+ * Later slot replacement is read live, but retained objects do not become Go
85
+ * pointers to replacement values. The active array and extent remain captured.
86
+ */
87
+ function comments(nodes, callback) {
88
+ if (nodes === null) {
89
+ return;
90
+ }
91
+ const length = nodes.length;
92
+ for (let index = 0; index < length; index++) {
93
+ pointer(nodes[index] ?? null, 'Comment', callback);
94
+ }
95
+ }
96
+ /** Auxiliary pointers are reread after callbacks may replace or clear their owner field. */
97
+ function dereference(value) {
98
+ if (value === null) {
99
+ return nilDereference();
100
+ }
101
+ return value;
102
+ }
103
+ /** Go copies a Comment's position and immutable string value before its callback. */
104
+ function copyComment(node) {
105
+ return {
106
+ Type: 'Comment',
107
+ Hash: { ...node.Hash },
108
+ Text: typeof node.Text === 'string' ? node.Text : node.Text.slice(),
109
+ };
110
+ }
111
+ /**
112
+ * A single defer belongs to this occurrence. The try/finally surrounds all child
113
+ * work and the null exit, preserving Go's unwind order and replacement exception.
114
+ */
115
+ function visit(node, callback) {
116
+ if (!invokeCallback(node, callback)) {
117
+ return;
118
+ }
119
+ if (node === null) {
120
+ throw new WalkPanicError('syntax.Walk: unexpected node type <nil>');
121
+ }
122
+ if (node.Type === 'TypedNil') {
123
+ if (node.Kind === 'BraceExp') {
124
+ throw new WalkPanicError('syntax.Walk: unexpected node type *syntax.BraceExp');
125
+ }
126
+ if (node.Kind !== 'Lit' && node.Kind !== 'Comment' && node.Kind !== 'SglQuoted') {
127
+ nilDereference();
128
+ }
129
+ invokeCallback(null, callback);
130
+ return;
131
+ }
132
+ let deferred;
133
+ try {
134
+ switch (node.Type) {
135
+ case 'File':
136
+ list(node.Stmts, 'Stmt', callback);
137
+ comments(node.Last, callback);
138
+ break;
139
+ case 'Comment':
140
+ case 'Lit':
141
+ case 'SglQuoted':
142
+ break;
143
+ case 'Stmt': {
144
+ const values = node.Comments;
145
+ const length = values?.length ?? 0;
146
+ for (let index = 0; values !== null && index < length; index++) {
147
+ const value = copyComment(values[index]);
148
+ if (atStatementEnd(node, value.Hash)) {
149
+ deferred = value;
150
+ break;
151
+ }
152
+ visit(value, callback);
153
+ }
154
+ optional(node.Cmd, callback);
155
+ list(node.Redirs, 'Redirect', callback);
156
+ break;
157
+ }
158
+ case 'Assign':
159
+ optional(node.Name, callback);
160
+ optional(node.Value, callback);
161
+ optional(node.Index, callback);
162
+ optional(node.Array, callback);
163
+ break;
164
+ case 'Redirect':
165
+ optional(node.N, callback);
166
+ pointer(node.Word, 'Word', callback);
167
+ optional(node.Hdoc, callback);
168
+ break;
169
+ case 'CallExpr':
170
+ list(node.Assigns, 'Assign', callback);
171
+ list(node.Args, 'Word', callback);
172
+ break;
173
+ case 'Subshell':
174
+ case 'Block':
175
+ case 'CmdSubst':
176
+ case 'ProcSubst':
177
+ list(node.Stmts, 'Stmt', callback);
178
+ comments(node.Last, callback);
179
+ break;
180
+ case 'IfClause':
181
+ list(node.Cond, 'Stmt', callback);
182
+ comments(node.CondLast, callback);
183
+ list(node.Then, 'Stmt', callback);
184
+ comments(node.ThenLast, callback);
185
+ optional(node.Else, callback);
186
+ break;
187
+ case 'WhileClause':
188
+ list(node.Cond, 'Stmt', callback);
189
+ comments(node.CondLast, callback);
190
+ list(node.Do, 'Stmt', callback);
191
+ comments(node.DoLast, callback);
192
+ break;
193
+ case 'ForClause':
194
+ visit(node.Loop, callback);
195
+ list(node.Do, 'Stmt', callback);
196
+ comments(node.DoLast, callback);
197
+ break;
198
+ case 'WordIter':
199
+ pointer(node.Name, 'Lit', callback);
200
+ list(node.Items, 'Word', callback);
201
+ break;
202
+ case 'CStyleLoop':
203
+ optional(node.Init, callback);
204
+ optional(node.Cond, callback);
205
+ optional(node.Post, callback);
206
+ break;
207
+ case 'BinaryCmd':
208
+ pointer(node.X, 'Stmt', callback);
209
+ pointer(node.Y, 'Stmt', callback);
210
+ break;
211
+ case 'FuncDecl':
212
+ optional(node.Name, callback);
213
+ list(node.Names, 'Lit', callback);
214
+ pointer(node.Body, 'Stmt', callback);
215
+ break;
216
+ case 'Word':
217
+ case 'DblQuoted':
218
+ list(node.Parts, null, callback);
219
+ break;
220
+ case 'ParamExp':
221
+ optional(node.Flags, callback);
222
+ optional(node.Param, callback);
223
+ optional(node.NestedParam, callback);
224
+ optional(node.Index, callback);
225
+ if (node.Slice !== null) {
226
+ optional(node.Slice.Offset, callback);
227
+ optional(dereference(node.Slice).Length, callback);
228
+ }
229
+ if (node.Repl !== null) {
230
+ optional(node.Repl.Orig, callback);
231
+ optional(dereference(node.Repl).With, callback);
232
+ }
233
+ if (node.Exp !== null) {
234
+ optional(node.Exp.Word, callback);
235
+ }
236
+ break;
237
+ case 'ArithmExp':
238
+ case 'ArithmCmd':
239
+ case 'UnaryArithm':
240
+ case 'UnaryTest':
241
+ case 'ParenArithm':
242
+ case 'ParenTest':
243
+ case 'TestClause':
244
+ visit(node.X, callback);
245
+ break;
246
+ case 'BinaryArithm':
247
+ case 'BinaryTest':
248
+ visit(node.X, callback);
249
+ visit(node.Y, callback);
250
+ break;
251
+ case 'FlagsArithm':
252
+ pointer(node.Flags, 'Lit', callback);
253
+ optional(node.X, callback);
254
+ break;
255
+ case 'CaseClause':
256
+ pointer(node.Word, 'Word', callback);
257
+ list(node.Items, 'CaseItem', callback);
258
+ comments(node.Last, callback);
259
+ break;
260
+ case 'CaseItem':
261
+ case 'ArrayElem': {
262
+ const values = node.Comments;
263
+ const length = values?.length ?? 0;
264
+ for (let index = 0; values !== null && index < length; index++) {
265
+ const value = copyComment(values[index]);
266
+ if (afterItemStart(node, value.Hash)) {
267
+ deferred = value;
268
+ break;
269
+ }
270
+ visit(value, callback);
271
+ }
272
+ if (node.Type === 'CaseItem') {
273
+ list(node.Patterns, 'Word', callback);
274
+ list(node.Stmts, 'Stmt', callback);
275
+ comments(node.Last, callback);
276
+ }
277
+ else {
278
+ optional(node.Index, callback);
279
+ optional(node.Value, callback);
280
+ }
281
+ break;
282
+ }
283
+ case 'DeclClause':
284
+ list(node.Args, 'Assign', callback);
285
+ break;
286
+ case 'ArrayExpr':
287
+ list(node.Elems, 'ArrayElem', callback);
288
+ comments(node.Last, callback);
289
+ break;
290
+ case 'ExtGlob':
291
+ pointer(node.Pattern, 'Lit', callback);
292
+ break;
293
+ case 'TimeClause':
294
+ optional(node.Stmt, callback);
295
+ break;
296
+ case 'CoprocClause':
297
+ optional(node.Name, callback);
298
+ pointer(node.Stmt, 'Stmt', callback);
299
+ break;
300
+ case 'LetClause':
301
+ list(node.Exprs, null, callback);
302
+ break;
303
+ case 'TestDecl':
304
+ pointer(node.Description, 'Word', callback);
305
+ pointer(node.Body, 'Stmt', callback);
306
+ break;
307
+ case 'BraceExp':
308
+ throw new WalkPanicError('syntax.Walk: unexpected node type *syntax.BraceExp');
309
+ default: {
310
+ const exhaustive = node;
311
+ throw new WalkPanicError(`syntax.Walk: unexpected node type ${String(exhaustive)}`);
312
+ }
313
+ }
314
+ invokeCallback(null, callback);
315
+ }
316
+ finally {
317
+ if (deferred !== undefined) {
318
+ visit(deferred, callback);
319
+ }
320
+ }
321
+ }
322
+ //# sourceMappingURL=syntax-walk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syntax-walk.js","sourceRoot":"","sources":["../src/syntax-walk.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sh-ast",
3
3
  "description": "Synchronous, faithfully typed mvdan/sh syntax records and parsing via WebAssembly.",
4
- "version": "0.4.0",
4
+ "version": "0.5.0",
5
5
  "author": "Mike North <michael.l.north@gmail.com>",
6
6
  "repository": {
7
7
  "type": "git",
package/shim/sh-ast.wasm CHANGED
Binary file