@capsule-run/sdk 0.4.2 → 0.5.1

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 (66) hide show
  1. package/README.md +13 -24
  2. package/dist/index.d.ts +4 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +4 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/polyfills/buffer.d.ts +8 -0
  7. package/dist/polyfills/buffer.d.ts.map +1 -0
  8. package/dist/polyfills/buffer.js +9 -0
  9. package/dist/polyfills/buffer.js.map +1 -0
  10. package/dist/polyfills/events.d.ts +8 -0
  11. package/dist/polyfills/events.d.ts.map +1 -0
  12. package/dist/polyfills/events.js +9 -0
  13. package/dist/polyfills/events.js.map +1 -0
  14. package/dist/polyfills/fs-promises.d.ts +7 -0
  15. package/dist/polyfills/fs-promises.d.ts.map +1 -0
  16. package/dist/polyfills/fs-promises.js +7 -0
  17. package/dist/polyfills/fs-promises.js.map +1 -0
  18. package/dist/polyfills/fs.d.ts +82 -0
  19. package/dist/polyfills/fs.d.ts.map +1 -0
  20. package/dist/{files.js → polyfills/fs.js} +100 -20
  21. package/dist/polyfills/fs.js.map +1 -0
  22. package/dist/polyfills/os.d.ts +150 -0
  23. package/dist/polyfills/os.d.ts.map +1 -0
  24. package/dist/polyfills/os.js +151 -0
  25. package/dist/polyfills/os.js.map +1 -0
  26. package/dist/polyfills/path.d.ts +8 -0
  27. package/dist/polyfills/path.d.ts.map +1 -0
  28. package/dist/polyfills/path.js +8 -0
  29. package/dist/polyfills/path.js.map +1 -0
  30. package/dist/polyfills/process.d.ts +109 -0
  31. package/dist/polyfills/process.d.ts.map +1 -0
  32. package/dist/polyfills/process.js +224 -0
  33. package/dist/polyfills/process.js.map +1 -0
  34. package/dist/polyfills/stream-web.d.ts +74 -0
  35. package/dist/polyfills/stream-web.d.ts.map +1 -0
  36. package/dist/polyfills/stream-web.js +23 -0
  37. package/dist/polyfills/stream-web.js.map +1 -0
  38. package/dist/polyfills/stream.d.ts +16 -0
  39. package/dist/polyfills/stream.d.ts.map +1 -0
  40. package/dist/polyfills/stream.js +16 -0
  41. package/dist/polyfills/stream.js.map +1 -0
  42. package/dist/polyfills/url.d.ts +47 -0
  43. package/dist/polyfills/url.d.ts.map +1 -0
  44. package/dist/polyfills/url.js +68 -0
  45. package/dist/polyfills/url.js.map +1 -0
  46. package/package.json +18 -1
  47. package/src/index.ts +4 -2
  48. package/src/polyfills/buffer.ts +11 -0
  49. package/src/polyfills/events.ts +11 -0
  50. package/src/polyfills/fs-promises.ts +7 -0
  51. package/src/polyfills/fs.ts +336 -0
  52. package/src/polyfills/os.ts +222 -0
  53. package/src/polyfills/path.ts +21 -0
  54. package/src/polyfills/process.ts +286 -0
  55. package/src/polyfills/stream-web.ts +24 -0
  56. package/src/polyfills/stream.ts +28 -0
  57. package/src/polyfills/url.ts +73 -0
  58. package/dist/env.d.ts +0 -22
  59. package/dist/env.d.ts.map +0 -1
  60. package/dist/env.js +0 -61
  61. package/dist/env.js.map +0 -1
  62. package/dist/files.d.ts +0 -46
  63. package/dist/files.d.ts.map +0 -1
  64. package/dist/files.js.map +0 -1
  65. package/src/env.ts +0 -67
  66. package/src/files.ts +0 -217
package/README.md CHANGED
@@ -144,60 +144,49 @@ Task-level options always override these defaults.
144
144
 
145
145
  Tasks can read and write files within directories specified in `allowedFiles`. Any attempt to access files outside these directories is not possible.
146
146
 
147
- Node.js built-ins like `fs` are not available in the WebAssembly sandbox. Instead, use the `files` API provided by the SDK:
147
+ Common Node.js built-ins are available. Use the standard `fs` module:
148
148
 
