remote-components 0.2.0 → 0.2.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.
Files changed (47) hide show
  1. package/dist/config/nextjs.cjs +1 -1
  2. package/dist/config/nextjs.cjs.map +1 -1
  3. package/dist/config/nextjs.js +1 -1
  4. package/dist/config/nextjs.js.map +1 -1
  5. package/dist/host/html.cjs +19 -17
  6. package/dist/host/html.cjs.map +1 -1
  7. package/dist/host/html.js +19 -17
  8. package/dist/host/html.js.map +1 -1
  9. package/dist/host/nextjs/app/client-only.cjs +17 -19
  10. package/dist/host/nextjs/app/client-only.cjs.map +1 -1
  11. package/dist/host/nextjs/app/client-only.js +17 -19
  12. package/dist/host/nextjs/app/client-only.js.map +1 -1
  13. package/dist/host/react.cjs +17 -15
  14. package/dist/host/react.cjs.map +1 -1
  15. package/dist/host/react.js +17 -15
  16. package/dist/host/react.js.map +1 -1
  17. package/dist/internal/config/webpack/apply-shared-modules.cjs +6 -2
  18. package/dist/internal/config/webpack/apply-shared-modules.cjs.map +1 -1
  19. package/dist/internal/config/webpack/apply-shared-modules.js +6 -2
  20. package/dist/internal/config/webpack/apply-shared-modules.js.map +1 -1
  21. package/dist/internal/runtime/loaders/script-loader.cjs +1 -6
  22. package/dist/internal/runtime/loaders/script-loader.cjs.map +1 -1
  23. package/dist/internal/runtime/loaders/script-loader.js +4 -9
  24. package/dist/internal/runtime/loaders/script-loader.js.map +1 -1
  25. package/dist/internal/runtime/turbopack/chunk-loader.cjs +1 -6
  26. package/dist/internal/runtime/turbopack/chunk-loader.cjs.map +1 -1
  27. package/dist/internal/runtime/turbopack/chunk-loader.js +4 -9
  28. package/dist/internal/runtime/turbopack/chunk-loader.js.map +1 -1
  29. package/dist/internal/runtime/turbopack/shared-modules.cjs +3 -2
  30. package/dist/internal/runtime/turbopack/shared-modules.cjs.map +1 -1
  31. package/dist/internal/runtime/turbopack/shared-modules.js +3 -2
  32. package/dist/internal/runtime/turbopack/shared-modules.js.map +1 -1
  33. package/dist/internal/utils/error.cjs +7 -0
  34. package/dist/internal/utils/error.cjs.map +1 -1
  35. package/dist/internal/utils/error.d.ts +2 -1
  36. package/dist/internal/utils/error.js +6 -0
  37. package/dist/internal/utils/error.js.map +1 -1
  38. package/dist/internal/utils/logger.cjs +1 -1
  39. package/dist/internal/utils/logger.cjs.map +1 -1
  40. package/dist/internal/utils/logger.d.ts +1 -1
  41. package/dist/internal/utils/logger.js +1 -1
  42. package/dist/internal/utils/logger.js.map +1 -1
  43. package/dist/remote/html.cjs +1 -1
  44. package/dist/remote/html.cjs.map +1 -1
  45. package/dist/remote/html.js +1 -1
  46. package/dist/remote/html.js.map +1 -1
  47. package/package.json +1 -1
@@ -150,6 +150,11 @@ async function errorFromFailedFetch(originalUrl, resolvedUrl, res) {
150
150
  }
151
151
  return fallback;
152
152
  }
