Merge branch 'dev'

This commit is contained in:
Jeff Emmett 2026-03-15 17:47:25 -07:00
commit 5023a3525c
1 changed files with 67 additions and 47 deletions

View File

@ -2,6 +2,26 @@ import { resolve } from "node:path";
import { defineConfig } from "vite"; import { defineConfig } from "vite";
import wasm from "vite-plugin-wasm"; import wasm from "vite-plugin-wasm";
// WASM-aware build wrapper — ensures every sub-build can handle Automerge WASM imports
async function wasmBuild(config: any) {
const { build } = await import("vite");
return build({
...config,
plugins: [...(config.plugins || []), wasm()],
resolve: {
...config.resolve,
alias: {
...(config.resolve?.alias || {}),
'@automerge/automerge': resolve(__dirname, 'node_modules/@automerge/automerge'),
},
},
build: {
target: "esnext",
...config.build,
},
});
}
export default defineConfig({ export default defineConfig({
root: "website", root: "website",
plugins: [ plugins: [
@ -13,8 +33,8 @@ export default defineConfig({
closeBundle: { closeBundle: {
sequential: true, sequential: true,
async handler() { async handler() {
const { build } = await import("vite"); // build() calls use wasmBuild() wrapper
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "website"), root: resolve(__dirname, "website"),
build: { build: {
@ -34,7 +54,7 @@ export default defineConfig({
}); });
// Build shell.ts as a standalone JS bundle (needs wasm() for Automerge via runtime) // Build shell.ts as a standalone JS bundle (needs wasm() for Automerge via runtime)
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "website"), root: resolve(__dirname, "website"),
plugins: [wasm()], plugins: [wasm()],
@ -63,7 +83,7 @@ export default defineConfig({
}); });
// Build books module components // Build books module components
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rbooks/components"), root: resolve(__dirname, "modules/rbooks/components"),
build: { build: {
@ -82,7 +102,7 @@ export default defineConfig({
}, },
}); });
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rbooks/components"), root: resolve(__dirname, "modules/rbooks/components"),
build: { build: {
@ -110,7 +130,7 @@ export default defineConfig({
); );
// Build pubs module component // Build pubs module component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rpubs/components"), root: resolve(__dirname, "modules/rpubs/components"),
build: { build: {
@ -137,7 +157,7 @@ export default defineConfig({
); );
// Build cart module component // Build cart module component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rcart/components"), root: resolve(__dirname, "modules/rcart/components"),
build: { build: {
@ -157,7 +177,7 @@ export default defineConfig({
}); });
// Build payment page component // Build payment page component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rcart/components"), root: resolve(__dirname, "modules/rcart/components"),
build: { build: {
@ -177,7 +197,7 @@ export default defineConfig({
}); });
// Build group buy page component // Build group buy page component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rcart/components"), root: resolve(__dirname, "modules/rcart/components"),
build: { build: {
@ -197,7 +217,7 @@ export default defineConfig({
}); });
// Build payment request (QR generator) component // Build payment request (QR generator) component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rcart/components"), root: resolve(__dirname, "modules/rcart/components"),
build: { build: {
@ -217,7 +237,7 @@ export default defineConfig({
}); });
// Build payments dashboard component // Build payments dashboard component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rcart/components"), root: resolve(__dirname, "modules/rcart/components"),
build: { build: {
@ -244,7 +264,7 @@ export default defineConfig({
); );
// Build swag module component // Build swag module component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rswag/components"), root: resolve(__dirname, "modules/rswag/components"),
build: { build: {
@ -271,7 +291,7 @@ export default defineConfig({
); );
// Build choices module component // Build choices module component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rchoices/components"), root: resolve(__dirname, "modules/rchoices/components"),
build: { build: {
@ -305,7 +325,7 @@ export default defineConfig({
"../lib/map-flow": resolve(__dirname, "modules/rflows/lib/map-flow.ts"), "../lib/map-flow": resolve(__dirname, "modules/rflows/lib/map-flow.ts"),
}; };
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rflows/components"), root: resolve(__dirname, "modules/rflows/components"),
resolve: { alias: flowsAlias }, resolve: { alias: flowsAlias },
@ -321,7 +341,7 @@ export default defineConfig({
}, },
}); });
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rflows/components"), root: resolve(__dirname, "modules/rflows/components"),
plugins: [wasm()], plugins: [wasm()],
@ -352,7 +372,7 @@ export default defineConfig({
); );
// Build files module component // Build files module component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rfiles/components"), root: resolve(__dirname, "modules/rfiles/components"),
build: { build: {
@ -379,7 +399,7 @@ export default defineConfig({
); );
// Build forum module component // Build forum module component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rforum/components"), root: resolve(__dirname, "modules/rforum/components"),
build: { build: {
@ -412,7 +432,7 @@ export default defineConfig({
"../lib/wallet-demo-data": resolve(__dirname, "modules/rwallet/lib/wallet-demo-data.ts"), "../lib/wallet-demo-data": resolve(__dirname, "modules/rwallet/lib/wallet-demo-data.ts"),
}; };
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rwallet/components"), root: resolve(__dirname, "modules/rwallet/components"),
resolve: { alias: walletAlias }, resolve: { alias: walletAlias },
@ -440,7 +460,7 @@ export default defineConfig({
); );
// Build vote module component // Build vote module component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rvote/components"), root: resolve(__dirname, "modules/rvote/components"),
build: { build: {
@ -460,7 +480,7 @@ export default defineConfig({
}); });
// Build vote demo page script // Build vote demo page script
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rvote/components"), root: resolve(__dirname, "modules/rvote/components"),
resolve: { resolve: {
@ -492,7 +512,7 @@ export default defineConfig({
); );
// Build notes module component (with Automerge WASM support) // Build notes module component (with Automerge WASM support)
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rnotes/components"), root: resolve(__dirname, "modules/rnotes/components"),
plugins: [wasm()], plugins: [wasm()],
@ -526,7 +546,7 @@ export default defineConfig({
); );
// Build maps module component // Build maps module component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rmaps/components"), root: resolve(__dirname, "modules/rmaps/components"),
build: { build: {
@ -553,7 +573,7 @@ export default defineConfig({
); );
// Build tasks module component // Build tasks module component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rtasks/components"), root: resolve(__dirname, "modules/rtasks/components"),
build: { build: {
@ -580,7 +600,7 @@ export default defineConfig({
); );
// Build trips module component // Build trips module component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rtrips/components"), root: resolve(__dirname, "modules/rtrips/components"),
build: { build: {
@ -607,7 +627,7 @@ export default defineConfig({
); );
// Build trips demo page script // Build trips demo page script
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rtrips/components"), root: resolve(__dirname, "modules/rtrips/components"),
build: { build: {
@ -625,7 +645,7 @@ export default defineConfig({
}); });
// Build cal module component // Build cal module component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rcal/components"), root: resolve(__dirname, "modules/rcal/components"),
build: { build: {
@ -652,7 +672,7 @@ export default defineConfig({
); );
// Build network module component // Build network module component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rnetwork/components"), root: resolve(__dirname, "modules/rnetwork/components"),
build: { build: {
@ -673,7 +693,7 @@ export default defineConfig({
}); });
// Build network CRM view component // Build network CRM view component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rnetwork/components"), root: resolve(__dirname, "modules/rnetwork/components"),
build: { build: {
@ -693,7 +713,7 @@ export default defineConfig({
}); });
// Build delegation manager component // Build delegation manager component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rnetwork/components"), root: resolve(__dirname, "modules/rnetwork/components"),
build: { build: {
@ -713,7 +733,7 @@ export default defineConfig({
}); });
// Build trust sankey component // Build trust sankey component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rnetwork/components"), root: resolve(__dirname, "modules/rnetwork/components"),
build: { build: {
@ -740,7 +760,7 @@ export default defineConfig({
); );
// Build socials thread builder component // Build socials thread builder component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rsocials/components"), root: resolve(__dirname, "modules/rsocials/components"),
build: { build: {
@ -760,7 +780,7 @@ export default defineConfig({
}); });
// Build socials thread gallery component // Build socials thread gallery component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rsocials/components"), root: resolve(__dirname, "modules/rsocials/components"),
build: { build: {
@ -780,7 +800,7 @@ export default defineConfig({
}); });
// Build socials campaign manager component // Build socials campaign manager component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rsocials/components"), root: resolve(__dirname, "modules/rsocials/components"),
build: { build: {
@ -807,7 +827,7 @@ export default defineConfig({
); );
// Build campaign planner component (with Automerge WASM support via local-first-client) // Build campaign planner component (with Automerge WASM support via local-first-client)
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rsocials/components"), root: resolve(__dirname, "modules/rsocials/components"),
plugins: [wasm()], plugins: [wasm()],
@ -840,7 +860,7 @@ export default defineConfig({
); );
// Build campaign workflow builder component // Build campaign workflow builder component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rsocials/components"), root: resolve(__dirname, "modules/rsocials/components"),
resolve: { resolve: {
@ -871,7 +891,7 @@ export default defineConfig({
); );
// Build newsletter manager component // Build newsletter manager component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rsocials/components"), root: resolve(__dirname, "modules/rsocials/components"),
build: { build: {
@ -897,7 +917,7 @@ export default defineConfig({
); );
// Build tube module component // Build tube module component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rtube/components"), root: resolve(__dirname, "modules/rtube/components"),
build: { build: {
@ -924,7 +944,7 @@ export default defineConfig({
); );
// Build inbox module component // Build inbox module component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rinbox/components"), root: resolve(__dirname, "modules/rinbox/components"),
build: { build: {
@ -951,7 +971,7 @@ export default defineConfig({
); );
// Build data module component // Build data module component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rdata/components"), root: resolve(__dirname, "modules/rdata/components"),
build: { build: {
@ -978,7 +998,7 @@ export default defineConfig({
); );
// Build route planner component (part of trips module) // Build route planner component (part of trips module)
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rtrips/components"), root: resolve(__dirname, "modules/rtrips/components"),
resolve: { resolve: {
@ -1011,7 +1031,7 @@ export default defineConfig({
); );
// Build splat module component // Build splat module component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rsplat/components"), root: resolve(__dirname, "modules/rsplat/components"),
build: { build: {
@ -1039,7 +1059,7 @@ export default defineConfig({
); );
// Build photos module component // Build photos module component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rphotos/components"), root: resolve(__dirname, "modules/rphotos/components"),
build: { build: {
@ -1066,7 +1086,7 @@ export default defineConfig({
); );
// Build schedule module component // Build schedule module component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rschedule/components"), root: resolve(__dirname, "modules/rschedule/components"),
build: { build: {
@ -1093,7 +1113,7 @@ export default defineConfig({
); );
// Build schedule reminders widget component // Build schedule reminders widget component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rschedule/components"), root: resolve(__dirname, "modules/rschedule/components"),
build: { build: {
@ -1113,7 +1133,7 @@ export default defineConfig({
}); });
// Build schedule automation canvas component // Build schedule automation canvas component
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "modules/rschedule/components"), root: resolve(__dirname, "modules/rschedule/components"),
resolve: { resolve: {
@ -1146,7 +1166,7 @@ export default defineConfig({
// ── Demo infrastructure ── // ── Demo infrastructure ──
// Build demo-sync-vanilla library // Build demo-sync-vanilla library
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, "lib"), root: resolve(__dirname, "lib"),
build: { build: {
@ -1173,7 +1193,7 @@ export default defineConfig({
try { try {
const { statSync } = await import("node:fs"); const { statSync } = await import("node:fs");
statSync(demoEntry); statSync(demoEntry);
await build({ await wasmBuild({
configFile: false, configFile: false,
root: resolve(__dirname, `modules/${dir}/components`), root: resolve(__dirname, `modules/${dir}/components`),
resolve: { resolve: {