@seedprotocol/sdk 0.4.12 → 0.4.14
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/{ArweaveClient-Bot35vMf.js → ArweaveClient-D6E8xe3J.js} +3 -3
- package/dist/{ArweaveClient-Bot35vMf.js.map → ArweaveClient-D6E8xe3J.js.map} +1 -1
- package/dist/{ArweaveClient-C6mBPWwy.js → ArweaveClient-DElJwN08.js} +3 -3
- package/dist/{ArweaveClient-C6mBPWwy.js.map → ArweaveClient-DElJwN08.js.map} +1 -1
- package/dist/{Db-rlxROH4S.js → Db-DW1Un2jz.js} +3 -3
- package/dist/{Db-rlxROH4S.js.map → Db-DW1Un2jz.js.map} +1 -1
- package/dist/{Db-DP7ELP9S.js → Db-De4o7jww.js} +3 -3
- package/dist/{Db-DP7ELP9S.js.map → Db-De4o7jww.js.map} +1 -1
- package/dist/{EasClient-CHI9lBP8.js → EasClient-BpGDIkmb.js} +2 -2
- package/dist/{EasClient-CHI9lBP8.js.map → EasClient-BpGDIkmb.js.map} +1 -1
- package/dist/{EasClient-CszJzwqw.js → EasClient-DGY_mkrd.js} +2 -2
- package/dist/{EasClient-CszJzwqw.js.map → EasClient-DGY_mkrd.js.map} +1 -1
- package/dist/{FileManager-Dy3BbIxq.js → FileManager-Cw8mOIqZ.js} +2 -2
- package/dist/{FileManager-Dy3BbIxq.js.map → FileManager-Cw8mOIqZ.js.map} +1 -1
- package/dist/{FileManager-C7yOhPvS.js → FileManager-DrHQbmYj.js} +2 -2
- package/dist/{FileManager-C7yOhPvS.js.map → FileManager-DrHQbmYj.js.map} +1 -1
- package/dist/{ModelProperty--OQb3Dy0.js → ModelProperty-D8d25NtC.js} +17 -17
- package/dist/{ModelProperty--OQb3Dy0.js.map → ModelProperty-D8d25NtC.js.map} +1 -1
- package/dist/{PathResolver-D--w4fFE.js → PathResolver-BHj0UZTj.js} +2 -2
- package/dist/{PathResolver-D--w4fFE.js.map → PathResolver-BHj0UZTj.js.map} +1 -1
- package/dist/{PathResolver-BtnV9pXS.js → PathResolver-D1k3dZg5.js} +2 -2
- package/dist/{PathResolver-BtnV9pXS.js.map → PathResolver-D1k3dZg5.js.map} +1 -1
- package/dist/{QueryClient-Bia5wKCO.js → QueryClient-BCVom0BA.js} +2 -2
- package/dist/{QueryClient-Bia5wKCO.js.map → QueryClient-BCVom0BA.js.map} +1 -1
- package/dist/{QueryClient-BdNnK6Es.js → QueryClient-D4974vvo.js} +2 -2
- package/dist/{QueryClient-BdNnK6Es.js.map → QueryClient-D4974vvo.js.map} +1 -1
- package/dist/{Schema-DF4mLt86.js → Schema-CLlE7onI.js} +21 -21
- package/dist/{Schema-DF4mLt86.js.map → Schema-CLlE7onI.js.map} +1 -1
- package/dist/{SchemaValidationService-D4LwnnIB.js → SchemaValidationService-CwKY3QlY.js} +2 -2
- package/dist/{SchemaValidationService-D4LwnnIB.js.map → SchemaValidationService-CwKY3QlY.js.map} +1 -1
- package/dist/cjs/{ModelProperty-C5BRfISV.js → ModelProperty-CgQ3zR-u.js} +17 -17
- package/dist/cjs/{ModelProperty-C5BRfISV.js.map → ModelProperty-CgQ3zR-u.js.map} +1 -1
- package/dist/cjs/{Schema-DVJG8ISB.js → Schema-B0D7LgYb.js} +20 -20
- package/dist/cjs/{Schema-DVJG8ISB.js.map → Schema-B0D7LgYb.js.map} +1 -1
- package/dist/cjs/{SchemaValidationService-_wef0VX6.js → SchemaValidationService-DUIOUvC_.js} +2 -2
- package/dist/cjs/{SchemaValidationService-_wef0VX6.js.map → SchemaValidationService-DUIOUvC_.js.map} +1 -1
- package/dist/cjs/{getItem-CUGoglni.js → getItem-BP4BYB4Z.js} +2 -2
- package/dist/cjs/{getItem-CUGoglni.js.map → getItem-BP4BYB4Z.js.map} +1 -1
- package/dist/cjs/{getPublishPayload-CGl97AXX.js → getPublishPayload-B90BFd8m.js} +5 -5
- package/dist/cjs/{getPublishPayload-CGl97AXX.js.map → getPublishPayload-B90BFd8m.js.map} +1 -1
- package/dist/cjs/{getPublishUploads-BA5PdoJ3.js → getPublishUploads-D4DMfuOm.js} +3 -3
- package/dist/cjs/{getPublishUploads-BA5PdoJ3.js.map → getPublishUploads-D4DMfuOm.js.map} +1 -1
- package/dist/cjs/{getSegmentedItemProperties-D3iBFPeo.js → getSegmentedItemProperties-KdudlzXm.js} +2 -2
- package/dist/cjs/{getSegmentedItemProperties-D3iBFPeo.js.map → getSegmentedItemProperties-KdudlzXm.js.map} +1 -1
- package/dist/cjs/{index-CpBFvNId.js → index-BM8CSlnN.js} +2 -2
- package/dist/cjs/index-BM8CSlnN.js.map +1 -0
- package/dist/cjs/{index-B3K0jG2t.js → index-CUd7xS2i.js} +33 -30
- package/dist/cjs/index-CUd7xS2i.js.map +1 -0
- package/dist/cjs/{ownership-CkgGUliG.js → ownership-D3npAPnx.js} +2 -2
- package/dist/cjs/{ownership-CkgGUliG.js.map → ownership-D3npAPnx.js.map} +1 -1
- package/dist/{getItem-CbGS6wbp.js → getItem-B_IP-uNX.js} +2 -2
- package/dist/{getItem-CbGS6wbp.js.map → getItem-B_IP-uNX.js.map} +1 -1
- package/dist/{getPublishPayload-jUcwhhs1.js → getPublishPayload-BekDN5Ti.js} +5 -5
- package/dist/{getPublishPayload-jUcwhhs1.js.map → getPublishPayload-BekDN5Ti.js.map} +1 -1
- package/dist/{getPublishUploads-BAsUuLSM.js → getPublishUploads-DPk5RcAG.js} +3 -3
- package/dist/{getPublishUploads-BAsUuLSM.js.map → getPublishUploads-DPk5RcAG.js.map} +1 -1
- package/dist/{getSegmentedItemProperties-1QklOMkN.js → getSegmentedItemProperties-DfQNbOpb.js} +2 -2
- package/dist/{getSegmentedItemProperties-1QklOMkN.js.map → getSegmentedItemProperties-DfQNbOpb.js.map} +1 -1
- package/dist/{index-CjAALVQh.js → index-DbmqfO-Q.js} +2 -2
- package/dist/index-DbmqfO-Q.js.map +1 -0
- package/dist/{index-BUFvepcD.js → index-Dh_gxItx.js} +47 -44
- package/dist/index-Dh_gxItx.js.map +1 -0
- package/dist/{index-BnBV-CWp.js → index-XBnjc_SF.js} +3 -3
- package/dist/index-XBnjc_SF.js.map +1 -0
- package/dist/main.cjs +1 -1
- package/dist/main.js +11 -11
- package/dist/node.js +10 -10
- package/dist/{ownership-CeuRaVwP.js → ownership-CEv7BhIh.js} +2 -2
- package/dist/{ownership-CeuRaVwP.js.map → ownership-CEv7BhIh.js.map} +1 -1
- package/dist/{property-BiZvboSH.js → property-CppuVi-i.js} +4 -4
- package/dist/{property-BiZvboSH.js.map → property-CppuVi-i.js.map} +1 -1
- package/dist/{queries-B2xdenwS.js → queries-B1vaglQW.js} +2 -2
- package/dist/{queries-B2xdenwS.js.map → queries-B1vaglQW.js.map} +1 -1
- package/dist/src/browser/helpers/index.d.ts.map +1 -1
- package/dist/src/helpers/QueryClient/BaseQueryClient.d.ts.map +1 -1
- package/dist/src/vite/index.d.ts.map +1 -1
- package/dist/vite.cjs +131 -2
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.js +130 -2
- package/dist/vite.js.map +1 -1
- package/package.json +6 -3
- package/dist/cjs/index-B3K0jG2t.js.map +0 -1
- package/dist/cjs/index-CpBFvNId.js.map +0 -1
- package/dist/index-BUFvepcD.js.map +0 -1
- package/dist/index-BnBV-CWp.js.map +0 -1
- package/dist/index-CjAALVQh.js.map +0 -1
package/dist/vite.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.cjs","sources":["../../src/vite/index.ts"],"sourcesContent":["import type { Plugin, UserConfig } from 'vite'\nimport { nodePolyfills } from 'vite-plugin-node-polyfills'\n\nexport interface SeedVitePluginOptions {\n /**\n * Additional modules to alias to ZenFS equivalents.\n * @default ['fs', 'fs/promises', 'node:fs', 'node:fs/promises']\n */\n fsModules?: string[]\n\n /**\n * Whether to inject automatic ZenFS initialization script into index.html.\n * When true, injects a <script type=\"module\"> that imports from '@zenfs/core'/'@zenfs/dom'.\n * Browsers cannot resolve those bare specifiers, so the script fails at runtime unless you use\n * an import map or load ZenFS another way. Prefer false and initialize ZenFS in your entry:\n * import { configure } from '@zenfs/core'; import { IndexedDB } from '@zenfs/dom';\n * await configure({ mounts: { '/': IndexedDB } });\n * @default false\n */\n autoInit?: boolean\n\n /**\n * Enable debug logging.\n * @default false\n */\n debug?: boolean\n\n /**\n * Whether to automatically include vite-plugin-node-polyfills with sensible defaults.\n * @default true\n */\n includeNodePolyfills?: boolean\n}\n\nconst DEFAULT_FS_MODULES = [\n 'fs',\n 'fs/promises',\n 'node:fs',\n 'node:fs/promises',\n]\n\n/**\n * Minimal Vite plugin to make the SDK work in browser/Electron renderer:\n * - Aliases fs → @zenfs/core (and promises variant)\n * - Aliases path → path-browserify\n * - Ensures CommonJS in SDK dist is transformed by Vite's CommonJS plugin\n * - Optionally injects a simple ZenFS initialization script\n * - Optionally wires up vite-plugin-node-polyfills with safe defaults\n *\n * This plugin assumes the SDK does not bundle Node-only code in the browser entry.\n * For Electron, Node-only work (e.g. drizzle-kit, better-sqlite3) should run in the\n * main process; the renderer should only use browser-safe SDK usage.\n *\n * For the renderer build:\n * - Use the SDK's ESM entry: import from '@seedprotocol/sdk' (resolves to dist/main.js).\n * - When autoInit is false (default), initialize ZenFS in your entry:\n * import { configure } from '@zenfs/core'; import { IndexedDB } from '@zenfs/dom';\n * await configure({ mounts: { '/': IndexedDB } });\n */\nexport function seedVitePlugin(options: SeedVitePluginOptions = {}): Plugin[] {\n const {\n fsModules = DEFAULT_FS_MODULES,\n autoInit = false,\n debug = false,\n includeNodePolyfills = true,\n } = options\n\n const log = (...args: unknown[]) => {\n }\n\n /**\n * Pre-plugin: configure aliases and optimizeDeps.\n */\n const configPlugin: Plugin = {\n name: 'seed-protocol:config',\n enforce: 'pre',\n\n config(userConfig) {\n const alias: Record<string, string> = {\n // Always use browser-friendly path implementation\n // path: 'path-browserify',\n }\n\n for (const mod of fsModules) {\n const isPromises = mod.includes('promises')\n const target = isPromises ? '@zenfs/core/promises' : '@zenfs/core'\n alias[mod] = target\n }\n\n // Merge with any existing aliases\n const existingAlias = userConfig.resolve?.alias\n if (Array.isArray(existingAlias)) {\n for (const [key, value] of Object.entries(alias)) {\n existingAlias.push({ find: key, replacement: value })\n }\n }\n\n const optimizeDeps: UserConfig['optimizeDeps'] = {\n ...(userConfig.optimizeDeps ?? {}),\n exclude: [\n ...(userConfig.optimizeDeps?.exclude ?? []),\n // Do not prebundle the SDK itself or clearly node-only tools\n '@seedprotocol/sdk',\n 'drizzle-kit',\n 'drizzle-orm',\n 'better-sqlite3',\n // sqlocal uses workers and should not be prebundled\n 'sqlocal',\n ],\n include: [\n ...(userConfig.optimizeDeps?.include ?? []),\n // Ensure ZenFS packages are discoverable\n '@zenfs/core',\n '@zenfs/dom',\n // kerium is a dependency of @zenfs/core; must be pre-bundled for resolution\n 'kerium',\n 'utilium',\n 'memium',\n // viem dynamically imports isows; pre-bundle both so Rollup can resolve them\n 'viem',\n 'isows',\n ],\n }\n\n return {\n resolve: {\n alias,\n // Prevent duplicate React/thirdweb instances when @seedprotocol/publish is workspace-linked.\n // Multiple copies break context (e.g. useActiveAccount must be used within ThirdwebProvider).\n dedupe: ['react', 'react-dom', 'thirdweb'],\n },\n optimizeDeps,\n }\n },\n }\n\n /**\n * Post-plugin: build configuration + optional ZenFS init.\n */\n const mainPlugin: Plugin = {\n name: 'seed-protocol:main',\n enforce: 'post',\n\n config(userConfig) {\n const existingBuild = userConfig.build ?? {}\n const existingCommonjs = existingBuild.commonjsOptions ?? {}\n const existingRollupOptions = existingBuild.rollupOptions ?? {}\n const existingExternal = existingRollupOptions.external ?? []\n\n const include = [\n // Anything the user already had\n ...(Array.isArray(existingCommonjs.include)\n ? existingCommonjs.include\n : existingCommonjs.include\n ? [existingCommonjs.include]\n : []),\n // Always process node_modules and the SDK dist so require() is transformed\n /node_modules/,\n /seed-protocol-sdk[\\\\/]+dist[\\\\/]/,\n ]\n\n // Exclude packages that are already ESM or have special worker handling\n const exclude = [\n ...(Array.isArray(existingCommonjs.exclude)\n ? existingCommonjs.exclude\n : existingCommonjs.exclude\n ? [existingCommonjs.exclude]\n : []),\n // sqlocal is ESM and uses workers - don't transform it\n /node_modules[\\\\/]+sqlocal[\\\\/]/,\n ]\n\n const commonjsOptions = {\n ...existingCommonjs,\n include,\n exclude,\n transformMixedEsModules: true,\n }\n\n // Externalize Node.js-only dev/build tools that should never be bundled\n const nodeOnlyPackages = [\n 'drizzle-kit',\n 'better-sqlite3', // Native SQLite binding (Node.js only)\n // Database drivers that drizzle-kit dynamically imports (should not be bundled)\n '@electric-sql/pglite',\n 'pg',\n 'postgres',\n '@vercel/postgres',\n '@neondatabase/serverless',\n 'mysql2',\n 'mysql2/promise',\n '@planetscale/database',\n ]\n\n const isNodeOnlyExternal = (id: string) =>\n nodeOnlyPackages.some(\n (pkg) =>\n id === pkg ||\n id.startsWith(`${pkg}/`) ||\n id.includes(`/${pkg}/`) ||\n id.endsWith(`/${pkg}`)\n )\n\n const externalList = (id: string, importer?: string, isResolved?: boolean) => {\n if (isNodeOnlyExternal(id)) return true\n if (typeof existingExternal === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (existingExternal as any)(id, importer, isResolved ?? false)\n }\n if (Array.isArray(existingExternal)) {\n return existingExternal.some((ext) => ext === id || id.startsWith(`${ext}/`))\n }\n return false\n }\n\n const rollupOptions = {\n ...existingRollupOptions,\n external: externalList,\n }\n\n const build = {\n ...existingBuild,\n commonjsOptions,\n rollupOptions,\n }\n\n // Worker options are TOP-LEVEL in Vite config, not under build.\n // Default 'iife' breaks when workers use code-splitting (e.g. sqlocal).\n const existingWorker = userConfig.worker ?? {}\n const worker = {\n ...existingWorker,\n format: existingWorker.format ?? 'es',\n }\n\n return {\n build,\n worker,\n }\n },\n\n transformIndexHtml(html) {\n if (!autoInit) return html\n\n const initScript = `\n<script type=\"module\">\nimport { configure } from '@zenfs/core';\nimport { IndexedDB } from '@zenfs/dom';\n\nif (!window.__seedFsReady) {\n window.__seedFsReady = configure({\n mounts: { '/': IndexedDB },\n }).catch((err) => {\n console.error('[seed-vite-plugin] ZenFS initialization failed', err);\n });\n}\n</script>`\n\n if (html.includes('</head>')) {\n return html.replace('</head>', `${initScript}\\n</head>`)\n }\n\n return html + initScript\n },\n }\n\n const plugins: Plugin[] = [configPlugin, mainPlugin]\n\n if (includeNodePolyfills) {\n log('Including vite-plugin-node-polyfills with default settings')\n plugins.push(\n nodePolyfills({\n // Let fs be handled by @zenfs/core instead of polyfills\n exclude: ['readline',],\n // Common set of browser-friendly polyfills used by many deps\n include: ['path', 'crypto', 'stream', 'util', 'buffer', 'events', 'string_decoder',],\n globals: {\n Buffer: true,\n global: true,\n process: true,\n },\n protocolImports: true,\n }) as unknown as Plugin,\n )\n }\n\n return plugins\n}\n"],"names":["nodePolyfills"],"mappings":";;;;AAkCA,MAAM,kBAAkB,GAAG;IACzB,IAAI;IACJ,aAAa;IACb,SAAS;IACT,kBAAkB;CACnB;AAED;;;;;;;;;;;;;;;;;AAiBG;AACG,SAAU,cAAc,CAAC,OAAA,GAAiC,EAAE,EAAA;AAChE,IAAA,MAAM,EACJ,SAAS,GAAG,kBAAkB,EAC9B,QAAQ,GAAG,KAAK,EAChB,KAAK,GAAG,KAAK,EACb,oBAAoB,GAAG,IAAI,GAC5B,GAAG,OAAO;AAKX;;AAEG;AACH,IAAA,MAAM,YAAY,GAAW;AAC3B,QAAA,IAAI,EAAE,sBAAsB;AAC5B,QAAA,OAAO,EAAE,KAAK;AAEd,QAAA,MAAM,CAAC,UAAU,EAAA;AACf,YAAA,MAAM,KAAK,GAA2B;;;aAGrC;AAED,YAAA,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;gBAC3B,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAC3C,MAAM,MAAM,GAAG,UAAU,GAAG,sBAAsB,GAAG,aAAa;AAClE,gBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM;YACrB;;AAGA,YAAA,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK;AAC/C,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AAChC,gBAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAChD,oBAAA,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;gBACvD;YACF;AAEA,YAAA,MAAM,YAAY,GAA+B;AAC/C,gBAAA,IAAI,UAAU,CAAC,YAAY,IAAI,EAAE,CAAC;AAClC,gBAAA,OAAO,EAAE;oBACP,IAAI,UAAU,CAAC,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC;;oBAE3C,mBAAmB;oBACnB,aAAa;oBACb,aAAa;oBACb,gBAAgB;;oBAEhB,SAAS;AACV,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP,IAAI,UAAU,CAAC,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC;;oBAE3C,aAAa;oBACb,YAAY;;oBAEZ,QAAQ;oBACR,SAAS;oBACT,QAAQ;;oBAER,MAAM;oBACN,OAAO;AACR,iBAAA;aACF;YAED,OAAO;AACL,gBAAA,OAAO,EAAE;oBACP,KAAK;;;AAGL,oBAAA,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC;AAC3C,iBAAA;gBACD,YAAY;aACb;QACH,CAAC;KACF;AAED;;AAEG;AACH,IAAA,MAAM,UAAU,GAAW;AACzB,QAAA,IAAI,EAAE,oBAAoB;AAC1B,QAAA,OAAO,EAAE,MAAM;AAEf,QAAA,MAAM,CAAC,UAAU,EAAA;AACf,YAAA,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;AAC5C,YAAA,MAAM,gBAAgB,GAAG,aAAa,CAAC,eAAe,IAAI,EAAE;AAC5D,YAAA,MAAM,qBAAqB,GAAG,aAAa,CAAC,aAAa,IAAI,EAAE;AAC/D,YAAA,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,QAAQ,IAAI,EAAE;AAE7D,YAAA,MAAM,OAAO,GAAG;;gBAEd,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO;sBACtC,gBAAgB,CAAC;sBACjB,gBAAgB,CAAC;AACnB,0BAAE,CAAC,gBAAgB,CAAC,OAAO;0BACzB,EAAE,CAAC;;gBAEP,cAAc;gBACd,kCAAkC;aACnC;;AAGD,YAAA,MAAM,OAAO,GAAG;gBACd,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO;sBACtC,gBAAgB,CAAC;sBACjB,gBAAgB,CAAC;AACnB,0BAAE,CAAC,gBAAgB,CAAC,OAAO;0BACzB,EAAE,CAAC;;gBAEP,gCAAgC;aACjC;AAED,YAAA,MAAM,eAAe,GAAG;AACtB,gBAAA,GAAG,gBAAgB;gBACnB,OAAO;gBACP,OAAO;AACP,gBAAA,uBAAuB,EAAE,IAAI;aAC9B;;AAGD,YAAA,MAAM,gBAAgB,GAAG;gBACvB,aAAa;AACb,gBAAA,gBAAgB;;gBAEhB,sBAAsB;gBACtB,IAAI;gBACJ,UAAU;gBACV,kBAAkB;gBAClB,0BAA0B;gBAC1B,QAAQ;gBACR,gBAAgB;gBAChB,uBAAuB;aACxB;AAED,YAAA,MAAM,kBAAkB,GAAG,CAAC,EAAU,KACpC,gBAAgB,CAAC,IAAI,CACnB,CAAC,GAAG,KACF,EAAE,KAAK,GAAG;AACV,gBAAA,EAAE,CAAC,UAAU,CAAC,CAAA,EAAG,GAAG,GAAG,CAAC;AACxB,gBAAA,EAAE,CAAC,QAAQ,CAAC,CAAA,CAAA,EAAI,GAAG,GAAG,CAAC;gBACvB,EAAE,CAAC,QAAQ,CAAC,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAC,CACzB;YAEH,MAAM,YAAY,GAAG,CAAC,EAAU,EAAE,QAAiB,EAAE,UAAoB,KAAI;gBAC3E,IAAI,kBAAkB,CAAC,EAAE,CAAC;AAAE,oBAAA,OAAO,IAAI;AACvC,gBAAA,IAAI,OAAO,gBAAgB,KAAK,UAAU,EAAE;;oBAE1C,OAAQ,gBAAwB,CAAC,EAAE,EAAE,QAAQ,EAAE,UAAU,IAAI,KAAK,CAAC;gBACrE;AACA,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;oBACnC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,GAAG,CAAA,CAAA,CAAG,CAAC,CAAC;gBAC/E;AACA,gBAAA,OAAO,KAAK;AACd,YAAA,CAAC;AAED,YAAA,MAAM,aAAa,GAAG;AACpB,gBAAA,GAAG,qBAAqB;AACxB,gBAAA,QAAQ,EAAE,YAAY;aACvB;AAED,YAAA,MAAM,KAAK,GAAG;AACZ,gBAAA,GAAG,aAAa;gBAChB,eAAe;gBACf,aAAa;aACd;;;AAID,YAAA,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,IAAI,EAAE;AAC9C,YAAA,MAAM,MAAM,GAAG;AACb,gBAAA,GAAG,cAAc;AACjB,gBAAA,MAAM,EAAE,cAAc,CAAC,MAAM,IAAI,IAAI;aACtC;YAED,OAAO;gBACL,KAAK;gBACL,MAAM;aACP;QACH,CAAC;AAED,QAAA,kBAAkB,CAAC,IAAI,EAAA;AACrB,YAAA,IAAI,CAAC,QAAQ;AAAE,gBAAA,OAAO,IAAI;AAE1B,YAAA,MAAM,UAAU,GAAG;;;;;;;;;;;;UAYf;AAEJ,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;gBAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAA,EAAG,UAAU,CAAA,SAAA,CAAW,CAAC;YAC1D;YAEA,OAAO,IAAI,GAAG,UAAU;QAC1B,CAAC;KACF;AAED,IAAA,MAAM,OAAO,GAAa,CAAC,YAAY,EAAE,UAAU,CAAC;IAEpD,IAAI,oBAAoB,EAAE;AAExB,QAAA,OAAO,CAAC,IAAI,CACVA,qCAAa,CAAC;;YAEZ,OAAO,EAAE,CAAC,UAAU,EAAE;;AAEtB,YAAA,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE;AACpF,YAAA,OAAO,EAAE;AACP,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,OAAO,EAAE,IAAI;AACd,aAAA;AACD,YAAA,eAAe,EAAE,IAAI;AACtB,SAAA,CAAsB,CACxB;IACH;AAEA,IAAA,OAAO,OAAO;AAChB;;;;"}
|
|
1
|
+
{"version":3,"file":"vite.cjs","sources":["../../src/vite/index.ts"],"sourcesContent":["import type { Plugin, UserConfig } from 'vite'\nimport { createRequire } from 'node:module'\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport { nodePolyfills } from 'vite-plugin-node-polyfills'\n\nconst _req = createRequire(import.meta.url)\n\nfunction resolveXstateDep(id: string, importer?: string): string | null {\n const searchPaths: string[] = [process.cwd()]\n if (importer) {\n let dir = path.dirname(importer)\n for (let i = 0; i < 5 && dir; i++) {\n searchPaths.push(dir)\n dir = path.dirname(dir)\n }\n }\n const sdkDir = path.resolve(fileURLToPath(import.meta.url), '../../..')\n searchPaths.push(sdkDir, path.resolve(sdkDir, '../..'))\n for (const dir of searchPaths) {\n try {\n return _req.resolve(id, { paths: [dir] })\n } catch {\n continue\n }\n }\n return null\n}\n\n// #region agent log\nconst _dbg = (d: { hypothesisId?: string; location: string; message: string; data?: object }) => {\n fetch('http://127.0.0.1:7242/ingest/0978b378-ebae-46bf-8fd3-134ef2e16cdd', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', 'X-Debug-Session-Id': '73e96f' },\n body: JSON.stringify({\n sessionId: '73e96f',\n ...d,\n timestamp: Date.now(),\n }),\n }).catch(() => {})\n}\n// #endregion\n\nexport interface SeedVitePluginOptions {\n /**\n * Additional modules to alias to ZenFS equivalents.\n * @default ['fs', 'fs/promises', 'node:fs', 'node:fs/promises']\n */\n fsModules?: string[]\n\n /**\n * Whether to inject automatic ZenFS initialization script into index.html.\n * When true, injects a <script type=\"module\"> that imports from '@zenfs/core'/'@zenfs/dom'.\n * Browsers cannot resolve those bare specifiers, so the script fails at runtime unless you use\n * an import map or load ZenFS another way. Prefer false and initialize ZenFS in your entry:\n * import { configure } from '@zenfs/core'; import { IndexedDB } from '@zenfs/dom';\n * await configure({ mounts: { '/': IndexedDB } });\n * @default false\n */\n autoInit?: boolean\n\n /**\n * Enable debug logging.\n * @default false\n */\n debug?: boolean\n\n /**\n * Whether to automatically include vite-plugin-node-polyfills with sensible defaults.\n * @default true\n */\n includeNodePolyfills?: boolean\n}\n\nconst DEFAULT_FS_MODULES = [\n 'fs',\n 'fs/promises',\n 'node:fs',\n 'node:fs/promises',\n]\n\n/**\n * Minimal Vite plugin to make the SDK work in browser/Electron renderer:\n * - Aliases fs → @zenfs/core (and promises variant)\n * - Aliases path → path-browserify\n * - Ensures CommonJS in SDK dist is transformed by Vite's CommonJS plugin\n * - Optionally injects a simple ZenFS initialization script\n * - Optionally wires up vite-plugin-node-polyfills with safe defaults\n *\n * This plugin assumes the SDK does not bundle Node-only code in the browser entry.\n * For Electron, Node-only work (e.g. drizzle-kit, better-sqlite3) should run in the\n * main process; the renderer should only use browser-safe SDK usage.\n *\n * For the renderer build:\n * - Use the SDK's ESM entry: import from '@seedprotocol/sdk' (resolves to dist/main.js).\n * - When autoInit is false (default), initialize ZenFS in your entry:\n * import { configure } from '@zenfs/core'; import { IndexedDB } from '@zenfs/dom';\n * await configure({ mounts: { '/': IndexedDB } });\n */\nexport function seedVitePlugin(options: SeedVitePluginOptions = {}): Plugin[] {\n // #region agent log\n _dbg({\n hypothesisId: 'D',\n location: 'vite/index.ts:seedVitePlugin',\n message: 'seedVitePlugin loaded',\n data: { options: Object.keys(options) },\n })\n // #endregion\n const {\n fsModules = DEFAULT_FS_MODULES,\n autoInit = false,\n debug = false,\n includeNodePolyfills = true,\n } = options\n\n const log = (...args: unknown[]) => {\n }\n\n /**\n * Pre-plugin: configure aliases and optimizeDeps.\n */\n const configPlugin: Plugin = {\n name: 'seed-protocol:config',\n enforce: 'pre',\n\n config(userConfig) {\n const alias: Record<string, string> = {\n // Always use browser-friendly path implementation\n // path: 'path-browserify',\n }\n\n // Resolve @xstate/react transitive deps for production builds (optimizeDeps only helps dev).\n // Bun/workspace layouts can leave these in virtual store; Rollup fails to resolve them.\n const xstateDepIds = [\n 'use-isomorphic-layout-effect',\n 'use-sync-external-store',\n 'use-sync-external-store/shim',\n 'use-sync-external-store/shim/with-selector',\n ]\n let xstateResolved = 0\n for (const id of xstateDepIds) {\n // const resolved = resolveXstateDep(id)\n // if (resolved) {\n // alias[id] = resolved\n // xstateResolved++\n // }\n }\n if (xstateResolved > 0) {\n // #region agent log\n _dbg({\n hypothesisId: 'fix',\n location: 'vite/index.ts:configPlugin.alias',\n message: 'resolve.alias added for @xstate/react deps',\n data: { aliasKeys: Object.keys(alias) },\n })\n // #endregion\n } else {\n // #region agent log\n _dbg({\n hypothesisId: 'fix',\n location: 'vite/index.ts:configPlugin.alias',\n message: 'failed to resolve any @xstate/react deps',\n data: { cwd: process.cwd() },\n })\n // #endregion\n }\n\n for (const mod of fsModules) {\n const isPromises = mod.includes('promises')\n const target = isPromises ? '@zenfs/core/promises' : '@zenfs/core'\n alias[mod] = target\n }\n\n // Merge with any existing aliases\n const existingAlias = userConfig.resolve?.alias\n if (Array.isArray(existingAlias)) {\n for (const [key, value] of Object.entries(alias)) {\n existingAlias.push({ find: key, replacement: value })\n }\n }\n\n const optimizeDeps: UserConfig['optimizeDeps'] = {\n ...(userConfig.optimizeDeps ?? {}),\n exclude: [\n ...(userConfig.optimizeDeps?.exclude ?? []),\n // Do not prebundle the SDK itself or clearly node-only tools\n '@seedprotocol/sdk',\n 'drizzle-kit',\n 'drizzle-orm',\n 'better-sqlite3',\n // sqlocal uses workers and should not be prebundled\n 'sqlocal',\n ],\n include: [\n ...(userConfig.optimizeDeps?.include ?? []),\n // Ensure ZenFS packages are discoverable\n '@zenfs/core',\n '@zenfs/dom',\n // Dependencies of @zenfs/core; must be pre-bundled for resolution\n 'kerium',\n 'utilium',\n 'memium',\n 'readable-stream',\n // viem dynamically imports isows; pre-bundle both so Rollup can resolve them\n 'viem',\n 'isows',\n // @xstate/react transitive deps; must be pre-bundled so Rollup can resolve them\n // (Bun/workspace layouts can leave these in virtual store, breaking resolution)\n 'use-isomorphic-layout-effect',\n 'use-sync-external-store',\n ],\n }\n\n // #region agent log\n _dbg({\n hypothesisId: 'A,B',\n location: 'vite/index.ts:configPlugin.config',\n message: 'configPlugin returning optimizeDeps',\n data: {\n optimizeDepsInclude: optimizeDeps.include,\n userOptimizeDepsInclude: userConfig.optimizeDeps?.include,\n },\n })\n // #endregion\n\n return {\n resolve: {\n alias,\n // Prevent duplicate React/thirdweb instances when @seedprotocol/publish is workspace-linked.\n // Multiple copies break context (e.g. useActiveAccount must be used within ThirdwebProvider).\n dedupe: ['react', 'react-dom', 'thirdweb'],\n },\n optimizeDeps,\n }\n },\n configResolved(resolvedConfig) {\n // #region agent log\n _dbg({\n hypothesisId: 'B',\n location: 'vite/index.ts:configPlugin.configResolved',\n message: 'final merged optimizeDeps',\n data: {\n include: resolvedConfig.optimizeDeps?.include,\n exclude: resolvedConfig.optimizeDeps?.exclude,\n },\n })\n // #endregion\n },\n }\n\n /**\n * Post-plugin: build configuration + optional ZenFS init.\n */\n const mainPlugin: Plugin = {\n name: 'seed-protocol:main',\n enforce: 'post',\n\n config(userConfig) {\n const existingBuild = userConfig.build ?? {}\n const existingCommonjs = existingBuild.commonjsOptions ?? {}\n const existingRollupOptions = existingBuild.rollupOptions ?? {}\n const existingExternal = existingRollupOptions.external ?? []\n\n const include = [\n // Anything the user already had\n ...(Array.isArray(existingCommonjs.include)\n ? existingCommonjs.include\n : existingCommonjs.include\n ? [existingCommonjs.include]\n : []),\n // Always process node_modules and the SDK dist so require() is transformed\n /node_modules/,\n /seed-protocol-sdk[\\\\/]+dist[\\\\/]/,\n ]\n\n // Exclude packages that are already ESM or have special worker handling\n const exclude = [\n ...(Array.isArray(existingCommonjs.exclude)\n ? existingCommonjs.exclude\n : existingCommonjs.exclude\n ? [existingCommonjs.exclude]\n : []),\n // sqlocal is ESM and uses workers - don't transform it\n /node_modules[\\\\/]+sqlocal[\\\\/]/,\n ]\n\n const commonjsOptions = {\n ...existingCommonjs,\n include,\n exclude,\n transformMixedEsModules: true,\n }\n\n // Externalize Node.js-only dev/build tools that should never be bundled\n const nodeOnlyPackages = [\n 'drizzle-kit',\n 'better-sqlite3', // Native SQLite binding (Node.js only)\n // Database drivers that drizzle-kit dynamically imports (should not be bundled)\n '@electric-sql/pglite',\n 'pg',\n 'postgres',\n '@vercel/postgres',\n '@neondatabase/serverless',\n 'mysql2',\n 'mysql2/promise',\n '@planetscale/database',\n ]\n\n const isNodeOnlyExternal = (id: string) =>\n nodeOnlyPackages.some(\n (pkg) =>\n id === pkg ||\n id.startsWith(`${pkg}/`) ||\n id.includes(`/${pkg}/`) ||\n id.endsWith(`/${pkg}`)\n )\n\n const externalList = (id: string, importer?: string, isResolved?: boolean) => {\n if (isNodeOnlyExternal(id)) return true\n if (typeof existingExternal === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (existingExternal as any)(id, importer, isResolved ?? false)\n }\n if (Array.isArray(existingExternal)) {\n return existingExternal.some((ext) => ext === id || id.startsWith(`${ext}/`))\n }\n return false\n }\n\n const rollupOptions = {\n ...existingRollupOptions,\n external: externalList,\n }\n\n const build = {\n ...existingBuild,\n commonjsOptions,\n rollupOptions,\n }\n\n // Worker options are TOP-LEVEL in Vite config, not under build.\n // Default 'iife' breaks when workers use code-splitting (e.g. sqlocal).\n const existingWorker = userConfig.worker ?? {}\n const worker = {\n ...existingWorker,\n format: existingWorker.format ?? 'es',\n }\n\n return {\n build,\n worker,\n }\n },\n\n transformIndexHtml(html) {\n if (!autoInit) return html\n\n const initScript = `\n<script type=\"module\">\nimport { configure } from '@zenfs/core';\nimport { IndexedDB } from '@zenfs/dom';\n\nif (!window.__seedFsReady) {\n window.__seedFsReady = configure({\n mounts: { '/': IndexedDB },\n }).catch((err) => {\n console.error('[seed-vite-plugin] ZenFS initialization failed', err);\n });\n}\n</script>`\n\n if (html.includes('</head>')) {\n return html.replace('</head>', `${initScript}\\n</head>`)\n }\n\n return html + initScript\n },\n }\n\n const resolveXstateDepsPlugin: Plugin = {\n name: 'seed-protocol:resolve-xstate-deps',\n enforce: 'pre',\n resolveId(id, importer) {\n if (id === 'use-isomorphic-layout-effect' || id.startsWith('use-sync-external-store')) {\n const resolved = resolveXstateDep(id, importer)\n if (resolved) {\n // #region agent log\n _dbg({\n hypothesisId: 'fix',\n location: 'vite/index.ts:resolveXstateDepsPlugin',\n message: 'resolved @xstate/react dep',\n data: { id, resolved },\n })\n // #endregion\n return resolved\n }\n // #region agent log\n _dbg({\n hypothesisId: 'fix',\n location: 'vite/index.ts:resolveXstateDepsPlugin',\n message: 'failed to resolve @xstate/react dep',\n data: { id, importer: importer ?? 'unknown' },\n })\n // #endregion\n }\n return null\n },\n }\n\n const plugins: Plugin[] = [configPlugin, resolveXstateDepsPlugin, mainPlugin]\n\n if (includeNodePolyfills) {\n log('Including vite-plugin-node-polyfills with default settings')\n plugins.push(\n nodePolyfills({\n // Let fs be handled by @zenfs/core instead of polyfills\n exclude: ['readline',],\n // Common set of browser-friendly polyfills used by many deps\n include: ['path', 'crypto', 'stream', 'util', 'buffer', 'events', 'string_decoder',],\n globals: {\n Buffer: true,\n global: true,\n process: true,\n },\n protocolImports: true,\n }) as unknown as Plugin,\n )\n }\n\n return plugins\n}\n"],"names":["createRequire","fileURLToPath","nodePolyfills"],"mappings":"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"}
|
package/dist/vite.js
CHANGED
|
@@ -1,5 +1,42 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
1
4
|
import { nodePolyfills } from 'vite-plugin-node-polyfills';
|
|
2
5
|
|
|
6
|
+
const _req = createRequire(import.meta.url);
|
|
7
|
+
function resolveXstateDep(id, importer) {
|
|
8
|
+
const searchPaths = [process.cwd()];
|
|
9
|
+
if (importer) {
|
|
10
|
+
let dir = path.dirname(importer);
|
|
11
|
+
for (let i = 0; i < 5 && dir; i++) {
|
|
12
|
+
searchPaths.push(dir);
|
|
13
|
+
dir = path.dirname(dir);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
const sdkDir = path.resolve(fileURLToPath(import.meta.url), '../../..');
|
|
17
|
+
searchPaths.push(sdkDir, path.resolve(sdkDir, '../..'));
|
|
18
|
+
for (const dir of searchPaths) {
|
|
19
|
+
try {
|
|
20
|
+
return _req.resolve(id, { paths: [dir] });
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
// #region agent log
|
|
29
|
+
const _dbg = (d) => {
|
|
30
|
+
fetch('http://127.0.0.1:7242/ingest/0978b378-ebae-46bf-8fd3-134ef2e16cdd', {
|
|
31
|
+
method: 'POST',
|
|
32
|
+
headers: { 'Content-Type': 'application/json', 'X-Debug-Session-Id': '73e96f' },
|
|
33
|
+
body: JSON.stringify({
|
|
34
|
+
sessionId: '73e96f',
|
|
35
|
+
...d,
|
|
36
|
+
timestamp: Date.now(),
|
|
37
|
+
}),
|
|
38
|
+
}).catch(() => { });
|
|
39
|
+
};
|
|
3
40
|
const DEFAULT_FS_MODULES = [
|
|
4
41
|
'fs',
|
|
5
42
|
'fs/promises',
|
|
@@ -25,6 +62,14 @@ const DEFAULT_FS_MODULES = [
|
|
|
25
62
|
* await configure({ mounts: { '/': IndexedDB } });
|
|
26
63
|
*/
|
|
27
64
|
function seedVitePlugin(options = {}) {
|
|
65
|
+
// #region agent log
|
|
66
|
+
_dbg({
|
|
67
|
+
hypothesisId: 'D',
|
|
68
|
+
location: 'vite/index.ts:seedVitePlugin',
|
|
69
|
+
message: 'seedVitePlugin loaded',
|
|
70
|
+
data: { options: Object.keys(options) },
|
|
71
|
+
});
|
|
72
|
+
// #endregion
|
|
28
73
|
const { fsModules = DEFAULT_FS_MODULES, autoInit = false, debug = false, includeNodePolyfills = true, } = options;
|
|
29
74
|
/**
|
|
30
75
|
* Pre-plugin: configure aliases and optimizeDeps.
|
|
@@ -37,6 +82,31 @@ function seedVitePlugin(options = {}) {
|
|
|
37
82
|
// Always use browser-friendly path implementation
|
|
38
83
|
// path: 'path-browserify',
|
|
39
84
|
};
|
|
85
|
+
// Resolve @xstate/react transitive deps for production builds (optimizeDeps only helps dev).
|
|
86
|
+
// Bun/workspace layouts can leave these in virtual store; Rollup fails to resolve them.
|
|
87
|
+
const xstateDepIds = [
|
|
88
|
+
'use-isomorphic-layout-effect',
|
|
89
|
+
'use-sync-external-store',
|
|
90
|
+
'use-sync-external-store/shim',
|
|
91
|
+
'use-sync-external-store/shim/with-selector',
|
|
92
|
+
];
|
|
93
|
+
for (const id of xstateDepIds) {
|
|
94
|
+
// const resolved = resolveXstateDep(id)
|
|
95
|
+
// if (resolved) {
|
|
96
|
+
// alias[id] = resolved
|
|
97
|
+
// xstateResolved++
|
|
98
|
+
// }
|
|
99
|
+
}
|
|
100
|
+
{
|
|
101
|
+
// #region agent log
|
|
102
|
+
_dbg({
|
|
103
|
+
hypothesisId: 'fix',
|
|
104
|
+
location: 'vite/index.ts:configPlugin.alias',
|
|
105
|
+
message: 'failed to resolve any @xstate/react deps',
|
|
106
|
+
data: { cwd: process.cwd() },
|
|
107
|
+
});
|
|
108
|
+
// #endregion
|
|
109
|
+
}
|
|
40
110
|
for (const mod of fsModules) {
|
|
41
111
|
const isPromises = mod.includes('promises');
|
|
42
112
|
const target = isPromises ? '@zenfs/core/promises' : '@zenfs/core';
|
|
@@ -66,15 +136,31 @@ function seedVitePlugin(options = {}) {
|
|
|
66
136
|
// Ensure ZenFS packages are discoverable
|
|
67
137
|
'@zenfs/core',
|
|
68
138
|
'@zenfs/dom',
|
|
69
|
-
//
|
|
139
|
+
// Dependencies of @zenfs/core; must be pre-bundled for resolution
|
|
70
140
|
'kerium',
|
|
71
141
|
'utilium',
|
|
72
142
|
'memium',
|
|
143
|
+
'readable-stream',
|
|
73
144
|
// viem dynamically imports isows; pre-bundle both so Rollup can resolve them
|
|
74
145
|
'viem',
|
|
75
146
|
'isows',
|
|
147
|
+
// @xstate/react transitive deps; must be pre-bundled so Rollup can resolve them
|
|
148
|
+
// (Bun/workspace layouts can leave these in virtual store, breaking resolution)
|
|
149
|
+
'use-isomorphic-layout-effect',
|
|
150
|
+
'use-sync-external-store',
|
|
76
151
|
],
|
|
77
152
|
};
|
|
153
|
+
// #region agent log
|
|
154
|
+
_dbg({
|
|
155
|
+
hypothesisId: 'A,B',
|
|
156
|
+
location: 'vite/index.ts:configPlugin.config',
|
|
157
|
+
message: 'configPlugin returning optimizeDeps',
|
|
158
|
+
data: {
|
|
159
|
+
optimizeDepsInclude: optimizeDeps.include,
|
|
160
|
+
userOptimizeDepsInclude: userConfig.optimizeDeps?.include,
|
|
161
|
+
},
|
|
162
|
+
});
|
|
163
|
+
// #endregion
|
|
78
164
|
return {
|
|
79
165
|
resolve: {
|
|
80
166
|
alias,
|
|
@@ -85,6 +171,19 @@ function seedVitePlugin(options = {}) {
|
|
|
85
171
|
optimizeDeps,
|
|
86
172
|
};
|
|
87
173
|
},
|
|
174
|
+
configResolved(resolvedConfig) {
|
|
175
|
+
// #region agent log
|
|
176
|
+
_dbg({
|
|
177
|
+
hypothesisId: 'B',
|
|
178
|
+
location: 'vite/index.ts:configPlugin.configResolved',
|
|
179
|
+
message: 'final merged optimizeDeps',
|
|
180
|
+
data: {
|
|
181
|
+
include: resolvedConfig.optimizeDeps?.include,
|
|
182
|
+
exclude: resolvedConfig.optimizeDeps?.exclude,
|
|
183
|
+
},
|
|
184
|
+
});
|
|
185
|
+
// #endregion
|
|
186
|
+
},
|
|
88
187
|
};
|
|
89
188
|
/**
|
|
90
189
|
* Post-plugin: build configuration + optional ZenFS init.
|
|
@@ -197,7 +296,36 @@ if (!window.__seedFsReady) {
|
|
|
197
296
|
return html + initScript;
|
|
198
297
|
},
|
|
199
298
|
};
|
|
200
|
-
const
|
|
299
|
+
const resolveXstateDepsPlugin = {
|
|
300
|
+
name: 'seed-protocol:resolve-xstate-deps',
|
|
301
|
+
enforce: 'pre',
|
|
302
|
+
resolveId(id, importer) {
|
|
303
|
+
if (id === 'use-isomorphic-layout-effect' || id.startsWith('use-sync-external-store')) {
|
|
304
|
+
const resolved = resolveXstateDep(id, importer);
|
|
305
|
+
if (resolved) {
|
|
306
|
+
// #region agent log
|
|
307
|
+
_dbg({
|
|
308
|
+
hypothesisId: 'fix',
|
|
309
|
+
location: 'vite/index.ts:resolveXstateDepsPlugin',
|
|
310
|
+
message: 'resolved @xstate/react dep',
|
|
311
|
+
data: { id, resolved },
|
|
312
|
+
});
|
|
313
|
+
// #endregion
|
|
314
|
+
return resolved;
|
|
315
|
+
}
|
|
316
|
+
// #region agent log
|
|
317
|
+
_dbg({
|
|
318
|
+
hypothesisId: 'fix',
|
|
319
|
+
location: 'vite/index.ts:resolveXstateDepsPlugin',
|
|
320
|
+
message: 'failed to resolve @xstate/react dep',
|
|
321
|
+
data: { id, importer: importer ?? 'unknown' },
|
|
322
|
+
});
|
|
323
|
+
// #endregion
|
|
324
|
+
}
|
|
325
|
+
return null;
|
|
326
|
+
},
|
|
327
|
+
};
|
|
328
|
+
const plugins = [configPlugin, resolveXstateDepsPlugin, mainPlugin];
|
|
201
329
|
if (includeNodePolyfills) {
|
|
202
330
|
plugins.push(nodePolyfills({
|
|
203
331
|
// Let fs be handled by @zenfs/core instead of polyfills
|
package/dist/vite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.js","sources":["../../src/vite/index.ts"],"sourcesContent":["import type { Plugin, UserConfig } from 'vite'\nimport { nodePolyfills } from 'vite-plugin-node-polyfills'\n\nexport interface SeedVitePluginOptions {\n /**\n * Additional modules to alias to ZenFS equivalents.\n * @default ['fs', 'fs/promises', 'node:fs', 'node:fs/promises']\n */\n fsModules?: string[]\n\n /**\n * Whether to inject automatic ZenFS initialization script into index.html.\n * When true, injects a <script type=\"module\"> that imports from '@zenfs/core'/'@zenfs/dom'.\n * Browsers cannot resolve those bare specifiers, so the script fails at runtime unless you use\n * an import map or load ZenFS another way. Prefer false and initialize ZenFS in your entry:\n * import { configure } from '@zenfs/core'; import { IndexedDB } from '@zenfs/dom';\n * await configure({ mounts: { '/': IndexedDB } });\n * @default false\n */\n autoInit?: boolean\n\n /**\n * Enable debug logging.\n * @default false\n */\n debug?: boolean\n\n /**\n * Whether to automatically include vite-plugin-node-polyfills with sensible defaults.\n * @default true\n */\n includeNodePolyfills?: boolean\n}\n\nconst DEFAULT_FS_MODULES = [\n 'fs',\n 'fs/promises',\n 'node:fs',\n 'node:fs/promises',\n]\n\n/**\n * Minimal Vite plugin to make the SDK work in browser/Electron renderer:\n * - Aliases fs → @zenfs/core (and promises variant)\n * - Aliases path → path-browserify\n * - Ensures CommonJS in SDK dist is transformed by Vite's CommonJS plugin\n * - Optionally injects a simple ZenFS initialization script\n * - Optionally wires up vite-plugin-node-polyfills with safe defaults\n *\n * This plugin assumes the SDK does not bundle Node-only code in the browser entry.\n * For Electron, Node-only work (e.g. drizzle-kit, better-sqlite3) should run in the\n * main process; the renderer should only use browser-safe SDK usage.\n *\n * For the renderer build:\n * - Use the SDK's ESM entry: import from '@seedprotocol/sdk' (resolves to dist/main.js).\n * - When autoInit is false (default), initialize ZenFS in your entry:\n * import { configure } from '@zenfs/core'; import { IndexedDB } from '@zenfs/dom';\n * await configure({ mounts: { '/': IndexedDB } });\n */\nexport function seedVitePlugin(options: SeedVitePluginOptions = {}): Plugin[] {\n const {\n fsModules = DEFAULT_FS_MODULES,\n autoInit = false,\n debug = false,\n includeNodePolyfills = true,\n } = options\n\n const log = (...args: unknown[]) => {\n }\n\n /**\n * Pre-plugin: configure aliases and optimizeDeps.\n */\n const configPlugin: Plugin = {\n name: 'seed-protocol:config',\n enforce: 'pre',\n\n config(userConfig) {\n const alias: Record<string, string> = {\n // Always use browser-friendly path implementation\n // path: 'path-browserify',\n }\n\n for (const mod of fsModules) {\n const isPromises = mod.includes('promises')\n const target = isPromises ? '@zenfs/core/promises' : '@zenfs/core'\n alias[mod] = target\n }\n\n // Merge with any existing aliases\n const existingAlias = userConfig.resolve?.alias\n if (Array.isArray(existingAlias)) {\n for (const [key, value] of Object.entries(alias)) {\n existingAlias.push({ find: key, replacement: value })\n }\n }\n\n const optimizeDeps: UserConfig['optimizeDeps'] = {\n ...(userConfig.optimizeDeps ?? {}),\n exclude: [\n ...(userConfig.optimizeDeps?.exclude ?? []),\n // Do not prebundle the SDK itself or clearly node-only tools\n '@seedprotocol/sdk',\n 'drizzle-kit',\n 'drizzle-orm',\n 'better-sqlite3',\n // sqlocal uses workers and should not be prebundled\n 'sqlocal',\n ],\n include: [\n ...(userConfig.optimizeDeps?.include ?? []),\n // Ensure ZenFS packages are discoverable\n '@zenfs/core',\n '@zenfs/dom',\n // kerium is a dependency of @zenfs/core; must be pre-bundled for resolution\n 'kerium',\n 'utilium',\n 'memium',\n // viem dynamically imports isows; pre-bundle both so Rollup can resolve them\n 'viem',\n 'isows',\n ],\n }\n\n return {\n resolve: {\n alias,\n // Prevent duplicate React/thirdweb instances when @seedprotocol/publish is workspace-linked.\n // Multiple copies break context (e.g. useActiveAccount must be used within ThirdwebProvider).\n dedupe: ['react', 'react-dom', 'thirdweb'],\n },\n optimizeDeps,\n }\n },\n }\n\n /**\n * Post-plugin: build configuration + optional ZenFS init.\n */\n const mainPlugin: Plugin = {\n name: 'seed-protocol:main',\n enforce: 'post',\n\n config(userConfig) {\n const existingBuild = userConfig.build ?? {}\n const existingCommonjs = existingBuild.commonjsOptions ?? {}\n const existingRollupOptions = existingBuild.rollupOptions ?? {}\n const existingExternal = existingRollupOptions.external ?? []\n\n const include = [\n // Anything the user already had\n ...(Array.isArray(existingCommonjs.include)\n ? existingCommonjs.include\n : existingCommonjs.include\n ? [existingCommonjs.include]\n : []),\n // Always process node_modules and the SDK dist so require() is transformed\n /node_modules/,\n /seed-protocol-sdk[\\\\/]+dist[\\\\/]/,\n ]\n\n // Exclude packages that are already ESM or have special worker handling\n const exclude = [\n ...(Array.isArray(existingCommonjs.exclude)\n ? existingCommonjs.exclude\n : existingCommonjs.exclude\n ? [existingCommonjs.exclude]\n : []),\n // sqlocal is ESM and uses workers - don't transform it\n /node_modules[\\\\/]+sqlocal[\\\\/]/,\n ]\n\n const commonjsOptions = {\n ...existingCommonjs,\n include,\n exclude,\n transformMixedEsModules: true,\n }\n\n // Externalize Node.js-only dev/build tools that should never be bundled\n const nodeOnlyPackages = [\n 'drizzle-kit',\n 'better-sqlite3', // Native SQLite binding (Node.js only)\n // Database drivers that drizzle-kit dynamically imports (should not be bundled)\n '@electric-sql/pglite',\n 'pg',\n 'postgres',\n '@vercel/postgres',\n '@neondatabase/serverless',\n 'mysql2',\n 'mysql2/promise',\n '@planetscale/database',\n ]\n\n const isNodeOnlyExternal = (id: string) =>\n nodeOnlyPackages.some(\n (pkg) =>\n id === pkg ||\n id.startsWith(`${pkg}/`) ||\n id.includes(`/${pkg}/`) ||\n id.endsWith(`/${pkg}`)\n )\n\n const externalList = (id: string, importer?: string, isResolved?: boolean) => {\n if (isNodeOnlyExternal(id)) return true\n if (typeof existingExternal === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (existingExternal as any)(id, importer, isResolved ?? false)\n }\n if (Array.isArray(existingExternal)) {\n return existingExternal.some((ext) => ext === id || id.startsWith(`${ext}/`))\n }\n return false\n }\n\n const rollupOptions = {\n ...existingRollupOptions,\n external: externalList,\n }\n\n const build = {\n ...existingBuild,\n commonjsOptions,\n rollupOptions,\n }\n\n // Worker options are TOP-LEVEL in Vite config, not under build.\n // Default 'iife' breaks when workers use code-splitting (e.g. sqlocal).\n const existingWorker = userConfig.worker ?? {}\n const worker = {\n ...existingWorker,\n format: existingWorker.format ?? 'es',\n }\n\n return {\n build,\n worker,\n }\n },\n\n transformIndexHtml(html) {\n if (!autoInit) return html\n\n const initScript = `\n<script type=\"module\">\nimport { configure } from '@zenfs/core';\nimport { IndexedDB } from '@zenfs/dom';\n\nif (!window.__seedFsReady) {\n window.__seedFsReady = configure({\n mounts: { '/': IndexedDB },\n }).catch((err) => {\n console.error('[seed-vite-plugin] ZenFS initialization failed', err);\n });\n}\n</script>`\n\n if (html.includes('</head>')) {\n return html.replace('</head>', `${initScript}\\n</head>`)\n }\n\n return html + initScript\n },\n }\n\n const plugins: Plugin[] = [configPlugin, mainPlugin]\n\n if (includeNodePolyfills) {\n log('Including vite-plugin-node-polyfills with default settings')\n plugins.push(\n nodePolyfills({\n // Let fs be handled by @zenfs/core instead of polyfills\n exclude: ['readline',],\n // Common set of browser-friendly polyfills used by many deps\n include: ['path', 'crypto', 'stream', 'util', 'buffer', 'events', 'string_decoder',],\n globals: {\n Buffer: true,\n global: true,\n process: true,\n },\n protocolImports: true,\n }) as unknown as Plugin,\n )\n }\n\n return plugins\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vite.js","sources":["../../src/vite/index.ts"],"sourcesContent":["import type { Plugin, UserConfig } from 'vite'\nimport { createRequire } from 'node:module'\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport { nodePolyfills } from 'vite-plugin-node-polyfills'\n\nconst _req = createRequire(import.meta.url)\n\nfunction resolveXstateDep(id: string, importer?: string): string | null {\n const searchPaths: string[] = [process.cwd()]\n if (importer) {\n let dir = path.dirname(importer)\n for (let i = 0; i < 5 && dir; i++) {\n searchPaths.push(dir)\n dir = path.dirname(dir)\n }\n }\n const sdkDir = path.resolve(fileURLToPath(import.meta.url), '../../..')\n searchPaths.push(sdkDir, path.resolve(sdkDir, '../..'))\n for (const dir of searchPaths) {\n try {\n return _req.resolve(id, { paths: [dir] })\n } catch {\n continue\n }\n }\n return null\n}\n\n// #region agent log\nconst _dbg = (d: { hypothesisId?: string; location: string; message: string; data?: object }) => {\n fetch('http://127.0.0.1:7242/ingest/0978b378-ebae-46bf-8fd3-134ef2e16cdd', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', 'X-Debug-Session-Id': '73e96f' },\n body: JSON.stringify({\n sessionId: '73e96f',\n ...d,\n timestamp: Date.now(),\n }),\n }).catch(() => {})\n}\n// #endregion\n\nexport interface SeedVitePluginOptions {\n /**\n * Additional modules to alias to ZenFS equivalents.\n * @default ['fs', 'fs/promises', 'node:fs', 'node:fs/promises']\n */\n fsModules?: string[]\n\n /**\n * Whether to inject automatic ZenFS initialization script into index.html.\n * When true, injects a <script type=\"module\"> that imports from '@zenfs/core'/'@zenfs/dom'.\n * Browsers cannot resolve those bare specifiers, so the script fails at runtime unless you use\n * an import map or load ZenFS another way. Prefer false and initialize ZenFS in your entry:\n * import { configure } from '@zenfs/core'; import { IndexedDB } from '@zenfs/dom';\n * await configure({ mounts: { '/': IndexedDB } });\n * @default false\n */\n autoInit?: boolean\n\n /**\n * Enable debug logging.\n * @default false\n */\n debug?: boolean\n\n /**\n * Whether to automatically include vite-plugin-node-polyfills with sensible defaults.\n * @default true\n */\n includeNodePolyfills?: boolean\n}\n\nconst DEFAULT_FS_MODULES = [\n 'fs',\n 'fs/promises',\n 'node:fs',\n 'node:fs/promises',\n]\n\n/**\n * Minimal Vite plugin to make the SDK work in browser/Electron renderer:\n * - Aliases fs → @zenfs/core (and promises variant)\n * - Aliases path → path-browserify\n * - Ensures CommonJS in SDK dist is transformed by Vite's CommonJS plugin\n * - Optionally injects a simple ZenFS initialization script\n * - Optionally wires up vite-plugin-node-polyfills with safe defaults\n *\n * This plugin assumes the SDK does not bundle Node-only code in the browser entry.\n * For Electron, Node-only work (e.g. drizzle-kit, better-sqlite3) should run in the\n * main process; the renderer should only use browser-safe SDK usage.\n *\n * For the renderer build:\n * - Use the SDK's ESM entry: import from '@seedprotocol/sdk' (resolves to dist/main.js).\n * - When autoInit is false (default), initialize ZenFS in your entry:\n * import { configure } from '@zenfs/core'; import { IndexedDB } from '@zenfs/dom';\n * await configure({ mounts: { '/': IndexedDB } });\n */\nexport function seedVitePlugin(options: SeedVitePluginOptions = {}): Plugin[] {\n // #region agent log\n _dbg({\n hypothesisId: 'D',\n location: 'vite/index.ts:seedVitePlugin',\n message: 'seedVitePlugin loaded',\n data: { options: Object.keys(options) },\n })\n // #endregion\n const {\n fsModules = DEFAULT_FS_MODULES,\n autoInit = false,\n debug = false,\n includeNodePolyfills = true,\n } = options\n\n const log = (...args: unknown[]) => {\n }\n\n /**\n * Pre-plugin: configure aliases and optimizeDeps.\n */\n const configPlugin: Plugin = {\n name: 'seed-protocol:config',\n enforce: 'pre',\n\n config(userConfig) {\n const alias: Record<string, string> = {\n // Always use browser-friendly path implementation\n // path: 'path-browserify',\n }\n\n // Resolve @xstate/react transitive deps for production builds (optimizeDeps only helps dev).\n // Bun/workspace layouts can leave these in virtual store; Rollup fails to resolve them.\n const xstateDepIds = [\n 'use-isomorphic-layout-effect',\n 'use-sync-external-store',\n 'use-sync-external-store/shim',\n 'use-sync-external-store/shim/with-selector',\n ]\n let xstateResolved = 0\n for (const id of xstateDepIds) {\n // const resolved = resolveXstateDep(id)\n // if (resolved) {\n // alias[id] = resolved\n // xstateResolved++\n // }\n }\n if (xstateResolved > 0) {\n // #region agent log\n _dbg({\n hypothesisId: 'fix',\n location: 'vite/index.ts:configPlugin.alias',\n message: 'resolve.alias added for @xstate/react deps',\n data: { aliasKeys: Object.keys(alias) },\n })\n // #endregion\n } else {\n // #region agent log\n _dbg({\n hypothesisId: 'fix',\n location: 'vite/index.ts:configPlugin.alias',\n message: 'failed to resolve any @xstate/react deps',\n data: { cwd: process.cwd() },\n })\n // #endregion\n }\n\n for (const mod of fsModules) {\n const isPromises = mod.includes('promises')\n const target = isPromises ? '@zenfs/core/promises' : '@zenfs/core'\n alias[mod] = target\n }\n\n // Merge with any existing aliases\n const existingAlias = userConfig.resolve?.alias\n if (Array.isArray(existingAlias)) {\n for (const [key, value] of Object.entries(alias)) {\n existingAlias.push({ find: key, replacement: value })\n }\n }\n\n const optimizeDeps: UserConfig['optimizeDeps'] = {\n ...(userConfig.optimizeDeps ?? {}),\n exclude: [\n ...(userConfig.optimizeDeps?.exclude ?? []),\n // Do not prebundle the SDK itself or clearly node-only tools\n '@seedprotocol/sdk',\n 'drizzle-kit',\n 'drizzle-orm',\n 'better-sqlite3',\n // sqlocal uses workers and should not be prebundled\n 'sqlocal',\n ],\n include: [\n ...(userConfig.optimizeDeps?.include ?? []),\n // Ensure ZenFS packages are discoverable\n '@zenfs/core',\n '@zenfs/dom',\n // Dependencies of @zenfs/core; must be pre-bundled for resolution\n 'kerium',\n 'utilium',\n 'memium',\n 'readable-stream',\n // viem dynamically imports isows; pre-bundle both so Rollup can resolve them\n 'viem',\n 'isows',\n // @xstate/react transitive deps; must be pre-bundled so Rollup can resolve them\n // (Bun/workspace layouts can leave these in virtual store, breaking resolution)\n 'use-isomorphic-layout-effect',\n 'use-sync-external-store',\n ],\n }\n\n // #region agent log\n _dbg({\n hypothesisId: 'A,B',\n location: 'vite/index.ts:configPlugin.config',\n message: 'configPlugin returning optimizeDeps',\n data: {\n optimizeDepsInclude: optimizeDeps.include,\n userOptimizeDepsInclude: userConfig.optimizeDeps?.include,\n },\n })\n // #endregion\n\n return {\n resolve: {\n alias,\n // Prevent duplicate React/thirdweb instances when @seedprotocol/publish is workspace-linked.\n // Multiple copies break context (e.g. useActiveAccount must be used within ThirdwebProvider).\n dedupe: ['react', 'react-dom', 'thirdweb'],\n },\n optimizeDeps,\n }\n },\n configResolved(resolvedConfig) {\n // #region agent log\n _dbg({\n hypothesisId: 'B',\n location: 'vite/index.ts:configPlugin.configResolved',\n message: 'final merged optimizeDeps',\n data: {\n include: resolvedConfig.optimizeDeps?.include,\n exclude: resolvedConfig.optimizeDeps?.exclude,\n },\n })\n // #endregion\n },\n }\n\n /**\n * Post-plugin: build configuration + optional ZenFS init.\n */\n const mainPlugin: Plugin = {\n name: 'seed-protocol:main',\n enforce: 'post',\n\n config(userConfig) {\n const existingBuild = userConfig.build ?? {}\n const existingCommonjs = existingBuild.commonjsOptions ?? {}\n const existingRollupOptions = existingBuild.rollupOptions ?? {}\n const existingExternal = existingRollupOptions.external ?? []\n\n const include = [\n // Anything the user already had\n ...(Array.isArray(existingCommonjs.include)\n ? existingCommonjs.include\n : existingCommonjs.include\n ? [existingCommonjs.include]\n : []),\n // Always process node_modules and the SDK dist so require() is transformed\n /node_modules/,\n /seed-protocol-sdk[\\\\/]+dist[\\\\/]/,\n ]\n\n // Exclude packages that are already ESM or have special worker handling\n const exclude = [\n ...(Array.isArray(existingCommonjs.exclude)\n ? existingCommonjs.exclude\n : existingCommonjs.exclude\n ? [existingCommonjs.exclude]\n : []),\n // sqlocal is ESM and uses workers - don't transform it\n /node_modules[\\\\/]+sqlocal[\\\\/]/,\n ]\n\n const commonjsOptions = {\n ...existingCommonjs,\n include,\n exclude,\n transformMixedEsModules: true,\n }\n\n // Externalize Node.js-only dev/build tools that should never be bundled\n const nodeOnlyPackages = [\n 'drizzle-kit',\n 'better-sqlite3', // Native SQLite binding (Node.js only)\n // Database drivers that drizzle-kit dynamically imports (should not be bundled)\n '@electric-sql/pglite',\n 'pg',\n 'postgres',\n '@vercel/postgres',\n '@neondatabase/serverless',\n 'mysql2',\n 'mysql2/promise',\n '@planetscale/database',\n ]\n\n const isNodeOnlyExternal = (id: string) =>\n nodeOnlyPackages.some(\n (pkg) =>\n id === pkg ||\n id.startsWith(`${pkg}/`) ||\n id.includes(`/${pkg}/`) ||\n id.endsWith(`/${pkg}`)\n )\n\n const externalList = (id: string, importer?: string, isResolved?: boolean) => {\n if (isNodeOnlyExternal(id)) return true\n if (typeof existingExternal === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (existingExternal as any)(id, importer, isResolved ?? false)\n }\n if (Array.isArray(existingExternal)) {\n return existingExternal.some((ext) => ext === id || id.startsWith(`${ext}/`))\n }\n return false\n }\n\n const rollupOptions = {\n ...existingRollupOptions,\n external: externalList,\n }\n\n const build = {\n ...existingBuild,\n commonjsOptions,\n rollupOptions,\n }\n\n // Worker options are TOP-LEVEL in Vite config, not under build.\n // Default 'iife' breaks when workers use code-splitting (e.g. sqlocal).\n const existingWorker = userConfig.worker ?? {}\n const worker = {\n ...existingWorker,\n format: existingWorker.format ?? 'es',\n }\n\n return {\n build,\n worker,\n }\n },\n\n transformIndexHtml(html) {\n if (!autoInit) return html\n\n const initScript = `\n<script type=\"module\">\nimport { configure } from '@zenfs/core';\nimport { IndexedDB } from '@zenfs/dom';\n\nif (!window.__seedFsReady) {\n window.__seedFsReady = configure({\n mounts: { '/': IndexedDB },\n }).catch((err) => {\n console.error('[seed-vite-plugin] ZenFS initialization failed', err);\n });\n}\n</script>`\n\n if (html.includes('</head>')) {\n return html.replace('</head>', `${initScript}\\n</head>`)\n }\n\n return html + initScript\n },\n }\n\n const resolveXstateDepsPlugin: Plugin = {\n name: 'seed-protocol:resolve-xstate-deps',\n enforce: 'pre',\n resolveId(id, importer) {\n if (id === 'use-isomorphic-layout-effect' || id.startsWith('use-sync-external-store')) {\n const resolved = resolveXstateDep(id, importer)\n if (resolved) {\n // #region agent log\n _dbg({\n hypothesisId: 'fix',\n location: 'vite/index.ts:resolveXstateDepsPlugin',\n message: 'resolved @xstate/react dep',\n data: { id, resolved },\n })\n // #endregion\n return resolved\n }\n // #region agent log\n _dbg({\n hypothesisId: 'fix',\n location: 'vite/index.ts:resolveXstateDepsPlugin',\n message: 'failed to resolve @xstate/react dep',\n data: { id, importer: importer ?? 'unknown' },\n })\n // #endregion\n }\n return null\n },\n }\n\n const plugins: Plugin[] = [configPlugin, resolveXstateDepsPlugin, mainPlugin]\n\n if (includeNodePolyfills) {\n log('Including vite-plugin-node-polyfills with default settings')\n plugins.push(\n nodePolyfills({\n // Let fs be handled by @zenfs/core instead of polyfills\n exclude: ['readline',],\n // Common set of browser-friendly polyfills used by many deps\n include: ['path', 'crypto', 'stream', 'util', 'buffer', 'events', 'string_decoder',],\n globals: {\n Buffer: true,\n global: true,\n process: true,\n },\n protocolImports: true,\n }) as unknown as Plugin,\n )\n }\n\n return plugins\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seedprotocol/sdk",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.14",
|
|
4
4
|
"description": "The SDK for Seed Protocol",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/main.cjs",
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"kerium": "^1.3.4",
|
|
38
38
|
"memium": "^0.3.10",
|
|
39
39
|
"utilium": "^2.5.0",
|
|
40
|
+
"readable-stream": "^4.5.2",
|
|
40
41
|
"fsevents": "^2.3.3"
|
|
41
42
|
},
|
|
42
43
|
"dependencies": {
|
|
@@ -50,7 +51,7 @@
|
|
|
50
51
|
"@statelyai/inspect": "^0.4.0",
|
|
51
52
|
"@tanstack/query-sync-storage-persister": "^5.90.17",
|
|
52
53
|
"@tanstack/react-query-persist-client": "^5.90.17",
|
|
53
|
-
"@xstate/react": "^6.
|
|
54
|
+
"@xstate/react": "^6.1.0",
|
|
54
55
|
"arweave": "^1.15.5",
|
|
55
56
|
"better-sqlite3": "^12.5.0",
|
|
56
57
|
"debug": "^4.4.1",
|
|
@@ -82,9 +83,11 @@
|
|
|
82
83
|
"ts-proto": "^2.6.0",
|
|
83
84
|
"tslib": "^2.8.1",
|
|
84
85
|
"use-immer": "^0.11.0",
|
|
86
|
+
"use-isomorphic-layout-effect": "^1.2.1",
|
|
87
|
+
"use-sync-external-store": "^1.6.0",
|
|
85
88
|
"vite-plugin-node-polyfills": "^0.24.0",
|
|
86
89
|
"webpack": "^5.98.0",
|
|
87
|
-
"xstate": "^5.
|
|
90
|
+
"xstate": "^5.28.0"
|
|
88
91
|
},
|
|
89
92
|
"exports": {
|
|
90
93
|
".": {
|