every-plugin 0.2.0 → 0.2.1
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/client/index.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/plugin.d.ts +5 -10
- package/dist/plugin.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +11 -5
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +4 -3
- package/dist/runtime/services/plugin-loader.service.d.ts +7 -23
- package/dist/runtime/services/plugin-loader.service.d.ts.map +1 -1
- package/dist/runtime/services/plugin-loader.service.js +10 -13
- package/dist/runtime/services/plugin.service.d.ts +4 -16
- package/dist/runtime/services/plugin.service.d.ts.map +1 -1
- package/dist/testing/mocks/module-federation.service.d.ts +2 -2
- package/dist/testing/mocks/module-federation.service.d.ts.map +1 -1
- package/dist/types.d.ts +19 -66
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/client/index.js
CHANGED
|
@@ -12,7 +12,7 @@ export function getPluginRouter(initialized) {
|
|
|
12
12
|
throw new Error("Plugin instance is undefined - check service layer dependencies (ModuleFederationService, SecretsService)");
|
|
13
13
|
}
|
|
14
14
|
if (typeof initialized.plugin.createRouter !== "function") {
|
|
15
|
-
throw new Error(`Plugin ${initialized.
|
|
15
|
+
throw new Error(`Plugin ${initialized.plugin.id || 'unknown'} does not have a createRouter method`);
|
|
16
16
|
}
|
|
17
17
|
if (!initialized.context) {
|
|
18
18
|
throw new Error("Plugin context is undefined - plugin initialization incomplete");
|
package/dist/index.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ export * from "./errors";
|
|
|
2
2
|
export * from "./plugin";
|
|
3
3
|
export * from "./runtime";
|
|
4
4
|
export { getNormalizedRemoteName } from "./runtime/services/normalize";
|
|
5
|
-
export type { AnyPlugin, ConfigOf,
|
|
5
|
+
export type { AnyPlugin, ConfigOf, EveryPlugin, InitializedPlugin, LoadedPlugin, PluginInstance, PluginOf, PluginRegistry, PluginRuntimeConfig, RegistryBindings, RouterOf, SecretsConfig } from "./types";
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAG1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,YAAY,EACX,SAAS,EACT,QAAQ,EACR,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAG1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,YAAY,EACX,SAAS,EACT,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,MAAM,SAAS,CAAC"}
|
package/dist/plugin.d.ts
CHANGED
|
@@ -2,10 +2,6 @@ import type { AnyContractRouter } from "@orpc/contract";
|
|
|
2
2
|
import type { Context, Router } from "@orpc/server";
|
|
3
3
|
import { Effect, type Scope } from "effect";
|
|
4
4
|
import { z } from "zod";
|
|
5
|
-
/**
|
|
6
|
-
* Derive router type from contract at the type level
|
|
7
|
-
*/
|
|
8
|
-
type RouterFromContract<C extends AnyContractRouter, TContext extends Context = Record<never, never>> = Router<C, TContext>;
|
|
9
5
|
/**
|
|
10
6
|
* Helper type that correctly constructs the config schema type
|
|
11
7
|
*/
|
|
@@ -14,9 +10,9 @@ export type PluginConfigFor<V extends z.ZodTypeAny, S extends z.ZodTypeAny> = z.
|
|
|
14
10
|
secrets: S;
|
|
15
11
|
}>;
|
|
16
12
|
/**
|
|
17
|
-
*
|
|
13
|
+
* Loaded plugin with static binding property
|
|
18
14
|
*/
|
|
19
|
-
export interface
|
|
15
|
+
export interface LoadedPluginWithBinding<TContract extends AnyContractRouter, TVariables extends z.ZodTypeAny, TSecrets extends z.ZodTypeAny, TContext extends Context = Record<never, never>> {
|
|
20
16
|
new (): Plugin<TContract, TVariables, TSecrets, TContext>;
|
|
21
17
|
binding: {
|
|
22
18
|
contract: TContract;
|
|
@@ -105,7 +101,7 @@ export interface Plugin<TContract extends AnyContractRouter, TVariables extends
|
|
|
105
101
|
* @param context The initialized plugin context
|
|
106
102
|
* @returns A router with procedures matching the plugin's contract
|
|
107
103
|
*/
|
|
108
|
-
createRouter(context?: TContext):
|
|
104
|
+
createRouter(context?: TContext): Router<TContract, TContext>;
|
|
109
105
|
}
|
|
110
106
|
/**
|
|
111
107
|
* Factory function to create plugins
|
|
@@ -119,8 +115,7 @@ export declare function createPlugin<V extends z.ZodTypeAny, S extends z.ZodType
|
|
|
119
115
|
variables: z.infer<V>;
|
|
120
116
|
secrets: z.infer<S>;
|
|
121
117
|
}) => Effect.Effect<TContext, Error, Scope.Scope>;
|
|
122
|
-
createRouter: (ctx: TContext) =>
|
|
118
|
+
createRouter: (ctx: TContext) => Router<TContract, TContext>;
|
|
123
119
|
shutdown?: (ctx: TContext) => Effect.Effect<void, Error, never>;
|
|
124
|
-
}):
|
|
125
|
-
export {};
|
|
120
|
+
}): LoadedPluginWithBinding<TContract, V, S, TContext>;
|
|
126
121
|
//# sourceMappingURL=plugin.d.ts.map
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ManagedRuntime } from "effect";
|
|
2
2
|
import type { z } from "zod";
|
|
3
|
-
import type { EveryPlugin, InitializedPlugin,
|
|
3
|
+
import type { ConfigOf, EveryPlugin, InitializedPlugin, LoadedPlugin, PluginInstance, PluginOf, PluginRegistry, RegistryBindings, RuntimeOptions, SecretsConfig } from "../types";
|
|
4
4
|
import { PluginService } from "./services/plugin.service";
|
|
5
5
|
export declare class PluginRuntime<R extends RegistryBindings = RegistryBindings> {
|
|
6
6
|
private runtime;
|
|
@@ -10,10 +10,16 @@ export declare class PluginRuntime<R extends RegistryBindings = RegistryBindings
|
|
|
10
10
|
private generateCacheKey;
|
|
11
11
|
private validatePluginId;
|
|
12
12
|
private runPromise;
|
|
13
|
-
loadPlugin<K extends keyof R>(pluginId: K): Promise<
|
|
14
|
-
instantiatePlugin<K extends keyof R>(
|
|
15
|
-
initializePlugin<K extends keyof R>(instance: PluginInstance<PluginOf<R[K]>>, config: z.infer<PluginOf<R[K]>["configSchema"]>): Promise<InitializedPlugin<PluginOf<R[K]
|
|
16
|
-
|
|
13
|
+
loadPlugin<K extends keyof R>(pluginId: K): Promise<LoadedPlugin<PluginOf<R[K]>>>;
|
|
14
|
+
instantiatePlugin<K extends keyof R>(pluginId: K, loadedPlugin: LoadedPlugin<PluginOf<R[K]>>): Promise<PluginInstance<PluginOf<R[K]>>>;
|
|
15
|
+
initializePlugin<K extends keyof R>(instance: PluginInstance<PluginOf<R[K]>>, config: z.infer<PluginOf<R[K]>["configSchema"]>): Promise<InitializedPlugin<PluginOf<R[K]>> & {
|
|
16
|
+
config: ConfigOf<R[K]>;
|
|
17
|
+
}>;
|
|
18
|
+
usePlugin<K extends keyof R>(pluginId: K, config: z.infer<PluginOf<R[K]>["configSchema"]>): Promise<EveryPlugin<PluginOf<R[K]>> & {
|
|
19
|
+
initialized: InitializedPlugin<PluginOf<R[K]>> & {
|
|
20
|
+
config: ConfigOf<R[K]>;
|
|
21
|
+
};
|
|
22
|
+
}>;
|
|
17
23
|
shutdown(): Promise<void>;
|
|
18
24
|
evictPlugin<K extends keyof R>(pluginId: K, config: z.infer<PluginOf<R[K]>["configSchema"]>): Promise<void>;
|
|
19
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/index.js
CHANGED
|
@@ -46,10 +46,11 @@ export class PluginRuntime {
|
|
|
46
46
|
});
|
|
47
47
|
return this.runPromise(effect);
|
|
48
48
|
}
|
|
49
|
-
instantiatePlugin(
|
|
49
|
+
instantiatePlugin(pluginId, loadedPlugin) {
|
|
50
50
|
const effect = Effect.gen(this, function* () {
|
|
51
51
|
const pluginService = yield* PluginService;
|
|
52
|
-
const
|
|
52
|
+
const pluginIdStr = pluginId;
|
|
53
|
+
const result = yield* pluginService.instantiatePlugin(pluginIdStr, loadedPlugin);
|
|
53
54
|
return result;
|
|
54
55
|
});
|
|
55
56
|
return this.runPromise(effect);
|
|
@@ -71,7 +72,7 @@ export class PluginRuntime {
|
|
|
71
72
|
const validatedId = yield* this.validatePluginId(pluginId);
|
|
72
73
|
// Load → Instantiate → Initialize
|
|
73
74
|
const ctor = yield* pluginService.loadPlugin(validatedId);
|
|
74
|
-
const instance = yield* pluginService.instantiatePlugin(ctor);
|
|
75
|
+
const instance = yield* pluginService.instantiatePlugin(String(pluginId), ctor);
|
|
75
76
|
const _initialized = yield* pluginService.initializePlugin(instance, config);
|
|
76
77
|
const initialized = _initialized;
|
|
77
78
|
const client = createPluginClient(initialized);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Context, Effect, Scope } from "effect";
|
|
2
2
|
import type { z } from "zod";
|
|
3
|
-
import type { AnyPlugin,
|
|
3
|
+
import type { AnyPlugin, LoadedPlugin, PluginInstance, PluginRegistry } from "../../types";
|
|
4
4
|
import { PluginRuntimeError } from "../errors";
|
|
5
5
|
import { ModuleFederationService } from "./module-federation.service";
|
|
6
6
|
import { SecretsService } from "./secrets.service";
|
|
@@ -9,11 +9,7 @@ export declare class PluginRegistryTag extends PluginRegistryTag_base {
|
|
|
9
9
|
}
|
|
10
10
|
declare const RegistryService_base: Effect.Service.Class<RegistryService, "RegistryService", {
|
|
11
11
|
readonly effect: Effect.Effect<{
|
|
12
|
-
get: (pluginId: string) => Effect.Effect<
|
|
13
|
-
remoteUrl: string;
|
|
14
|
-
version?: string;
|
|
15
|
-
description?: string;
|
|
16
|
-
}, PluginRuntimeError, never>;
|
|
12
|
+
get: (pluginId: string) => Effect.Effect<import("../../types").PluginMetadata, PluginRuntimeError, never>;
|
|
17
13
|
}, never, PluginRegistryTag>;
|
|
18
14
|
}>;
|
|
19
15
|
export declare class RegistryService extends RegistryService_base {
|
|
@@ -22,35 +18,23 @@ declare const PluginLoaderService_base: Effect.Service.Class<PluginLoaderService
|
|
|
22
18
|
readonly effect: Effect.Effect<{
|
|
23
19
|
loadPlugin: (pluginId: string) => Effect.Effect<{
|
|
24
20
|
ctor: new () => AnyPlugin;
|
|
25
|
-
metadata:
|
|
26
|
-
pluginId: string;
|
|
27
|
-
version: string | undefined;
|
|
28
|
-
};
|
|
21
|
+
metadata: import("../../types").PluginMetadata;
|
|
29
22
|
}, PluginRuntimeError, never>;
|
|
30
|
-
instantiatePlugin: <T extends AnyPlugin>(
|
|
23
|
+
instantiatePlugin: <T extends AnyPlugin>(pluginId: string, loadedPlugin: LoadedPlugin<T>) => Effect.Effect<{
|
|
31
24
|
plugin: T;
|
|
32
|
-
metadata:
|
|
33
|
-
readonly pluginId: string;
|
|
34
|
-
readonly version?: string;
|
|
35
|
-
readonly description?: string;
|
|
36
|
-
readonly type?: string;
|
|
37
|
-
};
|
|
25
|
+
metadata: import("../../types").PluginMetadata;
|
|
38
26
|
}, PluginRuntimeError, never>;
|
|
39
27
|
initializePlugin: <T extends AnyPlugin>(pluginInstance: PluginInstance<T>, config: {
|
|
40
28
|
variables: unknown;
|
|
41
29
|
secrets: unknown;
|
|
42
30
|
}) => Effect.Effect<{
|
|
43
31
|
plugin: T;
|
|
44
|
-
metadata:
|
|
45
|
-
readonly pluginId: string;
|
|
46
|
-
readonly version?: string;
|
|
47
|
-
readonly description?: string;
|
|
48
|
-
};
|
|
32
|
+
metadata: import("../../types").PluginMetadata;
|
|
49
33
|
config: z.infer<T["configSchema"]>;
|
|
50
34
|
context: any;
|
|
51
35
|
scope: Scope.CloseableScope;
|
|
52
36
|
}, PluginRuntimeError, never>;
|
|
53
|
-
}, never,
|
|
37
|
+
}, never, ModuleFederationService | SecretsService | RegistryService>;
|
|
54
38
|
}>;
|
|
55
39
|
export declare class PluginLoaderService extends PluginLoaderService_base {
|
|
56
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-loader.service.d.ts","sourceRoot":"","sources":["../../../src/runtime/services/plugin-loader.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EACX,SAAS,EAET,
|
|
1
|
+
{"version":3,"file":"plugin-loader.service.d.ts","sourceRoot":"","sources":["../../../src/runtime/services/plugin-loader.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EACX,SAAS,EAET,YAAY,EACZ,cAAc,EACd,cAAc,EACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAwB,MAAM,WAAW,CAAC;AAErE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;;AAEnD,qBAAa,iBAAkB,SAAQ,sBAGpC;CAAI;;;wBAOY,MAAM;;;AALzB,qBAAa,eAAgB,SAAQ,oBAkBnC;CAAI;;;+BAgBoB,MAAM;;;;4BAyBT,CAAC,SAAS,SAAS,YAC5B,MAAM,gBACF,YAAY,CAAC,CAAC,CAAC;;;;2BAmCX,CAAC,SAAS,SAAS,kBACrB,cAAc,CAAC,CAAC,CAAC,UACzB;YAAE,SAAS,EAAE,OAAO,CAAC;YAAC,OAAO,EAAE,OAAO,CAAA;SAAE;;;oBAwD3B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;;;;;;AAtInD,qBAAa,mBAAoB,SAAQ,wBA6IvC;CACD"}
|
|
@@ -37,26 +37,23 @@ export class PluginLoaderService extends Effect.Service()("PluginLoaderService",
|
|
|
37
37
|
const ctor = yield* moduleFederationService.loadRemoteConstructor(pluginId, url).pipe(Effect.mapError((error) => toPluginRuntimeError(error.cause, pluginId, undefined, "load-remote", false)));
|
|
38
38
|
return {
|
|
39
39
|
ctor,
|
|
40
|
-
metadata:
|
|
41
|
-
pluginId,
|
|
42
|
-
version: metadata.version
|
|
43
|
-
},
|
|
40
|
+
metadata: metadata,
|
|
44
41
|
};
|
|
45
42
|
}),
|
|
46
|
-
instantiatePlugin: (
|
|
47
|
-
const instance = yield* Effect.try(() => new
|
|
43
|
+
instantiatePlugin: (pluginId, loadedPlugin) => Effect.gen(function* () {
|
|
44
|
+
const instance = yield* Effect.try(() => new loadedPlugin.ctor()).pipe(Effect.mapError((error) => toPluginRuntimeError(error, pluginId, undefined, "instantiate-plugin", false)));
|
|
48
45
|
// Validate plugin ID matches
|
|
49
|
-
if (instance.id !==
|
|
46
|
+
if (instance.id !== pluginId) {
|
|
50
47
|
return yield* Effect.fail(new PluginRuntimeError({
|
|
51
|
-
pluginId
|
|
48
|
+
pluginId,
|
|
52
49
|
operation: "validate-plugin-id",
|
|
53
|
-
cause: new Error(`Plugin ID mismatch: expected ${
|
|
50
|
+
cause: new Error(`Plugin ID mismatch: expected ${pluginId}, got ${instance.id}`),
|
|
54
51
|
retryable: false,
|
|
55
52
|
}));
|
|
56
53
|
}
|
|
57
54
|
return {
|
|
58
55
|
plugin: instance,
|
|
59
|
-
metadata:
|
|
56
|
+
metadata: loadedPlugin.metadata,
|
|
60
57
|
};
|
|
61
58
|
}),
|
|
62
59
|
initializePlugin: (pluginInstance, config) => Effect.gen(function* () {
|
|
@@ -69,7 +66,7 @@ export class PluginLoaderService extends Effect.Service()("PluginLoaderService",
|
|
|
69
66
|
retryable: false,
|
|
70
67
|
})));
|
|
71
68
|
const hydratedConfig = yield* secretsService.hydrateSecrets(validatedConfig);
|
|
72
|
-
const
|
|
69
|
+
const _config = yield* validate(plugin.configSchema, hydratedConfig, plugin.id, "config").pipe(Effect.mapError((validationError) => new PluginRuntimeError({
|
|
73
70
|
pluginId: plugin.id,
|
|
74
71
|
operation: "validate-hydrated-config",
|
|
75
72
|
cause: validationError.zodError,
|
|
@@ -78,11 +75,11 @@ export class PluginLoaderService extends Effect.Service()("PluginLoaderService",
|
|
|
78
75
|
// Create a long-lived scope for this plugin instance
|
|
79
76
|
const scope = yield* Scope.make();
|
|
80
77
|
// Initialize plugin within the scope
|
|
81
|
-
const context = yield* plugin.initialize(
|
|
78
|
+
const context = yield* plugin.initialize(_config).pipe(Effect.provideService(Scope.Scope, scope), Effect.mapError((error) => toPluginRuntimeError(error, plugin.id, undefined, "initialize-plugin", false)));
|
|
82
79
|
return {
|
|
83
80
|
plugin,
|
|
84
81
|
metadata: pluginInstance.metadata,
|
|
85
|
-
config:
|
|
82
|
+
config: _config,
|
|
86
83
|
context,
|
|
87
84
|
scope,
|
|
88
85
|
};
|
|
@@ -6,30 +6,18 @@ declare const PluginService_base: Effect.Service.Class<PluginService, "PluginSer
|
|
|
6
6
|
readonly scoped: Effect.Effect<{
|
|
7
7
|
loadPlugin: (pluginId: string) => Effect.Effect<{
|
|
8
8
|
ctor: new () => AnyPlugin;
|
|
9
|
-
metadata:
|
|
10
|
-
pluginId: string;
|
|
11
|
-
version: string | undefined;
|
|
12
|
-
};
|
|
9
|
+
metadata: import("../../types").PluginMetadata;
|
|
13
10
|
}, import("../errors").PluginRuntimeError, never>;
|
|
14
|
-
instantiatePlugin: <T extends AnyPlugin>(
|
|
11
|
+
instantiatePlugin: <T extends AnyPlugin>(pluginId: string, loadedPlugin: import("../..").LoadedPlugin<T>) => Effect.Effect<{
|
|
15
12
|
plugin: T;
|
|
16
|
-
metadata:
|
|
17
|
-
readonly pluginId: string;
|
|
18
|
-
readonly version?: string;
|
|
19
|
-
readonly description?: string;
|
|
20
|
-
readonly type?: string;
|
|
21
|
-
};
|
|
13
|
+
metadata: import("../../types").PluginMetadata;
|
|
22
14
|
}, import("../errors").PluginRuntimeError, never>;
|
|
23
15
|
initializePlugin: <T extends AnyPlugin>(pluginInstance: import("../..").PluginInstance<T>, config: {
|
|
24
16
|
variables: unknown;
|
|
25
17
|
secrets: unknown;
|
|
26
18
|
}) => Effect.Effect<{
|
|
27
19
|
plugin: T;
|
|
28
|
-
metadata:
|
|
29
|
-
readonly pluginId: string;
|
|
30
|
-
readonly version?: string;
|
|
31
|
-
readonly description?: string;
|
|
32
|
-
};
|
|
20
|
+
metadata: import("../../types").PluginMetadata;
|
|
33
21
|
config: import("zod").infer<T["configSchema"]>;
|
|
34
22
|
context: any;
|
|
35
23
|
scope: Scope.CloseableScope;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.service.d.ts","sourceRoot":"","sources":["../../../src/runtime/services/plugin.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAQ,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,KAAK,EACX,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAsC,MAAM,yBAAyB,CAAC
|
|
1
|
+
{"version":3,"file":"plugin.service.d.ts","sourceRoot":"","sources":["../../../src/runtime/services/plugin.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAQ,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,KAAK,EACX,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAsC,MAAM,yBAAyB,CAAC;;;;;;;;;;;;;;;;;;;;;iCAYtE,iBAAiB,CAAC,SAAS,CAAC;;;;AATxD,qBAAa,aAAc,SAAQ,kBAyBjC;IACD,MAAM,CAAC,IAAI,GAAI,UAAU,cAAc,EAAE,SAAS,aAAa,8CAmB9D;CACD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Layer } from "effect";
|
|
2
|
-
import type {
|
|
2
|
+
import type { LoadedPluginWithBinding } from "../../plugin";
|
|
3
3
|
import { ModuleFederationService } from "../../runtime/services/module-federation.service";
|
|
4
|
-
export type PluginMap = Record<string,
|
|
4
|
+
export type PluginMap = Record<string, LoadedPluginWithBinding<any, any, any, any>>;
|
|
5
5
|
export declare const createMockModuleFederationServiceLayer: (pluginMap: PluginMap) => Layer.Layer<ModuleFederationService, never, never>;
|
|
6
6
|
//# sourceMappingURL=module-federation.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-federation.service.d.ts","sourceRoot":"","sources":["../../../src/testing/mocks/module-federation.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"module-federation.service.d.ts","sourceRoot":"","sources":["../../../src/testing/mocks/module-federation.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAE3F,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEpF,eAAO,MAAM,sCAAsC,GAAI,WAAW,SAAS,uDAoCxE,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import type { AnyContractRouter } from "@orpc/contract";
|
|
2
|
-
import type { Context,
|
|
2
|
+
import type { Context, RouterClient } from "@orpc/server";
|
|
3
3
|
import type { Scope } from "effect";
|
|
4
4
|
import type { z } from "zod";
|
|
5
|
-
import type { Plugin, PluginConfigFor
|
|
5
|
+
import type { Plugin, PluginConfigFor } from "./plugin";
|
|
6
6
|
import type { PluginRuntime } from "./runtime";
|
|
7
|
-
export type AnyContract = Router<AnyContractRouter, any>;
|
|
8
7
|
/**
|
|
9
8
|
* Base type for any plugin instance.
|
|
10
9
|
* This is the foundation that enables type inference across the entire plugin system.
|
|
@@ -43,46 +42,11 @@ export type RouterOf<T extends AnyPlugin> = ReturnType<T["createRouter"]>;
|
|
|
43
42
|
* This is used for typing the router client context parameter.
|
|
44
43
|
*/
|
|
45
44
|
export type ContextOf<T extends AnyPlugin> = T extends Plugin<AnyContractRouter, z.ZodTypeAny, z.ZodTypeAny, infer TContext> ? TContext : never;
|
|
46
|
-
/**
|
|
47
|
-
* Infers binding definitions from plugin constructor objects.
|
|
48
|
-
* Used to derive RegistryBindings from a collection of plugin constructors.
|
|
49
|
-
*/
|
|
50
|
-
export type InferBindingsFromPlugins<T> = {
|
|
51
|
-
[K in keyof T]: T[K] extends PluginConstructorWithBinding<infer C, infer V, infer S, infer Ctx> ? {
|
|
52
|
-
contract: C;
|
|
53
|
-
config: PluginConfigFor<V, S>;
|
|
54
|
-
} : never;
|
|
55
|
-
};
|
|
56
|
-
/**
|
|
57
|
-
* Converts registry bindings to plugin constructor types.
|
|
58
|
-
* This is used internally by the runtime to maintain type safety.
|
|
59
|
-
*/
|
|
60
|
-
export type PluginBindingsFor<R extends RegistryBindings> = {
|
|
61
|
-
[K in keyof R]: R[K] extends {
|
|
62
|
-
contract: infer C;
|
|
63
|
-
config: infer Conf;
|
|
64
|
-
} ? Conf extends PluginConfigFor<infer V, infer S> ? C extends AnyContractRouter ? PluginConstructorWithBinding<C, V, S, Context> : never : never : never;
|
|
65
|
-
};
|
|
66
45
|
/**
|
|
67
46
|
* Runtime registry configuration.
|
|
68
47
|
* Maps plugin IDs to their remote URLs and metadata.
|
|
69
48
|
*/
|
|
70
|
-
export type PluginRegistry = Record<string,
|
|
71
|
-
remoteUrl: string;
|
|
72
|
-
version?: string;
|
|
73
|
-
description?: string;
|
|
74
|
-
}>;
|
|
75
|
-
/**
|
|
76
|
-
* Type-safe registry that enforces key alignment with bindings.
|
|
77
|
-
* When used with RegistryBindings, ensures plugin IDs match between registry and type definitions.
|
|
78
|
-
*/
|
|
79
|
-
export type PluginRegistryFor<R extends RegistryBindings> = {
|
|
80
|
-
[K in keyof R]: {
|
|
81
|
-
remoteUrl: string;
|
|
82
|
-
version?: string;
|
|
83
|
-
description?: string;
|
|
84
|
-
};
|
|
85
|
-
};
|
|
49
|
+
export type PluginRegistry = Record<string, PluginMetadata>;
|
|
86
50
|
/**
|
|
87
51
|
* Configuration for secrets injection.
|
|
88
52
|
* Secrets are hydrated into plugin configs using template replacement.
|
|
@@ -91,42 +55,35 @@ export interface SecretsConfig {
|
|
|
91
55
|
[key: string]: string;
|
|
92
56
|
}
|
|
93
57
|
/**
|
|
94
|
-
*
|
|
95
|
-
*
|
|
58
|
+
* Shared metadata for plugin lifecycle stages.
|
|
59
|
+
* Contains information about the plugin that persists across different stages.
|
|
60
|
+
*/
|
|
61
|
+
export type PluginMetadata = {
|
|
62
|
+
readonly remoteUrl: string;
|
|
63
|
+
readonly version?: string;
|
|
64
|
+
readonly description?: string;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Loaded plugin with metadata.
|
|
96
68
|
*/
|
|
97
|
-
export interface
|
|
69
|
+
export interface LoadedPlugin<T extends AnyPlugin = AnyPlugin> {
|
|
98
70
|
readonly ctor: new () => T;
|
|
99
|
-
readonly metadata:
|
|
100
|
-
readonly pluginId: string;
|
|
101
|
-
readonly version?: string;
|
|
102
|
-
readonly description?: string;
|
|
103
|
-
readonly type?: string;
|
|
104
|
-
};
|
|
71
|
+
readonly metadata: PluginMetadata;
|
|
105
72
|
}
|
|
106
73
|
/**
|
|
107
74
|
* Instantiated plugin with metadata.
|
|
108
|
-
* Represents a plugin instance ready for initialization.
|
|
109
75
|
*/
|
|
110
76
|
export interface PluginInstance<T extends AnyPlugin = AnyPlugin> {
|
|
111
77
|
readonly plugin: T;
|
|
112
|
-
readonly metadata:
|
|
113
|
-
readonly pluginId: string;
|
|
114
|
-
readonly version?: string;
|
|
115
|
-
readonly description?: string;
|
|
116
|
-
};
|
|
78
|
+
readonly metadata: PluginMetadata;
|
|
117
79
|
}
|
|
118
80
|
/**
|
|
119
81
|
* Fully initialized plugin ready for use.
|
|
120
82
|
* Contains the plugin instance, validated config, execution context, and scope.
|
|
121
|
-
* This is what gets passed to createPluginClient for type-safe procedure calls.
|
|
122
83
|
*/
|
|
123
84
|
export interface InitializedPlugin<T extends AnyPlugin = AnyPlugin> {
|
|
124
85
|
readonly plugin: T;
|
|
125
|
-
readonly metadata:
|
|
126
|
-
readonly pluginId: string;
|
|
127
|
-
readonly version?: string;
|
|
128
|
-
readonly description?: string;
|
|
129
|
-
};
|
|
86
|
+
readonly metadata: PluginMetadata;
|
|
130
87
|
readonly config: z.infer<T["configSchema"]>;
|
|
131
88
|
readonly context: ContextOf<T>;
|
|
132
89
|
readonly scope: Scope.CloseableScope;
|
|
@@ -152,13 +109,9 @@ export interface RuntimeOptions {
|
|
|
152
109
|
* Enhanced plugin result containing client, router, and metadata.
|
|
153
110
|
*/
|
|
154
111
|
export interface EveryPlugin<T extends AnyPlugin = AnyPlugin> {
|
|
155
|
-
readonly client:
|
|
112
|
+
readonly client: RouterClient<RouterOf<T>, Record<never, never>>;
|
|
156
113
|
readonly router: RouterOf<T>;
|
|
157
|
-
readonly metadata:
|
|
158
|
-
readonly pluginId: string;
|
|
159
|
-
readonly version?: string;
|
|
160
|
-
readonly description?: string;
|
|
161
|
-
};
|
|
114
|
+
readonly metadata: PluginMetadata;
|
|
162
115
|
readonly initialized: InitializedPlugin<T>;
|
|
163
116
|
}
|
|
164
117
|
/**
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|