@seedprotocol/sdk 0.4.13 → 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.
Files changed (86) hide show
  1. package/dist/{ArweaveClient-Bot35vMf.js → ArweaveClient-D6E8xe3J.js} +3 -3
  2. package/dist/{ArweaveClient-Bot35vMf.js.map → ArweaveClient-D6E8xe3J.js.map} +1 -1
  3. package/dist/{ArweaveClient-C6mBPWwy.js → ArweaveClient-DElJwN08.js} +3 -3
  4. package/dist/{ArweaveClient-C6mBPWwy.js.map → ArweaveClient-DElJwN08.js.map} +1 -1
  5. package/dist/{Db-rlxROH4S.js → Db-DW1Un2jz.js} +3 -3
  6. package/dist/{Db-rlxROH4S.js.map → Db-DW1Un2jz.js.map} +1 -1
  7. package/dist/{Db-DP7ELP9S.js → Db-De4o7jww.js} +3 -3
  8. package/dist/{Db-DP7ELP9S.js.map → Db-De4o7jww.js.map} +1 -1
  9. package/dist/{EasClient-CHI9lBP8.js → EasClient-BpGDIkmb.js} +2 -2
  10. package/dist/{EasClient-CHI9lBP8.js.map → EasClient-BpGDIkmb.js.map} +1 -1
  11. package/dist/{EasClient-CszJzwqw.js → EasClient-DGY_mkrd.js} +2 -2
  12. package/dist/{EasClient-CszJzwqw.js.map → EasClient-DGY_mkrd.js.map} +1 -1
  13. package/dist/{FileManager-Dy3BbIxq.js → FileManager-Cw8mOIqZ.js} +2 -2
  14. package/dist/{FileManager-Dy3BbIxq.js.map → FileManager-Cw8mOIqZ.js.map} +1 -1
  15. package/dist/{FileManager-C7yOhPvS.js → FileManager-DrHQbmYj.js} +2 -2
  16. package/dist/{FileManager-C7yOhPvS.js.map → FileManager-DrHQbmYj.js.map} +1 -1
  17. package/dist/{ModelProperty--OQb3Dy0.js → ModelProperty-D8d25NtC.js} +17 -17
  18. package/dist/{ModelProperty--OQb3Dy0.js.map → ModelProperty-D8d25NtC.js.map} +1 -1
  19. package/dist/{PathResolver-D--w4fFE.js → PathResolver-BHj0UZTj.js} +2 -2
  20. package/dist/{PathResolver-D--w4fFE.js.map → PathResolver-BHj0UZTj.js.map} +1 -1
  21. package/dist/{PathResolver-BtnV9pXS.js → PathResolver-D1k3dZg5.js} +2 -2
  22. package/dist/{PathResolver-BtnV9pXS.js.map → PathResolver-D1k3dZg5.js.map} +1 -1
  23. package/dist/{QueryClient-Bia5wKCO.js → QueryClient-BCVom0BA.js} +2 -2
  24. package/dist/{QueryClient-Bia5wKCO.js.map → QueryClient-BCVom0BA.js.map} +1 -1
  25. package/dist/{QueryClient-BdNnK6Es.js → QueryClient-D4974vvo.js} +2 -2
  26. package/dist/{QueryClient-BdNnK6Es.js.map → QueryClient-D4974vvo.js.map} +1 -1
  27. package/dist/{Schema-DF4mLt86.js → Schema-CLlE7onI.js} +21 -21
  28. package/dist/{Schema-DF4mLt86.js.map → Schema-CLlE7onI.js.map} +1 -1
  29. package/dist/{SchemaValidationService-D4LwnnIB.js → SchemaValidationService-CwKY3QlY.js} +2 -2
  30. package/dist/{SchemaValidationService-D4LwnnIB.js.map → SchemaValidationService-CwKY3QlY.js.map} +1 -1
  31. package/dist/cjs/{ModelProperty-C5BRfISV.js → ModelProperty-CgQ3zR-u.js} +17 -17
  32. package/dist/cjs/{ModelProperty-C5BRfISV.js.map → ModelProperty-CgQ3zR-u.js.map} +1 -1
  33. package/dist/cjs/{Schema-DVJG8ISB.js → Schema-B0D7LgYb.js} +20 -20
  34. package/dist/cjs/{Schema-DVJG8ISB.js.map → Schema-B0D7LgYb.js.map} +1 -1
  35. package/dist/cjs/{SchemaValidationService-_wef0VX6.js → SchemaValidationService-DUIOUvC_.js} +2 -2
  36. package/dist/cjs/{SchemaValidationService-_wef0VX6.js.map → SchemaValidationService-DUIOUvC_.js.map} +1 -1
  37. package/dist/cjs/{getItem-CUGoglni.js → getItem-BP4BYB4Z.js} +2 -2
  38. package/dist/cjs/{getItem-CUGoglni.js.map → getItem-BP4BYB4Z.js.map} +1 -1
  39. package/dist/cjs/{getPublishPayload-CGl97AXX.js → getPublishPayload-B90BFd8m.js} +5 -5
  40. package/dist/cjs/{getPublishPayload-CGl97AXX.js.map → getPublishPayload-B90BFd8m.js.map} +1 -1
  41. package/dist/cjs/{getPublishUploads-BA5PdoJ3.js → getPublishUploads-D4DMfuOm.js} +3 -3
  42. package/dist/cjs/{getPublishUploads-BA5PdoJ3.js.map → getPublishUploads-D4DMfuOm.js.map} +1 -1
  43. package/dist/cjs/{getSegmentedItemProperties-D3iBFPeo.js → getSegmentedItemProperties-KdudlzXm.js} +2 -2
  44. package/dist/cjs/{getSegmentedItemProperties-D3iBFPeo.js.map → getSegmentedItemProperties-KdudlzXm.js.map} +1 -1
  45. package/dist/cjs/{index-CpBFvNId.js → index-BM8CSlnN.js} +2 -2
  46. package/dist/cjs/index-BM8CSlnN.js.map +1 -0
  47. package/dist/cjs/{index-B3K0jG2t.js → index-CUd7xS2i.js} +33 -30
  48. package/dist/cjs/index-CUd7xS2i.js.map +1 -0
  49. package/dist/cjs/{ownership-CkgGUliG.js → ownership-D3npAPnx.js} +2 -2
  50. package/dist/cjs/{ownership-CkgGUliG.js.map → ownership-D3npAPnx.js.map} +1 -1
  51. package/dist/{getItem-CbGS6wbp.js → getItem-B_IP-uNX.js} +2 -2
  52. package/dist/{getItem-CbGS6wbp.js.map → getItem-B_IP-uNX.js.map} +1 -1
  53. package/dist/{getPublishPayload-jUcwhhs1.js → getPublishPayload-BekDN5Ti.js} +5 -5
  54. package/dist/{getPublishPayload-jUcwhhs1.js.map → getPublishPayload-BekDN5Ti.js.map} +1 -1
  55. package/dist/{getPublishUploads-BAsUuLSM.js → getPublishUploads-DPk5RcAG.js} +3 -3
  56. package/dist/{getPublishUploads-BAsUuLSM.js.map → getPublishUploads-DPk5RcAG.js.map} +1 -1
  57. package/dist/{getSegmentedItemProperties-1QklOMkN.js → getSegmentedItemProperties-DfQNbOpb.js} +2 -2
  58. package/dist/{getSegmentedItemProperties-1QklOMkN.js.map → getSegmentedItemProperties-DfQNbOpb.js.map} +1 -1
  59. package/dist/{index-CjAALVQh.js → index-DbmqfO-Q.js} +2 -2
  60. package/dist/index-DbmqfO-Q.js.map +1 -0
  61. package/dist/{index-BUFvepcD.js → index-Dh_gxItx.js} +47 -44
  62. package/dist/index-Dh_gxItx.js.map +1 -0
  63. package/dist/{index-BnBV-CWp.js → index-XBnjc_SF.js} +3 -3
  64. package/dist/index-XBnjc_SF.js.map +1 -0
  65. package/dist/main.cjs +1 -1
  66. package/dist/main.js +11 -11
  67. package/dist/node.js +10 -10
  68. package/dist/{ownership-CeuRaVwP.js → ownership-CEv7BhIh.js} +2 -2
  69. package/dist/{ownership-CeuRaVwP.js.map → ownership-CEv7BhIh.js.map} +1 -1
  70. package/dist/{property-BiZvboSH.js → property-CppuVi-i.js} +4 -4
  71. package/dist/{property-BiZvboSH.js.map → property-CppuVi-i.js.map} +1 -1
  72. package/dist/{queries-B2xdenwS.js → queries-B1vaglQW.js} +2 -2
  73. package/dist/{queries-B2xdenwS.js.map → queries-B1vaglQW.js.map} +1 -1
  74. package/dist/src/browser/helpers/index.d.ts.map +1 -1
  75. package/dist/src/helpers/QueryClient/BaseQueryClient.d.ts.map +1 -1
  76. package/dist/src/vite/index.d.ts.map +1 -1
  77. package/dist/vite.cjs +129 -1
  78. package/dist/vite.cjs.map +1 -1
  79. package/dist/vite.js +128 -1
  80. package/dist/vite.js.map +1 -1
  81. package/package.json +5 -3
  82. package/dist/cjs/index-B3K0jG2t.js.map +0 -1
  83. package/dist/cjs/index-CpBFvNId.js.map +0 -1
  84. package/dist/index-BUFvepcD.js.map +0 -1
  85. package/dist/index-BnBV-CWp.js.map +0 -1
  86. 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 &lt;script type=\"module\"&gt; 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 // 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 ],\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":"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"}
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 &lt;script type=\"module\"&gt; 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';
@@ -74,8 +144,23 @@ function seedVitePlugin(options = {}) {
74
144
  // viem dynamically imports isows; pre-bundle both so Rollup can resolve them
75
145
  'viem',
76
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',
77
151
  ],
