sh-ast 0.3.1 → 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.
Files changed (108) hide show
  1. package/README.md +199 -143
  2. package/dist/analyze/ansi-c-escapes.d.ts +1 -1
  3. package/dist/analyze/ansi-c-escapes.js +1 -1
  4. package/dist/analyze/enumerate-commands.d.ts +11 -16
  5. package/dist/analyze/enumerate-commands.d.ts.map +1 -1
  6. package/dist/analyze/enumerate-commands.js +82 -92
  7. package/dist/analyze/enumerate-commands.js.map +1 -1
  8. package/dist/analyze/index.d.ts +3 -2
  9. package/dist/analyze/index.d.ts.map +1 -1
  10. package/dist/analyze/index.js +1 -1
  11. package/dist/analyze/node-helpers.d.ts +10 -21
  12. package/dist/analyze/node-helpers.d.ts.map +1 -1
  13. package/dist/analyze/node-helpers.js +16 -27
  14. package/dist/analyze/node-helpers.js.map +1 -1
  15. package/dist/analyze/resolve-argv0.d.ts +6 -6
  16. package/dist/analyze/resolve-argv0.js +6 -6
  17. package/dist/analyze/resolve-word.d.ts +7 -10
  18. package/dist/analyze/resolve-word.d.ts.map +1 -1
  19. package/dist/analyze/resolve-word.js +39 -22
  20. package/dist/analyze/resolve-word.js.map +1 -1
  21. package/dist/analyze.d.ts +3780 -397
  22. package/dist/errors.d.ts +6 -79
  23. package/dist/errors.d.ts.map +1 -1
  24. package/dist/errors.js +5 -64
  25. package/dist/errors.js.map +1 -1
  26. package/dist/index.d.ts +20 -14
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +26 -4
  29. package/dist/index.js.map +1 -1
  30. package/dist/sh-ast.d.ts +3616 -1020
  31. package/dist/syntax-errors.d.ts +56 -0
  32. package/dist/syntax-errors.d.ts.map +1 -0
  33. package/dist/syntax-errors.js +80 -0
  34. package/dist/syntax-errors.js.map +1 -0
  35. package/dist/syntax-print-errors.d.ts +35 -0
  36. package/dist/syntax-print-errors.d.ts.map +1 -0
  37. package/dist/syntax-print-errors.js +37 -0
  38. package/dist/syntax-print-errors.js.map +1 -0
  39. package/dist/syntax-print.d.ts +49 -0
  40. package/dist/syntax-print.d.ts.map +1 -0
  41. package/dist/syntax-print.js +86 -0
  42. package/dist/syntax-print.js.map +1 -0
  43. package/dist/syntax-snapshot.d.ts +47 -0
  44. package/dist/syntax-snapshot.d.ts.map +1 -0
  45. package/dist/syntax-snapshot.js +121 -0
  46. package/dist/syntax-snapshot.js.map +1 -0
  47. package/dist/syntax-walk-bounds.d.ts +18 -0
  48. package/dist/syntax-walk-bounds.d.ts.map +1 -0
  49. package/dist/syntax-walk-bounds.js +188 -0
  50. package/dist/syntax-walk-bounds.js.map +1 -0
  51. package/dist/syntax-walk-errors.d.ts +19 -0
  52. package/dist/syntax-walk-errors.d.ts.map +1 -0
  53. package/dist/syntax-walk-errors.js +23 -0
  54. package/dist/syntax-walk-errors.js.map +1 -0
  55. package/dist/syntax-walk-license.d.ts +3 -0
  56. package/dist/syntax-walk-license.d.ts.map +1 -0
  57. package/dist/syntax-walk-license.js +37 -0
  58. package/dist/syntax-walk-license.js.map +1 -0
  59. package/dist/syntax-walk.d.ts +46 -0
  60. package/dist/syntax-walk.d.ts.map +1 -0
  61. package/dist/syntax-walk.js +322 -0
  62. package/dist/syntax-walk.js.map +1 -0
  63. package/dist/syntax-wire.d.ts +31 -0
  64. package/dist/syntax-wire.d.ts.map +1 -0
  65. package/dist/syntax-wire.js +202 -0
  66. package/dist/syntax-wire.js.map +1 -0
  67. package/dist/syntax.d.ts +65 -0
  68. package/dist/syntax.d.ts.map +1 -0
  69. package/dist/syntax.js +152 -0
  70. package/dist/syntax.js.map +1 -0
  71. package/dist/wasm-instance.d.ts +5 -8
  72. package/dist/wasm-instance.d.ts.map +1 -1
  73. package/dist/wasm-instance.js +44 -47
  74. package/dist/wasm-instance.js.map +1 -1
  75. package/generated/syntax-constants.d.ts +1652 -0
  76. package/generated/syntax-constants.js +1384 -0
  77. package/generated/syntax-schema.d.ts +60 -0
  78. package/generated/syntax-schema.js +1740 -0
  79. package/generated/syntax-types.d.ts +1977 -0
  80. package/package.json +2 -2
  81. package/shim/sh-ast.wasm +0 -0
  82. package/dist/normalize.d.ts +0 -52
  83. package/dist/normalize.d.ts.map +0 -1
  84. package/dist/normalize.js +0 -260
  85. package/dist/normalize.js.map +0 -1
  86. package/dist/parse.d.ts +0 -50
  87. package/dist/parse.d.ts.map +0 -1
  88. package/dist/parse.js +0 -125
  89. package/dist/parse.js.map +0 -1
  90. package/dist/types.d.ts +0 -74
  91. package/dist/types.d.ts.map +0 -1
  92. package/dist/types.js +0 -2
  93. package/dist/types.js.map +0 -1
  94. package/dist/visitor-keys.d.ts +0 -21
  95. package/dist/visitor-keys.d.ts.map +0 -1
  96. package/dist/visitor-keys.js +0 -23
  97. package/dist/visitor-keys.js.map +0 -1
  98. package/dist/walk.d.ts +0 -18
  99. package/dist/walk.d.ts.map +0 -1
  100. package/dist/walk.js +0 -40
  101. package/dist/walk.js.map +0 -1
  102. package/generated/child-type-schema.d.ts +0 -14
  103. package/generated/child-type-schema.js +0 -188
  104. package/generated/node-types.d.ts +0 -1002
  105. package/generated/position-fields.d.ts +0 -21
  106. package/generated/position-fields.js +0 -50
  107. package/generated/visitor-keys.d.ts +0 -11
  108. package/generated/visitor-keys.js +0 -50
