@uniformdev/canvas-next-rsc 19.79.1-alpha.11 → 19.79.1-alpha.18

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/index.d.mts CHANGED
@@ -1,12 +1,12 @@
1
- import { CanvasClient, RouteClient, ResolvedRouteGetResponse } from '@uniformdev/canvas';
1
+ import { CanvasClient, RouteClient, ResolvedRouteGetResponse, RouteGetParameters } from '@uniformdev/canvas';
2
2
  import { CacheMode, PageParameters, AppDirectoryContextState, AppDirectoryServerContext, PlaygroundParameters } from '@uniformdev/canvas-next-rsc-shared';
3
3
  export { PageParameters, PlaygroundParameters } from '@uniformdev/canvas-next-rsc-shared';
4
4
  import { ManifestClient } from '@uniformdev/context/api';
5
5
  import { ProjectMapClient, ProjectMapNode } from '@uniformdev/project-map';
6
6
  import { ContextState, ContextOptions } from '@uniformdev/context';
7
7
  import React__default, { PropsWithChildren } from 'react';
8
- import { U as UniformCompositionProps } from './UniformComposition-d178d865.js';
9
- export { a as UniformComposition, r as resolveComposition } from './UniformComposition-d178d865.js';
8
+ import { U as UniformCompositionProps } from './UniformComposition-0pvEHduc.mjs';
9
+ export { a as UniformComposition, r as resolveComposition } from './UniformComposition-0pvEHduc.mjs';
10
10
  import { ClientContextComponent } from '@uniformdev/canvas-next-rsc-client';
11
11
 
12
12
  type GetCanvasClientOptions = {
@@ -176,6 +176,26 @@ declare const getManifest: ({ searchParams }: {
176
176
  wv?: string | undefined;
177
177
  };
178
178
  } | undefined;
179
+ goal?: {
180
+ [key: string]: {
181
+ type: "sig";
182
+ id: string;
183
+ op: "=" | "!=" | "<" | ">";
184
+ score: number;
185
+ } | {
186
+ type: "enr";
187
+ cat: string;
188
+ value: string;
189
+ op: "=" | "!=" | "<" | ">";
190
+ score: number;
191
+ } | {
192
+ type: "qrk";
193
+ id: string;
194
+ op: "=" | "~" | "//" | "!=" | "!~" | "!//";
195
+ cs?: boolean | undefined;
196
+ value: string;
197
+ };
198
+ } | undefined;
179
199
  };
180
200
  }>;
181
201
 
@@ -248,6 +268,7 @@ type RetrieveRouteOptions = PageParameters & {
248
268
  */
249
269
  skipPrefetch?: boolean;
250
270
  };
251
- declare const retrieveRoute: ({ params, searchParams, skipPrefetch, }: RetrieveRouteOptions) => Promise<ResolvedRouteGetResponse>;
271
+ type RetrieveRouteFetchOptions = Omit<RouteGetParameters, 'projectId' | 'path' | 'withComponentIDs' | 'withContentSourceMap' | 'state'>;
272
+ declare const retrieveRoute: ({ params, searchParams, skipPrefetch }: RetrieveRouteOptions, fetchOptions?: RetrieveRouteFetchOptions) => Promise<ResolvedRouteGetResponse>;
252
273
 
253
- export { ContextUpdateTransfer, ContextUpdateTransferProps, CreateServerUniformContextProps, CreateStaticParamsOptions, GetCanvasClientOptions, GetManifestClientOptions, GetProjectMapClientOptions, GetRouteClientOptions, UniformCompositionProps, UniformContext, UniformContextProps, UniformPlayground, UniformPlaygroundProps, createServerUniformContext, createStaticParams, generateStaticParams, getCanvasClient, getDefaultCanvasClient, getDefaultManifestClient, getDefaultProjectMapClient, getDefaultRouteClient, getManifest, getManifestClient, getProjectMapClient, getRouteClient, isDevelopmentEnvironment, isDraftModeEnabled, isIncontextEditingEnabled, isOnVercelPreviewEnvironment, retrieveRoute };
274
+ export { ContextUpdateTransfer, type ContextUpdateTransferProps, type CreateServerUniformContextProps, type CreateStaticParamsOptions, type GetCanvasClientOptions, type GetManifestClientOptions, type GetProjectMapClientOptions, type GetRouteClientOptions, UniformCompositionProps, UniformContext, type UniformContextProps, UniformPlayground, type UniformPlaygroundProps, createServerUniformContext, createStaticParams, generateStaticParams, getCanvasClient, getDefaultCanvasClient, getDefaultManifestClient, getDefaultProjectMapClient, getDefaultRouteClient, getManifest, getManifestClient, getProjectMapClient, getRouteClient, isDevelopmentEnvironment, isDraftModeEnabled, isIncontextEditingEnabled, isOnVercelPreviewEnvironment, retrieveRoute };
package/dist/index.d.ts CHANGED
@@ -1,12 +1,12 @@
1
- import { CanvasClient, RouteClient, ResolvedRouteGetResponse } from '@uniformdev/canvas';
1
+ import { CanvasClient, RouteClient, ResolvedRouteGetResponse, RouteGetParameters } from '@uniformdev/canvas';
2
2
  import { CacheMode, PageParameters, AppDirectoryContextState, AppDirectoryServerContext, PlaygroundParameters } from '@uniformdev/canvas-next-rsc-shared';