78
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
79
164
  return {
80
165
  resolve: {
81
166
  alias,
@@ -86,6 +171,19 @@ function seedVitePlugin(options = {}) {
86
171
  optimizeDeps,
87
172
  };
88
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
+ },
89
187
  };
90
188
  /**
91
189
  * Post-plugin: build configuration + optional ZenFS init.
@@ -198,7 +296,36 @@ if (!window.__seedFsReady) {
198
296
  return html + initScript;
199
297
  },
200
298
  };
201
- const plugins = [configPlugin, mainPlugin];
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];
202
329
  if (includeNodePolyfills) {
203
330
  plugins.push(nodePolyfills({
204
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 &lt;script type=\"module\"&gt; 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 // 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 ],\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 &lt;script type=\"module\"&gt; 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":";;;;;AAMA,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAE3C,SAAS,gBAAgB,CAAC,EAAU,EAAE,QAAiB,EAAA;IACrD,MAAM,WAAW,GAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAC7C,IAAI,QAAQ,EAAE;QACZ,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAChC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;AACjC,YAAA,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AACrB,YAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QACzB;IACF;AACA,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC;AACvE,IAAA,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACvD,IAAA,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE;AAC7B,QAAA,IAAI;AACF,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C;AAAE,QAAA,MAAM;YACN;QACF;IACF;AACA,IAAA,OAAO,IAAI;AACb;AAEA;AACA,MAAM,IAAI,GAAG,CAAC,CAA8E,KAAI;IAC9F,KAAK,CAAC,mEAAmE,EAAE;AACzE,QAAA,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,QAAQ,EAAE;AAC/E,QAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;AACnB,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,GAAG,CAAC;AACJ,YAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;KACH,CAAC,CAAC,KAAK,CAAC,MAAK,EAAE,CAAC,CAAC;AACpB,CAAC;AAkCD,MAAM,kBAAkB,GAAG;IACzB,IAAI;IACJ,aAAa;IACb,SAAS;IACT,kBAAkB;CACnB;AAED;;;;;;;;;;;;;;;;;AAiBG;AACG,SAAU,cAAc,CAAC,OAAA,GAAiC,EAAE,EAAA;;AAEhE,IAAA,IAAI,CAAC;AACH,QAAA,YAAY,EAAE,GAAG;AACjB,QAAA,QAAQ,EAAE,8BAA8B;AACxC,QAAA,OAAO,EAAE,uBAAuB;QAChC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACxC,KAAA,CAAC;;AAEF,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;;;AAID,YAAA,MAAM,YAAY,GAAG;gBACnB,8BAA8B;gBAC9B,yBAAyB;gBACzB,8BAA8B;gBAC9B,4CAA4C;aAC7C;AAED,YAAA,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE;;;;;;YAM/B;AACA,YASO;;AAEL,gBAAA,IAAI,CAAC;AACH,oBAAA,YAAY,EAAE,KAAK;AACnB,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,OAAO,EAAE,0CAA0C;oBACnD,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE;AAC7B,iBAAA,CAAC;;YAEJ;AAEA,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;oBACR,iBAAiB;;oBAEjB,MAAM;oBACN,OAAO;;;oBAGP,8BAA8B;oBAC9B,yBAAyB;AAC1B,iBAAA;aACF;;AAGD,YAAA,IAAI,CAAC;AACH,gBAAA,YAAY,EAAE,KAAK;AACnB,gBAAA,QAAQ,EAAE,mCAAmC;AAC7C,gBAAA,OAAO,EAAE,qCAAqC;AAC9C,gBAAA,IAAI,EAAE;oBACJ,mBAAmB,EAAE,YAAY,CAAC,OAAO;AACzC,oBAAA,uBAAuB,EAAE,UAAU,CAAC,YAAY,EAAE,OAAO;AAC1D,iBAAA;AACF,aAAA,CAAC;;YAGF,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;AACD,QAAA,cAAc,CAAC,cAAc,EAAA;;AAE3B,YAAA,IAAI,CAAC;AACH,gBAAA,YAAY,EAAE,GAAG;AACjB,gBAAA,QAAQ,EAAE,2CAA2C;AACrD,gBAAA,OAAO,EAAE,2BAA2B;AACpC,gBAAA,IAAI,EAAE;AACJ,oBAAA,OAAO,EAAE,cAAc,CAAC,YAAY,EAAE,OAAO;AAC7C,oBAAA,OAAO,EAAE,cAAc,CAAC,YAAY,EAAE,OAAO;AAC9C,iBAAA;AACF,aAAA,CAAC;;QAEJ,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,uBAAuB,GAAW;AACtC,QAAA,IAAI,EAAE,mCAAmC;AACzC,QAAA,OAAO,EAAE,KAAK;QACd,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAA;YACpB,IAAI,EAAE,KAAK,8BAA8B,IAAI,EAAE,CAAC,UAAU,CAAC,yBAAyB,CAAC,EAAE;gBACrF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC;gBAC/C,IAAI,QAAQ,EAAE;;AAEZ,oBAAA,IAAI,CAAC;AACH,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,QAAQ,EAAE,uCAAuC;AACjD,wBAAA,OAAO,EAAE,4BAA4B;AACrC,wBAAA,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;AACvB,qBAAA,CAAC;;AAEF,oBAAA,OAAO,QAAQ;gBACjB;;AAEA,gBAAA,IAAI,CAAC;AACH,oBAAA,YAAY,EAAE,KAAK;AACnB,oBAAA,QAAQ,EAAE,uCAAuC;AACjD,oBAAA,OAAO,EAAE,qCAAqC;oBAC9C,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAAE;AAC9C,iBAAA,CAAC;;YAEJ;AACA,YAAA,OAAO,IAAI;QACb,CAAC;KACF;IAED,MAAM,OAAO,GAAa,CAAC,YAAY,EAAE,uBAAuB,EAAE,UAAU,CAAC;IAE7E,IAAI,oBAAoB,EAAE;AAExB,QAAA,OAAO,CAAC,IAAI,CACV,aAAa,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;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seedprotocol/sdk",
3
- "version": "0.4.13",
3
+ "version": "0.4.14",
4
4
  "description": "The SDK for Seed Protocol",
5
5
  "type": "module",
6
6
  "main": "./dist/main.cjs",
@@ -51,7 +51,7 @@
51
51
  "@statelyai/inspect": "^0.4.0",
52
52
  "@tanstack/query-sync-storage-persister": "^5.90.17",
53
53
  "@tanstack/react-query-persist-client": "^5.90.17",
54
- "@xstate/react": "^6.0.0",
54
+ "@xstate/react": "^6.1.0",
55
55
  "arweave": "^1.15.5",
56
56
  "better-sqlite3": "^12.5.0",
57
57
  "debug": "^4.4.1",
@@ -83,9 +83,11 @@
83
83
  "ts-proto": "^2.6.0",
84
84
  "tslib": "^2.8.1",
85
85
  "use-immer": "^0.11.0",
86
+ "use-isomorphic-layout-effect": "^1.2.1",
87
+ "use-sync-external-store": "^1.6.0",
86
88
  "vite-plugin-node-polyfills": "^0.24.0",
87
89
  "webpack": "^5.98.0",
88
- "xstate": "^5.19.0"
90
+ "xstate": "^5.28.0"
89
91
  },
90
92
  "exports": {
91
93
  ".": {