@capsule-run/sdk 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +22 -2
  2. package/dist/app.d.ts +1 -0
  3. package/dist/app.d.ts.map +1 -1
  4. package/dist/app.js.map +1 -1
  5. package/dist/index.d.ts +4 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +4 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/polyfills/buffer.d.ts +8 -0
  10. package/dist/polyfills/buffer.d.ts.map +1 -0
  11. package/dist/polyfills/buffer.js +9 -0
  12. package/dist/polyfills/buffer.js.map +1 -0
  13. package/dist/polyfills/events.d.ts +8 -0
  14. package/dist/polyfills/events.d.ts.map +1 -0
  15. package/dist/polyfills/events.js +9 -0
  16. package/dist/polyfills/events.js.map +1 -0
  17. package/dist/polyfills/fs-promises.d.ts +7 -0
  18. package/dist/polyfills/fs-promises.d.ts.map +1 -0
  19. package/dist/polyfills/fs-promises.js +7 -0
  20. package/dist/polyfills/fs-promises.js.map +1 -0
  21. package/dist/polyfills/fs.d.ts +82 -0
  22. package/dist/polyfills/fs.d.ts.map +1 -0
  23. package/dist/{files.js → polyfills/fs.js} +100 -20
  24. package/dist/polyfills/fs.js.map +1 -0
  25. package/dist/polyfills/os.d.ts +150 -0
  26. package/dist/polyfills/os.d.ts.map +1 -0
  27. package/dist/polyfills/os.js +151 -0
  28. package/dist/polyfills/os.js.map +1 -0
  29. package/dist/polyfills/path.d.ts +8 -0
  30. package/dist/polyfills/path.d.ts.map +1 -0
  31. package/dist/polyfills/path.js +8 -0
  32. package/dist/polyfills/path.js.map +1 -0
  33. package/dist/polyfills/process.d.ts +109 -0
  34. package/dist/polyfills/process.d.ts.map +1 -0
  35. package/dist/polyfills/process.js +224 -0
  36. package/dist/polyfills/process.js.map +1 -0
  37. package/dist/polyfills/stream-web.d.ts +74 -0
  38. package/dist/polyfills/stream-web.d.ts.map +1 -0
  39. package/dist/polyfills/stream-web.js +23 -0
  40. package/dist/polyfills/stream-web.js.map +1 -0
  41. package/dist/polyfills/stream.d.ts +16 -0
  42. package/dist/polyfills/stream.d.ts.map +1 -0
  43. package/dist/polyfills/stream.js +16 -0
  44. package/dist/polyfills/stream.js.map +1 -0
  45. package/dist/polyfills/url.d.ts +47 -0
  46. package/dist/polyfills/url.d.ts.map +1 -0
  47. package/dist/polyfills/url.js +68 -0
  48. package/dist/polyfills/url.js.map +1 -0
  49. package/dist/task.d.ts +17 -1
  50. package/dist/task.d.ts.map +1 -1
  51. package/dist/task.js +26 -1
  52. package/dist/task.js.map +1 -1
  53. package/package.json +18 -1
  54. package/src/app.ts +1 -0
  55. package/src/index.ts +4 -1
  56. package/src/polyfills/buffer.ts +11 -0
  57. package/src/polyfills/events.ts +11 -0
  58. package/src/polyfills/fs-promises.ts +7 -0
  59. package/src/polyfills/fs.ts +336 -0
  60. package/src/polyfills/os.ts +222 -0
  61. package/src/polyfills/path.ts +21 -0
  62. package/src/polyfills/process.ts +286 -0
  63. package/src/polyfills/stream-web.ts +24 -0
  64. package/src/polyfills/stream.ts +28 -0
  65. package/src/polyfills/url.ts +73 -0
  66. package/src/task.ts +53 -9
  67. package/dist/files.d.ts +0 -46
  68. package/dist/files.d.ts.map +0 -1
  69. package/dist/files.js.map +0 -1
  70. package/src/files.ts +0 -217
package/README.md CHANGED
@@ -42,7 +42,6 @@ Run it:
42
42
  capsule run hello.ts
43
43
  ```
44
44
 
45
- > [!TIP]
46
45
  > Use `--verbose` to display real-time task execution details.
47
46
 
48
47
  ## How It Works
@@ -71,7 +70,6 @@ export const main = task({
71
70
  });
72
71
  ```
73
72
 
74
- > [!NOTE]
75
73
  > The runtime requires a task named `"main"` as the entry point.
76
74
 
77
75
  When you run `capsule run main.ts`, your code is compiled into a WebAssembly module and executed in a dedicated sandbox.
@@ -115,6 +113,7 @@ Every task returns a structured JSON envelope containing both the result and exe
115
113
  | `timeout` | Maximum execution time | `string` or `number` | unlimited | `"30s"`, `"5m"` |
116
114
  | `maxRetries` | Retry attempts on failure | `number` | `0` | `3` |
117
115
  | `allowedFiles` | Folders accessible in the sandbox | `string[]` | `[]` | `["./data", "./output"]` |
116
+ | `envVariables` | Environment variables accessible in the sandbox | `string[]` | `[]` | `["API_KEY"]` |
118
117
 
119
118
  ### Compute Levels
120
119
 
@@ -171,6 +170,27 @@ Available methods:
171
170
  - `files.list(path)` — List directory contents
172
171
  - `files.exists(path)` — Check if file exists
173
172
 
