every-plugin 0.4.3 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build/rspack/index.cjs +267 -0
- package/dist/build/rspack/index.d.cts +20 -0
- package/dist/build/rspack/index.d.mts +20 -0
- package/dist/build/rspack/index.mjs +265 -0
- package/dist/chunk-QQAxy9l9.mjs +31 -0
- package/dist/chunk-zltIcp7o.cjs +46 -0
- package/dist/effect.cjs +9 -0
- package/dist/effect.d.cts +1 -0
- package/dist/effect.d.mts +1 -0
- package/dist/effect.mjs +3 -0
- package/dist/errors-CVnoPl9v.cjs +68 -0
- package/dist/errors-Car4tFVP.d.mts +75 -0
- package/dist/errors-D7keKf7a.mjs +63 -0
- package/dist/errors-DKPPPYYT.d.cts +75 -0
- package/dist/errors.cjs +4 -0
- package/dist/errors.d.cts +3 -0
- package/dist/errors.d.mts +3 -0
- package/dist/errors.mjs +4 -0
- package/dist/fetch-Cc95-7kM.cjs +336 -0
- package/dist/fetch-KLktuWuM.mjs +335 -0
- package/dist/index-bwAhA9ca.d.mts +383 -0
- package/dist/index-matrPV4m.d.cts +382 -0
- package/dist/index.cjs +57 -0
- package/dist/index.d.cts +5 -0
- package/dist/index.d.mts +5 -0
- package/dist/index.mjs +52 -0
- package/dist/{runtime/services/normalize.d.ts → normalize-BLTyqFww.d.mts} +5 -2
- package/dist/{runtime/services/normalize.js → normalize-BW7kk8Lk.d.cts} +5 -1
- package/dist/normalize-D4Qh0wVk.cjs +28 -0
- package/dist/normalize-D7nae0Hn.mjs +22 -0
- package/dist/openapi.DrTcell5-C6kyDyUK.mjs +669 -0
- package/dist/openapi.DrTcell5-DDf4D5V3.cjs +687 -0
- package/dist/orpc.cjs +46 -0
- package/dist/orpc.d.cts +7 -0
- package/dist/orpc.d.mts +7 -0
- package/dist/orpc.mjs +11 -0
- package/dist/package-Ba1JsQFb.mjs +149 -0
- package/dist/package-C09aaCqd.cjs +154 -0
- package/dist/plugins-C-7lh5gK.cjs +128 -0
- package/dist/plugins-Ps5Xxpk2.mjs +128 -0
- package/dist/runtime/index.cjs +6 -0
- package/dist/runtime/index.d.cts +5 -0
- package/dist/runtime/index.d.mts +5 -0
- package/dist/runtime/index.mjs +5 -0
- package/dist/runtime/services/normalize.cjs +3 -0
- package/dist/runtime/services/normalize.d.cts +2 -0
- package/dist/runtime/services/normalize.d.mts +2 -0
- package/dist/runtime/services/normalize.mjs +3 -0
- package/dist/runtime-CdAK1Q5M.cjs +523 -0
- package/dist/runtime-I62RA1Vo.mjs +458 -0
- package/dist/standard-DaxKTFui.mjs +595 -0
- package/dist/standard-eUgUkWaf.cjs +702 -0
- package/dist/testing/index.cjs +78 -0
- package/dist/testing/index.d.cts +60 -0
- package/dist/testing/index.d.mts +60 -0
- package/dist/testing/index.mjs +75 -0
- package/dist/zod-A7Pti5IV.d.cts +4 -0
- package/dist/zod-BVo51kgJ.mjs +10 -0
- package/dist/zod-D4CFw8d9.d.mts +4 -0
- package/dist/zod-DYghWCz1.cjs +14 -0
- package/dist/zod.cjs +10 -0
- package/dist/zod.d.cts +2 -0
- package/dist/zod.d.mts +2 -0
- package/dist/zod.mjs +5 -0
- package/dist/zod4-BXTBR1od.cjs +318 -0
- package/dist/zod4-VpXuwRO7.mjs +317 -0
- package/package.json +64 -27
- package/dist/effect.d.ts +0 -2
- package/dist/effect.d.ts.map +0 -1
- package/dist/effect.js +0 -1
- package/dist/errors.d.ts +0 -70
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -61
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -5
- package/dist/orpc.d.ts +0 -10
- package/dist/orpc.d.ts.map +0 -1
- package/dist/orpc.js +0 -6
- package/dist/plugin.d.ts +0 -57
- package/dist/plugin.d.ts.map +0 -1
- package/dist/plugin.js +0 -43
- package/dist/runtime/errors.d.ts +0 -36
- package/dist/runtime/errors.d.ts.map +0 -1
- package/dist/runtime/errors.js +0 -47
- package/dist/runtime/index.d.ts +0 -20
- package/dist/runtime/index.d.ts.map +0 -1
- package/dist/runtime/index.js +0 -131
- package/dist/runtime/services/module-federation.service.d.ts +0 -13
- package/dist/runtime/services/module-federation.service.d.ts.map +0 -1
- package/dist/runtime/services/module-federation.service.js +0 -155
- package/dist/runtime/services/normalize.d.ts.map +0 -1
- package/dist/runtime/services/plugin-lifecycle.service.d.ts +0 -14
- package/dist/runtime/services/plugin-lifecycle.service.d.ts.map +0 -1
- package/dist/runtime/services/plugin-lifecycle.service.js +0 -34
- package/dist/runtime/services/plugin-loader.service.d.ts +0 -45
- package/dist/runtime/services/plugin-loader.service.d.ts.map +0 -1
- package/dist/runtime/services/plugin-loader.service.js +0 -93
- package/dist/runtime/services/plugin.service.d.ts +0 -36
- package/dist/runtime/services/plugin.service.d.ts.map +0 -1
- package/dist/runtime/services/plugin.service.js +0 -31
- package/dist/runtime/services/secrets.service.d.ts +0 -15
- package/dist/runtime/services/secrets.service.d.ts.map +0 -1
- package/dist/runtime/services/secrets.service.js +0 -35
- package/dist/runtime/services.d.ts +0 -6
- package/dist/runtime/services.d.ts.map +0 -1
- package/dist/runtime/services.js +0 -5
- package/dist/runtime/validation.d.ts +0 -5
- package/dist/runtime/validation.d.ts.map +0 -1
- package/dist/runtime/validation.js +0 -13
- package/dist/testing/index.d.ts +0 -59
- package/dist/testing/index.d.ts.map +0 -1
- package/dist/testing/index.js +0 -45
- package/dist/testing/mocks/module-federation.service.d.ts +0 -6
- package/dist/testing/mocks/module-federation.service.d.ts.map +0 -1
- package/dist/testing/mocks/module-federation.service.js +0 -29
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/types.d.ts +0 -187
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -1
- package/dist/zod.d.ts +0 -2
- package/dist/zod.d.ts.map +0 -1
- package/dist/zod.js +0 -1
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import { r as __require } from "../../chunk-QQAxy9l9.mjs";
|
|
2
|
+
import { t as getNormalizedRemoteName } from "../../normalize-D7nae0Hn.mjs";
|
|
3
|
+
import { t as require_package } from "../../package-Ba1JsQFb.mjs";
|
|
4
|
+
import { rspack } from "@rspack/core";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import fs from "node:fs";
|
|
7
|
+
|
|
8
|
+
//#region src/build/rspack/utils.ts
|
|
9
|
+
function getPluginInfo(context) {
|
|
10
|
+
const pkgPath = path.join(context, "package.json");
|
|
11
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
|
|
12
|
+
return {
|
|
13
|
+
name: pkg.name,
|
|
14
|
+
version: pkg.version,
|
|
15
|
+
normalizedName: getNormalizedRemoteName(pkg.name),
|
|
16
|
+
dependencies: pkg.dependencies || {},
|
|
17
|
+
peerDependencies: pkg.peerDependencies || {}
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function loadDevConfig(devConfigPath) {
|
|
21
|
+
try {
|
|
22
|
+
const fullPath = path.resolve(devConfigPath);
|
|
23
|
+
delete __require.cache[fullPath];
|
|
24
|
+
return __require(fullPath).default;
|
|
25
|
+
} catch (error) {
|
|
26
|
+
console.warn(`Could not load dev config from ${devConfigPath}:`, error.message);
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
//#endregion
|
|
32
|
+
//#region src/build/rspack/module-federation.ts
|
|
33
|
+
function buildSharedDependencies(pluginInfo) {
|
|
34
|
+
const everyPluginPkg = require_package();
|
|
35
|
+
return {
|
|
36
|
+
"every-plugin": {
|
|
37
|
+
version: everyPluginPkg.version,
|
|
38
|
+
singleton: true,
|
|
39
|
+
requiredVersion: `${everyPluginPkg.version}`,
|
|
40
|
+
strictVersion: false,
|
|
41
|
+
eager: false
|
|
42
|
+
},
|
|
43
|
+
effect: {
|
|
44
|
+
version: everyPluginPkg.dependencies.effect,
|
|
45
|
+
singleton: true,
|
|
46
|
+
requiredVersion: `${everyPluginPkg.dependencies.effect}`,
|
|
47
|
+
strictVersion: false,
|
|
48
|
+
eager: false
|
|
49
|
+
},
|
|
50
|
+
zod: {
|
|
51
|
+
version: everyPluginPkg.dependencies.zod,
|
|
52
|
+
singleton: true,
|
|
53
|
+
requiredVersion: `${everyPluginPkg.dependencies.zod}`,
|
|
54
|
+
strictVersion: false,
|
|
55
|
+
eager: false
|
|
56
|
+
},
|
|
57
|
+
"@orpc/contract": {
|
|
58
|
+
version: everyPluginPkg.dependencies["@orpc/contract"],
|
|
59
|
+
singleton: true,
|
|
60
|
+
requiredVersion: `${everyPluginPkg.dependencies["@orpc/contract"]}`,
|
|
61
|
+
strictVersion: false,
|
|
62
|
+
eager: false
|
|
63
|
+
},
|
|
64
|
+
"@orpc/server": {
|
|
65
|
+
version: everyPluginPkg.dependencies["@orpc/server"],
|
|
66
|
+
singleton: true,
|
|
67
|
+
requiredVersion: `${everyPluginPkg.dependencies["@orpc/server"]}`,
|
|
68
|
+
strictVersion: false,
|
|
69
|
+
eager: false
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
//#endregion
|
|
75
|
+
//#region src/build/rspack/dev-server-middleware.ts
|
|
76
|
+
function setupPluginMiddleware(devServer, pluginInfo, devConfig, port) {
|
|
77
|
+
let handlers = {
|
|
78
|
+
rpc: null,
|
|
79
|
+
api: null
|
|
80
|
+
};
|
|
81
|
+
(async () => {
|
|
82
|
+
try {
|
|
83
|
+
const { createPluginRuntime } = await import("../../index.mjs");
|
|
84
|
+
const { RPCHandler } = await import("@orpc/server/fetch");
|
|
85
|
+
const { onError } = await import("@orpc/server");
|
|
86
|
+
const { OpenAPIHandler } = await import("../../fetch-KLktuWuM.mjs");
|
|
87
|
+
const { OpenAPIReferencePlugin } = await import("../../plugins-Ps5Xxpk2.mjs");
|
|
88
|
+
const { ZodToJsonSchemaConverter } = await import("../../zod4-VpXuwRO7.mjs");
|
|
89
|
+
const pluginId = devConfig?.pluginId || pluginInfo.normalizedName;
|
|
90
|
+
const loaded = await createPluginRuntime({ registry: { [pluginId]: { remoteUrl: `http://localhost:${port}/remoteEntry.js` } } }).usePlugin(pluginId, devConfig?.config);
|
|
91
|
+
handlers.rpc = new RPCHandler(loaded.router, { interceptors: [onError((error) => {
|
|
92
|
+
console.error("🔴 RPC Error:", error);
|
|
93
|
+
})] });
|
|
94
|
+
handlers.api = new OpenAPIHandler(loaded.router, {
|
|
95
|
+
plugins: [new OpenAPIReferencePlugin({ schemaConverters: [new ZodToJsonSchemaConverter()] })],
|
|
96
|
+
interceptors: [onError((error) => {
|
|
97
|
+
console.error("🔴 OpenAPI Error:", error);
|
|
98
|
+
})]
|
|
99
|
+
});
|
|
100
|
+
console.log(`╭─────────────────────────────────────────────`);
|
|
101
|
+
console.log(`│ ✅ Plugin dev server ready: `);
|
|
102
|
+
console.log(`├─────────────────────────────────────────────`);
|
|
103
|
+
console.log(`│ 📡 RPC: http://localhost:${port}/api/rpc`);
|
|
104
|
+
console.log(`│ 📖 Docs: http://localhost:${port}/api`);
|
|
105
|
+
console.log(`│ 💚 Health: http://localhost:${port}/`);
|
|
106
|
+
console.log(`╰─────────────────────────────────────────────`);
|
|
107
|
+
devServer.app.locals.handlers = handlers;
|
|
108
|
+
} catch (error) {
|
|
109
|
+
console.error("❌ Failed to load plugin:", error);
|
|
110
|
+
}
|
|
111
|
+
})();
|
|
112
|
+
devServer.app.get("/", (req, res) => {
|
|
113
|
+
res.json({
|
|
114
|
+
ok: true,
|
|
115
|
+
plugin: pluginInfo.normalizedName,
|
|
116
|
+
version: pluginInfo.version,
|
|
117
|
+
status: devServer.app.locals.handlers?.rpc ? "ready" : "loading",
|
|
118
|
+
endpoints: {
|
|
119
|
+
health: "/",
|
|
120
|
+
docs: "/api",
|
|
121
|
+
rpc: "/api/rpc"
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
const handleApiRequest = async (req, res) => {
|
|
126
|
+
const apiHandler = devServer.app.locals.handlers?.api;
|
|
127
|
+
if (!apiHandler) return res.status(503).json({ error: "Plugin still loading..." });
|
|
128
|
+
try {
|
|
129
|
+
const url = `http://${req.headers.host}${req.url}`;
|
|
130
|
+
const webRequest = new Request(url, {
|
|
131
|
+
method: req.method,
|
|
132
|
+
headers: req.headers,
|
|
133
|
+
body: req.method !== "GET" && req.method !== "HEAD" ? req : void 0
|
|
134
|
+
});
|
|
135
|
+
const result = await apiHandler.handle(webRequest, {
|
|
136
|
+
prefix: "/api",
|
|
137
|
+
context: {}
|
|
138
|
+
});
|
|
139
|
+
if (result.response) {
|
|
140
|
+
res.status(result.response.status);
|
|
141
|
+
result.response.headers.forEach((value, key) => {
|
|
142
|
+
res.setHeader(key, value);
|
|
143
|
+
});
|
|
144
|
+
const text = await result.response.text();
|
|
145
|
+
res.send(text);
|
|
146
|
+
} else res.status(404).send("Not Found");
|
|
147
|
+
} catch (error) {
|
|
148
|
+
console.error("OpenAPI error:", error);
|
|
149
|
+
res.status(500).json({ error: error.message });
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
devServer.app.all("/api", handleApiRequest);
|
|
153
|
+
devServer.app.all("/api/*", handleApiRequest);
|
|
154
|
+
devServer.app.all("/api/rpc/*", async (req, res) => {
|
|
155
|
+
const rpcHandler = devServer.app.locals.handlers?.rpc;
|
|
156
|
+
if (!rpcHandler) return res.status(503).json({ error: "Plugin still loading..." });
|
|
157
|
+
try {
|
|
158
|
+
const url = `http://${req.headers.host}${req.url}`;
|
|
159
|
+
const webRequest = new Request(url, {
|
|
160
|
+
method: req.method,
|
|
161
|
+
headers: req.headers,
|
|
162
|
+
body: req.method !== "GET" && req.method !== "HEAD" ? req : void 0
|
|
163
|
+
});
|
|
164
|
+
const result = await rpcHandler.handle(webRequest, {
|
|
165
|
+
prefix: "/api/rpc",
|
|
166
|
+
context: {}
|
|
167
|
+
});
|
|
168
|
+
if (result.response) {
|
|
169
|
+
res.status(result.response.status);
|
|
170
|
+
result.response.headers.forEach((value, key) => {
|
|
171
|
+
res.setHeader(key, value);
|
|
172
|
+
});
|
|
173
|
+
const text = await result.response.text();
|
|
174
|
+
res.send(text);
|
|
175
|
+
} else res.status(404).send("Not Found");
|
|
176
|
+
} catch (error) {
|
|
177
|
+
console.error("RPC error:", error);
|
|
178
|
+
res.status(500).json({ error: error.message });
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
//#endregion
|
|
184
|
+
//#region src/build/rspack/plugin.ts
|
|
185
|
+
var EveryPluginDevServer = class {
|
|
186
|
+
name = "EveryPluginDevServer";
|
|
187
|
+
constructor(options = {}) {
|
|
188
|
+
this.options = options;
|
|
189
|
+
}
|
|
190
|
+
apply(compiler) {
|
|
191
|
+
const pluginInfo = getPluginInfo(compiler.options.context || process.cwd());
|
|
192
|
+
const devConfig = loadDevConfig(this.options.devConfigPath || "./plugin.dev.ts");
|
|
193
|
+
const port = this.options.port || devConfig?.port || 3999;
|
|
194
|
+
this.configureDefaults(compiler, pluginInfo);
|
|
195
|
+
if (!compiler.options.devServer) compiler.options.devServer = {};
|
|
196
|
+
this.configureDevServer(compiler, pluginInfo, devConfig, port);
|
|
197
|
+
new rspack.container.ModuleFederationPlugin({
|
|
198
|
+
name: pluginInfo.normalizedName,
|
|
199
|
+
filename: "remoteEntry.js",
|
|
200
|
+
runtimePlugins: [__require.resolve("@module-federation/node/runtimePlugin")],
|
|
201
|
+
library: { type: "commonjs-module" },
|
|
202
|
+
exposes: { "./plugin": "./src/index.ts" },
|
|
203
|
+
shared: buildSharedDependencies(pluginInfo)
|
|
204
|
+
}).apply(compiler);
|
|
205
|
+
}
|
|
206
|
+
configureDefaults(compiler, pluginInfo) {
|
|
207
|
+
const context = compiler.options.context || process.cwd();
|
|
208
|
+
if (!compiler.options.output) compiler.options.output = {};
|
|
209
|
+
compiler.options.output.uniqueName = pluginInfo.normalizedName;
|
|
210
|
+
compiler.options.output.publicPath = "auto";
|
|
211
|
+
compiler.options.output.path = path.resolve(context, "dist");
|
|
212
|
+
compiler.options.output.clean = true;
|
|
213
|
+
compiler.options.output.library = { type: "commonjs-module" };
|
|
214
|
+
if (!compiler.options.entry) compiler.options.entry = { main: { import: ["./src/index"] } };
|
|
215
|
+
if (!compiler.options.target) compiler.options.target = "async-node";
|
|
216
|
+
if (!compiler.options.mode) compiler.options.mode = process.env.NODE_ENV === "development" ? "development" : "production";
|
|
217
|
+
if (!compiler.options.devtool) compiler.options.devtool = "source-map";
|
|
218
|
+
if (!compiler.options.infrastructureLogging) compiler.options.infrastructureLogging = { level: "warn" };
|
|
219
|
+
this.ensureTypeScriptLoader(compiler);
|
|
220
|
+
if (!compiler.options.resolve) compiler.options.resolve = {};
|
|
221
|
+
compiler.options.resolve.extensions = [
|
|
222
|
+
"...",
|
|
223
|
+
".tsx",
|
|
224
|
+
".ts"
|
|
225
|
+
];
|
|
226
|
+
}
|
|
227
|
+
ensureTypeScriptLoader(compiler) {
|
|
228
|
+
if (!compiler.options.module) compiler.options.module = { rules: [] };
|
|
229
|
+
if (!compiler.options.module.rules) compiler.options.module.rules = [];
|
|
230
|
+
if (!compiler.options.module.rules.some((rule) => typeof rule === "object" && rule !== null && "test" in rule && rule.test instanceof RegExp && rule.test.test(".ts"))) compiler.options.module.rules.push({
|
|
231
|
+
test: /\.tsx?$/,
|
|
232
|
+
use: "builtin:swc-loader",
|
|
233
|
+
exclude: /node_modules/
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
configureDevServer(compiler, pluginInfo, devConfig, port) {
|
|
237
|
+
if (!compiler.options.devServer) return;
|
|
238
|
+
const context = compiler.options.context || process.cwd();
|
|
239
|
+
const originalSetup = compiler.options.devServer.setupMiddlewares;
|
|
240
|
+
compiler.options.devServer.port = port;
|
|
241
|
+
compiler.options.devServer.static = path.join(context, "dist");
|
|
242
|
+
compiler.options.devServer.hot = true;
|
|
243
|
+
compiler.options.devServer.devMiddleware = { writeToDisk: true };
|
|
244
|
+
compiler.options.devServer.headers = {
|
|
245
|
+
"Access-Control-Allow-Origin": "*",
|
|
246
|
+
"Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS",
|
|
247
|
+
"Access-Control-Allow-Headers": "X-Requested-With, content-type, Authorization"
|
|
248
|
+
};
|
|
249
|
+
compiler.options.devServer.client = {
|
|
250
|
+
logging: "warn",
|
|
251
|
+
overlay: {
|
|
252
|
+
warnings: false,
|
|
253
|
+
errors: true
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
compiler.options.devServer.setupMiddlewares = (middlewares, devServer) => {
|
|
257
|
+
setupPluginMiddleware(devServer, pluginInfo, devConfig, port);
|
|
258
|
+
return originalSetup ? originalSetup(middlewares, devServer) : middlewares;
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
|
|
263
|
+
//#endregion
|
|
264
|
+
export { EveryPluginDevServer };
|
|
265
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubWpzIiwibmFtZXMiOlsiaGFuZGxlcnM6IHsgcnBjOiBhbnksIGFwaTogYW55IH0iLCJvcHRpb25zOiBFdmVyeVBsdWdpbk9wdGlvbnMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnVpbGQvcnNwYWNrL3V0aWxzLnRzIiwiLi4vLi4vLi4vc3JjL2J1aWxkL3JzcGFjay9tb2R1bGUtZmVkZXJhdGlvbi50cyIsIi4uLy4uLy4uL3NyYy9idWlsZC9yc3BhY2svZGV2LXNlcnZlci1taWRkbGV3YXJlLnRzIiwiLi4vLi4vLi4vc3JjL2J1aWxkL3JzcGFjay9wbHVnaW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCBmcyBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7IGdldE5vcm1hbGl6ZWRSZW1vdGVOYW1lIH0gZnJvbSAnZXZlcnktcGx1Z2luL25vcm1hbGl6ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luSW5mbyB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBub3JtYWxpemVkTmFtZTogc3RyaW5nO1xuICBkZXBlbmRlbmNpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHBlZXJEZXBlbmRlbmNpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQbHVnaW5JbmZvKGNvbnRleHQ6IHN0cmluZyk6IFBsdWdpbkluZm8ge1xuICBjb25zdCBwa2dQYXRoID0gcGF0aC5qb2luKGNvbnRleHQsICdwYWNrYWdlLmpzb24nKTtcbiAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMocGtnUGF0aCwgJ3V0Zi04JykpO1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogcGtnLm5hbWUsXG4gICAgdmVyc2lvbjogcGtnLnZlcnNpb24sXG4gICAgbm9ybWFsaXplZE5hbWU6IGdldE5vcm1hbGl6ZWRSZW1vdGVOYW1lKHBrZy5uYW1lKSxcbiAgICBkZXBlbmRlbmNpZXM6IHBrZy5kZXBlbmRlbmNpZXMgfHwge30sXG4gICAgcGVlckRlcGVuZGVuY2llczogcGtnLnBlZXJEZXBlbmRlbmNpZXMgfHwge30sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkRGV2Q29uZmlnKGRldkNvbmZpZ1BhdGg6IHN0cmluZykge1xuICB0cnkge1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5yZXNvbHZlKGRldkNvbmZpZ1BhdGgpO1xuICAgIC8vIENsZWFyIHJlcXVpcmUgY2FjaGUgdG8gYWxsb3cgaG90IHJlbG9hZGluZ1xuICAgIGRlbGV0ZSByZXF1aXJlLmNhY2hlW2Z1bGxQYXRoXTtcbiAgICByZXR1cm4gcmVxdWlyZShmdWxsUGF0aCkuZGVmYXVsdDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLndhcm4oYENvdWxkIG5vdCBsb2FkIGRldiBjb25maWcgZnJvbSAke2RldkNvbmZpZ1BhdGh9OmAsIChlcnJvciBhcyBFcnJvcikubWVzc2FnZSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgUGx1Z2luSW5mbyB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTaGFyZWREZXBlbmRlbmNpZXMocGx1Z2luSW5mbzogUGx1Z2luSW5mbykge1xuICAvLyBHZXQgZXZlcnktcGx1Z2luIHBhY2thZ2UgaW5mbyBmb3IgdmVyc2lvbiBjb25zdHJhaW50c1xuICBjb25zdCBldmVyeVBsdWdpblBrZyA9IHJlcXVpcmUoJ2V2ZXJ5LXBsdWdpbi9wYWNrYWdlLmpzb24nKTtcblxuICByZXR1cm4ge1xuICAgICdldmVyeS1wbHVnaW4nOiB7XG4gICAgICB2ZXJzaW9uOiBldmVyeVBsdWdpblBrZy52ZXJzaW9uLFxuICAgICAgc2luZ2xldG9uOiB0cnVlLFxuICAgICAgcmVxdWlyZWRWZXJzaW9uOiBgJHtldmVyeVBsdWdpblBrZy52ZXJzaW9ufWAsXG4gICAgICBzdHJpY3RWZXJzaW9uOiBmYWxzZSxcbiAgICAgIGVhZ2VyOiBmYWxzZSxcbiAgICB9LFxuICAgIGVmZmVjdDoge1xuICAgICAgdmVyc2lvbjogZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzLmVmZmVjdCxcbiAgICAgIHNpbmdsZXRvbjogdHJ1ZSxcbiAgICAgIHJlcXVpcmVkVmVyc2lvbjogYCR7ZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzLmVmZmVjdH1gLFxuICAgICAgc3RyaWN0VmVyc2lvbjogZmFsc2UsXG4gICAgICBlYWdlcjogZmFsc2UsXG4gICAgfSxcbiAgICB6b2Q6IHtcbiAgICAgIHZlcnNpb246IGV2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llcy56b2QsXG4gICAgICBzaW5nbGV0b246IHRydWUsXG4gICAgICByZXF1aXJlZFZlcnNpb246IGAke2V2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llcy56b2R9YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gICAgJ0BvcnBjL2NvbnRyYWN0Jzoge1xuICAgICAgdmVyc2lvbjogZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzWydAb3JwYy9jb250cmFjdCddLFxuICAgICAgc2luZ2xldG9uOiB0cnVlLFxuICAgICAgcmVxdWlyZWRWZXJzaW9uOiBgJHtldmVyeVBsdWdpblBrZy5kZXBlbmRlbmNpZXNbJ0BvcnBjL2NvbnRyYWN0J119YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gICAgJ0BvcnBjL3NlcnZlcic6IHtcbiAgICAgIHZlcnNpb246IGV2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llc1snQG9ycGMvc2VydmVyJ10sXG4gICAgICBzaW5nbGV0b246IHRydWUsXG4gICAgICByZXF1aXJlZFZlcnNpb246IGAke2V2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llc1snQG9ycGMvc2VydmVyJ119YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gIH07XG59XG4iLCJpbXBvcnQgdHlwZSB7IFBsdWdpbkluZm8gfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNldHVwUGx1Z2luTWlkZGxld2FyZShkZXZTZXJ2ZXI6IGFueSwgcGx1Z2luSW5mbzogUGx1Z2luSW5mbywgZGV2Q29uZmlnOiBhbnksIHBvcnQ6IG51bWJlcikge1xuICBsZXQgaGFuZGxlcnM6IHsgcnBjOiBhbnksIGFwaTogYW55IH0gPSB7IHJwYzogbnVsbCwgYXBpOiBudWxsIH07XG5cbiAgKGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBjcmVhdGVQbHVnaW5SdW50aW1lIH0gPSBhd2FpdCBpbXBvcnQoJ2V2ZXJ5LXBsdWdpbicpO1xuICAgICAgY29uc3QgeyBSUENIYW5kbGVyIH0gPSBhd2FpdCBpbXBvcnQoJ0BvcnBjL3NlcnZlci9mZXRjaCcpO1xuICAgICAgY29uc3QgeyBvbkVycm9yIH0gPSBhd2FpdCBpbXBvcnQoJ0BvcnBjL3NlcnZlcicpO1xuICAgICAgY29uc3QgeyBPcGVuQVBJSGFuZGxlciB9ID0gYXdhaXQgaW1wb3J0KCdAb3JwYy9vcGVuYXBpL2ZldGNoJyk7XG4gICAgICBjb25zdCB7IE9wZW5BUElSZWZlcmVuY2VQbHVnaW4gfSA9IGF3YWl0IGltcG9ydCgnQG9ycGMvb3BlbmFwaS9wbHVnaW5zJyk7XG4gICAgICBjb25zdCB7IFpvZFRvSnNvblNjaGVtYUNvbnZlcnRlciB9ID0gYXdhaXQgaW1wb3J0KCdAb3JwYy96b2Qvem9kNCcpO1xuXG4gICAgICBjb25zdCBwbHVnaW5JZCA9IGRldkNvbmZpZz8ucGx1Z2luSWQgfHwgcGx1Z2luSW5mby5ub3JtYWxpemVkTmFtZTtcblxuICAgICAgY29uc3QgcnVudGltZSA9IGNyZWF0ZVBsdWdpblJ1bnRpbWUoe1xuICAgICAgICByZWdpc3RyeToge1xuICAgICAgICAgIFtwbHVnaW5JZF06IHtcbiAgICAgICAgICAgIHJlbW90ZVVybDogYGh0dHA6Ly9sb2NhbGhvc3Q6JHtwb3J0fS9yZW1vdGVFbnRyeS5qc2BcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBsb2FkZWQgPSBhd2FpdCBydW50aW1lLnVzZVBsdWdpbihwbHVnaW5JZCwgZGV2Q29uZmlnPy5jb25maWcpO1xuXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG5vIHR5cGVcbiAgICAgIGhhbmRsZXJzLnJwYyA9IG5ldyBSUENIYW5kbGVyKGxvYWRlZC5yb3V0ZXIsIHtcbiAgICAgICAgaW50ZXJjZXB0b3JzOiBbXG4gICAgICAgICAgb25FcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcign8J+UtCBSUEMgRXJyb3I6JywgZXJyb3IpO1xuICAgICAgICAgIH0pLFxuICAgICAgICBdXG4gICAgICB9KTtcblxuICAgICAgLy8gQ3JlYXRlIE9wZW5BUEkgaGFuZGxlciBmb3IgZG9jdW1lbnRhdGlvblxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBubyB0eXBlXG4gICAgICBoYW5kbGVycy5hcGkgPSBuZXcgT3BlbkFQSUhhbmRsZXIobG9hZGVkLnJvdXRlciwge1xuICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgbmV3IE9wZW5BUElSZWZlcmVuY2VQbHVnaW4oe1xuICAgICAgICAgICAgc2NoZW1hQ29udmVydGVyczogW25ldyBab2RUb0pzb25TY2hlbWFDb252ZXJ0ZXIoKV0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIGludGVyY2VwdG9yczogW1xuICAgICAgICAgIG9uRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ/CflLQgT3BlbkFQSSBFcnJvcjonLCBlcnJvcik7XG4gICAgICAgICAgfSksXG4gICAgICAgIF1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zb2xlLmxvZyhg4pWt4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSCICDinIUgUGx1Z2luIGRldiBzZXJ2ZXIgcmVhZHk6IGApO1xuICAgICAgY29uc29sZS5sb2coYOKUnOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgGApO1xuICAgICAgY29uc29sZS5sb2coYOKUgiAg8J+ToSBSUEM6ICAgIGh0dHA6Ly9sb2NhbGhvc3Q6JHtwb3J0fS9hcGkvcnBjYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSCICDwn5OWIERvY3M6ICAgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L2FwaWApO1xuICAgICAgY29uc29sZS5sb2coYOKUgiAg8J+SmiBIZWFsdGg6IGh0dHA6Ly9sb2NhbGhvc3Q6JHtwb3J0fS9gKTtcbiAgICAgIGNvbnNvbGUubG9nKGDilbDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBgKTtcblxuICAgICAgLy8gU3RvcmUgaGFuZGxlcnMgZm9yIHJvdXRpbmdcbiAgICAgIGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzID0gaGFuZGxlcnM7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ+KdjCBGYWlsZWQgdG8gbG9hZCBwbHVnaW46JywgZXJyb3IpO1xuICAgIH1cbiAgfSkoKTtcblxuICAvLyBSb290IGhlYWx0aCBjaGVja1xuICBkZXZTZXJ2ZXIuYXBwLmdldCgnLycsIChyZXE6IGFueSwgcmVzOiBhbnkpID0+IHtcbiAgICByZXMuanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHBsdWdpbjogcGx1Z2luSW5mby5ub3JtYWxpemVkTmFtZSxcbiAgICAgIHZlcnNpb246IHBsdWdpbkluZm8udmVyc2lvbixcbiAgICAgIHN0YXR1czogZGV2U2VydmVyLmFwcC5sb2NhbHMuaGFuZGxlcnM/LnJwYyA/ICdyZWFkeScgOiAnbG9hZGluZycsXG4gICAgICBlbmRwb2ludHM6IHtcbiAgICAgICAgaGVhbHRoOiAnLycsXG4gICAgICAgIGRvY3M6ICcvYXBpJyxcbiAgICAgICAgcnBjOiAnL2FwaS9ycGMnXG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBhbmQgUkVTVCBlbmRwb2ludHMgYXQgL2FwaSBhbmQgL2FwaS8qXG4gIGNvbnN0IGhhbmRsZUFwaVJlcXVlc3QgPSBhc3luYyAocmVxOiBhbnksIHJlczogYW55KSA9PiB7XG4gICAgY29uc3QgYXBpSGFuZGxlciA9IGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzPy5hcGk7XG4gICAgaWYgKCFhcGlIYW5kbGVyKSB7XG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDMpLmpzb24oeyBlcnJvcjogJ1BsdWdpbiBzdGlsbCBsb2FkaW5nLi4uJyB9KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsID0gYGh0dHA6Ly8ke3JlcS5oZWFkZXJzLmhvc3R9JHtyZXEudXJsfWA7XG4gICAgICBjb25zdCB3ZWJSZXF1ZXN0ID0gbmV3IFJlcXVlc3QodXJsLCB7XG4gICAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMsXG4gICAgICAgIGJvZHk6IHJlcS5tZXRob2QgIT09ICdHRVQnICYmIHJlcS5tZXRob2QgIT09ICdIRUFEJyA/IHJlcSA6IHVuZGVmaW5lZFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwaUhhbmRsZXIuaGFuZGxlKHdlYlJlcXVlc3QsIHtcbiAgICAgICAgcHJlZml4OiAnL2FwaScsXG4gICAgICAgIGNvbnRleHQ6IHt9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHJlc3VsdC5yZXNwb25zZSkge1xuICAgICAgICByZXMuc3RhdHVzKHJlc3VsdC5yZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICByZXN1bHQucmVzcG9uc2UuaGVhZGVycy5mb3JFYWNoKCh2YWx1ZTogc3RyaW5nLCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIHJlcy5zZXRIZWFkZXIoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgcmVzdWx0LnJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgcmVzLnNlbmQodGV4dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXMuc3RhdHVzKDQwNCkuc2VuZCgnTm90IEZvdW5kJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ09wZW5BUEkgZXJyb3I6JywgZXJyb3IpO1xuICAgICAgcmVzLnN0YXR1cyg1MDApLmpzb24oeyBlcnJvcjogKGVycm9yIGFzIEVycm9yKS5tZXNzYWdlIH0pO1xuICAgIH1cbiAgfTtcblxuICBkZXZTZXJ2ZXIuYXBwLmFsbCgnL2FwaScsIGhhbmRsZUFwaVJlcXVlc3QpO1xuICBkZXZTZXJ2ZXIuYXBwLmFsbCgnL2FwaS8qJywgaGFuZGxlQXBpUmVxdWVzdCk7XG5cbiAgLy8gUlBDIGNhbGxzIGF0IC9hcGkvcnBjLypcbiAgZGV2U2VydmVyLmFwcC5hbGwoJy9hcGkvcnBjLyonLCBhc3luYyAocmVxOiBhbnksIHJlczogYW55KSA9PiB7XG4gICAgY29uc3QgcnBjSGFuZGxlciA9IGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzPy5ycGM7XG4gICAgaWYgKCFycGNIYW5kbGVyKSB7XG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDMpLmpzb24oeyBlcnJvcjogJ1BsdWdpbiBzdGlsbCBsb2FkaW5nLi4uJyB9KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsID0gYGh0dHA6Ly8ke3JlcS5oZWFkZXJzLmhvc3R9JHtyZXEudXJsfWA7XG4gICAgICBjb25zdCB3ZWJSZXF1ZXN0ID0gbmV3IFJlcXVlc3QodXJsLCB7XG4gICAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMsXG4gICAgICAgIGJvZHk6IHJlcS5tZXRob2QgIT09ICdHRVQnICYmIHJlcS5tZXRob2QgIT09ICdIRUFEJyA/IHJlcSA6IHVuZGVmaW5lZFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJwY0hhbmRsZXIuaGFuZGxlKHdlYlJlcXVlc3QsIHtcbiAgICAgICAgcHJlZml4OiAnL2FwaS9ycGMnLFxuICAgICAgICBjb250ZXh0OiB7fVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChyZXN1bHQucmVzcG9uc2UpIHtcbiAgICAgICAgcmVzLnN0YXR1cyhyZXN1bHQucmVzcG9uc2Uuc3RhdHVzKTtcbiAgICAgICAgcmVzdWx0LnJlc3BvbnNlLmhlYWRlcnMuZm9yRWFjaCgodmFsdWU6IHN0cmluZywga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICByZXMuc2V0SGVhZGVyKGtleSwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IHJlc3VsdC5yZXNwb25zZS50ZXh0KCk7XG4gICAgICAgIHJlcy5zZW5kKHRleHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzLnN0YXR1cyg0MDQpLnNlbmQoJ05vdCBGb3VuZCcpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdSUEMgZXJyb3I6JywgZXJyb3IpO1xuICAgICAgcmVzLnN0YXR1cyg1MDApLmpzb24oeyBlcnJvcjogKGVycm9yIGFzIEVycm9yKS5tZXNzYWdlIH0pO1xuICAgIH1cbiAgfSk7XG59XG4iLCJpbXBvcnQgdHlwZSB7IENvbXBpbGVyLCBSc3BhY2tQbHVnaW5JbnN0YW5jZSB9IGZyb20gJ0Byc3BhY2svY29yZSc7XG5pbXBvcnQgeyByc3BhY2sgfSBmcm9tICdAcnNwYWNrL2NvcmUnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGdldFBsdWdpbkluZm8gfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGxvYWREZXZDb25maWcgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGJ1aWxkU2hhcmVkRGVwZW5kZW5jaWVzIH0gZnJvbSAnLi9tb2R1bGUtZmVkZXJhdGlvbic7XG5pbXBvcnQgeyBzZXR1cFBsdWdpbk1pZGRsZXdhcmUgfSBmcm9tICcuL2Rldi1zZXJ2ZXItbWlkZGxld2FyZSc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBFdmVyeVBsdWdpbk9wdGlvbnMge1xuICBkZXZDb25maWdQYXRoPzogc3RyaW5nOyAgLy8gZGVmYXVsdHMgdG8gJy4vcGx1Z2luLmRldi50cydcbiAgcG9ydD86IG51bWJlcjsgICAgICAgICAgIC8vIG92ZXJyaWRlIHBsdWdpbi5kZXYudHMgcG9ydFxuICBwbHVnaW5JZD86IHN0cmluZzsgICAgICAgLy8gb3ZlcnJpZGUgYXV0by1kZXRlY3RlZFxufVxuXG5leHBvcnQgY2xhc3MgRXZlcnlQbHVnaW5EZXZTZXJ2ZXIgaW1wbGVtZW50cyBSc3BhY2tQbHVnaW5JbnN0YW5jZSB7XG4gIG5hbWUgPSAnRXZlcnlQbHVnaW5EZXZTZXJ2ZXInO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3B0aW9uczogRXZlcnlQbHVnaW5PcHRpb25zID0ge30pIHt9XG5cbiAgYXBwbHkoY29tcGlsZXI6IENvbXBpbGVyKSB7XG4gICAgLy8gTG9hZCBjb25maWd1cmF0aW9uXG4gICAgY29uc3QgcGx1Z2luSW5mbyA9IGdldFBsdWdpbkluZm8oY29tcGlsZXIub3B0aW9ucy5jb250ZXh0IHx8IHByb2Nlc3MuY3dkKCkpO1xuICAgIGNvbnN0IGRldkNvbmZpZyA9IGxvYWREZXZDb25maWcodGhpcy5vcHRpb25zLmRldkNvbmZpZ1BhdGggfHwgJy4vcGx1Z2luLmRldi50cycpO1xuICAgIGNvbnN0IHBvcnQgPSB0aGlzLm9wdGlvbnMucG9ydCB8fCBkZXZDb25maWc/LnBvcnQgfHwgMzk5OTtcblxuICAgIC8vIENvbmZpZ3VyZSBkZWZhdWx0cyBpbW1lZGlhdGVseSAobm8gaG9va3MgbmVlZGVkKVxuICAgIHRoaXMuY29uZmlndXJlRGVmYXVsdHMoY29tcGlsZXIsIHBsdWdpbkluZm8pO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBkZXZTZXJ2ZXIgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyID0ge307XG4gICAgfVxuXG4gICAgLy8gQ29uZmlndXJlIGRldiBzZXJ2ZXJcbiAgICB0aGlzLmNvbmZpZ3VyZURldlNlcnZlcihjb21waWxlciwgcGx1Z2luSW5mbywgZGV2Q29uZmlnLCBwb3J0KTtcblxuICAgIC8vIEFwcGx5IE1vZHVsZSBGZWRlcmF0aW9uIHBsdWdpblxuICAgIG5ldyByc3BhY2suY29udGFpbmVyLk1vZHVsZUZlZGVyYXRpb25QbHVnaW4oe1xuICAgICAgbmFtZTogcGx1Z2luSW5mby5ub3JtYWxpemVkTmFtZSxcbiAgICAgIGZpbGVuYW1lOiAncmVtb3RlRW50cnkuanMnLFxuICAgICAgcnVudGltZVBsdWdpbnM6IFtcbiAgICAgICAgcmVxdWlyZS5yZXNvbHZlKCdAbW9kdWxlLWZlZGVyYXRpb24vbm9kZS9ydW50aW1lUGx1Z2luJyksXG4gICAgICBdLFxuICAgICAgbGlicmFyeTogeyB0eXBlOiAnY29tbW9uanMtbW9kdWxlJyB9LFxuICAgICAgZXhwb3Nlczoge1xuICAgICAgICAnLi9wbHVnaW4nOiAnLi9zcmMvaW5kZXgudHMnLFxuICAgICAgfSxcbiAgICAgIHNoYXJlZDogYnVpbGRTaGFyZWREZXBlbmRlbmNpZXMocGx1Z2luSW5mbyksXG4gICAgfSkuYXBwbHkoY29tcGlsZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25maWd1cmVEZWZhdWx0cyhjb21waWxlcjogQ29tcGlsZXIsIHBsdWdpbkluZm86IGFueSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcblxuICAgIC8vIENvbmZpZ3VyZSBvdXRwdXQgZGVmYXVsdHNcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMub3V0cHV0KSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLm91dHB1dCA9IHt9O1xuICAgIH1cbiAgICBjb21waWxlci5vcHRpb25zLm91dHB1dC51bmlxdWVOYW1lID0gcGx1Z2luSW5mby5ub3JtYWxpemVkTmFtZTtcbiAgICBjb21waWxlci5vcHRpb25zLm91dHB1dC5wdWJsaWNQYXRoID0gJ2F1dG8nO1xuICAgIGNvbXBpbGVyLm9wdGlvbnMub3V0cHV0LnBhdGggPSBwYXRoLnJlc29sdmUoY29udGV4dCwgJ2Rpc3QnKTtcbiAgICBjb21waWxlci5vcHRpb25zLm91dHB1dC5jbGVhbiA9IHRydWU7XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQubGlicmFyeSA9IHsgdHlwZTogJ2NvbW1vbmpzLW1vZHVsZScgfTtcblxuICAgIC8vIENvbmZpZ3VyZSBlbnRyeSBpZiBub3Qgc2V0XG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLmVudHJ5KSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLmVudHJ5ID0ge1xuICAgICAgICBtYWluOiB7XG4gICAgICAgICAgaW1wb3J0OiBbJy4vc3JjL2luZGV4J11cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBDb25maWd1cmUgdGFyZ2V0IGFuZCBtb2RlIGRlZmF1bHRzXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLnRhcmdldCkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy50YXJnZXQgPSAnYXN5bmMtbm9kZSc7XG4gICAgfVxuXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLm1vZGUpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMubW9kZSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnID8gJ2RldmVsb3BtZW50JyA6ICdwcm9kdWN0aW9uJztcbiAgICB9XG5cbiAgICAvLyBDb25maWd1cmUgZGV2dG9vbFxuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5kZXZ0b29sKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLmRldnRvb2wgPSAnc291cmNlLW1hcCc7XG4gICAgfVxuXG4gICAgLy8gU3VwcHJlc3MgdmVyYm9zZSBpbmZyYXN0cnVjdHVyZSBsb2dnaW5nXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLmluZnJhc3RydWN0dXJlTG9nZ2luZykge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5pbmZyYXN0cnVjdHVyZUxvZ2dpbmcgPSB7XG4gICAgICAgIGxldmVsOiAnd2FybicsICAvLyBPbmx5IHNob3cgd2FybmluZ3MgYW5kIGVycm9yc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBDb25maWd1cmUgbW9kdWxlIHJ1bGVzIC0gZW5zdXJlIFR5cGVTY3JpcHQgbG9hZGVyIGlzIHByZXNlbnRcbiAgICB0aGlzLmVuc3VyZVR5cGVTY3JpcHRMb2FkZXIoY29tcGlsZXIpO1xuXG4gICAgLy8gQ29uZmlndXJlIHJlc29sdmUgZXh0ZW5zaW9uc1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5yZXNvbHZlKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLnJlc29sdmUgPSB7fTtcbiAgICB9XG4gICAgY29tcGlsZXIub3B0aW9ucy5yZXNvbHZlLmV4dGVuc2lvbnMgPSBbJy4uLicsICcudHN4JywgJy50cyddO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVUeXBlU2NyaXB0TG9hZGVyKGNvbXBpbGVyOiBDb21waWxlcikge1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5tb2R1bGUpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMubW9kdWxlID0geyBydWxlczogW10gfSBhcyBhbnk7XG4gICAgfVxuXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLm1vZHVsZS5ydWxlcykge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5tb2R1bGUucnVsZXMgPSBbXTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBUeXBlU2NyaXB0IGxvYWRlciBpcyBhbHJlYWR5IGNvbmZpZ3VyZWRcbiAgICBjb25zdCBoYXNUc0xvYWRlciA9IGNvbXBpbGVyLm9wdGlvbnMubW9kdWxlLnJ1bGVzLnNvbWUoKHJ1bGU6IGFueSkgPT5cbiAgICAgIHR5cGVvZiBydWxlID09PSAnb2JqZWN0JyAmJlxuICAgICAgcnVsZSAhPT0gbnVsbCAmJlxuICAgICAgJ3Rlc3QnIGluIHJ1bGUgJiZcbiAgICAgIHJ1bGUudGVzdCBpbnN0YW5jZW9mIFJlZ0V4cCAmJlxuICAgICAgcnVsZS50ZXN0LnRlc3QoJy50cycpXG4gICAgKTtcblxuICAgIC8vIEFkZCBUeXBlU2NyaXB0IGxvYWRlciBpZiBub3QgcHJlc2VudFxuICAgIGlmICghaGFzVHNMb2FkZXIpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMubW9kdWxlLnJ1bGVzLnB1c2goe1xuICAgICAgICB0ZXN0OiAvXFwudHN4PyQvLFxuICAgICAgICB1c2U6ICdidWlsdGluOnN3Yy1sb2FkZXInLFxuICAgICAgICBleGNsdWRlOiAvbm9kZV9tb2R1bGVzLyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlRGV2U2VydmVyKGNvbXBpbGVyOiBDb21waWxlciwgcGx1Z2luSW5mbzogYW55LCBkZXZDb25maWc6IGFueSwgcG9ydDogbnVtYmVyKSB7XG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLmRldlNlcnZlcikge1xuICAgICAgcmV0dXJuOyAvLyBTaG91bGQgbmV2ZXIgaGFwcGVuIGR1ZSB0byBjaGVjayBpbiBhcHBseSgpXG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dCA9IGNvbXBpbGVyLm9wdGlvbnMuY29udGV4dCB8fCBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IG9yaWdpbmFsU2V0dXAgPSBjb21waWxlci5vcHRpb25zLmRldlNlcnZlci5zZXR1cE1pZGRsZXdhcmVzO1xuXG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIucG9ydCA9IHBvcnQ7XG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuc3RhdGljID0gcGF0aC5qb2luKGNvbnRleHQsICdkaXN0Jyk7XG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuaG90ID0gdHJ1ZTtcbiAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlci5kZXZNaWRkbGV3YXJlID0geyB3cml0ZVRvRGlzazogdHJ1ZSB9O1xuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLmhlYWRlcnMgPSB7XG4gICAgICAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJzogJyonLFxuICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMnOiAnR0VULCBQT1NULCBQVVQsIERFTEVURSwgUEFUQ0gsIE9QVElPTlMnLFxuICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnOiAnWC1SZXF1ZXN0ZWQtV2l0aCwgY29udGVudC10eXBlLCBBdXRob3JpemF0aW9uJyxcbiAgICB9O1xuXG4gICAgLy8gU3VwcHJlc3MgdmVyYm9zZSBsb2dnaW5nXG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuY2xpZW50ID0ge1xuICAgICAgbG9nZ2luZzogJ3dhcm4nLCAgLy8gT25seSBzaG93IHdhcm5pbmdzIGFuZCBlcnJvcnNcbiAgICAgIG92ZXJsYXk6IHtcbiAgICAgICAgd2FybmluZ3M6IGZhbHNlLCAgLy8gRG9uJ3Qgc2hvdyB3YXJuaW5nIG92ZXJsYXlcbiAgICAgICAgZXJyb3JzOiB0cnVlLCAgICAgLy8gU3RpbGwgc2hvdyBlcnJvcnNcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLnNldHVwTWlkZGxld2FyZXMgPSAobWlkZGxld2FyZXMsIGRldlNlcnZlcikgPT4ge1xuICAgICAgc2V0dXBQbHVnaW5NaWRkbGV3YXJlKGRldlNlcnZlciwgcGx1Z2luSW5mbywgZGV2Q29uZmlnLCBwb3J0KTtcbiAgICAgIHJldHVybiBvcmlnaW5hbFNldHVwID8gb3JpZ2luYWxTZXR1cChtaWRkbGV3YXJlcywgZGV2U2VydmVyKSA6IG1pZGRsZXdhcmVzO1xuICAgIH07XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFZQSxTQUFnQixjQUFjLFNBQTZCO0NBQ3pELE1BQU0sVUFBVSxLQUFLLEtBQUssU0FBUyxlQUFlO0NBQ2xELE1BQU0sTUFBTSxLQUFLLE1BQU0sR0FBRyxhQUFhLFNBQVMsUUFBUSxDQUFDO0FBRXpELFFBQU87RUFDTCxNQUFNLElBQUk7RUFDVixTQUFTLElBQUk7RUFDYixnQkFBZ0Isd0JBQXdCLElBQUksS0FBSztFQUNqRCxjQUFjLElBQUksZ0JBQWdCLEVBQUU7RUFDcEMsa0JBQWtCLElBQUksb0JBQW9CLEVBQUU7RUFDN0M7O0FBR0gsU0FBZ0IsY0FBYyxlQUF1QjtBQUNuRCxLQUFJO0VBQ0YsTUFBTSxXQUFXLEtBQUssUUFBUSxjQUFjO0FBRTVDLG1CQUFlLE1BQU07QUFDckIsbUJBQWUsU0FBUyxDQUFDO1VBQ2xCLE9BQU87QUFDZCxVQUFRLEtBQUssa0NBQWtDLGNBQWMsSUFBSyxNQUFnQixRQUFRO0FBQzFGLFNBQU87Ozs7OztBQy9CWCxTQUFnQix3QkFBd0IsWUFBd0I7Q0FFOUQsTUFBTTtBQUVOLFFBQU87RUFDTCxnQkFBZ0I7R0FDZCxTQUFTLGVBQWU7R0FDeEIsV0FBVztHQUNYLGlCQUFpQixHQUFHLGVBQWU7R0FDbkMsZUFBZTtHQUNmLE9BQU87R0FDUjtFQUNELFFBQVE7R0FDTixTQUFTLGVBQWUsYUFBYTtHQUNyQyxXQUFXO0dBQ1gsaUJBQWlCLEdBQUcsZUFBZSxhQUFhO0dBQ2hELGVBQWU7R0FDZixPQUFPO0dBQ1I7RUFDRCxLQUFLO0dBQ0gsU0FBUyxlQUFlLGFBQWE7R0FDckMsV0FBVztHQUNYLGlCQUFpQixHQUFHLGVBQWUsYUFBYTtHQUNoRCxlQUFlO0dBQ2YsT0FBTztHQUNSO0VBQ0Qsa0JBQWtCO0dBQ2hCLFNBQVMsZUFBZSxhQUFhO0dBQ3JDLFdBQVc7R0FDWCxpQkFBaUIsR0FBRyxlQUFlLGFBQWE7R0FDaEQsZUFBZTtHQUNmLE9BQU87R0FDUjtFQUNELGdCQUFnQjtHQUNkLFNBQVMsZUFBZSxhQUFhO0dBQ3JDLFdBQVc7R0FDWCxpQkFBaUIsR0FBRyxlQUFlLGFBQWE7R0FDaEQsZUFBZTtHQUNmLE9BQU87R0FDUjtFQUNGOzs7OztBQ3hDSCxTQUFnQixzQkFBc0IsV0FBZ0IsWUFBd0IsV0FBZ0IsTUFBYztDQUMxRyxJQUFJQSxXQUFtQztFQUFFLEtBQUs7RUFBTSxLQUFLO0VBQU07QUFFL0QsRUFBQyxZQUFZO0FBQ1gsTUFBSTtHQUNGLE1BQU0sRUFBRSx3QkFBd0IsTUFBTSxPQUFPO0dBQzdDLE1BQU0sRUFBRSxlQUFlLE1BQU0sT0FBTztHQUNwQyxNQUFNLEVBQUUsWUFBWSxNQUFNLE9BQU87R0FDakMsTUFBTSxFQUFFLG1CQUFtQixNQUFNLE9BQU87R0FDeEMsTUFBTSxFQUFFLDJCQUEyQixNQUFNLE9BQU87R0FDaEQsTUFBTSxFQUFFLDZCQUE2QixNQUFNLE9BQU87R0FFbEQsTUFBTSxXQUFXLFdBQVcsWUFBWSxXQUFXO0dBVW5ELE1BQU0sU0FBUyxNQVJDLG9CQUFvQixFQUNsQyxVQUFVLEdBQ1AsV0FBVyxFQUNWLFdBQVcsb0JBQW9CLEtBQUssa0JBQ3JDLEVBQ0YsRUFDRixDQUFDLENBRTJCLFVBQVUsVUFBVSxXQUFXLE9BQU87QUFHbkUsWUFBUyxNQUFNLElBQUksV0FBVyxPQUFPLFFBQVEsRUFDM0MsY0FBYyxDQUNaLFNBQVMsVUFBZTtBQUN0QixZQUFRLE1BQU0saUJBQWlCLE1BQU07S0FDckMsQ0FDSCxFQUNGLENBQUM7QUFJRixZQUFTLE1BQU0sSUFBSSxlQUFlLE9BQU8sUUFBUTtJQUMvQyxTQUFTLENBQ1AsSUFBSSx1QkFBdUIsRUFDekIsa0JBQWtCLENBQUMsSUFBSSwwQkFBMEIsQ0FBQyxFQUNuRCxDQUFDLENBQ0g7SUFDRCxjQUFjLENBQ1osU0FBUyxVQUFlO0FBQ3RCLGFBQVEsTUFBTSxxQkFBcUIsTUFBTTtNQUN6QyxDQUNIO0lBQ0YsQ0FBQztBQUVGLFdBQVEsSUFBSSxpREFBaUQ7QUFDN0QsV0FBUSxJQUFJLGlDQUFpQztBQUM3QyxXQUFRLElBQUksaURBQWlEO0FBQzdELFdBQVEsSUFBSSxrQ0FBa0MsS0FBSyxVQUFVO0FBQzdELFdBQVEsSUFBSSxrQ0FBa0MsS0FBSyxNQUFNO0FBQ3pELFdBQVEsSUFBSSxrQ0FBa0MsS0FBSyxHQUFHO0FBQ3RELFdBQVEsSUFBSSxpREFBaUQ7QUFHN0QsYUFBVSxJQUFJLE9BQU8sV0FBVztXQUN6QixPQUFPO0FBQ2QsV0FBUSxNQUFNLDRCQUE0QixNQUFNOztLQUVoRDtBQUdKLFdBQVUsSUFBSSxJQUFJLE1BQU0sS0FBVSxRQUFhO0FBQzdDLE1BQUksS0FBSztHQUNQLElBQUk7R0FDSixRQUFRLFdBQVc7R0FDbkIsU0FBUyxXQUFXO0dBQ3BCLFFBQVEsVUFBVSxJQUFJLE9BQU8sVUFBVSxNQUFNLFVBQVU7R0FDdkQsV0FBVztJQUNULFFBQVE7SUFDUixNQUFNO0lBQ04sS0FBSztJQUNOO0dBQ0YsQ0FBQztHQUNGO0NBR0YsTUFBTSxtQkFBbUIsT0FBTyxLQUFVLFFBQWE7RUFDckQsTUFBTSxhQUFhLFVBQVUsSUFBSSxPQUFPLFVBQVU7QUFDbEQsTUFBSSxDQUFDLFdBQ0gsUUFBTyxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLDJCQUEyQixDQUFDO0FBR25FLE1BQUk7R0FDRixNQUFNLE1BQU0sVUFBVSxJQUFJLFFBQVEsT0FBTyxJQUFJO0dBQzdDLE1BQU0sYUFBYSxJQUFJLFFBQVEsS0FBSztJQUNsQyxRQUFRLElBQUk7SUFDWixTQUFTLElBQUk7SUFDYixNQUFNLElBQUksV0FBVyxTQUFTLElBQUksV0FBVyxTQUFTLE1BQU07SUFDN0QsQ0FBQztHQUVGLE1BQU0sU0FBUyxNQUFNLFdBQVcsT0FBTyxZQUFZO0lBQ2pELFFBQVE7SUFDUixTQUFTLEVBQUU7SUFDWixDQUFDO0FBRUYsT0FBSSxPQUFPLFVBQVU7QUFDbkIsUUFBSSxPQUFPLE9BQU8sU0FBUyxPQUFPO0FBQ2xDLFdBQU8sU0FBUyxRQUFRLFNBQVMsT0FBZSxRQUFnQjtBQUM5RCxTQUFJLFVBQVUsS0FBSyxNQUFNO01BQ3pCO0lBQ0YsTUFBTSxPQUFPLE1BQU0sT0FBTyxTQUFTLE1BQU07QUFDekMsUUFBSSxLQUFLLEtBQUs7U0FFZCxLQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssWUFBWTtXQUU1QixPQUFPO0FBQ2QsV0FBUSxNQUFNLGtCQUFrQixNQUFNO0FBQ3RDLE9BQUksT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQVEsTUFBZ0IsU0FBUyxDQUFDOzs7QUFJN0QsV0FBVSxJQUFJLElBQUksUUFBUSxpQkFBaUI7QUFDM0MsV0FBVSxJQUFJLElBQUksVUFBVSxpQkFBaUI7QUFHN0MsV0FBVSxJQUFJLElBQUksY0FBYyxPQUFPLEtBQVUsUUFBYTtFQUM1RCxNQUFNLGFBQWEsVUFBVSxJQUFJLE9BQU8sVUFBVTtBQUNsRCxNQUFJLENBQUMsV0FDSCxRQUFPLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sMkJBQTJCLENBQUM7QUFHbkUsTUFBSTtHQUNGLE1BQU0sTUFBTSxVQUFVLElBQUksUUFBUSxPQUFPLElBQUk7R0FDN0MsTUFBTSxhQUFhLElBQUksUUFBUSxLQUFLO0lBQ2xDLFFBQVEsSUFBSTtJQUNaLFNBQVMsSUFBSTtJQUNiLE1BQU0sSUFBSSxXQUFXLFNBQVMsSUFBSSxXQUFXLFNBQVMsTUFBTTtJQUM3RCxDQUFDO0dBRUYsTUFBTSxTQUFTLE1BQU0sV0FBVyxPQUFPLFlBQVk7SUFDakQsUUFBUTtJQUNSLFNBQVMsRUFBRTtJQUNaLENBQUM7QUFFRixPQUFJLE9BQU8sVUFBVTtBQUNuQixRQUFJLE9BQU8sT0FBTyxTQUFTLE9BQU87QUFDbEMsV0FBTyxTQUFTLFFBQVEsU0FBUyxPQUFlLFFBQWdCO0FBQzlELFNBQUksVUFBVSxLQUFLLE1BQU07TUFDekI7SUFDRixNQUFNLE9BQU8sTUFBTSxPQUFPLFNBQVMsTUFBTTtBQUN6QyxRQUFJLEtBQUssS0FBSztTQUVkLEtBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxZQUFZO1dBRTVCLE9BQU87QUFDZCxXQUFRLE1BQU0sY0FBYyxNQUFNO0FBQ2xDLE9BQUksT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQVEsTUFBZ0IsU0FBUyxDQUFDOztHQUUzRDs7Ozs7QUMxSUosSUFBYSx1QkFBYixNQUFrRTtDQUNoRSxPQUFPO0NBRVAsWUFBWSxBQUFRQyxVQUE4QixFQUFFLEVBQUU7RUFBbEM7O0NBRXBCLE1BQU0sVUFBb0I7RUFFeEIsTUFBTSxhQUFhLGNBQWMsU0FBUyxRQUFRLFdBQVcsUUFBUSxLQUFLLENBQUM7RUFDM0UsTUFBTSxZQUFZLGNBQWMsS0FBSyxRQUFRLGlCQUFpQixrQkFBa0I7RUFDaEYsTUFBTSxPQUFPLEtBQUssUUFBUSxRQUFRLFdBQVcsUUFBUTtBQUdyRCxPQUFLLGtCQUFrQixVQUFVLFdBQVc7QUFHNUMsTUFBSSxDQUFDLFNBQVMsUUFBUSxVQUNwQixVQUFTLFFBQVEsWUFBWSxFQUFFO0FBSWpDLE9BQUssbUJBQW1CLFVBQVUsWUFBWSxXQUFXLEtBQUs7QUFHOUQsTUFBSSxPQUFPLFVBQVUsdUJBQXVCO0dBQzFDLE1BQU0sV0FBVztHQUNqQixVQUFVO0dBQ1YsZ0JBQWdCLFdBQ04sUUFBUSx3Q0FBd0MsQ0FDekQ7R0FDRCxTQUFTLEVBQUUsTUFBTSxtQkFBbUI7R0FDcEMsU0FBUyxFQUNQLFlBQVksa0JBQ2I7R0FDRCxRQUFRLHdCQUF3QixXQUFXO0dBQzVDLENBQUMsQ0FBQyxNQUFNLFNBQVM7O0NBR3BCLEFBQVEsa0JBQWtCLFVBQW9CLFlBQWlCO0VBQzdELE1BQU0sVUFBVSxTQUFTLFFBQVEsV0FBVyxRQUFRLEtBQUs7QUFHekQsTUFBSSxDQUFDLFNBQVMsUUFBUSxPQUNwQixVQUFTLFFBQVEsU0FBUyxFQUFFO0FBRTlCLFdBQVMsUUFBUSxPQUFPLGFBQWEsV0FBVztBQUNoRCxXQUFTLFFBQVEsT0FBTyxhQUFhO0FBQ3JDLFdBQVMsUUFBUSxPQUFPLE9BQU8sS0FBSyxRQUFRLFNBQVMsT0FBTztBQUM1RCxXQUFTLFFBQVEsT0FBTyxRQUFRO0FBQ2hDLFdBQVMsUUFBUSxPQUFPLFVBQVUsRUFBRSxNQUFNLG1CQUFtQjtBQUc3RCxNQUFJLENBQUMsU0FBUyxRQUFRLE1BQ3BCLFVBQVMsUUFBUSxRQUFRLEVBQ3ZCLE1BQU0sRUFDSixRQUFRLENBQUMsY0FBYyxFQUN4QixFQUNGO0FBSUgsTUFBSSxDQUFDLFNBQVMsUUFBUSxPQUNwQixVQUFTLFFBQVEsU0FBUztBQUc1QixNQUFJLENBQUMsU0FBUyxRQUFRLEtBQ3BCLFVBQVMsUUFBUSxPQUFPLFFBQVEsSUFBSSxhQUFhLGdCQUFnQixnQkFBZ0I7QUFJbkYsTUFBSSxDQUFDLFNBQVMsUUFBUSxRQUNwQixVQUFTLFFBQVEsVUFBVTtBQUk3QixNQUFJLENBQUMsU0FBUyxRQUFRLHNCQUNwQixVQUFTLFFBQVEsd0JBQXdCLEVBQ3ZDLE9BQU8sUUFDUjtBQUlILE9BQUssdUJBQXVCLFNBQVM7QUFHckMsTUFBSSxDQUFDLFNBQVMsUUFBUSxRQUNwQixVQUFTLFFBQVEsVUFBVSxFQUFFO0FBRS9CLFdBQVMsUUFBUSxRQUFRLGFBQWE7R0FBQztHQUFPO0dBQVE7R0FBTTs7Q0FHOUQsQUFBUSx1QkFBdUIsVUFBb0I7QUFDakQsTUFBSSxDQUFDLFNBQVMsUUFBUSxPQUNwQixVQUFTLFFBQVEsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFO0FBR3pDLE1BQUksQ0FBQyxTQUFTLFFBQVEsT0FBTyxNQUMzQixVQUFTLFFBQVEsT0FBTyxRQUFRLEVBQUU7QUFhcEMsTUFBSSxDQVRnQixTQUFTLFFBQVEsT0FBTyxNQUFNLE1BQU0sU0FDdEQsT0FBTyxTQUFTLFlBQ2hCLFNBQVMsUUFDVCxVQUFVLFFBQ1YsS0FBSyxnQkFBZ0IsVUFDckIsS0FBSyxLQUFLLEtBQUssTUFBTSxDQUN0QixDQUlDLFVBQVMsUUFBUSxPQUFPLE1BQU0sS0FBSztHQUNqQyxNQUFNO0dBQ04sS0FBSztHQUNMLFNBQVM7R0FDVixDQUFDOztDQUlOLEFBQVEsbUJBQW1CLFVBQW9CLFlBQWlCLFdBQWdCLE1BQWM7QUFDNUYsTUFBSSxDQUFDLFNBQVMsUUFBUSxVQUNwQjtFQUdGLE1BQU0sVUFBVSxTQUFTLFFBQVEsV0FBVyxRQUFRLEtBQUs7RUFDekQsTUFBTSxnQkFBZ0IsU0FBUyxRQUFRLFVBQVU7QUFFakQsV0FBUyxRQUFRLFVBQVUsT0FBTztBQUNsQyxXQUFTLFFBQVEsVUFBVSxTQUFTLEtBQUssS0FBSyxTQUFTLE9BQU87QUFDOUQsV0FBUyxRQUFRLFVBQVUsTUFBTTtBQUNqQyxXQUFTLFFBQVEsVUFBVSxnQkFBZ0IsRUFBRSxhQUFhLE1BQU07QUFDaEUsV0FBUyxRQUFRLFVBQVUsVUFBVTtHQUNuQywrQkFBK0I7R0FDL0IsZ0NBQWdDO0dBQ2hDLGdDQUFnQztHQUNqQztBQUdELFdBQVMsUUFBUSxVQUFVLFNBQVM7R0FDbEMsU0FBUztHQUNULFNBQVM7SUFDUCxVQUFVO0lBQ1YsUUFBUTtJQUNUO0dBQ0Y7QUFFRCxXQUFTLFFBQVEsVUFBVSxvQkFBb0IsYUFBYSxjQUFjO0FBQ3hFLHlCQUFzQixXQUFXLFlBQVksV0FBVyxLQUFLO0FBQzdELFVBQU8sZ0JBQWdCLGNBQWMsYUFBYSxVQUFVLEdBQUcifQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
|
|
3
|
+
//#region rolldown:runtime
|
|
4
|
+
var __create = Object.create;
|
|
5
|
+
var __defProp = Object.defineProperty;
|
|
6
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
9
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
+
var __commonJS = (cb, mod) => function() {
|
|
11
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
15
|
+
key = keys[i];
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
17
|
+
get: ((k) => from[k]).bind(null, key),
|
|
18
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return to;
|
|
22
|
+
};
|
|
23
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
24
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
25
|
+
value: mod,
|
|
26
|
+
enumerable: true
|
|
27
|
+
}) : target, mod));
|
|
28
|
+
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
29
|
+
|
|
30
|
+
//#endregion
|
|
31
|
+
export { __toESM as i, __reExport as n, __require as r, __commonJS as t };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
//#region rolldown:runtime
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __commonJS = (cb, mod) => function() {
|
|
9
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
13
|
+
key = keys[i];
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
15
|
+
get: ((k) => from[k]).bind(null, key),
|
|
16
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
return to;
|
|
20
|
+
};
|
|
21
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
23
|
+
value: mod,
|
|
24
|
+
enumerable: true
|
|
25
|
+
}) : target, mod));
|
|
26
|
+
|
|
27
|
+
//#endregion
|
|
28
|
+
|
|
29
|
+
Object.defineProperty(exports, '__commonJS', {
|
|
30
|
+
enumerable: true,
|
|
31
|
+
get: function () {
|
|
32
|
+
return __commonJS;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
Object.defineProperty(exports, '__reExport', {
|
|
36
|
+
enumerable: true,
|
|
37
|
+
get: function () {
|
|
38
|
+
return __reExport;
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
Object.defineProperty(exports, '__toESM', {
|
|
42
|
+
enumerable: true,
|
|
43
|
+
get: function () {
|
|
44
|
+
return __toESM;
|
|
45
|
+
}
|
|
46
|
+
});
|
package/dist/effect.cjs
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
var effect = require("effect");
|
|
4
|
+
Object.keys(effect).forEach(function (k) {
|
|
5
|
+
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function () { return effect[k]; }
|
|
8
|
+
});
|
|
9
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "effect";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "effect";
|
package/dist/effect.mjs
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
const require_zod = require('./zod-DYghWCz1.cjs');
|
|
2
|
+
|
|
3
|
+
//#region src/errors.ts
|
|
4
|
+
/**
|
|
5
|
+
* Common error schemas for plugin contracts.
|
|
6
|
+
* Import these to ensure consistent error handling across plugins.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { CommonPluginErrors } from "every-plugin/errors";
|
|
11
|
+
*
|
|
12
|
+
* export const contract = oc.router({
|
|
13
|
+
* getData: oc.route(...)
|
|
14
|
+
* .errors(CommonPluginErrors)
|
|
15
|
+
* });
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
const CommonPluginErrors = {
|
|
19
|
+
UNAUTHORIZED: { data: require_zod.zod_exports.z.object({
|
|
20
|
+
apiKeyProvided: require_zod.zod_exports.z.boolean(),
|
|
21
|
+
provider: require_zod.zod_exports.z.string().optional(),
|
|
22
|
+
authType: require_zod.zod_exports.z.enum([
|
|
23
|
+
"apiKey",
|
|
24
|
+
"oauth",
|
|
25
|
+
"token"
|
|
26
|
+
]).optional()
|
|
27
|
+
}) },
|
|
28
|
+
RATE_LIMITED: { data: require_zod.zod_exports.z.object({
|
|
29
|
+
retryAfter: require_zod.zod_exports.z.number().int().min(1),
|
|
30
|
+
remainingRequests: require_zod.zod_exports.z.number().int().min(0).optional(),
|
|
31
|
+
resetTime: require_zod.zod_exports.z.string().datetime().optional(),
|
|
32
|
+
limitType: require_zod.zod_exports.z.enum([
|
|
33
|
+
"requests",
|
|
34
|
+
"tokens",
|
|
35
|
+
"bandwidth"
|
|
36
|
+
]).optional()
|
|
37
|
+
}) },
|
|
38
|
+
SERVICE_UNAVAILABLE: { data: require_zod.zod_exports.z.object({
|
|
39
|
+
retryAfter: require_zod.zod_exports.z.number().int().optional(),
|
|
40
|
+
maintenanceWindow: require_zod.zod_exports.z.boolean().default(false),
|
|
41
|
+
estimatedUptime: require_zod.zod_exports.z.string().datetime().optional()
|
|
42
|
+
}) },
|
|
43
|
+
BAD_REQUEST: { data: require_zod.zod_exports.z.object({
|
|
44
|
+
invalidFields: require_zod.zod_exports.z.array(require_zod.zod_exports.z.string()).optional(),
|
|
45
|
+
validationErrors: require_zod.zod_exports.z.array(require_zod.zod_exports.z.object({
|
|
46
|
+
field: require_zod.zod_exports.z.string(),
|
|
47
|
+
message: require_zod.zod_exports.z.string(),
|
|
48
|
+
code: require_zod.zod_exports.z.string().optional()
|
|
49
|
+
})).optional()
|
|
50
|
+
}) },
|
|
51
|
+
NOT_FOUND: { data: require_zod.zod_exports.z.object({
|
|
52
|
+
resource: require_zod.zod_exports.z.string().optional(),
|
|
53
|
+
resourceId: require_zod.zod_exports.z.string().optional()
|
|
54
|
+
}) },
|
|
55
|
+
FORBIDDEN: { data: require_zod.zod_exports.z.object({
|
|
56
|
+
requiredPermissions: require_zod.zod_exports.z.array(require_zod.zod_exports.z.string()).optional(),
|
|
57
|
+
action: require_zod.zod_exports.z.string().optional()
|
|
58
|
+
}) }
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
//#endregion
|
|
62
|
+
Object.defineProperty(exports, 'CommonPluginErrors', {
|
|
63
|
+
enumerable: true,
|
|
64
|
+
get: function () {
|
|
65
|
+
return CommonPluginErrors;
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLUNWbm9QbDl2LmNqcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi9zcmMvZXJyb3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiLi96b2RcIjtcblxuLyoqXG4gKiBDb21tb24gZXJyb3Igc2NoZW1hcyBmb3IgcGx1Z2luIGNvbnRyYWN0cy5cbiAqIEltcG9ydCB0aGVzZSB0byBlbnN1cmUgY29uc2lzdGVudCBlcnJvciBoYW5kbGluZyBhY3Jvc3MgcGx1Z2lucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgQ29tbW9uUGx1Z2luRXJyb3JzIH0gZnJvbSBcImV2ZXJ5LXBsdWdpbi9lcnJvcnNcIjtcbiAqXG4gKiBleHBvcnQgY29uc3QgY29udHJhY3QgPSBvYy5yb3V0ZXIoe1xuICogICBnZXREYXRhOiBvYy5yb3V0ZSguLi4pXG4gKiAgICAgLmVycm9ycyhDb21tb25QbHVnaW5FcnJvcnMpXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgQ29tbW9uUGx1Z2luRXJyb3JzID0ge1xuXHRVTkFVVEhPUklaRUQ6IHtcblx0XHRkYXRhOiB6Lm9iamVjdCh7XG5cdFx0XHRhcGlLZXlQcm92aWRlZDogei5ib29sZWFuKCksXG5cdFx0XHRwcm92aWRlcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuXHRcdFx0YXV0aFR5cGU6IHouZW51bShbJ2FwaUtleScsICdvYXV0aCcsICd0b2tlbiddKS5vcHRpb25hbCgpLFxuXHRcdH0pXG5cdH0sXG5cdFJBVEVfTElNSVRFRDoge1xuXHRcdGRhdGE6IHoub2JqZWN0KHtcblx0XHRcdHJldHJ5QWZ0ZXI6IHoubnVtYmVyKCkuaW50KCkubWluKDEpLFxuXHRcdFx0cmVtYWluaW5nUmVxdWVzdHM6IHoubnVtYmVyKCkuaW50KCkubWluKDApLm9wdGlvbmFsKCksXG5cdFx0XHRyZXNldFRpbWU6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5vcHRpb25hbCgpLFxuXHRcdFx0bGltaXRUeXBlOiB6LmVudW0oWydyZXF1ZXN0cycsICd0b2tlbnMnLCAnYmFuZHdpZHRoJ10pLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fSxcblx0U0VSVklDRV9VTkFWQUlMQUJMRToge1xuXHRcdGRhdGE6IHoub2JqZWN0KHtcblx0XHRcdHJldHJ5QWZ0ZXI6IHoubnVtYmVyKCkuaW50KCkub3B0aW9uYWwoKSxcblx0XHRcdG1haW50ZW5hbmNlV2luZG93OiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcblx0XHRcdGVzdGltYXRlZFVwdGltZTogei5zdHJpbmcoKS5kYXRldGltZSgpLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fSxcblx0QkFEX1JFUVVFU1Q6IHtcblx0XHRkYXRhOiB6Lm9iamVjdCh7XG5cdFx0XHRpbnZhbGlkRmllbGRzOiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG5cdFx0XHR2YWxpZGF0aW9uRXJyb3JzOiB6LmFycmF5KHoub2JqZWN0KHtcblx0XHRcdFx0ZmllbGQ6IHouc3RyaW5nKCksXG5cdFx0XHRcdG1lc3NhZ2U6IHouc3RyaW5nKCksXG5cdFx0XHRcdGNvZGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcblx0XHRcdH0pKS5vcHRpb25hbCgpLFxuXHRcdH0pXG5cdH0sXG5cdE5PVF9GT1VORDoge1xuXHRcdGRhdGE6IHoub2JqZWN0KHtcblx0XHRcdHJlc291cmNlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cdFx0XHRyZXNvdXJjZUlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fSxcblx0Rk9SQklEREVOOiB7XG5cdFx0ZGF0YTogei5vYmplY3Qoe1xuXHRcdFx0cmVxdWlyZWRQZXJtaXNzaW9uczogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuXHRcdFx0YWN0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fVxufSBhcyBjb25zdDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsTUFBYSxxQkFBcUI7Q0FDakMsY0FBYyxFQUNiLDhCQUFNLEVBQUUsT0FBTztFQUNkLHdDQUFnQixFQUFFLFNBQVM7RUFDM0Isa0NBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtFQUMvQixrQ0FBVSxFQUFFLEtBQUs7R0FBQztHQUFVO0dBQVM7R0FBUSxDQUFDLENBQUMsVUFBVTtFQUN6RCxDQUFDLEVBQ0Y7Q0FDRCxjQUFjLEVBQ2IsOEJBQU0sRUFBRSxPQUFPO0VBQ2Qsb0NBQVksRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtFQUNuQywyQ0FBbUIsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVU7RUFDckQsbUNBQVcsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLFVBQVU7RUFDM0MsbUNBQVcsRUFBRSxLQUFLO0dBQUM7R0FBWTtHQUFVO0dBQVksQ0FBQyxDQUFDLFVBQVU7RUFDakUsQ0FBQyxFQUNGO0NBQ0QscUJBQXFCLEVBQ3BCLDhCQUFNLEVBQUUsT0FBTztFQUNkLG9DQUFZLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVO0VBQ3ZDLDJDQUFtQixFQUFFLFNBQVMsQ0FBQyxRQUFRLE1BQU07RUFDN0MseUNBQWlCLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxVQUFVO0VBQ2pELENBQUMsRUFDRjtDQUNELGFBQWEsRUFDWiw4QkFBTSxFQUFFLE9BQU87RUFDZCx1Q0FBZSxFQUFFLDhCQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsVUFBVTtFQUM3QywwQ0FBa0IsRUFBRSw4QkFBTSxFQUFFLE9BQU87R0FDbEMsK0JBQU8sRUFBRSxRQUFRO0dBQ2pCLGlDQUFTLEVBQUUsUUFBUTtHQUNuQiw4QkFBTSxFQUFFLFFBQVEsQ0FBQyxVQUFVO0dBQzNCLENBQUMsQ0FBQyxDQUFDLFVBQVU7RUFDZCxDQUFDLEVBQ0Y7Q0FDRCxXQUFXLEVBQ1YsOEJBQU0sRUFBRSxPQUFPO0VBQ2Qsa0NBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtFQUMvQixvQ0FBWSxFQUFFLFFBQVEsQ0FBQyxVQUFVO0VBQ2pDLENBQUMsRUFDRjtDQUNELFdBQVcsRUFDViw4QkFBTSxFQUFFLE9BQU87RUFDZCw2Q0FBcUIsRUFBRSw4QkFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFVBQVU7RUFDbkQsZ0NBQVEsRUFBRSxRQUFRLENBQUMsVUFBVTtFQUM3QixDQUFDLEVBQ0Y7Q0FDRCJ9
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { t as zod_d_exports } from "./zod-D4CFw8d9.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/errors.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Common error schemas for plugin contracts.
|
|
7
|
+
* Import these to ensure consistent error handling across plugins.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { CommonPluginErrors } from "every-plugin/errors";
|
|
12
|
+
*
|
|
13
|
+
* export const contract = oc.router({
|
|
14
|
+
* getData: oc.route(...)
|
|
15
|
+
* .errors(CommonPluginErrors)
|
|
16
|
+
* });
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
declare const CommonPluginErrors: {
|
|
20
|
+
readonly UNAUTHORIZED: {
|
|
21
|
+
readonly data: zod_d_exports.z.ZodObject<{
|
|
22
|
+
apiKeyProvided: zod_d_exports.z.ZodBoolean;
|
|
23
|
+
provider: zod_d_exports.z.ZodOptional<zod_d_exports.z.ZodString>;
|
|
24
|
+
authType: zod_d_exports.z.ZodOptional<zod_d_exports.z.ZodEnum<{
|
|
25
|
+
apiKey: "apiKey";
|
|
26
|
+
oauth: "oauth";
|
|
27
|
+
token: "token";
|
|
28
|
+
}>>;
|
|
29
|
+
}, zod_d_exports.z.core.$strip>;
|
|
30
|
+
};
|
|
31
|
+
readonly RATE_LIMITED: {
|
|
32
|
+
readonly data: zod_d_exports.z.ZodObject<{
|
|
33
|
+
retryAfter: zod_d_exports.z.ZodNumber;
|
|
34
|
+
remainingRequests: zod_d_exports.z.ZodOptional<zod_d_exports.z.ZodNumber>;
|
|
35
|
+
resetTime: zod_d_exports.z.ZodOptional<zod_d_exports.z.ZodString>;
|
|
36
|
+
limitType: zod_d_exports.z.ZodOptional<zod_d_exports.z.ZodEnum<{
|
|
37
|
+
requests: "requests";
|
|
38
|
+
tokens: "tokens";
|
|
39
|
+
bandwidth: "bandwidth";
|
|
40
|
+
}>>;
|
|
41
|
+
}, zod_d_exports.z.core.$strip>;
|
|
42
|
+
};
|
|
43
|
+
readonly SERVICE_UNAVAILABLE: {
|
|
44
|
+
readonly data: zod_d_exports.z.ZodObject<{
|
|
45
|
+
retryAfter: zod_d_exports.z.ZodOptional<zod_d_exports.z.ZodNumber>;
|
|
46
|
+
maintenanceWindow: zod_d_exports.z.ZodDefault<zod_d_exports.z.ZodBoolean>;
|
|
47
|
+
estimatedUptime: zod_d_exports.z.ZodOptional<zod_d_exports.z.ZodString>;
|
|
48
|
+
}, zod_d_exports.z.core.$strip>;
|
|
49
|
+
};
|
|
50
|
+
readonly BAD_REQUEST: {
|
|
51
|
+
readonly data: zod_d_exports.z.ZodObject<{
|
|
52
|
+
invalidFields: zod_d_exports.z.ZodOptional<zod_d_exports.z.ZodArray<zod_d_exports.z.ZodString>>;
|
|
53
|
+
validationErrors: zod_d_exports.z.ZodOptional<zod_d_exports.z.ZodArray<zod_d_exports.z.ZodObject<{
|
|
54
|
+
field: zod_d_exports.z.ZodString;
|
|
55
|
+
message: zod_d_exports.z.ZodString;
|
|
56
|
+
code: zod_d_exports.z.ZodOptional<zod_d_exports.z.ZodString>;
|
|
57
|
+
}, zod_d_exports.z.core.$strip>>>;
|
|
58
|
+
}, zod_d_exports.z.core.$strip>;
|
|
59
|
+
};
|
|
60
|
+
readonly NOT_FOUND: {
|
|
61
|
+
readonly data: zod_d_exports.z.ZodObject<{
|
|
62
|
+
resource: zod_d_exports.z.ZodOptional<zod_d_exports.z.ZodString>;
|
|
63
|
+
resourceId: zod_d_exports.z.ZodOptional<zod_d_exports.z.ZodString>;
|
|
64
|
+
}, zod_d_exports.z.core.$strip>;
|
|
65
|
+
};
|
|
66
|
+
readonly FORBIDDEN: {
|
|
67
|
+
readonly data: zod_d_exports.z.ZodObject<{
|
|
68
|
+
requiredPermissions: zod_d_exports.z.ZodOptional<zod_d_exports.z.ZodArray<zod_d_exports.z.ZodString>>;
|
|
69
|
+
action: zod_d_exports.z.ZodOptional<zod_d_exports.z.ZodString>;
|
|
70
|
+
}, zod_d_exports.z.core.$strip>;
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
//#endregion
|
|
74
|
+
export { CommonPluginErrors as t };
|
|
75
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLUNhcjR0RlZQLmQubXRzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9lcnJvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBZ0JBOzs7Ozs7Ozs7Ozs7Y0FBYSJ9
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { t as zod_exports } from "./zod-BVo51kgJ.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/errors.ts
|
|
4
|
+
/**
|
|
5
|
+
* Common error schemas for plugin contracts.
|
|
6
|
+
* Import these to ensure consistent error handling across plugins.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { CommonPluginErrors } from "every-plugin/errors";
|
|
11
|
+
*
|
|
12
|
+
* export const contract = oc.router({
|
|
13
|
+
* getData: oc.route(...)
|
|
14
|
+
* .errors(CommonPluginErrors)
|
|
15
|
+
* });
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
const CommonPluginErrors = {
|
|
19
|
+
UNAUTHORIZED: { data: zod_exports.z.object({
|
|
20
|
+
apiKeyProvided: zod_exports.z.boolean(),
|
|
21
|
+
provider: zod_exports.z.string().optional(),
|
|
22
|
+
authType: zod_exports.z.enum([
|
|
23
|
+
"apiKey",
|
|
24
|
+
"oauth",
|
|
25
|
+
"token"
|
|
26
|
+
]).optional()
|
|
27
|
+
}) },
|
|
28
|
+
RATE_LIMITED: { data: zod_exports.z.object({
|
|
29
|
+
retryAfter: zod_exports.z.number().int().min(1),
|
|
30
|
+
remainingRequests: zod_exports.z.number().int().min(0).optional(),
|
|
31
|
+
resetTime: zod_exports.z.string().datetime().optional(),
|
|
32
|
+
limitType: zod_exports.z.enum([
|
|
33
|
+
"requests",
|
|
34
|
+
"tokens",
|
|
35
|
+
"bandwidth"
|
|
36
|
+
]).optional()
|
|
37
|
+
}) },
|
|
38
|
+
SERVICE_UNAVAILABLE: { data: zod_exports.z.object({
|
|
39
|
+
retryAfter: zod_exports.z.number().int().optional(),
|
|
40
|
+
maintenanceWindow: zod_exports.z.boolean().default(false),
|
|
41
|
+
estimatedUptime: zod_exports.z.string().datetime().optional()
|
|
42
|
+
}) },
|
|
43
|
+
BAD_REQUEST: { data: zod_exports.z.object({
|
|
44
|
+
invalidFields: zod_exports.z.array(zod_exports.z.string()).optional(),
|
|
45
|
+
validationErrors: zod_exports.z.array(zod_exports.z.object({
|
|
46
|
+
field: zod_exports.z.string(),
|
|
47
|
+
message: zod_exports.z.string(),
|
|
48
|
+
code: zod_exports.z.string().optional()
|
|
49
|
+
})).optional()
|
|
50
|
+
}) },
|
|
51
|
+
NOT_FOUND: { data: zod_exports.z.object({
|
|
52
|
+
resource: zod_exports.z.string().optional(),
|
|
53
|
+
resourceId: zod_exports.z.string().optional()
|
|
54
|
+
}) },
|
|
55
|
+
FORBIDDEN: { data: zod_exports.z.object({
|
|
56
|
+
requiredPermissions: zod_exports.z.array(zod_exports.z.string()).optional(),
|
|
57
|
+
action: zod_exports.z.string().optional()
|
|
58
|
+
}) }
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
//#endregion
|
|
62
|
+
export { CommonPluginErrors as t };
|
|
63
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLUQ3a2VLZjdhLm1qcyIsIm5hbWVzIjpbInoiXSwic291cmNlcyI6WyIuLi9zcmMvZXJyb3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiLi96b2RcIjtcblxuLyoqXG4gKiBDb21tb24gZXJyb3Igc2NoZW1hcyBmb3IgcGx1Z2luIGNvbnRyYWN0cy5cbiAqIEltcG9ydCB0aGVzZSB0byBlbnN1cmUgY29uc2lzdGVudCBlcnJvciBoYW5kbGluZyBhY3Jvc3MgcGx1Z2lucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgQ29tbW9uUGx1Z2luRXJyb3JzIH0gZnJvbSBcImV2ZXJ5LXBsdWdpbi9lcnJvcnNcIjtcbiAqXG4gKiBleHBvcnQgY29uc3QgY29udHJhY3QgPSBvYy5yb3V0ZXIoe1xuICogICBnZXREYXRhOiBvYy5yb3V0ZSguLi4pXG4gKiAgICAgLmVycm9ycyhDb21tb25QbHVnaW5FcnJvcnMpXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgQ29tbW9uUGx1Z2luRXJyb3JzID0ge1xuXHRVTkFVVEhPUklaRUQ6IHtcblx0XHRkYXRhOiB6Lm9iamVjdCh7XG5cdFx0XHRhcGlLZXlQcm92aWRlZDogei5ib29sZWFuKCksXG5cdFx0XHRwcm92aWRlcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuXHRcdFx0YXV0aFR5cGU6IHouZW51bShbJ2FwaUtleScsICdvYXV0aCcsICd0b2tlbiddKS5vcHRpb25hbCgpLFxuXHRcdH0pXG5cdH0sXG5cdFJBVEVfTElNSVRFRDoge1xuXHRcdGRhdGE6IHoub2JqZWN0KHtcblx0XHRcdHJldHJ5QWZ0ZXI6IHoubnVtYmVyKCkuaW50KCkubWluKDEpLFxuXHRcdFx0cmVtYWluaW5nUmVxdWVzdHM6IHoubnVtYmVyKCkuaW50KCkubWluKDApLm9wdGlvbmFsKCksXG5cdFx0XHRyZXNldFRpbWU6IHouc3RyaW5nKCkuZGF0ZXRpbWUoKS5vcHRpb25hbCgpLFxuXHRcdFx0bGltaXRUeXBlOiB6LmVudW0oWydyZXF1ZXN0cycsICd0b2tlbnMnLCAnYmFuZHdpZHRoJ10pLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fSxcblx0U0VSVklDRV9VTkFWQUlMQUJMRToge1xuXHRcdGRhdGE6IHoub2JqZWN0KHtcblx0XHRcdHJldHJ5QWZ0ZXI6IHoubnVtYmVyKCkuaW50KCkub3B0aW9uYWwoKSxcblx0XHRcdG1haW50ZW5hbmNlV2luZG93OiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcblx0XHRcdGVzdGltYXRlZFVwdGltZTogei5zdHJpbmcoKS5kYXRldGltZSgpLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fSxcblx0QkFEX1JFUVVFU1Q6IHtcblx0XHRkYXRhOiB6Lm9iamVjdCh7XG5cdFx0XHRpbnZhbGlkRmllbGRzOiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG5cdFx0XHR2YWxpZGF0aW9uRXJyb3JzOiB6LmFycmF5KHoub2JqZWN0KHtcblx0XHRcdFx0ZmllbGQ6IHouc3RyaW5nKCksXG5cdFx0XHRcdG1lc3NhZ2U6IHouc3RyaW5nKCksXG5cdFx0XHRcdGNvZGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcblx0XHRcdH0pKS5vcHRpb25hbCgpLFxuXHRcdH0pXG5cdH0sXG5cdE5PVF9GT1VORDoge1xuXHRcdGRhdGE6IHoub2JqZWN0KHtcblx0XHRcdHJlc291cmNlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cdFx0XHRyZXNvdXJjZUlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fSxcblx0Rk9SQklEREVOOiB7XG5cdFx0ZGF0YTogei5vYmplY3Qoe1xuXHRcdFx0cmVxdWlyZWRQZXJtaXNzaW9uczogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuXHRcdFx0YWN0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG5cdFx0fSlcblx0fVxufSBhcyBjb25zdDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsTUFBYSxxQkFBcUI7Q0FDakMsY0FBYyxFQUNiLE1BQU1BLGNBQUUsT0FBTztFQUNkLGdCQUFnQkEsY0FBRSxTQUFTO0VBQzNCLFVBQVVBLGNBQUUsUUFBUSxDQUFDLFVBQVU7RUFDL0IsVUFBVUEsY0FBRSxLQUFLO0dBQUM7R0FBVTtHQUFTO0dBQVEsQ0FBQyxDQUFDLFVBQVU7RUFDekQsQ0FBQyxFQUNGO0NBQ0QsY0FBYyxFQUNiLE1BQU1BLGNBQUUsT0FBTztFQUNkLFlBQVlBLGNBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7RUFDbkMsbUJBQW1CQSxjQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVTtFQUNyRCxXQUFXQSxjQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBVTtFQUMzQyxXQUFXQSxjQUFFLEtBQUs7R0FBQztHQUFZO0dBQVU7R0FBWSxDQUFDLENBQUMsVUFBVTtFQUNqRSxDQUFDLEVBQ0Y7Q0FDRCxxQkFBcUIsRUFDcEIsTUFBTUEsY0FBRSxPQUFPO0VBQ2QsWUFBWUEsY0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVU7RUFDdkMsbUJBQW1CQSxjQUFFLFNBQVMsQ0FBQyxRQUFRLE1BQU07RUFDN0MsaUJBQWlCQSxjQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBVTtFQUNqRCxDQUFDLEVBQ0Y7Q0FDRCxhQUFhLEVBQ1osTUFBTUEsY0FBRSxPQUFPO0VBQ2QsZUFBZUEsY0FBRSxNQUFNQSxjQUFFLFFBQVEsQ0FBQyxDQUFDLFVBQVU7RUFDN0Msa0JBQWtCQSxjQUFFLE1BQU1BLGNBQUUsT0FBTztHQUNsQyxPQUFPQSxjQUFFLFFBQVE7R0FDakIsU0FBU0EsY0FBRSxRQUFRO0dBQ25CLE1BQU1BLGNBQUUsUUFBUSxDQUFDLFVBQVU7R0FDM0IsQ0FBQyxDQUFDLENBQUMsVUFBVTtFQUNkLENBQUMsRUFDRjtDQUNELFdBQVcsRUFDVixNQUFNQSxjQUFFLE9BQU87RUFDZCxVQUFVQSxjQUFFLFFBQVEsQ0FBQyxVQUFVO0VBQy9CLFlBQVlBLGNBQUUsUUFBUSxDQUFDLFVBQVU7RUFDakMsQ0FBQyxFQUNGO0NBQ0QsV0FBVyxFQUNWLE1BQU1BLGNBQUUsT0FBTztFQUNkLHFCQUFxQkEsY0FBRSxNQUFNQSxjQUFFLFFBQVEsQ0FBQyxDQUFDLFVBQVU7RUFDbkQsUUFBUUEsY0FBRSxRQUFRLENBQUMsVUFBVTtFQUM3QixDQUFDLEVBQ0Y7Q0FDRCJ9
|