149
149
  ```typescript
150
- import { task, files } from "@capsule-run/sdk";
150
+ import { task } from "@capsule-run/sdk";
151
+ import fs from "fs/promises";
151
152
 
152
153
  export const restrictedWriter = task({
153
154
  name: "restricted_writer",
154
155
  allowedFiles: ["./output"]
155
156
  }, async () => {
156
- await files.writeText("./output/result.txt", "result");
157
+ await fs.writeFile("./output/result.txt", "result");
157
158
  });
158
159
 
159
- export const main = task({ name: "main" }, async () => {
160
+ export const main = task({ name: "main", allowedFiles: ["./data"] }, async () => {
160
161
  await restrictedWriter();
161
- return await files.readText("./data/input.txt");
162
+ return await fs.readFile("./data/input.txt", "utf8");
162
163
  });
163
164
  ```
164
165
 
165
- Available methods:
166
- - `files.readText(path)` — Read file as string
167
- - `files.readBytes(path)` — Read file as `Uint8Array`
168
- - `files.writeText(path, content)` — Write string to file
169
- - `files.writeBytes(path, data)` — Write bytes to file
170
- - `files.list(path)` — List directory contents
171
- - `files.exists(path)` — Check if file exists
172
-
173
166
  ### Environment Variables
174
167
 
175
- Tasks can access environment variables to read configuration, API keys, or other runtime settings. Use the `env` API provided by the SDK:
168
+ Tasks can access environment variables to read configuration, API keys, or other runtime settings. Use the standard `process.env`:
176
169
 
177
170
  ```typescript
178
- import { task, env } from "@capsule-run/sdk";
171
+ import { task } from "@capsule-run/sdk";
179
172
 
180
173
  export const main = task({
181
174
  name: "main",
182
175
  envVariables: ["API_KEY"]
183
176
  }, () => {
184
- const apiKey = env.get("API_KEY");
177
+ const apiKey = process.env.API_KEY;
185
178
  return { apiKeySet: apiKey !== undefined };
186
179
  });
187
180
  ```
188
181
 
189
- Available methods:
190
- - `env.get(key)` — Get a specific environment variable (returns `undefined` if not found)
191
- - `env.has(key)` — Check if an environment variable exists
192
- - `env.getAll()` — Get all environment variables as an object
193
-
194
182
  ## Compatibility
195
183
 
196
184
  ✅ **Supported:**
197
- - npm packages and ES modules work
185
+ - npm packages and ES modules
186
+ - Common Node.js built-ins. If you have any trouble with a built-in do not hesitate to open an issue.
198
187
 
199
- ⚠️ **Not yet supported:**
200
- - Node.js built-ins (`fs`, `path`, `os`) are not available in the sandbox
188
+ ⚠️ **Not supported:**
189
+ - Native Node.js addons (C++ bindings)
201
190
 
202
191
  ## Links
203
192
 
package/dist/index.d.ts CHANGED
@@ -15,7 +15,9 @@
15
15
  */
16
16
  export { task, type TaskOptions } from "./task.js";
17
17
  export { TaskRunner, exports, type TaskConfig } from "./app.js";
18
- export * as files from "./files.js";
19
- export * as env from "./env.js";
18
+ export { default as fs } from "./polyfills/fs.js";
20
19
  export { isWasmMode } from "./hostApi.js";
20
+ export { default as path } from "./polyfills/path.js";
21
+ export { default as os } from "./polyfills/os.js";
22
+ export { default as process } from "./polyfills/process.js";
21
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,wBAAwB,CAAC"}
package/dist/index.js CHANGED
@@ -15,7 +15,9 @@
15
15
  */
16
16
  export { task } from "./task.js";
17
17
  export { TaskRunner, exports } from "./app.js";
18
- export * as files from "./files.js";
19
- export * as env from "./env.js";
18
+ export { default as fs } from "./polyfills/fs.js";
20
19
  export { isWasmMode } from "./hostApi.js";
