@softarc/native-federation-node 4.0.0-RC1 → 4.0.0-RC4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softarc/native-federation-node",
3
- "version": "4.0.0-RC1",
3
+ "version": "4.0.0-RC4",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -37,7 +37,6 @@
37
37
  }
38
38
  },
39
39
  "dependencies": {
40
- "@softarc/native-federation": "4.0.0-RC1",
41
- "@softarc/native-federation-runtime": "4.0.0-RC1"
40
+ "@softarc/native-federation-runtime": "4.0.0-RC4"
42
41
  }
43
42
  }
package/README.md DELETED
@@ -1,11 +0,0 @@
1
- # node
2
-
3
- This library was generated with [Nx](https://nx.dev).
4
-
5
- ## Building
6
-
7
- Run `nx build node` to build the library.
8
-
9
- ## Running unit tests
10
-
11
- Run `nx test node` to execute the unit tests via [Vitest](https://vitest.dev/).
package/dist/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from './lib/node/init-node-federation.js';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC"}
package/dist/index.js DELETED
@@ -1,201 +0,0 @@
1
- // packages/node/src/lib/node/init-node-federation.ts
2
- import * as fs2 from "node:fs/promises";
3
- import { register } from "node:module";
4
- import * as path2 from "node:path";
5
- import { pathToFileURL } from "node:url";
6
- import {
7
- fetchAndRegisterRemotes,
8
- mergeImportMaps,
9
- processHostInfo
10
- } from "@softarc/native-federation-runtime";
11
-
12
- // packages/node/src/lib/utils/import-map-loader.js
13
- import path from "path";
14
- import url from "url";
15
- import { promises as fs } from "fs";
16
- import process from "process";
17
- var IMPORT_MAP_FILE_NAME = "node.importmap";
18
- var baseURL = url.pathToFileURL(process.cwd()) + path.sep;
19
- function resolveAndComposeImportMap(parsed) {
20
- if (!isPlainObject(parsed)) {
21
- throw Error(`Invalid import map - top level must be an object`);
22
- }
23
- let sortedAndNormalizedImports = {};
24
- if (Object.prototype.hasOwnProperty.call(parsed, "imports")) {
25
- if (!isPlainObject(parsed.imports)) {
26
- throw Error(`Invalid import map - "imports" property must be an object`);
27
- }
28
- sortedAndNormalizedImports = sortAndNormalizeSpecifierMap(
29
- parsed.imports,
30
- baseURL
31
- );
32
- }
33
- let sortedAndNormalizedScopes = {};
34
- if (Object.prototype.hasOwnProperty.call(parsed, "scopes")) {
35
- if (!isPlainObject(parsed.scopes)) {
36
- throw Error(`Invalid import map - "scopes" property must be an object`);
37
- }
38
- sortedAndNormalizedScopes = sortAndNormalizeScopes(parsed.scopes, baseURL);
39
- }
40
- const invalidKeys = Object.keys(parsed).filter(
41
- (key) => key !== "imports" && key !== "scopes"
42
- );
43
- if (invalidKeys.length > 0) {
44
- console.warn(
45
- `Invalid top-level key${invalidKeys.length > 0 ? "s" : ""} in import map - ${invalidKeys.join(", ")}`
46
- );
47
- }
48
- return {
49
- imports: sortedAndNormalizedImports,
50
- scopes: sortedAndNormalizedScopes
51
- };
52
- }
53
- function sortAndNormalizeSpecifierMap(map, baseURL2) {
54
- const normalized = {};
55
- for (const specifierKey in map) {
56
- const value = map[specifierKey];
57
- const normalizedSpecifierKey = normalizeSpecifierKey(specifierKey, baseURL2);
58
- if (normalizedSpecifierKey === null) {
59
- continue;
60
- }
61
- const addressURL = parseURLLikeSpecifier(value, baseURL2);
62
- if (addressURL === null) {
63
- console.warn(
64
- `Invalid URL address for import map specifier '${specifierKey}'`
65
- );
66
- normalized[normalizedSpecifierKey] = null;
67
- continue;
68
- }
69
- if (specifierKey.endsWith("/") && !addressURL.endsWith("/")) {
70
- console.warn(
71
- `Invalid URL address for import map specifier '${specifierKey}' - since the specifier ends in slash, so must the address`
72
- );
73
- normalized[normalizedSpecifierKey] = null;
74
- continue;
75
- }
76
- normalized[normalizedSpecifierKey] = addressURL;
77
- }
78
- return normalized;
79
- }
80
- function normalizeSpecifierKey(key) {
81
- if (key === "") {
82
- console.warn(`Specifier keys in import maps may not be the empty string`);
83
- return null;
84
- }
85
- return parseURLLikeSpecifier(key, baseURL) || key;
86
- }
87
- function parseURLLikeSpecifier(specifier, baseURL2) {
88
- const useBaseUrlAsParent = specifier.startsWith("/") || specifier.startsWith("./") || specifier.startsWith("../");
89
- try {
90
- return new URL(specifier, useBaseUrlAsParent ? baseURL2 : void 0).href;
91
- } catch {
92
- return null;
93
- }
94
- }
95
- function sortAndNormalizeScopes(map, baseURL2) {
96
- const normalized = {};
97
- for (const scopePrefix in map) {
98
- const potentialSpecifierMap = map[scopePrefix];
99
- if (!isPlainObject(potentialSpecifierMap)) {
100
- throw TypeError(
101
- `The value of scope ${scopePrefix} must be a JSON object`
102
- );
103
- }
104
- let scopePrefixURL;
105
- try {
106
- scopePrefixURL = new URL(scopePrefix, baseURL2).href;
107
- } catch {
108
- console.warn(
109
- `Scope prefix URL '${scopePrefix}' was not parseable in import map`
110
- );
111
- continue;
112
- }
113
- normalized[scopePrefixURL] = sortAndNormalizeSpecifierMap(
114
- potentialSpecifierMap,
115
- baseURL2
116
- );
117
- }
118
- return normalized;
119
- }
120
- function isPlainObject(obj) {
121
- return obj === Object(obj) && !Array.isArray(obj);
122
- }
123
- var importMapPromise = getImportMapPromise();
124
- async function getImportMapPromise() {
125
- const relativePath = process.env.IMPORT_MAP_PATH || IMPORT_MAP_FILE_NAME;
126
- const importMapPath = path.resolve(process.cwd(), relativePath);
127
- let str;
128
- try {
129
- str = await fs.readFile(importMapPath);
130
- } catch {
131
- return emptyMap();
132
- }
133
- let json;
134
- try {
135
- json = await JSON.parse(str);
136
- } catch (err) {
137
- throw Error(
138
- `Import map at ${importMapPath} contains invalid json: ${err.message}`
139
- );
140
- }
141
- return resolveAndComposeImportMap(json);
142
- }
143
- globalThis.nodeLoader = globalThis.nodeLoader || {};
144
- globalThis.nodeLoader.setImportMapPromise = function setImportMapPromise(promise) {
145
- importMapPromise = promise.then((map) => {
146
- return resolveAndComposeImportMap(map);
147
- });
148
- };
149
- function emptyMap() {
150
- return { imports: {}, scopes: {} };
151
- }
152
-
153
- // packages/node/src/lib/utils/loader-as-data-url.js
154
- var resolver = "aW1wb3J0IHBhdGggZnJvbSAncGF0aCc7CmltcG9ydCB1cmwgZnJvbSAndXJsJzsKaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7CgpleHBvcnQgY29uc3QgSU1QT1JUX01BUF9GSUxFX05BTUUgPSAnbm9kZS5pbXBvcnRtYXAnOwoKY29uc3QgYmFzZVVSTCA9IHVybC5wYXRoVG9GaWxlVVJMKHByb2Nlc3MuY3dkKCkpICsgcGF0aC5zZXA7CgovLyBodHRwczovL3dpY2cuZ2l0aHViLmlvL2ltcG9ydC1tYXBzLyNuZXctcmVzb2x2ZS1hbGdvcml0aG0KZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTcGVjaWZpZXIoaW1wb3J0TWFwLCBzcGVjaWZpZXIsIHBhcmVudFVSTCkgewogIGxldCBjdXJyZW50QmFzZVVSTDsKICBpZiAocGFyZW50VVJMKSB7CiAgICBjb25zdCBsYXN0U2xhc2hJbmRleCA9IHBhcmVudFVSTC5sYXN0SW5kZXhPZihwYXRoLnNlcCk7CiAgICBjdXJyZW50QmFzZVVSTCA9IHBhcmVudFVSTC5zbGljZSgwLCBsYXN0U2xhc2hJbmRleCArIDEpOwogIH0gZWxzZSB7CiAgICBjdXJyZW50QmFzZVVSTCA9IGJhc2VVUkw7CiAgfQogIGNvbnN0IG5vcm1hbGl6ZWRTcGVjaWZpZXIgPQogICAgcGFyc2VVUkxMaWtlU3BlY2lmaWVyKHNwZWNpZmllciwgY3VycmVudEJhc2VVUkwpIHx8IHNwZWNpZmllcjsKICBmb3IgKGxldCBzY29wZVByZWZpeCBpbiBpbXBvcnRNYXAuc2NvcGVzKSB7CiAgICBpZiAoCiAgICAgIHNjb3BlUHJlZml4ID09PSBjdXJyZW50QmFzZVVSTCB8fAogICAgICAoc2NvcGVQcmVmaXguZW5kc1dpdGgoJy8nKSAmJiBjdXJyZW50QmFzZVVSTC5zdGFydHNXaXRoKHNjb3BlUHJlZml4KSkKICAgICkgewogICAgICBjb25zdCBzY29wZUltcG9ydHNNYXRjaCA9IHJlc29sdmVJbXBvcnRzTWF0Y2goCiAgICAgICAgbm9ybWFsaXplZFNwZWNpZmllciwKICAgICAgICBpbXBvcnRNYXAuc2NvcGVzW3Njb3BlUHJlZml4XSwKICAgICAgKTsKICAgICAgaWYgKHNjb3BlSW1wb3J0c01hdGNoKSB7CiAgICAgICAgcmV0dXJuIHNjb3BlSW1wb3J0c01hdGNoOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBjb25zdCB0b3BMZXZlbEltcG9ydHNNYXRjaCA9IHJlc29sdmVJbXBvcnRzTWF0Y2goCiAgICAgICAgbm9ybWFsaXplZFNwZWNpZmllciwKICAgICAgICBpbXBvcnRNYXAuaW1wb3J0cywKICAgICAgKTsKICAgICAgaWYgKHRvcExldmVsSW1wb3J0c01hdGNoKSB7CiAgICAgICAgcmV0dXJuIHRvcExldmVsSW1wb3J0c01hdGNoOwogICAgICB9CiAgICB9CiAgfQoKICByZXR1cm4gcmVzb2x2ZUltcG9ydHNNYXRjaChub3JtYWxpemVkU3BlY2lmaWVyLCBpbXBvcnRNYXAuaW1wb3J0cyk7Cn0KCi8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vaW1wb3J0LW1hcHMvI3Jlc29sdmUtYW4taW1wb3J0cy1tYXRjaApmdW5jdGlvbiByZXNvbHZlSW1wb3J0c01hdGNoKG5vcm1hbGl6ZWRTcGVjaWZpZXIsIHNwZWNpZmllck1hcCkgewogIGZvciAobGV0IHNwZWNpZmllcktleSBpbiBzcGVjaWZpZXJNYXApIHsKICAgIGNvbnN0IHJlc29sdXRpb25SZXN1bHQgPSBzcGVjaWZpZXJNYXBbc3BlY2lmaWVyS2V5XTsKCiAgICBpZiAoc3BlY2lmaWVyS2V5ID09PSBub3JtYWxpemVkU3BlY2lmaWVyKSB7CiAgICAgIGlmIChyZXNvbHV0aW9uUmVzdWx0ID09PSBudWxsKSB7CiAgICAgICAgdGhyb3cgVHlwZUVycm9yKAogICAgICAgICAgYFRoZSBpbXBvcnQgbWFwIHJlc29sdXRpb24gb2YgJHtzcGVjaWZpZXJLZXl9IGZhaWxlZCBkdWUgdG8gYSBudWxsIGVudHJ5YCwKICAgICAgICApOwogICAgICB9CiAgICAgIHJldHVybiByZXNvbHV0aW9uUmVzdWx0OwogICAgfSBlbHNlIGlmICgKICAgICAgc3BlY2lmaWVyS2V5LmVuZHNXaXRoKCcvJykgJiYKICAgICAgbm9ybWFsaXplZFNwZWNpZmllci5zdGFydHNXaXRoKHNwZWNpZmllcktleSkKICAgICkgewogICAgICBpZiAocmVzb2x1dGlvblJlc3VsdCA9PT0gbnVsbCkgewogICAgICAgIHRocm93IFR5cGVFcnJvcigKICAgICAgICAgIGBUaGUgaW1wb3J0IG1hcCByZXNvbHV0aW9uIG9mICR7c3BlY2lmaWVyS2V5fSBmYWlsZWQgZHVlIHRvIGEgbnVsbCBlbnRyeWAsCiAgICAgICAgKTsKICAgICAgfQogICAgICBjb25zdCBhZnRlclByZWZpeCA9IG5vcm1hbGl6ZWRTcGVjaWZpZXIuc2xpY2Uoc3BlY2lmaWVyS2V5Lmxlbmd0aCk7CiAgICAgIHRyeSB7CiAgICAgICAgcmV0dXJuIG5ldyBVUkwoYWZ0ZXJQcmVmaXgsIHJlc29sdXRpb25SZXN1bHQpLmhyZWY7CiAgICAgIH0gY2F0Y2ggewogICAgICAgIHRocm93IFR5cGVFcnJvcigKICAgICAgICAgIGBUaGUgaW1wb3J0IG1hcCByZXNvbHV0aW9uIG9mICR7c3BlY2lmaWVyS2V5fSBmYWlsZWQgZHVlIHRvIFVSTCBwYXJzZSBmYWlsdXJlYCwKICAgICAgICApOwogICAgICB9CiAgICB9CiAgfQoKICByZXR1cm4gbnVsbDsKfQoKLy8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9pbXBvcnQtbWFwcy8jcGFyc2luZwpleHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFuZENvbXBvc2VJbXBvcnRNYXAocGFyc2VkKSB7CiAgLy8gU3RlcCAyCiAgaWYgKCFpc1BsYWluT2JqZWN0KHBhcnNlZCkpIHsKICAgIHRocm93IEVycm9yKGBJbnZhbGlkIGltcG9ydCBtYXAgLSB0b3AgbGV2ZWwgbXVzdCBiZSBhbiBvYmplY3RgKTsKICB9CgogIC8vIFN0ZXAgMwogIGxldCBzb3J0ZWRBbmROb3JtYWxpemVkSW1wb3J0cyA9IHt9OwoKICAvLyBTdGVwIDQKICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcnNlZCwgJ2ltcG9ydHMnKSkgewogICAgLy8gU3RlcCA0LjEKICAgIGlmICghaXNQbGFpbk9iamVjdChwYXJzZWQuaW1wb3J0cykpIHsKICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgaW1wb3J0IG1hcCAtICJpbXBvcnRzIiBwcm9wZXJ0eSBtdXN0IGJlIGFuIG9iamVjdGApOwogICAgfQoKICAgIC8vIFN0ZXAgNC4yCiAgICBzb3J0ZWRBbmROb3JtYWxpemVkSW1wb3J0cyA9IHNvcnRBbmROb3JtYWxpemVTcGVjaWZpZXJNYXAoCiAgICAgIHBhcnNlZC5pbXBvcnRzLAogICAgICBiYXNlVVJMLAogICAgKTsKICB9CgogIC8vIFN0ZXAgNQogIGxldCBzb3J0ZWRBbmROb3JtYWxpemVkU2NvcGVzID0ge307CgogIC8vIFN0ZXAgNgogIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocGFyc2VkLCAnc2NvcGVzJykpIHsKICAgIC8vIFN0ZXAgNi4xCiAgICBpZiAoIWlzUGxhaW5PYmplY3QocGFyc2VkLnNjb3BlcykpIHsKICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgaW1wb3J0IG1hcCAtICJzY29wZXMiIHByb3BlcnR5IG11c3QgYmUgYW4gb2JqZWN0YCk7CiAgICB9CgogICAgLy8gU3RlcCA2LjIKICAgIHNvcnRlZEFuZE5vcm1hbGl6ZWRTY29wZXMgPSBzb3J0QW5kTm9ybWFsaXplU2NvcGVzKHBhcnNlZC5zY29wZXMsIGJhc2VVUkwpOwogIH0KCiAgLy8gU3RlcCA3CiAgY29uc3QgaW52YWxpZEtleXMgPSBPYmplY3Qua2V5cyhwYXJzZWQpLmZpbHRlcigKICAgIChrZXkpID0+IGtleSAhPT0gJ2ltcG9ydHMnICYmIGtleSAhPT0gJ3Njb3BlcycsCiAgKTsKICBpZiAoaW52YWxpZEtleXMubGVuZ3RoID4gMCkgewogICAgY29uc29sZS53YXJuKAogICAgICBgSW52YWxpZCB0b3AtbGV2ZWwga2V5JHsKICAgICAgICBpbnZhbGlkS2V5cy5sZW5ndGggPiAwID8gJ3MnIDogJycKICAgICAgfSBpbiBpbXBvcnQgbWFwIC0gJHtpbnZhbGlkS2V5cy5qb2luKCcsICcpfWAsCiAgICApOwogIH0KCiAgLy8gU3RlcCA4CiAgcmV0dXJuIHsKICAgIGltcG9ydHM6IHNvcnRlZEFuZE5vcm1hbGl6ZWRJbXBvcnRzLAogICAgc2NvcGVzOiBzb3J0ZWRBbmROb3JtYWxpemVkU2NvcGVzLAogIH07Cn0KCi8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vaW1wb3J0LW1hcHMvI3NvcnQtYW5kLW5vcm1hbGl6ZS1hLXNwZWNpZmllci1tYXAKZnVuY3Rpb24gc29ydEFuZE5vcm1hbGl6ZVNwZWNpZmllck1hcChtYXAsIGJhc2VVUkwpIHsKICBjb25zdCBub3JtYWxpemVkID0ge307CgogIGZvciAobGV0IHNwZWNpZmllcktleSBpbiBtYXApIHsKICAgIGNvbnN0IHZhbHVlID0gbWFwW3NwZWNpZmllcktleV07CgogICAgY29uc3Qgbm9ybWFsaXplZFNwZWNpZmllcktleSA9IG5vcm1hbGl6ZVNwZWNpZmllcktleShzcGVjaWZpZXJLZXksIGJhc2VVUkwpOwogICAgaWYgKG5vcm1hbGl6ZWRTcGVjaWZpZXJLZXkgPT09IG51bGwpIHsKICAgICAgY29udGludWU7CiAgICB9CgogICAgbGV0IGFkZHJlc3NVUkwgPSBwYXJzZVVSTExpa2VTcGVjaWZpZXIodmFsdWUsIGJhc2VVUkwpOwogICAgaWYgKGFkZHJlc3NVUkwgPT09IG51bGwpIHsKICAgICAgY29uc29sZS53YXJuKAogICAgICAgIGBJbnZhbGlkIFVSTCBhZGRyZXNzIGZvciBpbXBvcnQgbWFwIHNwZWNpZmllciAnJHtzcGVjaWZpZXJLZXl9J2AsCiAgICAgICk7CiAgICAgIG5vcm1hbGl6ZWRbbm9ybWFsaXplZFNwZWNpZmllcktleV0gPSBudWxsOwogICAgICBjb250aW51ZTsKICAgIH0KCiAgICBpZiAoc3BlY2lmaWVyS2V5LmVuZHNXaXRoKCcvJykgJiYgIWFkZHJlc3NVUkwuZW5kc1dpdGgoJy8nKSkgewogICAgICBjb25zb2xlLndhcm4oCiAgICAgICAgYEludmFsaWQgVVJMIGFkZHJlc3MgZm9yIGltcG9ydCBtYXAgc3BlY2lmaWVyICcke3NwZWNpZmllcktleX0nIC0gc2luY2UgdGhlIHNwZWNpZmllciBlbmRzIGluIHNsYXNoLCBzbyBtdXN0IHRoZSBhZGRyZXNzYCwKICAgICAgKTsKICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVkU3BlY2lmaWVyS2V5XSA9IG51bGw7CiAgICAgIGNvbnRpbnVlOwogICAgfQoKICAgIG5vcm1hbGl6ZWRbbm9ybWFsaXplZFNwZWNpZmllcktleV0gPSBhZGRyZXNzVVJMOwogIH0KCiAgcmV0dXJuIG5vcm1hbGl6ZWQ7Cn0KCi8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vaW1wb3J0LW1hcHMvI25vcm1hbGl6ZS1hLXNwZWNpZmllci1rZXkKZnVuY3Rpb24gbm9ybWFsaXplU3BlY2lmaWVyS2V5KGtleSkgewogIGlmIChrZXkgPT09ICcnKSB7CiAgICBjb25zb2xlLndhcm4oYFNwZWNpZmllciBrZXlzIGluIGltcG9ydCBtYXBzIG1heSBub3QgYmUgdGhlIGVtcHR5IHN0cmluZ2ApOwogICAgcmV0dXJuIG51bGw7CiAgfQoKICByZXR1cm4gcGFyc2VVUkxMaWtlU3BlY2lmaWVyKGtleSwgYmFzZVVSTCkgfHwga2V5Owp9CgovLyBodHRwczovL3dpY2cuZ2l0aHViLmlvL2ltcG9ydC1tYXBzLyNwYXJzZS1hLXVybC1saWtlLWltcG9ydC1zcGVjaWZpZXIKZnVuY3Rpb24gcGFyc2VVUkxMaWtlU3BlY2lmaWVyKHNwZWNpZmllciwgYmFzZVVSTCkgewogIGNvbnN0IHVzZUJhc2VVcmxBc1BhcmVudCA9CiAgICBzcGVjaWZpZXIuc3RhcnRzV2l0aCgnLycpIHx8CiAgICBzcGVjaWZpZXIuc3RhcnRzV2l0aCgnLi8nKSB8fAogICAgc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJy4uLycpOwoKICB0cnkgewogICAgcmV0dXJuIG5ldyBVUkwoc3BlY2lmaWVyLCB1c2VCYXNlVXJsQXNQYXJlbnQgPyBiYXNlVVJMIDogdW5kZWZpbmVkKS5ocmVmOwogIH0gY2F0Y2ggewogICAgcmV0dXJuIG51bGw7CiAgfQp9CgovLyBodHRwczovL3dpY2cuZ2l0aHViLmlvL2ltcG9ydC1tYXBzLyNzb3J0LWFuZC1ub3JtYWxpemUtc2NvcGVzCmZ1bmN0aW9uIHNvcnRBbmROb3JtYWxpemVTY29wZXMobWFwLCBiYXNlVVJMKSB7CiAgbGV0IG5vcm1hbGl6ZWQgPSB7fTsKCiAgZm9yIChsZXQgc2NvcGVQcmVmaXggaW4gbWFwKSB7CiAgICBjb25zdCBwb3RlbnRpYWxTcGVjaWZpZXJNYXAgPSBtYXBbc2NvcGVQcmVmaXhdOwogICAgaWYgKCFpc1BsYWluT2JqZWN0KHBvdGVudGlhbFNwZWNpZmllck1hcCkpIHsKICAgICAgdGhyb3cgVHlwZUVycm9yKAogICAgICAgIGBUaGUgdmFsdWUgb2Ygc2NvcGUgJHtzY29wZVByZWZpeH0gbXVzdCBiZSBhIEpTT04gb2JqZWN0YCwKICAgICAgKTsKICAgIH0KCiAgICBsZXQgc2NvcGVQcmVmaXhVUkw7CiAgICB0cnkgewogICAgICBzY29wZVByZWZpeFVSTCA9IG5ldyBVUkwoc2NvcGVQcmVmaXgsIGJhc2VVUkwpLmhyZWY7CiAgICB9IGNhdGNoIHsKICAgICAgY29uc29sZS53YXJuKAogICAgICAgIGBTY29wZSBwcmVmaXggVVJMICcke3Njb3BlUHJlZml4fScgd2FzIG5vdCBwYXJzZWFibGUgaW4gaW1wb3J0IG1hcGAsCiAgICAgICk7CiAgICAgIGNvbnRpbnVlOwogICAgfQoKICAgIG5vcm1hbGl6ZWRbc2NvcGVQcmVmaXhVUkxdID0gc29ydEFuZE5vcm1hbGl6ZVNwZWNpZmllck1hcCgKICAgICAgcG90ZW50aWFsU3BlY2lmaWVyTWFwLAogICAgICBiYXNlVVJMLAogICAgKTsKICB9CgogIHJldHVybiBub3JtYWxpemVkOwp9CgpmdW5jdGlvbiBpc1BsYWluT2JqZWN0KG9iaikgewogIHJldHVybiBvYmogPT09IE9iamVjdChvYmopICYmICFBcnJheS5pc0FycmF5KG9iaik7Cn0KCi8vIC0tLQoKbGV0IGltcG9ydE1hcFByb21pc2UgPSBnZXRJbXBvcnRNYXBQcm9taXNlKCk7CgpleHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZShzcGVjaWZpZXIsIGNvbnRleHQsIGRlZmF1bHRSZXNvbHZlKSB7CiAgY29uc3QgeyBwYXJlbnRVUkwgPSBudWxsIH0gPSBjb250ZXh0OwogIGNvbnN0IGltcG9ydE1hcCA9IGF3YWl0IGltcG9ydE1hcFByb21pc2U7CiAgY29uc3QgaW1wb3J0TWFwVXJsID0gcmVzb2x2ZVNwZWNpZmllcihpbXBvcnRNYXAsIHNwZWNpZmllciwgcGFyZW50VVJMKTsKCiAgcmV0dXJuIGRlZmF1bHRSZXNvbHZlKGltcG9ydE1hcFVybCA/PyBzcGVjaWZpZXIsIGNvbnRleHQsIGRlZmF1bHRSZXNvbHZlKTsKfQoKZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWQodXJsLCBjb250ZXh0LCBkZWZhdWx0TG9hZCkgewogIGlmICh1cmwuc3RhcnRzV2l0aCgnaHR0cDovLycpIHx8IHVybC5zdGFydHNXaXRoKCdodHRwczovLycpKSB7CiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCh1cmwpOwogICAgaWYgKCFyZXMub2spIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggbW9kdWxlIGZyb20gJHt1cmx9YCk7CiAgICB9CiAgICBjb25zdCBzb3VyY2UgPSBhd2FpdCByZXMudGV4dCgpOwogICAgcmV0dXJuIHsKICAgICAgc2hvcnRDaXJjdWl0OiB0cnVlLAogICAgICBmb3JtYXQ6ICdtb2R1bGUnLAogICAgICBzb3VyY2UsCiAgICB9OwogIH0KCiAgaWYgKCF1cmwuc3RhcnRzV2l0aCgnbm9kZTonKSkgewogICAgY29udGV4dC5mb3JtYXQgPSAnbW9kdWxlJzsKICB9CgogIHJldHVybiBkZWZhdWx0TG9hZCh1cmwsIGNvbnRleHQsIGRlZmF1bHRMb2FkKTsKfQoKYXN5bmMgZnVuY3Rpb24gZ2V0SW1wb3J0TWFwUHJvbWlzZSgpIHsKICBjb25zdCByZWxhdGl2ZVBhdGggPSBwcm9jZXNzLmVudi5JTVBPUlRfTUFQX1BBVEggfHwgSU1QT1JUX01BUF9GSUxFX05BTUU7CiAgY29uc3QgaW1wb3J0TWFwUGF0aCA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCByZWxhdGl2ZVBhdGgpOwoKICBsZXQgc3RyOwogIHRyeSB7CiAgICBzdHIgPSBhd2FpdCBmcy5yZWFkRmlsZShpbXBvcnRNYXBQYXRoKTsKICB9IGNhdGNoIChlcnIpIHsKICAgIHJldHVybiBlbXB0eU1hcCgpOwogIH0KCiAgbGV0IGpzb247CiAgdHJ5IHsKICAgIGpzb24gPSBhd2FpdCBKU09OLnBhcnNlKHN0cik7CiAgfSBjYXRjaCAoZXJyKSB7CiAgICB0aHJvdyBFcnJvcigKICAgICAgYEltcG9ydCBtYXAgYXQgJHtpbXBvcnRNYXBQYXRofSBjb250YWlucyBpbnZhbGlkIGpzb246ICR7ZXJyLm1lc3NhZ2V9YCwKICAgICk7CiAgfQoKICByZXR1cm4gcmVzb2x2ZUFuZENvbXBvc2VJbXBvcnRNYXAoanNvbik7Cn0KCmdsb2JhbC5ub2RlTG9hZGVyID0gZ2xvYmFsLm5vZGVMb2FkZXIgfHwge307CgpnbG9iYWwubm9kZUxvYWRlci5zZXRJbXBvcnRNYXBQcm9taXNlID0gZnVuY3Rpb24gc2V0SW1wb3J0TWFwUHJvbWlzZShwcm9taXNlKSB7CiAgaW1wb3J0TWFwUHJvbWlzZSA9IHByb21pc2UudGhlbigobWFwKSA9PiB7CiAgICByZXR1cm4gcmVzb2x2ZUFuZENvbXBvc2VJbXBvcnRNYXAobWFwKTsKICB9KTsKfTsKCmZ1bmN0aW9uIGVtcHR5TWFwKCkgewogIHJldHVybiB7IGltcG9ydHM6IHt9LCBzY29wZXM6IHt9IH07Cn0K";
155
-
156
- // packages/node/src/lib/node/init-node-federation.ts
157
- var defaultOptions = {
158
- remotesOrManifestUrl: {},
159
- relBundlePath: "../browser",
160
- throwIfRemoteNotFound: false
161
- };
162
- async function initNodeFederation(options) {
163
- const mergedOptions = { ...defaultOptions, ...options };
164
- const importMap = await createNodeImportMap(mergedOptions);
165
- await writeImportMap(importMap);
166
- await writeResolver();
167
- register(pathToFileURL("./federation-resolver.mjs").href);
168
- }
169
- async function createNodeImportMap(options) {
170
- const { remotesOrManifestUrl, relBundlePath } = options;
171
- const remotes = typeof remotesOrManifestUrl === "object" ? remotesOrManifestUrl : await loadFsManifest(remotesOrManifestUrl);
172
- const hostInfo = await loadFsFederationInfo(relBundlePath);
173
- const hostImportMap = await processHostInfo(hostInfo, "./" + relBundlePath);
174
- const remotesImportMap = await fetchAndRegisterRemotes(remotes, {
175
- throwIfRemoteNotFound: options.throwIfRemoteNotFound,
176
- cacheTag: options.cacheTag
177
- });
178
- const importMap = mergeImportMaps(hostImportMap, remotesImportMap);
179
- return importMap;
180
- }
181
- async function loadFsManifest(manifestUrl) {
182
- const content = await fs2.readFile(manifestUrl, "utf-8");
183
- const manifest = JSON.parse(content);
184
- return manifest;
185
- }
186
- async function loadFsFederationInfo(relBundlePath) {
187
- const manifestPath = path2.join(relBundlePath, "remoteEntry.json");
188
- const content = await fs2.readFile(manifestPath, "utf-8");
189
- const manifest = JSON.parse(content);
190
- return manifest;
191
- }
192
- async function writeImportMap(map) {
193
- await fs2.writeFile(IMPORT_MAP_FILE_NAME, JSON.stringify(map, null, 2), "utf-8");
194
- }
195
- async function writeResolver() {
196
- const buffer = Buffer.from(resolver, "base64");
197
- await fs2.writeFile("federation-resolver.mjs", buffer, "utf-8");
198
- }
199
- export {
200
- initNodeFederation
201
- };
@@ -1,8 +0,0 @@
1
- export type InitNodeFederationOptions = {
2
- remotesOrManifestUrl: Record<string, string> | string;
3
- relBundlePath: string;
4
- throwIfRemoteNotFound: boolean;
5
- cacheTag?: string;
6
- };
7
- export declare function initNodeFederation(options: Partial<InitNodeFederationOptions>): Promise<void>;
8
- //# sourceMappingURL=init-node-federation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init-node-federation.d.ts","sourceRoot":"","sources":["../../../src/lib/node/init-node-federation.ts"],"names":[],"mappings":"AAeA,MAAM,MAAM,yBAAyB,GAAG;IACtC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAQF,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAC1C,OAAO,CAAC,IAAI,CAAC,CAWf"}
@@ -1,8 +0,0 @@
1
- export type FStartArgs = {
2
- entry: string;
3
- relBundlePath: string;
4
- remotesOrManifestUrl: string | undefined;
5
- [key: string]: string | undefined;
6
- };
7
- export declare function parseFStartArgs(): FStartArgs;
8
- //# sourceMappingURL=fstart-args-parser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fstart-args-parser.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/fstart-args-parser.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC,CAAC;AAQF,wBAAgB,eAAe,eA+B9B"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=fstart.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fstart.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/fstart.ts"],"names":[],"mappings":""}
@@ -1,9 +0,0 @@
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";
9
- //# sourceMappingURL=import-map-loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"import-map-loader.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/import-map-loader.js"],"names":[],"mappings":"AAUA,sFAkCC;AAsCD;;;EAsDC;AAoGD,yFAMC;AAED,6EAmBC;AAlQD,mCAAoC,gBAAgB,CAAC"}
@@ -1,2 +0,0 @@
1
- export const resolver: "aW1wb3J0IHBhdGggZnJvbSAncGF0aCc7CmltcG9ydCB1cmwgZnJvbSAndXJsJzsKaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7CgpleHBvcnQgY29uc3QgSU1QT1JUX01BUF9GSUxFX05BTUUgPSAnbm9kZS5pbXBvcnRtYXAnOwoKY29uc3QgYmFzZVVSTCA9IHVybC5wYXRoVG9GaWxlVVJMKHByb2Nlc3MuY3dkKCkpICsgcGF0aC5zZXA7CgovLyBodHRwczovL3dpY2cuZ2l0aHViLmlvL2ltcG9ydC1tYXBzLyNuZXctcmVzb2x2ZS1hbGdvcml0aG0KZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTcGVjaWZpZXIoaW1wb3J0TWFwLCBzcGVjaWZpZXIsIHBhcmVudFVSTCkgewogIGxldCBjdXJyZW50QmFzZVVSTDsKICBpZiAocGFyZW50VVJMKSB7CiAgICBjb25zdCBsYXN0U2xhc2hJbmRleCA9IHBhcmVudFVSTC5sYXN0SW5kZXhPZihwYXRoLnNlcCk7CiAgICBjdXJyZW50QmFzZVVSTCA9IHBhcmVudFVSTC5zbGljZSgwLCBsYXN0U2xhc2hJbmRleCArIDEpOwogIH0gZWxzZSB7CiAgICBjdXJyZW50QmFzZVVSTCA9IGJhc2VVUkw7CiAgfQogIGNvbnN0IG5vcm1hbGl6ZWRTcGVjaWZpZXIgPQogICAgcGFyc2VVUkxMaWtlU3BlY2lmaWVyKHNwZWNpZmllciwgY3VycmVudEJhc2VVUkwpIHx8IHNwZWNpZmllcjsKICBmb3IgKGxldCBzY29wZVByZWZpeCBpbiBpbXBvcnRNYXAuc2NvcGVzKSB7CiAgICBpZiAoCiAgICAgIHNjb3BlUHJlZml4ID09PSBjdXJyZW50QmFzZVVSTCB8fAogICAgICAoc2NvcGVQcmVmaXguZW5kc1dpdGgoJy8nKSAmJiBjdXJyZW50QmFzZVVSTC5zdGFydHNXaXRoKHNjb3BlUHJlZml4KSkKICAgICkgewogICAgICBjb25zdCBzY29wZUltcG9ydHNNYXRjaCA9IHJlc29sdmVJbXBvcnRzTWF0Y2goCiAgICAgICAgbm9ybWFsaXplZFNwZWNpZmllciwKICAgICAgICBpbXBvcnRNYXAuc2NvcGVzW3Njb3BlUHJlZml4XSwKICAgICAgKTsKICAgICAgaWYgKHNjb3BlSW1wb3J0c01hdGNoKSB7CiAgICAgICAgcmV0dXJuIHNjb3BlSW1wb3J0c01hdGNoOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBjb25zdCB0b3BMZXZlbEltcG9ydHNNYXRjaCA9IHJlc29sdmVJbXBvcnRzTWF0Y2goCiAgICAgICAgbm9ybWFsaXplZFNwZWNpZmllciwKICAgICAgICBpbXBvcnRNYXAuaW1wb3J0cywKICAgICAgKTsKICAgICAgaWYgKHRvcExldmVsSW1wb3J0c01hdGNoKSB7CiAgICAgICAgcmV0dXJuIHRvcExldmVsSW1wb3J0c01hdGNoOwogICAgICB9CiAgICB9CiAgfQoKICByZXR1cm4gcmVzb2x2ZUltcG9ydHNNYXRjaChub3JtYWxpemVkU3BlY2lmaWVyLCBpbXBvcnRNYXAuaW1wb3J0cyk7Cn0KCi8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vaW1wb3J0LW1hcHMvI3Jlc29sdmUtYW4taW1wb3J0cy1tYXRjaApmdW5jdGlvbiByZXNvbHZlSW1wb3J0c01hdGNoKG5vcm1hbGl6ZWRTcGVjaWZpZXIsIHNwZWNpZmllck1hcCkgewogIGZvciAobGV0IHNwZWNpZmllcktleSBpbiBzcGVjaWZpZXJNYXApIHsKICAgIGNvbnN0IHJlc29sdXRpb25SZXN1bHQgPSBzcGVjaWZpZXJNYXBbc3BlY2lmaWVyS2V5XTsKCiAgICBpZiAoc3BlY2lmaWVyS2V5ID09PSBub3JtYWxpemVkU3BlY2lmaWVyKSB7CiAgICAgIGlmIChyZXNvbHV0aW9uUmVzdWx0ID09PSBudWxsKSB7CiAgICAgICAgdGhyb3cgVHlwZUVycm9yKAogICAgICAgICAgYFRoZSBpbXBvcnQgbWFwIHJlc29sdXRpb24gb2YgJHtzcGVjaWZpZXJLZXl9IGZhaWxlZCBkdWUgdG8gYSBudWxsIGVudHJ5YCwKICAgICAgICApOwogICAgICB9CiAgICAgIHJldHVybiByZXNvbHV0aW9uUmVzdWx0OwogICAgfSBlbHNlIGlmICgKICAgICAgc3BlY2lmaWVyS2V5LmVuZHNXaXRoKCcvJykgJiYKICAgICAgbm9ybWFsaXplZFNwZWNpZmllci5zdGFydHNXaXRoKHNwZWNpZmllcktleSkKICAgICkgewogICAgICBpZiAocmVzb2x1dGlvblJlc3VsdCA9PT0gbnVsbCkgewogICAgICAgIHRocm93IFR5cGVFcnJvcigKICAgICAgICAgIGBUaGUgaW1wb3J0IG1hcCByZXNvbHV0aW9uIG9mICR7c3BlY2lmaWVyS2V5fSBmYWlsZWQgZHVlIHRvIGEgbnVsbCBlbnRyeWAsCiAgICAgICAgKTsKICAgICAgfQogICAgICBjb25zdCBhZnRlclByZWZpeCA9IG5vcm1hbGl6ZWRTcGVjaWZpZXIuc2xpY2Uoc3BlY2lmaWVyS2V5Lmxlbmd0aCk7CiAgICAgIHRyeSB7CiAgICAgICAgcmV0dXJuIG5ldyBVUkwoYWZ0ZXJQcmVmaXgsIHJlc29sdXRpb25SZXN1bHQpLmhyZWY7CiAgICAgIH0gY2F0Y2ggewogICAgICAgIHRocm93IFR5cGVFcnJvcigKICAgICAgICAgIGBUaGUgaW1wb3J0IG1hcCByZXNvbHV0aW9uIG9mICR7c3BlY2lmaWVyS2V5fSBmYWlsZWQgZHVlIHRvIFVSTCBwYXJzZSBmYWlsdXJlYCwKICAgICAgICApOwogICAgICB9CiAgICB9CiAgfQoKICByZXR1cm4gbnVsbDsKfQoKLy8gaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9pbXBvcnQtbWFwcy8jcGFyc2luZwpleHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFuZENvbXBvc2VJbXBvcnRNYXAocGFyc2VkKSB7CiAgLy8gU3RlcCAyCiAgaWYgKCFpc1BsYWluT2JqZWN0KHBhcnNlZCkpIHsKICAgIHRocm93IEVycm9yKGBJbnZhbGlkIGltcG9ydCBtYXAgLSB0b3AgbGV2ZWwgbXVzdCBiZSBhbiBvYmplY3RgKTsKICB9CgogIC8vIFN0ZXAgMwogIGxldCBzb3J0ZWRBbmROb3JtYWxpemVkSW1wb3J0cyA9IHt9OwoKICAvLyBTdGVwIDQKICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcnNlZCwgJ2ltcG9ydHMnKSkgewogICAgLy8gU3RlcCA0LjEKICAgIGlmICghaXNQbGFpbk9iamVjdChwYXJzZWQuaW1wb3J0cykpIHsKICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgaW1wb3J0IG1hcCAtICJpbXBvcnRzIiBwcm9wZXJ0eSBtdXN0IGJlIGFuIG9iamVjdGApOwogICAgfQoKICAgIC8vIFN0ZXAgNC4yCiAgICBzb3J0ZWRBbmROb3JtYWxpemVkSW1wb3J0cyA9IHNvcnRBbmROb3JtYWxpemVTcGVjaWZpZXJNYXAoCiAgICAgIHBhcnNlZC5pbXBvcnRzLAogICAgICBiYXNlVVJMLAogICAgKTsKICB9CgogIC8vIFN0ZXAgNQogIGxldCBzb3J0ZWRBbmROb3JtYWxpemVkU2NvcGVzID0ge307CgogIC8vIFN0ZXAgNgogIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocGFyc2VkLCAnc2NvcGVzJykpIHsKICAgIC8vIFN0ZXAgNi4xCiAgICBpZiAoIWlzUGxhaW5PYmplY3QocGFyc2VkLnNjb3BlcykpIHsKICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgaW1wb3J0IG1hcCAtICJzY29wZXMiIHByb3BlcnR5IG11c3QgYmUgYW4gb2JqZWN0YCk7CiAgICB9CgogICAgLy8gU3RlcCA2LjIKICAgIHNvcnRlZEFuZE5vcm1hbGl6ZWRTY29wZXMgPSBzb3J0QW5kTm9ybWFsaXplU2NvcGVzKHBhcnNlZC5zY29wZXMsIGJhc2VVUkwpOwogIH0KCiAgLy8gU3RlcCA3CiAgY29uc3QgaW52YWxpZEtleXMgPSBPYmplY3Qua2V5cyhwYXJzZWQpLmZpbHRlcigKICAgIChrZXkpID0+IGtleSAhPT0gJ2ltcG9ydHMnICYmIGtleSAhPT0gJ3Njb3BlcycsCiAgKTsKICBpZiAoaW52YWxpZEtleXMubGVuZ3RoID4gMCkgewogICAgY29uc29sZS53YXJuKAogICAgICBgSW52YWxpZCB0b3AtbGV2ZWwga2V5JHsKICAgICAgICBpbnZhbGlkS2V5cy5sZW5ndGggPiAwID8gJ3MnIDogJycKICAgICAgfSBpbiBpbXBvcnQgbWFwIC0gJHtpbnZhbGlkS2V5cy5qb2luKCcsICcpfWAsCiAgICApOwogIH0KCiAgLy8gU3RlcCA4CiAgcmV0dXJuIHsKICAgIGltcG9ydHM6IHNvcnRlZEFuZE5vcm1hbGl6ZWRJbXBvcnRzLAogICAgc2NvcGVzOiBzb3J0ZWRBbmROb3JtYWxpemVkU2NvcGVzLAogIH07Cn0KCi8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vaW1wb3J0LW1hcHMvI3NvcnQtYW5kLW5vcm1hbGl6ZS1hLXNwZWNpZmllci1tYXAKZnVuY3Rpb24gc29ydEFuZE5vcm1hbGl6ZVNwZWNpZmllck1hcChtYXAsIGJhc2VVUkwpIHsKICBjb25zdCBub3JtYWxpemVkID0ge307CgogIGZvciAobGV0IHNwZWNpZmllcktleSBpbiBtYXApIHsKICAgIGNvbnN0IHZhbHVlID0gbWFwW3NwZWNpZmllcktleV07CgogICAgY29uc3Qgbm9ybWFsaXplZFNwZWNpZmllcktleSA9IG5vcm1hbGl6ZVNwZWNpZmllcktleShzcGVjaWZpZXJLZXksIGJhc2VVUkwpOwogICAgaWYgKG5vcm1hbGl6ZWRTcGVjaWZpZXJLZXkgPT09IG51bGwpIHsKICAgICAgY29udGludWU7CiAgICB9CgogICAgbGV0IGFkZHJlc3NVUkwgPSBwYXJzZVVSTExpa2VTcGVjaWZpZXIodmFsdWUsIGJhc2VVUkwpOwogICAgaWYgKGFkZHJlc3NVUkwgPT09IG51bGwpIHsKICAgICAgY29uc29sZS53YXJuKAogICAgICAgIGBJbnZhbGlkIFVSTCBhZGRyZXNzIGZvciBpbXBvcnQgbWFwIHNwZWNpZmllciAnJHtzcGVjaWZpZXJLZXl9J2AsCiAgICAgICk7CiAgICAgIG5vcm1hbGl6ZWRbbm9ybWFsaXplZFNwZWNpZmllcktleV0gPSBudWxsOwogICAgICBjb250aW51ZTsKICAgIH0KCiAgICBpZiAoc3BlY2lmaWVyS2V5LmVuZHNXaXRoKCcvJykgJiYgIWFkZHJlc3NVUkwuZW5kc1dpdGgoJy8nKSkgewogICAgICBjb25zb2xlLndhcm4oCiAgICAgICAgYEludmFsaWQgVVJMIGFkZHJlc3MgZm9yIGltcG9ydCBtYXAgc3BlY2lmaWVyICcke3NwZWNpZmllcktleX0nIC0gc2luY2UgdGhlIHNwZWNpZmllciBlbmRzIGluIHNsYXNoLCBzbyBtdXN0IHRoZSBhZGRyZXNzYCwKICAgICAgKTsKICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVkU3BlY2lmaWVyS2V5XSA9IG51bGw7CiAgICAgIGNvbnRpbnVlOwogICAgfQoKICAgIG5vcm1hbGl6ZWRbbm9ybWFsaXplZFNwZWNpZmllcktleV0gPSBhZGRyZXNzVVJMOwogIH0KCiAgcmV0dXJuIG5vcm1hbGl6ZWQ7Cn0KCi8vIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vaW1wb3J0LW1hcHMvI25vcm1hbGl6ZS1hLXNwZWNpZmllci1rZXkKZnVuY3Rpb24gbm9ybWFsaXplU3BlY2lmaWVyS2V5KGtleSkgewogIGlmIChrZXkgPT09ICcnKSB7CiAgICBjb25zb2xlLndhcm4oYFNwZWNpZmllciBrZXlzIGluIGltcG9ydCBtYXBzIG1heSBub3QgYmUgdGhlIGVtcHR5IHN0cmluZ2ApOwogICAgcmV0dXJuIG51bGw7CiAgfQoKICByZXR1cm4gcGFyc2VVUkxMaWtlU3BlY2lmaWVyKGtleSwgYmFzZVVSTCkgfHwga2V5Owp9CgovLyBodHRwczovL3dpY2cuZ2l0aHViLmlvL2ltcG9ydC1tYXBzLyNwYXJzZS1hLXVybC1saWtlLWltcG9ydC1zcGVjaWZpZXIKZnVuY3Rpb24gcGFyc2VVUkxMaWtlU3BlY2lmaWVyKHNwZWNpZmllciwgYmFzZVVSTCkgewogIGNvbnN0IHVzZUJhc2VVcmxBc1BhcmVudCA9CiAgICBzcGVjaWZpZXIuc3RhcnRzV2l0aCgnLycpIHx8CiAgICBzcGVjaWZpZXIuc3RhcnRzV2l0aCgnLi8nKSB8fAogICAgc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJy4uLycpOwoKICB0cnkgewogICAgcmV0dXJuIG5ldyBVUkwoc3BlY2lmaWVyLCB1c2VCYXNlVXJsQXNQYXJlbnQgPyBiYXNlVVJMIDogdW5kZWZpbmVkKS5ocmVmOwogIH0gY2F0Y2ggewogICAgcmV0dXJuIG51bGw7CiAgfQp9CgovLyBodHRwczovL3dpY2cuZ2l0aHViLmlvL2ltcG9ydC1tYXBzLyNzb3J0LWFuZC1ub3JtYWxpemUtc2NvcGVzCmZ1bmN0aW9uIHNvcnRBbmROb3JtYWxpemVTY29wZXMobWFwLCBiYXNlVVJMKSB7CiAgbGV0IG5vcm1hbGl6ZWQgPSB7fTsKCiAgZm9yIChsZXQgc2NvcGVQcmVmaXggaW4gbWFwKSB7CiAgICBjb25zdCBwb3RlbnRpYWxTcGVjaWZpZXJNYXAgPSBtYXBbc2NvcGVQcmVmaXhdOwogICAgaWYgKCFpc1BsYWluT2JqZWN0KHBvdGVudGlhbFNwZWNpZmllck1hcCkpIHsKICAgICAgdGhyb3cgVHlwZUVycm9yKAogICAgICAgIGBUaGUgdmFsdWUgb2Ygc2NvcGUgJHtzY29wZVByZWZpeH0gbXVzdCBiZSBhIEpTT04gb2JqZWN0YCwKICAgICAgKTsKICAgIH0KCiAgICBsZXQgc2NvcGVQcmVmaXhVUkw7CiAgICB0cnkgewogICAgICBzY29wZVByZWZpeFVSTCA9IG5ldyBVUkwoc2NvcGVQcmVmaXgsIGJhc2VVUkwpLmhyZWY7CiAgICB9IGNhdGNoIHsKICAgICAgY29uc29sZS53YXJuKAogICAgICAgIGBTY29wZSBwcmVmaXggVVJMICcke3Njb3BlUHJlZml4fScgd2FzIG5vdCBwYXJzZWFibGUgaW4gaW1wb3J0IG1hcGAsCiAgICAgICk7CiAgICAgIGNvbnRpbnVlOwogICAgfQoKICAgIG5vcm1hbGl6ZWRbc2NvcGVQcmVmaXhVUkxdID0gc29ydEFuZE5vcm1hbGl6ZVNwZWNpZmllck1hcCgKICAgICAgcG90ZW50aWFsU3BlY2lmaWVyTWFwLAogICAgICBiYXNlVVJMLAogICAgKTsKICB9CgogIHJldHVybiBub3JtYWxpemVkOwp9CgpmdW5jdGlvbiBpc1BsYWluT2JqZWN0KG9iaikgewogIHJldHVybiBvYmogPT09IE9iamVjdChvYmopICYmICFBcnJheS5pc0FycmF5KG9iaik7Cn0KCi8vIC0tLQoKbGV0IGltcG9ydE1hcFByb21pc2UgPSBnZXRJbXBvcnRNYXBQcm9taXNlKCk7CgpleHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZShzcGVjaWZpZXIsIGNvbnRleHQsIGRlZmF1bHRSZXNvbHZlKSB7CiAgY29uc3QgeyBwYXJlbnRVUkwgPSBudWxsIH0gPSBjb250ZXh0OwogIGNvbnN0IGltcG9ydE1hcCA9IGF3YWl0IGltcG9ydE1hcFByb21pc2U7CiAgY29uc3QgaW1wb3J0TWFwVXJsID0gcmVzb2x2ZVNwZWNpZmllcihpbXBvcnRNYXAsIHNwZWNpZmllciwgcGFyZW50VVJMKTsKCiAgcmV0dXJuIGRlZmF1bHRSZXNvbHZlKGltcG9ydE1hcFVybCA/PyBzcGVjaWZpZXIsIGNvbnRleHQsIGRlZmF1bHRSZXNvbHZlKTsKfQoKZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWQodXJsLCBjb250ZXh0LCBkZWZhdWx0TG9hZCkgewogIGlmICh1cmwuc3RhcnRzV2l0aCgnaHR0cDovLycpIHx8IHVybC5zdGFydHNXaXRoKCdodHRwczovLycpKSB7CiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCh1cmwpOwogICAgaWYgKCFyZXMub2spIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggbW9kdWxlIGZyb20gJHt1cmx9YCk7CiAgICB9CiAgICBjb25zdCBzb3VyY2UgPSBhd2FpdCByZXMudGV4dCgpOwogICAgcmV0dXJuIHsKICAgICAgc2hvcnRDaXJjdWl0OiB0cnVlLAogICAgICBmb3JtYXQ6ICdtb2R1bGUnLAogICAgICBzb3VyY2UsCiAgICB9OwogIH0KCiAgaWYgKCF1cmwuc3RhcnRzV2l0aCgnbm9kZTonKSkgewogICAgY29udGV4dC5mb3JtYXQgPSAnbW9kdWxlJzsKICB9CgogIHJldHVybiBkZWZhdWx0TG9hZCh1cmwsIGNvbnRleHQsIGRlZmF1bHRMb2FkKTsKfQoKYXN5bmMgZnVuY3Rpb24gZ2V0SW1wb3J0TWFwUHJvbWlzZSgpIHsKICBjb25zdCByZWxhdGl2ZVBhdGggPSBwcm9jZXNzLmVudi5JTVBPUlRfTUFQX1BBVEggfHwgSU1QT1JUX01BUF9GSUxFX05BTUU7CiAgY29uc3QgaW1wb3J0TWFwUGF0aCA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCByZWxhdGl2ZVBhdGgpOwoKICBsZXQgc3RyOwogIHRyeSB7CiAgICBzdHIgPSBhd2FpdCBmcy5yZWFkRmlsZShpbXBvcnRNYXBQYXRoKTsKICB9IGNhdGNoIChlcnIpIHsKICAgIHJldHVybiBlbXB0eU1hcCgpOwogIH0KCiAgbGV0IGpzb247CiAgdHJ5IHsKICAgIGpzb24gPSBhd2FpdCBKU09OLnBhcnNlKHN0cik7CiAgfSBjYXRjaCAoZXJyKSB7CiAgICB0aHJvdyBFcnJvcigKICAgICAgYEltcG9ydCBtYXAgYXQgJHtpbXBvcnRNYXBQYXRofSBjb250YWlucyBpbnZhbGlkIGpzb246ICR7ZXJyLm1lc3NhZ2V9YCwKICAgICk7CiAgfQoKICByZXR1cm4gcmVzb2x2ZUFuZENvbXBvc2VJbXBvcnRNYXAoanNvbik7Cn0KCmdsb2JhbC5ub2RlTG9hZGVyID0gZ2xvYmFsLm5vZGVMb2FkZXIgfHwge307CgpnbG9iYWwubm9kZUxvYWRlci5zZXRJbXBvcnRNYXBQcm9taXNlID0gZnVuY3Rpb24gc2V0SW1wb3J0TWFwUHJvbWlzZShwcm9taXNlKSB7CiAgaW1wb3J0TWFwUHJvbWlzZSA9IHByb21pc2UudGhlbigobWFwKSA9PiB7CiAgICByZXR1cm4gcmVzb2x2ZUFuZENvbXBvc2VJbXBvcnRNYXAobWFwKTsKICB9KTsKfTsKCmZ1bmN0aW9uIGVtcHR5TWFwKCkgewogIHJldHVybiB7IGltcG9ydHM6IHt9LCBzY29wZXM6IHt9IH07Cn0K";
2
- //# sourceMappingURL=loader-as-data-url.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader-as-data-url.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/loader-as-data-url.js"],"names":[],"mappings":"AAAA,uBACE,k5UAAk5U,CAAC"}