173
+ ### Environment Variables
174
+
175
+ Tasks can access environment variables to read configuration, API keys, or other runtime settings. Use the `env` API provided by the SDK:
176
+
177
+ ```typescript
178
+ import { task, env } from "@capsule-run/sdk";
179
+
180
+ export const main = task({
181
+ name: "main",
182
+ envVariables: ["API_KEY"]
183
+ }, () => {
184
+ const apiKey = env.get("API_KEY");
185
+ return { apiKeySet: apiKey !== undefined };
186
+ });
187
+ ```
188
+
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
+
174
194
  ## Compatibility
175
195
 
176
196
  ✅ **Supported:**
package/dist/app.d.ts CHANGED
@@ -12,6 +12,7 @@ export interface TaskConfig {
12
12
  timeout?: string;
13
13
  maxRetries?: number;
14
14
  allowedFiles?: string[];
15
+ envVariables?: string[];
15
16
  }
16
17
  /**
17
18
  * Register a task function by name with its configuration.
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG;IACzD,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAID;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAC5D,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,UAAU,GACjB,IAAI,CAEN;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,SAAS,CAE3E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAElE;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAEvC;AAQD;;;;;GAKG;AACH,qBAAa,UAAU;IACrB;;;OAGG;IACG,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAuC7C;AAED,eAAO,MAAM,OAAO,YAAmB,CAAC"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG;IACzD,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAID;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAC5D,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,UAAU,GACjB,IAAI,CAEN;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,SAAS,CAE3E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAElE;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAEvC;AAQD;;;;;GAKG;AACH,qBAAa,UAAU;IACrB;;;OAGG;IACG,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAuC7C;AAED,eAAO,MAAM,OAAO,YAAmB,CAAC"}
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH,MAAM,KAAK,GAA+B,IAAI,GAAG,EAAE,CAAC;AAEpD;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAY,EACZ,IAAO,EACP,MAAkB;IAElB,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAClC,CAAC;AAQD;;;;;GAKG;AACH,MAAM,OAAO,UAAU;IACrB;;;OAGG;IACH,KAAK,CAAC,GAAG,CAAC,QAAgB;QACxB,IAAI,CAAC;YACH,MAAM,IAAI,GAAa,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;YAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;YAEjC,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEjC,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACrC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;YAED,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;gBAChD,IAAI,aAAa,EAAE,CAAC;oBAClB,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,uDAAuD,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3F,CAAC;YAED,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;YAEzC,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;gBAC9B,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC;gBACjC,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,IAAI,IAAI,EAAE,CAAC,CAAC;YACzD,CAAC;YAED,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,QAAQ,GAAG,CAAC,YAAY,KAAK;gBACjC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE;gBAClC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACd,MAAM,QAAQ,CAAC;QACjB,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiBH,MAAM,KAAK,GAA+B,IAAI,GAAG,EAAE,CAAC;AAEpD;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAY,EACZ,IAAO,EACP,MAAkB;IAElB,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAClC,CAAC;AAQD;;;;;GAKG;AACH,MAAM,OAAO,UAAU;IACrB;;;OAGG;IACH,KAAK,CAAC,GAAG,CAAC,QAAgB;QACxB,IAAI,CAAC;YACH,MAAM,IAAI,GAAa,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;YAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;YAEjC,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEjC,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACrC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;YAED,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;gBAChD,IAAI,aAAa,EAAE,CAAC;oBAClB,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,uDAAuD,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3F,CAAC;YAED,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;YAEzC,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;gBAC9B,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC;gBACjC,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,IAAI,IAAI,EAAE,CAAC,CAAC;YACzD,CAAC;YAED,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,QAAQ,GAAG,CAAC,YAAY,KAAK;gBACjC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE;gBAClC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACd,MAAM,QAAQ,CAAC;QACjB,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,UAAU,EAAE,CAAC"}
package/dist/index.d.ts CHANGED
@@ -15,6 +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";
18
+ export { default as fs } from "./polyfills/fs.js";
19
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";
20
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,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,6 +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";
18
+ export { default as fs } from "./polyfills/fs.js";
19
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";
20
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,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":"AAAA;;;GAGG;AAoFH;;GAEG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG5D;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAkBjE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG5E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB9E;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA6BhE;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAe3D;AAED,KAAK,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;AAE/D,UAAU,eAAe;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACvB;AAED,UAAU,gBAAgB;IACtB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACpB,IAAI,EAAE,MAAM,EACZ,iBAAiB,EAAE,eAAe,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,KAAK,IAAI,CAAC,EACzG,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,KAAK,IAAI,GACnE,IAAI,CAsBN;AAED;;GAEG;AACH,wBAAgB,SAAS,CACrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,iBAAiB,EAAE,gBAAgB,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC,EAC9E,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,GACvC,IAAI,CAWN;AAED;;GAEG;AACH,wBAAgB,OAAO,CACnB,IAAI,EAAE,MAAM,EACZ,iBAAiB,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC,EACxE,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,GACzD,IAAI,CAMN;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGjD;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ;mBACI,MAAM,YAAY,eAAe,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC;oBAM1E,MAAM,QAAQ,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;kBAQnD,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;iBAI3B,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;eAOxB,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,OAAO,CAAC;QAAC,WAAW,EAAE,MAAM,OAAO,CAAA;KAAE,CAAC;CAU3F,CAAC;AAEF,QAAA,MAAM,EAAE;;;;;;uBArCiB,MAAM,YAAY,eAAe,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC;wBAM1E,MAAM,QAAQ,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;sBAQnD,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;qBAI3B,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;mBAOxB,MAAM,GAAG,OAAO,CAAC;YAAE,MAAM,EAAE,MAAM,OAAO,CAAC;YAAC,WAAW,EAAE,MAAM,OAAO,CAAA;SAAE,CAAC;;CAkB3F,CAAC;AAEF,eAAe,EAAE,CAAC"}
@@ -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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"}