@ebowwa/sandbox 0.1.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 (108) hide show
  1. package/dist/compilers/index.d.ts +24 -0
  2. package/dist/compilers/index.d.ts.map +1 -0
  3. package/dist/compilers/index.js +42 -0
  4. package/dist/compilers/index.js.map +1 -0
  5. package/dist/compilers/javascript.d.ts +117 -0
  6. package/dist/compilers/javascript.d.ts.map +1 -0
  7. package/dist/compilers/javascript.js +462 -0
  8. package/dist/compilers/javascript.js.map +1 -0
  9. package/dist/compilers/python.d.ts +140 -0
  10. package/dist/compilers/python.d.ts.map +1 -0
  11. package/dist/compilers/python.js +650 -0
  12. package/dist/compilers/python.js.map +1 -0
  13. package/dist/compilers/typescript.d.ts +99 -0
  14. package/dist/compilers/typescript.d.ts.map +1 -0
  15. package/dist/compilers/typescript.js +323 -0
  16. package/dist/compilers/typescript.js.map +1 -0
  17. package/dist/core/cell.d.ts +160 -0
  18. package/dist/core/cell.d.ts.map +1 -0
  19. package/dist/core/cell.js +319 -0
  20. package/dist/core/cell.js.map +1 -0
  21. package/dist/core/compiler.d.ts +126 -0
  22. package/dist/core/compiler.d.ts.map +1 -0
  23. package/dist/core/compiler.js +123 -0
  24. package/dist/core/compiler.js.map +1 -0
  25. package/dist/core/index.d.ts +19 -0
  26. package/dist/core/index.d.ts.map +1 -0
  27. package/dist/core/index.js +14 -0
  28. package/dist/core/index.js.map +1 -0
  29. package/dist/core/limits.d.ts +173 -0
  30. package/dist/core/limits.d.ts.map +1 -0
  31. package/dist/core/limits.js +440 -0
  32. package/dist/core/limits.js.map +1 -0
  33. package/dist/core/permissions.d.ts +103 -0
  34. package/dist/core/permissions.d.ts.map +1 -0
  35. package/dist/core/permissions.js +341 -0
  36. package/dist/core/permissions.js.map +1 -0
  37. package/dist/core/runtime.d.ts +127 -0
  38. package/dist/core/runtime.d.ts.map +1 -0
  39. package/dist/core/runtime.js +325 -0
  40. package/dist/core/runtime.js.map +1 -0
  41. package/dist/core/types.d.ts +380 -0
  42. package/dist/core/types.d.ts.map +1 -0
  43. package/dist/core/types.js +67 -0
  44. package/dist/core/types.js.map +1 -0
  45. package/dist/index.d.ts +145 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +279 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/multi/index.d.ts +9 -0
  50. package/dist/multi/index.d.ts.map +1 -0
  51. package/dist/multi/index.js +7 -0
  52. package/dist/multi/index.js.map +1 -0
  53. package/dist/multi/polyglot.d.ts +179 -0
  54. package/dist/multi/polyglot.d.ts.map +1 -0
  55. package/dist/multi/polyglot.js +319 -0
  56. package/dist/multi/polyglot.js.map +1 -0
  57. package/dist/runtimes/docker.d.ts +97 -0
  58. package/dist/runtimes/docker.d.ts.map +1 -0
  59. package/dist/runtimes/docker.js +368 -0
  60. package/dist/runtimes/docker.js.map +1 -0
  61. package/dist/runtimes/index.d.ts +11 -0
  62. package/dist/runtimes/index.d.ts.map +1 -0
  63. package/dist/runtimes/index.js +9 -0
  64. package/dist/runtimes/index.js.map +1 -0
  65. package/dist/runtimes/process.d.ts +47 -0
  66. package/dist/runtimes/process.d.ts.map +1 -0
  67. package/dist/runtimes/process.js +230 -0
  68. package/dist/runtimes/process.js.map +1 -0
  69. package/dist/session/index.d.ts +12 -0
  70. package/dist/session/index.d.ts.map +1 -0
  71. package/dist/session/index.js +9 -0
  72. package/dist/session/index.js.map +1 -0
  73. package/dist/session/kernel.d.ts +199 -0
  74. package/dist/session/kernel.d.ts.map +1 -0
  75. package/dist/session/kernel.js +400 -0
  76. package/dist/session/kernel.js.map +1 -0
  77. package/dist/session/notebook.d.ts +168 -0
  78. package/dist/session/notebook.d.ts.map +1 -0
  79. package/dist/session/notebook.js +499 -0
  80. package/dist/session/notebook.js.map +1 -0
  81. package/dist/session/repl.d.ts +159 -0
  82. package/dist/session/repl.d.ts.map +1 -0
  83. package/dist/session/repl.js +409 -0
  84. package/dist/session/repl.js.map +1 -0
  85. package/package.json +142 -0
  86. package/src/compilers/index.ts +80 -0
  87. package/src/compilers/javascript.ts +571 -0
  88. package/src/compilers/python.ts +785 -0
  89. package/src/compilers/typescript.ts +442 -0
  90. package/src/core/cell.ts +439 -0
  91. package/src/core/compiler.ts +250 -0
  92. package/src/core/index.ts +123 -0
  93. package/src/core/limits.ts +508 -0
  94. package/src/core/permissions.ts +409 -0
  95. package/src/core/runtime.ts +499 -0
  96. package/src/core/types.ts +528 -0
  97. package/src/global.d.ts +59 -0
  98. package/src/index.ts +515 -0
  99. package/src/multi/index.ts +22 -0
  100. package/src/multi/polyglot.ts +461 -0
  101. package/src/runtimes/docker.ts +501 -0
  102. package/src/runtimes/index.ts +21 -0
  103. package/src/runtimes/process.ts +316 -0
  104. package/src/session/index.ts +41 -0
  105. package/src/session/kernel.ts +553 -0
  106. package/src/session/notebook.ts +635 -0
  107. package/src/session/repl.ts +521 -0
  108. package/src/wasm2wasm.d.ts +35 -0
