@usertour/helpers 0.0.49 → 0.0.50

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.
@@ -323,12 +323,14 @@ var duplicateData = (data, contentType) => {
323
323
  }
324
324
  return data;
325
325
  };
326
- var duplicateStep = (step) => {
326
+ var duplicateStep = (step, options) => {
327
+ var _a;
327
328
  const { id, cvid, createdAt, updatedAt, versionId, trigger, target, data, ...rest } = step;
329
+ const preserveUndefined = (_a = options == null ? void 0 : options.preserveUndefined) != null ? _a : false;
328
330
  return {
329
331
  ...rest,
330
- data: data ? processQuestionElements(data) : data,
331
- trigger: trigger ? duplicateTriggers(trigger) : trigger,
332
+ data: data ? processQuestionElements(data) : preserveUndefined ? data : [],
333
+ trigger: trigger ? duplicateTriggers(trigger) : preserveUndefined ? trigger : [],
332
334
  target: duplicateTarget(target)
333
335
  };
334
336
  };
@@ -13,7 +13,7 @@ import {
13
13
  isQuestionElement,
14
14
  isRestrictedType,
15
15
  processQuestionElements
16
- } from "../chunk-BCAOJ3IY.js";
16
+ } from "../chunk-JTRQ5CEL.js";
17
17
  import "../chunk-7ODE2AIC.js";
18
18
  import "../chunk-SIG4WTEF.js";
19
19
  import "../chunk-YYIGUZNZ.js";
@@ -205,12 +205,14 @@ var duplicateData = (data, contentType) => {
205
205
  }
206
206
  return data;
207
207
  };
