Skip to content

Commit 5b0201d

Browse files
authored
Merge pull request #25 from GangWangAI/fix/playground-browser-dev-boot
fix(playground): make browser playground boot in repo dev mode
2 parents 786c9db + 8584e78 commit 5b0201d

3 files changed

Lines changed: 24 additions & 7 deletions

File tree

packages/playground/backend/server.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,14 @@ import { fileURLToPath } from "node:url";
2121
const DEFAULT_PORT = Number(process.env.PORT ?? "4173");
2222
const playgroundDir = resolve(fileURLToPath(new URL("..", import.meta.url)));
2323
const secureExecDir = resolve(playgroundDir, "../secure-exec");
24+
const secureExecCoreDir = resolve(playgroundDir, "../secure-exec-core");
25+
const secureExecBrowserDir = resolve(playgroundDir, "../secure-exec-browser");
2426

2527
/* Map URL prefixes to filesystem directories outside playgroundDir */
2628
const PATH_ALIASES: Array<{ prefix: string; dir: string }> = [
2729
{ prefix: "/secure-exec/", dir: secureExecDir },
30+
{ prefix: "/secure-exec-core/", dir: secureExecCoreDir },
31+
{ prefix: "/secure-exec-browser/", dir: secureExecBrowserDir },
2832
];
2933

3034
const mimeTypes = new Map<string, string>([

packages/playground/frontend/index.html

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,15 @@
99
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;500;600;700&display=swap" rel="stylesheet" />
1010
<script defer src="/vendor/typescript.js"></script>
1111
<script defer src="/vendor/monaco/vs/loader.js"></script>
12+
<script type="importmap">
13+
{
14+
"imports": {
15+
"secure-exec/browser": "/secure-exec/dist/browser-runtime.js",
16+
"@secure-exec/core": "/secure-exec-core/dist/index.js",
17+
"@secure-exec/browser": "/secure-exec-browser/dist/index.js"
18+
}
19+
}
20+
</script>
1221
<style>
1322
:root {
1423
color-scheme: dark;

packages/playground/scripts/build-worker.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,22 @@ import { fileURLToPath } from "node:url";
44
import { build } from "esbuild";
55

66
const playgroundDir = resolve(fileURLToPath(new URL("..", import.meta.url)));
7-
const workerSourcePath = resolve(playgroundDir, "../secure-exec/src/browser/worker.ts");
7+
const workerSourcePath = resolve(playgroundDir, "../secure-exec-browser/src/worker.ts");
88
const workerSourceDir = dirname(workerSourcePath);
99
const workerOutputPath = resolve(playgroundDir, "secure-exec-worker.js");
1010
const appSourcePath = resolve(playgroundDir, "frontend/app.ts");
1111
const appOutputPath = resolve(playgroundDir, "dist/app.js");
1212

1313
const BRIDGE_IMPORT_BLOCK = `\tlet bridgeModule: Record<string, unknown>;
1414
\ttry {
15-
\t\tbridgeModule = await dynamicImportModule("../bridge/index.js");
15+
\t\tbridgeModule = await dynamicImportModule("@secure-exec/core/internal/bridge");
1616
\t} catch {
17-
\t\t// Vite browser tests execute source files directly, so \`.ts\` fallback is required.
18-
\t\tbridgeModule = await dynamicImportModule("../bridge/index.ts");
17+
\t\t// Vite browser tests may need source fallback.
18+
\t\ttry {
19+
\t\t\tbridgeModule = await dynamicImportModule("@secure-exec/core/internal/bridge");
20+
\t\t} catch {
21+
\t\t\tthrow new Error("Failed to load bridge module from @secure-exec/core");
22+
\t\t}
1923
\t}`;
2024

2125
async function writeGeneratedBundle(outputPath: string, sourcePath: string): Promise<void> {
@@ -27,10 +31,10 @@ async function buildWorkerBundle(): Promise<void> {
2731
const originalSource = await readFile(workerSourcePath, "utf8");
2832
const patchedSource = originalSource
2933
.replace(
30-
'import { mkdir } from "../fs-helpers.js";',
31-
'import { mkdir } from "../fs-helpers.js";\nimport * as browserWorkerBridgeModule from "../bridge/index.ts";',
34+
'import { validatePermissionSource } from "./permission-validation.js";',
35+
'import { validatePermissionSource } from "./permission-validation.js";\nimport importedBridgeModule from "@secure-exec/core/internal/bridge";',
3236
)
33-
.replace(BRIDGE_IMPORT_BLOCK, "\tconst bridgeModule = browserWorkerBridgeModule;");
37+
.replace(BRIDGE_IMPORT_BLOCK, "\tconst bridgeModule = { default: importedBridgeModule };");
3438

3539
await build({
3640
bundle: true,

0 commit comments

Comments
 (0)