@maioradv/nestjs-core 2.3.2 → 2.3.4

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.
@@ -1,16 +1,3 @@
1
- import { ValidatorConstraintInterface, ValidationArguments } from "class-validator";
2
1
  export declare const IsMetafieldClause: () => <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
3
2
  export declare const IsTranslationClause: () => <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
4
- declare const METADATA_OPERATORS: readonly ["equals", "not", "gt", "gte", "lt", "lte", "string_contains", "string_starts_with", "string_ends_with", "array_contains"];
5
- export type MetadataOperator = typeof METADATA_OPERATORS[number];
6
- export type MetadataFilter = {
7
- path: string[];
8
- operator: MetadataOperator;
9
- value: null | string | boolean | number;
10
- };
11
3
  export declare const IsMetadataClause: () => <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
12
- export declare class IsMetadata implements ValidatorConstraintInterface {
13
- validate(value: MetadataFilter[]): boolean;
14
- defaultMessage(args: ValidationArguments): string;
15
- }
16
- export {};
@@ -1,16 +1,11 @@
1
1
  "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
2
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.IsMetadata = exports.IsMetadataClause = exports.IsTranslationClause = exports.IsMetafieldClause = void 0;
3
+ exports.IsMetadataClause = exports.IsTranslationClause = exports.IsMetafieldClause = void 0;
10
4
  const common_1 = require("@nestjs/common");
11
5
  const swagger_1 = require("@nestjs/swagger");
12
6
  const class_transformer_1 = require("class-transformer");
13
7
  const class_validator_1 = require("class-validator");
8
+ const types_1 = require("@maioradv/types");
14
9
  const IsMetafieldClause = () => {
15
10
  return (0, common_1.applyDecorators)((0, swagger_1.ApiPropertyOptional)({
16
11
  type: String,
@@ -44,7 +39,7 @@ const IsTranslationClause = () => {
44
39
  };
45
40
  exports.IsTranslationClause = IsTranslationClause;
46
41
  const parseValue = (raw) => {
47
- const trimmed = raw.trim();
42
+ const trimmed = raw?.trim();
48
43
  if (trimmed === 'true')
49
44
  return true;
50
45
  if (trimmed === 'false')
@@ -54,19 +49,7 @@ const parseValue = (raw) => {
54
49
  return num;
55
50
  return trimmed;
56
51
  };
57
- const METADATA_OPERATORS = [
58
- 'equals',
59
- 'not',
60
- 'gt',
61
- 'gte',
62
- 'lt',
63
- 'lte',
64
- 'string_contains',
65
- 'string_starts_with',
66
- 'string_ends_with',
67
- 'array_contains'
68
- ];
69
- const allowedOperators = new Set(METADATA_OPERATORS);
52
+ const allowedOperators = new Set(types_1.MetadataOperators);
70
53
  const getMetadataClauseErrors = (item, index, property) => {
71
54
  if (!item)
72
55
  return [`${property}[${index}] is invalid`];
@@ -76,7 +59,7 @@ const getMetadataClauseErrors = (item, index, property) => {
76
59
  if (!hasPath)
77
60
  errors.push(`${property}[${index}].path must not be empty`);
78
61
  if (!allowedOperators.has(item.operator)) {
79
- errors.push(`${property}[${index}].operator must be one of: ${METADATA_OPERATORS.join(', ')}`);
62
+ errors.push(`${property}[${index}].operator must be one of: ${types_1.MetadataOperators.join(', ')}`);
80
63
  }
81
64
  if (!hasValue)
82
65
  errors.push(`${property}[${index}].value must not be empty`);
@@ -86,10 +69,10 @@ const IsMetadataClause = () => {
86
69
  return (0, common_1.applyDecorators)((0, swagger_1.ApiPropertyOptional)({
87
70
  type: String,
88
71
  description: 'Metadata filter format: path:operator:value, multiple with ,. Example: user.id:equals:1,tags:array_contains:vip',
89
- }), (0, class_transformer_1.Transform)(({ value }) => {
72
+ }), (0, class_transformer_1.Transform)(({ value, key }) => {
90
73
  if (!value)
91
74
  return [];
92
- return value
75
+ const clauses = value
93
76
  .split(',')
94
77
  .map(c => c.trim())
95
78
  .filter(Boolean)
@@ -105,22 +88,10 @@ const IsMetadataClause = () => {
105
88
  value: (isNull ? null : parseValue(value))
106
89
  };
107
90
  });
108
- }), (0, class_validator_1.IsOptional)(), (0, class_validator_1.IsArray)(), (0, class_validator_1.Validate)(IsMetadata));
91
+ const errors = clauses.flatMap((item, index) => getMetadataClauseErrors(item, index, key));
92
+ if (errors.length)
93
+ throw new common_1.BadRequestException(errors);
94
+ return clauses;
95
+ }), (0, class_validator_1.IsOptional)(), (0, class_validator_1.IsArray)());
109
96
  };
110
97
  exports.IsMetadataClause = IsMetadataClause;
111
- let IsMetadata = class IsMetadata {
112
- validate(value) {
113
- if (!value?.length)
114
- return true;
115
- return value.every((item, index) => getMetadataClauseErrors(item, index, 'metadata').length === 0);
116
- }
117
- defaultMessage(args) {
118
- const value = args.value;
119
- const errors = value?.flatMap((item, index) => getMetadataClauseErrors(item, index, args.property)) ?? [];
120
- return errors.join(', ');
121
- }
122
- };
123
- exports.IsMetadata = IsMetadata;
124
- exports.IsMetadata = IsMetadata = __decorate([
125
- (0, class_validator_1.ValidatorConstraint)({ name: 'IsMetadataConstraint', async: false })
126
- ], IsMetadata);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maioradv/nestjs-core",
3
- "version": "2.3.2",
3
+ "version": "2.3.4",
4
4
  "description": "NestJS helpers by MaiorADV",
5
5
  "repository": "https://github.com/maioradv/nestjs-core.git",
6
6
  "author": "Maior ADV Srl",
@@ -20,6 +20,7 @@
20
20
  "@aws-sdk/client-s3": "^3",
21
21
  "@maioradv/accounts-lib": "^1.5.5",
22
22
  "@maioradv/notifications-lib": "^1.0.8",
23
+ "@maioradv/types": "^0.0.7",
23
24
  "@nestjs/cache-manager": "^3",
24
25
  "@nestjs/common": "^11",
25
26
  "@nestjs/config": "^4",