@taliesinb/mash 0.0.0-stage → 0.1.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 (203) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +275 -2
  3. package/bin/mash.ts +253 -0
  4. package/dist/bin/mash.d.ts +39 -0
  5. package/dist/bin/mash.d.ts.map +1 -0
  6. package/dist/bin/mash.js +281 -0
  7. package/dist/bin/mash.js.map +1 -0
  8. package/dist/src/analysis/analyze.d.ts +97 -0
  9. package/dist/src/analysis/analyze.d.ts.map +1 -0
  10. package/dist/src/analysis/analyze.js +1406 -0
  11. package/dist/src/analysis/analyze.js.map +1 -0
  12. package/dist/src/analysis/fs.d.ts +39 -0
  13. package/dist/src/analysis/fs.d.ts.map +1 -0
  14. package/dist/src/analysis/fs.js +117 -0
  15. package/dist/src/analysis/fs.js.map +1 -0
  16. package/dist/src/analysis/outputs.d.ts +16 -0
  17. package/dist/src/analysis/outputs.d.ts.map +1 -0
  18. package/dist/src/analysis/outputs.js +277 -0
  19. package/dist/src/analysis/outputs.js.map +1 -0
  20. package/dist/src/analysis/value.d.ts +76 -0
  21. package/dist/src/analysis/value.d.ts.map +1 -0
  22. package/dist/src/analysis/value.js +248 -0
  23. package/dist/src/analysis/value.js.map +1 -0
  24. package/dist/src/behaviors/defs/core.d.ts +15 -0
  25. package/dist/src/behaviors/defs/core.d.ts.map +1 -0
  26. package/dist/src/behaviors/defs/core.js +1084 -0
  27. package/dist/src/behaviors/defs/core.js.map +1 -0
  28. package/dist/src/behaviors/defs/devtools.d.ts +9 -0
  29. package/dist/src/behaviors/defs/devtools.d.ts.map +1 -0
  30. package/dist/src/behaviors/defs/devtools.js +432 -0
  31. package/dist/src/behaviors/defs/devtools.js.map +1 -0
  32. package/dist/src/behaviors/defs/macos.d.ts +12 -0
  33. package/dist/src/behaviors/defs/macos.d.ts.map +1 -0
  34. package/dist/src/behaviors/defs/macos.js +454 -0
  35. package/dist/src/behaviors/defs/macos.js.map +1 -0
  36. package/dist/src/behaviors/defs/tools.d.ts +9 -0
  37. package/dist/src/behaviors/defs/tools.d.ts.map +1 -0
  38. package/dist/src/behaviors/defs/tools.js +639 -0
  39. package/dist/src/behaviors/defs/tools.js.map +1 -0
  40. package/dist/src/behaviors/dsl.d.ts +95 -0
  41. package/dist/src/behaviors/dsl.d.ts.map +1 -0
  42. package/dist/src/behaviors/dsl.js +267 -0
  43. package/dist/src/behaviors/dsl.js.map +1 -0
  44. package/dist/src/behaviors/index.d.ts +12 -0
  45. package/dist/src/behaviors/index.d.ts.map +1 -0
  46. package/dist/src/behaviors/index.js +18 -0
  47. package/dist/src/behaviors/index.js.map +1 -0
  48. package/dist/src/behaviors/registry.d.ts +45 -0
  49. package/dist/src/behaviors/registry.d.ts.map +1 -0
  50. package/dist/src/behaviors/registry.js +266 -0
  51. package/dist/src/behaviors/registry.js.map +1 -0
  52. package/dist/src/behaviors/roles.d.ts +29 -0
  53. package/dist/src/behaviors/roles.d.ts.map +1 -0
  54. package/dist/src/behaviors/roles.js +198 -0
  55. package/dist/src/behaviors/roles.js.map +1 -0
  56. package/dist/src/behaviors/types.d.ts +120 -0
  57. package/dist/src/behaviors/types.d.ts.map +1 -0
  58. package/dist/src/behaviors/types.js +12 -0
  59. package/dist/src/behaviors/types.js.map +1 -0
  60. package/dist/src/index.d.ts +27 -0
  61. package/dist/src/index.d.ts.map +1 -0
  62. package/dist/src/index.js +24 -0
  63. package/dist/src/index.js.map +1 -0
  64. package/dist/src/integrations/deepsea.d.ts +121 -0
  65. package/dist/src/integrations/deepsea.d.ts.map +1 -0
  66. package/dist/src/integrations/deepsea.js +199 -0
  67. package/dist/src/integrations/deepsea.js.map +1 -0
  68. package/dist/src/machine.d.ts +139 -0
  69. package/dist/src/machine.d.ts.map +1 -0
  70. package/dist/src/machine.js +400 -0
  71. package/dist/src/machine.js.map +1 -0
  72. package/dist/src/parser/ast.d.ts +369 -0
  73. package/dist/src/parser/ast.d.ts.map +1 -0
  74. package/dist/src/parser/ast.js +17 -0
  75. package/dist/src/parser/ast.js.map +1 -0
  76. package/dist/src/parser/parser.d.ts +48 -0
  77. package/dist/src/parser/parser.d.ts.map +1 -0
  78. package/dist/src/parser/parser.js +1950 -0
  79. package/dist/src/parser/parser.js.map +1 -0
  80. package/dist/src/policy/effects.d.ts +86 -0
  81. package/dist/src/policy/effects.d.ts.map +1 -0
  82. package/dist/src/policy/effects.js +53 -0
  83. package/dist/src/policy/effects.js.map +1 -0
  84. package/dist/src/policy/policy.d.ts +130 -0
  85. package/dist/src/policy/policy.d.ts.map +1 -0
  86. package/dist/src/policy/policy.js +532 -0
  87. package/dist/src/policy/policy.js.map +1 -0
  88. package/dist/src/printer/doc.d.ts +151 -0
  89. package/dist/src/printer/doc.d.ts.map +1 -0
  90. package/dist/src/printer/doc.js +409 -0
  91. package/dist/src/printer/doc.js.map +1 -0
  92. package/dist/src/printer/highlight.d.ts +53 -0
  93. package/dist/src/printer/highlight.d.ts.map +1 -0
  94. package/dist/src/printer/highlight.js +339 -0
  95. package/dist/src/printer/highlight.js.map +1 -0
  96. package/dist/src/printer/html.d.ts +72 -0
  97. package/dist/src/printer/html.d.ts.map +1 -0
  98. package/dist/src/printer/html.js +423 -0
  99. package/dist/src/printer/html.js.map +1 -0
  100. package/dist/src/printer/print.d.ts +63 -0
  101. package/dist/src/printer/print.d.ts.map +1 -0
  102. package/dist/src/printer/print.js +484 -0
  103. package/dist/src/printer/print.js.map +1 -0
  104. package/dist/src/printer/summary.d.ts +50 -0
  105. package/dist/src/printer/summary.d.ts.map +1 -0
  106. package/dist/src/printer/summary.js +621 -0
  107. package/dist/src/printer/summary.js.map +1 -0
  108. package/dist/src/trace/events.d.ts +183 -0
  109. package/dist/src/trace/events.d.ts.map +1 -0
  110. package/dist/src/trace/events.js +9 -0
  111. package/dist/src/trace/events.js.map +1 -0
  112. package/dist/src/trace/progress.d.ts +58 -0
  113. package/dist/src/trace/progress.d.ts.map +1 -0
  114. package/dist/src/trace/progress.js +83 -0
  115. package/dist/src/trace/progress.js.map +1 -0
  116. package/dist/src/vm/arith.d.ts +29 -0
  117. package/dist/src/vm/arith.d.ts.map +1 -0
  118. package/dist/src/vm/arith.js +258 -0
  119. package/dist/src/vm/arith.js.map +1 -0
  120. package/dist/src/vm/builtins.d.ts +31 -0
  121. package/dist/src/vm/builtins.d.ts.map +1 -0
  122. package/dist/src/vm/builtins.js +1773 -0
  123. package/dist/src/vm/builtins.js.map +1 -0
  124. package/dist/src/vm/emulate.d.ts +75 -0
  125. package/dist/src/vm/emulate.d.ts.map +1 -0
  126. package/dist/src/vm/emulate.js +380 -0
  127. package/dist/src/vm/emulate.js.map +1 -0
  128. package/dist/src/vm/expand.d.ts +68 -0
  129. package/dist/src/vm/expand.d.ts.map +1 -0
  130. package/dist/src/vm/expand.js +744 -0
  131. package/dist/src/vm/expand.js.map +1 -0
  132. package/dist/src/vm/external.d.ts +34 -0
  133. package/dist/src/vm/external.d.ts.map +1 -0
  134. package/dist/src/vm/external.js +228 -0
  135. package/dist/src/vm/external.js.map +1 -0
  136. package/dist/src/vm/fifo.d.ts +66 -0
  137. package/dist/src/vm/fifo.d.ts.map +1 -0
  138. package/dist/src/vm/fifo.js +232 -0
  139. package/dist/src/vm/fifo.js.map +1 -0
  140. package/dist/src/vm/interp.d.ts +209 -0
  141. package/dist/src/vm/interp.d.ts.map +1 -0
  142. package/dist/src/vm/interp.js +1641 -0
  143. package/dist/src/vm/interp.js.map +1 -0
  144. package/dist/src/vm/io.d.ts +180 -0
  145. package/dist/src/vm/io.d.ts.map +1 -0
  146. package/dist/src/vm/io.js +502 -0
  147. package/dist/src/vm/io.js.map +1 -0
  148. package/dist/src/vm/pattern.d.ts +46 -0
  149. package/dist/src/vm/pattern.d.ts.map +1 -0
  150. package/dist/src/vm/pattern.js +498 -0
  151. package/dist/src/vm/pattern.js.map +1 -0
  152. package/dist/src/vm/proc.d.ts +94 -0
  153. package/dist/src/vm/proc.d.ts.map +1 -0
  154. package/dist/src/vm/proc.js +130 -0
  155. package/dist/src/vm/proc.js.map +1 -0
  156. package/dist/src/vm/state.d.ts +104 -0
  157. package/dist/src/vm/state.d.ts.map +1 -0
  158. package/dist/src/vm/state.js +233 -0
  159. package/dist/src/vm/state.js.map +1 -0
  160. package/dist/src/vm/test.d.ts +11 -0
  161. package/dist/src/vm/test.d.ts.map +1 -0
  162. package/dist/src/vm/test.js +277 -0
  163. package/dist/src/vm/test.js.map +1 -0
  164. package/package.json +63 -4
  165. package/src/analysis/analyze.ts +1395 -0
  166. package/src/analysis/fs.ts +121 -0
  167. package/src/analysis/outputs.ts +242 -0
  168. package/src/analysis/value.ts +264 -0
  169. package/src/behaviors/defs/core.ts +970 -0
  170. package/src/behaviors/defs/devtools.ts +400 -0
  171. package/src/behaviors/defs/macos.ts +426 -0
  172. package/src/behaviors/defs/tools.ts +596 -0
  173. package/src/behaviors/dsl.ts +293 -0
  174. package/src/behaviors/index.ts +19 -0
  175. package/src/behaviors/registry.ts +261 -0
  176. package/src/behaviors/roles.ts +187 -0
  177. package/src/behaviors/types.ts +127 -0
  178. package/src/index.ts +27 -0
  179. package/src/integrations/deepsea.ts +259 -0
  180. package/src/machine.ts +483 -0
  181. package/src/parser/ast.ts +472 -0
  182. package/src/parser/parser.ts +1826 -0
  183. package/src/policy/effects.ts +102 -0
  184. package/src/policy/policy.ts +578 -0
  185. package/src/printer/doc.ts +454 -0
  186. package/src/printer/highlight.ts +283 -0
  187. package/src/printer/html.ts +441 -0
  188. package/src/printer/print.ts +528 -0
  189. package/src/printer/summary.ts +601 -0
  190. package/src/trace/events.ts +102 -0
  191. package/src/trace/progress.ts +119 -0
  192. package/src/vm/arith.ts +236 -0
  193. package/src/vm/builtins.ts +1590 -0
  194. package/src/vm/emulate.ts +337 -0
  195. package/src/vm/expand.ts +721 -0
  196. package/src/vm/external.ts +265 -0
  197. package/src/vm/fifo.ts +226 -0
  198. package/src/vm/interp.ts +1623 -0
  199. package/src/vm/io.ts +570 -0
  200. package/src/vm/pattern.ts +477 -0
  201. package/src/vm/proc.ts +147 -0
  202. package/src/vm/state.ts +267 -0
  203. package/src/vm/test.ts +253 -0
