@weaverse/next 0.1.0-alpha.12 → 0.1.0-alpha.14

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 (106) hide show
  1. package/README.md +125 -23
  2. package/dist/{chunk-MQ6N5ODA.mjs → chunk-NL22OVD7.mjs} +93 -4
  3. package/dist/chunk-NL22OVD7.mjs.map +1 -0
  4. package/dist/index.js +98 -4
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +32 -26
  7. package/dist/index.mjs.map +1 -1
  8. package/dist/server.js +158 -2
  9. package/dist/server.js.map +1 -1
  10. package/dist/server.mjs +126 -5
  11. package/dist/server.mjs.map +1 -1
  12. package/dist/types/client.d.ts +16 -0
  13. package/dist/types/client.d.ts.map +1 -0
  14. package/dist/types/hooks.d.ts +20 -0
  15. package/dist/types/hooks.d.ts.map +1 -0
  16. package/dist/types/index.d.ts +34 -0
  17. package/dist/types/index.d.ts.map +1 -0
  18. package/dist/types/item.d.ts +54 -0
  19. package/dist/types/item.d.ts.map +1 -0
  20. package/dist/types/loader.d.ts +25 -0
  21. package/dist/types/loader.d.ts.map +1 -0
  22. package/dist/types/main.d.ts +11 -0
  23. package/dist/types/main.d.ts.map +1 -0
  24. package/dist/types/provider.d.ts +82 -0
  25. package/dist/types/provider.d.ts.map +1 -0
  26. package/dist/types/registry.d.ts +15 -0
  27. package/dist/types/registry.d.ts.map +1 -0
  28. package/dist/types/renderer.d.ts +20 -0
  29. package/dist/types/renderer.d.ts.map +1 -0
  30. package/dist/types/request-info.d.ts +8 -0
  31. package/dist/types/request-info.d.ts.map +1 -0
  32. package/dist/types/revalidate-item.d.ts +81 -0
  33. package/dist/types/revalidate-item.d.ts.map +1 -0
  34. package/dist/types/root-provider.d.ts +61 -0
  35. package/dist/types/root-provider.d.ts.map +1 -0
  36. package/dist/types/runtime.d.ts +113 -0
  37. package/dist/types/runtime.d.ts.map +1 -0
  38. package/dist/types/seo.d.ts +55 -0
  39. package/dist/types/seo.d.ts.map +1 -0
  40. package/dist/types/server/configs.d.ts +27 -0
  41. package/dist/types/server/configs.d.ts.map +1 -0
  42. package/dist/types/server/normalize-page-url.d.ts +19 -0
  43. package/dist/types/server/normalize-page-url.d.ts.map +1 -0
  44. package/dist/types/server/revalidate-handler.d.ts +55 -0
  45. package/dist/types/server/revalidate-handler.d.ts.map +1 -0
  46. package/dist/types/server/server-client.d.ts +21 -0
  47. package/dist/types/server/server-client.d.ts.map +1 -0
  48. package/dist/types/server.d.ts +19 -0
  49. package/dist/types/server.d.ts.map +1 -0
  50. package/dist/types/studio-bridge.d.ts +16 -0
  51. package/dist/types/studio-bridge.d.ts.map +1 -0
  52. package/dist/types/studio-connect.d.ts +27 -0
  53. package/dist/types/studio-connect.d.ts.map +1 -0
  54. package/dist/types/studio-router.d.ts +50 -0
  55. package/dist/types/studio-router.d.ts.map +1 -0
  56. package/dist/types/studio-script-src.d.ts +12 -0
  57. package/dist/types/studio-script-src.d.ts.map +1 -0
  58. package/dist/types/theme-settings-store.d.ts +17 -0
  59. package/dist/types/theme-settings-store.d.ts.map +1 -0
  60. package/dist/types/translation-context.d.ts +156 -0
  61. package/dist/types/translation-context.d.ts.map +1 -0
  62. package/dist/types/translation-store.d.ts +44 -0
  63. package/dist/types/translation-store.d.ts.map +1 -0
  64. package/dist/types/types.d.ts +661 -0
  65. package/dist/types/types.d.ts.map +1 -0
  66. package/dist/types/use-weaverse-next-studio.d.ts +34 -0
  67. package/dist/types/use-weaverse-next-studio.d.ts.map +1 -0
  68. package/dist/types/utils.d.ts +12 -0
  69. package/dist/types/utils.d.ts.map +1 -0
  70. package/package.json +7 -6
  71. package/src/client.ts +101 -0
  72. package/src/hooks.ts +50 -0
  73. package/src/index.ts +153 -0
  74. package/src/item.ts +151 -0
  75. package/src/loader.ts +135 -0
  76. package/src/main.tsx +45 -0
  77. package/src/provider.tsx +225 -0
  78. package/src/registry.ts +63 -0
  79. package/src/renderer.tsx +99 -0
  80. package/src/request-info.ts +95 -0
  81. package/src/revalidate-item.ts +210 -0
  82. package/src/root-provider.tsx +181 -0
  83. package/src/runtime.ts +521 -0
  84. package/src/seo.ts +157 -0
  85. package/src/server/configs.ts +182 -0
  86. package/src/server/normalize-page-url.ts +65 -0
  87. package/src/server/revalidate-handler.ts +357 -0
  88. package/src/server/server-client.ts +727 -0
  89. package/src/server.ts +67 -0
  90. package/src/studio-bridge.tsx +82 -0
  91. package/src/studio-connect.tsx +88 -0
  92. package/src/studio-router.ts +85 -0
  93. package/src/studio-script-src.ts +125 -0
  94. package/src/theme-settings-store.ts +46 -0
  95. package/src/translation-context.tsx +299 -0
  96. package/src/translation-store.ts +69 -0
  97. package/src/types.ts +748 -0
  98. package/src/use-weaverse-next-studio.tsx +106 -0
  99. package/src/utils.ts +37 -0
  100. package/dist/chunk-MQ6N5ODA.mjs.map +0 -1
  101. package/dist/index.d.mts +0 -592
  102. package/dist/index.d.ts +0 -592
  103. package/dist/seo-CrEFl_Up.d.mts +0 -516
  104. package/dist/seo-CrEFl_Up.d.ts +0 -516
  105. package/dist/server.d.mts +0 -100
  106. package/dist/server.d.ts +0 -100
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { buildWeaverseNextRequestInfo, generateDataFromSchema } from './chunk-MQ6N5ODA.mjs';
2
- export { buildWeaverseNextRequestInfo, formatWeaverseNextSeoMetadata, generateDataFromSchema, getWeaverseNextSeoMetadata, runWeaverseComponentLoaders } from './chunk-MQ6N5ODA.mjs';
1
+ import { buildWeaverseNextRequestInfo, DEFAULT_REVALIDATE_ENDPOINT, revalidateWeaverseNextItem, generateDataFromSchema } from './chunk-NL22OVD7.mjs';
2
+ export { DEFAULT_REVALIDATE_ENDPOINT, buildWeaverseNextRequestInfo, buildWeaverseNextRevalidateRouteContext, formatWeaverseNextSeoMetadata, generateDataFromSchema, getWeaverseNextSeoMetadata, revalidateWeaverseNextItem, runWeaverseComponentLoaders } from './chunk-NL22OVD7.mjs';
3
3
  import { WeaverseRoot, Weaverse, WeaverseItemStore, useSafeExternalStore } from '@weaverse/react';
