@aenode/prop 0.0.23 → 0.0.39
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.
- package/README.md +12 -16
- package/assets/favicon.svg +1 -1
- package/bin/prop.mjs +3 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/common/base-dto-class.d.ts +4 -0
- package/dist/lib/common/base-dto-class.d.ts.map +1 -0
- package/dist/lib/common/base-dto-class.js +7 -0
- package/dist/lib/common/base-dto-class.js.map +1 -0
- package/dist/lib/common/global-validation-pipe.d.ts +3 -0
- package/dist/lib/common/global-validation-pipe.d.ts.map +1 -0
- package/dist/lib/common/global-validation-pipe.js +34 -0
- package/dist/lib/common/global-validation-pipe.js.map +1 -0
- package/dist/lib/common/message.dto.d.ts +4 -0
- package/dist/lib/common/message.dto.d.ts.map +1 -0
- package/dist/lib/common/message.dto.js +11 -0
- package/dist/lib/common/message.dto.js.map +1 -0
- package/dist/lib/common/validation-error-response.dto.d.ts +10 -0
- package/dist/lib/common/validation-error-response.dto.d.ts.map +1 -0
- package/dist/lib/common/validation-error-response.dto.js +44 -0
- package/dist/lib/common/validation-error-response.dto.js.map +1 -0
- package/dist/lib/default-value-transformer.d.ts +9 -0
- package/dist/lib/default-value-transformer.d.ts.map +1 -0
- package/dist/lib/default-value-transformer.js +22 -0
- package/dist/lib/default-value-transformer.js.map +1 -0
- package/dist/lib/index.d.ts +27 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +29 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/json-transformer.d.ts +2 -0
- package/dist/lib/json-transformer.d.ts.map +1 -0
- package/dist/lib/json-transformer.js +14 -0
- package/dist/lib/json-transformer.js.map +1 -0
- package/dist/lib/prop-boolean.d.ts +17 -0
- package/dist/lib/prop-boolean.d.ts.map +1 -0
- package/dist/lib/prop-boolean.js +39 -0
- package/dist/lib/prop-boolean.js.map +1 -0
- package/dist/lib/prop-common.d.ts +15 -0
- package/dist/lib/prop-common.d.ts.map +1 -0
- package/dist/lib/prop-common.js +43 -0
- package/dist/lib/prop-common.js.map +1 -0
- package/dist/lib/prop-date.d.ts +17 -0
- package/dist/lib/prop-date.d.ts.map +1 -0
- package/dist/lib/prop-date.js +41 -0
- package/dist/lib/prop-date.js.map +1 -0
- package/dist/lib/prop-enum.d.ts +17 -0
- package/dist/lib/prop-enum.d.ts.map +1 -0
- package/dist/lib/prop-enum.js +36 -0
- package/dist/lib/prop-enum.js.map +1 -0
- package/dist/lib/prop-number.d.ts +19 -0
- package/dist/lib/prop-number.d.ts.map +1 -0
- package/dist/lib/prop-number.js +62 -0
- package/dist/lib/prop-number.js.map +1 -0
- package/dist/lib/prop-object-validation.d.ts +9 -0
- package/dist/lib/prop-object-validation.d.ts.map +1 -0
- package/dist/lib/prop-object-validation.js +24 -0
- package/dist/lib/prop-object-validation.js.map +1 -0
- package/dist/lib/prop-object.d.ts +18 -0
- package/dist/lib/prop-object.d.ts.map +1 -0
- package/dist/lib/prop-object.js +53 -0
- package/dist/lib/prop-object.js.map +1 -0
- package/dist/lib/prop-options.d.ts +67 -0
- package/dist/lib/prop-options.d.ts.map +1 -0
- package/dist/lib/prop-options.js +3 -0
- package/dist/lib/prop-options.js.map +1 -0
- package/dist/lib/prop-string.d.ts +19 -0
- package/dist/lib/prop-string.d.ts.map +1 -0
- package/dist/lib/prop-string.js +112 -0
- package/dist/lib/prop-string.js.map +1 -0
- package/dist/lib/prop-validation.d.ts +10 -0
- package/dist/lib/prop-validation.d.ts.map +1 -0
- package/dist/lib/prop-validation.js +75 -0
- package/dist/lib/prop-validation.js.map +1 -0
- package/dist/lib/prop.d.ts +3 -0
- package/dist/lib/prop.d.ts.map +1 -0
- package/dist/lib/prop.js +13 -0
- package/dist/lib/prop.js.map +1 -0
- package/dist/lib/test-helpers.d.ts +3 -0
- package/dist/lib/test-helpers.d.ts.map +1 -0
- package/dist/lib/test-helpers.js +19 -0
- package/dist/lib/test-helpers.js.map +1 -0
- package/dist/lib/to-api-property-optionts.d.ts +4 -0
- package/dist/lib/to-api-property-optionts.d.ts.map +1 -0
- package/dist/lib/to-api-property-optionts.js +29 -0
- package/dist/lib/to-api-property-optionts.js.map +1 -0
- package/dist/lib/validators/index.d.ts +8 -0
- package/dist/lib/validators/index.d.ts.map +1 -0
- package/dist/lib/validators/index.js +10 -0
- package/dist/lib/validators/index.js.map +1 -0
- package/dist/lib/validators/is-relative-path.d.ts +3 -0
- package/dist/lib/validators/is-relative-path.d.ts.map +1 -0
- package/dist/lib/validators/is-relative-path.js +26 -0
- package/dist/lib/validators/is-relative-path.js.map +1 -0
- package/dist/lib/validators/less-than.d.ts +3 -0
- package/dist/lib/validators/less-than.d.ts.map +1 -0
- package/dist/lib/validators/less-than.js +26 -0
- package/dist/lib/validators/less-than.js.map +1 -0
- package/dist/lib/validators/max-properties.d.ts +3 -0
- package/dist/lib/validators/max-properties.d.ts.map +1 -0
- package/dist/lib/validators/max-properties.js +29 -0
- package/dist/lib/validators/max-properties.js.map +1 -0
- package/dist/lib/validators/min-properties.d.ts +3 -0
- package/dist/lib/validators/min-properties.d.ts.map +1 -0
- package/dist/lib/validators/min-properties.js +29 -0
- package/dist/lib/validators/min-properties.js.map +1 -0
- package/dist/lib/validators/more-than.d.ts +3 -0
- package/dist/lib/validators/more-than.d.ts.map +1 -0
- package/dist/lib/validators/more-than.js +26 -0
- package/dist/lib/validators/more-than.js.map +1 -0
- package/dist/lib/validators/not-with.d.ts +2 -0
- package/dist/lib/validators/not-with.d.ts.map +1 -0
- package/dist/lib/validators/not-with.js +25 -0
- package/dist/lib/validators/not-with.js.map +1 -0
- package/dist/lib/validators/not-without.d.ts +2 -0
- package/dist/lib/validators/not-without.d.ts.map +1 -0
- package/dist/lib/validators/not-without.js +25 -0
- package/dist/lib/validators/not-without.js.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +4 -0
- package/dist/main.js.map +1 -0
- package/package.json +24 -41
- package/dist/graphql/filter-dtos.d.ts +0 -69
- package/dist/graphql/filter-dtos.d.ts.map +0 -1
- package/dist/graphql/filter-dtos.js +0 -370
- package/dist/graphql/filter-dtos.js.map +0 -1
- package/dist/graphql/index.d.ts +0 -10
- package/dist/graphql/index.d.ts.map +0 -1
- package/dist/graphql/index.js +0 -12
- package/dist/graphql/index.js.map +0 -1
- package/dist/graphql/input-type.d.ts +0 -2
- package/dist/graphql/input-type.d.ts.map +0 -1
- package/dist/graphql/input-type.js +0 -8
- package/dist/graphql/input-type.js.map +0 -1
- package/dist/graphql/object-type.d.ts +0 -2
- package/dist/graphql/object-type.d.ts.map +0 -1
- package/dist/graphql/object-type.js +0 -8
- package/dist/graphql/object-type.js.map +0 -1
- package/dist/graphql/prop-order-count.d.ts +0 -2
- package/dist/graphql/prop-order-count.d.ts.map +0 -1
- package/dist/graphql/prop-order-count.js +0 -11
- package/dist/graphql/prop-order-count.js.map +0 -1
- package/dist/graphql/prop-order.d.ts +0 -2
- package/dist/graphql/prop-order.d.ts.map +0 -1
- package/dist/graphql/prop-order.js +0 -11
- package/dist/graphql/prop-order.js.map +0 -1
- package/dist/graphql/prop.d.ts +0 -9
- package/dist/graphql/prop.d.ts.map +0 -1
- package/dist/graphql/prop.js +0 -38
- package/dist/graphql/prop.js.map +0 -1
- package/dist/graphql/register-enums.d.ts +0 -2
- package/dist/graphql/register-enums.d.ts.map +0 -1
- package/dist/graphql/register-enums.js +0 -11
- package/dist/graphql/register-enums.js.map +0 -1
- package/dist/graphql/sort-count.dto.d.ts +0 -5
- package/dist/graphql/sort-count.dto.d.ts.map +0 -1
- package/dist/graphql/sort-count.dto.js +0 -22
- package/dist/graphql/sort-count.dto.js.map +0 -1
- package/dist/peers.d.ts +0 -2
- package/dist/peers.d.ts.map +0 -1
- package/dist/peers.js +0 -3
- package/dist/peers.js.map +0 -1
- package/dist/restapi/filter-dtos.d.ts +0 -44
- package/dist/restapi/filter-dtos.d.ts.map +0 -1
- package/dist/restapi/filter-dtos.js +0 -202
- package/dist/restapi/filter-dtos.js.map +0 -1
- package/dist/restapi/index.d.ts +0 -7
- package/dist/restapi/index.d.ts.map +0 -1
- package/dist/restapi/index.js +0 -9
- package/dist/restapi/index.js.map +0 -1
- package/dist/restapi/prop-order-count.d.ts +0 -2
- package/dist/restapi/prop-order-count.d.ts.map +0 -1
- package/dist/restapi/prop-order-count.js +0 -11
- package/dist/restapi/prop-order-count.js.map +0 -1
- package/dist/restapi/prop-order.d.ts +0 -2
- package/dist/restapi/prop-order.d.ts.map +0 -1
- package/dist/restapi/prop-order.js +0 -11
- package/dist/restapi/prop-order.js.map +0 -1
- package/dist/restapi/prop.d.ts +0 -3
- package/dist/restapi/prop.d.ts.map +0 -1
- package/dist/restapi/prop.js +0 -11
- package/dist/restapi/prop.js.map +0 -1
- package/dist/restapi/sort-count.dto.d.ts +0 -5
- package/dist/restapi/sort-count.dto.d.ts.map +0 -1
- package/dist/restapi/sort-count.dto.js +0 -18
- package/dist/restapi/sort-count.dto.js.map +0 -1
- package/dist/restapi/to-api-property-options.d.ts +0 -4
- package/dist/restapi/to-api-property-options.d.ts.map +0 -1
- package/dist/restapi/to-api-property-options.js +0 -37
- package/dist/restapi/to-api-property-options.js.map +0 -1
- package/license +0 -70
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prop.d.ts","sourceRoot":"","sources":["../../src/lib/prop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIrD,wBAAgB,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAQ7D"}
|
package/dist/lib/prop.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ApiProperty } from '@aenode/nest/swagger';
|
|
2
|
+
import { PropValidation } from './prop-validation.js';
|
|
3
|
+
import { toApiProeprtyOptions } from './to-api-property-optionts.js';
|
|
4
|
+
export function Prop(options) {
|
|
5
|
+
return (...args)=>{
|
|
6
|
+
options ??= {};
|
|
7
|
+
const apiPropertyOptions = toApiProeprtyOptions(options, ...args);
|
|
8
|
+
PropValidation(options)(...args);
|
|
9
|
+
ApiProperty(apiPropertyOptions)(...args);
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=prop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/prop.ts"],"sourcesContent":["import { ApiProperty } from '@aenode/nest/swagger';\nimport type { PropOptions } from './prop-options.js';\nimport { PropValidation } from './prop-validation.js';\nimport { toApiProeprtyOptions } from './to-api-property-optionts.js';\n\nexport function Prop(options?: PropOptions): PropertyDecorator {\n return (...args) => {\n options ??= {};\n const apiPropertyOptions = toApiProeprtyOptions(options, ...args);\n\n PropValidation(options)(...args);\n ApiProperty(apiPropertyOptions)(...args);\n };\n}\n"],"names":["ApiProperty","PropValidation","toApiProeprtyOptions","Prop","options","args","apiPropertyOptions"],"mappings":"AAAA,SAASA,WAAW,QAAQ,uBAAuB;AAEnD,SAASC,cAAc,QAAQ,uBAAuB;AACtD,SAASC,oBAAoB,QAAQ,gCAAgC;AAErE,OAAO,SAASC,KAAKC,OAAqB;IACxC,OAAO,CAAC,GAAGC;QACTD,YAAY,CAAC;QACb,MAAME,qBAAqBJ,qBAAqBE,YAAYC;QAE5DJ,eAAeG,YAAYC;QAC3BL,YAAYM,uBAAuBD;IACrC;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../src/lib/test-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EAEtB,MAAM,0BAA0B,CAAC;AAGlC,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EACnD,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,EACzB,KAAK,EAAE,CAAC,GACP,MAAM,EAAE,CAgBV"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { plainToInstance } from '@aenode/nest/transformer';
|
|
2
|
+
import { validateSync } from '@aenode/nest/validator';
|
|
3
|
+
export function transformAndValidate(type, value) {
|
|
4
|
+
const instance = plainToInstance(type, value, {
|
|
5
|
+
excludeExtraneousValues: true,
|
|
6
|
+
exposeUnsetFields: true,
|
|
7
|
+
exposeDefaultValues: true
|
|
8
|
+
});
|
|
9
|
+
const foundErrors = validateSync(instance, {});
|
|
10
|
+
const foundConstraints = foundErrors.flatMap((e)=>[
|
|
11
|
+
e,
|
|
12
|
+
...e.children ?? []
|
|
13
|
+
]).flatMap((e)=>{
|
|
14
|
+
return Object.keys(e.constraints ?? {});
|
|
15
|
+
});
|
|
16
|
+
return foundConstraints;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=test-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/test-helpers.ts"],"sourcesContent":["import {\n type ClassConstructor,\n plainToInstance,\n} from '@aenode/nest/transformer';\nimport { validateSync } from '@aenode/nest/validator';\n\nexport function transformAndValidate<T extends object>(\n type: ClassConstructor<T>,\n value: T,\n): string[] {\n const instance = plainToInstance(type, value, {\n excludeExtraneousValues: true,\n exposeUnsetFields: true,\n exposeDefaultValues: true,\n });\n\n const foundErrors = validateSync(instance, {});\n\n const foundConstraints = foundErrors\n .flatMap((e) => [e, ...(e.children ?? [])])\n .flatMap((e) => {\n return Object.keys(e.constraints ?? {});\n });\n\n return foundConstraints;\n}\n"],"names":["plainToInstance","validateSync","transformAndValidate","type","value","instance","excludeExtraneousValues","exposeUnsetFields","exposeDefaultValues","foundErrors","foundConstraints","flatMap","e","children","Object","keys","constraints"],"mappings":"AAAA,SAEEA,eAAe,QACV,2BAA2B;AAClC,SAASC,YAAY,QAAQ,yBAAyB;AAEtD,OAAO,SAASC,qBACdC,IAAyB,EACzBC,KAAQ;IAER,MAAMC,WAAWL,gBAAgBG,MAAMC,OAAO;QAC5CE,yBAAyB;QACzBC,mBAAmB;QACnBC,qBAAqB;IACvB;IAEA,MAAMC,cAAcR,aAAaI,UAAU,CAAC;IAE5C,MAAMK,mBAAmBD,YACtBE,OAAO,CAAC,CAACC,IAAM;YAACA;eAAOA,EAAEC,QAAQ,IAAI,EAAE;SAAE,EACzCF,OAAO,CAAC,CAACC;QACR,OAAOE,OAAOC,IAAI,CAACH,EAAEI,WAAW,IAAI,CAAC;IACvC;IAEF,OAAON;AACT"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ApiPropertyOptions } from '@aenode/nest/swagger';
|
|
2
|
+
import type { PropOptions } from './prop-options.js';
|
|
3
|
+
export declare function toApiProeprtyOptions(options: PropOptions, ...args: Parameters<PropertyDecorator>): ApiPropertyOptions;
|
|
4
|
+
//# sourceMappingURL=to-api-property-optionts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-api-property-optionts.d.ts","sourceRoot":"","sources":["../../src/lib/to-api-property-optionts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,WAAW,EACpB,GAAG,IAAI,EAAE,UAAU,CAAC,iBAAiB,CAAC,GACrC,kBAAkB,CAiCpB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export function toApiProeprtyOptions(options, ...args) {
|
|
2
|
+
const inferedType = Reflect.getMetadata('design:type', ...args);
|
|
3
|
+
const isArrayType = inferedType === Array;
|
|
4
|
+
const apiOptions = {
|
|
5
|
+
required: options.required === true,
|
|
6
|
+
nullable: options.required !== true,
|
|
7
|
+
minimum: options.max,
|
|
8
|
+
maximum: options.max,
|
|
9
|
+
minLength: options.minLength,
|
|
10
|
+
maxLength: options.maxLength,
|
|
11
|
+
isArray: isArrayType,
|
|
12
|
+
enum: options.enum,
|
|
13
|
+
minItems: options.minItems,
|
|
14
|
+
maxItems: options.maxItems,
|
|
15
|
+
example: options.example,
|
|
16
|
+
examples: options.examples,
|
|
17
|
+
description: options.description,
|
|
18
|
+
default: options.default ?? options.defaultValue ?? null
|
|
19
|
+
};
|
|
20
|
+
if (isArrayType === true) {
|
|
21
|
+
if (!options.type && !options.enum) {
|
|
22
|
+
throw new Error('Array property must provide type, enum, or isIn option!');
|
|
23
|
+
}
|
|
24
|
+
apiOptions.type = options.type;
|
|
25
|
+
}
|
|
26
|
+
return apiOptions;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=to-api-property-optionts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/to-api-property-optionts.ts"],"sourcesContent":["import type { ApiPropertyOptions } from '@aenode/nest/swagger';\nimport type { PropOptions } from './prop-options.js';\n\nexport function toApiProeprtyOptions(\n options: PropOptions,\n ...args: Parameters<PropertyDecorator>\n): ApiPropertyOptions {\n const inferedType = Reflect.getMetadata('design:type', ...args);\n\n const isArrayType = inferedType === Array;\n\n const apiOptions: ApiPropertyOptions = {\n required: options.required === true,\n nullable: options.required !== true,\n minimum: options.max,\n maximum: options.max,\n minLength: options.minLength,\n maxLength: options.maxLength,\n isArray: isArrayType,\n enum: options.enum,\n minItems: options.minItems,\n maxItems: options.maxItems,\n example: options.example,\n examples: options.examples,\n description: options.description,\n default: options.default ?? options.defaultValue ?? null,\n };\n\n if (isArrayType === true) {\n if (!options.type && !options.enum) {\n throw new Error(\n 'Array property must provide type, enum, or isIn option!',\n );\n }\n\n apiOptions.type = options.type;\n }\n\n return apiOptions;\n}\n"],"names":["toApiProeprtyOptions","options","args","inferedType","Reflect","getMetadata","isArrayType","Array","apiOptions","required","nullable","minimum","max","maximum","minLength","maxLength","isArray","enum","minItems","maxItems","example","examples","description","default","defaultValue","type","Error"],"mappings":"AAGA,OAAO,SAASA,qBACdC,OAAoB,EACpB,GAAGC,IAAmC;IAEtC,MAAMC,cAAcC,QAAQC,WAAW,CAAC,kBAAkBH;IAE1D,MAAMI,cAAcH,gBAAgBI;IAEpC,MAAMC,aAAiC;QACrCC,UAAUR,QAAQQ,QAAQ,KAAK;QAC/BC,UAAUT,QAAQQ,QAAQ,KAAK;QAC/BE,SAASV,QAAQW,GAAG;QACpBC,SAASZ,QAAQW,GAAG;QACpBE,WAAWb,QAAQa,SAAS;QAC5BC,WAAWd,QAAQc,SAAS;QAC5BC,SAASV;QACTW,MAAMhB,QAAQgB,IAAI;QAClBC,UAAUjB,QAAQiB,QAAQ;QAC1BC,UAAUlB,QAAQkB,QAAQ;QAC1BC,SAASnB,QAAQmB,OAAO;QACxBC,UAAUpB,QAAQoB,QAAQ;QAC1BC,aAAarB,QAAQqB,WAAW;QAChCC,SAAStB,QAAQsB,OAAO,IAAItB,QAAQuB,YAAY,IAAI;IACtD;IAEA,IAAIlB,gBAAgB,MAAM;QACxB,IAAI,CAACL,QAAQwB,IAAI,IAAI,CAACxB,QAAQgB,IAAI,EAAE;YAClC,MAAM,IAAIS,MACR;QAEJ;QAEAlB,WAAWiB,IAAI,GAAGxB,QAAQwB,IAAI;IAChC;IAEA,OAAOjB;AACT"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './is-relative-path.js';
|
|
2
|
+
export * from './less-than.js';
|
|
3
|
+
export * from './max-properties.js';
|
|
4
|
+
export * from './min-properties.js';
|
|
5
|
+
export * from './more-than.js';
|
|
6
|
+
export * from './not-with.js';
|
|
7
|
+
export * from './not-without.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/validators/index.ts"],"names":[],"mappings":"AACA,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// @index(['./**/*.ts', '!./**/*.spec.ts', '!./**/_*.ts', '!./**/generated/**'], f => `export * from '${f.path}.js'`)
|
|
2
|
+
export * from './is-relative-path.js';
|
|
3
|
+
export * from './less-than.js';
|
|
4
|
+
export * from './max-properties.js';
|
|
5
|
+
export * from './min-properties.js';
|
|
6
|
+
export * from './more-than.js';
|
|
7
|
+
export * from './not-with.js';
|
|
8
|
+
export * from './not-without.js';
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/validators/index.ts"],"sourcesContent":["// @index(['./**/*.ts', '!./**/*.spec.ts', '!./**/_*.ts', '!./**/generated/**'], f => `export * from '${f.path}.js'`)\nexport * from './is-relative-path.js';\nexport * from './less-than.js';\nexport * from './max-properties.js';\nexport * from './min-properties.js';\nexport * from './more-than.js';\nexport * from './not-with.js';\nexport * from './not-without.js';\n"],"names":[],"mappings":"AAAA,qHAAqH;AACrH,cAAc,wBAAwB;AACtC,cAAc,iBAAiB;AAC/B,cAAc,sBAAsB;AACpC,cAAc,sBAAsB;AACpC,cAAc,iBAAiB;AAC/B,cAAc,gBAAgB;AAC9B,cAAc,mBAAmB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-relative-path.d.ts","sourceRoot":"","sources":["../../../src/lib/validators/is-relative-path.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,wBAAwB,CAAC;AAGhC,wBAAgB,cAAc,CAC5B,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,iBAAiB,CAqBnB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// import { registerDecorator, type ValidationOptions } from 'class-validator';
|
|
2
|
+
import { registerDecorator } from '@aenode/nest/validator';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
export function IsRelativePath(validationOptions) {
|
|
5
|
+
return (object, propertyName)=>{
|
|
6
|
+
registerDecorator({
|
|
7
|
+
name: 'isRelativePath',
|
|
8
|
+
target: object.constructor,
|
|
9
|
+
propertyName: propertyName,
|
|
10
|
+
options: {
|
|
11
|
+
...validationOptions,
|
|
12
|
+
message (args) {
|
|
13
|
+
return `${args.property} should be a realative path`;
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
validator: {
|
|
17
|
+
validate (value) {
|
|
18
|
+
if (typeof value !== 'string') return false;
|
|
19
|
+
return !path.isAbsolute(value);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=is-relative-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/validators/is-relative-path.ts"],"sourcesContent":["// import { registerDecorator, type ValidationOptions } from 'class-validator';\nimport {\n type ValidationOptions,\n registerDecorator,\n} from '@aenode/nest/validator';\nimport path from 'node:path';\n\nexport function IsRelativePath(\n validationOptions?: ValidationOptions,\n): PropertyDecorator {\n return (object, propertyName) => {\n registerDecorator({\n name: 'isRelativePath',\n target: object.constructor,\n propertyName: propertyName as string,\n options: {\n ...validationOptions,\n message(args) {\n return `${args.property} should be a realative path`;\n },\n },\n validator: {\n validate(value: unknown) {\n if (typeof value !== 'string') return false;\n\n return !path.isAbsolute(value);\n },\n },\n });\n };\n}\n"],"names":["registerDecorator","path","IsRelativePath","validationOptions","object","propertyName","name","target","options","message","args","property","validator","validate","value","isAbsolute"],"mappings":"AAAA,+EAA+E;AAC/E,SAEEA,iBAAiB,QACZ,yBAAyB;AAChC,OAAOC,UAAU,YAAY;AAE7B,OAAO,SAASC,eACdC,iBAAqC;IAErC,OAAO,CAACC,QAAQC;QACdL,kBAAkB;YAChBM,MAAM;YACNC,QAAQH,OAAO,WAAW;YAC1BC,cAAcA;YACdG,SAAS;gBACP,GAAGL,iBAAiB;gBACpBM,SAAQC,IAAI;oBACV,OAAO,GAAGA,KAAKC,QAAQ,CAAC,2BAA2B,CAAC;gBACtD;YACF;YACAC,WAAW;gBACTC,UAASC,KAAc;oBACrB,IAAI,OAAOA,UAAU,UAAU,OAAO;oBAEtC,OAAO,CAACb,KAAKc,UAAU,CAACD;gBAC1B;YACF;QACF;IACF;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"less-than.d.ts","sourceRoot":"","sources":["../../../src/lib/validators/less-than.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,wBAAwB,CAAC;AAEhC,wBAAgB,QAAQ,CACtB,UAAU,EAAE,MAAM,EAAE,EACpB,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,iBAAiB,CAyBnB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { registerDecorator } from '@aenode/nest/validator';
|
|
2
|
+
export function LessThan(properties, validationOptions) {
|
|
3
|
+
return (object, propertyName)=>{
|
|
4
|
+
registerDecorator({
|
|
5
|
+
name: 'lessThan',
|
|
6
|
+
target: object.constructor,
|
|
7
|
+
propertyName: propertyName,
|
|
8
|
+
options: {
|
|
9
|
+
...validationOptions,
|
|
10
|
+
message (args) {
|
|
11
|
+
return `${args.property} should be less than ${properties.join(', ')}`;
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
validator: {
|
|
15
|
+
validate (value, args) {
|
|
16
|
+
if (value !== undefined && value !== null) {
|
|
17
|
+
return properties.map((e)=>args?.object?.[e]).filter((e)=>e !== undefined && e !== null).every((e)=>value < e);
|
|
18
|
+
}
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=less-than.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/validators/less-than.ts"],"sourcesContent":["import {\n type ValidationOptions,\n registerDecorator,\n} from '@aenode/nest/validator';\n\nexport function LessThan(\n properties: string[],\n validationOptions?: ValidationOptions,\n): PropertyDecorator {\n return (object, propertyName) => {\n registerDecorator({\n name: 'lessThan',\n target: object.constructor,\n propertyName: propertyName as string,\n options: {\n ...validationOptions,\n message(args) {\n return `${args.property} should be less than ${properties.join(', ')}`;\n },\n },\n validator: {\n validate(value: unknown, args) {\n if (value !== undefined && value !== null) {\n return properties\n .map((e: string) => (args?.object as { [e]: unknown })?.[e])\n .filter((e) => e !== undefined && e !== null)\n .every((e) => value < e);\n }\n return true;\n },\n },\n });\n };\n}\n"],"names":["registerDecorator","LessThan","properties","validationOptions","object","propertyName","name","target","options","message","args","property","join","validator","validate","value","undefined","map","e","filter","every"],"mappings":"AAAA,SAEEA,iBAAiB,QACZ,yBAAyB;AAEhC,OAAO,SAASC,SACdC,UAAoB,EACpBC,iBAAqC;IAErC,OAAO,CAACC,QAAQC;QACdL,kBAAkB;YAChBM,MAAM;YACNC,QAAQH,OAAO,WAAW;YAC1BC,cAAcA;YACdG,SAAS;gBACP,GAAGL,iBAAiB;gBACpBM,SAAQC,IAAI;oBACV,OAAO,GAAGA,KAAKC,QAAQ,CAAC,qBAAqB,EAAET,WAAWU,IAAI,CAAC,OAAO;gBACxE;YACF;YACAC,WAAW;gBACTC,UAASC,KAAc,EAAEL,IAAI;oBAC3B,IAAIK,UAAUC,aAAaD,UAAU,MAAM;wBACzC,OAAOb,WACJe,GAAG,CAAC,CAACC,IAAeR,MAAMN,QAA6B,CAACc,EAAE,EAC1DC,MAAM,CAAC,CAACD,IAAMA,MAAMF,aAAaE,MAAM,MACvCE,KAAK,CAAC,CAACF,IAAMH,QAAQG;oBAC1B;oBACA,OAAO;gBACT;YACF;QACF;IACF;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"max-properties.d.ts","sourceRoot":"","sources":["../../../src/lib/validators/max-properties.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,wBAAwB,CAAC;AAEhC,wBAAgB,aAAa,CAC3B,aAAa,EAAE,MAAM,EACrB,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,iBAAiB,CA0BnB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { registerDecorator } from '@aenode/nest/validator';
|
|
2
|
+
export function MaxProperties(maxProperties, validationOptions) {
|
|
3
|
+
return (object, propertyName)=>{
|
|
4
|
+
registerDecorator({
|
|
5
|
+
name: 'maxProperties',
|
|
6
|
+
target: object.constructor,
|
|
7
|
+
propertyName: propertyName,
|
|
8
|
+
options: {
|
|
9
|
+
...validationOptions,
|
|
10
|
+
message (args) {
|
|
11
|
+
return `${args.property} should have at most ${maxProperties} properties`;
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
validator: {
|
|
15
|
+
validate (value) {
|
|
16
|
+
if (typeof value !== 'object') {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
if (value === undefined || value === null) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
return Object.keys(value).length <= maxProperties;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=max-properties.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/validators/max-properties.ts"],"sourcesContent":["import {\n type ValidationOptions,\n registerDecorator,\n} from '@aenode/nest/validator';\n\nexport function MaxProperties(\n maxProperties: number,\n validationOptions?: ValidationOptions,\n): PropertyDecorator {\n return (object, propertyName) => {\n registerDecorator({\n name: 'maxProperties',\n target: object.constructor,\n propertyName: propertyName as string,\n options: {\n ...validationOptions,\n message(args) {\n return `${args.property} should have at most ${maxProperties} properties`;\n },\n },\n validator: {\n validate(value: unknown) {\n if (typeof value !== 'object') {\n return true;\n }\n\n if (value === undefined || value === null) {\n return true;\n }\n return Object.keys(value).length <= maxProperties;\n },\n },\n });\n };\n}\n"],"names":["registerDecorator","MaxProperties","maxProperties","validationOptions","object","propertyName","name","target","options","message","args","property","validator","validate","value","undefined","Object","keys","length"],"mappings":"AAAA,SAEEA,iBAAiB,QACZ,yBAAyB;AAEhC,OAAO,SAASC,cACdC,aAAqB,EACrBC,iBAAqC;IAErC,OAAO,CAACC,QAAQC;QACdL,kBAAkB;YAChBM,MAAM;YACNC,QAAQH,OAAO,WAAW;YAC1BC,cAAcA;YACdG,SAAS;gBACP,GAAGL,iBAAiB;gBACpBM,SAAQC,IAAI;oBACV,OAAO,GAAGA,KAAKC,QAAQ,CAAC,qBAAqB,EAAET,cAAc,WAAW,CAAC;gBAC3E;YACF;YACAU,WAAW;gBACTC,UAASC,KAAc;oBACrB,IAAI,OAAOA,UAAU,UAAU;wBAC7B,OAAO;oBACT;oBAEA,IAAIA,UAAUC,aAAaD,UAAU,MAAM;wBACzC,OAAO;oBACT;oBACA,OAAOE,OAAOC,IAAI,CAACH,OAAOI,MAAM,IAAIhB;gBACtC;YACF;QACF;IACF;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"min-properties.d.ts","sourceRoot":"","sources":["../../../src/lib/validators/min-properties.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,wBAAwB,CAAC;AAEhC,wBAAgB,aAAa,CAC3B,aAAa,EAAE,MAAM,EACrB,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,iBAAiB,CA0BnB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { registerDecorator } from '@aenode/nest/validator';
|
|
2
|
+
export function MinProperties(minProperties, validationOptions) {
|
|
3
|
+
return (object, propertyName)=>{
|
|
4
|
+
registerDecorator({
|
|
5
|
+
name: 'minProperties',
|
|
6
|
+
target: object.constructor,
|
|
7
|
+
propertyName: propertyName,
|
|
8
|
+
options: {
|
|
9
|
+
...validationOptions,
|
|
10
|
+
message (args) {
|
|
11
|
+
return `${args.property} should have at least ${minProperties} properties`;
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
validator: {
|
|
15
|
+
validate (value) {
|
|
16
|
+
if (typeof value !== 'object') {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
if (value === undefined || value === null) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
return Object.keys(value).length >= minProperties;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=min-properties.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/validators/min-properties.ts"],"sourcesContent":["import {\n type ValidationOptions,\n registerDecorator,\n} from '@aenode/nest/validator';\n\nexport function MinProperties(\n minProperties: number,\n validationOptions?: ValidationOptions,\n): PropertyDecorator {\n return (object, propertyName) => {\n registerDecorator({\n name: 'minProperties',\n target: object.constructor,\n propertyName: propertyName as string,\n options: {\n ...validationOptions,\n message(args) {\n return `${args.property} should have at least ${minProperties} properties`;\n },\n },\n validator: {\n validate(value: unknown) {\n if (typeof value !== 'object') {\n return true;\n }\n\n if (value === undefined || value === null) {\n return true;\n }\n return Object.keys(value).length >= minProperties;\n },\n },\n });\n };\n}\n"],"names":["registerDecorator","MinProperties","minProperties","validationOptions","object","propertyName","name","target","options","message","args","property","validator","validate","value","undefined","Object","keys","length"],"mappings":"AAAA,SAEEA,iBAAiB,QACZ,yBAAyB;AAEhC,OAAO,SAASC,cACdC,aAAqB,EACrBC,iBAAqC;IAErC,OAAO,CAACC,QAAQC;QACdL,kBAAkB;YAChBM,MAAM;YACNC,QAAQH,OAAO,WAAW;YAC1BC,cAAcA;YACdG,SAAS;gBACP,GAAGL,iBAAiB;gBACpBM,SAAQC,IAAI;oBACV,OAAO,GAAGA,KAAKC,QAAQ,CAAC,sBAAsB,EAAET,cAAc,WAAW,CAAC;gBAC5E;YACF;YACAU,WAAW;gBACTC,UAASC,KAAc;oBACrB,IAAI,OAAOA,UAAU,UAAU;wBAC7B,OAAO;oBACT;oBAEA,IAAIA,UAAUC,aAAaD,UAAU,MAAM;wBACzC,OAAO;oBACT;oBACA,OAAOE,OAAOC,IAAI,CAACH,OAAOI,MAAM,IAAIhB;gBACtC;YACF;QACF;IACF;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"more-than.d.ts","sourceRoot":"","sources":["../../../src/lib/validators/more-than.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,wBAAwB,CAAC;AAEhC,wBAAgB,QAAQ,CACtB,UAAU,EAAE,MAAM,EAAE,EACpB,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,iBAAiB,CAyBnB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { registerDecorator } from '@aenode/nest/validator';
|
|
2
|
+
export function MoreThan(properties, validationOptions) {
|
|
3
|
+
return (object, propertyName)=>{
|
|
4
|
+
registerDecorator({
|
|
5
|
+
name: 'moreThan',
|
|
6
|
+
target: object.constructor,
|
|
7
|
+
propertyName: propertyName,
|
|
8
|
+
options: {
|
|
9
|
+
...validationOptions,
|
|
10
|
+
message (args) {
|
|
11
|
+
return `${args.property} should be more than ${properties.join(', ')}`;
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
validator: {
|
|
15
|
+
validate (value, args) {
|
|
16
|
+
if (value !== undefined && value !== null) {
|
|
17
|
+
return properties.map((e)=>args?.object?.[e]).filter((e)=>e !== undefined && e !== null).every((e)=>value > e);
|
|
18
|
+
}
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=more-than.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/validators/more-than.ts"],"sourcesContent":["import {\n type ValidationOptions,\n registerDecorator,\n} from '@aenode/nest/validator';\n\nexport function MoreThan(\n properties: string[],\n validationOptions?: ValidationOptions,\n): PropertyDecorator {\n return (object, propertyName) => {\n registerDecorator({\n name: 'moreThan',\n target: object.constructor,\n propertyName: propertyName as string,\n options: {\n ...validationOptions,\n message(args) {\n return `${args.property} should be more than ${properties.join(', ')}`;\n },\n },\n validator: {\n validate(value: unknown, args) {\n if (value !== undefined && value !== null) {\n return properties\n .map((e: string) => (args?.object as { [e]: unknown })?.[e])\n .filter((e) => e !== undefined && e !== null)\n .every((e) => value > e);\n }\n return true;\n },\n },\n });\n };\n}\n"],"names":["registerDecorator","MoreThan","properties","validationOptions","object","propertyName","name","target","options","message","args","property","join","validator","validate","value","undefined","map","e","filter","every"],"mappings":"AAAA,SAEEA,iBAAiB,QACZ,yBAAyB;AAEhC,OAAO,SAASC,SACdC,UAAoB,EACpBC,iBAAqC;IAErC,OAAO,CAACC,QAAQC;QACdL,kBAAkB;YAChBM,MAAM;YACNC,QAAQH,OAAO,WAAW;YAC1BC,cAAcA;YACdG,SAAS;gBACP,GAAGL,iBAAiB;gBACpBM,SAAQC,IAAI;oBACV,OAAO,GAAGA,KAAKC,QAAQ,CAAC,qBAAqB,EAAET,WAAWU,IAAI,CAAC,OAAO;gBACxE;YACF;YACAC,WAAW;gBACTC,UAASC,KAAc,EAAEL,IAAI;oBAC3B,IAAIK,UAAUC,aAAaD,UAAU,MAAM;wBACzC,OAAOb,WACJe,GAAG,CAAC,CAACC,IAAeR,MAAMN,QAA6B,CAACc,EAAE,EAC1DC,MAAM,CAAC,CAACD,IAAMA,MAAMF,aAAaE,MAAM,MACvCE,KAAK,CAAC,CAACF,IAAMH,QAAQG;oBAC1B;oBACA,OAAO;gBACT;YACF;QACF;IACF;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"not-with.d.ts","sourceRoot":"","sources":["../../../src/lib/validators/not-with.ts"],"names":[],"mappings":"AAEA,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAuB/D"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { registerDecorator } from '@aenode/nest/validator';
|
|
2
|
+
export function NotWith(properties) {
|
|
3
|
+
return (object, propertyName)=>{
|
|
4
|
+
registerDecorator({
|
|
5
|
+
name: 'notWith',
|
|
6
|
+
target: object.constructor,
|
|
7
|
+
propertyName: propertyName,
|
|
8
|
+
options: {
|
|
9
|
+
message (args) {
|
|
10
|
+
return `${args.property} cannot be used together with ${properties.join(', ')}`;
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
validator: {
|
|
14
|
+
validate (value, args) {
|
|
15
|
+
if (value !== undefined && value !== null) {
|
|
16
|
+
return !properties.map((e)=>args?.object?.[e]).some((e)=>e !== undefined && e !== null);
|
|
17
|
+
}
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=not-with.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/validators/not-with.ts"],"sourcesContent":["import { registerDecorator } from '@aenode/nest/validator';\n\nexport function NotWith(properties: string[]): PropertyDecorator {\n return (object, propertyName) => {\n registerDecorator({\n name: 'notWith',\n target: object.constructor,\n propertyName: propertyName as string,\n options: {\n message(args) {\n return `${args.property} cannot be used together with ${properties.join(', ')}`;\n },\n },\n validator: {\n validate(value: unknown, args) {\n if (value !== undefined && value !== null) {\n return !properties\n .map((e: string) => (args?.object as { [e]: unknown })?.[e])\n .some((e) => e !== undefined && e !== null);\n }\n return true;\n },\n },\n });\n };\n}\n"],"names":["registerDecorator","NotWith","properties","object","propertyName","name","target","options","message","args","property","join","validator","validate","value","undefined","map","e","some"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,yBAAyB;AAE3D,OAAO,SAASC,QAAQC,UAAoB;IAC1C,OAAO,CAACC,QAAQC;QACdJ,kBAAkB;YAChBK,MAAM;YACNC,QAAQH,OAAO,WAAW;YAC1BC,cAAcA;YACdG,SAAS;gBACPC,SAAQC,IAAI;oBACV,OAAO,GAAGA,KAAKC,QAAQ,CAAC,8BAA8B,EAAER,WAAWS,IAAI,CAAC,OAAO;gBACjF;YACF;YACAC,WAAW;gBACTC,UAASC,KAAc,EAAEL,IAAI;oBAC3B,IAAIK,UAAUC,aAAaD,UAAU,MAAM;wBACzC,OAAO,CAACZ,WACLc,GAAG,CAAC,CAACC,IAAeR,MAAMN,QAA6B,CAACc,EAAE,EAC1DC,IAAI,CAAC,CAACD,IAAMA,MAAMF,aAAaE,MAAM;oBAC1C;oBACA,OAAO;gBACT;YACF;QACF;IACF;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"not-without.d.ts","sourceRoot":"","sources":["../../../src/lib/validators/not-without.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,iBAAiB,CA+BlE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { registerDecorator } from '@aenode/nest/validator';
|
|
2
|
+
export function NotWithout(properties) {
|
|
3
|
+
return (object, propertyName)=>{
|
|
4
|
+
registerDecorator({
|
|
5
|
+
name: 'notWithout',
|
|
6
|
+
target: object.constructor,
|
|
7
|
+
propertyName: propertyName,
|
|
8
|
+
options: {
|
|
9
|
+
message (args) {
|
|
10
|
+
return `${args.property} cannot be used without ${properties.join(', ')}`;
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
validator: {
|
|
14
|
+
validate (value, args) {
|
|
15
|
+
if (value !== undefined && value !== null) {
|
|
16
|
+
return properties.map((targetProperty)=>args?.object?.[targetProperty]).every((targetValue)=>targetValue !== undefined && targetValue !== null);
|
|
17
|
+
}
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=not-without.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/validators/not-without.ts"],"sourcesContent":["import { registerDecorator } from '@aenode/nest/validator';\n\nexport function NotWithout(properties: string[]): PropertyDecorator {\n return (object, propertyName) => {\n registerDecorator({\n name: 'notWithout',\n target: object.constructor,\n propertyName: propertyName as string,\n options: {\n message(args) {\n return `${args.property} cannot be used without ${properties.join(', ')}`;\n },\n },\n validator: {\n validate(value: unknown, args) {\n if (value !== undefined && value !== null) {\n return properties\n .map(\n (targetProperty: string) =>\n (args?.object as { [targetProperty]: unknown })?.[\n targetProperty\n ],\n )\n .every(\n (targetValue) =>\n targetValue !== undefined && targetValue !== null,\n );\n }\n return true;\n },\n },\n });\n };\n}\n"],"names":["registerDecorator","NotWithout","properties","object","propertyName","name","target","options","message","args","property","join","validator","validate","value","undefined","map","targetProperty","every","targetValue"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,yBAAyB;AAE3D,OAAO,SAASC,WAAWC,UAAoB;IAC7C,OAAO,CAACC,QAAQC;QACdJ,kBAAkB;YAChBK,MAAM;YACNC,QAAQH,OAAO,WAAW;YAC1BC,cAAcA;YACdG,SAAS;gBACPC,SAAQC,IAAI;oBACV,OAAO,GAAGA,KAAKC,QAAQ,CAAC,wBAAwB,EAAER,WAAWS,IAAI,CAAC,OAAO;gBAC3E;YACF;YACAC,WAAW;gBACTC,UAASC,KAAc,EAAEL,IAAI;oBAC3B,IAAIK,UAAUC,aAAaD,UAAU,MAAM;wBACzC,OAAOZ,WACJc,GAAG,CACF,CAACC,iBACER,MAAMN,QAA0C,CAC/Cc,eACD,EAEJC,KAAK,CACJ,CAACC,cACCA,gBAAgBJ,aAAaI,gBAAgB;oBAErD;oBACA,OAAO;gBACT;YACF;QACF;IACF;AACF"}
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":""}
|
package/dist/main.js
ADDED
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/main.ts"],"sourcesContent":["#!/usr/bin/env node\n\nconsole.log(`Hello from @aenode/prop`);\n"],"names":["console","log"],"mappings":";AAEAA,QAAQC,GAAG,CAAC,CAAC,uBAAuB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,24 +1,30 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aenode/prop",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "Nestjs
|
|
5
|
-
"keywords": [
|
|
6
|
-
"types"
|
|
7
|
-
],
|
|
8
|
-
"license": "BSL-1.0",
|
|
3
|
+
"version": "0.0.39",
|
|
4
|
+
"description": "Nestjs input validation and swagger property decorator",
|
|
9
5
|
"author": {
|
|
10
|
-
"email": "aenode+aenode+prop@proton.me",
|
|
11
6
|
"name": "Ahmet Emrebas",
|
|
12
|
-
"
|
|
7
|
+
"email": "aenode+aenode+aenode-prop@proton.me",
|
|
8
|
+
"url": "https://aenode.github.io/#profile"
|
|
9
|
+
},
|
|
10
|
+
"funding": "https://cash.app/$puqlib",
|
|
11
|
+
"homepage": "https://aenode.github.io/aenode/libs/prop",
|
|
12
|
+
"repository": {
|
|
13
|
+
"directory": "libs/prop",
|
|
14
|
+
"type": "github",
|
|
15
|
+
"url": "https://github.com/aenode/aenode/tree/main/libs/prop"
|
|
13
16
|
},
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
+
"icon": "https://aenode.github.io/aenode/libs/prop/assets/favicon.svg",
|
|
18
|
+
"keywords": [
|
|
19
|
+
"lib"
|
|
17
20
|
],
|
|
18
21
|
"publishConfig": {
|
|
19
22
|
"access": "public",
|
|
20
23
|
"tag": "latest"
|
|
21
24
|
},
|
|
25
|
+
"bin": {
|
|
26
|
+
"aenode-prop": "./bin/prop.mjs"
|
|
27
|
+
},
|
|
22
28
|
"type": "module",
|
|
23
29
|
"main": "./dist/index.js",
|
|
24
30
|
"module": "./dist/index.js",
|
|
@@ -26,55 +32,32 @@
|
|
|
26
32
|
"exports": {
|
|
27
33
|
"./package.json": "./package.json",
|
|
28
34
|
".": {
|
|
29
|
-
"
|
|
35
|
+
"bun": "./src/index.ts",
|
|
30
36
|
"types": "./dist/index.d.ts",
|
|
31
37
|
"import": "./dist/index.js",
|
|
32
38
|
"default": "./dist/index.js"
|
|
33
|
-
},
|
|
34
|
-
"./restapi": {
|
|
35
|
-
"types": "./dist/restapi/index.d.ts",
|
|
36
|
-
"import": "./dist/restapi/index.js",
|
|
37
|
-
"default": "./dist/restapi/index.js"
|
|
38
|
-
},
|
|
39
|
-
"./graphql": {
|
|
40
|
-
"types": "./dist/graphql/index.d.ts",
|
|
41
|
-
"import": "./dist/graphql/index.js",
|
|
42
|
-
"default": "./dist/graphql/index.js"
|
|
43
39
|
}
|
|
44
40
|
},
|
|
45
41
|
"files": [
|
|
46
|
-
"dist",
|
|
47
42
|
"assets",
|
|
48
43
|
"bin",
|
|
44
|
+
"dist",
|
|
45
|
+
"generators.json",
|
|
49
46
|
"!**/*.tsbuildinfo"
|
|
50
47
|
],
|
|
51
48
|
"nx": {
|
|
52
|
-
"sourceRoot": "
|
|
49
|
+
"sourceRoot": "libs/prop/src",
|
|
50
|
+
"projectType": "library",
|
|
53
51
|
"tags": [
|
|
54
52
|
"lib:module"
|
|
55
53
|
],
|
|
56
54
|
"targets": {
|
|
57
55
|
"build": {},
|
|
58
|
-
"lint": {},
|
|
59
56
|
"doc": {}
|
|
60
57
|
}
|
|
61
58
|
},
|
|
62
59
|
"dependencies": {
|
|
60
|
+
"@aenode/nest": "workspace:*",
|
|
63
61
|
"@swc/helpers": "~0.5.18"
|
|
64
|
-
},
|
|
65
|
-
"devDependencies": {
|
|
66
|
-
"@nestjs/common": "^11.2.1",
|
|
67
|
-
"@nestjs/graphql": "^13.4.5",
|
|
68
|
-
"@nestjs/swagger": "^11.4.7",
|
|
69
|
-
"@aenode/prop-validation": "0.0.23",
|
|
70
|
-
"@aenode/reflect": "0.0.23",
|
|
71
|
-
"@aenode/types": "0.0.23"
|
|
72
|
-
},
|
|
73
|
-
"peerDependencies": {
|
|
74
|
-
"@nestjs/graphql": "^13.4.5",
|
|
75
|
-
"@nestjs/swagger": "^11.4.7",
|
|
76
|
-
"@aenode/types": "0.0.23",
|
|
77
|
-
"@aenode/prop-validation": "0.0.23",
|
|
78
|
-
"@aenode/reflect": "0.0.23"
|
|
79
62
|
}
|
|
80
|
-
}
|
|
63
|
+
}
|