@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.
- package/dist/cjs/assets/locale/messages_cs.json +1 -1
- package/dist/cjs/assets/locale/messages_de.json +1 -1
- package/dist/cjs/assets/locale/messages_en.json +1 -1
- package/dist/cjs/assets/locale/messages_ko.json +1 -1
- package/dist/cjs/assets/locale/messages_pl.json +1 -1
- package/dist/cjs/assets/locale/messages_pt.json +1 -1
- package/dist/cjs/assets/locale/messages_ru.json +1 -1
- package/dist/cjs/assets/locale/messages_sv.json +1 -1
- package/dist/cjs/services/DataExtensionFieldOperationsService.js +70 -1
- package/dist/cjs/services/DataExtensionFieldOperationsService.js.map +1 -1
- package/dist/cjs/services/DataExtensionService/dataExtensionService.js +28 -2
- package/dist/cjs/services/DataExtensionService/dataExtensionService.js.map +1 -1
- package/dist/cjs/state/CollectionOptimisticActions.js +0 -14
- package/dist/cjs/state/CollectionOptimisticActions.js.map +1 -1
- package/dist/cjs/state/DataExtensionState.js +13 -1
- package/dist/cjs/state/DataExtensionState.js.map +1 -1
- package/dist/cjs/state/DataExtensionStateBIReporter.js +6 -0
- package/dist/cjs/state/DataExtensionStateBIReporter.js.map +1 -1
- package/dist/cjs/state/DeleteFieldModalState.js +44 -0
- package/dist/cjs/state/DeleteFieldModalState.js.map +1 -0
- package/dist/cjs/state/OptimisticActions.js.map +1 -1
- package/dist/cjs/state/index.js +7 -0
- package/dist/cjs/state/index.js.map +1 -1
- package/dist/cjs/testkit/exportServiceMocks.js +1 -0
- package/dist/cjs/testkit/exportServiceMocks.js.map +1 -1
- package/dist/esm/assets/locale/messages_cs.json +1 -1
- package/dist/esm/assets/locale/messages_de.json +1 -1
- package/dist/esm/assets/locale/messages_en.json +1 -1
- package/dist/esm/assets/locale/messages_ko.json +1 -1
- package/dist/esm/assets/locale/messages_pl.json +1 -1
- package/dist/esm/assets/locale/messages_pt.json +1 -1
- package/dist/esm/assets/locale/messages_ru.json +1 -1
- package/dist/esm/assets/locale/messages_sv.json +1 -1
- package/dist/esm/services/DataExtensionFieldOperationsService.js +49 -0
- package/dist/esm/services/DataExtensionFieldOperationsService.js.map +1 -1
- package/dist/esm/services/DataExtensionService/dataExtensionService.js +19 -0
- package/dist/esm/services/DataExtensionService/dataExtensionService.js.map +1 -1
- package/dist/esm/state/CollectionOptimisticActions.js +0 -12
- package/dist/esm/state/CollectionOptimisticActions.js.map +1 -1
- package/dist/esm/state/DataExtensionState.js +11 -1
- package/dist/esm/state/DataExtensionState.js.map +1 -1
- package/dist/esm/state/DataExtensionStateBIReporter.js +6 -0
- package/dist/esm/state/DataExtensionStateBIReporter.js.map +1 -1
- package/dist/esm/state/DeleteFieldModalState.js +33 -0
- package/dist/esm/state/DeleteFieldModalState.js.map +1 -0
- package/dist/esm/state/index.js +1 -0
- package/dist/esm/state/index.js.map +1 -1
- package/dist/esm/testkit/exportServiceMocks.js +1 -0
- package/dist/esm/testkit/exportServiceMocks.js.map +1 -1
- package/dist/types/services/DataExtensionFieldOperationsService.d.ts +1 -0
- package/dist/types/services/DataExtensionFieldOperationsService.d.ts.map +1 -1
- package/dist/types/services/DataExtensionService/dataExtensionService.d.ts +3 -0
- package/dist/types/services/DataExtensionService/dataExtensionService.d.ts.map +1 -1
- package/dist/types/state/CollectionOptimisticActions.d.ts +0 -12
- package/dist/types/state/CollectionOptimisticActions.d.ts.map +1 -1
- package/dist/types/state/DataExtensionState.d.ts +2 -0
- package/dist/types/state/DataExtensionState.d.ts.map +1 -1
- package/dist/types/state/DataExtensionStateBIReporter.d.ts +1 -0
- package/dist/types/state/DataExtensionStateBIReporter.d.ts.map +1 -1
- package/dist/types/state/DeleteFieldModalState.d.ts +18 -0
- package/dist/types/state/DeleteFieldModalState.d.ts.map +1 -0
- package/dist/types/state/OptimisticActions.d.ts +12 -0
- package/dist/types/state/OptimisticActions.d.ts.map +1 -1
- package/dist/types/state/index.d.ts +1 -0
- package/dist/types/state/index.d.ts.map +1 -1
- package/dist/types/testkit/exportServiceMocks.d.ts.map +1 -1
- 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 can
|
|
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
|
|
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$
|
|
260
|
+
var _params$schema9, _params$schema$jsonSc;
|
|
235
261
|
const {
|
|
236
262
|
id
|
|
237
263
|
} = params;
|
|
238
|
-
if (!((_params$
|
|
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,
|