@punks/backend-entity-manager 0.0.415 → 0.0.417

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.
@@ -28,6 +28,7 @@ export type EntitySerializerColumnValidator<TSheetItem> = {
28
28
  fn: (item: TSheetItem) => EntryValidationResult;
29
29
  };
30
30
  export type EntitySerializerSheetCustomParser = "date";
31
+ export type EntitySerializerColumnModifier = "trim" | "lowercase" | "uppercase";
31
32
  export type EntitySerializerColumnDefinition<TSheetItem> = {
32
33
  name: string;
33
34
  key: string;
@@ -42,6 +43,7 @@ export type EntitySerializerColumnDefinition<TSheetItem> = {
42
43
  sheetParser?: EntitySerializerSheetCustomParser;
43
44
  array?: boolean;
44
45
  arraySeparator?: string | RegExp;
46
+ modifiers?: EntitySerializerColumnModifier[];
45
47
  };
46
48
  export type EntitySerializerSheetOptions = {
47
49
  name?: string;
@@ -7,6 +7,7 @@ export type TaskSettings = {
7
7
  cronExpression?: string;
8
8
  concurrency: TaskConcurrency;
9
9
  description?: string;
10
+ displayName?: string;
10
11
  };
11
12
  export type TaskProps = TaskSettings & {
12
13
  name: string;
package/dist/esm/index.js CHANGED
@@ -185,10 +185,27 @@ class EntitySeeder {
185
185
 
186
186
  const DEFAULT_DELIMITER$1 = ";";
187
187
  const DEFAULT_ARRAY_SEPARATOR$1 = "|";
188
+ const MODIFIER_FNS = {
189
+ lowercase: (value) => value?.toString()?.toLowerCase(),
190
+ uppercase: (value) => value?.toString()?.toUpperCase(),
191
+ trim: (value) => value?.toString()?.trim(),
192
+ };
193
+ const applyModifiers = (value, modifiers) => {
194
+ return modifiers
195
+ ? modifiers.reduce((acc, x) => MODIFIER_FNS[x](acc), value)
196
+ : value;
197
+ };
198
+ const isValidValue = (value) => {
199
+ if (typeof value === "string")
200
+ return value.trim().length > 0;
201
+ return true;
202
+ };
188
203
  const normalizeSheetColumn = (column) => column.replace(/ /g, "").toLowerCase();
189
204
  const getRealSeparator = (separator) => {
190
205
  if (!separator)
191
206
  return DEFAULT_ARRAY_SEPARATOR$1;
207
+ if (Array.isArray(separator))
208
+ return separator[0];
192
209
  if (typeof separator === "string")
193
210
  return separator;
194
211
  if (separator instanceof RegExp) {
@@ -198,10 +215,9 @@ const getRealSeparator = (separator) => {
198
215
  }
199
216
  return DEFAULT_ARRAY_SEPARATOR$1;
200
217
  };
201
- const splitArrayColumn = (value, separator) => value
202
- ?.toString()
203
- .split(separator ?? DEFAULT_ARRAY_SEPARATOR$1)
204
- .filter((x) => x.trim()) ?? [];
218
+ const splitArrayColumn = (value, separator) => {
219
+ return value?.toString().split(separator ?? DEFAULT_ARRAY_SEPARATOR$1) ?? [];
220
+ };
205
221
  const joinArrayColumn$1 = (value, separator) => value
206
222
  ?.map((x) => x.toString().trim())
207
223
  .filter((x) => x)
@@ -268,7 +284,9 @@ class EntitySerializer {
268
284
  const parsedColumn = this.parseColumnValue(record, column);
269
285
  entity[column.selector] = column.array
270
286
  ? splitArrayColumn(parsedColumn, column.arraySeparator)
271
- : parsedColumn;
287
+ .map((x) => applyModifiers(x, column.modifiers))
288
+ .filter((x) => isValidValue(x))
289
+ : applyModifiers(parsedColumn, column.modifiers);
272
290
  }
273
291
  const validationErrors = [];
274
292
  for (const column of definition.columns) {