@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.
Files changed (60) hide show
  1. package/dist/bin/cli.cjs +225 -493
  2. package/dist/config.cjs +27 -62
  3. package/dist/config.cjs.map +1 -1
  4. package/dist/config.d.ts +153 -4
  5. package/dist/config.js +27 -62
  6. package/dist/config.js.map +1 -1
  7. package/dist/experimental/sveltekit.cjs +228 -480
  8. package/dist/experimental/sveltekit.cjs.map +1 -1
  9. package/dist/experimental/sveltekit.js +218 -470
  10. package/dist/experimental/sveltekit.js.map +1 -1
  11. package/dist/experimental/vite.cjs +258 -502
  12. package/dist/experimental/vite.cjs.map +1 -1
  13. package/dist/experimental/vite.js +244 -488
  14. package/dist/experimental/vite.js.map +1 -1
  15. package/dist/microfrontends/server.cjs +227 -476
  16. package/dist/microfrontends/server.cjs.map +1 -1
  17. package/dist/microfrontends/server.d.ts +14 -20
  18. package/dist/microfrontends/server.js +217 -466
  19. package/dist/microfrontends/server.js.map +1 -1
  20. package/dist/next/config.cjs +229 -489
  21. package/dist/next/config.cjs.map +1 -1
  22. package/dist/next/config.js +219 -479
  23. package/dist/next/config.js.map +1 -1
  24. package/dist/next/endpoints.d.ts +2 -2
  25. package/dist/next/middleware.cjs +42 -162
  26. package/dist/next/middleware.cjs.map +1 -1
  27. package/dist/next/middleware.d.ts +2 -4
  28. package/dist/next/middleware.js +42 -162
  29. package/dist/next/middleware.js.map +1 -1
  30. package/dist/next/testing.cjs +28 -64
  31. package/dist/next/testing.cjs.map +1 -1
  32. package/dist/next/testing.d.ts +4 -4
  33. package/dist/next/testing.js +28 -64
  34. package/dist/next/testing.js.map +1 -1
  35. package/dist/overrides.d.ts +3 -3
  36. package/dist/schema.cjs +2 -9
  37. package/dist/schema.cjs.map +1 -1
  38. package/dist/schema.d.ts +3 -4
  39. package/dist/schema.js +1 -7
  40. package/dist/schema.js.map +1 -1
  41. package/dist/{types-6ee19ccc.d.ts → types-54064641.d.ts} +2 -13
  42. package/dist/{types-73527280.d.ts → types-a4add5ab.d.ts} +1 -1
  43. package/dist/{types-74e3336c.d.ts → types-f1260e44.d.ts} +1 -1
  44. package/dist/utils/mfe-port.cjs +232 -483
  45. package/dist/utils/mfe-port.cjs.map +1 -1
  46. package/dist/utils/mfe-port.js +218 -469
  47. package/dist/utils/mfe-port.js.map +1 -1
  48. package/dist/validation.cjs +0 -31
  49. package/dist/validation.cjs.map +1 -1
  50. package/dist/validation.d.ts +1 -1
  51. package/dist/validation.js +0 -31
  52. package/dist/validation.js.map +1 -1
  53. package/package.json +1 -8
  54. package/schema/schema.json +0 -33
  55. package/dist/index-7e69650e.d.ts +0 -165
  56. package/dist/microfrontends.cjs +0 -969
  57. package/dist/microfrontends.cjs.map +0 -1
  58. package/dist/microfrontends.d.ts +0 -45
  59. package/dist/microfrontends.js +0 -942
  60. package/dist/microfrontends.js.map +0 -1
@@ -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
- this.isMainConfig = isMainConfig(config);
698
- if (isMainConfig(config)) {
699
- for (const [appId, appConfig] of Object.entries(config.applications)) {
700
- const appOverrides = !disableOverrides ? this.overrides?.applications[appId] : void 0;
701
- if (isDefaultApp(appConfig)) {
702
- this.defaultApplication = new DefaultApplication(appId, {
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 (isMainConfig(config) && !this.defaultApplication) {
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
- if (isMainConfig(c)) {
746
- validateConfigPaths(c.applications);
747
- validateConfigDefaultApplication(c.applications);
748
- if (!skipValidation.includes("deprecatedFields")) {
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?.name === name || this.defaultApplication?.packageName === name) {
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?.projectId === projectId) {
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. This can throw if 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
- if (this.defaultApplication) {
852
- applications[this.defaultApplication.name] = {
853
- default: true
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
- } else if (flagValue === "false") {
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 = Microfrontends.fromEnv({
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.config.getApplication(
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 config = microfrontends.config;
1027
- const localProxyPort = microfrontends.config.getLocalProxyPort();
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)) {