@@ -1,4 +1,5 @@
1
- import type { ShNode } from '../types.js';
1
+ /** Resolves faithful upstream word records without evaluating shell expansions. */
2
+ import type { Node } from '../../generated/syntax-types.js';
2
3
  /**
3
4
  * Why a {@link resolveWord} result is `static: false`: the word's exact
4
5
  * text cannot be determined from source alone.
@@ -40,7 +41,8 @@ import type { ShNode } from '../types.js';
40
41
  * `$"..."` word's *contents* would otherwise report — the `DblQuoted`
41
42
  * node's own `dollar` flag is checked before its children are visited at
42
43
  * all, so e.g. `$"hi $x"` reports `'locale'`, never `'expansion'`.
43
- * - `'unsupported'` — the word contains a `$'...'` (ANSI-C quoted) `\u`/`\U`
44
+ * - `'unsupported'` — a word contains a nil or typed nil part, a literal carries a byte-preserving `Uint8Array`
45
+ * rather than Unicode text, or the word contains a `$'...'` (ANSI-C quoted) `\u`/`\U`
44
46
  * escape whose value has no corresponding Unicode character (greater than
45
47
  * `U+10FFFF`, e.g. `$'\UFFFFFFFF'`): real bash's output for this case is
46
48
  * an undocumented, non-UTF-8 byte sequence with no exact representation
@@ -134,18 +136,13 @@ export interface ResolveWordOptions {
134
136
  * `$'\U...'` escape is `static: false` with a reason — never an error, and
135
137
  * never a safety judgment (see {@link WordResolution}).
136
138
  *
137
- * @param word - A `Word` node, e.g. `parseSync(...).stmts[0].cmd.args[0]`.
138
- * A `word` sourced from `parseSync` has already passed that function's own
139
- * pathological-nesting guard (`ShParseMaxDepthError` — see
140
- * `parse-depth-guard.ts`), which rejects deeply-nested input before it is
141
- * ever turned into a tree at all, so `resolveWord` itself never needs (and
142
- * does not implement) a depth guard of its own.
139
+ * @param word - A `Word` node, e.g. `parseSync(...).Stmts[0].Cmd.Args[0]`.
143
140
  * @param options - See {@link ResolveWordOptions}.
144
- * @throws TypeError if `word.type` is not `"Word"` — a programmer-error
141
+ * @throws TypeError if `word.Type` is neither `"Word"` nor `"TypedNil"` — a programmer-error
145
142
  * misuse of the API, not a "malformed shell source" case (well-formed
146
143
  * shell source, however dynamic, never throws; see {@link WordResolution}).
147
144
  *
148
145
  * @public
149
146
  */