208
- var duplicateStep = (step) => {
208
+ var duplicateStep = (step, options) => {
209
+ var _a;
209
210
  const { id, cvid, createdAt, updatedAt, versionId, trigger, target, data, ...rest } = step;
211
+ const preserveUndefined = (_a = options == null ? void 0 : options.preserveUndefined) != null ? _a : false;
210
212
  return {
211
213
  ...rest,
212
- data: data ? processQuestionElements(data) : data,
213
- trigger: trigger ? duplicateTriggers(trigger) : trigger,
214
+ data: data ? processQuestionElements(data) : preserveUndefined ? data : [],
215
+ trigger: trigger ? duplicateTriggers(trigger) : preserveUndefined ? trigger : [],
214
216
  target: duplicateTarget(target)
215
217
  };
216
218
  };
@@ -218,7 +220,7 @@ var duplicateSteps = (steps) => {
218
220
  if (!isArray(steps)) {
219
221
  return [];
220
222
  }
221
- return steps.map((step) => duplicateStep(step));
223
+ return steps.map((step) => duplicateStep(step, { preserveUndefined: true }));
222
224
  };
223
225
  var duplicateStepWithRename = (originalStep, sequence, existingStepNames) => {
224
226
  const duplicated = duplicateStep(originalStep);
@@ -346,12 +346,14 @@ var duplicateData = (data, contentType) => {
346
346
  }
347
347
  return data;
348
348
  };
349
- var duplicateStep = (step) => {
349
+ var duplicateStep = (step, options) => {
350
+ var _a;
350
351
  const { id, cvid, createdAt, updatedAt, versionId, trigger, target, data, ...rest } = step;
352
+ const preserveUndefined = (_a = options == null ? void 0 : options.preserveUndefined) != null ? _a : false;
351
353
  return {
352
354
  ...rest,
353
- data: data ? processQuestionElements(data) : data,
354
- trigger: trigger ? duplicateTriggers(trigger) : trigger,
355
+ data: data ? processQuestionElements(data) : preserveUndefined ? data : [],
356
+ trigger: trigger ? duplicateTriggers(trigger) : preserveUndefined ? trigger : [],
355
357
  target: duplicateTarget(target)
356
358
  };
357
359
  };
@@ -359,7 +361,7 @@ var duplicateSteps = (steps) => {
359
361
  if (!isArray(steps)) {
360
362
  return [];
361
363
  }
362
- return steps.map((step) => duplicateStep(step));
364
+ return steps.map((step) => duplicateStep(step, { preserveUndefined: true }));
363
365
  };
364
366
  var duplicateStepWithRename = (originalStep, sequence, existingStepNames) => {
365
367
  const duplicated = duplicateStep(originalStep);
@@ -63,6 +63,7 @@ declare const duplicateData: (data: unknown, contentType: string) => unknown;
63
63
  /**
64
64
  * Step-like type that works with both Prisma Step and @usertour/types Step
65
65
  * This allows the function to be used in both server and client contexts
66
+ * Uses unknown for data/trigger to accept Prisma's JsonValue type
66
67
  */
67
68
  type StepLike = {
68
69
  id?: string;
@@ -70,18 +71,22 @@ type StepLike = {
70
71
  createdAt?: string | Date;
71
72
  updatedAt?: string | Date;
72
73
  versionId?: string;
73
- data?: ContentEditorRoot[];
74
- trigger?: StepTrigger[];
75
- target?: Step['target'];
74
+ data?: unknown;
75
+ trigger?: unknown;
76
+ target?: unknown;
76
77
  [key: string]: unknown;
77
78
  };
78
79
  /**
79
80
  * Core function to duplicate a single step by removing database-specific fields
80
81
  * and regenerating IDs in triggers, target actions, and question elements
81
82
  * @param step - The step to duplicate
83
+ * @param options - Options for duplication behavior
84
+ * @param options.preserveUndefined - If true, undefined data/trigger remain undefined; if false (default), they become empty arrays
82
85
  * @returns A new step object with regenerated IDs, without id/cvid/timestamps/versionId
83
86
  */
84
- declare const duplicateStep: <T extends StepLike>(step: T) => Omit<T, "id" | "cvid" | "createdAt" | "updatedAt" | "versionId">;
87
+ declare const duplicateStep: <T extends StepLike>(step: T, options?: {
88
+ preserveUndefined?: boolean;
89
+ }) => Omit<T, "id" | "cvid" | "createdAt" | "updatedAt" | "versionId">;
85
90
  /**
86
91
  * Process multiple steps for duplication
87
92
  * Works with both Prisma Step type (server) and @usertour/types Step (client)
@@ -63,6 +63,7 @@ declare const duplicateData: (data: unknown, contentType: string) => unknown;
63
63
  /**
64
64
  * Step-like type that works with both Prisma Step and @usertour/types Step
65
65
  * This allows the function to be used in both server and client contexts
66
+ * Uses unknown for data/trigger to accept Prisma's JsonValue type
66
67
  */
67
68
  type StepLike = {
68
69
  id?: string;
@@ -70,18 +71,22 @@ type StepLike = {
70
71
  createdAt?: string | Date;
71
72
  updatedAt?: string | Date;
72
73
  versionId?: string;
73
- data?: ContentEditorRoot[];
74
- trigger?: StepTrigger[];
75
- target?: Step['target'];
74
+ data?: unknown;
75
+ trigger?: unknown;
76
+ target?: unknown;
76
77
  [key: string]: unknown;
77
78
  };
78
79
  /**
79
80
  * Core function to duplicate a single step by removing database-specific fields
80
81
  * and regenerating IDs in triggers, target actions, and question elements
81
82
  * @param step - The step to duplicate
83
+ * @param options - Options for duplication behavior
84
+ * @param options.preserveUndefined - If true, undefined data/trigger remain undefined; if false (default), they become empty arrays
82
85
  * @returns A new step object with regenerated IDs, without id/cvid/timestamps/versionId
83
86
  */
84
- declare const duplicateStep: <T extends StepLike>(step: T) => Omit<T, "id" | "cvid" | "createdAt" | "updatedAt" | "versionId">;
87
+ declare const duplicateStep: <T extends StepLike>(step: T, options?: {
88
+ preserveUndefined?: boolean;
89
+ }) => Omit<T, "id" | "cvid" | "createdAt" | "updatedAt" | "versionId">;
85
90
  /**
86
91
  * Process multiple steps for duplication
87
92
  * Works with both Prisma Step type (server) and @usertour/types Step (client)
@@ -16,7 +16,7 @@ import {
16
16
  isQuestionElement,
17
17
  isRestrictedType,
18
18
  processQuestionElements
19
- } from "./chunk-BCAOJ3IY.js";
19
+ } from "./chunk-JTRQ5CEL.js";
20
20
  import "./chunk-7ODE2AIC.js";
21
21
  import "./chunk-SIG4WTEF.js";
22
22
  import "./chunk-YYIGUZNZ.js";
package/dist/index.cjs CHANGED
@@ -1902,12 +1902,14 @@ var duplicateData = (data, contentType) => {
1902
1902
  }
1903
1903
  return data;
1904
1904
  };
1905
- var duplicateStep = (step) => {
1905
+ var duplicateStep = (step, options) => {
1906
+ var _a;
1906
1907
  const { id, cvid, createdAt, updatedAt, versionId, trigger, target, data, ...rest } = step;
1908
+ const preserveUndefined = (_a = options == null ? void 0 : options.preserveUndefined) != null ? _a : false;
1907
1909
  return {
1908
1910
  ...rest,
1909
- data: data ? processQuestionElements(data) : data,
1910
- trigger: trigger ? duplicateTriggers(trigger) : trigger,
1911
+ data: data ? processQuestionElements(data) : preserveUndefined ? data : [],
1912
+ trigger: trigger ? duplicateTriggers(trigger) : preserveUndefined ? trigger : [],
1911
1913
  target: duplicateTarget(target)
1912
1914
  };
1913
1915
  };
@@ -1915,7 +1917,7 @@ var duplicateSteps = (steps) => {
1915
1917
  if (!isArray(steps)) {
1916
1918
  return [];
1917
1919
  }
1918
- return steps.map((step) => duplicateStep(step));
1920
+ return steps.map((step) => duplicateStep(step, { preserveUndefined: true }));
1919
1921
  };
1920
1922
  var duplicateStepWithRename = (originalStep, sequence, existingStepNames) => {
1921
1923
  const duplicated = duplicateStep(originalStep);
package/dist/index.js CHANGED
@@ -40,7 +40,7 @@ import {
40
40
  isQuestionElement,
41
41
  isRestrictedType,
42
42
  processQuestionElements
43
- } from "./chunk-BCAOJ3IY.js";
43
+ } from "./chunk-JTRQ5CEL.js";
44
44
  import "./chunk-7ODE2AIC.js";
45
45
  import {
46
46
  allConditionsHaveIds,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usertour/helpers",
3
- "version": "0.0.49",
3
+ "version": "0.0.50",
4
4
  "type": "module",
5
5
  "description": "Utility functions and helpers shared across the UserTour project",
6
6
  "homepage": "https://www.usertour.io",