sandlot 0.1.3 → 0.2.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.
- package/dist/browser/bundler.d.ts +68 -0
- package/dist/browser/bundler.d.ts.map +1 -0
- package/dist/browser/executor.d.ts +46 -0
- package/dist/browser/executor.d.ts.map +1 -0
- package/dist/browser/index.d.ts +9 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +2692 -0
- package/dist/browser/preset.d.ts +63 -0
- package/dist/browser/preset.d.ts.map +1 -0
- package/dist/commands/index.d.ts +20 -11
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/types.d.ts +31 -132
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/core/bundler-utils.d.ts +142 -0
- package/dist/core/bundler-utils.d.ts.map +1 -0
- package/dist/core/esm-types-resolver.d.ts +125 -0
- package/dist/core/esm-types-resolver.d.ts.map +1 -0
- package/dist/core/executor.d.ts +35 -0
- package/dist/core/executor.d.ts.map +1 -0
- package/dist/{fs.d.ts → core/fs.d.ts} +27 -29
- package/dist/core/fs.d.ts.map +1 -0
- package/dist/core/sandbox.d.ts +30 -0
- package/dist/core/sandbox.d.ts.map +1 -0
- package/dist/core/sandlot.d.ts +30 -0
- package/dist/core/sandlot.d.ts.map +1 -0
- package/dist/core/shared-module-registry.d.ts +46 -0
- package/dist/core/shared-module-registry.d.ts.map +1 -0
- package/dist/core/typechecker.d.ts +60 -0
- package/dist/core/typechecker.d.ts.map +1 -0
- package/dist/index.d.ts +11 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1405 -2049
- package/dist/node/bundler.d.ts +48 -0
- package/dist/node/bundler.d.ts.map +1 -0
- package/dist/node/executor.d.ts +48 -0
- package/dist/node/executor.d.ts.map +1 -0
- package/dist/node/index.d.ts +9 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +2646 -0
- package/dist/node/preset.d.ts +62 -0
- package/dist/node/preset.d.ts.map +1 -0
- package/dist/types.d.ts +525 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +27 -8
- package/src/browser/bundler.ts +294 -0
- package/src/browser/executor.ts +71 -0
- package/src/browser/index.ts +57 -0
- package/src/browser/preset.ts +179 -0
- package/src/commands/index.ts +526 -43
- package/src/commands/types.ts +82 -146
- package/src/core/bundler-utils.ts +630 -0
- package/src/core/esm-types-resolver.ts +432 -0
- package/src/core/executor.ts +161 -0
- package/src/{fs.ts → core/fs.ts} +59 -37
- package/src/core/sandbox.ts +621 -0
- package/src/core/sandlot.ts +77 -0
- package/src/core/shared-module-registry.ts +138 -0
- package/src/core/typechecker.ts +607 -0
- package/src/index.ts +104 -139
- package/src/node/bundler.ts +194 -0
- package/src/node/executor.ts +87 -0
- package/src/node/index.ts +39 -0
- package/src/node/preset.ts +178 -0
- package/src/types.ts +668 -0
- package/README.md +0 -243
- package/dist/build-emitter.d.ts +0 -47
- package/dist/build-emitter.d.ts.map +0 -1
- package/dist/builder.d.ts +0 -370
- package/dist/builder.d.ts.map +0 -1
- package/dist/bundler.d.ts +0 -148
- package/dist/bundler.d.ts.map +0 -1
- package/dist/commands/compile.d.ts +0 -13
- package/dist/commands/compile.d.ts.map +0 -1
- package/dist/commands/packages.d.ts +0 -17
- package/dist/commands/packages.d.ts.map +0 -1
- package/dist/commands/run.d.ts +0 -40
- package/dist/commands/run.d.ts.map +0 -1
- package/dist/commands.d.ts +0 -179
- package/dist/commands.d.ts.map +0 -1
- package/dist/fs.d.ts.map +0 -1
- package/dist/internal.d.ts +0 -79
- package/dist/internal.d.ts.map +0 -1
- package/dist/internal.js +0 -1976
- package/dist/loader.d.ts +0 -164
- package/dist/loader.d.ts.map +0 -1
- package/dist/packages.d.ts +0 -199
- package/dist/packages.d.ts.map +0 -1
- package/dist/runner.d.ts +0 -314
- package/dist/runner.d.ts.map +0 -1
- package/dist/sandbox-manager.d.ts +0 -261
- package/dist/sandbox-manager.d.ts.map +0 -1
- package/dist/sandbox.d.ts +0 -267
- package/dist/sandbox.d.ts.map +0 -1
- package/dist/shared-modules.d.ts +0 -148
- package/dist/shared-modules.d.ts.map +0 -1
- package/dist/shared-resources.d.ts +0 -102
- package/dist/shared-resources.d.ts.map +0 -1
- package/dist/ts-libs.d.ts +0 -98
- package/dist/ts-libs.d.ts.map +0 -1
- package/dist/typechecker.d.ts +0 -127
- package/dist/typechecker.d.ts.map +0 -1
- package/src/build-emitter.ts +0 -64
- package/src/builder.ts +0 -498
- package/src/bundler.ts +0 -542
- package/src/commands/compile.ts +0 -236
- package/src/commands/packages.ts +0 -154
- package/src/commands/run.ts +0 -245
- package/src/internal.ts +0 -119
- package/src/loader.ts +0 -229
- package/src/packages.ts +0 -936
- package/src/sandbox.ts +0 -396
- package/src/shared-modules.ts +0 -280
- package/src/shared-resources.ts +0 -166
- package/src/ts-libs.ts +0 -320
- package/src/typechecker.ts +0 -635
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { createSandlot } from "../core/sandlot";
|
|
2
|
+
import {
|
|
3
|
+
EsmTypesResolver,
|
|
4
|
+
type EsmTypesResolverOptions,
|
|
5
|
+
} from "../core/esm-types-resolver";
|
|
6
|
+
import type { Sandlot, SandlotOptions } from "../types";
|
|
7
|
+
import { EsbuildNativeBundler, type EsbuildNativeBundlerOptions } from "./bundler";
|
|
8
|
+
import {
|
|
9
|
+
Typechecker,
|
|
10
|
+
type TypecheckerOptions,
|
|
11
|
+
} from "../core/typechecker";
|
|
12
|
+
import {
|
|
13
|
+
NodeExecutor,
|
|
14
|
+
type NodeExecutorOptions,
|
|
15
|
+
} from "./executor";
|
|
16
|
+
|
|
17
|
+
export interface CreateNodeSandlotOptions
|
|
18
|
+
extends Omit<SandlotOptions, "bundler" | "typechecker" | "typesResolver" | "executor"> {
|
|
19
|
+
/**
|
|
20
|
+
* Custom bundler options, or a pre-configured bundler instance.
|
|
21
|
+
*/
|
|
22
|
+
bundler?: EsbuildNativeBundlerOptions | SandlotOptions["bundler"];
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Custom typechecker options, or a pre-configured typechecker instance.
|
|
26
|
+
* Set to `false` to disable type checking.
|
|
27
|
+
*/
|
|
28
|
+
typechecker?:
|
|
29
|
+
| TypecheckerOptions
|
|
30
|
+
| SandlotOptions["typechecker"]
|
|
31
|
+
| false;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Custom types resolver options, or a pre-configured resolver instance.
|
|
35
|
+
* Set to `false` to disable type resolution.
|
|
36
|
+
*/
|
|
37
|
+
typesResolver?:
|
|
38
|
+
| EsmTypesResolverOptions
|
|
39
|
+
| SandlotOptions["typesResolver"]
|
|
40
|
+
| false;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Custom executor options, or a pre-configured executor instance.
|
|
44
|
+
* Set to `false` to disable execution (sandbox.run() will throw).
|
|
45
|
+
* Defaults to NodeExecutor.
|
|
46
|
+
*/
|
|
47
|
+
executor?:
|
|
48
|
+
| NodeExecutorOptions
|
|
49
|
+
| SandlotOptions["executor"]
|
|
50
|
+
| false;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Create a Sandlot instance pre-configured for Node.js/Bun/Deno environments.
|
|
55
|
+
*
|
|
56
|
+
* This is a convenience function that sets up sensible defaults:
|
|
57
|
+
* - EsbuildNativeBundler for bundling (uses native esbuild)
|
|
58
|
+
* - Typechecker for type checking (fetches libs from CDN)
|
|
59
|
+
* - EsmTypesResolver for npm type resolution
|
|
60
|
+
* - NodeExecutor for code execution
|
|
61
|
+
*
|
|
62
|
+
* @example Basic usage
|
|
63
|
+
* ```ts
|
|
64
|
+
* const sandlot = await createNodeSandlot();
|
|
65
|
+
* const sandbox = await sandlot.createSandbox();
|
|
66
|
+
* ```
|
|
67
|
+
*
|
|
68
|
+
* @example With shared modules
|
|
69
|
+
* ```ts
|
|
70
|
+
* import express from "express";
|
|
71
|
+
*
|
|
72
|
+
* const sandlot = await createNodeSandlot({
|
|
73
|
+
* sharedModules: {
|
|
74
|
+
* express,
|
|
75
|
+
* },
|
|
76
|
+
* });
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
79
|
+
* @example Disable type checking for faster builds
|
|
80
|
+
* ```ts
|
|
81
|
+
* const sandlot = await createNodeSandlot({
|
|
82
|
+
* typechecker: false,
|
|
83
|
+
* });
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export async function createNodeSandlot(
|
|
87
|
+
options: CreateNodeSandlotOptions = {}
|
|
88
|
+
): Promise<Sandlot> {
|
|
89
|
+
const { bundler, typechecker, typesResolver, executor, ...rest } = options;
|
|
90
|
+
|
|
91
|
+
// Create or use provided bundler
|
|
92
|
+
const bundlerInstance = isBundler(bundler)
|
|
93
|
+
? bundler
|
|
94
|
+
: new EsbuildNativeBundler(bundler as EsbuildNativeBundlerOptions | undefined);
|
|
95
|
+
|
|
96
|
+
// Initialize bundler (loads native esbuild)
|
|
97
|
+
await bundlerInstance.initialize();
|
|
98
|
+
|
|
99
|
+
// Create or use provided typechecker
|
|
100
|
+
const typecheckerInstance =
|
|
101
|
+
typechecker === false
|
|
102
|
+
? undefined
|
|
103
|
+
: isTypechecker(typechecker)
|
|
104
|
+
? typechecker
|
|
105
|
+
: new Typechecker(
|
|
106
|
+
typechecker as TypecheckerOptions | undefined
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
// Create or use provided types resolver
|
|
110
|
+
const typesResolverInstance =
|
|
111
|
+
typesResolver === false
|
|
112
|
+
? undefined
|
|
113
|
+
: isTypesResolver(typesResolver)
|
|
114
|
+
? typesResolver
|
|
115
|
+
: new EsmTypesResolver(
|
|
116
|
+
typesResolver as EsmTypesResolverOptions | undefined
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
// Create or use provided executor (defaults to NodeExecutor)
|
|
120
|
+
const executorInstance =
|
|
121
|
+
executor === false
|
|
122
|
+
? undefined
|
|
123
|
+
: isExecutor(executor)
|
|
124
|
+
? executor
|
|
125
|
+
: new NodeExecutor(
|
|
126
|
+
executor as NodeExecutorOptions | undefined
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
return createSandlot({
|
|
130
|
+
...rest,
|
|
131
|
+
bundler: bundlerInstance,
|
|
132
|
+
typechecker: typecheckerInstance,
|
|
133
|
+
typesResolver: typesResolverInstance,
|
|
134
|
+
executor: executorInstance,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Type guards for detecting pre-configured instances
|
|
139
|
+
|
|
140
|
+
function isBundler(
|
|
141
|
+
value: unknown
|
|
142
|
+
): value is SandlotOptions["bundler"] & { initialize(): Promise<void> } {
|
|
143
|
+
return (
|
|
144
|
+
typeof value === "object" &&
|
|
145
|
+
value !== null &&
|
|
146
|
+
"bundle" in value &&
|
|
147
|
+
typeof (value as { bundle: unknown }).bundle === "function"
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function isTypechecker(value: unknown): value is SandlotOptions["typechecker"] {
|
|
152
|
+
return (
|
|
153
|
+
typeof value === "object" &&
|
|
154
|
+
value !== null &&
|
|
155
|
+
"typecheck" in value &&
|
|
156
|
+
typeof (value as { typecheck: unknown }).typecheck === "function"
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
function isTypesResolver(
|
|
161
|
+
value: unknown
|
|
162
|
+
): value is SandlotOptions["typesResolver"] {
|
|
163
|
+
return (
|
|
164
|
+
typeof value === "object" &&
|
|
165
|
+
value !== null &&
|
|
166
|
+
"resolveTypes" in value &&
|
|
167
|
+
typeof (value as { resolveTypes: unknown }).resolveTypes === "function"
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
function isExecutor(value: unknown): value is SandlotOptions["executor"] {
|
|
172
|
+
return (
|
|
173
|
+
typeof value === "object" &&
|
|
174
|
+
value !== null &&
|
|
175
|
+
"execute" in value &&
|
|
176
|
+
typeof (value as { execute: unknown }).execute === "function"
|
|
177
|
+
);
|
|
178
|
+
}
|