@punks/backend-entity-manager 0.0.348 → 0.0.350

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 (54) hide show
  1. package/dist/cjs/index.js +425 -292
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/abstractions/actions.d.ts +5 -0
  4. package/dist/cjs/types/abstractions/commands.d.ts +4 -0
  5. package/dist/cjs/types/abstractions/import.d.ts +8 -0
  6. package/dist/cjs/types/abstractions/index.d.ts +5 -3
  7. package/dist/cjs/types/abstractions/manager.d.ts +2 -1
  8. package/dist/cjs/types/abstractions/parse.d.ts +24 -0
  9. package/dist/cjs/types/abstractions/serializer.d.ts +20 -3
  10. package/dist/cjs/types/abstractions/session.d.ts +7 -0
  11. package/dist/cjs/types/actions/parse.d.ts +9 -0
  12. package/dist/cjs/types/base/serializer.d.ts +1 -0
  13. package/dist/cjs/types/commands/parse.d.ts +14 -0
  14. package/dist/cjs/types/concrete/index.d.ts +4 -2
  15. package/dist/cjs/types/platforms/nest/__test__/server/app/foos/foo.controller.d.ts +2 -1
  16. package/dist/cjs/types/platforms/nest/__test__/server/app/foos/foo.dto.d.ts +7 -0
  17. package/dist/cjs/types/platforms/nest/index.d.ts +1 -0
  18. package/dist/cjs/types/platforms/nest/models/index.d.ts +1 -0
  19. package/dist/cjs/types/platforms/nest/models/parsing.d.ts +12 -0
  20. package/dist/cjs/types/platforms/nest/services/session/index.d.ts +2 -1
  21. package/dist/cjs/types/providers/{services.d.ts → services/entities-locator.d.ts} +33 -72
  22. package/dist/cjs/types/providers/services/entity-locator.d.ts +73 -0
  23. package/dist/cjs/types/providers/services/index.d.ts +2 -0
  24. package/dist/cjs/types/symbols/ioc.d.ts +2 -0
  25. package/dist/cjs/types/testing/mocks/index.d.ts +1 -0
  26. package/dist/cjs/types/testing/mocks/session.d.ts +10 -0
  27. package/dist/esm/index.js +423 -293
  28. package/dist/esm/index.js.map +1 -1
  29. package/dist/esm/types/abstractions/actions.d.ts +5 -0
  30. package/dist/esm/types/abstractions/commands.d.ts +4 -0
  31. package/dist/esm/types/abstractions/import.d.ts +8 -0
  32. package/dist/esm/types/abstractions/index.d.ts +5 -3
  33. package/dist/esm/types/abstractions/manager.d.ts +2 -1
  34. package/dist/esm/types/abstractions/parse.d.ts +24 -0
  35. package/dist/esm/types/abstractions/serializer.d.ts +20 -3
  36. package/dist/esm/types/abstractions/session.d.ts +7 -0
  37. package/dist/esm/types/actions/parse.d.ts +9 -0
  38. package/dist/esm/types/base/serializer.d.ts +1 -0
  39. package/dist/esm/types/commands/parse.d.ts +14 -0
  40. package/dist/esm/types/concrete/index.d.ts +4 -2
  41. package/dist/esm/types/platforms/nest/__test__/server/app/foos/foo.controller.d.ts +2 -1
  42. package/dist/esm/types/platforms/nest/__test__/server/app/foos/foo.dto.d.ts +7 -0
  43. package/dist/esm/types/platforms/nest/index.d.ts +1 -0
  44. package/dist/esm/types/platforms/nest/models/index.d.ts +1 -0
  45. package/dist/esm/types/platforms/nest/models/parsing.d.ts +12 -0
  46. package/dist/esm/types/platforms/nest/services/session/index.d.ts +2 -1
  47. package/dist/esm/types/providers/{services.d.ts → services/entities-locator.d.ts} +33 -72
  48. package/dist/esm/types/providers/services/entity-locator.d.ts +73 -0
  49. package/dist/esm/types/providers/services/index.d.ts +2 -0
  50. package/dist/esm/types/symbols/ioc.d.ts +2 -0
  51. package/dist/esm/types/testing/mocks/index.d.ts +1 -0
  52. package/dist/esm/types/testing/mocks/session.d.ts +10 -0
  53. package/dist/index.d.ts +581 -486
  54. package/package.json +1 -1
package/dist/cjs/index.js CHANGED
@@ -19,6 +19,7 @@ var schedule = require('@nestjs/schedule');
19
19
  var require$$0 = require('child_process');
20
20
  var cqrs = require('@nestjs/cqrs');
21
21
  var require$$1 = require('fs');
22
+ var swagger = require('@nestjs/swagger');
22
23
  var clientS3 = require('@aws-sdk/client-s3');
23
24
  var s3RequestPresigner = require('@aws-sdk/s3-request-presigner');
24
25
  var clientSes = require('@aws-sdk/client-ses');
@@ -225,13 +226,13 @@ class EntitySerializer {
225
226
  }
226
227
  parseCsv(data, definition) {
227
228
  const records = backendCore.csvParse(data, DEFAULT_DELIMITER);
228
- return records.map((x) => this.convertSheetRecord(x, definition));
229
+ return records.map((x, i) => this.convertSheetRecord(x, definition, i));
229
230
  }
230
231
  parseXlsx(data, definition) {
231
232
  const records = backendCore.excelParse(data);
232
- return records.map((x) => this.convertSheetRecord(x, definition));
233
+ return records.map((x, i) => this.convertSheetRecord(x, definition, i));
233
234
  }
