@punks/backend-entity-manager 0.0.416 → 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.
- package/dist/cjs/index.js +23 -5
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/abstractions/serializer.d.ts +2 -0
- package/dist/esm/index.js +23 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/abstractions/serializer.d.ts +2 -0
- package/dist/index.d.ts +2 -0
- package/package.json +1 -1
|
@@ -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;
|
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) =>
|
|
202
|
-
?.toString()
|
|
203
|
-
|
|
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
|
-
|
|
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) {
|