@e22m4u/js-repository 0.6.4 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +6 -532
  2. package/dist/cjs/index.cjs +141 -1156
  3. package/package.json +7 -7
  4. package/src/adapter/adapter.d.ts +2 -4
  5. package/src/adapter/adapter.js +2 -6
  6. package/src/adapter/adapter.spec.js +3 -15
  7. package/src/adapter/builtin/memory-adapter.js +41 -12
  8. package/src/adapter/builtin/memory-adapter.spec.js +47 -0
  9. package/src/adapter/decorator/index.d.ts +0 -2
  10. package/src/adapter/decorator/index.js +0 -2
  11. package/src/definition/model/index.d.ts +0 -2
  12. package/src/definition/model/index.js +0 -2
  13. package/src/definition/model/properties/index.d.ts +0 -2
  14. package/src/definition/model/properties/index.js +0 -2
  15. package/src/definition/model/properties/properties-definition-validator.js +0 -169
  16. package/src/definition/model/properties/properties-definition-validator.spec.js +0 -162
  17. package/src/definition/model/properties/property-definition.d.ts +1 -5
  18. package/src/definition/model/properties/property-uniqueness-validator.js +2 -2
  19. package/src/filter/filter-clause.d.ts +3 -4
  20. package/src/filter/where-clause-tool.js +2 -2
  21. package/src/utils/index.d.ts +1 -5
  22. package/src/utils/index.js +1 -5
  23. package/src/utils/is-plain-object.d.ts +6 -0
  24. package/src/utils/{is-pure-object.js → is-plain-object.js} +2 -2
  25. package/src/utils/is-plain-object.spec.js +25 -0
  26. package/src/utils/model-name-to-model-key.js +0 -4
  27. package/src/utils/model-name-to-model-key.spec.js +0 -23
  28. package/tsconfig.json +2 -2
  29. package/src/adapter/decorator/data-transformation-decorator.d.ts +0 -14
  30. package/src/adapter/decorator/data-transformation-decorator.js +0 -54
  31. package/src/adapter/decorator/data-transformation-decorator.spec.js +0 -193
  32. package/src/adapter/decorator/data-validation-decorator.d.ts +0 -14
  33. package/src/adapter/decorator/data-validation-decorator.js +0 -54
  34. package/src/adapter/decorator/data-validation-decorator.spec.js +0 -105
  35. package/src/definition/model/model-data-transformer.d.ts +0 -16
  36. package/src/definition/model/model-data-transformer.js +0 -170
  37. package/src/definition/model/model-data-transformer.spec.js +0 -2312
  38. package/src/definition/model/model-data-validator.d.ts +0 -16
  39. package/src/definition/model/model-data-validator.js +0 -318
  40. package/src/definition/model/model-data-validator.spec.js +0 -4528
  41. package/src/definition/model/properties/property-transformer/builtin/index.d.ts +0 -3
  42. package/src/definition/model/properties/property-transformer/builtin/index.js +0 -3
  43. package/src/definition/model/properties/property-transformer/builtin/to-lower-case-transformer.d.ts +0 -6
  44. package/src/definition/model/properties/property-transformer/builtin/to-lower-case-transformer.js +0 -19
  45. package/src/definition/model/properties/property-transformer/builtin/to-lower-case-transformer.spec.js +0 -39
  46. package/src/definition/model/properties/property-transformer/builtin/to-upper-case-transformer.d.ts +0 -6
  47. package/src/definition/model/properties/property-transformer/builtin/to-upper-case-transformer.js +0 -19
  48. package/src/definition/model/properties/property-transformer/builtin/to-upper-case-transformer.spec.js +0 -39
  49. package/src/definition/model/properties/property-transformer/builtin/trim-transformer.d.ts +0 -6
  50. package/src/definition/model/properties/property-transformer/builtin/trim-transformer.js +0 -19
  51. package/src/definition/model/properties/property-transformer/builtin/trim-transformer.spec.js +0 -39
  52. package/src/definition/model/properties/property-transformer/index.d.ts +0 -2
  53. package/src/definition/model/properties/property-transformer/index.js +0 -2
  54. package/src/definition/model/properties/property-transformer/property-transformer-registry.d.ts +0 -29
  55. package/src/definition/model/properties/property-transformer/property-transformer-registry.js +0 -76
  56. package/src/definition/model/properties/property-transformer/property-transformer-registry.spec.js +0 -133
  57. package/src/definition/model/properties/property-transformer/property-transformer.d.ts +0 -27
  58. package/src/definition/model/properties/property-transformer/property-transformer.js +0 -1
  59. package/src/definition/model/properties/property-validator/builtin/index.d.ts +0 -3
  60. package/src/definition/model/properties/property-validator/builtin/index.js +0 -3
  61. package/src/definition/model/properties/property-validator/builtin/max-length-validator.d.ts +0 -6
  62. package/src/definition/model/properties/property-validator/builtin/max-length-validator.js +0 -28
  63. package/src/definition/model/properties/property-validator/builtin/max-length-validator.spec.js +0 -100
  64. package/src/definition/model/properties/property-validator/builtin/min-length-validator.d.ts +0 -6
  65. package/src/definition/model/properties/property-validator/builtin/min-length-validator.js +0 -28
  66. package/src/definition/model/properties/property-validator/builtin/min-length-validator.spec.js +0 -100
  67. package/src/definition/model/properties/property-validator/builtin/regexp-validator.d.ts +0 -6
  68. package/src/definition/model/properties/property-validator/builtin/regexp-validator.js +0 -30
  69. package/src/definition/model/properties/property-validator/builtin/regexp-validator.spec.js +0 -102
  70. package/src/definition/model/properties/property-validator/index.d.ts +0 -2
  71. package/src/definition/model/properties/property-validator/index.js +0 -2
  72. package/src/definition/model/properties/property-validator/property-validator-registry.d.ts +0 -29
  73. package/src/definition/model/properties/property-validator/property-validator-registry.js +0 -76
  74. package/src/definition/model/properties/property-validator/property-validator-registry.spec.js +0 -132
  75. package/src/definition/model/properties/property-validator/property-validator.d.ts +0 -25
  76. package/src/definition/model/properties/property-validator/property-validator.js +0 -1
  77. package/src/utils/get-ctor-name.d.ts +0 -6
  78. package/src/utils/get-ctor-name.js +0 -11
  79. package/src/utils/get-ctor-name.spec.js +0 -17
  80. package/src/utils/get-decorator-target-type.d.ts +0 -27
  81. package/src/utils/get-decorator-target-type.js +0 -63
  82. package/src/utils/get-decorator-target-type.spec.js +0 -80
  83. package/src/utils/is-ctor.d.ts +0 -8
  84. package/src/utils/is-ctor.js +0 -11
  85. package/src/utils/is-ctor.spec.js +0 -26
  86. package/src/utils/is-pure-object.d.ts +0 -6
  87. package/src/utils/is-pure-object.spec.js +0 -25
  88. package/src/utils/transform-promise.d.ts +0 -13
  89. package/src/utils/transform-promise.js +0 -15
  90. package/src/utils/transform-promise.spec.js +0 -19
@@ -38,18 +38,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
38
38
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
39
39
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
40
40
 
41
- // src/utils/is-ctor.js
42
- function isCtor(value) {
43
- if (!value) return false;
44
- return typeof value === "function" && "prototype" in value;
45
- }
46
- var init_is_ctor = __esm({
47
- "src/utils/is-ctor.js"() {
48
- "use strict";
49
- __name(isCtor, "isCtor");
50
- }
51
- });
52
-
53
41
  // src/utils/is-promise.js
54
42
  function isPromise(value) {
55
43
  if (!value) return false;
@@ -192,32 +180,6 @@ var init_is_deep_equal = __esm({
192
180
  }
193
181
  });
194
182
 
195
- // src/utils/get-ctor-name.js
196
- function getCtorName(value) {
197
- if (value === null) return "Null";
198
- if (value === void 0) return "Undefined";
199
- return value.constructor && value.constructor.name || void 0;
200
- }
201
- var init_get_ctor_name = __esm({
202
- "src/utils/get-ctor-name.js"() {
203
- "use strict";
204
- __name(getCtorName, "getCtorName");
205
- }
206
- });
207
-
208
- // src/utils/is-pure-object.js
209
- function isPureObject(value) {
210
- return Boolean(
211
- typeof value === "object" && value && !Array.isArray(value) && (!value.constructor || value.constructor && value.constructor.name === "Object")
212
- );
213
- }
214
- var init_is_pure_object = __esm({
215
- "src/utils/is-pure-object.js"() {
216
- "use strict";
217
- __name(isPureObject, "isPureObject");
218
- }
219
- });
220
-
221
183
  // src/errors/not-implemented-error.js
222
184
  var import_js_format, _NotImplementedError, NotImplementedError;