234
- convertSheetRecord(record, definition) {
235
+ convertSheetRecord(record, definition, rowIndex) {
235
236
  if (!record._type || record._type !== this.entityName) {
236
237
  throw new Error(`Invalid record type ${record._type} -> record: \n${JSON.stringify(record)}`);
237
238
  }
@@ -244,10 +245,26 @@ class EntitySerializer {
244
245
  entity[column.selector] = this.parseColumnValue(record, column);
245
246
  }
246
247
  }
248
+ const validationErrors = [];
249
+ for (const column of definition.columns) {
250
+ for (const validator of column.validators ?? []) {
251
+ const result = validator.fn((item) => item[column.selector]);
252
+ if (!result.isValid) {
253
+ validationErrors.push({
254
+ errorCode: validator.key,
255
+ });
256
+ }
257
+ }
258
+ }
247
259
  const idField = definition.columns.find((x) => x.idColumn || x.selector === "id");
248
260
  return {
249
261
  id: idField ? entity[idField.selector] : undefined,
250
262
  item: entity,
263
+ rowIndex,
264
+ status: {
265
+ isValid: validationErrors.length === 0,
266
+ validationErrors,
267
+ },
251
268
  };
252
269
  }
253
270
  parseColumnValue(row, definition) {
@@ -309,6 +326,7 @@ class EntitySerializer {
309
326
  async serialize(data, format) {
310
327
  return await this.buildExportFile(data, format);
311
328
  }
329
+ validateSheetItem(item, allItems, context) { }
312
330
  async getContext() {
313
331
  return (await this.services
314
332
  .resolveAuthenticationContextProvider()
@@ -499,6 +517,19 @@ class EntitiesImportAction {
499
517
  }
500
518
  }
501
519
 
520
+ class EntitiesParseAction {
521
+ constructor(services) {
522
+ this.services = services;
523
+ this.logger = backendCore.Log.getLogger(`${services.getEntityName()} -> Import`);
524
+ }
525
+ async execute(input) {
526
+ this.logger.debug("Parse action started", { input });
527
+ const result = await this.services.resolveParseCommand().execute(input);
528
+ this.logger.debug("Parse action completed", { input });
529
+ return result;
530
+ }
531
+ }
532
+
502
533
  class EntitiesSampleDownloadAction {
503
534
  constructor(services) {
504
535
  this.services = services;
@@ -813,6 +844,12 @@ class EntitiesExportCommand {
813
844
  }
814
845
  }
815
846
 
847
+ var InvalidEntityHandling;
848
+ (function (InvalidEntityHandling) {
849
+ InvalidEntityHandling["Skip"] = "skip";
850
+ InvalidEntityHandling["Fail"] = "fail";
851
+ })(InvalidEntityHandling || (InvalidEntityHandling = {}));
852
+
816
853
  class EntitiesImportCommand {
817
854
  constructor(services, settings) {
818
855
  this.services = services;
@@ -825,10 +862,19 @@ class EntitiesImportCommand {
825
862
  fileName: input.file.fileName,
826
863
  });
827
864
  const importEntities = await this.parseImportFile(input.file.content, input.format);
828
- await this.services.resolveSerializer().import(importEntities.map((x) => x.item), input.payload);
865
+ const validEntities = importEntities.filter((x) => x.status.isValid);
866
+ const invalidEntities = importEntities.filter((x) => !x.status.isValid);
867
+ if (invalidEntities.length > 0 &&
868
+ input.options?.invalidEntitiesHandling !== InvalidEntityHandling.Skip) {
869
+ throw new Error(`Cannot import file due to invalid entities: ${invalidEntities
870
+ .map((x) => x.id)
871
+ .join(", ")}`);
872
+ }
873
+ await this.services.resolveSerializer().import(validEntities.map((x) => x.item), input.payload);
829
874
  return {
830
875
  statistics: {
831
- importedCount: importEntities.length,
876
+ importedCount: validEntities.length,
877
+ skippedCount: invalidEntities.length,
832
878
  createdCount: 0,
833
879
  unchangedCount: 0,
834
880
  updatedCount: 0,
@@ -854,6 +900,41 @@ class EntitiesImportCommand {
854
900
  }
855
901
  }
856
902
 
903
+ class EntitiesParseCommand {
904
+ constructor(services, settings) {
905
+ this.services = services;
906
+ this.settings = settings;
907
+ }
908
+ async execute(input) {
909
+ await this.uploadImportFile({
910
+ content: input.file.content,
911
+ contentType: input.file.contentType,
912
+ fileName: input.file.fileName,
913
+ });
914
+ const entries = await this.parseImportFile(input.file.content, input.format);
915
+ return {
916
+ entries,
917
+ };
918
+ }
919
+ async parseImportFile(content, format) {
920
+ return await this.services.resolveSerializer().parse(content, format);
921
+ }
922
+ async uploadImportFile(file) {
923
+ await this.bucket.fileUpload({
924
+ bucket: this.settings.exportBucket.bucket,
925
+ filePath: this.buildAbsoluteBucketPath(file.fileName),
926
+ content: file.content,
927
+ contentType: file.contentType,
928
+ });
929
+ }
930
+ buildAbsoluteBucketPath(relativePath) {
931
+ return `${this.settings.exportBucket.rootFolderPath ?? ""}/parsers/${createDayPath$1(new Date())}/${relativePath}`;
932
+ }
933
+ get bucket() {
934
+ return this.services.getRootServices().resolveDefaultBucketProvider();
935
+ }
936
+ }
937
+
857
938
  class EntitiesSampleDownloadCommand {
858
939
  constructor(services, settings) {
859
940
  this.services = services;
@@ -1130,6 +1211,9 @@ class EntityManager {
1130
1211
  get import() {
1131
1212
  return this.services.resolveImportCommand();
1132
1213
  }
1214
+ get parse() {
1215
+ return this.services.resolveParseCommand();
1216
+ }
1133
1217
  get sampleDownload() {
1134
1218
  return this.services.resolveSampleDownloadCommand();
1135
1219
  }
@@ -1174,6 +1258,9 @@ class EntityActions {
1174
1258
  get import() {
1175
1259
  return this.services.resolveImportAction();
1176
1260
  }
1261
+ get parse() {
1262
+ return this.services.resolveParseAction();
1263
+ }
1177
1264
  get sampleDownload() {
1178
1265
  return this.services.resolveSampleDownloadAction();
1179
1266
  }
@@ -1262,6 +1349,7 @@ const EntityServices = {
1262
1349
  IEntityDeleteAction: "IEntityDeleteAction",
1263
1350
  IEntityMergeAction: "IEntityMergeAction",
1264
1351
  IEntitiesExportAction: "IEntitiesExportAction",
1352
+ IEntitiesParseAction: "IEntitiesParseAction",
1265
1353
  IEntitiesImportAction: "IEntitiesImportAction",
1266
1354
  IEntitiesSampleDownloadAction: "IEntitiesSampleDownloadAction",
1267
1355
  IEntityVersionsSearchAction: "IEntityVersionsSearchAction",
@@ -1280,6 +1368,7 @@ const EntityServices = {
1280
1368
  IEntitiesDeleteCommand: "IEntitiesDeleteCommand",
1281
1369
  IEntitiesExportCommand: "IEntitiesExportCommand",
1282
1370
  IEntitiesImportCommand: "IEntitiesImportCommand",
1371
+ IEntitiesParseCommand: "IEntitiesParseCommand",
1283
1372
  IEntitiesSampleDownloadCommand: "IEntitiesSampleDownloadCommand",
1284
1373
  },
1285
1374
  Converters: {
@@ -1360,162 +1449,6 @@ const GlobalServices = {
1360
1449
  },
1361
1450
  };
1362
1451
 
1363
- class EntityServiceLocator {
1364
- constructor(services, entityName) {
1365
- this.services = services;
1366
- this.entityName = entityName;
1367
- }
1368
- getRootServices() {
1369
- return this.services;
1370
- }
1371
- resolveAuthenticationContextProvider() {
1372
- return this.services.resolveAuthenticationContextProvider();
1373
- }
1374
- resolveEntityManager() {
1375
- return this.services.resolveEntityManager(this.entityName);
1376
- }
1377
- resolveEntityActions() {
1378
- return this.services.resolveEntityActions(this.entityName);
1379
- }
1380
- resolveRepository() {
1381
- return this.services.resolveRepository(this.entityName);
1382
- }
1383
- resolveEventsManager() {
1384
- return this.services.resolveEventsManager(this.entityName);
1385
- }
1386
- resolveVersioningProvider() {
1387
- return this.services.resolveEntityVersioningProvider();
1388
- }
1389
- resolveEntityConfiguration() {
1390
- return this.services.resolveEntityConfiguration(this.entityName);
1391
- }
1392
- resolveReplicaSyncManager() {
1393
- return this.services.resolveReplicaSyncManager(this.entityName);
1394
- }
1395
- resolveReplicaConfiguration() {
1396
- return this.services.resolveReplicaConfiguration(this.entityName);
1397
- }
1398
- resolveReplicaDeleteManager() {
1399
- return this.services.resolveReplicaDeleteManager(this.entityName);
1400
- }
1401
- resolveConnectorSyncManager() {
1402
- return this.services.resolveConnectorSyncManager(this.entityName);
1403
- }
1404
- resolveConnectorDeleteManager() {
1405
- return this.services.resolveConnectorDeleteManager(this.entityName);
1406
- }
1407
- resolveConnectorsConfiguration() {
1408
- return this.services.resolveConnectorsConfiguration(this.entityName);
1409
- }
1410
- resolveConverter() {
1411
- return this.services.resolveConverter(this.entityName);
1412
- }
1413
- resolveSerializer() {
1414
- return this.services.resolveSerializer(this.entityName);
1415
- }
1416
- resolveSnapshotService() {
1417
- return this.services.resolveSnapshotService(this.entityName);
1418
- }
1419
- resolveAdapter() {
1420
- return this.services.resolveAdapter(this.entityName);
1421
- }
1422
- resolveAuthorizationMiddleware() {
1423
- return this.services.resolveAuthorizationMiddleware(this.entityName);
1424
- }
1425
- resolveGetQuery() {
1426
- return this.services.resolveGetQuery(this.entityName);
1427
- }
1428
- resolveExistsQuery() {
1429
- return this.services.resolveExistsQuery(this.entityName);
1430
- }
1431
- resolveCountQuery() {
1432
- return this.services.resolveCountQuery(this.entityName);
1433
- }
1434
- resolveVersionsSearchQuery() {
1435
- return this.services.resolveVersionsSearchQuery(this.entityName);
1436
- }
1437
- resolveSearchQuery() {
1438
- return this.services.resolveSearchQuery(this.entityName);
1439
- }
1440
- resolveFindQuery() {
1441
- return this.services.resolveFindQuery(this.entityName);
1442
- }
1443
- resolveCreateCommand() {
1444
- return this.services.resolveCreateCommand(this.entityName);
1445
- }
1446
- resolveUpdateCommand() {
1447
- return this.services.resolveUpdateCommand(this.entityName);
1448
- }
1449
- resolveUpsertCommand() {
1450
- return this.services.resolveUpsertCommand(this.entityName);
1451
- }
1452
- resolveUpsertByCommand() {
1453
- return this.services.resolveUpsertByCommand(this.entityName);
1454
- }
1455
- resolveDeleteCommand() {
1456
- return this.services.resolveDeleteCommand(this.entityName);
1457
- }
1458
- resolveDeleteItemsCommand() {
1459
- return this.services.resolveDeleteItemsCommand(this.entityName);
1460
- }
1461
- resolveVersionCommand() {
1462
- return this.services.resolveVersionCommand(this.entityName);
1463
- }
1464
- resolveSampleDownloadCommand() {
1465
- return this.services.resolveSampleDownloadCommand(this.entityName);
1466
- }
1467
- resolveImportCommand() {
1468
- return this.services.resolveImportCommand(this.entityName);
1469
- }
1470
- resolveExportCommand() {
1471
- return this.services.resolveExportCommand(this.entityName);
1472
- }
1473
- resolveGetAction() {
1474
- return this.services.resolveGetAction(this.entityName);
1475
- }
1476
- resolveExistsAction() {
1477
- return this.services.resolveExistsAction(this.entityName);
1478
- }
1479
- resolveCountAction() {
1480
- return this.services.resolveCountAction(this.entityName);
1481
- }
1482
- resolveSearchAction() {
1483
- return this.services.resolveSearchAction(this.entityName);
1484
- }
1485
- resolveVersionsSearchAction() {
1486
- return this.services.resolveVersionsSearchAction(this.entityName);
1487
- }
1488
- resolveCreateAction() {
1489
- return this.services.resolveCreateAction(this.entityName);
1490
- }
1491
- resolveUpdateAction() {
1492
- return this.services.resolveUpdateAction(this.entityName);
1493
- }
1494
- resolveUpsertAction() {
1495
- return this.services.resolveUpsertAction(this.entityName);
1496
- }
1497
- resolveDeleteAction() {
1498
- return this.services.resolveDeleteAction(this.entityName);
1499
- }
1500
- resolveDeleteItemsAction() {
1501
- return this.services.resolveDeleteItemsAction(this.entityName);
1502
- }
1503
- resolveImportAction() {
1504
- return this.services.resolveImportAction(this.entityName);
1505
- }
1506
- resolveSampleDownloadAction() {
1507
- return this.services.resolveSampleDownloadAction(this.entityName);
1508
- }
1509
- resolveExportAction() {
1510
- return this.services.resolveExportAction(this.entityName);
1511
- }
1512
- resolveQueryBuilder() {
1513
- return this.services.resolveQueryBuilder(this.entityName);
1514
- }
1515
- getEntityName() {
1516
- return this.entityName;
1517
- }
1518
- }
1519
1452
  class EntitiesServiceLocator {
1520
1453
  constructor(provider) {
1521
1454
  this.provider = provider;
@@ -1867,6 +1800,12 @@ class EntitiesServiceLocator {
1867
1800
  registerImportCommand(entityName, instance) {
1868
1801
  this.provider.registerEntityService(EntityServices.Commands.IEntitiesImportCommand, entityName, instance);
1869
1802
  }
1803
+ resolveParseCommand(entityName) {
1804
+ return this.provider.resolveEntityService(EntityServices.Commands.IEntitiesParseCommand, entityName);
1805
+ }
1806
+ registerParseCommand(entityName, instance) {
1807
+ this.provider.registerEntityService(EntityServices.Commands.IEntitiesParseCommand, entityName, instance);
1808
+ }
1870
1809
  resolveSampleDownloadCommand(entityName) {
1871
1810
  return this.provider.resolveEntityService(EntityServices.Commands.IEntitiesSampleDownloadCommand, entityName);
1872
1811
  }
@@ -1951,6 +1890,12 @@ class EntitiesServiceLocator {
1951
1890
  registerImportAction(entityName, instance) {
1952
1891
  this.provider.registerEntityService(EntityServices.Actions.IEntitiesImportAction, entityName, instance);
1953
1892
  }
1893
+ resolveParseAction(entityName) {
1894
+ return this.provider.resolveEntityService(EntityServices.Actions.IEntitiesParseAction, entityName);
1895
+ }
1896
+ registerParseAction(entityName, instance) {
1897
+ this.provider.registerEntityService(EntityServices.Actions.IEntitiesParseAction, entityName, instance);
1898
+ }
1954
1899
  resolveQueryBuilder(entityName) {
1955
1900
  return this.provider.resolveEntityService(EntityServices.Queries.IEntitiesQueryBuilder, entityName);
1956
1901
  }
@@ -1959,6 +1904,169 @@ class EntitiesServiceLocator {
1959
1904
  }
1960
1905
  }
1961
1906
 
1907
+ class EntityServiceLocator {
1908
+ constructor(services, entityName) {
1909
+ this.services = services;
1910
+ this.entityName = entityName;
1911
+ }
1912
+ getRootServices() {
1913
+ return this.services;
1914
+ }
1915
+ resolveAuthenticationContextProvider() {
1916
+ return this.services.resolveAuthenticationContextProvider();
1917
+ }
1918
+ resolveEntityManager() {
1919
+ return this.services.resolveEntityManager(this.entityName);
1920
+ }
1921
+ resolveEntityActions() {
1922
+ return this.services.resolveEntityActions(this.entityName);
1923
+ }
1924
+ resolveRepository() {
1925
+ return this.services.resolveRepository(this.entityName);
1926
+ }
1927
+ resolveEventsManager() {
1928
+ return this.services.resolveEventsManager(this.entityName);
1929
+ }
1930
+ resolveVersioningProvider() {
1931
+ return this.services.resolveEntityVersioningProvider();
1932
+ }
1933
+ resolveEntityConfiguration() {
1934
+ return this.services.resolveEntityConfiguration(this.entityName);
1935
+ }
1936
+ resolveReplicaSyncManager() {
1937
+ return this.services.resolveReplicaSyncManager(this.entityName);
1938
+ }
1939
+ resolveReplicaConfiguration() {
1940
+ return this.services.resolveReplicaConfiguration(this.entityName);
1941
+ }
1942
+ resolveReplicaDeleteManager() {
1943
+ return this.services.resolveReplicaDeleteManager(this.entityName);
1944
+ }
1945
+ resolveConnectorSyncManager() {
1946
+ return this.services.resolveConnectorSyncManager(this.entityName);
1947
+ }
1948
+ resolveConnectorDeleteManager() {
1949
+ return this.services.resolveConnectorDeleteManager(this.entityName);
1950
+ }
1951
+ resolveConnectorsConfiguration() {
1952
+ return this.services.resolveConnectorsConfiguration(this.entityName);
1953
+ }
1954
+ resolveConverter() {
1955
+ return this.services.resolveConverter(this.entityName);
1956
+ }
1957
+ resolveSerializer() {
1958
+ return this.services.resolveSerializer(this.entityName);
1959
+ }
1960
+ resolveSnapshotService() {
1961
+ return this.services.resolveSnapshotService(this.entityName);
1962
+ }
1963
+ resolveAdapter() {
1964
+ return this.services.resolveAdapter(this.entityName);
1965
+ }
1966
+ resolveAuthorizationMiddleware() {
1967
+ return this.services.resolveAuthorizationMiddleware(this.entityName);
1968
+ }
1969
+ resolveGetQuery() {
1970
+ return this.services.resolveGetQuery(this.entityName);
1971
+ }
1972
+ resolveExistsQuery() {
1973
+ return this.services.resolveExistsQuery(this.entityName);
1974
+ }
1975
+ resolveCountQuery() {
1976
+ return this.services.resolveCountQuery(this.entityName);
1977
+ }
1978
+ resolveVersionsSearchQuery() {
1979
+ return this.services.resolveVersionsSearchQuery(this.entityName);
1980
+ }
1981
+ resolveSearchQuery() {
1982
+ return this.services.resolveSearchQuery(this.entityName);
1983
+ }
1984
+ resolveFindQuery() {
1985
+ return this.services.resolveFindQuery(this.entityName);
1986
+ }
1987
+ resolveCreateCommand() {
1988
+ return this.services.resolveCreateCommand(this.entityName);
1989
+ }
1990
+ resolveUpdateCommand() {
1991
+ return this.services.resolveUpdateCommand(this.entityName);
1992
+ }
1993
+ resolveUpsertCommand() {
1994
+ return this.services.resolveUpsertCommand(this.entityName);
1995
+ }
1996
+ resolveUpsertByCommand() {
1997
+ return this.services.resolveUpsertByCommand(this.entityName);
1998
+ }
1999
+ resolveDeleteCommand() {
2000
+ return this.services.resolveDeleteCommand(this.entityName);
2001
+ }
2002
+ resolveDeleteItemsCommand() {
2003
+ return this.services.resolveDeleteItemsCommand(this.entityName);
2004
+ }
2005
+ resolveVersionCommand() {
2006
+ return this.services.resolveVersionCommand(this.entityName);
2007
+ }
2008
+ resolveSampleDownloadCommand() {
2009
+ return this.services.resolveSampleDownloadCommand(this.entityName);
2010
+ }
2011
+ resolveImportCommand() {
2012
+ return this.services.resolveImportCommand(this.entityName);
2013
+ }
2014
+ resolveParseCommand() {
2015
+ return this.services.resolveParseCommand(this.entityName);
2016
+ }
2017
+ resolveExportCommand() {
2018
+ return this.services.resolveExportCommand(this.entityName);
2019
+ }
2020
+ resolveGetAction() {
2021
+ return this.services.resolveGetAction(this.entityName);
2022
+ }
2023
+ resolveExistsAction() {
2024
+ return this.services.resolveExistsAction(this.entityName);
2025
+ }
2026
+ resolveCountAction() {
2027
+ return this.services.resolveCountAction(this.entityName);
2028
+ }
2029
+ resolveSearchAction() {
2030
+ return this.services.resolveSearchAction(this.entityName);
2031
+ }
2032
+ resolveVersionsSearchAction() {
2033
+ return this.services.resolveVersionsSearchAction(this.entityName);
2034
+ }
2035
+ resolveCreateAction() {
2036
+ return this.services.resolveCreateAction(this.entityName);
2037
+ }
2038
+ resolveUpdateAction() {
2039
+ return this.services.resolveUpdateAction(this.entityName);
2040
+ }
2041
+ resolveUpsertAction() {
2042
+ return this.services.resolveUpsertAction(this.entityName);
2043
+ }
2044
+ resolveDeleteAction() {
2045
+ return this.services.resolveDeleteAction(this.entityName);
2046
+ }
2047
+ resolveDeleteItemsAction() {
2048
+ return this.services.resolveDeleteItemsAction(this.entityName);
2049
+ }
2050
+ resolveImportAction() {
2051
+ return this.services.resolveImportAction(this.entityName);
2052
+ }
2053
+ resolveParseAction() {
2054
+ return this.services.resolveParseAction(this.entityName);
2055
+ }
2056
+ resolveSampleDownloadAction() {
2057
+ return this.services.resolveSampleDownloadAction(this.entityName);
2058
+ }
2059
+ resolveExportAction() {
2060
+ return this.services.resolveExportAction(this.entityName);
2061
+ }
2062
+ resolveQueryBuilder() {
2063
+ return this.services.resolveQueryBuilder(this.entityName);
2064
+ }
2065
+ getEntityName() {
2066
+ return this.entityName;
2067
+ }
2068
+ }
2069
+
1962
2070
  class EntitiesCountQuery {
1963
2071
  constructor(services) {
1964
2072
  this.services = services;
@@ -2515,7 +2623,9 @@ class EntityManagerServiceCollection {
2515
2623
  this.locator.registerExportCommand(this.entityName, new EntitiesExportCommand(this.resolver, settings));
2516
2624
  this.locator.registerExportAction(this.entityName, new EntitiesExportAction(this.resolver));
2517
2625
  this.locator.registerImportCommand(this.entityName, new EntitiesImportCommand(this.resolver, settings));
2626
+ this.locator.registerParseCommand(this.entityName, new EntitiesParseCommand(this.resolver, settings));
2518
2627
  this.locator.registerImportAction(this.entityName, new EntitiesImportAction(this.resolver));
2628
+ this.locator.registerParseAction(this.entityName, new EntitiesParseAction(this.resolver));
2519
2629
  this.locator.registerSampleDownloadCommand(this.entityName, new EntitiesSampleDownloadCommand(this.resolver, settings));
2520
2630
  this.locator.registerSampleDownloadAction(this.entityName, new EntitiesSampleDownloadAction(this.resolver));
2521
2631
  return this;
@@ -22085,6 +22195,26 @@ exports.MediaLibraryService = __decorate([
22085
22195
  __metadata("design:paramtypes", [exports.EntityManagerRegistry])
22086
22196
  ], exports.MediaLibraryService);
22087
22197
 
22198
+ function toInteger(dirtyNumber) {
22199
+ if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {
22200
+ return NaN;
22201
+ }
22202
+
22203
+ var number = Number(dirtyNumber);
22204
+
22205
+ if (isNaN(number)) {
22206
+ return number;
22207
+ }
22208
+
22209
+ return number < 0 ? Math.ceil(number) : Math.floor(number);
22210
+ }
22211
+
22212
+ function requiredArgs(required, args) {
22213
+ if (args.length < required) {
22214
+ throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');
22215
+ }
22216
+ }
22217
+
22088
22218
  /**
22089
22219
  * @name toDate
22090
22220
  * @category Common Helpers
@@ -22101,11 +22231,9 @@ exports.MediaLibraryService = __decorate([
22101
22231
  *
22102
22232
  * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.
22103
22233
  *
22104
- * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).
22105
- *
22106
- * @param argument - The value to convert
22107
- *
22108
- * @returns The parsed date in the local time zone
22234
+ * @param {Date|Number} argument - the value to convert
22235
+ * @returns {Date} the parsed date in the local time zone
22236
+ * @throws {TypeError} 1 argument required
22109
22237
  *
22110
22238
  * @example
22111
22239
  * // Clone the date:
@@ -22117,65 +22245,25 @@ exports.MediaLibraryService = __decorate([
22117
22245
  * const result = toDate(1392098430000)
22118
22246
  * //=> Tue Feb 11 2014 11:30:30
22119
22247
  */
22248
+
22120
22249
  function toDate(argument) {
22121
- const argStr = Object.prototype.toString.call(argument);
22250
+ requiredArgs(1, arguments);
22251
+ var argStr = Object.prototype.toString.call(argument); // Clone the date
22122
22252
 
22123
- // Clone the date
22124
- if (
22125
- argument instanceof Date ||
22126
- (typeof argument === "object" && argStr === "[object Date]")
22127
- ) {
22253
+ if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {
22128
22254
  // Prevent the date to lose the milliseconds when passed to new Date() in IE10
22129
- return new argument.constructor(+argument);
22130
- } else if (
22131
- typeof argument === "number" ||
22132
- argStr === "[object Number]" ||
22133
- typeof argument === "string" ||
22134
- argStr === "[object String]"
22135
- ) {
22136
- // TODO: Can we get rid of as?
22255
+ return new Date(argument.getTime());
22256
+ } else if (typeof argument === 'number' || argStr === '[object Number]') {
22137
22257
  return new Date(argument);
22138
22258
  } else {
22139
- // TODO: Can we get rid of as?
22140
- return new Date(NaN);
22141
- }
22142
- }
22259
+ if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {
22260
+ // eslint-disable-next-line no-console
22261
+ console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule"); // eslint-disable-next-line no-console
22143
22262
 
22144
- /**
22145
- * @name constructFrom
22146
- * @category Generic Helpers
22147
- * @summary Constructs a date using the reference date and the value
22148
- *
22149
- * @description
22150
- * The function constructs a new date using the constructor from the reference
22151
- * date and the given value. It helps to build generic functions that accept
22152
- * date extensions.
22153
- *
22154
- * It defaults to `Date` if the passed reference date is a number or a string.
22155
- *
22156
- * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).
22157
- *
22158
- * @param date - The reference date to take constructor from
22159
- * @param value - The value to create the date
22160
- *
22161
- * @returns Date initialized using the given date and value
22162
- *
22163
- * @example
22164
- * import { constructFrom } from 'date-fns'
22165
- *
22166
- * // A function that clones a date preserving the original type
22167
- * function cloneDate<DateType extends Date(date: DateType): DateType {
22168
- * return constructFrom(
22169
- * date, // Use contrustor from the given date
22170
- * date.getTime() // Use the date value to create a new date
22171
- * )
22172
- * }
22173
- */
22174
- function constructFrom(date, value) {
22175
- if (date instanceof Date) {
22176
- return new date.constructor(value);
22177
- } else {
22178
- return new Date(value);
22263
+ console.warn(new Error().stack);
22264
+ }
22265
+
22266
+ return new Date(NaN);
22179
22267
  }
22180
22268
  }
22181
22269
 
@@ -22187,60 +22275,37 @@ function constructFrom(date, value) {
22187
22275
  * @description
22188
22276
  * Add the specified number of days to the given date.
22189
22277
  *
22190
- * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).
22278
+ * ### v2.0.0 breaking changes:
22191
22279
  *
22192
- * @param date - The date to be changed
22193
- * @param amount - The amount of days to be added.
22280
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
22194
22281
  *
22195
- * @returns The new date with the days added
22282
+ * @param {Date|Number} date - the date to be changed
22283
+ * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
22284
+ * @returns {Date} the new date with the days added
22285
+ * @throws {TypeError} 2 arguments required
22196
22286
  *
22197
22287
  * @example
22198
22288
  * // Add 10 days to 1 September 2014:
22199
- * const result = addDays(new Date(2014, 8, 1), 10)
22289
+ * var result = addDays(new Date(2014, 8, 1), 10)
22200
22290
  * //=> Thu Sep 11 2014 00:00:00
22201
22291
  */
22202
- function addDays(date, amount) {
22203
- const _date = toDate(date);
22204
- if (isNaN(amount)) return constructFrom(date, NaN);
22292
+
22293
+ function addDays(dirtyDate, dirtyAmount) {
22294
+ requiredArgs(2, arguments);
22295
+ var date = toDate(dirtyDate);
22296
+ var amount = toInteger(dirtyAmount);
22297
+
22298
+ if (isNaN(amount)) {
22299
+ return new Date(NaN);
22300
+ }
22301
+
22205
22302
  if (!amount) {
22206
22303
  // If 0 days, no-op to avoid changing times in the hour before end of DST
22207
- return _date;
22304
+ return date;
22208
22305
  }
22209
- _date.setDate(_date.getDate() + amount);
22210
- return _date;
22211
- }
22212
22306
 
22213
- /**
22214
- * @module constants
22215
- * @summary Useful constants
22216
- * @description
22217
- * Collection of useful date constants.
22218
- *
22219
- * The constants could be imported from `date-fns/constants`:
22220
- *
22221
- * ```ts
22222
- * import { maxTime, minTime } from "./constants/date-fns/constants";
22223
- *
22224
- * function isAllowedTime(time) {
22225
- * return time <= maxTime && time >= minTime;
22226
- * }
22227
- * ```
22228
- */
22229
-
22230
- /**
22231
- * @constant
22232
- * @name millisecondsInMinute
22233
- * @summary Milliseconds in 1 minute
22234
- */
22235
- const millisecondsInMinute = 60000;
22236
-
22237
- function getRoundingMethod(method) {
22238
- return (number) => {
22239
- const round = method ? Math[method] : Math.trunc;
22240
- const result = round(number);
22241
- // Prevent negative zero
22242
- return result === 0 ? 0 : result;
22243
- };
22307
+ date.setDate(date.getDate() + amount);
22308
+ return date;
22244
22309
  }
22245
22310
 
22246
22311
  /**
@@ -22251,30 +22316,33 @@ function getRoundingMethod(method) {
22251
22316
  * @description
22252
22317
  * Get the number of milliseconds between the given dates.
22253
22318
  *
22254
- * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).
22319
+ * ### v2.0.0 breaking changes:
22255
22320
  *
22256
- * @param dateLeft - The later date
22257
- * @param dateRight - The earlier date
22321
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
22258
22322
  *
22259
- * @returns The number of milliseconds
22323
+ * @param {Date|Number} dateLeft - the later date
22324
+ * @param {Date|Number} dateRight - the earlier date
22325
+ * @returns {Number} the number of milliseconds
22326
+ * @throws {TypeError} 2 arguments required
22260
22327
  *
22261
22328
  * @example
22262
22329
  * // How many milliseconds are between
22263
22330
  * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?
22264
- * const result = differenceInMilliseconds(
22331
+ * var result = differenceInMilliseconds(
22265
22332
  * new Date(2014, 6, 2, 12, 30, 21, 700),
22266
22333
  * new Date(2014, 6, 2, 12, 30, 20, 600)
22267
22334
  * )
22268
22335
  * //=> 1100
22269
22336
  */
22270
- function differenceInMilliseconds(dateLeft, dateRight) {
22271
- return +toDate(dateLeft) - +toDate(dateRight);
22272
- }
22273
22337
 
22274
- /**
22275
- * The {@link differenceInMinutes} function options.
22276
- */
22338
+ function differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) {
22339
+ requiredArgs(2, arguments);
22340
+ var dateLeft = toDate(dirtyDateLeft);
22341
+ var dateRight = toDate(dirtyDateRight);
22342
+ return dateLeft.getTime() - dateRight.getTime();
22343
+ }
22277
22344
 
22345
+ var MILLISECONDS_IN_MINUTE = 60000;
22278
22346
  /**
22279
22347
  * @name differenceInMinutes
22280
22348
  * @category Minute Helpers
@@ -22283,34 +22351,36 @@ function differenceInMilliseconds(dateLeft, dateRight) {
22283
22351
  * @description
22284
22352
  * Get the signed number of full (rounded towards 0) minutes between the given dates.
22285
22353
  *
22286
- * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).
22354
+ * ### v2.0.0 breaking changes:
22287
22355
  *
22288
- * @param dateLeft - The later date
22289
- * @param dateRight - The earlier date
22290
- * @param options - An object with options.
22356
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
22291
22357
  *
22292
- * @returns The number of minutes
22358
+ * @param {Date|Number} dateLeft - the later date
22359
+ * @param {Date|Number} dateRight - the earlier date
22360
+ * @returns {Number} the number of minutes
22361
+ * @throws {TypeError} 2 arguments required
22293
22362
  *
22294
22363
  * @example
22295
22364
  * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?
22296
- * const result = differenceInMinutes(
22365
+ * var result = differenceInMinutes(
22297
22366
  * new Date(2014, 6, 2, 12, 20, 0),
22298
22367
  * new Date(2014, 6, 2, 12, 7, 59)
22299
22368
  * )
22300
22369
  * //=> 12
22301
22370
  *
22302
22371
  * @example
22303
- * // How many minutes are between 10:01:59 and 10:00:00
22304
- * const result = differenceInMinutes(
22372
+ * // How many minutes are from 10:01:59 to 10:00:00
22373
+ * var result = differenceInMinutes(
22305
22374
  * new Date(2000, 0, 1, 10, 0, 0),
22306
22375
  * new Date(2000, 0, 1, 10, 1, 59)
22307
22376
  * )
22308
22377
  * //=> -1
22309
22378
  */
22310
- function differenceInMinutes(dateLeft, dateRight, options) {
22311
- const diff =
22312
- differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;
22313
- return getRoundingMethod(options?.roundingMethod)(diff);
22379
+
22380
+ function differenceInMinutes(dirtyDateLeft, dirtyDateRight) {
22381
+ requiredArgs(2, arguments);
22382
+ var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / MILLISECONDS_IN_MINUTE;
22383
+ return diff > 0 ? Math.floor(diff) : Math.ceil(diff);
22314
22384
  }
22315
22385
 
22316
22386
  /**
@@ -22321,20 +22391,25 @@ function differenceInMinutes(dateLeft, dateRight, options) {
22321
22391
  * @description
22322
22392
  * Subtract the specified number of days from the given date.
22323
22393
  *
22324
- * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).
22394
+ * ### v2.0.0 breaking changes:
22325
22395
  *
22326
- * @param date - The date to be changed
22327
- * @param amount - The amount of days to be subtracted.
22396
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
22328
22397
  *
22329
- * @returns The new date with the days subtracted
22398
+ * @param {Date|Number} date - the date to be changed
22399
+ * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
22400
+ * @returns {Date} the new date with the days subtracted
22401
+ * @throws {TypeError} 2 arguments required
22330
22402
  *
22331
22403
  * @example
22332
22404
  * // Subtract 10 days from 1 September 2014:
22333
- * const result = subDays(new Date(2014, 8, 1), 10)
22405
+ * var result = subDays(new Date(2014, 8, 1), 10)
22334
22406
  * //=> Fri Aug 22 2014 00:00:00
22335
22407
  */
22336
- function subDays(date, amount) {
22337
- return addDays(date, -amount);
22408
+
22409
+ function subDays(dirtyDate, dirtyAmount) {
22410
+ requiredArgs(2, arguments);
22411
+ var amount = toInteger(dirtyAmount);
22412
+ return addDays(dirtyDate, -amount);
22338
22413
  }
22339
22414
 
22340
22415
  const WpOperationLockService = (props = {}) => common.applyDecorators(common.Injectable(), common.SetMetadata(EntityManagerSymbols.OperationLockService, {
@@ -34757,6 +34832,37 @@ class AppExceptionsFilterBase {
34757
34832
  }
34758
34833
  }
34759
34834
 
34835
+ class EntityParseValidationError {
34836
+ }
34837
+ __decorate([
34838
+ swagger.ApiProperty(),
34839
+ __metadata("design:type", String)
34840
+ ], EntityParseValidationError.prototype, "errorCode", void 0);
34841
+ class EntityParseStatus {
34842
+ }
34843
+ __decorate([
34844
+ swagger.ApiProperty(),
34845
+ __metadata("design:type", Boolean)
34846
+ ], EntityParseStatus.prototype, "isValid", void 0);
34847
+ __decorate([
34848
+ swagger.ApiProperty({ type: [EntityParseValidationError] }),
34849
+ __metadata("design:type", Array)
34850
+ ], EntityParseStatus.prototype, "validationErrors", void 0);
34851
+ class EntityParseResult {
34852
+ }
34853
+ __decorate([
34854
+ swagger.ApiProperty(),
34855
+ __metadata("design:type", Number)
34856
+ ], EntityParseResult.prototype, "rowIndex", void 0);
34857
+ __decorate([
34858
+ swagger.ApiProperty({ type: Object }),
34859
+ __metadata("design:type", Object)
34860
+ ], EntityParseResult.prototype, "item", void 0);
34861
+ __decorate([
34862
+ swagger.ApiProperty(),
34863
+ __metadata("design:type", EntityParseStatus)
34864
+ ], EntityParseResult.prototype, "status", void 0);
34865
+
34760
34866
  const buildCompletedStepsSequence = (step) => {
34761
34867
  const steps = [];
34762
34868
  let currentStep = step;
@@ -44193,6 +44299,30 @@ exports.InMemorySecretsProvider = __decorate([
44193
44299
  WpSecretsProvider("inMemorySecretsManager")
44194
44300
  ], exports.InMemorySecretsProvider);
44195
44301
 
44302
+ class TestingAppSessionService {
44303
+ constructor() {
44304
+ this.values = new Map();
44305
+ }
44306
+ getValue(key) {
44307
+ return this.values.get(key);
44308
+ }
44309
+ setValue(key, value) {
44310
+ this.values.set(key, value);
44311
+ }
44312
+ clearValue(key) {
44313
+ this.values.set(key, undefined);
44314
+ }
44315
+ getRequest() {
44316
+ return this.values.get("request");
44317
+ }
44318
+ mockRequest(request) {
44319
+ this.values.set("request", request);
44320
+ }
44321
+ retrieveRequest() {
44322
+ return this.getRequest();
44323
+ }
44324
+ }
44325
+
44196
44326
  exports.AUTHENTICATION_EVENTS_NAMESPACE = AUTHENTICATION_EVENTS_NAMESPACE;
44197
44327
  exports.ApiKeyAccess = ApiKeyAccess;
44198
44328
  exports.AppExceptionsFilterBase = AppExceptionsFilterBase;
@@ -44215,6 +44345,8 @@ exports.EntityManagerSymbols = EntityManagerSymbols;
44215
44345
  exports.EntityManagerUnauthorizedException = EntityManagerUnauthorizedException;
44216
44346
  exports.EntityNotFoundException = EntityNotFoundException;
44217
44347
  exports.EntityOperationUnauthorizedException = EntityOperationUnauthorizedException;
44348
+ exports.EntityParseResult = EntityParseResult;
44349
+ exports.EntityParseValidationError = EntityParseValidationError;
44218
44350
  exports.EntitySeeder = EntitySeeder;
44219
44351
  exports.EntitySerializer = EntitySerializer;
44220
44352
  exports.EntitySnapshotService = EntitySnapshotService;
@@ -44247,6 +44379,7 @@ exports.QueryBuilderBase = QueryBuilderBase;
44247
44379
  exports.Roles = Roles;
44248
44380
  exports.SanityMediaError = SanityMediaError;
44249
44381
  exports.SendgridEmailTemplate = SendgridEmailTemplate;
44382
+ exports.TestingAppSessionService = TestingAppSessionService;
44250
44383
  exports.TypeOrmQueryBuilder = TypeOrmQueryBuilder;
44251
44384
  exports.TypeOrmRepository = TypeOrmRepository;
44252
44385
  exports.TypeormCacheInstance = TypeormCacheInstance;