@appshell/loader 0.1.0 → 0.2.0-alpha.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/CHANGELOG.md +22 -0
- package/README.md +4 -4
- package/__tests__/remoteLoader.spec.ts +38 -8
- package/dist/main.js +1 -1
- package/dist/types/config/src/deregister.d.ts +3 -0
- package/dist/types/config/src/deregister.d.ts.map +1 -0
- package/dist/types/config/src/generate.global-config.d.ts +7 -0
- package/dist/types/config/src/generate.global-config.d.ts.map +1 -0
- package/dist/types/config/src/index.d.ts +3 -3
- package/dist/types/config/src/index.d.ts.map +1 -1
- package/dist/types/config/src/mappers/appshell.config.d.ts +2 -2
- package/dist/types/config/src/mappers/appshell.config.d.ts.map +1 -1
- package/dist/types/config/src/register.d.ts +1 -1
- package/dist/types/config/src/register.d.ts.map +1 -1
- package/dist/types/config/src/types.d.ts +16 -0
- package/dist/types/config/src/types.d.ts.map +1 -1
- package/dist/types/config/src/utils/load.d.ts.map +1 -1
- package/dist/types/config/src/utils/loadJson.d.ts +5 -1
- package/dist/types/config/src/utils/loadJson.d.ts.map +1 -1
- package/dist/types/config/src/validators/{appshell.manifest.d.ts → AppshellGlobalConfigValidator.d.ts} +1 -1
- package/dist/types/config/src/validators/AppshellGlobalConfigValidator.d.ts.map +1 -0
- package/dist/types/config/src/validators/{appshell.metadata.d.ts → AppshellManifestValidator.d.ts} +1 -1
- package/dist/types/config/src/validators/AppshellManifestValidator.d.ts.map +1 -0
- package/dist/types/config/src/validators/{appshell.config.d.ts → AppshellTemplateValidator.d.ts} +1 -1
- package/dist/types/config/src/validators/AppshellTemplateValidator.d.ts.map +1 -0
- package/dist/types/config/src/validators/index.d.ts +3 -5
- package/dist/types/config/src/validators/index.d.ts.map +1 -1
- package/dist/types/loader/src/remoteLoader.d.ts +3 -2
- package/dist/types/loader/src/remoteLoader.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/remoteLoader.ts +11 -4
- package/dist/types/config/src/generate.index.d.ts +0 -4
- package/dist/types/config/src/generate.index.d.ts.map +0 -1
- package/dist/types/config/src/generate.metadata.d.ts +0 -4
- package/dist/types/config/src/generate.metadata.d.ts.map +0 -1
- package/dist/types/config/src/validators/appshell.config.d.ts.map +0 -1
- package/dist/types/config/src/validators/appshell.index.d.ts +0 -4
- package/dist/types/config/src/validators/appshell.index.d.ts.map +0 -1
- package/dist/types/config/src/validators/appshell.manifest.d.ts.map +0 -1
- package/dist/types/config/src/validators/appshell.metadata.d.ts.map +0 -1
- package/dist/types/config/src/validators/merge.manifests.d.ts +0 -4
- package/dist/types/config/src/validators/merge.manifests.d.ts.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,28 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [0.2.0-alpha.1](https://github.com/navaris/appshell/compare/@appshell/loader@0.2.0-alpha.0...@appshell/loader@0.2.0-alpha.1) (2023-08-28)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* environment variable override for federated components ([#27](https://github.com/navaris/appshell/issues/27)) ([d32de0b](https://github.com/navaris/appshell/commit/d32de0b0d1cbb1792715e1b363c80ed4600df155))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# [0.2.0-alpha.0](https://github.com/navaris/appshell/compare/@appshell/loader@0.1.0...@appshell/loader@0.2.0-alpha.0) (2023-08-23)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
* consolidate runtime artifacts ([#26](https://github.com/navaris/appshell/issues/26)) ([a29479a](https://github.com/navaris/appshell/commit/a29479a49f0c5ec1273c9f8e4c7384096f2d4ba0))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
6
28
|
# [0.1.0](https://github.com/navaris/appshell/compare/@appshell/loader@0.1.0-alpha.1...@appshell/loader@0.1.0) (2023-07-11)
|
|
7
29
|
|
|
8
30
|
|
package/README.md
CHANGED
|
@@ -35,24 +35,24 @@ or
|
|
|
35
35
|
pnpm add -D @appshell/loader
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
The default export from this package is the loader function. It is given
|
|
38
|
+
The default export from this package is the loader function. It is given the global appshell configuration, and returns an async function that can be called to dynamically load federated components.
|
|
39
39
|
|
|
40
40
|
```ts
|
|
41
41
|
import componentLoader from '@appshell/loader';
|
|
42
42
|
|
|
43
|
-
const load = componentLoader(
|
|
43
|
+
const load = componentLoader(config);
|
|
44
44
|
|
|
45
45
|
const Component = load<MyComponent>('MyModule/MyComponent');
|
|
46
46
|
|
|
47
47
|
render(<Component />);
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
**Where does the
|
|
50
|
+
**Where does the global appshell configuration come from?**
|
|
51
51
|
|
|
52
52
|
> See [@appshell/cli](https://www.npmjs.com/package/@appshell/cli)
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
|
-
appshell generate
|
|
55
|
+
appshell generate global-config --registry appshell_registry_path
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
**Do you have any framework specific loaders?**
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** @jest-environment jsdom */
|
|
2
|
-
import {
|
|
2
|
+
import { AppshellManifest } from '@appshell/config';
|
|
3
|
+
import { AppshellGlobalConfig } from '@appshell/config/src/types';
|
|
3
4
|
import fetch, { enableFetchMocks } from 'jest-fetch-mock';
|
|
4
5
|
import * as fetchDynamicScript from '../src/fetchDynamicScript';
|
|
5
6
|
import * as loadFederatedComponent from '../src/loadFederatedComponent';
|
|
@@ -23,10 +24,24 @@ describe('remoteLoader', () => {
|
|
|
23
24
|
},
|
|
24
25
|
},
|
|
25
26
|
modules: {},
|
|
26
|
-
environment: {
|
|
27
|
+
environment: {
|
|
28
|
+
TestModule: {
|
|
29
|
+
ENV_VAR_A: 'Original value for A',
|
|
30
|
+
},
|
|
31
|
+
},
|
|
27
32
|
};
|
|
28
|
-
const
|
|
29
|
-
|
|
33
|
+
const config: AppshellGlobalConfig = {
|
|
34
|
+
index: {
|
|
35
|
+
'TestModule/TestComponent': 'http://test.com/appshell.manifest.json',
|
|
36
|
+
},
|
|
37
|
+
metadata: {},
|
|
38
|
+
overrides: {
|
|
39
|
+
environment: {
|
|
40
|
+
TestModule: {
|
|
41
|
+
ENV_VAR_A: 'New value for A',
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
30
45
|
};
|
|
31
46
|
|
|
32
47
|
beforeEach(() => {
|
|
@@ -42,7 +57,7 @@ describe('remoteLoader', () => {
|
|
|
42
57
|
.spyOn(loadFederatedComponent, 'default')
|
|
43
58
|
.mockResolvedValue(Promise.resolve(ExpectedComponent));
|
|
44
59
|
|
|
45
|
-
const loadRemote = remoteLoader(
|
|
60
|
+
const loadRemote = remoteLoader(config);
|
|
46
61
|
const [ActualComponent, actualManifest] = await loadRemote('TestModule/TestComponent');
|
|
47
62
|
|
|
48
63
|
expect(ActualComponent).toEqual(ExpectedComponent);
|
|
@@ -58,7 +73,7 @@ describe('remoteLoader', () => {
|
|
|
58
73
|
.spyOn(loadFederatedComponent, 'default')
|
|
59
74
|
.mockResolvedValue(Promise.resolve(ExpectedComponent));
|
|
60
75
|
|
|
61
|
-
const loadRemote = remoteLoader(
|
|
76
|
+
const loadRemote = remoteLoader(config);
|
|
62
77
|
|
|
63
78
|
await loadRemote('TestModule/TestComponent');
|
|
64
79
|
await loadRemote('TestModule/TestComponent');
|
|
@@ -67,11 +82,26 @@ describe('remoteLoader', () => {
|
|
|
67
82
|
expect(fetchDynamicScriptSpy).toHaveBeenCalledTimes(1);
|
|
68
83
|
});
|
|
69
84
|
|
|
85
|
+
it('should apply overridden environment values', async () => {
|
|
86
|
+
const ExpectedComponent = () => 'test component';
|
|
87
|
+
jest.spyOn(fetchDynamicScript, 'default').mockReturnValueOnce(Promise.resolve(true));
|
|
88
|
+
jest
|
|
89
|
+
.spyOn(loadFederatedComponent, 'default')
|
|
90
|
+
.mockResolvedValue(Promise.resolve(ExpectedComponent));
|
|
91
|
+
|
|
92
|
+
const loadRemote = remoteLoader(config);
|
|
93
|
+
|
|
94
|
+
await loadRemote('TestModule/TestComponent');
|
|
95
|
+
|
|
96
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
97
|
+
expect(window.__appshell_env__TestModule).toMatchObject({ ENV_VAR_A: 'New value for A' });
|
|
98
|
+
});
|
|
99
|
+
|
|
70
100
|
it('should throw if remote key is not found in the registry', async () => {
|
|
71
101
|
const ExpectedComponent = () => 'test component';
|
|
72
102
|
jest.spyOn(loadFederatedComponent, 'default').mockResolvedValue(ExpectedComponent);
|
|
73
103
|
|
|
74
|
-
const loadRemote = remoteLoader(
|
|
104
|
+
const loadRemote = remoteLoader(config);
|
|
75
105
|
|
|
76
106
|
await expect(loadRemote('TestModule/DoesNotExist')).rejects.toThrow(
|
|
77
107
|
/Remote resource not found in registry/i,
|
|
@@ -82,7 +112,7 @@ describe('remoteLoader', () => {
|
|
|
82
112
|
jest.spyOn(fetchDynamicScript, 'default').mockReturnValueOnce(Promise.resolve(true));
|
|
83
113
|
jest.spyOn(loadFederatedComponent, 'default').mockRejectedValue(new Error('failed'));
|
|
84
114
|
|
|
85
|
-
const loadRemote = remoteLoader(
|
|
115
|
+
const loadRemote = remoteLoader(config);
|
|
86
116
|
|
|
87
117
|
await expect(loadRemote('TestModule/TestComponent')).rejects.toThrow(
|
|
88
118
|
/Failed to load component/i,
|
package/dist/main.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,o){if("object"==typeof exports&&"object"==typeof module)module.exports=o();else if("function"==typeof define&&define.amd)define([],o);else{var t=o();for(var r in t)("object"==typeof exports?exports:e)[r]=t[r]}}(self,(()=>(()=>{"use strict";var e={d:(o,t)=>{for(var r in t)e.o(t,r)&&!e.o(o,r)&&Object.defineProperty(o,r,{enumerable:!0,get:t[r]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}};(()=>{e.S={};var o={},t={};e.I=(r,n)=>{n||(n=[]);var a=t[r];if(a||(a=t[r]={}),!(n.indexOf(a)>=0)){if(n.push(a),o[r])return o[r];e.o(e.S,r)||(e.S[r]={}),e.S[r];var d=[];return o[r]=d.length?Promise.all(d).then((()=>o[r]=1)):1}}})();var o={};e.r(o),e.d(o,{default:()=>a});const t=new Set,r=new Set,n=new Map,a=o=>async a=>{let d;const
|
|
1
|
+
!function(e,o){if("object"==typeof exports&&"object"==typeof module)module.exports=o();else if("function"==typeof define&&define.amd)define([],o);else{var t=o();for(var r in t)("object"==typeof exports?exports:e)[r]=t[r]}}(self,(()=>(()=>{"use strict";var e={d:(o,t)=>{for(var r in t)e.o(t,r)&&!e.o(o,r)&&Object.defineProperty(o,r,{enumerable:!0,get:t[r]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}};(()=>{e.S={};var o={},t={};e.I=(r,n)=>{n||(n=[]);var a=t[r];if(a||(a=t[r]={}),!(n.indexOf(a)>=0)){if(n.push(a),o[r])return o[r];e.o(e.S,r)||(e.S[r]={}),e.S[r];var d=[];return o[r]=d.length?Promise.all(d).then((()=>o[r]=1)):1}}})();var o={};e.r(o),e.d(o,{default:()=>a});const t=new Set,r=new Set,n=new Map,a=o=>async a=>{let d;const i=o.index[a];if(!i)throw new Error(`Remote resource not found in registry. Expected: ${a}`);try{const c=await(async e=>{if(n.has(e))return n.get(e);n.set(e,void 0);const o=await fetch(e);if(o.ok)return o.json();const t=await o.text();throw new Error(`Failed to get manifest from ${e}. ${t}`)})(i);if(c){n.set(i,c);const s=c.remotes[a],l=c.environment[s.scope]||{},f=o.overrides?.environment[s.scope]||{};if(window[`__appshell_env__${s.scope}`]={...l,...f},r.has(s.remoteEntryUrl)||await(async e=>{const o=document.createElement("script");return new Promise(((r,n)=>{t.has(e)?r(!1):(t.add(e),o.src=e,o.type="text/javascript",o.async=!0,o.onload=()=>{console.debug(`Remote entry fetched from '${e}'.`),r(!0)},o.onerror=()=>{const o=`Failed to fetch remote entry from '${e}'.`;console.error(o),n(o)},document.head.appendChild(o))})).finally((()=>{document.head.contains(o)&&document.head.removeChild(o)}))})(s.remoteEntryUrl))return r.add(s.remoteEntryUrl),d=await(async(o,t,r="default")=>{console.debug(`loading federated component: { scope: ${o}, module: ${t}, shareScope: ${r} }`),await e.I(r);const n=window[o];if(!n)throw new Error(`Failed to find module container ${o}`);await n.init(e.S[r]);const a=await n.get(t);if(!a)throw new Error(`Invalid factory produced by container for module ${t}.`);const d=a();return console.debug(`federated component loaded: { scope: ${o}, module: ${t}, shareScope: ${r} }`),d.default})(s.scope,s.module,s.shareScope),[d,c]}return[null,null]}catch(e){throw new Error(`Failed to load component '${a}'. ${e?.toString()}`)}};return o})()));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deregister.d.ts","sourceRoot":"","sources":["../../../../../config/src/deregister.ts"],"names":[],"mappings":"qCAoGkC,MAAM,YAAY,MAAM;AAA1D,wBAeE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AppshellGlobalConfig } from './types';
|
|
2
|
+
type GenerateGlobalConfigOptions = {
|
|
3
|
+
insecure: boolean;
|
|
4
|
+
};
|
|
5
|
+
declare const _default: (registries: string[], options?: GenerateGlobalConfigOptions) => Promise<AppshellGlobalConfig>;
|
|
6
|
+
export default _default;
|
|
7
|
+
//# sourceMappingURL=generate.global-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.global-config.d.ts","sourceRoot":"","sources":["../../../../../config/src/generate.global-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAK/C,KAAK,2BAA2B,GAAG;IACjC,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;qCAGY,MAAM,EAAE,YACX,2BAA2B,KACnC,QAAQ,oBAAoB,CAAC;AAHhC,wBAuCE"}
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
* @appshell/config package API
|
|
3
3
|
*/
|
|
4
4
|
export { default as configmap } from './configmap';
|
|
5
|
+
export { default as deregister } from './deregister';
|
|
5
6
|
export { default as generateEnv } from './generate.env';
|
|
6
|
-
export { default as
|
|
7
|
+
export { default as generateGlobalConfig } from './generate.global-config';
|
|
7
8
|
export { default as generateManifest } from './generate.manifest';
|
|
8
|
-
export { default as generateMetadata } from './generate.metadata';
|
|
9
9
|
export { default as register } from './register';
|
|
10
|
-
export type { AppshellConfig, AppshellConfigRemote, AppshellIndex, AppshellManifest, AppshellRemote, Metadata, Schema, } from './types';
|
|
10
|
+
export type { AppshellConfig, AppshellConfigRemote, AppshellGlobalConfig, AppshellIndex, AppshellManifest, AppshellRemote, AppshellTemplate, Metadata, Schema, } from './types';
|
|
11
11
|
export * as utils from './utils';
|
|
12
12
|
export * as validators from './validators';
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../config/src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../config/src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,QAAQ,EACR,MAAM,GACP,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const toAppshellManifest: <TMetadata extends Record<string, unknown>>(
|
|
1
|
+
import { AppshellManifest, AppshellTemplate, ConfigMap } from '../types';
|
|
2
|
+
export declare const toAppshellManifest: <TMetadata extends Record<string, unknown>>(template: AppshellTemplate, args: ConfigMap) => AppshellManifest<TMetadata>;
|
|
3
3
|
//# sourceMappingURL=appshell.config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appshell.config.d.ts","sourceRoot":"","sources":["../../../../../../config/src/mappers/appshell.config.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"appshell.config.d.ts","sourceRoot":"","sources":["../../../../../../config/src/mappers/appshell.config.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,gBAAgB,EAEhB,gBAAgB,EAChB,SAAS,EACV,MAAM,UAAU,CAAC;AA6DlB,eAAO,MAAM,kBAAkB,wDACnB,gBAAgB,QACpB,SAAS,gCAQhB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { AppshellManifest } from './types';
|
|
2
|
-
declare const _default: (manifest: AppshellManifest,
|
|
2
|
+
declare const _default: (manifest: AppshellManifest, registryPathOrUrl: string) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
4
4
|
//# sourceMappingURL=register.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../../../config/src/register.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../../../config/src/register.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,gBAAgB,EAAmB,MAAM,SAAS,CAAC;mCAclD,gBAAgB,qBAAqB,MAAM;AAA3E,wBAuCE"}
|
|
@@ -11,10 +11,17 @@ export type AppshellConfigRemote<TMetadata = Metadata> = {
|
|
|
11
11
|
metadata: TMetadata;
|
|
12
12
|
};
|
|
13
13
|
export type AppshellConfig<TMetadata = Metadata> = {
|
|
14
|
+
name?: string;
|
|
15
|
+
remotes?: Record<string, AppshellConfigRemote<TMetadata>>;
|
|
16
|
+
environment?: Record<string, unknown>;
|
|
17
|
+
overrides?: AppshellOverrides;
|
|
18
|
+
};
|
|
19
|
+
export type AppshellTemplate<TMetadata = Metadata> = {
|
|
14
20
|
name?: string;
|
|
15
21
|
remotes?: Record<string, AppshellConfigRemote<TMetadata>>;
|
|
16
22
|
module: ModuleFederationPluginOptions;
|
|
17
23
|
environment?: Record<string, unknown>;
|
|
24
|
+
overrides?: AppshellOverrides;
|
|
18
25
|
};
|
|
19
26
|
/** Appshell manifest types */
|
|
20
27
|
export type AppshellRemote<TMetadata = Metadata> = {
|
|
@@ -26,13 +33,22 @@ export type AppshellRemote<TMetadata = Metadata> = {
|
|
|
26
33
|
shareScope?: string;
|
|
27
34
|
metadata: TMetadata;
|
|
28
35
|
};
|
|
36
|
+
export type AppshellOverrides = {
|
|
37
|
+
environment: Record<string, Record<string, string | number | undefined>>;
|
|
38
|
+
};
|
|
29
39
|
export type AppshellManifest<TMetadata = Metadata> = {
|
|
30
40
|
remotes: Record<string, AppshellRemote<TMetadata>>;
|
|
31
41
|
modules: Record<string, ModuleFederationPluginOptions>;
|
|
32
42
|
environment: Record<string, Record<string, string | number | undefined>>;
|
|
43
|
+
overrides?: AppshellOverrides;
|
|
33
44
|
};
|
|
34
45
|
export type AppshellIndex = Record<string, string>;
|
|
35
46
|
export type Metadata = Record<string, unknown>;
|
|
47
|
+
export type AppshellGlobalConfig<TMetadata = Metadata> = {
|
|
48
|
+
index: AppshellIndex;
|
|
49
|
+
metadata?: Record<string, TMetadata>;
|
|
50
|
+
overrides?: AppshellOverrides;
|
|
51
|
+
};
|
|
36
52
|
/**
|
|
37
53
|
* Advanced configuration for modules that should be exposed by this container.
|
|
38
54
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../config/src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEpE,MAAM,MAAM,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;AAE7D,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAG/C,MAAM,MAAM,oBAAoB,CAAC,SAAS,GAAG,QAAQ,IAAI;IACvD,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,SAAS,GAAG,QAAQ,IAAI;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1D,MAAM,EAAE,6BAA6B,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../config/src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../../../../../config/src/utils/load.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,QAAA,MAAM,IAAI,wBAAyB,MAAM,
|
|
1
|
+
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../../../../../config/src/utils/load.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,QAAA,MAAM,IAAI,wBAAyB,MAAM,YAUxC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,OAAO,sBAAuB,MAAM,EAAE,cAA+C,CAAC;AAEnG,eAAe,IAAI,CAAC"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
type LoadJsonOptions = {
|
|
2
|
+
insecure: boolean;
|
|
3
|
+
target: string | RegExp;
|
|
4
|
+
};
|
|
5
|
+
declare const _default: <T = Record<string, unknown>>(jsonPathOrUrl: string, options?: LoadJsonOptions) => Promise<T[]>;
|
|
2
6
|
export default _default;
|
|
3
7
|
//# sourceMappingURL=loadJson.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadJson.d.ts","sourceRoot":"","sources":["../../../../../../config/src/utils/loadJson.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loadJson.d.ts","sourceRoot":"","sources":["../../../../../../config/src/utils/loadJson.ts"],"names":[],"mappings":"AAOA,KAAK,eAAe,GAAG;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB,CAAC;qEAkCe,MAAM,YACZ,eAAe;AAF1B,wBAUE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppshellGlobalConfigValidator.d.ts","sourceRoot":"","sources":["../../../../../../config/src/validators/AppshellGlobalConfigValidator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,eAAe,EAAE,MAAM,UAAU,CAAC;;AAEjE,wBAKqB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppshellManifestValidator.d.ts","sourceRoot":"","sources":["../../../../../../config/src/validators/AppshellManifestValidator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAoB,eAAe,EAAE,MAAM,UAAU,CAAC;;AAyB7D,wBAkBqB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppshellTemplateValidator.d.ts","sourceRoot":"","sources":["../../../../../../config/src/validators/AppshellTemplateValidator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAoB,eAAe,EAAE,MAAM,UAAU,CAAC;;AAuB7D,wBAkBqB"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
export { default as
|
|
2
|
-
export { default as
|
|
3
|
-
export { default as
|
|
4
|
-
export { default as appshell_metadata } from './appshell.metadata';
|
|
5
|
-
export { default as merge_manifests } from './merge.manifests';
|
|
1
|
+
export { default as AppshellGlobalConfigValidator } from './AppshellGlobalConfigValidator';
|
|
2
|
+
export { default as AppshellManifestValidator } from './AppshellManifestValidator';
|
|
3
|
+
export { default as AppshellTemplateValidator } from './AppshellTemplateValidator';
|
|
6
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../config/src/validators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../config/src/validators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
|
|
1
|
+
import { type AppshellManifest } from '@appshell/config';
|
|
2
|
+
import { AppshellGlobalConfig } from 'packages/config/src/types';
|
|
3
|
+
declare const _default: (config: AppshellGlobalConfig) => <TComponent>(key: string) => Promise<readonly [TComponent, AppshellManifest<import("@appshell/config").Metadata>] | readonly [null, null]>;
|
|
3
4
|
export default _default;
|
|
4
5
|
//# sourceMappingURL=remoteLoader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remoteLoader.d.ts","sourceRoot":"","sources":["../../../../src/remoteLoader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"remoteLoader.d.ts","sourceRoot":"","sources":["../../../../src/remoteLoader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;iCAwBzC,oBAAoB,uBAClB,MAAM;AADhC,wBA2CI"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@appshell/loader",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0-alpha.1",
|
|
4
4
|
"description": "Utility for loading federated components",
|
|
5
5
|
"main": "dist/main.js",
|
|
6
6
|
"types": "dist/loader/src/index.d.ts",
|
|
@@ -25,5 +25,5 @@
|
|
|
25
25
|
"appshell"
|
|
26
26
|
],
|
|
27
27
|
"license": "MIT",
|
|
28
|
-
"gitHead": "
|
|
28
|
+
"gitHead": "f87947d0d8b10f74461f1b772d79f36f5bdce9e1"
|
|
29
29
|
}
|
package/src/remoteLoader.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/* eslint-disable no-underscore-dangle */
|
|
2
|
-
import { type
|
|
2
|
+
import { type AppshellManifest } from '@appshell/config';
|
|
3
|
+
import { AppshellGlobalConfig } from 'packages/config/src/types';
|
|
3
4
|
import fetchDynamicScript from './fetchDynamicScript';
|
|
4
5
|
import loadFederatedComponent from './loadFederatedComponent';
|
|
5
6
|
|
|
@@ -23,10 +24,10 @@ const fetchManifest = async (url: string): Promise<AppshellManifest | undefined>
|
|
|
23
24
|
throw new Error(`Failed to get manifest from ${url}. ${message}`);
|
|
24
25
|
};
|
|
25
26
|
|
|
26
|
-
export default (
|
|
27
|
+
export default (config: AppshellGlobalConfig) =>
|
|
27
28
|
async <TComponent>(key: string) => {
|
|
28
29
|
let Component: TComponent;
|
|
29
|
-
const manifestUrl = index[key];
|
|
30
|
+
const manifestUrl = config.index[key];
|
|
30
31
|
if (!manifestUrl) {
|
|
31
32
|
throw new Error(`Remote resource not found in registry. Expected: ${key}`);
|
|
32
33
|
}
|
|
@@ -38,7 +39,13 @@ export default (index: AppshellIndex) =>
|
|
|
38
39
|
fetchedManifestCache.set(manifestUrl, manifest);
|
|
39
40
|
|
|
40
41
|
const remote = manifest.remotes[key];
|
|
41
|
-
|
|
42
|
+
|
|
43
|
+
const environment = manifest.environment[remote.scope] || {};
|
|
44
|
+
const overrides = config.overrides?.environment[remote.scope] || {};
|
|
45
|
+
window[`__appshell_env__${remote.scope}`] = {
|
|
46
|
+
...environment,
|
|
47
|
+
...overrides,
|
|
48
|
+
};
|
|
42
49
|
|
|
43
50
|
const loaded =
|
|
44
51
|
fetchedScriptCache.has(remote.remoteEntryUrl) ||
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate.index.d.ts","sourceRoot":"","sources":["../../../../../config/src/generate.index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;qCAKN,MAAM,EAAE,KAAG,QAAQ,aAAa,CAAC;AAAnE,wBAyBE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate.metadata.d.ts","sourceRoot":"","sources":["../../../../../config/src/generate.metadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;mEAK6B,MAAM,EAAE;AAAxE,wBAyBE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"appshell.config.d.ts","sourceRoot":"","sources":["../../../../../../config/src/validators/appshell.config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkB,eAAe,EAAE,MAAM,UAAU,CAAC;;AAuB3D,wBAkBqB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"appshell.index.d.ts","sourceRoot":"","sources":["../../../../../../config/src/validators/appshell.index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,eAAe,EAAE,MAAM,UAAU,CAAC;;AAE1D,wBAKqB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"appshell.manifest.d.ts","sourceRoot":"","sources":["../../../../../../config/src/validators/appshell.manifest.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,eAAe,EAAE,MAAM,UAAU,CAAC;;AAyB7D,wBAkBqB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"appshell.metadata.d.ts","sourceRoot":"","sources":["../../../../../../config/src/validators/appshell.metadata.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,eAAe,EAAE,MAAM,UAAU,CAAC;;AAE1D,wBAKqB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"merge.manifests.d.ts","sourceRoot":"","sources":["../../../../../../config/src/validators/merge.manifests.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoB,eAAe,EAAE,MAAM,UAAU,CAAC;;AAE7D,wBAKqB"}
|