@case-framework/survey-core 0.2.0 → 0.3.0

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/build/index.mjs CHANGED
@@ -1,7 +1,6 @@
1
- import { A as ValueReference, C as ContextVariableType, D as FunctionExpressionNames, E as FunctionExpression, F as structuredCloneMethod, M as generateCodingKey, N as generateId, O as ResponseVariableExpression, P as shuffleIndices, S as ContextVariableExpression, T as ExpressionType, _ as deserializeTemplateValue, a as createFullRegistry, b as serializeTemplateValues, c as toItemTypeDefinitionRegistry, d as builtInItemCoreRegistry, f as isBuiltInItemType, g as TemplateDefTypes, h as SurveyItemCore, i as validateLocale, j as ValueReferenceMethod, k as ReferenceUsageType, l as GroupItemCore, m as ReservedSurveyItemTypes, n as SurveyItemTranslations, o as createItemCore, p as SurveyItemKey, r as SurveyTranslations, s as createItemTypeDefinitionRegistry, t as Survey, u as PageBreakItemCore, v as deserializeTemplateValues, w as Expression, x as ConstExpression, y as serializeTemplateValue } from "./survey-DQmpzihl.mjs";
1
+ import { A as FunctionExpressionNames, C as serializeTemplateValues, D as Expression, E as ContextVariableType, F as generateCodingKey, I as generateId, L as shuffleIndices, M as ReferenceUsageType, N as ValueReference, O as ExpressionType, P as ValueReferenceMethod, R as structuredCloneMethod, S as serializeTemplateValue, T as ContextVariableExpression, _ as NumberPrecision, a as createFullRegistry, b as deserializeTemplateValue, c as toItemTypeDefinitionRegistry, d as builtInItemCoreRegistry, f as isBuiltInItemType, g as DurationUnits, h as SurveyItemCore, i as validateLocale, j as ResponseVariableExpression, k as FunctionExpression, l as GroupItemCore, m as ReservedSurveyItemTypes, n as SurveyItemTranslations, o as createItemCore, p as SurveyItemKey, r as SurveyTranslations, s as createItemTypeDefinitionRegistry, t as Survey, u as PageBreakItemCore, v as ValueType, w as ConstExpression, x as deserializeTemplateValues, y as TemplateDefTypes } from "./survey-DJbgFVPz.mjs";
2
2
  import { format } from "date-fns";
3
3
  import { enUS } from "date-fns/locale";
4
-
5
4
  //#region src/to_mirgrate/data_types/legacy-types.ts
