@wix/bex-core 2.240.0 → 2.247.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.
Files changed (67) hide show
  1. package/dist/cjs/assets/locale/messages_cs.json +1 -1
  2. package/dist/cjs/assets/locale/messages_de.json +1 -1
  3. package/dist/cjs/assets/locale/messages_en.json +1 -1
  4. package/dist/cjs/assets/locale/messages_ko.json +1 -1
  5. package/dist/cjs/assets/locale/messages_pl.json +1 -1
  6. package/dist/cjs/assets/locale/messages_pt.json +1 -1
  7. package/dist/cjs/assets/locale/messages_ru.json +1 -1
  8. package/dist/cjs/assets/locale/messages_sv.json +1 -1
  9. package/dist/cjs/services/DataExtensionFieldOperationsService.js +70 -1
  10. package/dist/cjs/services/DataExtensionFieldOperationsService.js.map +1 -1
  11. package/dist/cjs/services/DataExtensionService/dataExtensionService.js +28 -2
  12. package/dist/cjs/services/DataExtensionService/dataExtensionService.js.map +1 -1
  13. package/dist/cjs/state/CollectionOptimisticActions.js +0 -14
  14. package/dist/cjs/state/CollectionOptimisticActions.js.map +1 -1
  15. package/dist/cjs/state/DataExtensionState.js +13 -1
  16. package/dist/cjs/state/DataExtensionState.js.map +1 -1
  17. package/dist/cjs/state/DataExtensionStateBIReporter.js +6 -0
  18. package/dist/cjs/state/DataExtensionStateBIReporter.js.map +1 -1
  19. package/dist/cjs/state/DeleteFieldModalState.js +44 -0
  20. package/dist/cjs/state/DeleteFieldModalState.js.map +1 -0
  21. package/dist/cjs/state/OptimisticActions.js.map +1 -1
  22. package/dist/cjs/state/index.js +7 -0
  23. package/dist/cjs/state/index.js.map +1 -1
  24. package/dist/cjs/testkit/exportServiceMocks.js +1 -0
  25. package/dist/cjs/testkit/exportServiceMocks.js.map +1 -1
  26. package/dist/esm/assets/locale/messages_cs.json +1 -1
  27. package/dist/esm/assets/locale/messages_de.json +1 -1
  28. package/dist/esm/assets/locale/messages_en.json +1 -1
  29. package/dist/esm/assets/locale/messages_ko.json +1 -1
  30. package/dist/esm/assets/locale/messages_pl.json +1 -1
  31. package/dist/esm/assets/locale/messages_pt.json +1 -1
  32. package/dist/esm/assets/locale/messages_ru.json +1 -1
  33. package/dist/esm/assets/locale/messages_sv.json +1 -1
  34. package/dist/esm/services/DataExtensionFieldOperationsService.js +49 -0
  35. package/dist/esm/services/DataExtensionFieldOperationsService.js.map +1 -1
  36. package/dist/esm/services/DataExtensionService/dataExtensionService.js +19 -0
  37. package/dist/esm/services/DataExtensionService/dataExtensionService.js.map +1 -1
  38. package/dist/esm/state/CollectionOptimisticActions.js +0 -12
  39. package/dist/esm/state/CollectionOptimisticActions.js.map +1 -1
  40. package/dist/esm/state/DataExtensionState.js +11 -1
  41. package/dist/esm/state/DataExtensionState.js.map +1 -1
  42. package/dist/esm/state/DataExtensionStateBIReporter.js +6 -0
  43. package/dist/esm/state/DataExtensionStateBIReporter.js.map +1 -1
  44. package/dist/esm/state/DeleteFieldModalState.js +33 -0
  45. package/dist/esm/state/DeleteFieldModalState.js.map +1 -0
  46. package/dist/esm/state/index.js +1 -0
  47. package/dist/esm/state/index.js.map +1 -1
  48. package/dist/esm/testkit/exportServiceMocks.js +1 -0
  49. package/dist/esm/testkit/exportServiceMocks.js.map +1 -1
  50. package/dist/types/services/DataExtensionFieldOperationsService.d.ts +1 -0
  51. package/dist/types/services/DataExtensionFieldOperationsService.d.ts.map +1 -1
  52. package/dist/types/services/DataExtensionService/dataExtensionService.d.ts +3 -0
  53. package/dist/types/services/DataExtensionService/dataExtensionService.d.ts.map +1 -1
  54. package/dist/types/state/CollectionOptimisticActions.d.ts +0 -12
  55. package/dist/types/state/CollectionOptimisticActions.d.ts.map +1 -1
  56. package/dist/types/state/DataExtensionState.d.ts +2 -0
  57. package/dist/types/state/DataExtensionState.d.ts.map +1 -1
  58. package/dist/types/state/DataExtensionStateBIReporter.d.ts +1 -0
  59. package/dist/types/state/DataExtensionStateBIReporter.d.ts.map +1 -1
  60. package/dist/types/state/DeleteFieldModalState.d.ts +18 -0
  61. package/dist/types/state/DeleteFieldModalState.d.ts.map +1 -0
  62. package/dist/types/state/OptimisticActions.d.ts +12 -0
  63. package/dist/types/state/OptimisticActions.d.ts.map +1 -1
  64. package/dist/types/state/index.d.ts +1 -0
  65. package/dist/types/state/index.d.ts.map +1 -1
  66. package/dist/types/testkit/exportServiceMocks.d.ts.map +1 -1
  67. package/package.json +4 -4
@@ -195,7 +195,7 @@
195
195
  "cairo.tags.bulkItemUpdate.updatingTags.toast.asLabels": "Aktualizace štítků…",
196
196
  "cairo.search.noresults.title": "Nebyly nalezeny žádné výsledky",
197
197
  "cairo.table.summaryBar.list.item": "{title}: <value>{value}</value>",
198
- "cairo.customFields.delete.modal.description": "Pole {selectedField} a související informace budou trvale odstraněny a nebude možné je obnovit. ",
198
+ "cairo.customFields.delete.modal.description": "Pole <bold>{selectedField}</bold> a související informace budou trvale odstraněny a nebude možné je obnovit.",
199
199
  "cairo.tags.applyChanges.toast.success": "Tagy byly aktualizovány.",
200
200
  "cairo.bulkSelected": "{num, plural, one {Vybráno {num,number}} few {Vybrány {num,number}} many {Vybráno {num,number}} other {Vybráno {num,number}}}",
201
201
  "cairo.customFields.fieldType.numberInteger.Name.placeholder": "např. Věk",
@@ -195,7 +195,7 @@
195
195
  "cairo.tags.bulkItemUpdate.updatingTags.toast.asLabels": "Labels werden aktualisiert ...",
196
196
  "cairo.search.noresults.title": "Keine Ergebnisse gefunden",
197
197
  "cairo.table.summaryBar.list.item": "{title}: <value>{value}</value>",
198
- "cairo.customFields.delete.modal.description": "{selectedField} und dazugehörige Informationen werden dauerhaft gelöscht und können nicht wiederhergestellt werden. ",
198
+ "cairo.customFields.delete.modal.description": "<bold>{selectedField}</bold> und dazugehörige Informationen werden dauerhaft gelöscht und können nicht wiederhergestellt werden.",
199
199
  "cairo.tags.applyChanges.toast.success": "Tags wurden aktualisiert.",
200
200
  "cairo.bulkSelected": "{num, plural, one {1 ausgewählt} other {{num,number} ausgewählt}}",
201
201
  "cairo.customFields.fieldType.numberInteger.Name.placeholder": "z. B. Alter",
@@ -572,7 +572,7 @@
572
572
  "cairo.customFields.deleted.success.toast": "{selectedField} was deleted.",
573
573
  "cairo.customFields.deleted.undo.CTA": "Undo",
574
574
  "cairo.customFields.delete.modal.cancel.CTA": "Cancel",
