@softarc/native-federation-node 2.0.11

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/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # native-federation-node
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build native-federation-node` to build the library.
8
+
9
+ ## Running unit tests
10
+
11
+ Run `nx test native-federation-node` to execute the unit tests via [Jest](https://jestjs.io).
package/package.json ADDED
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "@softarc/native-federation-node",
3
+ "version": "2.0.11",
4
+ "module": "./src/index.js",
5
+ "type": "module",
6
+ "main": "./src/index.js",
7
+ "types": "./src/index.d.ts"
8
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './lib/node/init-node-federation';
package/src/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from './lib/node/init-node-federation';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/native-federation-node/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export type InitNodeFederationOptions = {
2
+ remotesOrManifestUrl: Record<string, string> | string;
3
+ relBundlePath: string;
4
+ throwIfRemoteNotFound: boolean;
5
+ };
6
+ export declare function initNodeFederation(options: Partial<InitNodeFederationOptions>): Promise<void>;
@@ -0,0 +1,67 @@
1
+ import { __awaiter } from "tslib";
2
+ import { register } from 'node:module';
3
+ import { pathToFileURL } from 'node:url';
4
+ import * as fs from 'node:fs/promises';
5
+ import * as path from 'node:path';
6
+ import { processHostInfo, processRemoteInfos, } from '@softarc/native-federation-runtime';
7
+ import { mergeImportMaps } from '@softarc/native-federation-runtime';
8
+ import { IMPORT_MAP_FILE_NAME } from '../utils/import-map-loader';
9
+ import { resolver } from '../utils/loader-as-data-url';
10
+ const defaultOptions = {
11
+ remotesOrManifestUrl: {},
12
+ relBundlePath: '../browser',
13
+ throwIfRemoteNotFound: false,
14
+ };
15
+ export function initNodeFederation(options) {
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ const mergedOptions = Object.assign(Object.assign({}, defaultOptions), options);
18
+ const importMap = yield createNodeImportMap(mergedOptions);
19
+ // const normalized = resolveAndComposeImportMap(importMap) as ImportMap;
20
+ // await writeImportMap(normalized);
21
+ yield writeImportMap(importMap);
22
+ yield writeResolver();
23
+ register(pathToFileURL('./federation-resolver.mjs').href);
24
+ });
25
+ }
26
+ function createNodeImportMap(options) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ const { remotesOrManifestUrl, relBundlePath } = options;
29
+ const remotes = typeof remotesOrManifestUrl === 'object'
30
+ ? remotesOrManifestUrl
31
+ : yield loadFsManifest(remotesOrManifestUrl);
32
+ const hostInfo = yield loadFsFederationInfo(relBundlePath);
33
+ const hostImportMap = yield processHostInfo(hostInfo, relBundlePath);
34
+ const remotesImportMap = yield processRemoteInfos(remotes, {
35
+ throwIfRemoteNotFound: options.throwIfRemoteNotFound,
36
+ });
37
+ const importMap = mergeImportMaps(hostImportMap, remotesImportMap);
38
+ return importMap;
39
+ });
40
+ }
41
+ function loadFsManifest(manifestUrl) {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ const content = yield fs.readFile(manifestUrl, 'utf-8');
44
+ const manifest = JSON.parse(content);
45
+ return manifest;
46
+ });
47
+ }
48
+ function loadFsFederationInfo(relBundlePath) {
49
+ return __awaiter(this, void 0, void 0, function* () {
50
+ const manifestPath = path.join(relBundlePath, 'remoteEntry.json');
51
+ const content = yield fs.readFile(manifestPath, 'utf-8');
52
+ const manifest = JSON.parse(content);
53
+ return manifest;
54
+ });
55
+ }
56
+ function writeImportMap(map) {
57
+ return __awaiter(this, void 0, void 0, function* () {
58
+ yield fs.writeFile(IMPORT_MAP_FILE_NAME, JSON.stringify(map, null, 2), 'utf-8');
59
+ });
60
+ }
61
+ function writeResolver() {
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ const buffer = Buffer.from(resolver, 'base64');
64
+ yield fs.writeFile('federation-resolver.mjs', buffer, 'utf-8');
65
+ });
66
+ }
67
+ //# sourceMappingURL=init-node-federation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-node-federation.js","sourceRoot":"","sources":["../../../../../../libs/native-federation-node/src/lib/node/init-node-federation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export function resolveSpecifier(importMap: any, specifier: any, parentURL: any): any;
2
+ export function resolveAndComposeImportMap(parsed: any): {
3
+ imports: {};
4
+ scopes: {};
5
+ };
6
+ export function resolve(specifier: any, context: any, defaultResolve: any): Promise<any>;
7
+ export function load(url: any, context: any, defaultLoad: any): Promise<any>;
8
+ export const IMPORT_MAP_FILE_NAME: "node.importmap";
@@ -0,0 +1,227 @@
1
+ import { __awaiter } from "tslib";
2
+ import path from 'path';
3
+ import url from 'url';
4
+ import { promises as fs } from 'fs';
5
+ export const IMPORT_MAP_FILE_NAME = 'node.importmap';
6
+ const baseURL = url.pathToFileURL(process.cwd()) + path.sep;
7
+ // https://wicg.github.io/import-maps/#new-resolve-algorithm
8
+ export function resolveSpecifier(importMap, specifier, parentURL) {
9
+ let currentBaseURL;
10
+ if (parentURL) {
11
+ const lastSlashIndex = parentURL.lastIndexOf(path.sep);
12
+ currentBaseURL = parentURL.slice(0, lastSlashIndex + 1);
13
+ }
14
+ else {
15
+ currentBaseURL = baseURL;
16
+ }
17
+ const normalizedSpecifier = parseURLLikeSpecifier(specifier, currentBaseURL) || specifier;
18
+ for (let scopePrefix in importMap.scopes) {
19
+ if (scopePrefix === currentBaseURL ||
20
+ (scopePrefix.endsWith('/') && currentBaseURL.startsWith(scopePrefix))) {
21
+ const scopeImportsMatch = resolveImportsMatch(normalizedSpecifier, importMap.scopes[scopePrefix]);
22
+ if (scopeImportsMatch) {
23
+ return scopeImportsMatch;
24
+ }
25
+ }
26
+ else {
27
+ const topLevelImportsMatch = resolveImportsMatch(normalizedSpecifier, importMap.imports);
28
+ if (topLevelImportsMatch) {
29
+ return topLevelImportsMatch;
30
+ }
31
+ }
32
+ }
33
+ return resolveImportsMatch(normalizedSpecifier, importMap.imports);
34
+ }
35
+ // https://wicg.github.io/import-maps/#resolve-an-imports-match
36
+ function resolveImportsMatch(normalizedSpecifier, specifierMap) {
37
+ for (let specifierKey in specifierMap) {
38
+ const resolutionResult = specifierMap[specifierKey];
39
+ if (specifierKey === normalizedSpecifier) {
40
+ if (resolutionResult === null) {
41
+ throw TypeError(`The import map resolution of ${specifierKey} failed due to a null entry`);
42
+ }
43
+ return resolutionResult;
44
+ }
45
+ else if (specifierKey.endsWith('/') &&
46
+ normalizedSpecifier.startsWith(specifierKey)) {
47
+ if (resolutionResult === null) {
48
+ throw TypeError(`The import map resolution of ${specifierKey} failed due to a null entry`);
49
+ }
50
+ const afterPrefix = normalizedSpecifier.slice(specifierKey.length);
51
+ try {
52
+ return new URL(afterPrefix, resolutionResult).href;
53
+ }
54
+ catch (_a) {
55
+ throw TypeError(`The import map resolution of ${specifierKey} failed due to URL parse failure`);
56
+ }
57
+ }
58
+ }
59
+ return null;
60
+ }
61
+ // https://wicg.github.io/import-maps/#parsing
62
+ export function resolveAndComposeImportMap(parsed) {
63
+ // Step 2
64
+ if (!isPlainObject(parsed)) {
65
+ throw Error(`Invalid import map - top level must be an object`);
66
+ }
67
+ // Step 3
68
+ let sortedAndNormalizedImports = {};
69
+ // Step 4
70
+ if (parsed.hasOwnProperty('imports')) {
71
+ // Step 4.1
72
+ if (!isPlainObject(parsed.imports)) {
73
+ throw Error(`Invalid import map - "imports" property must be an object`);
74
+ }
75
+ // Step 4.2
76
+ sortedAndNormalizedImports = sortAndNormalizeSpecifierMap(parsed.imports, baseURL);
77
+ }
78
+ // Step 5
79
+ let sortedAndNormalizedScopes = {};
80
+ // Step 6
81
+ if (parsed.hasOwnProperty('scopes')) {
82
+ // Step 6.1
83
+ if (!isPlainObject(parsed.scopes)) {
84
+ throw Error(`Invalid import map - "scopes" property must be an object`);
85
+ }
86
+ // Step 6.2
87
+ sortedAndNormalizedScopes = sortAndNormalizeScopes(parsed.scopes, baseURL);
88
+ }
89
+ // Step 7
90
+ const invalidKeys = Object.keys(parsed).filter((key) => key !== 'imports' && key !== 'scopes');
91
+ if (invalidKeys.length > 0) {
92
+ console.warn(`Invalid top-level key${invalidKeys.length > 0 ? 's' : ''} in import map - ${invalidKeys.join(', ')}`);
93
+ }
94
+ // Step 8
95
+ return {
96
+ imports: sortedAndNormalizedImports,
97
+ scopes: sortedAndNormalizedScopes,
98
+ };
99
+ }
100
+ // https://wicg.github.io/import-maps/#sort-and-normalize-a-specifier-map
101
+ function sortAndNormalizeSpecifierMap(map, baseURL) {
102
+ const normalized = {};
103
+ for (let specifierKey in map) {
104
+ const value = map[specifierKey];
105
+ const normalizedSpecifierKey = normalizeSpecifierKey(specifierKey, baseURL);
106
+ if (normalizedSpecifierKey === null) {
107
+ continue;
108
+ }
109
+ let addressURL = parseURLLikeSpecifier(value, baseURL);
110
+ if (addressURL === null) {
111
+ console.warn(`Invalid URL address for import map specifier '${specifierKey}'`);
112
+ normalized[normalizedSpecifierKey] = null;
113
+ continue;
114
+ }
115
+ if (specifierKey.endsWith('/') && !addressURL.endsWith('/')) {
116
+ console.warn(`Invalid URL address for import map specifier '${specifierKey}' - since the specifier ends in slash, so must the address`);
117
+ normalized[normalizedSpecifierKey] = null;
118
+ continue;
119
+ }
120
+ normalized[normalizedSpecifierKey] = addressURL;
121
+ }
122
+ return normalized;
123
+ }
124
+ // https://wicg.github.io/import-maps/#normalize-a-specifier-key
125
+ function normalizeSpecifierKey(key) {
126
+ if (key === '') {
127
+ console.warn(`Specifier keys in import maps may not be the empty string`);
128
+ return null;
129
+ }
130
+ return parseURLLikeSpecifier(key, baseURL) || key;
131
+ }
132
+ // https://wicg.github.io/import-maps/#parse-a-url-like-import-specifier
133
+ function parseURLLikeSpecifier(specifier, baseURL) {
134
+ const useBaseUrlAsParent = specifier.startsWith('/') ||
135
+ specifier.startsWith('./') ||
136
+ specifier.startsWith('../');
137
+ try {
138
+ return new URL(specifier, useBaseUrlAsParent ? baseURL : undefined).href;
139
+ }
140
+ catch (_a) {
141
+ return null;
142
+ }
143
+ }
144
+ // https://wicg.github.io/import-maps/#sort-and-normalize-scopes
145
+ function sortAndNormalizeScopes(map, baseURL) {
146
+ let normalized = {};
147
+ for (let scopePrefix in map) {
148
+ const potentialSpecifierMap = map[scopePrefix];
149
+ if (!isPlainObject(potentialSpecifierMap)) {
150
+ throw TypeError(`The value of scope ${scopePrefix} must be a JSON object`);
151
+ }
152
+ let scopePrefixURL;
153
+ try {
154
+ scopePrefixURL = new URL(scopePrefix, baseURL).href;
155
+ }
156
+ catch (_a) {
157
+ console.warn(`Scope prefix URL '${scopePrefix}' was not parseable in import map`);
158
+ continue;
159
+ }
160
+ normalized[scopePrefixURL] = sortAndNormalizeSpecifierMap(potentialSpecifierMap, baseURL);
161
+ }
162
+ return normalized;
163
+ }
164
+ function isPlainObject(obj) {
165
+ return obj === Object(obj) && !Array.isArray(obj);
166
+ }
167
+ // ---
168
+ let importMapPromise = getImportMapPromise();
169
+ export function resolve(specifier, context, defaultResolve) {
170
+ return __awaiter(this, void 0, void 0, function* () {
171
+ const { parentURL = null } = context;
172
+ const importMap = yield importMapPromise;
173
+ const importMapUrl = resolveSpecifier(importMap, specifier, parentURL);
174
+ return defaultResolve(importMapUrl !== null && importMapUrl !== void 0 ? importMapUrl : specifier, context, defaultResolve);
175
+ });
176
+ }
177
+ export function load(url, context, defaultLoad) {
178
+ return __awaiter(this, void 0, void 0, function* () {
179
+ // Falls das URL-Schema http oder https ist, holen wir den Inhalt über Fetch
180
+ if (url.startsWith('http://') || url.startsWith('https://')) {
181
+ const res = yield fetch(url);
182
+ if (!res.ok) {
183
+ throw new Error(`Failed to fetch module from ${url}`);
184
+ }
185
+ const source = yield res.text();
186
+ return {
187
+ shortCircuit: true,
188
+ format: 'module', // Wir nehmen an, es handelt sich um ein ESM-Modul
189
+ source,
190
+ };
191
+ }
192
+ // Default loader für alle anderen Module
193
+ context.format = 'module';
194
+ return defaultLoad(url, context, defaultLoad);
195
+ });
196
+ }
197
+ function getImportMapPromise() {
198
+ return __awaiter(this, void 0, void 0, function* () {
199
+ const relativePath = process.env.IMPORT_MAP_PATH || IMPORT_MAP_FILE_NAME;
200
+ const importMapPath = path.resolve(process.cwd(), relativePath);
201
+ let str;
202
+ try {
203
+ str = yield fs.readFile(importMapPath);
204
+ }
205
+ catch (err) {
206
+ return emptyMap();
207
+ }
208
+ let json;
209
+ try {
210
+ json = yield JSON.parse(str);
211
+ }
212
+ catch (err) {
213
+ throw Error(`Import map at ${importMapPath} contains invalid json: ${err.message}`);
214
+ }
215
+ return resolveAndComposeImportMap(json);
216
+ });
217
+ }
218
+ global.nodeLoader = global.nodeLoader || {};
219
+ global.nodeLoader.setImportMapPromise = function setImportMapPromise(promise) {
220
+ importMapPromise = promise.then((map) => {
221
+ return resolveAndComposeImportMap(map);
222
+ });
223
+ };
224
+ function emptyMap() {
225
+ return { imports: {}, scopes: {} };
226
+ }
227
+ //# sourceMappingURL=import-map-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-map-loader.js","sourceRoot":"","sources":["../../../../../../libs/native-federation-node/src/lib/utils/import-map-loader.js"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export const resolver: "aW1wb3J0IHBhdGggZnJvbSAncGF0aCc7CmltcG9ydCB1cmwgZnJvbSAndXJsJzsKaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7CgpleHBvcnQgY29uc3QgSU1QT1JUX01BUF9GSUxFX05BTUUgPSAnbm9kZS5pbXBvcnRtYXAnOwoKY29uc3QgYmFzZVVSTCA9IHVybC5wYXRoVG9GaWxlVVJMKHByb2Nlc3MuY3dkKCkpICsgcGF0aC5zZXA7CgovLyBodHRwczovL3dpY2cuZ2l0aHViLmlvL2ltcG9ydC1tYXBzLyNuZXctcmVzb2x2ZS1hbGdvcml0aG0KZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTcGVjaWZpZXIoaW1wb3J0TWFwLCBzcGVjaWZpZXIsIHBhcmVudFVSTCkgewogIGxldCBjdXJyZW50QmFzZVVSTDsKICBpZiAocGFyZW50VVJMKSB7CiAgICBjb25zdCBsYXN0U2xhc2hJbmRleCA9IHBhcmVudFVSTC5sYXN0SW5kZXhPZihwYXRoLnNlcCk7CiAgICBjdXJyZW50QmFzZVVSTCA9IHBhcmVudFVSTC5zbGljZSgwLCBsYXN0U2xhc2hJbmRleCArIDEpOwogIH0gZWxzZSB7CiAgICBjdXJyZW50QmFzZVVSTCA9IGJhc2VVUkw7CiAgfQogIGNvbnN0IG5vcm1hbGl6ZWRTcGVjaWZpZXIgPQogICAgcGFyc2VVUkxMaWtlU3BlY2lmaWVyKHNwZWNpZmllciwgY3VycmVudEJhc2VVUkwpIHx8IHNwZWNpZmllcjsKICBmb3IgKGxldCBzY29wZVByZWZpeCBpbiBpbXBvcnRNYXAuc2NvcGVzKSB7CiAgICBpZiAoCiAgICAgIHNjb3BlUHJlZml4ID09PSBjdXJyZW50QmFzZVVSTCB8fAogICAgICAoc2NvcGVQcmVmaXguZW5kc1dpdGgoJy8nKSAmJiBjdXJyZW50QmFzZVVSTC5zdGFydHNXaXRoKHNjb3BlUHJlZml4KSkKICAgICkgewogICAgICBjb25zdCBzY29wZUltcG9ydHNNYXRjaCA9IHJlc29sdmVJbXBvcnRzTWF0Y2goCiAgICAgICAgbm9ybWFsaXplZFNwZWNpZmllciwKICAgICAgICBpbXBvcnRNYXAuc2NvcGVzW3Njb3BlUHJlZml4XQogICAgICApOwogICAgICBpZiAoc2NvcGVJbXBvcnRzTWF0Y2gpIHsKICAgICAgICByZXR1cm4gc2NvcGVJbXBvcnRzTWF0Y2g7CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIGNvbnN0IHRvcExldmVsSW1wb3J0c01hdGNoID0gcmVzb2x2ZUltcG9ydHNNYXRjaCgKICAgICAgICBub3JtYWxpemVkU3BlY2lmaWVyLAogICAgICAgIGltcG9ydE1hcC5pbXBvcnRzCiAgICAgICk7CiAgICAgIGlmICh0b3BMZXZlbEltcG9ydHNNYXRjaCkgewogICAgICAgIHJldHVybiB0b3BMZXZlbEltcG9ydHNNYXRjaDsKICAgICAgfQogICAgfQogIH0KCiAgcmV0dXJuIHJlc29sdmVJbXBvcnRzTWF0Y2gobm9ybWFsaXplZFNwZWNpZmllciwgaW1wb3J0TWFwLmltcG9ydHMpOwp9CgovLyBodHRwczovL3dpY2cuZ2l0aHViLmlvL2ltcG9ydC1tYXBzLyNyZXNvbHZlLWFuLWltcG9ydHMtbWF0Y2gKZnVuY3Rpb24gcmVzb2x2ZUltcG9ydHNNYXRjaChub3JtYWxpemVkU3BlY2lmaWVyLCBzcGVjaWZpZXJNYXApIHsKICBmb3IgKGxldCBzcGVjaWZpZXJLZXkgaW4gc3BlY2lmaWVyTWFwKSB7CiAgICBjb25zdCByZXNvbHV0aW9uUmVzdWx0ID0gc3BlY2lmaWVyTWFwW3NwZWNpZmllcktleV07CgogICAgaWYgKHNwZWNpZmllcktleSA9PT0gbm9ybWFsaXplZFNwZWNpZmllcikgewogICAgICBpZiAocmVzb2x1dGlvblJlc3VsdCA9PT0gbnVsbCkgewogICAgICAgIHRocm93IFR5cGVFcnJvcigKICAgICAgICAgIGBUaGUgaW1wb3J0IG1hcCByZXNvbHV0aW9uIG9mICR7c3BlY2lmaWVyS2V5fSBmYWlsZWQgZHVlIHRvIGEgbnVsbCBlbnRyeWAKICAgICAgICApOwogICAgICB9CiAgICAgIHJldHVybiByZXNvbHV0aW9uUmVzdWx0OwogICAgfSBlbHNlIGlmICgKICAgICAgc3BlY2lmaWVyS2V5LmVuZHNXaXRoKCcvJykgJiYKICAgICAgbm9ybWFsaXplZFNwZWNpZmllci5zdGFydHNXaXRoKHNwZWNpZmllcktleSkKICAgICkgewogICAgICBpZiAocmVzb2x1dGlvblJlc3VsdCA9PT0gbnVsbCkgewogICAgICAgIHRocm93IFR5cGVFcnJvcigKICAgICAgICAgIGBUaGUgaW1wb3J0IG1hcCByZXNvbHV0aW9uIG9mICR7c3BlY2lmaWVyS2V5fSBmYWlsZWQgZHVlIHRvIGEgbnVsbCBlbnRyeWAKICAgICAgICApOwogICAgICB9CiAgICAgIGNvbnN0IGFmdGVyUHJlZml4ID0gbm9ybWFsaXplZFNwZWNpZmllci5zbGljZShzcGVjaWZpZXJLZXkubGVuZ3RoKTsKICAgICAgdHJ5IHsKICAgICAgICByZXR1cm4gbmV3IFVSTChhZnRlclByZWZpeCwgcmVzb2x1dGlvblJlc3VsdCkuaHJlZjsKICAgICAgfSBjYXRjaCB7CiAgICAgICAgdGhyb3cgVHlwZUVycm9yKAogICAgICAgICAgYFRoZSBpbXBvcnQgbWFwIHJlc29sdXRpb24gb2YgJHtzcGVjaWZpZXJLZXl9IGZhaWxlZCBkdWUgdG8gVVJMIHBhcnNlIGZhaWx1cmVgCiAgICAgICAgKTsKICAgICAgfQogICAgfQogIH0KCiAgcmV0dXJuIG51bGw7Cn0KCi8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vaW1wb3J0LW1hcHMvI3BhcnNpbmcKZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVBbmRDb21wb3NlSW1wb3J0TWFwKHBhcnNlZCkgewogIC8vIFN0ZXAgMgogIGlmICghaXNQbGFpbk9iamVjdChwYXJzZWQpKSB7CiAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBpbXBvcnQgbWFwIC0gdG9wIGxldmVsIG11c3QgYmUgYW4gb2JqZWN0YCk7CiAgfQoKICAvLyBTdGVwIDMKICBsZXQgc29ydGVkQW5kTm9ybWFsaXplZEltcG9ydHMgPSB7fTsKCiAgLy8gU3RlcCA0CiAgaWYgKHBhcnNlZC5oYXNPd25Qcm9wZXJ0eSgnaW1wb3J0cycpKSB7CiAgICAvLyBTdGVwIDQuMQogICAgaWYgKCFpc1BsYWluT2JqZWN0KHBhcnNlZC5pbXBvcnRzKSkgewogICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBpbXBvcnQgbWFwIC0gImltcG9ydHMiIHByb3BlcnR5IG11c3QgYmUgYW4gb2JqZWN0YCk7CiAgICB9CgogICAgLy8gU3RlcCA0LjIKICAgIHNvcnRlZEFuZE5vcm1hbGl6ZWRJbXBvcnRzID0gc29ydEFuZE5vcm1hbGl6ZVNwZWNpZmllck1hcCgKICAgICAgcGFyc2VkLmltcG9ydHMsCiAgICAgIGJhc2VVUkwKICAgICk7CiAgfQoKICAvLyBTdGVwIDUKICBsZXQgc29ydGVkQW5kTm9ybWFsaXplZFNjb3BlcyA9IHt9OwoKICAvLyBTdGVwIDYKICBpZiAocGFyc2VkLmhhc093blByb3BlcnR5KCdzY29wZXMnKSkgewogICAgLy8gU3RlcCA2LjEKICAgIGlmICghaXNQbGFpbk9iamVjdChwYXJzZWQuc2NvcGVzKSkgewogICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBpbXBvcnQgbWFwIC0gInNjb3BlcyIgcHJvcGVydHkgbXVzdCBiZSBhbiBvYmplY3RgKTsKICAgIH0KCiAgICAvLyBTdGVwIDYuMgogICAgc29ydGVkQW5kTm9ybWFsaXplZFNjb3BlcyA9IHNvcnRBbmROb3JtYWxpemVTY29wZXMocGFyc2VkLnNjb3BlcywgYmFzZVVSTCk7CiAgfQoKICAvLyBTdGVwIDcKICBjb25zdCBpbnZhbGlkS2V5cyA9IE9iamVjdC5rZXlzKHBhcnNlZCkuZmlsdGVyKAogICAgKGtleSkgPT4ga2V5ICE9PSAnaW1wb3J0cycgJiYga2V5ICE9PSAnc2NvcGVzJwogICk7CiAgaWYgKGludmFsaWRLZXlzLmxlbmd0aCA+IDApIHsKICAgIGNvbnNvbGUud2FybigKICAgICAgYEludmFsaWQgdG9wLWxldmVsIGtleSR7CiAgICAgICAgaW52YWxpZEtleXMubGVuZ3RoID4gMCA/ICdzJyA6ICcnCiAgICAgIH0gaW4gaW1wb3J0IG1hcCAtICR7aW52YWxpZEtleXMuam9pbignLCAnKX1gCiAgICApOwogIH0KCiAgLy8gU3RlcCA4CiAgcmV0dXJuIHsKICAgIGltcG9ydHM6IHNvcnRlZEFuZE5vcm1hbGl6ZWRJbXBvcnRzLAogICAgc2NvcGVzOiBzb3J0ZWRBbmROb3JtYWxpemVkU2NvcGVzLAogIH07Cn0KCi8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vaW1wb3J0LW1hcHMvI3NvcnQtYW5kLW5vcm1hbGl6ZS1hLXNwZWNpZmllci1tYXAKZnVuY3Rpb24gc29ydEFuZE5vcm1hbGl6ZVNwZWNpZmllck1hcChtYXAsIGJhc2VVUkwpIHsKICBjb25zdCBub3JtYWxpemVkID0ge307CgogIGZvciAobGV0IHNwZWNpZmllcktleSBpbiBtYXApIHsKICAgIGNvbnN0IHZhbHVlID0gbWFwW3NwZWNpZmllcktleV07CgogICAgY29uc3Qgbm9ybWFsaXplZFNwZWNpZmllcktleSA9IG5vcm1hbGl6ZVNwZWNpZmllcktleShzcGVjaWZpZXJLZXksIGJhc2VVUkwpOwogICAgaWYgKG5vcm1hbGl6ZWRTcGVjaWZpZXJLZXkgPT09IG51bGwpIHsKICAgICAgY29udGludWU7CiAgICB9CgogICAgbGV0IGFkZHJlc3NVUkwgPSBwYXJzZVVSTExpa2VTcGVjaWZpZXIodmFsdWUsIGJhc2VVUkwpOwogICAgaWYgKGFkZHJlc3NVUkwgPT09IG51bGwpIHsKICAgICAgY29uc29sZS53YXJuKAogICAgICAgIGBJbnZhbGlkIFVSTCBhZGRyZXNzIGZvciBpbXBvcnQgbWFwIHNwZWNpZmllciAnJHtzcGVjaWZpZXJLZXl9J2AKICAgICAgKTsKICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVkU3BlY2lmaWVyS2V5XSA9IG51bGw7CiAgICAgIGNvbnRpbnVlOwogICAgfQoKICAgIGlmIChzcGVjaWZpZXJLZXkuZW5kc1dpdGgoJy8nKSAmJiAhYWRkcmVzc1VSTC5lbmRzV2l0aCgnLycpKSB7CiAgICAgIGNvbnNvbGUud2FybigKICAgICAgICBgSW52YWxpZCBVUkwgYWRkcmVzcyBmb3IgaW1wb3J0IG1hcCBzcGVjaWZpZXIgJyR7c3BlY2lmaWVyS2V5fScgLSBzaW5jZSB0aGUgc3BlY2lmaWVyIGVuZHMgaW4gc2xhc2gsIHNvIG11c3QgdGhlIGFkZHJlc3NgCiAgICAgICk7CiAgICAgIG5vcm1hbGl6ZWRbbm9ybWFsaXplZFNwZWNpZmllcktleV0gPSBudWxsOwogICAgICBjb250aW51ZTsKICAgIH0KCiAgICBub3JtYWxpemVkW25vcm1hbGl6ZWRTcGVjaWZpZXJLZXldID0gYWRkcmVzc1VSTDsKICB9CgogIHJldHVybiBub3JtYWxpemVkOwp9CgovLyBodHRwczovL3dpY2cuZ2l0aHViLmlvL2ltcG9ydC1tYXBzLyNub3JtYWxpemUtYS1zcGVjaWZpZXIta2V5CmZ1bmN0aW9uIG5vcm1hbGl6ZVNwZWNpZmllcktleShrZXkpIHsKICBpZiAoa2V5ID09PSAnJykgewogICAgY29uc29sZS53YXJuKGBTcGVjaWZpZXIga2V5cyBpbiBpbXBvcnQgbWFwcyBtYXkgbm90IGJlIHRoZSBlbXB0eSBzdHJpbmdgKTsKICAgIHJldHVybiBudWxsOwogIH0KCiAgcmV0dXJuIHBhcnNlVVJMTGlrZVNwZWNpZmllcihrZXksIGJhc2VVUkwpIHx8IGtleTsKfQoKLy8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9pbXBvcnQtbWFwcy8jcGFyc2UtYS11cmwtbGlrZS1pbXBvcnQtc3BlY2lmaWVyCmZ1bmN0aW9uIHBhcnNlVVJMTGlrZVNwZWNpZmllcihzcGVjaWZpZXIsIGJhc2VVUkwpIHsKICBjb25zdCB1c2VCYXNlVXJsQXNQYXJlbnQgPQogICAgc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJy8nKSB8fAogICAgc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJy4vJykgfHwKICAgIHNwZWNpZmllci5zdGFydHNXaXRoKCcuLi8nKTsKCiAgdHJ5IHsKICAgIHJldHVybiBuZXcgVVJMKHNwZWNpZmllciwgdXNlQmFzZVVybEFzUGFyZW50ID8gYmFzZVVSTCA6IHVuZGVmaW5lZCkuaHJlZjsKICB9IGNhdGNoIHsKICAgIHJldHVybiBudWxsOwogIH0KfQoKLy8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9pbXBvcnQtbWFwcy8jc29ydC1hbmQtbm9ybWFsaXplLXNjb3BlcwpmdW5jdGlvbiBzb3J0QW5kTm9ybWFsaXplU2NvcGVzKG1hcCwgYmFzZVVSTCkgewogIGxldCBub3JtYWxpemVkID0ge307CgogIGZvciAobGV0IHNjb3BlUHJlZml4IGluIG1hcCkgewogICAgY29uc3QgcG90ZW50aWFsU3BlY2lmaWVyTWFwID0gbWFwW3Njb3BlUHJlZml4XTsKICAgIGlmICghaXNQbGFpbk9iamVjdChwb3RlbnRpYWxTcGVjaWZpZXJNYXApKSB7CiAgICAgIHRocm93IFR5cGVFcnJvcigKICAgICAgICBgVGhlIHZhbHVlIG9mIHNjb3BlICR7c2NvcGVQcmVmaXh9IG11c3QgYmUgYSBKU09OIG9iamVjdGAKICAgICAgKTsKICAgIH0KCiAgICBsZXQgc2NvcGVQcmVmaXhVUkw7CiAgICB0cnkgewogICAgICBzY29wZVByZWZpeFVSTCA9IG5ldyBVUkwoc2NvcGVQcmVmaXgsIGJhc2VVUkwpLmhyZWY7CiAgICB9IGNhdGNoIHsKICAgICAgY29uc29sZS53YXJuKAogICAgICAgIGBTY29wZSBwcmVmaXggVVJMICcke3Njb3BlUHJlZml4fScgd2FzIG5vdCBwYXJzZWFibGUgaW4gaW1wb3J0IG1hcGAKICAgICAgKTsKICAgICAgY29udGludWU7CiAgICB9CgogICAgbm9ybWFsaXplZFtzY29wZVByZWZpeFVSTF0gPSBzb3J0QW5kTm9ybWFsaXplU3BlY2lmaWVyTWFwKAogICAgICBwb3RlbnRpYWxTcGVjaWZpZXJNYXAsCiAgICAgIGJhc2VVUkwKICAgICk7CiAgfQoKICByZXR1cm4gbm9ybWFsaXplZDsKfQoKZnVuY3Rpb24gaXNQbGFpbk9iamVjdChvYmopIHsKICByZXR1cm4gb2JqID09PSBPYmplY3Qob2JqKSAmJiAhQXJyYXkuaXNBcnJheShvYmopOwp9CgovLyAtLS0KCmxldCBpbXBvcnRNYXBQcm9taXNlID0gZ2V0SW1wb3J0TWFwUHJvbWlzZSgpOwoKZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmUoc3BlY2lmaWVyLCBjb250ZXh0LCBkZWZhdWx0UmVzb2x2ZSkgewogIGNvbnN0IHsgcGFyZW50VVJMID0gbnVsbCB9ID0gY29udGV4dDsKICBjb25zdCBpbXBvcnRNYXAgPSBhd2FpdCBpbXBvcnRNYXBQcm9taXNlOwogIGNvbnN0IGltcG9ydE1hcFVybCA9IHJlc29sdmVTcGVjaWZpZXIoaW1wb3J0TWFwLCBzcGVjaWZpZXIsIHBhcmVudFVSTCk7CgogIHJldHVybiBkZWZhdWx0UmVzb2x2ZShpbXBvcnRNYXBVcmwgPz8gc3BlY2lmaWVyLCBjb250ZXh0LCBkZWZhdWx0UmVzb2x2ZSk7Cn0KCmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkKHVybCwgY29udGV4dCwgZGVmYXVsdExvYWQpIHsKICAvLyBGYWxscyBkYXMgVVJMLVNjaGVtYSBodHRwIG9kZXIgaHR0cHMgaXN0LCBob2xlbiB3aXIgZGVuIEluaGFsdCDDvGJlciBGZXRjaAogIGlmICh1cmwuc3RhcnRzV2l0aCgnaHR0cDovLycpIHx8IHVybC5zdGFydHNXaXRoKCdodHRwczovLycpKSB7CiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCh1cmwpOwogICAgaWYgKCFyZXMub2spIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggbW9kdWxlIGZyb20gJHt1cmx9YCk7CiAgICB9CiAgICBjb25zdCBzb3VyY2UgPSBhd2FpdCByZXMudGV4dCgpOwogICAgcmV0dXJuIHsKICAgICAgc2hvcnRDaXJjdWl0OiB0cnVlLAogICAgICBmb3JtYXQ6ICdtb2R1bGUnLCAvLyBXaXIgbmVobWVuIGFuLCBlcyBoYW5kZWx0IHNpY2ggdW0gZWluIEVTTS1Nb2R1bAogICAgICBzb3VyY2UsCiAgICB9OwogIH0KCiAgLy8gRGVmYXVsdCBsb2FkZXIgZsO8ciBhbGxlIGFuZGVyZW4gTW9kdWxlCiAgY29udGV4dC5mb3JtYXQgPSAnbW9kdWxlJzsKCiAgcmV0dXJuIGRlZmF1bHRMb2FkKHVybCwgY29udGV4dCwgZGVmYXVsdExvYWQpOwp9Cgphc3luYyBmdW5jdGlvbiBnZXRJbXBvcnRNYXBQcm9taXNlKCkgewogIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHByb2Nlc3MuZW52LklNUE9SVF9NQVBfUEFUSCB8fCBJTVBPUlRfTUFQX0ZJTEVfTkFNRTsKICBjb25zdCBpbXBvcnRNYXBQYXRoID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIHJlbGF0aXZlUGF0aCk7CgogIGxldCBzdHI7CiAgdHJ5IHsKICAgIHN0ciA9IGF3YWl0IGZzLnJlYWRGaWxlKGltcG9ydE1hcFBhdGgpOwogIH0gY2F0Y2ggKGVycikgewogICAgcmV0dXJuIGVtcHR5TWFwKCk7CiAgfQoKICBsZXQganNvbjsKICB0cnkgewogICAganNvbiA9IGF3YWl0IEpTT04ucGFyc2Uoc3RyKTsKICB9IGNhdGNoIChlcnIpIHsKICAgIHRocm93IEVycm9yKAogICAgICBgSW1wb3J0IG1hcCBhdCAke2ltcG9ydE1hcFBhdGh9IGNvbnRhaW5zIGludmFsaWQganNvbjogJHtlcnIubWVzc2FnZX1gCiAgICApOwogIH0KCiAgcmV0dXJuIHJlc29sdmVBbmRDb21wb3NlSW1wb3J0TWFwKGpzb24pOwp9CgpnbG9iYWwubm9kZUxvYWRlciA9IGdsb2JhbC5ub2RlTG9hZGVyIHx8IHt9OwoKZ2xvYmFsLm5vZGVMb2FkZXIuc2V0SW1wb3J0TWFwUHJvbWlzZSA9IGZ1bmN0aW9uIHNldEltcG9ydE1hcFByb21pc2UocHJvbWlzZSkgewogIGltcG9ydE1hcFByb21pc2UgPSBwcm9taXNlLnRoZW4oKG1hcCkgPT4gewogICAgcmV0dXJuIHJlc29sdmVBbmRDb21wb3NlSW1wb3J0TWFwKG1hcCk7CiAgfSk7Cn07CgpmdW5jdGlvbiBlbXB0eU1hcCgpIHsKICByZXR1cm4geyBpbXBvcnRzOiB7fSwgc2NvcGVzOiB7fSB9Owp9Cg==";
@@ -0,0 +1,2 @@
1
+ export const resolver = "aW1wb3J0IHBhdGggZnJvbSAncGF0aCc7CmltcG9ydCB1cmwgZnJvbSAndXJsJzsKaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7CgpleHBvcnQgY29uc3QgSU1QT1JUX01BUF9GSUxFX05BTUUgPSAnbm9kZS5pbXBvcnRtYXAnOwoKY29uc3QgYmFzZVVSTCA9IHVybC5wYXRoVG9GaWxlVVJMKHByb2Nlc3MuY3dkKCkpICsgcGF0aC5zZXA7CgovLyBodHRwczovL3dpY2cuZ2l0aHViLmlvL2ltcG9ydC1tYXBzLyNuZXctcmVzb2x2ZS1hbGdvcml0aG0KZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTcGVjaWZpZXIoaW1wb3J0TWFwLCBzcGVjaWZpZXIsIHBhcmVudFVSTCkgewogIGxldCBjdXJyZW50QmFzZVVSTDsKICBpZiAocGFyZW50VVJMKSB7CiAgICBjb25zdCBsYXN0U2xhc2hJbmRleCA9IHBhcmVudFVSTC5sYXN0SW5kZXhPZihwYXRoLnNlcCk7CiAgICBjdXJyZW50QmFzZVVSTCA9IHBhcmVudFVSTC5zbGljZSgwLCBsYXN0U2xhc2hJbmRleCArIDEpOwogIH0gZWxzZSB7CiAgICBjdXJyZW50QmFzZVVSTCA9IGJhc2VVUkw7CiAgfQogIGNvbnN0IG5vcm1hbGl6ZWRTcGVjaWZpZXIgPQogICAgcGFyc2VVUkxMaWtlU3BlY2lmaWVyKHNwZWNpZmllciwgY3VycmVudEJhc2VVUkwpIHx8IHNwZWNpZmllcjsKICBmb3IgKGxldCBzY29wZVByZWZpeCBpbiBpbXBvcnRNYXAuc2NvcGVzKSB7CiAgICBpZiAoCiAgICAgIHNjb3BlUHJlZml4ID09PSBjdXJyZW50QmFzZVVSTCB8fAogICAgICAoc2NvcGVQcmVmaXguZW5kc1dpdGgoJy8nKSAmJiBjdXJyZW50QmFzZVVSTC5zdGFydHNXaXRoKHNjb3BlUHJlZml4KSkKICAgICkgewogICAgICBjb25zdCBzY29wZUltcG9ydHNNYXRjaCA9IHJlc29sdmVJbXBvcnRzTWF0Y2goCiAgICAgICAgbm9ybWFsaXplZFNwZWNpZmllciwKICAgICAgICBpbXBvcnRNYXAuc2NvcGVzW3Njb3BlUHJlZml4XQogICAgICApOwogICAgICBpZiAoc2NvcGVJbXBvcnRzTWF0Y2gpIHsKICAgICAgICByZXR1cm4gc2NvcGVJbXBvcnRzTWF0Y2g7CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIGNvbnN0IHRvcExldmVsSW1wb3J0c01hdGNoID0gcmVzb2x2ZUltcG9ydHNNYXRjaCgKICAgICAgICBub3JtYWxpemVkU3BlY2lmaWVyLAogICAgICAgIGltcG9ydE1hcC5pbXBvcnRzCiAgICAgICk7CiAgICAgIGlmICh0b3BMZXZlbEltcG9ydHNNYXRjaCkgewogICAgICAgIHJldHVybiB0b3BMZXZlbEltcG9ydHNNYXRjaDsKICAgICAgfQogICAgfQogIH0KCiAgcmV0dXJuIHJlc29sdmVJbXBvcnRzTWF0Y2gobm9ybWFsaXplZFNwZWNpZmllciwgaW1wb3J0TWFwLmltcG9ydHMpOwp9CgovLyBodHRwczovL3dpY2cuZ2l0aHViLmlvL2ltcG9ydC1tYXBzLyNyZXNvbHZlLWFuLWltcG9ydHMtbWF0Y2gKZnVuY3Rpb24gcmVzb2x2ZUltcG9ydHNNYXRjaChub3JtYWxpemVkU3BlY2lmaWVyLCBzcGVjaWZpZXJNYXApIHsKICBmb3IgKGxldCBzcGVjaWZpZXJLZXkgaW4gc3BlY2lmaWVyTWFwKSB7CiAgICBjb25zdCByZXNvbHV0aW9uUmVzdWx0ID0gc3BlY2lmaWVyTWFwW3NwZWNpZmllcktleV07CgogICAgaWYgKHNwZWNpZmllcktleSA9PT0gbm9ybWFsaXplZFNwZWNpZmllcikgewogICAgICBpZiAocmVzb2x1dGlvblJlc3VsdCA9PT0gbnVsbCkgewogICAgICAgIHRocm93IFR5cGVFcnJvcigKICAgICAgICAgIGBUaGUgaW1wb3J0IG1hcCByZXNvbHV0aW9uIG9mICR7c3BlY2lmaWVyS2V5fSBmYWlsZWQgZHVlIHRvIGEgbnVsbCBlbnRyeWAKICAgICAgICApOwogICAgICB9CiAgICAgIHJldHVybiByZXNvbHV0aW9uUmVzdWx0OwogICAgfSBlbHNlIGlmICgKICAgICAgc3BlY2lmaWVyS2V5LmVuZHNXaXRoKCcvJykgJiYKICAgICAgbm9ybWFsaXplZFNwZWNpZmllci5zdGFydHNXaXRoKHNwZWNpZmllcktleSkKICAgICkgewogICAgICBpZiAocmVzb2x1dGlvblJlc3VsdCA9PT0gbnVsbCkgewogICAgICAgIHRocm93IFR5cGVFcnJvcigKICAgICAgICAgIGBUaGUgaW1wb3J0IG1hcCByZXNvbHV0aW9uIG9mICR7c3BlY2lmaWVyS2V5fSBmYWlsZWQgZHVlIHRvIGEgbnVsbCBlbnRyeWAKICAgICAgICApOwogICAgICB9CiAgICAgIGNvbnN0IGFmdGVyUHJlZml4ID0gbm9ybWFsaXplZFNwZWNpZmllci5zbGljZShzcGVjaWZpZXJLZXkubGVuZ3RoKTsKICAgICAgdHJ5IHsKICAgICAgICByZXR1cm4gbmV3IFVSTChhZnRlclByZWZpeCwgcmVzb2x1dGlvblJlc3VsdCkuaHJlZjsKICAgICAgfSBjYXRjaCB7CiAgICAgICAgdGhyb3cgVHlwZUVycm9yKAogICAgICAgICAgYFRoZSBpbXBvcnQgbWFwIHJlc29sdXRpb24gb2YgJHtzcGVjaWZpZXJLZXl9IGZhaWxlZCBkdWUgdG8gVVJMIHBhcnNlIGZhaWx1cmVgCiAgICAgICAgKTsKICAgICAgfQogICAgfQogIH0KCiAgcmV0dXJuIG51bGw7Cn0KCi8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vaW1wb3J0LW1hcHMvI3BhcnNpbmcKZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVBbmRDb21wb3NlSW1wb3J0TWFwKHBhcnNlZCkgewogIC8vIFN0ZXAgMgogIGlmICghaXNQbGFpbk9iamVjdChwYXJzZWQpKSB7CiAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBpbXBvcnQgbWFwIC0gdG9wIGxldmVsIG11c3QgYmUgYW4gb2JqZWN0YCk7CiAgfQoKICAvLyBTdGVwIDMKICBsZXQgc29ydGVkQW5kTm9ybWFsaXplZEltcG9ydHMgPSB7fTsKCiAgLy8gU3RlcCA0CiAgaWYgKHBhcnNlZC5oYXNPd25Qcm9wZXJ0eSgnaW1wb3J0cycpKSB7CiAgICAvLyBTdGVwIDQuMQogICAgaWYgKCFpc1BsYWluT2JqZWN0KHBhcnNlZC5pbXBvcnRzKSkgewogICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBpbXBvcnQgbWFwIC0gImltcG9ydHMiIHByb3BlcnR5IG11c3QgYmUgYW4gb2JqZWN0YCk7CiAgICB9CgogICAgLy8gU3RlcCA0LjIKICAgIHNvcnRlZEFuZE5vcm1hbGl6ZWRJbXBvcnRzID0gc29ydEFuZE5vcm1hbGl6ZVNwZWNpZmllck1hcCgKICAgICAgcGFyc2VkLmltcG9ydHMsCiAgICAgIGJhc2VVUkwKICAgICk7CiAgfQoKICAvLyBTdGVwIDUKICBsZXQgc29ydGVkQW5kTm9ybWFsaXplZFNjb3BlcyA9IHt9OwoKICAvLyBTdGVwIDYKICBpZiAocGFyc2VkLmhhc093blByb3BlcnR5KCdzY29wZXMnKSkgewogICAgLy8gU3RlcCA2LjEKICAgIGlmICghaXNQbGFpbk9iamVjdChwYXJzZWQuc2NvcGVzKSkgewogICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBpbXBvcnQgbWFwIC0gInNjb3BlcyIgcHJvcGVydHkgbXVzdCBiZSBhbiBvYmplY3RgKTsKICAgIH0KCiAgICAvLyBTdGVwIDYuMgogICAgc29ydGVkQW5kTm9ybWFsaXplZFNjb3BlcyA9IHNvcnRBbmROb3JtYWxpemVTY29wZXMocGFyc2VkLnNjb3BlcywgYmFzZVVSTCk7CiAgfQoKICAvLyBTdGVwIDcKICBjb25zdCBpbnZhbGlkS2V5cyA9IE9iamVjdC5rZXlzKHBhcnNlZCkuZmlsdGVyKAogICAgKGtleSkgPT4ga2V5ICE9PSAnaW1wb3J0cycgJiYga2V5ICE9PSAnc2NvcGVzJwogICk7CiAgaWYgKGludmFsaWRLZXlzLmxlbmd0aCA+IDApIHsKICAgIGNvbnNvbGUud2FybigKICAgICAgYEludmFsaWQgdG9wLWxldmVsIGtleSR7CiAgICAgICAgaW52YWxpZEtleXMubGVuZ3RoID4gMCA/ICdzJyA6ICcnCiAgICAgIH0gaW4gaW1wb3J0IG1hcCAtICR7aW52YWxpZEtleXMuam9pbignLCAnKX1gCiAgICApOwogIH0KCiAgLy8gU3RlcCA4CiAgcmV0dXJuIHsKICAgIGltcG9ydHM6IHNvcnRlZEFuZE5vcm1hbGl6ZWRJbXBvcnRzLAogICAgc2NvcGVzOiBzb3J0ZWRBbmROb3JtYWxpemVkU2NvcGVzLAogIH07Cn0KCi8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vaW1wb3J0LW1hcHMvI3NvcnQtYW5kLW5vcm1hbGl6ZS1hLXNwZWNpZmllci1tYXAKZnVuY3Rpb24gc29ydEFuZE5vcm1hbGl6ZVNwZWNpZmllck1hcChtYXAsIGJhc2VVUkwpIHsKICBjb25zdCBub3JtYWxpemVkID0ge307CgogIGZvciAobGV0IHNwZWNpZmllcktleSBpbiBtYXApIHsKICAgIGNvbnN0IHZhbHVlID0gbWFwW3NwZWNpZmllcktleV07CgogICAgY29uc3Qgbm9ybWFsaXplZFNwZWNpZmllcktleSA9IG5vcm1hbGl6ZVNwZWNpZmllcktleShzcGVjaWZpZXJLZXksIGJhc2VVUkwpOwogICAgaWYgKG5vcm1hbGl6ZWRTcGVjaWZpZXJLZXkgPT09IG51bGwpIHsKICAgICAgY29udGludWU7CiAgICB9CgogICAgbGV0IGFkZHJlc3NVUkwgPSBwYXJzZVVSTExpa2VTcGVjaWZpZXIodmFsdWUsIGJhc2VVUkwpOwogICAgaWYgKGFkZHJlc3NVUkwgPT09IG51bGwpIHsKICAgICAgY29uc29sZS53YXJuKAogICAgICAgIGBJbnZhbGlkIFVSTCBhZGRyZXNzIGZvciBpbXBvcnQgbWFwIHNwZWNpZmllciAnJHtzcGVjaWZpZXJLZXl9J2AKICAgICAgKTsKICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVkU3BlY2lmaWVyS2V5XSA9IG51bGw7CiAgICAgIGNvbnRpbnVlOwogICAgfQoKICAgIGlmIChzcGVjaWZpZXJLZXkuZW5kc1dpdGgoJy8nKSAmJiAhYWRkcmVzc1VSTC5lbmRzV2l0aCgnLycpKSB7CiAgICAgIGNvbnNvbGUud2FybigKICAgICAgICBgSW52YWxpZCBVUkwgYWRkcmVzcyBmb3IgaW1wb3J0IG1hcCBzcGVjaWZpZXIgJyR7c3BlY2lmaWVyS2V5fScgLSBzaW5jZSB0aGUgc3BlY2lmaWVyIGVuZHMgaW4gc2xhc2gsIHNvIG11c3QgdGhlIGFkZHJlc3NgCiAgICAgICk7CiAgICAgIG5vcm1hbGl6ZWRbbm9ybWFsaXplZFNwZWNpZmllcktleV0gPSBudWxsOwogICAgICBjb250aW51ZTsKICAgIH0KCiAgICBub3JtYWxpemVkW25vcm1hbGl6ZWRTcGVjaWZpZXJLZXldID0gYWRkcmVzc1VSTDsKICB9CgogIHJldHVybiBub3JtYWxpemVkOwp9CgovLyBodHRwczovL3dpY2cuZ2l0aHViLmlvL2ltcG9ydC1tYXBzLyNub3JtYWxpemUtYS1zcGVjaWZpZXIta2V5CmZ1bmN0aW9uIG5vcm1hbGl6ZVNwZWNpZmllcktleShrZXkpIHsKICBpZiAoa2V5ID09PSAnJykgewogICAgY29uc29sZS53YXJuKGBTcGVjaWZpZXIga2V5cyBpbiBpbXBvcnQgbWFwcyBtYXkgbm90IGJlIHRoZSBlbXB0eSBzdHJpbmdgKTsKICAgIHJldHVybiBudWxsOwogIH0KCiAgcmV0dXJuIHBhcnNlVVJMTGlrZVNwZWNpZmllcihrZXksIGJhc2VVUkwpIHx8IGtleTsKfQoKLy8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9pbXBvcnQtbWFwcy8jcGFyc2UtYS11cmwtbGlrZS1pbXBvcnQtc3BlY2lmaWVyCmZ1bmN0aW9uIHBhcnNlVVJMTGlrZVNwZWNpZmllcihzcGVjaWZpZXIsIGJhc2VVUkwpIHsKICBjb25zdCB1c2VCYXNlVXJsQXNQYXJlbnQgPQogICAgc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJy8nKSB8fAogICAgc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJy4vJykgfHwKICAgIHNwZWNpZmllci5zdGFydHNXaXRoKCcuLi8nKTsKCiAgdHJ5IHsKICAgIHJldHVybiBuZXcgVVJMKHNwZWNpZmllciwgdXNlQmFzZVVybEFzUGFyZW50ID8gYmFzZVVSTCA6IHVuZGVmaW5lZCkuaHJlZjsKICB9IGNhdGNoIHsKICAgIHJldHVybiBudWxsOwogIH0KfQoKLy8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9pbXBvcnQtbWFwcy8jc29ydC1hbmQtbm9ybWFsaXplLXNjb3BlcwpmdW5jdGlvbiBzb3J0QW5kTm9ybWFsaXplU2NvcGVzKG1hcCwgYmFzZVVSTCkgewogIGxldCBub3JtYWxpemVkID0ge307CgogIGZvciAobGV0IHNjb3BlUHJlZml4IGluIG1hcCkgewogICAgY29uc3QgcG90ZW50aWFsU3BlY2lmaWVyTWFwID0gbWFwW3Njb3BlUHJlZml4XTsKICAgIGlmICghaXNQbGFpbk9iamVjdChwb3RlbnRpYWxTcGVjaWZpZXJNYXApKSB7CiAgICAgIHRocm93IFR5cGVFcnJvcigKICAgICAgICBgVGhlIHZhbHVlIG9mIHNjb3BlICR7c2NvcGVQcmVmaXh9IG11c3QgYmUgYSBKU09OIG9iamVjdGAKICAgICAgKTsKICAgIH0KCiAgICBsZXQgc2NvcGVQcmVmaXhVUkw7CiAgICB0cnkgewogICAgICBzY29wZVByZWZpeFVSTCA9IG5ldyBVUkwoc2NvcGVQcmVmaXgsIGJhc2VVUkwpLmhyZWY7CiAgICB9IGNhdGNoIHsKICAgICAgY29uc29sZS53YXJuKAogICAgICAgIGBTY29wZSBwcmVmaXggVVJMICcke3Njb3BlUHJlZml4fScgd2FzIG5vdCBwYXJzZWFibGUgaW4gaW1wb3J0IG1hcGAKICAgICAgKTsKICAgICAgY29udGludWU7CiAgICB9CgogICAgbm9ybWFsaXplZFtzY29wZVByZWZpeFVSTF0gPSBzb3J0QW5kTm9ybWFsaXplU3BlY2lmaWVyTWFwKAogICAgICBwb3RlbnRpYWxTcGVjaWZpZXJNYXAsCiAgICAgIGJhc2VVUkwKICAgICk7CiAgfQoKICByZXR1cm4gbm9ybWFsaXplZDsKfQoKZnVuY3Rpb24gaXNQbGFpbk9iamVjdChvYmopIHsKICByZXR1cm4gb2JqID09PSBPYmplY3Qob2JqKSAmJiAhQXJyYXkuaXNBcnJheShvYmopOwp9CgovLyAtLS0KCmxldCBpbXBvcnRNYXBQcm9taXNlID0gZ2V0SW1wb3J0TWFwUHJvbWlzZSgpOwoKZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmUoc3BlY2lmaWVyLCBjb250ZXh0LCBkZWZhdWx0UmVzb2x2ZSkgewogIGNvbnN0IHsgcGFyZW50VVJMID0gbnVsbCB9ID0gY29udGV4dDsKICBjb25zdCBpbXBvcnRNYXAgPSBhd2FpdCBpbXBvcnRNYXBQcm9taXNlOwogIGNvbnN0IGltcG9ydE1hcFVybCA9IHJlc29sdmVTcGVjaWZpZXIoaW1wb3J0TWFwLCBzcGVjaWZpZXIsIHBhcmVudFVSTCk7CgogIHJldHVybiBkZWZhdWx0UmVzb2x2ZShpbXBvcnRNYXBVcmwgPz8gc3BlY2lmaWVyLCBjb250ZXh0LCBkZWZhdWx0UmVzb2x2ZSk7Cn0KCmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkKHVybCwgY29udGV4dCwgZGVmYXVsdExvYWQpIHsKICAvLyBGYWxscyBkYXMgVVJMLVNjaGVtYSBodHRwIG9kZXIgaHR0cHMgaXN0LCBob2xlbiB3aXIgZGVuIEluaGFsdCDDvGJlciBGZXRjaAogIGlmICh1cmwuc3RhcnRzV2l0aCgnaHR0cDovLycpIHx8IHVybC5zdGFydHNXaXRoKCdodHRwczovLycpKSB7CiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCh1cmwpOwogICAgaWYgKCFyZXMub2spIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggbW9kdWxlIGZyb20gJHt1cmx9YCk7CiAgICB9CiAgICBjb25zdCBzb3VyY2UgPSBhd2FpdCByZXMudGV4dCgpOwogICAgcmV0dXJuIHsKICAgICAgc2hvcnRDaXJjdWl0OiB0cnVlLAogICAgICBmb3JtYXQ6ICdtb2R1bGUnLCAvLyBXaXIgbmVobWVuIGFuLCBlcyBoYW5kZWx0IHNpY2ggdW0gZWluIEVTTS1Nb2R1bAogICAgICBzb3VyY2UsCiAgICB9OwogIH0KCiAgLy8gRGVmYXVsdCBsb2FkZXIgZsO8ciBhbGxlIGFuZGVyZW4gTW9kdWxlCiAgY29udGV4dC5mb3JtYXQgPSAnbW9kdWxlJzsKCiAgcmV0dXJuIGRlZmF1bHRMb2FkKHVybCwgY29udGV4dCwgZGVmYXVsdExvYWQpOwp9Cgphc3luYyBmdW5jdGlvbiBnZXRJbXBvcnRNYXBQcm9taXNlKCkgewogIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHByb2Nlc3MuZW52LklNUE9SVF9NQVBfUEFUSCB8fCBJTVBPUlRfTUFQX0ZJTEVfTkFNRTsKICBjb25zdCBpbXBvcnRNYXBQYXRoID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIHJlbGF0aXZlUGF0aCk7CgogIGxldCBzdHI7CiAgdHJ5IHsKICAgIHN0ciA9IGF3YWl0IGZzLnJlYWRGaWxlKGltcG9ydE1hcFBhdGgpOwogIH0gY2F0Y2ggKGVycikgewogICAgcmV0dXJuIGVtcHR5TWFwKCk7CiAgfQoKICBsZXQganNvbjsKICB0cnkgewogICAganNvbiA9IGF3YWl0IEpTT04ucGFyc2Uoc3RyKTsKICB9IGNhdGNoIChlcnIpIHsKICAgIHRocm93IEVycm9yKAogICAgICBgSW1wb3J0IG1hcCBhdCAke2ltcG9ydE1hcFBhdGh9IGNvbnRhaW5zIGludmFsaWQganNvbjogJHtlcnIubWVzc2FnZX1gCiAgICApOwogIH0KCiAgcmV0dXJuIHJlc29sdmVBbmRDb21wb3NlSW1wb3J0TWFwKGpzb24pOwp9CgpnbG9iYWwubm9kZUxvYWRlciA9IGdsb2JhbC5ub2RlTG9hZGVyIHx8IHt9OwoKZ2xvYmFsLm5vZGVMb2FkZXIuc2V0SW1wb3J0TWFwUHJvbWlzZSA9IGZ1bmN0aW9uIHNldEltcG9ydE1hcFByb21pc2UocHJvbWlzZSkgewogIGltcG9ydE1hcFByb21pc2UgPSBwcm9taXNlLnRoZW4oKG1hcCkgPT4gewogICAgcmV0dXJuIHJlc29sdmVBbmRDb21wb3NlSW1wb3J0TWFwKG1hcCk7CiAgfSk7Cn07CgpmdW5jdGlvbiBlbXB0eU1hcCgpIHsKICByZXR1cm4geyBpbXBvcnRzOiB7fSwgc2NvcGVzOiB7fSB9Owp9Cg==";
2
+ //# sourceMappingURL=loader-as-data-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader-as-data-url.js","sourceRoot":"","sources":["../../../../../../libs/native-federation-node/src/lib/utils/loader-as-data-url.js"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,0/UAA0/U,CAAC"}