150
- export declare function resolveWord(word: ShNode, options?: ResolveWordOptions): WordResolution;
147
+ export declare function resolveWord(word: Node, options?: ResolveWordOptions): WordResolution;
151
148
  //# sourceMappingURL=resolve-word.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-word.d.ts","sourceRoot":"","sources":["../../src/analyze/resolve-word.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAK1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,MAAM,MAAM,oBAAoB,GAC9B,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,aAAa,CAAC;AAEtE;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GACtB;IACE,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,mEAAmE;IACnE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,GACD;IACE,qFAAqF;IACrF,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;IACvB,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;CACvC,CAAC;AAEN;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,kBAAkB,CAAC;CAC5D;AA6JD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,cAAc,CA4BtF"}
1
+ {"version":3,"file":"resolve-word.d.ts","sourceRoot":"","sources":["../../src/analyze/resolve-word.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AAK5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACH,MAAM,MAAM,oBAAoB,GAC9B,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,aAAa,CAAC;AAEtE;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GACtB;IACE,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,mEAAmE;IACnE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,GACD;IACE,qFAAqF;IACrF,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;IACvB,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;CACvC,CAAC;AAEN;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,kBAAkB,CAAC;CAC5D;AAwKD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,cAAc,CAqCpF"}
@@ -1,6 +1,6 @@
1
1
  import { decodeAnsiCString } from './ansi-c-escapes.js';
2
2
  import { decodeDblQuotedLit, decodeUnquotedLit } from './decode-lit.js';
3
- import { nodeArray, stringField } from './node-helpers.js';
3
+ import { nodeArray } from './node-helpers.js';
4
4
  /**
5
5
  * True iff `raw` (a `Lit` part's *undecoded* value) begins with a literal
6
6
  * `~` character. Only meaningful when checked against a `Word`'s very
@@ -30,11 +30,13 @@ function startsWithUnescapedTilde(raw) {
30
30
  function hasUnquotedColonTilde(parts) {
31
31
  let prevWasUnescapedColon = false;
32
32
  for (const part of parts) {
33
- if (part.type !== 'Lit') {
33
+ if (part.Type !== 'Lit') {
34
34
  prevWasUnescapedColon = false;
35
35
  continue;
36
36
  }
37
- const raw = stringField(part, 'value');
37
+ const raw = part.Value;
38
+ if (typeof raw !== 'string')
39
+ return false;
38
40
  let i = 0;
39
41
  while (i < raw.length) {
40
42
  const ch = raw[i];
@@ -73,19 +75,26 @@ function hasUnquotedColonTilde(parts) {
73
75
  function hasUnquotedBracketExpression(parts) {
74
76
  let brackets = '';
75
77
  for (const part of parts) {
76
- if (part.type !== 'Lit')
78
+ if (part.Type !== 'Lit')
77
79
  continue;
78
- brackets += decodeUnquotedLit(stringField(part, 'value')).brackets;
80
+ if (typeof part.Value !== 'string')
81
+ return false;
82
+ brackets += decodeUnquotedLit(part.Value).brackets;
79
83
  }
80
84
  const openIndex = brackets.indexOf('[');
81
85
  if (openIndex === -1)
82
86
  return false;
83
87
  return brackets.includes(']', openIndex + 1);
84
88
  }
89
+ /** Applies quoting semantics to one fragment without evaluating dynamic content. */
85
90
  function resolvePart(part, quoting) {
86
- switch (part.type) {
91
+ switch (part.Type) {
92
+ case 'TypedNil':
93
+ return { ok: false, reason: 'unsupported' };
87
94
  case 'Lit': {
88
- const raw = stringField(part, 'value');
95
+ const raw = part.Value;
96
+ if (typeof raw !== 'string')
97
+ return { ok: false, reason: 'unsupported' };
89
98
  if (quoting === 'dblquoted') {
90
99
  return { ok: true, text: decodeDblQuotedLit(raw) };
91
100
  }
@@ -95,11 +104,13 @@ function resolvePart(part, quoting) {
95
104
  return { ok: true, text };
96
105
  }
97
106
  case 'SglQuoted': {
98
- const raw = stringField(part, 'value');
107
+ const raw = part.Value;
108
+ if (typeof raw !== 'string')
109
+ return { ok: false, reason: 'unsupported' };
99
110
  // ANSI-C quoting ($'...') is flagged by SglQuoted.Dollar (mvdan/sh
100
111
  // v3.13.1's `syntax.SglQuoted.Dollar bool`); plain single-quoted
101
112
  // text ('...') never has any escapes interpreted at all.
102
- if (part.dollar === true) {
113
+ if (part.Dollar) {
103
114
  const decoded = decodeAnsiCString(raw);
104
115
  if (!decoded.ok)
105
116
  return { ok: false, reason: 'unsupported' };
@@ -115,11 +126,13 @@ function resolvePart(part, quoting) {
115
126
  // Manual §3.1.2.5), so 'locale' deterministically takes precedence
116
127
  // over any 'expansion' (or other reason) its contents would
117
128
  // otherwise report — see WordResolutionReason's 'locale' doc.
118
- if (part.dollar === true) {
129
+ if (part.Dollar) {
119
130
  return { ok: false, reason: 'locale' };
120
131
  }
132
+ if (part.Parts?.includes(null))
133
+ return { ok: false, reason: 'unsupported' };
121
134
  let text = '';
122
- for (const inner of nodeArray(part.parts)) {
135
+ for (const inner of nodeArray(part.Parts)) {
123
136
  const result = resolvePart(inner, 'dblquoted');
124
137
  if (!result.ok)
125
138
  return result;
@@ -162,30 +175,34 @@ function resolvePart(part, quoting) {
162
175
  * `$'\U...'` escape is `static: false` with a reason — never an error, and
163
176
  * never a safety judgment (see {@link WordResolution}).
164
177
  *
165
- * @param word - A `Word` node, e.g. `parseSync(...).stmts[0].cmd.args[0]`.
166
- * A `word` sourced from `parseSync` has already passed that function's own
167
- * pathological-nesting guard (`ShParseMaxDepthError` — see
168
- * `parse-depth-guard.ts`), which rejects deeply-nested input before it is
169
- * ever turned into a tree at all, so `resolveWord` itself never needs (and
170
- * does not implement) a depth guard of its own.
178
+ * @param word - A `Word` node, e.g. `parseSync(...).Stmts[0].Cmd.Args[0]`.
171
179
  * @param options - See {@link ResolveWordOptions}.
172
- * @throws TypeError if `word.type` is not `"Word"` — a programmer-error
180
+ * @throws TypeError if `word.Type` is neither `"Word"` nor `"TypedNil"` — a programmer-error
173
181
  * misuse of the API, not a "malformed shell source" case (well-formed
174
182
  * shell source, however dynamic, never throws; see {@link WordResolution}).
175
183
  *
176
184
  * @public
177
185
  */
178
186
  export function resolveWord(word, options) {
179
- if (word.type !== 'Word') {
180
- throw new TypeError(`resolveWord expects a "Word" node, got "${word.type}"`);
187
+ // A concrete nil pointer inside an interface retains its kind, but carries no text.
188
+ if (word.Type === 'TypedNil')
189
+ return { static: false, reason: 'unsupported' };
190
+ if (word.Type !== 'Word') {
191
+ throw new TypeError(`resolveWord expects a "Word" node, got "${word.Type}"`);
181
192
  }
182
- const parts = nodeArray(word.parts);
193
+ // A nil slice is an empty word; a nil element is a missing semantic fragment.
194
+ // Omitting a fragment would invent a different command name.
195
+ if (word.Parts?.includes(null))
196
+ return { static: false, reason: 'unsupported' };
197
+ const parts = nodeArray(word.Parts);
183
198
  if (parts.length === 0) {
184
199
  return { static: true, text: '' };
185
200
  }
186
201
  // `parts.length === 0` returned above, so `parts[0]` is a real element.
187
202
  const first = parts[0];
188
- if (first.type === 'Lit' && startsWithUnescapedTilde(stringField(first, 'value'))) {
203
+ if (first.Type === 'Lit' &&
204
+ typeof first.Value === 'string' &&
205
+ startsWithUnescapedTilde(first.Value)) {
189
206
  return { static: false, reason: 'tilde' };
190
207
  }
191
208
  if (options?.context !== 'command-argument' && hasUnquotedColonTilde(parts)) {
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-word.js","sourceRoot":"","sources":["../../src/analyze/resolve-word.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve-word.js","sourceRoot":"","sources":["../../src/analyze/resolve-word.ts"],"names":[],"mappings":"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"}