223
185
  var init_not_implemented_error = __esm({
@@ -325,6 +287,19 @@ var init_like_to_regexp = __esm({
325
287
  }
326
288
  });
327
289
 
290
+ // src/utils/is-plain-object.js
291
+ function isPlainObject(value) {
292
+ return Boolean(
293
+ typeof value === "object" && value && !Array.isArray(value) && (!value.constructor || value.constructor && value.constructor.name === "Object")
294
+ );
295
+ }
296
+ var init_is_plain_object = __esm({
297
+ "src/utils/is-plain-object.js"() {
298
+ "use strict";
299
+ __name(isPlainObject, "isPlainObject");
300
+ }
301
+ });
302
+
328
303
  // src/utils/string-to-regexp.js
329
304
  function stringToRegexp(pattern, flags = void 0) {
330
305
  if (pattern instanceof RegExp) {
@@ -362,18 +337,6 @@ var init_get_value_by_path = __esm({
362
337
  }
363
338
  });
364
339
 
365
- // src/utils/transform-promise.js
366
- function transformPromise(valueOrPromise, transformer) {
367
- return isPromise(valueOrPromise) ? valueOrPromise.then(transformer) : transformer(valueOrPromise);
368
- }
369
- var init_transform_promise = __esm({
370
- "src/utils/transform-promise.js"() {
371
- "use strict";
372
- init_is_promise();
373
- __name(transformPromise, "transformPromise");
374
- }
375
- });
376
-
377
340
  // src/utils/select-object-keys.js
378
341
  function selectObjectKeys(obj, keys) {
379
342
  if (!obj || typeof obj !== "object" || Array.isArray(obj))
@@ -435,8 +398,6 @@ function modelNameToModelKey(modelName) {
435
398
  "The model name should be a non-empty String without spaces, but %v was given.",
436
399
  modelName
437
400
  );
438
- if (modelName.toLowerCase() !== "model")
439
- modelName = modelName.replace(/[-_]?Model$/, "").replace(/[-_](MODEL|model)$/, "");
440
401
  return modelName.toLowerCase().replace(/[-_]/g, "");
441
402
  }
442
403
  var init_model_name_to_model_key = __esm({
@@ -447,65 +408,22 @@ var init_model_name_to_model_key = __esm({
447
408
  }
448
409
  });
449
410
 
450
- // src/utils/get-decorator-target-type.js
451
- function getDecoratorTargetType(target, propertyKey, descriptorOrIndex) {
452
- const isCtor2 = typeof target === "function";
453
- const isParameter = typeof descriptorOrIndex === "number";
454
- const isProperty = propertyKey != null && descriptorOrIndex == null;
455
- const isMethod = propertyKey != null && descriptorOrIndex != null;
456
- const D = DecoratorTargetType;
457
- if (isCtor2) {
458
- if (isParameter)
459
- return propertyKey ? D.STATIC_METHOD_PARAMETER : D.CONSTRUCTOR_PARAMETER;
460
- if (isProperty) return D.STATIC_PROPERTY;
461
- if (isMethod) return D.STATIC_METHOD;
462
- return D.CONSTRUCTOR;
463
- } else {
464
- if (isParameter) return D.INSTANCE_METHOD_PARAMETER;
465
- if (isProperty) return D.INSTANCE_PROPERTY;
466
- if (isMethod) return D.INSTANCE_METHOD;
467
- return D.INSTANCE;
468
- }
469
- }
470
- var DecoratorTargetType;
471
- var init_get_decorator_target_type = __esm({
472
- "src/utils/get-decorator-target-type.js"() {
473
- "use strict";
474
- DecoratorTargetType = {
475
- CONSTRUCTOR: "constructor",
476
- INSTANCE: "instance",
477
- STATIC_METHOD: "staticMethod",
478
- INSTANCE_METHOD: "instanceMethod",
479
- STATIC_PROPERTY: "staticProperty",
480
- INSTANCE_PROPERTY: "instanceProperty",
481
- CONSTRUCTOR_PARAMETER: "constructorParameter",
482
- STATIC_METHOD_PARAMETER: "staticMethodParameter",
483
- INSTANCE_METHOD_PARAMETER: "instanceMethodParameter"
484
- };
485
- __name(getDecoratorTargetType, "getDecoratorTargetType");
486
- }
487
- });
488
-
489
411
  // src/utils/index.js
490
412
  var init_utils = __esm({
491
413
  "src/utils/index.js"() {
492
414
  "use strict";
493
- init_is_ctor();
494
415
  init_is_promise();
495
416
  init_capitalize();
496
417
  init_clone_deep();
497
418
  init_singularize();
498
419
  init_is_deep_equal();
499
- init_get_ctor_name();
500
- init_is_pure_object();
501
420
  init_like_to_regexp();
421
+ init_is_plain_object();
502
422
  init_string_to_regexp();
503
423
  init_get_value_by_path();
504
- init_transform_promise();
505
424
  init_select_object_keys();
506
425
  init_exclude_object_keys();
507
426
  init_model_name_to_model_key();
508
- init_get_decorator_target_type();
509
427
  }
510
428
  });
511
429
 
@@ -1242,7 +1160,7 @@ var init_where_clause_tool = __esm({
1242
1160
  }
1243
1161
  return false;
1244
1162
  }
1245
- if (isPureObject(example)) {
1163
+ if (isPlainObject(example)) {
1246
1164
  const operatorsTest = this.getService(OperatorClauseTool).testAll(
1247
1165
  example,
1248
1166
  value
@@ -1737,357 +1655,17 @@ var init_property_uniqueness = __esm({
1737
1655
  }
1738
1656
  });
1739
1657
 
1740
- // src/definition/model/properties/property-validator/property-validator.js
1741
- var init_property_validator = __esm({
1742
- "src/definition/model/properties/property-validator/property-validator.js"() {
1743
- "use strict";
1744
- }
1745
- });
1746
-
1747
- // src/definition/model/properties/property-validator/builtin/regexp-validator.js
1748
- function regexpValidator(value, options, context) {
1749
- if (value == null || options === false) return true;
1750
- if (typeof options !== "string" && !(options instanceof RegExp))
1751
- throw new InvalidArgumentError(
1752
- 'The validator %v requires the "options" argument as a String or RegExp, but %v was given.',
1753
- context.validatorName,
1754
- options
1755
- );
1756
- if (typeof value === "string") {
1757
- const regexp = stringToRegexp(options);
1758
- return regexp.test(value);
1759
- }
1760
- throw new InvalidArgumentError(
1761
- "The property validator %v requires a String value, but %v was given.",
1762
- context.validatorName,
1763
- value
1764
- );
1765
- }
1766
- var init_regexp_validator = __esm({
1767
- "src/definition/model/properties/property-validator/builtin/regexp-validator.js"() {
1768
- "use strict";
1769
- init_utils();
1770
- init_errors();
1771
- __name(regexpValidator, "regexpValidator");
1772
- }
1773
- });
1774
-
1775
- // src/definition/model/properties/property-validator/builtin/max-length-validator.js
1776
- function maxLengthValidator(value, options, context) {
1777
- if (value == null || options === false) return true;
1778
- if (typeof options !== "number")
1779
- throw new InvalidArgumentError(
1780
- 'The validator %v requires the "options" argument as a Number, but %v was given.',
1781
- context.validatorName,
1782
- options
1783
- );
1784
- if (typeof value === "string" || Array.isArray(value))
1785
- return value.length <= options;
1786
- throw new InvalidArgumentError(
1787
- "The property validator %v requires a String or an Array value, but %v was given.",
1788
- context.validatorName,
1789
- value
1790
- );
1791
- }
1792
- var init_max_length_validator = __esm({
1793
- "src/definition/model/properties/property-validator/builtin/max-length-validator.js"() {
1794
- "use strict";
1795
- init_errors();
1796
- __name(maxLengthValidator, "maxLengthValidator");
1797
- }
1798
- });
1799
-
1800
- // src/definition/model/properties/property-validator/builtin/min-length-validator.js
1801
- function minLengthValidator(value, options, context) {
1802
- if (value == null || options === false) return true;
1803
- if (typeof options !== "number")
1804
- throw new InvalidArgumentError(
1805
- 'The validator %v requires the "options" argument as a Number, but %v was given.',
1806
- context.validatorName,
1807
- options
1808
- );
1809
- if (typeof value === "string" || Array.isArray(value))
1810
- return value.length >= options;
1811
- throw new InvalidArgumentError(
1812
- "The property validator %v requires a String or an Array value, but %v was given.",
1813
- context.validatorName,
1814
- value
1815
- );
1816
- }
1817
- var init_min_length_validator = __esm({
1818
- "src/definition/model/properties/property-validator/builtin/min-length-validator.js"() {
1819
- "use strict";
1820
- init_errors();
1821
- __name(minLengthValidator, "minLengthValidator");
1822
- }
1823
- });
1824
-
1825
- // src/definition/model/properties/property-validator/builtin/index.js
1826
- var init_builtin = __esm({
1827
- "src/definition/model/properties/property-validator/builtin/index.js"() {
1828
- "use strict";
1829
- init_regexp_validator();
1830
- init_max_length_validator();
1831
- init_min_length_validator();
1832
- }
1833
- });
1834
-
1835
- // src/definition/model/properties/property-validator/property-validator-registry.js
1836
- var import_js_service6, _PropertyValidatorRegistry, PropertyValidatorRegistry;
1837
- var init_property_validator_registry = __esm({
1838
- "src/definition/model/properties/property-validator/property-validator-registry.js"() {
1839
- "use strict";
1840
- import_js_service6 = require("@e22m4u/js-service");
1841
- init_builtin();
1842
- init_builtin();
1843
- init_builtin();
1844
- init_errors();
1845
- _PropertyValidatorRegistry = class _PropertyValidatorRegistry extends import_js_service6.Service {
1846
- /**
1847
- * Validators.
1848
- *
1849
- * @type {object}
1850
- */
1851
- _validators = {
1852
- maxLength: maxLengthValidator,
1853
- minLength: minLengthValidator,
1854
- regexp: regexpValidator
1855
- };
1856
- /**
1857
- * Add validator.
1858
- *
1859
- * @param {string} name
1860
- * @param {Function} validator
1861
- * @returns {PropertyValidatorRegistry}
1862
- */
1863
- addValidator(name, validator) {
1864
- if (!name || typeof name !== "string")
1865
- throw new InvalidArgumentError(
1866
- "A name of the property validator must be a non-empty String, but %v was given.",
1867
- name
1868
- );
1869
- if (name in this._validators)
1870
- throw new InvalidArgumentError(
1871
- "The property validator %v is already defined.",
1872
- name
1873
- );
1874
- if (typeof validator !== "function")
1875
- throw new InvalidArgumentError(
1876
- "The property validator %v must be a Function, but %v was given.",
1877
- name,
1878
- validator
1879
- );
1880
- this._validators[name] = validator;
1881
- return this;
1882
- }
1883
- /**
1884
- * Has validator.
1885
- *
1886
- * @param {string} name
1887
- * @returns {boolean}
1888
- */
1889
- hasValidator(name) {
1890
- return Boolean(this._validators[name]);
1891
- }
1892
- /**
1893
- * Get validator.
1894
- *
1895
- * @param {string} name
1896
- * @returns {Function}
1897
- */
1898
- getValidator(name) {
1899
- const validator = this._validators[name];
1900
- if (!validator)
1901
- throw new InvalidArgumentError(
1902
- "The property validator %v is not defined.",
1903
- name
1904
- );
1905
- return validator;
1906
- }
1907
- };
1908
- __name(_PropertyValidatorRegistry, "PropertyValidatorRegistry");
1909
- PropertyValidatorRegistry = _PropertyValidatorRegistry;
1910
- }
1911
- });
1912
-
1913
- // src/definition/model/properties/property-validator/index.js
1914
- var init_property_validator2 = __esm({
1915
- "src/definition/model/properties/property-validator/index.js"() {
1916
- "use strict";
1917
- init_property_validator();
1918
- init_property_validator_registry();
1919
- }
1920
- });
1921
-
1922
- // src/definition/model/properties/property-transformer/property-transformer.js
1923
- var init_property_transformer = __esm({
1924
- "src/definition/model/properties/property-transformer/property-transformer.js"() {
1925
- "use strict";
1926
- }
1927
- });
1928
-
1929
- // src/definition/model/properties/property-transformer/builtin/trim-transformer.js
1930
- function trimTransformer(value, options, context) {
1931
- if (value == null) return value;
1932
- if (typeof value === "string") return value.trim();
1933
- throw new InvalidArgumentError(
1934
- "The property transformer %v requires a String value, but %v was given.",
1935
- context.transformerName,
1936
- value
1937
- );
1938
- }
1939
- var init_trim_transformer = __esm({
1940
- "src/definition/model/properties/property-transformer/builtin/trim-transformer.js"() {
1941
- "use strict";
1942
- init_errors();
1943
- __name(trimTransformer, "trimTransformer");
1944
- }
1945
- });
1946
-
1947
- // src/definition/model/properties/property-transformer/builtin/to-lower-case-transformer.js
1948
- function toLowerCaseTransformer(value, options, context) {
1949
- if (value == null) return value;
1950
- if (typeof value === "string") return value.toLowerCase();
1951
- throw new InvalidArgumentError(
1952
- "The property transformer %v requires a String value, but %v was given.",
1953
- context.transformerName,
1954
- value
1955
- );
1956
- }
1957
- var init_to_lower_case_transformer = __esm({
1958
- "src/definition/model/properties/property-transformer/builtin/to-lower-case-transformer.js"() {
1959
- "use strict";
1960
- init_errors();
1961
- __name(toLowerCaseTransformer, "toLowerCaseTransformer");
1962
- }
1963
- });
1964
-
1965
- // src/definition/model/properties/property-transformer/builtin/to-upper-case-transformer.js
1966
- function toUpperCaseTransformer(value, options, context) {
1967
- if (value == null) return value;
1968
- if (typeof value === "string") return value.toUpperCase();
1969
- throw new InvalidArgumentError(
1970
- "The property transformer %v requires a String value, but %v was given.",
1971
- context.transformerName,
1972
- value
1973
- );
1974
- }
1975
- var init_to_upper_case_transformer = __esm({
1976
- "src/definition/model/properties/property-transformer/builtin/to-upper-case-transformer.js"() {
1977
- "use strict";
1978
- init_errors();
1979
- __name(toUpperCaseTransformer, "toUpperCaseTransformer");
1980
- }
1981
- });
1982
-
1983
- // src/definition/model/properties/property-transformer/builtin/index.js
1984
- var init_builtin2 = __esm({
1985
- "src/definition/model/properties/property-transformer/builtin/index.js"() {
1986
- "use strict";
1987
- init_trim_transformer();
1988
- init_to_lower_case_transformer();
1989
- init_to_upper_case_transformer();
1990
- }
1991
- });
1992
-
1993
- // src/definition/model/properties/property-transformer/property-transformer-registry.js
1994
- var import_js_service7, _PropertyTransformerRegistry, PropertyTransformerRegistry;
1995
- var init_property_transformer_registry = __esm({
1996
- "src/definition/model/properties/property-transformer/property-transformer-registry.js"() {
1997
- "use strict";
1998
- import_js_service7 = require("@e22m4u/js-service");
1999
- init_builtin2();
2000
- init_builtin2();
2001
- init_builtin2();
2002
- init_errors();
2003
- _PropertyTransformerRegistry = class _PropertyTransformerRegistry extends import_js_service7.Service {
2004
- /**
2005
- * Transformers.
2006
- *
2007
- * @type {object}
2008
- */
2009
- _transformers = {
2010
- trim: trimTransformer,
2011
- toUpperCase: toUpperCaseTransformer,
2012
- toLowerCase: toLowerCaseTransformer
2013
- };
2014
- /**
2015
- * Add transformer.
2016
- *
2017
- * @param {string} name
2018
- * @param {Function} transformer
2019
- * @returns {PropertyTransformerRegistry}
2020
- */
2021
- addTransformer(name, transformer) {
2022
- if (!name || typeof name !== "string")
2023
- throw new InvalidArgumentError(
2024
- "A name of the property transformer must be a non-empty String, but %v was given.",
2025
- name
2026
- );
2027
- if (name in this._transformers)
2028
- throw new InvalidArgumentError(
2029
- "The property transformer %v is already defined.",
2030
- name
2031
- );
2032
- if (typeof transformer !== "function")
2033
- throw new InvalidArgumentError(
2034
- "The property transformer %v must be a Function, but %v was given.",
2035
- name,
2036
- transformer
2037
- );
2038
- this._transformers[name] = transformer;
2039
- return this;
2040
- }
2041
- /**
2042
- * Has transformer.
2043
- *
2044
- * @param {string} name
2045
- * @returns {boolean}
2046
- */
2047
- hasTransformer(name) {
2048
- return Boolean(this._transformers[name]);
2049
- }
2050
- /**
2051
- * Get transformer.
2052
- *
2053
- * @param {string} name
2054
- * @returns {Function}
2055
- */
2056
- getTransformer(name) {
2057
- const transformer = this._transformers[name];
2058
- if (!transformer)
2059
- throw new InvalidArgumentError(
2060
- "The property transformer %v is not defined.",
2061
- name
2062
- );
2063
- return transformer;
2064
- }
2065
- };
2066
- __name(_PropertyTransformerRegistry, "PropertyTransformerRegistry");
2067
- PropertyTransformerRegistry = _PropertyTransformerRegistry;
2068
- }
2069
- });
2070
-
2071
- // src/definition/model/properties/property-transformer/index.js
2072
- var init_property_transformer2 = __esm({
2073
- "src/definition/model/properties/property-transformer/index.js"() {
2074
- "use strict";
2075
- init_property_transformer();
2076
- init_property_transformer_registry();
2077
- }
2078
- });
2079
-
2080
1658
  // src/definition/definition-registry.js
2081
- var import_js_service8, _DefinitionRegistry, DefinitionRegistry;
1659
+ var import_js_service6, _DefinitionRegistry, DefinitionRegistry;
2082
1660
  var init_definition_registry = __esm({
2083
1661
  "src/definition/definition-registry.js"() {
2084
1662
  "use strict";
2085
- import_js_service8 = require("@e22m4u/js-service");
1663
+ import_js_service6 = require("@e22m4u/js-service");
2086
1664
  init_utils();
2087
1665
  init_errors();
2088
1666
  init_model();
2089
1667
  init_definition();
2090
- _DefinitionRegistry = class _DefinitionRegistry extends import_js_service8.Service {
1668
+ _DefinitionRegistry = class _DefinitionRegistry extends import_js_service6.Service {
2091
1669
  /**
2092
1670
  * Datasources.
2093
1671
  *
@@ -2181,11 +1759,11 @@ var init_definition_registry = __esm({
2181
1759
  });
2182
1760
 
2183
1761
  // src/definition/model/model-definition-utils.js
2184
- var import_js_service9, import_js_empty_values, DEFAULT_PRIMARY_KEY_PROPERTY_NAME, _ModelDefinitionUtils, ModelDefinitionUtils;
1762
+ var import_js_service7, import_js_empty_values, DEFAULT_PRIMARY_KEY_PROPERTY_NAME, _ModelDefinitionUtils, ModelDefinitionUtils;
2185
1763
  var init_model_definition_utils = __esm({
2186
1764
  "src/definition/model/model-definition-utils.js"() {
2187
1765
  "use strict";
2188
- import_js_service9 = require("@e22m4u/js-service");
1766
+ import_js_service7 = require("@e22m4u/js-service");
2189
1767
  init_properties();
2190
1768
  init_utils();
2191
1769
  init_utils();
@@ -2193,7 +1771,7 @@ var init_model_definition_utils = __esm({
2193
1771
  init_errors();
2194
1772
  init_definition_registry();
2195
1773
  DEFAULT_PRIMARY_KEY_PROPERTY_NAME = "id";
2196
- _ModelDefinitionUtils = class _ModelDefinitionUtils extends import_js_service9.Service {
1774
+ _ModelDefinitionUtils = class _ModelDefinitionUtils extends import_js_service7.Service {
2197
1775
  /**
2198
1776
  * Get primary key as property name.
2199
1777
  *
@@ -2595,18 +2173,18 @@ var init_model_definition_utils = __esm({
2595
2173
  });
2596
2174
 
2597
2175
  // src/definition/model/properties/property-uniqueness-validator.js
2598
- var import_js_service10, import_js_empty_values2, _PropertyUniquenessValidator, PropertyUniquenessValidator;
2176
+ var import_js_service8, import_js_empty_values2, _PropertyUniquenessValidator, PropertyUniquenessValidator;
2599
2177
  var init_property_uniqueness_validator = __esm({
2600
2178
  "src/definition/model/properties/property-uniqueness-validator.js"() {
2601
2179
  "use strict";
2602
2180
  init_data_type();
2603
- import_js_service10 = require("@e22m4u/js-service");
2181
+ import_js_service8 = require("@e22m4u/js-service");
2604
2182
  init_utils();
2605
2183
  import_js_empty_values2 = require("@e22m4u/js-empty-values");
2606
2184
  init_property_uniqueness();
2607
2185
  init_errors();
2608
2186
  init_model_definition_utils();
2609
- _PropertyUniquenessValidator = class _PropertyUniquenessValidator extends import_js_service10.Service {
2187
+ _PropertyUniquenessValidator = class _PropertyUniquenessValidator extends import_js_service8.Service {
2610
2188
  /**
2611
2189
  * Validate.
2612
2190
  *
@@ -2633,7 +2211,7 @@ var init_property_uniqueness_validator = __esm({
2633
2211
  'The parameter "modelName" of the PropertyUniquenessValidator must be a non-empty String, but %v was given.',
2634
2212
  modelName
2635
2213
  );
2636
- if (!isPureObject(modelData))
2214
+ if (!isPlainObject(modelData))
2637
2215
  throw new InvalidArgumentError(
2638
2216
  "The data of the model %v should be an Object, but %v was given.",
2639
2217
  modelName,
@@ -2715,14 +2293,14 @@ var init_property_uniqueness_validator = __esm({
2715
2293
  });
2716
2294
 
2717
2295
  // src/definition/model/properties/primary-keys-definition-validator.js
2718
- var import_js_service11, _PrimaryKeysDefinitionValidator, PrimaryKeysDefinitionValidator;
2296
+ var import_js_service9, _PrimaryKeysDefinitionValidator, PrimaryKeysDefinitionValidator;
2719
2297
  var init_primary_keys_definition_validator = __esm({
2720
2298
  "src/definition/model/properties/primary-keys-definition-validator.js"() {
2721
2299
  "use strict";
2722
- import_js_service11 = require("@e22m4u/js-service");
2300
+ import_js_service9 = require("@e22m4u/js-service");
2723
2301
  init_errors();
2724
2302
  init_model_definition_utils();
2725
- _PrimaryKeysDefinitionValidator = class _PrimaryKeysDefinitionValidator extends import_js_service11.Service {
2303
+ _PrimaryKeysDefinitionValidator = class _PrimaryKeysDefinitionValidator extends import_js_service9.Service {
2726
2304
  /**
2727
2305
  * Validate.
2728
2306
  *
@@ -2767,19 +2345,17 @@ var init_primary_keys_definition_validator = __esm({
2767
2345
  });
2768
2346
 
2769
2347
  // src/definition/model/properties/properties-definition-validator.js
2770
- var import_js_service12, _PropertiesDefinitionValidator, PropertiesDefinitionValidator;
2348
+ var import_js_service10, _PropertiesDefinitionValidator, PropertiesDefinitionValidator;
2771
2349
  var init_properties_definition_validator = __esm({
2772
2350
  "src/definition/model/properties/properties-definition-validator.js"() {
2773
2351
  "use strict";
2774
- import_js_service12 = require("@e22m4u/js-service");
2352
+ import_js_service10 = require("@e22m4u/js-service");
2775
2353
  init_data_type();
2776
2354
  init_utils();
2777
2355
  init_property_uniqueness();
2778
2356
  init_errors();
2779
- init_property_validator2();
2780
- init_property_transformer2();
2781
2357
  init_primary_keys_definition_validator();
2782
- _PropertiesDefinitionValidator = class _PropertiesDefinitionValidator extends import_js_service12.Service {
2358
+ _PropertiesDefinitionValidator = class _PropertiesDefinitionValidator extends import_js_service10.Service {
2783
2359
  /**
2784
2360
  * Validate.
2785
2361
  *
@@ -2969,98 +2545,6 @@ var init_properties_definition_validator = __esm({
2969
2545
  propName,
2970
2546
  modelName
2971
2547
  );
2972
- if (propDef.validate != null) {
2973
- const propertyValidatorRegistry = this.getService(
2974
- PropertyValidatorRegistry
2975
- );
2976
- if (propDef.validate && typeof propDef.validate === "string") {
2977
- if (!propertyValidatorRegistry.hasValidator(propDef.validate))
2978
- throw new InvalidArgumentError(
2979
- "The property validator %v is not found.",
2980
- propDef.validate
2981
- );
2982
- } else if (propDef.validate && typeof propDef.validate === "function") {
2983
- } else if (Array.isArray(propDef.validate)) {
2984
- for (const validatorOrName of propDef.validate) {
2985
- if (validatorOrName && typeof validatorOrName === "string") {
2986
- if (!propertyValidatorRegistry.hasValidator(validatorOrName))
2987
- throw new InvalidArgumentError(
2988
- "The property validator %v is not found.",
2989
- validatorOrName
2990
- );
2991
- } else if (validatorOrName && typeof validatorOrName === "function") {
2992
- } else {
2993
- throw new InvalidArgumentError(
2994
- 'The provided option "validate" for the property %v in the model %v has an Array value that should contain validator names or validator functions, but %v was given.',
2995
- propName,
2996
- modelName,
2997
- validatorOrName
2998
- );
2999
- }
3000
- }
3001
- } else if (typeof propDef.validate === "object") {
3002
- Object.keys(propDef.validate).forEach((validatorName) => {
3003
- if (!propertyValidatorRegistry.hasValidator(validatorName))
3004
- throw new InvalidArgumentError(
3005
- "The property validator %v is not found.",
3006
- validatorName
3007
- );
3008
- });
3009
- } else {
3010
- throw new InvalidArgumentError(
3011
- 'The provided option "validate" for the property %v in the model %v should be either a validator name, a validator function, an array of validator names or functions, or an object mapping validator names to their arguments, but %v was given.',
3012
- propName,
3013
- modelName,
3014
- propDef.validate
3015
- );
3016
- }
3017
- }
3018
- if (propDef.transform != null) {
3019
- const propertyTransformerRegistry = this.getService(
3020
- PropertyTransformerRegistry
3021
- );
3022
- if (propDef.transform && typeof propDef.transform === "string") {
3023
- if (!propertyTransformerRegistry.hasTransformer(propDef.transform))
3024
- throw new InvalidArgumentError(
3025
- "The property transformer %v is not found.",
3026
- propDef.transform
3027
- );
3028
- } else if (propDef.transform && typeof propDef.transform === "function") {
3029
- } else if (Array.isArray(propDef.transform)) {
3030
- for (const transformerOrName of propDef.transform) {
3031
- if (transformerOrName && typeof transformerOrName === "string") {
3032
- if (!propertyTransformerRegistry.hasTransformer(transformerOrName))
3033
- throw new InvalidArgumentError(
3034
- "The property transformer %v is not found.",
3035
- transformerOrName
3036
- );
3037
- } else if (transformerOrName && typeof transformerOrName === "function") {
3038
- } else {
3039
- throw new InvalidArgumentError(
3040
- 'The provided option "transform" for the property %v in the model %v has an Array value that should contain transformer names or transformer functions, but %v was given.',
3041
- propName,
3042
- modelName,
3043
- transformerOrName
3044
- );
3045
- }
3046
- }
3047
- } else if (typeof propDef.transform === "object") {
3048
- Object.keys(propDef.transform).forEach((transformerName) => {
3049
- if (!propertyTransformerRegistry.hasTransformer(transformerName))
3050
- throw new InvalidArgumentError(
3051
- "The property transformer %v is not found.",
3052
- transformerName
3053
- );
3054
- });
3055
- } else {
3056
- throw new InvalidArgumentError(
3057
- 'The provided option "transform" for the property %v in the model %v should be either a transformer name, a transformer function, an array of transformer names or functions, or an object mapping transformer names to their arguments, but %v was given.',
3058
- propName,
3059
- modelName,
3060
- propDef.transform
3061
- );
3062
- }
3063
- }
3064
2548
  if (propDef.unique) {
3065
2549
  if (typeof propDef.unique !== "boolean" && !Object.values(PropertyUniqueness).includes(propDef.unique)) {
3066
2550
  throw new InvalidArgumentError(
@@ -3092,8 +2576,6 @@ var init_properties = __esm({
3092
2576
  init_data_type();
3093
2577
  init_property_definition();
3094
2578
  init_property_uniqueness();
3095
- init_property_validator2();
3096
- init_property_transformer2();
3097
2579
  init_property_uniqueness_validator();
3098
2580
  init_properties_definition_validator();
3099
2581
  init_primary_keys_definition_validator();
@@ -3107,284 +2589,31 @@ var init_model_definition = __esm({
3107
2589
  }
3108
2590
  });
3109
2591
 
3110
- // src/definition/model/model-data-validator.js
3111
- var import_js_service13, import_js_empty_values3, _ModelDataValidator, ModelDataValidator;
3112
- var init_model_data_validator = __esm({
3113
- "src/definition/model/model-data-validator.js"() {
2592
+ // src/definition/model/model-data-sanitizer.js
2593
+ var import_js_service11, _ModelDataSanitizer, ModelDataSanitizer;
2594
+ var init_model_data_sanitizer = __esm({
2595
+ "src/definition/model/model-data-sanitizer.js"() {
3114
2596
  "use strict";
3115
- import_js_service13 = require("@e22m4u/js-service");
3116
- init_properties();
3117
- init_utils();
3118
- init_utils();
3119
- import_js_empty_values3 = require("@e22m4u/js-empty-values");
2597
+ import_js_service11 = require("@e22m4u/js-service");
3120
2598
  init_errors();
3121
- init_properties();
3122
2599
  init_model_definition_utils();
3123
- _ModelDataValidator = class _ModelDataValidator extends import_js_service13.Service {
2600
+ _ModelDataSanitizer = class _ModelDataSanitizer extends import_js_service11.Service {
3124
2601
  /**
3125
2602
  * Validate.
3126
2603
  *
3127
2604
  * @param {string} modelName
3128
2605
  * @param {object} modelData
3129
- * @param {boolean} isPartial
3130
- * @returns {undefined}
2606
+ * @returns {object}
3131
2607
  */
3132
- validate(modelName, modelData, isPartial = false) {
3133
- if (!isPureObject(modelData))
2608
+ sanitize(modelName, modelData) {
2609
+ if (!modelName || typeof modelName !== "string")
3134
2610
  throw new InvalidArgumentError(
3135
- "The data of the model %v should be an Object, but %v was given.",
3136
- modelName,
3137
- modelData
3138
- );
3139
- const propDefs = this.getService(
3140
- ModelDefinitionUtils
3141
- ).getPropertiesDefinitionInBaseModelHierarchy(modelName);
3142
- const propNames = Object.keys(isPartial ? modelData : propDefs);
3143
- propNames.forEach((propName) => {
3144
- const propDef = propDefs[propName];
3145
- if (!propDef) return;
3146
- this._validatePropertyValue(
3147
- modelName,
3148
- propName,
3149
- propDef,
3150
- modelData[propName]
3151
- );
3152
- });
3153
- }
3154
- /**
3155
- * Validate property value.
3156
- *
3157
- * @param {string} modelName
3158
- * @param {string} propName
3159
- * @param {string|object} propDef
3160
- * @param {*} propValue
3161
- * @returns {undefined}
3162
- */
3163
- _validatePropertyValue(modelName, propName, propDef, propValue) {
3164
- const propType = this.getService(ModelDefinitionUtils).getDataTypeFromPropertyDefinition(
3165
- propDef
3166
- );
3167
- const isEmpty = this.getService(import_js_empty_values3.EmptyValuesService).isEmptyByType(
3168
- propType,
3169
- propValue
3170
- );
3171
- if (isEmpty) {
3172
- const isRequired = typeof propDef === "string" ? false : Boolean(propDef.required);
3173
- if (!isRequired) return;
3174
- throw new InvalidArgumentError(
3175
- "The property %v of the model %v is required, but %v was given.",
3176
- propName,
3177
- modelName,
3178
- propValue
3179
- );
3180
- }
3181
- this._validateValueByPropertyType(modelName, propName, propDef, propValue);
3182
- this._validateValueByPropertyValidators(
3183
- modelName,
3184
- propName,
3185
- propDef,
3186
- propValue
3187
- );
3188
- }
3189
- /**
3190
- * Validate value by property type.
3191
- *
3192
- * @param {string} modelName
3193
- * @param {string} propName
3194
- * @param {string|object} propDef
3195
- * @param {*} propValue
3196
- * @param {boolean} isArrayValue
3197
- * @returns {undefined}
3198
- */
3199
- _validateValueByPropertyType(modelName, propName, propDef, propValue, isArrayValue = false) {
3200
- var _a;
3201
- let expectingType;
3202
- if (isArrayValue) {
3203
- if (typeof propDef === "object") {
3204
- expectingType = (_a = propDef.itemType) != null ? _a : DataType.ANY;
3205
- } else {
3206
- expectingType = DataType.ANY;
3207
- }
3208
- } else {
3209
- expectingType = typeof propDef !== "string" ? propDef.type : propDef;
3210
- }
3211
- const createError = /* @__PURE__ */ __name((expected) => {
3212
- const pattern = isArrayValue ? "The array property %v of the model %v must have %s element, but %s was given." : "The property %v of the model %v must have %s, but %s was given.";
3213
- const ctorName = getCtorName(propValue);
3214
- const givenStr = ctorName != null ? ctorName : typeof propValue;
3215
- return new InvalidArgumentError(
3216
- pattern,
3217
- propName,
3218
- modelName,
3219
- expected,
3220
- givenStr
3221
- );
3222
- }, "createError");
3223
- switch (expectingType) {
3224
- // STRING
3225
- case DataType.STRING:
3226
- if (typeof propValue !== "string") throw createError("a String");
3227
- break;
3228
- // NUMBER
3229
- case DataType.NUMBER:
3230
- if (typeof propValue !== "number") throw createError("a Number");
3231
- break;
3232
- // BOOLEAN
3233
- case DataType.BOOLEAN:
3234
- if (typeof propValue !== "boolean") throw createError("a Boolean");
3235
- break;
3236
- // ARRAY
3237
- case DataType.ARRAY:
3238
- if (!Array.isArray(propValue)) throw createError("an Array");
3239
- propValue.forEach(
3240
- (value) => this._validateValueByPropertyType(
3241
- modelName,
3242
- propName,
3243
- propDef,
3244
- value,
3245
- true
3246
- )
3247
- );
3248
- break;
3249
- // OBJECT
3250
- case DataType.OBJECT: {
3251
- if (!isPureObject(propValue)) throw createError("an Object");
3252
- if (typeof propDef === "object") {
3253
- const modelOptionField = isArrayValue ? "itemModel" : "model";
3254
- const modelOptionValue = propDef[modelOptionField];
3255
- if (modelOptionValue) this.validate(modelOptionValue, propValue);
3256
- }
3257
- break;
3258
- }
3259
- }
3260
- }
3261
- /**
3262
- * Validate value by property validators.
3263
- *
3264
- * @param {string} modelName
3265
- * @param {string} propName
3266
- * @param {string|object} propDef
3267
- * @param {*} propValue
3268
- * @returns {undefined}
3269
- */
3270
- _validateValueByPropertyValidators(modelName, propName, propDef, propValue) {
3271
- if (typeof propDef === "string" || propDef.validate == null) return;
3272
- const validateDef = propDef.validate;
3273
- const validatorRegistry = this.getService(PropertyValidatorRegistry);
3274
- const createError = /* @__PURE__ */ __name((validatorName) => {
3275
- if (validatorName) {
3276
- return new InvalidArgumentError(
3277
- "The property %v of the model %v has the invalid value %v that caught by the property validator %v.",
3278
- propName,
3279
- modelName,
3280
- propValue,
3281
- validatorName
3282
- );
3283
- } else {
3284
- return new InvalidArgumentError(
3285
- "The property %v of the model %v has the invalid value %v that caught by a property validator.",
3286
- propName,
3287
- modelName,
3288
- propValue
3289
- );
3290
- }
3291
- }, "createError");
3292
- const validateBy = /* @__PURE__ */ __name((validatorOrName, validatorOptions = void 0) => {
3293
- let validatorName, validatorFn;
3294
- if (typeof validatorOrName === "string") {
3295
- validatorName = validatorOrName;
3296
- validatorFn = validatorRegistry.getValidator(validatorName);
3297
- } else if (typeof validatorOrName === "function") {
3298
- validatorName = validatorOrName.name && validatorOrName.name !== "validate" ? validatorOrName.name : void 0;
3299
- validatorFn = validatorOrName;
3300
- } else {
3301
- throw new InvalidArgumentError(
3302
- "Validator must be a non-empty String or a Function, but %v was given.",
3303
- validatorOrName
3304
- );
3305
- }
3306
- const context = { validatorName, modelName, propName };
3307
- const valid = validatorFn(propValue, validatorOptions, context);
3308
- if (valid instanceof Promise) {
3309
- if (validatorName) {
3310
- throw new InvalidArgumentError(
3311
- "Asynchronous property validators are not supported, but the property %v of the model %v has the property validator %v that returns a Promise.",
3312
- propName,
3313
- modelName,
3314
- validatorName
3315
- );
3316
- } else {
3317
- throw new InvalidArgumentError(
3318
- "Asynchronous property validators are not supported, but the property %v of the model %v has a property validator that returns a Promise.",
3319
- propName,
3320
- modelName
3321
- );
3322
- }
3323
- } else if (valid !== true) {
3324
- throw createError(validatorName);
3325
- }
3326
- }, "validateBy");
3327
- if (validateDef && typeof validateDef === "string") {
3328
- validateBy(validateDef);
3329
- } else if (validateDef && typeof validateDef === "function") {
3330
- validateBy(validateDef);
3331
- } else if (Array.isArray(validateDef)) {
3332
- validateDef.forEach((validatorOrName) => {
3333
- if (!validatorOrName || typeof validatorOrName !== "string" && typeof validatorOrName !== "function") {
3334
- throw new InvalidArgumentError(
3335
- 'The provided option "validate" for the property %v in the model %v has an Array value that should contain validator names or validator functions, but %v was given.',
3336
- propName,
3337
- modelName,
3338
- validatorOrName
3339
- );
3340
- }
3341
- validateBy(validatorOrName);
3342
- });
3343
- } else if (validateDef !== null && typeof validateDef === "object") {
3344
- Object.keys(validateDef).forEach((validatorName) => {
3345
- const validatorOptions = validateDef[validatorName];
3346
- validateBy(validatorName, validatorOptions);
3347
- });
3348
- } else {
3349
- throw new InvalidArgumentError(
3350
- 'The provided option "validate" for the property %v in the model %v should be either a validator name, a validator function, an array of validator names or functions, or an object mapping validator names to their arguments, but %v was given.',
3351
- propName,
3352
- modelName,
3353
- validateDef
3354
- );
3355
- }
3356
- }
3357
- };
3358
- __name(_ModelDataValidator, "ModelDataValidator");
3359
- ModelDataValidator = _ModelDataValidator;
3360
- }
3361
- });
3362
-
3363
- // src/definition/model/model-data-sanitizer.js
3364
- var import_js_service14, _ModelDataSanitizer, ModelDataSanitizer;
3365
- var init_model_data_sanitizer = __esm({
3366
- "src/definition/model/model-data-sanitizer.js"() {
3367
- "use strict";
3368
- import_js_service14 = require("@e22m4u/js-service");
3369
- init_errors();
3370
- init_model_definition_utils();
3371
- _ModelDataSanitizer = class _ModelDataSanitizer extends import_js_service14.Service {
3372
- /**
3373
- * Validate.
3374
- *
3375
- * @param {string} modelName
3376
- * @param {object} modelData
3377
- * @returns {object}
3378
- */
3379
- sanitize(modelName, modelData) {
3380
- if (!modelName || typeof modelName !== "string")
3381
- throw new InvalidArgumentError(
3382
- "The first argument of ModelDataSanitizer.sanitize should be a string, but %v was given.",
3383
- modelName
3384
- );
3385
- if (!modelData || typeof modelData !== "object")
3386
- throw new InvalidArgumentError(
3387
- "The second argument of ModelDataSanitizer.sanitize should be an Object, but %v was given.",
2611
+ "The first argument of ModelDataSanitizer.sanitize should be a string, but %v was given.",
2612
+ modelName
2613
+ );
2614
+ if (!modelData || typeof modelData !== "object")
2615
+ throw new InvalidArgumentError(
2616
+ "The second argument of ModelDataSanitizer.sanitize should be an Object, but %v was given.",
3388
2617
  modelData
3389
2618
  );
3390
2619
  return this.getService(
@@ -3397,147 +2626,16 @@ var init_model_data_sanitizer = __esm({
3397
2626
  }
3398
2627
  });
3399
2628
 
3400
- // src/definition/model/model-data-transformer.js
3401
- var import_js_service15, import_js_empty_values4, _ModelDataTransformer, ModelDataTransformer;
3402
- var init_model_data_transformer = __esm({
3403
- "src/definition/model/model-data-transformer.js"() {
3404
- "use strict";
3405
- import_js_service15 = require("@e22m4u/js-service");
3406
- init_utils();
3407
- init_utils();
3408
- init_utils();
3409
- import_js_empty_values4 = require("@e22m4u/js-empty-values");
3410
- init_errors();
3411
- init_model_definition_utils();
3412
- init_properties();
3413
- _ModelDataTransformer = class _ModelDataTransformer extends import_js_service15.Service {
3414
- /**
3415
- * Transform.
3416
- *
3417
- * @param {string} modelName
3418
- * @param {object} modelData
3419
- * @param {boolean} isPartial
3420
- * @returns {object|Promise<object>}
3421
- */
3422
- transform(modelName, modelData, isPartial = false) {
3423
- if (!isPureObject(modelData))
3424
- throw new InvalidArgumentError(
3425
- "The data of the model %v should be an Object, but %v was given.",
3426
- modelName,
3427
- modelData
3428
- );
3429
- const emptyValuesService = this.getService(import_js_empty_values4.EmptyValuesService);
3430
- const modelDefinitionUtils = this.getService(ModelDefinitionUtils);
3431
- const propDefs = modelDefinitionUtils.getPropertiesDefinitionInBaseModelHierarchy(
3432
- modelName
3433
- );
3434
- const propNames = Object.keys(isPartial ? modelData : propDefs);
3435
- const transformedData = cloneDeep(modelData);
3436
- return propNames.reduce((transformedDataOrPromise, propName) => {
3437
- const propDef = propDefs[propName];
3438
- if (!propDef) return transformedDataOrPromise;
3439
- const propType = modelDefinitionUtils.getDataTypeFromPropertyDefinition(propDef);
3440
- const propValue = modelData[propName];
3441
- const isEmpty = emptyValuesService.isEmptyByType(propType, propValue);
3442
- if (isEmpty) return transformedDataOrPromise;
3443
- const newPropValueOrPromise = this._transformPropertyValue(
3444
- modelName,
3445
- propName,
3446
- propDef,
3447
- propValue
3448
- );
3449
- return transformPromise(newPropValueOrPromise, (newPropValue) => {
3450
- return transformPromise(transformedDataOrPromise, (resolvedData) => {
3451
- if (newPropValue !== propValue) resolvedData[propName] = newPropValue;
3452
- return resolvedData;
3453
- });
3454
- });
3455
- }, transformedData);
3456
- }
3457
- /**
3458
- * Transform property value.
3459
- *
3460
- * @param {string} modelName
3461
- * @param {string} propName
3462
- * @param {string|object} propDef
3463
- * @param {*} propValue
3464
- * @returns {*|Promise<*>}
3465
- */
3466
- _transformPropertyValue(modelName, propName, propDef, propValue) {
3467
- if (typeof propDef === "string" || propDef.transform == null)
3468
- return propValue;
3469
- const transformDef = propDef.transform;
3470
- const transformerRegistry = this.getService(PropertyTransformerRegistry);
3471
- const transformFn = /* @__PURE__ */ __name((value, transformerOrName, transformerOptions = void 0) => {
3472
- let transformerName, transformerFn;
3473
- if (typeof transformerOrName === "string") {
3474
- transformerName = transformerOrName;
3475
- transformerFn = transformerRegistry.getTransformer(transformerName);
3476
- } else if (typeof transformerOrName === "function") {
3477
- transformerName = transformerOrName.name && transformerOrName.name !== "transform" ? transformerOrName.name : void 0;
3478
- transformerFn = transformerOrName;
3479
- } else {
3480
- throw new InvalidArgumentError(
3481
- "Transformer must be a non-empty String or a Function, but %v was given.",
3482
- transformerOrName
3483
- );
3484
- }
3485
- const context = { transformerName, modelName, propName };
3486
- return transformerFn(value, transformerOptions, context);
3487
- }, "transformFn");
3488
- if (transformDef && typeof transformDef === "string") {
3489
- return transformFn(propValue, transformDef);
3490
- } else if (transformDef && typeof transformDef === "function") {
3491
- return transformFn(propValue, transformDef);
3492
- } else if (Array.isArray(transformDef)) {
3493
- return transformDef.reduce((valueOrPromise, transformerOrName) => {
3494
- if (!transformerOrName || typeof transformerOrName !== "string" && typeof transformerOrName !== "function") {
3495
- throw new InvalidArgumentError(
3496
- 'The provided option "transform" for the property %v in the model %v has an Array value that should contain transformer names or transformer functions, but %v was given.',
3497
- propName,
3498
- modelName,
3499
- transformerOrName
3500
- );
3501
- }
3502
- return transformPromise(valueOrPromise, (value) => {
3503
- return transformFn(value, transformerOrName);
3504
- });
3505
- }, propValue);
3506
- } else if (transformDef !== null && typeof transformDef === "object") {
3507
- return Object.keys(transformDef).reduce(
3508
- (valueOrPromise, transformerName) => {
3509
- const transformerOptions = transformDef[transformerName];
3510
- return transformPromise(valueOrPromise, (value) => {
3511
- return transformFn(value, transformerName, transformerOptions);
3512
- });
3513
- },
3514
- propValue
3515
- );
3516
- } else {
3517
- throw new InvalidArgumentError(
3518
- 'The provided option "transform" for the property %v in the model %v should be either a transformer name, a transformer function, an array of transformer names or functions, or an object mapping transformer names to their arguments, but %v was given.',
3519
- propName,
3520
- modelName,
3521
- transformDef
3522
- );
3523
- }
3524
- }
3525
- };
3526
- __name(_ModelDataTransformer, "ModelDataTransformer");
3527
- ModelDataTransformer = _ModelDataTransformer;
3528
- }
3529
- });
3530
-
3531
2629
  // src/definition/model/model-definition-validator.js
3532
- var import_js_service16, _ModelDefinitionValidator, ModelDefinitionValidator;
2630
+ var import_js_service12, _ModelDefinitionValidator, ModelDefinitionValidator;
3533
2631
  var init_model_definition_validator = __esm({
3534
2632
  "src/definition/model/model-definition-validator.js"() {
3535
2633
  "use strict";
3536
- import_js_service16 = require("@e22m4u/js-service");
2634
+ import_js_service12 = require("@e22m4u/js-service");
3537
2635
  init_errors();
3538
2636
  init_relations();
3539
2637
  init_properties();
3540
- _ModelDefinitionValidator = class _ModelDefinitionValidator extends import_js_service16.Service {
2638
+ _ModelDefinitionValidator = class _ModelDefinitionValidator extends import_js_service12.Service {
3541
2639
  /**
3542
2640
  * Validate.
3543
2641
  *
@@ -3612,22 +2710,20 @@ var init_model = __esm({
3612
2710
  init_relations();
3613
2711
  init_properties();
3614
2712
  init_model_definition();
3615
- init_model_data_validator();
3616
2713
  init_model_data_sanitizer();
3617
- init_model_data_transformer();
3618
2714
  init_model_definition_utils();
3619
2715
  init_model_definition_validator();
3620
2716
  }
3621
2717
  });
3622
2718
 
3623
2719
  // src/definition/datasource/datasource-definition-validator.js
3624
- var import_js_service17, _DatasourceDefinitionValidator, DatasourceDefinitionValidator;
2720
+ var import_js_service13, _DatasourceDefinitionValidator, DatasourceDefinitionValidator;
3625
2721
  var init_datasource_definition_validator = __esm({
3626
2722
  "src/definition/datasource/datasource-definition-validator.js"() {
3627
2723
  "use strict";
3628
- import_js_service17 = require("@e22m4u/js-service");
2724
+ import_js_service13 = require("@e22m4u/js-service");
3629
2725
  init_errors();
3630
- _DatasourceDefinitionValidator = class _DatasourceDefinitionValidator extends import_js_service17.Service {
2726
+ _DatasourceDefinitionValidator = class _DatasourceDefinitionValidator extends import_js_service13.Service {
3631
2727
  /**
3632
2728
  * Validate.
3633
2729
  *
@@ -3676,15 +2772,15 @@ var init_definition = __esm({
3676
2772
  });
3677
2773
 
3678
2774
  // src/filter/fields-clause-tool.js
3679
- var import_js_service18, _FieldsClauseTool, FieldsClauseTool;
2775
+ var import_js_service14, _FieldsClauseTool, FieldsClauseTool;
3680
2776
  var init_fields_clause_tool = __esm({
3681
2777
  "src/filter/fields-clause-tool.js"() {
3682
2778
  "use strict";
3683
- import_js_service18 = require("@e22m4u/js-service");
2779
+ import_js_service14 = require("@e22m4u/js-service");
3684
2780
  init_utils();
3685
2781
  init_errors();
3686
2782
  init_definition();
3687
- _FieldsClauseTool = class _FieldsClauseTool extends import_js_service18.Service {
2783
+ _FieldsClauseTool = class _FieldsClauseTool extends import_js_service14.Service {
3688
2784
  /**
3689
2785
  * Filter.
3690
2786
  *
@@ -3768,15 +2864,15 @@ var init_fields_clause_tool = __esm({
3768
2864
  });
3769
2865
 
3770
2866
  // src/adapter/decorator/inclusion-decorator.js
3771
- var import_js_service19, _InclusionDecorator, InclusionDecorator;
2867
+ var import_js_service15, _InclusionDecorator, InclusionDecorator;
3772
2868
  var init_inclusion_decorator = __esm({
3773
2869
  "src/adapter/decorator/inclusion-decorator.js"() {
3774
2870
  "use strict";
3775
2871
  init_adapter();
3776
- import_js_service19 = require("@e22m4u/js-service");
2872
+ import_js_service15 = require("@e22m4u/js-service");
3777
2873
  init_filter();
3778
2874
  init_errors();
3779
- _InclusionDecorator = class _InclusionDecorator extends import_js_service19.Service {
2875
+ _InclusionDecorator = class _InclusionDecorator extends import_js_service15.Service {
3780
2876
  /**
3781
2877
  * Decorate.
3782
2878
  *
@@ -3857,15 +2953,15 @@ var init_inclusion_decorator = __esm({
3857
2953
  });
3858
2954
 
3859
2955
  // src/adapter/decorator/default-values-decorator.js
3860
- var import_js_service20, _DefaultValuesDecorator, DefaultValuesDecorator;
2956
+ var import_js_service16, _DefaultValuesDecorator, DefaultValuesDecorator;
3861
2957
  var init_default_values_decorator = __esm({
3862
2958
  "src/adapter/decorator/default-values-decorator.js"() {
3863
2959
  "use strict";
3864
2960
  init_adapter();
3865
- import_js_service20 = require("@e22m4u/js-service");
2961
+ import_js_service16 = require("@e22m4u/js-service");
3866
2962
  init_errors();
3867
2963
  init_definition();
3868
- _DefaultValuesDecorator = class _DefaultValuesDecorator extends import_js_service20.Service {
2964
+ _DefaultValuesDecorator = class _DefaultValuesDecorator extends import_js_service16.Service {
3869
2965
  /**
3870
2966
  * Decorate.
3871
2967
  *
@@ -3922,15 +3018,15 @@ var init_default_values_decorator = __esm({
3922
3018
  });
3923
3019
 
3924
3020
  // src/adapter/decorator/data-sanitizing-decorator.js
3925
- var import_js_service21, _DataSanitizingDecorator, DataSanitizingDecorator;
3021
+ var import_js_service17, _DataSanitizingDecorator, DataSanitizingDecorator;
3926
3022
  var init_data_sanitizing_decorator = __esm({
3927
3023
  "src/adapter/decorator/data-sanitizing-decorator.js"() {
3928
3024
  "use strict";
3929
3025
  init_adapter();
3930
- import_js_service21 = require("@e22m4u/js-service");
3026
+ import_js_service17 = require("@e22m4u/js-service");
3931
3027
  init_errors();
3932
3028
  init_definition();
3933
- _DataSanitizingDecorator = class _DataSanitizingDecorator extends import_js_service21.Service {
3029
+ _DataSanitizingDecorator = class _DataSanitizingDecorator extends import_js_service17.Service {
3934
3030
  /**
3935
3031
  * Decorate.
3936
3032
  *
@@ -3976,70 +3072,16 @@ var init_data_sanitizing_decorator = __esm({
3976
3072
  }
3977
3073
  });
3978
3074
 
3979
- // src/adapter/decorator/data-validation-decorator.js
3980
- var import_js_service22, _DataValidationDecorator, DataValidationDecorator;
3981
- var init_data_validation_decorator = __esm({
3982
- "src/adapter/decorator/data-validation-decorator.js"() {
3983
- "use strict";
3984
- init_adapter();
3985
- import_js_service22 = require("@e22m4u/js-service");
3986
- init_errors();
3987
- init_definition();
3988
- _DataValidationDecorator = class _DataValidationDecorator extends import_js_service22.Service {
3989
- /**
3990
- * Decorate.
3991
- *
3992
- * @param {Adapter} adapter
3993
- */
3994
- decorate(adapter) {
3995
- if (!adapter || !(adapter instanceof Adapter))
3996
- throw new InvalidArgumentError(
3997
- "The first argument of DataValidationDecorator.decorate should be an Adapter instance, but %v was given.",
3998
- adapter
3999
- );
4000
- const validator = this.getService(ModelDataValidator);
4001
- const create = adapter.create;
4002
- adapter.create = function(modelName, modelData, filter) {
4003
- validator.validate(modelName, modelData);
4004
- return create.call(this, modelName, modelData, filter);
4005
- };
4006
- const replaceById = adapter.replaceById;
4007
- adapter.replaceById = function(modelName, id, modelData, filter) {
4008
- validator.validate(modelName, modelData);
4009
- return replaceById.call(this, modelName, id, modelData, filter);
4010
- };
4011
- const replaceOrCreate = adapter.replaceOrCreate;
4012
- adapter.replaceOrCreate = function(modelName, modelData, filter) {
4013
- validator.validate(modelName, modelData);
4014
- return replaceOrCreate.call(this, modelName, modelData, filter);
4015
- };
4016
- const patch = adapter.patch;
4017
- adapter.patch = function(modelName, modelData, where) {
4018
- validator.validate(modelName, modelData, true);
4019
- return patch.call(this, modelName, modelData, where);
4020
- };
4021
- const patchById = adapter.patchById;
4022
- adapter.patchById = function(modelName, id, modelData, filter) {
4023
- validator.validate(modelName, modelData, true);
4024
- return patchById.call(this, modelName, id, modelData, filter);
4025
- };
4026
- }
4027
- };
4028
- __name(_DataValidationDecorator, "DataValidationDecorator");
4029
- DataValidationDecorator = _DataValidationDecorator;
4030
- }
4031
- });
4032
-
4033
3075
  // src/adapter/decorator/fields-filtering-decorator.js
4034
- var import_js_service23, _FieldsFilteringDecorator, FieldsFilteringDecorator;
3076
+ var import_js_service18, _FieldsFilteringDecorator, FieldsFilteringDecorator;
4035
3077
  var init_fields_filtering_decorator = __esm({
4036
3078
  "src/adapter/decorator/fields-filtering-decorator.js"() {
4037
3079
  "use strict";
4038
3080
  init_adapter();
4039
- import_js_service23 = require("@e22m4u/js-service");
3081
+ import_js_service18 = require("@e22m4u/js-service");
4040
3082
  init_filter();
4041
3083
  init_errors();
4042
- _FieldsFilteringDecorator = class _FieldsFilteringDecorator extends import_js_service23.Service {
3084
+ _FieldsFilteringDecorator = class _FieldsFilteringDecorator extends import_js_service18.Service {
4043
3085
  /**
4044
3086
  * Decorate.
4045
3087
  *
@@ -4113,70 +3155,16 @@ var init_fields_filtering_decorator = __esm({
4113
3155
  }
4114
3156
  });
4115
3157
 
4116
- // src/adapter/decorator/data-transformation-decorator.js
4117
- var import_js_service24, _DataTransformationDecorator, DataTransformationDecorator;
4118
- var init_data_transformation_decorator = __esm({
4119
- "src/adapter/decorator/data-transformation-decorator.js"() {
4120
- "use strict";
4121
- init_adapter();
4122
- import_js_service24 = require("@e22m4u/js-service");
4123
- init_errors();
4124
- init_definition();
4125
- _DataTransformationDecorator = class _DataTransformationDecorator extends import_js_service24.Service {
4126
- /**
4127
- * Decorate.
4128
- *
4129
- * @param {Adapter} adapter
4130
- */
4131
- decorate(adapter) {
4132
- if (!adapter || !(adapter instanceof Adapter))
4133
- throw new InvalidArgumentError(
4134
- "The first argument of DataTransformerDecorator.decorate should be an Adapter instance, but %v was given.",
4135
- adapter
4136
- );
4137
- const transformer = this.getService(ModelDataTransformer);
4138
- const create = adapter.create;
4139
- adapter.create = async function(modelName, modelData, filter) {
4140
- modelData = await transformer.transform(modelName, modelData);
4141
- return create.call(this, modelName, modelData, filter);
4142
- };
4143
- const replaceById = adapter.replaceById;
4144
- adapter.replaceById = async function(modelName, id, modelData, filter) {
4145
- modelData = await transformer.transform(modelName, modelData);
4146
- return replaceById.call(this, modelName, id, modelData, filter);
4147
- };
4148
- const replaceOrCreate = adapter.replaceOrCreate;
4149
- adapter.replaceOrCreate = async function(modelName, modelData, filter) {
4150
- modelData = await transformer.transform(modelName, modelData);
4151
- return replaceOrCreate.call(this, modelName, modelData, filter);
4152
- };
4153
- const patch = adapter.patch;
4154
- adapter.patch = async function(modelName, modelData, where) {
4155
- modelData = await transformer.transform(modelName, modelData, true);
4156
- return patch.call(this, modelName, modelData, where);
4157
- };
4158
- const patchById = adapter.patchById;
4159
- adapter.patchById = async function(modelName, id, modelData, filter) {
4160
- modelData = await transformer.transform(modelName, modelData, true);
4161
- return patchById.call(this, modelName, id, modelData, filter);
4162
- };
4163
- }
4164
- };
4165
- __name(_DataTransformationDecorator, "DataTransformationDecorator");
4166
- DataTransformationDecorator = _DataTransformationDecorator;
4167
- }
4168
- });
4169
-
4170
3158
  // src/adapter/decorator/property-uniqueness-decorator.js
4171
- var import_js_service25, _PropertyUniquenessDecorator, PropertyUniquenessDecorator;
3159
+ var import_js_service19, _PropertyUniquenessDecorator, PropertyUniquenessDecorator;
4172
3160
  var init_property_uniqueness_decorator = __esm({
4173
3161
  "src/adapter/decorator/property-uniqueness-decorator.js"() {
4174
3162
  "use strict";
4175
3163
  init_adapter();
4176
- import_js_service25 = require("@e22m4u/js-service");
3164
+ import_js_service19 = require("@e22m4u/js-service");
4177
3165
  init_errors();
4178
3166
  init_definition();
4179
- _PropertyUniquenessDecorator = class _PropertyUniquenessDecorator extends import_js_service25.Service {
3167
+ _PropertyUniquenessDecorator = class _PropertyUniquenessDecorator extends import_js_service19.Service {
4180
3168
  /**
4181
3169
  * Decorate.
4182
3170
  *
@@ -4250,29 +3238,25 @@ var init_decorator = __esm({
4250
3238
  init_inclusion_decorator();
4251
3239
  init_default_values_decorator();
4252
3240
  init_data_sanitizing_decorator();
4253
- init_data_validation_decorator();
4254
3241
  init_fields_filtering_decorator();
4255
- init_data_transformation_decorator();
4256
3242
  init_property_uniqueness_decorator();
4257
3243
  }
4258
3244
  });
4259
3245
 
4260
3246
  // src/adapter/adapter.js
4261
- var import_js_service26, ADAPTER_CLASS_NAME, _Adapter, Adapter;
3247
+ var import_js_service20, ADAPTER_CLASS_NAME, _Adapter, Adapter;
4262
3248
  var init_adapter = __esm({
4263
3249
  "src/adapter/adapter.js"() {
4264
3250
  "use strict";
4265
- import_js_service26 = require("@e22m4u/js-service");
3251
+ import_js_service20 = require("@e22m4u/js-service");
4266
3252
  init_errors();
4267
3253
  init_decorator();
4268
3254
  init_decorator();
4269
3255
  init_decorator();
4270
3256
  init_decorator();
4271
3257
  init_decorator();
4272
- init_decorator();
4273
- init_decorator();
4274
3258
  ADAPTER_CLASS_NAME = "Adapter";
4275
- _Adapter = class _Adapter extends import_js_service26.Service {
3259
+ _Adapter = class _Adapter extends import_js_service20.Service {
4276
3260
  /**
4277
3261
  * Settings.
4278
3262
  *
@@ -4299,8 +3283,6 @@ var init_adapter = __esm({
4299
3283
  if (this.constructor !== _Adapter) {
4300
3284
  this.getService(DataSanitizingDecorator).decorate(this);
4301
3285
  this.getService(DefaultValuesDecorator).decorate(this);
4302
- this.getService(DataTransformationDecorator).decorate(this);
4303
- this.getService(DataValidationDecorator).decorate(this);
4304
3286
  this.getService(PropertyUniquenessDecorator).decorate(this);
4305
3287
  this.getService(FieldsFilteringDecorator).decorate(this);
4306
3288
  this.getService(InclusionDecorator).decorate(this);
@@ -4460,11 +3442,11 @@ var init_adapter = __esm({
4460
3442
  };
4461
3443
  __name(_Adapter, "Adapter");
4462
3444
  /**
4463
- * Kind.
3445
+ * Kinds.
4464
3446
  *
4465
- * @type {string}
3447
+ * @type {string[]}
4466
3448
  */
4467
- __publicField(_Adapter, "kinds", [...import_js_service26.Service.kinds, ADAPTER_CLASS_NAME]);
3449
+ __publicField(_Adapter, "kinds", [...import_js_service20.Service.kinds, ADAPTER_CLASS_NAME]);
4468
3450
  Adapter = _Adapter;
4469
3451
  }
4470
3452
  });
@@ -4523,10 +3505,9 @@ var init_memory_adapter = __esm({
4523
3505
  */
4524
3506
  _genNextIdValue(modelName, propName) {
4525
3507
  var _a;
4526
- const propType = this.getService(
4527
- ModelDefinitionUtils
4528
- ).getDataTypeByPropertyName(modelName, propName);
4529
- if (propType !== DataType.ANY && propType !== DataType.NUMBER)
3508
+ const modelUtils = this.getService(ModelDefinitionUtils);
3509
+ const propType = modelUtils.getDataTypeByPropertyName(modelName, propName);
3510
+ if (propType !== DataType.ANY && propType !== DataType.NUMBER) {
4530
3511
  throw new InvalidArgumentError(
4531
3512
  "The memory adapter able to generate only Number identifiers, but the primary key %v of the model %v is defined as %s. Do provide your own value for the %v property, or change the type in the primary key definition to a Number that will be generated automatically.",
4532
3513
  propName,
@@ -4534,16 +3515,34 @@ var init_memory_adapter = __esm({
4534
3515
  capitalize(propType),
4535
3516
  propName
4536
3517
  );
4537
- const tableName = this.getService(ModelDefinitionUtils).getTableNameByModelName(modelName);
4538
- const lastId = (_a = this._lastIds.get(tableName)) != null ? _a : 0;
4539
- const nextId = lastId + 1;
4540
- this._lastIds.set(tableName, nextId);
3518
+ }
3519
+ const tableName = modelUtils.getTableNameByModelName(modelName);
4541
3520
  const table = this._getTableOrCreate(modelName);
4542
- const existedIds = Array.from(table.keys());
4543
- if (existedIds.includes(nextId))
4544
- return this._genNextIdValue(modelName, propName);
3521
+ let nextId = (_a = this._lastIds.get(tableName)) != null ? _a : 0;
3522
+ do {
3523
+ nextId++;
3524
+ } while (table.has(nextId));
3525
+ this._lastIds.set(tableName, nextId);
4545
3526
  return nextId;
4546
3527
  }
3528
+ /**
3529
+ * Update last id value if needed.
3530
+ *
3531
+ * Если переданное значение последнего использованного
3532
+ * идентификатора больше текущего, то текущее значение
3533
+ * перезаписывается полученным.
3534
+ *
3535
+ * @param {string} modelName
3536
+ * @param {number} idValue
3537
+ */
3538
+ _updateLastIdValueIfNeeded(modelName, idValue) {
3539
+ var _a;
3540
+ const tableName = this.getService(ModelDefinitionUtils).getTableNameByModelName(modelName);
3541
+ const currentLastId = (_a = this._lastIds.get(tableName)) != null ? _a : 0;
3542
+ if (idValue > currentLastId) {
3543
+ this._lastIds.set(tableName, idValue);
3544
+ }
3545
+ }
4547
3546
  /**
4548
3547
  * Create
4549
3548
  *
@@ -4560,6 +3559,8 @@ var init_memory_adapter = __esm({
4560
3559
  let idValue = modelData[pkPropName];
4561
3560
  if (idValue == null || idValue === "" || idValue === 0) {
4562
3561
  idValue = this._genNextIdValue(modelName, pkPropName);
3562
+ } else if (typeof idValue === "number") {
3563
+ this._updateLastIdValueIfNeeded(modelName, idValue);
4563
3564
  }
4564
3565
  const table = this._getTableOrCreate(modelName);
4565
3566
  if (table.has(idValue))
@@ -4628,6 +3629,8 @@ var init_memory_adapter = __esm({
4628
3629
  let idValue = modelData[pkPropName];
4629
3630
  if (idValue == null || idValue === "" || idValue === 0) {
4630
3631
  idValue = this._genNextIdValue(modelName, pkPropName);
3632
+ } else if (typeof idValue === "number") {
3633
+ this._updateLastIdValueIfNeeded(modelName, idValue);
4631
3634
  }
4632
3635
  const table = this._getTableOrCreate(modelName);
4633
3636
  modelData = cloneDeep(modelData);
@@ -4873,16 +3876,16 @@ function findAdapterCtorInModule(module2) {
4873
3876
  }
4874
3877
  return adapterCtor;
4875
3878
  }
4876
- var import_js_service27, _AdapterLoader, AdapterLoader;
3879
+ var import_js_service21, _AdapterLoader, AdapterLoader;
4877
3880
  var init_adapter_loader = __esm({
4878
3881
  "src/adapter/adapter-loader.js"() {
4879
3882
  "use strict";
4880
3883
  init_adapter();
4881
- import_js_service27 = require("@e22m4u/js-service");
3884
+ import_js_service21 = require("@e22m4u/js-service");
4882
3885
  init_adapter();
4883
3886
  init_errors();
4884
3887
  init_();
4885
- _AdapterLoader = class _AdapterLoader extends import_js_service27.Service {
3888
+ _AdapterLoader = class _AdapterLoader extends import_js_service21.Service {
4886
3889
  /**
4887
3890
  * Load by name.
4888
3891
  *
@@ -4923,15 +3926,15 @@ var init_adapter_loader = __esm({
4923
3926
  });
4924
3927
 
4925
3928
  // src/adapter/adapter-registry.js
4926
- var import_js_service28, _AdapterRegistry, AdapterRegistry;
3929
+ var import_js_service22, _AdapterRegistry, AdapterRegistry;
4927
3930
  var init_adapter_registry = __esm({
4928
3931
  "src/adapter/adapter-registry.js"() {
4929
3932
  "use strict";
4930
3933
  init_adapter();
4931
- import_js_service28 = require("@e22m4u/js-service");
3934
+ import_js_service22 = require("@e22m4u/js-service");
4932
3935
  init_adapter_loader();
4933
3936
  init_definition();
4934
- _AdapterRegistry = class _AdapterRegistry extends import_js_service28.Service {
3937
+ _AdapterRegistry = class _AdapterRegistry extends import_js_service22.Service {
4935
3938
  /**
4936
3939
  * Adapters.
4937
3940
  *
@@ -4973,16 +3976,16 @@ var init_adapter2 = __esm({
4973
3976
  });
4974
3977
 
4975
3978
  // src/repository/repository.js
4976
- var import_js_service29, _Repository, Repository;
3979
+ var import_js_service23, _Repository, Repository;
4977
3980
  var init_repository = __esm({
4978
3981
  "src/repository/repository.js"() {
4979
3982
  "use strict";
4980
- import_js_service29 = require("@e22m4u/js-service");
3983
+ import_js_service23 = require("@e22m4u/js-service");
4981
3984
  init_adapter2();
4982
3985
  init_adapter2();
4983
3986
  init_errors();
4984
3987
  init_definition();
4985
- _Repository = class _Repository extends import_js_service29.Service {
3988
+ _Repository = class _Repository extends import_js_service23.Service {
4986
3989
  /**
4987
3990
  * Model name.
4988
3991
  *
@@ -5176,15 +4179,15 @@ var init_repository = __esm({
5176
4179
  });
5177
4180
 
5178
4181
  // src/repository/repository-registry.js
5179
- var import_js_service30, _RepositoryRegistry, RepositoryRegistry;
4182
+ var import_js_service24, _RepositoryRegistry, RepositoryRegistry;
5180
4183
  var init_repository_registry = __esm({
5181
4184
  "src/repository/repository-registry.js"() {
5182
4185
  "use strict";
5183
- import_js_service30 = require("@e22m4u/js-service");
4186
+ import_js_service24 = require("@e22m4u/js-service");
5184
4187
  init_repository();
5185
4188
  init_utils();
5186
4189
  init_errors();
5187
- _RepositoryRegistry = class _RepositoryRegistry extends import_js_service30.Service {
4190
+ _RepositoryRegistry = class _RepositoryRegistry extends import_js_service24.Service {
5188
4191
  /**
5189
4192
  * Repositories.
5190
4193
  *
@@ -5242,17 +4245,17 @@ var init_repository2 = __esm({
5242
4245
  });
5243
4246
 
5244
4247
  // src/relations/has-one-resolver.js
5245
- var import_js_service31, _HasOneResolver, HasOneResolver;
4248
+ var import_js_service25, _HasOneResolver, HasOneResolver;
5246
4249
  var init_has_one_resolver = __esm({
5247
4250
  "src/relations/has-one-resolver.js"() {
5248
4251
  "use strict";
5249
- import_js_service31 = require("@e22m4u/js-service");
4252
+ import_js_service25 = require("@e22m4u/js-service");
5250
4253
  init_utils();
5251
4254
  init_definition();
5252
4255
  init_errors();
5253
4256
  init_repository2();
5254
4257
  init_definition();
5255
- _HasOneResolver = class _HasOneResolver extends import_js_service31.Service {
4258
+ _HasOneResolver = class _HasOneResolver extends import_js_service25.Service {
5256
4259
  /**
5257
4260
  * Include to.
5258
4261
  *
@@ -5497,17 +4500,17 @@ var init_has_one_resolver = __esm({
5497
4500
  });
5498
4501
 
5499
4502
  // src/relations/has-many-resolver.js
5500
- var import_js_service32, _HasManyResolver, HasManyResolver;
4503
+ var import_js_service26, _HasManyResolver, HasManyResolver;
5501
4504
  var init_has_many_resolver = __esm({
5502
4505
  "src/relations/has-many-resolver.js"() {
5503
4506
  "use strict";
5504
- import_js_service32 = require("@e22m4u/js-service");
4507
+ import_js_service26 = require("@e22m4u/js-service");
5505
4508
  init_utils();
5506
4509
  init_definition();
5507
4510
  init_errors();
5508
4511
  init_repository2();
5509
4512
  init_definition();
5510
- _HasManyResolver = class _HasManyResolver extends import_js_service32.Service {
4513
+ _HasManyResolver = class _HasManyResolver extends import_js_service26.Service {
5511
4514
  /**
5512
4515
  * Include to.
5513
4516
  *
@@ -5762,17 +4765,17 @@ var init_has_many_resolver = __esm({
5762
4765
  });
5763
4766
 
5764
4767
  // src/relations/belongs-to-resolver.js
5765
- var import_js_service33, _BelongsToResolver, BelongsToResolver;
4768
+ var import_js_service27, _BelongsToResolver, BelongsToResolver;
5766
4769
  var init_belongs_to_resolver = __esm({
5767
4770
  "src/relations/belongs-to-resolver.js"() {
5768
4771
  "use strict";
5769
- import_js_service33 = require("@e22m4u/js-service");
4772
+ import_js_service27 = require("@e22m4u/js-service");
5770
4773
  init_utils();
5771
4774
  init_utils();
5772
4775
  init_errors();
5773
4776
  init_repository2();
5774
4777
  init_definition();
5775
- _BelongsToResolver = class _BelongsToResolver extends import_js_service33.Service {
4778
+ _BelongsToResolver = class _BelongsToResolver extends import_js_service27.Service {
5776
4779
  /**
5777
4780
  * Include to.
5778
4781
  *
@@ -5970,17 +4973,17 @@ var init_belongs_to_resolver = __esm({
5970
4973
  });
5971
4974
 
5972
4975
  // src/relations/references-many-resolver.js
5973
- var import_js_service34, _ReferencesManyResolver, ReferencesManyResolver;
4976
+ var import_js_service28, _ReferencesManyResolver, ReferencesManyResolver;
5974
4977
  var init_references_many_resolver = __esm({
5975
4978
  "src/relations/references-many-resolver.js"() {
5976
4979
  "use strict";
5977
- import_js_service34 = require("@e22m4u/js-service");
4980
+ import_js_service28 = require("@e22m4u/js-service");
5978
4981
  init_utils();
5979
4982
  init_utils();
5980
4983
  init_errors();
5981
4984
  init_repository2();
5982
4985
  init_definition();
5983
- _ReferencesManyResolver = class _ReferencesManyResolver extends import_js_service34.Service {
4986
+ _ReferencesManyResolver = class _ReferencesManyResolver extends import_js_service28.Service {
5984
4987
  /**
5985
4988
  * Include to.
5986
4989
  *
@@ -6082,11 +5085,11 @@ var init_relations2 = __esm({
6082
5085
  });
6083
5086
 
6084
5087
  // src/filter/include-clause-tool.js
6085
- var import_js_service35, _IncludeClauseTool, IncludeClauseTool;
5088
+ var import_js_service29, _IncludeClauseTool, IncludeClauseTool;
6086
5089
  var init_include_clause_tool = __esm({
6087
5090
  "src/filter/include-clause-tool.js"() {
6088
5091
  "use strict";
6089
- import_js_service35 = require("@e22m4u/js-service");
5092
+ import_js_service29 = require("@e22m4u/js-service");
6090
5093
  init_definition();
6091
5094
  init_relations2();
6092
5095
  init_relations2();
@@ -6098,7 +5101,7 @@ var init_include_clause_tool = __esm({
6098
5101
  init_fields_clause_tool();
6099
5102
  init_definition();
6100
5103
  init_relations2();
6101
- _IncludeClauseTool = class _IncludeClauseTool extends import_js_service35.Service {
5104
+ _IncludeClauseTool = class _IncludeClauseTool extends import_js_service29.Service {
6102
5105
  /**
6103
5106
  * Include to.
6104
5107
  *
@@ -6446,7 +5449,6 @@ __export(index_exports, {
6446
5449
  DataType: () => DataType,
6447
5450
  DatabaseSchema: () => DatabaseSchema,
6448
5451
  DatasourceDefinitionValidator: () => DatasourceDefinitionValidator,
6449
- DecoratorTargetType: () => DecoratorTargetType,
6450
5452
  DefinitionRegistry: () => DefinitionRegistry,
6451
5453
  FieldsClauseTool: () => FieldsClauseTool,
6452
5454
  HasManyResolver: () => HasManyResolver,
@@ -6455,8 +5457,6 @@ __export(index_exports, {
6455
5457
  InvalidArgumentError: () => InvalidArgumentError,
6456
5458
  InvalidOperatorValueError: () => InvalidOperatorValueError,
6457
5459
  ModelDataSanitizer: () => ModelDataSanitizer,
6458
- ModelDataTransformer: () => ModelDataTransformer,
6459
- ModelDataValidator: () => ModelDataValidator,
6460
5460
  ModelDefinitionUtils: () => ModelDefinitionUtils,
6461
5461
  ModelDefinitionValidator: () => ModelDefinitionValidator,
6462
5462
  NotImplementedError: () => NotImplementedError,
@@ -6464,10 +5464,8 @@ __export(index_exports, {
6464
5464
  OrderClauseTool: () => OrderClauseTool,
6465
5465
  PrimaryKeysDefinitionValidator: () => PrimaryKeysDefinitionValidator,
6466
5466
  PropertiesDefinitionValidator: () => PropertiesDefinitionValidator,
6467
- PropertyTransformerRegistry: () => PropertyTransformerRegistry,
6468
5467
  PropertyUniqueness: () => PropertyUniqueness,
6469
5468
  PropertyUniquenessValidator: () => PropertyUniquenessValidator,
6470
- PropertyValidatorRegistry: () => PropertyValidatorRegistry,
6471
5469
  ReferencesManyResolver: () => ReferencesManyResolver,
6472
5470
  RelationType: () => RelationType,
6473
5471
  RelationsDefinitionValidator: () => RelationsDefinitionValidator,
@@ -6478,19 +5476,15 @@ __export(index_exports, {
6478
5476
  capitalize: () => capitalize,
6479
5477
  cloneDeep: () => cloneDeep,
6480
5478
  excludeObjectKeys: () => excludeObjectKeys,
6481
- getCtorName: () => getCtorName,
6482
- getDecoratorTargetType: () => getDecoratorTargetType,
6483
5479
  getValueByPath: () => getValueByPath,
6484
- isCtor: () => isCtor,
6485
5480
  isDeepEqual: () => isDeepEqual,
5481
+ isPlainObject: () => isPlainObject,
6486
5482
  isPromise: () => isPromise,
6487
- isPureObject: () => isPureObject,
6488
5483
  likeToRegexp: () => likeToRegexp,
6489
5484
  modelNameToModelKey: () => modelNameToModelKey,
6490
5485
  selectObjectKeys: () => selectObjectKeys,
6491
5486
  singularize: () => singularize,
6492
- stringToRegexp: () => stringToRegexp,
6493
- transformPromise: () => transformPromise
5487
+ stringToRegexp: () => stringToRegexp
6494
5488
  });
6495
5489
  module.exports = __toCommonJS(index_exports);
6496
5490
  init_utils();
@@ -6499,11 +5493,11 @@ init_filter();
6499
5493
  init_adapter2();
6500
5494
 
6501
5495
  // src/database-schema.js
6502
- var import_js_service36 = require("@e22m4u/js-service");
5496
+ var import_js_service30 = require("@e22m4u/js-service");
6503
5497
  init_repository2();
6504
5498
  init_definition();
6505
5499
  init_repository2();
6506
- var _DatabaseSchema = class _DatabaseSchema extends import_js_service36.Service {
5500
+ var _DatabaseSchema = class _DatabaseSchema extends import_js_service30.Service {
6507
5501
  /**
6508
5502
  * Define datasource.
6509
5503
  *
@@ -6552,7 +5546,6 @@ init_repository2();
6552
5546
  DataType,
6553
5547
  DatabaseSchema,
6554
5548
  DatasourceDefinitionValidator,
6555
- DecoratorTargetType,
6556
5549
  DefinitionRegistry,
6557
5550
  FieldsClauseTool,
6558
5551
  HasManyResolver,
@@ -6561,8 +5554,6 @@ init_repository2();
6561
5554
  InvalidArgumentError,
6562
5555
  InvalidOperatorValueError,
6563
5556
  ModelDataSanitizer,
6564
- ModelDataTransformer,
6565
- ModelDataValidator,
6566
5557
  ModelDefinitionUtils,
6567
5558
  ModelDefinitionValidator,
6568
5559
  NotImplementedError,
@@ -6570,10 +5561,8 @@ init_repository2();
6570
5561
  OrderClauseTool,
6571
5562
  PrimaryKeysDefinitionValidator,
6572
5563
  PropertiesDefinitionValidator,
6573
- PropertyTransformerRegistry,
6574
5564
  PropertyUniqueness,
6575
5565
  PropertyUniquenessValidator,
6576
- PropertyValidatorRegistry,
6577
5566
  ReferencesManyResolver,
6578
5567
  RelationType,
6579
5568
  RelationsDefinitionValidator,
@@ -6584,17 +5573,13 @@ init_repository2();
6584
5573
  capitalize,
6585
5574
  cloneDeep,
6586
5575
  excludeObjectKeys,
6587
- getCtorName,
6588
- getDecoratorTargetType,
6589
5576
  getValueByPath,
6590
- isCtor,
6591
5577
  isDeepEqual,
5578
+ isPlainObject,
6592
5579
  isPromise,
6593
- isPureObject,
6594
5580
  likeToRegexp,
6595
5581
  modelNameToModelKey,
6596
5582
  selectObjectKeys,
6597
5583
  singularize,
6598
- stringToRegexp,
6599
- transformPromise
5584
+ stringToRegexp
6600
5585
  });