20
+ export { default as path } from "./polyfills/path.js";
21
+ export { default as os } from "./polyfills/os.js";
22
+ export { default as process } from "./polyfills/process.js";
21
23
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAoB,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAmB,MAAM,UAAU,CAAC;AAChE,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAoB,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAmB,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Buffer polyfill for WASI environment
3
+ * Provides Node.js-compatible Buffer class using the buffer package
4
+ */
5
+ import { Buffer as BufferPolyfill } from 'buffer';
6
+ export declare const Buffer: BufferConstructor;
7
+ export default BufferPolyfill;
8
+ //# sourceMappingURL=buffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffer.d.ts","sourceRoot":"","sources":["../../src/polyfills/buffer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,QAAQ,CAAC;AAIlD,eAAO,MAAM,MAAM,mBAAiB,CAAC;AACrC,eAAe,cAAc,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Buffer polyfill for WASI environment
3
+ * Provides Node.js-compatible Buffer class using the buffer package
4
+ */
5
+ import { Buffer as BufferPolyfill } from 'buffer';
6
+ globalThis.Buffer = BufferPolyfill;
7
+ export const Buffer = BufferPolyfill;
8
+ export default BufferPolyfill;
9
+ //# sourceMappingURL=buffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffer.js","sourceRoot":"","sources":["../../src/polyfills/buffer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,QAAQ,CAAC;AAEjD,UAAkB,CAAC,MAAM,GAAG,cAAc,CAAC;AAE5C,MAAM,CAAC,MAAM,MAAM,GAAG,cAAc,CAAC;AACrC,eAAe,cAAc,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Events polyfill for WASI environment
3
+ * Provides Node.js-compatible EventEmitter using the events package
4
+ */
5
+ import EventEmitter from 'events';
6
+ export { EventEmitter };
7
+ export default EventEmitter;
8
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/polyfills/events.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,YAAY,MAAM,QAAQ,CAAC;AAIlC,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,eAAe,YAAY,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Events polyfill for WASI environment
3
+ * Provides Node.js-compatible EventEmitter using the events package
4
+ */
5
+ import EventEmitter from 'events';
6
+ globalThis.EventEmitter = EventEmitter;
7
+ export { EventEmitter };
8
+ export default EventEmitter;
9
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/polyfills/events.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,YAAY,MAAM,QAAQ,CAAC;AAEjC,UAAkB,CAAC,YAAY,GAAG,YAAY,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,eAAe,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * fs/promises polyfill for WASI environment
3
+ * Allows: import fs from 'fs/promises'
4
+ */
5
+ export { promises as default } from './fs.js';
6
+ export * from './fs.js';
7
+ //# sourceMappingURL=fs-promises.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-promises.d.ts","sourceRoot":"","sources":["../../src/polyfills/fs-promises.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,MAAM,SAAS,CAAC;AAC9C,cAAc,SAAS,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * fs/promises polyfill for WASI environment
3
+ * Allows: import fs from 'fs/promises'
4
+ */
5
+ export { promises as default } from './fs.js';
6
+ export * from './fs.js';
7
+ //# sourceMappingURL=fs-promises.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-promises.js","sourceRoot":"","sources":["../../src/polyfills/fs-promises.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,MAAM,SAAS,CAAC;AAC9C,cAAc,SAAS,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Node.js fs polyfill for WASI environment
3
+ * Provides both Node.js fs API
4
+ */
5
+ /**
6
+ * Read a file as text.
7
+ */
8
+ export declare function readText(path: string): Promise<string>;
9
+ /**
10
+ * Read a file as bytes.
11
+ */
12
+ export declare function readBytes(path: string): Promise<Uint8Array>;
13
+ /**
14
+ * Write text content to a file.
15
+ */
16
+ export declare function writeText(path: string, content: string): Promise<void>;
17
+ /**
18
+ * Write bytes to a file.
19
+ */
20
+ export declare function writeBytes(path: string, data: Uint8Array): Promise<void>;
21
+ /**
22
+ * List files/directories at a path.
23
+ */
24
+ export declare function list(path?: string): Promise<string[]>;
25
+ /**
26
+ * Check if a file or directory exists.
27
+ */
28
+ export declare function exists(path: string): Promise<boolean>;
29
+ type Encoding = 'utf8' | 'utf-8' | 'buffer' | null | undefined;
30
+ interface ReadFileOptions {
31
+ encoding?: Encoding;
32
+ }
33
+ interface WriteFileOptions {
34
+ encoding?: Encoding;
35
+ }
36
+ /**
37
+ * Read file contents (async/callback style)
38
+ */
39
+ export declare function readFile(path: string, optionsOrCallback: ReadFileOptions | Encoding | ((err: Error | null, data?: string | Uint8Array) => void), callback?: (err: Error | null, data?: string | Uint8Array) => void): void;
40
+ /**
41
+ * Write file contents (async/callback style)
42
+ */
43
+ export declare function writeFile(path: string, data: string | Uint8Array, optionsOrCallback: WriteFileOptions | Encoding | ((err: Error | null) => void), callback?: (err: Error | null) => void): void;
44
+ /**
45
+ * Read directory contents (async/callback style)
46
+ */
47
+ export declare function readdir(path: string, optionsOrCallback: any | ((err: Error | null, files?: string[]) => void), callback?: (err: Error | null, files?: string[]) => void): void;
48
+ /**
49
+ * Check if file/directory exists (sync-style, limited in WASM)
50
+ */
51
+ export declare function existsSync(_path: string): boolean;
52
+ /**
53
+ * Promises API
54
+ */
55
+ export declare const promises: {
56
+ readFile(path: string, options?: ReadFileOptions | Encoding): Promise<string | Uint8Array>;
57
+ writeFile(path: string, data: string | Uint8Array): Promise<void>;
58
+ readdir(path: string): Promise<string[]>;
59
+ access(path: string): Promise<void>;
60
+ stat(path: string): Promise<{
61
+ isFile: () => boolean;
62
+ isDirectory: () => boolean;
63
+ }>;
64
+ };
65
+ declare const fs: {
66
+ readFile: typeof readFile;
67
+ writeFile: typeof writeFile;
68
+ readdir: typeof readdir;
69
+ existsSync: typeof existsSync;
70
+ promises: {
71
+ readFile(path: string, options?: ReadFileOptions | Encoding): Promise<string | Uint8Array>;
72
+ writeFile(path: string, data: string | Uint8Array): Promise<void>;
73
+ readdir(path: string): Promise<string[]>;
74
+ access(path: string): Promise<void>;
75
+ stat(path: string): Promise<{
76
+ isFile: () => boolean;
77
+ isDirectory: () => boolean;
78
+ }>;
79
+ };
80
+ };
81
+ export default fs;
82
+ //# sourceMappingURL=fs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/polyfills/fs.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  /**
2
- * Capsule Files API for WASM filesystem access.
2
+ * Node.js fs polyfill for WASI environment
3
+ * Provides both Node.js fs API
3
4
  */