153
+ function failedProxiedAssetError(kind, url, resolvedUrl) {
154
+ return new RemoteComponentsError(
155
+ `Failed to load ${kind} "${url}" via proxy "${resolvedUrl}". Ensure withRemoteComponentsHostProxy middleware is configured, "${RC_PROTECTED_REMOTE_FETCH_PATHNAME}" is in the matcher, and the remote URL is included in allowedProxyUrls. See: ${CORS_DOCS_URL}`
156
+ );
157
+ }
153
158
  function failedProxyFetchError(originalUrl, proxyUrl, status, responseBody) {
154
159
  if (status === 404) {
155
160
  return new RemoteComponentsError(
@@ -201,7 +206,7 @@ function warnCrossOriginFetchError(logLocation, url) {
201
206
  }
202
207
  logWarn(
203
208
  logLocation,
204
- `Failed to fetch cross-origin resource "${parsed.href}". If this is a protected deployment, ensure withRemoteComponentsHostProxy middleware is configured in your host and that the remote URL is included in allowedProxyUrls. See: ${CORS_DOCS_URL}`
209
+ `Failed to fetch cross-origin resource "${parsed.href}". To load assets from a protected deployment, two steps are required: (1) configure withRemoteComponentsHostProxy middleware in your host with the remote URL in allowedProxyUrls, and (2) provide a resolveClientUrl prop that rewrites cross-origin asset URLs to go through the proxy. See: ${CORS_DOCS_URL}`
205
210
  );
206
211
  } catch {
207
212
  }
@@ -775,6 +780,7 @@ var ReactDOM = __toESM(require("react-dom"), 1);
775
780
  var ReactDOMClient = __toESM(require("react-dom/client"), 1);
776
781
 
777
782
  // src/config/webpack/apply-shared-modules.ts
783
+ var DEDUPLICATION_SKIPPED = "shared module deduplication skipped. The remote may load its own copy of shared dependencies.";
778
784
  function applySharedModules(bundle, resolve) {
779
785
  logDebug(
780
786
  "SharedModules",
@@ -818,13 +824,16 @@ function applySharedModules(bundle, resolve) {
818
824
  } else {
819
825
  logWarn(
820
826
  "SharedModules",
821
- `webpackBundle.m is not available for bundle "${bundle}"`
827
+ `webpackBundle.m is not available for bundle "${bundle}" \u2014 ${DEDUPLICATION_SKIPPED}`
822
828
  );
823
829
  }
824
830
  }
825
831
  }
826
832
  } else {
827
- logWarn("SharedModules", `No webpack require found for bundle "${bundle}"`);
833
+ logWarn(
834
+ "SharedModules",
835
+ `No webpack require found for bundle "${bundle}" \u2014 ${DEDUPLICATION_SKIPPED}`
836
+ );
828
837
  logDebug(
829
838
  "SharedModules",
830
839
  `Available bundles: ${Object.keys(self.__remote_webpack_require__ ?? {})}`
@@ -1010,9 +1019,6 @@ function createRSCStream(rscName, data) {
1010
1019
  });
1011
1020
  }
1012
1021
 
1013
- // src/runtime/turbopack/chunk-loader.ts
1014
- init_constants();
1015
-
1016
1022
  // src/runtime/turbopack/patterns.ts
1017
1023
  var REMOTE_SHARED_MARKER_RE = /(?:self|[a-z])\.TURBOPACK_REMOTE_SHARED/;
1018
1024
  var REMOTE_SHARED_ASSIGNMENT_RE = /\.TURBOPACK_REMOTE_SHARED=await (?:__turbopack_context__|[a-z])\.A\((?<sharedModuleId>[0-9]+)\)/;
@@ -1081,11 +1087,7 @@ function createChunkLoader(runtime, resolveClientUrl) {
1081
1087
  }).then(resolve).catch((error) => {
1082
1088
  const isProxied = isProxiedUrl(resolvedUrl);
1083
1089
  if (isProxied) {
1084
- reject(
1085
- new RemoteComponentsError(
1086
- `Failed to load chunk "${url}" via proxy "${resolvedUrl}". Ensure withRemoteComponentsHostProxy middleware is configured and "${RC_PROTECTED_REMOTE_FETCH_PATHNAME}" is in the matcher. See: ${CORS_DOCS_URL}`
1087
- )
1088
- );
1090
+ reject(failedProxiedAssetError("chunk", url, resolvedUrl));
1089
1091
  } else {
1090
1092
  warnCrossOriginFetchError("ChunkLoader", url);
1091
1093
  reject(error);
@@ -1463,6 +1465,7 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
1463
1465
  }
1464
1466
 
1465
1467
  // src/runtime/turbopack/shared-modules.ts
1468
+ var DEDUPLICATION_WARNING = "This module will not be deduplicated \u2014 the remote may load its own copy, which can cause duplicate instance errors (e.g. invalid hook calls if React is loaded twice).";
1466
1469
  async function initializeSharedModules(bundle, hostShared = {}, remoteShared = {}) {
1467
1470
  const self = globalThis;
1468
1471
  self.__remote_shared_modules__ = self.__remote_shared_modules__ ?? {};
@@ -1513,7 +1516,7 @@ async function initializeSharedModules(bundle, hostShared = {}, remoteShared = {
1513
1516
  } else {
1514
1517
  logError(
1515
1518
  "SharedModules",
1516
- `Host shared module "${module2}" not found for ID ${id}`
1519
+ `Host shared module "${module2}" not found for ID ${id}. ${DEDUPLICATION_WARNING}`
1517
1520
  );
1518
1521
  }
1519
1522
  }
@@ -1530,7 +1533,7 @@ async function initializeSharedModules(bundle, hostShared = {}, remoteShared = {
1530
1533
  } else {
1531
1534
  logError(
1532
1535
  "SharedModules",
1533
- `Shared module "${module2}" not found for "${bundle}"`
1536
+ `Shared module "${module2}" not found for "${bundle}". ${DEDUPLICATION_WARNING}`
1534
1537
  );
1535
1538
  }
1536
1539
  }
@@ -1678,7 +1681,6 @@ function createModuleRequire(runtime) {
1678
1681
  }
1679
1682
 
1680
1683
  // src/runtime/loaders/script-loader.ts
1681
- init_constants();
1682
1684
  async function loadScripts(scripts, resolveClientUrl) {
1683
1685
  await Promise.all(
1684
1686
  scripts.map((script) => {
@@ -1694,11 +1696,7 @@ async function loadScripts(scripts, resolveClientUrl) {
1694
1696
  newScript.onerror = () => {
1695
1697
  const isProxied = isProxiedUrl(resolvedSrc);
1696
1698
  if (isProxied) {
1697
- reject(
1698
- new RemoteComponentsError(
1699
- `Failed to load script "${newSrc}" via proxy "${resolvedSrc}". Ensure withRemoteComponentsHostProxy middleware is configured and "${RC_PROTECTED_REMOTE_FETCH_PATHNAME}" is in the matcher. See: ${CORS_DOCS_URL}`
1700
- )
1701
- );
1699
+ reject(failedProxiedAssetError("script", newSrc, resolvedSrc));
1702
1700
  } else {
1703
1701
  warnCrossOriginFetchError("ScriptLoader", newSrc);
1704
1702
  reject(