every-plugin 0.4.13 → 0.4.15

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 (87) hide show
  1. package/dist/build/rspack/index.cjs +82 -80
  2. package/dist/build/rspack/index.cjs.map +1 -0
  3. package/dist/build/rspack/index.d.cts +1 -1
  4. package/dist/build/rspack/index.d.cts.map +1 -0
  5. package/dist/build/rspack/index.d.mts +1 -1
  6. package/dist/build/rspack/index.d.mts.map +1 -0
  7. package/dist/build/rspack/index.mjs +82 -80
  8. package/dist/build/rspack/index.mjs.map +1 -0
  9. package/dist/errors-9sNpYLv5.d.mts +1 -1
  10. package/dist/errors-9sNpYLv5.d.mts.map +1 -0
  11. package/dist/errors-CVnoPl9v.cjs +1 -1
  12. package/dist/errors-CVnoPl9v.cjs.map +1 -0
  13. package/dist/errors-D7keKf7a.mjs +1 -1
  14. package/dist/errors-D7keKf7a.mjs.map +1 -0
  15. package/dist/errors-DKPPPYYT.d.cts +1 -1
  16. package/dist/errors-DKPPPYYT.d.cts.map +1 -0
  17. package/dist/fetch-8DauUFDh.mjs +335 -0
  18. package/dist/fetch-8DauUFDh.mjs.map +1 -0
  19. package/dist/fetch-CrBvwsZ4.cjs +336 -0
  20. package/dist/fetch-CrBvwsZ4.cjs.map +1 -0
  21. package/dist/index-Coz54d1B.d.mts +387 -0
  22. package/dist/index-Coz54d1B.d.mts.map +1 -0
  23. package/dist/index-G63gBZIY.d.cts +386 -0
  24. package/dist/index-G63gBZIY.d.cts.map +1 -0
  25. package/dist/index.cjs +3 -3
  26. package/dist/index.cjs.map +1 -0
  27. package/dist/index.d.cts +1 -1
  28. package/dist/index.d.mts +1 -1
  29. package/dist/index.mjs +3 -3
  30. package/dist/index.mjs.map +1 -0
  31. package/dist/normalize-BW7kk8Lk.d.cts +1 -1
  32. package/dist/normalize-BW7kk8Lk.d.cts.map +1 -0
  33. package/dist/normalize-D4Qh0wVk.cjs +1 -1
  34. package/dist/normalize-D4Qh0wVk.cjs.map +1 -0
  35. package/dist/normalize-D7nae0Hn.mjs +1 -1
  36. package/dist/normalize-D7nae0Hn.mjs.map +1 -0
  37. package/dist/normalize-eB_j86fm.d.mts +1 -1
  38. package/dist/normalize-eB_j86fm.d.mts.map +1 -0
  39. package/dist/package-BoyftHDo.mjs +150 -0
  40. package/dist/package-BoyftHDo.mjs.map +1 -0
  41. package/dist/package-CgNIVjVe.cjs +155 -0
  42. package/dist/package-CgNIVjVe.cjs.map +1 -0
  43. package/dist/plugins-C6MGKdD-.mjs +790 -0
  44. package/dist/plugins-C6MGKdD-.mjs.map +1 -0
  45. package/dist/plugins-DNaNtkG7.cjs +791 -0
  46. package/dist/plugins-DNaNtkG7.cjs.map +1 -0
  47. package/dist/runtime/index.cjs +2 -2
  48. package/dist/runtime/index.d.cts +1 -1
  49. package/dist/runtime/index.d.mts +1 -1
  50. package/dist/runtime/index.mjs +2 -2
  51. package/dist/runtime-60AkNpI0.mjs +476 -0
  52. package/dist/runtime-60AkNpI0.mjs.map +1 -0
  53. package/dist/runtime-BcksCIA1.cjs +541 -0
  54. package/dist/runtime-BcksCIA1.cjs.map +1 -0
  55. package/dist/standard-CkH8zNkx.mjs +584 -0
  56. package/dist/standard-CkH8zNkx.mjs.map +1 -0
  57. package/dist/standard-v75BC6Z5.cjs +685 -0
  58. package/dist/standard-v75BC6Z5.cjs.map +1 -0
  59. package/dist/testing/index.cjs +3 -3
  60. package/dist/testing/index.cjs.map +1 -0
  61. package/dist/testing/index.d.cts +2 -2
  62. package/dist/testing/index.d.cts.map +1 -0
  63. package/dist/testing/index.d.mts +2 -2
  64. package/dist/testing/index.d.mts.map +1 -0
  65. package/dist/testing/index.mjs +3 -3
  66. package/dist/testing/index.mjs.map +1 -0
  67. package/dist/zod-A7Pti5IV.d.cts +1 -1
  68. package/dist/zod-A7Pti5IV.d.cts.map +1 -0
  69. package/dist/zod-BVo51kgJ.mjs +1 -1
  70. package/dist/zod-BVo51kgJ.mjs.map +1 -0
  71. package/dist/zod-DYghWCz1.cjs +1 -1
  72. package/dist/zod-DYghWCz1.cjs.map +1 -0
  73. package/dist/zod-Zw8dlP3j.d.mts +1 -1
  74. package/dist/zod-Zw8dlP3j.d.mts.map +1 -0
  75. package/package.json +1 -1
  76. package/dist/fetch-CGzn1Uf7.cjs +0 -336
  77. package/dist/fetch-ycs0raYN.mjs +0 -335
  78. package/dist/index-matrPV4m.d.cts +0 -382
  79. package/dist/index-qxKsRmCb.d.mts +0 -383
  80. package/dist/package-CMoV9xVN.cjs +0 -155
  81. package/dist/package-WZ0vKAyb.mjs +0 -150
  82. package/dist/plugins-Cmsm3gW1.cjs +0 -791
  83. package/dist/plugins-hpi2GlaX.mjs +0 -790
  84. package/dist/runtime-B4AItsDQ.mjs +0 -458
  85. package/dist/runtime-D5bSEcHa.cjs +0 -523
  86. package/dist/standard-0wBehDUp.cjs +0 -685
  87. package/dist/standard-CYaRay89.mjs +0 -584
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-BcksCIA1.cjs","names":["Data","ORPCError","Effect","pkg","entryUrl: string","getNormalizedRemoteName","Effect","Ref","Effect","z","Context","Effect","hydrated: Record<string, unknown>","hydrated","Context","Effect","Scope","Effect","Scope","Exit","Layer","runtime: ManagedRuntime.ManagedRuntime<PluginService, never>","registry: PluginRegistry","Hash","Effect","effect","Exit","Cause","Option","ManagedRuntime"],"sources":["../src/runtime/errors.ts","../src/runtime/services/module-federation.service.ts","../src/runtime/services/plugin-lifecycle.service.ts","../src/runtime/validation.ts","../src/runtime/services/secrets.service.ts","../src/runtime/services/plugin-loader.service.ts","../src/runtime/services/plugin.service.ts","../src/runtime/index.ts"],"sourcesContent":["import { ORPCError } from \"@orpc/contract\";\nimport { Data } from \"effect\";\nimport type { z } from \"zod\";\n\nexport class PluginRuntimeError extends Data.TaggedError(\"PluginRuntimeError\")<{\n\treadonly pluginId?: string;\n\treadonly operation?: string;\n\treadonly procedureName?: string;\n\treadonly cause?: Error;\n\treadonly retryable: boolean;\n}> { }\n\nexport class ModuleFederationError extends Data.TaggedError(\n\t\"ModuleFederationError\",\n)<{\n\treadonly pluginId: string;\n\treadonly remoteUrl: string;\n\treadonly cause?: Error;\n}> { }\n\nexport class ValidationError extends Data.TaggedError(\"ValidationError\")<{\n\treadonly pluginId: string;\n\treadonly stage: \"config\" | \"input\" | \"output\" | \"state\";\n\treadonly zodError: z.ZodError;\n}> { }\n\n// Helper to determine if an oRPC error code is retryable\nexport const isRetryableORPCCode = (code: string): boolean => {\n\tswitch (code) {\n\t\tcase 'TOO_MANY_REQUESTS':\n\t\tcase 'SERVICE_UNAVAILABLE':\n\t\tcase 'BAD_GATEWAY':\n\t\tcase 'GATEWAY_TIMEOUT':\n\t\tcase 'TIMEOUT':\n\t\t\treturn true;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n};\n\n// Convert ORPC errors from plugin procedures to PluginRuntimeError\nexport const wrapORPCError = (\n\torpcError: ORPCError<string, unknown>,\n\tpluginId?: string,\n\tprocedureName?: string,\n\toperation?: string\n): PluginRuntimeError => {\n\treturn new PluginRuntimeError({\n\t\tpluginId,\n\t\toperation,\n\t\tprocedureName,\n\t\tretryable: isRetryableORPCCode(orpcError.code),\n\t\tcause: orpcError as Error\n\t});\n};\n\n// Universal error converter for the runtime\nexport const toPluginRuntimeError = (\n\terror: unknown,\n\tpluginId?: string,\n\tprocedureName?: string,\n\toperation?: string,\n\tdefaultRetryable = false\n): PluginRuntimeError => {\n\tif (error instanceof ORPCError) {\n\t\treturn wrapORPCError(error, pluginId, procedureName, operation);\n\t}\n\n\tif (error instanceof PluginRuntimeError) {\n\t\treturn error; // Already converted\n\t}\n\n\treturn new PluginRuntimeError({\n\t\tpluginId,\n\t\toperation,\n\t\tprocedureName,\n\t\tretryable: defaultRetryable,\n\t\tcause: error instanceof Error ? error : new Error(String(error))\n\t});\n};\n","import { betterFetch } from \"@better-fetch/fetch\";\nimport {\n\tcreateInstance,\n\tgetInstance,\n} from \"@module-federation/enhanced/runtime\";\nimport { setGlobalFederationInstance } from \"@module-federation/runtime-core\";\nimport { Effect } from \"effect\";\nimport type { AnyPlugin } from \"../../types\";\nimport { ModuleFederationError } from \"../errors\";\nimport { getNormalizedRemoteName } from \"./normalize\";\n\ntype RemoteModule = \n | (new () => AnyPlugin)\n | { default: new () => AnyPlugin };\n\nimport pkg from \"../../../package.json\";\n\nconst createModuleFederationInstance = Effect.cached(\n\tEffect.sync(() => {\n\t\ttry {\n\t\t\tlet instance = getInstance();\n\n\t\t\tif (!instance) {\n\t\t\t\tinstance = createInstance({\n\t\t\t\t\tname: \"host\",\n\t\t\t\t\tremotes: [],\n\t\t\t\t\tshared: {\n\t\t\t\t\t\t\"every-plugin\": {\n\t\t\t\t\t\t\tversion: pkg.version,\n\t\t\t\t\t\t\tshareConfig: {\n\t\t\t\t\t\t\t\tsingleton: true,\n\t\t\t\t\t\t\t\trequiredVersion: `^${pkg.version}`,\n\t\t\t\t\t\t\t\teager: true,\n\t\t\t\t\t\t\t\tstrictVersion: false, // Allow bidirectional version compatibility\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\teffect: {\n\t\t\t\t\t\t\tversion: pkg.dependencies.effect,\n\t\t\t\t\t\t\tshareConfig: {\n\t\t\t\t\t\t\t\tsingleton: true,\n\t\t\t\t\t\t\t\trequiredVersion: \"^3.18.0\", // Allow any 3.18.x patch version\n\t\t\t\t\t\t\t\teager: true,\n\t\t\t\t\t\t\t\tstrictVersion: false, // Allow version flexibility for compatibility\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tzod: {\n\t\t\t\t\t\t\tversion: pkg.dependencies.zod,\n\t\t\t\t\t\t\tshareConfig: {\n\t\t\t\t\t\t\t\tsingleton: true,\n\t\t\t\t\t\t\t\trequiredVersion: \"^4.1.0\", // Allow any 4.1.x patch version\n\t\t\t\t\t\t\t\teager: true,\n\t\t\t\t\t\t\t\tstrictVersion: false, // Allow version flexibility for compatibility\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"@orpc/contract\": {\n\t\t\t\t\t\t\tversion: pkg.dependencies[\"@orpc/contract\"],\n\t\t\t\t\t\t\tshareConfig: {\n\t\t\t\t\t\t\t\tsingleton: true,\n\t\t\t\t\t\t\t\trequiredVersion: \"^1.8.0\", // Allow any 1.8.x patch version\n\t\t\t\t\t\t\t\teager: true,\n\t\t\t\t\t\t\t\tstrictVersion: false, // Allow version flexibility for compatibility\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"@orpc/server\": {\n\t\t\t\t\t\t\tversion: pkg.dependencies[\"@orpc/server\"],\n\t\t\t\t\t\t\tshareConfig: {\n\t\t\t\t\t\t\t\tsingleton: true,\n\t\t\t\t\t\t\t\trequiredVersion: \"^1.8.0\", // Allow any 1.8.x patch version\n\t\t\t\t\t\t\t\teager: true,\n\t\t\t\t\t\t\t\tstrictVersion: false, // Allow version flexibility for compatibility\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tsetGlobalFederationInstance(instance);\n\t\t\t}\n\n\t\t\treturn instance;\n\t\t} catch (error) {\n\t\t\tthrow new Error(`Failed to initialize Module Federation: ${error}`);\n\t\t}\n\t}),\n);\n\nexport class ModuleFederationService extends Effect.Service<ModuleFederationService>()(\"ModuleFederationService\", {\n\teffect: Effect.gen(function* () {\n\t\tconst mf = yield* Effect.flatten(createModuleFederationInstance);\n\n\t\treturn {\n\t\t\tregisterRemote: (pluginId: string, url: string) =>\n\t\t\t\tEffect.gen(function* () {\n\t\t\t\t\tconsole.log(`[MF] Registering ${pluginId}`);\n\n\t\t\t\t\tconst manifestUrl = url.endsWith('/')\n\t\t\t\t\t\t? `${url}mf-manifest.json`\n\t\t\t\t\t\t: `${url}/mf-manifest.json`;\n\n\t\t\t\t\t// Check if manifest is available (MF 2.0 with manifests)\n\t\t\t\t\tconst { error: manifestError } = yield* Effect.tryPromise({\n\t\t\t\t\t\ttry: () => betterFetch(manifestUrl, { method: \"HEAD\" }),\n\t\t\t\t\t\tcatch: (error) => error, // Don't fail yet, try fallback\n\t\t\t\t\t});\n\n\t\t\t\t\tlet entryUrl: string;\n\t\t\t\t\tlet isManifestMode = false;\n\n\t\t\t\t\tif (!manifestError) {\n\t\t\t\t\t\t// MF 2.0 manifest mode - use manifest URL\n\t\t\t\t\t\tentryUrl = manifestUrl;\n\t\t\t\t\t\tisManifestMode = true;\n\t\t\t\t\t\tconsole.log(`[MF] Using MF 2.0 manifest mode for ${pluginId}`);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Fallback to MF 1.5 direct mode - assume URL points to remoteEntry.js\n\t\t\t\t\t\tconsole.log(`[MF] ⚠️ Manifest not found, falling back to MF 1.5 mode for ${pluginId}`);\n\t\t\t\t\t\tentryUrl = url;\n\t\t\t\t\t\tisManifestMode = false;\n\t\t\t\t\t}\n\n\t\t\t\t\t// For MF 2.0, the name can be the pluginId (alias)\n\t\t\t\t\t// The manifest will contain the actual container name\n\t\t\t\t\tconst remoteName = isManifestMode ? pluginId : getNormalizedRemoteName(pluginId);\n\n\t\t\t\t\tyield* Effect.try({\n\t\t\t\t\t\ttry: () => mf.registerRemotes([{\n\t\t\t\t\t\t\tname: remoteName,\n\t\t\t\t\t\t\tentry: entryUrl,\n\t\t\t\t\t\t\t...(isManifestMode && { alias: pluginId }) // Explicit alias for clarity\n\t\t\t\t\t\t}]),\n\t\t\t\t\t\tcatch: (error): ModuleFederationError =>\n\t\t\t\t\t\t\tnew ModuleFederationError({\n\t\t\t\t\t\t\t\tpluginId,\n\t\t\t\t\t\t\t\tremoteUrl: url,\n\t\t\t\t\t\t\t\tcause:\n\t\t\t\t\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\n\t\t\t\t\tconsole.log(`[MF] ✅ Registered ${pluginId} (${isManifestMode ? 'MF 2.0' : 'MF 1.5'})`);\n\t\t\t\t}),\n\n\t\t\tloadRemoteConstructor: (pluginId: string, url: string) =>\n\t\t\t\tEffect.gen(function* () {\n\t\t\t\t\tconst remoteName = getNormalizedRemoteName(pluginId);\n\t\t\t\t\tconsole.log(`[MF] Loading remote ${remoteName}`);\n\t\t\t\t\tconst modulePath = `${remoteName}/plugin`;\n\n\t\t\t\t\treturn yield* Effect.tryPromise({\n\t\t\t\t\t\ttry: async () => {\n\n\t\t\t\t\t\t\tconst container = await mf.loadRemote<RemoteModule>(modulePath);\n\t\t\t\t\t\t\tif (!container) {\n\t\t\t\t\t\t\t\tthrow new Error(`No container returned for ${modulePath}`);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Support multiple export patterns: direct function, default export, named exports\n\t\t\t\t\t\t\tconst Constructor =\n\t\t\t\t\t\t\t\ttypeof container === \"function\"\n\t\t\t\t\t\t\t\t\t? container // Direct function export\n\t\t\t\t\t\t\t\t\t: container.default\n\t\t\t\t\t\t\t\t\t? container.default // Default export\n\t\t\t\t\t\t\t\t\t: Object.values(container).find( // Named export fallback\n\t\t\t\t\t\t\t\t\t\t\t(exp) => typeof exp === \"function\" && exp.prototype?.constructor === exp\n\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (!Constructor || typeof Constructor !== \"function\") {\n\t\t\t\t\t\t\t\tconst containerInfo = typeof container === \"object\"\n\t\t\t\t\t\t\t\t\t? `Available exports: ${Object.keys(container).join(', ')}`\n\t\t\t\t\t\t\t\t\t: `Container type: ${typeof container}`;\n\n\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t`No valid plugin constructor found for '${pluginId}'.\\n` +\n\t\t\t\t\t\t\t\t\t`Supported patterns:\\n` +\n\t\t\t\t\t\t\t\t\t` - export const YourPlugin = createPlugin({...})\\n` +\n\t\t\t\t\t\t\t\t\t` - export default createPlugin({...})\\n` +\n\t\t\t\t\t\t\t\t\t`${containerInfo}`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Validate it looks like a plugin constructor (has binding property)\n\t\t\t\t\t\t\tif (!(Constructor as any).binding) {\n\t\t\t\t\t\t\t\tconst containerInfo = typeof container === \"object\"\n\t\t\t\t\t\t\t\t\t? `Found exports: ${Object.keys(container).join(', ')}`\n\t\t\t\t\t\t\t\t\t: `Container type: ${typeof container}`;\n\n\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t`Invalid plugin constructor for '${pluginId}'. ` +\n\t\t\t\t\t\t\t\t\t`The exported value must be created with createPlugin(). ` +\n\t\t\t\t\t\t\t\t\t`Found a function but it's missing the required 'binding' property.\\n` +\n\t\t\t\t\t\t\t\t\t`${containerInfo}`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconsole.log(`[MF] ✅ Loaded constructor for ${pluginId}`);\n\t\t\t\t\t\t\treturn Constructor;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcatch: (error): ModuleFederationError =>\n\t\t\t\t\t\t\tnew ModuleFederationError({\n\t\t\t\t\t\t\t\tpluginId,\n\t\t\t\t\t\t\t\tremoteUrl: url,\n\t\t\t\t\t\t\t\tcause:\n\t\t\t\t\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t};\n\t}),\n}) {}\n","import { Effect, Ref } from \"effect\";\nimport type { AnyPlugin, InitializedPlugin } from \"../../types\";\nimport { toPluginRuntimeError } from \"../errors\";\n\nexport class PluginLifecycleService extends Effect.Service<PluginLifecycleService>()(\"PluginLifecycleService\", {\n effect: Effect.gen(function* () {\n const activePlugins = yield* Ref.make(new Set<InitializedPlugin<AnyPlugin>>());\n\n return {\n register: <T extends AnyPlugin>(plugin: InitializedPlugin<T>) =>\n Ref.update(activePlugins, plugins =>\n new Set(plugins).add(plugin as InitializedPlugin<AnyPlugin>)\n ),\n\n unregister: (plugin: InitializedPlugin<AnyPlugin>) =>\n Ref.update(activePlugins, plugins => {\n const newSet = new Set(plugins);\n newSet.delete(plugin);\n return newSet;\n }),\n\n shutdown: (plugin: InitializedPlugin<AnyPlugin>) =>\n Effect.gen(function* () {\n // Remove from active plugins\n yield* Ref.update(activePlugins, plugins => {\n const newSet = new Set(plugins);\n newSet.delete(plugin);\n return newSet;\n });\n\n // Shutdown the plugin\n yield* plugin.plugin.shutdown().pipe(\n Effect.mapError(error =>\n toPluginRuntimeError(error, plugin.plugin.id, undefined, \"shutdown-plugin\", false)\n )\n );\n }),\n\n cleanup: () =>\n Effect.gen(function* () {\n const plugins = yield* Ref.get(activePlugins);\n\n // Shutdown all active plugins concurrently\n yield* Effect.forEach(\n plugins,\n plugin =>\n plugin.plugin.shutdown().pipe(\n Effect.mapError(error =>\n toPluginRuntimeError(error, plugin.plugin.id, undefined, \"cleanup-shutdown\", false)\n ),\n Effect.catchAll(error =>\n Effect.logError(\n `Failed to shutdown plugin ${plugin.plugin.id} during cleanup`,\n error,\n { pluginId: plugin.plugin.id }\n )\n )\n ),\n { concurrency: \"unbounded\" }\n );\n\n // Clear the active plugins set\n yield* Ref.set(activePlugins, new Set());\n }).pipe(\n Effect.catchAll(() => Effect.void) // Convert errors to void for cleanup\n ),\n };\n }),\n}) { }\n","import { Effect } from \"effect\";\nimport type { z } from \"zod\";\nimport { ValidationError } from \"./errors\";\n\nexport const validate = <T>(\n\tschema: z.ZodSchema<T>,\n\tdata: unknown,\n\tpluginId: string,\n\tstage: \"config\" | \"input\" | \"output\" | \"state\",\n): Effect.Effect<T, ValidationError> =>\n\tEffect.gen(function* () {\n\t\tconst result = schema.safeParse(data);\n\t\tif (result.success) {\n\t\t\treturn result.data;\n\t\t}\n\t\treturn yield* Effect.fail(\n\t\t\tnew ValidationError({\n\t\t\t\tpluginId,\n\t\t\t\tstage,\n\t\t\t\tzodError: result.error,\n\t\t\t}),\n\t\t);\n\t});\n","import { Context, Effect } from \"effect\";\nimport { z } from \"zod\";\nimport type { SecretsConfig } from \"../../types\";\nimport { PluginRuntimeError } from \"../errors\";\n\nconst configSchema = z.object({\n\tsecrets: z.record(z.string(), z.unknown())\n}).loose();\n\nexport class SecretsConfigTag extends Context.Tag(\"SecretsConfig\")<\n\tSecretsConfigTag,\n\tSecretsConfig\n>() { }\n\nexport class SecretsService extends Effect.Service<SecretsService>()(\"SecretsService\", {\n\teffect: Effect.gen(function* () {\n\t\tconst secrets = yield* SecretsConfigTag;\n\n\t\tconst hydrateValue = (value: unknown): unknown => {\n\t\t\tif (typeof value === 'string') {\n\t\t\t\tlet result = value;\n\t\t\t\tfor (const [key, secretValue] of Object.entries(secrets)) {\n\t\t\t\t\tconst pattern = new RegExp(`{{${key}}}`, \"g\");\n\t\t\t\t\tresult = result.replace(pattern, String(secretValue));\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\treturn value.map(hydrateValue);\n\t\t\t}\n\n\t\t\tif (value && typeof value === 'object') {\n\t\t\t\tconst isPlainObject = value.constructor === Object || value.constructor === undefined;\n\t\t\t\t\n\t\t\t\tif (isPlainObject) {\n\t\t\t\t\tconst hydrated: Record<string, unknown> = {};\n\t\t\t\t\tfor (const [key, val] of Object.entries(value)) {\n\t\t\t\t\t\thydrated[key] = hydrateValue(val);\n\t\t\t\t\t}\n\t\t\t\t\treturn hydrated;\n\t\t\t\t}\n\n\t\t\t\tconst hydrated = Object.create(Object.getPrototypeOf(value));\n\t\t\t\tfor (const [key, val] of Object.entries(value)) {\n\t\t\t\t\thydrated[key] = hydrateValue(val);\n\t\t\t\t}\n\t\t\t\treturn hydrated;\n\t\t\t}\n\n\t\t\treturn value;\n\t\t};\n\n\t\treturn {\n\t\t\thydrateSecrets: <T>(config: T) =>\n\t\t\t\tEffect.gen(function* () {\n\t\t\t\t\tconst parseResult = configSchema.parse(config);\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn hydrateValue(parseResult) as T;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\t\t\tnew PluginRuntimeError({\n\t\t\t\t\t\t\t\toperation: \"hydrate-secrets\",\n\t\t\t\t\t\t\t\tcause:\n\t\t\t\t\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\t\t\tretryable: false,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t};\n\t}),\n}) { }\n","import type { InferSchemaInput, InferSchemaOutput } from \"@orpc/contract\";\nimport { Context, Effect, Scope } from \"effect\";\nimport type { z } from \"zod\";\nimport type {\n\tAnyPlugin,\n\tInitializedPlugin,\n\tLoadedPlugin,\n\tPluginInstance,\n\tPluginRegistry\n} from \"../../types\";\nimport { PluginRuntimeError, toPluginRuntimeError } from \"../errors\";\nimport { validate } from \"../validation\";\nimport { ModuleFederationService } from \"./module-federation.service\";\nimport { SecretsService } from \"./secrets.service\";\n\nexport class PluginRegistryTag extends Context.Tag(\"PluginRegistry\")<\n\tPluginRegistryTag,\n\tPluginRegistry\n>() { }\n\nexport class RegistryService extends Effect.Service<RegistryService>()(\"RegistryService\", {\n\teffect: Effect.gen(function* () {\n\t\tconst registry = yield* PluginRegistryTag;\n\n\t\treturn {\n\t\t\tget: (pluginId: string) =>\n\t\t\t\tEffect.fromNullable(registry[pluginId]).pipe(\n\t\t\t\t\tEffect.mapError(() =>\n\t\t\t\t\t\tnew PluginRuntimeError({\n\t\t\t\t\t\t\tpluginId,\n\t\t\t\t\t\t\toperation: \"validate-plugin-id\",\n\t\t\t\t\t\t\tcause: new Error(`Plugin ${pluginId} not found in registry`),\n\t\t\t\t\t\t\tretryable: false,\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t};\n\t}),\n}) { }\n\nexport class PluginLoaderService extends Effect.Service<PluginLoaderService>()(\"PluginLoaderService\", {\n\teffect: Effect.gen(function* () {\n\t\tconst moduleFederationService = yield* ModuleFederationService;\n\t\tconst secretsService = yield* SecretsService;\n\t\tconst registryService = yield* RegistryService;\n\n\t\tconst resolveUrl = (baseUrl: string, version?: string): string =>\n\t\t\tversion && version !== \"latest\"\n\t\t\t\t? baseUrl.replace(\"@latest\", `@${version}`)\n\t\t\t\t: baseUrl;\n\n\t\tconst getMetadata = (pluginId: string) => registryService.get(pluginId);\n\n\t\treturn {\n\t\t\tloadPlugin: (pluginId: string) =>\n\t\t\t\tEffect.gen(function* () {\n\t\t\t\t\tconst metadata = yield* getMetadata(pluginId);\n\t\t\t\t\tconst url = resolveUrl(metadata.remoteUrl);\n\n\t\t\t\t\tyield* moduleFederationService.registerRemote(pluginId, url).pipe(\n\t\t\t\t\t\tEffect.mapError((error) =>\n\t\t\t\t\t\t\ttoPluginRuntimeError(error, pluginId, undefined, \"register-remote\", true),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\n\t\t\t\t\tyield* Effect.logDebug(\"Loading plugin\", { pluginId, url });\n\n\t\t\t\t\tconst ctor = yield* moduleFederationService.loadRemoteConstructor(pluginId, url).pipe(\n\t\t\t\t\t\tEffect.mapError((error) =>\n\t\t\t\t\t\t\ttoPluginRuntimeError(error, pluginId, undefined, \"load-remote\", false),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tctor,\n\t\t\t\t\t\tmetadata: metadata,\n\t\t\t\t\t} satisfies LoadedPlugin;\n\t\t\t\t}),\n\n\t\t\tinstantiatePlugin: <T extends AnyPlugin>(\n\t\t\t\tpluginId: string,\n\t\t\t\tloadedPlugin: LoadedPlugin<T>,\n\t\t\t) =>\n\t\t\t\tEffect.gen(function* () {\n\t\t\t\t\tconst instance = yield* Effect.try(() => new loadedPlugin.ctor()).pipe(\n\t\t\t\t\t\tEffect.mapError((error) =>\n\t\t\t\t\t\t\ttoPluginRuntimeError(\n\t\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\t\tpluginId,\n\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\t\"instantiate-plugin\",\n\t\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\n\t\t\t\t\t(instance.id as string) = pluginId;\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tplugin: instance,\n\t\t\t\t\t\tmetadata: loadedPlugin.metadata,\n\t\t\t\t\t} satisfies PluginInstance<T>;\n\t\t\t\t}),\n\n\t\t\tinitializePlugin: <T extends AnyPlugin>(\n\t\t\t\tpluginInstance: PluginInstance<T>,\n\t\t\t\tconfig: { variables: InferSchemaInput<T[\"configSchema\"][\"variables\"]>; secrets: InferSchemaInput<T[\"configSchema\"][\"secrets\"]> },\n\t\t\t) =>\n\t\t\t\tEffect.gen(function* () {\n\t\t\t\t\tconst { plugin } = pluginInstance;\n\n\t\t\t\t\t// Validate and hydrate config\n\t\t\t\t\tconst validatedVariables = yield* validate(\n\t\t\t\t\t\tplugin.configSchema.variables as z.ZodSchema<InferSchemaOutput<T[\"configSchema\"][\"variables\"]>>,\n\t\t\t\t\t\tconfig.variables,\n\t\t\t\t\t\tplugin.id,\n\t\t\t\t\t\t\"config\",\n\t\t\t\t\t).pipe(\n\t\t\t\t\t\tEffect.mapError((validationError) =>\n\t\t\t\t\t\t\tnew PluginRuntimeError({\n\t\t\t\t\t\t\t\tpluginId: plugin.id,\n\t\t\t\t\t\t\t\toperation: \"validate-config\",\n\t\t\t\t\t\t\t\tcause: validationError.zodError,\n\t\t\t\t\t\t\t\tretryable: false,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\n\t\t\t\t\t// Validate secrets\n\t\t\t\t\tconst validatedSecrets = yield* validate(\n\t\t\t\t\t\tplugin.configSchema.secrets as z.ZodSchema<InferSchemaOutput<T[\"configSchema\"][\"secrets\"]>>,\n\t\t\t\t\t\tconfig.secrets,\n\t\t\t\t\t\tplugin.id,\n\t\t\t\t\t\t\"config\",\n\t\t\t\t\t).pipe(\n\t\t\t\t\t\tEffect.mapError((validationError) =>\n\t\t\t\t\t\t\tnew PluginRuntimeError({\n\t\t\t\t\t\t\t\tpluginId: plugin.id,\n\t\t\t\t\t\t\t\toperation: \"validate-secrets\",\n\t\t\t\t\t\t\t\tcause: validationError.zodError,\n\t\t\t\t\t\t\t\tretryable: false,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\n\t\t\t\t\t// Hydrate secrets in variables\n\t\t\t\t\tconst hydratedConfig = yield* secretsService.hydrateSecrets({\n\t\t\t\t\t\tvariables: validatedVariables,\n\t\t\t\t\t\tsecrets: validatedSecrets,\n\t\t\t\t\t});\n\n\t\t\t\t\tconst _variables = yield* validate(\n\t\t\t\t\t\tplugin.configSchema.variables as z.ZodSchema<InferSchemaOutput<T[\"configSchema\"][\"variables\"]>>,\n\t\t\t\t\t\thydratedConfig.variables,\n\t\t\t\t\t\tplugin.id,\n\t\t\t\t\t\t\"config\",\n\t\t\t\t\t).pipe(\n\t\t\t\t\t\tEffect.mapError((validationError) =>\n\t\t\t\t\t\t\tnew PluginRuntimeError({\n\t\t\t\t\t\t\t\tpluginId: plugin.id,\n\t\t\t\t\t\t\t\toperation: \"validate-hydrated-config\",\n\t\t\t\t\t\t\t\tcause: validationError.zodError,\n\t\t\t\t\t\t\t\tretryable: false,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\n\t\t\t\t\t// Create a long-lived scope for this plugin instance\n\t\t\t\t\tconst scope = yield* Scope.make();\n\n\t\t\t\t\t// Initialize plugin within the scope\n\t\t\t\t\tconst context = yield* plugin.initialize({ variables: _variables, secrets: hydratedConfig.secrets }).pipe(\n\t\t\t\t\t\tEffect.provideService(Scope.Scope, scope),\n\t\t\t\t\t\tEffect.mapError((error) =>\n\t\t\t\t\t\t\ttoPluginRuntimeError(error, plugin.id, undefined, \"initialize-plugin\", false),\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tplugin,\n\t\t\t\t\t\tmetadata: pluginInstance.metadata,\n\t\t\t\t\t\tconfig: { variables: _variables, secrets: hydratedConfig.secrets },\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tscope,\n\t\t\t\t\t} satisfies InitializedPlugin<T>;\n\t\t\t\t}),\n\t\t};\n\t}),\n}) {\n}\n","import { Effect, Exit, Layer, Scope } from \"effect\";\nimport type {\n\tAnyPlugin,\n\tInitializedPlugin,\n\tPluginRegistry,\n\tSecretsConfig\n} from \"../../types\";\nimport { ModuleFederationService } from \"./module-federation.service\";\nimport { PluginLifecycleService } from \"./plugin-lifecycle.service\";\nimport { PluginLoaderService, PluginRegistryTag, RegistryService } from \"./plugin-loader.service\";\nimport { SecretsConfigTag, SecretsService } from \"./secrets.service\";\n\nexport class PluginService extends Effect.Service<PluginService>()(\"PluginService\", {\n\tscoped: Effect.gen(function* () {\n\t\tconst loader = yield* PluginLoaderService;\n\t\tconst lifecycle = yield* PluginLifecycleService;\n\n\t\treturn {\n\t\t\tloadPlugin: loader.loadPlugin,\n\t\t\tinstantiatePlugin: loader.instantiatePlugin,\n\t\t\tinitializePlugin: loader.initializePlugin,\n\t\t\tshutdownPlugin: (plugin: InitializedPlugin<AnyPlugin>) =>\n\t\t\t\tEffect.gen(function* () {\n\t\t\t\t\t// Shutdown the plugin first (graceful cleanup)\n\t\t\t\t\tyield* plugin.plugin.shutdown().pipe(\n\t\t\t\t\t\tEffect.catchAll(() => Effect.void)\n\t\t\t\t\t);\n\n\t\t\t\t\t// Close the plugin scope to interrupt fibers and release resources\n\t\t\t\t\tyield* Scope.close(plugin.scope, Exit.succeed(undefined));\n\n\t\t\t\t\t// Unregister from lifecycle tracking\n\t\t\t\t\tyield* lifecycle.unregister(plugin);\n\t\t\t\t}),\n\t\t\tcleanup: lifecycle.cleanup,\n\t\t};\n\t}),\n}) {\n\tstatic Live = (registry: PluginRegistry, secrets: SecretsConfig) => {\n\t\tconst contextLayer = Layer.mergeAll(\n\t\t\tLayer.succeed(PluginRegistryTag, registry),\n\t\t\tLayer.succeed(SecretsConfigTag, secrets),\n\t\t);\n\n\t\tconst servicesLayer = Layer.mergeAll(\n\t\t\tModuleFederationService.Default,\n\t\t\tSecretsService.Default,\n\t\t\tRegistryService.Default,\n\t\t\tPluginLifecycleService.Default,\n\t\t).pipe(\n\t\t\tLayer.provide(contextLayer)\n\t\t);\n\n\t\treturn PluginService.Default.pipe(\n\t\t\tLayer.provide(PluginLoaderService.Default),\n\t\t\tLayer.provide(servicesLayer)\n\t\t);\n\t}\n}\n","import { createRouterClient } from \"@orpc/server\";\nimport { Cause, Effect, Exit, Hash, ManagedRuntime, Option } from \"effect\";\nimport type {\n\tAnyPlugin,\n\tInitializedPlugin,\n\tLoadedPlugin,\n\tPluginClientType,\n\tPluginConfigInput,\n\tPluginInstance,\n\tPluginRegistry,\n\tPluginRouterType,\n\tPluginRuntimeConfig,\n\tRegisteredPlugin,\n\tRegisteredPlugins,\n\tUsePluginResult\n} from \"../types\";\nimport { PluginRuntimeError } from \"./errors\";\nimport { PluginService } from \"./services/plugin.service\";\n\nexport class PluginRuntime<R extends RegisteredPlugins = RegisteredPlugins> {\n\tprivate pluginCache = new Map<string, Effect.Effect<InitializedPlugin<AnyPlugin>, PluginRuntimeError>>();\n\n\tconstructor(\n\t\tprivate runtime: ManagedRuntime.ManagedRuntime<PluginService, never>,\n\t\tprivate registry: PluginRegistry\n\t) { }\n\n\tprivate generateCacheKey(pluginId: string, config: unknown): string {\n\t\tconst configHash = Hash.structure(config as object).toString();\n\t\treturn `${pluginId}:${configHash}`;\n\t}\n\n\tprivate validatePluginId(\n\t\tpluginId: string\n\t): Effect.Effect<string, PluginRuntimeError> {\n\t\tif (!(pluginId in this.registry)) {\n\t\t\treturn Effect.fail(new PluginRuntimeError({\n\t\t\t\tpluginId: String(pluginId),\n\t\t\t\toperation: \"validate-plugin-id\",\n\t\t\t\tcause: new Error(`Plugin ID '${String(pluginId)}' not found in registry.`),\n\t\t\t\tretryable: false,\n\t\t\t}));\n\t\t}\n\t\treturn Effect.succeed(String(pluginId));\n\t}\n\n\tprivate async runPromise<A, E>(\n\t\teffect: Effect.Effect<A, E, PluginService>\n\t): Promise<A> {\n\t\tconst exit = await this.runtime.runPromiseExit(effect);\n\n\t\tif (Exit.isFailure(exit)) {\n\t\t\tconst error = Cause.failureOption(exit.cause);\n\t\t\tif (Option.isSome(error)) {\n\t\t\t\tthrow error.value;\n\t\t\t}\n\t\t\tthrow Cause.squash(exit.cause);\n\t\t}\n\n\t\treturn exit.value;\n\t}\n\n\tasync usePlugin<K extends keyof R & string>(\n\t\tpluginId: K,\n\t\tconfig: PluginConfigInput<R[K]>\n\t): Promise<UsePluginResult<K, R>> {\n\t\tconst cacheKey = this.generateCacheKey(pluginId, config);\n\n\t\tlet cachedPlugin = this.pluginCache.get(cacheKey);\n\t\tif (!cachedPlugin) {\n\t\t\tconst operation = Effect.gen(this, function* () {\n\t\t\t\tconst pluginService = yield* PluginService;\n\t\t\t\tconst validatedId = yield* this.validatePluginId(pluginId);\n\n\t\t\t\t// Load → Instantiate → Initialize\n\t\t\t\tconst ctor = yield* pluginService.loadPlugin(validatedId);\n\t\t\t\tconst instance = yield* pluginService.instantiatePlugin(pluginId, ctor);\n\t\t\t\tconst initialized = yield* pluginService.initializePlugin(instance, config);\n\n\t\t\t\treturn initialized;\n\t\t\t}).pipe(Effect.provide(this.runtime));\n\n\t\t\tcachedPlugin = Effect.cached(operation).pipe(Effect.flatten);\n\t\t\tthis.pluginCache.set(cacheKey, cachedPlugin);\n\t\t}\n\n\t\tconst initialized = await this.runPromise(cachedPlugin);\n\t\tconst router = initialized.plugin.createRouter(initialized.context);\n\t\tconst client = createRouterClient(router);\n\n\t\treturn {\n\t\t\trouter: router as PluginRouterType<R[K]>,\n\t\t\tclient: client as PluginClientType<R[K]>,\n\t\t\tmetadata: initialized.metadata,\n\t\t\tinitialized: initialized as InitializedPlugin<RegisteredPlugin<K, R>>\n\t\t} as UsePluginResult<K, R>;\n\t}\n\n\tasync loadPlugin<K extends keyof R & string>(\n\t\tpluginId: K\n\t): Promise<LoadedPlugin<RegisteredPlugin<K, R>>> {\n\t\tconst effect = Effect.gen(function* () {\n\t\t\tconst pluginService = yield* PluginService;\n\t\t\treturn yield* pluginService.loadPlugin(pluginId);\n\t\t});\n\t\treturn this.runPromise(effect) as Promise<LoadedPlugin<RegisteredPlugin<K, R>>>;\n\t}\n\n\tasync instantiatePlugin<K extends keyof R & string>(\n\t\tpluginId: K,\n\t\tloadedPlugin: LoadedPlugin<RegisteredPlugin<K, R>>\n\t): Promise<PluginInstance<RegisteredPlugin<K, R>>> {\n\t\tconst effect = Effect.gen(function* () {\n\t\t\tconst pluginService = yield* PluginService;\n\t\t\treturn yield* pluginService.instantiatePlugin(pluginId, loadedPlugin);\n\t\t});\n\t\treturn this.runPromise(effect) as Promise<PluginInstance<RegisteredPlugin<K, R>>>;\n\t}\n\n\tasync initializePlugin<T extends AnyPlugin>(\n\t\tinstance: PluginInstance<T>,\n\t\tconfig: any\n\t): Promise<InitializedPlugin<T>> {\n\t\tconst effect = Effect.gen(function* () {\n\t\t\tconst pluginService = yield* PluginService;\n\t\t\treturn yield* pluginService.initializePlugin(instance, config);\n\t\t});\n\t\treturn this.runPromise(effect);\n\t}\n\n\tasync shutdown(): Promise<void> {\n\t\tconst effect = Effect.gen(function* () {\n\t\t\tconst pluginService = yield* PluginService;\n\t\t\tyield* pluginService.cleanup();\n\t\t});\n\t\treturn this.runPromise(effect);\n\t}\n\n\tasync evictPlugin<K extends keyof R & string>(\n\t\tpluginId: K,\n\t\tconfig: PluginConfigInput<R[K]>\n\t): Promise<void> {\n\t\tconst cacheKey = this.generateCacheKey(pluginId, config);\n\n\t\tconst effect = Effect.gen(this, function* () {\n\t\t\tconst pluginService = yield* PluginService;\n\t\t\tconst cachedPlugin = this.pluginCache.get(cacheKey);\n\n\t\t\tif (cachedPlugin) {\n\t\t\t\tthis.pluginCache.delete(cacheKey);\n\n\t\t\t\tconst pluginResult = yield* cachedPlugin.pipe(\n\t\t\t\t\tEffect.catchAll(() => Effect.succeed(null))\n\t\t\t\t);\n\n\t\t\t\tif (pluginResult) {\n\t\t\t\t\tyield* pluginService.shutdownPlugin(pluginResult).pipe(\n\t\t\t\t\t\tEffect.catchAll(() => Effect.void)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}).pipe(Effect.catchAll(() => Effect.void));\n\n\t\treturn this.runPromise(effect);\n\t}\n}\n\n/**\n * Normalizes a remote URL to ensure it points to remoteEntry.js\n * If the URL doesn't end with a file extension, appends /remoteEntry.js\n */\nfunction normalizeRemoteUrl(url: string): string {\n\tif (url.endsWith('.js')) return url; // Already a file\n\treturn `${url.endsWith('/') ? url.slice(0, -1) : url}/remoteEntry.js`;\n}\n\nexport function createPluginRuntime<R extends RegisteredPlugins = RegisteredPlugins>(\n\tconfig: PluginRuntimeConfig<R>\n): PluginRuntime<R> {\n\tconst secrets = config.secrets || {};\n\n\t// Normalize all remote URLs in the registry\n\tconst normalizedRegistry = Object.fromEntries(\n\t\tObject.entries(config.registry).map(([pluginId, entry]) => [\n\t\t\tpluginId,\n\t\t\t{\n\t\t\t\t...entry,\n\t\t\t\tremoteUrl: normalizeRemoteUrl(entry.remoteUrl)\n\t\t\t}\n\t\t])\n\t) as PluginRegistry;\n\n\tconst layer = PluginService.Live(normalizedRegistry, secrets);\n\tconst runtime = ManagedRuntime.make(layer);\n\n\treturn new PluginRuntime(runtime, normalizedRegistry);\n}\n"],"mappings":"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"}
@@ -0,0 +1,584 @@
1
+ import { ORPCError, fallbackContractConfig } from "@orpc/contract";
2
+
3
+ //#region ../../node_modules/.bun/@orpc+shared@1.10.4+460773ef8ff1e07c/node_modules/@orpc/shared/dist/index.mjs
4
+ function resolveMaybeOptionalOptions(rest) {
5
+ return rest[0] ?? {};
6
+ }
7
+ function toArray(value$1) {
8
+ return Array.isArray(value$1) ? value$1 : value$1 === void 0 || value$1 === null ? [] : [value$1];
9
+ }
10
+ const ORPC_SHARED_PACKAGE_NAME = "@orpc/shared";
11
+ const ORPC_SHARED_PACKAGE_VERSION = "1.10.4";
12
+ function once(fn) {
13
+ let cached;
14
+ return () => {
15
+ if (cached) return cached.result;
16
+ const result = fn();
17
+ cached = { result };
18
+ return result;
19
+ };
20
+ }
21
+ function sequential(fn) {
22
+ let lastOperationPromise = Promise.resolve();
23
+ return (...args) => {
24
+ return lastOperationPromise = lastOperationPromise.catch(() => {}).then(() => {
25
+ return fn(...args);
26
+ });
27
+ };
28
+ }
29
+ const GLOBAL_OTEL_CONFIG_KEY = `__${ORPC_SHARED_PACKAGE_NAME}@${ORPC_SHARED_PACKAGE_VERSION}/otel/config__`;
30
+ function isAsyncIteratorObject(maybe) {
31
+ if (!maybe || typeof maybe !== "object") return false;
32
+ return "next" in maybe && typeof maybe.next === "function" && Symbol.asyncIterator in maybe && typeof maybe[Symbol.asyncIterator] === "function";
33
+ }
34
+ const fallbackAsyncDisposeSymbol = Symbol.for("asyncDispose");
35
+ const asyncDisposeSymbol = Symbol.asyncDispose ?? fallbackAsyncDisposeSymbol;
36
+ var AsyncIteratorClass = class {
37
+ #isDone = false;
38
+ #isExecuteComplete = false;
39
+ #cleanup;
40
+ #next;
41
+ constructor(next, cleanup) {
42
+ this.#cleanup = cleanup;
43
+ this.#next = sequential(async () => {
44
+ if (this.#isDone) return {
45
+ done: true,
46
+ value: void 0
47
+ };
48
+ try {
49
+ const result = await next();
50
+ if (result.done) this.#isDone = true;
51
+ return result;
52
+ } catch (err) {
53
+ this.#isDone = true;
54
+ throw err;
55
+ } finally {
56
+ if (this.#isDone && !this.#isExecuteComplete) {
57
+ this.#isExecuteComplete = true;
58
+ await this.#cleanup("next");
59
+ }
60
+ }
61
+ });
62
+ }
63
+ next() {
64
+ return this.#next();
65
+ }
66
+ async return(value$1) {
67
+ this.#isDone = true;
68
+ if (!this.#isExecuteComplete) {
69
+ this.#isExecuteComplete = true;
70
+ await this.#cleanup("return");
71
+ }
72
+ return {
73
+ done: true,
74
+ value: value$1
75
+ };
76
+ }
77
+ async throw(err) {
78
+ this.#isDone = true;
79
+ if (!this.#isExecuteComplete) {
80
+ this.#isExecuteComplete = true;
81
+ await this.#cleanup("throw");
82
+ }
83
+ throw err;
84
+ }
85
+ /**
86
+ * asyncDispose symbol only available in esnext, we should fallback to Symbol.for('asyncDispose')
87
+ */
88
+ async [asyncDisposeSymbol]() {
89
+ this.#isDone = true;
90
+ if (!this.#isExecuteComplete) {
91
+ this.#isExecuteComplete = true;
92
+ await this.#cleanup("dispose");
93
+ }
94
+ }
95
+ [Symbol.asyncIterator]() {
96
+ return this;
97
+ }
98
+ };
99
+ function stringifyJSON(value$1) {
100
+ return JSON.stringify(value$1);
101
+ }
102
+ function findDeepMatches(check, payload, segments = [], maps = [], values = []) {
103
+ if (check(payload)) {
104
+ maps.push(segments);
105
+ values.push(payload);
106
+ } else if (Array.isArray(payload)) payload.forEach((v, i) => {
107
+ findDeepMatches(check, v, [...segments, i], maps, values);
108
+ });
109
+ else if (isObject(payload)) for (const key in payload) findDeepMatches(check, payload[key], [...segments, key], maps, values);
110
+ return {
111
+ maps,
112
+ values
113
+ };
114
+ }
115
+ function getConstructor(value$1) {
116
+ if (!isTypescriptObject(value$1)) return null;
117
+ return Object.getPrototypeOf(value$1)?.constructor;
118
+ }
119
+ function isObject(value$1) {
120
+ if (!value$1 || typeof value$1 !== "object") return false;
121
+ const proto = Object.getPrototypeOf(value$1);
122
+ return proto === Object.prototype || !proto || !proto.constructor;
123
+ }
124
+ function isTypescriptObject(value$1) {
125
+ return !!value$1 && (typeof value$1 === "object" || typeof value$1 === "function");
126
+ }
127
+ function clone(value$1) {
128
+ if (Array.isArray(value$1)) return value$1.map(clone);
129
+ if (isObject(value$1)) {
130
+ const result = {};
131
+ for (const key in value$1) result[key] = clone(value$1[key]);
132
+ return result;
133
+ }
134
+ return value$1;
135
+ }
136
+ const NullProtoObj = /* @__PURE__ */ (() => {
137
+ const e = function() {};
138
+ e.prototype = /* @__PURE__ */ Object.create(null);
139
+ Object.freeze(e.prototype);
140
+ return e;
141
+ })();
142
+ function value(value2, ...args) {
143
+ if (typeof value2 === "function") return value2(...args);
144
+ return value2;
145
+ }
146
+ function tryDecodeURIComponent(value$1) {
147
+ try {
148
+ return decodeURIComponent(value$1);
149
+ } catch {
150
+ return value$1;
151
+ }
152
+ }
153
+
154
+ //#endregion
155
+ //#region ../../node_modules/.bun/@orpc+standard-server@1.10.4+460773ef8ff1e07c/node_modules/@orpc/standard-server/dist/index.mjs
156
+ var EventEncoderError = class extends TypeError {};
157
+ var ErrorEvent = class extends Error {
158
+ data;
159
+ constructor(options) {
160
+ super(options?.message ?? "An error event was received", options);
161
+ this.data = options?.data;
162
+ }
163
+ };
164
+ function assertEventId(id) {
165
+ if (id.includes("\n")) throw new EventEncoderError("Event's id must not contain a newline character");
166
+ }
167
+ function assertEventRetry(retry) {
168
+ if (!Number.isInteger(retry) || retry < 0) throw new EventEncoderError("Event's retry must be a integer and >= 0");
169
+ }
170
+ function assertEventComment(comment) {
171
+ if (comment.includes("\n")) throw new EventEncoderError("Event's comment must not contain a newline character");
172
+ }
173
+ const EVENT_SOURCE_META_SYMBOL = Symbol("ORPC_EVENT_SOURCE_META");
174
+ function withEventMeta(container, meta) {
175
+ if (meta.id === void 0 && meta.retry === void 0 && !meta.comments?.length) return container;
176
+ if (meta.id !== void 0) assertEventId(meta.id);
177
+ if (meta.retry !== void 0) assertEventRetry(meta.retry);
178
+ if (meta.comments !== void 0) for (const comment of meta.comments) assertEventComment(comment);
179
+ return new Proxy(container, { get(target, prop, receiver) {
180
+ if (prop === EVENT_SOURCE_META_SYMBOL) return meta;
181
+ return Reflect.get(target, prop, receiver);
182
+ } });
183
+ }
184
+ function getEventMeta(container) {
185
+ return isTypescriptObject(container) ? Reflect.get(container, EVENT_SOURCE_META_SYMBOL) : void 0;
186
+ }
187
+
188
+ //#endregion
189
+ //#region ../../node_modules/.bun/@orpc+client@1.10.4+460773ef8ff1e07c/node_modules/@orpc/client/dist/shared/client.DmkMd_GB.mjs
190
+ const ORPC_CLIENT_PACKAGE_NAME = "@orpc/client";
191
+ const ORPC_CLIENT_PACKAGE_VERSION = "1.10.4";
192
+ const COMMON_ORPC_ERROR_DEFS = {
193
+ BAD_REQUEST: {
194
+ status: 400,
195
+ message: "Bad Request"
196
+ },
197
+ UNAUTHORIZED: {
198
+ status: 401,
199
+ message: "Unauthorized"
200
+ },
201
+ FORBIDDEN: {
202
+ status: 403,
203
+ message: "Forbidden"
204
+ },
205
+ NOT_FOUND: {
206
+ status: 404,
207
+ message: "Not Found"
208
+ },
209
+ METHOD_NOT_SUPPORTED: {
210
+ status: 405,
211
+ message: "Method Not Supported"
212
+ },
213
+ NOT_ACCEPTABLE: {
214
+ status: 406,
215
+ message: "Not Acceptable"
216
+ },
217
+ TIMEOUT: {
218
+ status: 408,
219
+ message: "Request Timeout"
220
+ },
221
+ CONFLICT: {
222
+ status: 409,
223
+ message: "Conflict"
224
+ },
225
+ PRECONDITION_FAILED: {
226
+ status: 412,
227
+ message: "Precondition Failed"
228
+ },
229
+ PAYLOAD_TOO_LARGE: {
230
+ status: 413,
231
+ message: "Payload Too Large"
232
+ },
233
+ UNSUPPORTED_MEDIA_TYPE: {
234
+ status: 415,
235
+ message: "Unsupported Media Type"
236
+ },
237
+ UNPROCESSABLE_CONTENT: {
238
+ status: 422,
239
+ message: "Unprocessable Content"
240
+ },
241
+ TOO_MANY_REQUESTS: {
242
+ status: 429,
243
+ message: "Too Many Requests"
244
+ },
245
+ CLIENT_CLOSED_REQUEST: {
246
+ status: 499,
247
+ message: "Client Closed Request"
248
+ },
249
+ INTERNAL_SERVER_ERROR: {
250
+ status: 500,
251
+ message: "Internal Server Error"
252
+ },
253
+ NOT_IMPLEMENTED: {
254
+ status: 501,
255
+ message: "Not Implemented"
256
+ },
257
+ BAD_GATEWAY: {
258
+ status: 502,
259
+ message: "Bad Gateway"
260
+ },
261
+ SERVICE_UNAVAILABLE: {
262
+ status: 503,
263
+ message: "Service Unavailable"
264
+ },
265
+ GATEWAY_TIMEOUT: {
266
+ status: 504,
267
+ message: "Gateway Timeout"
268
+ }
269
+ };
270
+ function fallbackORPCErrorStatus(code, status) {
271
+ return status ?? COMMON_ORPC_ERROR_DEFS[code]?.status ?? 500;
272
+ }
273
+ function fallbackORPCErrorMessage(code, message) {
274
+ return message || COMMON_ORPC_ERROR_DEFS[code]?.message || code;
275
+ }
276
+ const GLOBAL_ORPC_ERROR_CONSTRUCTORS_SYMBOL = Symbol.for(`__${ORPC_CLIENT_PACKAGE_NAME}@${ORPC_CLIENT_PACKAGE_VERSION}/error/ORPC_ERROR_CONSTRUCTORS__`);
277
+ globalThis[GLOBAL_ORPC_ERROR_CONSTRUCTORS_SYMBOL] ??= /* @__PURE__ */ new WeakSet();
278
+ const globalORPCErrorConstructors = globalThis[GLOBAL_ORPC_ERROR_CONSTRUCTORS_SYMBOL];
279
+ var ORPCError$1 = class extends Error {
280
+ defined;
281
+ code;
282
+ status;
283
+ data;
284
+ constructor(code, ...rest) {
285
+ const options = resolveMaybeOptionalOptions(rest);
286
+ if (options.status !== void 0 && !isORPCErrorStatus(options.status)) throw new Error("[ORPCError] Invalid error status code.");
287
+ const message = fallbackORPCErrorMessage(code, options.message);
288
+ super(message, options);
289
+ this.code = code;
290
+ this.status = fallbackORPCErrorStatus(code, options.status);
291
+ this.defined = options.defined ?? false;
292
+ this.data = options.data;
293
+ }
294
+ toJSON() {
295
+ return {
296
+ defined: this.defined,
297
+ code: this.code,
298
+ status: this.status,
299
+ message: this.message,
300
+ data: this.data
301
+ };
302
+ }
303
+ /**
304
+ * Workaround for Next.js where different contexts use separate
305
+ * dependency graphs, causing multiple ORPCError constructors existing and breaking
306
+ * `instanceof` checks across contexts.
307
+ *
308
+ * This is particularly problematic with "Optimized SSR", where orpc-client
309
+ * executes in one context but is invoked from another. When an error is thrown
310
+ * in the execution context, `instanceof ORPCError` checks fail in the
311
+ * invocation context due to separate class constructors.
312
+ *
313
+ * @todo Remove this and related code if Next.js resolves the multiple dependency graph issue.
314
+ */
315
+ static [Symbol.hasInstance](instance) {
316
+ if (globalORPCErrorConstructors.has(this)) {
317
+ const constructor = getConstructor(instance);
318
+ if (constructor && globalORPCErrorConstructors.has(constructor)) return true;
319
+ }
320
+ return super[Symbol.hasInstance](instance);
321
+ }
322
+ };
323
+ globalORPCErrorConstructors.add(ORPCError$1);
324
+ function toORPCError(error) {
325
+ return error instanceof ORPCError$1 ? error : new ORPCError$1("INTERNAL_SERVER_ERROR", {
326
+ message: "Internal server error",
327
+ cause: error
328
+ });
329
+ }
330
+ function isORPCErrorStatus(status) {
331
+ return status < 200 || status >= 400;
332
+ }
333
+ function isORPCErrorJson(json) {
334
+ if (!isObject(json)) return false;
335
+ const validKeys = [
336
+ "defined",
337
+ "code",
338
+ "status",
339
+ "message",
340
+ "data"
341
+ ];
342
+ if (Object.keys(json).some((k) => !validKeys.includes(k))) return false;
343
+ return "defined" in json && typeof json.defined === "boolean" && "code" in json && typeof json.code === "string" && "status" in json && typeof json.status === "number" && isORPCErrorStatus(json.status) && "message" in json && typeof json.message === "string";
344
+ }
345
+ function createORPCErrorFromJson(json, options = {}) {
346
+ return new ORPCError$1(json.code, {
347
+ ...options,
348
+ ...json
349
+ });
350
+ }
351
+ function mapEventIterator(iterator, maps) {
352
+ const mapError = async (error) => {
353
+ let mappedError = await maps.error(error);
354
+ if (mappedError !== error) {
355
+ const meta = getEventMeta(error);
356
+ if (meta && isTypescriptObject(mappedError)) mappedError = withEventMeta(mappedError, meta);
357
+ }
358
+ return mappedError;
359
+ };
360
+ return new AsyncIteratorClass(async () => {
361
+ const { done, value: value$1 } = await (async () => {
362
+ try {
363
+ return await iterator.next();
364
+ } catch (error) {
365
+ throw await mapError(error);
366
+ }
367
+ })();
368
+ let mappedValue = await maps.value(value$1, done);
369
+ if (mappedValue !== value$1) {
370
+ const meta = getEventMeta(value$1);
371
+ if (meta && isTypescriptObject(mappedValue)) mappedValue = withEventMeta(mappedValue, meta);
372
+ }
373
+ return {
374
+ done,
375
+ value: mappedValue
376
+ };
377
+ }, async () => {
378
+ try {
379
+ await iterator.return?.();
380
+ } catch (error) {
381
+ throw await mapError(error);
382
+ }
383
+ });
384
+ }
385
+
386
+ //#endregion
387
+ //#region ../../node_modules/.bun/@orpc+openapi-client@1.10.4+460773ef8ff1e07c/node_modules/@orpc/openapi-client/dist/shared/openapi-client.t9fCAe3x.mjs
388
+ var StandardBracketNotationSerializer = class {
389
+ maxArrayIndex;
390
+ constructor(options = {}) {
391
+ this.maxArrayIndex = options.maxBracketNotationArrayIndex ?? 9999;
392
+ }
393
+ serialize(data, segments = [], result = []) {
394
+ if (Array.isArray(data)) data.forEach((item, i) => {
395
+ this.serialize(item, [...segments, i], result);
396
+ });
397
+ else if (isObject(data)) for (const key in data) this.serialize(data[key], [...segments, key], result);
398
+ else result.push([this.stringifyPath(segments), data]);
399
+ return result;
400
+ }
401
+ deserialize(serialized) {
402
+ if (serialized.length === 0) return {};
403
+ const arrayPushStyles = /* @__PURE__ */ new WeakSet();
404
+ const ref = { value: [] };
405
+ for (const [path, value$1] of serialized) {
406
+ const segments = this.parsePath(path);
407
+ let currentRef = ref;
408
+ let nextSegment = "value";
409
+ segments.forEach((segment, i) => {
410
+ if (!Array.isArray(currentRef[nextSegment]) && !isObject(currentRef[nextSegment])) currentRef[nextSegment] = [];
411
+ if (i !== segments.length - 1) {
412
+ if (Array.isArray(currentRef[nextSegment]) && !isValidArrayIndex(segment, this.maxArrayIndex)) if (arrayPushStyles.has(currentRef[nextSegment])) {
413
+ arrayPushStyles.delete(currentRef[nextSegment]);
414
+ currentRef[nextSegment] = pushStyleArrayToObject(currentRef[nextSegment]);
415
+ } else currentRef[nextSegment] = arrayToObject(currentRef[nextSegment]);
416
+ } else if (Array.isArray(currentRef[nextSegment])) {
417
+ if (segment === "") {
418
+ if (currentRef[nextSegment].length && !arrayPushStyles.has(currentRef[nextSegment])) currentRef[nextSegment] = arrayToObject(currentRef[nextSegment]);
419
+ } else if (arrayPushStyles.has(currentRef[nextSegment])) {
420
+ arrayPushStyles.delete(currentRef[nextSegment]);
421
+ currentRef[nextSegment] = pushStyleArrayToObject(currentRef[nextSegment]);
422
+ } else if (!isValidArrayIndex(segment, this.maxArrayIndex)) currentRef[nextSegment] = arrayToObject(currentRef[nextSegment]);
423
+ }
424
+ currentRef = currentRef[nextSegment];
425
+ nextSegment = segment;
426
+ });
427
+ if (Array.isArray(currentRef) && nextSegment === "") {
428
+ arrayPushStyles.add(currentRef);
429
+ currentRef.push(value$1);
430
+ } else if (nextSegment in currentRef) if (Array.isArray(currentRef[nextSegment])) currentRef[nextSegment].push(value$1);
431
+ else currentRef[nextSegment] = [currentRef[nextSegment], value$1];
432
+ else currentRef[nextSegment] = value$1;
433
+ }
434
+ return ref.value;
435
+ }
436
+ stringifyPath(segments) {
437
+ return segments.map((segment) => {
438
+ return segment.toString().replace(/[\\[\]]/g, (match) => {
439
+ switch (match) {
440
+ case "\\": return "\\\\";
441
+ case "[": return "\\[";
442
+ case "]": return "\\]";
443
+ default: return match;
444
+ }
445
+ });
446
+ }).reduce((result, segment, i) => {
447
+ if (i === 0) return segment;
448
+ return `${result}[${segment}]`;
449
+ }, "");
450
+ }
451
+ parsePath(path) {
452
+ const segments = [];
453
+ let inBrackets = false;
454
+ let currentSegment = "";
455
+ let backslashCount = 0;
456
+ for (let i = 0; i < path.length; i++) {
457
+ const char = path[i];
458
+ const nextChar = path[i + 1];
459
+ if (inBrackets && char === "]" && (nextChar === void 0 || nextChar === "[") && backslashCount % 2 === 0) {
460
+ if (nextChar === void 0) inBrackets = false;
461
+ segments.push(currentSegment);
462
+ currentSegment = "";
463
+ i++;
464
+ } else if (segments.length === 0 && char === "[" && backslashCount % 2 === 0) {
465
+ inBrackets = true;
466
+ segments.push(currentSegment);
467
+ currentSegment = "";
468
+ } else if (char === "\\") backslashCount++;
469
+ else {
470
+ currentSegment += "\\".repeat(backslashCount / 2) + char;
471
+ backslashCount = 0;
472
+ }
473
+ }
474
+ return inBrackets || segments.length === 0 ? [path] : segments;
475
+ }
476
+ };
477
+ function isValidArrayIndex(value$1, maxIndex) {
478
+ return /^0$|^[1-9]\d*$/.test(value$1) && Number(value$1) <= maxIndex;
479
+ }
480
+ function arrayToObject(array) {
481
+ const obj = new NullProtoObj();
482
+ array.forEach((item, i) => {
483
+ obj[i] = item;
484
+ });
485
+ return obj;
486
+ }
487
+ function pushStyleArrayToObject(array) {
488
+ const obj = new NullProtoObj();
489
+ obj[""] = array.length === 1 ? array[0] : array;
490
+ return obj;
491
+ }
492
+
493
+ //#endregion
494
+ //#region ../../node_modules/.bun/@orpc+client@1.10.4+460773ef8ff1e07c/node_modules/@orpc/client/dist/shared/client.Di65MWxv.mjs
495
+ function toHttpPath(path) {
496
+ return `/${path.map(encodeURIComponent).join("/")}`;
497
+ }
498
+
499
+ //#endregion
500
+ //#region ../../node_modules/.bun/@orpc+openapi-client@1.10.4+460773ef8ff1e07c/node_modules/@orpc/openapi-client/dist/shared/openapi-client.B2Q9qU5m.mjs
501
+ var StandardOpenAPIJsonSerializer = class {
502
+ customSerializers;
503
+ constructor(options = {}) {
504
+ this.customSerializers = options.customJsonSerializers ?? [];
505
+ }
506
+ serialize(data, hasBlobRef = { value: false }) {
507
+ for (const custom of this.customSerializers) if (custom.condition(data)) return this.serialize(custom.serialize(data), hasBlobRef);
508
+ if (data instanceof Blob) {
509
+ hasBlobRef.value = true;
510
+ return [data, hasBlobRef.value];
511
+ }
512
+ if (data instanceof Set) return this.serialize(Array.from(data), hasBlobRef);
513
+ if (data instanceof Map) return this.serialize(Array.from(data.entries()), hasBlobRef);
514
+ if (Array.isArray(data)) return [data.map((v) => v === void 0 ? null : this.serialize(v, hasBlobRef)[0]), hasBlobRef.value];
515
+ if (isObject(data)) {
516
+ const json = {};
517
+ for (const k in data) {
518
+ if (k === "toJSON" && typeof data[k] === "function") continue;
519
+ json[k] = this.serialize(data[k], hasBlobRef)[0];
520
+ }
521
+ return [json, hasBlobRef.value];
522
+ }
523
+ if (typeof data === "bigint" || data instanceof RegExp || data instanceof URL) return [data.toString(), hasBlobRef.value];
524
+ if (data instanceof Date) return [Number.isNaN(data.getTime()) ? null : data.toISOString(), hasBlobRef.value];
525
+ if (Number.isNaN(data)) return [null, hasBlobRef.value];
526
+ return [data, hasBlobRef.value];
527
+ }
528
+ };
529
+ function standardizeHTTPPath(path) {
530
+ return `/${path.replace(/\/{2,}/g, "/").replace(/^\/|\/$/g, "")}`;
531
+ }
532
+ function getDynamicParams(path) {
533
+ return path ? standardizeHTTPPath(path).match(/\/\{[^}]+\}/g)?.map((v) => ({
534
+ raw: v,
535
+ name: v.match(/\{\+?([^}]+)\}/)[1]
536
+ })) : void 0;
537
+ }
538
+ var StandardOpenAPISerializer = class {
539
+ constructor(jsonSerializer, bracketNotation) {
540
+ this.jsonSerializer = jsonSerializer;
541
+ this.bracketNotation = bracketNotation;
542
+ }
543
+ serialize(data, options = {}) {
544
+ if (isAsyncIteratorObject(data) && !options.outputFormat) return mapEventIterator(data, {
545
+ value: async (value$1) => this.#serialize(value$1, { outputFormat: "plain" }),
546
+ error: async (e) => {
547
+ return new ErrorEvent({
548
+ data: this.#serialize(toORPCError(e).toJSON(), { outputFormat: "plain" }),
549
+ cause: e
550
+ });
551
+ }
552
+ });
553
+ return this.#serialize(data, options);
554
+ }
555
+ #serialize(data, options) {
556
+ const [json, hasBlob] = this.jsonSerializer.serialize(data);
557
+ if (options.outputFormat === "plain") return json;
558
+ if (options.outputFormat === "URLSearchParams") {
559
+ const params = new URLSearchParams();
560
+ for (const [path, value$1] of this.bracketNotation.serialize(json)) if (typeof value$1 === "string" || typeof value$1 === "number" || typeof value$1 === "boolean") params.append(path, value$1.toString());
561
+ return params;
562
+ }
563
+ if (json instanceof Blob || json === void 0 || !hasBlob) return json;
564
+ const form = new FormData();
565
+ for (const [path, value$1] of this.bracketNotation.serialize(json)) if (typeof value$1 === "string" || typeof value$1 === "number" || typeof value$1 === "boolean") form.append(path, value$1.toString());
566
+ else if (value$1 instanceof Blob) form.append(path, value$1);
567
+ return form;
568
+ }
569
+ deserialize(data) {
570
+ if (data instanceof URLSearchParams || data instanceof FormData) return this.bracketNotation.deserialize(Array.from(data.entries()));
571
+ if (isAsyncIteratorObject(data)) return mapEventIterator(data, {
572
+ value: async (value$1) => value$1,
573
+ error: async (e) => {
574
+ if (e instanceof ErrorEvent && isORPCErrorJson(e.data)) return createORPCErrorFromJson(e.data, { cause: e });
575
+ return e;
576
+ }
577
+ });
578
+ return data;
579
+ }
580
+ };
581
+
582
+ //#endregion
583
+ export { value as _, toHttpPath as a, fallbackORPCErrorStatus as c, findDeepMatches as d, isObject as f, tryDecodeURIComponent as g, toArray as h, standardizeHTTPPath as i, isORPCErrorStatus as l, stringifyJSON as m, StandardOpenAPISerializer as n, StandardBracketNotationSerializer as o, once as p, getDynamicParams as r, fallbackORPCErrorMessage as s, StandardOpenAPIJsonSerializer as t, clone as u };
584
+ //# sourceMappingURL=standard-CkH8zNkx.mjs.map