@granite-js/micro-frontend 2.5.4 → 3.0.0
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 +13 -0
- package/README.md +20 -6
- package/dist/module/host/PendingHostComponent.js.map +1 -1
- package/dist/module/host/index.js.map +1 -1
- package/dist/module/host/resolveParams.js.map +1 -1
- package/dist/module/index.js.map +1 -1
- package/dist/module/next/README.md +15 -0
- package/dist/module/next/index.js +109 -0
- package/dist/module/next/index.js.map +1 -0
- package/dist/module/next/types.js +4 -0
- package/dist/module/next/types.js.map +1 -0
- package/dist/module/plugin/microFrontendPlugin.js +4 -5
- package/dist/module/plugin/microFrontendPlugin.js.map +1 -1
- package/dist/module/plugin-utils/disposeBabelPlugin.js.map +1 -0
- package/dist/module/plugin-utils/disposeTransform.js.map +1 -0
- package/dist/module/{plugin → plugin-utils}/globalContextScript.js.map +1 -1
- package/dist/module/plugin-utils/intoShared.js.map +1 -0
- package/dist/module/{plugin → plugin-utils}/prelude.js +4 -2
- package/dist/module/plugin-utils/prelude.js.map +1 -0
- package/dist/module/runtime/containerModuleExposure.js +1 -37
- package/dist/module/runtime/containerModuleExposure.js.map +1 -1
- package/dist/module/runtime/legacyEsm.js +41 -0
- package/dist/module/runtime/legacyEsm.js.map +1 -0
- package/dist/module/runtime/registry.js +3 -12
- package/dist/module/runtime/registry.js.map +1 -1
- package/dist/module/runtime/sharedModule.js +22 -0
- package/dist/module/runtime/sharedModule.js.map +1 -0
- package/dist/module/session/MicroFrontendSessionContext.js.map +1 -1
- package/dist/module/specs/PortalHostViewNativeComponent.ts +2 -2
- package/dist/module/specs/PortalViewNativeComponent.ts +2 -2
- package/dist/typescript/host/index.d.ts +1 -1
- package/dist/typescript/index.d.ts +1 -1
- package/dist/typescript/next/index.d.ts +4 -0
- package/dist/typescript/next/types.d.ts +6 -0
- package/dist/typescript/plugin-utils/intoShared.d.ts +2 -0
- package/dist/typescript/plugin-utils/prelude.d.ts +11 -0
- package/dist/typescript/runtime/legacyEsm.d.ts +1 -0
- package/dist/typescript/runtime/sharedModule.d.ts +4 -0
- package/dist/typescript/specs/PortalHostViewNativeComponent.d.ts +1 -1
- package/dist/typescript/specs/PortalViewNativeComponent.d.ts +1 -1
- package/package.json +14 -5
- package/react-native.config.js +1 -4
- package/src/host/PendingHostComponent.tsx +10 -2
- package/src/host/index.ts +1 -4
- package/src/host/resolveParams.ts +1 -1
- package/src/host/types.ts +1 -3
- package/src/index.ts +1 -4
- package/src/next/README.md +15 -0
- package/src/next/index.ts +107 -0
- package/src/next/types.ts +7 -0
- package/src/plugin/microFrontendPlugin.ts +5 -6
- package/src/{plugin → plugin-utils}/intoShared.ts +1 -2
- package/src/{plugin → plugin-utils}/prelude.ts +14 -47
- package/src/runtime/containerModuleExposure.ts +1 -39
- package/src/runtime/legacyEsm.ts +39 -0
- package/src/runtime/registry.ts +3 -18
- package/src/runtime/sharedModule.ts +26 -0
- package/src/session/MicroFrontendSessionContext.tsx +1 -3
- package/src/specs/PortalHostViewNativeComponent.ts +2 -2
- package/src/specs/PortalViewNativeComponent.ts +2 -2
- package/dist/module/plugin/disposeBabelPlugin.js.map +0 -1
- package/dist/module/plugin/disposeTransform.js.map +0 -1
- package/dist/module/plugin/intoShared.js.map +0 -1
- package/dist/module/plugin/prelude.js.map +0 -1
- package/dist/typescript/plugin/intoShared.d.ts +0 -3
- package/dist/typescript/plugin/prelude.d.ts +0 -6
- /package/dist/module/{plugin → plugin-utils}/disposeBabelPlugin.js +0 -0
- /package/dist/module/{plugin → plugin-utils}/disposeTransform.js +0 -0
- /package/dist/module/{plugin → plugin-utils}/globalContextScript.js +0 -0
- /package/dist/module/{plugin → plugin-utils}/intoShared.js +0 -0
- /package/dist/typescript/{plugin → plugin-utils}/disposeBabelPlugin.d.ts +0 -0
- /package/dist/typescript/{plugin → plugin-utils}/disposeTransform.d.ts +0 -0
- /package/dist/typescript/{plugin → plugin-utils}/globalContextScript.d.ts +0 -0
- /package/src/{plugin → plugin-utils}/disposeBabelPlugin.ts +0 -0
- /package/src/{plugin → plugin-utils}/disposeTransform.ts +0 -0
- /package/src/{plugin → plugin-utils}/globalContextScript.ts +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @granite-js/micro-frontend
|
|
2
2
|
|
|
3
|
+
## 3.0.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 586459d: Fix shared module compatibility with legacy consumers.
|
|
8
|
+
- @granite-js/utils@3.0.0
|
|
9
|
+
|
|
10
|
+
## 2.5.5
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- @granite-js/utils@2.5.5
|
|
15
|
+
|
|
3
16
|
## 2.5.4
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -59,8 +59,10 @@ Fabric components.
|
|
|
59
59
|
|
|
60
60
|
## Build plugin
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
Configure the plugin in `rollipop.config.ts`. The `appName` identifies the
|
|
63
|
+
bundle in the shared runtime registry. See the
|
|
64
|
+
[Rollipop configuration documentation](https://rollipop.dev/docs/get-started/configuration)
|
|
65
|
+
for other build options.
|
|
64
66
|
|
|
65
67
|
The generated runtime prelude uses a package-specific file name so this plugin
|
|
66
68
|
can coexist with the legacy `@granite-js/plugin-micro-frontend` plugin during a
|
|
@@ -69,12 +71,12 @@ gradual migration. This preserves both plugins' shared-module registrations.
|
|
|
69
71
|
```ts
|
|
70
72
|
// Remote app
|
|
71
73
|
import { microFrontend } from '@granite-js/micro-frontend/plugin';
|
|
72
|
-
import { defineConfig } from '
|
|
74
|
+
import { defineConfig } from 'rollipop';
|
|
73
75
|
|
|
74
76
|
export default defineConfig({
|
|
75
|
-
appName: 'cart',
|
|
76
77
|
plugins: [
|
|
77
78
|
microFrontend({
|
|
79
|
+
appName: 'cart',
|
|
78
80
|
exposes: {
|
|
79
81
|
'./App': './src/_app.tsx',
|
|
80
82
|
},
|
|
@@ -87,12 +89,12 @@ export default defineConfig({
|
|
|
87
89
|
```ts
|
|
88
90
|
// Host app
|
|
89
91
|
import { microFrontend } from '@granite-js/micro-frontend/plugin';
|
|
90
|
-
import { defineConfig } from '
|
|
92
|
+
import { defineConfig } from 'rollipop';
|
|
91
93
|
|
|
92
94
|
export default defineConfig({
|
|
93
|
-
appName: 'shared',
|
|
94
95
|
plugins: [
|
|
95
96
|
microFrontend({
|
|
97
|
+
appName: 'shared',
|
|
96
98
|
shared: {
|
|
97
99
|
react: { eager: true },
|
|
98
100
|
'react-native': { eager: true },
|
|
@@ -105,6 +107,18 @@ export default defineConfig({
|
|
|
105
107
|
When evaluated, a remote bundle registers its `appName` container and exposed
|
|
106
108
|
modules in the shared runtime registry.
|
|
107
109
|
|
|
110
|
+
### Mpack (deprecated)
|
|
111
|
+
|
|
112
|
+
```ts
|
|
113
|
+
import { microFrontend } from '@granite-js/micro-frontend/plugin-mpack';
|
|
114
|
+
import { defineConfig } from '@granite-js/react-native/config';
|
|
115
|
+
|
|
116
|
+
export default defineConfig({
|
|
117
|
+
appName: 'cart',
|
|
118
|
+
plugins: [microFrontend({ shared: ['react', 'react-native'] })],
|
|
119
|
+
});
|
|
120
|
+
```
|
|
121
|
+
|
|
108
122
|
## Registry migration contract
|
|
109
123
|
|
|
110
124
|
### As-is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useState","useSyncExternalStore","StyleSheet","View","getPendingHostComponentStoreVersion","getIsPendingHostComponentHidden","resetPendingHostComponent","resolvePendingHostComponent","subscribePendingHostComponentStore","jsx","_jsx","useIsPendingHostComponentHidden","usePendingHostComponentStoreVersion","useResolvedPendingHostComponent","url","PendingHostComponent","resolvedPendingHostComponent","isHidden","Component","component","accessibilityElementsHidden","importantForAccessibility","pointerEvents","style","styles","root","children","params","usePendingHostComponentController","setUrl","isPresent","setIsPresent","present","nextUrl","wasPresent","dismiss","create","absoluteFillObject"],"sourceRoot":"../../../src","sources":["host/PendingHostComponent.tsx"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,QAAQ,EAAEC,oBAAoB,QAAQ,OAAO;AACnE,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SACEC,mCAAmC,EACnCC,+BAA+B,EAC/BC,yBAAyB,EACzBC,2BAA2B,EAC3BC,kCAAkC,QAC7B,gCAA6B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAcrC,OAAO,SAASC,+BAA+BA,CAAA,EAAG;EAChD,OAAOV,oBAAoB,
|
|
1
|
+
{"version":3,"names":["useCallback","useState","useSyncExternalStore","StyleSheet","View","getPendingHostComponentStoreVersion","getIsPendingHostComponentHidden","resetPendingHostComponent","resolvePendingHostComponent","subscribePendingHostComponentStore","jsx","_jsx","useIsPendingHostComponentHidden","usePendingHostComponentStoreVersion","useResolvedPendingHostComponent","url","PendingHostComponent","resolvedPendingHostComponent","isHidden","Component","component","accessibilityElementsHidden","importantForAccessibility","pointerEvents","style","styles","root","children","params","usePendingHostComponentController","setUrl","isPresent","setIsPresent","present","nextUrl","wasPresent","dismiss","create","absoluteFillObject"],"sourceRoot":"../../../src","sources":["host/PendingHostComponent.tsx"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,QAAQ,EAAEC,oBAAoB,QAAQ,OAAO;AACnE,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SACEC,mCAAmC,EACnCC,+BAA+B,EAC/BC,yBAAyB,EACzBC,2BAA2B,EAC3BC,kCAAkC,QAC7B,gCAA6B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAcrC,OAAO,SAASC,+BAA+BA,CAAA,EAAG;EAChD,OAAOV,oBAAoB,CACzBO,kCAAkC,EAClCH,+BAA+B,EAC/BA,+BACF,CAAC;AACH;AAEA,SAASO,mCAAmCA,CAAA,EAAG;EAC7C,OAAOX,oBAAoB,CACzBO,kCAAkC,EAClCJ,mCAAmC,EACnCA,mCACF,CAAC;AACH;AAEA,OAAO,SAASS,+BAA+BA,CAACC,GAA8B,EAAE;EAC9EF,mCAAmC,CAAC,CAAC;EAErC,IAAIE,GAAG,IAAI,IAAI,EAAE;IACf,OAAO,IAAI;EACb;EAEA,OAAOP,2BAA2B,CAACO,GAAG,CAAC;AACzC;AAEA,OAAO,SAASC,oBAAoBA,CAAC;EAAED;AAA+B,CAAC,EAAE;EACvE,MAAME,4BAA4B,GAAGH,+BAA+B,CAACC,GAAG,CAAC;EACzE,MAAMG,QAAQ,GAAGN,+BAA+B,CAAC,CAAC;EAElD,IAAIK,4BAA4B,IAAI,IAAI,IAAIC,QAAQ,EAAE;IACpD,OAAO,IAAI;EACb;EAEA,MAAMC,SAAS,GAAGF,4BAA4B,CAACG,SAAS;EAExD,oBACET,IAAA,CAACP,IAAI;IACHiB,2BAA2B,EAAE,IAAK;IAClCC,yBAAyB,EAAC,qBAAqB;IAC/CC,aAAa,EAAC,MAAM;IACpBC,KAAK,EAAEC,MAAM,CAACC,IAAK;IAAAC,QAAA,eAEnBhB,IAAA,CAACQ,SAAS;MAAA,GAAKF,4BAA4B,CAACW;IAAM,CAAG;EAAC,CAClD,CAAC;AAEX;AAEA,OAAO,SAASC,iCAAiCA,CAAA,EAAmC;EAClF,MAAM,CAACd,GAAG,EAAEe,MAAM,CAAC,GAAG7B,QAAQ,CAAgB,IAAI,CAAC;EACnD,MAAM,CAAC8B,SAAS,EAAEC,YAAY,CAAC,GAAG/B,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAMiB,QAAQ,GAAGN,+BAA+B,CAAC,CAAC;EAElD,MAAMqB,OAAO,GAAGjC,WAAW,CAAEkC,OAAsB,IAAK;IACtDF,YAAY,CAAEG,UAAU,IAAK;MAC3B,IAAIA,UAAU,EAAE;QACd5B,yBAAyB,CAAC,CAAC;MAC7B;MAEA,OAAO,IAAI;IACb,CAAC,CAAC;IACFuB,MAAM,CAACI,OAAO,CAAC;EACjB,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,OAAO,GAAGpC,WAAW,CAAC,MAAM;IAChCO,yBAAyB,CAAC,CAAC;IAC3BuB,MAAM,CAAC,IAAI,CAAC;IACZE,YAAY,CAAC,KAAK,CAAC;EACrB,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO;IAAEjB,GAAG;IAAEgB,SAAS;IAAEb,QAAQ;IAAEe,OAAO;IAAEG;EAAQ,CAAC;AACvD;AAEA,MAAMX,MAAM,GAAGtB,UAAU,CAACkC,MAAM,CAAC;EAC/BX,IAAI,EAAE;IACJ,GAAGvB,UAAU,CAACmC;EAChB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PendingHostComponent","usePendingHostComponentController","useIsPendingHostComponentHidden","useResolvedPendingHostComponent","createPendingHostComponentRoutePrefix","normalizeRoutePath","hidePendingHostComponent","installPendingHostComponentBridge","registerPendingHostComponentRoute","resetPendingHostComponent","resolvePendingHostComponent"],"sourceRoot":"../../../src","sources":["host/index.ts"],"mappings":";;AACA,SACEA,oBAAoB,EACpBC,iCAAiC,EACjCC,+BAA+B,EAC/BC,+BAA+B,QAC1B,2BAAwB;AAS/B,
|
|
1
|
+
{"version":3,"names":["PendingHostComponent","usePendingHostComponentController","useIsPendingHostComponentHidden","useResolvedPendingHostComponent","createPendingHostComponentRoutePrefix","normalizeRoutePath","hidePendingHostComponent","installPendingHostComponentBridge","registerPendingHostComponentRoute","resetPendingHostComponent","resolvePendingHostComponent"],"sourceRoot":"../../../src","sources":["host/index.ts"],"mappings":";;AACA,SACEA,oBAAoB,EACpBC,iCAAiC,EACjCC,+BAA+B,EAC/BC,+BAA+B,QAC1B,2BAAwB;AAS/B,SAASC,qCAAqC,EAAEC,kBAAkB,QAAQ,mBAAgB;AAC1F,SACEC,wBAAwB,EACxBC,iCAAiC,EACjCC,iCAAiC,EACjCC,yBAAyB,EACzBC,2BAA2B,QACtB,gCAA6B","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["resolvePendingHostComponentParams","rawParams","parserParams","validateParams","parsedParams","defaultParserParams","status","value","isStandardSchema","result","validate","Promise","cause","Error","issues","map","issue","message","join","error","String","params","Object","fromEntries","entries","key","JSON","parse","SyntaxError"],"sourceRoot":"../../../src","sources":["host/resolveParams.ts"],"mappings":";;AAOA,OAAO,SAASA,iCAAiCA,CAC/CC,SAAkC,EAClCC,YAAsC,EACtCC,cAAwE,EACxD;EAChB,MAAMC,YAAY,GAAG,CAACF,YAAY,IAAIG,mBAAmB,EAAEJ,SAAS,CAAC;EAErE,IAAIE,cAAc,IAAI,IAAI,EAAE;IAC1B,OAAO;MAAEG,MAAM,EAAE,UAAU;MAAEC,KAAK,EAAEH;IAAa,CAAC;EACpD;EAEA,IAAI;IACF,IAAII,gBAAgB,CAACL,cAAc,CAAC,EAAE;MACpC,MAAMM,MAAM,GAAGN,cAAc,CAAC,WAAW,CAAC,CAACO,QAAQ,CAACN,YAAY,CAAC;MAEjE,IAAIK,MAAM,YAAYE,OAAO,EAAE;QAC7B,OAAO;UAAEL,MAAM,EAAE,SAAS;UAAEM,KAAK,EAAE,IAAIC,KAAK,CAAC,0DAA0D;QAAE,CAAC;MAC5G;MAEA,IAAIJ,MAAM,CAACK,MAAM,IAAI,IAAI,EAAE;QACzB,OAAO;UACLR,MAAM,EAAE,SAAS;UACjBM,KAAK,EAAE,IAAIC,KAAK,CAACJ,MAAM,CAACK,MAAM,CAACC,GAAG,
|
|
1
|
+
{"version":3,"names":["resolvePendingHostComponentParams","rawParams","parserParams","validateParams","parsedParams","defaultParserParams","status","value","isStandardSchema","result","validate","Promise","cause","Error","issues","map","issue","message","join","error","String","params","Object","fromEntries","entries","key","JSON","parse","SyntaxError"],"sourceRoot":"../../../src","sources":["host/resolveParams.ts"],"mappings":";;AAOA,OAAO,SAASA,iCAAiCA,CAC/CC,SAAkC,EAClCC,YAAsC,EACtCC,cAAwE,EACxD;EAChB,MAAMC,YAAY,GAAG,CAACF,YAAY,IAAIG,mBAAmB,EAAEJ,SAAS,CAAC;EAErE,IAAIE,cAAc,IAAI,IAAI,EAAE;IAC1B,OAAO;MAAEG,MAAM,EAAE,UAAU;MAAEC,KAAK,EAAEH;IAAa,CAAC;EACpD;EAEA,IAAI;IACF,IAAII,gBAAgB,CAACL,cAAc,CAAC,EAAE;MACpC,MAAMM,MAAM,GAAGN,cAAc,CAAC,WAAW,CAAC,CAACO,QAAQ,CAACN,YAAY,CAAC;MAEjE,IAAIK,MAAM,YAAYE,OAAO,EAAE;QAC7B,OAAO;UAAEL,MAAM,EAAE,SAAS;UAAEM,KAAK,EAAE,IAAIC,KAAK,CAAC,0DAA0D;QAAE,CAAC;MAC5G;MAEA,IAAIJ,MAAM,CAACK,MAAM,IAAI,IAAI,EAAE;QACzB,OAAO;UACLR,MAAM,EAAE,SAAS;UACjBM,KAAK,EAAE,IAAIC,KAAK,CAACJ,MAAM,CAACK,MAAM,CAACC,GAAG,CAAEC,KAAK,IAAKA,KAAK,CAACC,OAAO,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;QACzE,CAAC;MACH;MAEA,OAAO;QAAEZ,MAAM,EAAE,UAAU;QAAEC,KAAK,EAAEE,MAAM,CAACF,KAAK,IAAI,CAAC;MAAE,CAAC;IAC1D;IAEA,OAAO;MAAED,MAAM,EAAE,UAAU;MAAEC,KAAK,EAAEJ,cAAc,CAACC,YAAY,CAAC,IAAI,CAAC;IAAE,CAAC;EAC1E,CAAC,CAAC,OAAOe,KAAK,EAAE;IACd,OAAO;MACLb,MAAM,EAAE,SAAS;MACjBM,KAAK,EAAEO,KAAK,YAAYN,KAAK,GAAGM,KAAK,GAAG,IAAIN,KAAK,CAACO,MAAM,CAACD,KAAK,CAAC;IACjE,CAAC;EACH;AACF;AAEA,SAASd,mBAAmBA,CAACgB,MAA+B,EAA2B;EACrF,OAAOC,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACH,MAAM,CAAC,CAACN,GAAG,CAAC,CAAC,CAACU,GAAG,EAAElB,KAAK,CAAC,KAAK;IAC3C,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7B,OAAO,CAACkB,GAAG,EAAElB,KAAK,CAAC;IACrB;IAEA,IAAI;MACF,OAAO,CAACkB,GAAG,EAAEC,IAAI,CAACC,KAAK,CAACpB,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,OAAOY,KAAK,EAAE;MACd,IAAI,EAAEA,KAAK,YAAYS,WAAW,CAAC,EAAE;QACnC,MAAMT,KAAK;MACb;MAEA,OAAO,CAACM,GAAG,EAAElB,KAAK,CAAC;IACrB;EACF,CAAC,CACH,CAAC;AACH;AAEA,SAASC,gBAAgBA,CACvBD,KAA8B,EACe;EAC7C,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,IAAI,WAAW,IAAIA,KAAK;AAC5E","ignoreList":[]}
|
package/dist/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createMicroFrontendRuntime","createRoute","findAppNameBySourceURL","getAppName","PendingHostComponent","usePendingHostComponentController","useIsPendingHostComponentHidden","useResolvedPendingHostComponent","createPendingHostComponentRoutePrefix","normalizeRoutePath","hidePendingHostComponent","installPendingHostComponentBridge","registerPendingHostComponentRoute","resetPendingHostComponent","resolvePendingHostComponent","MicroFrontendSessionProvider","MissingMicroFrontendSessionError","useMicroFrontendSession","useMicroFrontendSessions","default","Portal","AppContainerNotFoundError","ExposedModuleNotFoundError","InvalidAppNameError","InvalidAppRequestError","InvalidNativeRuntimeEventError"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,0BAA0B,QAAQ,iCAA8B;AAEzE,SAASC,WAAW,QAAQ,kBAAe;AAE3C,SAASC,sBAAsB,EAAEC,UAAU,QAAQ,yBAAsB;AAEzE,SACEC,oBAAoB,EACpBC,iCAAiC,EACjCC,+BAA+B,EAC/BC,+BAA+B,QAC1B,gCAA6B;AASpC,
|
|
1
|
+
{"version":3,"names":["createMicroFrontendRuntime","createRoute","findAppNameBySourceURL","getAppName","PendingHostComponent","usePendingHostComponentController","useIsPendingHostComponentHidden","useResolvedPendingHostComponent","createPendingHostComponentRoutePrefix","normalizeRoutePath","hidePendingHostComponent","installPendingHostComponentBridge","registerPendingHostComponentRoute","resetPendingHostComponent","resolvePendingHostComponent","MicroFrontendSessionProvider","MissingMicroFrontendSessionError","useMicroFrontendSession","useMicroFrontendSessions","default","Portal","AppContainerNotFoundError","ExposedModuleNotFoundError","InvalidAppNameError","InvalidAppRequestError","InvalidNativeRuntimeEventError"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,0BAA0B,QAAQ,iCAA8B;AAEzE,SAASC,WAAW,QAAQ,kBAAe;AAE3C,SAASC,sBAAsB,EAAEC,UAAU,QAAQ,yBAAsB;AAEzE,SACEC,oBAAoB,EACpBC,iCAAiC,EACjCC,+BAA+B,EAC/BC,+BAA+B,QAC1B,gCAA6B;AASpC,SAASC,qCAAqC,EAAEC,kBAAkB,QAAQ,wBAAqB;AAC/F,SACEC,wBAAwB,EACxBC,iCAAiC,EACjCC,iCAAiC,EACjCC,yBAAyB,EACzBC,2BAA2B,QACtB,qCAAkC;AACzC,SACEC,4BAA4B,EAC5BC,gCAAgC,EAChCC,uBAAuB,QAClB,0CAAuC;AAE9C,SAASC,wBAAwB,QAAQ,uCAAoC;AAQ7E,SAASC,OAAO,IAAIC,MAAM,QAAQ,mCAAmC;AAerE,SACEC,yBAAyB,EACzBC,0BAA0B,EAC1BC,mBAAmB,EACnBC,sBAAsB,EACtBC,8BAA8B,QACzB,qBAAkB","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Rollipop
|
|
2
|
+
|
|
3
|
+
```ts
|
|
4
|
+
import { microFrontend } from '@granite-js/micro-frontend/plugin';
|
|
5
|
+
|
|
6
|
+
const plugins = [
|
|
7
|
+
microFrontend({
|
|
8
|
+
appName: 'my-service',
|
|
9
|
+
shared: ['react', 'react-native'],
|
|
10
|
+
exposes: { './App': './src/App.tsx' },
|
|
11
|
+
}),
|
|
12
|
+
];
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Hosts use `shared: { react: { eager: true } }` to register bundled modules. Remotes resolve non-eager modules from the shared registry. Shared exports remain live, and disposal callbacks are scoped to the application.
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import * as path from 'node:path';
|
|
4
|
+
import { code, include } from 'rollipop/filter';
|
|
5
|
+
import { transformDisposeOwnership } from "../plugin-utils/disposeTransform.js";
|
|
6
|
+
import { intoShared } from "../plugin-utils/intoShared.js";
|
|
7
|
+
import { getPreludeConfig } from "../plugin-utils/prelude.js";
|
|
8
|
+
const PRELUDE = '\0granite:micro-frontend';
|
|
9
|
+
const SHARED = '\0granite:shared:';
|
|
10
|
+
export function microFrontend(options) {
|
|
11
|
+
const shared = intoShared(options.shared);
|
|
12
|
+
const external = new Set(Object.entries(shared ?? {}).filter(([, value]) => value.eager !== true).map(([name]) => name));
|
|
13
|
+
return [prelude(options, shared), external.size > 0 && sharedModules(external), dispose(options.appName)];
|
|
14
|
+
}
|
|
15
|
+
function prelude(options, shared) {
|
|
16
|
+
let prelude = '';
|
|
17
|
+
return {
|
|
18
|
+
name: 'granite:micro-frontend:prelude',
|
|
19
|
+
config(config) {
|
|
20
|
+
const root = config.root ?? process.cwd();
|
|
21
|
+
const exposes = Object.fromEntries(Object.entries(options.exposes ?? {}).map(([name, file]) => [name, path.resolve(root, file)]));
|
|
22
|
+
const generated = getPreludeConfig({
|
|
23
|
+
...options,
|
|
24
|
+
shared,
|
|
25
|
+
exposes
|
|
26
|
+
}, options.appName);
|
|
27
|
+
prelude = generated.preludeScript;
|
|
28
|
+
// Must run before the native-module proxy and before any exposed app module.
|
|
29
|
+
config.polyfills = [{
|
|
30
|
+
type: 'plain',
|
|
31
|
+
code: `var global = globalThis;\n${generated.banner}`
|
|
32
|
+
}, ...(config.polyfills ?? [])];
|
|
33
|
+
return {
|
|
34
|
+
prelude: [PRELUDE]
|
|
35
|
+
};
|
|
36
|
+
},
|
|
37
|
+
resolveId: {
|
|
38
|
+
filter: {
|
|
39
|
+
id: /^\0granite:micro-frontend$/
|
|
40
|
+
},
|
|
41
|
+
handler() {
|
|
42
|
+
return PRELUDE;
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
load: {
|
|
46
|
+
filter: {
|
|
47
|
+
id: /^\0granite:micro-frontend$/
|
|
48
|
+
},
|
|
49
|
+
handler() {
|
|
50
|
+
return prelude;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function sharedModules(external) {
|
|
56
|
+
const externalPattern = new RegExp(`^(?:${[...external].map(value => value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('|')})$`);
|
|
57
|
+
return {
|
|
58
|
+
name: 'granite:micro-frontend:shared-modules',
|
|
59
|
+
resolveId: {
|
|
60
|
+
filter: {
|
|
61
|
+
id: externalPattern
|
|
62
|
+
},
|
|
63
|
+
handler(source) {
|
|
64
|
+
return external.has(source) ? `${SHARED}${source}` : undefined;
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
load: {
|
|
68
|
+
filter: {
|
|
69
|
+
id: /^\0granite:shared:/
|
|
70
|
+
},
|
|
71
|
+
handler(id) {
|
|
72
|
+
const name = JSON.stringify(id.slice(SHARED.length));
|
|
73
|
+
return `
|
|
74
|
+
var shared = globalThis.__MICRO_FRONTEND__.__SHARED__[${name}];
|
|
75
|
+
if (!shared) throw new Error('Shared module ' + ${name} + ' is not registered');
|
|
76
|
+
var original = shared.get();
|
|
77
|
+
var facade = {};
|
|
78
|
+
if (original != null) for (const key of Reflect.ownKeys(original)) {
|
|
79
|
+
if (key === '__esModule' || !Object.getOwnPropertyDescriptor(original, key)?.enumerable) continue;
|
|
80
|
+
Object.defineProperty(facade, key, { enumerable: true, configurable: true,
|
|
81
|
+
get() { return original[key]; },
|
|
82
|
+
set(value) { Object.defineProperty(facade, key, { value, writable: true, enumerable: true, configurable: true }); }
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
Object.defineProperty(facade, '__esModule', { value: true, writable: true, enumerable: true, configurable: true });
|
|
86
|
+
module.exports = facade;
|
|
87
|
+
`;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function dispose(appName) {
|
|
93
|
+
return {
|
|
94
|
+
name: 'granite:micro-frontend:dispose',
|
|
95
|
+
transform: {
|
|
96
|
+
filter: [include(code(/(?:global|globalThis)\.__MICRO_FRONTEND__\.dispose/))],
|
|
97
|
+
handler(source, id) {
|
|
98
|
+
const transformed = transformDisposeOwnership(id, source, {
|
|
99
|
+
appName
|
|
100
|
+
});
|
|
101
|
+
return source === transformed ? null : {
|
|
102
|
+
code: transformed,
|
|
103
|
+
map: null
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["path","code","include","transformDisposeOwnership","intoShared","getPreludeConfig","PRELUDE","SHARED","microFrontend","options","shared","external","Set","Object","entries","filter","value","eager","map","name","prelude","size","sharedModules","dispose","appName","config","root","process","cwd","exposes","fromEntries","file","resolve","generated","preludeScript","polyfills","type","banner","resolveId","id","handler","load","externalPattern","RegExp","replace","join","source","has","undefined","JSON","stringify","slice","length","transform","transformed"],"sourceRoot":"../../../src","sources":["next/index.ts"],"mappings":";;AAAA,OAAO,KAAKA,IAAI,MAAM,WAAW;AAEjC,SAASC,IAAI,EAAEC,OAAO,QAAQ,iBAAiB;AAE/C,SAASC,yBAAyB,QAAQ,qCAAkC;AAC5E,SAASC,UAAU,QAAQ,+BAA4B;AACvD,SAASC,gBAAgB,QAAQ,4BAAyB;AAG1D,MAAMC,OAAO,GAAG,0BAA0B;AAC1C,MAAMC,MAAM,GAAG,mBAAmB;AAElC,OAAO,SAASC,aAAaA,CAACC,OAAmC,EAAgB;EAC/E,MAAMC,MAAM,GAAGN,UAAU,CAACK,OAAO,CAACC,MAAM,CAAC;EACzC,MAAMC,QAAQ,GAAG,IAAIC,GAAG,CACtBC,MAAM,CAACC,OAAO,CAACJ,MAAM,IAAI,CAAC,CAAC,CAAC,CACzBK,MAAM,CAAC,CAAC,GAAGC,KAAK,CAAC,KAAKA,KAAK,CAACC,KAAK,KAAK,IAAI,CAAC,CAC3CC,GAAG,CAAC,CAAC,CAACC,IAAI,CAAC,KAAKA,IAAI,CACzB,CAAC;EACD,OAAO,CAACC,OAAO,CAACX,OAAO,EAAEC,MAAM,CAAC,EAAEC,QAAQ,CAACU,IAAI,GAAG,CAAC,IAAIC,aAAa,CAACX,QAAQ,CAAC,EAAEY,OAAO,CAACd,OAAO,CAACe,OAAO,CAAC,CAAC;AAC3G;AAEA,SAASJ,OAAOA,CAACX,OAAmC,EAAEC,MAAgC,EAAU;EAC9F,IAAIU,OAAO,GAAG,EAAE;EAEhB,OAAO;IACLD,IAAI,EAAE,gCAAgC;IACtCM,MAAMA,CAACA,MAAM,EAAE;MACb,MAAMC,IAAI,GAAGD,MAAM,CAACC,IAAI,IAAIC,OAAO,CAACC,GAAG,CAAC,CAAC;MACzC,MAAMC,OAAO,GAAGhB,MAAM,CAACiB,WAAW,CAChCjB,MAAM,CAACC,OAAO,CAACL,OAAO,CAACoB,OAAO,IAAI,CAAC,CAAC,CAAC,CAACX,GAAG,CAAC,CAAC,CAACC,IAAI,EAAEY,IAAI,CAAC,KAAK,CAACZ,IAAI,EAAEnB,IAAI,CAACgC,OAAO,CAACN,IAAI,EAAEK,IAAI,CAAC,CAAC,CAC9F,CAAC;MACD,MAAME,SAAS,GAAG5B,gBAAgB,CAAC;QAAE,GAAGI,OAAO;QAAEC,MAAM;QAAEmB;MAAQ,CAAC,EAAEpB,OAAO,CAACe,OAAO,CAAC;MACpFJ,OAAO,GAAGa,SAAS,CAACC,aAAa;MACjC;MACAT,MAAM,CAACU,SAAS,GAAG,CACjB;QAAEC,IAAI,EAAE,OAAO;QAAEnC,IAAI,EAAE,6BAA6BgC,SAAS,CAACI,MAAM;MAAG,CAAC,EACxE,IAAIZ,MAAM,CAACU,SAAS,IAAI,EAAE,CAAC,CAC5B;MACD,OAAO;QAAEf,OAAO,EAAE,CAACd,OAAO;MAAE,CAAC;IAC/B,CAAC;IACDgC,SAAS,EAAE;MACTvB,MAAM,EAAE;QAAEwB,EAAE,EAAE;MAA6B,CAAC;MAC5CC,OAAOA,CAAA,EAAG;QACR,OAAOlC,OAAO;MAChB;IACF,CAAC;IACDmC,IAAI,EAAE;MACJ1B,MAAM,EAAE;QAAEwB,EAAE,EAAE;MAA6B,CAAC;MAC5CC,OAAOA,CAAA,EAAG;QACR,OAAOpB,OAAO;MAChB;IACF;EACF,CAAC;AACH;AAEA,SAASE,aAAaA,CAACX,QAA6B,EAAU;EAC5D,MAAM+B,eAAe,GAAG,IAAIC,MAAM,CAChC,OAAO,CAAC,GAAGhC,QAAQ,CAAC,CAACO,GAAG,CAAEF,KAAK,IAAKA,KAAK,CAAC4B,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,IAC7F,CAAC;EAED,OAAO;IACL1B,IAAI,EAAE,uCAAuC;IAC7CmB,SAAS,EAAE;MACTvB,MAAM,EAAE;QAAEwB,EAAE,EAAEG;MAAgB,CAAC;MAC/BF,OAAOA,CAACM,MAAM,EAAE;QACd,OAAOnC,QAAQ,CAACoC,GAAG,CAACD,MAAM,CAAC,GAAG,GAAGvC,MAAM,GAAGuC,MAAM,EAAE,GAAGE,SAAS;MAChE;IACF,CAAC;IACDP,IAAI,EAAE;MACJ1B,MAAM,EAAE;QAAEwB,EAAE,EAAE;MAAqB,CAAC;MACpCC,OAAOA,CAACD,EAAE,EAAE;QACV,MAAMpB,IAAI,GAAG8B,IAAI,CAACC,SAAS,CAACX,EAAE,CAACY,KAAK,CAAC5C,MAAM,CAAC6C,MAAM,CAAC,CAAC;QACpD,OAAO;AACf,kEAAkEjC,IAAI;AACtE,4DAA4DA,IAAI;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;MACH;IACF;EACF,CAAC;AACH;AAEA,SAASI,OAAOA,CAACC,OAAe,EAAU;EACxC,OAAO;IACLL,IAAI,EAAE,gCAAgC;IACtCkC,SAAS,EAAE;MACTtC,MAAM,EAAE,CAACb,OAAO,CAACD,IAAI,CAAC,oDAAoD,CAAC,CAAC,CAAC;MAC7EuC,OAAOA,CAACM,MAAM,EAAEP,EAAE,EAAE;QAClB,MAAMe,WAAW,GAAGnD,yBAAyB,CAACoC,EAAE,EAAEO,MAAM,EAAE;UAAEtB;QAAQ,CAAC,CAAC;QACtE,OAAOsB,MAAM,KAAKQ,WAAW,GAAG,IAAI,GAAG;UAAErD,IAAI,EAAEqD,WAAW;UAAEpC,GAAG,EAAE;QAAK,CAAC;MACzE;IACF;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["next/types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
import * as fs from 'fs';
|
|
4
4
|
import * as path from 'path';
|
|
5
5
|
import { prepareLocalDirectory } from '@granite-js/utils';
|
|
6
|
-
import { transformDisposeOwnership } from "./disposeTransform.js";
|
|
7
|
-
import { intoShared } from "./intoShared.js";
|
|
8
|
-
import { getPreludeConfig } from "./prelude.js";
|
|
9
6
|
import { createSharedResolverConfig } from "./resolver.js";
|
|
7
|
+
import { transformDisposeOwnership } from "../plugin-utils/disposeTransform.js";
|
|
8
|
+
import { intoShared } from "../plugin-utils/intoShared.js";
|
|
9
|
+
import { getPreludeConfig } from "../plugin-utils/prelude.js";
|
|
10
10
|
export async function microFrontend(options = {}) {
|
|
11
11
|
const shared = intoShared(options.shared);
|
|
12
12
|
const normalizedOptions = {
|
|
@@ -16,8 +16,7 @@ export async function microFrontend(options = {}) {
|
|
|
16
16
|
const nonEagerEntries = Object.entries(shared ?? {}).filter(([, config]) => config.eager !== true);
|
|
17
17
|
const localDirectory = prepareLocalDirectory(process.cwd());
|
|
18
18
|
// Keep this path distinct from @granite-js/plugin-micro-frontend's generated prelude.
|
|
19
|
-
//
|
|
20
|
-
// later plugin overwrite the earlier plugin's runtime registrations.
|
|
19
|
+
// Sharing a path would let one plugin overwrite the other's runtime registrations.
|
|
21
20
|
const preludePath = path.join(localDirectory, 'granite-micro-frontend-runtime.js');
|
|
22
21
|
const prelude = getPreludeConfig(normalizedOptions);
|
|
23
22
|
const resolver = createSharedResolverConfig(nonEagerEntries);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["fs","path","prepareLocalDirectory","transformDisposeOwnership","intoShared","getPreludeConfig","
|
|
1
|
+
{"version":3,"names":["fs","path","prepareLocalDirectory","createSharedResolverConfig","transformDisposeOwnership","intoShared","getPreludeConfig","microFrontend","options","shared","normalizedOptions","nonEagerEntries","Object","entries","filter","config","eager","localDirectory","process","cwd","preludePath","join","prelude","resolver","disposeOwnershipOptions","writePrelude","appName","writeFileSync","preludeScript","name","dev","order","handler","build","extra","some","moduleName","skipReactNativeInitializeCore","skipReactNativePolyfills","undefined","transformer","transformSync","id","code","esbuild","banner","js"],"sourceRoot":"../../../src","sources":["plugin/microFrontendPlugin.ts"],"mappings":";;AAAA,OAAO,KAAKA,EAAE,MAAM,IAAI;AACxB,OAAO,KAAKC,IAAI,MAAM,MAAM;AAE5B,SAASC,qBAAqB,QAAQ,mBAAmB;AACzD,SAASC,0BAA0B,QAAQ,eAAY;AAGvD,SAASC,yBAAyB,QAAQ,qCAAkC;AAC5E,SAASC,UAAU,QAAQ,+BAA4B;AACvD,SAASC,gBAAgB,QAAQ,4BAAyB;AAE1D,OAAO,eAAeC,aAAaA,CAACC,OAAmC,GAAG,CAAC,CAAC,EAA8B;EACxG,MAAMC,MAAM,GAAGJ,UAAU,CAACG,OAAO,CAACC,MAAM,CAAC;EACzC,MAAMC,iBAA6C,GAAG;IACpD,GAAGF,OAAO;IACVC;EACF,CAAC;EACD,MAAME,eAAe,GAAGC,MAAM,CAACC,OAAO,CAACJ,MAAM,IAAI,CAAC,CAAC,CAAC,CAACK,MAAM,CAAC,CAAC,GAAGC,MAAM,CAAC,KAAKA,MAAM,CAACC,KAAK,KAAK,IAAI,CAAC;EAClG,MAAMC,cAAc,GAAGf,qBAAqB,CAACgB,OAAO,CAACC,GAAG,CAAC,CAAC,CAAC;EAC3D;EACA;EACA,MAAMC,WAAW,GAAGnB,IAAI,CAACoB,IAAI,CAACJ,cAAc,EAAE,mCAAmC,CAAC;EAClF,MAAMK,OAAO,GAAGhB,gBAAgB,CAACI,iBAAiB,CAAC;EACnD,MAAMa,QAAQ,GAAGpB,0BAA0B,CAACQ,eAAe,CAAC;EAC5D,MAAMa,uBAAsD,GAAG,CAAC,CAAC;EAEjE,SAASC,YAAYA,CAACC,OAAgB,EAAE;IACtCF,uBAAuB,CAACE,OAAO,GAAGA,OAAO;IACzC,MAAMX,MAAM,GAAGT,gBAAgB,CAACI,iBAAiB,EAAEgB,OAAO,CAAC;IAC3D1B,EAAE,CAAC2B,aAAa,CAACP,WAAW,EAAEL,MAAM,CAACa,aAAa,EAAE,MAAM,CAAC;EAC7D;EAEAH,YAAY,CAAC,CAAC;EAEd,OAAO;IACLI,IAAI,EAAE,gBAAgB;IACtBC,GAAG,EAAE;MACHC,KAAK,EAAE,KAAK;MACZC,OAAOA,CAAC;QAAEN;MAAQ,CAAC,EAAE;QACnBD,YAAY,CAACC,OAAO,CAAC;MACvB;IACF,CAAC;IACDO,KAAK,EAAE;MACLF,KAAK,EAAE,KAAK;MACZC,OAAOA,CAAC;QAAEN;MAAQ,CAAC,EAAE;QACnBD,YAAY,CAACC,OAAO,CAAC;MACvB;IACF,CAAC;IACDX,MAAM,EAAE;MACNmB,KAAK,EAAEvB,eAAe,CAACwB,IAAI,CAAC,CAAC,CAACC,UAAU,CAAC,KAAKA,UAAU,KAAK,cAAc,CAAC,GACxE;QACEC,6BAA6B,EAAE,IAAI;QACnCC,wBAAwB,EAAE;MAC5B,CAAC,GACDC,SAAS;MACbhB,QAAQ;MACRiB,WAAW,EAAE;QACXC,aAAaA,CAACC,EAAE,EAAEC,IAAI,EAAE;UACtB,OAAOvC,yBAAyB,CAACsC,EAAE,EAAEC,IAAI,EAAEnB,uBAAuB,CAAC;QACrE;MACF,CAAC;MACDoB,OAAO,EAAE;QACPtB,OAAO,EAAE,CAACF,WAAW,CAAC;QACtByB,MAAM,EAAE;UAAEC,EAAE,EAAExB,OAAO,CAACuB;QAAO;MAC/B;IACF;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["injectDisposeAppName","types","babelTypes","options","name","visitor","CallExpression","path","appName","node","arguments","length","runtimeIdentifier","getRuntimeIdentifier","callee","scope","getBinding","unshift","stringLiteral","isMemberExpression","computed","isIdentifier","property","object"],"sourceRoot":"../../../src","sources":["plugin-utils/disposeBabelPlugin.ts"],"mappings":";;AAOA,OAAO,SAASA,oBAAoBA,CAClC;EAAEC,KAAK,EAAEC;AAAyC,CAAC,EACnDC,OAAsC,EAC3B;EACX,OAAO;IACLC,IAAI,EAAE,wCAAwC;IAC9CC,OAAO,EAAE;MACPC,cAAcA,CAACC,IAAI,EAAE;QACnB,IAAIJ,OAAO,CAACK,OAAO,IAAI,IAAI,IAAID,IAAI,CAACE,IAAI,CAACC,SAAS,CAACC,MAAM,KAAK,CAAC,EAAE;UAC/D;QACF;QAEA,MAAMC,iBAAiB,GAAGC,oBAAoB,CAACN,IAAI,CAACE,IAAI,CAACK,MAAM,EAAEZ,UAAU,CAAC;QAC5E,IAAIU,iBAAiB,IAAI,IAAI,IAAIL,IAAI,CAACQ,KAAK,CAACC,UAAU,CAACJ,iBAAiB,CAAC,IAAI,IAAI,EAAE;UACjF;QACF;QAEAL,IAAI,CAACE,IAAI,CAACC,SAAS,CAACO,OAAO,CAACf,UAAU,CAACgB,aAAa,CAACf,OAAO,CAACK,OAAO,CAAC,CAAC;MACxE;IACF;EACF,CAAC;AACH;AAEA,SAASK,oBAAoBA,CAC3BC,MAAgE,EAChEZ,UAA6B,EACd;EACf;EACA;EACA,IACE,CAACA,UAAU,CAACiB,kBAAkB,CAACL,MAAM,CAAC,IACtCA,MAAM,CAACM,QAAQ,IACf,CAAClB,UAAU,CAACmB,YAAY,CAACP,MAAM,CAACQ,QAAQ,EAAE;IAAElB,IAAI,EAAE;EAAU,CAAC,CAAC,IAC9D,CAACF,UAAU,CAACiB,kBAAkB,CAACL,MAAM,CAACS,MAAM,CAAC,IAC7CT,MAAM,CAACS,MAAM,CAACH,QAAQ,IACtB,CAAClB,UAAU,CAACmB,YAAY,CAACP,MAAM,CAACS,MAAM,CAACD,QAAQ,EAAE;IAAElB,IAAI,EAAE;EAAqB,CAAC,CAAC,IAC/E,CAACF,UAAU,CAACmB,YAAY,CAACP,MAAM,CAACS,MAAM,CAACA,MAAM,EAAE;IAAEnB,IAAI,EAAE;EAAS,CAAC,CAAC,IACjE,CAACF,UAAU,CAACmB,YAAY,CAACP,MAAM,CAACS,MAAM,CAACA,MAAM,EAAE;IAAEnB,IAAI,EAAE;EAAa,CAAC,CAAE,EACzE;IACA,OAAO,IAAI;EACb;EAEA,OAAOU,MAAM,CAACS,MAAM,CAACA,MAAM,CAACnB,IAAI;AAClC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["babel","injectDisposeAppName","shouldTransformDispose","code","includes","transformDisposeOwnership","id","options","appName","transformSync","ast","babelrc","configFile","filename","parserOpts","plugins","getParserPlugins","sourceType","retainLines","test","push"],"sourceRoot":"../../../src","sources":["plugin-utils/disposeTransform.ts"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,aAAa;AACpC,SAASC,oBAAoB,QAA4C,yBAAsB;AAE/F,OAAO,SAASC,sBAAsBA,CAACC,IAAY,EAAW;EAC5D,OAAOA,IAAI,CAACC,QAAQ,CAAC,uCAAuC,CAAC,IAAID,IAAI,CAACC,QAAQ,CAAC,mCAAmC,CAAC;AACrH;AAEA,OAAO,SAASC,yBAAyBA,CAACC,EAAU,EAAEH,IAAY,EAAEI,OAAsC,EAAU;EAClH,IAAIA,OAAO,CAACC,OAAO,IAAI,IAAI,IAAI,CAACN,sBAAsB,CAACC,IAAI,CAAC,EAAE;IAC5D,OAAOA,IAAI;EACb;EAEA,OACEH,KAAK,CAACS,aAAa,CAACN,IAAI,EAAE;IACxBO,GAAG,EAAE,KAAK;IACVC,OAAO,EAAE,KAAK;IACdC,UAAU,EAAE,KAAK;IACjBC,QAAQ,EAAEP,EAAE;IACZQ,UAAU,EAAE;MACVC,OAAO,EAAEC,gBAAgB,CAACV,EAAE,CAAC;MAC7BW,UAAU,EAAE;IACd,CAAC;IACDF,OAAO,EAAE,CAAC,CAACd,oBAAoB,EAAEM,OAAO,CAAC,CAAC;IAC1CW,WAAW,EAAE;EACf,CAAC,CAAC,EAAEf,IAAI,IAAIA,IAAI;AAEpB;AAEA,SAASa,gBAAgBA,CAACV,EAAU,EAAkC;EACpE,MAAMS,OAAuC,GAAG,EAAE;EAElD,IAAI,cAAc,CAACI,IAAI,CAACb,EAAE,CAAC,EAAE;IAC3BS,OAAO,CAACK,IAAI,CAAC,YAAY,CAAC;EAC5B,CAAC,MAAM,IAAI,cAAc,CAACD,IAAI,CAACb,EAAE,CAAC,EAAE;IAClCS,OAAO,CAACK,IAAI,CAAC,MAAM,CAAC;EACtB;EAEA,IAAI,gBAAgB,CAACD,IAAI,CAACb,EAAE,CAAC,EAAE;IAC7BS,OAAO,CAACK,IAAI,CAAC,KAAK,CAAC;EACrB;EAEA,OAAOL,OAAO;AAChB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["globalContextScript","String","raw"],"sourceRoot":"../../../src","sources":["plugin/globalContextScript.ts"],"mappings":";;AAAA,OAAO,MAAMA,mBAAmB,GAAGC,MAAM,CAACC,GAAG;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["globalContextScript","String","raw"],"sourceRoot":"../../../src","sources":["plugin-utils/globalContextScript.ts"],"mappings":";;AAAA,OAAO,MAAMA,mBAAmB,GAAGC,MAAM,CAACC,GAAG;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SHARED_PRESETS","react","intoShared","shared","undefined","normalized","Array","isArray","moduleName","Object","assign","subpaths","entries","moduleConfig","subpath"],"sourceRoot":"../../../src","sources":["plugin-utils/intoShared.ts"],"mappings":";;AAEA,MAAMA,cAAc,GAAG;EACrBC,KAAK,EAAE,CAAC,mBAAmB,EAAE,uBAAuB,CAAC;EACrD,cAAc,EAAE,CACd,oDAAoD,EACpD,oDAAoD,EACpD,mDAAmD,EACnD,gEAAgE,EAChE,wEAAwE,EACxE,yDAAyD,EACzD,kDAAkD,EAClD,2DAA2D,EAC3D,kDAAkD,EAClD,gDAAgD,EAChD,wDAAwD,EACxD,6DAA6D,EAC7D,2CAA2C,EAC3C,2DAA2D;AAE/D,CAAU;AAEV,OAAO,SAASC,UAAUA,CAACC,MAAoD,EAA4B;EACzG,IAAIA,MAAM,IAAI,IAAI,EAAE;IAClB,OAAOC,SAAS;EAClB;EAEA,MAAMC,UAA8C,GAAG,CAAC,CAAC;EACzD,IAAIC,KAAK,CAACC,OAAO,CAACJ,MAAM,CAAC,EAAE;IACzB,KAAK,MAAMK,UAAU,IAAIL,MAAM,EAAE;MAC/BE,UAAU,CAACG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC7B;EACF,CAAC,MAAM;IACLC,MAAM,CAACC,MAAM,CAACL,UAAU,EAAEF,MAAM,CAAC;EACnC;EAEA,KAAK,MAAM,CAACK,UAAU,EAAEG,QAAQ,CAAC,IAAIF,MAAM,CAACG,OAAO,CAACZ,cAAc,CAAC,EAAE;IACnE,MAAMa,YAAY,GAAGR,UAAU,CAACG,UAAU,CAAC;IAC3C,IAAIK,YAAY,IAAI,IAAI,EAAE;MACxB;IACF;IAEA,KAAK,MAAMC,OAAO,IAAIH,QAAQ,EAAE;MAC9BN,UAAU,CAACS,OAAO,CAAC,KAAK;QAAE,GAAGD;MAAa,CAAC;IAC7C;EACF;EAEA,OAAOR,UAAU;AACnB","ignoreList":[]}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import path from 'path';
|
|
3
|
+
import * as path from 'node:path';
|
|
4
4
|
import { globalContextScript } from "./globalContextScript.js";
|
|
5
5
|
import { CONTAINER_PAIRING_KEY } from "../runtime/containerPairing.js";
|
|
6
|
+
import { toLegacyEsm } from "../runtime/legacyEsm.js";
|
|
6
7
|
import { captureStackFrames, resolveCurrentSourceURL } from "../runtime/runtimeSourceURL.js";
|
|
8
|
+
import { registerSharedValue } from "../runtime/sharedModule.js";
|
|
7
9
|
export function getPreludeConfig(options, appName) {
|
|
8
10
|
const eagerSharedModules = Object.entries(options.shared ?? {}).filter(([, config]) => !Array.isArray(options.shared) && config.eager === true);
|
|
9
11
|
const registerStatements = eagerSharedModules.map(([moduleName], index) => {
|
|
@@ -22,7 +24,7 @@ export function getPreludeConfig(options, appName) {
|
|
|
22
24
|
const resolveSourceURL = resolveCurrentSourceURL.toString();
|
|
23
25
|
return {
|
|
24
26
|
banner: [globalContextScript, '(function installMicroFrontendLifecycle(context) {', ' const callbacksDescriptor = Object.getOwnPropertyDescriptor(context, "disposeCallbacksByApp");', ' const disposeDescriptor = Object.getOwnPropertyDescriptor(context, "dispose");', ' const disposeCallbacksByApp = callbacksDescriptor == null ? {} : callbacksDescriptor.value;', ' if (typeof disposeCallbacksByApp !== "object" || disposeCallbacksByApp == null || Array.isArray(disposeCallbacksByApp)) {', ' throw new Error("Cannot install micro-frontend lifecycle: invalid-dispose-callback-registry");', ' }', ' const dispose = disposeDescriptor == null ? function dispose(appName, callback) {', ' if (typeof appName !== "string" || typeof callback !== "function") {', ' throw new Error("dispose() must be compiled with the microFrontend plugin");', ' }', ' const callbacks = disposeCallbacksByApp[appName] ||= new Set();', ' callbacks.add(callback);', ' let isRegistered = true;', ' return function unregisterDispose() {', ' if (!isRegistered) { return; }', ' isRegistered = false;', ' callbacks.delete(callback);', ' };', ' } : disposeDescriptor.value;', ' if (typeof dispose !== "function") {', ' throw new Error("Cannot install micro-frontend lifecycle: invalid-dispose-registrar");', ' }', ' try {', ' if (!Reflect.defineProperty(context, "disposeCallbacksByApp", {', ' configurable: true, enumerable: false, value: disposeCallbacksByApp, writable: true,', ' }) || !Reflect.defineProperty(context, "dispose", {', ' configurable: true, enumerable: false, value: dispose, writable: true,', ' })) {', ' throw new Error("Cannot install micro-frontend lifecycle: canonical-context-is-locked");', ' }', ' } catch (error) {', ' if (callbacksDescriptor == null) {', ' Reflect.deleteProperty(context, "disposeCallbacksByApp");', ' } else {', ' Reflect.defineProperty(context, "disposeCallbacksByApp", callbacksDescriptor);', ' }', ' if (disposeDescriptor == null) {', ' Reflect.deleteProperty(context, "dispose");', ' } else {', ' Reflect.defineProperty(context, "dispose", disposeDescriptor);', ' }', ' throw error;', ' }', '})(global.__MICRO_FRONTEND__);'].join('\n'),
|
|
25
|
-
preludeScript: [`const __containerPairSymbol = Symbol.for(${JSON.stringify(CONTAINER_PAIRING_KEY)});`, 'const __legacyContainers = new WeakMap();', 'function createContainer(appName, config) {', ' const context = global.__MICRO_FRONTEND__;', ' const containers = context.__CONTAINERS__;', ' const instances = context.__INSTANCES__;', ' if (containers[appName] != null || typeof instances[appName] === "number") {', " throw new Error(`App container '${appName}' is already registered`);", ' }', ' if (!Object.isExtensible(containers) || !Object.isExtensible(instances)) {', ' throw new Error("Cannot establish the micro-frontend global context: registry-is-not-extensible");', ' }', ` const stackFrames = (${captureFrames})();`, ` const sourceURL = (${resolveSourceURL})(stackFrames);`, ' const modernContainer = { appName, config, exposedModules: {}, runtime: { sourceURL } };', ' const legacyContainer = { name: appName, config, exposeMap: {} };', ' try {', ' if (!Reflect.defineProperty(instances, appName, {', ' configurable: true, enumerable: false, value: instances.length, writable: false,', ' })) {', ' throw new Error("Cannot establish the micro-frontend global context: registry-is-not-extensible");', ' }', ' instances.push(legacyContainer);', ' if (!Reflect.set(containers, appName, modernContainer)) {', ' throw new Error("Cannot establish the micro-frontend global context: registry-is-not-extensible");', ' }', ' if (!Reflect.defineProperty(modernContainer, __containerPairSymbol, {', ' configurable: true, enumerable: false, value: legacyContainer, writable: false,', ' }) || !Reflect.defineProperty(legacyContainer, __containerPairSymbol, {', ' configurable: true, enumerable: false, value: modernContainer, writable: false,', ' })) {', ' throw new Error("Cannot establish the micro-frontend global context: registry-is-not-extensible");', ' }', ' } catch (error) {', ' if (Object.is(instances[instances.length - 1], legacyContainer)) {', ' instances.pop();', ' }', ' Reflect.deleteProperty(instances, appName);', ' Reflect.deleteProperty(containers, appName);', ' Reflect.deleteProperty(modernContainer, __containerPairSymbol);', ' Reflect.deleteProperty(legacyContainer, __containerPairSymbol);', ' throw error;', ' }', ' __legacyContainers.set(modernContainer, legacyContainer);', ' return modernContainer;', '}', 'function exposeModule(container, exposedModule, moduleValue) {', " const normalizedModule = exposedModule.startsWith('./') ? exposedModule : `./${exposedModule}`;", " const legacyModule = exposedModule.startsWith('./') ? exposedModule.slice(2) : exposedModule;", ' const legacyContainer = __legacyContainers.get(container);', ' if (Reflect.has(container.exposedModules, normalizedModule) ||', ' (legacyContainer != null && Reflect.has(legacyContainer.exposeMap, legacyModule))) {', " throw new Error(`Exposed module '${normalizedModule}' is already registered in app container '${container.appName}'`);", ' }', ' const ownsModernContainer = Object.is(', ' global.__MICRO_FRONTEND__.__CONTAINERS__[container.appName],', ' container', ' );', '
|
|
27
|
+
preludeScript: [`const __containerPairSymbol = Symbol.for(${JSON.stringify(CONTAINER_PAIRING_KEY)});`, 'const __legacyContainers = new WeakMap();', 'function createContainer(appName, config) {', ' const context = global.__MICRO_FRONTEND__;', ' const containers = context.__CONTAINERS__;', ' const instances = context.__INSTANCES__;', ' if (containers[appName] != null || typeof instances[appName] === "number") {', " throw new Error(`App container '${appName}' is already registered`);", ' }', ' if (!Object.isExtensible(containers) || !Object.isExtensible(instances)) {', ' throw new Error("Cannot establish the micro-frontend global context: registry-is-not-extensible");', ' }', ` const stackFrames = (${captureFrames})();`, ` const sourceURL = (${resolveSourceURL})(stackFrames);`, ' const modernContainer = { appName, config, exposedModules: {}, runtime: { sourceURL } };', ' const legacyContainer = { name: appName, config, exposeMap: {} };', ' try {', ' if (!Reflect.defineProperty(instances, appName, {', ' configurable: true, enumerable: false, value: instances.length, writable: false,', ' })) {', ' throw new Error("Cannot establish the micro-frontend global context: registry-is-not-extensible");', ' }', ' instances.push(legacyContainer);', ' if (!Reflect.set(containers, appName, modernContainer)) {', ' throw new Error("Cannot establish the micro-frontend global context: registry-is-not-extensible");', ' }', ' if (!Reflect.defineProperty(modernContainer, __containerPairSymbol, {', ' configurable: true, enumerable: false, value: legacyContainer, writable: false,', ' }) || !Reflect.defineProperty(legacyContainer, __containerPairSymbol, {', ' configurable: true, enumerable: false, value: modernContainer, writable: false,', ' })) {', ' throw new Error("Cannot establish the micro-frontend global context: registry-is-not-extensible");', ' }', ' } catch (error) {', ' if (Object.is(instances[instances.length - 1], legacyContainer)) {', ' instances.pop();', ' }', ' Reflect.deleteProperty(instances, appName);', ' Reflect.deleteProperty(containers, appName);', ' Reflect.deleteProperty(modernContainer, __containerPairSymbol);', ' Reflect.deleteProperty(legacyContainer, __containerPairSymbol);', ' throw error;', ' }', ' __legacyContainers.set(modernContainer, legacyContainer);', ' return modernContainer;', '}', 'function exposeModule(container, exposedModule, moduleValue) {', " const normalizedModule = exposedModule.startsWith('./') ? exposedModule : `./${exposedModule}`;", " const legacyModule = exposedModule.startsWith('./') ? exposedModule.slice(2) : exposedModule;", ' const legacyContainer = __legacyContainers.get(container);', ' if (Reflect.has(container.exposedModules, normalizedModule) ||', ' (legacyContainer != null && Reflect.has(legacyContainer.exposeMap, legacyModule))) {', " throw new Error(`Exposed module '${normalizedModule}' is already registered in app container '${container.appName}'`);", ' }', ' const ownsModernContainer = Object.is(', ' global.__MICRO_FRONTEND__.__CONTAINERS__[container.appName],', ' container', ' );', ' const legacyModuleValue = legacyContainer == null ? moduleValue : toLegacyEsm(moduleValue);', ' try {', ' if (ownsModernContainer && !Reflect.set(container.exposedModules, normalizedModule, moduleValue)) {', ' throw new Error("Cannot establish the micro-frontend global context: registry-is-not-extensible");', ' }', ' if (legacyContainer != null) {', ' Object.defineProperty(legacyContainer.exposeMap, legacyModule, {', ' configurable: true,', ' enumerable: true,', ' get: function () { return legacyModuleValue; },', ' });', ' }', ' } catch (error) {', ' if (ownsModernContainer) {', ' Reflect.deleteProperty(container.exposedModules, normalizedModule);', ' }', ' if (legacyContainer != null) {', ' Reflect.deleteProperty(legacyContainer.exposeMap, legacyModule);', ' }', ' throw error;', ' }', '}', `const toLegacyEsm = ${toLegacyEsm.toString()};`, `const registerSharedValue = ${registerSharedValue.toString()};`, 'function registerShared(moduleName, moduleValue) {', ' const sharedModules = global.__MICRO_FRONTEND__.__SHARED__;', ' if (!registerSharedValue(sharedModules, moduleName, moduleValue, toLegacyEsm)) {', " throw new Error(`Shared module '${moduleName}' is already registered`);", ' }', '}', `const __container = createContainer(${containerName}, ${containerConfig});`, ...registerStatements, ...exposeStatements].join('\n')
|
|
26
28
|
};
|
|
27
29
|
}
|
|
28
30
|
//# sourceMappingURL=prelude.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["path","globalContextScript","CONTAINER_PAIRING_KEY","toLegacyEsm","captureStackFrames","resolveCurrentSourceURL","registerSharedValue","getPreludeConfig","options","appName","eagerSharedModules","Object","entries","shared","filter","config","Array","isArray","eager","registerStatements","map","moduleName","index","identifier","JSON","stringify","join","exposeStatements","exposes","exposedModule","modulePath","resolve","containerConfig","containerName","captureFrames","toString","resolveSourceURL","banner","preludeScript"],"sourceRoot":"../../../src","sources":["plugin-utils/prelude.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { getLegacyContainerPair } from "./containerPairing.js";
|
|
4
4
|
import { ExposedModuleAlreadyRegisteredError } from "./errors.js";
|
|
5
5
|
import { getMicroFrontendGlobalContext, MicroFrontendGlobalContextCompatibilityError } from "./globalContext.js";
|
|
6
|
+
import { toLegacyEsm } from "./legacyEsm.js";
|
|
6
7
|
export function exposeContainerModule(container, exposedModule, module) {
|
|
7
8
|
const normalizedModule = normalizeExposedModule(exposedModule);
|
|
8
9
|
const legacyModule = normalizeLegacyModule(exposedModule);
|
|
@@ -33,43 +34,6 @@ export function exposeContainerModule(container, exposedModule, module) {
|
|
|
33
34
|
throw error;
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
|
-
function toLegacyEsm(module) {
|
|
37
|
-
if ((typeof module !== 'object' || module == null) && typeof module !== 'function') {
|
|
38
|
-
return module;
|
|
39
|
-
}
|
|
40
|
-
if (Reflect.get(module, '__esModule') === true) {
|
|
41
|
-
return module;
|
|
42
|
-
}
|
|
43
|
-
const legacyModule = typeof module === 'function' ? function (...args) {
|
|
44
|
-
return Reflect.apply(module, this, args);
|
|
45
|
-
} : {};
|
|
46
|
-
for (const exportName of Reflect.ownKeys(module)) {
|
|
47
|
-
if (exportName === '__esModule' || exportName === 'default') {
|
|
48
|
-
continue;
|
|
49
|
-
}
|
|
50
|
-
const sourceDescriptor = Reflect.getOwnPropertyDescriptor(module, exportName);
|
|
51
|
-
const facadeDescriptor = Reflect.getOwnPropertyDescriptor(legacyModule, exportName);
|
|
52
|
-
if (sourceDescriptor == null || facadeDescriptor?.configurable === false) {
|
|
53
|
-
// Callable facades keep intrinsic non-configurable slots such as prototype.
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
Reflect.defineProperty(legacyModule, exportName, {
|
|
57
|
-
enumerable: sourceDescriptor.enumerable,
|
|
58
|
-
get: () => Reflect.get(module, exportName)
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
const hasDefaultExport = Reflect.getOwnPropertyDescriptor(module, 'default') != null;
|
|
62
|
-
Object.defineProperties(legacyModule, {
|
|
63
|
-
__esModule: {
|
|
64
|
-
value: true
|
|
65
|
-
},
|
|
66
|
-
default: {
|
|
67
|
-
enumerable: true,
|
|
68
|
-
get: hasDefaultExport ? () => Reflect.get(module, 'default') : () => module
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
return legacyModule;
|
|
72
|
-
}
|
|
73
37
|
function normalizeExposedModule(exposedModule) {
|
|
74
38
|
return exposedModule.startsWith('./') ? exposedModule : `./${exposedModule}`;
|
|
75
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getLegacyContainerPair","ExposedModuleAlreadyRegisteredError","getMicroFrontendGlobalContext","MicroFrontendGlobalContextCompatibilityError","exposeContainerModule","container","exposedModule","module","normalizedModule","normalizeExposedModule","legacyModule","normalizeLegacyModule","legacyContainer","Reflect","has","exposedModules","exposeMap","appName","ownsModernContainer","Object","is","get","__CONTAINERS__","legacyModuleValue","
|
|
1
|
+
{"version":3,"names":["getLegacyContainerPair","ExposedModuleAlreadyRegisteredError","getMicroFrontendGlobalContext","MicroFrontendGlobalContextCompatibilityError","toLegacyEsm","exposeContainerModule","container","exposedModule","module","normalizedModule","normalizeExposedModule","legacyModule","normalizeLegacyModule","legacyContainer","Reflect","has","exposedModules","exposeMap","appName","ownsModernContainer","Object","is","get","__CONTAINERS__","legacyModuleValue","set","defineProperty","configurable","enumerable","error","deleteProperty","startsWith","slice"],"sourceRoot":"../../../src","sources":["runtime/containerModuleExposure.ts"],"mappings":";;AAAA,SAASA,sBAAsB,QAAQ,uBAAoB;AAC3D,SAASC,mCAAmC,QAAQ,aAAU;AAC9D,SAASC,6BAA6B,EAAEC,4CAA4C,QAAQ,oBAAiB;AAC7G,SAASC,WAAW,QAAQ,gBAAa;AAGzC,OAAO,SAASC,qBAAqBA,CAACC,SAAuB,EAAEC,aAAqB,EAAEC,MAAe,EAAQ;EAC3G,MAAMC,gBAAgB,GAAGC,sBAAsB,CAACH,aAAa,CAAC;EAC9D,MAAMI,YAAY,GAAGC,qBAAqB,CAACL,aAAa,CAAC;EACzD,MAAMM,eAAe,GAAGb,sBAAsB,CAACM,SAAS,CAAC;EACzD,IACEQ,OAAO,CAACC,GAAG,CAACT,SAAS,CAACU,cAAc,EAAEP,gBAAgB,CAAC,IACtDI,eAAe,IAAI,IAAI,IAAIC,OAAO,CAACC,GAAG,CAACF,eAAe,CAACI,SAAS,EAAEN,YAAY,CAAE,EACjF;IACA,MAAM,IAAIV,mCAAmC,CAACK,SAAS,CAACY,OAAO,EAAET,gBAAgB,CAAC;EACpF;EAEA,MAAMU,mBAAmB,GAAGC,MAAM,CAACC,EAAE,CACnCP,OAAO,CAACQ,GAAG,CAACpB,6BAA6B,CAAC,CAAC,CAACqB,cAAc,EAAEjB,SAAS,CAACY,OAAO,CAAC,EAC9EZ,SACF,CAAC;EACD,MAAMkB,iBAAiB,GAAGX,eAAe,IAAI,IAAI,GAAGL,MAAM,GAAGJ,WAAW,CAACI,MAAM,CAAC;EAChF,IAAI;IACF,IAAIW,mBAAmB,IAAI,CAACL,OAAO,CAACW,GAAG,CAACnB,SAAS,CAACU,cAAc,EAAEP,gBAAgB,EAAED,MAAM,CAAC,EAAE;MAC3F,MAAM,IAAIL,4CAA4C,CAAC,4BAA4B,CAAC;IACtF;IACA,IACEU,eAAe,IAAI,IAAI,IACvB,CAACC,OAAO,CAACY,cAAc,CAACb,eAAe,CAACI,SAAS,EAAEN,YAAY,EAAE;MAC/DgB,YAAY,EAAE,IAAI;MAClBC,UAAU,EAAE,IAAI;MAChBN,GAAG,EAAEA,CAAA,KAAME;IACb,CAAC,CAAC,EACF;MACA,MAAM,IAAIrB,4CAA4C,CAAC,4BAA4B,CAAC;IACtF;EACF,CAAC,CAAC,OAAO0B,KAAK,EAAE;IACd,IAAIV,mBAAmB,EAAE;MACvBL,OAAO,CAACgB,cAAc,CAACxB,SAAS,CAACU,cAAc,EAAEP,gBAAgB,CAAC;IACpE;IACA,IAAII,eAAe,IAAI,IAAI,EAAE;MAC3BC,OAAO,CAACgB,cAAc,CAACjB,eAAe,CAACI,SAAS,EAAEN,YAAY,CAAC;IACjE;IACA,MAAMkB,KAAK;EACb;AACF;AAEA,SAASnB,sBAAsBA,CAACH,aAAqB,EAAU;EAC7D,OAAOA,aAAa,CAACwB,UAAU,CAAC,IAAI,CAAC,GAAGxB,aAAa,GAAG,KAAKA,aAAa,EAAE;AAC9E;AAEA,SAASK,qBAAqBA,CAACL,aAAqB,EAAU;EAC5D,OAAOA,aAAa,CAACwB,UAAU,CAAC,IAAI,CAAC,GAAGxB,aAAa,CAACyB,KAAK,CAAC,CAAC,CAAC,GAAGzB,aAAa;AAChF","ignoreList":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// Keep this helper self-contained: the build plugin serializes it into the prelude.
|
|
4
|
+
export function toLegacyEsm(module) {
|
|
5
|
+
if ((typeof module !== 'object' || module == null) && typeof module !== 'function') {
|
|
6
|
+
return module;
|
|
7
|
+
}
|
|
8
|
+
if (Reflect.get(module, '__esModule') === true) {
|
|
9
|
+
return module;
|
|
10
|
+
}
|
|
11
|
+
const legacyModule = typeof module === 'function' ? function (...args) {
|
|
12
|
+
return Reflect.apply(module, this, args);
|
|
13
|
+
} : {};
|
|
14
|
+
for (const exportName of Reflect.ownKeys(module)) {
|
|
15
|
+
if (exportName === '__esModule' || exportName === 'default') {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
const sourceDescriptor = Reflect.getOwnPropertyDescriptor(module, exportName);
|
|
19
|
+
const facadeDescriptor = Reflect.getOwnPropertyDescriptor(legacyModule, exportName);
|
|
20
|
+
if (sourceDescriptor == null || facadeDescriptor?.configurable === false) {
|
|
21
|
+
// Callable facades keep intrinsic non-configurable slots such as prototype.
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
Reflect.defineProperty(legacyModule, exportName, {
|
|
25
|
+
enumerable: sourceDescriptor.enumerable,
|
|
26
|
+
get: () => Reflect.get(module, exportName)
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
const hasDefaultExport = Reflect.getOwnPropertyDescriptor(module, 'default') != null;
|
|
30
|
+
Object.defineProperties(legacyModule, {
|
|
31
|
+
__esModule: {
|
|
32
|
+
value: true
|
|
33
|
+
},
|
|
34
|
+
default: {
|
|
35
|
+
enumerable: true,
|
|
36
|
+
get: hasDefaultExport ? () => Reflect.get(module, 'default') : () => module
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
return legacyModule;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=legacyEsm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["toLegacyEsm","module","Reflect","get","legacyModule","args","apply","exportName","ownKeys","sourceDescriptor","getOwnPropertyDescriptor","facadeDescriptor","configurable","defineProperty","enumerable","hasDefaultExport","Object","defineProperties","__esModule","value","default"],"sourceRoot":"../../../src","sources":["runtime/legacyEsm.ts"],"mappings":";;AAAA;AACA,OAAO,SAASA,WAAWA,CAACC,MAAe,EAAW;EACpD,IAAI,CAAC,OAAOA,MAAM,KAAK,QAAQ,IAAIA,MAAM,IAAI,IAAI,KAAK,OAAOA,MAAM,KAAK,UAAU,EAAE;IAClF,OAAOA,MAAM;EACf;EACA,IAAIC,OAAO,CAACC,GAAG,CAACF,MAAM,EAAE,YAAY,CAAC,KAAK,IAAI,EAAE;IAC9C,OAAOA,MAAM;EACf;EACA,MAAMG,YAAY,GAChB,OAAOH,MAAM,KAAK,UAAU,GACxB,UAAyB,GAAGI,IAAe,EAAW;IACpD,OAAOH,OAAO,CAACI,KAAK,CAACL,MAAM,EAAE,IAAI,EAAEI,IAAI,CAAC;EAC1C,CAAC,GACD,CAAC,CAAC;EACR,KAAK,MAAME,UAAU,IAAIL,OAAO,CAACM,OAAO,CAACP,MAAM,CAAC,EAAE;IAChD,IAAIM,UAAU,KAAK,YAAY,IAAIA,UAAU,KAAK,SAAS,EAAE;MAC3D;IACF;IACA,MAAME,gBAAgB,GAAGP,OAAO,CAACQ,wBAAwB,CAACT,MAAM,EAAEM,UAAU,CAAC;IAC7E,MAAMI,gBAAgB,GAAGT,OAAO,CAACQ,wBAAwB,CAACN,YAAY,EAAEG,UAAU,CAAC;IACnF,IAAIE,gBAAgB,IAAI,IAAI,IAAIE,gBAAgB,EAAEC,YAAY,KAAK,KAAK,EAAE;MACxE;MACA;IACF;IACAV,OAAO,CAACW,cAAc,CAACT,YAAY,EAAEG,UAAU,EAAE;MAC/CO,UAAU,EAAEL,gBAAgB,CAACK,UAAU;MACvCX,GAAG,EAAEA,CAAA,KAAMD,OAAO,CAACC,GAAG,CAACF,MAAM,EAAEM,UAAU;IAC3C,CAAC,CAAC;EACJ;EACA,MAAMQ,gBAAgB,GAAGb,OAAO,CAACQ,wBAAwB,CAACT,MAAM,EAAE,SAAS,CAAC,IAAI,IAAI;EACpFe,MAAM,CAACC,gBAAgB,CAACb,YAAY,EAAE;IACpCc,UAAU,EAAE;MAAEC,KAAK,EAAE;IAAK,CAAC;IAC3BC,OAAO,EAAE;MACPN,UAAU,EAAE,IAAI;MAChBX,GAAG,EAAEY,gBAAgB,GAAG,MAAMb,OAAO,CAACC,GAAG,CAACF,MAAM,EAAE,SAAS,CAAC,GAAG,MAAMA;IACvE;EACF,CAAC,CAAC;EACF,OAAOG,YAAY;AACrB","ignoreList":[]}
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
import { createContainer, exposeModule, getContainer, getExposedModule, removeContainer } from "./containerRegistry.js";
|
|
4
4
|
import { ExposedModuleNotFoundError, SharedModuleAlreadyRegisteredError } from "./errors.js";
|
|
5
5
|
import { getMicroFrontendGlobalContext } from "./globalContext.js";
|
|
6
|
+
import { toLegacyEsm } from "./legacyEsm.js";
|
|
6
7
|
import { parseAppRequest } from "./parseAppRequest.js";
|
|
8
|
+
import { registerSharedValue } from "./sharedModule.js";
|
|
7
9
|
export { createContainer, exposeModule, getContainer, removeContainer };
|
|
8
10
|
export function getMicroFrontendRuntimeContext() {
|
|
9
11
|
const context = getMicroFrontendGlobalContext();
|
|
@@ -12,20 +14,9 @@ export function getMicroFrontendRuntimeContext() {
|
|
|
12
14
|
}
|
|
13
15
|
export function registerShared(moduleName, module) {
|
|
14
16
|
const sharedModules = getMicroFrontendGlobalContext().__SHARED__;
|
|
15
|
-
|
|
16
|
-
if (existingModule != null) {
|
|
17
|
-
if (isSharedModule(existingModule) && Object.is(existingModule.get(), module)) {
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
17
|
+
if (!registerSharedValue(sharedModules, moduleName, module, toLegacyEsm)) {
|
|
20
18
|
throw new SharedModuleAlreadyRegisteredError(moduleName);
|
|
21
19
|
}
|
|
22
|
-
sharedModules[moduleName] = {
|
|
23
|
-
get: () => module,
|
|
24
|
-
loaded: true
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
function isSharedModule(value) {
|
|
28
|
-
return typeof value === 'object' && value != null && typeof Reflect.get(value, 'get') === 'function' && typeof Reflect.get(value, 'loaded') === 'boolean';
|
|
29
20
|
}
|
|
30
21
|
export async function disposeAppResources(appName) {
|
|
31
22
|
const disposeCallbacks = getMicroFrontendRuntimeContext().disposeCallbacksByApp[appName];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createContainer","exposeModule","getContainer","getExposedModule","removeContainer","ExposedModuleNotFoundError","SharedModuleAlreadyRegisteredError","getMicroFrontendGlobalContext","parseAppRequest","getMicroFrontendRuntimeContext","context","ensureRuntimeContext","registerShared","moduleName","module","sharedModules","__SHARED__","
|
|
1
|
+
{"version":3,"names":["createContainer","exposeModule","getContainer","getExposedModule","removeContainer","ExposedModuleNotFoundError","SharedModuleAlreadyRegisteredError","getMicroFrontendGlobalContext","toLegacyEsm","parseAppRequest","registerSharedValue","getMicroFrontendRuntimeContext","context","ensureRuntimeContext","registerShared","moduleName","module","sharedModules","__SHARED__","disposeAppResources","appName","disposeCallbacks","disposeCallbacksByApp","runAppDisposeCallbacks","hasContainer","importModule","request","exposedModule","container","containers","__CONTAINERS__","propertyDescriptors","Map","runtimeProperties","dispose","isRegisterAppDispose","Reflect","get","createRegisterAppDispose","isDisposeCallbackRegistry","property","ownKeys","set","getOwnPropertyDescriptor","value","defineProperty","configurable","enumerable","writable","Error","String","error","descriptor","Array","from","reverse","deleteProperty","isObjectRecord","isArray","Object","values","every","isDisposeCallbackSet","Symbol","iterator","appNameOrCallback","callback","registerAppDisposeCallback","Set","add","isRegistered","delete","callbacks","firstDisposeError","didDisposeFail","microFrontendModuleRegistry"],"sourceRoot":"../../../src","sources":["runtime/registry.ts"],"mappings":"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","ignoreList":[]}
|