@@ -0,0 +1,277 @@
1
+ /**
2
+ * `[[ ... ]]` and `test` / `[` evaluation.
3
+ */
4
+ import * as fs from 'node:fs';
5
+ import * as path from 'node:path';
6
+ import { ArithError } from "./arith.js";
7
+ import { matchPattern } from "./pattern.js";
8
+ import { CommandError } from "./proc.js";
9
+ import { newVar, SET_O_NAMES } from "./state.js";
10
+ function statSafe(p, link = false) {
11
+ try {
12
+ return link ? fs.lstatSync(p) : fs.statSync(p);
13
+ }
14
+ catch {
15
+ return null;
16
+ }
17
+ }
18
+ function access(p, mode) {
19
+ try {
20
+ fs.accessSync(p, mode);
21
+ return true;
22
+ }
23
+ catch {
24
+ return false;
25
+ }
26
+ }
27
+ export function fileTest(op, operand, proc) {
28
+ const p = path.resolve(proc.state.cwd, operand);
29
+ switch (op) {
30
+ case '-e':
31
+ case '-a': return statSafe(p) !== null;
32
+ case '-f': return statSafe(p)?.isFile() ?? false;
33
+ case '-d': return statSafe(p)?.isDirectory() ?? false;
34
+ case '-h':
35
+ case '-L': return statSafe(p, true)?.isSymbolicLink() ?? false;
36
+ case '-s': return (statSafe(p)?.size ?? 0) > 0;
37
+ case '-r': return access(p, fs.constants.R_OK);
38
+ case '-w': return access(p, fs.constants.W_OK);
39
+ case '-x': return access(p, fs.constants.X_OK);
40
+ case '-p': return statSafe(p)?.isFIFO() ?? false;
41
+ case '-S': return statSafe(p)?.isSocket() ?? false;
42
+ case '-b': return statSafe(p)?.isBlockDevice() ?? false;
43
+ case '-c': return statSafe(p)?.isCharacterDevice() ?? false;
44
+ case '-g': return ((statSafe(p)?.mode ?? 0) & 0o2000) !== 0;
45
+ case '-u': return ((statSafe(p)?.mode ?? 0) & 0o4000) !== 0;
46
+ case '-k': return ((statSafe(p)?.mode ?? 0) & 0o1000) !== 0;
47
+ case '-O': return statSafe(p)?.uid === process.getuid?.();
48
+ case '-G': return statSafe(p)?.gid === process.getgid?.();
49
+ case '-N': {
50
+ const s = statSafe(p);
51
+ return s !== null && s.mtimeMs > s.atimeMs;
52
+ }
53
+ case '-t': return false;
54
+ default: throw new CommandError(`${op}: unary operator expected`, 2);
55
+ }
56
+ }
57
+ function unaryTest(op, operand, proc) {
58
+ switch (op) {
59
+ case '-n': return operand !== '';
60
+ case '-z': return operand === '';
61
+ case '-v': {
62
+ const m = /^([A-Za-z_][A-Za-z0-9_]*)(?:\[(.*)\])?$/.exec(operand);
63
+ if (!m)
64
+ return false;
65
+ const v = proc.state.lookup(m[1]);
66
+ if (!v || v.value === null)
67
+ return false;
68
+ if (m[2] === undefined)
69
+ return true;
70
+ if (v.value.kind === 'indexed')
71
+ return v.value.values.has(Number(m[2]));
72
+ if (v.value.kind === 'assoc')
73
+ return v.value.values.has(m[2]);
74
+ return m[2] === '0';
75
+ }
76
+ case '-o': {
77
+ const opt = SET_O_NAMES[operand];
78
+ return opt !== undefined && proc.state.options[opt];
79
+ }
80
+ case '-t': return false;
81
+ default: return fileTest(op, operand, proc);
82
+ }
83
+ }
84
+ function intOf(s) {
85
+ const t = s.trim();
86
+ if (!/^[+-]?\d+$/.test(t))
87
+ throw new CommandError(`${s}: integer expression expected`, 2);
88
+ return BigInt(t);
89
+ }
90
+ function binaryTest(op, a, b, proc) {
91
+ switch (op) {
92
+ case '=':
93
+ case '==': return a === b;
94
+ case '!=': return a !== b;
95
+ case '<': return a < b;
96
+ case '>': return a > b;
97
+ case '-eq': return intOf(a) === intOf(b);
98
+ case '-ne': return intOf(a) !== intOf(b);
99
+ case '-lt': return intOf(a) < intOf(b);
100
+ case '-le': return intOf(a) <= intOf(b);
101
+ case '-gt': return intOf(a) > intOf(b);
102
+ case '-ge': return intOf(a) >= intOf(b);
103
+ case '-nt':
104
+ case '-ot': {
105
+ const sa = statSafe(path.resolve(proc.state.cwd, a));
106
+ const sb = statSafe(path.resolve(proc.state.cwd, b));
107
+ if (op === '-nt')
108
+ return sa !== null && (sb === null || sa.mtimeMs > sb.mtimeMs);
109
+ return sb !== null && (sa === null || sa.mtimeMs < sb.mtimeMs);
110
+ }
111
+ case '-ef': {
112
+ const sa = statSafe(path.resolve(proc.state.cwd, a));
113
+ const sb = statSafe(path.resolve(proc.state.cwd, b));
114
+ return sa !== null && sb !== null && sa.dev === sb.dev && sa.ino === sb.ino;
115
+ }
116
+ default: throw new CommandError(`${op}: binary operator expected`, 2);
117
+ }
118
+ }
119
+ /** POSIX ERE → JS regex source (character classes, mostly). */
120
+ function ereToJs(re) {
121
+ return re.replace(/\[:(alpha|digit|alnum|upper|lower|space|blank|punct|xdigit|word|cntrl|print|graph):\]/g, (_, c) => ({
122
+ alpha: 'a-zA-Z', digit: '0-9', alnum: 'a-zA-Z0-9', upper: 'A-Z', lower: 'a-z', space: '\\s', blank: ' \\t',
123
+ punct: '!-\\/:-@\\[-`{-~', xdigit: '0-9a-fA-F', word: '\\w', cntrl: '\\x00-\\x1f', print: '\\x20-\\x7e', graph: '\\x21-\\x7e',
124
+ }[c]));
125
+ }
126
+ async function expandRegex(word, proc, interp) {
127
+ let out = '';
128
+ for (const part of word.parts) {
129
+ const w = { ...word, parts: [part] };
130
+ const s = await interp.expander.expandString(w, proc);
131
+ const quoted = part.type === 'SglQuoted' || part.type === 'DblQuoted' || part.type === 'Escaped';
132
+ out += quoted ? s.replace(/[\\^$.*+?()[\]{}|/]/g, (c) => '\\' + c) : s;
133
+ }
134
+ return out;
135
+ }
136
+ const ARITH_OPS = new Set(['-eq', '-ne', '-lt', '-le', '-gt', '-ge']);
137
+ export async function evalCond(e, proc, interp) {
138
+ switch (e.type) {
139
+ case 'CondGroup': return evalCond(e.expr, proc, interp);
140
+ case 'CondNot': return !(await evalCond(e.operand, proc, interp));
141
+ case 'CondAndOr': {
142
+ const l = await evalCond(e.left, proc, interp);
143
+ if (e.op === '&&')
144
+ return l && (await evalCond(e.right, proc, interp));
145
+ return l || (await evalCond(e.right, proc, interp));
146
+ }
147
+ case 'CondWord': return (await interp.expander.expandString(e.word, proc)) !== '';
148
+ case 'CondUnary': return unaryTest(e.op, await interp.expander.expandString(e.operand, proc), proc);
149
+ case 'CondBinary': {
150
+ const left = await interp.expander.expandString(e.left, proc);
151
+ if (e.op === '==' || e.op === '=' || e.op === '!=') {
152
+ const pat = await interp.expander.expandPattern(e.right, proc);
153
+ const m = matchPattern(left, pat, { nocase: proc.state.shopts.has('nocasematch') });
154
+ return e.op === '!=' ? !m : m;
155
+ }
156
+ if (e.op === '=~') {
157
+ const src = await expandRegex(e.right, proc, interp);
158
+ let re;
159
+ try {
160
+ re = new RegExp(ereToJs(src), proc.state.shopts.has('nocasematch') ? 'i' : '');
161
+ }
162
+ catch {
163
+ throw new CommandError(`invalid regular expression: ${src}`, 2);
164
+ }
165
+ const m = re.exec(left);
166
+ const values = new Map();
167
+ if (m)
168
+ m.forEach((g, i) => values.set(i, g ?? ''));
169
+ proc.state.globals.set('BASH_REMATCH', newVar({ kind: 'indexed', values }));
170
+ return m !== null;
171
+ }
172
+ const right = await interp.expander.expandString(e.right, proc);
173
+ if (ARITH_OPS.has(e.op)) {
174
+ try {
175
+ const a = await interp.arithText(left, proc);
176
+ const b = await interp.arithText(right, proc);
177
+ return binaryTest(e.op, String(a), String(b), proc);
178
+ }
179
+ catch (err) {
180
+ if (err instanceof ArithError)
181
+ throw new CommandError(err.message, 2);
182
+ throw err;
183
+ }
184
+ }
185
+ return binaryTest(e.op, left, right, proc);
186
+ }
187
+ }
188
+ }
189
+ const UNARY = new Set(['-a', '-b', '-c', '-d', '-e', '-f', '-g', '-h', '-k', '-p', '-r', '-s', '-t', '-u', '-w', '-x', '-G', '-L', '-N', '-O', '-S', '-z', '-n', '-o', '-v']);
190
+ const BINARY = new Set(['=', '==', '!=', '<', '>', '-eq', '-ne', '-lt', '-le', '-gt', '-ge', '-nt', '-ot', '-ef']);
191
+ /** `test` / `[`: returns 0 (true), 1 (false); throws CommandError(2) on syntax errors. */
192
+ export function evalTest(args, proc) {
193
+ const tooMany = () => {
194
+ throw new CommandError('too many arguments', 2);
195
+ };
196
+ const parseOr = (a) => {
197
+ // split on -o at top level (lowest precedence), respecting parens
198
+ let depth = 0;
199
+ for (let i = a.length - 1; i >= 0; i--) {
200
+ if (a[i] === ')')
201
+ depth++;
202
+ else if (a[i] === '(')
203
+ depth--;
204
+ else if (a[i] === '-o' && depth === 0 && i > 0 && i < a.length - 1)
205
+ return parseOr(a.slice(0, i)) || parseAnd(a.slice(i + 1));
206
+ }
207
+ return parseAnd(a);
208
+ };
209
+ const parseAnd = (a) => {
210
+ let depth = 0;
211
+ for (let i = a.length - 1; i >= 0; i--) {
212
+ if (a[i] === ')')
213
+ depth++;
214
+ else if (a[i] === '(')
215
+ depth--;
216
+ else if (a[i] === '-a' && depth === 0 && i > 0 && i < a.length - 1)
217
+ return parseAnd(a.slice(0, i)) && prim(a.slice(i + 1), true);
218
+ }
219
+ return prim(a, true);
220
+ };
221
+ const prim = (a, fromLogic = false) => {
222
+ switch (a.length) {
223
+ case 0: return false;
224
+ case 1: return a[0] !== '';
225
+ case 2:
226
+ if (a[0] === '!')
227
+ return !prim(a.slice(1));
228
+ if (UNARY.has(a[0]))
229
+ return unaryTest(a[0], a[1], proc);
230
+ throw new CommandError(`${a[0]}: unary operator expected`, 2);
231
+ case 3:
232
+ if (BINARY.has(a[1]))
233
+ return binaryTest(a[1], a[0], a[2], proc);
234
+ if (a[0] === '!')
235
+ return !prim(a.slice(1));
236
+ if (a[0] === '(' && a[2] === ')')
237
+ return prim([a[1]]);
238
+ if (a[1] === '-a' || a[1] === '-o')
239
+ return parseOr(a);
240
+ throw new CommandError(`${a[1]}: binary operator expected`, 2);
241
+ case 4:
242
+ if (a[0] === '!')
243
+ return !prim(a.slice(1));
244
+ if (a[0] === '(' && a[3] === ')')
245
+ return prim(a.slice(1, 3));
246
+ if (fromLogic || (!a.includes('-a') && !a.includes('-o')))
247
+ tooMany();
248
+ return parseOr(a);
249
+ default:
250
+ if (a[0] === '!' && !a.includes('-a') && !a.includes('-o'))
251
+ return !prim(a.slice(1));
252
+ if (a[0] === '(' && a[a.length - 1] === ')') {
253
+ // only if parens balance as a group
254
+ let depth = 0;
255
+ let wraps = true;
256
+ for (let i = 0; i < a.length - 1; i++) {
257
+ if (a[i] === '(')
258
+ depth++;
259
+ else if (a[i] === ')')
260
+ depth--;
261
+ if (depth === 0) {
262
+ wraps = false;
263
+ break;
264
+ }
265
+ }
266
+ if (wraps)
267
+ return prim(a.slice(1, -1));
268
+ }
269
+ if (fromLogic || (!a.includes('-a') && !a.includes('-o')))
270
+ tooMany();
271
+ return parseOr(a);
272
+ }
273
+ };
274
+ const hasLogic = args.length > 4 && (args.includes('-a') || args.includes('-o'));
275
+ return (hasLogic ? parseOr(args) : prim(args)) ? 0 : 1;
276
+ }
277
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/vm/test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,65 @@
1
1
  {
2
2
  "name": "@taliesinb/mash",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.0",
4
+ "description": "A bash virtual machine: span-preserving parser, static effect analysis, policy-checked streaming execution, behavior definitions for executables, and tracing hooks.",
5
+ "keywords": [
6
+ "bash",
7
+ "shell",
8
+ "interpreter",
9
+ "sandbox",
10
+ "static-analysis",
11
+ "agent",
12
+ "tracing"
13
+ ],
14
+ "homepage": "https://github.com/taliesinb/mash#readme",
15
+ "bugs": {
16
+ "url": "https://github.com/taliesinb/mash/issues"
17
+ },
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "git+https://github.com/taliesinb/mash.git"
21
+ },
22
+ "license": "MIT",
23
+ "author": "Taliesin Beynon",
24
+ "type": "module",
25
+ "exports": {
26
+ ".": {
27
+ "types": "./dist/src/index.d.ts",
28
+ "default": "./dist/src/index.js"
29
+ },
30
+ "./integrations/deepsea": {
31
+ "types": "./dist/src/integrations/deepsea.d.ts",
32
+ "default": "./dist/src/integrations/deepsea.js"
33
+ },
34
+ "./package.json": "./package.json"
35
+ },
36
+ "types": "./dist/src/index.d.ts",
37
+ "bin": {
38
+ "mash": "dist/bin/mash.js"
39
+ },
40
+ "files": [
41
+ "dist",
42
+ "src",
43
+ "bin",
44
+ "README.md",
45
+ "LICENSE"
46
+ ],
47
+ "engines": {
48
+ "node": ">=24"
49
+ },
50
+ "publishConfig": {
51
+ "access": "public"
52
+ },
53
+ "scripts": {
54
+ "test": "vitest run",
55
+ "typecheck": "tsc --noEmit -p .",
56
+ "build": "rm -rf dist && tsc -p tsconfig.build.json",
57
+ "prepublishOnly": "pnpm typecheck && pnpm test && pnpm build",
58
+ "mash": "node bin/mash.ts"
59
+ },
60
+ "devDependencies": {
61
+ "@types/node": "^24.19.2",
62
+ "typescript": "^6.0.3",
63
+ "vitest": "^4.1.12"
64
+ }
65
+ }