@capsule-run/sdk 0.3.2 → 0.4.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 +53 -3
- package/dist/files.js +1 -1
- package/dist/files.js.map +1 -1
- package/dist/hostApi.js +1 -1
- package/dist/hostApi.js.map +1 -1
- package/dist/task.js +2 -2
- package/dist/task.js.map +1 -1
- package/package.json +1 -1
- package/src/files.ts +1 -1
- package/src/hostApi.ts +1 -1
- package/src/task.ts +2 -2
package/README.md
CHANGED
|
@@ -42,6 +42,9 @@ Run it:
|
|
|
42
42
|
capsule run hello.ts
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
+
> [!TIP]
|
|
46
|
+
> Use `--verbose` to display real-time task execution details.
|
|
47
|
+
|
|
45
48
|
## How It Works
|
|
46
49
|
|
|
47
50
|
Simply use a wrapper function to define your tasks:
|
|
@@ -60,7 +63,6 @@ export const analyzeData = task({
|
|
|
60
63
|
return { processed: dataset.length, status: "complete" };
|
|
61
64
|
});
|
|
62
65
|
|
|
63
|
-
// The "main" task is required as the entrypoint
|
|
64
66
|
export const main = task({
|
|
65
67
|
name: "main",
|
|
66
68
|
compute: "HIGH"
|
|
@@ -69,8 +71,38 @@ export const main = task({
|
|
|
69
71
|
});
|
|
70
72
|
```
|
|
71
73
|
|
|
74
|
+
> [!NOTE]
|
|
75
|
+
> The runtime requires a task named `"main"` as the entry point.
|
|
76
|
+
|
|
72
77
|
When you run `capsule run main.ts`, your code is compiled into a WebAssembly module and executed in a dedicated sandbox.
|
|
73
78
|
|
|
79
|
+
### Response Format
|
|
80
|
+
|
|
81
|
+
Every task returns a structured JSON envelope containing both the result and execution metadata:
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"success": true,
|
|
85
|
+
"result": { "processed": 5, "status": "complete" },
|
|
86
|
+
"error": null,
|
|
87
|
+
"execution": {
|
|
88
|
+
"task_name": "data_processor",
|
|
89
|
+
"duration_ms": 1523,
|
|
90
|
+
"retries": 0,
|
|
91
|
+
"fuel_consumed": 45000
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Response fields:**
|
|
97
|
+
- `success` — Boolean indicating whether the task completed successfully
|
|
98
|
+
- `result` — The actual return value from your task (json, string, null on failure etc..)
|
|
99
|
+
- `error` — Error details if the task failed (`{ error_type: string, message: string }`)
|
|
100
|
+
- `execution` — Performance metrics:
|
|
101
|
+
- `task_name` — Name of the executed task
|
|
102
|
+
- `duration_ms` — Execution time in milliseconds
|
|
103
|
+
- `retries` — Number of retry attempts that occurred
|
|
104
|
+
- `fuel_consumed` — CPU resources used (see [Compute Levels](#compute-levels))
|
|
105
|
+
|
|
74
106
|
## Documentation
|
|
75
107
|
|
|
76
108
|
### Task Configuration Options
|
|
@@ -91,9 +123,27 @@ When you run `capsule run main.ts`, your code is compiled into a WebAssembly mod
|
|
|
91
123
|
- **HIGH**: Maximum fuel for compute-intensive operations
|
|
92
124
|
- **CUSTOM**: Specify exact fuel value (e.g., `compute="1000000"`)
|
|
93
125
|
|
|
126
|
+
### Project Configuration (Optional)
|
|
127
|
+
|
|
128
|
+
Create a `capsule.toml` file in your project root to set default options:
|
|
129
|
+
|
|
130
|
+
```toml
|
|
131
|
+
[workflow]
|
|
132
|
+
name = "My AI Workflow"
|
|
133
|
+
version = "1.0.0"
|
|
134
|
+
entrypoint = "src/main.ts" # Run `capsule run` without specifying a file
|
|
135
|
+
|
|
136
|
+
[tasks]
|
|
137
|
+
default_compute = "MEDIUM"
|
|
138
|
+
default_ram = "256MB"
|
|
139
|
+
default_timeout = "30s"
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Task-level options always override these defaults.
|
|
143
|
+
|
|
94
144
|
### File Access
|
|
95
145
|
|
|
96
|
-
|
|
146
|
+
Tasks can read and write files within directories specified in `allowedFiles`. Any attempt to access files outside these directories is not possible.
|
|
97
147
|
|
|
98
148
|
Node.js built-ins like `fs` are not available in the WebAssembly sandbox. Instead, use the `files` API provided by the SDK:
|
|
99
149
|
|
|
@@ -108,7 +158,7 @@ export const restrictedWriter = task({
|
|
|
108
158
|
});
|
|
109
159
|
|
|
110
160
|
export const main = task({ name: "main" }, async () => {
|
|
111
|
-
restrictedWriter();
|
|
161
|
+
await restrictedWriter();
|
|
112
162
|
return await files.readText("./data/input.txt");
|
|
113
163
|
});
|
|
114
164
|
```
|
package/dist/files.js
CHANGED
|
@@ -141,7 +141,7 @@ export async function list(path = ".") {
|
|
|
141
141
|
const stream = targetDir.readDirectory();
|
|
142
142
|
const entries = [];
|
|
143
143
|
let entry;
|
|
144
|
-
while ((entry = stream.readDirectoryEntry())
|
|
144
|
+
while ((entry = stream.readDirectoryEntry()) && entry) {
|
|
145
145
|
if (entry.name) {
|
|
146
146
|
entries.push(entry.name);
|
|
147
147
|
}
|
package/dist/files.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"AAAA;;GAEG;AAyBH,SAAS,aAAa;IACpB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,UAAU,CAAC,uBAAuB,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,UAAU,CAAC,0BAA0B,CAAC,CAAC;QACxD,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;YACtB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IAEnB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAA2B,EAAE,EAAE,CAAC,CAAC;YACxD,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;YACpB,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;SACpB,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;IACpC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAE3C,KAAK,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,QAAQ,EAAE,CAAC;QACjD,MAAM,eAAe,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QAEjD,IAAI,eAAe,KAAK,GAAG,IAAI,eAAe,KAAK,EAAE,EAAE,CAAC;YACtD,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;QAC3D,CAAC;QAED,IAAI,cAAc,CAAC,UAAU,CAAC,eAAe,GAAG,GAAG,CAAC,EAAE,CAAC;YACrD,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACtE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;QAC3C,CAAC;QAED,IAAI,cAAc,KAAK,eAAe,EAAE,CAAC;YACvC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;AACvE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,MAAM,eAAe,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAEvC,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QAC7F,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,OAAe;IAC3D,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,IAAgB;IAC7D,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACnD,MAAM,eAAe,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAExC,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QAC7F,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAe,GAAG;IAC3C,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC;QACH,IAAI,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC;QAC7B,IAAI,QAAQ,CAAC,YAAY,KAAK,GAAG,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;YAC3C,MAAM,SAAS,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YACtC,MAAM,eAAe,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACvC,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QAChG,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;QACzC,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;YACtD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAY;IACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,MAAM,eAAe,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACvC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
package/dist/hostApi.js
CHANGED
|
@@ -42,7 +42,7 @@ export function isWasmMode() {
|
|
|
42
42
|
* This is the bridge between JavaScript code and the Rust host runtime.
|
|
43
43
|
*/
|
|
44
44
|
export function callHost(name, args, config) {
|
|
45
|
-
if (checkWasm() && hostModule
|
|
45
|
+
if (checkWasm() && hostModule) {
|
|
46
46
|
try {
|
|
47
47
|
const result = hostModule.scheduleTask(name, JSON.stringify(args), JSON.stringify(config));
|
|
48
48
|
return result;
|
package/dist/hostApi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hostApi.js","sourceRoot":"","sources":["../src/hostApi.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,IAAI,UAAU,GAAQ,IAAI,CAAC;AAC3B,IAAI,aAAa,GAAG,KAAK,CAAC;AAC1B,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB;;GAEG;AACH,SAAS,SAAS;IAChB,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,UAAU,GAAI,UAAkB,CAAC,kBAAkB,CAAC,CAAC;YAE3D,IAAI,OAAO,UAAU,KAAK,WAAW,IAAI,OAAO,UAAU,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;gBACvF,UAAU,GAAG,UAAU,CAAC;gBACxB,MAAM,GAAG,IAAI,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,KAAK,CAAC;YACjB,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,KAAK,CAAC;QACjB,CAAC;QACD,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,SAAS,EAAE,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CACtB,IAAY,EACZ,IAAW,EACX,MAA2B;IAE3B,IAAI,SAAS,EAAE,IAAI,UAAU,
|
|
1
|
+
{"version":3,"file":"hostApi.js","sourceRoot":"","sources":["../src/hostApi.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,IAAI,UAAU,GAAQ,IAAI,CAAC;AAC3B,IAAI,aAAa,GAAG,KAAK,CAAC;AAC1B,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB;;GAEG;AACH,SAAS,SAAS;IAChB,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,UAAU,GAAI,UAAkB,CAAC,kBAAkB,CAAC,CAAC;YAE3D,IAAI,OAAO,UAAU,KAAK,WAAW,IAAI,OAAO,UAAU,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;gBACvF,UAAU,GAAG,UAAU,CAAC;gBACxB,MAAM,GAAG,IAAI,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,KAAK,CAAC;YACjB,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,KAAK,CAAC;QACjB,CAAC;QACD,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,SAAS,EAAE,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CACtB,IAAY,EACZ,IAAW,EACX,MAA2B;IAE3B,IAAI,SAAS,EAAE,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CACpC,IAAI,EACJ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EACpB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CACvB,CAAC;YACF,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,qBAAqB,KAAK,EAAE,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,mBAAmB,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC"}
|
package/dist/task.js
CHANGED
|
@@ -43,7 +43,7 @@ import { isWasmMode, callHost } from "./hostApi.js";
|
|
|
43
43
|
* @returns String format for host API, or undefined
|
|
44
44
|
*/
|
|
45
45
|
function normalizeTimeout(timeout) {
|
|
46
|
-
if (timeout
|
|
46
|
+
if (!timeout)
|
|
47
47
|
return undefined;
|
|
48
48
|
if (typeof timeout === "number") {
|
|
49
49
|
return `${timeout}ms`;
|
|
@@ -71,7 +71,7 @@ export function task(options, fn) {
|
|
|
71
71
|
if (result.error) {
|
|
72
72
|
throw new Error(`Task ${taskName} failed: ${result.error}`);
|
|
73
73
|
}
|
|
74
|
-
return result
|
|
74
|
+
return result;
|
|
75
75
|
}
|
|
76
76
|
catch (e) {
|
|
77
77
|
if (e instanceof SyntaxError) {
|
package/dist/task.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.js","sourceRoot":"","sources":["../src/task.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAmB,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AA0BpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,OAAyB;IACjD,IAAI,OAAO
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../src/task.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAmB,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AA0BpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,OAAyB;IACjD,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,GAAG,OAAO,IAAI,CAAC;IACxB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,IAAI,CAClB,OAAoB,EACpB,EAA+B;IAE/B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9B,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,IAAI,QAAQ,CAAC;IAEpE,MAAM,UAAU,GAAe;QAC7B,IAAI,EAAE,QAAQ;QACd,OAAO;QACP,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC;QAC1C,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,GAAG,IAAW,EAAW,EAAE;QAC1C,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YAClB,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACrB,CAAC;QAED,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QAExD,IAAI,CAAC;YACH,MAAM,MAAM,GAAe,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAClD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,YAAY,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,MAAiB,CAAC;QAC3B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,WAAW,EAAE,CAAC;gBAC7B,OAAO,UAAgC,CAAC;YAC1C,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC;IAEF,YAAY,CAAC,QAAQ,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;IAEvC,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/package.json
CHANGED
package/src/files.ts
CHANGED
|
@@ -181,7 +181,7 @@ export async function list(path: string = "."): Promise<string[]> {
|
|
|
181
181
|
const entries: string[] = [];
|
|
182
182
|
|
|
183
183
|
let entry;
|
|
184
|
-
while ((entry = stream.readDirectoryEntry())
|
|
184
|
+
while ((entry = stream.readDirectoryEntry()) && entry) {
|
|
185
185
|
if (entry.name) {
|
|
186
186
|
entries.push(entry.name);
|
|
187
187
|
}
|
package/src/hostApi.ts
CHANGED
package/src/task.ts
CHANGED
|
@@ -70,7 +70,7 @@ interface TaskResult {
|
|
|
70
70
|
* @returns String format for host API, or undefined
|
|
71
71
|
*/
|
|
72
72
|
function normalizeTimeout(timeout?: string | number): string | undefined {
|
|
73
|
-
if (timeout
|
|
73
|
+
if (!timeout) return undefined;
|
|
74
74
|
if (typeof timeout === "number") {
|
|
75
75
|
return `${timeout}ms`;
|
|
76
76
|
}
|
|
@@ -105,7 +105,7 @@ export function task<TArgs extends any[], TReturn>(
|
|
|
105
105
|
if (result.error) {
|
|
106
106
|
throw new Error(`Task ${taskName} failed: ${result.error}`);
|
|
107
107
|
}
|
|
108
|
-
return result
|
|
108
|
+
return result as TReturn;
|
|
109
109
|
} catch (e) {
|
|
110
110
|
if (e instanceof SyntaxError) {
|
|
111
111
|
return resultJson as unknown as TReturn;
|