every-plugin 0.5.0 → 0.5.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/{chunk-zltIcp7o.cjs → _virtual/rolldown_runtime.cjs} +3 -18
- package/dist/{chunk-QQAxy9l9.mjs → _virtual/rolldown_runtime.mjs} +1 -1
- package/dist/build/rspack/dev-server-middleware.cjs +201 -0
- package/dist/build/rspack/dev-server-middleware.cjs.map +1 -0
- package/dist/build/rspack/dev-server-middleware.mjs +200 -0
- package/dist/build/rspack/dev-server-middleware.mjs.map +1 -0
- package/dist/build/rspack/index.cjs +2 -362
- package/dist/build/rspack/index.d.cts +2 -20
- package/dist/build/rspack/index.d.mts +2 -20
- package/dist/build/rspack/index.mjs +2 -360
- package/dist/build/rspack/module-federation.cjs +47 -0
- package/dist/build/rspack/module-federation.cjs.map +1 -0
- package/dist/build/rspack/module-federation.mjs +47 -0
- package/dist/build/rspack/module-federation.mjs.map +1 -0
- package/dist/build/rspack/plugin.cjs +90 -0
- package/dist/build/rspack/plugin.cjs.map +1 -0
- package/dist/build/rspack/plugin.d.cts +20 -0
- package/dist/build/rspack/plugin.d.cts.map +1 -0
- package/dist/build/rspack/plugin.d.mts +20 -0
- package/dist/build/rspack/plugin.d.mts.map +1 -0
- package/dist/build/rspack/plugin.mjs +89 -0
- package/dist/build/rspack/plugin.mjs.map +1 -0
- package/dist/build/rspack/utils.cjs +41 -0
- package/dist/build/rspack/utils.cjs.map +1 -0
- package/dist/build/rspack/utils.mjs +38 -0
- package/dist/build/rspack/utils.mjs.map +1 -0
- package/dist/errors.cjs +62 -3
- package/dist/errors.cjs.map +1 -0
- package/dist/errors.d.cts +75 -3
- package/dist/errors.d.cts.map +1 -0
- package/dist/errors.d.mts +75 -3
- package/dist/errors.d.mts.map +1 -0
- package/dist/errors.mjs +62 -3
- package/dist/errors.mjs.map +1 -0
- package/dist/index.cjs +8 -55
- package/dist/index.d.cts +6 -5
- package/dist/index.d.mts +6 -5
- package/dist/index.mjs +5 -51
- package/dist/orpc.cjs +1 -1
- package/dist/{package-DyTuSutr.cjs → package.cjs} +22 -7
- package/dist/package.cjs.map +1 -0
- package/dist/{package-CaRYwbRi.mjs → package.mjs} +22 -5
- package/dist/package.mjs.map +1 -0
- package/dist/plugin.cjs +48 -0
- package/dist/plugin.cjs.map +1 -0
- package/dist/plugin.d.cts +62 -0
- package/dist/plugin.d.cts.map +1 -0
- package/dist/plugin.d.mts +62 -0
- package/dist/plugin.d.mts.map +1 -0
- package/dist/plugin.mjs +47 -0
- package/dist/plugin.mjs.map +1 -0
- package/dist/runtime/errors.cjs +45 -0
- package/dist/runtime/errors.cjs.map +1 -0
- package/dist/runtime/errors.d.cts +27 -0
- package/dist/runtime/errors.d.cts.map +1 -0
- package/dist/runtime/errors.d.mts +27 -0
- package/dist/runtime/errors.d.mts.map +1 -0
- package/dist/runtime/errors.mjs +41 -0
- package/dist/runtime/errors.mjs.map +1 -0
- package/dist/runtime/index.cjs +157 -5
- package/dist/runtime/index.cjs.map +1 -0
- package/dist/runtime/index.d.cts +43 -5
- package/dist/runtime/index.d.cts.map +1 -0
- package/dist/runtime/index.d.mts +43 -5
- package/dist/runtime/index.d.mts.map +1 -0
- package/dist/runtime/index.mjs +155 -4
- package/dist/runtime/index.mjs.map +1 -0
- package/dist/runtime/services/module-federation.service.cjs +143 -0
- package/dist/runtime/services/module-federation.service.cjs.map +1 -0
- package/dist/runtime/services/module-federation.service.d.cts +15 -0
- package/dist/runtime/services/module-federation.service.d.cts.map +1 -0
- package/dist/runtime/services/module-federation.service.d.mts +15 -0
- package/dist/runtime/services/module-federation.service.d.mts.map +1 -0
- package/dist/runtime/services/module-federation.service.mjs +143 -0
- package/dist/runtime/services/module-federation.service.mjs.map +1 -0
- package/dist/runtime/services/normalize.cjs +22 -2
- package/dist/runtime/services/normalize.cjs.map +1 -0
- package/dist/runtime/services/normalize.d.cts +21 -2
- package/dist/runtime/services/normalize.d.cts.map +1 -0
- package/dist/runtime/services/normalize.d.mts +21 -2
- package/dist/runtime/services/normalize.d.mts.map +1 -0
- package/dist/runtime/services/normalize.mjs +21 -2
- package/dist/runtime/services/normalize.mjs.map +1 -0
- package/dist/runtime/services/plugin-lifecycle.service.cjs +33 -0
- package/dist/runtime/services/plugin-lifecycle.service.cjs.map +1 -0
- package/dist/runtime/services/plugin-lifecycle.service.d.cts +17 -0
- package/dist/runtime/services/plugin-lifecycle.service.d.cts.map +1 -0
- package/dist/runtime/services/plugin-lifecycle.service.d.mts +17 -0
- package/dist/runtime/services/plugin-lifecycle.service.d.mts.map +1 -0
- package/dist/runtime/services/plugin-lifecycle.service.mjs +32 -0
- package/dist/runtime/services/plugin-lifecycle.service.mjs.map +1 -0
- package/dist/runtime/services/plugin-loader.service.cjs +125 -0
- package/dist/runtime/services/plugin-loader.service.cjs.map +1 -0
- package/dist/runtime/services/plugin-loader.service.d.cts +54 -0
- package/dist/runtime/services/plugin-loader.service.d.cts.map +1 -0
- package/dist/runtime/services/plugin-loader.service.d.mts +54 -0
- package/dist/runtime/services/plugin-loader.service.d.mts.map +1 -0
- package/dist/runtime/services/plugin-loader.service.mjs +121 -0
- package/dist/runtime/services/plugin-loader.service.mjs.map +1 -0
- package/dist/runtime/services/plugin.service.cjs +33 -0
- package/dist/runtime/services/plugin.service.cjs.map +1 -0
- package/dist/runtime/services/plugin.service.d.cts +42 -0
- package/dist/runtime/services/plugin.service.d.cts.map +1 -0
- package/dist/runtime/services/plugin.service.d.mts +42 -0
- package/dist/runtime/services/plugin.service.d.mts.map +1 -0
- package/dist/runtime/services/plugin.service.mjs +32 -0
- package/dist/runtime/services/plugin.service.mjs.map +1 -0
- package/dist/runtime/services/secrets.service.cjs +50 -0
- package/dist/runtime/services/secrets.service.cjs.map +1 -0
- package/dist/runtime/services/secrets.service.d.cts +16 -0
- package/dist/runtime/services/secrets.service.d.cts.map +1 -0
- package/dist/runtime/services/secrets.service.d.mts +16 -0
- package/dist/runtime/services/secrets.service.d.mts.map +1 -0
- package/dist/runtime/services/secrets.service.mjs +48 -0
- package/dist/runtime/services/secrets.service.mjs.map +1 -0
- package/dist/runtime/validation.cjs +18 -0
- package/dist/runtime/validation.cjs.map +1 -0
- package/dist/runtime/validation.mjs +17 -0
- package/dist/runtime/validation.mjs.map +1 -0
- package/dist/testing/index.cjs +2 -4
- package/dist/testing/index.cjs.map +1 -1
- package/dist/testing/index.d.cts +4 -4
- package/dist/testing/index.d.mts +4 -4
- package/dist/testing/index.mjs +1 -3
- package/dist/testing/index.mjs.map +1 -1
- package/dist/types.cjs +0 -0
- package/dist/types.d.cts +261 -0
- package/dist/types.d.cts.map +1 -0
- package/dist/types.d.mts +261 -0
- package/dist/types.d.mts.map +1 -0
- package/dist/types.mjs +1 -0
- package/dist/zod-core.cjs +9 -0
- package/dist/zod-core.d.cts +1 -0
- package/dist/zod-core.d.mts +1 -0
- package/dist/zod-core.mjs +3 -0
- package/dist/zod.cjs +13 -1
- package/dist/zod.cjs.map +1 -0
- package/dist/zod.d.cts +8 -2
- package/dist/zod.d.cts.map +1 -0
- package/dist/zod.d.mts +8 -2
- package/dist/zod.d.mts.map +1 -0
- package/dist/zod.mjs +9 -2
- package/dist/zod.mjs.map +1 -0
- package/package.json +17 -2
- package/dist/build/rspack/index.cjs.map +0 -1
- package/dist/build/rspack/index.d.cts.map +0 -1
- package/dist/build/rspack/index.d.mts.map +0 -1
- package/dist/build/rspack/index.mjs.map +0 -1
- package/dist/errors-9sNpYLv5.d.mts +0 -75
- package/dist/errors-9sNpYLv5.d.mts.map +0 -1
- package/dist/errors-CVnoPl9v.cjs +0 -68
- package/dist/errors-CVnoPl9v.cjs.map +0 -1
- package/dist/errors-D7keKf7a.mjs +0 -63
- package/dist/errors-D7keKf7a.mjs.map +0 -1
- package/dist/errors-DKPPPYYT.d.cts +0 -75
- package/dist/errors-DKPPPYYT.d.cts.map +0 -1
- package/dist/fetch-8DauUFDh.mjs +0 -335
- package/dist/fetch-8DauUFDh.mjs.map +0 -1
- package/dist/fetch-CrBvwsZ4.cjs +0 -336
- package/dist/fetch-CrBvwsZ4.cjs.map +0 -1
- package/dist/index-Bu2wtZrA.d.mts +0 -463
- package/dist/index-Bu2wtZrA.d.mts.map +0 -1
- package/dist/index-DtTqwV4f.d.cts +0 -462
- package/dist/index-DtTqwV4f.d.cts.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/normalize-BW7kk8Lk.d.cts +0 -21
- package/dist/normalize-BW7kk8Lk.d.cts.map +0 -1
- package/dist/normalize-D4Qh0wVk.cjs +0 -28
- package/dist/normalize-D4Qh0wVk.cjs.map +0 -1
- package/dist/normalize-D7nae0Hn.mjs +0 -22
- package/dist/normalize-D7nae0Hn.mjs.map +0 -1
- package/dist/normalize-eB_j86fm.d.mts +0 -21
- package/dist/normalize-eB_j86fm.d.mts.map +0 -1
- package/dist/package-CaRYwbRi.mjs.map +0 -1
- package/dist/package-DyTuSutr.cjs.map +0 -1
- package/dist/plugins-C6MGKdD-.mjs +0 -790
- package/dist/plugins-C6MGKdD-.mjs.map +0 -1
- package/dist/plugins-DNaNtkG7.cjs +0 -791
- package/dist/plugins-DNaNtkG7.cjs.map +0 -1
- package/dist/runtime-BNcFgWDG.cjs +0 -558
- package/dist/runtime-BNcFgWDG.cjs.map +0 -1
- package/dist/runtime-CAWcnrAk.mjs +0 -547
- package/dist/runtime-CAWcnrAk.mjs.map +0 -1
- package/dist/standard-CkH8zNkx.mjs +0 -584
- package/dist/standard-CkH8zNkx.mjs.map +0 -1
- package/dist/standard-v75BC6Z5.cjs +0 -685
- package/dist/standard-v75BC6Z5.cjs.map +0 -1
- package/dist/zod-A7Pti5IV.d.cts +0 -4
- package/dist/zod-A7Pti5IV.d.cts.map +0 -1
- package/dist/zod-BVo51kgJ.mjs +0 -10
- package/dist/zod-BVo51kgJ.mjs.map +0 -1
- package/dist/zod-DYghWCz1.cjs +0 -14
- package/dist/zod-DYghWCz1.cjs.map +0 -1
- package/dist/zod-Zw8dlP3j.d.mts +0 -4
- package/dist/zod-Zw8dlP3j.d.mts.map +0 -1
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_errors = require('../errors.cjs');
|
|
3
|
+
let effect = require("effect");
|
|
4
|
+
let zod = require("zod");
|
|
5
|
+
|
|
6
|
+
//#region src/runtime/services/secrets.service.ts
|
|
7
|
+
const configSchema = zod.z.object({ secrets: zod.z.record(zod.z.string(), zod.z.unknown()) }).loose();
|
|
8
|
+
var SecretsConfigTag = class extends effect.Context.Tag("SecretsConfig")() {};
|
|
9
|
+
var SecretsService = class extends effect.Effect.Service()("SecretsService", { effect: effect.Effect.gen(function* () {
|
|
10
|
+
const secrets = yield* SecretsConfigTag;
|
|
11
|
+
const hydrateValue = (value) => {
|
|
12
|
+
if (typeof value === "string") {
|
|
13
|
+
let result = value;
|
|
14
|
+
for (const [key, secretValue] of Object.entries(secrets)) {
|
|
15
|
+
const pattern = new RegExp(`{{${key}}}`, "g");
|
|
16
|
+
result = result.replace(pattern, String(secretValue));
|
|
17
|
+
}
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
if (Array.isArray(value)) return value.map(hydrateValue);
|
|
21
|
+
if (value && typeof value === "object") {
|
|
22
|
+
if (value.constructor === Object || value.constructor === void 0) {
|
|
23
|
+
const hydrated$1 = {};
|
|
24
|
+
for (const [key, val] of Object.entries(value)) hydrated$1[key] = hydrateValue(val);
|
|
25
|
+
return hydrated$1;
|
|
26
|
+
}
|
|
27
|
+
const hydrated = Object.create(Object.getPrototypeOf(value));
|
|
28
|
+
for (const [key, val] of Object.entries(value)) hydrated[key] = hydrateValue(val);
|
|
29
|
+
return hydrated;
|
|
30
|
+
}
|
|
31
|
+
return value;
|
|
32
|
+
};
|
|
33
|
+
return { hydrateSecrets: (config) => effect.Effect.gen(function* () {
|
|
34
|
+
const parseResult = configSchema.parse(config);
|
|
35
|
+
try {
|
|
36
|
+
return hydrateValue(parseResult);
|
|
37
|
+
} catch (error) {
|
|
38
|
+
return yield* effect.Effect.fail(new require_errors.PluginRuntimeError({
|
|
39
|
+
operation: "hydrate-secrets",
|
|
40
|
+
cause: error instanceof Error ? error : new Error(String(error)),
|
|
41
|
+
retryable: false
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
}) };
|
|
45
|
+
}) }) {};
|
|
46
|
+
|
|
47
|
+
//#endregion
|
|
48
|
+
exports.SecretsConfigTag = SecretsConfigTag;
|
|
49
|
+
exports.SecretsService = SecretsService;
|
|
50
|
+
//# sourceMappingURL=secrets.service.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.service.cjs","names":["z","Context","Effect","hydrated: Record<string, unknown>","hydrated","PluginRuntimeError"],"sources":["../../../src/runtime/services/secrets.service.ts"],"sourcesContent":["import { Context, Effect } from \"effect\";\nimport { z } from \"zod\";\nimport type { SecretsConfig } from \"../../types\";\nimport { PluginRuntimeError } from \"../errors\";\n\nconst configSchema = z.object({\n\tsecrets: z.record(z.string(), z.unknown())\n}).loose();\n\nexport class SecretsConfigTag extends Context.Tag(\"SecretsConfig\")<\n\tSecretsConfigTag,\n\tSecretsConfig\n>() { }\n\nexport class SecretsService extends Effect.Service<SecretsService>()(\"SecretsService\", {\n\teffect: Effect.gen(function* () {\n\t\tconst secrets = yield* SecretsConfigTag;\n\n\t\tconst hydrateValue = (value: unknown): unknown => {\n\t\t\tif (typeof value === 'string') {\n\t\t\t\tlet result = value;\n\t\t\t\tfor (const [key, secretValue] of Object.entries(secrets)) {\n\t\t\t\t\tconst pattern = new RegExp(`{{${key}}}`, \"g\");\n\t\t\t\t\tresult = result.replace(pattern, String(secretValue));\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\treturn value.map(hydrateValue);\n\t\t\t}\n\n\t\t\tif (value && typeof value === 'object') {\n\t\t\t\tconst isPlainObject = value.constructor === Object || value.constructor === undefined;\n\t\t\t\t\n\t\t\t\tif (isPlainObject) {\n\t\t\t\t\tconst hydrated: Record<string, unknown> = {};\n\t\t\t\t\tfor (const [key, val] of Object.entries(value)) {\n\t\t\t\t\t\thydrated[key] = hydrateValue(val);\n\t\t\t\t\t}\n\t\t\t\t\treturn hydrated;\n\t\t\t\t}\n\n\t\t\t\tconst hydrated = Object.create(Object.getPrototypeOf(value));\n\t\t\t\tfor (const [key, val] of Object.entries(value)) {\n\t\t\t\t\thydrated[key] = hydrateValue(val);\n\t\t\t\t}\n\t\t\t\treturn hydrated;\n\t\t\t}\n\n\t\t\treturn value;\n\t\t};\n\n\t\treturn {\n\t\t\thydrateSecrets: <T>(config: T) =>\n\t\t\t\tEffect.gen(function* () {\n\t\t\t\t\tconst parseResult = configSchema.parse(config);\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn hydrateValue(parseResult) as T;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\t\t\tnew PluginRuntimeError({\n\t\t\t\t\t\t\t\toperation: \"hydrate-secrets\",\n\t\t\t\t\t\t\t\tcause:\n\t\t\t\t\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\t\t\tretryable: false,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t};\n\t}),\n}) { }\n"],"mappings":";;;;;;AAKA,MAAM,eAAeA,MAAE,OAAO,EAC7B,SAASA,MAAE,OAAOA,MAAE,QAAQ,EAAEA,MAAE,SAAS,CAAC,EAC1C,CAAC,CAAC,OAAO;AAEV,IAAa,mBAAb,cAAsCC,eAAQ,IAAI,gBAAgB,EAG/D,CAAC;AAEJ,IAAa,iBAAb,cAAoCC,cAAO,SAAyB,CAAC,kBAAkB,EACtF,QAAQA,cAAO,IAAI,aAAa;CAC/B,MAAM,UAAU,OAAO;CAEvB,MAAM,gBAAgB,UAA4B;AACjD,MAAI,OAAO,UAAU,UAAU;GAC9B,IAAI,SAAS;AACb,QAAK,MAAM,CAAC,KAAK,gBAAgB,OAAO,QAAQ,QAAQ,EAAE;IACzD,MAAM,UAAU,IAAI,OAAO,KAAK,IAAI,KAAK,IAAI;AAC7C,aAAS,OAAO,QAAQ,SAAS,OAAO,YAAY,CAAC;;AAEtD,UAAO;;AAGR,MAAI,MAAM,QAAQ,MAAM,CACvB,QAAO,MAAM,IAAI,aAAa;AAG/B,MAAI,SAAS,OAAO,UAAU,UAAU;AAGvC,OAFsB,MAAM,gBAAgB,UAAU,MAAM,gBAAgB,QAEzD;IAClB,MAAMC,aAAoC,EAAE;AAC5C,SAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,MAAM,CAC7C,YAAS,OAAO,aAAa,IAAI;AAElC,WAAOC;;GAGR,MAAM,WAAW,OAAO,OAAO,OAAO,eAAe,MAAM,CAAC;AAC5D,QAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,MAAM,CAC7C,UAAS,OAAO,aAAa,IAAI;AAElC,UAAO;;AAGR,SAAO;;AAGR,QAAO,EACN,iBAAoB,WACnBF,cAAO,IAAI,aAAa;EACvB,MAAM,cAAc,aAAa,MAAM,OAAO;AAC9C,MAAI;AACH,UAAO,aAAa,YAAY;WACxB,OAAO;AACf,UAAO,OAAOA,cAAO,KACpB,IAAIG,kCAAmB;IACtB,WAAW;IACX,OACC,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,MAAM,CAAC;IAC1D,WAAW;IACX,CAAC,CACF;;GAED,EACH;EACA,EACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SecretsConfig } from "../../types.cjs";
|
|
2
|
+
import { PluginRuntimeError } from "../errors.cjs";
|
|
3
|
+
import { Context, Effect } from "effect";
|
|
4
|
+
|
|
5
|
+
//#region src/runtime/services/secrets.service.d.ts
|
|
6
|
+
declare const SecretsConfigTag_base: Context.TagClass<SecretsConfigTag, "SecretsConfig", SecretsConfig>;
|
|
7
|
+
declare class SecretsConfigTag extends SecretsConfigTag_base {}
|
|
8
|
+
declare const SecretsService_base: Effect.Service.Class<SecretsService, "SecretsService", {
|
|
9
|
+
readonly effect: Effect.Effect<{
|
|
10
|
+
hydrateSecrets: <T>(config: T) => Effect.Effect<T, PluginRuntimeError, never>;
|
|
11
|
+
}, never, SecretsConfigTag>;
|
|
12
|
+
}>;
|
|
13
|
+
declare class SecretsService extends SecretsService_base {}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { SecretsService };
|
|
16
|
+
//# sourceMappingURL=secrets.service.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.service.d.cts","names":[],"sources":["../../../src/runtime/services/secrets.service.ts"],"sourcesContent":[],"mappings":";;;;;cAG+C;cAMlC,gBAAA,SAAyB,qBAAA;cAG/B;;gCA0CwB,MAAC,MAAA,CAAA,OAAA,GAAA;;AA7ChC,CAAA,CAAA;AAGO,cAEM,cAAA,SAAuB,mBAAA,CAF7B"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SecretsConfig } from "../../types.mjs";
|
|
2
|
+
import { PluginRuntimeError } from "../errors.mjs";
|
|
3
|
+
import { Context, Effect } from "effect";
|
|
4
|
+
|
|
5
|
+
//#region src/runtime/services/secrets.service.d.ts
|
|
6
|
+
declare const SecretsConfigTag_base: Context.TagClass<SecretsConfigTag, "SecretsConfig", SecretsConfig>;
|
|
7
|
+
declare class SecretsConfigTag extends SecretsConfigTag_base {}
|
|
8
|
+
declare const SecretsService_base: Effect.Service.Class<SecretsService, "SecretsService", {
|
|
9
|
+
readonly effect: Effect.Effect<{
|
|
10
|
+
hydrateSecrets: <T>(config: T) => Effect.Effect<T, PluginRuntimeError, never>;
|
|
11
|
+
}, never, SecretsConfigTag>;
|
|
12
|
+
}>;
|
|
13
|
+
declare class SecretsService extends SecretsService_base {}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { SecretsService };
|
|
16
|
+
//# sourceMappingURL=secrets.service.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.service.d.mts","names":[],"sources":["../../../src/runtime/services/secrets.service.ts"],"sourcesContent":[],"mappings":";;;;;cAG+C;cAMlC,gBAAA,SAAyB,qBAAA;cAG/B;;gCA0CwB,MAAC,MAAA,CAAA,OAAA,GAAA;;AA7ChC,CAAA,CAAA;AAGO,cAEM,cAAA,SAAuB,mBAAA,CAF7B"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { PluginRuntimeError } from "../errors.mjs";
|
|
2
|
+
import { Context, Effect } from "effect";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
|
|
5
|
+
//#region src/runtime/services/secrets.service.ts
|
|
6
|
+
const configSchema = z.object({ secrets: z.record(z.string(), z.unknown()) }).loose();
|
|
7
|
+
var SecretsConfigTag = class extends Context.Tag("SecretsConfig")() {};
|
|
8
|
+
var SecretsService = class extends Effect.Service()("SecretsService", { effect: Effect.gen(function* () {
|
|
9
|
+
const secrets = yield* SecretsConfigTag;
|
|
10
|
+
const hydrateValue = (value) => {
|
|
11
|
+
if (typeof value === "string") {
|
|
12
|
+
let result = value;
|
|
13
|
+
for (const [key, secretValue] of Object.entries(secrets)) {
|
|
14
|
+
const pattern = new RegExp(`{{${key}}}`, "g");
|
|
15
|
+
result = result.replace(pattern, String(secretValue));
|
|
16
|
+
}
|
|
17
|
+
return result;
|
|
18
|
+
}
|
|
19
|
+
if (Array.isArray(value)) return value.map(hydrateValue);
|
|
20
|
+
if (value && typeof value === "object") {
|
|
21
|
+
if (value.constructor === Object || value.constructor === void 0) {
|
|
22
|
+
const hydrated$1 = {};
|
|
23
|
+
for (const [key, val] of Object.entries(value)) hydrated$1[key] = hydrateValue(val);
|
|
24
|
+
return hydrated$1;
|
|
25
|
+
}
|
|
26
|
+
const hydrated = Object.create(Object.getPrototypeOf(value));
|
|
27
|
+
for (const [key, val] of Object.entries(value)) hydrated[key] = hydrateValue(val);
|
|
28
|
+
return hydrated;
|
|
29
|
+
}
|
|
30
|
+
return value;
|
|
31
|
+
};
|
|
32
|
+
return { hydrateSecrets: (config) => Effect.gen(function* () {
|
|
33
|
+
const parseResult = configSchema.parse(config);
|
|
34
|
+
try {
|
|
35
|
+
return hydrateValue(parseResult);
|
|
36
|
+
} catch (error) {
|
|
37
|
+
return yield* Effect.fail(new PluginRuntimeError({
|
|
38
|
+
operation: "hydrate-secrets",
|
|
39
|
+
cause: error instanceof Error ? error : new Error(String(error)),
|
|
40
|
+
retryable: false
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
}) };
|
|
44
|
+
}) }) {};
|
|
45
|
+
|
|
46
|
+
//#endregion
|
|
47
|
+
export { SecretsConfigTag, SecretsService };
|
|
48
|
+
//# sourceMappingURL=secrets.service.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.service.mjs","names":["hydrated: Record<string, unknown>","hydrated"],"sources":["../../../src/runtime/services/secrets.service.ts"],"sourcesContent":["import { Context, Effect } from \"effect\";\nimport { z } from \"zod\";\nimport type { SecretsConfig } from \"../../types\";\nimport { PluginRuntimeError } from \"../errors\";\n\nconst configSchema = z.object({\n\tsecrets: z.record(z.string(), z.unknown())\n}).loose();\n\nexport class SecretsConfigTag extends Context.Tag(\"SecretsConfig\")<\n\tSecretsConfigTag,\n\tSecretsConfig\n>() { }\n\nexport class SecretsService extends Effect.Service<SecretsService>()(\"SecretsService\", {\n\teffect: Effect.gen(function* () {\n\t\tconst secrets = yield* SecretsConfigTag;\n\n\t\tconst hydrateValue = (value: unknown): unknown => {\n\t\t\tif (typeof value === 'string') {\n\t\t\t\tlet result = value;\n\t\t\t\tfor (const [key, secretValue] of Object.entries(secrets)) {\n\t\t\t\t\tconst pattern = new RegExp(`{{${key}}}`, \"g\");\n\t\t\t\t\tresult = result.replace(pattern, String(secretValue));\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\treturn value.map(hydrateValue);\n\t\t\t}\n\n\t\t\tif (value && typeof value === 'object') {\n\t\t\t\tconst isPlainObject = value.constructor === Object || value.constructor === undefined;\n\t\t\t\t\n\t\t\t\tif (isPlainObject) {\n\t\t\t\t\tconst hydrated: Record<string, unknown> = {};\n\t\t\t\t\tfor (const [key, val] of Object.entries(value)) {\n\t\t\t\t\t\thydrated[key] = hydrateValue(val);\n\t\t\t\t\t}\n\t\t\t\t\treturn hydrated;\n\t\t\t\t}\n\n\t\t\t\tconst hydrated = Object.create(Object.getPrototypeOf(value));\n\t\t\t\tfor (const [key, val] of Object.entries(value)) {\n\t\t\t\t\thydrated[key] = hydrateValue(val);\n\t\t\t\t}\n\t\t\t\treturn hydrated;\n\t\t\t}\n\n\t\t\treturn value;\n\t\t};\n\n\t\treturn {\n\t\t\thydrateSecrets: <T>(config: T) =>\n\t\t\t\tEffect.gen(function* () {\n\t\t\t\t\tconst parseResult = configSchema.parse(config);\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn hydrateValue(parseResult) as T;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\t\t\tnew PluginRuntimeError({\n\t\t\t\t\t\t\t\toperation: \"hydrate-secrets\",\n\t\t\t\t\t\t\t\tcause:\n\t\t\t\t\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\t\t\tretryable: false,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t};\n\t}),\n}) { }\n"],"mappings":";;;;;AAKA,MAAM,eAAe,EAAE,OAAO,EAC7B,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,EAC1C,CAAC,CAAC,OAAO;AAEV,IAAa,mBAAb,cAAsC,QAAQ,IAAI,gBAAgB,EAG/D,CAAC;AAEJ,IAAa,iBAAb,cAAoC,OAAO,SAAyB,CAAC,kBAAkB,EACtF,QAAQ,OAAO,IAAI,aAAa;CAC/B,MAAM,UAAU,OAAO;CAEvB,MAAM,gBAAgB,UAA4B;AACjD,MAAI,OAAO,UAAU,UAAU;GAC9B,IAAI,SAAS;AACb,QAAK,MAAM,CAAC,KAAK,gBAAgB,OAAO,QAAQ,QAAQ,EAAE;IACzD,MAAM,UAAU,IAAI,OAAO,KAAK,IAAI,KAAK,IAAI;AAC7C,aAAS,OAAO,QAAQ,SAAS,OAAO,YAAY,CAAC;;AAEtD,UAAO;;AAGR,MAAI,MAAM,QAAQ,MAAM,CACvB,QAAO,MAAM,IAAI,aAAa;AAG/B,MAAI,SAAS,OAAO,UAAU,UAAU;AAGvC,OAFsB,MAAM,gBAAgB,UAAU,MAAM,gBAAgB,QAEzD;IAClB,MAAMA,aAAoC,EAAE;AAC5C,SAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,MAAM,CAC7C,YAAS,OAAO,aAAa,IAAI;AAElC,WAAOC;;GAGR,MAAM,WAAW,OAAO,OAAO,OAAO,eAAe,MAAM,CAAC;AAC5D,QAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,MAAM,CAC7C,UAAS,OAAO,aAAa,IAAI;AAElC,UAAO;;AAGR,SAAO;;AAGR,QAAO,EACN,iBAAoB,WACnB,OAAO,IAAI,aAAa;EACvB,MAAM,cAAc,aAAa,MAAM,OAAO;AAC9C,MAAI;AACH,UAAO,aAAa,YAAY;WACxB,OAAO;AACf,UAAO,OAAO,OAAO,KACpB,IAAI,mBAAmB;IACtB,WAAW;IACX,OACC,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,MAAM,CAAC;IAC1D,WAAW;IACX,CAAC,CACF;;GAED,EACH;EACA,EACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_errors = require('./errors.cjs');
|
|
3
|
+
let effect = require("effect");
|
|
4
|
+
|
|
5
|
+
//#region src/runtime/validation.ts
|
|
6
|
+
const validate = (schema, data, pluginId, stage) => effect.Effect.gen(function* () {
|
|
7
|
+
const result = schema.safeParse(data);
|
|
8
|
+
if (result.success) return result.data;
|
|
9
|
+
return yield* effect.Effect.fail(new require_errors.ValidationError({
|
|
10
|
+
pluginId,
|
|
11
|
+
stage,
|
|
12
|
+
zodError: result.error
|
|
13
|
+
}));
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
//#endregion
|
|
17
|
+
exports.validate = validate;
|
|
18
|
+
//# sourceMappingURL=validation.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.cjs","names":["Effect","ValidationError"],"sources":["../../src/runtime/validation.ts"],"sourcesContent":["import { Effect } from \"effect\";\nimport type { z } from \"zod\";\nimport { ValidationError } from \"./errors\";\n\nexport const validate = <T>(\n\tschema: z.ZodSchema<T>,\n\tdata: unknown,\n\tpluginId: string,\n\tstage: \"config\" | \"input\" | \"output\" | \"state\",\n): Effect.Effect<T, ValidationError> =>\n\tEffect.gen(function* () {\n\t\tconst result = schema.safeParse(data);\n\t\tif (result.success) {\n\t\t\treturn result.data;\n\t\t}\n\t\treturn yield* Effect.fail(\n\t\t\tnew ValidationError({\n\t\t\t\tpluginId,\n\t\t\t\tstage,\n\t\t\t\tzodError: result.error,\n\t\t\t}),\n\t\t);\n\t});\n"],"mappings":";;;;;AAIA,MAAa,YACZ,QACA,MACA,UACA,UAEAA,cAAO,IAAI,aAAa;CACvB,MAAM,SAAS,OAAO,UAAU,KAAK;AACrC,KAAI,OAAO,QACV,QAAO,OAAO;AAEf,QAAO,OAAOA,cAAO,KACpB,IAAIC,+BAAgB;EACnB;EACA;EACA,UAAU,OAAO;EACjB,CAAC,CACF;EACA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ValidationError } from "./errors.mjs";
|
|
2
|
+
import { Effect } from "effect";
|
|
3
|
+
|
|
4
|
+
//#region src/runtime/validation.ts
|
|
5
|
+
const validate = (schema, data, pluginId, stage) => Effect.gen(function* () {
|
|
6
|
+
const result = schema.safeParse(data);
|
|
7
|
+
if (result.success) return result.data;
|
|
8
|
+
return yield* Effect.fail(new ValidationError({
|
|
9
|
+
pluginId,
|
|
10
|
+
stage,
|
|
11
|
+
zodError: result.error
|
|
12
|
+
}));
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { validate };
|
|
17
|
+
//# sourceMappingURL=validation.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.mjs","names":[],"sources":["../../src/runtime/validation.ts"],"sourcesContent":["import { Effect } from \"effect\";\nimport type { z } from \"zod\";\nimport { ValidationError } from \"./errors\";\n\nexport const validate = <T>(\n\tschema: z.ZodSchema<T>,\n\tdata: unknown,\n\tpluginId: string,\n\tstage: \"config\" | \"input\" | \"output\" | \"state\",\n): Effect.Effect<T, ValidationError> =>\n\tEffect.gen(function* () {\n\t\tconst result = schema.safeParse(data);\n\t\tif (result.success) {\n\t\t\treturn result.data;\n\t\t}\n\t\treturn yield* Effect.fail(\n\t\t\tnew ValidationError({\n\t\t\t\tpluginId,\n\t\t\t\tstage,\n\t\t\t\tzodError: result.error,\n\t\t\t}),\n\t\t);\n\t});\n"],"mappings":";;;;AAIA,MAAa,YACZ,QACA,MACA,UACA,UAEA,OAAO,IAAI,aAAa;CACvB,MAAM,SAAS,OAAO,UAAU,KAAK;AACrC,KAAI,OAAO,QACV,QAAO,OAAO;AAEf,QAAO,OAAO,OAAO,KACpB,IAAI,gBAAgB;EACnB;EACA;EACA,UAAU,OAAO;EACjB,CAAC,CACF;EACA"}
|
package/dist/testing/index.cjs
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
const
|
|
2
|
-
require('../normalize-D4Qh0wVk.cjs');
|
|
3
|
-
require('../package-DyTuSutr.cjs');
|
|
1
|
+
const require_runtime_index = require('../runtime/index.cjs');
|
|
4
2
|
|
|
5
3
|
//#region src/testing/index.ts
|
|
6
4
|
/**
|
|
@@ -41,7 +39,7 @@ function convertPluginMapToRegistry(oldRegistry, pluginMap) {
|
|
|
41
39
|
* ```
|
|
42
40
|
*/
|
|
43
41
|
function createLocalPluginRuntime(config, pluginMap) {
|
|
44
|
-
return
|
|
42
|
+
return require_runtime_index.createPluginRuntime({
|
|
45
43
|
registry: convertPluginMapToRegistry(config.registry, pluginMap),
|
|
46
44
|
secrets: config.secrets,
|
|
47
45
|
options: config.options
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["registry: Record<string, PluginRegistryEntry>","createPluginRuntime"],"sources":["../../src/testing/index.ts"],"sourcesContent":["import type { AnyPluginConstructor, InferRegistryFromEntries, PluginRegistryEntry, PluginRuntimeConfig } from \"../types\";\nimport { createPluginRuntime } from \"../runtime\";\nimport type { LoadedPluginWithBinding } from \"../plugin\";\n\nexport type PluginMap = Record<string, LoadedPluginWithBinding<any, any, any, any>>;\n\n/**\n * Simplified type inference for local plugin maps.\n * Just use the constructor types directly.\n *\n * @example\n * ```ts\n * const pluginMap = { \"my-plugin\": MyPlugin } as const;\n * type MyBindings = InferBindingsFromMap<typeof pluginMap>;\n * ```\n */\nexport type InferBindingsFromMap<T extends PluginMap> = {\n\t[K in keyof T]: T[K]\n};\n\n/**\n * Converts old pluginMap format to new registry format\n */\nfunction convertPluginMapToRegistry<T extends PluginMap>(\n\toldRegistry: Record<string, { remoteUrl: string; version?: string; description?: string }>,\n\tpluginMap: T\n): Record<keyof T, PluginRegistryEntry> {\n\tconst registry: Record<string, PluginRegistryEntry> = {};\n\t\n\tfor (const [pluginId, ctor] of Object.entries(pluginMap)) {\n\t\tconst oldEntry = oldRegistry[pluginId];\n\t\tregistry[pluginId] = {\n\t\t\tmodule: ctor as AnyPluginConstructor,\n\t\t\tremote: oldEntry?.remoteUrl,\n\t\t\tversion: oldEntry?.version,\n\t\t\tdescription: oldEntry?.description,\n\t\t};\n\t}\n\t\n\treturn registry as Record<keyof T, PluginRegistryEntry>;\n}\n\n/**\n * Creates a plugin runtime for locally available plugins (non-remote).\n * Automatically infers type bindings from the plugin map, eliminating\n * the need for manual RegistryBindings definitions.\n *\n * @deprecated Use `createPluginRuntime` with module entries directly instead.\n * @example\n * ```ts\n * // Old API (deprecated)\n * const runtime = createLocalPluginRuntime(\n * { registry: { \"my-plugin\": { remoteUrl: \"...\" } }, secrets },\n * { \"my-plugin\": MyPlugin }\n * );\n * \n * // New API (recommended)\n * const runtime = createPluginRuntime({\n * registry: { \"my-plugin\": { module: MyPlugin } },\n * secrets\n * });\n * ```\n */\nexport function createLocalPluginRuntime<TMap extends PluginMap>(\n\tconfig: {\n\t\tregistry: Record<string, { remoteUrl: string; version?: string; description?: string }>;\n\t\tsecrets?: Record<string, string>;\n\t\toptions?: any;\n\t},\n\tpluginMap: TMap\n) {\n\tconst newRegistry = convertPluginMapToRegistry(config.registry, pluginMap);\n\t\n\treturn createPluginRuntime({\n\t\tregistry: newRegistry,\n\t\tsecrets: config.secrets,\n\t\toptions: config.options,\n\t});\n}\n\n/**\n * @deprecated Use `createLocalPluginRuntime` or `createPluginRuntime` instead.\n */\nexport const createTestPluginRuntime = createLocalPluginRuntime;\n\nexport type { EveryPlugin, PluginRegistry, RegisteredPlugins } from \"../types\";\nexport type { PluginRuntimeConfig };\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["registry: Record<string, PluginRegistryEntry>","createPluginRuntime"],"sources":["../../src/testing/index.ts"],"sourcesContent":["import type { AnyPluginConstructor, InferRegistryFromEntries, PluginRegistryEntry, PluginRuntimeConfig } from \"../types\";\nimport { createPluginRuntime } from \"../runtime\";\nimport type { LoadedPluginWithBinding } from \"../plugin\";\n\nexport type PluginMap = Record<string, LoadedPluginWithBinding<any, any, any, any>>;\n\n/**\n * Simplified type inference for local plugin maps.\n * Just use the constructor types directly.\n *\n * @example\n * ```ts\n * const pluginMap = { \"my-plugin\": MyPlugin } as const;\n * type MyBindings = InferBindingsFromMap<typeof pluginMap>;\n * ```\n */\nexport type InferBindingsFromMap<T extends PluginMap> = {\n\t[K in keyof T]: T[K]\n};\n\n/**\n * Converts old pluginMap format to new registry format\n */\nfunction convertPluginMapToRegistry<T extends PluginMap>(\n\toldRegistry: Record<string, { remoteUrl: string; version?: string; description?: string }>,\n\tpluginMap: T\n): Record<keyof T, PluginRegistryEntry> {\n\tconst registry: Record<string, PluginRegistryEntry> = {};\n\t\n\tfor (const [pluginId, ctor] of Object.entries(pluginMap)) {\n\t\tconst oldEntry = oldRegistry[pluginId];\n\t\tregistry[pluginId] = {\n\t\t\tmodule: ctor as AnyPluginConstructor,\n\t\t\tremote: oldEntry?.remoteUrl,\n\t\t\tversion: oldEntry?.version,\n\t\t\tdescription: oldEntry?.description,\n\t\t};\n\t}\n\t\n\treturn registry as Record<keyof T, PluginRegistryEntry>;\n}\n\n/**\n * Creates a plugin runtime for locally available plugins (non-remote).\n * Automatically infers type bindings from the plugin map, eliminating\n * the need for manual RegistryBindings definitions.\n *\n * @deprecated Use `createPluginRuntime` with module entries directly instead.\n * @example\n * ```ts\n * // Old API (deprecated)\n * const runtime = createLocalPluginRuntime(\n * { registry: { \"my-plugin\": { remoteUrl: \"...\" } }, secrets },\n * { \"my-plugin\": MyPlugin }\n * );\n * \n * // New API (recommended)\n * const runtime = createPluginRuntime({\n * registry: { \"my-plugin\": { module: MyPlugin } },\n * secrets\n * });\n * ```\n */\nexport function createLocalPluginRuntime<TMap extends PluginMap>(\n\tconfig: {\n\t\tregistry: Record<string, { remoteUrl: string; version?: string; description?: string }>;\n\t\tsecrets?: Record<string, string>;\n\t\toptions?: any;\n\t},\n\tpluginMap: TMap\n) {\n\tconst newRegistry = convertPluginMapToRegistry(config.registry, pluginMap);\n\t\n\treturn createPluginRuntime({\n\t\tregistry: newRegistry,\n\t\tsecrets: config.secrets,\n\t\toptions: config.options,\n\t});\n}\n\n/**\n * @deprecated Use `createLocalPluginRuntime` or `createPluginRuntime` instead.\n */\nexport const createTestPluginRuntime = createLocalPluginRuntime;\n\nexport type { EveryPlugin, PluginRegistry, RegisteredPlugins } from \"../types\";\nexport type { PluginRuntimeConfig };\n"],"mappings":";;;;;;AAuBA,SAAS,2BACR,aACA,WACuC;CACvC,MAAMA,WAAgD,EAAE;AAExD,MAAK,MAAM,CAAC,UAAU,SAAS,OAAO,QAAQ,UAAU,EAAE;EACzD,MAAM,WAAW,YAAY;AAC7B,WAAS,YAAY;GACpB,QAAQ;GACR,QAAQ,UAAU;GAClB,SAAS,UAAU;GACnB,aAAa,UAAU;GACvB;;AAGF,QAAO;;;;;;;;;;;;;;;;;;;;;;;AAwBR,SAAgB,yBACf,QAKA,WACC;AAGD,QAAOC,0CAAoB;EAC1B,UAHmB,2BAA2B,OAAO,UAAU,UAAU;EAIzE,SAAS,OAAO;EAChB,SAAS,OAAO;EAChB,CAAC;;;;;AAMH,MAAa,0BAA0B"}
|
package/dist/testing/index.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import "../
|
|
2
|
-
import "../
|
|
3
|
-
import {
|
|
4
|
-
import "../
|
|
1
|
+
import { LoadedPluginWithBinding } from "../plugin.cjs";
|
|
2
|
+
import { EveryPlugin, InferRegistryFromEntries, PluginRegistry, PluginRegistryEntry, PluginRuntimeConfig, RegisteredPlugins } from "../types.cjs";
|
|
3
|
+
import { PluginRuntime } from "../runtime/index.cjs";
|
|
4
|
+
import "../index.cjs";
|
|
5
5
|
|
|
6
6
|
//#region src/testing/index.d.ts
|
|
7
7
|
type PluginMap = Record<string, LoadedPluginWithBinding<any, any, any, any>>;
|
package/dist/testing/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import "../
|
|
2
|
-
import "../
|
|
3
|
-
import {
|
|
4
|
-
import "../
|
|
1
|
+
import { LoadedPluginWithBinding } from "../plugin.mjs";
|
|
2
|
+
import { EveryPlugin, InferRegistryFromEntries, PluginRegistry, PluginRegistryEntry, PluginRuntimeConfig, RegisteredPlugins } from "../types.mjs";
|
|
3
|
+
import { PluginRuntime } from "../runtime/index.mjs";
|
|
4
|
+
import "../index.mjs";
|
|
5
5
|
|
|
6
6
|
//#region src/testing/index.d.ts
|
|
7
7
|
type PluginMap = Record<string, LoadedPluginWithBinding<any, any, any, any>>;
|
package/dist/testing/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["registry: Record<string, PluginRegistryEntry>"],"sources":["../../src/testing/index.ts"],"sourcesContent":["import type { AnyPluginConstructor, InferRegistryFromEntries, PluginRegistryEntry, PluginRuntimeConfig } from \"../types\";\nimport { createPluginRuntime } from \"../runtime\";\nimport type { LoadedPluginWithBinding } from \"../plugin\";\n\nexport type PluginMap = Record<string, LoadedPluginWithBinding<any, any, any, any>>;\n\n/**\n * Simplified type inference for local plugin maps.\n * Just use the constructor types directly.\n *\n * @example\n * ```ts\n * const pluginMap = { \"my-plugin\": MyPlugin } as const;\n * type MyBindings = InferBindingsFromMap<typeof pluginMap>;\n * ```\n */\nexport type InferBindingsFromMap<T extends PluginMap> = {\n\t[K in keyof T]: T[K]\n};\n\n/**\n * Converts old pluginMap format to new registry format\n */\nfunction convertPluginMapToRegistry<T extends PluginMap>(\n\toldRegistry: Record<string, { remoteUrl: string; version?: string; description?: string }>,\n\tpluginMap: T\n): Record<keyof T, PluginRegistryEntry> {\n\tconst registry: Record<string, PluginRegistryEntry> = {};\n\t\n\tfor (const [pluginId, ctor] of Object.entries(pluginMap)) {\n\t\tconst oldEntry = oldRegistry[pluginId];\n\t\tregistry[pluginId] = {\n\t\t\tmodule: ctor as AnyPluginConstructor,\n\t\t\tremote: oldEntry?.remoteUrl,\n\t\t\tversion: oldEntry?.version,\n\t\t\tdescription: oldEntry?.description,\n\t\t};\n\t}\n\t\n\treturn registry as Record<keyof T, PluginRegistryEntry>;\n}\n\n/**\n * Creates a plugin runtime for locally available plugins (non-remote).\n * Automatically infers type bindings from the plugin map, eliminating\n * the need for manual RegistryBindings definitions.\n *\n * @deprecated Use `createPluginRuntime` with module entries directly instead.\n * @example\n * ```ts\n * // Old API (deprecated)\n * const runtime = createLocalPluginRuntime(\n * { registry: { \"my-plugin\": { remoteUrl: \"...\" } }, secrets },\n * { \"my-plugin\": MyPlugin }\n * );\n * \n * // New API (recommended)\n * const runtime = createPluginRuntime({\n * registry: { \"my-plugin\": { module: MyPlugin } },\n * secrets\n * });\n * ```\n */\nexport function createLocalPluginRuntime<TMap extends PluginMap>(\n\tconfig: {\n\t\tregistry: Record<string, { remoteUrl: string; version?: string; description?: string }>;\n\t\tsecrets?: Record<string, string>;\n\t\toptions?: any;\n\t},\n\tpluginMap: TMap\n) {\n\tconst newRegistry = convertPluginMapToRegistry(config.registry, pluginMap);\n\t\n\treturn createPluginRuntime({\n\t\tregistry: newRegistry,\n\t\tsecrets: config.secrets,\n\t\toptions: config.options,\n\t});\n}\n\n/**\n * @deprecated Use `createLocalPluginRuntime` or `createPluginRuntime` instead.\n */\nexport const createTestPluginRuntime = createLocalPluginRuntime;\n\nexport type { EveryPlugin, PluginRegistry, RegisteredPlugins } from \"../types\";\nexport type { PluginRuntimeConfig };\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["registry: Record<string, PluginRegistryEntry>"],"sources":["../../src/testing/index.ts"],"sourcesContent":["import type { AnyPluginConstructor, InferRegistryFromEntries, PluginRegistryEntry, PluginRuntimeConfig } from \"../types\";\nimport { createPluginRuntime } from \"../runtime\";\nimport type { LoadedPluginWithBinding } from \"../plugin\";\n\nexport type PluginMap = Record<string, LoadedPluginWithBinding<any, any, any, any>>;\n\n/**\n * Simplified type inference for local plugin maps.\n * Just use the constructor types directly.\n *\n * @example\n * ```ts\n * const pluginMap = { \"my-plugin\": MyPlugin } as const;\n * type MyBindings = InferBindingsFromMap<typeof pluginMap>;\n * ```\n */\nexport type InferBindingsFromMap<T extends PluginMap> = {\n\t[K in keyof T]: T[K]\n};\n\n/**\n * Converts old pluginMap format to new registry format\n */\nfunction convertPluginMapToRegistry<T extends PluginMap>(\n\toldRegistry: Record<string, { remoteUrl: string; version?: string; description?: string }>,\n\tpluginMap: T\n): Record<keyof T, PluginRegistryEntry> {\n\tconst registry: Record<string, PluginRegistryEntry> = {};\n\t\n\tfor (const [pluginId, ctor] of Object.entries(pluginMap)) {\n\t\tconst oldEntry = oldRegistry[pluginId];\n\t\tregistry[pluginId] = {\n\t\t\tmodule: ctor as AnyPluginConstructor,\n\t\t\tremote: oldEntry?.remoteUrl,\n\t\t\tversion: oldEntry?.version,\n\t\t\tdescription: oldEntry?.description,\n\t\t};\n\t}\n\t\n\treturn registry as Record<keyof T, PluginRegistryEntry>;\n}\n\n/**\n * Creates a plugin runtime for locally available plugins (non-remote).\n * Automatically infers type bindings from the plugin map, eliminating\n * the need for manual RegistryBindings definitions.\n *\n * @deprecated Use `createPluginRuntime` with module entries directly instead.\n * @example\n * ```ts\n * // Old API (deprecated)\n * const runtime = createLocalPluginRuntime(\n * { registry: { \"my-plugin\": { remoteUrl: \"...\" } }, secrets },\n * { \"my-plugin\": MyPlugin }\n * );\n * \n * // New API (recommended)\n * const runtime = createPluginRuntime({\n * registry: { \"my-plugin\": { module: MyPlugin } },\n * secrets\n * });\n * ```\n */\nexport function createLocalPluginRuntime<TMap extends PluginMap>(\n\tconfig: {\n\t\tregistry: Record<string, { remoteUrl: string; version?: string; description?: string }>;\n\t\tsecrets?: Record<string, string>;\n\t\toptions?: any;\n\t},\n\tpluginMap: TMap\n) {\n\tconst newRegistry = convertPluginMapToRegistry(config.registry, pluginMap);\n\t\n\treturn createPluginRuntime({\n\t\tregistry: newRegistry,\n\t\tsecrets: config.secrets,\n\t\toptions: config.options,\n\t});\n}\n\n/**\n * @deprecated Use `createLocalPluginRuntime` or `createPluginRuntime` instead.\n */\nexport const createTestPluginRuntime = createLocalPluginRuntime;\n\nexport type { EveryPlugin, PluginRegistry, RegisteredPlugins } from \"../types\";\nexport type { PluginRuntimeConfig };\n"],"mappings":";;;;;;AAuBA,SAAS,2BACR,aACA,WACuC;CACvC,MAAMA,WAAgD,EAAE;AAExD,MAAK,MAAM,CAAC,UAAU,SAAS,OAAO,QAAQ,UAAU,EAAE;EACzD,MAAM,WAAW,YAAY;AAC7B,WAAS,YAAY;GACpB,QAAQ;GACR,QAAQ,UAAU;GAClB,SAAS,UAAU;GACnB,aAAa,UAAU;GACvB;;AAGF,QAAO;;;;;;;;;;;;;;;;;;;;;;;AAwBR,SAAgB,yBACf,QAKA,WACC;AAGD,QAAO,oBAAoB;EAC1B,UAHmB,2BAA2B,OAAO,UAAU,UAAU;EAIzE,SAAS,OAAO;EAChB,SAAS,OAAO;EAChB,CAAC;;;;;AAMH,MAAa,0BAA0B"}
|
package/dist/types.cjs
ADDED
|
File without changes
|
package/dist/types.d.cts
ADDED
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import { Plugin } from "./plugin.cjs";
|
|
2
|
+
import { Scope } from "effect";
|
|
3
|
+
import { AnyContractRouter, AnySchema, InferSchemaInput, InferSchemaOutput } from "@orpc/contract";
|
|
4
|
+
import { Context as Context$1, Router, RouterClient } from "@orpc/server";
|
|
5
|
+
|
|
6
|
+
//#region src/types.d.ts
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Registry bindings interface - populated via module augmentation
|
|
10
|
+
* Only needed for remote-only plugin entries.
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* declare module "every-plugin" {
|
|
14
|
+
* interface RegisteredPlugins {
|
|
15
|
+
* "my-plugin": typeof MyPlugin;
|
|
16
|
+
* }
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
interface RegisteredPlugins {}
|
|
21
|
+
/**
|
|
22
|
+
* Base type for any plugin instance.
|
|
23
|
+
*/
|
|
24
|
+
type AnyPlugin = Plugin<AnyContractRouter, AnySchema, AnySchema, any>;
|
|
25
|
+
/**
|
|
26
|
+
* Loaded plugin constructor with binding information
|
|
27
|
+
*/
|
|
28
|
+
type AnyPluginConstructor = {
|
|
29
|
+
new (): AnyPlugin;
|
|
30
|
+
binding: {
|
|
31
|
+
contract: AnyContractRouter;
|
|
32
|
+
variables: AnySchema;
|
|
33
|
+
secrets: AnySchema;
|
|
34
|
+
context: Context$1;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Registry entry that supports both direct module imports and remote URLs
|
|
39
|
+
*/
|
|
40
|
+
type PluginRegistryEntry = {
|
|
41
|
+
module: AnyPluginConstructor;
|
|
42
|
+
remote?: string;
|
|
43
|
+
version?: string;
|
|
44
|
+
description?: string;
|
|
45
|
+
} | {
|
|
46
|
+
remote: string;
|
|
47
|
+
version?: string;
|
|
48
|
+
description?: string;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Extract plugin constructor type from registry entry
|
|
52
|
+
*/
|
|
53
|
+
type ExtractPluginType<E> = E extends {
|
|
54
|
+
module: infer M;
|
|
55
|
+
} ? M : never;
|
|
56
|
+
/**
|
|
57
|
+
* Infer registry types from plugin entries with module constructors
|
|
58
|
+
*/
|
|
59
|
+
type InferRegistryFromEntries<R$1 extends Record<string, PluginRegistryEntry>> = { [K in keyof R$1]: R$1[K] extends {
|
|
60
|
+
module: infer M;
|
|
61
|
+
} ? M : K extends keyof RegisteredPlugins ? RegisteredPlugins[K] : never };
|
|
62
|
+
/**
|
|
63
|
+
* Extract contract type from plugin binding
|
|
64
|
+
*/
|
|
65
|
+
type PluginContract<T> = T extends {
|
|
66
|
+
binding: {
|
|
67
|
+
contract: infer C extends AnyContractRouter;
|
|
68
|
+
};
|
|
69
|
+
} ? C : never;
|
|
70
|
+
/**
|
|
71
|
+
* Extract variables type from plugin binding
|
|
72
|
+
*/
|
|
73
|
+
type PluginVariables<T> = T extends {
|
|
74
|
+
binding: {
|
|
75
|
+
variables: infer V extends AnySchema;
|
|
76
|
+
};
|
|
77
|
+
} ? V : never;
|
|
78
|
+
/**
|
|
79
|
+
* Extract secrets type from plugin binding
|
|
80
|
+
*/
|
|
81
|
+
type PluginSecrets<T> = T extends {
|
|
82
|
+
binding: {
|
|
83
|
+
secrets: infer S extends AnySchema;
|
|
84
|
+
};
|
|
85
|
+
} ? S : never;
|
|
86
|
+
/**
|
|
87
|
+
* Extract context type from plugin binding
|
|
88
|
+
*/
|
|
89
|
+
type PluginContext<T> = T extends {
|
|
90
|
+
binding: {
|
|
91
|
+
context: infer C extends Context$1;
|
|
92
|
+
};
|
|
93
|
+
} ? C : never;
|
|
94
|
+
/**
|
|
95
|
+
* Extract router type from plugin binding
|
|
96
|
+
* Uses 'any' for context to support nested router compositions
|
|
97
|
+
*/
|
|
98
|
+
type PluginRouterType<T> = Router<PluginContract<T>, any>;
|
|
99
|
+
/**
|
|
100
|
+
* Extract client type from plugin binding
|
|
101
|
+
*/
|
|
102
|
+
type PluginClientType<T> = RouterClient<PluginRouterType<T>>;
|
|
103
|
+
/**
|
|
104
|
+
* Extract plugin type from registered plugins by key
|
|
105
|
+
* @param K - The plugin key
|
|
106
|
+
* @param R - The registry type (defaults to RegisteredPlugins for module augmentation pattern)
|
|
107
|
+
*/
|
|
108
|
+
type RegisteredPlugin<K$1 extends keyof R$1, R$1 = RegisteredPlugins> = R$1[K$1] extends {
|
|
109
|
+
binding: infer B;
|
|
110
|
+
} ? B extends {
|
|
111
|
+
contract: infer C extends AnyContractRouter;
|
|
112
|
+
variables: infer V extends AnySchema;
|
|
113
|
+
secrets: infer S extends AnySchema;
|
|
114
|
+
context: infer TContext extends Context$1;
|
|
115
|
+
} ? Plugin<C, V, S, TContext> : never : never;
|
|
116
|
+
/**
|
|
117
|
+
* Extract config input type from plugin binding
|
|
118
|
+
*/
|
|
119
|
+
type PluginConfigInput<T> = {
|
|
120
|
+
variables: InferSchemaInput<PluginVariables<T>>;
|
|
121
|
+
secrets: InferSchemaInput<PluginSecrets<T>>;
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* Extract context type from plugin instance
|
|
125
|
+
*/
|
|
126
|
+
type ContextOf<T extends AnyPlugin> = T extends Plugin<AnyContractRouter, AnySchema, AnySchema, infer TContext> ? TContext : never;
|
|
127
|
+
/**
|
|
128
|
+
* Plugin metadata for remote loading
|
|
129
|
+
*/
|
|
130
|
+
type PluginMetadata = {
|
|
131
|
+
readonly remoteUrl: string;
|
|
132
|
+
readonly version?: string;
|
|
133
|
+
readonly description?: string;
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* Runtime registry configuration supporting both module and remote entries
|
|
137
|
+
*/
|
|
138
|
+
type PluginRegistry = Record<string, PluginRegistryEntry>;
|
|
139
|
+
/**
|
|
140
|
+
* Legacy metadata-only registry (for backwards compatibility)
|
|
141
|
+
*/
|
|
142
|
+
type PluginMetadataRegistry = Record<string, PluginMetadata>;
|
|
143
|
+
/**
|
|
144
|
+
* Configuration for secrets injection.
|
|
145
|
+
* Secrets are hydrated into plugin configs using template replacement.
|
|
146
|
+
*/
|
|
147
|
+
interface SecretsConfig {
|
|
148
|
+
[key: string]: string;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Loaded plugin
|
|
152
|
+
*/
|
|
153
|
+
interface LoadedPlugin<T extends AnyPlugin = AnyPlugin> {
|
|
154
|
+
readonly ctor: new () => T;
|
|
155
|
+
readonly metadata: PluginMetadata;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Instantiated plugin
|
|
159
|
+
*/
|
|
160
|
+
interface PluginInstance<T extends AnyPlugin = AnyPlugin> {
|
|
161
|
+
readonly plugin: T;
|
|
162
|
+
readonly metadata: PluginMetadata;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Fully initialized plugin ready for use
|
|
166
|
+
*/
|
|
167
|
+
interface InitializedPlugin<T extends AnyPlugin = AnyPlugin> {
|
|
168
|
+
readonly plugin: T;
|
|
169
|
+
readonly metadata: PluginMetadata;
|
|
170
|
+
readonly config: {
|
|
171
|
+
variables: InferSchemaOutput<T["configSchema"]["variables"]>;
|
|
172
|
+
secrets: InferSchemaOutput<T["configSchema"]["secrets"]>;
|
|
173
|
+
};
|
|
174
|
+
readonly context: ContextOf<T>;
|
|
175
|
+
readonly scope: Scope.CloseableScope;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Helper type to detect type errors when looking up RegisteredPlugins
|
|
179
|
+
*/
|
|
180
|
+
type VerifyPluginBinding<K$1 extends keyof R$1, R$1 = RegisteredPlugins> = R$1[K$1] extends {
|
|
181
|
+
binding: infer B;
|
|
182
|
+
} ? B extends {
|
|
183
|
+
contract: AnyContractRouter;
|
|
184
|
+
variables: AnySchema;
|
|
185
|
+
secrets: AnySchema;
|
|
186
|
+
context: Context$1;
|
|
187
|
+
} ? 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.`;
|
|
188
|
+
/**
|
|
189
|
+
* Result of runtime.usePlugin() call
|
|
190
|
+
* @param K - The plugin key
|
|
191
|
+
* @param R - The registry type (defaults to RegisteredPlugins for module augmentation pattern)
|
|
192
|
+
*/
|
|
193
|
+
type UsePluginResult<K$1 extends keyof R$1, R$1 = RegisteredPlugins> = VerifyPluginBinding<K$1, R$1> extends true ? {
|
|
194
|
+
readonly client: PluginClientType<R$1[K$1]>;
|
|
195
|
+
readonly router: PluginRouterType<R$1[K$1]>;
|
|
196
|
+
readonly metadata: PluginMetadata;
|
|
197
|
+
readonly initialized: InitializedPlugin<RegisteredPlugin<K$1, R$1>>;
|
|
198
|
+
} : VerifyPluginBinding<K$1, R$1>;
|
|
199
|
+
/**
|
|
200
|
+
* Runtime options
|
|
201
|
+
*/
|
|
202
|
+
interface RuntimeOptions {
|
|
203
|
+
isolation?: "strict" | "shared" | "none";
|
|
204
|
+
memoryLimit?: string;
|
|
205
|
+
concurrency?: number;
|
|
206
|
+
resourceTimeout?: string;
|
|
207
|
+
debug?: boolean;
|
|
208
|
+
metrics?: boolean;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Extract registry type from runtime instance or use type directly
|
|
212
|
+
* This allows EveryPlugin.Infer to work with both:
|
|
213
|
+
* - typeof runtime (extracts registry from PluginRuntime<R> via __registryType)
|
|
214
|
+
* - Registry types directly
|
|
215
|
+
*/
|
|
216
|
+
type RegistryOf<T> = T extends {
|
|
217
|
+
__registryType?: infer R;
|
|
218
|
+
} ? R : T;
|
|
219
|
+
/**
|
|
220
|
+
* Namespace containing type utilities for working with plugin results.
|
|
221
|
+
*/
|
|
222
|
+
declare namespace EveryPlugin {
|
|
223
|
+
/**
|
|
224
|
+
* Extract plugin runtime instance type from registered plugins or runtime.
|
|
225
|
+
* Provides full type safety for plugin clients, routers, and metadata.
|
|
226
|
+
*
|
|
227
|
+
* @example
|
|
228
|
+
* ```ts
|
|
229
|
+
* // From RegisteredPlugins (module augmentation)
|
|
230
|
+
* type Plugin = EveryPlugin.Infer<"my-plugin">;
|
|
231
|
+
*
|
|
232
|
+
* // From runtime instance (when using module entries)
|
|
233
|
+
* const runtime = createPluginRuntime({ registry: { "my-plugin": { module: MyPlugin } } });
|
|
234
|
+
* type Plugin = EveryPlugin.Infer<"my-plugin", typeof runtime>;
|
|
235
|
+
*
|
|
236
|
+
* // From explicit registry type
|
|
237
|
+
* type Plugin = EveryPlugin.Infer<"my-plugin", MyRegistryType>;
|
|
238
|
+
* ```
|
|
239
|
+
*/
|
|
240
|
+
type Infer<K$1 extends string, Source = RegisteredPlugins> = K$1 extends keyof RegistryOf<Source> ? UsePluginResult<K$1, RegistryOf<Source>> : never;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Plugin runtime configuration with support for both module and remote entries
|
|
244
|
+
*/
|
|
245
|
+
interface PluginRuntimeConfig<R$1 extends Record<string, PluginRegistryEntry> = Record<string, PluginRegistryEntry>> {
|
|
246
|
+
registry: R$1;
|
|
247
|
+
secrets?: SecretsConfig;
|
|
248
|
+
options?: RuntimeOptions;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Legacy plugin runtime configuration (metadata-only registry)
|
|
252
|
+
* @deprecated Use PluginRuntimeConfig with module/remote entries instead
|
|
253
|
+
*/
|
|
254
|
+
interface LegacyPluginRuntimeConfig {
|
|
255
|
+
registry: PluginMetadataRegistry;
|
|
256
|
+
secrets?: SecretsConfig;
|
|
257
|
+
options?: RuntimeOptions;
|
|
258
|
+
}
|
|
259
|
+
//#endregion
|
|
260
|
+
export { AnyPlugin, AnyPluginConstructor, ContextOf, EveryPlugin, ExtractPluginType, InferRegistryFromEntries, InitializedPlugin, LegacyPluginRuntimeConfig, LoadedPlugin, PluginClientType, PluginConfigInput, PluginContext, PluginContract, PluginInstance, PluginMetadata, PluginMetadataRegistry, PluginRegistry, PluginRegistryEntry, PluginRouterType, PluginRuntimeConfig, PluginSecrets, PluginVariables, RegisteredPlugin, RegisteredPlugins, RuntimeOptions, SecretsConfig, UsePluginResult };
|
|
261
|
+
//# sourceMappingURL=types.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.cts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":"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"}
|