575
- "cairo.customFields.delete.modal.description": "{selectedField} and its information will be permanently deleted and cant be restored. ",
575
+ "cairo.customFields.delete.modal.description": "<bold>{selectedField}</bold> and its information will be permanently deleted and can't be restored.",
576
576
  "cairo.archivedFields.subtitle": "Restore or delete archived fields and their information.",
577
577
  "cairo.table.custom-columns.section-divider": "Archived fields",
578
578
  "cairo.archivedFields.back.manage-custom-fields.tooltip": "Back to Manage Custom Fields",
@@ -195,7 +195,7 @@
195
195
  "cairo.tags.bulkItemUpdate.updatingTags.toast.asLabels": "라벨 업데이트 중...",
196
196
  "cairo.search.noresults.title": "검색 결과 없음",
197
197
  "cairo.table.summaryBar.list.item": "{title}: <value>{value}</value>",
198
- "cairo.customFields.delete.modal.description": "{selectedField} 및 관련 정보가 영구적으로 삭제되며, 삭제 후에는 복구가 불가능합니다. ",
198
+ "cairo.customFields.delete.modal.description": "<bold>{selectedField}</bold> 및 정보가 영구적으로 삭제되며, 삭제 후에는 복원할 수 없습니다.",
199
199
  "cairo.tags.applyChanges.toast.success": "태그가 업데이트되었습니다.",
200
200
  "cairo.bulkSelected": "{num, plural, other {{num,number}개 선택됨}}",
201
201
  "cairo.customFields.fieldType.numberInteger.Name.placeholder": "예: 나이",
@@ -195,7 +195,7 @@
195
195
  "cairo.tags.bulkItemUpdate.updatingTags.toast.asLabels": "Aktualizacja etykiet...",
196
196
  "cairo.search.noresults.title": "Brak wyników wyszukiwania",
197
197
  "cairo.table.summaryBar.list.item": "{title}: <value>{value}</value>",
198
- "cairo.customFields.delete.modal.description": "Pole {selectedField} i zawarte w nim informacje zostaną trwale usunięte i nie będzie można ich przywrócić. ",
198
+ "cairo.customFields.delete.modal.description": "Pole <bold>{selectedField}</bold> i zawarte w nim informacje zostaną trwale usunięte i nie będzie można ich przywrócić.",
199
199
  "cairo.tags.applyChanges.toast.success": "Zaktualizowano tagi.",
200
200
  "cairo.bulkSelected": "{num, plural, one {Wybrano 1} few {Wybrano {num,number}} many {Wybrano {num,number}} other {Wybrano {num,number}}}",
201
201
  "cairo.customFields.fieldType.numberInteger.Name.placeholder": "np. wiek",
@@ -195,7 +195,7 @@
195
195
  "cairo.tags.bulkItemUpdate.updatingTags.toast.asLabels": "Atualizando etiquetas",
196
196
  "cairo.search.noresults.title": "Nenhum resultado encontrado",
197
197
  "cairo.table.summaryBar.list.item": "{title}: <value>{value}</value>",
198
- "cairo.customFields.delete.modal.description": "O campo \"{selectedField}\" e suas informações serão excluídos permanentemente e não poderão ser restaurados. ",
198
+ "cairo.customFields.delete.modal.description": "O campo <bold>{selectedField}</bold> e suas informações serão excluídos permanentemente e não poderão ser restaurados.",
199
199
  "cairo.tags.applyChanges.toast.success": "Tags atualizadas.",
200
200
  "cairo.bulkSelected": "{num, plural, one {1 selecionado} other {{num,number} selecionados}}",
201
201
  "cairo.customFields.fieldType.numberInteger.Name.placeholder": "Ex.: Idade",
@@ -195,7 +195,7 @@
195
195
  "cairo.tags.bulkItemUpdate.updatingTags.toast.asLabels": "Обновление меток...",
196
196
  "cairo.search.noresults.title": "Ничего не найдено",
197
197
  "cairo.table.summaryBar.list.item": "{title}: <value>{value}</value>",
198
- "cairo.customFields.delete.modal.description": "{selectedField} и информация в нем будут навсегда удалены без возможности восстановления. ",
198
+ "cairo.customFields.delete.modal.description": "Поле <bold>{selectedField}</bold> и информация в нем будут навсегда удалены, их нельзя будет восстановить.",
199
199
  "cairo.tags.applyChanges.toast.success": "Теги обновлены.",
200
200
  "cairo.bulkSelected": "{num, plural, one {Выбран {num,number}} few {Выбрано {num,number}} many {Выбрано {num,number}} other {Выбрано {num,number}}}",
201
201
  "cairo.customFields.fieldType.numberInteger.Name.placeholder": "например, Возраст",
@@ -195,7 +195,7 @@
195
195
  "cairo.tags.bulkItemUpdate.updatingTags.toast.asLabels": "Uppdaterar etiketter ...",
196
196
  "cairo.search.noresults.title": "Inga resultat hittades",
197
197
  "cairo.table.summaryBar.list.item": "{title}: <value>{value}</value>",
198
- "cairo.customFields.delete.modal.description": "{selectedField} och dess information tas bort permanent och kan inte återställas. ",
198
+ "cairo.customFields.delete.modal.description": "<bold>{selectedField}</bold> och dess information tas bort permanent och kan inte återställas.",
199
199
  "cairo.tags.applyChanges.toast.success": "Taggarna har uppdaterats.",
200
200
  "cairo.bulkSelected": "{num, plural, one {1 vald} other {{num,number} valda}}",
201
201
  "cairo.customFields.fieldType.numberInteger.Name.placeholder": "t.ex. Ålder",
@@ -166,6 +166,59 @@ class DataExtensionFieldOperationsService {
166
166
  });
167
167
  }
168
168
  }
169
+ async undoDeletedField({
170
+ id,
171
+ fieldData,
172
+ origin,
173
+ reportBi
174
+ }) {
175
+ if (!id) {
176
+ return;
177
+ }
178
+ const {
179
+ dataExtensionService,
180
+ userSchema,
181
+ fqdnString,
182
+ upsertSchema,
183
+ container
184
+ } = this.context;
185
+ const fieldName = (fieldData == null ? void 0 : fieldData.title) || '';
186
+ try {
187
+ // Re-add the field to the schema in archived state
188
+ const {
189
+ dataExtensionSchema
190
+ } = await dataExtensionService.restoreDeletedField({
191
+ schema: userSchema,
192
+ fqdn: fqdnString,
193
+ id,
194
+ fieldData
195
+ });
196
+ if (dataExtensionSchema) {
197
+ upsertSchema(dataExtensionSchema);
198
+ }
199
+ this.showFieldOperationToast({
200
+ type: 'SUCCESS',
201
+ operation: 'restore',
202
+ message: container.translate('cairo.customFields.restored.success.toast', {
203
+ selectedField: fieldName
204
+ })
205
+ });
206
+ } catch (e) {
207
+ this.showFieldOperationToast({
208
+ type: 'ERROR',
209
+ operation: 'restore',
210
+ message: container.translate('cairo.customFields.restore.error.toast', {
211
+ selectedField: fieldName
212
+ }),
213
+ onRetryClick: () => this.undoDeletedField({
214
+ id,
215
+ fieldData,
216
+ origin,
217
+ reportBi
218
+ })
219
+ });
220
+ }
221
+ }
169
222
  async deleteField({
170
223
  id,
171
224
  origin,
@@ -197,6 +250,11 @@ class DataExtensionFieldOperationsService {
197
250
  });
198
251
  return;
199
252
  }
