@ricsam/quickjs-runtime 0.2.7 → 0.2.9
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/dist/cjs/index.cjs +10 -1
- package/dist/cjs/index.cjs.map +3 -3
- package/dist/cjs/package.json +1 -1
- package/dist/mjs/index.mjs +12 -1
- package/dist/mjs/index.mjs.map +3 -3
- package/dist/mjs/package.json +1 -1
- package/dist/types/index.d.ts +10 -0
- package/package.json +7 -6
package/dist/cjs/index.cjs
CHANGED
|
@@ -55,11 +55,13 @@ __reExport(exports_src, require("@ricsam/quickjs-console"), module.exports);
|
|
|
55
55
|
__reExport(exports_src, require("@ricsam/quickjs-encoding"), module.exports);
|
|
56
56
|
__reExport(exports_src, require("@ricsam/quickjs-fetch"), module.exports);
|
|
57
57
|
__reExport(exports_src, require("@ricsam/quickjs-fs"), module.exports);
|
|
58
|
+
__reExport(exports_src, require("@ricsam/quickjs-timers"), module.exports);
|
|
58
59
|
var import_quickjs_core = require("@ricsam/quickjs-core");
|
|
59
60
|
var import_quickjs_fetch = require("@ricsam/quickjs-fetch");
|
|
60
61
|
var import_quickjs_fs = require("@ricsam/quickjs-fs");
|
|
61
62
|
var import_quickjs_console = require("@ricsam/quickjs-console");
|
|
62
63
|
var import_quickjs_encoding = require("@ricsam/quickjs-encoding");
|
|
64
|
+
var import_quickjs_timers = require("@ricsam/quickjs-timers");
|
|
63
65
|
function setupRuntime(context, options = {}) {
|
|
64
66
|
const stateMap = import_quickjs_core.createStateMap();
|
|
65
67
|
const core = import_quickjs_core.setupCore(context, { stateMap });
|
|
@@ -67,6 +69,7 @@ function setupRuntime(context, options = {}) {
|
|
|
67
69
|
let fs;
|
|
68
70
|
let consoleHandle;
|
|
69
71
|
let encoding;
|
|
72
|
+
let timers;
|
|
70
73
|
if (options.fetch) {
|
|
71
74
|
const fetchOptions = options.fetch === true ? { stateMap, coreHandle: core } : { ...options.fetch, stateMap, coreHandle: core };
|
|
72
75
|
fetch = import_quickjs_fetch.setupFetch(context, fetchOptions);
|
|
@@ -86,14 +89,20 @@ function setupRuntime(context, options = {}) {
|
|
|
86
89
|
const encodingOptions = options.encoding === true ? { stateMap, coreHandle: core } : { ...options.encoding, stateMap, coreHandle: core };
|
|
87
90
|
encoding = import_quickjs_encoding.setupEncoding(context, encodingOptions);
|
|
88
91
|
}
|
|
92
|
+
if (options.timers) {
|
|
93
|
+
const timersOptions = options.timers === true ? { stateMap, coreHandle: core } : { ...options.timers, stateMap, coreHandle: core };
|
|
94
|
+
timers = import_quickjs_timers.setupTimers(context, timersOptions);
|
|
95
|
+
}
|
|
89
96
|
return {
|
|
90
97
|
core,
|
|
91
98
|
fetch,
|
|
92
99
|
fs,
|
|
93
100
|
console: consoleHandle,
|
|
94
101
|
encoding,
|
|
102
|
+
timers,
|
|
95
103
|
stateMap,
|
|
96
104
|
dispose() {
|
|
105
|
+
timers?.dispose();
|
|
97
106
|
encoding?.dispose();
|
|
98
107
|
consoleHandle?.dispose();
|
|
99
108
|
fs?.dispose();
|
|
@@ -104,4 +113,4 @@ function setupRuntime(context, options = {}) {
|
|
|
104
113
|
}
|
|
105
114
|
})
|
|
106
115
|
|
|
107
|
-
//# debugId=
|
|
116
|
+
//# debugId=C7F4ACB19831533264756E2164756E21
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"// Re-export everything from sub-packages\nexport * from \"@ricsam/quickjs-core\";\nexport * from \"@ricsam/quickjs-console\";\nexport * from \"@ricsam/quickjs-encoding\";\nexport * from \"@ricsam/quickjs-fetch\";\nexport * from \"@ricsam/quickjs-fs\";\n\nimport type { QuickJSContext } from \"quickjs-emscripten\";\nimport {\n setupCore,\n createStateMap,\n type StateMap,\n type CoreHandle,\n} from \"@ricsam/quickjs-core\";\nimport {\n setupFetch,\n type SetupFetchOptions,\n type FetchHandle,\n} from \"@ricsam/quickjs-fetch\";\nimport {\n setupFs,\n type SetupFsOptions,\n type FsHandle,\n} from \"@ricsam/quickjs-fs\";\nimport {\n setupConsole,\n type SetupConsoleOptions,\n type ConsoleHandle,\n} from \"@ricsam/quickjs-console\";\nimport {\n setupEncoding,\n type SetupEncodingOptions,\n type EncodingHandle,\n} from \"@ricsam/quickjs-encoding\";\n\n/**\n * Options for setting up the runtime\n */\nexport interface SetupRuntimeOptions {\n /**\n * Fetch API options\n * Pass `true` to enable with defaults\n * Pass `false` or omit to disable\n */\n fetch?: SetupFetchOptions | boolean;\n\n /**\n * File system options\n * Pass options object to enable\n * Pass `false` or omit to disable\n */\n fs?: SetupFsOptions | false;\n\n /**\n * Console options\n * Pass `true` to enable with defaults\n * Pass handlers object to customize\n * Pass `false` or omit to disable\n */\n console?: SetupConsoleOptions | boolean;\n\n /**\n * Encoding options (atob/btoa)\n * Pass `true` to enable with defaults\n * Pass `false` or omit to disable\n */\n encoding?: SetupEncodingOptions | boolean;\n}\n\n/**\n * Handle returned from setupRuntime\n */\nexport interface RuntimeHandle {\n /** Core handle (always present) */\n core: CoreHandle;\n\n /** Fetch handle (if enabled) */\n fetch?: FetchHandle;\n\n /** File system handle (if enabled) */\n fs?: FsHandle;\n\n /** Console handle (if enabled) */\n console?: ConsoleHandle;\n\n /** Encoding handle (if enabled) */\n encoding?: EncodingHandle;\n\n /** Shared state map */\n readonly stateMap: StateMap;\n\n /** Dispose all handles and cleanup */\n dispose(): void;\n}\n\n/**\n * Setup multiple APIs in a QuickJS context\n *\n * @example\n * const handle = setupRuntime(context, {\n * fetch: {\n * onFetch: async (req) => fetch(req),\n * },\n * fs: {\n * getDirectory: async (path) => createNodeDirectoryHandle(`/sandbox${path}`),\n * },\n * });\n *\n * // Use the context...\n *\n * handle.dispose();\n */\nexport function setupRuntime(\n context: QuickJSContext,\n options: SetupRuntimeOptions = {}\n): RuntimeHandle {\n const stateMap = createStateMap();\n\n // Always setup core\n const core = setupCore(context, { stateMap });\n\n let fetch: FetchHandle | undefined;\n let fs: FsHandle | undefined;\n let consoleHandle: ConsoleHandle | undefined;\n let encoding: EncodingHandle | undefined;\n\n // Setup fetch if enabled\n if (options.fetch) {\n const fetchOptions: SetupFetchOptions =\n options.fetch === true\n ? { stateMap, coreHandle: core }\n : { ...options.fetch, stateMap, coreHandle: core };\n\n fetch = setupFetch(context, fetchOptions);\n }\n\n // Setup fs if provided\n if (options.fs) {\n fs = setupFs(context, {\n ...options.fs,\n stateMap,\n coreHandle: core,\n });\n }\n\n // Setup console if enabled\n if (options.console) {\n const consoleOptions: SetupConsoleOptions =\n options.console === true\n ? { stateMap, coreHandle: core }\n : { ...options.console, stateMap, coreHandle: core };\n\n consoleHandle = setupConsole(context, consoleOptions);\n }\n\n // Setup encoding if enabled\n if (options.encoding) {\n const encodingOptions: SetupEncodingOptions =\n options.encoding === true\n ? { stateMap, coreHandle: core }\n : { ...options.encoding, stateMap, coreHandle: core };\n\n encoding = setupEncoding(context, encodingOptions);\n }\n\n return {\n core,\n fetch,\n fs,\n console: consoleHandle,\n encoding,\n stateMap,\n dispose() {\n // Dispose in reverse order of setup\n encoding?.dispose();\n consoleHandle?.dispose();\n fs?.dispose();\n fetch?.dispose();\n core.dispose();\n },\n };\n}\n"
|
|
5
|
+
"// Re-export everything from sub-packages\nexport * from \"@ricsam/quickjs-core\";\nexport * from \"@ricsam/quickjs-console\";\nexport * from \"@ricsam/quickjs-encoding\";\nexport * from \"@ricsam/quickjs-fetch\";\nexport * from \"@ricsam/quickjs-fs\";\nexport * from \"@ricsam/quickjs-timers\";\n\nimport type { QuickJSContext } from \"quickjs-emscripten\";\nimport {\n setupCore,\n createStateMap,\n type StateMap,\n type CoreHandle,\n} from \"@ricsam/quickjs-core\";\nimport {\n setupFetch,\n type SetupFetchOptions,\n type FetchHandle,\n} from \"@ricsam/quickjs-fetch\";\nimport {\n setupFs,\n type SetupFsOptions,\n type FsHandle,\n} from \"@ricsam/quickjs-fs\";\nimport {\n setupConsole,\n type SetupConsoleOptions,\n type ConsoleHandle,\n} from \"@ricsam/quickjs-console\";\nimport {\n setupEncoding,\n type SetupEncodingOptions,\n type EncodingHandle,\n} from \"@ricsam/quickjs-encoding\";\nimport {\n setupTimers,\n type SetupTimersOptions,\n type TimersHandle,\n} from \"@ricsam/quickjs-timers\";\n\n/**\n * Options for setting up the runtime\n */\nexport interface SetupRuntimeOptions {\n /**\n * Fetch API options\n * Pass `true` to enable with defaults\n * Pass `false` or omit to disable\n */\n fetch?: SetupFetchOptions | boolean;\n\n /**\n * File system options\n * Pass options object to enable\n * Pass `false` or omit to disable\n */\n fs?: SetupFsOptions | false;\n\n /**\n * Console options\n * Pass `true` to enable with defaults\n * Pass handlers object to customize\n * Pass `false` or omit to disable\n */\n console?: SetupConsoleOptions | boolean;\n\n /**\n * Encoding options (atob/btoa)\n * Pass `true` to enable with defaults\n * Pass `false` or omit to disable\n */\n encoding?: SetupEncodingOptions | boolean;\n\n /**\n * Timer options (setTimeout, setInterval, clearTimeout, clearInterval)\n * Pass `true` to enable with defaults\n * Pass `false` or omit to disable\n */\n timers?: SetupTimersOptions | boolean;\n}\n\n/**\n * Handle returned from setupRuntime\n */\nexport interface RuntimeHandle {\n /** Core handle (always present) */\n core: CoreHandle;\n\n /** Fetch handle (if enabled) */\n fetch?: FetchHandle;\n\n /** File system handle (if enabled) */\n fs?: FsHandle;\n\n /** Console handle (if enabled) */\n console?: ConsoleHandle;\n\n /** Encoding handle (if enabled) */\n encoding?: EncodingHandle;\n\n /** Timers handle (if enabled) */\n timers?: TimersHandle;\n\n /** Shared state map */\n readonly stateMap: StateMap;\n\n /** Dispose all handles and cleanup */\n dispose(): void;\n}\n\n/**\n * Setup multiple APIs in a QuickJS context\n *\n * @example\n * const handle = setupRuntime(context, {\n * fetch: {\n * onFetch: async (req) => fetch(req),\n * },\n * fs: {\n * getDirectory: async (path) => createNodeDirectoryHandle(`/sandbox${path}`),\n * },\n * });\n *\n * // Use the context...\n *\n * handle.dispose();\n */\nexport function setupRuntime(\n context: QuickJSContext,\n options: SetupRuntimeOptions = {}\n): RuntimeHandle {\n const stateMap = createStateMap();\n\n // Always setup core\n const core = setupCore(context, { stateMap });\n\n let fetch: FetchHandle | undefined;\n let fs: FsHandle | undefined;\n let consoleHandle: ConsoleHandle | undefined;\n let encoding: EncodingHandle | undefined;\n let timers: TimersHandle | undefined;\n\n // Setup fetch if enabled\n if (options.fetch) {\n const fetchOptions: SetupFetchOptions =\n options.fetch === true\n ? { stateMap, coreHandle: core }\n : { ...options.fetch, stateMap, coreHandle: core };\n\n fetch = setupFetch(context, fetchOptions);\n }\n\n // Setup fs if provided\n if (options.fs) {\n fs = setupFs(context, {\n ...options.fs,\n stateMap,\n coreHandle: core,\n });\n }\n\n // Setup console if enabled\n if (options.console) {\n const consoleOptions: SetupConsoleOptions =\n options.console === true\n ? { stateMap, coreHandle: core }\n : { ...options.console, stateMap, coreHandle: core };\n\n consoleHandle = setupConsole(context, consoleOptions);\n }\n\n // Setup encoding if enabled\n if (options.encoding) {\n const encodingOptions: SetupEncodingOptions =\n options.encoding === true\n ? { stateMap, coreHandle: core }\n : { ...options.encoding, stateMap, coreHandle: core };\n\n encoding = setupEncoding(context, encodingOptions);\n }\n\n // Setup timers if enabled\n if (options.timers) {\n const timersOptions: SetupTimersOptions =\n options.timers === true\n ? { stateMap, coreHandle: core }\n : { ...options.timers, stateMap, coreHandle: core };\n\n timers = setupTimers(context, timersOptions);\n }\n\n return {\n core,\n fetch,\n fs,\n console: consoleHandle,\n encoding,\n timers,\n stateMap,\n dispose() {\n // Dispose in reverse order of setup\n timers?.dispose();\n encoding?.dispose();\n consoleHandle?.dispose();\n fs?.dispose();\n fetch?.dispose();\n core.dispose();\n },\n };\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;AACA;AACA;AACA;AACA;AAQO,IALP;AAUO,IAJP;AASO,IAJP;AASO,IAJP;AASO,IAJP;
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AAQO,IALP;AAUO,IAJP;AASO,IAJP;AASO,IAJP;AASO,IAJP;AASO,IAJP;AA6FO,SAAS,YAAY,CAC1B,SACA,UAA+B,CAAC,GACjB;AAAA,EACf,MAAM,WAAW,mCAAe;AAAA,EAGhC,MAAM,OAAO,8BAAU,SAAS,EAAE,SAAS,CAAC;AAAA,EAE5C,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EAGJ,IAAI,QAAQ,OAAO;AAAA,IACjB,MAAM,eACJ,QAAQ,UAAU,OACd,EAAE,UAAU,YAAY,KAAK,IAC7B,KAAK,QAAQ,OAAO,UAAU,YAAY,KAAK;AAAA,IAErD,QAAQ,gCAAW,SAAS,YAAY;AAAA,EAC1C;AAAA,EAGA,IAAI,QAAQ,IAAI;AAAA,IACd,KAAK,0BAAQ,SAAS;AAAA,SACjB,QAAQ;AAAA,MACX;AAAA,MACA,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AAAA,EAGA,IAAI,QAAQ,SAAS;AAAA,IACnB,MAAM,iBACJ,QAAQ,YAAY,OAChB,EAAE,UAAU,YAAY,KAAK,IAC7B,KAAK,QAAQ,SAAS,UAAU,YAAY,KAAK;AAAA,IAEvD,gBAAgB,oCAAa,SAAS,cAAc;AAAA,EACtD;AAAA,EAGA,IAAI,QAAQ,UAAU;AAAA,IACpB,MAAM,kBACJ,QAAQ,aAAa,OACjB,EAAE,UAAU,YAAY,KAAK,IAC7B,KAAK,QAAQ,UAAU,UAAU,YAAY,KAAK;AAAA,IAExD,WAAW,sCAAc,SAAS,eAAe;AAAA,EACnD;AAAA,EAGA,IAAI,QAAQ,QAAQ;AAAA,IAClB,MAAM,gBACJ,QAAQ,WAAW,OACf,EAAE,UAAU,YAAY,KAAK,IAC7B,KAAK,QAAQ,QAAQ,UAAU,YAAY,KAAK;AAAA,IAEtD,SAAS,kCAAY,SAAS,aAAa;AAAA,EAC7C;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,GAAG;AAAA,MAER,QAAQ,QAAQ;AAAA,MAChB,UAAU,QAAQ;AAAA,MAClB,eAAe,QAAQ;AAAA,MACvB,IAAI,QAAQ;AAAA,MACZ,OAAO,QAAQ;AAAA,MACf,KAAK,QAAQ;AAAA;AAAA,EAEjB;AAAA;",
|
|
8
|
+
"debugId": "C7F4ACB19831533264756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/dist/cjs/package.json
CHANGED
package/dist/mjs/index.mjs
CHANGED
|
@@ -5,6 +5,7 @@ export * from "@ricsam/quickjs-console";
|
|
|
5
5
|
export * from "@ricsam/quickjs-encoding";
|
|
6
6
|
export * from "@ricsam/quickjs-fetch";
|
|
7
7
|
export * from "@ricsam/quickjs-fs";
|
|
8
|
+
export * from "@ricsam/quickjs-timers";
|
|
8
9
|
import {
|
|
9
10
|
setupCore,
|
|
10
11
|
createStateMap
|
|
@@ -21,6 +22,9 @@ import {
|
|
|
21
22
|
import {
|
|
22
23
|
setupEncoding
|
|
23
24
|
} from "@ricsam/quickjs-encoding";
|
|
25
|
+
import {
|
|
26
|
+
setupTimers
|
|
27
|
+
} from "@ricsam/quickjs-timers";
|
|
24
28
|
function setupRuntime(context, options = {}) {
|
|
25
29
|
const stateMap = createStateMap();
|
|
26
30
|
const core = setupCore(context, { stateMap });
|
|
@@ -28,6 +32,7 @@ function setupRuntime(context, options = {}) {
|
|
|
28
32
|
let fs;
|
|
29
33
|
let consoleHandle;
|
|
30
34
|
let encoding;
|
|
35
|
+
let timers;
|
|
31
36
|
if (options.fetch) {
|
|
32
37
|
const fetchOptions = options.fetch === true ? { stateMap, coreHandle: core } : { ...options.fetch, stateMap, coreHandle: core };
|
|
33
38
|
fetch = setupFetch(context, fetchOptions);
|
|
@@ -47,14 +52,20 @@ function setupRuntime(context, options = {}) {
|
|
|
47
52
|
const encodingOptions = options.encoding === true ? { stateMap, coreHandle: core } : { ...options.encoding, stateMap, coreHandle: core };
|
|
48
53
|
encoding = setupEncoding(context, encodingOptions);
|
|
49
54
|
}
|
|
55
|
+
if (options.timers) {
|
|
56
|
+
const timersOptions = options.timers === true ? { stateMap, coreHandle: core } : { ...options.timers, stateMap, coreHandle: core };
|
|
57
|
+
timers = setupTimers(context, timersOptions);
|
|
58
|
+
}
|
|
50
59
|
return {
|
|
51
60
|
core,
|
|
52
61
|
fetch,
|
|
53
62
|
fs,
|
|
54
63
|
console: consoleHandle,
|
|
55
64
|
encoding,
|
|
65
|
+
timers,
|
|
56
66
|
stateMap,
|
|
57
67
|
dispose() {
|
|
68
|
+
timers?.dispose();
|
|
58
69
|
encoding?.dispose();
|
|
59
70
|
consoleHandle?.dispose();
|
|
60
71
|
fs?.dispose();
|
|
@@ -67,4 +78,4 @@ export {
|
|
|
67
78
|
setupRuntime
|
|
68
79
|
};
|
|
69
80
|
|
|
70
|
-
//# debugId=
|
|
81
|
+
//# debugId=64F451904941A71C64756E2164756E21
|
package/dist/mjs/index.mjs.map
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"// Re-export everything from sub-packages\nexport * from \"@ricsam/quickjs-core\";\nexport * from \"@ricsam/quickjs-console\";\nexport * from \"@ricsam/quickjs-encoding\";\nexport * from \"@ricsam/quickjs-fetch\";\nexport * from \"@ricsam/quickjs-fs\";\n\nimport type { QuickJSContext } from \"quickjs-emscripten\";\nimport {\n setupCore,\n createStateMap,\n type StateMap,\n type CoreHandle,\n} from \"@ricsam/quickjs-core\";\nimport {\n setupFetch,\n type SetupFetchOptions,\n type FetchHandle,\n} from \"@ricsam/quickjs-fetch\";\nimport {\n setupFs,\n type SetupFsOptions,\n type FsHandle,\n} from \"@ricsam/quickjs-fs\";\nimport {\n setupConsole,\n type SetupConsoleOptions,\n type ConsoleHandle,\n} from \"@ricsam/quickjs-console\";\nimport {\n setupEncoding,\n type SetupEncodingOptions,\n type EncodingHandle,\n} from \"@ricsam/quickjs-encoding\";\n\n/**\n * Options for setting up the runtime\n */\nexport interface SetupRuntimeOptions {\n /**\n * Fetch API options\n * Pass `true` to enable with defaults\n * Pass `false` or omit to disable\n */\n fetch?: SetupFetchOptions | boolean;\n\n /**\n * File system options\n * Pass options object to enable\n * Pass `false` or omit to disable\n */\n fs?: SetupFsOptions | false;\n\n /**\n * Console options\n * Pass `true` to enable with defaults\n * Pass handlers object to customize\n * Pass `false` or omit to disable\n */\n console?: SetupConsoleOptions | boolean;\n\n /**\n * Encoding options (atob/btoa)\n * Pass `true` to enable with defaults\n * Pass `false` or omit to disable\n */\n encoding?: SetupEncodingOptions | boolean;\n}\n\n/**\n * Handle returned from setupRuntime\n */\nexport interface RuntimeHandle {\n /** Core handle (always present) */\n core: CoreHandle;\n\n /** Fetch handle (if enabled) */\n fetch?: FetchHandle;\n\n /** File system handle (if enabled) */\n fs?: FsHandle;\n\n /** Console handle (if enabled) */\n console?: ConsoleHandle;\n\n /** Encoding handle (if enabled) */\n encoding?: EncodingHandle;\n\n /** Shared state map */\n readonly stateMap: StateMap;\n\n /** Dispose all handles and cleanup */\n dispose(): void;\n}\n\n/**\n * Setup multiple APIs in a QuickJS context\n *\n * @example\n * const handle = setupRuntime(context, {\n * fetch: {\n * onFetch: async (req) => fetch(req),\n * },\n * fs: {\n * getDirectory: async (path) => createNodeDirectoryHandle(`/sandbox${path}`),\n * },\n * });\n *\n * // Use the context...\n *\n * handle.dispose();\n */\nexport function setupRuntime(\n context: QuickJSContext,\n options: SetupRuntimeOptions = {}\n): RuntimeHandle {\n const stateMap = createStateMap();\n\n // Always setup core\n const core = setupCore(context, { stateMap });\n\n let fetch: FetchHandle | undefined;\n let fs: FsHandle | undefined;\n let consoleHandle: ConsoleHandle | undefined;\n let encoding: EncodingHandle | undefined;\n\n // Setup fetch if enabled\n if (options.fetch) {\n const fetchOptions: SetupFetchOptions =\n options.fetch === true\n ? { stateMap, coreHandle: core }\n : { ...options.fetch, stateMap, coreHandle: core };\n\n fetch = setupFetch(context, fetchOptions);\n }\n\n // Setup fs if provided\n if (options.fs) {\n fs = setupFs(context, {\n ...options.fs,\n stateMap,\n coreHandle: core,\n });\n }\n\n // Setup console if enabled\n if (options.console) {\n const consoleOptions: SetupConsoleOptions =\n options.console === true\n ? { stateMap, coreHandle: core }\n : { ...options.console, stateMap, coreHandle: core };\n\n consoleHandle = setupConsole(context, consoleOptions);\n }\n\n // Setup encoding if enabled\n if (options.encoding) {\n const encodingOptions: SetupEncodingOptions =\n options.encoding === true\n ? { stateMap, coreHandle: core }\n : { ...options.encoding, stateMap, coreHandle: core };\n\n encoding = setupEncoding(context, encodingOptions);\n }\n\n return {\n core,\n fetch,\n fs,\n console: consoleHandle,\n encoding,\n stateMap,\n dispose() {\n // Dispose in reverse order of setup\n encoding?.dispose();\n consoleHandle?.dispose();\n fs?.dispose();\n fetch?.dispose();\n core.dispose();\n },\n };\n}\n"
|
|
5
|
+
"// Re-export everything from sub-packages\nexport * from \"@ricsam/quickjs-core\";\nexport * from \"@ricsam/quickjs-console\";\nexport * from \"@ricsam/quickjs-encoding\";\nexport * from \"@ricsam/quickjs-fetch\";\nexport * from \"@ricsam/quickjs-fs\";\nexport * from \"@ricsam/quickjs-timers\";\n\nimport type { QuickJSContext } from \"quickjs-emscripten\";\nimport {\n setupCore,\n createStateMap,\n type StateMap,\n type CoreHandle,\n} from \"@ricsam/quickjs-core\";\nimport {\n setupFetch,\n type SetupFetchOptions,\n type FetchHandle,\n} from \"@ricsam/quickjs-fetch\";\nimport {\n setupFs,\n type SetupFsOptions,\n type FsHandle,\n} from \"@ricsam/quickjs-fs\";\nimport {\n setupConsole,\n type SetupConsoleOptions,\n type ConsoleHandle,\n} from \"@ricsam/quickjs-console\";\nimport {\n setupEncoding,\n type SetupEncodingOptions,\n type EncodingHandle,\n} from \"@ricsam/quickjs-encoding\";\nimport {\n setupTimers,\n type SetupTimersOptions,\n type TimersHandle,\n} from \"@ricsam/quickjs-timers\";\n\n/**\n * Options for setting up the runtime\n */\nexport interface SetupRuntimeOptions {\n /**\n * Fetch API options\n * Pass `true` to enable with defaults\n * Pass `false` or omit to disable\n */\n fetch?: SetupFetchOptions | boolean;\n\n /**\n * File system options\n * Pass options object to enable\n * Pass `false` or omit to disable\n */\n fs?: SetupFsOptions | false;\n\n /**\n * Console options\n * Pass `true` to enable with defaults\n * Pass handlers object to customize\n * Pass `false` or omit to disable\n */\n console?: SetupConsoleOptions | boolean;\n\n /**\n * Encoding options (atob/btoa)\n * Pass `true` to enable with defaults\n * Pass `false` or omit to disable\n */\n encoding?: SetupEncodingOptions | boolean;\n\n /**\n * Timer options (setTimeout, setInterval, clearTimeout, clearInterval)\n * Pass `true` to enable with defaults\n * Pass `false` or omit to disable\n */\n timers?: SetupTimersOptions | boolean;\n}\n\n/**\n * Handle returned from setupRuntime\n */\nexport interface RuntimeHandle {\n /** Core handle (always present) */\n core: CoreHandle;\n\n /** Fetch handle (if enabled) */\n fetch?: FetchHandle;\n\n /** File system handle (if enabled) */\n fs?: FsHandle;\n\n /** Console handle (if enabled) */\n console?: ConsoleHandle;\n\n /** Encoding handle (if enabled) */\n encoding?: EncodingHandle;\n\n /** Timers handle (if enabled) */\n timers?: TimersHandle;\n\n /** Shared state map */\n readonly stateMap: StateMap;\n\n /** Dispose all handles and cleanup */\n dispose(): void;\n}\n\n/**\n * Setup multiple APIs in a QuickJS context\n *\n * @example\n * const handle = setupRuntime(context, {\n * fetch: {\n * onFetch: async (req) => fetch(req),\n * },\n * fs: {\n * getDirectory: async (path) => createNodeDirectoryHandle(`/sandbox${path}`),\n * },\n * });\n *\n * // Use the context...\n *\n * handle.dispose();\n */\nexport function setupRuntime(\n context: QuickJSContext,\n options: SetupRuntimeOptions = {}\n): RuntimeHandle {\n const stateMap = createStateMap();\n\n // Always setup core\n const core = setupCore(context, { stateMap });\n\n let fetch: FetchHandle | undefined;\n let fs: FsHandle | undefined;\n let consoleHandle: ConsoleHandle | undefined;\n let encoding: EncodingHandle | undefined;\n let timers: TimersHandle | undefined;\n\n // Setup fetch if enabled\n if (options.fetch) {\n const fetchOptions: SetupFetchOptions =\n options.fetch === true\n ? { stateMap, coreHandle: core }\n : { ...options.fetch, stateMap, coreHandle: core };\n\n fetch = setupFetch(context, fetchOptions);\n }\n\n // Setup fs if provided\n if (options.fs) {\n fs = setupFs(context, {\n ...options.fs,\n stateMap,\n coreHandle: core,\n });\n }\n\n // Setup console if enabled\n if (options.console) {\n const consoleOptions: SetupConsoleOptions =\n options.console === true\n ? { stateMap, coreHandle: core }\n : { ...options.console, stateMap, coreHandle: core };\n\n consoleHandle = setupConsole(context, consoleOptions);\n }\n\n // Setup encoding if enabled\n if (options.encoding) {\n const encodingOptions: SetupEncodingOptions =\n options.encoding === true\n ? { stateMap, coreHandle: core }\n : { ...options.encoding, stateMap, coreHandle: core };\n\n encoding = setupEncoding(context, encodingOptions);\n }\n\n // Setup timers if enabled\n if (options.timers) {\n const timersOptions: SetupTimersOptions =\n options.timers === true\n ? { stateMap, coreHandle: core }\n : { ...options.timers, stateMap, coreHandle: core };\n\n timers = setupTimers(context, timersOptions);\n }\n\n return {\n core,\n fetch,\n fs,\n console: consoleHandle,\n encoding,\n timers,\n stateMap,\n dispose() {\n // Dispose in reverse order of setup\n timers?.dispose();\n encoding?.dispose();\n consoleHandle?.dispose();\n fs?.dispose();\n fetch?.dispose();\n core.dispose();\n },\n };\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": ";;AACA;AACA;AACA;AACA;AACA;AAGA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAKA;AAAA;AAAA;AAKA;AAAA;AAAA;AAKA;AAAA;AAAA;
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": ";;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAKA;AAAA;AAAA;AAKA;AAAA;AAAA;AAKA;AAAA;AAAA;AAKA;AAAA;AAAA;AA6FO,SAAS,YAAY,CAC1B,SACA,UAA+B,CAAC,GACjB;AAAA,EACf,MAAM,WAAW,eAAe;AAAA,EAGhC,MAAM,OAAO,UAAU,SAAS,EAAE,SAAS,CAAC;AAAA,EAE5C,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EAGJ,IAAI,QAAQ,OAAO;AAAA,IACjB,MAAM,eACJ,QAAQ,UAAU,OACd,EAAE,UAAU,YAAY,KAAK,IAC7B,KAAK,QAAQ,OAAO,UAAU,YAAY,KAAK;AAAA,IAErD,QAAQ,WAAW,SAAS,YAAY;AAAA,EAC1C;AAAA,EAGA,IAAI,QAAQ,IAAI;AAAA,IACd,KAAK,QAAQ,SAAS;AAAA,SACjB,QAAQ;AAAA,MACX;AAAA,MACA,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AAAA,EAGA,IAAI,QAAQ,SAAS;AAAA,IACnB,MAAM,iBACJ,QAAQ,YAAY,OAChB,EAAE,UAAU,YAAY,KAAK,IAC7B,KAAK,QAAQ,SAAS,UAAU,YAAY,KAAK;AAAA,IAEvD,gBAAgB,aAAa,SAAS,cAAc;AAAA,EACtD;AAAA,EAGA,IAAI,QAAQ,UAAU;AAAA,IACpB,MAAM,kBACJ,QAAQ,aAAa,OACjB,EAAE,UAAU,YAAY,KAAK,IAC7B,KAAK,QAAQ,UAAU,UAAU,YAAY,KAAK;AAAA,IAExD,WAAW,cAAc,SAAS,eAAe;AAAA,EACnD;AAAA,EAGA,IAAI,QAAQ,QAAQ;AAAA,IAClB,MAAM,gBACJ,QAAQ,WAAW,OACf,EAAE,UAAU,YAAY,KAAK,IAC7B,KAAK,QAAQ,QAAQ,UAAU,YAAY,KAAK;AAAA,IAEtD,SAAS,YAAY,SAAS,aAAa;AAAA,EAC7C;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,GAAG;AAAA,MAER,QAAQ,QAAQ;AAAA,MAChB,UAAU,QAAQ;AAAA,MAClB,eAAe,QAAQ;AAAA,MACvB,IAAI,QAAQ;AAAA,MACZ,OAAO,QAAQ;AAAA,MACf,KAAK,QAAQ;AAAA;AAAA,EAEjB;AAAA;",
|
|
8
|
+
"debugId": "64F451904941A71C64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/dist/mjs/package.json
CHANGED
package/dist/types/index.d.ts
CHANGED
|
@@ -3,12 +3,14 @@ export * from "@ricsam/quickjs-console";
|
|
|
3
3
|
export * from "@ricsam/quickjs-encoding";
|
|
4
4
|
export * from "@ricsam/quickjs-fetch";
|
|
5
5
|
export * from "@ricsam/quickjs-fs";
|
|
6
|
+
export * from "@ricsam/quickjs-timers";
|
|
6
7
|
import type { QuickJSContext } from "quickjs-emscripten";
|
|
7
8
|
import { type StateMap, type CoreHandle } from "@ricsam/quickjs-core";
|
|
8
9
|
import { type SetupFetchOptions, type FetchHandle } from "@ricsam/quickjs-fetch";
|
|
9
10
|
import { type SetupFsOptions, type FsHandle } from "@ricsam/quickjs-fs";
|
|
10
11
|
import { type SetupConsoleOptions, type ConsoleHandle } from "@ricsam/quickjs-console";
|
|
11
12
|
import { type SetupEncodingOptions, type EncodingHandle } from "@ricsam/quickjs-encoding";
|
|
13
|
+
import { type SetupTimersOptions, type TimersHandle } from "@ricsam/quickjs-timers";
|
|
12
14
|
/**
|
|
13
15
|
* Options for setting up the runtime
|
|
14
16
|
*/
|
|
@@ -38,6 +40,12 @@ export interface SetupRuntimeOptions {
|
|
|
38
40
|
* Pass `false` or omit to disable
|
|
39
41
|
*/
|
|
40
42
|
encoding?: SetupEncodingOptions | boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Timer options (setTimeout, setInterval, clearTimeout, clearInterval)
|
|
45
|
+
* Pass `true` to enable with defaults
|
|
46
|
+
* Pass `false` or omit to disable
|
|
47
|
+
*/
|
|
48
|
+
timers?: SetupTimersOptions | boolean;
|
|
41
49
|
}
|
|
42
50
|
/**
|
|
43
51
|
* Handle returned from setupRuntime
|
|
@@ -53,6 +61,8 @@ export interface RuntimeHandle {
|
|
|
53
61
|
console?: ConsoleHandle;
|
|
54
62
|
/** Encoding handle (if enabled) */
|
|
55
63
|
encoding?: EncodingHandle;
|
|
64
|
+
/** Timers handle (if enabled) */
|
|
65
|
+
timers?: TimersHandle;
|
|
56
66
|
/** Shared state map */
|
|
57
67
|
readonly stateMap: StateMap;
|
|
58
68
|
/** Dispose all handles and cleanup */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ricsam/quickjs-runtime",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.9",
|
|
4
4
|
"main": "./dist/cjs/index.cjs",
|
|
5
5
|
"types": "./dist/types/index.d.ts",
|
|
6
6
|
"exports": {
|
|
@@ -16,11 +16,12 @@
|
|
|
16
16
|
"typecheck": "tsc --noEmit"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@ricsam/quickjs-core": "^0.2.
|
|
20
|
-
"@ricsam/quickjs-console": "^0.2.
|
|
21
|
-
"@ricsam/quickjs-encoding": "^0.2.
|
|
22
|
-
"@ricsam/quickjs-fetch": "^0.2.
|
|
23
|
-
"@ricsam/quickjs-fs": "^0.2.
|
|
19
|
+
"@ricsam/quickjs-core": "^0.2.8",
|
|
20
|
+
"@ricsam/quickjs-console": "^0.2.8",
|
|
21
|
+
"@ricsam/quickjs-encoding": "^0.2.8",
|
|
22
|
+
"@ricsam/quickjs-fetch": "^0.2.9",
|
|
23
|
+
"@ricsam/quickjs-fs": "^0.2.8",
|
|
24
|
+
"@ricsam/quickjs-timers": "^0.2.8",
|
|
24
25
|
"quickjs-emscripten": "^0.31.0"
|
|
25
26
|
},
|
|
26
27
|
"peerDependencies": {
|