sandlot 0.1.4 → 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.
Files changed (115) hide show
  1. package/dist/browser/bundler.d.ts +68 -0
  2. package/dist/browser/bundler.d.ts.map +1 -0
  3. package/dist/browser/executor.d.ts +46 -0
  4. package/dist/browser/executor.d.ts.map +1 -0
  5. package/dist/browser/index.d.ts +9 -0
  6. package/dist/browser/index.d.ts.map +1 -0
  7. package/dist/browser/index.js +2692 -0
  8. package/dist/browser/preset.d.ts +63 -0
  9. package/dist/browser/preset.d.ts.map +1 -0
  10. package/dist/commands/index.d.ts +20 -11
  11. package/dist/commands/index.d.ts.map +1 -1
  12. package/dist/commands/types.d.ts +31 -132
  13. package/dist/commands/types.d.ts.map +1 -1
  14. package/dist/core/bundler-utils.d.ts +142 -0
  15. package/dist/core/bundler-utils.d.ts.map +1 -0
  16. package/dist/core/esm-types-resolver.d.ts +125 -0
  17. package/dist/core/esm-types-resolver.d.ts.map +1 -0
  18. package/dist/core/executor.d.ts +35 -0
  19. package/dist/core/executor.d.ts.map +1 -0
  20. package/dist/{fs.d.ts → core/fs.d.ts} +27 -29
  21. package/dist/core/fs.d.ts.map +1 -0
  22. package/dist/core/sandbox.d.ts +30 -0
  23. package/dist/core/sandbox.d.ts.map +1 -0
  24. package/dist/core/sandlot.d.ts +30 -0
  25. package/dist/core/sandlot.d.ts.map +1 -0
  26. package/dist/core/shared-module-registry.d.ts +46 -0
  27. package/dist/core/shared-module-registry.d.ts.map +1 -0
  28. package/dist/core/typechecker.d.ts +60 -0
  29. package/dist/core/typechecker.d.ts.map +1 -0
  30. package/dist/index.d.ts +11 -16
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +1399 -2010
  33. package/dist/node/bundler.d.ts +48 -0
  34. package/dist/node/bundler.d.ts.map +1 -0
  35. package/dist/node/executor.d.ts +48 -0
  36. package/dist/node/executor.d.ts.map +1 -0
  37. package/dist/node/index.d.ts +9 -0
  38. package/dist/node/index.d.ts.map +1 -0
  39. package/dist/node/index.js +2646 -0
  40. package/dist/node/preset.d.ts +62 -0
  41. package/dist/node/preset.d.ts.map +1 -0
  42. package/dist/types.d.ts +525 -0
  43. package/dist/types.d.ts.map +1 -0
  44. package/package.json +16 -6
  45. package/src/browser/bundler.ts +294 -0
  46. package/src/browser/executor.ts +71 -0
  47. package/src/browser/index.ts +57 -0
  48. package/src/browser/preset.ts +179 -0
  49. package/src/commands/index.ts +526 -43
  50. package/src/commands/types.ts +82 -146
  51. package/src/core/bundler-utils.ts +630 -0
  52. package/src/core/esm-types-resolver.ts +432 -0
  53. package/src/core/executor.ts +161 -0
  54. package/src/{fs.ts → core/fs.ts} +59 -37
  55. package/src/core/sandbox.ts +621 -0
  56. package/src/core/sandlot.ts +77 -0
  57. package/src/core/shared-module-registry.ts +138 -0
  58. package/src/core/typechecker.ts +607 -0
  59. package/src/index.ts +104 -139
  60. package/src/node/bundler.ts +194 -0
  61. package/src/node/executor.ts +87 -0
  62. package/src/node/index.ts +39 -0
  63. package/src/node/preset.ts +178 -0
  64. package/src/types.ts +668 -0
  65. package/README.md +0 -243
  66. package/dist/build-emitter.d.ts +0 -47
  67. package/dist/build-emitter.d.ts.map +0 -1
  68. package/dist/builder.d.ts +0 -370
  69. package/dist/builder.d.ts.map +0 -1
  70. package/dist/bundler.d.ts +0 -152
  71. package/dist/bundler.d.ts.map +0 -1
  72. package/dist/commands/compile.d.ts +0 -13
  73. package/dist/commands/compile.d.ts.map +0 -1
  74. package/dist/commands/packages.d.ts +0 -17
  75. package/dist/commands/packages.d.ts.map +0 -1
  76. package/dist/commands/run.d.ts +0 -40
  77. package/dist/commands/run.d.ts.map +0 -1
  78. package/dist/commands.d.ts +0 -179
  79. package/dist/commands.d.ts.map +0 -1
  80. package/dist/fs.d.ts.map +0 -1
  81. package/dist/internal.d.ts +0 -79
  82. package/dist/internal.d.ts.map +0 -1
  83. package/dist/internal.js +0 -1942
  84. package/dist/loader.d.ts +0 -164
  85. package/dist/loader.d.ts.map +0 -1
  86. package/dist/packages.d.ts +0 -199
  87. package/dist/packages.d.ts.map +0 -1
  88. package/dist/runner.d.ts +0 -314
  89. package/dist/runner.d.ts.map +0 -1
  90. package/dist/sandbox-manager.d.ts +0 -261
  91. package/dist/sandbox-manager.d.ts.map +0 -1
  92. package/dist/sandbox.d.ts +0 -267
  93. package/dist/sandbox.d.ts.map +0 -1
  94. package/dist/shared-modules.d.ts +0 -148
  95. package/dist/shared-modules.d.ts.map +0 -1
  96. package/dist/shared-resources.d.ts +0 -102
  97. package/dist/shared-resources.d.ts.map +0 -1
  98. package/dist/ts-libs.d.ts +0 -85
  99. package/dist/ts-libs.d.ts.map +0 -1
  100. package/dist/typechecker.d.ts +0 -127
  101. package/dist/typechecker.d.ts.map +0 -1
  102. package/src/build-emitter.ts +0 -64
  103. package/src/builder.ts +0 -498
  104. package/src/bundler.ts +0 -575
  105. package/src/commands/compile.ts +0 -236
  106. package/src/commands/packages.ts +0 -154
  107. package/src/commands/run.ts +0 -245
  108. package/src/internal.ts +0 -119
  109. package/src/loader.ts +0 -229
  110. package/src/packages.ts +0 -936
  111. package/src/sandbox.ts +0 -398
  112. package/src/shared-modules.ts +0 -280
  113. package/src/shared-resources.ts +0 -166
  114. package/src/ts-libs.ts +0 -218
  115. 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
+ }