@tstdl/base 0.71.67 → 0.71.70-beta1

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 (67) hide show
  1. package/container/container.d.ts +1 -0
  2. package/container/container.js +65 -54
  3. package/container/container.js.map +1 -1
  4. package/container/decorators.d.ts +11 -8
  5. package/container/decorators.js +48 -69
  6. package/container/decorators.js.map +1 -1
  7. package/container/resolve-chain.js +4 -3
  8. package/container/resolve-chain.js.map +1 -1
  9. package/container/type-info.d.ts +1 -21
  10. package/container/type-info.js +0 -42
  11. package/container/type-info.js.map +1 -1
  12. package/container/utils.d.ts +1 -1
  13. package/container/utils.js +17 -28
  14. package/container/utils.js.map +1 -1
  15. package/css/theme/theme.service.js +3 -2
  16. package/css/theme/theme.service.js.map +1 -1
  17. package/database/mongo/mongo-entity-repository.js.map +1 -1
  18. package/examples/pdf/basic.js +2 -1
  19. package/examples/pdf/basic.js.map +1 -1
  20. package/examples/reflection/basic.js +4 -1
  21. package/examples/reflection/basic.js.map +1 -1
  22. package/http/client/adapters/undici-http-client.adapter.d.ts +1 -1
  23. package/http/client/adapters/undici-http-client.adapter.js +1 -1
  24. package/http/client/adapters/undici-http-client.adapter.js.map +1 -1
  25. package/http/cookie-parser.js +2 -2
  26. package/http/cookie-parser.js.map +1 -1
  27. package/package.json +1 -1
  28. package/reflection/decorator-data.d.ts +1 -46
  29. package/reflection/decorator-data.js.map +1 -1
  30. package/reflection/decorators.d.ts +13 -11
  31. package/reflection/decorators.js +27 -18
  32. package/reflection/decorators.js.map +1 -1
  33. package/reflection/registry.d.ts +30 -14
  34. package/reflection/registry.js +23 -15
  35. package/reflection/registry.js.map +1 -1
  36. package/reflection/types.d.ts +88 -0
  37. package/reflection/types.js +3 -0
  38. package/reflection/types.js.map +1 -0
  39. package/reflection/utils.d.ts +21 -21
  40. package/reflection/utils.js +41 -50
  41. package/reflection/utils.js.map +1 -1
  42. package/schema/schemas/object.js +4 -3
  43. package/schema/schemas/object.js.map +1 -1
  44. package/search-index/elastic/search-index.d.ts +1 -1
  45. package/search-index/elastic/search-index.js +2 -2
  46. package/search-index/elastic/search-index.js.map +1 -1
  47. package/search-index/memory/memory-search-index.d.ts +1 -1
  48. package/search-index/memory/memory-search-index.js +1 -1
  49. package/search-index/memory/memory-search-index.js.map +1 -1
  50. package/search-index/search-index.d.ts +1 -1
  51. package/serializer/serializer.js +5 -4
  52. package/serializer/serializer.js.map +1 -1
  53. package/templates/module.js +1 -0
  54. package/templates/module.js.map +1 -1
  55. package/templates/template.service.d.ts +2 -2
  56. package/templates/template.service.js +3 -3
  57. package/templates/template.service.js.map +1 -1
  58. package/types.d.ts +2 -2
  59. package/utils/helpers.js +11 -7
  60. package/utils/helpers.js.map +1 -1
  61. package/utils/object/lazy-property.js +1 -1
  62. package/utils/object/lazy-property.js.map +1 -1
  63. package/utils/object/merge.js +1 -1
  64. package/utils/object/merge.js.map +1 -1
  65. package/utils/object/object.d.ts +5 -1
  66. package/utils/object/object.js +22 -8
  67. package/utils/object/object.js.map +1 -1
@@ -1,32 +1,48 @@
1
1
  import type { Constructor, Type } from "../types";
2
- import type { DecoratorData } from './decorator-data';
2
+ import type { DecoratorData } from './types';
3
3
  declare type Data = Map<string | symbol, any>;
