@datacapy/schema 0.1.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 (184) hide show
  1. package/LICENSE +29 -0
  2. package/README.md +113 -0
  3. package/dist/builder/builder-array.d.ts +11 -0
  4. package/dist/builder/builder-array.js +35 -0
  5. package/dist/builder/builder-array.js.map +1 -0
  6. package/dist/builder/builder-base.d.ts +25 -0
  7. package/dist/builder/builder-base.js +140 -0
  8. package/dist/builder/builder-base.js.map +1 -0
  9. package/dist/builder/builder-boolean.d.ts +5 -0
  10. package/dist/builder/builder-boolean.js +12 -0
  11. package/dist/builder/builder-boolean.js.map +1 -0
  12. package/dist/builder/builder-date.d.ts +5 -0
  13. package/dist/builder/builder-date.js +12 -0
  14. package/dist/builder/builder-date.js.map +1 -0
  15. package/dist/builder/builder-mixed.d.ts +7 -0
  16. package/dist/builder/builder-mixed.js +16 -0
  17. package/dist/builder/builder-mixed.js.map +1 -0
  18. package/dist/builder/builder-number.d.ts +5 -0
  19. package/dist/builder/builder-number.js +12 -0
  20. package/dist/builder/builder-number.js.map +1 -0
  21. package/dist/builder/builder-object.d.ts +17 -0
  22. package/dist/builder/builder-object.js +47 -0
  23. package/dist/builder/builder-object.js.map +1 -0
  24. package/dist/builder/builder-or.d.ts +9 -0
  25. package/dist/builder/builder-or.js +23 -0
  26. package/dist/builder/builder-or.js.map +1 -0
  27. package/dist/builder/builder-schema.d.ts +18 -0
  28. package/dist/builder/builder-schema.js +68 -0
  29. package/dist/builder/builder-schema.js.map +1 -0
  30. package/dist/builder/builder-string.d.ts +17 -0
  31. package/dist/builder/builder-string.js +106 -0
  32. package/dist/builder/builder-string.js.map +1 -0
  33. package/dist/builder/index.d.ts +14 -0
  34. package/dist/builder/index.js +28 -0
  35. package/dist/builder/index.js.map +1 -0
  36. package/dist/builder/schema-builder.d.ts +25 -0
  37. package/dist/builder/schema-builder.js +46 -0
  38. package/dist/builder/schema-builder.js.map +1 -0
  39. package/dist/config.d.ts +17 -0
  40. package/dist/config.js +3 -0
  41. package/dist/config.js.map +1 -0
  42. package/dist/encryption/encryption-service.d.ts +4 -0
  43. package/dist/encryption/encryption-service.js +3 -0
  44. package/dist/encryption/encryption-service.js.map +1 -0
  45. package/dist/encryption/index.d.ts +1 -0
  46. package/dist/encryption/index.js +18 -0
  47. package/dist/encryption/index.js.map +1 -0
  48. package/dist/filter/filter-abstract.d.ts +9 -0
  49. package/dist/filter/filter-abstract.js +11 -0
  50. package/dist/filter/filter-abstract.js.map +1 -0
  51. package/dist/filter/filter-callback.d.ts +6 -0
  52. package/dist/filter/filter-callback.js +18 -0
  53. package/dist/filter/filter-callback.js.map +1 -0
  54. package/dist/filter/filter-condition.d.ts +8 -0
  55. package/dist/filter/filter-condition.js +15 -0
  56. package/dist/filter/filter-condition.js.map +1 -0
  57. package/dist/filter/filter-default-value.d.ts +10 -0
  58. package/dist/filter/filter-default-value.js +29 -0
  59. package/dist/filter/filter-default-value.js.map +1 -0
  60. package/dist/filter/filter-lowercase.d.ts +6 -0
  61. package/dist/filter/filter-lowercase.js +17 -0
  62. package/dist/filter/filter-lowercase.js.map +1 -0
  63. package/dist/filter/filter-postcode.d.ts +7 -0
  64. package/dist/filter/filter-postcode.js +30 -0
  65. package/dist/filter/filter-postcode.js.map +1 -0
  66. package/dist/filter/filter-prepend-http.d.ts +6 -0
  67. package/dist/filter/filter-prepend-http.js +17 -0
  68. package/dist/filter/filter-prepend-http.js.map +1 -0
  69. package/dist/filter/filter-strip-html.d.ts +13 -0
  70. package/dist/filter/filter-strip-html.js +96 -0
  71. package/dist/filter/filter-strip-html.js.map +1 -0
  72. package/dist/filter/filter-trim.d.ts +6 -0
  73. package/dist/filter/filter-trim.js +17 -0
  74. package/dist/filter/filter-trim.js.map +1 -0
  75. package/dist/filter/filter-uppercase.d.ts +6 -0
  76. package/dist/filter/filter-uppercase.js +17 -0
  77. package/dist/filter/filter-uppercase.js.map +1 -0
  78. package/dist/filter/filter.d.ts +7 -0
  79. package/dist/filter/filter.js +59 -0
  80. package/dist/filter/filter.js.map +1 -0
  81. package/dist/filter/index.d.ts +9 -0
  82. package/dist/filter/index.js +26 -0
  83. package/dist/filter/index.js.map +1 -0
  84. package/dist/index.d.ts +18 -0
  85. package/dist/index.js +39 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/inquisitor.d.ts +9 -0
  88. package/dist/inquisitor.js +44 -0
  89. package/dist/inquisitor.js.map +1 -0
  90. package/dist/iterator.d.ts +70 -0
  91. package/dist/iterator.js +339 -0
  92. package/dist/iterator.js.map +1 -0
  93. package/dist/manager.d.ts +30 -0
  94. package/dist/manager.js +55 -0
  95. package/dist/manager.js.map +1 -0
  96. package/dist/processors/field-filter.d.ts +32 -0
  97. package/dist/processors/field-filter.js +114 -0
  98. package/dist/processors/field-filter.js.map +1 -0
  99. package/dist/processors/field-private-filter.d.ts +9 -0
  100. package/dist/processors/field-private-filter.js +84 -0
  101. package/dist/processors/field-private-filter.js.map +1 -0
  102. package/dist/processors/field-type-caster.d.ts +12 -0
  103. package/dist/processors/field-type-caster.js +89 -0
  104. package/dist/processors/field-type-caster.js.map +1 -0
  105. package/dist/processors/field-validator.d.ts +36 -0
  106. package/dist/processors/field-validator.js +171 -0
  107. package/dist/processors/field-validator.js.map +1 -0
  108. package/dist/processors/index.d.ts +5 -0
  109. package/dist/processors/index.js +22 -0
  110. package/dist/processors/index.js.map +1 -0
  111. package/dist/processors/transient-processor.d.ts +23 -0
  112. package/dist/processors/transient-processor.js +124 -0
  113. package/dist/processors/transient-processor.js.map +1 -0
  114. package/dist/schema.d.ts +104 -0
  115. package/dist/schema.js +400 -0
  116. package/dist/schema.js.map +1 -0
  117. package/dist/spec.d.ts +69 -0
  118. package/dist/spec.js +3 -0
  119. package/dist/spec.js.map +1 -0
  120. package/dist/type/PropsOf.d.ts +5 -0
  121. package/dist/type/PropsOf.js +3 -0
  122. package/dist/type/PropsOf.js.map +1 -0
  123. package/dist/type/index.d.ts +1 -0
  124. package/dist/type/index.js +18 -0
  125. package/dist/type/index.js.map +1 -0
  126. package/dist/types.d.ts +13 -0
  127. package/dist/types.js +21 -0
  128. package/dist/types.js.map +1 -0
  129. package/dist/utilities/collection.d.ts +10 -0
  130. package/dist/utilities/collection.js +41 -0
  131. package/dist/utilities/collection.js.map +1 -0
  132. package/dist/utilities/index.d.ts +4 -0
  133. package/dist/utilities/index.js +21 -0
  134. package/dist/utilities/index.js.map +1 -0
  135. package/dist/utilities/object-path-accessor.d.ts +16 -0
  136. package/dist/utilities/object-path-accessor.js +132 -0
  137. package/dist/utilities/object-path-accessor.js.map +1 -0
  138. package/dist/utilities/type-caster.d.ts +10 -0
  139. package/dist/utilities/type-caster.js +126 -0
  140. package/dist/utilities/type-caster.js.map +1 -0
  141. package/dist/utilities/utility.d.ts +8 -0
  142. package/dist/utilities/utility.js +53 -0
  143. package/dist/utilities/utility.js.map +1 -0
  144. package/dist/validator/index.d.ts +12 -0
  145. package/dist/validator/index.js +29 -0
  146. package/dist/validator/index.js.map +1 -0
  147. package/dist/validator/validator-callback.d.ts +6 -0
  148. package/dist/validator/validator-callback.js +15 -0
  149. package/dist/validator/validator-callback.js.map +1 -0
  150. package/dist/validator/validator-email.d.ts +5 -0
  151. package/dist/validator/validator-email.js +20 -0
  152. package/dist/validator/validator-email.js.map +1 -0
  153. package/dist/validator/validator-equality.d.ts +5 -0
  154. package/dist/validator/validator-equality.js +19 -0
  155. package/dist/validator/validator-equality.js.map +1 -0
  156. package/dist/validator/validator-in-array.d.ts +5 -0
  157. package/dist/validator/validator-in-array.js +17 -0
  158. package/dist/validator/validator-in-array.js.map +1 -0
  159. package/dist/validator/validator-interface.d.ts +5 -0
  160. package/dist/validator/validator-interface.js +3 -0
  161. package/dist/validator/validator-interface.js.map +1 -0
  162. package/dist/validator/validator-is-empty.d.ts +5 -0
  163. package/dist/validator/validator-is-empty.js +37 -0
  164. package/dist/validator/validator-is-empty.js.map +1 -0
  165. package/dist/validator/validator-not-empty.d.ts +5 -0
  166. package/dist/validator/validator-not-empty.js +21 -0
  167. package/dist/validator/validator-not-empty.js.map +1 -0
  168. package/dist/validator/validator-not-null.d.ts +5 -0
  169. package/dist/validator/validator-not-null.js +19 -0
  170. package/dist/validator/validator-not-null.js.map +1 -0
  171. package/dist/validator/validator-regex.d.ts +5 -0
  172. package/dist/validator/validator-regex.js +20 -0
  173. package/dist/validator/validator-regex.js.map +1 -0
  174. package/dist/validator/validator-required.d.ts +5 -0
  175. package/dist/validator/validator-required.js +18 -0
  176. package/dist/validator/validator-required.js.map +1 -0
  177. package/dist/validator/validator-value-length.d.ts +5 -0
  178. package/dist/validator/validator-value-length.js +39 -0
  179. package/dist/validator/validator-value-length.js.map +1 -0
  180. package/dist/validator/validator.d.ts +7 -0
  181. package/dist/validator/validator.js +72 -0
  182. package/dist/validator/validator.js.map +1 -0
  183. package/package.json +51 -0
  184. package/tsconfig.json +26 -0
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidatorInArray = void 0;
4
+ class ValidatorInArray {
5
+ validate(value, options) {
6
+ var name = options && options.label ? options.label : 'field';
7
+ var values = options && options.values ? options.values : [];
8
+ var message = options && options.message ? options.message : name + ' is invalid';
9
+ return (Array.isArray(values) && values.includes(value)) || message;
10
+ }
11
+ getName() {
12
+ return 'inArray';
13
+ }
14
+ }
15
+ exports.ValidatorInArray = ValidatorInArray;
16
+ exports.default = ValidatorInArray;
17
+ //# sourceMappingURL=validator-in-array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator-in-array.js","sourceRoot":"","sources":["../../src/validator/validator-in-array.ts"],"names":[],"mappings":";;;AAAA,MAAa,gBAAgB;IAC3B,QAAQ,CAAC,KAAU,EAAE,OAAQ;QAC3B,IAAI,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAA;QAC7D,IAAI,MAAM,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;QAC5D,IAAI,OAAO,GACT,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,aAAa,CAAA;QACrE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,CAAA;IACrE,CAAC;IAED,OAAO;QACL,OAAO,SAAS,CAAA;IAClB,CAAC;CACF;AAZD,4CAYC;AAED,kBAAe,gBAAgB,CAAA"}
@@ -0,0 +1,5 @@
1
+ interface ValidatorInterface {
2
+ validate(value: any, options?: any): boolean | [string];
3
+ getName(): string;
4
+ }
5
+ export default ValidatorInterface;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=validator-interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator-interface.js","sourceRoot":"","sources":["../../src/validator/validator-interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export declare class ValidatorIsEmpty {
2
+ validate(value: any, options?: any): any;
3
+ getName(): string;
4
+ }
5
+ export default ValidatorIsEmpty;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ValidatorIsEmpty = void 0;
7
+ const type_caster_1 = __importDefault(require("../utilities/type-caster"));
8
+ class ValidatorIsEmpty {
9
+ validate(value, options) {
10
+ const label = options && options.label ? options.label : 'field';
11
+ const message = options && options.message ? options.message : label + ' must be empty';
12
+ const allowZero = options && (options.allowZero || options.permissive);
13
+ const allowFalse = options && (options.allowFalse || options.permissive);
14
+ const valueType = value !== null && value !== undefined
15
+ ? type_caster_1.default.getType(value)
16
+ : undefined;
17
+ const isZero = valueType === Number && value === 0;
18
+ const isFalse = valueType === Boolean && value === false;
19
+ const isEmptyString = valueType === String && value === '';
20
+ const result = value == undefined ||
21
+ (isZero && !allowZero) ||
22
+ (isFalse && !allowFalse) ||
23
+ isEmptyString ||
24
+ (valueType == Number && isNaN(value)) ||
25
+ (valueType == Object && Object.keys(value).length == 0) ||
26
+ (valueType == Array && value.length == 0)
27
+ ? true
28
+ : message;
29
+ return result;
30
+ }
31
+ getName() {
32
+ return 'isEmpty';
33
+ }
34
+ }
35
+ exports.ValidatorIsEmpty = ValidatorIsEmpty;
36
+ exports.default = ValidatorIsEmpty;
37
+ //# sourceMappingURL=validator-is-empty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator-is-empty.js","sourceRoot":"","sources":["../../src/validator/validator-is-empty.ts"],"names":[],"mappings":";;;;;;AAAA,2EAAiD;AAEjD,MAAa,gBAAgB;IAC3B,QAAQ,CAAC,KAAU,EAAE,OAAQ;QAC3B,MAAM,KAAK,GAAG,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAA;QAChE,MAAM,OAAO,GACX,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,gBAAgB,CAAA;QAEzE,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,CAAA;QACtE,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,CAAA;QAExE,MAAM,SAAS,GACb,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YACnC,CAAC,CAAC,qBAAU,CAAC,OAAO,CAAC,KAAK,CAAC;YAC3B,CAAC,CAAC,SAAS,CAAA;QAEf,MAAM,MAAM,GAAG,SAAS,KAAK,MAAM,IAAI,KAAK,KAAK,CAAC,CAAA;QAClD,MAAM,OAAO,GAAG,SAAS,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK,CAAA;QACxD,MAAM,aAAa,GAAG,SAAS,KAAK,MAAM,IAAI,KAAK,KAAK,EAAE,CAAA;QAE1D,MAAM,MAAM,GACV,KAAK,IAAI,SAAS;YAClB,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC;YACtB,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC;YACxB,aAAa;YACb,CAAC,SAAS,IAAI,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC,SAAS,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;YACvD,CAAC,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;YACvC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,OAAO,CAAA;QAEb,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO;QACL,OAAO,SAAS,CAAA;IAClB,CAAC;CACF;AAnCD,4CAmCC;AAED,kBAAe,gBAAgB,CAAA"}
@@ -0,0 +1,5 @@
1
+ export declare class ValidatorNotEmpty {
2
+ validate(value: any, options?: any): any;
3
+ getName(): string;
4
+ }
5
+ export default ValidatorNotEmpty;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ValidatorNotEmpty = void 0;
7
+ const validator_is_empty_1 = __importDefault(require("./validator-is-empty"));
8
+ class ValidatorNotEmpty {
9
+ validate(value, options) {
10
+ const label = options && options.label ? options.label : 'field';
11
+ const message = options && options.message ? options.message : label + ' cannot be empty';
12
+ const result = new validator_is_empty_1.default().validate(value, options) !== true ? true : message;
13
+ return result;
14
+ }
15
+ getName() {
16
+ return 'notEmpty';
17
+ }
18
+ }
19
+ exports.ValidatorNotEmpty = ValidatorNotEmpty;
20
+ exports.default = ValidatorNotEmpty;
21
+ //# sourceMappingURL=validator-not-empty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator-not-empty.js","sourceRoot":"","sources":["../../src/validator/validator-not-empty.ts"],"names":[],"mappings":";;;;;;AAAA,8EAAmD;AAEnD,MAAa,iBAAiB;IAC5B,QAAQ,CAAC,KAAU,EAAE,OAAQ;QAC3B,MAAM,KAAK,GAAG,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAA;QAChE,MAAM,OAAO,GACX,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,kBAAkB,CAAA;QAC3E,MAAM,MAAM,GACV,IAAI,4BAAgB,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAA;QAC3E,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO;QACL,OAAO,UAAU,CAAA;IACnB,CAAC;CACF;AAbD,8CAaC;AAED,kBAAe,iBAAiB,CAAA"}
@@ -0,0 +1,5 @@
1
+ export declare class ValidatorNotNull {
2
+ validate(value: any, options?: any): any;
3
+ getName(): string;
4
+ }
5
+ export default ValidatorNotNull;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidatorNotNull = void 0;
4
+ class ValidatorNotNull {
5
+ validate(value, options) {
6
+ const isValid = value !== null &&
7
+ !(typeof value == 'string' && value.toLowerCase() == 'null');
8
+ const name = options && options.label ? options.label : 'field';
9
+ const message = options && options.message ? options.message : name + ' cannot be null';
10
+ const result = isValid ? isValid : message;
11
+ return result;
12
+ }
13
+ getName() {
14
+ return 'notNull';
15
+ }
16
+ }
17
+ exports.ValidatorNotNull = ValidatorNotNull;
18
+ exports.default = ValidatorNotNull;
19
+ //# sourceMappingURL=validator-not-null.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator-not-null.js","sourceRoot":"","sources":["../../src/validator/validator-not-null.ts"],"names":[],"mappings":";;;AAAA,MAAa,gBAAgB;IAC3B,QAAQ,CAAC,KAAU,EAAE,OAAQ;QAC3B,MAAM,OAAO,GACX,KAAK,KAAK,IAAI;YACd,CAAC,CAEC,OAAO,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,MAAM,CAC1D,CAAA;QACH,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAA;QAC/D,MAAM,OAAO,GACX,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,iBAAiB,CAAA;QACzE,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAA;QAC1C,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO;QACL,OAAO,SAAS,CAAA;IAClB,CAAC;CACF;AAlBD,4CAkBC;AAED,kBAAe,gBAAgB,CAAA"}
@@ -0,0 +1,5 @@
1
+ export declare class ValidatorRegex {
2
+ validate(value: any, options?: any): any;
3
+ getName(): string;
4
+ }
5
+ export default ValidatorRegex;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidatorRegex = void 0;
4
+ class ValidatorRegex {
5
+ validate(value, options) {
6
+ const name = options && options.label ? options.label : 'field';
7
+ const regex = options && options.pattern ? new RegExp(options.pattern) : new RegExp('');
8
+ const message = options && options.message
9
+ ? options.message
10
+ : name + ' does not appear to be valid';
11
+ const result = regex.test(value) ? true : message;
12
+ return result;
13
+ }
14
+ getName() {
15
+ return 'regex';
16
+ }
17
+ }
18
+ exports.ValidatorRegex = ValidatorRegex;
19
+ exports.default = ValidatorRegex;
20
+ //# sourceMappingURL=validator-regex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator-regex.js","sourceRoot":"","sources":["../../src/validator/validator-regex.ts"],"names":[],"mappings":";;;AAAA,MAAa,cAAc;IACzB,QAAQ,CAAC,KAAU,EAAE,OAAQ;QAC3B,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAA;QAC/D,MAAM,KAAK,GACT,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAA;QAC3E,MAAM,OAAO,GACX,OAAO,IAAI,OAAO,CAAC,OAAO;YACxB,CAAC,CAAC,OAAO,CAAC,OAAO;YACjB,CAAC,CAAC,IAAI,GAAG,8BAA8B,CAAA;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAA;QACjD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO;QACL,OAAO,OAAO,CAAA;IAChB,CAAC;CACF;AAhBD,wCAgBC;AAED,kBAAe,cAAc,CAAA"}
@@ -0,0 +1,5 @@
1
+ export declare class ValidatorRequired {
2
+ validate(value: any, options?: any): any;
3
+ getName(): string;
4
+ }
5
+ export default ValidatorRequired;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidatorRequired = void 0;
4
+ class ValidatorRequired {
5
+ validate(value, options) {
6
+ const isValid = value !== undefined;
7
+ const name = options && options.label ? options.label : 'field';
8
+ const message = options && options.message ? options.message : name + ' is required';
9
+ const result = isValid ? isValid : message;
10
+ return result;
11
+ }
12
+ getName() {
13
+ return 'required';
14
+ }
15
+ }
16
+ exports.ValidatorRequired = ValidatorRequired;
17
+ exports.default = ValidatorRequired;
18
+ //# sourceMappingURL=validator-required.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator-required.js","sourceRoot":"","sources":["../../src/validator/validator-required.ts"],"names":[],"mappings":";;;AAAA,MAAa,iBAAiB;IAG5B,QAAQ,CAAC,KAAU,EAAE,OAAQ;QAC3B,MAAM,OAAO,GAAG,KAAK,KAAK,SAAS,CAAA;QACnC,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAA;QAC/D,MAAM,OAAO,GACX,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,cAAc,CAAA;QACtE,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAA;QAC1C,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO;QACL,OAAO,UAAU,CAAA;IACnB,CAAC;CACF;AAfD,8CAeC;AAED,kBAAe,iBAAiB,CAAA"}
@@ -0,0 +1,5 @@
1
+ export declare class ValidatorValueLength {
2
+ validate(value: any, options?: any): any;
3
+ getName(): string;
4
+ }
5
+ export default ValidatorValueLength;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ValidatorValueLength = void 0;
7
+ const type_caster_1 = __importDefault(require("../utilities/type-caster"));
8
+ class ValidatorValueLength {
9
+ validate(value, options) {
10
+ const name = options && options.label ? options.label : 'field';
11
+ const min = options && options.min ? options.min : null;
12
+ const max = options && options.max ? options.max : null;
13
+ const messageMin = options && options.message
14
+ ? options.message
15
+ : name + ' must be at least ' + min + ' characters long';
16
+ const messageMax = options && options.message
17
+ ? options.message
18
+ : name + ' must be no more than ' + max + ' characters long';
19
+ const valueType = type_caster_1.default.getType(value);
20
+ const resultMin = !min ||
21
+ (value != null &&
22
+ ((valueType != Array && valueType != String) || value.length >= min) &&
23
+ (valueType != Number || (isNaN(value) && value >= min)) &&
24
+ (valueType != Object || Object.keys(value).length >= min));
25
+ const resultMax = !max ||
26
+ value == null ||
27
+ (((valueType != Array && valueType != String) || value.length <= max) &&
28
+ (valueType != Number || (isNaN(value) && value <= max)) &&
29
+ (valueType != Object || Object.keys(value).length <= max));
30
+ const result = resultMin && resultMax ? true : !resultMin ? messageMin : messageMax;
31
+ return result;
32
+ }
33
+ getName() {
34
+ return 'valueLength';
35
+ }
36
+ }
37
+ exports.ValidatorValueLength = ValidatorValueLength;
38
+ exports.default = ValidatorValueLength;
39
+ //# sourceMappingURL=validator-value-length.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator-value-length.js","sourceRoot":"","sources":["../../src/validator/validator-value-length.ts"],"names":[],"mappings":";;;;;;AAAA,2EAAiD;AAEjD,MAAa,oBAAoB;IAC/B,QAAQ,CAAC,KAAU,EAAE,OAAQ;QAC3B,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAA;QAC/D,MAAM,GAAG,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA;QACvD,MAAM,GAAG,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA;QACvD,MAAM,UAAU,GACd,OAAO,IAAI,OAAO,CAAC,OAAO;YACxB,CAAC,CAAC,OAAO,CAAC,OAAO;YACjB,CAAC,CAAC,IAAI,GAAG,oBAAoB,GAAG,GAAG,GAAG,kBAAkB,CAAA;QAC5D,MAAM,UAAU,GACd,OAAO,IAAI,OAAO,CAAC,OAAO;YACxB,CAAC,CAAC,OAAO,CAAC,OAAO;YACjB,CAAC,CAAC,IAAI,GAAG,wBAAwB,GAAG,GAAG,GAAG,kBAAkB,CAAA;QAEhE,MAAM,SAAS,GAAG,qBAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAE3C,MAAM,SAAS,GACb,CAAC,GAAG;YACJ,CAAC,KAAK,IAAI,IAAI;gBAGZ,CAAC,CAAC,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;gBACpE,CAAC,SAAS,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC;gBACvD,CAAC,SAAS,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAA;QAE9D,MAAM,SAAS,GACb,CAAC,GAAG;YACJ,KAAK,IAAI,IAAI;YAGb,CAAC,CAAC,CAAC,SAAS,IAAI,KAAK,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;gBACnE,CAAC,SAAS,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC;gBACvD,CAAC,SAAS,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAA;QAE9D,MAAM,MAAM,GACV,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAA;QAEtE,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO;QACL,OAAO,aAAa,CAAA;IACtB,CAAC;CACF;AA3CD,oDA2CC;AAED,kBAAe,oBAAoB,CAAA"}
@@ -0,0 +1,7 @@
1
+ import ValidatorInterface from './validator-interface';
2
+ export declare class Validator {
3
+ static validators: {};
4
+ static validate(value: any, validatorsConfig: any, options?: any): Promise<boolean>;
5
+ static addValidator(handler: ValidatorInterface, name?: string): void;
6
+ }
7
+ export default Validator;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Validator = void 0;
7
+ const validator_callback_1 = __importDefault(require("./validator-callback"));
8
+ const validator_email_1 = __importDefault(require("./validator-email"));
9
+ const validator_in_array_1 = __importDefault(require("./validator-in-array"));
10
+ const validator_equality_1 = __importDefault(require("./validator-equality"));
11
+ const validator_is_empty_1 = __importDefault(require("./validator-is-empty"));
12
+ const validator_not_empty_1 = __importDefault(require("./validator-not-empty"));
13
+ const validator_not_null_1 = __importDefault(require("./validator-not-null"));
14
+ const validator_regex_1 = __importDefault(require("./validator-regex"));
15
+ const validator_required_1 = __importDefault(require("./validator-required"));
16
+ const validator_value_length_1 = __importDefault(require("./validator-value-length"));
17
+ class Validator {
18
+ static async validate(value, validatorsConfig, options) {
19
+ var results = true;
20
+ var configKeys = Object.keys(validatorsConfig);
21
+ for (let x = 0; x < configKeys.length; x++) {
22
+ let validatorName = configKeys[x];
23
+ let validator = this.validators[validatorName];
24
+ if (!validator)
25
+ throw new Error('Unknown validator "' + validatorName + '"');
26
+ if (validatorsConfig[validatorName] === false ||
27
+ validatorsConfig[validatorName] == undefined) {
28
+ continue;
29
+ }
30
+ let validatorConfig = !validatorsConfig[validatorName] ||
31
+ typeof validatorsConfig[validatorName] == 'boolean'
32
+ ? {}
33
+ : validatorsConfig[validatorName];
34
+ validatorConfig = Array.isArray(validatorConfig)
35
+ ? validatorConfig
36
+ : [validatorConfig];
37
+ for (let y = 0; y < validatorConfig.length; y++) {
38
+ let config = Object.assign({}, options, validatorConfig[y]);
39
+ if (results === true) {
40
+ let resultCurrent = await Promise.resolve(validator.validate(value, config));
41
+ if (resultCurrent !== true) {
42
+ resultCurrent = Array.isArray(resultCurrent)
43
+ ? resultCurrent
44
+ : [resultCurrent];
45
+ results = Array.isArray(results)
46
+ ? results.concat(resultCurrent)
47
+ : resultCurrent;
48
+ }
49
+ }
50
+ }
51
+ }
52
+ return results;
53
+ }
54
+ static addValidator(handler, name) {
55
+ name = name ? name : handler.getName();
56
+ this.validators[name] = handler;
57
+ }
58
+ }
59
+ exports.Validator = Validator;
60
+ Validator.validators = {};
61
+ Validator.addValidator(new validator_callback_1.default());
62
+ Validator.addValidator(new validator_email_1.default());
63
+ Validator.addValidator(new validator_in_array_1.default());
64
+ Validator.addValidator(new validator_equality_1.default());
65
+ Validator.addValidator(new validator_is_empty_1.default());
66
+ Validator.addValidator(new validator_not_empty_1.default());
67
+ Validator.addValidator(new validator_not_null_1.default());
68
+ Validator.addValidator(new validator_regex_1.default());
69
+ Validator.addValidator(new validator_required_1.default());
70
+ Validator.addValidator(new validator_value_length_1.default());
71
+ exports.default = Validator;
72
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/validator/validator.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@datacapy/schema",
3
+ "type": "commonjs",
4
+ "version": "0.1.0",
5
+ "description": "Datacapy schema: data schema definition and validation",
6
+ "main": "./dist/index",
7
+ "types": "./dist/index.d.ts",
8
+ "author": "Kevin Foster <kevin.foster.uk@gmail.com>",
9
+ "license": "BSD-3-Clause",
10
+ "homepage": "https://github.com/datacapy/datacapy#readme",
11
+ "bugs": {
12
+ "url": "https://github.com/datacapy/datacapy/issues"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/datacapy/datacapy.git",
17
+ "directory": "package/schema"
18
+ },
19
+ "dependencies": {
20
+ "bson-objectid": "^2.0.4",
21
+ "clone": "^2.1.2",
22
+ "@datacapy/id": "0.1.0"
23
+ },
24
+ "devDependencies": {
25
+ "@types/jest": "^30.0.0",
26
+ "@types/node": "^25.9.8",
27
+ "eslint": "^10.11.0",
28
+ "jest": "^30.5.2",
29
+ "prettier": "^3.9.9",
30
+ "ts-jest": "^29.4.14",
31
+ "ts-node": "^10.9.2",
32
+ "tsc-alias": "1.9.5",
33
+ "typescript": "^6.0.3",
34
+ "typescript-eslint": "^8.71.0"
35
+ },
36
+ "files": [
37
+ "/dist",
38
+ "/tsconfig.json"
39
+ ],
40
+ "publishConfig": {
41
+ "access": "public"
42
+ },
43
+ "scripts": {
44
+ "test": "jest",
45
+ "build": "pnpm run clean && tsc && pnpm run build-minimise",
46
+ "build-minimise": "find ./dist -type d -name '*.test.ts' -exec rm -rf {} +",
47
+ "format": "prettier --write \"src/**/*.{js,jsx,ts,tsx,json}\"",
48
+ "typecheck": "tsc --noEmit",
49
+ "clean": "rm -rf ./dist/*"
50
+ }
51
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2019",
4
+ "module": "commonjs",
5
+ "outDir": "dist",
6
+ "rootDir": "./src",
7
+ "baseUrl": "./src",
8
+ "ignoreDeprecations": "6.0",
9
+ "paths": {
10
+ "*": ["*"]
11
+ },
12
+ "esModuleInterop": true,
13
+ "sourceMap": true,
14
+ "removeComments": true,
15
+ "declaration": true,
16
+ "strict": true,
17
+ "noImplicitAny": false,
18
+ "strictNullChecks": false,
19
+ "noUnusedLocals": true,
20
+ "noUnusedParameters": true,
21
+ "noImplicitReturns": true,
22
+ "skipLibCheck": true
23
+ },
24
+ "include": ["src"],
25
+ "exclude": ["node_modules", "**/*.test.ts", "**/*.spec.ts", "src/test-utils"]
26
+ }