253
+
254
+ // Store the field data before deletion for undo functionality
255
+ const fieldDataBeforeDeletion = field ? {
256
+ ...field
257
+ } : null;
200
258
  try {
201
259
  const {
202
260
  dataExtensionSchema
@@ -213,7 +271,18 @@ class DataExtensionFieldOperationsService {
213
271
  operation: 'delete',
214
272
  message: container.translate('cairo.customFields.deleted.success.toast', {
215
273
  selectedField: fieldName
216
- })
274
+ }),
275
+ action: fieldDataBeforeDeletion ? {
276
+ uiType: 'LINK',
277
+ text: container.translate('cairo.toast.undo'),
278
+ onClick: () => this.undoDeletedField({
279
+ id,
280
+ fieldData: fieldDataBeforeDeletion,
281
+ origin,
282
+ reportBi
283
+ }),
284
+ removeToastOnClick: true
285
+ } : undefined
217
286
  });
218
287
  } catch (e) {
219
288
  this.showFieldOperationToast({
@@ -1 +1 @@
1
- {"version":3,"names":["_DataExtensionStateBIReporter","require","DataExtensionFieldOperationsService","constructor","context","showFieldOperationToast","type","operation","message","action","onRetryClick","biName","container","retryAction","uiType","text","translate","onClick","removeToastOnClick","showToast","toLowerCase","archiveField","id","origin","reportBi","dataExtensionService","userSchema","fqdnString","extractFieldValuesFromSchema","upsertSchema","enableArchive","openArchivedPanel","fieldValues","fieldName","name","biReporter","DataExtensionStateBIReporter","dataExtensionSchema","archiveCustomField","schema","fqdn","successMessage","selectedField","undefined","e","reportArchiveTryAgain","reportArchiveFieldFailed","formValues","restoreField","restoreCustomField","reportRestoreTryAgain","reportRestoreFieldFailed","deleteField","_userSchema$jsonSchem","field","jsonSchema","properties","deleteCustomField","exports"],"sources":["../../../src/services/DataExtensionFieldOperationsService.ts"],"sourcesContent":["import type { DataExtensionSchema } from '@wix/bex-utils/@wix/ambassador-data-extensions-v1-data-extension-schema/types';\nimport type { CustomFieldForm, WixPatternsContainer } from '../state';\nimport type { DataExtensionSchemaService, ReportBI } from '.';\nimport { DataExtensionStateBIReporter } from '../state/DataExtensionStateBIReporter';\nimport { ToastAction } from '../model';\n\nexport interface FieldOperationParams {\n id?: string;\n origin: string;\n reportBi: ReportBI;\n}\n\nexport interface FieldOperationContext {\n container: WixPatternsContainer;\n dataExtensionService: DataExtensionSchemaService;\n userSchema?: DataExtensionSchema;\n fqdnString: string;\n enableArchive?: boolean;\n extractFieldValuesFromSchema: (\n fieldId: string,\n ) => CustomFieldForm | undefined;\n upsertSchema: (schema: DataExtensionSchema) => void;\n openArchivedPanel?: () => void;\n}\n\n/**\n * Service for handling archive, restore, and delete operations on custom fields.\n * This service is lazily loaded to reduce bundle size for consumers who don't use these features.\n */\nexport class DataExtensionFieldOperationsService {\n constructor(private readonly context: FieldOperationContext) {}\n\n private showFieldOperationToast({\n type,\n operation,\n message,\n action,\n onRetryClick,\n biName,\n }: {\n type: 'SUCCESS' | 'ERROR';\n operation: 'archive' | 'restore' | 'delete';\n message: string;\n action?: ToastAction;\n onRetryClick?: () => void;\n biName?: string;\n }) {\n const { container } = this.context;\n const retryAction = {\n uiType: 'LINK' as const,\n text: container.translate('cairo.toast.retry'),\n onClick: onRetryClick,\n removeToastOnClick: true,\n };\n\n container.showToast?.({\n message,\n action: type !== 'SUCCESS' && onRetryClick ? retryAction : action,\n type,\n biName:\n biName || `cairo-${operation}-custom-field-${type.toLowerCase()}-toast`,\n });\n }\n\n async archiveField({ id, origin, reportBi }: FieldOperationParams) {\n if (!id) {\n return;\n }\n\n const {\n dataExtensionService,\n userSchema,\n fqdnString,\n extractFieldValuesFromSchema,\n upsertSchema,\n container,\n enableArchive,\n openArchivedPanel,\n } = this.context;\n\n const fieldValues = extractFieldValuesFromSchema(id);\n const fieldName = fieldValues?.name || '';\n const biReporter = new DataExtensionStateBIReporter({ reportBi });\n\n try {\n const { dataExtensionSchema } =\n await dataExtensionService.archiveCustomField({\n schema: userSchema,\n fqdn: fqdnString,\n id,\n });\n\n if (dataExtensionSchema) {\n upsertSchema(dataExtensionSchema);\n }\n\n const successMessage =\n enableArchive && fieldName\n ? container.translate(\n 'cairo.customFields.archive.success.toast.enabled',\n { selectedField: fieldName },\n )\n : container.translate('cairo.customFields.archive.success.toast');\n\n const action = enableArchive\n ? {\n text: container.translate(\n 'cairo.customFields.archive.success.toast.CTA',\n ),\n uiType: 'LINK' as const,\n onClick: () => openArchivedPanel?.(),\n }\n : undefined;\n\n this.showFieldOperationToast({\n type: 'SUCCESS',\n operation: 'archive',\n message: successMessage,\n action,\n });\n } catch (e) {\n this.showFieldOperationToast({\n type: 'ERROR',\n operation: 'archive',\n message: container.translate('cairo.customFields.archive.error.toast', {\n selectedField: fieldName,\n }),\n onRetryClick: () => {\n biReporter.reportArchiveTryAgain();\n this.archiveField({ id, origin, reportBi });\n },\n });\n biReporter.reportArchiveFieldFailed({ formValues: fieldValues, origin });\n }\n }\n\n async restoreField({ id, origin, reportBi }: FieldOperationParams) {\n if (!id) {\n return;\n }\n\n const {\n dataExtensionService,\n userSchema,\n fqdnString,\n extractFieldValuesFromSchema,\n upsertSchema,\n container,\n } = this.context;\n\n const fieldValues = extractFieldValuesFromSchema(id);\n const fieldName = fieldValues?.name || '';\n const biReporter = new DataExtensionStateBIReporter({ reportBi });\n\n try {\n const { dataExtensionSchema } =\n await dataExtensionService.restoreCustomField({\n schema: userSchema,\n fqdn: fqdnString,\n id,\n });\n\n if (dataExtensionSchema) {\n upsertSchema(dataExtensionSchema);\n }\n\n this.showFieldOperationToast({\n type: 'SUCCESS',\n operation: 'restore',\n message: container.translate(\n 'cairo.customFields.restored.success.toast',\n { selectedField: fieldName },\n ),\n });\n } catch (e) {\n this.showFieldOperationToast({\n type: 'ERROR',\n operation: 'restore',\n message: container.translate('cairo.customFields.restore.error.toast', {\n selectedField: fieldName,\n }),\n onRetryClick: () => {\n biReporter.reportRestoreTryAgain();\n this.restoreField({ id, origin, reportBi });\n },\n });\n biReporter.reportRestoreFieldFailed({ formValues: fieldValues, origin });\n }\n }\n\n async deleteField({ id, origin, reportBi }: FieldOperationParams) {\n if (!id) {\n return;\n }\n\n const {\n dataExtensionService,\n userSchema,\n fqdnString,\n extractFieldValuesFromSchema,\n upsertSchema,\n container,\n } = this.context;\n\n const fieldValues = extractFieldValuesFromSchema(id);\n const fieldName = fieldValues?.name || '';\n\n // Validate field is archived\n const field = userSchema?.jsonSchema?.properties?.[id];\n if (field && !field['x-wix-archived']) {\n this.showFieldOperationToast({\n type: 'ERROR',\n operation: 'delete',\n message: `${\n fieldName || 'Field'\n } must be archived before it can be deleted.`,\n biName: 'cairo-delete-custom-field-not-archived-error-toast',\n });\n return;\n }\n\n try {\n const { dataExtensionSchema } =\n await dataExtensionService.deleteCustomField({\n schema: userSchema,\n fqdn: fqdnString,\n id,\n });\n\n if (dataExtensionSchema) {\n upsertSchema(dataExtensionSchema);\n }\n\n this.showFieldOperationToast({\n type: 'SUCCESS',\n operation: 'delete',\n message: container.translate(\n 'cairo.customFields.deleted.success.toast',\n { selectedField: fieldName },\n ),\n });\n } catch (e) {\n this.showFieldOperationToast({\n type: 'ERROR',\n operation: 'delete',\n message: container.translate('cairo.customFields.delete.error.toast', {\n selectedField: fieldName,\n }),\n onRetryClick: () => this.deleteField({ id, origin, reportBi }),\n });\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_DataExtensionStateBIReporter","require","DataExtensionFieldOperationsService","constructor","context","showFieldOperationToast","type","operation","message","action","onRetryClick","biName","container","retryAction","uiType","text","translate","onClick","removeToastOnClick","showToast","toLowerCase","archiveField","id","origin","reportBi","dataExtensionService","userSchema","fqdnString","extractFieldValuesFromSchema","upsertSchema","enableArchive","openArchivedPanel","fieldValues","fieldName","name","biReporter","DataExtensionStateBIReporter","dataExtensionSchema","archiveCustomField","schema","fqdn","successMessage","selectedField","undefined","e","reportArchiveTryAgain","reportArchiveFieldFailed","formValues","restoreField","restoreCustomField","reportRestoreTryAgain","reportRestoreFieldFailed","undoDeletedField","fieldData","title","restoreDeletedField","deleteField","_userSchema$jsonSchem","field","jsonSchema","properties","fieldDataBeforeDeletion","deleteCustomField","exports"],"sources":["../../../src/services/DataExtensionFieldOperationsService.ts"],"sourcesContent":["import type { DataExtensionSchema } from '@wix/bex-utils/@wix/ambassador-data-extensions-v1-data-extension-schema/types';\nimport type { CustomFieldForm, WixPatternsContainer } from '../state';\nimport type { DataExtensionSchemaService, ReportBI } from '.';\nimport { DataExtensionStateBIReporter } from '../state/DataExtensionStateBIReporter';\nimport { ToastAction } from '../model';\n\nexport interface FieldOperationParams {\n id?: string;\n origin: string;\n reportBi: ReportBI;\n}\n\nexport interface FieldOperationContext {\n container: WixPatternsContainer;\n dataExtensionService: DataExtensionSchemaService;\n userSchema?: DataExtensionSchema;\n fqdnString: string;\n enableArchive?: boolean;\n extractFieldValuesFromSchema: (\n fieldId: string,\n ) => CustomFieldForm | undefined;\n upsertSchema: (schema: DataExtensionSchema) => void;\n openArchivedPanel?: () => void;\n}\n\n/**\n * Service for handling archive, restore, and delete operations on custom fields.\n * This service is lazily loaded to reduce bundle size for consumers who don't use these features.\n */\nexport class DataExtensionFieldOperationsService {\n constructor(private readonly context: FieldOperationContext) {}\n\n private showFieldOperationToast({\n type,\n operation,\n message,\n action,\n onRetryClick,\n biName,\n }: {\n type: 'SUCCESS' | 'ERROR';\n operation: 'archive' | 'restore' | 'delete';\n message: string;\n action?: ToastAction;\n onRetryClick?: () => void;\n biName?: string;\n }) {\n const { container } = this.context;\n const retryAction = {\n uiType: 'LINK' as const,\n text: container.translate('cairo.toast.retry'),\n onClick: onRetryClick,\n removeToastOnClick: true,\n };\n\n container.showToast?.({\n message,\n action: type !== 'SUCCESS' && onRetryClick ? retryAction : action,\n type,\n biName:\n biName || `cairo-${operation}-custom-field-${type.toLowerCase()}-toast`,\n });\n }\n\n async archiveField({ id, origin, reportBi }: FieldOperationParams) {\n if (!id) {\n return;\n }\n\n const {\n dataExtensionService,\n userSchema,\n fqdnString,\n extractFieldValuesFromSchema,\n upsertSchema,\n container,\n enableArchive,\n openArchivedPanel,\n } = this.context;\n\n const fieldValues = extractFieldValuesFromSchema(id);\n const fieldName = fieldValues?.name || '';\n const biReporter = new DataExtensionStateBIReporter({ reportBi });\n\n try {\n const { dataExtensionSchema } =\n await dataExtensionService.archiveCustomField({\n schema: userSchema,\n fqdn: fqdnString,\n id,\n });\n\n if (dataExtensionSchema) {\n upsertSchema(dataExtensionSchema);\n }\n\n const successMessage =\n enableArchive && fieldName\n ? container.translate(\n 'cairo.customFields.archive.success.toast.enabled',\n { selectedField: fieldName },\n )\n : container.translate('cairo.customFields.archive.success.toast');\n\n const action = enableArchive\n ? {\n text: container.translate(\n 'cairo.customFields.archive.success.toast.CTA',\n ),\n uiType: 'LINK' as const,\n onClick: () => openArchivedPanel?.(),\n }\n : undefined;\n\n this.showFieldOperationToast({\n type: 'SUCCESS',\n operation: 'archive',\n message: successMessage,\n action,\n });\n } catch (e) {\n this.showFieldOperationToast({\n type: 'ERROR',\n operation: 'archive',\n message: container.translate('cairo.customFields.archive.error.toast', {\n selectedField: fieldName,\n }),\n onRetryClick: () => {\n biReporter.reportArchiveTryAgain();\n this.archiveField({ id, origin, reportBi });\n },\n });\n biReporter.reportArchiveFieldFailed({ formValues: fieldValues, origin });\n }\n }\n\n async restoreField({ id, origin, reportBi }: FieldOperationParams) {\n if (!id) {\n return;\n }\n\n const {\n dataExtensionService,\n userSchema,\n fqdnString,\n extractFieldValuesFromSchema,\n upsertSchema,\n container,\n } = this.context;\n\n const fieldValues = extractFieldValuesFromSchema(id);\n const fieldName = fieldValues?.name || '';\n const biReporter = new DataExtensionStateBIReporter({ reportBi });\n\n try {\n const { dataExtensionSchema } =\n await dataExtensionService.restoreCustomField({\n schema: userSchema,\n fqdn: fqdnString,\n id,\n });\n\n if (dataExtensionSchema) {\n upsertSchema(dataExtensionSchema);\n }\n\n this.showFieldOperationToast({\n type: 'SUCCESS',\n operation: 'restore',\n message: container.translate(\n 'cairo.customFields.restored.success.toast',\n { selectedField: fieldName },\n ),\n });\n } catch (e) {\n this.showFieldOperationToast({\n type: 'ERROR',\n operation: 'restore',\n message: container.translate('cairo.customFields.restore.error.toast', {\n selectedField: fieldName,\n }),\n onRetryClick: () => {\n biReporter.reportRestoreTryAgain();\n this.restoreField({ id, origin, reportBi });\n },\n });\n biReporter.reportRestoreFieldFailed({ formValues: fieldValues, origin });\n }\n }\n\n private async undoDeletedField({\n id,\n fieldData,\n origin,\n reportBi,\n }: FieldOperationParams & { fieldData: any }) {\n if (!id) {\n return;\n }\n\n const {\n dataExtensionService,\n userSchema,\n fqdnString,\n upsertSchema,\n container,\n } = this.context;\n\n const fieldName = fieldData?.title || '';\n\n try {\n // Re-add the field to the schema in archived state\n const { dataExtensionSchema } =\n await dataExtensionService.restoreDeletedField({\n schema: userSchema,\n fqdn: fqdnString,\n id,\n fieldData,\n });\n\n if (dataExtensionSchema) {\n upsertSchema(dataExtensionSchema);\n }\n\n this.showFieldOperationToast({\n type: 'SUCCESS',\n operation: 'restore',\n message: container.translate(\n 'cairo.customFields.restored.success.toast',\n { selectedField: fieldName },\n ),\n });\n } catch (e) {\n this.showFieldOperationToast({\n type: 'ERROR',\n operation: 'restore',\n message: container.translate('cairo.customFields.restore.error.toast', {\n selectedField: fieldName,\n }),\n onRetryClick: () =>\n this.undoDeletedField({ id, fieldData, origin, reportBi }),\n });\n }\n }\n\n async deleteField({ id, origin, reportBi }: FieldOperationParams) {\n if (!id) {\n return;\n }\n\n const {\n dataExtensionService,\n userSchema,\n fqdnString,\n extractFieldValuesFromSchema,\n upsertSchema,\n container,\n } = this.context;\n\n const fieldValues = extractFieldValuesFromSchema(id);\n const fieldName = fieldValues?.name || '';\n\n // Validate field is archived\n const field = userSchema?.jsonSchema?.properties?.[id];\n if (field && !field['x-wix-archived']) {\n this.showFieldOperationToast({\n type: 'ERROR',\n operation: 'delete',\n message: `${\n fieldName || 'Field'\n } must be archived before it can be deleted.`,\n biName: 'cairo-delete-custom-field-not-archived-error-toast',\n });\n return;\n }\n\n // Store the field data before deletion for undo functionality\n const fieldDataBeforeDeletion = field ? { ...field } : null;\n\n try {\n const { dataExtensionSchema } =\n await dataExtensionService.deleteCustomField({\n schema: userSchema,\n fqdn: fqdnString,\n id,\n });\n\n if (dataExtensionSchema) {\n upsertSchema(dataExtensionSchema);\n }\n\n this.showFieldOperationToast({\n type: 'SUCCESS',\n operation: 'delete',\n message: container.translate(\n 'cairo.customFields.deleted.success.toast',\n { selectedField: fieldName },\n ),\n action: fieldDataBeforeDeletion\n ? {\n uiType: 'LINK',\n text: container.translate('cairo.toast.undo'),\n onClick: () =>\n this.undoDeletedField({\n id,\n fieldData: fieldDataBeforeDeletion,\n origin,\n reportBi,\n }),\n removeToastOnClick: true,\n }\n : undefined,\n });\n } catch (e) {\n this.showFieldOperationToast({\n type: 'ERROR',\n operation: 'delete',\n message: container.translate('cairo.customFields.delete.error.toast', {\n selectedField: fieldName,\n }),\n onRetryClick: () => this.deleteField({ id, origin, reportBi }),\n });\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -230,12 +230,38 @@ class DataExtensionSchemaService {
230
230
  };
231
231
  return this._updateDataExtensionSchema(schema);
232
232
  }
233
+ restoreDeletedField(params) {
234
+ var _params$schema8;
235
+ const {
236
+ userFieldsNamespace
237
+ } = this;
238
+ const {
239
+ id,
240
+ fqdn,
241
+ fieldData
242
+ } = params;
243
+ const schema = {
244
+ fqdn,
245
+ namespace: userFieldsNamespace,
246
+ ...params.schema,
247
+ jsonSchema: {
248
+ properties: {
249
+ ...((_params$schema8 = params.schema) == null || (_params$schema8 = _params$schema8.jsonSchema) == null ? void 0 : _params$schema8.properties),
250
+ [id]: {
251
+ ...fieldData,
252
+ 'x-wix-archived': true
253
+ }
254
+ }
255
+ }
256
+ };
257
+ return this._updateDataExtensionSchema(schema);
258
+ }
233
259
  deleteCustomField(params) {
234
- var _params$schema8, _params$schema$jsonSc;
260
+ var _params$schema9, _params$schema$jsonSc;
235
261
  const {
236
262
  id
237
263
  } = params;
238
- if (!((_params$schema8 = params.schema) != null && _params$schema8.id)) {
264
+ if (!((_params$schema9 = params.schema) != null && _params$schema9.id)) {
239
265
  throw new Error('Schema ID is required to delete a custom field');
240
266
  }
241
267
 
@@ -1 +1 @@
1
- {"version":3,"names":["_http","require","_updateDataExtensionSchemaErrors","_createDataExtensionSchemaErrors","_deleteUserDefinedFieldsErrors","DataExtensionSchemaService","toSchemaType","type","format","maxLength","items","Error","toCustomType","field","hasOwnProperty","_field$items","toCustomField","schema","key","_schema$jsonSchema","property","jsonSchema","properties","title","id","constructor","params","_defineProperty2","default","httpClient","translate","errorHandler","addCustomField","_params$schema","_params$schema2","_params$schema3","userFieldsNamespace","form","name","readApps","readUsers","writeApps","writeUsers","containsPii","fqdn","permissions","read","write","filterable","namespace","enabled","_updateDataExtensionSchema","_createDataExtensionSchema","archiveCustomField","_params$schema4","_params$schema5","restoreCustomField","_params$schema6","_params$schema7","deleteCustomField","_params$schema8","_params$schema$jsonSc","_deleteUserDefinedFields","fetchSchemas","res","withErrorHandler","request","listDataExtensionSchemas","namespaces","fields","data","createDataExtensionSchema","dataExtensionSchema","createDataExtensionSchemaErrors","then","updateDataExtensionSchema","updateDataExtensionSchemaErrors","dataExtensionSchemaId","fieldsToDelete","deleteUserDefinedFields","deleteUserDefinedFieldsErrors","exports"],"sources":["../../../../src/services/DataExtensionService/dataExtensionService.ts"],"sourcesContent":["import type {\n DataExtensionSchema,\n RequestedField,\n} from '@wix/bex-utils/@wix/ambassador-data-extensions-v1-data-extension-schema/types';\nimport {\n createDataExtensionSchema,\n listDataExtensionSchemas,\n updateDataExtensionSchema,\n deleteUserDefinedFields,\n} from '@wix/bex-utils/@wix/ambassador-data-extensions-v1-data-extension-schema/http';\nimport { CustomFieldForm, WixPatternsContainer } from '../../state';\nimport { PatternsErrorHandler, WixPatternsEssentials } from '../../model';\nimport { updateDataExtensionSchemaErrors } from './updateDataExtensionSchemaErrors';\nimport { createDataExtensionSchemaErrors } from './createDataExtensionSchemaErrors';\nimport { deleteUserDefinedFieldsErrors } from './deleteUserDefinedFieldsErrors';\n\nexport interface DataExtensionSchemaServiceParams {\n readonly httpClient: WixPatternsEssentials['httpClient'];\n readonly translate: WixPatternsContainer['translate'];\n readonly errorHandler: PatternsErrorHandler;\n}\n\n// server types\nexport type DataExtensionType =\n | 'string'\n | 'number'\n | 'integer'\n | 'boolean'\n | 'array'\n | 'object';\n\nexport type DataExtensionPermission =\n | 'apps'\n | 'owning-app'\n | 'users'\n | 'users-of-users';\n\ninterface DataExtensionFieldItems\n extends Partial<Omit<DataExtensionField, 'type' | 'maxLength'>> {\n type: Omit<DataExtensionType, 'array'>;\n maxLength: number;\n}\nexport interface DataExtensionField {\n id: string;\n type?: DataExtensionType;\n format?: 'date-time' | 'date' | 'single-line' | 'uri' | string;\n title?: string;\n maxLength?: number;\n enum?: string[];\n 'x-wix-archived'?: boolean;\n 'x-wix-filterable'?: boolean;\n 'x-wix-created-date': string;\n 'x-wix-object-type'?: string;\n 'x-wix-permissions': {\n read: DataExtensionPermission[];\n write: DataExtensionPermission[];\n };\n properties?: Record<string, any>;\n items?: DataExtensionFieldItems;\n 'x-wix-pii'?: { enabled: boolean };\n}\n\n// client types\nexport type CustomFieldType =\n | 'shortText'\n | 'longText'\n | 'url'\n | 'date'\n | 'dateTime'\n | 'integer'\n | 'decimal'\n | 'checkbox'\n | 'dropdown'\n | 'files'\n | 'multiSelect';\n\nexport type CustomFieldOrigin =\n | 'Custom columns panel'\n | 'Custom fields panel'\n | 'Custom fields widget'\n | 'external';\n\nexport interface ExtendedFieldsDataMap {\n [key: string]: any;\n}\n\nexport interface ExtendedFields {\n _type?: 'ExtendedFields';\n /**\n * Data Extensions extended fields\n * Key: Namespace\n * Value: extended fields data in Struct format\n */\n namespaces?: {\n _user_fields?: ExtendedFieldsDataMap | undefined;\n [key: string]: ExtendedFieldsDataMap | undefined;\n };\n}\n\nexport type CustomFieldOwner = 'user' | 'app';\n\nexport interface CustomField {\n id: string;\n type: CustomFieldType;\n label?: string;\n maxLength?: number;\n options?: string[];\n editable: boolean;\n filterable?: boolean;\n owner: CustomFieldOwner;\n properties?: Record<string, string>;\n namespace: string;\n permissions?: {\n read?: DataExtensionPermission[];\n write?: DataExtensionPermission[];\n };\n}\n\nexport interface AddFieldParams {\n schema?: DataExtensionSchema;\n fqdn: string;\n form: CustomFieldForm;\n filterable?: boolean;\n}\n\nexport interface ArchiveFieldParams {\n schema?: DataExtensionSchema;\n fqdn: string;\n id: string;\n}\n\nexport class DataExtensionSchemaService {\n readonly httpClient: WixPatternsEssentials['httpClient'];\n readonly translate: WixPatternsContainer['translate'];\n readonly errorHandler;\n\n readonly userFieldsNamespace = '_user_fields';\n\n static toSchemaType(type?: CustomFieldType) {\n switch (type) {\n case 'shortText':\n return {\n type: 'string',\n format: 'single-line',\n maxLength: 120,\n };\n case 'longText':\n return {\n type: 'string',\n maxLength: 200,\n };\n case 'url':\n return {\n type: 'string',\n format: 'uri',\n maxLength: 256,\n };\n case 'date':\n return {\n type: 'string',\n format: 'date',\n };\n case 'dateTime':\n return {\n type: 'string',\n format: 'date-time',\n };\n case 'integer':\n return {\n type: 'integer',\n };\n case 'decimal':\n return {\n type: 'number',\n };\n case 'checkbox':\n return {\n type: 'boolean',\n };\n case 'dropdown':\n return {\n type: 'array',\n items: {\n type: 'string',\n },\n };\n default:\n throw new Error(`Unexpected type: ${type}`);\n }\n }\n\n static toCustomType(field: DataExtensionField): CustomFieldType | undefined {\n switch (field.type) {\n case 'string':\n if (field.hasOwnProperty('enum')) {\n return 'dropdown';\n }\n switch (field.format) {\n case 'date-time':\n return 'dateTime';\n case 'uri':\n return 'url';\n case 'date':\n return 'date';\n case 'single-line':\n return 'shortText';\n default:\n return 'longText';\n }\n case 'number':\n return 'decimal';\n case 'integer':\n return 'integer';\n case 'boolean':\n return 'checkbox';\n case 'array': {\n if (field.items?.['x-wix-object-type'] === 'FILE/V1') {\n return 'files';\n }\n return 'multiSelect';\n }\n case 'object': {\n if (field['x-wix-object-type'] === 'FILE/V1') {\n return 'files';\n }\n return 'dropdown';\n }\n default:\n return;\n }\n }\n\n static toCustomField(\n schema: DataExtensionSchema,\n key: string,\n ): DataExtensionField | undefined {\n const property: DataExtensionField = schema.jsonSchema?.properties?.[key];\n\n if (!property || typeof property !== 'object') {\n return;\n }\n\n if (\n typeof property.title !== 'string' ||\n typeof property.type !== 'string' ||\n typeof property['x-wix-permissions'] !== 'object'\n ) {\n return;\n }\n\n return { ...property, id: key };\n }\n\n constructor(params: DataExtensionSchemaServiceParams) {\n this.httpClient = params.httpClient;\n this.translate = params.translate;\n this.errorHandler = params.errorHandler;\n }\n addCustomField(params: AddFieldParams) {\n const { userFieldsNamespace } = this;\n const {\n form: {\n key,\n name,\n readApps,\n readUsers,\n writeApps,\n writeUsers,\n containsPii,\n },\n fqdn,\n } = params;\n const type = DataExtensionSchemaService.toSchemaType(params.form.type);\n\n const permissions = {\n read: [\n 'users',\n ...(readUsers ? ['users-of-users'] : []),\n ...(readApps ? ['apps'] : []),\n ],\n write: [\n 'users',\n ...(writeUsers ? ['users-of-users'] : []),\n ...(writeApps ? ['apps'] : []),\n ],\n };\n\n const filterable = params.filterable ? { 'x-wix-filterable': true } : {};\n\n const schema: DataExtensionSchema = {\n fqdn,\n namespace: userFieldsNamespace,\n ...params.schema,\n jsonSchema: {\n properties: {\n ...params.schema?.jsonSchema?.properties,\n [key]: {\n ...params.schema?.jsonSchema?.properties[key],\n title: name,\n ...(containsPii ? { 'x-wix-pii': { enabled: true } } : {}),\n ...type,\n 'x-wix-permissions': permissions,\n ...filterable,\n },\n },\n },\n };\n\n return params.schema?.id\n ? this._updateDataExtensionSchema(schema)\n : this._createDataExtensionSchema(schema);\n }\n\n archiveCustomField(params: ArchiveFieldParams) {\n const { userFieldsNamespace } = this;\n const { id, fqdn } = params;\n\n const schema: DataExtensionSchema = {\n fqdn,\n namespace: userFieldsNamespace,\n ...params.schema,\n jsonSchema: {\n properties: {\n ...params.schema?.jsonSchema?.properties,\n [id]: {\n ...params.schema?.jsonSchema?.properties[id],\n 'x-wix-archived': true,\n },\n },\n },\n };\n return this._updateDataExtensionSchema(schema);\n }\n\n restoreCustomField(params: ArchiveFieldParams) {\n const { userFieldsNamespace } = this;\n const { id, fqdn } = params;\n\n const schema: DataExtensionSchema = {\n fqdn,\n namespace: userFieldsNamespace,\n ...params.schema,\n jsonSchema: {\n properties: {\n ...params.schema?.jsonSchema?.properties,\n [id]: {\n ...params.schema?.jsonSchema?.properties[id],\n 'x-wix-archived': false,\n },\n },\n },\n };\n return this._updateDataExtensionSchema(schema);\n }\n\n deleteCustomField(params: ArchiveFieldParams) {\n const { id } = params;\n\n if (!params.schema?.id) {\n throw new Error('Schema ID is required to delete a custom field');\n }\n\n // Check if the field is archived before attempting deletion\n const field = params.schema.jsonSchema?.properties?.[id];\n if (field && !field['x-wix-archived']) {\n throw new Error(\n 'Field must be archived before it can be deleted. Please archive the field first.',\n );\n }\n\n return this._deleteUserDefinedFields(params.schema.id, [id]);\n }\n\n async fetchSchemas(fqdn: string) {\n const { httpClient, errorHandler } = this;\n\n const res = await errorHandler.withErrorHandler(\n () =>\n httpClient.request(\n listDataExtensionSchemas({\n fqdn,\n namespaces: [],\n fields: ['ARCHIVED' as RequestedField],\n }),\n ),\n {},\n );\n\n return res.data;\n }\n\n private async _createDataExtensionSchema(schema: DataExtensionSchema) {\n const { httpClient, errorHandler } = this;\n\n return errorHandler\n .withErrorHandler(\n () =>\n httpClient.request(\n createDataExtensionSchema({ dataExtensionSchema: schema }),\n ),\n createDataExtensionSchemaErrors({\n translate: this.translate,\n }),\n )\n .then((res) => res.data);\n }\n\n private async _updateDataExtensionSchema(schema: DataExtensionSchema) {\n const { httpClient, errorHandler } = this;\n return errorHandler\n .withErrorHandler(\n () =>\n httpClient.request(\n updateDataExtensionSchema({ dataExtensionSchema: schema }),\n ),\n updateDataExtensionSchemaErrors({\n translate: this.translate,\n }),\n )\n .then((res) => res.data);\n }\n\n private async _deleteUserDefinedFields(\n dataExtensionSchemaId: string,\n fieldsToDelete: string[],\n ) {\n const { httpClient, errorHandler } = this;\n return errorHandler\n .withErrorHandler(\n () =>\n httpClient.request(\n deleteUserDefinedFields({\n dataExtensionSchemaId,\n fieldsToDelete,\n }),\n ),\n deleteUserDefinedFieldsErrors({\n translate: this.translate,\n }),\n )\n .then((res) => res.data);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_http","require","_updateDataExtensionSchemaErrors","_createDataExtensionSchemaErrors","_deleteUserDefinedFieldsErrors","DataExtensionSchemaService","toSchemaType","type","format","maxLength","items","Error","toCustomType","field","hasOwnProperty","_field$items","toCustomField","schema","key","_schema$jsonSchema","property","jsonSchema","properties","title","id","constructor","params","_defineProperty2","default","httpClient","translate","errorHandler","addCustomField","_params$schema","_params$schema2","_params$schema3","userFieldsNamespace","form","name","readApps","readUsers","writeApps","writeUsers","containsPii","fqdn","permissions","read","write","filterable","namespace","enabled","_updateDataExtensionSchema","_createDataExtensionSchema","archiveCustomField","_params$schema4","_params$schema5","restoreCustomField","_params$schema6","_params$schema7","restoreDeletedField","_params$schema8","fieldData","deleteCustomField","_params$schema9","_params$schema$jsonSc","_deleteUserDefinedFields","fetchSchemas","res","withErrorHandler","request","listDataExtensionSchemas","namespaces","fields","data","createDataExtensionSchema","dataExtensionSchema","createDataExtensionSchemaErrors","then","updateDataExtensionSchema","updateDataExtensionSchemaErrors","dataExtensionSchemaId","fieldsToDelete","deleteUserDefinedFields","deleteUserDefinedFieldsErrors","exports"],"sources":["../../../../src/services/DataExtensionService/dataExtensionService.ts"],"sourcesContent":["import type {\n DataExtensionSchema,\n RequestedField,\n} from '@wix/bex-utils/@wix/ambassador-data-extensions-v1-data-extension-schema/types';\nimport {\n createDataExtensionSchema,\n listDataExtensionSchemas,\n updateDataExtensionSchema,\n deleteUserDefinedFields,\n} from '@wix/bex-utils/@wix/ambassador-data-extensions-v1-data-extension-schema/http';\nimport { CustomFieldForm, WixPatternsContainer } from '../../state';\nimport { PatternsErrorHandler, WixPatternsEssentials } from '../../model';\nimport { updateDataExtensionSchemaErrors } from './updateDataExtensionSchemaErrors';\nimport { createDataExtensionSchemaErrors } from './createDataExtensionSchemaErrors';\nimport { deleteUserDefinedFieldsErrors } from './deleteUserDefinedFieldsErrors';\n\nexport interface DataExtensionSchemaServiceParams {\n readonly httpClient: WixPatternsEssentials['httpClient'];\n readonly translate: WixPatternsContainer['translate'];\n readonly errorHandler: PatternsErrorHandler;\n}\n\n// server types\nexport type DataExtensionType =\n | 'string'\n | 'number'\n | 'integer'\n | 'boolean'\n | 'array'\n | 'object';\n\nexport type DataExtensionPermission =\n | 'apps'\n | 'owning-app'\n | 'users'\n | 'users-of-users';\n\ninterface DataExtensionFieldItems\n extends Partial<Omit<DataExtensionField, 'type' | 'maxLength'>> {\n type: Omit<DataExtensionType, 'array'>;\n maxLength: number;\n}\nexport interface DataExtensionField {\n id: string;\n type?: DataExtensionType;\n format?: 'date-time' | 'date' | 'single-line' | 'uri' | string;\n title?: string;\n maxLength?: number;\n enum?: string[];\n 'x-wix-archived'?: boolean;\n 'x-wix-filterable'?: boolean;\n 'x-wix-created-date': string;\n 'x-wix-object-type'?: string;\n 'x-wix-permissions': {\n read: DataExtensionPermission[];\n write: DataExtensionPermission[];\n };\n properties?: Record<string, any>;\n items?: DataExtensionFieldItems;\n 'x-wix-pii'?: { enabled: boolean };\n}\n\n// client types\nexport type CustomFieldType =\n | 'shortText'\n | 'longText'\n | 'url'\n | 'date'\n | 'dateTime'\n | 'integer'\n | 'decimal'\n | 'checkbox'\n | 'dropdown'\n | 'files'\n | 'multiSelect';\n\nexport type CustomFieldOrigin =\n | 'Custom columns panel'\n | 'Custom fields panel'\n | 'Custom fields widget'\n | 'external';\n\nexport interface ExtendedFieldsDataMap {\n [key: string]: any;\n}\n\nexport interface ExtendedFields {\n _type?: 'ExtendedFields';\n /**\n * Data Extensions extended fields\n * Key: Namespace\n * Value: extended fields data in Struct format\n */\n namespaces?: {\n _user_fields?: ExtendedFieldsDataMap | undefined;\n [key: string]: ExtendedFieldsDataMap | undefined;\n };\n}\n\nexport type CustomFieldOwner = 'user' | 'app';\n\nexport interface CustomField {\n id: string;\n type: CustomFieldType;\n label?: string;\n maxLength?: number;\n options?: string[];\n editable: boolean;\n filterable?: boolean;\n owner: CustomFieldOwner;\n properties?: Record<string, string>;\n namespace: string;\n permissions?: {\n read?: DataExtensionPermission[];\n write?: DataExtensionPermission[];\n };\n}\n\nexport interface AddFieldParams {\n schema?: DataExtensionSchema;\n fqdn: string;\n form: CustomFieldForm;\n filterable?: boolean;\n}\n\nexport interface ArchiveFieldParams {\n schema?: DataExtensionSchema;\n fqdn: string;\n id: string;\n}\n\nexport class DataExtensionSchemaService {\n readonly httpClient: WixPatternsEssentials['httpClient'];\n readonly translate: WixPatternsContainer['translate'];\n readonly errorHandler;\n\n readonly userFieldsNamespace = '_user_fields';\n\n static toSchemaType(type?: CustomFieldType) {\n switch (type) {\n case 'shortText':\n return {\n type: 'string',\n format: 'single-line',\n maxLength: 120,\n };\n case 'longText':\n return {\n type: 'string',\n maxLength: 200,\n };\n case 'url':\n return {\n type: 'string',\n format: 'uri',\n maxLength: 256,\n };\n case 'date':\n return {\n type: 'string',\n format: 'date',\n };\n case 'dateTime':\n return {\n type: 'string',\n format: 'date-time',\n };\n case 'integer':\n return {\n type: 'integer',\n };\n case 'decimal':\n return {\n type: 'number',\n };\n case 'checkbox':\n return {\n type: 'boolean',\n };\n case 'dropdown':\n return {\n type: 'array',\n items: {\n type: 'string',\n },\n };\n default:\n throw new Error(`Unexpected type: ${type}`);\n }\n }\n\n static toCustomType(field: DataExtensionField): CustomFieldType | undefined {\n switch (field.type) {\n case 'string':\n if (field.hasOwnProperty('enum')) {\n return 'dropdown';\n }\n switch (field.format) {\n case 'date-time':\n return 'dateTime';\n case 'uri':\n return 'url';\n case 'date':\n return 'date';\n case 'single-line':\n return 'shortText';\n default:\n return 'longText';\n }\n case 'number':\n return 'decimal';\n case 'integer':\n return 'integer';\n case 'boolean':\n return 'checkbox';\n case 'array': {\n if (field.items?.['x-wix-object-type'] === 'FILE/V1') {\n return 'files';\n }\n return 'multiSelect';\n }\n case 'object': {\n if (field['x-wix-object-type'] === 'FILE/V1') {\n return 'files';\n }\n return 'dropdown';\n }\n default:\n return;\n }\n }\n\n static toCustomField(\n schema: DataExtensionSchema,\n key: string,\n ): DataExtensionField | undefined {\n const property: DataExtensionField = schema.jsonSchema?.properties?.[key];\n\n if (!property || typeof property !== 'object') {\n return;\n }\n\n if (\n typeof property.title !== 'string' ||\n typeof property.type !== 'string' ||\n typeof property['x-wix-permissions'] !== 'object'\n ) {\n return;\n }\n\n return { ...property, id: key };\n }\n\n constructor(params: DataExtensionSchemaServiceParams) {\n this.httpClient = params.httpClient;\n this.translate = params.translate;\n this.errorHandler = params.errorHandler;\n }\n addCustomField(params: AddFieldParams) {\n const { userFieldsNamespace } = this;\n const {\n form: {\n key,\n name,\n readApps,\n readUsers,\n writeApps,\n writeUsers,\n containsPii,\n },\n fqdn,\n } = params;\n const type = DataExtensionSchemaService.toSchemaType(params.form.type);\n\n const permissions = {\n read: [\n 'users',\n ...(readUsers ? ['users-of-users'] : []),\n ...(readApps ? ['apps'] : []),\n ],\n write: [\n 'users',\n ...(writeUsers ? ['users-of-users'] : []),\n ...(writeApps ? ['apps'] : []),\n ],\n };\n\n const filterable = params.filterable ? { 'x-wix-filterable': true } : {};\n\n const schema: DataExtensionSchema = {\n fqdn,\n namespace: userFieldsNamespace,\n ...params.schema,\n jsonSchema: {\n properties: {\n ...params.schema?.jsonSchema?.properties,\n [key]: {\n ...params.schema?.jsonSchema?.properties[key],\n title: name,\n ...(containsPii ? { 'x-wix-pii': { enabled: true } } : {}),\n ...type,\n 'x-wix-permissions': permissions,\n ...filterable,\n },\n },\n },\n };\n\n return params.schema?.id\n ? this._updateDataExtensionSchema(schema)\n : this._createDataExtensionSchema(schema);\n }\n\n archiveCustomField(params: ArchiveFieldParams) {\n const { userFieldsNamespace } = this;\n const { id, fqdn } = params;\n\n const schema: DataExtensionSchema = {\n fqdn,\n namespace: userFieldsNamespace,\n ...params.schema,\n jsonSchema: {\n properties: {\n ...params.schema?.jsonSchema?.properties,\n [id]: {\n ...params.schema?.jsonSchema?.properties[id],\n 'x-wix-archived': true,\n },\n },\n },\n };\n return this._updateDataExtensionSchema(schema);\n }\n\n restoreCustomField(params: ArchiveFieldParams) {\n const { userFieldsNamespace } = this;\n const { id, fqdn } = params;\n\n const schema: DataExtensionSchema = {\n fqdn,\n namespace: userFieldsNamespace,\n ...params.schema,\n jsonSchema: {\n properties: {\n ...params.schema?.jsonSchema?.properties,\n [id]: {\n ...params.schema?.jsonSchema?.properties[id],\n 'x-wix-archived': false,\n },\n },\n },\n };\n return this._updateDataExtensionSchema(schema);\n }\n\n restoreDeletedField(params: ArchiveFieldParams & { fieldData: any }) {\n const { userFieldsNamespace } = this;\n const { id, fqdn, fieldData } = params;\n\n const schema: DataExtensionSchema = {\n fqdn,\n namespace: userFieldsNamespace,\n ...params.schema,\n jsonSchema: {\n properties: {\n ...params.schema?.jsonSchema?.properties,\n [id]: {\n ...fieldData,\n 'x-wix-archived': true,\n },\n },\n },\n };\n return this._updateDataExtensionSchema(schema);\n }\n\n deleteCustomField(params: ArchiveFieldParams) {\n const { id } = params;\n\n if (!params.schema?.id) {\n throw new Error('Schema ID is required to delete a custom field');\n }\n\n // Check if the field is archived before attempting deletion\n const field = params.schema.jsonSchema?.properties?.[id];\n if (field && !field['x-wix-archived']) {\n throw new Error(\n 'Field must be archived before it can be deleted. Please archive the field first.',\n );\n }\n\n return this._deleteUserDefinedFields(params.schema.id, [id]);\n }\n\n async fetchSchemas(fqdn: string) {\n const { httpClient, errorHandler } = this;\n\n const res = await errorHandler.withErrorHandler(\n () =>\n httpClient.request(\n listDataExtensionSchemas({\n fqdn,\n namespaces: [],\n fields: ['ARCHIVED' as RequestedField],\n }),\n ),\n {},\n );\n\n return res.data;\n }\n\n private async _createDataExtensionSchema(schema: DataExtensionSchema) {\n const { httpClient, errorHandler } = this;\n\n return errorHandler\n .withErrorHandler(\n () =>\n httpClient.request(\n createDataExtensionSchema({ dataExtensionSchema: schema }),\n ),\n createDataExtensionSchemaErrors({\n translate: this.translate,\n }),\n )\n .then((res) => res.data);\n }\n\n private async _updateDataExtensionSchema(schema: DataExtensionSchema) {\n const { httpClient, errorHandler } = this;\n return errorHandler\n .withErrorHandler(\n () =>\n httpClient.request(\n updateDataExtensionSchema({ dataExtensionSchema: schema }),\n ),\n updateDataExtensionSchemaErrors({\n translate: this.translate,\n }),\n )\n .then((res) => res.data);\n }\n\n private async _deleteUserDefinedFields(\n dataExtensionSchemaId: string,\n fieldsToDelete: string[],\n ) {\n const { httpClient, errorHandler } = this;\n return errorHandler\n .withErrorHandler(\n () =>\n httpClient.request(\n deleteUserDefinedFields({\n dataExtensionSchemaId,\n fieldsToDelete,\n }),\n ),\n deleteUserDefinedFieldsErrors({\n translate: this.translate,\n }),\n )\n .then((res) => res.data);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -167,23 +167,9 @@ class CollectionOptimisticActions {
167
167
  state.patches[oldPatchIndex] = newPatch;
168
168
  events.emit('reprocess');
169
169
  }
170
-
171
- /**
172
- * Creates a single item in the collection.
173
- * @param item - The item to create.
174
- * @param params - Additional parameters for the operation.
175
- * @external
176
- */
177
170
  createOne(item, params) {
178
171
  return this.createMany([item], params);
179
172
  }
180
-
181
- /**
182
- * Creates multiple items in the collection.
183
- * @param items - The items to create.
184
- * @param params - Additional parameters for the operation.
185
- * @external
186
- */
187
173
  createMany(items, params) {
188
174
  const {
189
175
  collection,