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
@@ -123,6 +123,11 @@ async function errorFromFailedFetch(originalUrl, resolvedUrl, res) {
123
123
  }
124
124
  return fallback;
125
125
  }
126
+ function failedProxiedAssetError(kind, url, resolvedUrl) {
127
+ return new RemoteComponentsError(
128
+ `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}`
129
+ );
130
+ }
126
131
  function failedProxyFetchError(originalUrl, proxyUrl, status, responseBody) {
127
132
  if (status === 404) {
128
133
  return new RemoteComponentsError(
@@ -174,7 +179,7 @@ function warnCrossOriginFetchError(logLocation, url) {
174
179
  }
175
180
  logWarn(
176
181
  logLocation,
177
- `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}`
182
+ `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}`
178
183
  );
179
184
  } catch {
180
185
  }
@@ -756,6 +761,7 @@ import * as ReactDOM from "react-dom";
756
761
  import * as ReactDOMClient from "react-dom/client";
757
762
 
758
763
  // src/config/webpack/apply-shared-modules.ts
764
+ var DEDUPLICATION_SKIPPED = "shared module deduplication skipped. The remote may load its own copy of shared dependencies.";
759
765
  function applySharedModules(bundle, resolve) {
760
766
  logDebug(
761
767
  "SharedModules",
@@ -799,13 +805,16 @@ function applySharedModules(bundle, resolve) {
799
805
  } else {
800
806
  logWarn(
801
807
  "SharedModules",
802
- `webpackBundle.m is not available for bundle "${bundle}"`
808
+ `webpackBundle.m is not available for bundle "${bundle}" \u2014 ${DEDUPLICATION_SKIPPED}`
803
809
  );
804
810
  }
805
811
  }
806
812
  }
807
813
  } else {
808
- logWarn("SharedModules", `No webpack require found for bundle "${bundle}"`);
814
+ logWarn(
815
+ "SharedModules",
816
+ `No webpack require found for bundle "${bundle}" \u2014 ${DEDUPLICATION_SKIPPED}`
817
+ );
809
818
  logDebug(
810
819
  "SharedModules",
811
820
  `Available bundles: ${Object.keys(self.__remote_webpack_require__ ?? {})}`
@@ -991,9 +1000,6 @@ function createRSCStream(rscName, data) {
991
1000
  });
992
1001
  }
993
1002
 
994
- // src/runtime/turbopack/chunk-loader.ts
995
- init_constants();
996
-
997
1003
  // src/runtime/turbopack/patterns.ts
998
1004
  var REMOTE_SHARED_MARKER_RE = /(?:self|[a-z])\.TURBOPACK_REMOTE_SHARED/;
999
1005
  var REMOTE_SHARED_ASSIGNMENT_RE = /\.TURBOPACK_REMOTE_SHARED=await (?:__turbopack_context__|[a-z])\.A\((?<sharedModuleId>[0-9]+)\)/;
@@ -1062,11 +1068,7 @@ function createChunkLoader(runtime, resolveClientUrl) {
1062
1068
  }).then(resolve).catch((error) => {
1063
1069
  const isProxied = isProxiedUrl(resolvedUrl);
1064
1070
  if (isProxied) {
1065
- reject(
1066
- new RemoteComponentsError(
1067
- `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}`
1068
- )
1069
- );
1071
+ reject(failedProxiedAssetError("chunk", url, resolvedUrl));
1070
1072
  } else {
1071
1073
  warnCrossOriginFetchError("ChunkLoader", url);
1072
1074
  reject(error);
@@ -1444,6 +1446,7 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
1444
1446
  }
1445
1447
 
1446
1448
  // src/runtime/turbopack/shared-modules.ts
1449
+ 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).";
1447
1450
  async function initializeSharedModules(bundle, hostShared = {}, remoteShared = {}) {
1448
1451
  const self = globalThis;
1449
1452
  self.__remote_shared_modules__ = self.__remote_shared_modules__ ?? {};
@@ -1494,7 +1497,7 @@ async function initializeSharedModules(bundle, hostShared = {}, remoteShared = {
1494
1497
  } else {
1495
1498
  logError(
1496
1499
  "SharedModules",
1497
- `Host shared module "${module}" not found for ID ${id}`
1500
+ `Host shared module "${module}" not found for ID ${id}. ${DEDUPLICATION_WARNING}`
1498
1501
  );
1499
1502
  }
1500
1503
  }
@@ -1511,7 +1514,7 @@ async function initializeSharedModules(bundle, hostShared = {}, remoteShared = {
1511
1514
  } else {
1512
1515
  logError(
1513
1516
  "SharedModules",
1514
- `Shared module "${module}" not found for "${bundle}"`
1517
+ `Shared module "${module}" not found for "${bundle}". ${DEDUPLICATION_WARNING}`
1515
1518
  );
1516
1519
  }
1517
1520
  }
@@ -1659,7 +1662,6 @@ function createModuleRequire(runtime) {
1659
1662
  }
1660
1663
 
1661
1664
  // src/runtime/loaders/script-loader.ts
1662
- init_constants();
1663
1665
  async function loadScripts(scripts, resolveClientUrl) {
1664
1666
  await Promise.all(
1665
1667
  scripts.map((script) => {
@@ -1675,11 +1677,7 @@ async function loadScripts(scripts, resolveClientUrl) {
1675
1677
  newScript.onerror = () => {
1676
1678
  const isProxied = isProxiedUrl(resolvedSrc);
1677
1679
  if (isProxied) {
1678
- reject(
1679
- new RemoteComponentsError(
1680
- `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}`
1681
- )
1682
- );
1680
+ reject(failedProxiedAssetError("script", newSrc, resolvedSrc));
1683
1681
  } else {
1684
1682
  warnCrossOriginFetchError("ScriptLoader", newSrc);
1685
1683
  reject(