package/dist/index.js ADDED
@@ -0,0 +1,279 @@
1
+ /**
2
+ * @ebowwa/sandbox
3
+ *
4
+ * Composable sandbox primitives for multi-language code execution.
5
+ * Jupyter/REPL-style with Python+Rust+JS+TS+WASM support.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { Sandbox, createNotebook, createREPL } from "@ebowwa/sandbox";
10
+ *
11
+ * // Quick execution
12
+ * const sandbox = new Sandbox();
13
+ * const result = await sandbox.execute("console.log('Hello')", "javascript");
14
+ *
15
+ * // Notebook
16
+ * const notebook = createNotebook({ name: "My Notebook" });
17
+ * notebook.addCell({ language: "javascript", source: "const x = 42" });
18
+ * notebook.runAll();
19
+ *
20
+ * // REPL
21
+ * const repl = createREPL({ language: "python" });
22
+ * repl.start();
23
+ * ```
24
+ */
25
+ // Type utilities
26
+ export { permissionsFromLevel, parseMemory, parseTime, } from "./core/types.js";
27
+ export { BaseCompiler, WasmCompiler, CompilerRegistry, defaultCompilerRegistry, } from "./core/compiler.js";
28
+ export { Wasm2WasmRuntime, NativeWasmRuntime, RuntimeRegistry, defaultRuntimeRegistry, } from "./core/runtime.js";
29
+ export { ProcessRuntime, DockerRuntime, } from "./runtimes/index.js";
30
+ // Permission exports
31
+ export { PermissionChecker, PermissionBuilder, createPermissions, mergePermissions, impliesPermission, upgradePermissions, } from "./core/permissions.js";
32
+ export { DEFAULT_LIMITS, LimitsParser, LimitsEnforcer, LimitsBuilder, mergeLimits, } from "./core/limits.js";
33
+ export { CellBuilder, CellExecutor, CellRegistry, createCell, createCellsFromMarkdown, cellsToMarkdown, } from "./core/cell.js";
34
+ export { BaseKernel, KernelManager, BaseNotebook, createNotebook, BaseREPL, createREPL, } from "./session/index.js";
35
+ export { PolyglotSession, PolyglotNotebook, createPolyglotSession, createPolyglotNotebook, } from "./multi/index.js";
36
+ import { BaseKernel, KernelManager } from "./session/kernel.js";
37
+ import { BaseNotebook, createNotebook } from "./session/notebook.js";
38
+ import { BaseREPL, createREPL } from "./session/repl.js";
39
+ import { PolyglotSession } from "./multi/polyglot.js";
40
+ import { defaultCompilerRegistry } from "./core/compiler.js";
41
+ import { defaultRuntimeRegistry } from "./core/runtime.js";
42
+ import { createPermissions, permissionsFromLevel } from "./core/permissions.js";
43
+ import { DEFAULT_LIMITS } from "./core/limits.js";
44
+ import { ProcessRuntime } from "./runtimes/process.js";
45
+ import { DockerRuntime } from "./runtimes/docker.js";
46
+ // Register elevated permission runtimes
47
+ defaultRuntimeRegistry.register(new ProcessRuntime());
48
+ defaultRuntimeRegistry.register(new DockerRuntime());
49
+ /**
50
+ * Normalize permissions to Permissions object
51
+ */
52
+ function normalizePermissions(perms) {
53
+ if (!perms) {
54
+ return createPermissions("isolated");
55
+ }
56
+ if (typeof perms === "string") {
57
+ return permissionsFromLevel(perms);
58
+ }
59
+ return perms;
60
+ }
61
+ /**
62
+ * Sandbox Implementation
63
+ *
64
+ * Main entry point for sandboxed execution.
65
+ */
66
+ export class Sandbox {
67
+ defaultOptions;
68
+ kernelManager = new KernelManager();
69
+ constructor(defaultOptions) {
70
+ this.defaultOptions = defaultOptions;
71
+ }
72
+ /**
73
+ * Quick execute (isolated, no state)
74
+ */
75
+ async execute(code, language = "javascript", options) {
76
+ const merged = this.mergeOptions(options);
77
+ const perms = normalizePermissions(merged.permissions);
78
+ // Get compiler and runtime
79
+ const compiler = defaultCompilerRegistry.get(language);
80
+ if (!compiler) {
81
+ throw new Error(`No compiler for language: ${language}`);
82
+ }
83
+ const runtime = defaultRuntimeRegistry.selectBest({
84
+ filesystem: perms.fs?.write,
85
+ network: perms.network?.outbound,
86
+ });
87
+ if (!runtime) {
88
+ throw new Error("No available runtime");
89
+ }
90
+ // Compile
91
+ const compiled = await compiler.compile(code, perms, merged.limits ?? {});
92
+ // Execute
93
+ return runtime.execute({ wasm: compiled }, {
94
+ permissions: perms,
95
+ limits: merged.limits ?? {},
96
+ env: merged.environment,
97
+ cwd: merged.workingDirectory,
98
+ });
99
+ }
100
+ /**
101
+ * Quick execute with preset
102
+ */
103
+ async quick(code, preset = "isolated") {
104
+ const levelMap = {
105
+ isolated: "isolated",
106
+ trusted: "filesystem",
107
+ admin: "admin",
108
+ };
109
+ const permissions = permissionsFromLevel(levelMap[preset]);
110
+ const limits = DEFAULT_LIMITS[preset];
111
+ return this.execute(code, "javascript", {
112
+ permissions,
113
+ limits: {
114
+ memory: limits.memoryBytes,
115
+ timeout: limits.timeoutMs,
116
+ cpuTime: limits.cpuTimeMs,
117
+ maxInstructions: limits.maxInstructions,
118
+ maxOutputSize: limits.maxOutputBytes,
119
+ maxStackDepth: limits.maxStackDepth,
120
+ },
121
+ });
122
+ }
123
+ /**
124
+ * Create a session for interactive use
125
+ */
126
+ createSession(options) {
127
+ const merged = this.mergeOptions(options);
128
+ return new SandboxSession(this.kernelManager, {
129
+ permissions: normalizePermissions(merged.permissions),
130
+ limits: merged.limits ?? {},
131
+ environment: merged.environment,
132
+ workingDirectory: merged.workingDirectory,
133
+ sharedMemory: options?.sharedMemory ?? false,
134
+ });
135
+ }
136
+ /**
137
+ * Create a notebook
138
+ */
139
+ createNotebook(options) {
140
+ const merged = this.mergeOptions(options);
141
+ return createNotebook({
142
+ name: options?.name,
143
+ defaultLanguage: options?.defaultLanguage,
144
+ permissions: normalizePermissions(merged.permissions),
145
+ limits: merged.limits,
146
+ kernelManager: this.kernelManager,
147
+ });
148
+ }
149
+ /**
150
+ * Create a REPL
151
+ */
152
+ createREPL(options) {
153
+ const merged = this.mergeOptions(options);
154
+ return createREPL({
155
+ language: options?.language,
156
+ permissions: normalizePermissions(merged.permissions),
157
+ limits: merged.limits,
158
+ kernelManager: this.kernelManager,
159
+ });
160
+ }
161
+ /**
162
+ * Create polyglot session
163
+ */
164
+ createPolyglot(options) {
165
+ const merged = this.mergeOptions(options);
166
+ return new PolyglotSession({
167
+ permissions: normalizePermissions(merged.permissions),
168
+ limits: merged.limits,
169
+ kernelManager: this.kernelManager,
170
+ });
171
+ }
172
+ /**
173
+ * Merge options with defaults
174
+ */
175
+ mergeOptions(options) {
176
+ const rawPerms = options?.permissions ?? this.defaultOptions?.permissions ?? "isolated";
177
+ return {
178
+ permissions: normalizePermissions(rawPerms),
179
+ limits: options?.limits ?? this.defaultOptions?.limits,
180
+ language: options?.language ?? this.defaultOptions?.language,
181
+ environment: options?.environment ?? this.defaultOptions?.environment ?? {},
182
+ workingDirectory: options?.workingDirectory ?? this.defaultOptions?.workingDirectory ?? process.cwd(),
183
+ };
184
+ }
185
+ }
186
+ /**
187
+ * Sandbox Session
188
+ *
189
+ * Stateful execution context.
190
+ */
191
+ export class SandboxSession {
192
+ id;
193
+ kernelManager;
194
+ kernels = new Map();
195
+ sharedState = new Map();
196
+ options;
197
+ constructor(kernelManager, options) {
198
+ this.id = `session-${Date.now()}`;
199
+ this.kernelManager = kernelManager;
200
+ this.options = options;
201
+ }
202
+ /**
203
+ * Get kernel for language
204
+ */
205
+ getKernel(language) {
206
+ return this.kernels.get(language);
207
+ }
208
+ /**
209
+ * Start kernel for language
210
+ */
211
+ async startKernel(language) {
212
+ let kernel = this.kernels.get(language);
213
+ if (!kernel) {
214
+ const compiler = defaultCompilerRegistry.get(language);
215
+ const runtime = defaultRuntimeRegistry.selectBest({});
216
+ if (!compiler || !runtime) {
217
+ throw new Error(`Cannot create kernel for ${language}`);
218
+ }
219
+ const kernelOptions = {
220
+ language,
221
+ compiler,
222
+ runtime,
223
+ permissions: this.options.permissions,
224
+ limits: this.options.limits,
225
+ env: this.options.environment,
226
+ cwd: this.options.workingDirectory,
227
+ };
228
+ kernel = await this.kernelManager.createKernel(kernelOptions);
229
+ this.kernels.set(language, kernel);
230
+ }
231
+ return kernel;
232
+ }
233
+ /**
234
+ * Execute code
235
+ */
236
+ async execute(code, language, options) {
237
+ const kernel = await this.startKernel(language);
238
+ return kernel.execute(code, options);
239
+ }
240
+ /**
241
+ * Get shared state
242
+ */
243
+ getSharedState() {
244
+ return new Map(this.sharedState);
245
+ }
246
+ /**
247
+ * Set shared state
248
+ */
249
+ setSharedState(key, value) {
250
+ this.sharedState.set(key, value);
251
+ }
252
+ /**
253
+ * Shutdown session
254
+ */
255
+ async shutdown() {
256
+ for (const language of this.kernels.keys()) {
257
+ await this.kernelManager.shutdownKernel(this.kernels.get(language).getId());
258
+ }
259
+ this.kernels.clear();
260
+ this.sharedState.clear();
261
+ }
262
+ }
263
+ /**
264
+ * Create default sandbox instance
265
+ */
266
+ export const sandbox = new Sandbox();
267
+ /**
268
+ * Quick execute helper
269
+ */
270
+ export async function execute(code, language = "javascript", options) {
271
+ return sandbox.execute(code, language, options);
272
+ }
273
+ /**
274
+ * Quick execute with preset helper
275
+ */
276
+ export async function quick(code, preset = "isolated") {
277
+ return sandbox.quick(code, preset);
278
+ }
279
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Multi-Language Primitives
3
+ *
4
+ * Execute code across multiple languages with shared state.
5
+ */
6
+ export type { PolyglotOptions, VariableBinding, PolyglotContext, } from "./polyglot.js";
7
+ export { PolyglotSession, PolyglotNotebook, createPolyglotSession, createPolyglotNotebook, } from "./polyglot.js";
8
+ export type { LanguageBridge } from "../core/types.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/multi/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,eAAe,EACf,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAGvB,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Multi-Language Primitives
3
+ *
4
+ * Execute code across multiple languages with shared state.
5
+ */
6
+ export { PolyglotSession, PolyglotNotebook, createPolyglotSession, createPolyglotNotebook, } from "./polyglot.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/multi/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Polyglot Primitive
3
+ *
4
+ * Execute code across multiple languages with shared state.
5
+ * Enables true multi-language programming with seamless data exchange.
6
+ */
7
+ import type { Language, ExecutionResult, Permissions, Limits, PolyglotCell, LanguageBridge } from "../core/types.js";
8
+ import { BaseKernel, KernelManager } from "../session/kernel.js";
9
+ /**
10
+ * Polyglot session options
11
+ */
12
+ export interface PolyglotOptions {
13
+ /** Available languages */
14
+ languages?: Language[];
15
+ /** Permissions */
16
+ permissions?: Permissions;
17
+ /** Resource limits */
18
+ limits?: Limits;
19
+ /** Kernel manager */
20
+ kernelManager?: KernelManager;
21
+ /** Kernel factory */
22
+ kernelFactory?: (language: Language) => Promise<BaseKernel>;
23
+ }
24
+ /**
25
+ * Language variable binding
26
+ */
27
+ export interface VariableBinding {
28
+ /** Variable name */
29
+ name: string;
30
+ /** Source language */
31
+ fromLanguage: Language;
32
+ /** Target language */
33
+ toLanguage: Language;
34
+ /** Serialized value */
35
+ serializedValue: Uint8Array;
36
+ /** Type information */
37
+ type?: string;
38
+ }
39
+ /**
40
+ * Polyglot execution context
41
+ */
42
+ export interface PolyglotContext {
43
+ /** Current language */
44
+ language: Language;
45
+ /** Variables from other languages */
46
+ bindings: Map<string, VariableBinding>;
47
+ /** Shared state */
48
+ sharedState: Map<string, unknown>;
49
+ /** Kernel for current language */
50
+ kernel: BaseKernel;
51
+ }
52
+ /**
53
+ * Polyglot Session
54
+ *
55
+ * Manages multi-language execution with variable sharing.
56
+ */
57
+ export declare class PolyglotSession {
58
+ private kernelManager;
59
+ private kernelFactory?;
60
+ private kernels;
61
+ private bridges;
62
+ private sharedState;
63
+ private variableBindings;
64
+ private permissions;
65
+ private limits;
66
+ constructor(options?: PolyglotOptions);
67
+ /**
68
+ * Execute code in a language
69
+ */
70
+ execute(code: string, language: Language, options?: {
71
+ imports?: Map<string, string>;
72
+ }): Promise<ExecutionResult>;
73
+ /**
74
+ * Execute polyglot cell (multiple language variants)
75
+ */
76
+ executePolyglot(cell: PolyglotCell, preferredLanguage?: Language): Promise<{
77
+ language: Language;
78
+ result: ExecutionResult;
79
+ }>;
80
+ /**
81
+ * Get or create kernel for language
82
+ */
83
+ private getKernel;
84
+ /**
85
+ * Generate import code for a language
86
+ */
87
+ private generateImportCode;
88
+ /**
89
+ * Generate variable assignment in target language
90
+ */
91
+ private generateVariableAssignment;
92
+ /**
93
+ * Get bridge between languages
94
+ */
95
+ getBridge(from: Language, to: Language): LanguageBridge | undefined;
96
+ /**
97
+ * Register custom bridge
98
+ */
99
+ registerBridge(bridge: LanguageBridge): void;
100
+ /**
101
+ * Set shared variable
102
+ */
103
+ setVariable(language: Language, name: string, value: unknown): void;
104
+ /**
105
+ * Get shared variable
106
+ */
107
+ getVariable(language: Language, name: string): unknown;
108
+ /**
109
+ * Transfer variable between languages
110
+ */
111
+ transferVariable(fromLanguage: Language, name: string, toLanguage: Language): Promise<unknown>;
112
+ /**
113
+ * Get all shared variables
114
+ */
115
+ getSharedVariables(): Map<string, unknown>;
116
+ /**
117
+ * Clear shared state
118
+ */
119
+ clearState(): void;
120
+ /**
121
+ * Shutdown all kernels
122
+ */
123
+ shutdown(): Promise<void>;
124
+ }
125
+ /**
126
+ * Polyglot Notebook
127
+ *
128
+ * Notebook with multi-language cells and variable sharing.
129
+ */
130
+ export declare class PolyglotNotebook {
131
+ private cells;
132
+ private session;
133
+ private executionOrder;
134
+ constructor(options?: PolyglotOptions);
135
+ /**
136
+ * Add polyglot cell
137
+ */
138
+ addCell(variants: Map<Language, string>, id?: string): PolyglotCell;
139
+ /**
140
+ * Add single-language cell
141
+ */
142
+ addSingleCell(language: Language, code: string, id?: string): PolyglotCell;
143
+ /**
144
+ * Execute all cells
145
+ */
146
+ runAll(): Promise<Array<{
147
+ cellId: string;
148
+ language: Language;
149
+ result: ExecutionResult;
150
+ }>>;
151
+ /**
152
+ * Execute single cell
153
+ */
154
+ runCell(cellId: string, preferredLanguage?: Language): Promise<{
155
+ language: Language;
156
+ result: ExecutionResult;
157
+ }>;
158
+ /**
159
+ * Get cell
160
+ */
161
+ getCell(id: string): PolyglotCell | undefined;
162
+ /**
163
+ * Get all cells
164
+ */
165
+ getCells(): PolyglotCell[];
166
+ /**
167
+ * Get session
168
+ */
169
+ getSession(): PolyglotSession;
170
+ }
171
+ /**
172
+ * Create polyglot session
173
+ */
174
+ export declare function createPolyglotSession(options?: PolyglotOptions): PolyglotSession;
175
+ /**
176
+ * Create polyglot notebook
177
+ */
178
+ export declare function createPolyglotNotebook(options?: PolyglotOptions): PolyglotNotebook;
179
+ //# sourceMappingURL=polyglot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polyglot.d.ts","sourceRoot":"","sources":["../../src/multi/polyglot.ts"],"names":[],"mappings":"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"}