6
5
  const isLegacyItemGroupComponent = (item) => {
7
6
  const items = item.items;
@@ -11,7 +10,6 @@ const isLegacySurveyGroupItem = (item) => {
11
10
  const items = item.items;
12
11
  return items !== void 0 && items.length > 0;
13
12
  };
14
-
15
13
  //#endregion
16
14
  //#region src/survey/responses/item-response.ts
17
15
  /**
@@ -66,7 +64,6 @@ var ResponseItem = class ResponseItem {
66
64
  return new ResponseItem(json.slotValues);
67
65
  }
68
66
  };
69
-
70
67
  //#endregion
71
68
  //#region src/survey/responses/response-meta.ts
72
69
  const SurveyEventTypes = {
@@ -75,7 +72,6 @@ const SurveyEventTypes = {
75
72
  responeChanged: "responeChanged",
76
73
  languageChanged: "languageChanged"
77
74
  };
78
-
79
75
  //#endregion
80
76
  //#region src/survey/responses/survey-response.ts
81
77
  /**
@@ -120,36 +116,6 @@ var SurveyResponse = class SurveyResponse {
120
116
  return response;
121
117
  }
122
118
  };
123
-
124
- //#endregion
125
- //#region src/survey/responses/value-types.ts
126
- const ValueType = {
127
- string: "string",
128
- duration: "duration",
129
- reference: "reference",
130
- number: "number",
131
- boolean: "boolean",
132
- date: "date",
133
- stringArray: "string[]",
134
- durationArray: "duration[]",
135
- referenceArray: "reference[]",
136
- numberArray: "number[]",
137
- dateArray: "date[]"
138
- };
139
- const DurationUnits = {
140
- seconds: "seconds",
141
- minutes: "minutes",
142
- hours: "hours",
143
- days: "days",
144
- weeks: "weeks",
145
- months: "months",
146
- years: "years"
147
- };
148
- const NumberPrecision = {
149
- int: "int",
150
- float: "float"
151
- };
152
-
153
119
  //#endregion
154
120
  //#region src/survey/responses/utils.ts
155
121
  const initValueForType = (returnType) => {
@@ -203,7 +169,6 @@ const initValueForType = (returnType) => {
203
169
  default: throw new Error("Invalid return type: " + returnType);
204
170
  }
205
171
  };
206
-
207
172
  //#endregion
208
173
  //#region src/expressions/expression-evaluator.ts
209
174
  var ExpressionEvaluator = class {
@@ -533,7 +498,6 @@ var ExpressionEvaluator = class {
533
498
  });
534
499
  }
535
500
  };
536
-
537
501
  //#endregion
538
502
  //#region src/expressions/editors/expression-editor.ts
539
503
  var ExpressionEditor = class {
@@ -1056,7 +1020,6 @@ var MaxExpressionEditor = class extends GroupExpressionEditor {
1056
1020
  return new FunctionExpression(FunctionExpressionNames.max, this.args.map((arg) => arg.getExpression()), this._editorConfig);
1057
1021
  }
1058
1022
  };
1059
-
1060
1023
  //#endregion
1061
1024
  //#region src/expressions/editors/expression-editor-generators.ts
1062
1025
  const const_string_array = (...values) => {
@@ -1161,7 +1124,6 @@ const min = (...args) => {
1161
1124
  const max = (...args) => {
1162
1125
  return new MaxExpressionEditor(args);
1163
1126
  };
1164
-
1165
1127
  //#endregion
1166
1128
  //#region src/survey/utils/content.ts
1167
1129
  let ContentType = /* @__PURE__ */ function(ContentType) {
@@ -1174,7 +1136,6 @@ let AttributionType = /* @__PURE__ */ function(AttributionType) {
1174
1136
  AttributionType["template"] = "template";
1175
1137
  return AttributionType;
1176
1138
  }({});
1177
-
1178
1139
  //#endregion
1179
1140
  //#region src/engine/engine.ts
1180
1141
  var SurveyEngineCore = class {
@@ -1583,7 +1544,6 @@ const flattenTree = (itemTree) => {
1583
1544
  });
1584
1545
  return flatTree;
1585
1546
  };
1586
-
1587
1547
  //#endregion
1588
1548
  //#region src/response-exporter/types.ts
1589
1549
  /** Meta column keys in fixed order (common attributes first). */
@@ -1599,13 +1559,14 @@ const SlotTransformMode = {
1599
1559
  mask: "mask",
1600
1560
  dateFormat: "dateFormat"
1601
1561
  };
1562
+ /** Separator between item key path and slot coding path in default export headers. */
1563
+ const EXPORT_COLUMN_SLOT_SEPARATOR = "__";
1602
1564
  /** Source of an export column. */
1603
1565
  const ExportColumnSource = {
1604
1566
  meta: "meta",
1605
1567
  context: "context",
1606
1568
  response: "response"
1607
1569
  };
1608
-
1609
1570
  //#endregion
1610
1571
  //#region src/response-exporter/slot-formatter.ts
1611
1572
  /** Default transform config when no profile override. */
@@ -1672,7 +1633,6 @@ function valueToString(value) {
1672
1633
  default: return String(value.value ?? "");
1673
1634
  }
1674
1635
  }
1675
-
1676
1636
  //#endregion
1677
1637
  //#region src/response-exporter/csv-serializer.ts
1678
1638
  const DEFAULT_OPTIONS = {
@@ -1699,32 +1659,28 @@ function serializeToCsv(columns, rows, options) {
1699
1659
  };
1700
1660
  const sep = opts.separator;
1701
1661
  const lines = [];
1702
- const keys = columns.map((c) => c.key);
1703
- if (opts.includeHeader) lines.push(keys.map((k) => escapeCsvCell(k, sep)).join(sep));
1662
+ const headers = columns.map((c) => c.header);
1663
+ if (opts.includeHeader) lines.push(headers.map((header) => escapeCsvCell(header, sep)).join(sep));
1704
1664
  for (const row of rows) {
1705
- const cells = keys.map((k) => escapeCsvCell(row[k] ?? "", sep));
1665
+ const cells = headers.map((header) => escapeCsvCell(row[header] ?? "", sep));
1706
1666
  lines.push(cells.join(sep));
1707
1667
  }
1708
1668
  return lines.join(opts.lineEnding);
1709
1669
  }
