@softarc/native-federation-runtime 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # native-federation-runtime
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Running unit tests
6
+
7
+ Run `nx test native-federation-runtime3` to execute the unit tests.
@@ -0,0 +1,4 @@
1
+ export * from './lib/init-federation';
2
+ export * from './lib/load-remote-module';
3
+ export * from './lib/model/federation-info';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL25hdGl2ZS1mZWRlcmF0aW9uLXJ1bnRpbWUvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvaW5pdC1mZWRlcmF0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9hZC1yZW1vdGUtbW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvZmVkZXJhdGlvbi1pbmZvJztcclxuIl19
@@ -0,0 +1,78 @@
1
+ import { mergeImportMaps, } from './model/import-map';
2
+ import { getExternalUrl, setExternalUrl } from './model/externals';
3
+ import { joinPaths, getDirectory } from './utils/path-utils';
4
+ import { addRemote } from './model/remotes';
5
+ import { appendImportMap } from './utils/add-import-map';
6
+ export async function initFederation(remotesOrManifestUrl = {}) {
7
+ const remotes = (typeof remotesOrManifestUrl === 'string') ?
8
+ await loadManifest(remotesOrManifestUrl) :
9
+ remotesOrManifestUrl;
10
+ const hostImportMap = await processHostInfo();
11
+ const remotesImportMap = await processRemoteInfos(remotes);
12
+ const importMap = mergeImportMaps(hostImportMap, remotesImportMap);
13
+ appendImportMap(importMap);
14
+ return importMap;
15
+ }
16
+ async function loadManifest(remotes) {
17
+ return await fetch(remotes).then(r => r.json());
18
+ }
19
+ async function processRemoteInfos(remotes) {
20
+ let importMap = {
21
+ imports: {},
22
+ scopes: {},
23
+ };
24
+ for (const remoteName of Object.keys(remotes)) {
25
+ const url = remotes[remoteName];
26
+ const remoteMap = await processRemoteInfo(url, remoteName);
27
+ importMap = mergeImportMaps(importMap, remoteMap);
28
+ }
29
+ return importMap;
30
+ }
31
+ export async function processRemoteInfo(federationInfoUrl, remoteName) {
32
+ const baseUrl = getDirectory(federationInfoUrl);
33
+ const remoteInfo = await loadFederationInfo(federationInfoUrl);
34
+ if (!remoteName) {
35
+ remoteName = remoteInfo.name;
36
+ }
37
+ const importMap = createRemoteImportMap(remoteInfo, remoteName, baseUrl);
38
+ addRemote(remoteName, { ...remoteInfo, baseUrl });
39
+ return importMap;
40
+ }
41
+ function createRemoteImportMap(remoteInfo, remoteName, baseUrl) {
42
+ const imports = processExposed(remoteInfo, remoteName, baseUrl);
43
+ const scopes = processRemoteImports(remoteInfo, baseUrl);
44
+ return { imports, scopes };
45
+ }
46
+ async function loadFederationInfo(url) {
47
+ const info = (await fetch(url).then((r) => r.json()));
48
+ return info;
49
+ }
50
+ function processRemoteImports(remoteInfo, baseUrl) {
51
+ const scopes = {};
52
+ const scopedImports = {};
53
+ for (const shared of remoteInfo.shared) {
54
+ const outFileName = getExternalUrl(shared) ?? joinPaths(baseUrl, shared.outFileName);
55
+ setExternalUrl(shared, outFileName);
56
+ scopedImports[shared.packageName] = outFileName;
57
+ }
58
+ scopes[baseUrl + '/'] = scopedImports;
59
+ return scopes;
60
+ }
61
+ function processExposed(remoteInfo, remoteName, baseUrl) {
62
+ const imports = {};
63
+ for (const exposed of remoteInfo.exposes) {
64
+ const key = joinPaths(remoteName, exposed.key);
65
+ const value = joinPaths(baseUrl, exposed.outFileName);
66
+ imports[key] = value;
67
+ }
68
+ return imports;
69
+ }
70
+ async function processHostInfo() {
71
+ const hostInfo = await loadFederationInfo('./remoteEntry.json');
72
+ const imports = hostInfo.shared.reduce((acc, cur) => ({ ...acc, [cur.packageName]: './' + cur.outFileName }), {});
73
+ for (const shared of hostInfo.shared) {
74
+ setExternalUrl(shared, './' + shared.outFileName);
75
+ }
76
+ return { imports, scopes: {} };
77
+ }
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC1mZWRlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uYXRpdmUtZmVkZXJhdGlvbi1ydW50aW1lL3NyYy9saWIvaW5pdC1mZWRlcmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxlQUFlLEdBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHekQsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQ2xDLHVCQUF3RCxFQUFFO0lBRzFELE1BQU0sT0FBTyxHQUFHLENBQUMsT0FBTyxvQkFBb0IsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzFELE1BQU0sWUFBWSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztRQUMxQyxvQkFBb0IsQ0FBQztJQUV2QixNQUFNLGFBQWEsR0FBRyxNQUFNLGVBQWUsRUFBRSxDQUFDO0lBQzlDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUUzRCxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDbkUsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTNCLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxLQUFLLFVBQVUsWUFBWSxDQUFDLE9BQWU7SUFDekMsT0FBTyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENB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QyxHQUFHLENBQUMsQ0FBQztRQUMvQyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN0RCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0tBQ3RCO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVELEtBQUssVUFBVSxlQUFlO0lBQzVCLE1BQU0sUUFBUSxHQUFHLE1BQU0sa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUVoRSxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FDcEMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUNyRSxFQUFFLENBQ1EsQ0FBQztJQUViLEtBQUssTUFBTSxNQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRTtRQUNwQyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDbkQ7SUFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBTY29wZXMsXHJcbiAgSW1wb3J0cyxcclxuICBJbXBvcnRNYXAsXHJcbiAgbWVyZ2VJbXBvcnRNYXBzLFxyXG59IGZyb20gJy4vbW9kZWwvaW1wb3J0LW1hcCc7XHJcbmltcG9ydCB7IGdldEV4dGVybmFsVXJsLCBzZXRFeHRlcm5hbFVybCB9IGZyb20gJy4vbW9kZWwvZXh0ZXJuYWxzJztcclxuaW1wb3J0IHsgam9pblBhdGhzLCBnZXREaXJlY3RvcnkgfSBmcm9tICcuL3V0aWxzL3BhdGgtdXRpbHMnO1xyXG5pbXBvcnQgeyBhZGRSZW1vdGUgfSBmcm9tICcuL21vZGVsL3JlbW90ZXMnO1xyXG5pbXBvcnQgeyBhcHBlbmRJbXBvcnRNYXAgfSBmcm9tICcuL3V0aWxzL2FkZC1pbXBvcnQtbWFwJztcclxuaW1wb3J0IHsgRmVkZXJhdGlvbkluZm8gfSBmcm9tICcuL21vZGVsL2ZlZGVyYXRpb24taW5mbyc7XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdEZlZGVyYXRpb24oXHJcbiAgcmVtb3Rlc09yTWFuaWZlc3RVcmw6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBzdHJpbmcgPSB7fVxyXG4pOiBQcm9taXNlPEltcG9ydE1hcD4ge1xyXG4gIFxyXG4gIGNvbnN0IHJlbW90ZXMgPSAodHlwZW9mIHJlbW90ZXNPck1hbmlmZXN0VXJsID09PSAnc3RyaW5nJykgPyBcclxuICAgIGF3YWl0IGxvYWRNYW5pZmVzdChyZW1vdGVzT3JNYW5pZmVzdFVybCkgOlxyXG4gICAgcmVtb3Rlc09yTWFuaWZlc3RVcmw7XHJcblxyXG4gIGNvbnN0IGhvc3RJbXBvcnRNYXAgPSBhd2FpdCBwcm9jZXNzSG9zdEluZm8oKTtcclxuICBjb25zdCByZW1vdGVzSW1wb3J0TWFwID0gYXdhaXQgcHJvY2Vzc1JlbW90ZUluZm9zKHJlbW90ZXMpO1xyXG5cclxuICBjb25zdCBpbXBvcnRNYXAgPSBtZXJnZUltcG9ydE1hcHMoaG9zdEltcG9ydE1hcCwgcmVtb3Rlc0ltcG9ydE1hcCk7XHJcbiAgYXBwZW5kSW1wb3J0TWFwKGltcG9ydE1hcCk7XHJcblxyXG4gIHJldHVybiBpbXBvcnRNYXA7XHJcbn1cclxuXHJcbmFzeW5jIGZ1bmN0aW9uIGxvYWRNYW5pZmVzdChyZW1vdGVzOiBzdHJpbmcpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcclxuICByZXR1cm4gYXdhaXQgZmV0Y2gocmVtb3RlcykudGhlbihyID0+IHIuanNvbigpKSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBwcm9jZXNzUmVtb3RlSW5mb3MoXHJcbiAgcmVtb3RlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxyXG4pOiBQcm9taXNlPEltcG9ydE1hcD4ge1xyXG4gIGxldCBpbXBvcnRNYXA6IEltcG9ydE1hcCA9IHtcclxuICAgIGltcG9ydHM6IHt9LFxyXG4gICAgc2NvcGVzOiB7fSxcclxuICB9O1xyXG5cclxuICBmb3IgKGNvbnN0IHJlbW90ZU5hbWUgb2YgT2JqZWN0LmtleXMocmVtb3RlcykpIHtcclxuICAgIGNvbnN0IHVybCA9IHJlbW90ZXNbcmVtb3RlTmFtZV07XHJcbiAgICBjb25zdCByZW1vdGVNYXAgPSBhd2FpdCBwcm9jZXNzUmVtb3RlSW5mbyh1cmwsIHJlbW90ZU5hbWUpO1xyXG4gICAgaW1wb3J0TWFwID0gbWVyZ2VJbXBvcnRNYXBzKGltcG9ydE1hcCwgcmVtb3RlTWFwKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBpbXBvcnRNYXA7XHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzUmVtb3RlSW5mbyhcclxuICBmZWRlcmF0aW9uSW5mb1VybDogc3RyaW5nLFxyXG4gIHJlbW90ZU5hbWU/OiBzdHJpbmdcclxuKTogUHJvbWlzZTxJbXBvcnRNYXA+IHtcclxuICBjb25zdCBiYXNlVXJsID0gZ2V0RGlyZWN0b3J5KGZlZGVyYXRpb25JbmZvVXJsKTtcclxuICBjb25zdCByZW1vdGVJbmZvID0gYXdhaXQgbG9hZEZlZGVyYXRpb25JbmZvKGZlZGVyYXRpb25JbmZvVXJsKTtcclxuXHJcbiAgaWYgKCFyZW1vdGVOYW1lKSB7XHJcbiAgICByZW1vdGVOYW1lID0gcmVtb3RlSW5mby5uYW1lO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgaW1wb3J0TWFwID0gY3JlYXRlUmVtb3RlSW1wb3J0TWFwKHJlbW90ZUluZm8sIHJlbW90ZU5hbWUsIGJhc2VVcmwpO1xyXG4gIGFkZFJlbW90ZShyZW1vdGVOYW1lLCB7IC4uLnJlbW90ZUluZm8sIGJhc2VVcmwgfSk7XHJcblxyXG4gIHJldHVybiBpbXBvcnRNYXA7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZVJlbW90ZUltcG9ydE1hcChcclxuICByZW1vdGVJbmZvOiBGZWRlcmF0aW9uSW5mbyxcclxuICByZW1vdGVOYW1lOiBzdHJpbmcsXHJcbiAgYmFzZVVybDogc3RyaW5nXHJcbik6IEltcG9ydE1hcCB7XHJcbiAgY29uc3QgaW1wb3J0cyA9IHByb2Nlc3NFeHBvc2VkKHJlbW90ZUluZm8sIHJlbW90ZU5hbWUsIGJhc2VVcmwpO1xyXG4gIGNvbnN0IHNjb3BlcyA9IHByb2Nlc3NSZW1vdGVJbXBvcnRzKHJlbW90ZUluZm8sIGJhc2VVcmwpO1xyXG4gIHJldHVybiB7IGltcG9ydHMsIHNjb3BlcyB9O1xyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBsb2FkRmVkZXJhdGlvbkluZm8odXJsOiBzdHJpbmcpOiBQcm9taXNlPEZlZGVyYXRpb25JbmZvPiB7XHJcbiAgY29uc3QgaW5mbyA9IChhd2FpdCBmZXRjaCh1cmwpLnRoZW4oKHIpID0+IHIuanNvbigpKSkgYXMgRmVkZXJhdGlvbkluZm87XHJcbiAgcmV0dXJuIGluZm87XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHByb2Nlc3NSZW1vdGVJbXBvcnRzKFxyXG4gIHJlbW90ZUluZm86IEZlZGVyYXRpb25JbmZvLFxyXG4gIGJhc2VVcmw6IHN0cmluZ1xyXG4pOiBTY29wZXMge1xyXG4gIGNvbnN0IHNjb3BlczogU2NvcGVzID0ge307XHJcbiAgY29uc3Qgc2NvcGVkSW1wb3J0czogSW1wb3J0cyA9IHt9O1xyXG5cclxuICBmb3IgKGNvbnN0IHNoYXJlZCBvZiByZW1vdGVJbmZvLnNoYXJlZCkge1xyXG4gICAgY29uc3Qgb3V0RmlsZU5hbWUgPVxyXG4gICAgICBnZXRFeHRlcm5hbFVybChzaGFyZWQpID8/IGpvaW5QYXRocyhiYXNlVXJsLCBzaGFyZWQub3V0RmlsZU5hbWUpO1xyXG4gICAgc2V0RXh0ZXJuYWxVcmwoc2hhcmVkLCBvdXRGaWxlTmFtZSk7XHJcbiAgICBzY29wZWRJbXBvcnRzW3NoYXJlZC5wYWNrYWdlTmFtZV0gPSBvdXRGaWxlTmFtZTtcclxuICB9XHJcblxyXG4gIHNjb3Blc1tiYXNlVXJsICsgJy8nXSA9IHNjb3BlZEltcG9ydHM7XHJcbiAgcmV0dXJuIHNjb3BlcztcclxufVxyXG5cclxuZnVuY3Rpb24gcHJvY2Vzc0V4cG9zZWQoXHJcbiAgcmVtb3RlSW5mbzogRmVkZXJhdGlvbkluZm8sXHJcbiAgcmVtb3RlTmFtZTogc3RyaW5nLFxyXG4gIGJhc2VVcmw6IHN0cmluZ1xyXG4pOiBJbXBvcnRzIHtcclxuICBjb25zdCBpbXBvcnRzOiBJbXBvcnRzID0ge307XHJcblxyXG4gIGZvciAoY29uc3QgZXhwb3NlZCBvZiByZW1vdGVJbmZvLmV4cG9zZXMpIHtcclxuICAgIGNvbnN0IGtleSA9IGpvaW5QYXRocyhyZW1vdGVOYW1lLCBleHBvc2VkLmtleSk7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGpvaW5QYXRocyhiYXNlVXJsLCBleHBvc2VkLm91dEZpbGVOYW1lKTtcclxuICAgIGltcG9ydHNba2V5XSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGltcG9ydHM7XHJcbn1cclxuXHJcbmFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NIb3N0SW5mbygpOiBQcm9taXNlPEltcG9ydE1hcD4ge1xyXG4gIGNvbnN0IGhvc3RJbmZvID0gYXdhaXQgbG9hZEZlZGVyYXRpb25JbmZvKCcuL3JlbW90ZUVudHJ5Lmpzb24nKTtcclxuXHJcbiAgY29uc3QgaW1wb3J0cyA9IGhvc3RJbmZvLnNoYXJlZC5yZWR1Y2UoXHJcbiAgICAoYWNjLCBjdXIpID0+ICh7IC4uLmFjYywgW2N1ci5wYWNrYWdlTmFtZV06ICcuLycgKyBjdXIub3V0RmlsZU5hbWUgfSksXHJcbiAgICB7fVxyXG4gICkgYXMgSW1wb3J0cztcclxuXHJcbiAgZm9yIChjb25zdCBzaGFyZWQgb2YgaG9zdEluZm8uc2hhcmVkKSB7XHJcbiAgICBzZXRFeHRlcm5hbFVybChzaGFyZWQsICcuLycgKyBzaGFyZWQub3V0RmlsZU5hbWUpO1xyXG4gIH1cclxuICByZXR1cm4geyBpbXBvcnRzLCBzY29wZXM6IHt9IH07XHJcbn1cclxuIl19
@@ -0,0 +1,62 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { appendImportMap } from './utils/add-import-map';
3
+ import { processRemoteInfo } from './init-federation';
4
+ import { getRemote, getRemoteNameByBaseUrl, isRemoteInitialized, } from './model/remotes';
5
+ import { getDirectory, joinPaths } from './utils/path-utils';
6
+ export async function loadRemoteModule(optionsOrRemoteName, exposedModule) {
7
+ const options = normalizeOptions(optionsOrRemoteName, exposedModule);
8
+ await ensureRemoteInitialized(options);
9
+ const remoteName = getRemoteNameByOptions(options);
10
+ const remote = getRemote(remoteName);
11
+ if (!remote) {
12
+ throw new Error('unknown remote ' + remoteName);
13
+ }
14
+ const exposed = remote.exposes.find((e) => e.key === options.exposedModule);
15
+ if (!exposed) {
16
+ throw new Error(`Unknown exposed module ${options.exposedModule} in remote ${remoteName}`);
17
+ }
18
+ const url = joinPaths(remote.baseUrl, exposed.outFileName);
19
+ const module = await importShim(url);
20
+ return module;
21
+ }
22
+ function getRemoteNameByOptions(options) {
23
+ let remoteName;
24
+ if (options.remoteName) {
25
+ remoteName = options.remoteName;
26
+ }
27
+ else if (options.remoteEntry) {
28
+ const baseUrl = getDirectory(options.remoteEntry);
29
+ remoteName = getRemoteNameByBaseUrl(baseUrl);
30
+ }
31
+ else {
32
+ throw new Error('unexpcted arguments: Please pass remoteName or remoteEntry');
33
+ }
34
+ if (!remoteName) {
35
+ throw new Error('unknown remoteName ' + remoteName);
36
+ }
37
+ return remoteName;
38
+ }
39
+ async function ensureRemoteInitialized(options) {
40
+ if (options.remoteEntry &&
41
+ !isRemoteInitialized(getDirectory(options.remoteEntry))) {
42
+ const importMap = await processRemoteInfo(options.remoteEntry);
43
+ appendImportMap(importMap);
44
+ }
45
+ }
46
+ function normalizeOptions(optionsOrRemoteName, exposedModule) {
47
+ let options;
48
+ if (typeof optionsOrRemoteName === 'string' && exposedModule) {
49
+ options = {
50
+ remoteName: optionsOrRemoteName,
51
+ exposedModule,
52
+ };
53
+ }
54
+ else if (typeof optionsOrRemoteName === 'object' && !exposedModule) {
55
+ options = optionsOrRemoteName;
56
+ }
57
+ else {
58
+ throw new Error('unexpected arguments: please pass options or a remoteName/exposedModule-pair');
59
+ }
60
+ return options;
61
+ }
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1yZW1vdGUtbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uYXRpdmUtZmVkZXJhdGlvbi1ydW50aW1lL3NyYy9saWIvbG9hZC1yZW1vdGUtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUNMLFNBQVMsRUFDVCxzQkFBc0IsRUFDdEIsbUJBQW1CLEdBQ3BCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQWlCN0QsTUFBTSxDQUFDLEtBQUssVUFBVSxnQkFBZ0IsQ0FDcEMsbUJBQXFELEVBQ3JELGFBQXNCO0lBRXRCLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRXJFLE1BQU0sdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFdkMsTUFBTSxVQUFVLEdBQUcsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXJDLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxDQUFDO0tBQ2pEO0lBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRTVFLElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDWixNQUFNLElBQUksS0FBSyxDQUNiLDBCQUEwQixPQUFPLENBQUMsYUFBYSxjQUFjLFVBQVUsRUFBRSxDQUMxRSxDQUFDO0tBQ0g7SUFFRCxNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUksR0FBRyxDQUFDLENBQUM7SUFFeEMsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQUMsT0FBZ0M7SUFDOUQsSUFBSSxVQUFVLENBQUM7SUFFZixJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7UUFDdEIsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7S0FDakM7U0FBTSxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUU7UUFDOUIsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsRCxVQUFVLEdBQUcsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDOUM7U0FBTTtRQUNMLE1BQU0sSUFBSSxLQUFLLENBQ2IsNERBQTRELENBQzdELENBQUM7S0FDSDtJQUVELElBQUksQ0FBQyxVQUFVLEVBQUU7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixHQUFHLFVBQVUsQ0FBQyxDQUFDO0tBQ3JEO0lBQ0QsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQztBQUVELEtBQUssVUFBVSx1QkFBdUIsQ0FDcEMsT0FBZ0M7SUFFaEMsSUFDRSxPQUFPLENBQUMsV0FBVztRQUNuQixDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsRUFDdkQ7UUFDQSxNQUFNLFNBQVMsR0FBRyxNQUFNLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvRCxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDNUI7QUFDSCxDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FDdkIsbUJBQXFELEVBQ3JELGFBQWlDO0lBRWpDLElBQUksT0FBZ0MsQ0FBQztJQUVyQyxJQUFJLE9BQU8sbUJBQW1CLEtBQUssUUFBUSxJQUFJLGFBQWEsRUFBRTtRQUM1RCxPQUFPLEdBQUc7WUFDUixVQUFVLEVBQUUsbUJBQW1CO1lBQy9CLGFBQWE7U0FDZCxDQUFDO0tBQ0g7U0FBTSxJQUFJLE9BQU8sbUJBQW1CLEtBQUssUUFBUSxJQUFJLENBQUMsYUFBYSxFQUFFO1FBQ3BFLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQztLQUMvQjtTQUFNO1FBQ0wsTUFBTSxJQUFJLEtBQUssQ0FDYiw4RUFBOEUsQ0FDL0UsQ0FBQztLQUNIO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuaW1wb3J0IHsgYXBwZW5kSW1wb3J0TWFwIH0gZnJvbSAnLi91dGlscy9hZGQtaW1wb3J0LW1hcCc7XHJcbmltcG9ydCB7IHByb2Nlc3NSZW1vdGVJbmZvIH0gZnJvbSAnLi9pbml0LWZlZGVyYXRpb24nO1xyXG5pbXBvcnQge1xyXG4gIGdldFJlbW90ZSxcclxuICBnZXRSZW1vdGVOYW1lQnlCYXNlVXJsLFxyXG4gIGlzUmVtb3RlSW5pdGlhbGl6ZWQsXHJcbn0gZnJvbSAnLi9tb2RlbC9yZW1vdGVzJztcclxuaW1wb3J0IHsgZ2V0RGlyZWN0b3J5LCBqb2luUGF0aHMgfSBmcm9tICcuL3V0aWxzL3BhdGgtdXRpbHMnO1xyXG5cclxuZGVjbGFyZSBmdW5jdGlvbiBpbXBvcnRTaGltPFQ+KHVybDogc3RyaW5nKTogVDtcclxuXHJcbmV4cG9ydCB0eXBlIExvYWRSZW1vdGVNb2R1bGVPcHRpb25zID0ge1xyXG4gIHJlbW90ZUVudHJ5Pzogc3RyaW5nO1xyXG4gIHJlbW90ZU5hbWU/OiBzdHJpbmc7XHJcbiAgZXhwb3NlZE1vZHVsZTogc3RyaW5nO1xyXG59O1xyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRSZW1vdGVNb2R1bGU8VCA9IGFueT4oXHJcbiAgb3B0aW9uczogTG9hZFJlbW90ZU1vZHVsZU9wdGlvbnNcclxuKTogUHJvbWlzZTxUPjtcclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRSZW1vdGVNb2R1bGU8VCA9IGFueT4oXHJcbiAgcmVtb3RlTmFtZTogc3RyaW5nLFxyXG4gIGV4cG9zZWRNb2R1bGU6IHN0cmluZ1xyXG4pOiBQcm9taXNlPFQ+O1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFJlbW90ZU1vZHVsZTxUID0gYW55PihcclxuICBvcHRpb25zT3JSZW1vdGVOYW1lOiBMb2FkUmVtb3RlTW9kdWxlT3B0aW9ucyB8IHN0cmluZyxcclxuICBleHBvc2VkTW9kdWxlPzogc3RyaW5nXHJcbik6IFByb21pc2U8VD4ge1xyXG4gIGNvbnN0IG9wdGlvbnMgPSBub3JtYWxpemVPcHRpb25zKG9wdGlvbnNPclJlbW90ZU5hbWUsIGV4cG9zZWRNb2R1bGUpO1xyXG5cclxuICBhd2FpdCBlbnN1cmVSZW1vdGVJbml0aWFsaXplZChvcHRpb25zKTtcclxuXHJcbiAgY29uc3QgcmVtb3RlTmFtZSA9IGdldFJlbW90ZU5hbWVCeU9wdGlvbnMob3B0aW9ucyk7XHJcbiAgY29uc3QgcmVtb3RlID0gZ2V0UmVtb3RlKHJlbW90ZU5hbWUpO1xyXG5cclxuICBpZiAoIXJlbW90ZSkge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIHJlbW90ZSAnICsgcmVtb3RlTmFtZSk7XHJcbiAgfVxyXG5cclxuICBjb25zdCBleHBvc2VkID0gcmVtb3RlLmV4cG9zZXMuZmluZCgoZSkgPT4gZS5rZXkgPT09IG9wdGlvbnMuZXhwb3NlZE1vZHVsZSk7XHJcblxyXG4gIGlmICghZXhwb3NlZCkge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICBgVW5rbm93biBleHBvc2VkIG1vZHVsZSAke29wdGlvbnMuZXhwb3NlZE1vZHVsZX0gaW4gcmVtb3RlICR7cmVtb3RlTmFtZX1gXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgdXJsID0gam9pblBhdGhzKHJlbW90ZS5iYXNlVXJsLCBleHBvc2VkLm91dEZpbGVOYW1lKTtcclxuICBjb25zdCBtb2R1bGUgPSBhd2FpdCBpbXBvcnRTaGltPFQ+KHVybCk7XHJcblxyXG4gIHJldHVybiBtb2R1bGU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFJlbW90ZU5hbWVCeU9wdGlvbnMob3B0aW9uczogTG9hZFJlbW90ZU1vZHVsZU9wdGlvbnMpIHtcclxuICBsZXQgcmVtb3RlTmFtZTtcclxuXHJcbiAgaWYgKG9wdGlvbnMucmVtb3RlTmFtZSkge1xyXG4gICAgcmVtb3RlTmFtZSA9IG9wdGlvbnMucmVtb3RlTmFtZTtcclxuICB9IGVsc2UgaWYgKG9wdGlvbnMucmVtb3RlRW50cnkpIHtcclxuICAgIGNvbnN0IGJhc2VVcmwgPSBnZXREaXJlY3Rvcnkob3B0aW9ucy5yZW1vdGVFbnRyeSk7XHJcbiAgICByZW1vdGVOYW1lID0gZ2V0UmVtb3RlTmFtZUJ5QmFzZVVybChiYXNlVXJsKTtcclxuICB9IGVsc2Uge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAndW5leHBjdGVkIGFyZ3VtZW50czogUGxlYXNlIHBhc3MgcmVtb3RlTmFtZSBvciByZW1vdGVFbnRyeSdcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpZiAoIXJlbW90ZU5hbWUpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biByZW1vdGVOYW1lICcgKyByZW1vdGVOYW1lKTtcclxuICB9XHJcbiAgcmV0dXJuIHJlbW90ZU5hbWU7XHJcbn1cclxuXHJcbmFzeW5jIGZ1bmN0aW9uIGVuc3VyZVJlbW90ZUluaXRpYWxpemVkKFxyXG4gIG9wdGlvbnM6IExvYWRSZW1vdGVNb2R1bGVPcHRpb25zXHJcbik6IFByb21pc2U8dm9pZD4ge1xyXG4gIGlmIChcclxuICAgIG9wdGlvbnMucmVtb3RlRW50cnkgJiZcclxuICAgICFpc1JlbW90ZUluaXRpYWxpemVkKGdldERpcmVjdG9yeShvcHRpb25zLnJlbW90ZUVudHJ5KSlcclxuICApIHtcclxuICAgIGNvbnN0IGltcG9ydE1hcCA9IGF3YWl0IHByb2Nlc3NSZW1vdGVJbmZvKG9wdGlvbnMucmVtb3RlRW50cnkpO1xyXG4gICAgYXBwZW5kSW1wb3J0TWFwKGltcG9ydE1hcCk7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBub3JtYWxpemVPcHRpb25zKFxyXG4gIG9wdGlvbnNPclJlbW90ZU5hbWU6IHN0cmluZyB8IExvYWRSZW1vdGVNb2R1bGVPcHRpb25zLFxyXG4gIGV4cG9zZWRNb2R1bGU6IHN0cmluZyB8IHVuZGVmaW5lZFxyXG4pOiBMb2FkUmVtb3RlTW9kdWxlT3B0aW9ucyB7XHJcbiAgbGV0IG9wdGlvbnM6IExvYWRSZW1vdGVNb2R1bGVPcHRpb25zO1xyXG5cclxuICBpZiAodHlwZW9mIG9wdGlvbnNPclJlbW90ZU5hbWUgPT09ICdzdHJpbmcnICYmIGV4cG9zZWRNb2R1bGUpIHtcclxuICAgIG9wdGlvbnMgPSB7XHJcbiAgICAgIHJlbW90ZU5hbWU6IG9wdGlvbnNPclJlbW90ZU5hbWUsXHJcbiAgICAgIGV4cG9zZWRNb2R1bGUsXHJcbiAgICB9O1xyXG4gIH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbnNPclJlbW90ZU5hbWUgPT09ICdvYmplY3QnICYmICFleHBvc2VkTW9kdWxlKSB7XHJcbiAgICBvcHRpb25zID0gb3B0aW9uc09yUmVtb3RlTmFtZTtcclxuICB9IGVsc2Uge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAndW5leHBlY3RlZCBhcmd1bWVudHM6IHBsZWFzZSBwYXNzIG9wdGlvbnMgb3IgYSByZW1vdGVOYW1lL2V4cG9zZWRNb2R1bGUtcGFpcidcclxuICAgICk7XHJcbiAgfVxyXG4gIHJldHVybiBvcHRpb25zO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,13 @@
1
+ const externals = new Map();
2
+ function getExternalKey(shared) {
3
+ return `${shared.packageName}@${shared.version}`;
4
+ }
5
+ export function getExternalUrl(shared) {
6
+ const packageKey = getExternalKey(shared);
7
+ return externals.get(packageKey);
8
+ }
9
+ export function setExternalUrl(shared, url) {
10
+ const packageKey = getExternalKey(shared);
11
+ externals.set(packageKey, url);
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uYXRpdmUtZmVkZXJhdGlvbi1ydW50aW1lL3NyYy9saWIvbW9kZWwvZXh0ZXJuYWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0FBRTVDLFNBQVMsY0FBYyxDQUFDLE1BQWtCO0lBQ3hDLE9BQU8sR0FBRyxNQUFNLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUNuRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFrQjtJQUMvQyxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQWtCLEVBQUUsR0FBVztJQUM1RCxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYXJlZEluZm8gfSBmcm9tICcuL2ZlZGVyYXRpb24taW5mbyc7XHJcblxyXG5jb25zdCBleHRlcm5hbHMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xyXG5cclxuZnVuY3Rpb24gZ2V0RXh0ZXJuYWxLZXkoc2hhcmVkOiBTaGFyZWRJbmZvKSB7XHJcbiAgcmV0dXJuIGAke3NoYXJlZC5wYWNrYWdlTmFtZX1AJHtzaGFyZWQudmVyc2lvbn1gO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXh0ZXJuYWxVcmwoc2hhcmVkOiBTaGFyZWRJbmZvKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICBjb25zdCBwYWNrYWdlS2V5ID0gZ2V0RXh0ZXJuYWxLZXkoc2hhcmVkKTtcclxuICByZXR1cm4gZXh0ZXJuYWxzLmdldChwYWNrYWdlS2V5KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHNldEV4dGVybmFsVXJsKHNoYXJlZDogU2hhcmVkSW5mbywgdXJsOiBzdHJpbmcpOiB2b2lkIHtcclxuICBjb25zdCBwYWNrYWdlS2V5ID0gZ2V0RXh0ZXJuYWxLZXkoc2hhcmVkKTtcclxuICBleHRlcm5hbHMuc2V0KHBhY2thZ2VLZXksIHVybCk7XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVkZXJhdGlvbi1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uYXRpdmUtZmVkZXJhdGlvbi1ydW50aW1lL3NyYy9saWIvbW9kZWwvZmVkZXJhdGlvbi1pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBTaGFyZWRJbmZvID0ge1xyXG4gIHNpbmdsZXRvbjogYm9vbGVhbjtcclxuICBzdHJpY3RWZXJzaW9uOiBib29sZWFuO1xyXG4gIHJlcXVpcmVkVmVyc2lvbjogc3RyaW5nO1xyXG4gIHZlcnNpb24/OiBzdHJpbmc7XHJcbiAgcGFja2FnZU5hbWU6IHN0cmluZztcclxuICBvdXRGaWxlTmFtZTogc3RyaW5nO1xyXG59O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFeHBvc2VzSW5mbyB7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgb3V0RmlsZU5hbWU6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGZWRlcmF0aW9uSW5mbyB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGV4cG9zZXM6IEV4cG9zZXNJbmZvW107XHJcbiAgc2hhcmVkOiBTaGFyZWRJbmZvW107XHJcbn1cclxuIl19
@@ -0,0 +1,7 @@
1
+ export function mergeImportMaps(map1, map2) {
2
+ return {
3
+ imports: { ...map1.imports, ...map2.imports },
4
+ scopes: { ...map1.scopes, ...map2.scopes },
5
+ };
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmF0aXZlLWZlZGVyYXRpb24tcnVudGltZS9zcmMvbGliL21vZGVsL2ltcG9ydC1tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFlLEVBQUUsSUFBZTtJQUM5RCxPQUFPO1FBQ0wsT0FBTyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFO0tBQzNDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgSW1wb3J0cyA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcblxyXG5leHBvcnQgdHlwZSBTY29wZXMgPSBSZWNvcmQ8c3RyaW5nLCBJbXBvcnRzPjtcclxuXHJcbmV4cG9ydCB0eXBlIEltcG9ydE1hcCA9IHtcclxuICBpbXBvcnRzOiBJbXBvcnRzO1xyXG4gIHNjb3BlczogU2NvcGVzO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlSW1wb3J0TWFwcyhtYXAxOiBJbXBvcnRNYXAsIG1hcDI6IEltcG9ydE1hcCk6IEltcG9ydE1hcCB7XHJcbiAgcmV0dXJuIHtcclxuICAgIGltcG9ydHM6IHsgLi4ubWFwMS5pbXBvcnRzLCAuLi5tYXAyLmltcG9ydHMgfSxcclxuICAgIHNjb3BlczogeyAuLi5tYXAxLnNjb3BlcywgLi4ubWFwMi5zY29wZXMgfSxcclxuICB9O1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,19 @@
1
+ const remoteNamesToRemote = new Map();
2
+ const baseUrlToRemoteNames = new Map();
3
+ export function addRemote(remoteName, remote) {
4
+ remoteNamesToRemote.set(remoteName, remote);
5
+ baseUrlToRemoteNames.set(remote.baseUrl, remoteName);
6
+ }
7
+ export function getRemoteNameByBaseUrl(baseUrl) {
8
+ return baseUrlToRemoteNames.get(baseUrl);
9
+ }
10
+ export function isRemoteInitialized(baseUrl) {
11
+ return baseUrlToRemoteNames.has(baseUrl);
12
+ }
13
+ export function getRemote(remoteName) {
14
+ return remoteNamesToRemote.get(remoteName);
15
+ }
16
+ export function hasRemote(remoteName) {
17
+ return remoteNamesToRemote.has(remoteName);
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmF0aXZlLWZlZGVyYXRpb24tcnVudGltZS9zcmMvbGliL21vZGVsL3JlbW90ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztBQUN0RCxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0FBRXZELE1BQU0sVUFBVSxTQUFTLENBQUMsVUFBa0IsRUFBRSxNQUFjO0lBQzFELG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxPQUFlO0lBQ3BELE9BQU8sb0JBQW9CLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsT0FBZTtJQUNqRCxPQUFPLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxVQUFrQjtJQUMxQyxPQUFPLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxVQUFrQjtJQUMxQyxPQUFPLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmVkZXJhdGlvbkluZm8gfSBmcm9tICcuL2ZlZGVyYXRpb24taW5mbyc7XHJcblxyXG5leHBvcnQgdHlwZSBSZW1vdGUgPSBGZWRlcmF0aW9uSW5mbyAmIHtcclxuICBiYXNlVXJsOiBzdHJpbmc7XHJcbn07XHJcblxyXG5jb25zdCByZW1vdGVOYW1lc1RvUmVtb3RlID0gbmV3IE1hcDxzdHJpbmcsIFJlbW90ZT4oKTtcclxuY29uc3QgYmFzZVVybFRvUmVtb3RlTmFtZXMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZFJlbW90ZShyZW1vdGVOYW1lOiBzdHJpbmcsIHJlbW90ZTogUmVtb3RlKTogdm9pZCB7XHJcbiAgcmVtb3RlTmFtZXNUb1JlbW90ZS5zZXQocmVtb3RlTmFtZSwgcmVtb3RlKTtcclxuICBiYXNlVXJsVG9SZW1vdGVOYW1lcy5zZXQocmVtb3RlLmJhc2VVcmwsIHJlbW90ZU5hbWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVtb3RlTmFtZUJ5QmFzZVVybChiYXNlVXJsOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gIHJldHVybiBiYXNlVXJsVG9SZW1vdGVOYW1lcy5nZXQoYmFzZVVybCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc1JlbW90ZUluaXRpYWxpemVkKGJhc2VVcmw6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gIHJldHVybiBiYXNlVXJsVG9SZW1vdGVOYW1lcy5oYXMoYmFzZVVybCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRSZW1vdGUocmVtb3RlTmFtZTogc3RyaW5nKTogUmVtb3RlIHwgdW5kZWZpbmVkIHtcclxuICByZXR1cm4gcmVtb3RlTmFtZXNUb1JlbW90ZS5nZXQocmVtb3RlTmFtZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBoYXNSZW1vdGUocmVtb3RlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIHJlbW90ZU5hbWVzVG9SZW1vdGUuaGFzKHJlbW90ZU5hbWUpO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,7 @@
1
+ export function appendImportMap(importMap) {
2
+ document.body.appendChild(Object.assign(document.createElement('script'), {
3
+ type: 'importmap-shim',
4
+ innerHTML: JSON.stringify(importMap),
5
+ }));
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWltcG9ydC1tYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25hdGl2ZS1mZWRlcmF0aW9uLXJ1bnRpbWUvc3JjL2xpYi91dGlscy9hZGQtaW1wb3J0LW1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsZUFBZSxDQUFDLFNBQW9CO0lBQ2xELFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUN2QixNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDOUMsSUFBSSxFQUFFLGdCQUFnQjtRQUN0QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7S0FDckMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW1wb3J0TWFwIH0gZnJvbSAnLi4vbW9kZWwvaW1wb3J0LW1hcCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kSW1wb3J0TWFwKGltcG9ydE1hcDogSW1wb3J0TWFwKSB7XHJcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChcclxuICAgIE9iamVjdC5hc3NpZ24oZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JyksIHtcclxuICAgICAgdHlwZTogJ2ltcG9ydG1hcC1zaGltJyxcclxuICAgICAgaW5uZXJIVE1MOiBKU09OLnN0cmluZ2lmeShpbXBvcnRNYXApLFxyXG4gICAgfSlcclxuICApO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,15 @@
1
+ export function getDirectory(url) {
2
+ const parts = url.split('/');
3
+ parts.pop();
4
+ return parts.join('/');
5
+ }
6
+ export function joinPaths(path1, path2) {
7
+ while (path1.endsWith('/')) {
8
+ path1 = path1.substring(0, path1.length - 1);
9
+ }
10
+ if (path2.startsWith('./')) {
11
+ path2 = path2.substring(2, path2.length);
12
+ }
13
+ return `${path1}/${path2}`;
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmF0aXZlLWZlZGVyYXRpb24tcnVudGltZS9zcmMvbGliL3V0aWxzL3BhdGgtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFlBQVksQ0FBQyxHQUFXO0lBQ3RDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ1osT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQWEsRUFBRSxLQUFhO0lBQ3BELE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUMxQixLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztLQUM5QztJQUNELElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUMxQixLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQzFDO0lBRUQsT0FBTyxHQUFHLEtBQUssSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUM3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdG9yeSh1cmw6IHN0cmluZykge1xyXG4gIGNvbnN0IHBhcnRzID0gdXJsLnNwbGl0KCcvJyk7XHJcbiAgcGFydHMucG9wKCk7XHJcbiAgcmV0dXJuIHBhcnRzLmpvaW4oJy8nKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGpvaW5QYXRocyhwYXRoMTogc3RyaW5nLCBwYXRoMjogc3RyaW5nKTogc3RyaW5nIHtcclxuICB3aGlsZSAocGF0aDEuZW5kc1dpdGgoJy8nKSkge1xyXG4gICAgcGF0aDEgPSBwYXRoMS5zdWJzdHJpbmcoMCwgcGF0aDEubGVuZ3RoIC0gMSk7XHJcbiAgfVxyXG4gIGlmIChwYXRoMi5zdGFydHNXaXRoKCcuLycpKSB7XHJcbiAgICBwYXRoMiA9IHBhdGgyLnN1YnN0cmluZygyLCBwYXRoMi5sZW5ndGgpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGAke3BhdGgxfS8ke3BhdGgyfWA7XHJcbn1cclxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29mdGFyYy1uYXRpdmUtZmVkZXJhdGlvbi1ydW50aW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9uYXRpdmUtZmVkZXJhdGlvbi1ydW50aW1lL3NyYy9zb2Z0YXJjLW5hdGl2ZS1mZWRlcmF0aW9uLXJ1bnRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,216 @@
1
+ import { __awaiter } from 'tslib';
2
+
3
+ function mergeImportMaps(map1, map2) {
4
+ return {
5
+ imports: Object.assign(Object.assign({}, map1.imports), map2.imports),
6
+ scopes: Object.assign(Object.assign({}, map1.scopes), map2.scopes),
7
+ };
8
+ }
9
+
10
+ const externals = new Map();
11
+ function getExternalKey(shared) {
12
+ return `${shared.packageName}@${shared.version}`;
13
+ }
14
+ function getExternalUrl(shared) {
15
+ const packageKey = getExternalKey(shared);
16
+ return externals.get(packageKey);
17
+ }
18
+ function setExternalUrl(shared, url) {
19
+ const packageKey = getExternalKey(shared);
20
+ externals.set(packageKey, url);
21
+ }
22
+
23
+ function getDirectory(url) {
24
+ const parts = url.split('/');
25
+ parts.pop();
26
+ return parts.join('/');
27
+ }
28
+ function joinPaths(path1, path2) {
29
+ while (path1.endsWith('/')) {
30
+ path1 = path1.substring(0, path1.length - 1);
31
+ }
32
+ if (path2.startsWith('./')) {
33
+ path2 = path2.substring(2, path2.length);
34
+ }
35
+ return `${path1}/${path2}`;
36
+ }
37
+
38
+ const remoteNamesToRemote = new Map();
39
+ const baseUrlToRemoteNames = new Map();
40
+ function addRemote(remoteName, remote) {
41
+ remoteNamesToRemote.set(remoteName, remote);
42
+ baseUrlToRemoteNames.set(remote.baseUrl, remoteName);
43
+ }
44
+ function getRemoteNameByBaseUrl(baseUrl) {
45
+ return baseUrlToRemoteNames.get(baseUrl);
46
+ }
47
+ function isRemoteInitialized(baseUrl) {
48
+ return baseUrlToRemoteNames.has(baseUrl);
49
+ }
50
+ function getRemote(remoteName) {
51
+ return remoteNamesToRemote.get(remoteName);
52
+ }
53
+ function hasRemote(remoteName) {
54
+ return remoteNamesToRemote.has(remoteName);
55
+ }
56
+
57
+ function appendImportMap(importMap) {
58
+ document.body.appendChild(Object.assign(document.createElement('script'), {
59
+ type: 'importmap-shim',
60
+ innerHTML: JSON.stringify(importMap),
61
+ }));
62
+ }
63
+
64
+ function initFederation(remotesOrManifestUrl = {}) {
65
+ return __awaiter(this, void 0, void 0, function* () {
66
+ const remotes = (typeof remotesOrManifestUrl === 'string') ?
67
+ yield loadManifest(remotesOrManifestUrl) :
68
+ remotesOrManifestUrl;
69
+ const hostImportMap = yield processHostInfo();
70
+ const remotesImportMap = yield processRemoteInfos(remotes);
71
+ const importMap = mergeImportMaps(hostImportMap, remotesImportMap);
72
+ appendImportMap(importMap);
73
+ return importMap;
74
+ });
75
+ }
76
+ function loadManifest(remotes) {
77
+ return __awaiter(this, void 0, void 0, function* () {
78
+ return yield fetch(remotes).then(r => r.json());
79
+ });
80
+ }
81
+ function processRemoteInfos(remotes) {
82
+ return __awaiter(this, void 0, void 0, function* () {
83
+ let importMap = {
84
+ imports: {},
85
+ scopes: {},
86
+ };
87
+ for (const remoteName of Object.keys(remotes)) {
88
+ const url = remotes[remoteName];
89
+ const remoteMap = yield processRemoteInfo(url, remoteName);
90
+ importMap = mergeImportMaps(importMap, remoteMap);
91
+ }
92
+ return importMap;
93
+ });
94
+ }
95
+ function processRemoteInfo(federationInfoUrl, remoteName) {
96
+ return __awaiter(this, void 0, void 0, function* () {
97
+ const baseUrl = getDirectory(federationInfoUrl);
98
+ const remoteInfo = yield loadFederationInfo(federationInfoUrl);
99
+ if (!remoteName) {
100
+ remoteName = remoteInfo.name;
101
+ }
102
+ const importMap = createRemoteImportMap(remoteInfo, remoteName, baseUrl);
103
+ addRemote(remoteName, Object.assign(Object.assign({}, remoteInfo), { baseUrl }));
104
+ return importMap;
105
+ });
106
+ }
107
+ function createRemoteImportMap(remoteInfo, remoteName, baseUrl) {
108
+ const imports = processExposed(remoteInfo, remoteName, baseUrl);
109
+ const scopes = processRemoteImports(remoteInfo, baseUrl);
110
+ return { imports, scopes };
111
+ }
112
+ function loadFederationInfo(url) {
113
+ return __awaiter(this, void 0, void 0, function* () {
114
+ const info = (yield fetch(url).then((r) => r.json()));
115
+ return info;
116
+ });
117
+ }
118
+ function processRemoteImports(remoteInfo, baseUrl) {
119
+ var _a;
120
+ const scopes = {};
121
+ const scopedImports = {};
122
+ for (const shared of remoteInfo.shared) {
123
+ const outFileName = (_a = getExternalUrl(shared)) !== null && _a !== void 0 ? _a : joinPaths(baseUrl, shared.outFileName);
124
+ setExternalUrl(shared, outFileName);
125
+ scopedImports[shared.packageName] = outFileName;
126
+ }
127
+ scopes[baseUrl + '/'] = scopedImports;
128
+ return scopes;
129
+ }
130
+ function processExposed(remoteInfo, remoteName, baseUrl) {
131
+ const imports = {};
132
+ for (const exposed of remoteInfo.exposes) {
133
+ const key = joinPaths(remoteName, exposed.key);
134
+ const value = joinPaths(baseUrl, exposed.outFileName);
135
+ imports[key] = value;
136
+ }
137
+ return imports;
138
+ }
139
+ function processHostInfo() {
140
+ return __awaiter(this, void 0, void 0, function* () {
141
+ const hostInfo = yield loadFederationInfo('./remoteEntry.json');
142
+ const imports = hostInfo.shared.reduce((acc, cur) => (Object.assign(Object.assign({}, acc), { [cur.packageName]: './' + cur.outFileName })), {});
143
+ for (const shared of hostInfo.shared) {
144
+ setExternalUrl(shared, './' + shared.outFileName);
145
+ }
146
+ return { imports, scopes: {} };
147
+ });
148
+ }
149
+
150
+ function loadRemoteModule(optionsOrRemoteName, exposedModule) {
151
+ return __awaiter(this, void 0, void 0, function* () {
152
+ const options = normalizeOptions(optionsOrRemoteName, exposedModule);
153
+ yield ensureRemoteInitialized(options);
154
+ const remoteName = getRemoteNameByOptions(options);
155
+ const remote = getRemote(remoteName);
156
+ if (!remote) {
157
+ throw new Error('unknown remote ' + remoteName);
158
+ }
159
+ const exposed = remote.exposes.find((e) => e.key === options.exposedModule);
160
+ if (!exposed) {
161
+ throw new Error(`Unknown exposed module ${options.exposedModule} in remote ${remoteName}`);
162
+ }
163
+ const url = joinPaths(remote.baseUrl, exposed.outFileName);
164
+ const module = yield importShim(url);
165
+ return module;
166
+ });
167
+ }
168
+ function getRemoteNameByOptions(options) {
169
+ let remoteName;
170
+ if (options.remoteName) {
171
+ remoteName = options.remoteName;
172
+ }
173
+ else if (options.remoteEntry) {
174
+ const baseUrl = getDirectory(options.remoteEntry);
175
+ remoteName = getRemoteNameByBaseUrl(baseUrl);
176
+ }
177
+ else {
178
+ throw new Error('unexpcted arguments: Please pass remoteName or remoteEntry');
179
+ }
180
+ if (!remoteName) {
181
+ throw new Error('unknown remoteName ' + remoteName);
182
+ }
183
+ return remoteName;
184
+ }
185
+ function ensureRemoteInitialized(options) {
186
+ return __awaiter(this, void 0, void 0, function* () {
187
+ if (options.remoteEntry &&
188
+ !isRemoteInitialized(getDirectory(options.remoteEntry))) {
189
+ const importMap = yield processRemoteInfo(options.remoteEntry);
190
+ appendImportMap(importMap);
191
+ }
192
+ });
193
+ }
194
+ function normalizeOptions(optionsOrRemoteName, exposedModule) {
195
+ let options;
196
+ if (typeof optionsOrRemoteName === 'string' && exposedModule) {
197
+ options = {
198
+ remoteName: optionsOrRemoteName,
199
+ exposedModule,
200
+ };
201
+ }
202
+ else if (typeof optionsOrRemoteName === 'object' && !exposedModule) {
203
+ options = optionsOrRemoteName;
204
+ }
205
+ else {
206
+ throw new Error('unexpected arguments: please pass options or a remoteName/exposedModule-pair');
207
+ }
208
+ return options;
209
+ }
210
+
211
+ /**
212
+ * Generated bundle index. Do not edit.
213
+ */
214
+
215
+ export { initFederation, loadRemoteModule, processRemoteInfo };
216
+ //# sourceMappingURL=softarc-native-federation-runtime.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"softarc-native-federation-runtime.mjs","sources":["../../../../libs/native-federation-runtime/src/lib/model/import-map.ts","../../../../libs/native-federation-runtime/src/lib/model/externals.ts","../../../../libs/native-federation-runtime/src/lib/utils/path-utils.ts","../../../../libs/native-federation-runtime/src/lib/model/remotes.ts","../../../../libs/native-federation-runtime/src/lib/utils/add-import-map.ts","../../../../libs/native-federation-runtime/src/lib/init-federation.ts","../../../../libs/native-federation-runtime/src/lib/load-remote-module.ts","../../../../libs/native-federation-runtime/src/softarc-native-federation-runtime.ts"],"sourcesContent":["export type Imports = Record<string, string>;\r\n\r\nexport type Scopes = Record<string, Imports>;\r\n\r\nexport type ImportMap = {\r\n imports: Imports;\r\n scopes: Scopes;\r\n};\r\n\r\nexport function mergeImportMaps(map1: ImportMap, map2: ImportMap): ImportMap {\r\n return {\r\n imports: { ...map1.imports, ...map2.imports },\r\n scopes: { ...map1.scopes, ...map2.scopes },\r\n };\r\n}\r\n","import { SharedInfo } from './federation-info';\r\n\r\nconst externals = new Map<string, string>();\r\n\r\nfunction getExternalKey(shared: SharedInfo) {\r\n return `${shared.packageName}@${shared.version}`;\r\n}\r\n\r\nexport function getExternalUrl(shared: SharedInfo): string | undefined {\r\n const packageKey = getExternalKey(shared);\r\n return externals.get(packageKey);\r\n}\r\n\r\nexport function setExternalUrl(shared: SharedInfo, url: string): void {\r\n const packageKey = getExternalKey(shared);\r\n externals.set(packageKey, url);\r\n}\r\n","export function getDirectory(url: string) {\r\n const parts = url.split('/');\r\n parts.pop();\r\n return parts.join('/');\r\n}\r\n\r\nexport function joinPaths(path1: string, path2: string): string {\r\n while (path1.endsWith('/')) {\r\n path1 = path1.substring(0, path1.length - 1);\r\n }\r\n if (path2.startsWith('./')) {\r\n path2 = path2.substring(2, path2.length);\r\n }\r\n\r\n return `${path1}/${path2}`;\r\n}\r\n","import { FederationInfo } from './federation-info';\r\n\r\nexport type Remote = FederationInfo & {\r\n baseUrl: string;\r\n};\r\n\r\nconst remoteNamesToRemote = new Map<string, Remote>();\r\nconst baseUrlToRemoteNames = new Map<string, string>();\r\n\r\nexport function addRemote(remoteName: string, remote: Remote): void {\r\n remoteNamesToRemote.set(remoteName, remote);\r\n baseUrlToRemoteNames.set(remote.baseUrl, remoteName);\r\n}\r\n\r\nexport function getRemoteNameByBaseUrl(baseUrl: string): string | undefined {\r\n return baseUrlToRemoteNames.get(baseUrl);\r\n}\r\n\r\nexport function isRemoteInitialized(baseUrl: string): boolean {\r\n return baseUrlToRemoteNames.has(baseUrl);\r\n}\r\n\r\nexport function getRemote(remoteName: string): Remote | undefined {\r\n return remoteNamesToRemote.get(remoteName);\r\n}\r\n\r\nexport function hasRemote(remoteName: string): boolean {\r\n return remoteNamesToRemote.has(remoteName);\r\n}\r\n","import { ImportMap } from '../model/import-map';\r\n\r\nexport function appendImportMap(importMap: ImportMap) {\r\n document.body.appendChild(\r\n Object.assign(document.createElement('script'), {\r\n type: 'importmap-shim',\r\n innerHTML: JSON.stringify(importMap),\r\n })\r\n );\r\n}\r\n","import {\r\n Scopes,\r\n Imports,\r\n ImportMap,\r\n mergeImportMaps,\r\n} from './model/import-map';\r\nimport { getExternalUrl, setExternalUrl } from './model/externals';\r\nimport { joinPaths, getDirectory } from './utils/path-utils';\r\nimport { addRemote } from './model/remotes';\r\nimport { appendImportMap } from './utils/add-import-map';\r\nimport { FederationInfo } from './model/federation-info';\r\n\r\nexport async function initFederation(\r\n remotesOrManifestUrl: Record<string, string> | string = {}\r\n): Promise<ImportMap> {\r\n \r\n const remotes = (typeof remotesOrManifestUrl === 'string') ? \r\n await loadManifest(remotesOrManifestUrl) :\r\n remotesOrManifestUrl;\r\n\r\n const hostImportMap = await processHostInfo();\r\n const remotesImportMap = await processRemoteInfos(remotes);\r\n\r\n const importMap = mergeImportMaps(hostImportMap, remotesImportMap);\r\n appendImportMap(importMap);\r\n\r\n return importMap;\r\n}\r\n\r\nasync function loadManifest(remotes: string): Promise<Record<string, string>> {\r\n return await fetch(remotes).then(r => r.json()) as Record<string, string>;\r\n}\r\n\r\nasync function processRemoteInfos(\r\n remotes: Record<string, string>\r\n): Promise<ImportMap> {\r\n let importMap: ImportMap = {\r\n imports: {},\r\n scopes: {},\r\n };\r\n\r\n for (const remoteName of Object.keys(remotes)) {\r\n const url = remotes[remoteName];\r\n const remoteMap = await processRemoteInfo(url, remoteName);\r\n importMap = mergeImportMaps(importMap, remoteMap);\r\n }\r\n\r\n return importMap;\r\n}\r\n\r\nexport async function processRemoteInfo(\r\n federationInfoUrl: string,\r\n remoteName?: string\r\n): Promise<ImportMap> {\r\n const baseUrl = getDirectory(federationInfoUrl);\r\n const remoteInfo = await loadFederationInfo(federationInfoUrl);\r\n\r\n if (!remoteName) {\r\n remoteName = remoteInfo.name;\r\n }\r\n\r\n const importMap = createRemoteImportMap(remoteInfo, remoteName, baseUrl);\r\n addRemote(remoteName, { ...remoteInfo, baseUrl });\r\n\r\n return importMap;\r\n}\r\n\r\nfunction createRemoteImportMap(\r\n remoteInfo: FederationInfo,\r\n remoteName: string,\r\n baseUrl: string\r\n): ImportMap {\r\n const imports = processExposed(remoteInfo, remoteName, baseUrl);\r\n const scopes = processRemoteImports(remoteInfo, baseUrl);\r\n return { imports, scopes };\r\n}\r\n\r\nasync function loadFederationInfo(url: string): Promise<FederationInfo> {\r\n const info = (await fetch(url).then((r) => r.json())) as FederationInfo;\r\n return info;\r\n}\r\n\r\nfunction processRemoteImports(\r\n remoteInfo: FederationInfo,\r\n baseUrl: string\r\n): Scopes {\r\n const scopes: Scopes = {};\r\n const scopedImports: Imports = {};\r\n\r\n for (const shared of remoteInfo.shared) {\r\n const outFileName =\r\n getExternalUrl(shared) ?? joinPaths(baseUrl, shared.outFileName);\r\n setExternalUrl(shared, outFileName);\r\n scopedImports[shared.packageName] = outFileName;\r\n }\r\n\r\n scopes[baseUrl + '/'] = scopedImports;\r\n return scopes;\r\n}\r\n\r\nfunction processExposed(\r\n remoteInfo: FederationInfo,\r\n remoteName: string,\r\n baseUrl: string\r\n): Imports {\r\n const imports: Imports = {};\r\n\r\n for (const exposed of remoteInfo.exposes) {\r\n const key = joinPaths(remoteName, exposed.key);\r\n const value = joinPaths(baseUrl, exposed.outFileName);\r\n imports[key] = value;\r\n }\r\n\r\n return imports;\r\n}\r\n\r\nasync function processHostInfo(): Promise<ImportMap> {\r\n const hostInfo = await loadFederationInfo('./remoteEntry.json');\r\n\r\n const imports = hostInfo.shared.reduce(\r\n (acc, cur) => ({ ...acc, [cur.packageName]: './' + cur.outFileName }),\r\n {}\r\n ) as Imports;\r\n\r\n for (const shared of hostInfo.shared) {\r\n setExternalUrl(shared, './' + shared.outFileName);\r\n }\r\n return { imports, scopes: {} };\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { appendImportMap } from './utils/add-import-map';\r\nimport { processRemoteInfo } from './init-federation';\r\nimport {\r\n getRemote,\r\n getRemoteNameByBaseUrl,\r\n isRemoteInitialized,\r\n} from './model/remotes';\r\nimport { getDirectory, joinPaths } from './utils/path-utils';\r\n\r\ndeclare function importShim<T>(url: string): T;\r\n\r\nexport type LoadRemoteModuleOptions = {\r\n remoteEntry?: string;\r\n remoteName?: string;\r\n exposedModule: string;\r\n};\r\n\r\nexport async function loadRemoteModule<T = any>(\r\n options: LoadRemoteModuleOptions\r\n): Promise<T>;\r\nexport async function loadRemoteModule<T = any>(\r\n remoteName: string,\r\n exposedModule: string\r\n): Promise<T>;\r\nexport async function loadRemoteModule<T = any>(\r\n optionsOrRemoteName: LoadRemoteModuleOptions | string,\r\n exposedModule?: string\r\n): Promise<T> {\r\n const options = normalizeOptions(optionsOrRemoteName, exposedModule);\r\n\r\n await ensureRemoteInitialized(options);\r\n\r\n const remoteName = getRemoteNameByOptions(options);\r\n const remote = getRemote(remoteName);\r\n\r\n if (!remote) {\r\n throw new Error('unknown remote ' + remoteName);\r\n }\r\n\r\n const exposed = remote.exposes.find((e) => e.key === options.exposedModule);\r\n\r\n if (!exposed) {\r\n throw new Error(\r\n `Unknown exposed module ${options.exposedModule} in remote ${remoteName}`\r\n );\r\n }\r\n\r\n const url = joinPaths(remote.baseUrl, exposed.outFileName);\r\n const module = await importShim<T>(url);\r\n\r\n return module;\r\n}\r\n\r\nfunction getRemoteNameByOptions(options: LoadRemoteModuleOptions) {\r\n let remoteName;\r\n\r\n if (options.remoteName) {\r\n remoteName = options.remoteName;\r\n } else if (options.remoteEntry) {\r\n const baseUrl = getDirectory(options.remoteEntry);\r\n remoteName = getRemoteNameByBaseUrl(baseUrl);\r\n } else {\r\n throw new Error(\r\n 'unexpcted arguments: Please pass remoteName or remoteEntry'\r\n );\r\n }\r\n\r\n if (!remoteName) {\r\n throw new Error('unknown remoteName ' + remoteName);\r\n }\r\n return remoteName;\r\n}\r\n\r\nasync function ensureRemoteInitialized(\r\n options: LoadRemoteModuleOptions\r\n): Promise<void> {\r\n if (\r\n options.remoteEntry &&\r\n !isRemoteInitialized(getDirectory(options.remoteEntry))\r\n ) {\r\n const importMap = await processRemoteInfo(options.remoteEntry);\r\n appendImportMap(importMap);\r\n }\r\n}\r\n\r\nfunction normalizeOptions(\r\n optionsOrRemoteName: string | LoadRemoteModuleOptions,\r\n exposedModule: string | undefined\r\n): LoadRemoteModuleOptions {\r\n let options: LoadRemoteModuleOptions;\r\n\r\n if (typeof optionsOrRemoteName === 'string' && exposedModule) {\r\n options = {\r\n remoteName: optionsOrRemoteName,\r\n exposedModule,\r\n };\r\n } else if (typeof optionsOrRemoteName === 'object' && !exposedModule) {\r\n options = optionsOrRemoteName;\r\n } else {\r\n throw new Error(\r\n 'unexpected arguments: please pass options or a remoteName/exposedModule-pair'\r\n );\r\n }\r\n return options;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,198 @@
1
+ function mergeImportMaps(map1, map2) {
2
+ return {
3
+ imports: { ...map1.imports, ...map2.imports },
4
+ scopes: { ...map1.scopes, ...map2.scopes },
5
+ };
6
+ }
7
+
8
+ const externals = new Map();
9
+ function getExternalKey(shared) {
10
+ return `${shared.packageName}@${shared.version}`;
11
+ }
12
+ function getExternalUrl(shared) {
13
+ const packageKey = getExternalKey(shared);
14
+ return externals.get(packageKey);
15
+ }
16
+ function setExternalUrl(shared, url) {
17
+ const packageKey = getExternalKey(shared);
18
+ externals.set(packageKey, url);
19
+ }
20
+
21
+ function getDirectory(url) {
22
+ const parts = url.split('/');
23
+ parts.pop();
24
+ return parts.join('/');
25
+ }
26
+ function joinPaths(path1, path2) {
27
+ while (path1.endsWith('/')) {
28
+ path1 = path1.substring(0, path1.length - 1);
29
+ }
30
+ if (path2.startsWith('./')) {
31
+ path2 = path2.substring(2, path2.length);
32
+ }
33
+ return `${path1}/${path2}`;
34
+ }
35
+
36
+ const remoteNamesToRemote = new Map();
37
+ const baseUrlToRemoteNames = new Map();
38
+ function addRemote(remoteName, remote) {
39
+ remoteNamesToRemote.set(remoteName, remote);
40
+ baseUrlToRemoteNames.set(remote.baseUrl, remoteName);
41
+ }
42
+ function getRemoteNameByBaseUrl(baseUrl) {
43
+ return baseUrlToRemoteNames.get(baseUrl);
44
+ }
45
+ function isRemoteInitialized(baseUrl) {
46
+ return baseUrlToRemoteNames.has(baseUrl);
47
+ }
48
+ function getRemote(remoteName) {
49
+ return remoteNamesToRemote.get(remoteName);
50
+ }
51
+ function hasRemote(remoteName) {
52
+ return remoteNamesToRemote.has(remoteName);
53
+ }
54
+
55
+ function appendImportMap(importMap) {
56
+ document.body.appendChild(Object.assign(document.createElement('script'), {
57
+ type: 'importmap-shim',
58
+ innerHTML: JSON.stringify(importMap),
59
+ }));
60
+ }
61
+
62
+ async function initFederation(remotesOrManifestUrl = {}) {
63
+ const remotes = (typeof remotesOrManifestUrl === 'string') ?
64
+ await loadManifest(remotesOrManifestUrl) :
65
+ remotesOrManifestUrl;
66
+ const hostImportMap = await processHostInfo();
67
+ const remotesImportMap = await processRemoteInfos(remotes);
68
+ const importMap = mergeImportMaps(hostImportMap, remotesImportMap);
69
+ appendImportMap(importMap);
70
+ return importMap;
71
+ }
72
+ async function loadManifest(remotes) {
73
+ return await fetch(remotes).then(r => r.json());
74
+ }
75
+ async function processRemoteInfos(remotes) {
76
+ let importMap = {
77
+ imports: {},
78
+ scopes: {},
79
+ };
80
+ for (const remoteName of Object.keys(remotes)) {
81
+ const url = remotes[remoteName];
82
+ const remoteMap = await processRemoteInfo(url, remoteName);
83
+ importMap = mergeImportMaps(importMap, remoteMap);
84
+ }
85
+ return importMap;
86
+ }
87
+ async function processRemoteInfo(federationInfoUrl, remoteName) {
88
+ const baseUrl = getDirectory(federationInfoUrl);
89
+ const remoteInfo = await loadFederationInfo(federationInfoUrl);
90
+ if (!remoteName) {
91
+ remoteName = remoteInfo.name;
92
+ }
93
+ const importMap = createRemoteImportMap(remoteInfo, remoteName, baseUrl);
94
+ addRemote(remoteName, { ...remoteInfo, baseUrl });
95
+ return importMap;
96
+ }
97
+ function createRemoteImportMap(remoteInfo, remoteName, baseUrl) {
98
+ const imports = processExposed(remoteInfo, remoteName, baseUrl);
99
+ const scopes = processRemoteImports(remoteInfo, baseUrl);
100
+ return { imports, scopes };
101
+ }
102
+ async function loadFederationInfo(url) {
103
+ const info = (await fetch(url).then((r) => r.json()));
104
+ return info;
105
+ }
106
+ function processRemoteImports(remoteInfo, baseUrl) {
107
+ const scopes = {};
108
+ const scopedImports = {};
109
+ for (const shared of remoteInfo.shared) {
110
+ const outFileName = getExternalUrl(shared) ?? joinPaths(baseUrl, shared.outFileName);
111
+ setExternalUrl(shared, outFileName);
112
+ scopedImports[shared.packageName] = outFileName;
113
+ }
114
+ scopes[baseUrl + '/'] = scopedImports;
115
+ return scopes;
116
+ }
117
+ function processExposed(remoteInfo, remoteName, baseUrl) {
118
+ const imports = {};
119
+ for (const exposed of remoteInfo.exposes) {
120
+ const key = joinPaths(remoteName, exposed.key);
121
+ const value = joinPaths(baseUrl, exposed.outFileName);
122
+ imports[key] = value;
123
+ }
124
+ return imports;
125
+ }
126
+ async function processHostInfo() {
127
+ const hostInfo = await loadFederationInfo('./remoteEntry.json');
128
+ const imports = hostInfo.shared.reduce((acc, cur) => ({ ...acc, [cur.packageName]: './' + cur.outFileName }), {});
129
+ for (const shared of hostInfo.shared) {
130
+ setExternalUrl(shared, './' + shared.outFileName);
131
+ }
132
+ return { imports, scopes: {} };
133
+ }
134
+
135
+ /* eslint-disable @typescript-eslint/no-explicit-any */
136
+ async function loadRemoteModule(optionsOrRemoteName, exposedModule) {
137
+ const options = normalizeOptions(optionsOrRemoteName, exposedModule);
138
+ await ensureRemoteInitialized(options);
139
+ const remoteName = getRemoteNameByOptions(options);
140
+ const remote = getRemote(remoteName);
141
+ if (!remote) {
142
+ throw new Error('unknown remote ' + remoteName);
143
+ }
144
+ const exposed = remote.exposes.find((e) => e.key === options.exposedModule);
145
+ if (!exposed) {
146
+ throw new Error(`Unknown exposed module ${options.exposedModule} in remote ${remoteName}`);
147
+ }
148
+ const url = joinPaths(remote.baseUrl, exposed.outFileName);
149
+ const module = await importShim(url);
150
+ return module;
151
+ }
152
+ function getRemoteNameByOptions(options) {
153
+ let remoteName;
154
+ if (options.remoteName) {
155
+ remoteName = options.remoteName;
156
+ }
157
+ else if (options.remoteEntry) {
158
+ const baseUrl = getDirectory(options.remoteEntry);
159
+ remoteName = getRemoteNameByBaseUrl(baseUrl);
160
+ }
161
+ else {
162
+ throw new Error('unexpcted arguments: Please pass remoteName or remoteEntry');
163
+ }
164
+ if (!remoteName) {
165
+ throw new Error('unknown remoteName ' + remoteName);
166
+ }
167
+ return remoteName;
168
+ }
169
+ async function ensureRemoteInitialized(options) {
170
+ if (options.remoteEntry &&
171
+ !isRemoteInitialized(getDirectory(options.remoteEntry))) {
172
+ const importMap = await processRemoteInfo(options.remoteEntry);
173
+ appendImportMap(importMap);
174
+ }
175
+ }
176
+ function normalizeOptions(optionsOrRemoteName, exposedModule) {
177
+ let options;
178
+ if (typeof optionsOrRemoteName === 'string' && exposedModule) {
179
+ options = {
180
+ remoteName: optionsOrRemoteName,
181
+ exposedModule,
182
+ };
183
+ }
184
+ else if (typeof optionsOrRemoteName === 'object' && !exposedModule) {
185
+ options = optionsOrRemoteName;
186
+ }
187
+ else {
188
+ throw new Error('unexpected arguments: please pass options or a remoteName/exposedModule-pair');
189
+ }
190
+ return options;
191
+ }
192
+
193
+ /**
194
+ * Generated bundle index. Do not edit.
195
+ */
196
+
197
+ export { initFederation, loadRemoteModule, processRemoteInfo };
198
+ //# sourceMappingURL=softarc-native-federation-runtime.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"softarc-native-federation-runtime.mjs","sources":["../../../../libs/native-federation-runtime/src/lib/model/import-map.ts","../../../../libs/native-federation-runtime/src/lib/model/externals.ts","../../../../libs/native-federation-runtime/src/lib/utils/path-utils.ts","../../../../libs/native-federation-runtime/src/lib/model/remotes.ts","../../../../libs/native-federation-runtime/src/lib/utils/add-import-map.ts","../../../../libs/native-federation-runtime/src/lib/init-federation.ts","../../../../libs/native-federation-runtime/src/lib/load-remote-module.ts","../../../../libs/native-federation-runtime/src/softarc-native-federation-runtime.ts"],"sourcesContent":["export type Imports = Record<string, string>;\r\n\r\nexport type Scopes = Record<string, Imports>;\r\n\r\nexport type ImportMap = {\r\n imports: Imports;\r\n scopes: Scopes;\r\n};\r\n\r\nexport function mergeImportMaps(map1: ImportMap, map2: ImportMap): ImportMap {\r\n return {\r\n imports: { ...map1.imports, ...map2.imports },\r\n scopes: { ...map1.scopes, ...map2.scopes },\r\n };\r\n}\r\n","import { SharedInfo } from './federation-info';\r\n\r\nconst externals = new Map<string, string>();\r\n\r\nfunction getExternalKey(shared: SharedInfo) {\r\n return `${shared.packageName}@${shared.version}`;\r\n}\r\n\r\nexport function getExternalUrl(shared: SharedInfo): string | undefined {\r\n const packageKey = getExternalKey(shared);\r\n return externals.get(packageKey);\r\n}\r\n\r\nexport function setExternalUrl(shared: SharedInfo, url: string): void {\r\n const packageKey = getExternalKey(shared);\r\n externals.set(packageKey, url);\r\n}\r\n","export function getDirectory(url: string) {\r\n const parts = url.split('/');\r\n parts.pop();\r\n return parts.join('/');\r\n}\r\n\r\nexport function joinPaths(path1: string, path2: string): string {\r\n while (path1.endsWith('/')) {\r\n path1 = path1.substring(0, path1.length - 1);\r\n }\r\n if (path2.startsWith('./')) {\r\n path2 = path2.substring(2, path2.length);\r\n }\r\n\r\n return `${path1}/${path2}`;\r\n}\r\n","import { FederationInfo } from './federation-info';\r\n\r\nexport type Remote = FederationInfo & {\r\n baseUrl: string;\r\n};\r\n\r\nconst remoteNamesToRemote = new Map<string, Remote>();\r\nconst baseUrlToRemoteNames = new Map<string, string>();\r\n\r\nexport function addRemote(remoteName: string, remote: Remote): void {\r\n remoteNamesToRemote.set(remoteName, remote);\r\n baseUrlToRemoteNames.set(remote.baseUrl, remoteName);\r\n}\r\n\r\nexport function getRemoteNameByBaseUrl(baseUrl: string): string | undefined {\r\n return baseUrlToRemoteNames.get(baseUrl);\r\n}\r\n\r\nexport function isRemoteInitialized(baseUrl: string): boolean {\r\n return baseUrlToRemoteNames.has(baseUrl);\r\n}\r\n\r\nexport function getRemote(remoteName: string): Remote | undefined {\r\n return remoteNamesToRemote.get(remoteName);\r\n}\r\n\r\nexport function hasRemote(remoteName: string): boolean {\r\n return remoteNamesToRemote.has(remoteName);\r\n}\r\n","import { ImportMap } from '../model/import-map';\r\n\r\nexport function appendImportMap(importMap: ImportMap) {\r\n document.body.appendChild(\r\n Object.assign(document.createElement('script'), {\r\n type: 'importmap-shim',\r\n innerHTML: JSON.stringify(importMap),\r\n })\r\n );\r\n}\r\n","import {\r\n Scopes,\r\n Imports,\r\n ImportMap,\r\n mergeImportMaps,\r\n} from './model/import-map';\r\nimport { getExternalUrl, setExternalUrl } from './model/externals';\r\nimport { joinPaths, getDirectory } from './utils/path-utils';\r\nimport { addRemote } from './model/remotes';\r\nimport { appendImportMap } from './utils/add-import-map';\r\nimport { FederationInfo } from './model/federation-info';\r\n\r\nexport async function initFederation(\r\n remotesOrManifestUrl: Record<string, string> | string = {}\r\n): Promise<ImportMap> {\r\n \r\n const remotes = (typeof remotesOrManifestUrl === 'string') ? \r\n await loadManifest(remotesOrManifestUrl) :\r\n remotesOrManifestUrl;\r\n\r\n const hostImportMap = await processHostInfo();\r\n const remotesImportMap = await processRemoteInfos(remotes);\r\n\r\n const importMap = mergeImportMaps(hostImportMap, remotesImportMap);\r\n appendImportMap(importMap);\r\n\r\n return importMap;\r\n}\r\n\r\nasync function loadManifest(remotes: string): Promise<Record<string, string>> {\r\n return await fetch(remotes).then(r => r.json()) as Record<string, string>;\r\n}\r\n\r\nasync function processRemoteInfos(\r\n remotes: Record<string, string>\r\n): Promise<ImportMap> {\r\n let importMap: ImportMap = {\r\n imports: {},\r\n scopes: {},\r\n };\r\n\r\n for (const remoteName of Object.keys(remotes)) {\r\n const url = remotes[remoteName];\r\n const remoteMap = await processRemoteInfo(url, remoteName);\r\n importMap = mergeImportMaps(importMap, remoteMap);\r\n }\r\n\r\n return importMap;\r\n}\r\n\r\nexport async function processRemoteInfo(\r\n federationInfoUrl: string,\r\n remoteName?: string\r\n): Promise<ImportMap> {\r\n const baseUrl = getDirectory(federationInfoUrl);\r\n const remoteInfo = await loadFederationInfo(federationInfoUrl);\r\n\r\n if (!remoteName) {\r\n remoteName = remoteInfo.name;\r\n }\r\n\r\n const importMap = createRemoteImportMap(remoteInfo, remoteName, baseUrl);\r\n addRemote(remoteName, { ...remoteInfo, baseUrl });\r\n\r\n return importMap;\r\n}\r\n\r\nfunction createRemoteImportMap(\r\n remoteInfo: FederationInfo,\r\n remoteName: string,\r\n baseUrl: string\r\n): ImportMap {\r\n const imports = processExposed(remoteInfo, remoteName, baseUrl);\r\n const scopes = processRemoteImports(remoteInfo, baseUrl);\r\n return { imports, scopes };\r\n}\r\n\r\nasync function loadFederationInfo(url: string): Promise<FederationInfo> {\r\n const info = (await fetch(url).then((r) => r.json())) as FederationInfo;\r\n return info;\r\n}\r\n\r\nfunction processRemoteImports(\r\n remoteInfo: FederationInfo,\r\n baseUrl: string\r\n): Scopes {\r\n const scopes: Scopes = {};\r\n const scopedImports: Imports = {};\r\n\r\n for (const shared of remoteInfo.shared) {\r\n const outFileName =\r\n getExternalUrl(shared) ?? joinPaths(baseUrl, shared.outFileName);\r\n setExternalUrl(shared, outFileName);\r\n scopedImports[shared.packageName] = outFileName;\r\n }\r\n\r\n scopes[baseUrl + '/'] = scopedImports;\r\n return scopes;\r\n}\r\n\r\nfunction processExposed(\r\n remoteInfo: FederationInfo,\r\n remoteName: string,\r\n baseUrl: string\r\n): Imports {\r\n const imports: Imports = {};\r\n\r\n for (const exposed of remoteInfo.exposes) {\r\n const key = joinPaths(remoteName, exposed.key);\r\n const value = joinPaths(baseUrl, exposed.outFileName);\r\n imports[key] = value;\r\n }\r\n\r\n return imports;\r\n}\r\n\r\nasync function processHostInfo(): Promise<ImportMap> {\r\n const hostInfo = await loadFederationInfo('./remoteEntry.json');\r\n\r\n const imports = hostInfo.shared.reduce(\r\n (acc, cur) => ({ ...acc, [cur.packageName]: './' + cur.outFileName }),\r\n {}\r\n ) as Imports;\r\n\r\n for (const shared of hostInfo.shared) {\r\n setExternalUrl(shared, './' + shared.outFileName);\r\n }\r\n return { imports, scopes: {} };\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { appendImportMap } from './utils/add-import-map';\r\nimport { processRemoteInfo } from './init-federation';\r\nimport {\r\n getRemote,\r\n getRemoteNameByBaseUrl,\r\n isRemoteInitialized,\r\n} from './model/remotes';\r\nimport { getDirectory, joinPaths } from './utils/path-utils';\r\n\r\ndeclare function importShim<T>(url: string): T;\r\n\r\nexport type LoadRemoteModuleOptions = {\r\n remoteEntry?: string;\r\n remoteName?: string;\r\n exposedModule: string;\r\n};\r\n\r\nexport async function loadRemoteModule<T = any>(\r\n options: LoadRemoteModuleOptions\r\n): Promise<T>;\r\nexport async function loadRemoteModule<T = any>(\r\n remoteName: string,\r\n exposedModule: string\r\n): Promise<T>;\r\nexport async function loadRemoteModule<T = any>(\r\n optionsOrRemoteName: LoadRemoteModuleOptions | string,\r\n exposedModule?: string\r\n): Promise<T> {\r\n const options = normalizeOptions(optionsOrRemoteName, exposedModule);\r\n\r\n await ensureRemoteInitialized(options);\r\n\r\n const remoteName = getRemoteNameByOptions(options);\r\n const remote = getRemote(remoteName);\r\n\r\n if (!remote) {\r\n throw new Error('unknown remote ' + remoteName);\r\n }\r\n\r\n const exposed = remote.exposes.find((e) => e.key === options.exposedModule);\r\n\r\n if (!exposed) {\r\n throw new Error(\r\n `Unknown exposed module ${options.exposedModule} in remote ${remoteName}`\r\n );\r\n }\r\n\r\n const url = joinPaths(remote.baseUrl, exposed.outFileName);\r\n const module = await importShim<T>(url);\r\n\r\n return module;\r\n}\r\n\r\nfunction getRemoteNameByOptions(options: LoadRemoteModuleOptions) {\r\n let remoteName;\r\n\r\n if (options.remoteName) {\r\n remoteName = options.remoteName;\r\n } else if (options.remoteEntry) {\r\n const baseUrl = getDirectory(options.remoteEntry);\r\n remoteName = getRemoteNameByBaseUrl(baseUrl);\r\n } else {\r\n throw new Error(\r\n 'unexpcted arguments: Please pass remoteName or remoteEntry'\r\n );\r\n }\r\n\r\n if (!remoteName) {\r\n throw new Error('unknown remoteName ' + remoteName);\r\n }\r\n return remoteName;\r\n}\r\n\r\nasync function ensureRemoteInitialized(\r\n options: LoadRemoteModuleOptions\r\n): Promise<void> {\r\n if (\r\n options.remoteEntry &&\r\n !isRemoteInitialized(getDirectory(options.remoteEntry))\r\n ) {\r\n const importMap = await processRemoteInfo(options.remoteEntry);\r\n appendImportMap(importMap);\r\n }\r\n}\r\n\r\nfunction normalizeOptions(\r\n optionsOrRemoteName: string | LoadRemoteModuleOptions,\r\n exposedModule: string | undefined\r\n): LoadRemoteModuleOptions {\r\n let options: LoadRemoteModuleOptions;\r\n\r\n if (typeof optionsOrRemoteName === 'string' && exposedModule) {\r\n options = {\r\n remoteName: optionsOrRemoteName,\r\n exposedModule,\r\n };\r\n } else if (typeof optionsOrRemoteName === 'object' && !exposedModule) {\r\n options = optionsOrRemoteName;\r\n } else {\r\n throw new Error(\r\n 'unexpected arguments: please pass options or a remoteName/exposedModule-pair'\r\n );\r\n }\r\n return options;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './lib/init-federation';
2
+ export * from './lib/load-remote-module';
3
+ export * from './lib/model/federation-info';
@@ -0,0 +1,3 @@
1
+ import { ImportMap } from './model/import-map';
2
+ export declare function initFederation(remotesOrManifestUrl?: Record<string, string> | string): Promise<ImportMap>;
3
+ export declare function processRemoteInfo(federationInfoUrl: string, remoteName?: string): Promise<ImportMap>;
@@ -0,0 +1,7 @@
1
+ export declare type LoadRemoteModuleOptions = {
2
+ remoteEntry?: string;
3
+ remoteName?: string;
4
+ exposedModule: string;
5
+ };
6
+ export declare function loadRemoteModule<T = any>(options: LoadRemoteModuleOptions): Promise<T>;
7
+ export declare function loadRemoteModule<T = any>(remoteName: string, exposedModule: string): Promise<T>;
@@ -0,0 +1,3 @@
1
+ import { SharedInfo } from './federation-info';
2
+ export declare function getExternalUrl(shared: SharedInfo): string | undefined;
3
+ export declare function setExternalUrl(shared: SharedInfo, url: string): void;
@@ -0,0 +1,17 @@
1
+ export declare type SharedInfo = {
2
+ singleton: boolean;
3
+ strictVersion: boolean;
4
+ requiredVersion: string;
5
+ version?: string;
6
+ packageName: string;
7
+ outFileName: string;
8
+ };
9
+ export interface ExposesInfo {
10
+ key: string;
11
+ outFileName: string;
12
+ }
13
+ export interface FederationInfo {
14
+ name: string;
15
+ exposes: ExposesInfo[];
16
+ shared: SharedInfo[];
17
+ }
@@ -0,0 +1,7 @@
1
+ export declare type Imports = Record<string, string>;
2
+ export declare type Scopes = Record<string, Imports>;
3
+ export declare type ImportMap = {
4
+ imports: Imports;
5
+ scopes: Scopes;
6
+ };
7
+ export declare function mergeImportMaps(map1: ImportMap, map2: ImportMap): ImportMap;
@@ -0,0 +1,9 @@
1
+ import { FederationInfo } from './federation-info';
2
+ export declare type Remote = FederationInfo & {
3
+ baseUrl: string;
4
+ };
5
+ export declare function addRemote(remoteName: string, remote: Remote): void;
6
+ export declare function getRemoteNameByBaseUrl(baseUrl: string): string | undefined;
7
+ export declare function isRemoteInitialized(baseUrl: string): boolean;
8
+ export declare function getRemote(remoteName: string): Remote | undefined;
9
+ export declare function hasRemote(remoteName: string): boolean;
@@ -0,0 +1,2 @@
1
+ import { ImportMap } from '../model/import-map';
2
+ export declare function appendImportMap(importMap: ImportMap): void;
@@ -0,0 +1,2 @@
1
+ export declare function getDirectory(url: string): string;
2
+ export declare function joinPaths(path1: string, path2: string): string;
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@softarc/native-federation-runtime",
3
+ "version": "0.9.1",
4
+ "peerDependencies": {},
5
+ "dependencies": {
6
+ "tslib": "^2.3.0"
7
+ },
8
+ "module": "fesm2015/softarc-native-federation-runtime.mjs",
9
+ "es2020": "fesm2020/softarc-native-federation-runtime.mjs",
10
+ "esm2020": "esm2020/softarc-native-federation-runtime.mjs",
11
+ "fesm2020": "fesm2020/softarc-native-federation-runtime.mjs",
12
+ "fesm2015": "fesm2015/softarc-native-federation-runtime.mjs",
13
+ "typings": "index.d.ts",
14
+ "exports": {
15
+ "./package.json": {
16
+ "default": "./package.json"
17
+ },
18
+ ".": {
19
+ "types": "./index.d.ts",
20
+ "esm2020": "./esm2020/softarc-native-federation-runtime.mjs",
21
+ "es2020": "./fesm2020/softarc-native-federation-runtime.mjs",
22
+ "es2015": "./fesm2015/softarc-native-federation-runtime.mjs",
23
+ "node": "./fesm2015/softarc-native-federation-runtime.mjs",
24
+ "default": "./fesm2020/softarc-native-federation-runtime.mjs"
25
+ }
26
+ },
27
+ "sideEffects": false
28
+ }