1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.ArrayUnique = exports.arrayUnique = exports.ARRAY_UNIQUE = void 0;
|
4 | const ValidateBy_1 = require("../common/ValidateBy");
|
5 | exports.ARRAY_UNIQUE = 'arrayUnique';
|
6 |
|
7 |
|
8 |
|
9 |
|
10 | function arrayUnique(array, identifier) {
|
11 | if (!Array.isArray(array))
|
12 | return false;
|
13 | if (identifier) {
|
14 | array = array.map(o => (o != null ? identifier(o) : o));
|
15 | }
|
16 | const uniqueItems = array.filter((a, b, c) => c.indexOf(a) === b);
|
17 | return array.length === uniqueItems.length;
|
18 | }
|
19 | exports.arrayUnique = arrayUnique;
|
20 |
|
21 |
|
22 |
|
23 |
|
24 | function ArrayUnique(identifierOrOptions, validationOptions) {
|
25 | const identifier = typeof identifierOrOptions === 'function' ? identifierOrOptions : undefined;
|
26 | const options = typeof identifierOrOptions !== 'function' ? identifierOrOptions : validationOptions;
|
27 | return (0, ValidateBy_1.ValidateBy)({
|
28 | name: exports.ARRAY_UNIQUE,
|
29 | validator: {
|
30 | validate: (value, args) => arrayUnique(value, identifier),
|
31 | defaultMessage: (0, ValidateBy_1.buildMessage)(eachPrefix => eachPrefix + "All $property's elements must be unique", options),
|
32 | },
|
33 | }, options);
|
34 | }
|
35 | exports.ArrayUnique = ArrayUnique;
|
36 |
|
\ | No newline at end of file |