4
- export declare type ReflectionMetadata = TypeMetadata | PropertyMetadata | MethodMetadata | ParameterMetadata;
5
- export declare type TypeMetadata = {
6
- constructor: Constructor;
7
- parameters: ParameterMetadata[];
8
- properties: Map<string | symbol, PropertyMetadata>;
9
- staticProperties: Map<string | symbol, PropertyMetadata>;
10
- methods: Map<string | symbol, MethodMetadata>;
11
- staticMethods: Map<string | symbol, MethodMetadata>;
12
- data: Data;
4
+ export declare type ReflectionMetadata = TypeMetadata | PropertyMetadata | MethodMetadata | ConstructorParameterMetadata | MethodParameterMetadata;
5
+ export declare type MetadataType = 'type' | 'property' | 'method' | 'method-parameter' | 'constructor-parameter';
6
+ export declare type MetadataBase<T extends MetadataType> = {
7
+ metadataType: T;
8
+ };
9
+ export declare type TypeMetadata = MetadataBase<'type'> & {
10
+ readonly constructor: Constructor;
11
+ /** may be undefined if class has no constructor */
12
+ readonly parameters: ConstructorParameterMetadata[] | undefined;
13
+ readonly properties: Map<string | symbol, PropertyMetadata>;
14
+ readonly staticProperties: Map<string | symbol, PropertyMetadata>;
15
+ readonly methods: Map<string | symbol, MethodMetadata>;
16
+ readonly staticMethods: Map<string | symbol, MethodMetadata>;
17
+ readonly data: Data;
18
+ readonly registered: boolean;
13
19
  };
14
- export declare type PropertyMetadata = {
20
+ export declare type PropertyMetadata = MetadataBase<'property'> & {
21
+ key: string | symbol;
15
22
  type: Type;
23
+ isAccessor: boolean;
16
24
  data: Data;
17
25
  };
18
- export declare type MethodMetadata = {
19
- parameters: ParameterMetadata[];
26
+ export declare type MethodMetadata = MetadataBase<'method'> & {
27
+ parameters: MethodParameterMetadata[];
20
28
  returnType: Type | undefined;
21
29
  data: Data;
22
30
  };
23
- export declare type ParameterMetadata = {
31
+ export declare type ConstructorParameterMetadata = MetadataBase<'constructor-parameter'> & {
32
+ type: Type | undefined;
33
+ index: number;
34
+ data: Data;
35
+ };
36
+ export declare type MethodParameterMetadata = MetadataBase<'method-parameter'> & {
24
37
  type: Type;
38
+ index: number;
25
39
  data: Data;
26
40
  };
41
+ export declare type ParameterMetadata = ConstructorParameterMetadata | MethodParameterMetadata;
27
42
  export declare class ReflectionRegistry {
28
43
  private readonly metadataMap;
29
44
  constructor();
45
+ hasType(type: Constructor): boolean;
30
46
  getMetadata(type: Constructor): TypeMetadata;
31
47
  register(target: object, propertyKey?: string | symbol, descriptorOrParameterIndex?: PropertyDescriptor | number): DecoratorData;
32
48
  registerDecoratorData(data: DecoratorData): ReflectionMetadata;
@@ -4,7 +4,7 @@ exports.reflectionRegistry = exports.ReflectionRegistry = void 0;
4
4
  /* eslint-disable max-classes-per-file */
5
5
  const data_structures_1 = require("../data-structures");
6
6
  const factory_map_1 = require("../utils/factory-map");
7
- const object_1 = require("../utils/object");
7
+ const lazy_property_1 = require("../utils/object/lazy-property");
8
8
  const reflection_1 = require("../utils/reflection");
9
9
  const type_guards_1 = require("../utils/type-guards");
10
10
  const decorator_data_1 = require("./decorator-data");
@@ -12,6 +12,9 @@ class ReflectionRegistry {
12
12
  constructor() {
13
13
  this.metadataMap = new factory_map_1.FactoryMap((type) => this.initializeType(type), new data_structures_1.WeakRefMap());
14
14
  }
15
+ hasType(type) {
16
+ return this.metadataMap.has(type) && this.getMetadata(type).registered;
17
+ }
15
18
  getMetadata(type) {
16
19
  return this.metadataMap.get(type);
17
20
  }
@@ -22,11 +25,14 @@ class ReflectionRegistry {
22
25
  }
23
26
  registerDecoratorData(data) {
24
27
  const metadata = this.metadataMap.get(data.constructor);
28
+ metadata.registered = true;
25
29
  if (data.type == 'class') {
26
30
  return metadata;
27
31
  }
28
32
  else if ((data.type == 'property') || (data.type == 'accessor')) {
29
- return (data.static ? metadata.staticProperties : metadata.properties).get(data.propertyKey);
33
+ const propertyMetadata = (data.static ? metadata.staticProperties : metadata.properties).get(data.propertyKey);
34
+ propertyMetadata.isAccessor = data.type == 'accessor';
35
+ return propertyMetadata;
30
36
  }
31
37
  else if (data.type == 'method') {
32
38
  return (data.static ? metadata.staticMethods : metadata.methods).get(data.methodKey);
@@ -35,11 +41,12 @@ class ReflectionRegistry {
35
41
  return (data.static ? metadata.staticMethods : metadata.methods).get(data.methodKey);
36
42
  }
37
43
  else if (data.type == 'constructor-parameter') { // eslint-disable-line @typescript-eslint/no-unnecessary-condition
44
+ if ((0, type_guards_1.isUndefined)(metadata.parameters)) {
45
+ throw new Error('Constructor parameters are not available. (missing decoration?)');
46
+ }
38
47
  return metadata.parameters[data.index];
39
48
  }
40
- else {
41
- throw new Error(`Unknown DecoratorData type ${data.type}`);
42
- }
49
+ throw new Error(`Unknown DecoratorData type ${data.type}`);
43
50
  }
44
51
  /**
45
52
  * Unregister a type. Can be useful if you replace a class with an decorator.
@@ -51,20 +58,20 @@ class ReflectionRegistry {
51
58
  }
52
59
  // eslint-disable-next-line max-lines-per-function
53
60
  initializeType(type) {
54
- return (0, object_1.lazyObject)({
55
- constructor: (0, object_1.lazyObjectValue)(type),
61
+ return (0, lazy_property_1.lazyObject)({
62
+ metadataType: 'type',
63
+ constructor: (0, lazy_property_1.lazyObjectValue)(type),
56
64
  parameters: {
57
65
  initializer() {
58
- const parameters = (0, reflection_1.getParameterTypes)(type);
59
- (0, type_guards_1.assertDefined)(parameters, 'missing constructor parameters');
60
- return parameters.map((parameter) => ({ type: parameter, data: new Map() }));
66
+ const parametersTypes = (0, reflection_1.getParameterTypes)(type);
67
+ return parametersTypes?.map((parameterType, index) => ({ metadataType: 'constructor-parameter', index, type: parameterType, data: new Map() }));
61
68
  }
62
69
  },
63
70
  properties: {
64
- initializer: () => new factory_map_1.FactoryMap((key) => ({ type: (0, reflection_1.getDesignType)(type.prototype, key), data: new Map() }))
71
+ initializer: () => new factory_map_1.FactoryMap((key) => ({ metadataType: 'property', key, type: (0, reflection_1.getDesignType)(type.prototype, key), isAccessor: false, data: new Map() }))
65
72
  },
66
73
  staticProperties: {
67
- initializer: () => new factory_map_1.FactoryMap((key) => ({ type: (0, reflection_1.getDesignType)(type, key), data: new Map() }))
74
+ initializer: () => new factory_map_1.FactoryMap((key) => ({ metadataType: 'property', key, type: (0, reflection_1.getDesignType)(type, key), isAccessor: false, data: new Map() }))
68
75
  },
69
76
  methods: {
70
77
  initializer: () => new factory_map_1.FactoryMap((key) => {
@@ -73,7 +80,7 @@ class ReflectionRegistry {
73
80
  if ((0, type_guards_1.isUndefined)(parameters)) {
74
81
  throw new Error(`Could not get parameters for method ${key.toString()} of type ${type.name}`);
75
82
  }
76
- return { parameters: parameters.map((parameter) => ({ type: parameter, data: new Map() })), returnType, data: new Map() };
83
+ return { metadataType: 'method', parameters: parameters.map((parameter, index) => ({ metadataType: 'method-parameter', index, type: parameter, data: new Map() })), returnType, data: new Map() };
77
84
  })
78
85
  },
79
86
  staticMethods: {
@@ -83,10 +90,11 @@ class ReflectionRegistry {
83
90
  if ((0, type_guards_1.isUndefined)(parameters)) {
84
91
  throw new Error(`Could not get parameters for static method ${key.toString()} of type ${type.name}`);
85
92
  }
86
- return { parameters: parameters.map((parameter) => ({ type: parameter, data: new Map() })), returnType, data: new Map() };
93
+ return { metadataType: 'method', parameters: parameters.map((parameter, index) => ({ metadataType: 'method-parameter', index, type: parameter, data: new Map() })), returnType, data: new Map() };
87
94
  })
88
95
  },
89
- data: { initializer: () => new Map() }
96
+ data: { initializer: () => new Map() },
97
+ registered: false
90
98
  });
91
99
  }
92
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../source/reflection/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../source/reflection/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import type { Constructor, Record } from "../types";
2
+ import type { UnionToIntersection } from 'type-fest';
3
+ import type { ConstructorParameterMetadata, MethodMetadata, MethodParameterMetadata, ParameterMetadata, PropertyMetadata, TypeMetadata } from './registry';
4
+ export declare type DecoratorType = 'class' | 'property' | 'accessor' | 'method' | 'parameter' | 'methodParameter' | 'constructorParameter';
5
+ export declare type DecoratorHandler<T extends DecoratorType = DecoratorType> = (data: DecoratorData<T>, metadata: DecoratorMetadata<T>) => DecoratorHandlerReturnType<T>;
6
+ export declare type DecoratorHandlerReturnType<T extends DecoratorType = DecoratorType> = DecoratorOptionsTypeMap<DecoratorHandlerReturnTypeMap, T>;
7
+ export declare type Decorator<T extends DecoratorType = DecoratorType> = DecoratorOptionsTypeMapIntersection<DecoratorMap, T>;
8
+ export declare type DecoratorData<T extends DecoratorType = DecoratorType> = DecoratorOptionsTypeMap<DecoratorDataMap, T>;
9
+ export declare type DecoratorMetadata<T extends DecoratorType = DecoratorType> = DecoratorOptionsTypeMap<DecoratorMetadataMap, T>;
10
+ export declare type DecoratorTypeMap<T extends Record<DecoratorType> = Record<DecoratorType>> = T;
11
+ export declare type DecoratorOptionsTypeMap<T extends DecoratorTypeMap, U extends DecoratorType> = {
12
+ [D in U]: T[D];
13
+ }[U];
14
+ export declare type DecoratorOptionsTypeMapIntersection<T extends DecoratorTypeMap, U extends DecoratorType> = UnionToIntersection<DecoratorOptionsTypeMap<T, U>>;
15
+ export declare type DecoratorDataMap = DecoratorTypeMap<{
16
+ class: ClassDecoratorData;
17
+ property: PropertyDecoratorData;
18
+ accessor: AccessorDecoratorData;
19
+ method: MethodDecoratorData;
20
+ parameter: ParameterDecoratorData;
21
+ methodParameter: MethodParameterDecoratorData;
22
+ constructorParameter: ConstructorParameterDecoratorData;
23
+ }>;
24
+ export declare type DecoratorMetadataMap = DecoratorTypeMap<{
25
+ class: TypeMetadata;
26
+ property: PropertyMetadata;
27
+ accessor: PropertyMetadata;
28
+ method: MethodMetadata;
29
+ parameter: ParameterMetadata;
30
+ methodParameter: MethodParameterMetadata;
31
+ constructorParameter: ConstructorParameterMetadata;
32
+ }>;
33
+ export declare type DecoratorHandlerReturnTypeMap = DecoratorTypeMap<{
34
+ class: void | undefined | Constructor;
35
+ property: void;
36
+ accessor: void;
37
+ method: void | PropertyDescriptor;
38
+ parameter: void;
39
+ methodParameter: void;
40
+ constructorParameter: void;
41
+ }>;
42
+ export declare type DecoratorMap = DecoratorTypeMap<{
43
+ class: ClassDecorator;
44
+ property: PropertyDecorator;
45
+ accessor: MethodDecorator;
46
+ method: MethodDecorator;
47
+ parameter: ParameterDecorator;
48
+ methodParameter: ParameterDecorator;
49
+ constructorParameter: ParameterDecorator;
50
+ }>;
51
+ export declare type DecoratorDataBase<Type extends string> = {
52
+ type: Type;
53
+ constructor: Constructor;
54
+ prototype: object;
55
+ };
56
+ export declare type ClassDecoratorData = DecoratorDataBase<'class'>;
57
+ export declare type PropertyDecoratorData = DecoratorDataBase<'property'> & {
58
+ static: boolean;
59
+ propertyKey: string | symbol;
60
+ };
61
+ export declare type AccessorDecoratorData = DecoratorDataBase<'accessor'> & {
62
+ static: boolean;
63
+ propertyKey: string | symbol;
64
+ descriptor: PropertyDescriptor;
65
+ };
66
+ export declare type PropertyOrAccessorDecoratorData = PropertyDecoratorData | AccessorDecoratorData;
67
+ export declare type MethodDecoratorData = DecoratorDataBase<'method'> & {
68
+ static: boolean;
69
+ methodKey: string | symbol;
70
+ descriptor: PropertyDescriptor;
71
+ };
72
+ export declare type MethodParameterDecoratorData = DecoratorDataBase<'parameter'> & {
73
+ static: boolean;
74
+ methodKey: string | symbol;
75
+ index: number;
76
+ };
77
+ export declare type ConstructorParameterDecoratorData = DecoratorDataBase<'constructor-parameter'> & {
78
+ index: number;
79
+ };
80
+ export declare type ParameterDecoratorData = MethodParameterDecoratorData | ConstructorParameterDecoratorData;
81
+ export declare type ClassDecoratorHandler = DecoratorHandler<'class'>;
82
+ export declare type PropertyDecoratorHandler = DecoratorHandler<'property'>;
83
+ export declare type AccessorDecoratorHandler = DecoratorHandler<'accessor'>;
84
+ export declare type PropertyOrAccessorDecoratorHandler = DecoratorHandler<'property' | 'accessor'>;
85
+ export declare type MethodDecoratorHandler = DecoratorHandler<'method'>;
86
+ export declare type ParameterDecoratorHandler = DecoratorHandler<'parameter'>;
87
+ export declare type ConstructorParameterDecoratorHandler = DecoratorHandler<'constructorParameter'>;
88
+ export declare type MethodParameterDecoratorHandler = DecoratorHandler<'methodParameter'>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../source/reflection/types.ts"],"names":[],"mappings":""}
@@ -1,27 +1,27 @@
1
- import type { Constructor, Record } from "../types";
2
- import type { AccessorDecoratorData, ClassDecoratorData, ConstructorParameterDecoratorData, DecoratorData, MethodDecoratorData, MethodParameterDecoratorData, ParameterDecoratorData, PropertyDecoratorData, PropertyOrAccessorDecoratorData } from './decorator-data';
3
- export declare type Decorator = ClassDecorator | PropertyDecorator | MethodDecorator | ParameterDecorator;
4
- export declare type DecoratorHandler = (data: DecoratorData) => ReturnType<Decorator>;
5
- export declare type ClassDecoratorHandler<T extends Constructor> = (data: ClassDecoratorData) => void | undefined | T;
6
- export declare type PropertyDecoratorHandler = (data: PropertyDecoratorData) => void;
7
- export declare type AccessorDecoratorHandler = (data: AccessorDecoratorData) => void;
8
- export declare type PropertyOrAccessorDecoratorHandler = <T>(data: PropertyOrAccessorDecoratorData) => void | TypedPropertyDescriptor<T>;
9
- export declare type MethodDecoratorHandler = <T>(data: MethodDecoratorData) => void | TypedPropertyDescriptor<T>;
10
- export declare type ParameterDecoratorHandler = (data: ParameterDecoratorData) => void;
11
- export declare type ConstructorParameterDecoratorHandler = (data: ConstructorParameterDecoratorData) => void;
12
- export declare type MethodParameterDecoratorHandler = (data: MethodParameterDecoratorData) => void;
1
+ import type { Constructor, PropertiesOfType, Record } from "../types";
2
+ import type { Decorator, DecoratorHandler, DecoratorType } from './types';
3
+ export declare type CreateDecoratorTypeOptions = {
4
+ [P in DecoratorType]?: boolean;
5
+ };
13
6
  export declare type CreateDecoratorOptions = {
14
7
  data?: Record<string | symbol>;
8
+ /** merge data values instead of replacing them (requires them to be objects) */
9
+ mergeData?: boolean;
10
+ };
11
+ export declare type SpecificCreateDecoratorOptions<T extends DecoratorType> = CreateDecoratorOptions & {
12
+ handler?: DecoratorHandler<T>;
15
13
  };
16
- export declare function createDecorator(decorator: DecoratorHandler, options?: CreateDecoratorOptions): Decorator;
17
- export declare function createClassDecorator<T extends Constructor>(decorator: ClassDecoratorHandler<T>, options?: CreateDecoratorOptions): ClassDecorator;
18
- export declare function createPropertyDecorator(decorator: PropertyDecoratorHandler, options?: CreateDecoratorOptions): PropertyDecorator;
19
- export declare function createAccessorDecorator(decorator: AccessorDecoratorHandler, options?: CreateDecoratorOptions): MethodDecorator;
20
- export declare function createPropertyOrAccessorDecorator(decorator: PropertyOrAccessorDecoratorHandler, options?: CreateDecoratorOptions): MethodDecorator;
21
- export declare function createMethodDecorator(decorator: MethodDecoratorHandler, options?: CreateDecoratorOptions): MethodDecorator;
22
- export declare function createParameterDecorator(decorator: ParameterDecoratorHandler, options?: CreateDecoratorOptions): ParameterDecorator;
23
- export declare function createConstructorParameterDecorator(decorator: ConstructorParameterDecoratorHandler, options?: CreateDecoratorOptions): ParameterDecorator;
24
- export declare function createMethodParameterDecorator(decorator: MethodParameterDecoratorHandler, options?: CreateDecoratorOptions): ParameterDecorator;
14
+ declare type CreateDecoratorType<T extends CreateDecoratorOptions> = Extract<PropertiesOfType<T, true>, DecoratorType>;
15
+ export declare function createDecorator<T extends CreateDecoratorTypeOptions & CreateDecoratorOptions>(options: T, handler?: DecoratorHandler<CreateDecoratorType<T>>): Decorator<CreateDecoratorType<T>>;
16
+ export declare function createClassDecorator(options?: SpecificCreateDecoratorOptions<'class'>): ClassDecorator;
17
+ export declare function createPropertyDecorator(options?: SpecificCreateDecoratorOptions<'property'>): PropertyDecorator;
18
+ export declare function createAccessorDecorator(options?: SpecificCreateDecoratorOptions<'accessor'>): MethodDecorator;
19
+ export declare function createPropertyOrAccessorDecorator(options?: SpecificCreateDecoratorOptions<'property' | 'accessor'>): Decorator<'property' | 'accessor'>;
20
+ export declare function createMethodDecorator(options?: SpecificCreateDecoratorOptions<'method'>): MethodDecorator;
21
+ export declare function createParameterDecorator(options?: SpecificCreateDecoratorOptions<'parameter'>): ParameterDecorator;
22
+ export declare function createMethodParameterDecorator(options?: SpecificCreateDecoratorOptions<'methodParameter'>): ParameterDecorator;
23
+ export declare function createConstructorParameterDecorator(options?: SpecificCreateDecoratorOptions<'constructorParameter'>): ParameterDecorator;
25
24
  export declare function getConstructor<T extends Constructor = Constructor>(constructorOrTarget: object): T;
26
25
  export declare function getTypeInfoString(type: Constructor): string;
27
26
  export declare function printType(type: Constructor): void;
27
+ export {};
@@ -1,79 +1,70 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.printType = exports.getTypeInfoString = exports.getConstructor = exports.createMethodParameterDecorator = exports.createConstructorParameterDecorator = exports.createParameterDecorator = exports.createMethodDecorator = exports.createPropertyOrAccessorDecorator = exports.createAccessorDecorator = exports.createPropertyDecorator = exports.createClassDecorator = exports.createDecorator = void 0;
3
+ exports.printType = exports.getTypeInfoString = exports.getConstructor = exports.createConstructorParameterDecorator = exports.createMethodParameterDecorator = exports.createParameterDecorator = exports.createMethodDecorator = exports.createPropertyOrAccessorDecorator = exports.createAccessorDecorator = exports.createPropertyDecorator = exports.createClassDecorator = exports.createDecorator = void 0;
4
+ const noop_1 = require("../utils/noop");
5
+ const object_1 = require("../utils/object/object");
4
6
  const type_guards_1 = require("../utils/type-guards");
5
7
  const decorator_data_1 = require("./decorator-data");
6
8
  const registry_1 = require("./registry");
7
- function createDecorator(decorator, options = {}) {
9
+ function createDecorator(options, handler = noop_1.noop) {
8
10
  function decoratorWrapper(target, propertyKey, descriptorOrParameterIndex) {
9
11
  const data = (0, decorator_data_1.getDecoratorData)(target, propertyKey, descriptorOrParameterIndex);
12
+ const optionsType = (data.type == 'constructor-parameter') ? 'constructorParameter' : data.type;
13
+ const valid = (options[optionsType] == true)
14
+ || (optionsType == 'parameter' && ((options.constructorParameter == true) || (options.methodParameter == true)))
15
+ || (((optionsType == 'constructorParameter') || (optionsType == 'methodParameter')) && (options.parameter == true));
16
+ (0, type_guards_1.assert)(valid, () => `Decorator cannot be used for ${data.type}.`);
10
17
  const metadata = registry_1.reflectionRegistry.registerDecoratorData(data);
11
18
  if ((0, type_guards_1.isDefined)(options.data)) {
12
- for (const [key, value] of Object.entries(options.data)) {
13
- metadata.data.set(key, value);
19
+ for (const [key, value] of (0, object_1.objectEntries)(options.data)) {
20
+ if (options.mergeData != true) {
21
+ metadata.data.set(key, value);
22
+ }
23
+ else {
24
+ const existing = metadata.data.get(key) ?? {};
25
+ (0, type_guards_1.assertObject)(existing, 'Existing and new data must be of type object in order to merge them.');
26
+ (0, type_guards_1.assertObject)(value, 'Existing and new data must be of type object in order to merge them.');
27
+ metadata.data.set(key, { ...existing, ...value });
28
+ }
14
29
  }
15
30
  }
16
- return decorator(data);
31
+ return handler(data, metadata);
17
32
  }
18
33
  return decoratorWrapper;
19
34
  }
20
35
  exports.createDecorator = createDecorator;
21
- function createClassDecorator(decorator, options = {}) {
22
- return createDecorator((data) => {
23
- (0, type_guards_1.assert)(data.type == 'class', `Class decorator cannot be used for ${data.type}.`);
24
- return decorator(data);
25
- }, options);
36
+ function createClassDecorator(options = {}) {
37
+ return createDecorator({ ...options, class: true }, options.handler);
26
38
  }
27
39
  exports.createClassDecorator = createClassDecorator;
28
- function createPropertyDecorator(decorator, options = {}) {
29
- return createDecorator((data) => {
30
- (0, type_guards_1.assert)(data.type == 'property', `Property decorator cannot be used for ${data.type}.`);
31
- decorator(data);
32
- }, options);
40
+ function createPropertyDecorator(options = {}) {
41
+ return createDecorator({ ...options, property: true }, options.handler);
33
42
  }
34
43
  exports.createPropertyDecorator = createPropertyDecorator;
35
- function createAccessorDecorator(decorator, options = {}) {
36
- return createDecorator((data) => {
37
- (0, type_guards_1.assert)(data.type == 'accessor', `Accessor decorator cannot be used for ${data.type}.`);
38
- decorator(data);
39
- }, options);
44
+ function createAccessorDecorator(options = {}) {
45
+ return createDecorator({ ...options, accessor: true }, options.handler);
40
46
  }
41
47
  exports.createAccessorDecorator = createAccessorDecorator;
42
- function createPropertyOrAccessorDecorator(decorator, options = {}) {
43
- return createDecorator((data) => {
44
- (0, type_guards_1.assert)((data.type == 'property') || (data.type == 'accessor'), `Property or accessor decorator cannot be used for ${data.type}.`);
45
- decorator(data);
46
- }, options);
48
+ function createPropertyOrAccessorDecorator(options = {}) {
49
+ return createDecorator({ ...options, property: true, accessor: true }, options.handler);
47
50
  }
48
51
  exports.createPropertyOrAccessorDecorator = createPropertyOrAccessorDecorator;
49
- function createMethodDecorator(decorator, options = {}) {
50
- return createDecorator((data) => {
51
- (0, type_guards_1.assert)(data.type == 'method', `Method decorator cannot be used for ${data.type}.`);
52
- return decorator(data);
53
- }, options);
52
+ function createMethodDecorator(options = {}) {
53
+ return createDecorator({ ...options, method: true }, options.handler);
54
54
  }
55
55
  exports.createMethodDecorator = createMethodDecorator;
56
- function createParameterDecorator(decorator, options = {}) {
57
- return createDecorator((data) => {
58
- (0, type_guards_1.assert)((data.type == 'parameter') || (data.type == 'constructor-parameter'), `Parameter decorator cannot be used for ${data.type}.`);
59
- decorator(data);
60
- }, options);
56
+ function createParameterDecorator(options = {}) {
57
+ return createDecorator({ ...options, parameter: true }, options.handler);
61
58
  }
62
59
  exports.createParameterDecorator = createParameterDecorator;
63
- function createConstructorParameterDecorator(decorator, options = {}) {
64
- return createDecorator((data) => {
65
- (0, type_guards_1.assert)((data.type == 'constructor-parameter'), `Constructor-Parameter decorator cannot be used for ${data.type}.`);
66
- decorator(data);
67
- }, options);
68
- }
69
- exports.createConstructorParameterDecorator = createConstructorParameterDecorator;
70
- function createMethodParameterDecorator(decorator, options = {}) {
71
- return createDecorator((data) => {
72
- (0, type_guards_1.assert)((data.type == 'parameter'), `Method-Parameter decorator cannot be used for ${data.type}.`);
73
- decorator(data);
74
- }, options);
60
+ function createMethodParameterDecorator(options = {}) {
61
+ return createDecorator({ ...options, methodParameter: true }, options.handler);
75
62
  }
76
63
  exports.createMethodParameterDecorator = createMethodParameterDecorator;
64
+ function createConstructorParameterDecorator(options = {}) {
65
+ return createDecorator({ ...options, constructorParameter: true }, options.handler);
66
+ }
67
+ exports.createConstructorParameterDecorator = createConstructorParameterDecorator;
77
68
  function getConstructor(constructorOrTarget) {
78
69
  return (0, type_guards_1.isFunction)(constructorOrTarget)
79
70
  ? constructorOrTarget
@@ -83,7 +74,7 @@ exports.getConstructor = getConstructor;
83
74
  function getTypeInfoString(type) {
84
75
  const lines = [];
85
76
  const metadata = registry_1.reflectionRegistry.getMetadata(type);
86
- const constructorParameters = metadata.parameters.map((parameter) => parameter.type.name).join(', ');
77
+ const constructorParameters = metadata.parameters?.map((parameter) => parameter.type?.name ?? '<unknown>').join(', ') ?? '?';
87
78
  lines.push(`${metadata.constructor.name}(${constructorParameters})`);
88
79
  for (const [key, propertyMetadata] of metadata.staticProperties) {
89
80
  const propertyKey = (0, type_guards_1.isSymbol)(key) ? `[${key.toString()}]` : key;
@@ -91,7 +82,7 @@ function getTypeInfoString(type) {
91
82
  }
92
83
  for (const [key, methodMetadata] of metadata.staticMethods) {
93
84
  const propertyKey = (0, type_guards_1.isSymbol)(key) ? `[${key.toString()}]` : key;
94
- const parameters = metadata.parameters.map((parameter) => parameter.type.name).join(', ');
85
+ const parameters = methodMetadata.parameters.map((parameter) => parameter.type.name).join(', ');
95
86
  lines.push(` static ${propertyKey}(${parameters}): ${methodMetadata.returnType?.name ?? 'void'}`);
96
87
  }
97
88
  for (const [key, propertyMetadata] of metadata.properties) {
@@ -100,7 +91,7 @@ function getTypeInfoString(type) {
100
91
  }
101
92
  for (const [key, methodMetadata] of metadata.methods) {
102
93
  const propertyKey = (0, type_guards_1.isSymbol)(key) ? `[${key.toString()}]` : key;
103
- const parameters = metadata.parameters.map((parameter) => parameter.type.name).join(', ');
94
+ const parameters = methodMetadata.parameters.map((parameter) => parameter.type.name).join(', ');
104
95
  lines.push(` ${propertyKey}(${parameters}): ${methodMetadata.returnType?.name ?? 'void'}`);
105
96
  }
106
97
  return lines.join('\n');
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../source/reflection/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../source/reflection/utils.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.assign = exports.object = exports.ObjectSchemaValidator = void 0;
4
4
  const map_1 = require("../../utils/map");
5
+ const object_1 = require("../../utils/object/object");
5
6
  const type_guards_1 = require("../../utils/type-guards");
6
7
  const schema_error_1 = require("../schema.error");
7
8
  const schema_validator_1 = require("../schema.validator");
@@ -9,7 +10,7 @@ const types_1 = require("../types");
9
10
  class ObjectSchemaValidator extends schema_validator_1.SchemaValidator {
10
11
  constructor(validators, schema) {
11
12
  super(schema);
12
- this.validatorEntries = new Map(Object.entries(validators));
13
+ this.validatorEntries = new Map((0, object_1.objectEntries)(validators));
13
14
  }
14
15
  static assign(a, b) {
15
16
  const validatorEntries = Object.fromEntries([...a.validatorEntries.entries(), ...b.validatorEntries.entries()]);
@@ -65,7 +66,7 @@ class ObjectSchemaValidator extends schema_validator_1.SchemaValidator {
65
66
  else if (value === null) {
66
67
  return { valid: false, error: schema_error_1.SchemaError.expectedButGot('object', 'null', path) };
67
68
  }
68
- const valueEntries = new Map(Object.entries(value));
69
+ const valueEntries = new Map((0, object_1.objectEntries)(value));
69
70
  const unknownKeys = (0, map_1.differenceMaps)(valueEntries, this.validatorEntries);
70
71
  if ((unknownKeys.length > 0) && (this.schema.mask != true) && ((0, type_guards_1.isBoolean)(this.schema.mask) || !options.mask) && (this.schema.keepUnknown != true)) {
71
72
  const keys = unknownKeys.map((entry) => entry[0]).join(', ');
@@ -76,7 +77,7 @@ class ObjectSchemaValidator extends schema_validator_1.SchemaValidator {
76
77
  }
77
78
  exports.ObjectSchemaValidator = ObjectSchemaValidator;
78
79
  function object(entries, options) {
79
- const validatorEntries = Object.entries(entries);
80
+ const validatorEntries = (0, object_1.objectEntries)(entries);
80
81
  const mappedValidatorEntries = validatorEntries.map(([key, value]) => [key, value.schema]);
81
82
  const schema = (0, types_1.schemaHelper)({
82
83
  type: 'object',
@@ -1 +1 @@
1
- {"version":3,"file":"object.js","sourceRoot":"","sources":["../../../source/schema/schemas/object.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../../source/schema/schemas/object.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ export declare class ElasticSearchIndex<T extends Entity> extends SearchIndex<T>
25
25
  delete(id: string): Promise<void>;
26
26
  deleteByQuery(query: Query<T>): Promise<void>;
27
27
  search(searchQueryOrCursor: Query<T> | string, options?: QueryOptions<T>): Promise<SearchResult<T>>;
28
- count(query: Query<T>, options?: QueryOptions<T>): Promise<number>;
28
+ count(query?: Query<T>, options?: QueryOptions<T>): Promise<number>;
29
29
  drop(): Promise<void>;
30
30
  exists(): Promise<boolean>;
31
31
  }
@@ -6,7 +6,7 @@ const error_1 = require("../../error");
6
6
  const search_index_1 = require("..");
7
7
  const base64_1 = require("../../utils/base64");
8
8
  const encoding_1 = require("../../utils/encoding");
9
- const object_1 = require("../../utils/object");
9
+ const object_1 = require("../../utils/object/object");
10
10
  const type_guards_1 = require("../../utils/type-guards");
11
11
  const keyword_rewriter_1 = require("./keyword-rewriter");
12
12
  const query_converter_1 = require("./query-converter");
@@ -112,7 +112,7 @@ class ElasticSearchIndex extends search_index_1.SearchIndex {
112
112
  }
113
113
  const result = await this.client.count({
114
114
  index: this.indexName,
115
- query: (0, query_converter_1.convertQuery)(query)
115
+ query: (0, query_converter_1.convertQuery)(query ?? {})
116
116
  });
117
117
  return result.count;
118
118
  }