3
3
  export { PageParameters, PlaygroundParameters } from '@uniformdev/canvas-next-rsc-shared';
4
4
  import { ManifestClient } from '@uniformdev/context/api';
5
5
  import { ProjectMapClient, ProjectMapNode } from '@uniformdev/project-map';
6
6
  import { ContextState, ContextOptions } from '@uniformdev/context';
7
7
  import React__default, { PropsWithChildren } from 'react';
8
- import { U as UniformCompositionProps } from './UniformComposition-d178d865.js';
9
- export { a as UniformComposition, r as resolveComposition } from './UniformComposition-d178d865.js';
8
+ import { U as UniformCompositionProps } from './UniformComposition-0pvEHduc.js';
9
+ export { a as UniformComposition, r as resolveComposition } from './UniformComposition-0pvEHduc.js';
10
10
  import { ClientContextComponent } from '@uniformdev/canvas-next-rsc-client';
11
11
 
12
12
  type GetCanvasClientOptions = {
@@ -176,6 +176,26 @@ declare const getManifest: ({ searchParams }: {
176
176
  wv?: string | undefined;
177
177
  };
178
178
  } | undefined;
179
+ goal?: {
180
+ [key: string]: {
181
+ type: "sig";
182
+ id: string;
183
+ op: "=" | "!=" | "<" | ">";
184
+ score: number;
185
+ } | {
186
+ type: "enr";
187
+ cat: string;
188
+ value: string;
189
+ op: "=" | "!=" | "<" | ">";
190
+ score: number;
191
+ } | {
192
+ type: "qrk";
193
+ id: string;
194
+ op: "=" | "~" | "//" | "!=" | "!~" | "!//";
195
+ cs?: boolean | undefined;
196
+ value: string;
197
+ };
198
+ } | undefined;
179
199
  };
180
200
  }>;
181
201
 
@@ -248,6 +268,7 @@ type RetrieveRouteOptions = PageParameters & {
248
268
  */
249
269
  skipPrefetch?: boolean;
250
270
  };
251
- declare const retrieveRoute: ({ params, searchParams, skipPrefetch, }: RetrieveRouteOptions) => Promise<ResolvedRouteGetResponse>;
271
+ type RetrieveRouteFetchOptions = Omit<RouteGetParameters, 'projectId' | 'path' | 'withComponentIDs' | 'withContentSourceMap' | 'state'>;
272
+ declare const retrieveRoute: ({ params, searchParams, skipPrefetch }: RetrieveRouteOptions, fetchOptions?: RetrieveRouteFetchOptions) => Promise<ResolvedRouteGetResponse>;
252
273
 
253
- export { ContextUpdateTransfer, ContextUpdateTransferProps, CreateServerUniformContextProps, CreateStaticParamsOptions, GetCanvasClientOptions, GetManifestClientOptions, GetProjectMapClientOptions, GetRouteClientOptions, UniformCompositionProps, UniformContext, UniformContextProps, UniformPlayground, UniformPlaygroundProps, createServerUniformContext, createStaticParams, generateStaticParams, getCanvasClient, getDefaultCanvasClient, getDefaultManifestClient, getDefaultProjectMapClient, getDefaultRouteClient, getManifest, getManifestClient, getProjectMapClient, getRouteClient, isDevelopmentEnvironment, isDraftModeEnabled, isIncontextEditingEnabled, isOnVercelPreviewEnvironment, retrieveRoute };
274
+ export { ContextUpdateTransfer, type ContextUpdateTransferProps, type CreateServerUniformContextProps, type CreateStaticParamsOptions, type GetCanvasClientOptions, type GetManifestClientOptions, type GetProjectMapClientOptions, type GetRouteClientOptions, UniformCompositionProps, UniformContext, type UniformContextProps, UniformPlayground, type UniformPlaygroundProps, createServerUniformContext, createStaticParams, generateStaticParams, getCanvasClient, getDefaultCanvasClient, getDefaultManifestClient, getDefaultProjectMapClient, getDefaultRouteClient, getManifest, getManifestClient, getProjectMapClient, getRouteClient, isDevelopmentEnvironment, isDraftModeEnabled, isIncontextEditingEnabled, isOnVercelPreviewEnvironment, retrieveRoute };
package/dist/index.esm.js CHANGED
@@ -299,7 +299,7 @@ var getRouteClient = (options) => {
299
299
  } else {
300
300
  requestedUrl = new URL(req.url);
301
301
  }