4
4
  export { isBrowser, isIframe, useChildInstances, useItemInstance, useParentInstance, useWeaverse } from '@weaverse/react';
5
5
  import { createSchema } from '@weaverse/schema';
@@ -35,6 +35,7 @@ var WeaverseNextItem = class extends WeaverseItemStore {
35
35
  _cachedSnapshot = null;
36
36
  _snapshotStoreRef = null;
37
37
  _snapshotTranslationRef = null;
38
+ /** Create an item store from serialized component data and its runtime. */
38
39
  constructor(initialData, weaverse) {
39
40
  super(initialData, weaverse);
40
41
  let schemaData = generateDataFromSchema(this.Element?.schema);
@@ -300,18 +301,24 @@ var useThemeText = useTranslation;
300
301
 
301
302
  // src/translation-store.ts
302
303
  var TranslationStore = class {
304
+ /** Current flat translation overrides keyed by dot path. */
303
305
  overrides = {};
304
306
  listeners = /* @__PURE__ */ new Set();
307
+ /** Replace every override and notify subscribers. */
305
308
  setOverrides = (overrides) => {
306
309
  this.overrides = { ...overrides };
307
310
  this.emit();
308
311
  };
312
+ /** Merge changed overrides into the current values and notify subscribers. */
309
313
  updateOverrides = (newOverrides) => {
310
314
  this.overrides = { ...this.overrides, ...newOverrides };
311
315
  this.emit();
312
316
  };
317
+ /** Return the current client-side override snapshot. */
313
318
  getSnapshot = () => this.overrides;
319
+ /** Return the override snapshot used during server rendering. */
314
320
  getServerSnapshot = () => this.overrides;
321
+ /** Subscribe to override changes and return an unsubscribe function. */
315
322
  subscribe = (callback) => {
316
323
  this.listeners.add(callback);
317
324
  return () => {
@@ -538,12 +545,30 @@ function registerRuntime(runtime) {
538
545
  runtimeWindow.__weaverses[runtime.pageId] = runtime;
539
546
  runtimeWindow.__weaverse = runtime;
540
547
  }
548
+ function rebindPageItemsToRuntime(runtime) {
549
+ let items = runtime.data?.items;
550
+ if (!items) {
551
+ return;
552
+ }
553
+ for (let { id } of items) {
554
+ let instance = runtime.itemInstances.get(id);
555
+ if (instance && instance.weaverse !== runtime) {
556
+ instance.weaverse = runtime;
557
+ }
558
+ }
559
+ }
541
560
  var WeaverseNextRuntime = class extends Weaverse {
561
+ /** Stable ID of the page owned by this runtime. */
542
562
  pageId;
563
+ /** Mutable callbacks and stores consumed by the Studio bridge. */
543
564
  internal;
565
+ /** Path, query, and locale metadata for Studio navigation. */
544
566
  requestInfo;
567
+ /** Whether this runtime renders a component preview. */
545
568
  isPreviewMode;
569
+ /** Whether this runtime renders a saved revision. */
546
570
  isRevisionPreview;
571
+ /** Component type rendered in section preview mode. */
547
572
  sectionType;
548
573
  // ─── Item-level translation sidecar (design mode only) ─────────────
549
574
  /**
@@ -552,7 +577,9 @@ var WeaverseNextRuntime = class extends Weaverse {
552
577
  * components, so translations render without mutating the base `_store`.
553
578
  */
554
579
  translationMap = {};
580
+ /** Locale associated with the item-level translation sidecar. */
555
581
  translationLocale = String();
582
+ /** Weaverse language ID used when saving translation changes. */
556
583
  translationLanguageId = String();
557
584
  /**
558
585
  * Fresh page data captured while React was rendering. Runtime reuse happens
@@ -570,6 +597,7 @@ var WeaverseNextRuntime = class extends Weaverse {
570
597
  * deferred to `flushRenderPhaseUpdates()`.
571
598
  */
572
599
  pendingItemUpdates = [];
600
+ /** Create a browser runtime from a loaded page and its request context. */
573
601
  constructor(config) {
574
602
  let { client, data } = config;
575
603
  let page = getRenderablePage(data);
@@ -761,6 +789,7 @@ function createWeaverseNextRuntime(config) {
761
789
  () => new WeaverseNextRuntime(config)
762
790
  );
763
791
  runtime.pendingItemUpdates = refreshedItems;
792
+ rebindPageItemsToRuntime(runtime);
764
793
  runtime.__weaverseNextRequestKey = requestKey;
765
794
  runtime.__weaverseNextLatestData = page;
766
795
  registerRuntime(runtime);
@@ -790,29 +819,6 @@ function bindWeaverseNextStudioRuntime(runtime) {
790
819
  });
791
820
  return true;
792
821
  }
793
-
794
- // src/revalidate-item.ts
795
- var DEFAULT_REVALIDATE_ENDPOINT = "/api/weaverse/revalidate";
796
- async function revalidateWeaverseNextItem(runtime, draftItem, endpoint = DEFAULT_REVALIDATE_ENDPOINT) {
797
- let instance = runtime.itemInstances.get(draftItem.id);
798
- if (!instance) {
799
- throw new Error(
800
- `[weaverse-next] No live item instance for "${draftItem.id}".`
801
- );
802
- }
803
- let response = await fetch(endpoint, {
804
- method: "POST",
805
- headers: { "Content-Type": "application/json" },
806
- body: JSON.stringify({ draftItem })
807
- });
808
- if (!response.ok) {
809
- throw new Error(
810
- `[weaverse-next] Revalidate endpoint responded ${response.status}.`
811
- );
812
- }
813
- let { loaderData } = await response.json();
814
- instance.setData({ loaderData: loaderData ?? null });
815
- }
816
822
  var STUDIO_BIND_RETRY_INTERVAL_MS = 50;
817
823
  var STUDIO_BIND_MAX_ATTEMPTS = 100;
818
824
  function WeaverseNextStudioBridge(props) {
@@ -1077,6 +1083,6 @@ function WeaverseNextStudioConnect(props) {
1077
1083
  return null;
1078
1084
  }
1079
1085
 
1080
- export { DEFAULT_REVALIDATE_ENDPOINT, ThemeTextProvider, ThemeTextStore, TranslationProvider, TranslationStore, WeaverseNextProvider, WeaverseNextRenderer, WeaverseNextRootProvider, WeaverseNextRuntime, WeaverseNextStudio, WeaverseNextStudioBridge, WeaverseNextStudioConnect, bindWeaverseNextStudioRuntime, createTranslate, createWeaverseNextClient, createWeaverseNextRuntime, createWeaverseNextStudioInternals, createWeaverseNextThemeSettingsStore, getNestedKey, interpolate, loadWeaverseNextStudioScript, resolveWeaverseNextStudioScriptSrc, revalidateWeaverseNextItem, useThemeSettings, useThemeText, useTranslation, useWeaverseCommerce, useWeaverseNextStudioInternals, useWeaversePageData, useWeaverseRootData };
1086
+ export { ThemeTextProvider, ThemeTextStore, TranslationProvider, TranslationStore, WeaverseNextProvider, WeaverseNextRenderer, WeaverseNextRootProvider, WeaverseNextRuntime, WeaverseNextStudio, WeaverseNextStudioBridge, WeaverseNextStudioConnect, bindWeaverseNextStudioRuntime, createTranslate, createWeaverseNextClient, createWeaverseNextRuntime, createWeaverseNextStudioInternals, createWeaverseNextThemeSettingsStore, getNestedKey, interpolate, loadWeaverseNextStudioScript, resolveWeaverseNextStudioScriptSrc, useThemeSettings, useThemeText, useTranslation, useWeaverseCommerce, useWeaverseNextStudioInternals, useWeaversePageData, useWeaverseRootData };
1081
1087
  //# sourceMappingURL=index.mjs.map
1082
1088
  //# sourceMappingURL=index.mjs.map