ezx 0.0.6 → 0.0.8
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 +112 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/preprocessor.d.ts +25 -0
- package/dist/preprocessor.d.ts.map +1 -1
- package/dist/preprocessor.js +150 -27
- package/dist/preprocessor.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -4,7 +4,36 @@ An enhanced version of zx with markdown preprocessing features to solve common a
|
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
|
-
### 1.
|
|
7
|
+
### 1. Markdown Parsing Fixes (Indentation Issues)
|
|
8
|
+
|
|
9
|
+
ezx fixes known markdown parsing issues in zx related to indentation:
|
|
10
|
+
|
|
11
|
+
- **Indented code blocks within lists** - Code blocks indented within list items (e.g., ` ```bash` after a bullet point) are now correctly recognized and executed
|
|
12
|
+
- **Indented prose** - List item continuations and other indented prose won't be misinterpreted as code
|
|
13
|
+
|
|
14
|
+
These issues are tracked in the zx project:
|
|
15
|
+
- [Issue #1388 - Indented code blocks in lists not executed](https://github.com/google/zx/issues/1388)
|
|
16
|
+
- [Issue #1389 - Indented prose after empty line causes parsing error](https://github.com/google/zx/issues/1389)
|
|
17
|
+
|
|
18
|
+
**Example that works in ezx but not in zx:**
|
|
19
|
+
|
|
20
|
+
```markdown
|
|
21
|
+
### deploy your contract
|
|
22
|
+
|
|
23
|
+
- on localhost
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
pnpm run contracts:deploy localhost
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
- on a network of your choice
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pnpm run contracts:deploy <network>
|
|
33
|
+
```
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 2. Directory Context Persistence
|
|
8
37
|
|
|
9
38
|
In standard zx, each bash code block runs in a fresh context, so `cd` commands don't persist across blocks. ezx solves this with a special comment syntax:
|
|
10
39
|
|
|
@@ -23,12 +52,14 @@ pwd
|
|
|
23
52
|
|
|
24
53
|
**Note:** The directory context also affects file extraction blocks. Files created after `# set the current directory` will have their paths relative to the original directory, but the command will prepend `cd` to create them in the correct location.
|
|
25
54
|
|
|
26
|
-
###
|
|
55
|
+
### 3. File Extraction
|
|
56
|
+
|
|
57
|
+
Extract code blocks to files using the `file:` directive in a preceding blockquote. The file path can optionally be wrapped in backticks.
|
|
27
58
|
|
|
28
|
-
|
|
59
|
+
> ⚠️ **Breaking Change**: The `file:` prefix is now **required**. The old syntax `> `filename`` without the prefix no longer works.
|
|
29
60
|
|
|
30
61
|
```markdown
|
|
31
|
-
> `package.json`
|
|
62
|
+
> file: `package.json`
|
|
32
63
|
|
|
33
64
|
```json
|
|
34
65
|
{
|
|
@@ -38,10 +69,10 @@ Extract code blocks to files using a preceding blockquote with the file path. Th
|
|
|
38
69
|
```
|
|
39
70
|
```
|
|
40
71
|
|
|
41
|
-
Or
|
|
72
|
+
Or without backticks:
|
|
42
73
|
|
|
43
74
|
```markdown
|
|
44
|
-
>
|
|
75
|
+
> file: package.json
|
|
45
76
|
|
|
46
77
|
```json
|
|
47
78
|
{
|
|
@@ -51,7 +82,7 @@ Or with an optional emoji:
|
|
|
51
82
|
```
|
|
52
83
|
|
|
53
84
|
**JSON:**
|
|
54
|
-
> `my-project/package.json`
|
|
85
|
+
> file: `my-project/package.json`
|
|
55
86
|
|
|
56
87
|
```json
|
|
57
88
|
{
|
|
@@ -61,21 +92,21 @@ Or with an optional emoji:
|
|
|
61
92
|
```
|
|
62
93
|
|
|
63
94
|
**TypeScript/JavaScript:**
|
|
64
|
-
> `my-project/index.ts`
|
|
95
|
+
> file: `my-project/index.ts`
|
|
65
96
|
|
|
66
97
|
```typescript
|
|
67
98
|
console.log("Hello world")
|
|
68
99
|
```
|
|
69
100
|
|
|
70
101
|
**Bash/Shell:**
|
|
71
|
-
> `my-project/.npmrc`
|
|
102
|
+
> file: `my-project/.npmrc`
|
|
72
103
|
|
|
73
104
|
```bash
|
|
74
105
|
shared-workspace-lockfile=false
|
|
75
106
|
```
|
|
76
107
|
|
|
77
108
|
**Markdown:**
|
|
78
|
-
> `my-project/README.md`
|
|
109
|
+
> file: `my-project/README.md`
|
|
79
110
|
|
|
80
111
|
```markdown
|
|
81
112
|
# My Project
|
|
@@ -110,6 +141,57 @@ EZXEOF
|
|
|
110
141
|
|
|
111
142
|
This means if a parent directory doesn't exist, the command will fail (as expected). You should create directories first using `mkdir -p` in a bash block.
|
|
112
143
|
|
|
144
|
+
### 4. Async Bash Execution
|
|
145
|
+
|
|
146
|
+
Run bash commands asynchronously using the `async:` directive. This is useful for starting background processes like development servers.
|
|
147
|
+
|
|
148
|
+
> 💡 zx doesn't support background bash tasks with `&`. The `async:` directive solves this by transforming the bash block to a JavaScript `$` template that runs without `await`.
|
|
149
|
+
|
|
150
|
+
```markdown
|
|
151
|
+
> async: `start dev server`
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
npm run dev
|
|
155
|
+
```
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
The text after `async:` is optional and serves as documentation only. Both formats work:
|
|
159
|
+
|
|
160
|
+
```markdown
|
|
161
|
+
> async: `start dev server`
|
|
162
|
+
> async: start dev server
|
|
163
|
+
> async:
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**Example:** Running a server in the background while continuing with other tasks:
|
|
167
|
+
|
|
168
|
+
```markdown
|
|
169
|
+
> async: `start server`
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
npm run dev
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
# This runs immediately, doesn't wait for the server
|
|
177
|
+
echo "Server starting in background..."
|
|
178
|
+
sleep 2
|
|
179
|
+
curl http://localhost:3000
|
|
180
|
+
```
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
**How it works:** The async directive transforms bash blocks into JavaScript blocks using zx's `$` template literal:
|
|
184
|
+
|
|
185
|
+
```javascript
|
|
186
|
+
// Input: async bash block with "npm run dev"
|
|
187
|
+
// Output: JavaScript block
|
|
188
|
+
$`npm run dev`
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
The command runs without `await`, so execution continues immediately. zx automatically awaits all pending promises at the end of the script.
|
|
192
|
+
|
|
193
|
+
**Important:** The `async:` directive only works with bash/sh/shell blocks. Using it with other languages will result in an error.
|
|
194
|
+
|
|
113
195
|
## Installation
|
|
114
196
|
|
|
115
197
|
```bash
|
|
@@ -185,7 +267,7 @@ const result = preprocessFile('./script.md', {
|
|
|
185
267
|
|
|
186
268
|
## Example
|
|
187
269
|
|
|
188
|
-
Here's a complete example showing
|
|
270
|
+
Here's a complete example showing all features:
|
|
189
271
|
|
|
190
272
|
```markdown
|
|
191
273
|
# Setup a new project
|
|
@@ -197,27 +279,39 @@ cd my-app
|
|
|
197
279
|
npm init -y
|
|
198
280
|
\`\`\`
|
|
199
281
|
|
|
200
|
-
> `my-app/package.json`
|
|
282
|
+
> file: `my-app/package.json`
|
|
201
283
|
|
|
202
284
|
\`\`\`json
|
|
203
285
|
{
|
|
204
286
|
"name": "my-app",
|
|
205
287
|
"version": "1.0.0",
|
|
206
288
|
"scripts": {
|
|
207
|
-
"start": "node index.js"
|
|
289
|
+
"start": "node index.js",
|
|
290
|
+
"dev": "node --watch index.js"
|
|
208
291
|
}
|
|
209
292
|
}
|
|
210
293
|
\`\`\`
|
|
211
294
|
|
|
212
|
-
> `my-app/index.
|
|
295
|
+
> file: `my-app/index.js`
|
|
213
296
|
|
|
214
|
-
\`\`\`
|
|
215
|
-
|
|
297
|
+
\`\`\`javascript
|
|
298
|
+
const http = require('http');
|
|
299
|
+
const server = http.createServer((req, res) => {
|
|
300
|
+
res.end('Hello from ezx!');
|
|
301
|
+
});
|
|
302
|
+
server.listen(3000, () => console.log('Server running on port 3000'));
|
|
216
303
|
\`\`\`
|
|
217
304
|
|
|
305
|
+
> async: `start dev server`
|
|
306
|
+
|
|
218
307
|
\`\`\`bash
|
|
219
|
-
npm
|
|
220
|
-
|
|
308
|
+
npm run dev
|
|
309
|
+
\`\`\`
|
|
310
|
+
|
|
311
|
+
\`\`\`bash
|
|
312
|
+
# This runs immediately while server starts in background
|
|
313
|
+
sleep 2
|
|
314
|
+
curl http://localhost:3000
|
|
221
315
|
\`\`\`
|
|
222
316
|
|
|
223
317
|
\`\`\`bash
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,kBAAkB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAwDD;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,kBAAkB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAwDD;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuE5G;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvG;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjH;AAGD,cAAc,IAAI,CAAC;AAGnB,cAAc,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import { transformMarkdown } from 'zx/cli';
|
|
|
2
2
|
import { $, fs, path } from 'zx';
|
|
3
3
|
import { randomBytes } from 'node:crypto';
|
|
4
4
|
import { pathToFileURL } from 'node:url';
|
|
5
|
-
import { preprocessMarkdown } from './preprocessor.js';
|
|
5
|
+
import { preprocessMarkdown, sanitizeMarkdownForZx } from './preprocessor.js';
|
|
6
6
|
// Import zx globals to make $, path, fs, etc. available globally
|
|
7
7
|
await import('zx/globals');
|
|
8
8
|
/**
|
|
@@ -101,8 +101,11 @@ export async function runMarkdown(markdown, options = {}) {
|
|
|
101
101
|
const { preprocessedMarkdown } = preprocessMarkdown(markdownContent, {
|
|
102
102
|
cwd: options.cwd || process.cwd(),
|
|
103
103
|
});
|
|
104
|
+
// Sanitize markdown to prevent zx from misinterpreting indented prose as code
|
|
105
|
+
// This handles edge cases like indented code blocks within list items
|
|
106
|
+
const sanitizedMarkdown = sanitizeMarkdownForZx(preprocessedMarkdown);
|
|
104
107
|
// Transform markdown to JavaScript
|
|
105
|
-
let jsCode = transformMarkdown(
|
|
108
|
+
let jsCode = transformMarkdown(sanitizedMarkdown);
|
|
106
109
|
// Resolve the absolute path to zx/globals using Node's module resolution
|
|
107
110
|
// This will work regardless of where ezx is installed (local, global, or as a dependency)
|
|
108
111
|
const zxGlobalsPath = await import.meta.resolve('zx/globals');
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAC,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,EAAgB,aAAa,EAAC,MAAM,UAAU,CAAC;AACtD,OAAO,EAAC,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/preprocessor.d.ts
CHANGED
|
@@ -1,9 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Directive types supported in blockquotes
|
|
3
|
+
*/
|
|
4
|
+
export type DirectiveType = 'file' | 'async';
|
|
5
|
+
/**
|
|
6
|
+
* Parsed directive from a blockquote line
|
|
7
|
+
*/
|
|
8
|
+
export interface Directive {
|
|
9
|
+
type: DirectiveType;
|
|
10
|
+
value: string;
|
|
11
|
+
}
|
|
1
12
|
export interface CodeBlock {
|
|
2
13
|
language: string;
|
|
3
14
|
content: string;
|
|
4
15
|
startLine: number;
|
|
5
16
|
endLine: number;
|
|
6
17
|
filePath?: string;
|
|
18
|
+
isAsync?: boolean;
|
|
19
|
+
asyncDescription?: string;
|
|
7
20
|
precedingBlockquoteLine?: number;
|
|
8
21
|
}
|
|
9
22
|
export interface FileExtraction {
|
|
@@ -15,6 +28,18 @@ export interface PreprocessResult {
|
|
|
15
28
|
preprocessedMarkdown: string;
|
|
16
29
|
extractedFiles: FileExtraction[];
|
|
17
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Sanitize markdown to prevent zx's parser from misinterpreting
|
|
33
|
+
* indented prose as code blocks.
|
|
34
|
+
*
|
|
35
|
+
* zx treats lines starting with 2+ spaces after an empty line as code.
|
|
36
|
+
* We use marked to identify actual code blocks and rebuild the markdown
|
|
37
|
+
* with only headings and code blocks (stripping all prose).
|
|
38
|
+
*
|
|
39
|
+
* This also handles the edge case of indented code blocks within list items
|
|
40
|
+
* (e.g., " ```bash" within a list), which zx's regex parser cannot handle.
|
|
41
|
+
*/
|
|
42
|
+
export declare function sanitizeMarkdownForZx(markdown: string): string;
|
|
18
43
|
/**
|
|
19
44
|
* Preprocess markdown file
|
|
20
45
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preprocessor.d.ts","sourceRoot":"","sources":["../src/preprocessor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"preprocessor.d.ts","sourceRoot":"","sources":["../src/preprocessor.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uBAAuB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAChC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,cAAc,EAAE,CAAC;CACjC;AAqBD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAkC9D;AAiJD;;GAEG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAM,GAC1B,gBAAgB,CAoNlB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAM,GAC1B,gBAAgB,CAGlB"}
|
package/dist/preprocessor.js
CHANGED
|
@@ -1,26 +1,96 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { Lexer } from 'marked';
|
|
2
3
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
4
|
+
* Sanitize markdown to prevent zx's parser from misinterpreting
|
|
5
|
+
* indented prose as code blocks.
|
|
6
|
+
*
|
|
7
|
+
* zx treats lines starting with 2+ spaces after an empty line as code.
|
|
8
|
+
* We use marked to identify actual code blocks and rebuild the markdown
|
|
9
|
+
* with only headings and code blocks (stripping all prose).
|
|
10
|
+
*
|
|
11
|
+
* This also handles the edge case of indented code blocks within list items
|
|
12
|
+
* (e.g., " ```bash" within a list), which zx's regex parser cannot handle.
|
|
5
13
|
*/
|
|
6
|
-
function
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
//
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
14
|
+
export function sanitizeMarkdownForZx(markdown) {
|
|
15
|
+
const tokens = Lexer.lex(markdown);
|
|
16
|
+
const output = [];
|
|
17
|
+
// Recursively process tokens to extract code blocks and headings
|
|
18
|
+
function processTokens(tokenArray, depth = 0) {
|
|
19
|
+
for (const token of tokenArray) {
|
|
20
|
+
if (token.type === 'code') {
|
|
21
|
+
// Keep fenced code blocks - marked handles indentation correctly
|
|
22
|
+
const fence = '```';
|
|
23
|
+
output.push(`${fence}${token.lang || ''}`);
|
|
24
|
+
output.push(token.text);
|
|
25
|
+
output.push(fence);
|
|
26
|
+
output.push(''); // Empty line after for readability
|
|
27
|
+
}
|
|
28
|
+
else if (token.type === 'heading') {
|
|
29
|
+
// Keep headings (useful for section extraction in ezx)
|
|
30
|
+
output.push(`${'#'.repeat(token.depth)} ${token.text}`);
|
|
31
|
+
output.push('');
|
|
32
|
+
}
|
|
33
|
+
else if (token.type === 'list' && token.items) {
|
|
34
|
+
// Process list items to find nested code blocks
|
|
35
|
+
for (const item of token.items) {
|
|
36
|
+
if (item.tokens) {
|
|
37
|
+
processTokens(item.tokens, depth + 1);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Other content (paragraphs, lists, blockquotes, etc.) is dropped
|
|
42
|
+
// since it's not executable and could confuse zx's parser
|
|
43
|
+
}
|
|
13
44
|
}
|
|
14
|
-
|
|
15
|
-
|
|
45
|
+
processTokens(tokens);
|
|
46
|
+
return output.join('\n');
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Check if a language is a bash/shell language
|
|
50
|
+
*/
|
|
51
|
+
function isBashLanguage(language) {
|
|
52
|
+
const lang = language.toLowerCase();
|
|
53
|
+
return lang === 'bash' || lang === 'sh' || lang === 'shell';
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Extract directive from a blockquote line
|
|
57
|
+
*
|
|
58
|
+
* Supports:
|
|
59
|
+
* - file: directive: > file: `path/to/file.json` or > file: path/to/file.json
|
|
60
|
+
* - async: directive: > async: `description` or > async: description or > async:
|
|
61
|
+
*
|
|
62
|
+
* Note: The old syntax `> `filename`` without a directive prefix is NO LONGER supported.
|
|
63
|
+
* This is a breaking change - use `> file: `filename`` instead.
|
|
64
|
+
*/
|
|
65
|
+
function extractDirectiveFromBlockquote(line) {
|
|
66
|
+
const trimmed = line.trim();
|
|
67
|
+
// Match file: directive with optional backticks
|
|
68
|
+
// e.g., > file: `package.json` or > file: package.json
|
|
69
|
+
const fileMatch = trimmed.match(/^>\s*file:\s*(?:`([^`]+)`|(\S.*?))\s*$/i);
|
|
16
70
|
if (fileMatch) {
|
|
17
|
-
|
|
71
|
+
const value = (fileMatch[1] || fileMatch[2] || '').trim();
|
|
72
|
+
if (!value) {
|
|
73
|
+
return null; // file: requires a path
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
type: 'file',
|
|
77
|
+
value,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
// Match async: directive with optional backticks
|
|
81
|
+
// e.g., > async: `start server` or > async: start server or > async:
|
|
82
|
+
const asyncMatch = trimmed.match(/^>\s*async:\s*(?:`([^`]*)`|(.*))?\s*$/i);
|
|
83
|
+
if (asyncMatch) {
|
|
84
|
+
return {
|
|
85
|
+
type: 'async',
|
|
86
|
+
value: (asyncMatch[1] || asyncMatch[2] || '').trim(),
|
|
87
|
+
};
|
|
18
88
|
}
|
|
19
89
|
return null;
|
|
20
90
|
}
|
|
21
91
|
/**
|
|
22
92
|
* Parse markdown and extract all code blocks with their line numbers
|
|
23
|
-
* Also extracts file
|
|
93
|
+
* Also extracts directives (file: or async:) from preceding blockquote if present
|
|
24
94
|
*/
|
|
25
95
|
function parseCodeBlocks(markdown) {
|
|
26
96
|
const codeBlocks = [];
|
|
@@ -29,17 +99,30 @@ function parseCodeBlocks(markdown) {
|
|
|
29
99
|
let currentBlock = {};
|
|
30
100
|
let blockStartLine = 0;
|
|
31
101
|
let precedingBlockquoteLine;
|
|
32
|
-
let
|
|
102
|
+
let pendingDirective;
|
|
33
103
|
for (let i = 0; i < lines.length; i++) {
|
|
34
104
|
const line = lines[i];
|
|
35
105
|
// Check for code block start
|
|
36
106
|
if (line.match(/^```/)) {
|
|
37
107
|
if (!inCodeBlock) {
|
|
38
|
-
// Starting a new code block
|
|
108
|
+
// Starting a new code block
|
|
39
109
|
const languageMatch = line.match(/^```(\w*)/);
|
|
110
|
+
const language = languageMatch?.[1] || '';
|
|
111
|
+
// Validate async directive is only used with bash blocks
|
|
112
|
+
if (pendingDirective?.type === 'async' && !isBashLanguage(language)) {
|
|
113
|
+
throw new Error(`[ezx] async: directive error at line ${(precedingBlockquoteLine ?? 0) + 1}\n` +
|
|
114
|
+
`The async: directive can only be used with bash, sh, or shell code blocks.\n` +
|
|
115
|
+
`Found: \`\`\`${language || '(no language specified)'}\n` +
|
|
116
|
+
`\n` +
|
|
117
|
+
`To fix this, either:\n` +
|
|
118
|
+
`1. Change the code block language to bash, sh, or shell\n` +
|
|
119
|
+
`2. Remove the async: directive from the preceding blockquote`);
|
|
120
|
+
}
|
|
40
121
|
currentBlock = {
|
|
41
|
-
language
|
|
42
|
-
filePath:
|
|
122
|
+
language,
|
|
123
|
+
filePath: pendingDirective?.type === 'file' ? pendingDirective.value : undefined,
|
|
124
|
+
isAsync: pendingDirective?.type === 'async',
|
|
125
|
+
asyncDescription: pendingDirective?.type === 'async' ? pendingDirective.value : undefined,
|
|
43
126
|
precedingBlockquoteLine: precedingBlockquoteLine,
|
|
44
127
|
content: '',
|
|
45
128
|
startLine: i,
|
|
@@ -47,7 +130,7 @@ function parseCodeBlocks(markdown) {
|
|
|
47
130
|
inCodeBlock = true;
|
|
48
131
|
blockStartLine = i;
|
|
49
132
|
precedingBlockquoteLine = undefined;
|
|
50
|
-
|
|
133
|
+
pendingDirective = undefined; // Reset for next block
|
|
51
134
|
}
|
|
52
135
|
else {
|
|
53
136
|
// Ending the current code block
|
|
@@ -60,6 +143,8 @@ function parseCodeBlocks(markdown) {
|
|
|
60
143
|
startLine: currentBlock.startLine,
|
|
61
144
|
endLine: i,
|
|
62
145
|
filePath: currentBlock.filePath,
|
|
146
|
+
isAsync: currentBlock.isAsync,
|
|
147
|
+
asyncDescription: currentBlock.asyncDescription,
|
|
63
148
|
precedingBlockquoteLine: currentBlock.precedingBlockquoteLine,
|
|
64
149
|
});
|
|
65
150
|
}
|
|
@@ -68,11 +153,11 @@ function parseCodeBlocks(markdown) {
|
|
|
68
153
|
}
|
|
69
154
|
}
|
|
70
155
|
else if (!inCodeBlock) {
|
|
71
|
-
// Look for blockquote with
|
|
72
|
-
const
|
|
73
|
-
if (
|
|
156
|
+
// Look for blockquote with directive (only outside code blocks)
|
|
157
|
+
const directive = extractDirectiveFromBlockquote(line);
|
|
158
|
+
if (directive) {
|
|
74
159
|
precedingBlockquoteLine = i;
|
|
75
|
-
|
|
160
|
+
pendingDirective = directive;
|
|
76
161
|
}
|
|
77
162
|
}
|
|
78
163
|
else if (inCodeBlock && currentBlock.content !== undefined) {
|
|
@@ -103,11 +188,23 @@ export function preprocessMarkdown(input, options = {}) {
|
|
|
103
188
|
const blocksToTransform = new Map();
|
|
104
189
|
// Map of block indices to transform to heredoc
|
|
105
190
|
const blocksToHeredoc = new Map();
|
|
191
|
+
// Map of block indices to transform to async JS
|
|
192
|
+
const blocksToAsync = new Map();
|
|
106
193
|
// Process each code block
|
|
107
194
|
for (let i = 0; i < codeBlocks.length; i++) {
|
|
108
195
|
const block = codeBlocks[i];
|
|
109
|
-
const isBash = block.language
|
|
110
|
-
// Check if this is
|
|
196
|
+
const isBash = isBashLanguage(block.language);
|
|
197
|
+
// Check if this is an async block
|
|
198
|
+
if (block.isAsync) {
|
|
199
|
+
// Transform to async JS block
|
|
200
|
+
blocksToAsync.set(i, {
|
|
201
|
+
content: block.content.trim(),
|
|
202
|
+
directoryPrefix: currentDirectory || undefined,
|
|
203
|
+
description: block.asyncDescription,
|
|
204
|
+
});
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
// Check if this is a file extraction block (file path from file: directive)
|
|
111
208
|
if (block.filePath) {
|
|
112
209
|
// This is a file extraction block - transform to heredoc
|
|
113
210
|
const fileContent = block.content.trim();
|
|
@@ -171,16 +268,16 @@ export function preprocessMarkdown(input, options = {}) {
|
|
|
171
268
|
}
|
|
172
269
|
// Build preprocessed markdown
|
|
173
270
|
const preprocessedLines = [];
|
|
174
|
-
// Track lines to skip (blockquote lines that contained
|
|
271
|
+
// Track lines to skip (blockquote lines that contained directives)
|
|
175
272
|
const linesToSkip = new Set();
|
|
176
273
|
for (const block of codeBlocks) {
|
|
177
|
-
if (block.precedingBlockquoteLine !== undefined && block.filePath) {
|
|
274
|
+
if (block.precedingBlockquoteLine !== undefined && (block.filePath || block.isAsync)) {
|
|
178
275
|
linesToSkip.add(block.precedingBlockquoteLine);
|
|
179
276
|
}
|
|
180
277
|
}
|
|
181
278
|
for (let i = 0; i < lines.length; i++) {
|
|
182
279
|
const line = lines[i];
|
|
183
|
-
// Skip blockquote lines that contained
|
|
280
|
+
// Skip blockquote lines that contained directives (they were consumed)
|
|
184
281
|
if (linesToSkip.has(i)) {
|
|
185
282
|
continue;
|
|
186
283
|
}
|
|
@@ -189,6 +286,32 @@ export function preprocessMarkdown(input, options = {}) {
|
|
|
189
286
|
const blockIndex = codeBlocks.findIndex((b) => b.startLine === i);
|
|
190
287
|
if (blockIndex !== -1) {
|
|
191
288
|
const block = codeBlocks[blockIndex];
|
|
289
|
+
// Check if this block should be transformed to async JS
|
|
290
|
+
if (blocksToAsync.has(blockIndex)) {
|
|
291
|
+
const asyncBlock = blocksToAsync.get(blockIndex);
|
|
292
|
+
// Transform to JS block with $ template literal
|
|
293
|
+
preprocessedLines.push('```js');
|
|
294
|
+
// Join multiple lines with ; to execute as a single command chain
|
|
295
|
+
// Filter out empty lines and comments that start with #
|
|
296
|
+
const commandLines = asyncBlock.content
|
|
297
|
+
.split('\n')
|
|
298
|
+
.map(line => line.trim())
|
|
299
|
+
.filter(line => line && !line.startsWith('#'));
|
|
300
|
+
let command = commandLines.join('; ');
|
|
301
|
+
// Add cd prefix if we have a directory context
|
|
302
|
+
if (asyncBlock.directoryPrefix) {
|
|
303
|
+
command = `cd ${asyncBlock.directoryPrefix} && ${command}`;
|
|
304
|
+
}
|
|
305
|
+
// Escape backticks in the command for the template literal
|
|
306
|
+
const escapedCommand = command.replace(/`/g, '\\`');
|
|
307
|
+
// Output the $ template literal (fire-and-forget, no await)
|
|
308
|
+
// zx will await all pending promises at the end
|
|
309
|
+
preprocessedLines.push(`$\`${escapedCommand}\``);
|
|
310
|
+
preprocessedLines.push('```');
|
|
311
|
+
// Skip to the closing ```
|
|
312
|
+
i = block.endLine;
|
|
313
|
+
continue;
|
|
314
|
+
}
|
|
192
315
|
// Check if this block should be transformed to heredoc
|
|
193
316
|
if (blocksToHeredoc.has(blockIndex)) {
|
|
194
317
|
const heredoc = blocksToHeredoc.get(blockIndex);
|
package/dist/preprocessor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preprocessor.js","sourceRoot":"","sources":["../src/preprocessor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"preprocessor.js","sourceRoot":"","sources":["../src/preprocessor.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ezx",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "Enhanced zx - Write better shell scripts with markdown preprocessing features including directory context persistence and
|
|
3
|
+
"version": "0.0.8",
|
|
4
|
+
"description": "Enhanced zx - Write better shell scripts with markdown preprocessing features including directory context persistence, file extraction, and fixes for zx's indentation parsing issues",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"zx",
|
|
7
7
|
"shell",
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
],
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"commander": "^14.0.2",
|
|
55
|
+
"marked": "^17.0.1",
|
|
55
56
|
"zx": "^8.8.5"
|
|
56
57
|
},
|
|
57
58
|
"devDependencies": {
|