@platecms/delta-validation 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 (83) hide show
  1. package/README.md +155 -0
  2. package/package.json +29 -0
  3. package/src/index.d.ts +26 -0
  4. package/src/index.js +30 -0
  5. package/src/index.js.map +1 -0
  6. package/src/lib/content-validation-error.serializer.d.ts +7 -0
  7. package/src/lib/content-validation-error.serializer.js +30 -0
  8. package/src/lib/content-validation-error.serializer.js.map +1 -0
  9. package/src/lib/errors/content-validation-error-detail.d.ts +6 -0
  10. package/src/lib/errors/content-validation-error-detail.js +19 -0
  11. package/src/lib/errors/content-validation-error-detail.js.map +1 -0
  12. package/src/lib/errors/content-validation-error.d.ts +9 -0
  13. package/src/lib/errors/content-validation-error.js +24 -0
  14. package/src/lib/errors/content-validation-error.js.map +1 -0
  15. package/src/lib/errors/validation-error-detail.d.ts +4 -0
  16. package/src/lib/errors/validation-error-detail.js +10 -0
  17. package/src/lib/errors/validation-error-detail.js.map +1 -0
  18. package/src/lib/errors/validation-error.d.ts +9 -0
  19. package/src/lib/errors/validation-error.js +36 -0
  20. package/src/lib/errors/validation-error.js.map +1 -0
  21. package/src/lib/helpers/deserialize-validation-rule.d.ts +2 -0
  22. package/src/lib/helpers/deserialize-validation-rule.js +42 -0
  23. package/src/lib/helpers/deserialize-validation-rule.js.map +1 -0
  24. package/src/lib/invalid-content-validation-error.error.d.ts +5 -0
  25. package/src/lib/invalid-content-validation-error.error.js +14 -0
  26. package/src/lib/invalid-content-validation-error.error.js.map +1 -0
  27. package/src/lib/invalid-content-validation-validate-args.error.d.ts +2 -0
  28. package/src/lib/invalid-content-validation-validate-args.error.js +7 -0
  29. package/src/lib/invalid-content-validation-validate-args.error.js.map +1 -0
  30. package/src/lib/invalid-content-validation.error.d.ts +2 -0
  31. package/src/lib/invalid-content-validation.error.js +7 -0
  32. package/src/lib/invalid-content-validation.error.js.map +1 -0
  33. package/src/lib/types/content-item.model.d.ts +7 -0
  34. package/src/lib/types/content-item.model.js +11 -0
  35. package/src/lib/types/content-item.model.js.map +1 -0
  36. package/src/lib/types/content-type.model.d.ts +6 -0
  37. package/src/lib/types/content-type.model.js +11 -0
  38. package/src/lib/types/content-type.model.js.map +1 -0
  39. package/src/lib/types/existing-content-validation-rules-settings.type.d.ts +10 -0
  40. package/src/lib/types/existing-content-validation-rules-settings.type.js +3 -0
  41. package/src/lib/types/existing-content-validation-rules-settings.type.js.map +1 -0
  42. package/src/lib/types/existing-content-validation-rules.type.d.ts +9 -0
  43. package/src/lib/types/existing-content-validation-rules.type.js +3 -0
  44. package/src/lib/types/existing-content-validation-rules.type.js.map +1 -0
  45. package/src/lib/types/rule-instance.interface.d.ts +3 -0
  46. package/src/lib/types/rule-instance.interface.js +3 -0
  47. package/src/lib/types/rule-instance.interface.js.map +1 -0
  48. package/src/lib/types/rule-types.enum.d.ts +10 -0
  49. package/src/lib/types/rule-types.enum.js +15 -0
  50. package/src/lib/types/rule-types.enum.js.map +1 -0
  51. package/src/lib/types/unknown-validation-error-target.interface.d.ts +5 -0
  52. package/src/lib/types/unknown-validation-error-target.interface.js +3 -0
  53. package/src/lib/types/unknown-validation-error-target.interface.js.map +1 -0
  54. package/src/lib/validation-rules/allowed-values.validation-rule.d.ts +12 -0
  55. package/src/lib/validation-rules/allowed-values.validation-rule.js +35 -0
  56. package/src/lib/validation-rules/allowed-values.validation-rule.js.map +1 -0
  57. package/src/lib/validation-rules/base.validation-rule.d.ts +13 -0
  58. package/src/lib/validation-rules/base.validation-rule.js +14 -0
  59. package/src/lib/validation-rules/base.validation-rule.js.map +1 -0
  60. package/src/lib/validation-rules/count.validation-rule.d.ts +15 -0
  61. package/src/lib/validation-rules/count.validation-rule.js +35 -0
  62. package/src/lib/validation-rules/count.validation-rule.js.map +1 -0
  63. package/src/lib/validation-rules/date-between.validation-rule.d.ts +15 -0
  64. package/src/lib/validation-rules/date-between.validation-rule.js +35 -0
  65. package/src/lib/validation-rules/date-between.validation-rule.js.map +1 -0
  66. package/src/lib/validation-rules/decimal-count.validation-rule.d.ts +12 -0
  67. package/src/lib/validation-rules/decimal-count.validation-rule.js +33 -0
  68. package/src/lib/validation-rules/decimal-count.validation-rule.js.map +1 -0
  69. package/src/lib/validation-rules/number-between.validation-rule.d.ts +15 -0
  70. package/src/lib/validation-rules/number-between.validation-rule.js +35 -0
  71. package/src/lib/validation-rules/number-between.validation-rule.js.map +1 -0
  72. package/src/lib/validation-rules/relatable-content-types.validation-rule.d.ts +13 -0
  73. package/src/lib/validation-rules/relatable-content-types.validation-rule.js +37 -0
  74. package/src/lib/validation-rules/relatable-content-types.validation-rule.js.map +1 -0
  75. package/src/lib/validation-rules/string-format.validation-rule.d.ts +13 -0
  76. package/src/lib/validation-rules/string-format.validation-rule.js +30 -0
  77. package/src/lib/validation-rules/string-format.validation-rule.js.map +1 -0
  78. package/src/lib/validation-rules/validation-rule-function.factory.d.ts +4 -0
  79. package/src/lib/validation-rules/validation-rule-function.factory.js +9 -0
  80. package/src/lib/validation-rules/validation-rule-function.factory.js.map +1 -0
  81. package/src/lib/validation-rules/value-type.validation-rule.d.ts +13 -0
  82. package/src/lib/validation-rules/value-type.validation-rule.js +53 -0
  83. package/src/lib/validation-rules/value-type.validation-rule.js.map +1 -0
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=existing-content-validation-rules-settings.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"existing-content-validation-rules-settings.type.js","sourceRoot":"","sources":["../../../../../../../packages/validation/src/lib/types/existing-content-validation-rules-settings.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { AllowedValuesValidationRule } from "../validation-rules/allowed-values.validation-rule";
2
+ import { CountValidationRule } from "../validation-rules/count.validation-rule";
3
+ import { DateBetweenValidationRule } from "../validation-rules/date-between.validation-rule";
4
+ import { DecimalCountValidationRule } from "../validation-rules/decimal-count.validation-rule";
5
+ import { NumberBetweenValidationRule } from "../validation-rules/number-between.validation-rule";
6
+ import { RelatableContentTypesValidationRule } from "../validation-rules/relatable-content-types.validation-rule";
7
+ import { StringFormatValidationRule } from "../validation-rules/string-format.validation-rule";
8
+ import { ValueTypeValidationRule } from "../validation-rules/value-type.validation-rule";
9
+ export type ExistingContentValidationRules = AllowedValuesValidationRule | CountValidationRule | DateBetweenValidationRule | DecimalCountValidationRule | NumberBetweenValidationRule | RelatableContentTypesValidationRule | StringFormatValidationRule | ValueTypeValidationRule;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=existing-content-validation-rules.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"existing-content-validation-rules.type.js","sourceRoot":"","sources":["../../../../../../../packages/validation/src/lib/types/existing-content-validation-rules.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export interface RuleInstance<TRuleSettings> {
2
+ settings: TRuleSettings;
3
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=rule-instance.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-instance.interface.js","sourceRoot":"","sources":["../../../../../../../packages/validation/src/lib/types/rule-instance.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ export declare enum RuleType {
2
+ ALLOWED_VALUES = "ALLOWED_VALUES",
3
+ COUNT = "COUNT",
4
+ DATE_BETWEEN = "DATE_BETWEEN",
5
+ DECIMAL_COUNT = "DECIMAL_COUNT",
6
+ NUMBER_BETWEEN = "NUMBER_BETWEEN",
7
+ RELATABLE_CONTENT_TYPES = "RELATABLE_CONTENT_TYPES",
8
+ STRING_FORMAT = "STRING_FORMAT",
9
+ VALUE_TYPE = "VALUE_TYPE"
10
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RuleType = void 0;
4
+ var RuleType;
5
+ (function (RuleType) {
6
+ RuleType["ALLOWED_VALUES"] = "ALLOWED_VALUES";
7
+ RuleType["COUNT"] = "COUNT";
8
+ RuleType["DATE_BETWEEN"] = "DATE_BETWEEN";
9
+ RuleType["DECIMAL_COUNT"] = "DECIMAL_COUNT";
10
+ RuleType["NUMBER_BETWEEN"] = "NUMBER_BETWEEN";
11
+ RuleType["RELATABLE_CONTENT_TYPES"] = "RELATABLE_CONTENT_TYPES";
12
+ RuleType["STRING_FORMAT"] = "STRING_FORMAT";
13
+ RuleType["VALUE_TYPE"] = "VALUE_TYPE";
14
+ })(RuleType || (exports.RuleType = RuleType = {}));
15
+ //# sourceMappingURL=rule-types.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-types.enum.js","sourceRoot":"","sources":["../../../../../../../packages/validation/src/lib/types/rule-types.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,QASX;AATD,WAAY,QAAQ;IAClB,6CAAiC,CAAA;IACjC,2BAAe,CAAA;IACf,yCAA6B,CAAA;IAC7B,2CAA+B,CAAA;IAC/B,6CAAiC,CAAA;IACjC,+DAAmD,CAAA;IACnD,2CAA+B,CAAA;IAC/B,qCAAyB,CAAA;AAC3B,CAAC,EATW,QAAQ,wBAAR,QAAQ,QASnB"}
@@ -0,0 +1,5 @@
1
+ import { PRN } from "@platecms/delta-plate-resource-notation";
2
+ export interface UnknownValidationErrorTarget {
3
+ [key: string]: unknown;
4
+ prn?: PRN;
5
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=unknown-validation-error-target.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unknown-validation-error-target.interface.js","sourceRoot":"","sources":["../../../../../../../packages/validation/src/lib/types/unknown-validation-error-target.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import { BaseValidationRule, ContentValidationResultType } from "./base.validation-rule";
2
+ import { RuleType } from "../types/rule-types.enum";
3
+ import { RuleInstance } from "../types/rule-instance.interface";
4
+ import { ContentValueType } from "@platecms/delta-types";
5
+ export declare const validateAllowedValues: <TRuleInstance extends RuleInstance<AllowedValuesValidationRuleSettings> = RuleInstance<AllowedValuesValidationRuleSettings>>(values: ContentValueType[], ruleInstance: TRuleInstance) => ContentValidationResultType[];
6
+ export declare class AllowedValuesValidationRule extends BaseValidationRule<AllowedValuesValidationRuleSettings> {
7
+ readonly ruleType: RuleType;
8
+ validate(values: ContentValueType[]): ContentValidationResultType[];
9
+ }
10
+ export interface AllowedValuesValidationRuleSettings {
11
+ allowedValues: ContentValueType[];
12
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AllowedValuesValidationRule = exports.validateAllowedValues = void 0;
4
+ const base_validation_rule_1 = require("./base.validation-rule");
5
+ const rule_types_enum_1 = require("../types/rule-types.enum");
6
+ const content_validation_error_detail_1 = require("../errors/content-validation-error-detail");
7
+ const validation_rule_function_factory_1 = require("./validation-rule-function.factory");
8
+ const delta_plate_resource_notation_1 = require("@platecms/delta-plate-resource-notation");
9
+ function validateValueAllowedValues(value, ruleInstance) {
10
+ const valid = ruleInstance.settings.allowedValues.some((allowedValue) => {
11
+ if (value instanceof delta_plate_resource_notation_1.PRN) {
12
+ return allowedValue instanceof delta_plate_resource_notation_1.PRN && value.equals(allowedValue);
13
+ }
14
+ if (value instanceof Date) {
15
+ return allowedValue instanceof Date && value.getTime() === allowedValue.getTime();
16
+ }
17
+ return value === allowedValue;
18
+ });
19
+ if (!valid) {
20
+ return new content_validation_error_detail_1.ContentValidationErrorDetail(`The provided value must be one of ${ruleInstance.settings.allowedValues.join(", ")}`, ruleInstance);
21
+ }
22
+ return true;
23
+ }
24
+ exports.validateAllowedValues = (0, validation_rule_function_factory_1.validationFunctionFromValidateValue)(validateValueAllowedValues);
25
+ class AllowedValuesValidationRule extends base_validation_rule_1.BaseValidationRule {
26
+ constructor() {
27
+ super(...arguments);
28
+ this.ruleType = rule_types_enum_1.RuleType.ALLOWED_VALUES;
29
+ }
30
+ validate(values) {
31
+ return (0, exports.validateAllowedValues)(values, this);
32
+ }
33
+ }
34
+ exports.AllowedValuesValidationRule = AllowedValuesValidationRule;
35
+ //# sourceMappingURL=allowed-values.validation-rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allowed-values.validation-rule.js","sourceRoot":"","sources":["../../../../../../../packages/validation/src/lib/validation-rules/allowed-values.validation-rule.ts"],"names":[],"mappings":";;;AAAA,iEAAyF;AACzF,8DAAoD;AACpD,+FAAyF;AAEzF,yFAAyF;AAEzF,2FAA8D;AAE9D,SAAS,0BAA0B,CACjC,KAAuB,EACvB,YAA+D;IAE/D,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;QACtE,IAAI,KAAK,YAAY,mCAAG,EAAE,CAAC;YACzB,OAAO,YAAY,YAAY,mCAAG,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,OAAO,YAAY,YAAY,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,KAAK,YAAY,CAAC,OAAO,EAAE,CAAC;QACpF,CAAC;QAED,OAAO,KAAK,KAAK,YAAY,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,8DAA4B,CACrC,qCAAqC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACrF,YAAY,CACb,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAGY,QAAA,qBAAqB,GAAG,IAAA,sEAAmC,EAAC,0BAA0B,CAAC,CAAC;AAMrG,MAAa,2BAA4B,SAAQ,yCAAuD;IAAxG;;QACkB,aAAQ,GAAa,0BAAQ,CAAC,cAAc,CAAC;IAK/D,CAAC;IAHiB,QAAQ,CAAC,MAA0B;QACjD,OAAO,IAAA,6BAAqB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;CACF;AAND,kEAMC"}
@@ -0,0 +1,13 @@
1
+ import { RuleType } from "../types/rule-types.enum";
2
+ import { ContentValidationErrorDetail } from "../errors/content-validation-error-detail";
3
+ import { RuleInstance } from "../types/rule-instance.interface";
4
+ import { PRN } from "@platecms/delta-plate-resource-notation";
5
+ import { ContentValueType } from "@platecms/delta-types";
6
+ export type ContentValidationResultType<TRuleInstance extends RuleInstance<unknown> = RuleInstance<unknown>> = ContentValidationErrorDetail<TRuleInstance> | true | null;
7
+ export declare abstract class BaseValidationRule<TSettings> implements RuleInstance<TSettings> {
8
+ readonly prn: PRN;
9
+ readonly settings: TSettings;
10
+ abstract readonly ruleType: RuleType;
11
+ constructor(prn: PRN, settings: TSettings);
12
+ validate(_: ContentValueType[]): ContentValidationResultType[];
13
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseValidationRule = void 0;
4
+ class BaseValidationRule {
5
+ constructor(prn, settings) {
6
+ this.prn = prn;
7
+ this.settings = settings;
8
+ }
9
+ validate(_) {
10
+ throw new Error("validate method must be overridden.");
11
+ }
12
+ }
13
+ exports.BaseValidationRule = BaseValidationRule;
14
+ //# sourceMappingURL=base.validation-rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.validation-rule.js","sourceRoot":"","sources":["../../../../../../../packages/validation/src/lib/validation-rules/base.validation-rule.ts"],"names":[],"mappings":";;;AAWA,MAAsB,kBAAkB;IAOtC,YAAmB,GAAQ,EAAE,QAAmB;QAC9C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAUM,QAAQ,CAAC,CAAqB;QACnC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;CACF;AAvBD,gDAuBC"}
@@ -0,0 +1,15 @@
1
+ import { BaseValidationRule, ContentValidationResultType } from "./base.validation-rule";
2
+ import { RuleType } from "../types/rule-types.enum";
3
+ import { RuleInstance } from "../types/rule-instance.interface";
4
+ import { PRN } from "@platecms/delta-plate-resource-notation";
5
+ import { ContentValueType } from "@platecms/delta-types";
6
+ export declare function validateCount(values: ContentValueType[], ruleInstance: RuleInstance<CountValidationRuleSettings>): ContentValidationResultType[];
7
+ export declare class CountValidationRule extends BaseValidationRule<CountValidationRuleSettings> {
8
+ readonly ruleType: RuleType;
9
+ constructor(prn: PRN, settings: CountValidationRuleSettings);
10
+ validate(value: ContentValueType[]): ContentValidationResultType[];
11
+ }
12
+ export interface CountValidationRuleSettings {
13
+ min?: number;
14
+ max?: number;
15
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CountValidationRule = void 0;
4
+ exports.validateCount = validateCount;
5
+ const invalid_content_validation_error_1 = require("../invalid-content-validation.error");
6
+ const base_validation_rule_1 = require("./base.validation-rule");
7
+ const rule_types_enum_1 = require("../types/rule-types.enum");
8
+ const content_validation_error_detail_1 = require("../errors/content-validation-error-detail");
9
+ function validateCount(values, ruleInstance) {
10
+ if (ruleInstance.settings.min != null && values.length < ruleInstance.settings.min) {
11
+ return [
12
+ new content_validation_error_detail_1.ContentValidationErrorDetail(`The amount of provided values must be greater than or equal ${ruleInstance.settings.min}.`, ruleInstance),
13
+ ];
14
+ }
15
+ if (ruleInstance.settings.max != null && values.length > ruleInstance.settings.max) {
16
+ return [
17
+ new content_validation_error_detail_1.ContentValidationErrorDetail(`The amount of provided values must be be less than or equal ${ruleInstance.settings.max}.`, ruleInstance),
18
+ ];
19
+ }
20
+ return [true];
21
+ }
22
+ class CountValidationRule extends base_validation_rule_1.BaseValidationRule {
23
+ constructor(prn, settings) {
24
+ if (settings.min == null && settings.max == null) {
25
+ throw new invalid_content_validation_error_1.InvalidContentValidationError("Either min or max must be defined.");
26
+ }
27
+ super(prn, settings);
28
+ this.ruleType = rule_types_enum_1.RuleType.COUNT;
29
+ }
30
+ validate(value) {
31
+ return validateCount(value, this);
32
+ }
33
+ }
34
+ exports.CountValidationRule = CountValidationRule;
35
+ //# sourceMappingURL=count.validation-rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"count.validation-rule.js","sourceRoot":"","sources":["../../../../../../../packages/validation/src/lib/validation-rules/count.validation-rule.ts"],"names":[],"mappings":";;;AAQA,sCAqBC;AA7BD,0FAAoF;AACpF,iEAAyF;AACzF,8DAAoD;AACpD,+FAAyF;AAKzF,SAAgB,aAAa,CAC3B,MAA0B,EAC1B,YAAuD;IAEvD,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACnF,OAAO;YACL,IAAI,8DAA4B,CAC9B,+DAA+D,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,EAC3F,YAAY,CACb;SACF,CAAC;IACJ,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACnF,OAAO;YACL,IAAI,8DAA4B,CAC9B,+DAA+D,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,EAC3F,YAAY,CACb;SACF,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAKD,MAAa,mBAAoB,SAAQ,yCAA+C;IAGtF,YAAmB,GAAQ,EAAE,QAAqC;QAChE,IAAI,QAAQ,CAAC,GAAG,IAAI,IAAI,IAAI,QAAQ,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;YACjD,MAAM,IAAI,gEAA6B,CAAC,oCAAoC,CAAC,CAAC;QAChF,CAAC;QACD,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QANP,aAAQ,GAAa,0BAAQ,CAAC,KAAK,CAAC;IAOpD,CAAC;IAEe,QAAQ,CAAC,KAAyB;QAChD,OAAO,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;CACF;AAbD,kDAaC"}
@@ -0,0 +1,15 @@
1
+ import { BaseValidationRule, ContentValidationResultType } from "./base.validation-rule";
2
+ import { RuleType } from "../types/rule-types.enum";
3
+ import { RuleInstance } from "../types/rule-instance.interface";
4
+ import { PRN } from "@platecms/delta-plate-resource-notation";
5
+ import { ContentValueType } from "@platecms/delta-types";
6
+ export declare const validateDateBetween: <TRuleInstance extends RuleInstance<DateBetweenValidationRuleSettings> = RuleInstance<DateBetweenValidationRuleSettings>>(values: ContentValueType[], ruleInstance: TRuleInstance) => ContentValidationResultType[];
7
+ export declare class DateBetweenValidationRule extends BaseValidationRule<DateBetweenValidationRuleSettings> {
8
+ readonly ruleType: RuleType;
9
+ constructor(prn: PRN, settings: DateBetweenValidationRuleSettings);
10
+ validate(values: ContentValueType[]): ContentValidationResultType[];
11
+ }
12
+ export interface DateBetweenValidationRuleSettings {
13
+ min?: Date;
14
+ max?: Date;
15
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DateBetweenValidationRule = exports.validateDateBetween = void 0;
4
+ const invalid_content_validation_error_1 = require("../invalid-content-validation.error");
5
+ const base_validation_rule_1 = require("./base.validation-rule");
6
+ const rule_types_enum_1 = require("../types/rule-types.enum");
7
+ const content_validation_error_detail_1 = require("../errors/content-validation-error-detail");
8
+ const validation_rule_function_factory_1 = require("./validation-rule-function.factory");
9
+ function validateValueDateBetween(value, ruleInstance) {
10
+ if (!(value instanceof Date)) {
11
+ return null;
12
+ }
13
+ if (ruleInstance.settings.min != null && value < ruleInstance.settings.min) {
14
+ return new content_validation_error_detail_1.ContentValidationErrorDetail(`The date must be greater than or equal ${ruleInstance.settings.min.toDateString()}`, ruleInstance);
15
+ }
16
+ if (ruleInstance.settings.max != null && value > ruleInstance.settings.max) {
17
+ return new content_validation_error_detail_1.ContentValidationErrorDetail(`The date must be lower than or equal ${ruleInstance.settings.max.toDateString()}`, ruleInstance);
18
+ }
19
+ return true;
20
+ }
21
+ exports.validateDateBetween = (0, validation_rule_function_factory_1.validationFunctionFromValidateValue)(validateValueDateBetween);
22
+ class DateBetweenValidationRule extends base_validation_rule_1.BaseValidationRule {
23
+ constructor(prn, settings) {
24
+ if (settings.min == null && settings.max == null) {
25
+ throw new invalid_content_validation_error_1.InvalidContentValidationError("Either min or max must be defined.");
26
+ }
27
+ super(prn, settings);
28
+ this.ruleType = rule_types_enum_1.RuleType.DATE_BETWEEN;
29
+ }
30
+ validate(values) {
31
+ return (0, exports.validateDateBetween)(values, this);
32
+ }
33
+ }
34
+ exports.DateBetweenValidationRule = DateBetweenValidationRule;
35
+ //# sourceMappingURL=date-between.validation-rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-between.validation-rule.js","sourceRoot":"","sources":["../../../../../../../packages/validation/src/lib/validation-rules/date-between.validation-rule.ts"],"names":[],"mappings":";;;AAAA,0FAAoF;AACpF,iEAAyF;AACzF,8DAAoD;AACpD,+FAAyF;AAEzF,yFAAyF;AAIzF,SAAS,wBAAwB,CAC/B,KAAuB,EACvB,YAA6D;IAE7D,IAAI,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,IAAI,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC3E,OAAO,IAAI,8DAA4B,CACrC,0CAA0C,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,EACpF,YAAY,CACb,CAAC;IACJ,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,IAAI,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC3E,OAAO,IAAI,8DAA4B,CACrC,wCAAwC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,EAClF,YAAY,CACb,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAGY,QAAA,mBAAmB,GAAG,IAAA,sEAAmC,EAAC,wBAAwB,CAAC,CAAC;AAEjG,MAAa,yBAA0B,SAAQ,yCAAqD;IAGlG,YAAmB,GAAQ,EAAE,QAA2C;QACtE,IAAI,QAAQ,CAAC,GAAG,IAAI,IAAI,IAAI,QAAQ,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;YACjD,MAAM,IAAI,gEAA6B,CAAC,oCAAoC,CAAC,CAAC;QAChF,CAAC;QACD,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QANP,aAAQ,GAAa,0BAAQ,CAAC,YAAY,CAAC;IAO3D,CAAC;IAEe,QAAQ,CAAC,MAA0B;QACjD,OAAO,IAAA,2BAAmB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF;AAbD,8DAaC"}
@@ -0,0 +1,12 @@
1
+ import { BaseValidationRule, ContentValidationResultType } from "./base.validation-rule";
2
+ import { RuleType } from "../types/rule-types.enum";
3
+ import { RuleInstance } from "../types/rule-instance.interface";
4
+ import { ContentValueType } from "@platecms/delta-types";
5
+ export declare const validateDecimalCount: <TRuleInstance extends RuleInstance<DecimalCountValidationRuleSettings> = RuleInstance<DecimalCountValidationRuleSettings>>(values: ContentValueType[], ruleInstance: TRuleInstance) => ContentValidationResultType[];
6
+ export declare class DecimalCountValidationRule extends BaseValidationRule<DecimalCountValidationRuleSettings> {
7
+ readonly ruleType: RuleType;
8
+ validate(values: ContentValueType[]): ContentValidationResultType[];
9
+ }
10
+ export interface DecimalCountValidationRuleSettings {
11
+ max: number;
12
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DecimalCountValidationRule = exports.validateDecimalCount = void 0;
4
+ const base_validation_rule_1 = require("./base.validation-rule");
5
+ const rule_types_enum_1 = require("../types/rule-types.enum");
6
+ const content_validation_error_detail_1 = require("../errors/content-validation-error-detail");
7
+ const validation_rule_function_factory_1 = require("./validation-rule-function.factory");
8
+ function getDecimalCount(value) {
9
+ const [_, decimalDigits] = value.toString().split(".");
10
+ return decimalDigits ? decimalDigits.length : 0;
11
+ }
12
+ function validateValueDecimalCount(value, ruleInstance) {
13
+ if (typeof value !== "number") {
14
+ return null;
15
+ }
16
+ const decimalCount = getDecimalCount(value);
17
+ if (decimalCount > ruleInstance.settings.max) {
18
+ return new content_validation_error_detail_1.ContentValidationErrorDetail(`The number must not have more than ${ruleInstance.settings.max} decimals`, ruleInstance);
19
+ }
20
+ return true;
21
+ }
22
+ exports.validateDecimalCount = (0, validation_rule_function_factory_1.validationFunctionFromValidateValue)(validateValueDecimalCount);
23
+ class DecimalCountValidationRule extends base_validation_rule_1.BaseValidationRule {
24
+ constructor() {
25
+ super(...arguments);
26
+ this.ruleType = rule_types_enum_1.RuleType.DECIMAL_COUNT;
27
+ }
28
+ validate(values) {
29
+ return (0, exports.validateDecimalCount)(values, this);
30
+ }
31
+ }
32
+ exports.DecimalCountValidationRule = DecimalCountValidationRule;
33
+ //# sourceMappingURL=decimal-count.validation-rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decimal-count.validation-rule.js","sourceRoot":"","sources":["../../../../../../../packages/validation/src/lib/validation-rules/decimal-count.validation-rule.ts"],"names":[],"mappings":";;;AAAA,iEAAyF;AACzF,8DAAoD;AACpD,+FAAyF;AAEzF,yFAAyF;AAGzF,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvD,OAAO,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,yBAAyB,CAChC,KAAuB,EACvB,YAA8D;IAE9D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAE5C,IAAI,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC7C,OAAO,IAAI,8DAA4B,CACrC,sCAAsC,YAAY,CAAC,QAAQ,CAAC,GAAG,WAAW,EAC1E,YAAY,CACb,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAGY,QAAA,oBAAoB,GAAG,IAAA,sEAAmC,EAAC,yBAAyB,CAAC,CAAC;AAQnG,MAAa,0BAA2B,SAAQ,yCAAsD;IAAtG;;QACkB,aAAQ,GAAa,0BAAQ,CAAC,aAAa,CAAC;IAK9D,CAAC;IAHiB,QAAQ,CAAC,MAA0B;QACjD,OAAO,IAAA,4BAAoB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;CACF;AAND,gEAMC"}
@@ -0,0 +1,15 @@
1
+ import { RuleInstance } from "../types/rule-instance.interface";
2
+ import { RuleType } from "../types/rule-types.enum";
3
+ import { BaseValidationRule, ContentValidationResultType } from "./base.validation-rule";
4
+ import { PRN } from "@platecms/delta-plate-resource-notation";
5
+ import { ContentValueType } from "@platecms/delta-types";
6
+ export declare const validateNumberBetween: <TRuleInstance extends RuleInstance<NumberBetweenValidationRuleSettings> = RuleInstance<NumberBetweenValidationRuleSettings>>(values: ContentValueType[], ruleInstance: TRuleInstance) => ContentValidationResultType[];
7
+ export declare class NumberBetweenValidationRule extends BaseValidationRule<NumberBetweenValidationRuleSettings> {
8
+ readonly ruleType: RuleType;
9
+ constructor(prn: PRN, settings: NumberBetweenValidationRuleSettings);
10
+ validate(values: ContentValueType[]): ContentValidationResultType[];
11
+ }
12
+ export interface NumberBetweenValidationRuleSettings {
13
+ min?: number;
14
+ max?: number;
15
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NumberBetweenValidationRule = exports.validateNumberBetween = void 0;
4
+ const content_validation_error_detail_1 = require("../errors/content-validation-error-detail");
5
+ const invalid_content_validation_error_1 = require("../invalid-content-validation.error");
6
+ const rule_types_enum_1 = require("../types/rule-types.enum");
7
+ const base_validation_rule_1 = require("./base.validation-rule");
8
+ const validation_rule_function_factory_1 = require("./validation-rule-function.factory");
9
+ function validateValueNumberBetween(value, ruleInstance) {
10
+ if (typeof value !== "number") {
11
+ return null;
12
+ }
13
+ if (ruleInstance.settings.min != null && value < ruleInstance.settings.min) {
14
+ return new content_validation_error_detail_1.ContentValidationErrorDetail(`The value must be greater than or equal ${ruleInstance.settings.min}`, ruleInstance);
15
+ }
16
+ if (ruleInstance.settings.max != null && value > ruleInstance.settings.max) {
17
+ return new content_validation_error_detail_1.ContentValidationErrorDetail(`The value must be less than or equal ${ruleInstance.settings.max}`, ruleInstance);
18
+ }
19
+ return true;
20
+ }
21
+ exports.validateNumberBetween = (0, validation_rule_function_factory_1.validationFunctionFromValidateValue)(validateValueNumberBetween);
22
+ class NumberBetweenValidationRule extends base_validation_rule_1.BaseValidationRule {
23
+ constructor(prn, settings) {
24
+ if (settings.min == null && settings.max == null) {
25
+ throw new invalid_content_validation_error_1.InvalidContentValidationError("Either min or max must be defined.");
26
+ }
27
+ super(prn, settings);
28
+ this.ruleType = rule_types_enum_1.RuleType.NUMBER_BETWEEN;
29
+ }
30
+ validate(values) {
31
+ return (0, exports.validateNumberBetween)(values, this);
32
+ }
33
+ }
34
+ exports.NumberBetweenValidationRule = NumberBetweenValidationRule;
35
+ //# sourceMappingURL=number-between.validation-rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number-between.validation-rule.js","sourceRoot":"","sources":["../../../../../../../packages/validation/src/lib/validation-rules/number-between.validation-rule.ts"],"names":[],"mappings":";;;AAAA,+FAAyF;AAEzF,0FAAoF;AACpF,8DAAoD;AACpD,iEAAyF;AACzF,yFAAyF;AAIzF,SAAS,0BAA0B,CACjC,KAAuB,EACvB,YAA+D;IAE/D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,IAAI,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC3E,OAAO,IAAI,8DAA4B,CACrC,2CAA2C,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,EACtE,YAAY,CACb,CAAC;IACJ,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,IAAI,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC3E,OAAO,IAAI,8DAA4B,CACrC,wCAAwC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,EACnE,YAAY,CACb,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAGY,QAAA,qBAAqB,GAAG,IAAA,sEAAmC,EAAC,0BAA0B,CAAC,CAAC;AAKrG,MAAa,2BAA4B,SAAQ,yCAAuD;IAGtG,YAAmB,GAAQ,EAAE,QAA6C;QACxE,IAAI,QAAQ,CAAC,GAAG,IAAI,IAAI,IAAI,QAAQ,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;YACjD,MAAM,IAAI,gEAA6B,CAAC,oCAAoC,CAAC,CAAC;QAChF,CAAC;QACD,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QANP,aAAQ,GAAa,0BAAQ,CAAC,cAAc,CAAC;IAO7D,CAAC;IAEe,QAAQ,CAAC,MAA0B;QACjD,OAAO,IAAA,6BAAqB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;CACF;AAbD,kEAaC"}
@@ -0,0 +1,13 @@
1
+ import { RuleInstance } from "../types/rule-instance.interface";
2
+ import { RuleType } from "../types/rule-types.enum";
3
+ import { BaseValidationRule, ContentValidationResultType } from "./base.validation-rule";
4
+ import { ContentValueType } from "@platecms/delta-types";
5
+ import { PRN } from "@platecms/delta-plate-resource-notation";
6
+ export declare function validateRelatableContentTypes<TContentType>(values: ContentValueType[], ruleInstance: RuleInstance<RelatableContentTypesValidationRuleSettings<TContentType>>, contentTypes: TContentType[]): ContentValidationResultType[];
7
+ export declare class RelatableContentTypesValidationRule extends BaseValidationRule<RelatableContentTypesValidationRuleSettings<PRN>> {
8
+ readonly ruleType: RuleType;
9
+ validate(values: ContentValueType[], contentTypes?: PRN[]): ContentValidationResultType[];
10
+ }
11
+ export interface RelatableContentTypesValidationRuleSettings<TContentType> {
12
+ allowedContentTypes: TContentType[];
13
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RelatableContentTypesValidationRule = void 0;
4
+ exports.validateRelatableContentTypes = validateRelatableContentTypes;
5
+ const content_validation_error_detail_1 = require("../errors/content-validation-error-detail");
6
+ const invalid_content_validation_validate_args_error_1 = require("../invalid-content-validation-validate-args.error");
7
+ const rule_types_enum_1 = require("../types/rule-types.enum");
8
+ const base_validation_rule_1 = require("./base.validation-rule");
9
+ function validateValueRelatableContentTypes(value, contentType, ruleInstance) {
10
+ if (contentType === undefined) {
11
+ throw new invalid_content_validation_validate_args_error_1.InvalidContentValidationValidateArgsError(`Missing attribute 'contentType' for value: ${JSON.stringify(value)}`);
12
+ }
13
+ if (!ruleInstance.settings.allowedContentTypes.includes(contentType)) {
14
+ return new content_validation_error_detail_1.ContentValidationErrorDetail(`The provided content type must be type of ${ruleInstance.settings.allowedContentTypes.join(", ")}`, ruleInstance);
15
+ }
16
+ return true;
17
+ }
18
+ function validateRelatableContentTypes(values, ruleInstance, contentTypes) {
19
+ if (values.length !== contentTypes.length) {
20
+ throw new invalid_content_validation_validate_args_error_1.InvalidContentValidationValidateArgsError(`The length of values and contentTypes must be equal.`);
21
+ }
22
+ return values.map((value, index) => validateValueRelatableContentTypes(value, contentTypes[index], ruleInstance));
23
+ }
24
+ class RelatableContentTypesValidationRule extends base_validation_rule_1.BaseValidationRule {
25
+ constructor() {
26
+ super(...arguments);
27
+ this.ruleType = rule_types_enum_1.RuleType.RELATABLE_CONTENT_TYPES;
28
+ }
29
+ validate(values, contentTypes) {
30
+ if (contentTypes === undefined) {
31
+ throw new invalid_content_validation_validate_args_error_1.InvalidContentValidationValidateArgsError(`Missing attribute 'contentTypes' in values: ${JSON.stringify(values)}`);
32
+ }
33
+ return validateRelatableContentTypes(values, this, contentTypes);
34
+ }
35
+ }
36
+ exports.RelatableContentTypesValidationRule = RelatableContentTypesValidationRule;
37
+ //# sourceMappingURL=relatable-content-types.validation-rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relatable-content-types.validation-rule.js","sourceRoot":"","sources":["../../../../../../../packages/validation/src/lib/validation-rules/relatable-content-types.validation-rule.ts"],"names":[],"mappings":";;;AA6BA,sEAUC;AAvCD,+FAAyF;AAEzF,sHAA8G;AAC9G,8DAAoD;AACpD,iEAAyF;AAIzF,SAAS,kCAAkC,CACzC,KAAuB,EACvB,WAAyB,EACzB,YAAqF;IAErF,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,0FAAyC,CACjD,8CAA8C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CACtE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACrE,OAAO,IAAI,8DAA4B,CACrC,6CAA6C,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACnG,YAAY,CACb,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,6BAA6B,CAC3C,MAA0B,EAC1B,YAAqF,EACrF,YAA4B;IAE5B,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,IAAI,0FAAyC,CAAC,sDAAsD,CAAC,CAAC;IAC9G,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,kCAAkC,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;AACpH,CAAC;AAKD,MAAa,mCAAoC,SAAQ,yCAExD;IAFD;;QAGkB,aAAQ,GAAa,0BAAQ,CAAC,uBAAuB,CAAC;IAWxE,CAAC;IATiB,QAAQ,CAAC,MAA0B,EAAE,YAAoB;QACvE,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,0FAAyC,CACjD,+CAA+C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CACxE,CAAC;QACJ,CAAC;QAED,OAAO,6BAA6B,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACnE,CAAC;CACF;AAdD,kFAcC"}
@@ -0,0 +1,13 @@
1
+ import { BaseValidationRule, ContentValidationResultType } from "./base.validation-rule";
2
+ import { RuleType } from "../types/rule-types.enum";
3
+ import { RuleInstance } from "../types/rule-instance.interface";
4
+ import { ContentValueType } from "@platecms/delta-types";
5
+ export declare function validateValueStringFormat(value: ContentValueType, ruleInstance: RuleInstance<StringFormatValidationRuleSettings>): ContentValidationResultType;
6
+ export declare const validateStringFormat: <TRuleInstance extends RuleInstance<StringFormatValidationRuleSettings> = RuleInstance<StringFormatValidationRuleSettings>>(values: ContentValueType[], ruleInstance: TRuleInstance) => ContentValidationResultType[];
7
+ export declare class StringFormatValidationRule extends BaseValidationRule<StringFormatValidationRuleSettings> {
8
+ readonly ruleType: RuleType;
9
+ validate(values: ContentValueType[]): ContentValidationResultType[];
10
+ }
11
+ export interface StringFormatValidationRuleSettings {
12
+ allowedFormat: string;
13
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StringFormatValidationRule = exports.validateStringFormat = void 0;
4
+ exports.validateValueStringFormat = validateValueStringFormat;
5
+ const base_validation_rule_1 = require("./base.validation-rule");
6
+ const rule_types_enum_1 = require("../types/rule-types.enum");
7
+ const content_validation_error_detail_1 = require("../errors/content-validation-error-detail");
8
+ const validation_rule_function_factory_1 = require("./validation-rule-function.factory");
9
+ function validateValueStringFormat(value, ruleInstance) {
10
+ if (typeof value !== "string") {
11
+ return null;
12
+ }
13
+ const regex = new RegExp(ruleInstance.settings.allowedFormat);
14
+ if (!regex.test(value)) {
15
+ return new content_validation_error_detail_1.ContentValidationErrorDetail(`The value field is invalid`, ruleInstance);
16
+ }
17
+ return true;
18
+ }
19
+ exports.validateStringFormat = (0, validation_rule_function_factory_1.validationFunctionFromValidateValue)(validateValueStringFormat);
20
+ class StringFormatValidationRule extends base_validation_rule_1.BaseValidationRule {
21
+ constructor() {
22
+ super(...arguments);
23
+ this.ruleType = rule_types_enum_1.RuleType.STRING_FORMAT;
24
+ }
25
+ validate(values) {
26
+ return (0, exports.validateStringFormat)(values, this);
27
+ }
28
+ }
29
+ exports.StringFormatValidationRule = StringFormatValidationRule;
30
+ //# sourceMappingURL=string-format.validation-rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-format.validation-rule.js","sourceRoot":"","sources":["../../../../../../../packages/validation/src/lib/validation-rules/string-format.validation-rule.ts"],"names":[],"mappings":";;;AAQA,8DAiBC;AAzBD,iEAAyF;AACzF,8DAAoD;AACpD,+FAAyF;AAEzF,yFAAyF;AAIzF,SAAgB,yBAAyB,CACvC,KAAuB,EACvB,YAA8D;IAE9D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAE9D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAEvB,OAAO,IAAI,8DAA4B,CAAC,4BAA4B,EAAE,YAAY,CAAC,CAAC;IACtF,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAGY,QAAA,oBAAoB,GAAG,IAAA,sEAAmC,EAAC,yBAAyB,CAAC,CAAC;AAKnG,MAAa,0BAA2B,SAAQ,yCAAsD;IAAtG;;QACkB,aAAQ,GAAa,0BAAQ,CAAC,aAAa,CAAC;IAK9D,CAAC;IAHiB,QAAQ,CAAC,MAA0B;QACjD,OAAO,IAAA,4BAAoB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;CACF;AAND,gEAMC"}
@@ -0,0 +1,4 @@
1
+ import { RuleInstance } from "../types/rule-instance.interface";
2
+ import { ContentValidationResultType } from "./base.validation-rule";
3
+ import { ContentValueType } from "@platecms/delta-types";
4
+ export declare function validationFunctionFromValidateValue<TRuleInstanceSettings>(validateValue: (value: ContentValueType, ruleInstance: RuleInstance<TRuleInstanceSettings>) => ContentValidationResultType): <TRuleInstance extends RuleInstance<TRuleInstanceSettings> = RuleInstance<TRuleInstanceSettings>>(values: ContentValueType[], ruleInstance: TRuleInstance) => ContentValidationResultType[];
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validationFunctionFromValidateValue = validationFunctionFromValidateValue;
4
+ function validationFunctionFromValidateValue(validateValue) {
5
+ return function validate(values, ruleInstance) {
6
+ return values.map((value) => validateValue(value, ruleInstance));
7
+ };
8
+ }
9
+ //# sourceMappingURL=validation-rule-function.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-rule-function.factory.js","sourceRoot":"","sources":["../../../../../../../packages/validation/src/lib/validation-rules/validation-rule-function.factory.ts"],"names":[],"mappings":";;AAWA,kFAWC;AAXD,SAAgB,mCAAmC,CACjD,aAGgC;IAEhC,OAAO,SAAS,QAAQ,CAEtB,MAA0B,EAAE,YAA2B;QACvD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { RuleInstance } from "../types/rule-instance.interface";
2
+ import { RuleType } from "../types/rule-types.enum";
3
+ import { BaseValidationRule, ContentValidationResultType } from "./base.validation-rule";
4
+ import { ContentValueType, ContentValueTypeName } from "@platecms/delta-types";
5
+ export declare function validateValueValueType(value: ContentValueType, ruleInstance: RuleInstance<ValueTypeValidationRuleSettings>): ContentValidationResultType;
6
+ export declare const validateValueType: <TRuleInstance extends RuleInstance<ValueTypeValidationRuleSettings> = RuleInstance<ValueTypeValidationRuleSettings>>(values: ContentValueType[], ruleInstance: TRuleInstance) => ContentValidationResultType[];
7
+ export declare class ValueTypeValidationRule extends BaseValidationRule<ValueTypeValidationRuleSettings> {
8
+ readonly ruleType: RuleType;
9
+ validate(values: ContentValueType[]): ContentValidationResultType[];
10
+ }
11
+ export interface ValueTypeValidationRuleSettings {
12
+ allowedTypes: ContentValueTypeName<ContentValueType>[];
13
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValueTypeValidationRule = exports.validateValueType = void 0;
4
+ exports.validateValueValueType = validateValueValueType;
5
+ const content_validation_error_detail_1 = require("../errors/content-validation-error-detail");
6
+ const rule_types_enum_1 = require("../types/rule-types.enum");
7
+ const base_validation_rule_1 = require("./base.validation-rule");
8
+ const validation_rule_function_factory_1 = require("./validation-rule-function.factory");
9
+ const delta_cast_1 = require("@platecms/delta-cast");
10
+ const delta_types_1 = require("@platecms/delta-types");
11
+ const delta_plate_resource_notation_1 = require("@platecms/delta-plate-resource-notation");
12
+ const prnResourceTypeToContentValueTypeNameMap = {
13
+ "content-item": delta_types_1.ContentValueTypeNames.CONTENT_ITEM,
14
+ asset: delta_types_1.ContentValueTypeNames.ASSET,
15
+ "path-part": delta_types_1.ContentValueTypeNames.PATH_PART,
16
+ "grid-placement": delta_types_1.ContentValueTypeNames.GRID_PLACEMENT,
17
+ };
18
+ function validateValueValueType(value, ruleInstance) {
19
+ if (value instanceof Date && ruleInstance.settings.allowedTypes.includes(delta_types_1.ContentValueTypeNames.DATE)) {
20
+ return true;
21
+ }
22
+ try {
23
+ (0, delta_cast_1.validateCast)(value);
24
+ if (ruleInstance.settings.allowedTypes.includes(delta_types_1.ContentValueTypeNames.SMART_TEXT)) {
25
+ return true;
26
+ }
27
+ }
28
+ catch (error) {
29
+ if (!(error instanceof delta_cast_1.InvalidCastError)) {
30
+ throw error;
31
+ }
32
+ }
33
+ if (value instanceof delta_plate_resource_notation_1.PRN &&
34
+ ruleInstance.settings.allowedTypes.includes(prnResourceTypeToContentValueTypeNameMap[value.resourceType])) {
35
+ return true;
36
+ }
37
+ if (ruleInstance.settings.allowedTypes.includes((typeof value).toUpperCase())) {
38
+ return true;
39
+ }
40
+ return new content_validation_error_detail_1.ContentValidationErrorDetail(`The value must be of the correct type.`, ruleInstance);
41
+ }
42
+ exports.validateValueType = (0, validation_rule_function_factory_1.validationFunctionFromValidateValue)(validateValueValueType);
43
+ class ValueTypeValidationRule extends base_validation_rule_1.BaseValidationRule {
44
+ constructor() {
45
+ super(...arguments);
46
+ this.ruleType = rule_types_enum_1.RuleType.VALUE_TYPE;
47
+ }
48
+ validate(values) {
49
+ return (0, exports.validateValueType)(values, this);
50
+ }
51
+ }
52
+ exports.ValueTypeValidationRule = ValueTypeValidationRule;
53
+ //# sourceMappingURL=value-type.validation-rule.js.map