4
5
  function getFsBindings() {
5
6
  try {
@@ -55,9 +56,6 @@ function resolvePath(path) {
55
56
  }
56
57
  /**
57
58
  * Read a file as text.
58
- *
59
- * @param path - The path to read.
60
- * @returns A promise that resolves to a string containing the file contents.
61
59
  */
62
60
  export async function readText(path) {
63
61
  const bytes = await readBytes(path);
@@ -65,9 +63,6 @@ export async function readText(path) {
65
63
  }
66
64
  /**
67
65
  * Read a file as bytes.
68
- *
69
- * @param path - The path to read.
70
- * @returns A promise that resolves to a Uint8Array containing the file contents.
71
66
  */
72
67
  export async function readBytes(path) {
73
68
  const resolved = resolvePath(path);
@@ -89,9 +84,6 @@ export async function readBytes(path) {
89
84
  }
90
85
  /**
91
86
  * Write text content to a file.
92
- *
93
- * @param path - The path to write.
94
- * @param content - The text content to write.
95
87
  */
96
88
  export async function writeText(path, content) {
97
89
  const bytes = new TextEncoder().encode(content);
@@ -99,9 +91,6 @@ export async function writeText(path, content) {
99
91
  }
100
92
  /**
101
93
  * Write bytes to a file.
102
- *
103
- * @param path - The path to write.
104
- * @param data - The bytes to write.
105
94
  */
106
95
  export async function writeBytes(path, data) {
107
96
  const resolved = resolvePath(path);
@@ -121,9 +110,6 @@ export async function writeBytes(path, data) {
121
110
  }
122
111
  /**
123
112
  * List files/directories at a path.
124
- *
125
- * @param path - The path to list.
126
- * @returns A promise that resolves to an array of strings representing the files and directories at the specified path.
127
113
  */
128
114
  export async function list(path = ".") {
129
115
  const resolved = resolvePath(path);
@@ -154,9 +140,6 @@ export async function list(path = ".") {
154
140
  }
155
141
  /**
156
142
  * Check if a file or directory exists.
157
- *
158
- * @param path - The path to check.
159
- * @returns A promise that resolves to a boolean indicating whether the file or directory exists.
160
143
  */
161
144
  export async function exists(path) {
162
145
  const resolved = resolvePath(path);
@@ -174,4 +157,101 @@ export async function exists(path) {
174
157
  return false;
175
158
  }
176
159
  }
177
- //# sourceMappingURL=files.js.map
160
+ /**
161
+ * Read file contents (async/callback style)
162
+ */
163
+ export function readFile(path, optionsOrCallback, callback) {
164
+ let options = {};
165
+ let cb;
166
+ if (typeof optionsOrCallback === 'function') {
167
+ cb = optionsOrCallback;
168
+ }
169
+ else if (typeof optionsOrCallback === 'string') {
170
+ options = { encoding: optionsOrCallback };
171
+ cb = callback;
172
+ }
173
+ else if (optionsOrCallback) {
174
+ options = optionsOrCallback;
175
+ cb = callback;
176
+ }
177
+ const encoding = options.encoding;
178
+ const isText = encoding === 'utf8' || encoding === 'utf-8';
179
+ const promise = isText ? readText(path) : readBytes(path);
180
+ promise
181
+ .then((data) => cb?.(null, data))
182
+ .catch((err) => cb?.(err instanceof Error ? err : new Error(String(err))));
183
+ }
184
+ /**
185
+ * Write file contents (async/callback style)
186
+ */
187
+ export function writeFile(path, data, optionsOrCallback, callback) {
188
+ const cb = typeof optionsOrCallback === 'function' ? optionsOrCallback : callback;
189
+ const promise = typeof data === 'string'
190
+ ? writeText(path, data)
191
+ : writeBytes(path, data);
192
+ promise
193
+ .then(() => cb?.(null))
194
+ .catch((err) => cb?.(err instanceof Error ? err : new Error(String(err))));
195
+ }
196
+ /**
197
+ * Read directory contents (async/callback style)
198
+ */
199
+ export function readdir(path, optionsOrCallback, callback) {
200
+ const cb = typeof optionsOrCallback === 'function' ? optionsOrCallback : callback;
201
+ list(path)
202
+ .then((files) => cb?.(null, files))
203
+ .catch((err) => cb?.(err instanceof Error ? err : new Error(String(err))));
204
+ }
205
+ /**
206
+ * Check if file/directory exists (sync-style, limited in WASM)
207
+ */
208
+ export function existsSync(_path) {
209
+ console.warn('fs.existsSync: Cannot implement true sync in WASM. Use fs.access instead.');
210
+ return false;
211
+ }
212
+ /**
213
+ * Promises API
214
+ */
215
+ export const promises = {
216
+ async readFile(path, options) {
217
+ const encoding = typeof options === 'string' ? options : options?.encoding;
218
+ const isText = encoding === 'utf8' || encoding === 'utf-8';
219
+ return isText ? readText(path) : readBytes(path);
220
+ },
221
+ async writeFile(path, data) {
222
+ if (typeof data === 'string') {
223
+ await writeText(path, data);
224
+ }
225
+ else {
226
+ await writeBytes(path, data);
227
+ }
228
+ },
229
+ async readdir(path) {
230
+ return list(path);
231
+ },
232
+ async access(path) {
233
+ const fileExists = await exists(path);
234
+ if (!fileExists) {
235
+ throw new Error(`ENOENT: no such file or directory, access '${path}'`);
236
+ }
237
+ },
238
+ async stat(path) {
239
+ const fileExists = await exists(path);
240
+ if (!fileExists) {
241
+ throw new Error(`ENOENT: no such file or directory, stat '${path}'`);
242
+ }
243
+ return {
244
+ isFile: () => true,
245
+ isDirectory: () => false,
246
+ };
247
+ },
248
+ };
249
+ const fs = {
250
+ readFile,
251
+ writeFile,
252
+ readdir,
253
+ existsSync,
254
+ promises,
255
+ };
256
+ export default fs;
257
+ //# sourceMappingURL=fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/polyfills/fs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * OS polyfill
3
+ * Provides Node.js-compatible os object
4
+ */
5
+ interface CpuInfo {
6
+ model: string;
7
+ speed: number;
8
+ times: {
9
+ user: number;
10
+ nice: number;
11
+ sys: number;
12
+ idle: number;
13
+ irq: number;
14
+ };
15
+ }
16
+ interface NetworkInterface {
17
+ address: string;
18
+ netmask: string;
19
+ family: string;
20
+ mac: string;
21
+ internal: boolean;
22
+ cidr: string | null;
23
+ }
24
+ declare const os: {
25
+ /**
26
+ * Returns the operating system platform
27
+ * WASI is POSIX-like, so we return 'linux'
28
+ */
29
+ platform(): "aix" | "darwin" | "freebsd" | "linux" | "openbsd" | "sunos" | "win32";
30
+ /**
31
+ * Returns the CPU architecture
32
+ * WASM runs on wasm32 architecture
33
+ */
34
+ arch(): string;
35
+ /**
36
+ * Returns the operating system's default directory for temporary files
37
+ */
38
+ tmpdir(): string;
39
+ /**
40
+ * Returns the home directory of the current user
41
+ */
42
+ homedir(): string;
43
+ /**
44
+ * Returns the system uptime in seconds
45
+ * Not available in WASI, returns 0
46
+ */
47
+ uptime(): number;
48
+ /**
49
+ * Returns the amount of free system memory in bytes
50
+ * Not available in WASI, returns 0
51
+ */
52
+ freemem(): number;
53
+ /**
54
+ * Returns the total amount of system memory in bytes
55
+ * Not available in WASI, returns 0
56
+ */
57
+ totalmem(): number;
58
+ /**
59
+ * Returns an array of objects containing information about each CPU/core
60
+ * Not available in WASI, returns empty array
61
+ */
62
+ cpus(): CpuInfo[];
63
+ /**
64
+ * Returns the hostname of the operating system
65
+ */
66
+ hostname(): string;
67
+ /**
68
+ * Returns the operating system release
69
+ */
70
+ release(): string;
71
+ /**
72
+ * Returns the operating system type
73
+ */
74
+ type(): string;
75
+ /**
76
+ * Returns the endianness of the CPU
77
+ * WASM is little-endian
78
+ */
79
+ endianness(): "BE" | "LE";
80
+ /**
81
+ * Returns an object containing network interfaces
82
+ * Not available in WASI, returns empty object
83
+ */
84
+ networkInterfaces(): {
85
+ [index: string]: NetworkInterface[];
86
+ };
87
+ /**
88
+ * Returns the operating system's default directory for user data
89
+ */
90
+ userInfo(options?: {
91
+ encoding: "buffer";
92
+ }): {
93
+ username: string;
94
+ uid: number;
95
+ gid: number;
96
+ shell: string | null;
97
+ homedir: string;
98
+ };
99
+ /**
100
+ * Returns an array of objects containing information about the load average
101
+ * Not available in WASI, returns [0, 0, 0]
102
+ */
103
+ loadavg(): number[];
104
+ /**
105
+ * Returns the operating system's version
106
+ */
107
+ version(): string;
108
+ /**
109
+ * Returns the machine type
110
+ */
111
+ machine(): string;
112
+ /**
113
+ * Platform-specific path segment separator
114
+ */
115
+ readonly EOL: string;
116
+ /**
117
+ * Platform-specific constants
118
+ */
119
+ constants: {
120
+ signals: {};
121
+ errno: {};
122
+ priority: {};
123
+ };
124
+ /**
125
+ * Returns the number of logical CPU cores
126
+ * Not available in WASI, returns 1
127
+ */
128
+ availableParallelism(): number;
129
+ /**
130
+ * Returns the string path of the current user's home directory
131
+ */
132
+ devNull: string;
133
+ };
134
+ export default os;
135
+ export declare const platform: () => "aix" | "darwin" | "freebsd" | "linux" | "openbsd" | "sunos" | "win32", arch: () => string, tmpdir: () => string, homedir: () => string, uptime: () => number, freemem: () => number, totalmem: () => number, cpus: () => CpuInfo[], hostname: () => string, release: () => string, type: () => string, endianness: () => "BE" | "LE", networkInterfaces: () => {
136
+ [index: string]: NetworkInterface[];
137
+ }, userInfo: (options?: {
138
+ encoding: "buffer";
139
+ }) => {
140
+ username: string;
141
+ uid: number;
142
+ gid: number;
143
+ shell: string | null;
144
+ homedir: string;
145
+ }, loadavg: () => number[], version: () => string, machine: () => string, EOL: string, constants: {
146
+ signals: {};
147
+ errno: {};
148
+ priority: {};
149
+ }, availableParallelism: () => number, devNull: string;
150
+ //# sourceMappingURL=os.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"os.d.ts","sourceRoot":"","sources":["../../src/polyfills/os.ts"],"names":[],"mappings":"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"}