@secure-exec/core 0.1.1-rc.3 → 0.2.0-rc.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 (102) hide show
  1. package/dist/esm-compiler.d.ts +5 -1
  2. package/dist/esm-compiler.js +5 -1
  3. package/dist/fs-helpers.d.ts +1 -1
  4. package/dist/generated/isolate-runtime.d.ts +15 -15
  5. package/dist/generated/isolate-runtime.js +15 -15
  6. package/dist/index.d.ts +24 -5
  7. package/dist/index.js +23 -3
  8. package/dist/isolate-runtime/apply-custom-global-policy.js +3 -3
  9. package/dist/isolate-runtime/apply-timing-mitigation-freeze.js +2 -2
  10. package/dist/isolate-runtime/apply-timing-mitigation-off.js +2 -2
  11. package/dist/isolate-runtime/bridge-attach.js +2 -2
  12. package/dist/isolate-runtime/bridge-initial-globals.js +145 -6
  13. package/dist/isolate-runtime/eval-script-result.js +1 -1
  14. package/dist/isolate-runtime/global-exposure-helpers.js +2 -2
  15. package/dist/isolate-runtime/init-commonjs-module-globals.js +2 -2
  16. package/dist/isolate-runtime/override-process-cwd.js +1 -1
  17. package/dist/isolate-runtime/override-process-env.js +1 -1
  18. package/dist/isolate-runtime/require-setup.js +1600 -338
  19. package/dist/isolate-runtime/set-commonjs-file-globals.js +2 -2
  20. package/dist/isolate-runtime/set-stdin-data.js +1 -1
  21. package/dist/isolate-runtime/setup-dynamic-import.js +47 -19
  22. package/dist/isolate-runtime/setup-fs-facade.js +62 -23
  23. package/dist/kernel/command-registry.d.ts +44 -0
  24. package/dist/kernel/command-registry.js +114 -0
  25. package/dist/kernel/device-layer.d.ts +12 -0
  26. package/dist/kernel/device-layer.js +262 -0
  27. package/dist/kernel/dns-cache.d.ts +29 -0
  28. package/dist/kernel/dns-cache.js +52 -0
  29. package/dist/kernel/fd-table.d.ts +84 -0
  30. package/dist/kernel/fd-table.js +278 -0
  31. package/dist/kernel/file-lock.d.ts +34 -0
  32. package/dist/kernel/file-lock.js +123 -0
  33. package/dist/kernel/host-adapter.d.ts +50 -0
  34. package/dist/kernel/host-adapter.js +8 -0
  35. package/dist/kernel/index.d.ts +36 -0
  36. package/dist/kernel/index.js +34 -0
  37. package/dist/kernel/inode-table.d.ts +43 -0
  38. package/dist/kernel/inode-table.js +85 -0
  39. package/dist/kernel/kernel.d.ts +9 -0
  40. package/dist/kernel/kernel.js +1396 -0
  41. package/dist/kernel/permissions.d.ts +27 -0
  42. package/dist/kernel/permissions.js +118 -0
  43. package/dist/kernel/pipe-manager.d.ts +64 -0
  44. package/dist/kernel/pipe-manager.js +267 -0
  45. package/dist/kernel/proc-layer.d.ts +11 -0
  46. package/dist/kernel/proc-layer.js +501 -0
  47. package/dist/kernel/process-table.d.ts +124 -0
  48. package/dist/kernel/process-table.js +631 -0
  49. package/dist/kernel/pty.d.ts +108 -0
  50. package/dist/kernel/pty.js +541 -0
  51. package/dist/kernel/socket-table.d.ts +305 -0
  52. package/dist/kernel/socket-table.js +1124 -0
  53. package/dist/kernel/timer-table.d.ts +54 -0
  54. package/dist/kernel/timer-table.js +108 -0
  55. package/dist/kernel/types.d.ts +500 -0
  56. package/dist/kernel/types.js +89 -0
  57. package/dist/kernel/user.d.ts +29 -0
  58. package/dist/kernel/user.js +35 -0
  59. package/dist/kernel/vfs.d.ts +54 -0
  60. package/dist/kernel/vfs.js +8 -0
  61. package/dist/kernel/wait.d.ts +45 -0
  62. package/dist/kernel/wait.js +112 -0
  63. package/dist/kernel/wstatus.d.ts +21 -0
  64. package/dist/kernel/wstatus.js +33 -0
  65. package/dist/module-resolver.d.ts +4 -0
  66. package/dist/module-resolver.js +4 -0
  67. package/dist/package-bundler.d.ts +6 -1
  68. package/dist/runtime-driver.d.ts +3 -1
  69. package/dist/shared/bridge-contract.d.ts +329 -20
  70. package/dist/shared/bridge-contract.js +60 -5
  71. package/dist/shared/console-formatter.js +8 -4
  72. package/dist/shared/global-exposure.js +269 -19
  73. package/dist/shared/in-memory-fs.d.ts +30 -11
  74. package/dist/shared/in-memory-fs.js +383 -109
  75. package/dist/shared/permissions.d.ts +4 -6
  76. package/dist/shared/permissions.js +19 -39
  77. package/dist/types.d.ts +8 -159
  78. package/dist/types.js +5 -0
  79. package/package.json +12 -22
  80. package/dist/bridge/active-handles.d.ts +0 -22
  81. package/dist/bridge/active-handles.js +0 -55
  82. package/dist/bridge/child-process.d.ts +0 -99
  83. package/dist/bridge/child-process.js +0 -670
  84. package/dist/bridge/fs.d.ts +0 -281
  85. package/dist/bridge/fs.js +0 -2235
  86. package/dist/bridge/index.d.ts +0 -10
  87. package/dist/bridge/index.js +0 -41
  88. package/dist/bridge/module.d.ts +0 -75
  89. package/dist/bridge/module.js +0 -308
  90. package/dist/bridge/network.d.ts +0 -350
  91. package/dist/bridge/network.js +0 -2050
  92. package/dist/bridge/os.d.ts +0 -13
  93. package/dist/bridge/os.js +0 -256
  94. package/dist/bridge/polyfills.d.ts +0 -2
  95. package/dist/bridge/polyfills.js +0 -11
  96. package/dist/bridge/process.d.ts +0 -89
  97. package/dist/bridge/process.js +0 -1015
  98. package/dist/bridge.js +0 -12496
  99. package/dist/python-runtime.d.ts +0 -16
  100. package/dist/python-runtime.js +0 -45
  101. package/dist/runtime.d.ts +0 -31
  102. package/dist/runtime.js +0 -69