1710
-
1711
1670
  //#endregion
1712
1671
  //#region src/response-exporter/exporter.ts
1713
- const VALUE_REF_SEP$1 = "...";
1714
- function parseValueRef(ref) {
1715
- const parts = ref.split(VALUE_REF_SEP$1);
1716
- if (parts.length !== 3 || parts[1] !== ValueReferenceMethod.get) return {
1717
- itemId: "",
1718
- slotId: ""
1719
- };
1720
- return {
1721
- itemId: parts[0],
1722
- slotId: parts[2]
1723
- };
1724
- }
1725
1672
  function slotOverrideKey(itemId, slotId) {
1726
1673
  return `${itemId}::${slotId}`;
1727
1674
  }
1675
+ function responseColumnId(itemId, slotId) {
1676
+ return `${itemId}::${slotId}`;
1677
+ }
1678
+ function metaColumnId(metaField) {
1679
+ return `meta:${metaField}`;
1680
+ }
1681
+ function contextColumnId(contextKey) {
1682
+ return `context:${contextKey}`;
1683
+ }
1728
1684
  function formatMetaValue(response, metaField) {
1729
1685
  switch (metaField) {
1730
1686
  case "submittedAt":
@@ -1752,25 +1708,27 @@ var SurveyResponseExporter = class {
1752
1708
  const binding = this.versions.get(versionId);
1753
1709
  if (!binding) return [];
1754
1710
  const survey = binding.survey;
1755
- const slots = survey.getAvailableResponseValueSlots();
1756
1711
  const keyIndex = survey.keyIndex;
1757
1712
  const keyByItemId = new Map(keyIndex.map((r) => [r.itemId, r]));
1758
1713
  const profile = this.resolveProfileForVersion(versionId);
1759
1714
  const columns = [];
1760
- for (const [valueRef, valueType] of Object.entries(slots)) {
1761
- const { itemId, slotId } = parseValueRef(valueRef);
1762
- if (!itemId || !slotId) continue;
1763
- if (valueRef.includes(`${VALUE_REF_SEP$1}${ValueReferenceMethod.isDefined}`)) continue;
1715
+ for (const { itemId, slots } of survey.getResponseSlotDefinitions()) {
1764
1716
  const keyInfo = keyByItemId.get(itemId);
1765
- const defaultExportKey = `${keyInfo ? [...keyInfo.keyPath, keyInfo.key].join(".") : itemId}__${slotId}`;
1766
- const exportKey = (profile?.slotOverrides?.[slotOverrideKey(itemId, slotId)])?.exportKey ?? defaultExportKey;
1767
- columns.push({
1768
- key: exportKey,
1769
- source: ExportColumnSource.response,
1770
- itemId,
1771
- slotId,
1772
- valueType
1773
- });
1717
+ const itemBaseKey = keyInfo ? [...keyInfo.keyPath, keyInfo.key].join(".") : itemId;
1718
+ for (const slot of slots) {
1719
+ const columnId = responseColumnId(itemId, slot.slotId);
1720
+ const codingPath = [...slot.keyPath, slot.key].filter((part) => part.trim().length > 0);
1721
+ const defaultHeader = codingPath.length > 0 ? `${itemBaseKey}__${codingPath.join(".")}` : `${itemBaseKey}__${slot.slotId}`;
1722
+ const header = this.resolveColumnHeader(profile, columnId, defaultHeader);
1723
+ columns.push({
1724
+ id: columnId,
1725
+ header,
1726
+ source: ExportColumnSource.response,
1727
+ itemId,
1728
+ slotId: slot.slotId,
1729
+ valueType: slot.valueType
1730
+ });
1731
+ }
1774
1732
  }
1775
1733
  return columns;
1776
1734
  }
@@ -1782,13 +1740,14 @@ var SurveyResponseExporter = class {
1782
1740
  const vids = versionIds ?? [versionId];
1783
1741
  const responseCols = [];
1784
1742
  const seen = /* @__PURE__ */ new Set();
1785
- for (const vid of vids) for (const c of this.computeResponseColumns(vid)) if (!seen.has(c.key)) {
1786
- seen.add(c.key);
1743
+ for (const vid of vids) for (const c of this.computeResponseColumns(vid)) if (!seen.has(c.id)) {
1744
+ seen.add(c.id);
1787
1745
  responseCols.push(c);
1788
1746
  }
1789
1747
  const profile = this.resolveProfileForVersion(versionId);
1790
1748
  const metaColumns = META_COLUMN_ORDER.map((metaField) => ({
1791
- key: metaField,
1749
+ id: metaColumnId(metaField),
1750
+ header: this.resolveColumnHeader(profile, metaColumnId(metaField), metaField),
1792
1751
  source: ExportColumnSource.meta,
1793
1752
  metaField
1794
1753
  }));
@@ -1803,23 +1762,38 @@ var SurveyResponseExporter = class {
1803
1762
  if (ib >= 0) return 1;
1804
1763
  return a.localeCompare(b);
1805
1764
  } : void 0).map((contextKey) => ({
1806
- key: `context.${contextKey}`,
1765
+ id: contextColumnId(contextKey),
1766
+ header: this.resolveColumnHeader(profile, contextColumnId(contextKey), `context.${contextKey}`),
1807
1767
  source: ExportColumnSource.context,
1808
1768
  contextKey
1809
1769
  }));
1810
1770
  const respOrder = profile?.responseColumnOrder ?? [];
1811
- const byOrder = respOrder.filter((k) => responseCols.some((c) => c.key === k)).map((k) => responseCols.find((c) => c.key === k));
1812
- const remaining = responseCols.filter((c) => !respOrder.includes(c.key)).sort((a, b) => a.key.localeCompare(b.key));
1771
+ const byOrder = respOrder.filter((id) => responseCols.some((c) => c.id === id)).map((id) => responseCols.find((c) => c.id === id));
1772
+ const remaining = responseCols.filter((c) => !respOrder.includes(c.id)).sort((a, b) => a.header.localeCompare(b.header));
1813
1773
  const respCols = [...byOrder, ...remaining];
1814
- return [
1774
+ const columns = [
1815
1775
  ...metaColumns,
1816
1776
  ...contextCols,
1817
1777
  ...respCols
1818
1778
  ];
1779
+ this.assertUniqueHeaders(columns);
1780
+ return columns;
1819
1781
  }
1820
1782
  resolveProfileForVersion(versionId) {
1821
1783
  return this.profiles.find((p) => !p.versionId || p.versionId === versionId);
1822
1784
  }
1785
+ resolveColumnHeader(profile, columnId, defaultHeader) {
1786
+ const override = profile?.columnHeaders?.[columnId]?.trim();
1787
+ return override && override.length > 0 ? override : defaultHeader;
1788
+ }
1789
+ assertUniqueHeaders(columns) {
1790
+ const seen = /* @__PURE__ */ new Map();
1791
+ for (const column of columns) {
1792
+ const existingId = seen.get(column.header);
1793
+ if (existingId && existingId !== column.id) throw new Error(`Duplicate export column header '${column.header}' for columns '${existingId}' and '${column.id}'`);
1794
+ seen.set(column.header, column.id);
1795
+ }
1796
+ }
1823
1797
  getTransformConfig(versionId, itemId, slotId) {
1824
1798
  return this.resolveProfileForVersion(versionId)?.slotOverrides?.[slotOverrideKey(itemId, slotId)] ?? DEFAULT_TRANSFORM;
1825
1799
  }
@@ -1832,14 +1806,14 @@ var SurveyResponseExporter = class {
1832
1806
  const row = {};
1833
1807
  for (const col of columns) {
1834
1808
  if (col.source === ExportColumnSource.meta && col.metaField) {
1835
- row[col.key] = formatMetaValue(response, col.metaField);
1809
+ row[col.header] = formatMetaValue(response, col.metaField);
1836
1810
  continue;
1837
1811
  }
1838
1812
  if (col.source === ExportColumnSource.context && col.contextKey) {
1839
1813
  const value = response.context?.[col.contextKey];
1840
1814
  const transformConfig = this.getContextTransformConfig(response.versionId, col.contextKey);
1841
1815
  const valueType = value?.type ?? ValueType.string;
1842
- row[col.key] = exportSingleResponseSlot({
1816
+ row[col.header] = exportSingleResponseSlot({
1843
1817
  value,
1844
1818
  valueType,
1845
1819
  transformConfig
@@ -1849,7 +1823,7 @@ var SurveyResponseExporter = class {
1849
1823
  if (col.source === ExportColumnSource.response && col.itemId != null && col.slotId != null && col.valueType != null) {
1850
1824
  const value = response.responses.get(col.itemId)?.response?.get(col.slotId);
1851
1825
  const transformConfig = this.getTransformConfig(response.versionId, col.itemId, col.slotId);
1852
- row[col.key] = exportSingleResponseSlot({
1826
+ row[col.header] = exportSingleResponseSlot({
1853
1827
  value,
1854
1828
  valueType: col.valueType,
1855
1829
  transformConfig
@@ -1872,10 +1846,8 @@ var SurveyResponseExporter = class {
1872
1846
  return serializeToCsv(this.computeColumnsForBatch(responses), responses.map((r) => this.exportResponse(r)).filter((r) => r !== null), options);
1873
1847
  }
1874
1848
  };
1875
-
1876
1849
  //#endregion
1877
1850
  //#region src/response-exporter/codebook.ts
1878
- const VALUE_REF_SEP = "...";
1879
1851
  /**
1880
1852
  * Extract plain text from Content for codebook display.
1881
1853
  */
@@ -1890,26 +1862,18 @@ function generateCodebook(survey, options) {
1890
1862
  const locales = options?.locales ?? survey.locales;
1891
1863
  const keyIndex = survey.keyIndex;
1892
1864
  const keyByItemId = new Map(keyIndex.map((r) => [r.itemId, r]));
1893
- const slots = survey.getAvailableResponseValueSlots();
1894
- const valueRefToSlots = /* @__PURE__ */ new Map();
1895
- for (const [valueRef, valueType] of Object.entries(slots)) {
1896
- const parts = valueRef.split(VALUE_REF_SEP);
1897
- if (parts.length !== 3 || parts[1] !== ValueReferenceMethod.get) continue;
1898
- const itemId = parts[0];
1899
- const slotId = parts[2];
1900
- const list = valueRefToSlots.get(itemId) ?? [];
1901
- if (!list.some((s) => s.slotId === slotId)) list.push({
1902
- slotId,
1903
- valueType
1904
- });
1905
- valueRefToSlots.set(itemId, list);
1906
- }
1865
+ const slotDefsByItemId = new Map(survey.getResponseSlotDefinitions().map(({ itemId, slots }) => [itemId, slots.map((slot) => ({
1866
+ slotId: slot.slotId,
1867
+ key: slot.key,
1868
+ keyPath: [...slot.keyPath],
1869
+ valueType: slot.valueType
1870
+ }))]));
1907
1871
  const items = [];
1908
1872
  for (const item of survey.surveyItems.values()) {
1909
1873
  const keyInfo = keyByItemId.get(item.id);
1910
1874
  const key = keyInfo?.key ?? item.id;
1911
1875
  const keyPath = keyInfo?.keyPath ?? [];
1912
- const slotList = valueRefToSlots.get(item.id) ?? [];
1876
+ const slotList = slotDefsByItemId.get(item.id) ?? [];
1913
1877
  slotList.sort((a, b) => a.slotId.localeCompare(b.slotId));
1914
1878
  let contentByLocale;
1915
1879
  if (locales.length > 0) {
@@ -1939,7 +1903,7 @@ function generateCodebook(survey, options) {
1939
1903
  items: items.sort((a, b) => a.key.localeCompare(b.key))
1940
1904
  };
1941
1905
  }
1942
-
1943
1906
  //#endregion
1944
- export { AndExpressionEditor, AttributionType, ConstBooleanEditor, ConstDateArrayEditor, ConstDateEditor, ConstExpression, ConstNumberArrayEditor, ConstNumberEditor, ConstStringArrayEditor, ConstStringEditor, ContentType, ContextVariableExpression, ContextVariableType, CtxCustomExpressionEditor, CtxCustomValueEditor, CtxLocaleEditor, CtxPFlagDateEditor, CtxPFlagIsDefinedEditor, CtxPFlagNumEditor, CtxPFlagStringEditor, DEFAULT_TRANSFORM, DurationUnits, EqExpressionEditor, Expression, ExpressionEditor, ExpressionEvaluator, ExpressionType, FunctionExpression, FunctionExpressionNames, GroupItemCore, GtExpressionEditor, GteExpressionEditor, InRangeExpressionEditor, LtExpressionEditor, LteExpressionEditor, META_COLUMN_ORDER, MaxExpressionEditor, MinExpressionEditor, NumberPrecision, OrExpressionEditor, PageBreakItemCore, ReferenceUsageType, ReservedSurveyItemTypes, ResponseItem, ResponseVariableEditor, ResponseVariableExpression, SlotTransformMode, StrEqExpressionEditor, StrListContainsExpressionEditor, SumExpressionEditor, Survey, SurveyEngineCore, SurveyEventTypes, SurveyItemCore, SurveyItemKey, SurveyItemResponse, SurveyItemTranslations, SurveyResponse, SurveyResponseExporter, SurveyTranslations, TemplateDefTypes, ValueReference, ValueReferenceMethod, ValueType, and, builtInItemCoreRegistry, const_boolean, const_date, const_date_array, const_number, const_number_array, const_string, const_string_array, createFullRegistry, createItemCore, createItemTypeDefinitionRegistry, ctx_custom_expression, ctx_custom_value, ctx_locale, ctx_pflag_date, ctx_pflag_is_defined, ctx_pflag_num, ctx_pflag_string, deserializeTemplateValue, deserializeTemplateValues, eq, escapeCsvCell, exportSingleResponseSlot, flattenTree, generateCodebook, generateCodingKey, generateId, gt, gte, in_range, initValueForType, isBuiltInItemType, isLegacyItemGroupComponent, isLegacySurveyGroupItem, lt, lte, max, min, or, response_boolean, response_date, response_date_array, response_number, response_number_array, response_string, response_string_array, serializeTemplateValue, serializeTemplateValues, serializeToCsv, shuffleIndices, str_eq, str_list_contains, structuredCloneMethod, sum, toItemTypeDefinitionRegistry, validateLocale };
1907
+ export { AndExpressionEditor, AttributionType, ConstBooleanEditor, ConstDateArrayEditor, ConstDateEditor, ConstExpression, ConstNumberArrayEditor, ConstNumberEditor, ConstStringArrayEditor, ConstStringEditor, ContentType, ContextVariableExpression, ContextVariableType, CtxCustomExpressionEditor, CtxCustomValueEditor, CtxLocaleEditor, CtxPFlagDateEditor, CtxPFlagIsDefinedEditor, CtxPFlagNumEditor, CtxPFlagStringEditor, DEFAULT_TRANSFORM, DurationUnits, EXPORT_COLUMN_SLOT_SEPARATOR, EqExpressionEditor, Expression, ExpressionEditor, ExpressionEvaluator, ExpressionType, FunctionExpression, FunctionExpressionNames, GroupItemCore, GtExpressionEditor, GteExpressionEditor, InRangeExpressionEditor, LtExpressionEditor, LteExpressionEditor, META_COLUMN_ORDER, MaxExpressionEditor, MinExpressionEditor, NumberPrecision, OrExpressionEditor, PageBreakItemCore, ReferenceUsageType, ReservedSurveyItemTypes, ResponseItem, ResponseVariableEditor, ResponseVariableExpression, SlotTransformMode, StrEqExpressionEditor, StrListContainsExpressionEditor, SumExpressionEditor, Survey, SurveyEngineCore, SurveyEventTypes, SurveyItemCore, SurveyItemKey, SurveyItemResponse, SurveyItemTranslations, SurveyResponse, SurveyResponseExporter, SurveyTranslations, TemplateDefTypes, ValueReference, ValueReferenceMethod, ValueType, and, builtInItemCoreRegistry, const_boolean, const_date, const_date_array, const_number, const_number_array, const_string, const_string_array, createFullRegistry, createItemCore, createItemTypeDefinitionRegistry, ctx_custom_expression, ctx_custom_value, ctx_locale, ctx_pflag_date, ctx_pflag_is_defined, ctx_pflag_num, ctx_pflag_string, deserializeTemplateValue, deserializeTemplateValues, eq, escapeCsvCell, exportSingleResponseSlot, flattenTree, generateCodebook, generateCodingKey, generateId, gt, gte, in_range, initValueForType, isBuiltInItemType, isLegacyItemGroupComponent, isLegacySurveyGroupItem, lt, lte, max, min, or, response_boolean, response_date, response_date_array, response_number, response_number_array, response_string, response_string_array, serializeTemplateValue, serializeTemplateValues, serializeToCsv, shuffleIndices, str_eq, str_list_contains, structuredCloneMethod, sum, toItemTypeDefinitionRegistry, validateLocale };
1908
+
1945
1909
  //# sourceMappingURL=index.mjs.map