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.
@@ -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.metadata?.pluginId || 'unknown'} does not have a createRouter method`);
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, InitializedPlugin, EveryPlugin, PluginConstructor, PluginInstance, PluginOf, PluginRegistry, PluginRegistryFor, PluginRuntimeConfig, RegistryBindings, RouterOf, SecretsConfig } from "./types";
5
+ export type { AnyPlugin, ConfigOf, EveryPlugin, InitializedPlugin, LoadedPlugin, PluginInstance, PluginOf, PluginRegistry, PluginRuntimeConfig, RegistryBindings, RouterOf, SecretsConfig } from "./types";
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -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,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,MAAM,SAAS,CAAC"}
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
- * Plugin constructor with static binding property
13
+ * Loaded plugin with static binding property
18
14
  */
19
- export interface PluginConstructorWithBinding<TContract extends AnyContractRouter, TVariables extends z.ZodTypeAny, TSecrets extends z.ZodTypeAny, TContext extends Context = Record<never, never>> {
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): RouterFromContract<TContract, 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) => RouterFromContract<TContract, TContext>;
118
+ createRouter: (ctx: TContext) => Router<TContract, TContext>;
123
119
  shutdown?: (ctx: TContext) => Effect.Effect<void, Error, never>;
124
- }): PluginConstructorWithBinding<TContract, V, S, TContext>;
125
- export {};
120
+ }): LoadedPluginWithBinding<TContract, V, S, TContext>;
126
121
  //# sourceMappingURL=plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
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;AAGxB;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,UAAU,IACzE,CAAC,CAAC,SAAS,CAAC;IAAE,SAAS,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,uBAAuB,CACvC,SAAS,SAAS,iBAAiB,EACnC,UAAU,SAAS,CAAC,CAAC,UAAU,EAC/B,QAAQ,SAAS,CAAC,CAAC,UAAU,EAC7B,QAAQ,SAAS,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;IAE/C,QAAO,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzD,OAAO,EAAE;QACR,QAAQ,EAAE,SAAS,CAAC;QACpB,MAAM,EAAE,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;KAC9C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,OAAO,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AAE1E;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6C9B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,MAAM,CACtB,SAAS,SAAS,iBAAiB,EACnC,UAAU,SAAS,CAAC,CAAC,UAAU,EAC/B,QAAQ,SAAS,CAAC,CAAC,UAAU,EAC7B,QAAQ,SAAS,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;IAE/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAG7D,UAAU,CACT,MAAM,EAAE;QAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;KAAE,GACpE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAEjD,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEvC;;;;;OAKG;IACH,YAAY,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;CAC9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC3B,CAAC,SAAS,CAAC,CAAC,UAAU,EACtB,CAAC,SAAS,CAAC,CAAC,UAAU,EACtB,SAAS,SAAS,iBAAiB,EACnC,QAAQ,SAAS,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EAC9C,MAAM,EAAE;IACT,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,CAAC,CAAC;IACb,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,CAAC,EAAE,CACZ,MAAM,EAAE;QAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;KAAE,KAClD,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACjD,YAAY,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC7D,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAChE,GAsD4B,uBAAuB,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAC9E"}
@@ -1,6 +1,6 @@
1
1
  import { ManagedRuntime } from "effect";
2
2
  import type { z } from "zod";
3
- import type { EveryPlugin, InitializedPlugin, PluginConstructor, PluginInstance, PluginOf, PluginRegistry, RegistryBindings, RuntimeOptions, SecretsConfig } from "../types";
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<PluginConstructor<PluginOf<R[K]>>>;
14
- instantiatePlugin<K extends keyof R>(ctor: PluginConstructor<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
- usePlugin<K extends keyof R>(pluginId: K, config: z.infer<PluginOf<R[K]>["configSchema"]>): Promise<EveryPlugin<PluginOf<R[K]>>>;
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,EAAoC,cAAc,EAAU,MAAM,QAAQ,CAAC;AAClF,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAEX,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,qBAAa,aAAa,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB;IAItE,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IAJjB,OAAO,CAAC,WAAW,CAAgF;gBAG1F,OAAO,EAAE,cAAc,CAAC,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,EAC5D,QAAQ,EAAE,cAAc;IAGjC,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,gBAAgB;YAeV,UAAU;IAgBxB,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAUtF,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,IAAI,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAStH,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,EACjC,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACxC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,GAC7C,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAYvC,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,EAChC,QAAQ,EAAE,CAAC,EACX,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,GAC7C,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAoCvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAQzB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,EAC5B,QAAQ,EAAE,CAAC,EACX,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,GAC7C,OAAO,CAAC,IAAI,CAAC;CAwBhB;AAED,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,EAChF,MAAM,EAAE;IAAE,QAAQ,EAAE,cAAc,CAAC;IAAC,OAAO,CAAC,EAAE,aAAa,CAAC;IAAC,OAAO,CAAC,EAAE,cAAc,CAAA;CAAE,GACrF,aAAa,CAAC,CAAC,CAAC,CAQlB;AAED,YAAY,EACX,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,QAAQ,EACR,gBAAgB,EAChB,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"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"}
@@ -46,10 +46,11 @@ export class PluginRuntime {
46
46
  });
47
47
  return this.runPromise(effect);
48
48
  }
49
- instantiatePlugin(ctor) {
49
+ instantiatePlugin(pluginId, loadedPlugin) {
50
50
  const effect = Effect.gen(this, function* () {
51
51
  const pluginService = yield* PluginService;
52
- const result = yield* pluginService.instantiatePlugin(ctor);
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, PluginConstructor, PluginInstance, PluginRegistry } from "../../types";
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>(pluginConstructor: PluginConstructor<T>) => Effect.Effect<{
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, RegistryService | ModuleFederationService | SecretsService>;
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,iBAAiB,EACjB,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;;;;;;;4BA4BT,CAAC,SAAS,SAAS,qBACnB,iBAAiB,CAAC,CAAC,CAAC;;;;;;;;;2BAmCrB,CAAC,SAAS,SAAS,kBACrB,cAAc,CAAC,CAAC,CAAC,UACzB;YAAE,SAAS,EAAE,OAAO,CAAC;YAAC,OAAO,EAAE,OAAO,CAAA;SAAE;;;;;;;oBAwDvB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;;;;;;AAxIvD,qBAAa,mBAAoB,SAAQ,wBA+IvC;CACD"}
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: (pluginConstructor) => Effect.gen(function* () {
47
- const instance = yield* Effect.try(() => new pluginConstructor.ctor()).pipe(Effect.mapError((error) => toPluginRuntimeError(error, pluginConstructor.metadata.pluginId, undefined, "instantiate-plugin", false)));
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 !== pluginConstructor.metadata.pluginId) {
46
+ if (instance.id !== pluginId) {
50
47
  return yield* Effect.fail(new PluginRuntimeError({
51
- pluginId: pluginConstructor.metadata.pluginId,
48
+ pluginId,
52
49
  operation: "validate-plugin-id",
53
- cause: new Error(`Plugin ID mismatch: expected ${pluginConstructor.metadata.pluginId}, got ${instance.id}`),
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: pluginConstructor.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 finalConfig = yield* validate(plugin.configSchema, hydratedConfig, plugin.id, "config").pipe(Effect.mapError((validationError) => new PluginRuntimeError({
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(finalConfig).pipe(Effect.provideService(Scope.Scope, scope), Effect.mapError((error) => toPluginRuntimeError(error, plugin.id, undefined, "initialize-plugin", false)));
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: finalConfig,
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>(pluginConstructor: import("../..").PluginConstructor<T>) => Effect.Effect<{
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAYtE,iBAAiB,CAAC,SAAS,CAAC;;;;AATxD,qBAAa,aAAc,SAAQ,kBAyBjC;IACD,MAAM,CAAC,IAAI,GAAI,UAAU,cAAc,EAAE,SAAS,aAAa,8CAmB9D;CACD"}
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 { PluginConstructorWithBinding } from "../../plugin";
2
+ import type { LoadedPluginWithBinding } from "../../plugin";
3
3
  import { ModuleFederationService } from "../../runtime/services/module-federation.service";
4
- export type PluginMap = Record<string, PluginConstructorWithBinding<any, any, any, any>>;
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,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAE3F,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,4BAA4B,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEzF,eAAO,MAAM,sCAAsC,GAAI,WAAW,SAAS,uDAoCxE,CAAC"}
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, Router } from "@orpc/server";
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, PluginConstructorWithBinding } from "./plugin";
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
- * Plugin constructor with metadata.
95
- * Represents a loaded plugin class ready for instantiation.
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 PluginConstructor<T extends AnyPlugin = AnyPlugin> {
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: import("@orpc/server").RouterClient<RouterOf<T>, Record<never, never>>;
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
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
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,YAAY,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAEnF;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE;IAC5C,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;CACrD,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IACpB,CAAC,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,GACjD,IAAI,SAAS,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAC9C,CAAC,SAAS,iBAAiB,GAC3B,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,GACxB,KAAK,GACL,KAAK,GACL,KAAK,CAAC;AAEV;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AAE/D;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AAE1E;;;GAGG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,SAAS,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,QAAQ,CAAC,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEhJ;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAE5D;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC3D,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC7D,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAChE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAI7B,2CAA2C;IAC3C,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IACzC,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gCAAgC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC1D,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACjE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,yBAAiB,WAAW,CAAC;IAC3B;;;;;;;;;;OAUG;IACH,KAAY,KAAK,CACf,CAAC,SAAS,aAAa,CAAC,GAAG,CAAC,EAC5B,CAAC,SAAS,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,KAAK,IAC1D,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAChC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAC3B,KAAK,CAAC;CACX;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB;IAChF,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "every-plugin",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "exports": {