@@ -1,10 +0,0 @@
1
- import "./polyfills.js";
2
- import { _registerHandle, _unregisterHandle, _waitForActiveHandles, _getActiveHandles } from "./active-handles.js";
3
- import fs from "./fs.js";
4
- import os from "./os.js";
5
- import * as childProcess from "./child-process.js";
6
- import * as network from "./network.js";
7
- import process, { setupGlobals, setTimeout, clearTimeout, setInterval, clearInterval, setImmediate, clearImmediate, URL, URLSearchParams, TextEncoder, TextDecoder, Buffer, cryptoPolyfill, ProcessExitError } from "./process.js";
8
- import moduleModule, { createRequire, Module, SourceMap } from "./module.js";
9
- export { fs, os, childProcess, process, moduleModule as module, network, setupGlobals, setTimeout, clearTimeout, setInterval, clearInterval, setImmediate, clearImmediate, URL, URLSearchParams, TextEncoder, TextDecoder, Buffer, cryptoPolyfill, ProcessExitError, createRequire, Module, SourceMap, _registerHandle, _unregisterHandle, _waitForActiveHandles, _getActiveHandles, };
10
- export default fs;
@@ -1,41 +0,0 @@
1
- // Bridge module entry point
2
- // This file is compiled to a single JS bundle that gets injected into the isolate
3
- //
4
- // Each module provides polyfills for Node.js built-in modules that need to
5
- // communicate with the host environment via isolated-vm bridge functions.
6
- // IMPORTANT: Import polyfills FIRST before any other modules!
7
- // Some packages (like whatwg-url) use TextEncoder/TextDecoder at module load time.
8
- // This import installs them on globalThis before other imports execute.
9
- import "./polyfills.js";
10
- // Active handles mechanism - must be imported early so other modules can use it.
11
- // See: docs-internal/node/ACTIVE_HANDLES.md
12
- import { _registerHandle, _unregisterHandle, _waitForActiveHandles, _getActiveHandles, } from "./active-handles.js";
13
- // File system module
14
- import fs from "./fs.js";
15
- // Operating system module
16
- import os from "./os.js";
17
- // Child process module
18
- import * as childProcess from "./child-process.js";
19
- // Network modules (fetch, dns, http, https)
20
- import * as network from "./network.js";
21
- // Process and global polyfills
22
- import process, { setupGlobals, setTimeout, clearTimeout, setInterval, clearInterval, setImmediate, clearImmediate, URL, URLSearchParams, TextEncoder, TextDecoder, Buffer, cryptoPolyfill, ProcessExitError, } from "./process.js";
23
- // Module system (createRequire, Module class)
24
- import moduleModule, { createRequire, Module, SourceMap } from "./module.js";
25
- // Export all modules
26
- export {
27
- // Core modules
28
- fs, os, childProcess, process, moduleModule as module,
29
- // Network
30
- network,
31
- // Process globals
32
- setupGlobals, setTimeout, clearTimeout, setInterval, clearInterval, setImmediate, clearImmediate, URL, URLSearchParams, TextEncoder, TextDecoder, Buffer, cryptoPolyfill, ProcessExitError,
33
- // Module utilities
34
- createRequire, Module, SourceMap,
35
- // Active handles (see docs-internal/node/ACTIVE_HANDLES.md)
36
- _registerHandle, _unregisterHandle, _waitForActiveHandles, _getActiveHandles, };
37
- // Default export is fs for backward compatibility
38
- export default fs;
39
- // Auto-setup globals when bridge loads
40
- // This installs process, timers, URL, Buffer, crypto, etc. on globalThis
41
- setupGlobals();
@@ -1,75 +0,0 @@
1
- interface RequireFunction {
2
- (request: string): unknown;
3
- resolve: RequireResolve;
4
- cache: Record<string, {
5
- exports: unknown;
6
- }>;
7
- main: Module | undefined;
8
- extensions: Record<string, (module: Module, filename: string) => void>;
9
- }
10
- interface RequireResolve {
11
- (request: string, options?: {
12
- paths?: string[];
13
- }): string;
14
- paths: (request: string) => string[] | null;
15
- }
16
- /**
17
- * Create a require function that resolves relative to the given filename.
18
- * This mimics Node.js's module.createRequire(filename).
19
- */
20
- export declare function createRequire(filename: string | URL): RequireFunction;
21
- /**
22
- * Polyfill of Node.js `Module` class for sandbox compatibility. Provides
23
- * `_compile`, `_resolveFilename`, `_load`, `_extensions`, and `_cache` statics
24
- * that npm tooling (promzard, resolve, etc.) relies on.
25
- */
26
- export declare class Module {
27
- id: string;
28
- path: string;
29
- exports: unknown;
30
- filename: string;
31
- loaded: boolean;
32
- children: Module[];
33
- paths: string[];
34
- parent: Module | null | undefined;
35
- isPreloading: boolean;
36
- constructor(id: string, parent?: Module | null);
37
- require(request: string): unknown;
38
- _compile(content: string, filename: string): unknown;
39
- static _extensions: Record<string, (module: Module, filename: string) => void>;
40
- static _cache: Record<string, {
41
- exports: unknown;
42
- }>;
43
- static _resolveFilename(request: string, parent: Module | null | undefined, _isMain?: boolean, _options?: unknown): string;
44
- static wrap(content: string): string;
45
- static builtinModules: string[];
46
- static isBuiltin(moduleName: string): boolean;
47
- static createRequire: typeof createRequire;
48
- static syncBuiltinESMExports(): void;
49
- static findSourceMap(_path: string): undefined;
50
- static _nodeModulePaths(from: string): string[];
51
- static _load(request: string, parent: Module | null | undefined, _isMain?: boolean): unknown;
52
- static runMain(): void;
53
- }
54
- export declare class SourceMap {
55
- constructor(_payload: unknown);
56
- get payload(): never;
57
- set payload(_value: unknown);
58
- findEntry(_line: number, _column: number): never;
59
- }
60
- declare const moduleModule: {
61
- Module: typeof Module;
62
- createRequire: typeof createRequire;
63
- _extensions: Record<string, (module: Module, filename: string) => void>;
64
- _cache: Record<string, {
65
- exports: unknown;
66
- }>;
67
- builtinModules: string[];
68
- isBuiltin: typeof Module.isBuiltin;
69
- _resolveFilename: typeof Module._resolveFilename;
70
- wrap: typeof Module.wrap;
71
- syncBuiltinESMExports: typeof Module.syncBuiltinESMExports;
72
- findSourceMap: typeof Module.findSourceMap;
73
- SourceMap: typeof SourceMap;
74
- };
75
- export default moduleModule;
@@ -1,308 +0,0 @@
1
- import { exposeCustomGlobal } from "../shared/global-exposure.js";
2
- // Path utilities for module resolution
3
- function _pathDirname(p) {
4
- const lastSlash = p.lastIndexOf("/");
5
- if (lastSlash === -1)
6
- return ".";
7
- if (lastSlash === 0)
8
- return "/";
9
- return p.slice(0, lastSlash);
10
- }
11
- function _parseFileUrl(url) {
12
- // Handle file:// URLs
13
- if (url.startsWith("file://")) {
14
- // Remove file:// prefix
15
- let path = url.slice(7);
16
- // Handle file:///path on Unix (3 slashes = absolute path)
17
- if (path.startsWith("/")) {
18
- return path;
19
- }
20
- // Handle file://host/path (rare, treat host as empty)
21
- return "/" + path;
22
- }
23
- return url;
24
- }
25
- /**
26
- * Create a require function that resolves relative to the given filename.
27
- * This mimics Node.js's module.createRequire(filename).
28
- */
29
- export function createRequire(filename) {
30
- if (typeof filename !== "string" && !(filename instanceof URL)) {
31
- throw new TypeError("filename must be a string or URL");
32
- }
33
- // Parse file:// URLs
34
- const filepath = _parseFileUrl(String(filename));
35
- const dirname = _pathDirname(filepath);
36
- const builtins = [
37
- "fs",
38
- "path",
39
- "os",
40
- "events",
41
- "util",
42
- "http",
43
- "https",
44
- "dns",
45
- "child_process",
46
- "stream",
47
- "buffer",
48
- "url",
49
- "querystring",
50
- "crypto",
51
- "zlib",
52
- "assert",
53
- "tty",
54
- "net",
55
- "tls",
56
- ];
57
- // Create resolve.paths function
58
- const resolvePaths = function (request) {
59
- // For built-in modules, return null
60
- if (builtins.includes(request) || request.startsWith("node:")) {
61
- return null;
62
- }
63
- // For relative paths, return array starting from dirname
64
- if (request.startsWith("./") ||
65
- request.startsWith("../") ||
66
- request.startsWith("/")) {
67
- return [dirname];
68
- }
69
- // For bare specifiers, return node_modules search paths
70
- const paths = [];
71
- let current = dirname;
72
- while (current !== "/") {
73
- paths.push(current + "/node_modules");
74
- current = _pathDirname(current);
75
- }
76
- paths.push("/node_modules");
77
- return paths;
78
- };
79
- // Create resolve function
80
- const resolve = function (request, _options) {
81
- const resolved = _resolveModule.applySyncPromise(undefined, [
82
- request,
83
- dirname,
84
- ]);
85
- if (resolved === null) {
86
- const err = new Error("Cannot find module '" + request + "'");
87
- err.code = "MODULE_NOT_FOUND";
88
- throw err;
89
- }
90
- return resolved;
91
- };
92
- resolve.paths = resolvePaths;
93
- // Create a require function bound to this directory
94
- const requireFn = function (request) {
95
- return _requireFrom(request, dirname);
96
- };
97
- // Add require.resolve
98
- requireFn.resolve = resolve;
99
- // Add require.cache reference to global module cache
100
- requireFn.cache = _moduleCache;
101
- // Add require.main (null for dynamically created require)
102
- requireFn.main = undefined;
103
- // Add require.extensions (deprecated but still used by some tools)
104
- requireFn.extensions = {
105
- ".js": function (_module, _filename) {
106
- // This is a stub - actual loading is handled by our require implementation
107
- },
108
- ".json": function (_module, _filename) {
109
- // JSON loading stub
110
- },
111
- ".node": function (_module, _filename) {
112
- throw new Error(".node extensions are not supported in sandbox");
113
- },
114
- };
115
- return requireFn;
116
- }
117
- /**
118
- * Polyfill of Node.js `Module` class for sandbox compatibility. Provides
119
- * `_compile`, `_resolveFilename`, `_load`, `_extensions`, and `_cache` statics
120
- * that npm tooling (promzard, resolve, etc.) relies on.
121
- */
122
- export class Module {
123
- id;
124
- path;
125
- exports;
126
- filename;
127
- loaded;
128
- children;
129
- paths;
130
- parent;
131
- isPreloading;
132
- constructor(id, parent) {
133
- this.id = id;
134
- this.path = _pathDirname(id);
135
- this.exports = {};
136
- this.filename = id;
137
- this.loaded = false;
138
- this.children = [];
139
- this.paths = [];
140
- this.parent = parent;
141
- this.isPreloading = false;
142
- // Build module paths
143
- let current = this.path;
144
- while (current !== "/") {
145
- this.paths.push(current + "/node_modules");
146
- current = _pathDirname(current);
147
- }
148
- this.paths.push("/node_modules");
149
- }
150
- require(request) {
151
- return _requireFrom(request, this.path);
152
- }
153
- _compile(content, filename) {
154
- // Create wrapper function and execute
155
- const wrapper = new Function("exports", "require", "module", "__filename", "__dirname", content);
156
- const moduleRequire = (request) => _requireFrom(request, this.path);
157
- moduleRequire.resolve = (request) => {
158
- const resolved = _resolveModule.applySyncPromise(undefined, [
159
- request,
160
- this.path,
161
- ]);
162
- if (resolved === null) {
163
- const err = new Error("Cannot find module '" + request + "'");
164
- err.code = "MODULE_NOT_FOUND";
165
- throw err;
166
- }
167
- return resolved;
168
- };
169
- wrapper(this.exports, moduleRequire, this, filename, this.path);
170
- this.loaded = true;
171
- return this.exports;
172
- }
173
- static _extensions = {
174
- ".js": function (module, filename) {
175
- const fs = _requireFrom("fs", "/");
176
- const content = fs.readFileSync(filename, "utf8");
177
- module._compile(content, filename);
178
- },
179
- ".json": function (module, filename) {
180
- const fs = _requireFrom("fs", "/");
181
- const content = fs.readFileSync(filename, "utf8");
182
- module.exports = JSON.parse(content);
183
- },
184
- ".node": function () {
185
- throw new Error(".node extensions are not supported in sandbox");
186
- },
187
- };
188
- static _cache = typeof _moduleCache !== "undefined"
189
- ? _moduleCache
190
- : {};
191
- static _resolveFilename(request, parent, _isMain, _options) {
192
- const parentDir = parent && parent.path ? parent.path : "/";
193
- const resolved = _resolveModule.applySyncPromise(undefined, [
194
- request,
195
- parentDir,
196
- ]);
197
- if (resolved === null) {
198
- const err = new Error("Cannot find module '" + request + "'");
199
- err.code = "MODULE_NOT_FOUND";
200
- throw err;
201
- }
202
- return resolved;
203
- }
204
- static wrap(content) {
205
- return ("(function (exports, require, module, __filename, __dirname) { " +
206
- content +
207
- "\n});");
208
- }
209
- static builtinModules = [
210
- "assert",
211
- "buffer",
212
- "child_process",
213
- "crypto",
214
- "dns",
215
- "events",
216
- "fs",
217
- "http",
218
- "https",
219
- "net",
220
- "os",
221
- "path",
222
- "querystring",
223
- "stream",
224
- "string_decoder",
225
- "timers",
226
- "tls",
227
- "tty",
228
- "url",
229
- "util",
230
- "zlib",
231
- "vm",
232
- "module",
233
- ];
234
- static isBuiltin(moduleName) {
235
- const name = moduleName.replace(/^node:/, "");
236
- return Module.builtinModules.includes(name);
237
- }
238
- static createRequire = createRequire;
239
- static syncBuiltinESMExports() {
240
- // No-op in our environment
241
- }
242
- static findSourceMap(_path) {
243
- return undefined;
244
- }
245
- static _nodeModulePaths(from) {
246
- // Return array of node_modules paths from the given directory up to root
247
- const paths = [];
248
- let current = from;
249
- while (current !== "/") {
250
- paths.push(current + "/node_modules");
251
- current = _pathDirname(current);
252
- if (current === ".")
253
- break;
254
- }
255
- paths.push("/node_modules");
256
- return paths;
257
- }
258
- static _load(request, parent, _isMain) {
259
- // Use our require system
260
- const parentDir = parent && parent.path ? parent.path : "/";
261
- return _requireFrom(request, parentDir);
262
- }
263
- static runMain() {
264
- // No-op - we don't have a main module in this context
265
- }
266
- }
267
- // SourceMap class - not implemented
268
- export class SourceMap {
269
- constructor(_payload) {
270
- throw new Error("SourceMap is not implemented in sandbox");
271
- }
272
- get payload() {
273
- throw new Error("SourceMap is not implemented in sandbox");
274
- }
275
- set payload(_value) {
276
- throw new Error("SourceMap is not implemented in sandbox");
277
- }
278
- findEntry(_line, _column) {
279
- throw new Error("SourceMap is not implemented in sandbox");
280
- }
281
- }
282
- // Module namespace export matching Node.js 'module' module
283
- // Note: We don't strictly satisfy typeof nodeModule due to complex intersection types
284
- const moduleModule = {
285
- Module: Module,
286
- createRequire: createRequire,
287
- // Module._extensions (deprecated alias)
288
- _extensions: Module._extensions,
289
- // Module._cache reference
290
- _cache: Module._cache,
291
- // Built-in module list
292
- builtinModules: Module.builtinModules,
293
- // isBuiltin check
294
- isBuiltin: Module.isBuiltin,
295
- // Module._resolveFilename (internal but sometimes used)
296
- _resolveFilename: Module._resolveFilename,
297
- // wrap function
298
- wrap: Module.wrap,
299
- // syncBuiltinESMExports (stub for ESM interop)
300
- syncBuiltinESMExports: Module.syncBuiltinESMExports,
301
- // findSourceMap (stub)
302
- findSourceMap: Module.findSourceMap,
303
- // SourceMap class (stub)
304
- SourceMap: SourceMap,
305
- };
306
- // Expose to global for require() to use
307
- exposeCustomGlobal("_moduleModule", moduleModule);
308
- export default moduleModule;