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,267 @@
|
|
|
1
|
+
const require_chunk = require('../../chunk-zltIcp7o.cjs');
|
|
2
|
+
const require_normalize = require('../../normalize-D4Qh0wVk.cjs');
|
|
3
|
+
const require_package$1 = require('../../package-C09aaCqd.cjs');
|
|
4
|
+
let __rspack_core = require("@rspack/core");
|
|
5
|
+
let node_path = require("node:path");
|
|
6
|
+
node_path = require_chunk.__toESM(node_path);
|
|
7
|
+
let node_fs = require("node:fs");
|
|
8
|
+
node_fs = require_chunk.__toESM(node_fs);
|
|
9
|
+
|
|
10
|
+
//#region src/build/rspack/utils.ts
|
|
11
|
+
function getPluginInfo(context) {
|
|
12
|
+
const pkgPath = node_path.default.join(context, "package.json");
|
|
13
|
+
const pkg = JSON.parse(node_fs.default.readFileSync(pkgPath, "utf-8"));
|
|
14
|
+
return {
|
|
15
|
+
name: pkg.name,
|
|
16
|
+
version: pkg.version,
|
|
17
|
+
normalizedName: require_normalize.getNormalizedRemoteName(pkg.name),
|
|
18
|
+
dependencies: pkg.dependencies || {},
|
|
19
|
+
peerDependencies: pkg.peerDependencies || {}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function loadDevConfig(devConfigPath) {
|
|
23
|
+
try {
|
|
24
|
+
const fullPath = node_path.default.resolve(devConfigPath);
|
|
25
|
+
delete require.cache[fullPath];
|
|
26
|
+
return require(fullPath).default;
|
|
27
|
+
} catch (error) {
|
|
28
|
+
console.warn(`Could not load dev config from ${devConfigPath}:`, error.message);
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
//#endregion
|
|
34
|
+
//#region src/build/rspack/module-federation.ts
|
|
35
|
+
function buildSharedDependencies(pluginInfo) {
|
|
36
|
+
const everyPluginPkg = require_package$1.require_package();
|
|
37
|
+
return {
|
|
38
|
+
"every-plugin": {
|
|
39
|
+
version: everyPluginPkg.version,
|
|
40
|
+
singleton: true,
|
|
41
|
+
requiredVersion: `${everyPluginPkg.version}`,
|
|
42
|
+
strictVersion: false,
|
|
43
|
+
eager: false
|
|
44
|
+
},
|
|
45
|
+
effect: {
|
|
46
|
+
version: everyPluginPkg.dependencies.effect,
|
|
47
|
+
singleton: true,
|
|
48
|
+
requiredVersion: `${everyPluginPkg.dependencies.effect}`,
|
|
49
|
+
strictVersion: false,
|
|
50
|
+
eager: false
|
|
51
|
+
},
|
|
52
|
+
zod: {
|
|
53
|
+
version: everyPluginPkg.dependencies.zod,
|
|
54
|
+
singleton: true,
|
|
55
|
+
requiredVersion: `${everyPluginPkg.dependencies.zod}`,
|
|
56
|
+
strictVersion: false,
|
|
57
|
+
eager: false
|
|
58
|
+
},
|
|
59
|
+
"@orpc/contract": {
|
|
60
|
+
version: everyPluginPkg.dependencies["@orpc/contract"],
|
|
61
|
+
singleton: true,
|
|
62
|
+
requiredVersion: `${everyPluginPkg.dependencies["@orpc/contract"]}`,
|
|
63
|
+
strictVersion: false,
|
|
64
|
+
eager: false
|
|
65
|
+
},
|
|
66
|
+
"@orpc/server": {
|
|
67
|
+
version: everyPluginPkg.dependencies["@orpc/server"],
|
|
68
|
+
singleton: true,
|
|
69
|
+
requiredVersion: `${everyPluginPkg.dependencies["@orpc/server"]}`,
|
|
70
|
+
strictVersion: false,
|
|
71
|
+
eager: false
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
//#endregion
|
|
77
|
+
//#region src/build/rspack/dev-server-middleware.ts
|
|
78
|
+
function setupPluginMiddleware(devServer, pluginInfo, devConfig, port) {
|
|
79
|
+
let handlers = {
|
|
80
|
+
rpc: null,
|
|
81
|
+
api: null
|
|
82
|
+
};
|
|
83
|
+
(async () => {
|
|
84
|
+
try {
|
|
85
|
+
const { createPluginRuntime } = await Promise.resolve().then(() => require("../../index.cjs"));
|
|
86
|
+
const { RPCHandler } = await import("@orpc/server/fetch");
|
|
87
|
+
const { onError } = await import("@orpc/server");
|
|
88
|
+
const { OpenAPIHandler } = await Promise.resolve().then(() => require("../../fetch-Cc95-7kM.cjs"));
|
|
89
|
+
const { OpenAPIReferencePlugin } = await Promise.resolve().then(() => require("../../plugins-C-7lh5gK.cjs"));
|
|
90
|
+
const { ZodToJsonSchemaConverter } = await Promise.resolve().then(() => require("../../zod4-BXTBR1od.cjs"));
|
|
91
|
+
const pluginId = devConfig?.pluginId || pluginInfo.normalizedName;
|
|
92
|
+
const loaded = await createPluginRuntime({ registry: { [pluginId]: { remoteUrl: `http://localhost:${port}/remoteEntry.js` } } }).usePlugin(pluginId, devConfig?.config);
|
|
93
|
+
handlers.rpc = new RPCHandler(loaded.router, { interceptors: [onError((error) => {
|
|
94
|
+
console.error("🔴 RPC Error:", error);
|
|
95
|
+
})] });
|
|
96
|
+
handlers.api = new OpenAPIHandler(loaded.router, {
|
|
97
|
+
plugins: [new OpenAPIReferencePlugin({ schemaConverters: [new ZodToJsonSchemaConverter()] })],
|
|
98
|
+
interceptors: [onError((error) => {
|
|
99
|
+
console.error("🔴 OpenAPI Error:", error);
|
|
100
|
+
})]
|
|
101
|
+
});
|
|
102
|
+
console.log(`╭─────────────────────────────────────────────`);
|
|
103
|
+
console.log(`│ ✅ Plugin dev server ready: `);
|
|
104
|
+
console.log(`├─────────────────────────────────────────────`);
|
|
105
|
+
console.log(`│ 📡 RPC: http://localhost:${port}/api/rpc`);
|
|
106
|
+
console.log(`│ 📖 Docs: http://localhost:${port}/api`);
|
|
107
|
+
console.log(`│ 💚 Health: http://localhost:${port}/`);
|
|
108
|
+
console.log(`╰─────────────────────────────────────────────`);
|
|
109
|
+
devServer.app.locals.handlers = handlers;
|
|
110
|
+
} catch (error) {
|
|
111
|
+
console.error("❌ Failed to load plugin:", error);
|
|
112
|
+
}
|
|
113
|
+
})();
|
|
114
|
+
devServer.app.get("/", (req, res) => {
|
|
115
|
+
res.json({
|
|
116
|
+
ok: true,
|
|
117
|
+
plugin: pluginInfo.normalizedName,
|
|
118
|
+
version: pluginInfo.version,
|
|
119
|
+
status: devServer.app.locals.handlers?.rpc ? "ready" : "loading",
|
|
120
|
+
endpoints: {
|
|
121
|
+
health: "/",
|
|
122
|
+
docs: "/api",
|
|
123
|
+
rpc: "/api/rpc"
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
const handleApiRequest = async (req, res) => {
|
|
128
|
+
const apiHandler = devServer.app.locals.handlers?.api;
|
|
129
|
+
if (!apiHandler) return res.status(503).json({ error: "Plugin still loading..." });
|
|
130
|
+
try {
|
|
131
|
+
const url = `http://${req.headers.host}${req.url}`;
|
|
132
|
+
const webRequest = new Request(url, {
|
|
133
|
+
method: req.method,
|
|
134
|
+
headers: req.headers,
|
|
135
|
+
body: req.method !== "GET" && req.method !== "HEAD" ? req : void 0
|
|
136
|
+
});
|
|
137
|
+
const result = await apiHandler.handle(webRequest, {
|
|
138
|
+
prefix: "/api",
|
|
139
|
+
context: {}
|
|
140
|
+
});
|
|
141
|
+
if (result.response) {
|
|
142
|
+
res.status(result.response.status);
|
|
143
|
+
result.response.headers.forEach((value, key) => {
|
|
144
|
+
res.setHeader(key, value);
|
|
145
|
+
});
|
|
146
|
+
const text = await result.response.text();
|
|
147
|
+
res.send(text);
|
|
148
|
+
} else res.status(404).send("Not Found");
|
|
149
|
+
} catch (error) {
|
|
150
|
+
console.error("OpenAPI error:", error);
|
|
151
|
+
res.status(500).json({ error: error.message });
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
devServer.app.all("/api", handleApiRequest);
|
|
155
|
+
devServer.app.all("/api/*", handleApiRequest);
|
|
156
|
+
devServer.app.all("/api/rpc/*", async (req, res) => {
|
|
157
|
+
const rpcHandler = devServer.app.locals.handlers?.rpc;
|
|
158
|
+
if (!rpcHandler) return res.status(503).json({ error: "Plugin still loading..." });
|
|
159
|
+
try {
|
|
160
|
+
const url = `http://${req.headers.host}${req.url}`;
|
|
161
|
+
const webRequest = new Request(url, {
|
|
162
|
+
method: req.method,
|
|
163
|
+
headers: req.headers,
|
|
164
|
+
body: req.method !== "GET" && req.method !== "HEAD" ? req : void 0
|
|
165
|
+
});
|
|
166
|
+
const result = await rpcHandler.handle(webRequest, {
|
|
167
|
+
prefix: "/api/rpc",
|
|
168
|
+
context: {}
|
|
169
|
+
});
|
|
170
|
+
if (result.response) {
|
|
171
|
+
res.status(result.response.status);
|
|
172
|
+
result.response.headers.forEach((value, key) => {
|
|
173
|
+
res.setHeader(key, value);
|
|
174
|
+
});
|
|
175
|
+
const text = await result.response.text();
|
|
176
|
+
res.send(text);
|
|
177
|
+
} else res.status(404).send("Not Found");
|
|
178
|
+
} catch (error) {
|
|
179
|
+
console.error("RPC error:", error);
|
|
180
|
+
res.status(500).json({ error: error.message });
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
//#endregion
|
|
186
|
+
//#region src/build/rspack/plugin.ts
|
|
187
|
+
var EveryPluginDevServer = class {
|
|
188
|
+
name = "EveryPluginDevServer";
|
|
189
|
+
constructor(options = {}) {
|
|
190
|
+
this.options = options;
|
|
191
|
+
}
|
|
192
|
+
apply(compiler) {
|
|
193
|
+
const pluginInfo = getPluginInfo(compiler.options.context || process.cwd());
|
|
194
|
+
const devConfig = loadDevConfig(this.options.devConfigPath || "./plugin.dev.ts");
|
|
195
|
+
const port = this.options.port || devConfig?.port || 3999;
|
|
196
|
+
this.configureDefaults(compiler, pluginInfo);
|
|
197
|
+
if (!compiler.options.devServer) compiler.options.devServer = {};
|
|
198
|
+
this.configureDevServer(compiler, pluginInfo, devConfig, port);
|
|
199
|
+
new __rspack_core.rspack.container.ModuleFederationPlugin({
|
|
200
|
+
name: pluginInfo.normalizedName,
|
|
201
|
+
filename: "remoteEntry.js",
|
|
202
|
+
runtimePlugins: [require.resolve("@module-federation/node/runtimePlugin")],
|
|
203
|
+
library: { type: "commonjs-module" },
|
|
204
|
+
exposes: { "./plugin": "./src/index.ts" },
|
|
205
|
+
shared: buildSharedDependencies(pluginInfo)
|
|
206
|
+
}).apply(compiler);
|
|
207
|
+
}
|
|
208
|
+
configureDefaults(compiler, pluginInfo) {
|
|
209
|
+
const context = compiler.options.context || process.cwd();
|
|
210
|
+
if (!compiler.options.output) compiler.options.output = {};
|
|
211
|
+
compiler.options.output.uniqueName = pluginInfo.normalizedName;
|
|
212
|
+
compiler.options.output.publicPath = "auto";
|
|
213
|
+
compiler.options.output.path = node_path.default.resolve(context, "dist");
|
|
214
|
+
compiler.options.output.clean = true;
|
|
215
|
+
compiler.options.output.library = { type: "commonjs-module" };
|
|
216
|
+
if (!compiler.options.entry) compiler.options.entry = { main: { import: ["./src/index"] } };
|
|
217
|
+
if (!compiler.options.target) compiler.options.target = "async-node";
|
|
218
|
+
if (!compiler.options.mode) compiler.options.mode = process.env.NODE_ENV === "development" ? "development" : "production";
|
|
219
|
+
if (!compiler.options.devtool) compiler.options.devtool = "source-map";
|
|
220
|
+
if (!compiler.options.infrastructureLogging) compiler.options.infrastructureLogging = { level: "warn" };
|
|
221
|
+
this.ensureTypeScriptLoader(compiler);
|
|
222
|
+
if (!compiler.options.resolve) compiler.options.resolve = {};
|
|
223
|
+
compiler.options.resolve.extensions = [
|
|
224
|
+
"...",
|
|
225
|
+
".tsx",
|
|
226
|
+
".ts"
|
|
227
|
+
];
|
|
228
|
+
}
|
|
229
|
+
ensureTypeScriptLoader(compiler) {
|
|
230
|
+
if (!compiler.options.module) compiler.options.module = { rules: [] };
|
|
231
|
+
if (!compiler.options.module.rules) compiler.options.module.rules = [];
|
|
232
|
+
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({
|
|
233
|
+
test: /\.tsx?$/,
|
|
234
|
+
use: "builtin:swc-loader",
|
|
235
|
+
exclude: /node_modules/
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
configureDevServer(compiler, pluginInfo, devConfig, port) {
|
|
239
|
+
if (!compiler.options.devServer) return;
|
|
240
|
+
const context = compiler.options.context || process.cwd();
|
|
241
|
+
const originalSetup = compiler.options.devServer.setupMiddlewares;
|
|
242
|
+
compiler.options.devServer.port = port;
|
|
243
|
+
compiler.options.devServer.static = node_path.default.join(context, "dist");
|
|
244
|
+
compiler.options.devServer.hot = true;
|
|
245
|
+
compiler.options.devServer.devMiddleware = { writeToDisk: true };
|
|
246
|
+
compiler.options.devServer.headers = {
|
|
247
|
+
"Access-Control-Allow-Origin": "*",
|
|
248
|
+
"Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS",
|
|
249
|
+
"Access-Control-Allow-Headers": "X-Requested-With, content-type, Authorization"
|
|
250
|
+
};
|
|
251
|
+
compiler.options.devServer.client = {
|
|
252
|
+
logging: "warn",
|
|
253
|
+
overlay: {
|
|
254
|
+
warnings: false,
|
|
255
|
+
errors: true
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
compiler.options.devServer.setupMiddlewares = (middlewares, devServer) => {
|
|
259
|
+
setupPluginMiddleware(devServer, pluginInfo, devConfig, port);
|
|
260
|
+
return originalSetup ? originalSetup(middlewares, devServer) : middlewares;
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
//#endregion
|
|
266
|
+
exports.EveryPluginDevServer = EveryPluginDevServer;
|
|
267
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwibmFtZXMiOlsicGF0aCIsImZzIiwiZ2V0Tm9ybWFsaXplZFJlbW90ZU5hbWUiLCJoYW5kbGVyczogeyBycGM6IGFueSwgYXBpOiBhbnkgfSIsIm9wdGlvbnM6IEV2ZXJ5UGx1Z2luT3B0aW9ucyIsInJzcGFjayIsInBhdGgiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnVpbGQvcnNwYWNrL3V0aWxzLnRzIiwiLi4vLi4vLi4vc3JjL2J1aWxkL3JzcGFjay9tb2R1bGUtZmVkZXJhdGlvbi50cyIsIi4uLy4uLy4uL3NyYy9idWlsZC9yc3BhY2svZGV2LXNlcnZlci1taWRkbGV3YXJlLnRzIiwiLi4vLi4vLi4vc3JjL2J1aWxkL3JzcGFjay9wbHVnaW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCBmcyBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7IGdldE5vcm1hbGl6ZWRSZW1vdGVOYW1lIH0gZnJvbSAnZXZlcnktcGx1Z2luL25vcm1hbGl6ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luSW5mbyB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBub3JtYWxpemVkTmFtZTogc3RyaW5nO1xuICBkZXBlbmRlbmNpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHBlZXJEZXBlbmRlbmNpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQbHVnaW5JbmZvKGNvbnRleHQ6IHN0cmluZyk6IFBsdWdpbkluZm8ge1xuICBjb25zdCBwa2dQYXRoID0gcGF0aC5qb2luKGNvbnRleHQsICdwYWNrYWdlLmpzb24nKTtcbiAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMocGtnUGF0aCwgJ3V0Zi04JykpO1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogcGtnLm5hbWUsXG4gICAgdmVyc2lvbjogcGtnLnZlcnNpb24sXG4gICAgbm9ybWFsaXplZE5hbWU6IGdldE5vcm1hbGl6ZWRSZW1vdGVOYW1lKHBrZy5uYW1lKSxcbiAgICBkZXBlbmRlbmNpZXM6IHBrZy5kZXBlbmRlbmNpZXMgfHwge30sXG4gICAgcGVlckRlcGVuZGVuY2llczogcGtnLnBlZXJEZXBlbmRlbmNpZXMgfHwge30sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkRGV2Q29uZmlnKGRldkNvbmZpZ1BhdGg6IHN0cmluZykge1xuICB0cnkge1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5yZXNvbHZlKGRldkNvbmZpZ1BhdGgpO1xuICAgIC8vIENsZWFyIHJlcXVpcmUgY2FjaGUgdG8gYWxsb3cgaG90IHJlbG9hZGluZ1xuICAgIGRlbGV0ZSByZXF1aXJlLmNhY2hlW2Z1bGxQYXRoXTtcbiAgICByZXR1cm4gcmVxdWlyZShmdWxsUGF0aCkuZGVmYXVsdDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLndhcm4oYENvdWxkIG5vdCBsb2FkIGRldiBjb25maWcgZnJvbSAke2RldkNvbmZpZ1BhdGh9OmAsIChlcnJvciBhcyBFcnJvcikubWVzc2FnZSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgUGx1Z2luSW5mbyB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTaGFyZWREZXBlbmRlbmNpZXMocGx1Z2luSW5mbzogUGx1Z2luSW5mbykge1xuICAvLyBHZXQgZXZlcnktcGx1Z2luIHBhY2thZ2UgaW5mbyBmb3IgdmVyc2lvbiBjb25zdHJhaW50c1xuICBjb25zdCBldmVyeVBsdWdpblBrZyA9IHJlcXVpcmUoJ2V2ZXJ5LXBsdWdpbi9wYWNrYWdlLmpzb24nKTtcblxuICByZXR1cm4ge1xuICAgICdldmVyeS1wbHVnaW4nOiB7XG4gICAgICB2ZXJzaW9uOiBldmVyeVBsdWdpblBrZy52ZXJzaW9uLFxuICAgICAgc2luZ2xldG9uOiB0cnVlLFxuICAgICAgcmVxdWlyZWRWZXJzaW9uOiBgJHtldmVyeVBsdWdpblBrZy52ZXJzaW9ufWAsXG4gICAgICBzdHJpY3RWZXJzaW9uOiBmYWxzZSxcbiAgICAgIGVhZ2VyOiBmYWxzZSxcbiAgICB9LFxuICAgIGVmZmVjdDoge1xuICAgICAgdmVyc2lvbjogZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzLmVmZmVjdCxcbiAgICAgIHNpbmdsZXRvbjogdHJ1ZSxcbiAgICAgIHJlcXVpcmVkVmVyc2lvbjogYCR7ZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzLmVmZmVjdH1gLFxuICAgICAgc3RyaWN0VmVyc2lvbjogZmFsc2UsXG4gICAgICBlYWdlcjogZmFsc2UsXG4gICAgfSxcbiAgICB6b2Q6IHtcbiAgICAgIHZlcnNpb246IGV2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llcy56b2QsXG4gICAgICBzaW5nbGV0b246IHRydWUsXG4gICAgICByZXF1aXJlZFZlcnNpb246IGAke2V2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llcy56b2R9YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gICAgJ0BvcnBjL2NvbnRyYWN0Jzoge1xuICAgICAgdmVyc2lvbjogZXZlcnlQbHVnaW5Qa2cuZGVwZW5kZW5jaWVzWydAb3JwYy9jb250cmFjdCddLFxuICAgICAgc2luZ2xldG9uOiB0cnVlLFxuICAgICAgcmVxdWlyZWRWZXJzaW9uOiBgJHtldmVyeVBsdWdpblBrZy5kZXBlbmRlbmNpZXNbJ0BvcnBjL2NvbnRyYWN0J119YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gICAgJ0BvcnBjL3NlcnZlcic6IHtcbiAgICAgIHZlcnNpb246IGV2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llc1snQG9ycGMvc2VydmVyJ10sXG4gICAgICBzaW5nbGV0b246IHRydWUsXG4gICAgICByZXF1aXJlZFZlcnNpb246IGAke2V2ZXJ5UGx1Z2luUGtnLmRlcGVuZGVuY2llc1snQG9ycGMvc2VydmVyJ119YCxcbiAgICAgIHN0cmljdFZlcnNpb246IGZhbHNlLFxuICAgICAgZWFnZXI6IGZhbHNlLFxuICAgIH0sXG4gIH07XG59XG4iLCJpbXBvcnQgdHlwZSB7IFBsdWdpbkluZm8gfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNldHVwUGx1Z2luTWlkZGxld2FyZShkZXZTZXJ2ZXI6IGFueSwgcGx1Z2luSW5mbzogUGx1Z2luSW5mbywgZGV2Q29uZmlnOiBhbnksIHBvcnQ6IG51bWJlcikge1xuICBsZXQgaGFuZGxlcnM6IHsgcnBjOiBhbnksIGFwaTogYW55IH0gPSB7IHJwYzogbnVsbCwgYXBpOiBudWxsIH07XG5cbiAgKGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBjcmVhdGVQbHVnaW5SdW50aW1lIH0gPSBhd2FpdCBpbXBvcnQoJ2V2ZXJ5LXBsdWdpbicpO1xuICAgICAgY29uc3QgeyBSUENIYW5kbGVyIH0gPSBhd2FpdCBpbXBvcnQoJ0BvcnBjL3NlcnZlci9mZXRjaCcpO1xuICAgICAgY29uc3QgeyBvbkVycm9yIH0gPSBhd2FpdCBpbXBvcnQoJ0BvcnBjL3NlcnZlcicpO1xuICAgICAgY29uc3QgeyBPcGVuQVBJSGFuZGxlciB9ID0gYXdhaXQgaW1wb3J0KCdAb3JwYy9vcGVuYXBpL2ZldGNoJyk7XG4gICAgICBjb25zdCB7IE9wZW5BUElSZWZlcmVuY2VQbHVnaW4gfSA9IGF3YWl0IGltcG9ydCgnQG9ycGMvb3BlbmFwaS9wbHVnaW5zJyk7XG4gICAgICBjb25zdCB7IFpvZFRvSnNvblNjaGVtYUNvbnZlcnRlciB9ID0gYXdhaXQgaW1wb3J0KCdAb3JwYy96b2Qvem9kNCcpO1xuXG4gICAgICBjb25zdCBwbHVnaW5JZCA9IGRldkNvbmZpZz8ucGx1Z2luSWQgfHwgcGx1Z2luSW5mby5ub3JtYWxpemVkTmFtZTtcblxuICAgICAgY29uc3QgcnVudGltZSA9IGNyZWF0ZVBsdWdpblJ1bnRpbWUoe1xuICAgICAgICByZWdpc3RyeToge1xuICAgICAgICAgIFtwbHVnaW5JZF06IHtcbiAgICAgICAgICAgIHJlbW90ZVVybDogYGh0dHA6Ly9sb2NhbGhvc3Q6JHtwb3J0fS9yZW1vdGVFbnRyeS5qc2BcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBsb2FkZWQgPSBhd2FpdCBydW50aW1lLnVzZVBsdWdpbihwbHVnaW5JZCwgZGV2Q29uZmlnPy5jb25maWcpO1xuXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG5vIHR5cGVcbiAgICAgIGhhbmRsZXJzLnJwYyA9IG5ldyBSUENIYW5kbGVyKGxvYWRlZC5yb3V0ZXIsIHtcbiAgICAgICAgaW50ZXJjZXB0b3JzOiBbXG4gICAgICAgICAgb25FcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcign8J+UtCBSUEMgRXJyb3I6JywgZXJyb3IpO1xuICAgICAgICAgIH0pLFxuICAgICAgICBdXG4gICAgICB9KTtcblxuICAgICAgLy8gQ3JlYXRlIE9wZW5BUEkgaGFuZGxlciBmb3IgZG9jdW1lbnRhdGlvblxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBubyB0eXBlXG4gICAgICBoYW5kbGVycy5hcGkgPSBuZXcgT3BlbkFQSUhhbmRsZXIobG9hZGVkLnJvdXRlciwge1xuICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgbmV3IE9wZW5BUElSZWZlcmVuY2VQbHVnaW4oe1xuICAgICAgICAgICAgc2NoZW1hQ29udmVydGVyczogW25ldyBab2RUb0pzb25TY2hlbWFDb252ZXJ0ZXIoKV0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIGludGVyY2VwdG9yczogW1xuICAgICAgICAgIG9uRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ/CflLQgT3BlbkFQSSBFcnJvcjonLCBlcnJvcik7XG4gICAgICAgICAgfSksXG4gICAgICAgIF1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zb2xlLmxvZyhg4pWt4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSCICDinIUgUGx1Z2luIGRldiBzZXJ2ZXIgcmVhZHk6IGApO1xuICAgICAgY29uc29sZS5sb2coYOKUnOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgGApO1xuICAgICAgY29uc29sZS5sb2coYOKUgiAg8J+ToSBSUEM6ICAgIGh0dHA6Ly9sb2NhbGhvc3Q6JHtwb3J0fS9hcGkvcnBjYCk7XG4gICAgICBjb25zb2xlLmxvZyhg4pSCICDwn5OWIERvY3M6ICAgaHR0cDovL2xvY2FsaG9zdDoke3BvcnR9L2FwaWApO1xuICAgICAgY29uc29sZS5sb2coYOKUgiAg8J+SmiBIZWFsdGg6IGh0dHA6Ly9sb2NhbGhvc3Q6JHtwb3J0fS9gKTtcbiAgICAgIGNvbnNvbGUubG9nKGDilbDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBgKTtcblxuICAgICAgLy8gU3RvcmUgaGFuZGxlcnMgZm9yIHJvdXRpbmdcbiAgICAgIGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzID0gaGFuZGxlcnM7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ+KdjCBGYWlsZWQgdG8gbG9hZCBwbHVnaW46JywgZXJyb3IpO1xuICAgIH1cbiAgfSkoKTtcblxuICAvLyBSb290IGhlYWx0aCBjaGVja1xuICBkZXZTZXJ2ZXIuYXBwLmdldCgnLycsIChyZXE6IGFueSwgcmVzOiBhbnkpID0+IHtcbiAgICByZXMuanNvbih7XG4gICAgICBvazogdHJ1ZSxcbiAgICAgIHBsdWdpbjogcGx1Z2luSW5mby5ub3JtYWxpemVkTmFtZSxcbiAgICAgIHZlcnNpb246IHBsdWdpbkluZm8udmVyc2lvbixcbiAgICAgIHN0YXR1czogZGV2U2VydmVyLmFwcC5sb2NhbHMuaGFuZGxlcnM/LnJwYyA/ICdyZWFkeScgOiAnbG9hZGluZycsXG4gICAgICBlbmRwb2ludHM6IHtcbiAgICAgICAgaGVhbHRoOiAnLycsXG4gICAgICAgIGRvY3M6ICcvYXBpJyxcbiAgICAgICAgcnBjOiAnL2FwaS9ycGMnXG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBhbmQgUkVTVCBlbmRwb2ludHMgYXQgL2FwaSBhbmQgL2FwaS8qXG4gIGNvbnN0IGhhbmRsZUFwaVJlcXVlc3QgPSBhc3luYyAocmVxOiBhbnksIHJlczogYW55KSA9PiB7XG4gICAgY29uc3QgYXBpSGFuZGxlciA9IGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzPy5hcGk7XG4gICAgaWYgKCFhcGlIYW5kbGVyKSB7XG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDMpLmpzb24oeyBlcnJvcjogJ1BsdWdpbiBzdGlsbCBsb2FkaW5nLi4uJyB9KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsID0gYGh0dHA6Ly8ke3JlcS5oZWFkZXJzLmhvc3R9JHtyZXEudXJsfWA7XG4gICAgICBjb25zdCB3ZWJSZXF1ZXN0ID0gbmV3IFJlcXVlc3QodXJsLCB7XG4gICAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMsXG4gICAgICAgIGJvZHk6IHJlcS5tZXRob2QgIT09ICdHRVQnICYmIHJlcS5tZXRob2QgIT09ICdIRUFEJyA/IHJlcSA6IHVuZGVmaW5lZFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwaUhhbmRsZXIuaGFuZGxlKHdlYlJlcXVlc3QsIHtcbiAgICAgICAgcHJlZml4OiAnL2FwaScsXG4gICAgICAgIGNvbnRleHQ6IHt9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHJlc3VsdC5yZXNwb25zZSkge1xuICAgICAgICByZXMuc3RhdHVzKHJlc3VsdC5yZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICByZXN1bHQucmVzcG9uc2UuaGVhZGVycy5mb3JFYWNoKCh2YWx1ZTogc3RyaW5nLCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIHJlcy5zZXRIZWFkZXIoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgcmVzdWx0LnJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgcmVzLnNlbmQodGV4dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXMuc3RhdHVzKDQwNCkuc2VuZCgnTm90IEZvdW5kJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ09wZW5BUEkgZXJyb3I6JywgZXJyb3IpO1xuICAgICAgcmVzLnN0YXR1cyg1MDApLmpzb24oeyBlcnJvcjogKGVycm9yIGFzIEVycm9yKS5tZXNzYWdlIH0pO1xuICAgIH1cbiAgfTtcblxuICBkZXZTZXJ2ZXIuYXBwLmFsbCgnL2FwaScsIGhhbmRsZUFwaVJlcXVlc3QpO1xuICBkZXZTZXJ2ZXIuYXBwLmFsbCgnL2FwaS8qJywgaGFuZGxlQXBpUmVxdWVzdCk7XG5cbiAgLy8gUlBDIGNhbGxzIGF0IC9hcGkvcnBjLypcbiAgZGV2U2VydmVyLmFwcC5hbGwoJy9hcGkvcnBjLyonLCBhc3luYyAocmVxOiBhbnksIHJlczogYW55KSA9PiB7XG4gICAgY29uc3QgcnBjSGFuZGxlciA9IGRldlNlcnZlci5hcHAubG9jYWxzLmhhbmRsZXJzPy5ycGM7XG4gICAgaWYgKCFycGNIYW5kbGVyKSB7XG4gICAgICByZXR1cm4gcmVzLnN0YXR1cyg1MDMpLmpzb24oeyBlcnJvcjogJ1BsdWdpbiBzdGlsbCBsb2FkaW5nLi4uJyB9KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdXJsID0gYGh0dHA6Ly8ke3JlcS5oZWFkZXJzLmhvc3R9JHtyZXEudXJsfWA7XG4gICAgICBjb25zdCB3ZWJSZXF1ZXN0ID0gbmV3IFJlcXVlc3QodXJsLCB7XG4gICAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMsXG4gICAgICAgIGJvZHk6IHJlcS5tZXRob2QgIT09ICdHRVQnICYmIHJlcS5tZXRob2QgIT09ICdIRUFEJyA/IHJlcSA6IHVuZGVmaW5lZFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJwY0hhbmRsZXIuaGFuZGxlKHdlYlJlcXVlc3QsIHtcbiAgICAgICAgcHJlZml4OiAnL2FwaS9ycGMnLFxuICAgICAgICBjb250ZXh0OiB7fVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChyZXN1bHQucmVzcG9uc2UpIHtcbiAgICAgICAgcmVzLnN0YXR1cyhyZXN1bHQucmVzcG9uc2Uuc3RhdHVzKTtcbiAgICAgICAgcmVzdWx0LnJlc3BvbnNlLmhlYWRlcnMuZm9yRWFjaCgodmFsdWU6IHN0cmluZywga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICByZXMuc2V0SGVhZGVyKGtleSwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IHJlc3VsdC5yZXNwb25zZS50ZXh0KCk7XG4gICAgICAgIHJlcy5zZW5kKHRleHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzLnN0YXR1cyg0MDQpLnNlbmQoJ05vdCBGb3VuZCcpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdSUEMgZXJyb3I6JywgZXJyb3IpO1xuICAgICAgcmVzLnN0YXR1cyg1MDApLmpzb24oeyBlcnJvcjogKGVycm9yIGFzIEVycm9yKS5tZXNzYWdlIH0pO1xuICAgIH1cbiAgfSk7XG59XG4iLCJpbXBvcnQgdHlwZSB7IENvbXBpbGVyLCBSc3BhY2tQbHVnaW5JbnN0YW5jZSB9IGZyb20gJ0Byc3BhY2svY29yZSc7XG5pbXBvcnQgeyByc3BhY2sgfSBmcm9tICdAcnNwYWNrL2NvcmUnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGdldFBsdWdpbkluZm8gfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGxvYWREZXZDb25maWcgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGJ1aWxkU2hhcmVkRGVwZW5kZW5jaWVzIH0gZnJvbSAnLi9tb2R1bGUtZmVkZXJhdGlvbic7XG5pbXBvcnQgeyBzZXR1cFBsdWdpbk1pZGRsZXdhcmUgfSBmcm9tICcuL2Rldi1zZXJ2ZXItbWlkZGxld2FyZSc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBFdmVyeVBsdWdpbk9wdGlvbnMge1xuICBkZXZDb25maWdQYXRoPzogc3RyaW5nOyAgLy8gZGVmYXVsdHMgdG8gJy4vcGx1Z2luLmRldi50cydcbiAgcG9ydD86IG51bWJlcjsgICAgICAgICAgIC8vIG92ZXJyaWRlIHBsdWdpbi5kZXYudHMgcG9ydFxuICBwbHVnaW5JZD86IHN0cmluZzsgICAgICAgLy8gb3ZlcnJpZGUgYXV0by1kZXRlY3RlZFxufVxuXG5leHBvcnQgY2xhc3MgRXZlcnlQbHVnaW5EZXZTZXJ2ZXIgaW1wbGVtZW50cyBSc3BhY2tQbHVnaW5JbnN0YW5jZSB7XG4gIG5hbWUgPSAnRXZlcnlQbHVnaW5EZXZTZXJ2ZXInO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3B0aW9uczogRXZlcnlQbHVnaW5PcHRpb25zID0ge30pIHt9XG5cbiAgYXBwbHkoY29tcGlsZXI6IENvbXBpbGVyKSB7XG4gICAgLy8gTG9hZCBjb25maWd1cmF0aW9uXG4gICAgY29uc3QgcGx1Z2luSW5mbyA9IGdldFBsdWdpbkluZm8oY29tcGlsZXIub3B0aW9ucy5jb250ZXh0IHx8IHByb2Nlc3MuY3dkKCkpO1xuICAgIGNvbnN0IGRldkNvbmZpZyA9IGxvYWREZXZDb25maWcodGhpcy5vcHRpb25zLmRldkNvbmZpZ1BhdGggfHwgJy4vcGx1Z2luLmRldi50cycpO1xuICAgIGNvbnN0IHBvcnQgPSB0aGlzLm9wdGlvbnMucG9ydCB8fCBkZXZDb25maWc/LnBvcnQgfHwgMzk5OTtcblxuICAgIC8vIENvbmZpZ3VyZSBkZWZhdWx0cyBpbW1lZGlhdGVseSAobm8gaG9va3MgbmVlZGVkKVxuICAgIHRoaXMuY29uZmlndXJlRGVmYXVsdHMoY29tcGlsZXIsIHBsdWdpbkluZm8pO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBkZXZTZXJ2ZXIgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyID0ge307XG4gICAgfVxuXG4gICAgLy8gQ29uZmlndXJlIGRldiBzZXJ2ZXJcbiAgICB0aGlzLmNvbmZpZ3VyZURldlNlcnZlcihjb21waWxlciwgcGx1Z2luSW5mbywgZGV2Q29uZmlnLCBwb3J0KTtcblxuICAgIC8vIEFwcGx5IE1vZHVsZSBGZWRlcmF0aW9uIHBsdWdpblxuICAgIG5ldyByc3BhY2suY29udGFpbmVyLk1vZHVsZUZlZGVyYXRpb25QbHVnaW4oe1xuICAgICAgbmFtZTogcGx1Z2luSW5mby5ub3JtYWxpemVkTmFtZSxcbiAgICAgIGZpbGVuYW1lOiAncmVtb3RlRW50cnkuanMnLFxuICAgICAgcnVudGltZVBsdWdpbnM6IFtcbiAgICAgICAgcmVxdWlyZS5yZXNvbHZlKCdAbW9kdWxlLWZlZGVyYXRpb24vbm9kZS9ydW50aW1lUGx1Z2luJyksXG4gICAgICBdLFxuICAgICAgbGlicmFyeTogeyB0eXBlOiAnY29tbW9uanMtbW9kdWxlJyB9LFxuICAgICAgZXhwb3Nlczoge1xuICAgICAgICAnLi9wbHVnaW4nOiAnLi9zcmMvaW5kZXgudHMnLFxuICAgICAgfSxcbiAgICAgIHNoYXJlZDogYnVpbGRTaGFyZWREZXBlbmRlbmNpZXMocGx1Z2luSW5mbyksXG4gICAgfSkuYXBwbHkoY29tcGlsZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25maWd1cmVEZWZhdWx0cyhjb21waWxlcjogQ29tcGlsZXIsIHBsdWdpbkluZm86IGFueSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcblxuICAgIC8vIENvbmZpZ3VyZSBvdXRwdXQgZGVmYXVsdHNcbiAgICBpZiAoIWNvbXBpbGVyLm9wdGlvbnMub3V0cHV0KSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLm91dHB1dCA9IHt9O1xuICAgIH1cbiAgICBjb21waWxlci5vcHRpb25zLm91dHB1dC51bmlxdWVOYW1lID0gcGx1Z2luSW5mby5ub3JtYWxpemVkTmFtZTtcbiAgICBjb21waWxlci5vcHRpb25zLm91dHB1dC5wdWJsaWNQYXRoID0gJ2F1dG8nO1xuICAgIGNvbXBpbGVyLm9wdGlvbnMub3V0cHV0LnBhdGggPSBwYXRoLnJlc29sdmUoY29udGV4dCwgJ2Rpc3QnKTtcbiAgICBjb21waWxlci5vcHRpb25zLm91dHB1dC5jbGVhbiA9IHRydWU7XG4gICAgY29tcGlsZXIub3B0aW9ucy5vdXRwdXQubGlicmFyeSA9IHsgdHlwZTogJ2NvbW1vbmpzLW1vZHVsZScgfTtcblxuICAgIC8vIENvbmZpZ3VyZSBlbnRyeSBpZiBub3Qgc2V0XG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLmVudHJ5KSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLmVudHJ5ID0ge1xuICAgICAgICBtYWluOiB7XG4gICAgICAgICAgaW1wb3J0OiBbJy4vc3JjL2luZGV4J11cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBDb25maWd1cmUgdGFyZ2V0IGFuZCBtb2RlIGRlZmF1bHRzXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLnRhcmdldCkge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy50YXJnZXQgPSAnYXN5bmMtbm9kZSc7XG4gICAgfVxuXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLm1vZGUpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMubW9kZSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnID8gJ2RldmVsb3BtZW50JyA6ICdwcm9kdWN0aW9uJztcbiAgICB9XG5cbiAgICAvLyBDb25maWd1cmUgZGV2dG9vbFxuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5kZXZ0b29sKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLmRldnRvb2wgPSAnc291cmNlLW1hcCc7XG4gICAgfVxuXG4gICAgLy8gU3VwcHJlc3MgdmVyYm9zZSBpbmZyYXN0cnVjdHVyZSBsb2dnaW5nXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLmluZnJhc3RydWN0dXJlTG9nZ2luZykge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5pbmZyYXN0cnVjdHVyZUxvZ2dpbmcgPSB7XG4gICAgICAgIGxldmVsOiAnd2FybicsICAvLyBPbmx5IHNob3cgd2FybmluZ3MgYW5kIGVycm9yc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBDb25maWd1cmUgbW9kdWxlIHJ1bGVzIC0gZW5zdXJlIFR5cGVTY3JpcHQgbG9hZGVyIGlzIHByZXNlbnRcbiAgICB0aGlzLmVuc3VyZVR5cGVTY3JpcHRMb2FkZXIoY29tcGlsZXIpO1xuXG4gICAgLy8gQ29uZmlndXJlIHJlc29sdmUgZXh0ZW5zaW9uc1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5yZXNvbHZlKSB7XG4gICAgICBjb21waWxlci5vcHRpb25zLnJlc29sdmUgPSB7fTtcbiAgICB9XG4gICAgY29tcGlsZXIub3B0aW9ucy5yZXNvbHZlLmV4dGVuc2lvbnMgPSBbJy4uLicsICcudHN4JywgJy50cyddO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVUeXBlU2NyaXB0TG9hZGVyKGNvbXBpbGVyOiBDb21waWxlcikge1xuICAgIGlmICghY29tcGlsZXIub3B0aW9ucy5tb2R1bGUpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMubW9kdWxlID0geyBydWxlczogW10gfSBhcyBhbnk7XG4gICAgfVxuXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLm1vZHVsZS5ydWxlcykge1xuICAgICAgY29tcGlsZXIub3B0aW9ucy5tb2R1bGUucnVsZXMgPSBbXTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBUeXBlU2NyaXB0IGxvYWRlciBpcyBhbHJlYWR5IGNvbmZpZ3VyZWRcbiAgICBjb25zdCBoYXNUc0xvYWRlciA9IGNvbXBpbGVyLm9wdGlvbnMubW9kdWxlLnJ1bGVzLnNvbWUoKHJ1bGU6IGFueSkgPT5cbiAgICAgIHR5cGVvZiBydWxlID09PSAnb2JqZWN0JyAmJlxuICAgICAgcnVsZSAhPT0gbnVsbCAmJlxuICAgICAgJ3Rlc3QnIGluIHJ1bGUgJiZcbiAgICAgIHJ1bGUudGVzdCBpbnN0YW5jZW9mIFJlZ0V4cCAmJlxuICAgICAgcnVsZS50ZXN0LnRlc3QoJy50cycpXG4gICAgKTtcblxuICAgIC8vIEFkZCBUeXBlU2NyaXB0IGxvYWRlciBpZiBub3QgcHJlc2VudFxuICAgIGlmICghaGFzVHNMb2FkZXIpIHtcbiAgICAgIGNvbXBpbGVyLm9wdGlvbnMubW9kdWxlLnJ1bGVzLnB1c2goe1xuICAgICAgICB0ZXN0OiAvXFwudHN4PyQvLFxuICAgICAgICB1c2U6ICdidWlsdGluOnN3Yy1sb2FkZXInLFxuICAgICAgICBleGNsdWRlOiAvbm9kZV9tb2R1bGVzLyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlRGV2U2VydmVyKGNvbXBpbGVyOiBDb21waWxlciwgcGx1Z2luSW5mbzogYW55LCBkZXZDb25maWc6IGFueSwgcG9ydDogbnVtYmVyKSB7XG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLmRldlNlcnZlcikge1xuICAgICAgcmV0dXJuOyAvLyBTaG91bGQgbmV2ZXIgaGFwcGVuIGR1ZSB0byBjaGVjayBpbiBhcHBseSgpXG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dCA9IGNvbXBpbGVyLm9wdGlvbnMuY29udGV4dCB8fCBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IG9yaWdpbmFsU2V0dXAgPSBjb21waWxlci5vcHRpb25zLmRldlNlcnZlci5zZXR1cE1pZGRsZXdhcmVzO1xuXG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIucG9ydCA9IHBvcnQ7XG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuc3RhdGljID0gcGF0aC5qb2luKGNvbnRleHQsICdkaXN0Jyk7XG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuaG90ID0gdHJ1ZTtcbiAgICBjb21waWxlci5vcHRpb25zLmRldlNlcnZlci5kZXZNaWRkbGV3YXJlID0geyB3cml0ZVRvRGlzazogdHJ1ZSB9O1xuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLmhlYWRlcnMgPSB7XG4gICAgICAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJzogJyonLFxuICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMnOiAnR0VULCBQT1NULCBQVVQsIERFTEVURSwgUEFUQ0gsIE9QVElPTlMnLFxuICAgICAgJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnOiAnWC1SZXF1ZXN0ZWQtV2l0aCwgY29udGVudC10eXBlLCBBdXRob3JpemF0aW9uJyxcbiAgICB9O1xuXG4gICAgLy8gU3VwcHJlc3MgdmVyYm9zZSBsb2dnaW5nXG4gICAgY29tcGlsZXIub3B0aW9ucy5kZXZTZXJ2ZXIuY2xpZW50ID0ge1xuICAgICAgbG9nZ2luZzogJ3dhcm4nLCAgLy8gT25seSBzaG93IHdhcm5pbmdzIGFuZCBlcnJvcnNcbiAgICAgIG92ZXJsYXk6IHtcbiAgICAgICAgd2FybmluZ3M6IGZhbHNlLCAgLy8gRG9uJ3Qgc2hvdyB3YXJuaW5nIG92ZXJsYXlcbiAgICAgICAgZXJyb3JzOiB0cnVlLCAgICAgLy8gU3RpbGwgc2hvdyBlcnJvcnNcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyLnNldHVwTWlkZGxld2FyZXMgPSAobWlkZGxld2FyZXMsIGRldlNlcnZlcikgPT4ge1xuICAgICAgc2V0dXBQbHVnaW5NaWRkbGV3YXJlKGRldlNlcnZlciwgcGx1Z2luSW5mbywgZGV2Q29uZmlnLCBwb3J0KTtcbiAgICAgIHJldHVybiBvcmlnaW5hbFNldHVwID8gb3JpZ2luYWxTZXR1cChtaWRkbGV3YXJlcywgZGV2U2VydmVyKSA6IG1pZGRsZXdhcmVzO1xuICAgIH07XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQVlBLFNBQWdCLGNBQWMsU0FBNkI7Q0FDekQsTUFBTSxVQUFVQSxrQkFBSyxLQUFLLFNBQVMsZUFBZTtDQUNsRCxNQUFNLE1BQU0sS0FBSyxNQUFNQyxnQkFBRyxhQUFhLFNBQVMsUUFBUSxDQUFDO0FBRXpELFFBQU87RUFDTCxNQUFNLElBQUk7RUFDVixTQUFTLElBQUk7RUFDYixnQkFBZ0JDLDBDQUF3QixJQUFJLEtBQUs7RUFDakQsY0FBYyxJQUFJLGdCQUFnQixFQUFFO0VBQ3BDLGtCQUFrQixJQUFJLG9CQUFvQixFQUFFO0VBQzdDOztBQUdILFNBQWdCLGNBQWMsZUFBdUI7QUFDbkQsS0FBSTtFQUNGLE1BQU0sV0FBV0Ysa0JBQUssUUFBUSxjQUFjO0FBRTVDLFNBQU8sUUFBUSxNQUFNO0FBQ3JCLFNBQU8sUUFBUSxTQUFTLENBQUM7VUFDbEIsT0FBTztBQUNkLFVBQVEsS0FBSyxr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
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Compiler, RspackPluginInstance } from "@rspack/core";
|
|
2
|
+
|
|
3
|
+
//#region src/build/rspack/plugin.d.ts
|
|
4
|
+
interface EveryPluginOptions {
|
|
5
|
+
devConfigPath?: string;
|
|
6
|
+
port?: number;
|
|
7
|
+
pluginId?: string;
|
|
8
|
+
}
|
|
9
|
+
declare class EveryPluginDevServer implements RspackPluginInstance {
|
|
10
|
+
private options;
|
|
11
|
+
name: string;
|
|
12
|
+
constructor(options?: EveryPluginOptions);
|
|
13
|
+
apply(compiler: Compiler): void;
|
|
14
|
+
private configureDefaults;
|
|
15
|
+
private ensureTypeScriptLoader;
|
|
16
|
+
private configureDevServer;
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { EveryPluginDevServer, type EveryPluginOptions };
|
|
20
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2J1aWxkL3JzcGFjay9wbHVnaW4udHMiXSwic291cmNlc0NvbnRlbnQiOltdLCJtYXBwaW5ncyI6Ijs7O1VBU2lCLGtCQUFBOztFQUFBLElBQUEsQ0FBQSxFQUFBLE1BQUE7RUFNSixRQUFBLENBQUEsRUFBQSxNQUFBOztBQUtLLGNBTEwsb0JBQUEsWUFBZ0Msb0JBSzNCLENBQUE7RUFMMkIsUUFBQSxPQUFBO0VBQW9CLElBQUEsRUFBQSxNQUFBO3dCQUdsQztrQkFFYiJ9
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Compiler, RspackPluginInstance } from "@rspack/core";
|
|
2
|
+
|
|
3
|
+
//#region src/build/rspack/plugin.d.ts
|
|
4
|
+
interface EveryPluginOptions {
|
|
5
|
+
devConfigPath?: string;
|
|
6
|
+
port?: number;
|
|
7
|
+
pluginId?: string;
|
|
8
|
+
}
|
|
9
|
+
declare class EveryPluginDevServer implements RspackPluginInstance {
|
|
10
|
+
private options;
|
|
11
|
+
name: string;
|
|
12
|
+
constructor(options?: EveryPluginOptions);
|
|
13
|
+
apply(compiler: Compiler): void;
|
|
14
|
+
private configureDefaults;
|
|
15
|
+
private ensureTypeScriptLoader;
|
|
16
|
+
private configureDevServer;
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { EveryPluginDevServer, type EveryPluginOptions };
|
|
20
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC5tdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2J1aWxkL3JzcGFjay9wbHVnaW4udHMiXSwic291cmNlc0NvbnRlbnQiOltdLCJtYXBwaW5ncyI6Ijs7O1VBU2lCLGtCQUFBOztFQUFBLElBQUEsQ0FBQSxFQUFBLE1BQUE7RUFNSixRQUFBLENBQUEsRUFBQSxNQUFBOztBQUtLLGNBTEwsb0JBQUEsWUFBZ0Msb0JBSzNCLENBQUE7RUFMMkIsUUFBQSxPQUFBO0VBQW9CLElBQUEsRUFBQSxNQUFBO3dCQUdsQztrQkFFYiJ9
|