every-plugin 0.8.1 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build/rspack/dev-server-middleware.cjs +3 -40
- package/dist/build/rspack/dev-server-middleware.cjs.map +1 -1
- package/dist/build/rspack/dev-server-middleware.mjs +3 -40
- package/dist/build/rspack/dev-server-middleware.mjs.map +1 -1
- package/dist/errors.cjs +8 -0
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.d.cts +2 -2
- package/dist/errors.d.cts.map +1 -1
- package/dist/errors.d.mts +2 -2
- package/dist/errors.d.mts.map +1 -1
- package/dist/errors.mjs +2 -1
- package/dist/errors.mjs.map +1 -1
- package/dist/index.cjs +12 -4
- package/dist/index.d.cts +2 -1
- package/dist/index.d.mts +2 -1
- package/dist/index.mjs +2 -1
- package/dist/orpc.d.mts +1 -1
- package/dist/orpc.mjs +2 -2
- package/dist/package.cjs +7 -7
- package/dist/package.cjs.map +1 -1
- package/dist/package.mjs +7 -7
- package/dist/package.mjs.map +1 -1
- package/dist/plugin.cjs +6 -2
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.d.cts.map +1 -1
- package/dist/plugin.d.mts +5 -5
- package/dist/plugin.d.mts.map +1 -1
- package/dist/plugin.mjs +6 -2
- package/dist/plugin.mjs.map +1 -1
- package/dist/runtime/errors.cjs +100 -5
- package/dist/runtime/errors.cjs.map +1 -1
- package/dist/runtime/errors.d.cts +15 -3
- package/dist/runtime/errors.d.cts.map +1 -1
- package/dist/runtime/errors.d.mts +13 -1
- package/dist/runtime/errors.d.mts.map +1 -1
- package/dist/runtime/errors.mjs +98 -6
- package/dist/runtime/errors.mjs.map +1 -1
- package/dist/runtime/index.cjs +1 -1
- package/dist/runtime/index.mjs +1 -1
- package/dist/runtime/services/module-federation.service.cjs +5 -0
- package/dist/runtime/services/module-federation.service.cjs.map +1 -1
- package/dist/runtime/services/module-federation.service.d.cts.map +1 -1
- package/dist/runtime/services/module-federation.service.d.mts.map +1 -1
- package/dist/runtime/services/module-federation.service.mjs +5 -0
- package/dist/runtime/services/module-federation.service.mjs.map +1 -1
- package/dist/runtime/services/plugin-lifecycle.service.d.cts +1 -1
- package/dist/runtime/services/plugin-lifecycle.service.d.mts +1 -1
- package/dist/runtime/services/plugin-loader.service.d.cts +1 -1
- package/dist/runtime/services/plugin-loader.service.d.mts +2 -2
- package/dist/runtime/services/plugin.service.d.cts +1 -1
- package/dist/runtime/services/plugin.service.d.mts +2 -2
- package/dist/runtime/services/secrets.service.d.cts +1 -1
- package/dist/runtime/services/secrets.service.d.mts +1 -1
- package/dist/types.d.cts +7 -7
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +9 -9
- package/dist/types.d.mts.map +1 -1
- package/package.json +20 -16
package/dist/runtime/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PluginRuntimeError } from "./errors.mjs";
|
|
2
2
|
import { PluginService } from "./services/plugin.service.mjs";
|
|
3
|
-
import { createRouterClient } from "@orpc/server";
|
|
4
3
|
import { Cause, Effect, Exit, Hash, ManagedRuntime, Option } from "effect";
|
|
4
|
+
import { createRouterClient } from "@orpc/server";
|
|
5
5
|
|
|
6
6
|
//#region src/runtime/index.ts
|
|
7
7
|
var PluginRuntime = class {
|
|
@@ -21,6 +21,7 @@ const createModuleFederationInstance = effect.Effect.cached(effect.Effect.sync((
|
|
|
21
21
|
shared: {
|
|
22
22
|
"every-plugin": {
|
|
23
23
|
version: require_package.version,
|
|
24
|
+
get: () => Promise.resolve().then(() => require("../../index.cjs")).then((mod) => () => mod),
|
|
24
25
|
shareConfig: {
|
|
25
26
|
singleton: true,
|
|
26
27
|
requiredVersion: getMajorVersionRange(require_package.version),
|
|
@@ -30,6 +31,7 @@ const createModuleFederationInstance = effect.Effect.cached(effect.Effect.sync((
|
|
|
30
31
|
},
|
|
31
32
|
effect: {
|
|
32
33
|
version: require_package.dependencies.effect,
|
|
34
|
+
get: () => import("effect").then((mod) => () => mod),
|
|
33
35
|
shareConfig: {
|
|
34
36
|
singleton: true,
|
|
35
37
|
requiredVersion: getMajorVersionRange(require_package.dependencies.effect),
|
|
@@ -39,6 +41,7 @@ const createModuleFederationInstance = effect.Effect.cached(effect.Effect.sync((
|
|
|
39
41
|
},
|
|
40
42
|
zod: {
|
|
41
43
|
version: require_package.dependencies.zod,
|
|
44
|
+
get: () => import("zod").then((mod) => () => mod),
|
|
42
45
|
shareConfig: {
|
|
43
46
|
singleton: true,
|
|
44
47
|
requiredVersion: getMajorVersionRange(require_package.dependencies.zod),
|
|
@@ -48,6 +51,7 @@ const createModuleFederationInstance = effect.Effect.cached(effect.Effect.sync((
|
|
|
48
51
|
},
|
|
49
52
|
"@orpc/contract": {
|
|
50
53
|
version: require_package.dependencies["@orpc/contract"],
|
|
54
|
+
get: () => import("@orpc/contract").then((mod) => () => mod),
|
|
51
55
|
shareConfig: {
|
|
52
56
|
singleton: true,
|
|
53
57
|
requiredVersion: getMajorVersionRange(require_package.dependencies["@orpc/contract"]),
|
|
@@ -57,6 +61,7 @@ const createModuleFederationInstance = effect.Effect.cached(effect.Effect.sync((
|
|
|
57
61
|
},
|
|
58
62
|
"@orpc/server": {
|
|
59
63
|
version: require_package.dependencies["@orpc/server"],
|
|
64
|
+
get: () => import("@orpc/server").then((mod) => () => mod),
|
|
60
65
|
shareConfig: {
|
|
61
66
|
singleton: true,
|
|
62
67
|
requiredVersion: getMajorVersionRange(require_package.dependencies["@orpc/server"]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-federation.service.cjs","names":["version","Effect","getNormalizedRemoteName","ModuleFederationError","Constructor: any"],"sources":["../../../src/runtime/services/module-federation.service.ts"],"sourcesContent":["import {\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\nfunction getMajorVersionRange(version: string): string {\n\tconst match = version.match(/^[\\^~]?(\\d+)/);\n\tconst major = match ? match[1] : '0';\n\treturn `^${major}.0.0`;\n}\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: getMajorVersionRange(pkg.version),\n\t\t\t\t\t\t\t\teager: false,\n\t\t\t\t\t\t\t\tstrictVersion: false,\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: getMajorVersionRange(pkg.dependencies.effect),\n\t\t\t\t\t\t\t\teager: false,\n\t\t\t\t\t\t\t\tstrictVersion: false,\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: getMajorVersionRange(pkg.dependencies.zod),\n\t\t\t\t\t\t\t\teager: false,\n\t\t\t\t\t\t\t\tstrictVersion: false,\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: getMajorVersionRange(pkg.dependencies[\"@orpc/contract\"]),\n\t\t\t\t\t\t\t\teager: false,\n\t\t\t\t\t\t\t\tstrictVersion: false,\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: getMajorVersionRange(pkg.dependencies[\"@orpc/server\"]),\n\t\t\t\t\t\t\t\teager: false,\n\t\t\t\t\t\t\t\tstrictVersion: 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\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 remoteName = 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: url,\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}`);\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\tlet Constructor: any;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (typeof container === \"function\") {\n\t\t\t\t\t\t\t\t// Direct function export\n\t\t\t\t\t\t\t\tConstructor = container;\n\t\t\t\t\t\t\t} else if (container.default) {\n\t\t\t\t\t\t\t\t// Default export\n\t\t\t\t\t\t\t\tConstructor = container.default;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Named export fallback - prioritize exports with 'binding' property (plugin classes)\n\t\t\t\t\t\t\t\tConstructor = Object.values(container).find(\n\t\t\t\t\t\t\t\t\t(exp) => typeof exp === \"function\" && (exp as any).binding !== undefined\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Fallback to any function export if no binding found\n\t\t\t\t\t\t\t\tif (!Constructor) {\n\t\t\t\t\t\t\t\t\tConstructor = Object.values(container).find(\n\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);\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\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"],"mappings":";;;;;;;;;AAgBA,SAAS,qBAAqB,WAAyB;CACtD,MAAM,QAAQA,UAAQ,MAAM,eAAe;AAE3C,QAAO,IADO,QAAQ,MAAM,KAAK,IAChB;;AAGlB,MAAM,iCAAiCC,cAAO,OAC7CA,cAAO,WAAW;AACjB,KAAI;EACH,IAAI,kEAAwB;AAE5B,MAAI,CAAC,UAAU;AACd,uEAA0B;IACzB,MAAM;IACN,SAAS,EAAE;IACX,QAAQ;KACP,gBAAgB;MACf;MACA,aAAa;OACZ,WAAW;OACX,iBAAiB,6CAAiC;OAClD,OAAO;OACP,eAAe;OACf;MACD;KACD,QAAQ;MACP,sCAA0B;MAC1B,aAAa;OACZ,WAAW;OACX,iBAAiB,kDAAsC,OAAO;OAC9D,OAAO;OACP,eAAe;OACf;MACD;KACD,KAAK;MACJ,sCAA0B;MAC1B,aAAa;OACZ,WAAW;OACX,iBAAiB,kDAAsC,IAAI;OAC3D,OAAO;OACP,eAAe;OACf;MACD;KACD,kBAAkB;MACjB,sCAA0B;MAC1B,aAAa;OACZ,WAAW;OACX,iBAAiB,kDAAsC,kBAAkB;OACzE,OAAO;OACP,eAAe;OACf;MACD;KACD,gBAAgB;MACf,sCAA0B;MAC1B,aAAa;OACZ,WAAW;OACX,iBAAiB,kDAAsC,gBAAgB;OACvE,OAAO;OACP,eAAe;OACf;MACD;KACD;IACD,CAAC;AAEF,qEAA4B,SAAS;;AAGtC,SAAO;UACC,OAAO;AACf,QAAM,IAAI,MAAM,2CAA2C,QAAQ;;EAEnE,CACF;AAED,IAAa,0BAAb,cAA6CA,cAAO,SAAkC,CAAC,2BAA2B,EACjH,QAAQA,cAAO,IAAI,aAAa;CAC/B,MAAM,KAAK,OAAOA,cAAO,QAAQ,+BAA+B;AAEhE,QAAO;EACN,iBAAiB,UAAkB,QAClCA,cAAO,IAAI,aAAa;AACvB,WAAQ,IAAI,oBAAoB,WAAW;GAE3C,MAAM,aAAaC,2DAAwB,SAAS;AAEpD,UAAOD,cAAO,IAAI;IACjB,WAAW,GAAG,gBAAgB,CAAC;KAC9B,MAAM;KACN,OAAO;KACP,CAAC,CAAC;IACH,QAAQ,UACP,IAAIE,qCAAsB;KACzB;KACA,WAAW;KACX,OACC,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,MAAM,CAAC;KAC1D,CAAC;IACH,CAAC;AAEF,WAAQ,IAAI,qBAAqB,WAAW;IAC3C;EAEH,wBAAwB,UAAkB,QACzCF,cAAO,IAAI,aAAa;GACvB,MAAM,aAAaC,2DAAwB,SAAS;AACpD,WAAQ,IAAI,uBAAuB,aAAa;GAChD,MAAM,aAAa,GAAG,WAAW;AAEjC,UAAO,OAAOD,cAAO,WAAW;IAC/B,KAAK,YAAY;KAEhB,MAAM,YAAY,MAAM,GAAG,WAAyB,WAAW;AAC/D,SAAI,CAAC,UACJ,OAAM,IAAI,MAAM,6BAA6B,aAAa;KAI3D,IAAIG;AAEJ,SAAI,OAAO,cAAc,WAExB,eAAc;cACJ,UAAU,QAEpB,eAAc,UAAU;UAClB;AAEN,oBAAc,OAAO,OAAO,UAAU,CAAC,MACrC,QAAQ,OAAO,QAAQ,cAAe,IAAY,YAAY,OAC/D;AAGD,UAAI,CAAC,YACJ,eAAc,OAAO,OAAO,UAAU,CAAC,MACrC,QAAQ,OAAO,QAAQ,cAAc,IAAI,WAAW,gBAAgB,IACrE;;AAIH,SAAI,CAAC,eAAe,OAAO,gBAAgB,YAAY;MACtD,MAAM,gBAAgB,OAAO,cAAc,WACxC,sBAAsB,OAAO,KAAK,UAAU,CAAC,KAAK,KAAK,KACvD,mBAAmB,OAAO;AAE7B,YAAM,IAAI,MACT,0CAA0C,SAAS,sHAIhD,gBACH;;AAIF,SAAI,CAAE,YAAoB,SAAS;MAClC,MAAM,gBAAgB,OAAO,cAAc,WACxC,kBAAkB,OAAO,KAAK,UAAU,CAAC,KAAK,KAAK,KACnD,mBAAmB,OAAO;AAE7B,YAAM,IAAI,MACT,mCAAmC,SAAS,iIAGzC,gBACH;;AAGF,aAAQ,IAAI,iCAAiC,WAAW;AACxD,YAAO;;IAER,QAAQ,UACP,IAAID,qCAAsB;KACzB;KACA,WAAW;KACX,OACC,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,MAAM,CAAC;KAC1D,CAAC;IACH,CAAC;IACD;EACH;EACA,EACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"module-federation.service.cjs","names":["version","Effect","getNormalizedRemoteName","ModuleFederationError","Constructor: any"],"sources":["../../../src/runtime/services/module-federation.service.ts"],"sourcesContent":["import {\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\nfunction getMajorVersionRange(version: string): string {\n\tconst match = version.match(/^[\\^~]?(\\d+)/);\n\tconst major = match ? match[1] : '0';\n\treturn `^${major}.0.0`;\n}\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\tget: () => import(\"every-plugin\").then(mod => () => mod),\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: getMajorVersionRange(pkg.version),\n\t\t\t\t\t\t\t\teager: false,\n\t\t\t\t\t\t\t\tstrictVersion: false,\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\tget: () => import(\"effect\").then(mod => () => mod),\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: getMajorVersionRange(pkg.dependencies.effect),\n\t\t\t\t\t\t\t\teager: false,\n\t\t\t\t\t\t\t\tstrictVersion: false,\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\tget: () => import(\"zod\").then(mod => () => mod),\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: getMajorVersionRange(pkg.dependencies.zod),\n\t\t\t\t\t\t\t\teager: false,\n\t\t\t\t\t\t\t\tstrictVersion: false,\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\tget: () => import(\"@orpc/contract\").then(mod => () => mod),\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: getMajorVersionRange(pkg.dependencies[\"@orpc/contract\"]),\n\t\t\t\t\t\t\t\teager: false,\n\t\t\t\t\t\t\t\tstrictVersion: false,\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\tget: () => import(\"@orpc/server\").then(mod => () => mod),\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: getMajorVersionRange(pkg.dependencies[\"@orpc/server\"]),\n\t\t\t\t\t\t\t\teager: false,\n\t\t\t\t\t\t\t\tstrictVersion: 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\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 remoteName = 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: url,\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}`);\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\tlet Constructor: any;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (typeof container === \"function\") {\n\t\t\t\t\t\t\t\t// Direct function export\n\t\t\t\t\t\t\t\tConstructor = container;\n\t\t\t\t\t\t\t} else if (container.default) {\n\t\t\t\t\t\t\t\t// Default export\n\t\t\t\t\t\t\t\tConstructor = container.default;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Named export fallback - prioritize exports with 'binding' property (plugin classes)\n\t\t\t\t\t\t\t\tConstructor = Object.values(container).find(\n\t\t\t\t\t\t\t\t\t(exp) => typeof exp === \"function\" && (exp as any).binding !== undefined\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Fallback to any function export if no binding found\n\t\t\t\t\t\t\t\tif (!Constructor) {\n\t\t\t\t\t\t\t\t\tConstructor = Object.values(container).find(\n\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);\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\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"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-federation.service.d.cts","names":[],"sources":["../../../src/runtime/services/module-federation.service.ts"],"sourcesContent":[],"mappings":";;;;cAOkD;;IAAA,cAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,GAAA,EAAA,MAAA,EAAA,
|
|
1
|
+
{"version":3,"file":"module-federation.service.d.cts","names":[],"sources":["../../../src/runtime/services/module-federation.service.ts"],"sourcesContent":[],"mappings":";;;;cAOkD;;IAAA,cAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,GAAA,EAAA,MAAA,EAAA,GA6FD,MAAA,CAAA,MA7FC,CAAA,IAAA,EA6FD,qBA7FC,EAAA,KAAA,CAAA;8DAoHM,MAAA,CAAA,YAAA;EAvBP,CAAA,EAAA,KAAA,EAAA,KAAA,CAAA;CAAA,CAAA;AAuBO,cA5B3C,uBAAA,SAAgC,4BAAA,CA4BW"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-federation.service.d.mts","names":[],"sources":["../../../src/runtime/services/module-federation.service.ts"],"sourcesContent":[],"mappings":";;;;cAOkD;;IAAA,cAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,GAAA,EAAA,MAAA,EAAA,
|
|
1
|
+
{"version":3,"file":"module-federation.service.d.mts","names":[],"sources":["../../../src/runtime/services/module-federation.service.ts"],"sourcesContent":[],"mappings":";;;;cAOkD;;IAAA,cAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,GAAA,EAAA,MAAA,EAAA,GA6FD,MAAA,CAAA,MA7FC,CAAA,IAAA,EA6FD,qBA7FC,EAAA,KAAA,CAAA;8DAoHM,MAAA,CAAA,YAAA;EAvBP,CAAA,EAAA,KAAA,EAAA,KAAA,CAAA;CAAA,CAAA;AAuBO,cA5B3C,uBAAA,SAAgC,4BAAA,CA4BW"}
|
|
@@ -20,6 +20,7 @@ const createModuleFederationInstance = Effect.cached(Effect.sync(() => {
|
|
|
20
20
|
shared: {
|
|
21
21
|
"every-plugin": {
|
|
22
22
|
version,
|
|
23
|
+
get: () => import("../../index.mjs").then((mod) => () => mod),
|
|
23
24
|
shareConfig: {
|
|
24
25
|
singleton: true,
|
|
25
26
|
requiredVersion: getMajorVersionRange(version),
|
|
@@ -29,6 +30,7 @@ const createModuleFederationInstance = Effect.cached(Effect.sync(() => {
|
|
|
29
30
|
},
|
|
30
31
|
effect: {
|
|
31
32
|
version: dependencies.effect,
|
|
33
|
+
get: () => import("effect").then((mod) => () => mod),
|
|
32
34
|
shareConfig: {
|
|
33
35
|
singleton: true,
|
|
34
36
|
requiredVersion: getMajorVersionRange(dependencies.effect),
|
|
@@ -38,6 +40,7 @@ const createModuleFederationInstance = Effect.cached(Effect.sync(() => {
|
|
|
38
40
|
},
|
|
39
41
|
zod: {
|
|
40
42
|
version: dependencies.zod,
|
|
43
|
+
get: () => import("zod").then((mod) => () => mod),
|
|
41
44
|
shareConfig: {
|
|
42
45
|
singleton: true,
|
|
43
46
|
requiredVersion: getMajorVersionRange(dependencies.zod),
|
|
@@ -47,6 +50,7 @@ const createModuleFederationInstance = Effect.cached(Effect.sync(() => {
|
|
|
47
50
|
},
|
|
48
51
|
"@orpc/contract": {
|
|
49
52
|
version: dependencies["@orpc/contract"],
|
|
53
|
+
get: () => import("@orpc/contract").then((mod) => () => mod),
|
|
50
54
|
shareConfig: {
|
|
51
55
|
singleton: true,
|
|
52
56
|
requiredVersion: getMajorVersionRange(dependencies["@orpc/contract"]),
|
|
@@ -56,6 +60,7 @@ const createModuleFederationInstance = Effect.cached(Effect.sync(() => {
|
|
|
56
60
|
},
|
|
57
61
|
"@orpc/server": {
|
|
58
62
|
version: dependencies["@orpc/server"],
|
|
63
|
+
get: () => import("@orpc/server").then((mod) => () => mod),
|
|
59
64
|
shareConfig: {
|
|
60
65
|
singleton: true,
|
|
61
66
|
requiredVersion: getMajorVersionRange(dependencies["@orpc/server"]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-federation.service.mjs","names":["version","pkg.version","Constructor: any"],"sources":["../../../src/runtime/services/module-federation.service.ts"],"sourcesContent":["import {\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\nfunction getMajorVersionRange(version: string): string {\n\tconst match = version.match(/^[\\^~]?(\\d+)/);\n\tconst major = match ? match[1] : '0';\n\treturn `^${major}.0.0`;\n}\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: getMajorVersionRange(pkg.version),\n\t\t\t\t\t\t\t\teager: false,\n\t\t\t\t\t\t\t\tstrictVersion: false,\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: getMajorVersionRange(pkg.dependencies.effect),\n\t\t\t\t\t\t\t\teager: false,\n\t\t\t\t\t\t\t\tstrictVersion: false,\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: getMajorVersionRange(pkg.dependencies.zod),\n\t\t\t\t\t\t\t\teager: false,\n\t\t\t\t\t\t\t\tstrictVersion: false,\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: getMajorVersionRange(pkg.dependencies[\"@orpc/contract\"]),\n\t\t\t\t\t\t\t\teager: false,\n\t\t\t\t\t\t\t\tstrictVersion: false,\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: getMajorVersionRange(pkg.dependencies[\"@orpc/server\"]),\n\t\t\t\t\t\t\t\teager: false,\n\t\t\t\t\t\t\t\tstrictVersion: 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\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 remoteName = 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: url,\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}`);\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\tlet Constructor: any;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (typeof container === \"function\") {\n\t\t\t\t\t\t\t\t// Direct function export\n\t\t\t\t\t\t\t\tConstructor = container;\n\t\t\t\t\t\t\t} else if (container.default) {\n\t\t\t\t\t\t\t\t// Default export\n\t\t\t\t\t\t\t\tConstructor = container.default;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Named export fallback - prioritize exports with 'binding' property (plugin classes)\n\t\t\t\t\t\t\t\tConstructor = Object.values(container).find(\n\t\t\t\t\t\t\t\t\t(exp) => typeof exp === \"function\" && (exp as any).binding !== undefined\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Fallback to any function export if no binding found\n\t\t\t\t\t\t\t\tif (!Constructor) {\n\t\t\t\t\t\t\t\t\tConstructor = Object.values(container).find(\n\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);\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\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"module-federation.service.mjs","names":["version","pkg.version","Constructor: any"],"sources":["../../../src/runtime/services/module-federation.service.ts"],"sourcesContent":["import {\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\nfunction getMajorVersionRange(version: string): string {\n\tconst match = version.match(/^[\\^~]?(\\d+)/);\n\tconst major = match ? match[1] : '0';\n\treturn `^${major}.0.0`;\n}\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\tget: () => import(\"every-plugin\").then(mod => () => mod),\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: getMajorVersionRange(pkg.version),\n\t\t\t\t\t\t\t\teager: false,\n\t\t\t\t\t\t\t\tstrictVersion: false,\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\tget: () => import(\"effect\").then(mod => () => mod),\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: getMajorVersionRange(pkg.dependencies.effect),\n\t\t\t\t\t\t\t\teager: false,\n\t\t\t\t\t\t\t\tstrictVersion: false,\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\tget: () => import(\"zod\").then(mod => () => mod),\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: getMajorVersionRange(pkg.dependencies.zod),\n\t\t\t\t\t\t\t\teager: false,\n\t\t\t\t\t\t\t\tstrictVersion: false,\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\tget: () => import(\"@orpc/contract\").then(mod => () => mod),\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: getMajorVersionRange(pkg.dependencies[\"@orpc/contract\"]),\n\t\t\t\t\t\t\t\teager: false,\n\t\t\t\t\t\t\t\tstrictVersion: false,\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\tget: () => import(\"@orpc/server\").then(mod => () => mod),\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: getMajorVersionRange(pkg.dependencies[\"@orpc/server\"]),\n\t\t\t\t\t\t\t\teager: false,\n\t\t\t\t\t\t\t\tstrictVersion: 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\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 remoteName = 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: url,\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}`);\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\tlet Constructor: any;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (typeof container === \"function\") {\n\t\t\t\t\t\t\t\t// Direct function export\n\t\t\t\t\t\t\t\tConstructor = container;\n\t\t\t\t\t\t\t} else if (container.default) {\n\t\t\t\t\t\t\t\t// Default export\n\t\t\t\t\t\t\t\tConstructor = container.default;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Named export fallback - prioritize exports with 'binding' property (plugin classes)\n\t\t\t\t\t\t\t\tConstructor = Object.values(container).find(\n\t\t\t\t\t\t\t\t\t(exp) => typeof exp === \"function\" && (exp as any).binding !== undefined\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Fallback to any function export if no binding found\n\t\t\t\t\t\t\t\tif (!Constructor) {\n\t\t\t\t\t\t\t\t\tConstructor = Object.values(container).find(\n\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);\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\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"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AnyPlugin, InitializedPlugin } from "../../types.cjs";
|
|
2
1
|
import { PluginRuntimeError } from "../errors.cjs";
|
|
2
|
+
import { AnyPlugin, InitializedPlugin } from "../../types.cjs";
|
|
3
3
|
import { Effect } from "effect";
|
|
4
4
|
|
|
5
5
|
//#region src/runtime/services/plugin-lifecycle.service.d.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AnyPlugin, InitializedPlugin } from "../../types.mjs";
|
|
2
1
|
import { PluginRuntimeError } from "../errors.mjs";
|
|
2
|
+
import { AnyPlugin, InitializedPlugin } from "../../types.mjs";
|
|
3
3
|
import { Effect } from "effect";
|
|
4
4
|
|
|
5
5
|
//#region src/runtime/services/plugin-lifecycle.service.d.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AnyPlugin, AnyPluginConstructor, LoadedPlugin, PluginInstance, PluginMetadata, PluginRegistry } from "../../types.cjs";
|
|
2
1
|
import { PluginRuntimeError } from "../errors.cjs";
|
|
2
|
+
import { AnyPlugin, AnyPluginConstructor, LoadedPlugin, PluginInstance, PluginMetadata, PluginRegistry } from "../../types.cjs";
|
|
3
3
|
import { ModuleFederationService } from "./module-federation.service.cjs";
|
|
4
4
|
import { SecretsService } from "./secrets.service.cjs";
|
|
5
5
|
import { Context, Effect, Scope } from "effect";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { AnyPlugin, AnyPluginConstructor, LoadedPlugin, PluginInstance, PluginMetadata, PluginRegistry } from "../../types.mjs";
|
|
2
1
|
import { PluginRuntimeError } from "../errors.mjs";
|
|
2
|
+
import { AnyPlugin, AnyPluginConstructor, LoadedPlugin, PluginInstance, PluginMetadata, PluginRegistry } from "../../types.mjs";
|
|
3
3
|
import { ModuleFederationService } from "./module-federation.service.mjs";
|
|
4
4
|
import { SecretsService } from "./secrets.service.mjs";
|
|
5
|
-
import { Context, Effect, Scope } from "effect";
|
|
6
5
|
import { InferSchemaInput, InferSchemaOutput } from "@orpc/contract";
|
|
6
|
+
import { Context, Effect, Scope } from "effect";
|
|
7
7
|
|
|
8
8
|
//#region src/runtime/services/plugin-loader.service.d.ts
|
|
9
9
|
declare const PluginRegistryTag_base: Context.TagClass<PluginRegistryTag, "PluginRegistry", PluginRegistry>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AnyPlugin, AnyPluginConstructor, InitializedPlugin, LoadedPlugin, PluginInstance, PluginMetadata, PluginRegistry, SecretsConfig } from "../../types.cjs";
|
|
2
1
|
import { PluginRuntimeError } from "../errors.cjs";
|
|
2
|
+
import { AnyPlugin, AnyPluginConstructor, InitializedPlugin, LoadedPlugin, PluginInstance, PluginMetadata, PluginRegistry, SecretsConfig } from "../../types.cjs";
|
|
3
3
|
import { PluginLifecycleService } from "./plugin-lifecycle.service.cjs";
|
|
4
4
|
import { PluginLoaderService } from "./plugin-loader.service.cjs";
|
|
5
5
|
import "../../index.cjs";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { AnyPlugin, AnyPluginConstructor, InitializedPlugin, LoadedPlugin, PluginInstance, PluginMetadata, PluginRegistry, SecretsConfig } from "../../types.mjs";
|
|
2
1
|
import { PluginRuntimeError } from "../errors.mjs";
|
|
2
|
+
import { AnyPlugin, AnyPluginConstructor, InitializedPlugin, LoadedPlugin, PluginInstance, PluginMetadata, PluginRegistry, SecretsConfig } from "../../types.mjs";
|
|
3
3
|
import { PluginLifecycleService } from "./plugin-lifecycle.service.mjs";
|
|
4
4
|
import { PluginLoaderService } from "./plugin-loader.service.mjs";
|
|
5
5
|
import "../../index.mjs";
|
|
6
|
-
import { Effect, Layer, Scope } from "effect";
|
|
7
6
|
import * as _orpc_contract0 from "@orpc/contract";
|
|
7
|
+
import { Effect, Layer, Scope } from "effect";
|
|
8
8
|
|
|
9
9
|
//#region src/runtime/services/plugin.service.d.ts
|
|
10
10
|
declare const PluginService_base: Effect.Service.Class<PluginService, "PluginService", {
|
package/dist/types.d.cts
CHANGED
|
@@ -21,7 +21,7 @@ interface RegisteredPlugins {}
|
|
|
21
21
|
/**
|
|
22
22
|
* Base type for any plugin instance.
|
|
23
23
|
*/
|
|
24
|
-
type AnyPlugin = Plugin<AnyContractRouter, AnySchema, AnySchema, AnySchema, any>;
|
|
24
|
+
type AnyPlugin = Plugin<AnyContractRouter, AnySchema, AnySchema, AnySchema | undefined, any>;
|
|
25
25
|
/**
|
|
26
26
|
* Loaded plugin constructor with binding information
|
|
27
27
|
*/
|
|
@@ -31,7 +31,7 @@ type AnyPluginConstructor = {
|
|
|
31
31
|
contract: AnyContractRouter;
|
|
32
32
|
variables: AnySchema;
|
|
33
33
|
secrets: AnySchema;
|
|
34
|
-
context: AnySchema;
|
|
34
|
+
context: AnySchema | undefined;
|
|
35
35
|
};
|
|
36
36
|
};
|
|
37
37
|
/**
|
|
@@ -88,7 +88,7 @@ type PluginSecrets<T> = T extends {
|
|
|
88
88
|
*/
|
|
89
89
|
type PluginContext<T> = T extends {
|
|
90
90
|
binding: {
|
|
91
|
-
context: infer C extends AnySchema;
|
|
91
|
+
context: infer C extends AnySchema | undefined;
|
|
92
92
|
};
|
|
93
93
|
} ? C : never;
|
|
94
94
|
/**
|
|
@@ -111,7 +111,7 @@ type RegisteredPlugin<K$1 extends keyof R, R = RegisteredPlugins> = R[K$1] exten
|
|
|
111
111
|
contract: infer C extends AnyContractRouter;
|
|
112
112
|
variables: infer V extends AnySchema;
|
|
113
113
|
secrets: infer S extends AnySchema;
|
|
114
|
-
context: infer TRequestContext extends AnySchema;
|
|
114
|
+
context: infer TRequestContext extends AnySchema | undefined;
|
|
115
115
|
} ? Plugin<C, V, S, TRequestContext, any> : never : never;
|
|
116
116
|
/**
|
|
117
117
|
* Extract plugin constructor type from registry entry
|
|
@@ -120,7 +120,7 @@ type PluginConstructor<K$1 extends keyof R, R = RegisteredPlugins> = RegisteredP
|
|
|
120
120
|
/**
|
|
121
121
|
* Extract context input type from plugin binding (for client creation)
|
|
122
122
|
*/
|
|
123
|
-
type PluginContextInput<T> = InferSchemaInput<PluginContext<T
|
|
123
|
+
type PluginContextInput<T> = PluginContext<T> extends AnySchema ? InferSchemaInput<PluginContext<T>> : never;
|
|
124
124
|
/**
|
|
125
125
|
* Extract config input type from plugin binding
|
|
126
126
|
*/
|
|
@@ -131,7 +131,7 @@ type PluginConfigInput<T> = {
|
|
|
131
131
|
/**
|
|
132
132
|
* Extract deps context type from plugin instance (used for initialization)
|
|
133
133
|
*/
|
|
134
|
-
type ContextOf<T extends AnyPlugin> = T extends Plugin<AnyContractRouter, AnySchema, AnySchema, AnySchema, infer TDeps> ? TDeps : never;
|
|
134
|
+
type ContextOf<T extends AnyPlugin> = T extends Plugin<AnyContractRouter, AnySchema, AnySchema, AnySchema | undefined, infer TDeps> ? TDeps : never;
|
|
135
135
|
/**
|
|
136
136
|
* Plugin metadata for remote loading
|
|
137
137
|
*/
|
|
@@ -191,7 +191,7 @@ type VerifyPluginBinding<K$1 extends keyof R, R = RegisteredPlugins> = R[K$1] ex
|
|
|
191
191
|
contract: AnyContractRouter;
|
|
192
192
|
variables: AnySchema;
|
|
193
193
|
secrets: AnySchema;
|
|
194
|
-
context: AnySchema;
|
|
194
|
+
context: AnySchema | undefined;
|
|
195
195
|
} ? true : `❌ Plugin "${K$1 & string}" is not properly registered. Ensure it extends plugin binding layout { contract, variables, secrets, context }.` : `❌ Plugin "${K$1 & string}" is not properly registered. Missing binding property.`;
|
|
196
196
|
/**
|
|
197
197
|
* Result of runtime.usePlugin() call
|
package/dist/types.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.cts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAkBA;AAKA;;;;;;;AAKA;;AAGY,UAbK,iBAAA,CAaL;;;;AAUA,KAlBA,SAAA,GAAY,MAkBO,CAlBA,iBAmBlB,EAnBqC,SAmBjB,EAnB4B,SAmB5B,EAnBuC,SAmBvC,EAAA,GAAA,CAAA;AAMjC;AAKA;;AAA+C,KAzBnC,oBAAA,GAyBmC;EAClC,MAAA,EAzBL,SAyBK;EAAI,OAAA,EAAA;IAAE,QAAA,EAvBP,iBAuBO;IACjB,SAAA,EAvBW,SAuBX;IAAgB,OAAA,EAtBP,SAsBO;IAAoB,OAAA,EArB3B,SAqB2B;EAAkB,CAAA;CAAC;AAMzD;AAKA;AAKA;AAKY,KAnCA,mBAAA,GAmCmB;EAMnB,MAAA,EAxCC,oBAwCe;EAA4B,MAAA,CAAA,EAAA,MAAA;EAAf,OAAA,CAAA,EAAA,MAAA;EAAP,WAAA,CAAA,EAAA,MAAA;CAAM,GAAA;EAK5B,MAAA,EAAA,MAAA;EAAoD,OAAA,CAAA,EAAA,MAAA;EAAjB,WAAA,CAAA,EAAA,MAAA;CAAb;;AAOlC;;AAAoD,KA9CxC,iBA8CwC,CAAA,CAAA,CAAA,GA9CjB,CA8CiB,SAAA;EAClD,MAAA,EAAA,KAAA,EAAA;CAAE,GAAA,CAAA,GAAA,KAAA;;;;AAKuC,KA/C/B,wBA+C+B,CAAA,UA/CI,MA+CJ,CAAA,MAAA,EA/CmB,mBA+CnB,CAAA,CAAA,GAAA,QAEhC,MAhDE,CAgDF,GAhDM,CAgDN,CAhDQ,CAgDR,CAAA,SAAA;EAAG,MAAA,EAAA,KAAA,EAAA;AAAG,CAAA,GAAA,CAAA,GA/Cf,CA+Ce,SAAA,MA/CC,iBA+CD,GA/CqB,iBA+CrB,CA/CuC,CA+CvC,CAAA,GAAA,KAAA,EAAG;;;AAOpB;AAA8C,KAhDlC,cAgDkC,CAAA,CAAA,CAAA,GAhDd,CAgDc,SAAA;EAAO,OAAA,EAAA;IAAsC,QAAA,EAAA,KAAA,WAhDV,iBAgDU;EAAG,CAAA;CAApB,GAAA,CAAA,GAAA,KAAA;;AAK1E;;
|
|
1
|
+
{"version":3,"file":"types.d.cts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/types.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Plugin } from "./plugin.mjs";
|
|
2
|
-
import { Router, RouterClient } from "@orpc/server";
|
|
3
|
-
import { Scope } from "effect";
|
|
4
2
|
import { AnyContractRouter, AnySchema, InferSchemaInput, InferSchemaOutput } from "@orpc/contract";
|
|
3
|
+
import { Scope } from "effect";
|
|
4
|
+
import { Router, RouterClient } from "@orpc/server";
|
|
5
5
|
|
|
6
6
|
//#region src/types.d.ts
|
|
7
7
|
|
|
@@ -21,7 +21,7 @@ interface RegisteredPlugins {}
|
|
|
21
21
|
/**
|
|
22
22
|
* Base type for any plugin instance.
|
|
23
23
|
*/
|
|
24
|
-
type AnyPlugin = Plugin<AnyContractRouter, AnySchema, AnySchema, AnySchema, any>;
|
|
24
|
+
type AnyPlugin = Plugin<AnyContractRouter, AnySchema, AnySchema, AnySchema | undefined, any>;
|
|
25
25
|
/**
|
|
26
26
|
* Loaded plugin constructor with binding information
|
|
27
27
|
*/
|
|
@@ -31,7 +31,7 @@ type AnyPluginConstructor = {
|
|
|
31
31
|
contract: AnyContractRouter;
|
|
32
32
|
variables: AnySchema;
|
|
33
33
|
secrets: AnySchema;
|
|
34
|
-
context: AnySchema;
|
|
34
|
+
context: AnySchema | undefined;
|
|
35
35
|
};
|
|
36
36
|
};
|
|
37
37
|
/**
|
|
@@ -88,7 +88,7 @@ type PluginSecrets<T> = T extends {
|
|
|
88
88
|
*/
|
|
89
89
|
type PluginContext<T> = T extends {
|
|
90
90
|
binding: {
|
|
91
|
-
context: infer C extends AnySchema;
|
|
91
|
+
context: infer C extends AnySchema | undefined;
|
|
92
92
|
};
|
|
93
93
|
} ? C : never;
|
|
94
94
|
/**
|
|
@@ -111,7 +111,7 @@ type RegisteredPlugin<K$1 extends keyof R, R = RegisteredPlugins> = R[K$1] exten
|
|
|
111
111
|
contract: infer C extends AnyContractRouter;
|
|
112
112
|
variables: infer V extends AnySchema;
|
|
113
113
|
secrets: infer S extends AnySchema;
|
|
114
|
-
context: infer TRequestContext extends AnySchema;
|
|
114
|
+
context: infer TRequestContext extends AnySchema | undefined;
|
|
115
115
|
} ? Plugin<C, V, S, TRequestContext, any> : never : never;
|
|
116
116
|
/**
|
|
117
117
|
* Extract plugin constructor type from registry entry
|
|
@@ -120,7 +120,7 @@ type PluginConstructor<K$1 extends keyof R, R = RegisteredPlugins> = RegisteredP
|
|
|
120
120
|
/**
|
|
121
121
|
* Extract context input type from plugin binding (for client creation)
|
|
122
122
|
*/
|
|
123
|
-
type PluginContextInput<T> = InferSchemaInput<PluginContext<T
|
|
123
|
+
type PluginContextInput<T> = PluginContext<T> extends AnySchema ? InferSchemaInput<PluginContext<T>> : never;
|
|
124
124
|
/**
|
|
125
125
|
* Extract config input type from plugin binding
|
|
126
126
|
*/
|
|
@@ -131,7 +131,7 @@ type PluginConfigInput<T> = {
|
|
|
131
131
|
/**
|
|
132
132
|
* Extract deps context type from plugin instance (used for initialization)
|
|
133
133
|
*/
|
|
134
|
-
type ContextOf<T extends AnyPlugin> = T extends Plugin<AnyContractRouter, AnySchema, AnySchema, AnySchema, infer TDeps> ? TDeps : never;
|
|
134
|
+
type ContextOf<T extends AnyPlugin> = T extends Plugin<AnyContractRouter, AnySchema, AnySchema, AnySchema | undefined, infer TDeps> ? TDeps : never;
|
|
135
135
|
/**
|
|
136
136
|
* Plugin metadata for remote loading
|
|
137
137
|
*/
|
|
@@ -191,7 +191,7 @@ type VerifyPluginBinding<K$1 extends keyof R, R = RegisteredPlugins> = R[K$1] ex
|
|
|
191
191
|
contract: AnyContractRouter;
|
|
192
192
|
variables: AnySchema;
|
|
193
193
|
secrets: AnySchema;
|
|
194
|
-
context: AnySchema;
|
|
194
|
+
context: AnySchema | undefined;
|
|
195
195
|
} ? true : `❌ Plugin "${K$1 & string}" is not properly registered. Ensure it extends plugin binding layout { contract, variables, secrets, context }.` : `❌ Plugin "${K$1 & string}" is not properly registered. Missing binding property.`;
|
|
196
196
|
/**
|
|
197
197
|
* Result of runtime.usePlugin() call
|
package/dist/types.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.mts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAkBA;AAKA;;;;;;;AAKA;;AAGY,UAbK,iBAAA,CAaL;;;;AAUA,KAlBA,SAAA,GAAY,MAkBO,CAlBA,iBAmBlB,EAnBqC,SAmBjB,EAnB4B,SAmB5B,EAnBuC,SAmBvC,EAAA,GAAA,CAAA;AAMjC;AAKA;;AAA+C,KAzBnC,oBAAA,GAyBmC;EAClC,MAAA,EAzBL,SAyBK;EAAI,OAAA,EAAA;IAAE,QAAA,EAvBP,iBAuBO;IACjB,SAAA,EAvBW,SAuBX;IAAgB,OAAA,EAtBP,SAsBO;IAAoB,OAAA,EArB3B,SAqB2B;EAAkB,CAAA;CAAC;AAMzD;AAKA;AAKA;AAKY,KAnCA,mBAAA,GAmCmB;EAMnB,MAAA,EAxCC,oBAwCe;EAA4B,MAAA,CAAA,EAAA,MAAA;EAAf,OAAA,CAAA,EAAA,MAAA;EAAP,WAAA,CAAA,EAAA,MAAA;CAAM,GAAA;EAK5B,MAAA,EAAA,MAAA;EAAoD,OAAA,CAAA,EAAA,MAAA;EAAjB,WAAA,CAAA,EAAA,MAAA;CAAb;;AAOlC;;AAAoD,KA9CxC,iBA8CwC,CAAA,CAAA,CAAA,GA9CjB,CA8CiB,SAAA;EAClD,MAAA,EAAA,KAAA,EAAA;CAAE,GAAA,CAAA,GAAA,KAAA;;;;AAKuC,KA/C/B,wBA+C+B,CAAA,UA/CI,MA+CJ,CAAA,MAAA,EA/CmB,mBA+CnB,CAAA,CAAA,GAAA,QAEhC,MAhDE,CAgDF,GAhDM,CAgDN,CAhDQ,CAgDR,CAAA,SAAA;EAAG,MAAA,EAAA,KAAA,EAAA;AAAG,CAAA,GAAA,CAAA,GA/Cf,CA+Ce,SAAA,MA/CC,iBA+CD,GA/CqB,iBA+CrB,CA/CuC,CA+CvC,CAAA,GAAA,KAAA,EAAG;;;AAOpB;AAA8C,KAhDlC,cAgDkC,CAAA,CAAA,CAAA,GAhDd,CAgDc,SAAA;EAAO,OAAA,EAAA;IAAsC,QAAA,EAAA,KAAA,WAhDV,iBAgDU;EAAG,CAAA;CAApB,GAAA,CAAA,GAAA,KAAA;;AAK1E;;
|
|
1
|
+
{"version":3,"file":"types.d.mts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "every-plugin",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -111,33 +111,37 @@
|
|
|
111
111
|
},
|
|
112
112
|
"peerDependencies": {
|
|
113
113
|
"@rspack/core": "1.6.7",
|
|
114
|
-
"typescript": "^5.
|
|
114
|
+
"typescript": "^5.9.3",
|
|
115
|
+
"effect": "^3.19.0",
|
|
116
|
+
"zod": "^4.0.0",
|
|
117
|
+
"@orpc/contract": "^1.12.0",
|
|
118
|
+
"@orpc/server": "^1.12.0"
|
|
115
119
|
},
|
|
116
120
|
"devDependencies": {
|
|
117
|
-
"@effect/language-service": "^0.62.
|
|
121
|
+
"@effect/language-service": "^0.62.3",
|
|
118
122
|
"@effect/vitest": "^0.27.0",
|
|
119
|
-
"@orpc/client": "^1.12.
|
|
120
|
-
"@orpc/openapi": "^1.12.
|
|
123
|
+
"@orpc/client": "^1.12.3",
|
|
124
|
+
"@orpc/openapi": "^1.12.3",
|
|
121
125
|
"@rspack/cli": "^1.6.7",
|
|
122
126
|
"@types/bun": "^1.3.4",
|
|
123
|
-
"@types/node": "^25.0.
|
|
124
|
-
"@vitest/ui": "4.0.
|
|
127
|
+
"@types/node": "^25.0.2",
|
|
128
|
+
"@vitest/ui": "4.0.16",
|
|
125
129
|
"bun-types": "^1.3.4",
|
|
126
130
|
"sirv": "^3.0.2",
|
|
127
|
-
"tsdown": "^0.
|
|
128
|
-
"vite-tsconfig-paths": "^
|
|
129
|
-
"vitest": "^4.0.
|
|
131
|
+
"tsdown": "^0.18.0",
|
|
132
|
+
"vite-tsconfig-paths": "^6.0.1",
|
|
133
|
+
"vitest": "^4.0.16"
|
|
130
134
|
},
|
|
131
135
|
"dependencies": {
|
|
132
136
|
"@module-federation/enhanced": "^0.21.6",
|
|
133
137
|
"@module-federation/node": "^2.7.25",
|
|
134
138
|
"@module-federation/runtime-core": "^0.21.6",
|
|
135
|
-
"@orpc/contract": "^1.12.
|
|
136
|
-
"@orpc/experimental-publisher": "^1.12.
|
|
137
|
-
"@orpc/server": "^1.12.
|
|
138
|
-
"@orpc/zod": "^1.12.
|
|
139
|
-
"effect": "3.19.
|
|
140
|
-
"zod": "4.1
|
|
139
|
+
"@orpc/contract": "^1.12.3",
|
|
140
|
+
"@orpc/experimental-publisher": "^1.12.3",
|
|
141
|
+
"@orpc/server": "^1.12.3",
|
|
142
|
+
"@orpc/zod": "^1.12.3",
|
|
143
|
+
"effect": "3.19.12",
|
|
144
|
+
"zod": "4.2.1"
|
|
141
145
|
},
|
|
142
146
|
"keywords": [
|
|
143
147
|
"plugin",
|