@vercel/microfrontends 1.1.1-canary.3 → 1.1.1-canary.4
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/dist/bin/cli.cjs +225 -493
- package/dist/config.cjs +27 -62
- package/dist/config.cjs.map +1 -1
- package/dist/config.d.ts +153 -4
- package/dist/config.js +27 -62
- package/dist/config.js.map +1 -1
- package/dist/experimental/sveltekit.cjs +228 -480
- package/dist/experimental/sveltekit.cjs.map +1 -1
- package/dist/experimental/sveltekit.js +218 -470
- package/dist/experimental/sveltekit.js.map +1 -1
- package/dist/experimental/vite.cjs +258 -502
- package/dist/experimental/vite.cjs.map +1 -1
- package/dist/experimental/vite.js +244 -488
- package/dist/experimental/vite.js.map +1 -1
- package/dist/microfrontends/server.cjs +227 -476
- package/dist/microfrontends/server.cjs.map +1 -1
- package/dist/microfrontends/server.d.ts +14 -20
- package/dist/microfrontends/server.js +217 -466
- package/dist/microfrontends/server.js.map +1 -1
- package/dist/next/config.cjs +229 -489
- package/dist/next/config.cjs.map +1 -1
- package/dist/next/config.js +219 -479
- package/dist/next/config.js.map +1 -1
- package/dist/next/endpoints.d.ts +2 -2
- package/dist/next/middleware.cjs +42 -162
- package/dist/next/middleware.cjs.map +1 -1
- package/dist/next/middleware.d.ts +2 -4
- package/dist/next/middleware.js +42 -162
- package/dist/next/middleware.js.map +1 -1
- package/dist/next/testing.cjs +28 -64
- package/dist/next/testing.cjs.map +1 -1
- package/dist/next/testing.d.ts +4 -4
- package/dist/next/testing.js +28 -64
- package/dist/next/testing.js.map +1 -1
- package/dist/overrides.d.ts +3 -3
- package/dist/schema.cjs +2 -9
- package/dist/schema.cjs.map +1 -1
- package/dist/schema.d.ts +3 -4
- package/dist/schema.js +1 -7
- package/dist/schema.js.map +1 -1
- package/dist/{types-6ee19ccc.d.ts → types-54064641.d.ts} +2 -13
- package/dist/{types-73527280.d.ts → types-a4add5ab.d.ts} +1 -1
- package/dist/{types-74e3336c.d.ts → types-f1260e44.d.ts} +1 -1
- package/dist/utils/mfe-port.cjs +232 -483
- package/dist/utils/mfe-port.cjs.map +1 -1
- package/dist/utils/mfe-port.js +218 -469
- package/dist/utils/mfe-port.js.map +1 -1
- package/dist/validation.cjs +0 -31
- package/dist/validation.cjs.map +1 -1
- package/dist/validation.d.ts +1 -1
- package/dist/validation.js +0 -31
- package/dist/validation.js.map +1 -1
- package/package.json +1 -8
- package/schema/schema.json +0 -33
- package/dist/index-7e69650e.d.ts +0 -165
- package/dist/microfrontends.cjs +0 -969
- package/dist/microfrontends.cjs.map +0 -1
- package/dist/microfrontends.d.ts +0 -45
- package/dist/microfrontends.js +0 -942
- package/dist/microfrontends.js.map +0 -1
package/dist/next/middleware.js
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
import { NextResponse } from "next/server";
|
|
3
3
|
import { pathToRegexp as pathToRegexp3 } from "path-to-regexp";
|
|
4
4
|
|
|
5
|
+
// src/next/utils/route-to-local-proxy.ts
|
|
6
|
+
function routeToLocalProxy() {
|
|
7
|
+
const isDevEnv = (process.env.VERCEL_ENV ?? "development") === "development";
|
|
8
|
+
return isDevEnv && Boolean(process.env.TURBO_TASK_HAS_MFE_PROXY);
|
|
9
|
+
}
|
|
10
|
+
|
|
5
11
|
// src/config/microfrontends-config/isomorphic/index.ts
|
|
6
12
|
import { parse } from "jsonc-parser";
|
|
7
13
|
|
|
@@ -109,11 +115,6 @@ function getConfigStringFromEnv() {
|
|
|
109
115
|
return config;
|
|
110
116
|
}
|
|
111
117
|
|
|
112
|
-
// src/config/schema/utils/is-main-config.ts
|
|
113
|
-
function isMainConfig(c) {
|
|
114
|
-
return !("partOf" in c);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
118
|
// src/config/schema/utils/is-default-app.ts
|
|
118
119
|
function isDefaultApp(a) {
|
|
119
120
|
return !("routing" in a);
|
|
@@ -687,42 +688,28 @@ var MicrofrontendConfigIsomorphic = class {
|
|
|
687
688
|
constructor({
|
|
688
689
|
config,
|
|
689
690
|
overrides,
|
|
690
|
-
meta,
|
|
691
691
|
opts
|
|
692
692
|
}) {
|
|
693
693
|
this.childApplications = {};
|
|
694
694
|
MicrofrontendConfigIsomorphic.validate(config, opts);
|
|
695
695
|
const disableOverrides = config.options?.disableOverrides ?? config.options?.vercel?.disableOverrides ?? false;
|
|
696
696
|
this.overrides = overrides && !disableOverrides ? overrides : void 0;
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
app: appConfig,
|
|
704
|
-
overrides: appOverrides
|
|
705
|
-
});
|
|
706
|
-
} else {
|
|
707
|
-
this.childApplications[appId] = new ChildApplication(appId, {
|
|
708
|
-
app: appConfig,
|
|
709
|
-
overrides: appOverrides
|
|
710
|
-
});
|
|
711
|
-
}
|
|
712
|
-
}
|
|
713
|
-
} else {
|
|
714
|
-
this.partOf = config.partOf;
|
|
715
|
-
const appOverrides = !disableOverrides ? this.overrides?.applications[meta.fromApp] : void 0;
|
|
716
|
-
this.childApplications[meta.fromApp] = new ChildApplication(
|
|
717
|
-
meta.fromApp,
|
|
718
|
-
{
|
|
719
|
-
// we don't know routing because we're not in the main config
|
|
720
|
-
app: { routing: [] },
|
|
697
|
+
let defaultApplication;
|
|
698
|
+
for (const [appId, appConfig] of Object.entries(config.applications)) {
|
|
699
|
+
const appOverrides = !disableOverrides ? this.overrides?.applications[appId] : void 0;
|
|
700
|
+
if (isDefaultApp(appConfig)) {
|
|
701
|
+
defaultApplication = new DefaultApplication(appId, {
|
|
702
|
+
app: appConfig,
|
|
721
703
|
overrides: appOverrides
|
|
722
|
-
}
|
|
723
|
-
|
|
704
|
+
});
|
|
705
|
+
} else {
|
|
706
|
+
this.childApplications[appId] = new ChildApplication(appId, {
|
|
707
|
+
app: appConfig,
|
|
708
|
+
overrides: appOverrides
|
|
709
|
+
});
|
|
710
|
+
}
|
|
724
711
|
}
|
|
725
|
-
if (
|
|
712
|
+
if (!defaultApplication) {
|
|
726
713
|
throw new MicrofrontendError(
|
|
727
714
|
"Could not find default application in microfrontends configuration",
|
|
728
715
|
{
|
|
@@ -731,34 +718,30 @@ var MicrofrontendConfigIsomorphic = class {
|
|
|
731
718
|
}
|
|
732
719
|
);
|
|
733
720
|
}
|
|
721
|
+
this.defaultApplication = defaultApplication;
|
|
734
722
|
this.config = config;
|
|
735
723
|
this.options = config.options;
|
|
736
724
|
this.serialized = {
|
|
737
725
|
config,
|
|
738
|
-
overrides
|
|
739
|
-
meta
|
|
726
|
+
overrides
|
|
740
727
|
};
|
|
741
728
|
}
|
|
742
729
|
static validate(config, opts) {
|
|
743
730
|
const skipValidation = opts?.skipValidation ?? [];
|
|
744
731
|
const c = typeof config === "string" ? parse(config) : config;
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
validateDeprecatedFields(c);
|
|
750
|
-
}
|
|
732
|
+
validateConfigPaths(c.applications);
|
|
733
|
+
validateConfigDefaultApplication(c.applications);
|
|
734
|
+
if (!skipValidation.includes("deprecatedFields")) {
|
|
735
|
+
validateDeprecatedFields(c);
|
|
751
736
|
}
|
|
752
737
|
return c;
|
|
753
738
|
}
|
|
754
739
|
static fromEnv({
|
|
755
|
-
meta,
|
|
756
740
|
cookies
|
|
757
741
|
}) {
|
|
758
742
|
return new MicrofrontendConfigIsomorphic({
|
|
759
743
|
config: parse(getConfigStringFromEnv()),
|
|
760
|
-
overrides: parseOverrides(cookies ?? [])
|
|
761
|
-
meta
|
|
744
|
+
overrides: parseOverrides(cookies ?? [])
|
|
762
745
|
});
|
|
763
746
|
}
|
|
764
747
|
isOverridesDisabled() {
|
|
@@ -783,7 +766,7 @@ var MicrofrontendConfigIsomorphic = class {
|
|
|
783
766
|
].filter(Boolean);
|
|
784
767
|
}
|
|
785
768
|
getApplication(name) {
|
|
786
|
-
if (this.defaultApplication
|
|
769
|
+
if (this.defaultApplication.name === name || this.defaultApplication.packageName === name) {
|
|
787
770
|
return this.defaultApplication;
|
|
788
771
|
}
|
|
789
772
|
const app = this.childApplications[name] || Object.values(this.childApplications).find(
|
|
@@ -801,7 +784,7 @@ var MicrofrontendConfigIsomorphic = class {
|
|
|
801
784
|
return app;
|
|
802
785
|
}
|
|
803
786
|
getApplicationByProjectId(projectId) {
|
|
804
|
-
if (this.defaultApplication
|
|
787
|
+
if (this.defaultApplication.projectId === projectId) {
|
|
805
788
|
return this.defaultApplication;
|
|
806
789
|
}
|
|
807
790
|
return Object.values(this.childApplications).find(
|
|
@@ -809,19 +792,9 @@ var MicrofrontendConfigIsomorphic = class {
|
|
|
809
792
|
);
|
|
810
793
|
}
|
|
811
794
|
/**
|
|
812
|
-
* Returns the default application.
|
|
813
|
-
* is undefined ( )
|
|
795
|
+
* Returns the default application.
|
|
814
796
|
*/
|
|
815
797
|
getDefaultApplication() {
|
|
816
|
-
if (!this.defaultApplication) {
|
|
817
|
-
throw new MicrofrontendError(
|
|
818
|
-
"Could not find default application in microfrontends configuration",
|
|
819
|
-
{
|
|
820
|
-
type: "application",
|
|
821
|
-
subtype: "not_found"
|
|
822
|
-
}
|
|
823
|
-
);
|
|
824
|
-
}
|
|
825
798
|
return this.defaultApplication;
|
|
826
799
|
}
|
|
827
800
|
/**
|
|
@@ -848,11 +821,9 @@ var MicrofrontendConfigIsomorphic = class {
|
|
|
848
821
|
}
|
|
849
822
|
])
|
|
850
823
|
);
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
};
|
|
855
|
-
}
|
|
824
|
+
applications[this.defaultApplication.name] = {
|
|
825
|
+
default: true
|
|
826
|
+
};
|
|
856
827
|
return new MicrofrontendConfigClient({
|
|
857
828
|
applications
|
|
858
829
|
});
|
|
@@ -862,97 +833,13 @@ var MicrofrontendConfigIsomorphic = class {
|
|
|
862
833
|
}
|
|
863
834
|
};
|
|
864
835
|
|
|
865
|
-
// src/config/microfrontends-config/isomorphic/child.ts
|
|
866
|
-
var MicrofrontendChildConfig = class extends MicrofrontendConfigIsomorphic {
|
|
867
|
-
constructor({
|
|
868
|
-
config,
|
|
869
|
-
overrides,
|
|
870
|
-
meta
|
|
871
|
-
}) {
|
|
872
|
-
super({ config, overrides, meta });
|
|
873
|
-
this.isMainConfig = false;
|
|
874
|
-
this.partOf = config.partOf;
|
|
875
|
-
}
|
|
876
|
-
};
|
|
877
|
-
|
|
878
|
-
// src/config/microfrontends-config/isomorphic/main.ts
|
|
879
|
-
var MicrofrontendMainConfig = class extends MicrofrontendConfigIsomorphic {
|
|
880
|
-
constructor({
|
|
881
|
-
config,
|
|
882
|
-
overrides,
|
|
883
|
-
meta
|
|
884
|
-
}) {
|
|
885
|
-
super({ config, overrides, meta });
|
|
886
|
-
this.isMainConfig = true;
|
|
887
|
-
const disableOverrides = config.options?.disableOverrides ?? config.options?.vercel?.disableOverrides ?? false;
|
|
888
|
-
let defaultApplication;
|
|
889
|
-
for (const [appId, appConfig] of Object.entries(config.applications)) {
|
|
890
|
-
const appOverrides = !disableOverrides ? this.overrides?.applications[appId] : void 0;
|
|
891
|
-
if (isDefaultApp(appConfig)) {
|
|
892
|
-
defaultApplication = new DefaultApplication(appId, {
|
|
893
|
-
app: appConfig,
|
|
894
|
-
overrides: appOverrides
|
|
895
|
-
});
|
|
896
|
-
} else {
|
|
897
|
-
this.childApplications[appId] = new ChildApplication(appId, {
|
|
898
|
-
app: appConfig,
|
|
899
|
-
overrides: appOverrides
|
|
900
|
-
});
|
|
901
|
-
}
|
|
902
|
-
}
|
|
903
|
-
if (!defaultApplication) {
|
|
904
|
-
throw new MicrofrontendError(
|
|
905
|
-
"Could not find default application in microfrontends configuration",
|
|
906
|
-
{
|
|
907
|
-
type: "application",
|
|
908
|
-
subtype: "not_found"
|
|
909
|
-
}
|
|
910
|
-
);
|
|
911
|
-
}
|
|
912
|
-
this.defaultApplication = defaultApplication;
|
|
913
|
-
}
|
|
914
|
-
};
|
|
915
|
-
|
|
916
|
-
// src/config/microfrontends/isomorphic/index.ts
|
|
917
|
-
var Microfrontends = class {
|
|
918
|
-
constructor({
|
|
919
|
-
config,
|
|
920
|
-
overrides,
|
|
921
|
-
meta
|
|
922
|
-
}) {
|
|
923
|
-
if (isMainConfig(config)) {
|
|
924
|
-
this.config = new MicrofrontendMainConfig({ config, overrides, meta });
|
|
925
|
-
} else {
|
|
926
|
-
this.config = new MicrofrontendChildConfig({ config, overrides, meta });
|
|
927
|
-
}
|
|
928
|
-
}
|
|
929
|
-
isChildConfig() {
|
|
930
|
-
return this.config instanceof MicrofrontendChildConfig;
|
|
931
|
-
}
|
|
932
|
-
static fromEnv({
|
|
933
|
-
cookies,
|
|
934
|
-
meta
|
|
935
|
-
}) {
|
|
936
|
-
const config = MicrofrontendConfigIsomorphic.fromEnv({
|
|
937
|
-
cookies,
|
|
938
|
-
meta
|
|
939
|
-
});
|
|
940
|
-
return new Microfrontends(config.serialize());
|
|
941
|
-
}
|
|
942
|
-
};
|
|
943
|
-
|
|
944
|
-
// src/next/utils/route-to-local-proxy.ts
|
|
945
|
-
function routeToLocalProxy() {
|
|
946
|
-
const isDevEnv = (process.env.VERCEL_ENV ?? "development") === "development";
|
|
947
|
-
return isDevEnv && Boolean(process.env.TURBO_TASK_HAS_MFE_PROXY);
|
|
948
|
-
}
|
|
949
|
-
|
|
950
836
|
// src/next/middleware/middleware.ts
|
|
951
837
|
function getMfeFlagHeader(req) {
|
|
952
838
|
const flagValue = req.headers.get("x-vercel-mfe-flag-value");
|
|
953
839
|
if (flagValue === "true") {
|
|
954
840
|
return true;
|
|
955
|
-
}
|
|
841
|
+
}
|
|
842
|
+
if (flagValue === "false") {
|
|
956
843
|
return false;
|
|
957
844
|
}
|
|
958
845
|
return null;
|
|
@@ -1004,28 +891,23 @@ function getFlagHandler({
|
|
|
1004
891
|
}
|
|
1005
892
|
function getMicrofrontendsMiddleware({
|
|
1006
893
|
request,
|
|
1007
|
-
flagValues
|
|
1008
|
-
fromApp
|
|
894
|
+
flagValues
|
|
1009
895
|
}) {
|
|
1010
|
-
const microfrontends =
|
|
1011
|
-
cookies: request.cookies.getAll()
|
|
1012
|
-
meta: {
|
|
1013
|
-
fromApp
|
|
1014
|
-
}
|
|
896
|
+
const microfrontends = MicrofrontendConfigIsomorphic.fromEnv({
|
|
897
|
+
cookies: request.cookies.getAll()
|
|
1015
898
|
});
|
|
1016
899
|
const middlewares = [];
|
|
1017
900
|
if (!process.env.NEXT_PUBLIC_MFE_CURRENT_APPLICATION) {
|
|
1018
901
|
throw new Error("NEXT_PUBLIC_MFE_CURRENT_APPLICATION is not set");
|
|
1019
902
|
}
|
|
1020
|
-
const currentApplication = microfrontends.
|
|
903
|
+
const currentApplication = microfrontends.getApplication(
|
|
1021
904
|
process.env.NEXT_PUBLIC_MFE_CURRENT_APPLICATION
|
|
1022
905
|
);
|
|
1023
906
|
if (!currentApplication.isDefault()) {
|
|
1024
907
|
return middlewares;
|
|
1025
908
|
}
|
|
1026
|
-
const
|
|
1027
|
-
const
|
|
1028
|
-
for (const application of config.getChildApplications()) {
|
|
909
|
+
const localProxyPort = microfrontends.getLocalProxyPort();
|
|
910
|
+
for (const application of microfrontends.getChildApplications()) {
|
|
1029
911
|
for (const pathGroup of application.routing) {
|
|
1030
912
|
const flagName = pathGroup.flag;
|
|
1031
913
|
if (flagName) {
|
|
@@ -1055,14 +937,12 @@ function getMicrofrontendsMiddleware({
|
|
|
1055
937
|
}
|
|
1056
938
|
async function runMicrofrontendsMiddleware({
|
|
1057
939
|
request,
|
|
1058
|
-
fromApp,
|
|
1059
940
|
flagValues
|
|
1060
941
|
}) {
|
|
1061
942
|
const pathname = request.nextUrl.pathname;
|
|
1062
943
|
const middlewares = getMicrofrontendsMiddleware({
|
|
1063
944
|
request,
|
|
1064
|
-
flagValues
|
|
1065
|
-
fromApp
|
|
945
|
+
flagValues
|
|
1066
946
|
});
|
|
1067
947
|
for (const mware of middlewares) {
|
|
1068
948
|
if (typeof mware.src === "string" ? pathname === mware.src : mware.src.test(pathname)) {
|