302
- const tags = [];
302
+ const tags = ["route"];
303
303
  if (requestedUrl) {
304
304
  const pathKey = "path";
305
305
  const path = requestedUrl.searchParams.get(pathKey);
@@ -394,6 +394,7 @@ import {
394
394
  CANVAS_ENRICHMENT_TAG_PARAM,
395
395
  CANVAS_PERSONALIZE_TYPE,
396
396
  CANVAS_TEST_TYPE,
397
+ isComponentPlaceholderId,
397
398
  walkNodeTree
398
399
  } from "@uniformdev/canvas";
399
400
  import { ClientContextualEditingComponentWrapper, TestClient } from "@uniformdev/canvas-next-rsc-client";
@@ -442,11 +443,7 @@ import {
442
443
  } from "@uniformdev/canvas";
443
444
  import { getBaseUrl, getServerConfig as getServerConfig2, resolvePath } from "@uniformdev/canvas-next-rsc-shared";
444
445
  import { getTargetVariableExpandedUrl } from "@uniformdev/redirect";
445
- var retrieveRoute = async ({
446
- params,
447
- searchParams,
448
- skipPrefetch
449
- }) => {
446
+ var retrieveRoute = async ({ params, searchParams, skipPrefetch }, fetchOptions) => {
450
447
  if (!skipPrefetch) {
451
448
  void getManifest({
452
449
  searchParams
@@ -466,7 +463,8 @@ var retrieveRoute = async ({
466
463
  result = await retrieveRouteByPath({
467
464
  path: value,
468
465
  state,
469
- searchParams
466
+ searchParams,
467
+ fetchOptions
470
468
  });
471
469
  } catch (e) {
472
470
  console.warn(`Failed to retrieve route by path: ${value} with state ${state}`, e);
@@ -500,30 +498,39 @@ var retrieveRoute = async ({
500
498
  var retrieveRouteByPath = async ({
501
499
  path,
502
500
  state,
503
- searchParams
501
+ searchParams,
502
+ fetchOptions
504
503
  }) => {
505
504
  var _a;
506
505
  const client = getDefaultRouteClient({
507
506
  searchParams
508
507
  });
508
+ let queryPath = path;
509
+ if (searchParams && Object.keys(searchParams).length > 0) {
510
+ const helper = new URL(getBaseUrl());
511
+ helper.pathname = path;
512
+ Object.entries(searchParams).forEach(([key, value]) => {
513
+ if (typeof value === "string") {
514
+ helper.searchParams.set(key, value);
515
+ }
516
+ });
517
+ if (helper.searchParams.size > 0) {
518
+ queryPath = `${helper.pathname}${helper.search}`;
519
+ }
520
+ }
509
521
  return await client.getRoute({
510
- path,
522
+ ...fetchOptions,
523
+ path: queryPath,
511
524
  state,
512
525
  withComponentIDs: true,
513
526
  withContentSourceMap: isOnVercelPreviewEnvironment() && ((_a = getServerConfig2().experimental) == null ? void 0 : _a.vercelVisualEditing)
514
527
  });
515
528
  };
516
529
  var resolveRedirectHref = (resolveResult, path) => {
517
- let href;
518
- if (resolveResult.redirect.targetProjectMapNodeId) {
519
- const requestUrl = `${getBaseUrl()}${path}`;
520
- const expandedUrl = getTargetVariableExpandedUrl(requestUrl, resolveResult.redirect);
521
- const url = new URL(expandedUrl);
522
- href = url.pathname;
523
- } else {
524
- href = resolveResult.redirect.targetUrl;
525
- }
526
- return href;
530
+ const requestUrl = `${getBaseUrl()}${path}`;
531
+ const expandedUrl = getTargetVariableExpandedUrl(requestUrl, resolveResult.redirect);
532
+ const url = new URL(expandedUrl);
533
+ return url.pathname;
527
534
  };
528
535
  var determineState = ({ searchParams }) => {
529
536
  const draftMode2 = isDraftModeEnabled({ searchParams });
@@ -564,38 +571,57 @@ var PersonalizeClientWrapper = (props) => {
564
571
  import { CANVAS_PERSONALIZE_SLOT } from "@uniformdev/canvas";
565
572
  import { runPersonalization as runPersonalization2 } from "@uniformdev/canvas-next-rsc-shared";
566
573
  import { createElement, Fragment } from "react";
574
+
575
+ // src/components/ContextPersonalizationTransfer.tsx
576
+ import { ClientContextPersonalizationTransfer } from "@uniformdev/canvas-next-rsc-client";
577
+ import React4 from "react";
578
+ var ContextPersonalizationTransfer = ({ event }) => {
579
+ return /* @__PURE__ */ React4.createElement(ClientContextPersonalizationTransfer, { ts: (/* @__PURE__ */ new Date()).valueOf(), event });
580
+ };
581
+
582
+ // src/components/PersonalizeServer.ts
567
583
  var PersonalizeServer = (props) => {
568
584
  var _a;
569
- const { indexes } = runPersonalization2(props);
585
+ const { indexes, event } = runPersonalization2(props);
570
586
  const slot = (_a = props.slots) == null ? void 0 : _a[CANVAS_PERSONALIZE_SLOT];
571
587
  const components = indexes.map((index) => {
572
588
  const component = slot.items[index];
573
589
  return component;
574
590
  });
575
- return createElement(Fragment, void 0, components);
591
+ const eventElement = createElement(ContextPersonalizationTransfer, {
592
+ event
593
+ });
594
+ return createElement(Fragment, void 0, [...components, eventElement]);
576
595
  };
577
596
 
578
597
  // src/components/TestServer.ts
579
- import { CANVAS_TEST_SLOT, CANVAS_TEST_VARIANT_PARAM } from "@uniformdev/canvas";
598
+ import { CANVAS_TEST_SLOT } from "@uniformdev/canvas";
599
+ import {
600
+ runTest
601
+ } from "@uniformdev/canvas-next-rsc-shared";
580
602
  import { createElement as createElement2, Fragment as Fragment2 } from "react";
581
- var TestServer = ({ test, component, contextInstance, slots }) => {
582
- var _a, _b, _c;
583
- const slot = ((_a = component.slots) == null ? void 0 : _a[CANVAS_TEST_SLOT]) || [];
584
- const { result } = contextInstance.test({
585
- name: test,
586
- variations: slot.map((v, i) => {
587
- var _a2, _b2, _c2;
588
- const contextTag = (_b2 = (_a2 = v.parameters) == null ? void 0 : _a2[CANVAS_TEST_VARIANT_PARAM]) == null ? void 0 : _b2.value;
589
- const id = (_c2 = contextTag == null ? void 0 : contextTag.id) != null ? _c2 : "testId" in v ? v.testId : `ab-${i}-${v.type}`;
590
- return {
591
- id,
592
- testDistribution: contextTag == null ? void 0 : contextTag.testDistribution,
593
- index: i
594
- };
595
- })
603
+
604
+ // src/components/ContextTestTransfer.tsx
605
+ import { ClientContextTestTransfer } from "@uniformdev/canvas-next-rsc-client";
606
+ import React5 from "react";
607
+ var ContextTestTransfer = ({ event }) => {
608
+ return /* @__PURE__ */ React5.createElement(ClientContextTestTransfer, { ts: (/* @__PURE__ */ new Date()).valueOf(), event });
609
+ };
610
+
611
+ // src/components/TestServer.ts
612
+ var TestServer = (props) => {
613
+ var _a, _b, _c, _d;
614
+ const { contextInstance, test } = props;
615
+ const isTestDefined = Boolean((_a = contextInstance.manifest.data.project.test) == null ? void 0 : _a[test]);
616
+ if (!isTestDefined && process.env.NODE_ENV !== "production") {
617
+ console.warn(`Test "${test}" is not defined in Uniform manifest.`);
618
+ }
619
+ const { index, event } = runTest(props);
620
+ const component = typeof index === "number" ? (_d = (_c = (_b = props.slots) == null ? void 0 : _b[CANVAS_TEST_SLOT]) == null ? void 0 : _c.items[index]) != null ? _d : null : null;
621
+ const eventElement = createElement2(ContextTestTransfer, {
622
+ event
596
623
  });
597
- const components = result ? (_c = (_b = slots == null ? void 0 : slots[CANVAS_TEST_SLOT]) == null ? void 0 : _b.items[result.index]) != null ? _c : null : null;
598
- return createElement2(Fragment2, void 0, components);
624
+ return createElement2(Fragment2, void 0, [component, eventElement]);
599
625
  };
600
626
 
601
627
  // src/components/UniformComposition.ts
@@ -814,7 +840,9 @@ var resolveComponents = ({
814
840
  component,
815
841
  slots,
816
842
  contextInstance: isServer || includeContext ? serverContext : void 0,
817
- context: compositionContext
843
+ context: compositionContext,
844
+ slotName,
845
+ slotIndex: isRoot ? void 0 : componentIndex
818
846
  };
819
847
  const element = createElement3(resolvedComponent, componentProps);
820
848
  let tagElement = null;
@@ -833,11 +861,12 @@ var resolveComponents = ({
833
861
  if (tagElement) {
834
862
  elements.push(tagElement);
835
863
  }
864
+ const isPlaceholder = isComponentPlaceholderId(component == null ? void 0 : component._id);
836
865
  childNode = createElement3(
837
866
  PureContextualEditingComponentWrapper,
838
867
  {
839
868
  key: `${slotName}-${componentIndex}-wrapper`,
840
- isPlaceholder: false,
869
+ isPlaceholder,
841
870
  parentComponent: parent,
842
871
  component,
843
872
  slotName,
@@ -891,7 +920,7 @@ import {
891
920
  } from "@uniformdev/canvas-next-rsc-client";
892
921
  import { getServerConfig as getServerConfig4 } from "@uniformdev/canvas-next-rsc-shared";
893
922
  import { Suspense } from "react";
894
- import React4 from "react";
923
+ import React6 from "react";
895
924
  var UniformContext = async ({
896
925
  clientContextComponent,
897
926
  children
@@ -902,16 +931,16 @@ var UniformContext = async ({
902
931
  });
903
932
  const ContextComponent = clientContextComponent || DefaultUniformClientContext;
904
933
  const disableDevTools = ((_a = getServerConfig4().context) == null ? void 0 : _a.disableDevTools) || false;
905
- return /* @__PURE__ */ React4.createElement(React4.Fragment, null, children, /* @__PURE__ */ React4.createElement(ContextComponent, { manifest, disableDevTools }), /* @__PURE__ */ React4.createElement(Suspense, { fallback: /* @__PURE__ */ React4.createElement(React4.Fragment, null) }, /* @__PURE__ */ React4.createElement(UniformScript, null)));
934
+ return /* @__PURE__ */ React6.createElement(React6.Fragment, null, children, /* @__PURE__ */ React6.createElement(ContextComponent, { manifest, disableDevTools }), /* @__PURE__ */ React6.createElement(Suspense, { fallback: /* @__PURE__ */ React6.createElement(React6.Fragment, null) }, /* @__PURE__ */ React6.createElement(UniformScript, null)));
906
935
  };
907
936
 
908
937
  // src/components/UniformPlayground.tsx
909
938
  import { CANVAS_DRAFT_STATE as CANVAS_DRAFT_STATE3, CANVAS_EDITOR_STATE as CANVAS_EDITOR_STATE3 } from "@uniformdev/canvas";
910
939
  import { notFound as notFound2 } from "next/navigation";
911
- import React5 from "react";
940
+ import React7 from "react";
912
941
  var UniformPlayground = async ({ searchParams, ...rest }) => {
913
942
  if (!isDraftModeEnabled({ searchParams })) {
914
- return /* @__PURE__ */ React5.createElement("div", null, /* @__PURE__ */ React5.createElement("h1", null, "Playground is only available in draft mode"));
943
+ return /* @__PURE__ */ React7.createElement("div", null, /* @__PURE__ */ React7.createElement("h1", null, "Playground is only available in draft mode"));
915
944
  }
916
945
  const id = searchParams["id"];
917
946
  if (!id) {
@@ -942,7 +971,7 @@ var UniformPlayground = async ({ searchParams, ...rest }) => {
942
971
  if (!composition) {
943
972
  notFound2();
944
973
  }
945
- return /* @__PURE__ */ React5.createElement(
974
+ return /* @__PURE__ */ React7.createElement(
946
975
  UniformComposition,
947
976
  {
948
977
  mode: "server",