@punks/backend-entity-manager 0.0.22 → 0.0.24

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 (115) hide show
  1. package/dist/cjs/index.js +52296 -1181
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/__test__/entity/foo.d.ts +3 -3
  4. package/dist/cjs/types/__test__/providers/typeorm/entity/foo.d.ts +3 -2
  5. package/dist/cjs/types/abstractions/actions.d.ts +2 -2
  6. package/dist/cjs/types/abstractions/authentication.d.ts +9 -0
  7. package/dist/cjs/types/abstractions/authorization.d.ts +6 -5
  8. package/dist/cjs/types/abstractions/configuration.d.ts +6 -2
  9. package/dist/cjs/types/abstractions/index.d.ts +2 -1
  10. package/dist/cjs/types/abstractions/queries.d.ts +5 -4
  11. package/dist/cjs/types/actions/search.d.ts +2 -2
  12. package/dist/cjs/types/authorization/allowAll.d.ts +1 -1
  13. package/dist/cjs/types/index.d.ts +1 -0
  14. package/dist/cjs/types/integrations/repository/typeorm/queryBuilder.d.ts +9 -8
  15. package/dist/cjs/types/models/index.d.ts +1 -1
  16. package/dist/cjs/types/platforms/nest/__test__/server/authentication/index.d.ts +13 -0
  17. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/authentication.d.ts +10 -0
  18. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/controller.d.ts +2 -1
  19. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/dto.d.ts +7 -0
  20. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/models.d.ts +17 -0
  21. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/query.d.ts +5 -2
  22. package/dist/cjs/types/platforms/nest/__test__/server/index.d.ts +10 -2
  23. package/dist/cjs/types/platforms/nest/__test__/server/middlewares/index.d.ts +6 -0
  24. package/dist/cjs/types/platforms/nest/__test__/server/session/session.controller.d.ts +9 -0
  25. package/dist/cjs/types/platforms/nest/__test__/tests/base/test_server_session.test.d.ts +1 -0
  26. package/dist/cjs/types/platforms/nest/authentication/entityAuthorizationMiddleware.d.ts +7 -0
  27. package/dist/cjs/types/platforms/nest/authentication/index.d.ts +1 -0
  28. package/dist/cjs/types/platforms/nest/extensions/authentication/abstractions/index.d.ts +2 -0
  29. package/dist/cjs/types/platforms/nest/extensions/authentication/index.d.ts +1 -0
  30. package/dist/cjs/types/platforms/nest/extensions/authentication/module.d.ts +2 -0
  31. package/dist/cjs/types/platforms/nest/extensions/authentication/services/authentication/index.d.ts +3 -0
  32. package/dist/cjs/types/platforms/nest/extensions/authentication/services/index.d.ts +1 -0
  33. package/dist/cjs/types/platforms/nest/extensions/authentication/services/providers.d.ts +2 -0
  34. package/dist/cjs/types/platforms/nest/extensions/index.d.ts +2 -0
  35. package/dist/cjs/types/platforms/nest/extensions/multi-tenancy/abstractions/index.d.ts +39 -0
  36. package/dist/cjs/types/platforms/nest/extensions/multi-tenancy/index.d.ts +1 -0
  37. package/dist/cjs/types/platforms/nest/extensions/multi-tenancy/module.d.ts +2 -0
  38. package/dist/cjs/types/platforms/nest/index.d.ts +6 -0
  39. package/dist/cjs/types/platforms/nest/integrations/typeorm/queryBuilder.d.ts +1 -1
  40. package/dist/cjs/types/platforms/nest/ioc/registry/index.d.ts +1 -1
  41. package/dist/cjs/types/platforms/nest/middlewares/errors-handler/index.d.ts +12 -0
  42. package/dist/cjs/types/platforms/nest/middlewares/index.d.ts +1 -0
  43. package/dist/cjs/types/platforms/nest/plugins/email/index.d.ts +1 -0
  44. package/dist/cjs/types/platforms/nest/plugins/index.d.ts +1 -0
  45. package/dist/cjs/types/platforms/nest/processors/initializer/index.d.ts +2 -0
  46. package/dist/cjs/types/platforms/nest/services/index.d.ts +1 -1
  47. package/dist/cjs/types/platforms/nest/services/providers.d.ts +2 -0
  48. package/dist/cjs/types/platforms/nest/services/session/index.d.ts +9 -0
  49. package/dist/cjs/types/platforms/nest/session/index.d.ts +1 -0
  50. package/dist/cjs/types/platforms/nest/session/middleware.d.ts +6 -0
  51. package/dist/cjs/types/platforms/nest/session/session.d.ts +12 -0
  52. package/dist/cjs/types/platforms/nest/session/storage.d.ts +6 -0
  53. package/dist/cjs/types/providers/services.d.ts +10 -6
  54. package/dist/cjs/types/queries/search.d.ts +5 -3
  55. package/dist/cjs/types/symbols/ioc.d.ts +3 -0
  56. package/dist/cjs/types/templates/queryBuilder.d.ts +5 -5
  57. package/dist/esm/index.js +52284 -1182
  58. package/dist/esm/index.js.map +1 -1
  59. package/dist/esm/types/__test__/entity/foo.d.ts +3 -3
  60. package/dist/esm/types/__test__/providers/typeorm/entity/foo.d.ts +3 -2
  61. package/dist/esm/types/abstractions/actions.d.ts +2 -2
  62. package/dist/esm/types/abstractions/authentication.d.ts +9 -0
  63. package/dist/esm/types/abstractions/authorization.d.ts +6 -5
  64. package/dist/esm/types/abstractions/configuration.d.ts +6 -2
  65. package/dist/esm/types/abstractions/index.d.ts +2 -1
  66. package/dist/esm/types/abstractions/queries.d.ts +5 -4
  67. package/dist/esm/types/actions/search.d.ts +2 -2
  68. package/dist/esm/types/authorization/allowAll.d.ts +1 -1
  69. package/dist/esm/types/index.d.ts +1 -0
  70. package/dist/esm/types/integrations/repository/typeorm/queryBuilder.d.ts +9 -8
  71. package/dist/esm/types/models/index.d.ts +1 -1
  72. package/dist/esm/types/platforms/nest/__test__/server/authentication/index.d.ts +13 -0
  73. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/authentication.d.ts +10 -0
  74. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/controller.d.ts +2 -1
  75. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/dto.d.ts +7 -0
  76. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/models.d.ts +17 -0
  77. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/query.d.ts +5 -2
  78. package/dist/esm/types/platforms/nest/__test__/server/index.d.ts +10 -2
  79. package/dist/esm/types/platforms/nest/__test__/server/middlewares/index.d.ts +6 -0
  80. package/dist/esm/types/platforms/nest/__test__/server/session/session.controller.d.ts +9 -0
  81. package/dist/esm/types/platforms/nest/__test__/tests/base/test_server_session.test.d.ts +1 -0
  82. package/dist/esm/types/platforms/nest/authentication/entityAuthorizationMiddleware.d.ts +7 -0
  83. package/dist/esm/types/platforms/nest/authentication/index.d.ts +1 -0
  84. package/dist/esm/types/platforms/nest/extensions/authentication/abstractions/index.d.ts +2 -0
  85. package/dist/esm/types/platforms/nest/extensions/authentication/index.d.ts +1 -0
  86. package/dist/esm/types/platforms/nest/extensions/authentication/module.d.ts +2 -0
  87. package/dist/esm/types/platforms/nest/extensions/authentication/services/authentication/index.d.ts +3 -0
  88. package/dist/esm/types/platforms/nest/extensions/authentication/services/index.d.ts +1 -0
  89. package/dist/esm/types/platforms/nest/extensions/authentication/services/providers.d.ts +2 -0
  90. package/dist/esm/types/platforms/nest/extensions/index.d.ts +2 -0
  91. package/dist/esm/types/platforms/nest/extensions/multi-tenancy/abstractions/index.d.ts +39 -0
  92. package/dist/esm/types/platforms/nest/extensions/multi-tenancy/index.d.ts +1 -0
  93. package/dist/esm/types/platforms/nest/extensions/multi-tenancy/module.d.ts +2 -0
  94. package/dist/esm/types/platforms/nest/index.d.ts +6 -0
  95. package/dist/esm/types/platforms/nest/integrations/typeorm/queryBuilder.d.ts +1 -1
  96. package/dist/esm/types/platforms/nest/ioc/registry/index.d.ts +1 -1
  97. package/dist/esm/types/platforms/nest/middlewares/errors-handler/index.d.ts +12 -0
  98. package/dist/esm/types/platforms/nest/middlewares/index.d.ts +1 -0
  99. package/dist/esm/types/platforms/nest/plugins/email/index.d.ts +1 -0
  100. package/dist/esm/types/platforms/nest/plugins/index.d.ts +1 -0
  101. package/dist/esm/types/platforms/nest/processors/initializer/index.d.ts +2 -0
  102. package/dist/esm/types/platforms/nest/services/index.d.ts +1 -1
  103. package/dist/esm/types/platforms/nest/services/providers.d.ts +2 -0
  104. package/dist/esm/types/platforms/nest/services/session/index.d.ts +9 -0
  105. package/dist/esm/types/platforms/nest/session/index.d.ts +1 -0
  106. package/dist/esm/types/platforms/nest/session/middleware.d.ts +6 -0
  107. package/dist/esm/types/platforms/nest/session/session.d.ts +12 -0
  108. package/dist/esm/types/platforms/nest/session/storage.d.ts +6 -0
  109. package/dist/esm/types/providers/services.d.ts +10 -6
  110. package/dist/esm/types/queries/search.d.ts +5 -3
  111. package/dist/esm/types/symbols/ioc.d.ts +3 -0
  112. package/dist/esm/types/templates/queryBuilder.d.ts +5 -5
  113. package/dist/index.d.ts +88 -27
  114. package/package.json +15 -8
  115. package/readme.md +30 -0
@@ -1,3 +1,4 @@
1
+ import { IAuthenticationContext, IAuthenticationContextProvider } from "../abstractions";
1
2
  import { IEntitiesSearchAction, IEntityActions, IEntityCreateAction, IEntityDeleteAction, IEntityGetAction, IEntityUpdateAction, IEntityUpsertAction } from "../abstractions/actions";
2
3
  import { IEntityAdapter } from "../abstractions/adapters";
3
4
  import { IEntityAuthorizationMiddleware } from "../abstractions/authorization";
@@ -17,6 +18,7 @@ export declare class EntityServiceLocator<TEntity, TEntityId> {
17
18
  private readonly entityName;
18
19
  constructor(services: EntitiesServiceLocator, entityName: string);
19
20
  getRootServices(): EntitiesServiceLocator;
21
+ resolveAuthenticationContextProvider<TAuthenticationContextProvider extends IAuthenticationContextProvider<TUserContext>, TUserContext>(): TAuthenticationContextProvider;
20
22
  resolveEntityManager(): IEntityManager<TEntity, unknown, unknown, unknown, any, any, unknown, unknown>;
21
23
  resolveEntityActions(): IEntityActions<TEntity, TEntityId, unknown, unknown, unknown, unknown, any, any, unknown, unknown>;
22
24
  resolveRepository<TGetConditions, TFindCondition, TUpdateCondition, TDeleteCondition>(): IEntityRepository<TEntity, TEntityId, TGetConditions, TFindCondition, TUpdateCondition, TDeleteCondition>;
@@ -29,7 +31,7 @@ export declare class EntityServiceLocator<TEntity, TEntityId> {
29
31
  resolveConnectorsConfiguration(): IConnectorsConfiguration<TEntity>;
30
32
  resolveConverter<TEntityDto, TListItemDto, TEntityCreateDto, TEntityUpdateDto>(): IEntityConverter<TEntity, TEntityDto, TListItemDto, TEntityCreateDto, TEntityUpdateDto> | undefined;
31
33
  resolveAdapter<TEntityCreateData, TEntityUpdateData>(): IEntityAdapter<TEntity, TEntityCreateData, TEntityUpdateData> | undefined;
32
- resolveAuthorizationMiddleware(): IEntityAuthorizationMiddleware<TEntity> | undefined;
34
+ resolveAuthorizationMiddleware<TAuthenticationContext extends IAuthenticationContext<TUserContext>, TUserContext>(): IEntityAuthorizationMiddleware<TEntity, TAuthenticationContext, TUserContext> | undefined;
33
35
  resolveGetQuery<TEntityId>(): IEntityGetQuery<TEntity, TEntityId>;
34
36
  resolveSearchQuery<TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets>(): IEntitiesSearchQuery<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets>;
35
37
  resolveCreateCommand<TEntityCreateData>(): IEntityCreateCommand<TEntity, TEntityCreateData>;
@@ -42,7 +44,7 @@ export declare class EntityServiceLocator<TEntity, TEntityId> {
42
44
  resolveUpdateAction<TEntityUpdateData, TEntityDto>(): IEntityUpdateAction<TEntity, TEntityId, TEntityUpdateData, TEntityDto>;
43
45
  resolveUpsertAction<TEntityUpdateData, TEntityDto>(): IEntityUpsertAction<TEntity, TEntityId, TEntityUpdateData, TEntityDto>;
44
46
  resolveDeleteAction(): IEntityDeleteAction<TEntity, TEntityId>;
45
- resolveQueryBuilder<TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets>(): IEntitiesQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets>;
47
+ resolveQueryBuilder<TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets, TUserContext>(): IEntitiesQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets, TUserContext>;
46
48
  getEntityName(): string;
47
49
  }
48
50
  export declare class EntitiesServiceLocator {
@@ -51,6 +53,8 @@ export declare class EntitiesServiceLocator {
51
53
  getProvider(): ServiceLocator;
52
54
  resolveEventEmitter<TEventEmitter extends IEventEmitter>(): TEventEmitter;
53
55
  registerEventEmitter<TEventEmitter extends IEventEmitter>(instance: TEventEmitter): void;
56
+ resolveAuthenticationContextProvider<TAuthenticationContextProvider extends IAuthenticationContextProvider<TUserContext>, TUserContext>(): TAuthenticationContextProvider;
57
+ registerAuthenticationContextProvider<TAuthenticationContextProvider extends IAuthenticationContextProvider<TUserContext>, TUserContext>(instance: TAuthenticationContextProvider): void;
54
58
  resolveEntityManager<TEntity>(entityName: string): IEntityManager<TEntity, unknown, unknown, unknown, any, any, unknown, unknown>;
55
59
  registerEntityManager<TEntity>(entityName: string, instance: IEntityManager<TEntity, unknown, unknown, unknown, any, any, unknown, unknown>): void;
56
60
  resolveEntityActions<TEntity>(entityName: string): IEntityActions<TEntity, unknown, unknown, unknown, unknown, unknown, any, any, unknown, unknown>;
@@ -75,8 +79,8 @@ export declare class EntitiesServiceLocator {
75
79
  resolveAdapter<TEntity, TEntityCreateData, TEntityUpdateData>(entityName: string): IEntityAdapter<TEntity, TEntityCreateData, TEntityUpdateData> | undefined;
76
80
  registerConverter<TEntity, TEntityDto, TListItemDto, TEntityCreateDto, TEntityUpdateDto>(entityName: string, instance: IEntityConverter<TEntity, TEntityDto, TListItemDto, TEntityCreateDto, TEntityUpdateDto>): void;
77
81
  resolveConverter<TEntity, TEntityDto, TListItemDto, TEntityCreateDto, TEntityUpdateDto>(entityName: string): IEntityConverter<TEntity, TEntityDto, TListItemDto, TEntityCreateDto, TEntityUpdateDto> | undefined;
78
- resolveAuthorizationMiddleware<TEntity>(entityName: string): IEntityAuthorizationMiddleware<TEntity> | undefined;
79
- registerAuthorizationMiddleware<TEntity>(entityName: string, instance: IEntityAuthorizationMiddleware<TEntity>): void;
82
+ resolveAuthorizationMiddleware<TEntity, TAuthenticationContext extends IAuthenticationContext<TUserContext>, TUserContext>(entityName: string): IEntityAuthorizationMiddleware<TEntity, TAuthenticationContext, TUserContext> | undefined;
83
+ registerAuthorizationMiddleware<TEntity, TAuthenticationContext extends IAuthenticationContext<TUserContext>, TUserContext>(entityName: string, instance: IEntityAuthorizationMiddleware<TEntity, TAuthenticationContext, TUserContext>): void;
80
84
  resolveGetQuery<TEntity, TEntityId>(entityName: string): IEntityGetQuery<TEntity, TEntityId>;
81
85
  registerGetQuery<TEntity, TEntityId>(entityName: string, instance: IEntityGetQuery<TEntity, TEntityId>): void;
82
86
  resolveSearchQuery<TEntity, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets>(entityName: string): IEntitiesSearchQuery<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets>;
@@ -101,6 +105,6 @@ export declare class EntitiesServiceLocator {
101
105
  registerUpsertAction<TEntity, TEntityId, TEntityUpdateData, TEntityDto>(entityName: string, instance: IEntityUpsertAction<TEntity, TEntityId, TEntityUpdateData, TEntityDto>): void;
102
106
  resolveDeleteAction<TEntity, TEntityId>(entityName: string): IEntityDeleteAction<TEntity, TEntityId>;
103
107
  registerDeleteAction<TEntity, TEntityId>(entityName: string, instance: IEntityDeleteAction<TEntity, TEntityId>): void;
104
- resolveQueryBuilder<TEntity, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets>(entityName: string): IEntitiesQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets>;
105
- registerQueryBuilder<TEntity, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets>(entityName: string, instance: IEntitiesQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets>): void;
108
+ resolveQueryBuilder<TEntity, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets, TUserContext>(entityName: string): IEntitiesQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets, TUserContext>;
109
+ registerQueryBuilder<TEntity, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets, TUserContext>(entityName: string, instance: IEntitiesQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets, TUserContext>): void;
106
110
  }
@@ -1,10 +1,12 @@
1
1
  import { SortingType } from "../abstractions/common";
2
2
  import { IEntitiesSearchQuery } from "../abstractions/queries";
3
3
  import { IEntitySearchParameters } from "../abstractions/searchParameters";
4
- import { EntitiesSearchResults } from "../models";
4
+ import { IEntitiesSearchResults } from "../models";
5
5
  import { EntityServiceLocator } from "../providers/services";
6
- export declare class EntitiesSearchQuery<TEntity, TEntityId, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets> implements IEntitiesSearchQuery<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets> {
6
+ export declare class EntitiesSearchQuery<TEntity, TEntityId, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets, TUserContext> implements IEntitiesSearchQuery<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets> {
7
7
  private readonly services;
8
8
  constructor(services: EntityServiceLocator<TEntity, TEntityId>);
9
- execute(request: TEntitySearchParameters): Promise<EntitiesSearchResults<TEntitySearchParameters, TEntity, TSorting, TCursor, TFacets>>;
9
+ execute(request: TEntitySearchParameters): Promise<IEntitiesSearchResults<TEntitySearchParameters, TEntity, TSorting, TCursor, TFacets>>;
10
+ private getContext;
11
+ private filterAllowedEntities;
10
12
  }
@@ -52,4 +52,7 @@ export declare const GlobalServices: {
52
52
  Events: {
53
53
  IEventEmitter: string;
54
54
  };
55
+ Authentication: {
56
+ IAuthenticationContextProvider: string;
57
+ };
55
58
  };
@@ -1,11 +1,11 @@
1
- import { IEntitiesQueryBuilder, IEntitySearchParameters, ISearchRequestPaging } from "../abstractions";
1
+ import { IAuthenticationContext, IEntitiesQueryBuilder, IEntitySearchParameters, ISearchRequestPaging } from "../abstractions";
2
2
  import { SortingType } from "../abstractions/common";
3
- import { EntitiesSearchResults, EntitiesSearchResultsPaging } from "../models";
4
- export declare abstract class QueryBuilderBase<TEntity, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets> implements IEntitiesQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets> {
5
- abstract search(request: TEntitySearchParameters): Promise<EntitiesSearchResults<TEntitySearchParameters, TEntity, TSorting, TCursor, TFacets>>;
3
+ import { IEntitiesSearchResults, IEntitiesSearchResultsPaging } from "../models";
4
+ export declare abstract class QueryBuilderBase<TEntity, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets, TUserContext> implements IEntitiesQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets, TUserContext> {
5
+ abstract search(request: TEntitySearchParameters, context?: IAuthenticationContext<TUserContext>): Promise<IEntitiesSearchResults<TEntitySearchParameters, TEntity, TSorting, TCursor, TFacets>>;
6
6
  protected getIndexBasedPagingResult({ paging, totResults, currentPageResults, }: {
7
7
  paging?: ISearchRequestPaging<number>;
8
8
  totResults: number;
9
9
  currentPageResults: number;
10
- }): EntitiesSearchResultsPaging<number> | undefined;
10
+ }): IEntitiesSearchResultsPaging<number> | undefined;
11
11
  }
package/dist/index.d.ts CHANGED
@@ -1,10 +1,16 @@
1
- import { Type as Type$1, INestApplicationContext } from '@nestjs/common';
1
+ /// <reference types="qs" />
2
+ /// <reference types="express" />
3
+ import { Type as Type$1, INestApplicationContext, ExceptionFilter, ArgumentsHost, NestMiddleware } from '@nestjs/common';
2
4
  import { Module } from '@nestjs/core/injector/module';
3
5
  import { ModulesContainer } from '@nestjs/core/injector/modules-container';
4
6
  import { MetadataScanner } from '@nestjs/core/metadata-scanner';
5
7
  import { ObjectLiteral, FindOneOptions, FindManyOptions, Repository, ObjectId, FindOptionsWhere, FindOptionsRelations } from 'typeorm';
6
8
  import { EventEmitter2 } from '@nestjs/event-emitter';
7
9
  import { ModulesContainer as ModulesContainer$1 } from '@nestjs/core';
10
+ import * as express from 'express';
11
+ import { Request, Response, NextFunction } from 'express';
12
+ import * as qs from 'qs';
13
+ import * as express_serve_static_core from 'express-serve-static-core';
8
14
 
9
15
  type EnumType = string | number | symbol;
10
16
  type SortingType = EnumType;
@@ -98,14 +104,24 @@ interface IEntityUpdateCommandAdapter<TEntity, TEntityUpdateData> {
98
104
  interface IEntityAdapter<TEntity, TEntityCreateData, TEntityUpdateData> extends IEntityCreateCommandAdapter<TEntity, TEntityCreateData>, IEntityUpdateCommandAdapter<TEntity, TEntityUpdateData> {
99
105
  }
100
106
 
107
+ interface IAuthenticationContext<TUserContext> {
108
+ isAuthenticated: boolean;
109
+ isAnonymous: boolean;
110
+ userId?: string;
111
+ userContext?: TUserContext;
112
+ }
113
+ interface IAuthenticationContextProvider<TUserContext> {
114
+ getContext(): Promise<IAuthenticationContext<TUserContext>>;
115
+ }
116
+
101
117
  interface IAuthorizationResult {
102
118
  isAuthorized: boolean;
103
119
  }
104
- interface IEntityAuthorizationMiddleware<TEntity> {
105
- canRead(entity: Partial<TEntity>): Promise<IAuthorizationResult>;
106
- canCreate(entity: Partial<TEntity>): Promise<IAuthorizationResult>;
107
- canUpdate(entity: Partial<TEntity>): Promise<IAuthorizationResult>;
108
- canDelete(entity: Partial<TEntity>): Promise<IAuthorizationResult>;
120
+ interface IEntityAuthorizationMiddleware<TEntity, TAuthenticationContext extends IAuthenticationContext<TUserContext>, TUserContext> {
121
+ canRead(entity: Partial<TEntity>, context: TAuthenticationContext): Promise<IAuthorizationResult>;
122
+ canCreate(entity: Partial<TEntity>, context: TAuthenticationContext): Promise<IAuthorizationResult>;
123
+ canUpdate(entity: Partial<TEntity>, context: TAuthenticationContext): Promise<IAuthorizationResult>;
124
+ canDelete(entity: Partial<TEntity>, context: TAuthenticationContext): Promise<IAuthorizationResult>;
109
125
  }
110
126
 
111
127
  interface IEntityCreateCommand<TEntity, TEntityCreateData> {
@@ -214,8 +230,8 @@ interface IEntitiesSearchQuery<TEntity, TEntitySearchParameters extends IEntityS
214
230
  interface IEntityGetQuery<TEntity, TEntityId> {
215
231
  execute(id: TEntityId): Promise<TEntity | undefined>;
216
232
  }
217
- interface IEntitiesQueryBuilder<TEntity, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets> {
218
- search(request: TEntitySearchParameters): Promise<IEntitiesSearchResults<TEntitySearchParameters, TEntity, TSorting, TCursor, TFacets>>;
233
+ interface IEntitiesQueryBuilder<TEntity, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets, TUserContext> {
234
+ search(request: TEntitySearchParameters, context?: IAuthenticationContext<TUserContext>): Promise<IEntitiesSearchResults<TEntitySearchParameters, TEntity, TSorting, TCursor, TFacets>>;
219
235
  }
220
236
 
221
237
  interface IEntityManager<TEntity, TEntityId, TEntityCreateData, TEntityUpdateData, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets> {
@@ -274,6 +290,7 @@ declare class EntityServiceLocator<TEntity, TEntityId> {
274
290
  private readonly entityName;
275
291
  constructor(services: EntitiesServiceLocator, entityName: string);
276
292
  getRootServices(): EntitiesServiceLocator;
293
+ resolveAuthenticationContextProvider<TAuthenticationContextProvider extends IAuthenticationContextProvider<TUserContext>, TUserContext>(): TAuthenticationContextProvider;
277
294
  resolveEntityManager(): IEntityManager<TEntity, unknown, unknown, unknown, any, any, unknown, unknown>;
278
295
  resolveEntityActions(): IEntityActions<TEntity, TEntityId, unknown, unknown, unknown, unknown, any, any, unknown, unknown>;
279
296
  resolveRepository<TGetConditions, TFindCondition, TUpdateCondition, TDeleteCondition>(): IEntityRepository<TEntity, TEntityId, TGetConditions, TFindCondition, TUpdateCondition, TDeleteCondition>;
@@ -286,7 +303,7 @@ declare class EntityServiceLocator<TEntity, TEntityId> {
286
303
  resolveConnectorsConfiguration(): IConnectorsConfiguration<TEntity>;
287
304
  resolveConverter<TEntityDto, TListItemDto, TEntityCreateDto, TEntityUpdateDto>(): IEntityConverter<TEntity, TEntityDto, TListItemDto, TEntityCreateDto, TEntityUpdateDto> | undefined;
288
305
  resolveAdapter<TEntityCreateData, TEntityUpdateData>(): IEntityAdapter<TEntity, TEntityCreateData, TEntityUpdateData> | undefined;
289
- resolveAuthorizationMiddleware(): IEntityAuthorizationMiddleware<TEntity> | undefined;
306
+ resolveAuthorizationMiddleware<TAuthenticationContext extends IAuthenticationContext<TUserContext>, TUserContext>(): IEntityAuthorizationMiddleware<TEntity, TAuthenticationContext, TUserContext> | undefined;
290
307
  resolveGetQuery<TEntityId>(): IEntityGetQuery<TEntity, TEntityId>;
291
308
  resolveSearchQuery<TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets>(): IEntitiesSearchQuery<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets>;
292
309
  resolveCreateCommand<TEntityCreateData>(): IEntityCreateCommand<TEntity, TEntityCreateData>;
@@ -299,7 +316,7 @@ declare class EntityServiceLocator<TEntity, TEntityId> {
299
316
  resolveUpdateAction<TEntityUpdateData, TEntityDto>(): IEntityUpdateAction<TEntity, TEntityId, TEntityUpdateData, TEntityDto>;
300
317
  resolveUpsertAction<TEntityUpdateData, TEntityDto>(): IEntityUpsertAction<TEntity, TEntityId, TEntityUpdateData, TEntityDto>;
301
318
  resolveDeleteAction(): IEntityDeleteAction<TEntity, TEntityId>;
302
- resolveQueryBuilder<TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets>(): IEntitiesQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets>;
319
+ resolveQueryBuilder<TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets, TUserContext>(): IEntitiesQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets, TUserContext>;
303
320
  getEntityName(): string;
304
321
  }
305
322
  declare class EntitiesServiceLocator {
@@ -308,6 +325,8 @@ declare class EntitiesServiceLocator {
308
325
  getProvider(): ServiceLocator;
309
326
  resolveEventEmitter<TEventEmitter extends IEventEmitter>(): TEventEmitter;
310
327
  registerEventEmitter<TEventEmitter extends IEventEmitter>(instance: TEventEmitter): void;
328
+ resolveAuthenticationContextProvider<TAuthenticationContextProvider extends IAuthenticationContextProvider<TUserContext>, TUserContext>(): TAuthenticationContextProvider;
329
+ registerAuthenticationContextProvider<TAuthenticationContextProvider extends IAuthenticationContextProvider<TUserContext>, TUserContext>(instance: TAuthenticationContextProvider): void;
311
330
  resolveEntityManager<TEntity>(entityName: string): IEntityManager<TEntity, unknown, unknown, unknown, any, any, unknown, unknown>;
312
331
  registerEntityManager<TEntity>(entityName: string, instance: IEntityManager<TEntity, unknown, unknown, unknown, any, any, unknown, unknown>): void;
313
332
  resolveEntityActions<TEntity>(entityName: string): IEntityActions<TEntity, unknown, unknown, unknown, unknown, unknown, any, any, unknown, unknown>;
@@ -332,8 +351,8 @@ declare class EntitiesServiceLocator {
332
351
  resolveAdapter<TEntity, TEntityCreateData, TEntityUpdateData>(entityName: string): IEntityAdapter<TEntity, TEntityCreateData, TEntityUpdateData> | undefined;
333
352
  registerConverter<TEntity, TEntityDto, TListItemDto, TEntityCreateDto, TEntityUpdateDto>(entityName: string, instance: IEntityConverter<TEntity, TEntityDto, TListItemDto, TEntityCreateDto, TEntityUpdateDto>): void;
334
353
  resolveConverter<TEntity, TEntityDto, TListItemDto, TEntityCreateDto, TEntityUpdateDto>(entityName: string): IEntityConverter<TEntity, TEntityDto, TListItemDto, TEntityCreateDto, TEntityUpdateDto> | undefined;
335
- resolveAuthorizationMiddleware<TEntity>(entityName: string): IEntityAuthorizationMiddleware<TEntity> | undefined;
336
- registerAuthorizationMiddleware<TEntity>(entityName: string, instance: IEntityAuthorizationMiddleware<TEntity>): void;
354
+ resolveAuthorizationMiddleware<TEntity, TAuthenticationContext extends IAuthenticationContext<TUserContext>, TUserContext>(entityName: string): IEntityAuthorizationMiddleware<TEntity, TAuthenticationContext, TUserContext> | undefined;
355
+ registerAuthorizationMiddleware<TEntity, TAuthenticationContext extends IAuthenticationContext<TUserContext>, TUserContext>(entityName: string, instance: IEntityAuthorizationMiddleware<TEntity, TAuthenticationContext, TUserContext>): void;
337
356
  resolveGetQuery<TEntity, TEntityId>(entityName: string): IEntityGetQuery<TEntity, TEntityId>;
338
357
  registerGetQuery<TEntity, TEntityId>(entityName: string, instance: IEntityGetQuery<TEntity, TEntityId>): void;
339
358
  resolveSearchQuery<TEntity, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets>(entityName: string): IEntitiesSearchQuery<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets>;
@@ -358,24 +377,27 @@ declare class EntitiesServiceLocator {
358
377
  registerUpsertAction<TEntity, TEntityId, TEntityUpdateData, TEntityDto>(entityName: string, instance: IEntityUpsertAction<TEntity, TEntityId, TEntityUpdateData, TEntityDto>): void;
359
378
  resolveDeleteAction<TEntity, TEntityId>(entityName: string): IEntityDeleteAction<TEntity, TEntityId>;
360
379
  registerDeleteAction<TEntity, TEntityId>(entityName: string, instance: IEntityDeleteAction<TEntity, TEntityId>): void;
361
- resolveQueryBuilder<TEntity, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets>(entityName: string): IEntitiesQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets>;
362
- registerQueryBuilder<TEntity, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets>(entityName: string, instance: IEntitiesQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets>): void;
380
+ resolveQueryBuilder<TEntity, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets, TUserContext>(entityName: string): IEntitiesQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets, TUserContext>;
381
+ registerQueryBuilder<TEntity, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets, TUserContext>(entityName: string, instance: IEntitiesQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets, TUserContext>): void;
363
382
  }
364
383
 
365
384
  interface IEntityManagerServiceRoot {
366
385
  locator: ServiceLocator;
367
386
  getEntitiesServicesLocator(): EntitiesServiceLocator;
368
387
  getEntityServicesLocator<TEntity, TEntityId>(entityName: string): EntityServiceLocator<TEntity, TEntityId>;
388
+ addAuthentication<TAuthenticationContextProvider extends IAuthenticationContextProvider<TUserContext>, TUserContext>({ provider, }: {
389
+ provider: TAuthenticationContextProvider;
390
+ }): void;
369
391
  registerEntity<TEntity, TEntityId, TRepository extends IEntityRepository<TEntity, TEntityId, unknown, unknown, unknown, unknown>>(entityName: string, repository: TRepository): IEntityManagerServiceCollection<TEntity, TEntityId>;
370
392
  }
371
393
  interface IEntityManagerServiceCollection<TEntity, TEntityId> {
372
394
  getServiceLocator(): EntityServiceLocator<TEntity, TEntityId>;
373
- mapCrudOperations<TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets, TEntitiesQueryBuilder extends IEntitiesQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets>>({ queryBuilder, }: {
395
+ mapCrudOperations<TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets, TEntitiesQueryBuilder extends IEntitiesQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets, unknown>>({ queryBuilder, }: {
374
396
  queryBuilder: TEntitiesQueryBuilder;
375
397
  }): IEntityManagerServiceCollection<TEntity, TEntityId>;
376
398
  addConverter<TEntityDto, TListItemDto, TEntityCreateInput, TEntityUpdateInput, TEntityConverter extends IEntityConverter<TEntity, TEntityDto, TListItemDto, TEntityCreateInput, TEntityUpdateInput>>(converter: TEntityConverter): IEntityManagerServiceCollection<TEntity, TEntityId>;
377
399
  addAdapter<TEntityCreateData, TEntityUpdateData, TEntityAdapter extends IEntityAdapter<TEntity, TEntityCreateData, TEntityUpdateData>>(adapter: TEntityAdapter): IEntityManagerServiceCollection<TEntity, TEntityId>;
378
- addAuthorization<TEntityAuthorizationMiddleware extends IEntityAuthorizationMiddleware<TEntity>>({ middleware, }: {
400
+ addAuthorization<TEntityAuthorizationMiddleware extends IEntityAuthorizationMiddleware<TEntity, TAuthenticationContext, TUserContext>, TAuthenticationContext extends IAuthenticationContext<TUserContext>, TUserContext>({ middleware, }: {
379
401
  middleware: TEntityAuthorizationMiddleware;
380
402
  }): IEntityManagerServiceCollection<TEntity, TEntityId>;
381
403
  withReplica<TRepository extends IEntityRepository<TEntity, TEntityId, unknown, unknown, unknown, unknown>>({ name, options, repository, }: {
@@ -433,6 +455,13 @@ interface ISearchResultsPaging<TCursor> {
433
455
  prevPageCursor?: TCursor;
434
456
  }
435
457
 
458
+ declare abstract class NestEntityAuthorizationMiddleware<TEntity, TAuthenticationContext extends IAuthenticationContext<TUserContext>, TUserContext> implements IEntityAuthorizationMiddleware<TEntity, TAuthenticationContext, TUserContext> {
459
+ abstract canRead(entity: Partial<TEntity>, context: TAuthenticationContext): Promise<IAuthorizationResult>;
460
+ abstract canCreate(entity: Partial<TEntity>, context: TAuthenticationContext): Promise<IAuthorizationResult>;
461
+ abstract canUpdate(entity: Partial<TEntity>, context: TAuthenticationContext): Promise<IAuthorizationResult>;
462
+ abstract canDelete(entity: Partial<TEntity>, context: TAuthenticationContext): Promise<IAuthorizationResult>;
463
+ }
464
+
436
465
  interface EntityAuthMiddlewareProps {
437
466
  entityName: string;
438
467
  }
@@ -579,7 +608,7 @@ declare class CustomDiscoveryService {
579
608
  declare class EntityManagerRegistry {
580
609
  private readonly container;
581
610
  getContainer(): IEntityManagerServiceRoot;
582
- resisterGlobalServices({ eventEmitter, }: {
611
+ registerGlobalServices({ eventEmitter, }: {
583
612
  eventEmitter?: IEventEmitter;
584
613
  }): Promise<void>;
585
614
  registerDiscoveredEntity(app: INestApplicationContext, { adapter, entityName, converter, queryBuilder, repository, authMiddleware, }: {
@@ -607,8 +636,14 @@ declare abstract class NestEntityManager<TEntity, TEntityId, TEntityCreateData,
607
636
  get provider(): IEntityManager<TEntity, TEntityId, TEntityCreateData, TEntityUpdateData, TEntitySearchParameters, TSorting, TCursor, TFacets>;
608
637
  }
609
638
 
610
- declare abstract class QueryBuilderBase<TEntity, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets> implements IEntitiesQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets> {
611
- abstract search(request: TEntitySearchParameters): Promise<IEntitiesSearchResults<TEntitySearchParameters, TEntity, TSorting, TCursor, TFacets>>;
639
+ declare class AuthenticationModule {
640
+ }
641
+
642
+ declare class MultiTenancyModule {
643
+ }
644
+
645
+ declare abstract class QueryBuilderBase<TEntity, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets, TUserContext> implements IEntitiesQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets, TUserContext> {
646
+ abstract search(request: TEntitySearchParameters, context?: IAuthenticationContext<TUserContext>): Promise<IEntitiesSearchResults<TEntitySearchParameters, TEntity, TSorting, TCursor, TFacets>>;
612
647
  protected getIndexBasedPagingResult({ paging, totResults, currentPageResults, }: {
613
648
  paging?: ISearchRequestPaging<number>;
614
649
  totResults: number;
@@ -637,24 +672,25 @@ declare class TypeOrmRepository<TEntity extends ObjectLiteral, TEntityId> implem
637
672
  upsert(id: TEntityId, entity: Partial<TEntity>): Promise<TEntity>;
638
673
  }
639
674
 
640
- declare abstract class TypeOrmQueryBuilder<TEntity extends ObjectLiteral, TEntitySearchParameters extends IEntitySearchParameters<TSorting, number>, TSorting extends SortingType, TFacets> extends QueryBuilderBase<TEntity, TEntitySearchParameters, TSorting, number, TFacets> {
675
+ declare abstract class TypeOrmQueryBuilder<TEntity extends ObjectLiteral, TEntitySearchParameters extends IEntitySearchParameters<TSorting, number>, TSorting extends SortingType, TFacets, TUserContext> extends QueryBuilderBase<TEntity, TEntitySearchParameters, TSorting, number, TFacets, TUserContext> {
641
676
  private readonly services;
642
677
  private repository;
643
678
  constructor(services: EntityServiceLocator<TEntity, unknown>);
644
- search(request: TEntitySearchParameters): Promise<IEntitiesSearchResults<TEntitySearchParameters, TEntity, TSorting, number, TFacets>>;
645
- protected findPagedQueryResults(request: TEntitySearchParameters): Promise<TEntity[]>;
646
- protected getRelationsToLoad(request: TEntitySearchParameters): FindOptionsRelations<TEntity> | undefined;
679
+ search(request: TEntitySearchParameters, context?: IAuthenticationContext<TUserContext>): Promise<IEntitiesSearchResults<TEntitySearchParameters, TEntity, TSorting, number, TFacets>>;
680
+ protected findPagedQueryResults(request: TEntitySearchParameters, context?: IAuthenticationContext<TUserContext>): Promise<TEntity[]>;
681
+ protected getRelationsToLoad(request: TEntitySearchParameters, context?: IAuthenticationContext<TUserContext>): FindOptionsRelations<TEntity> | undefined;
647
682
  protected buildPagingParameters(request: TEntitySearchParameters): {
648
683
  skip: number | undefined;
649
684
  take: number | undefined;
650
685
  };
651
- protected countQueryResults(request: TEntitySearchParameters): Promise<number>;
686
+ protected countQueryResults(request: TEntitySearchParameters, context?: IAuthenticationContext<TUserContext>): Promise<number>;
652
687
  protected abstract buildWhereClause(request: TEntitySearchParameters): FindOptionsWhere<TEntity>[] | FindOptionsWhere<TEntity>;
653
- protected abstract calculateFacets(request: TEntitySearchParameters): Promise<TFacets | undefined>;
688
+ protected abstract buildContextFilter(context?: IAuthenticationContext<TUserContext>): FindOptionsWhere<TEntity>[] | FindOptionsWhere<TEntity>;
689
+ protected abstract calculateFacets(request: TEntitySearchParameters, context?: IAuthenticationContext<TUserContext>): Promise<TFacets | undefined>;
654
690
  protected getRepository(): TypeOrmRepository<TEntity, unknown>;
655
691
  }
656
692
 
657
- declare abstract class NestTypeOrmQueryBuilder<TEntity extends ObjectLiteral, TEntitySearchParameters extends IEntitySearchParameters<TSorting, number>, TSorting extends SortingType, TFacets> extends TypeOrmQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TFacets> {
693
+ declare abstract class NestTypeOrmQueryBuilder<TEntity extends ObjectLiteral, TEntitySearchParameters extends IEntitySearchParameters<TSorting, number>, TSorting extends SortingType, TFacets, TUserContext> extends TypeOrmQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TFacets, TUserContext> {
658
694
  constructor(entityName: string, registry: EntityManagerRegistry);
659
695
  }
660
696
 
@@ -662,6 +698,18 @@ declare class NestTypeOrmRepository<TEntity extends ObjectLiteral, TEntityId> ex
662
698
  constructor(repository: Repository<TEntity>);
663
699
  }
664
700
 
701
+ interface RuntimeErrorInformation {
702
+ exception: any;
703
+ request: any;
704
+ response: any;
705
+ }
706
+ declare abstract class AppExceptionsFilterBase implements ExceptionFilter {
707
+ catch(exception: unknown, host: ArgumentsHost): void;
708
+ protected getErrorStatusCode(exception: any): number;
709
+ protected abstract logError(info: RuntimeErrorInformation): Promise<void>;
710
+ protected abstract getCustomErrorStatusCode(exception: any): number | undefined;
711
+ }
712
+
665
713
  declare class NestEventEmitter implements IEventEmitter {
666
714
  private eventEmitter;
667
715
  constructor();
@@ -672,6 +720,7 @@ declare class NestEventEmitter implements IEventEmitter {
672
720
  interface EntityManagerStaticProviders {
673
721
  eventEmitter: EventEmitter2;
674
722
  modulesContainer: ModulesContainer$1;
723
+ authenticationProvider?: IAuthenticationContextProvider<unknown>;
675
724
  }
676
725
  declare class EntityManagerInitializer {
677
726
  private readonly discover;
@@ -689,9 +738,21 @@ declare class EntityManagerInitializer {
689
738
  private discoverAuthMiddlewares;
690
739
  }
691
740
 
741
+ declare class AppSessionMiddleware implements NestMiddleware {
742
+ use(req: Request, res: Response, next: NextFunction): void;
743
+ }
744
+
745
+ declare class AppSessionService {
746
+ getValue<T>(key: string): T;
747
+ setValue<T>(key: string, value: T): void;
748
+ clearValue(key: string): void;
749
+ getRequest(): express.Request<express_serve_static_core.ParamsDictionary, any, any, qs.ParsedQs, Record<string, any>>;
750
+ private getSession;
751
+ }
752
+
692
753
  declare class EntityManagerModule {
693
754
  }
694
755
 
695
756
  declare const newUuid: () => string;
696
757
 
697
- export { EntityActionsProps, EntityAdapterProps, EntityAuthMiddlewareProps, EntityConnectorProps, EntityConverterProps, EntityManagerException, EntityManagerInitializer, EntityManagerModule, EntityManagerProps, EntityManagerRegistry, EntityManagerSymbols, EntityNotFoundException, EntityOperationType, EntityOperationUnauthorizedException, EntityProps, EntityQueryBuilderProps, EntityRepositoryProps, FilterExpression, IAuthorizationResult, IEntitiesQueryBuilder, IEntitiesSearchAction, IEntitiesSearchQuery, IEntityActions, IEntityAdapter, IEntityAuthorizationMiddleware, IEntityConverter, IEntityCreateAction, IEntityCreateCommand, IEntityDeleteAction, IEntityDeleteCommand, IEntityEventsManager, IEntityGetAction, IEntityGetQuery, IEntityManager, IEntityManagerServiceCollection, IEntityManagerServiceRoot, IEntityMapper, IEntityReplicaDeleteManager, IEntityReplicaSyncManager, IEntityRepository, IEntitySearchParameters, IEntitySearchResults, IEntityUpdateAction, IEntityUpdateCommand, IEntityUpsertAction, IEntityUpsertCommand, IReplicasConfiguration, ISearchFilters, ISearchOptions, ISearchRequestPaging, ISearchResultsPaging, ISearchSorting, ISearchSortingField, ModulesContainerProvider, MultipleEntitiesFoundException, NestEntityActions, NestEntityManager, NestTypeOrmQueryBuilder, NestTypeOrmRepository, QueryBuilderBase, ReplicaConfiguration, ReplicaOptions, ReplicationMode, SortDirection, SortingType, WpEntity, WpEntityActions, WpEntityAdapter, WpEntityAuthMiddleware, WpEntityConnector, WpEntityConverter, WpEntityManager, WpEntityQueryBuilder, WpEntityRepository, newUuid };
758
+ export { AppExceptionsFilterBase, AppSessionMiddleware, AppSessionService, AuthenticationModule, EntityActionsProps, EntityAdapterProps, EntityAuthMiddlewareProps, EntityConnectorProps, EntityConverterProps, EntityManagerException, EntityManagerInitializer, EntityManagerModule, EntityManagerProps, EntityManagerRegistry, EntityManagerSymbols, EntityNotFoundException, EntityOperationType, EntityOperationUnauthorizedException, EntityProps, EntityQueryBuilderProps, EntityRepositoryProps, FilterExpression, IAuthenticationContext, IAuthenticationContextProvider, IAuthorizationResult, IEntitiesQueryBuilder, IEntitiesSearchAction, IEntitiesSearchQuery, IEntitiesSearchResults, IEntitiesSearchResultsPaging, IEntityActions, IEntityAdapter, IEntityAuthorizationMiddleware, IEntityConverter, IEntityCreateAction, IEntityCreateCommand, IEntityDeleteAction, IEntityDeleteCommand, IEntityEventsManager, IEntityGetAction, IEntityGetQuery, IEntityManager, IEntityManagerServiceCollection, IEntityManagerServiceRoot, IEntityMapper, IEntityReplicaDeleteManager, IEntityReplicaSyncManager, IEntityRepository, IEntitySearchParameters, IEntitySearchResults, IEntityUpdateAction, IEntityUpdateCommand, IEntityUpsertAction, IEntityUpsertCommand, IReplicasConfiguration, ISearchFilters, ISearchOptions, ISearchRequestPaging, ISearchResultsPaging, ISearchSorting, ISearchSortingField, ModulesContainerProvider, MultiTenancyModule, MultipleEntitiesFoundException, NestEntityActions, NestEntityAuthorizationMiddleware, NestEntityManager, NestTypeOrmQueryBuilder, NestTypeOrmRepository, QueryBuilderBase, ReplicaConfiguration, ReplicaOptions, ReplicationMode, SortDirection, SortingType, WpEntity, WpEntityActions, WpEntityAdapter, WpEntityAuthMiddleware, WpEntityConnector, WpEntityConverter, WpEntityManager, WpEntityQueryBuilder, WpEntityRepository, newUuid };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@punks/backend-entity-manager",
3
- "version": "0.0.22",
3
+ "version": "0.0.24",
4
4
  "description": "",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -15,7 +15,7 @@
15
15
  },
16
16
  "types": "dist/index.d.ts",
17
17
  "scripts": {
18
- "test": "jest test --passWithNoTests",
18
+ "test": "jest --passWithNoTests",
19
19
  "clean": "rimraf dist",
20
20
  "build": "yarn clean && rollup -c",
21
21
  "deploy:npm": "yarn build && npm publish --access public",
@@ -26,20 +26,26 @@
26
26
  "license": "ISC",
27
27
  "devDependencies": {
28
28
  "@babel/core": "^7.21.0",
29
- "@nestjs/common": "^10.0.5",
30
- "@nestjs/core": "^10.0.5",
29
+ "@nestjs/common": "^10.1.0",
30
+ "@nestjs/core": "^10.1.0",
31
31
  "@nestjs/event-emitter": "^2.0.0",
32
- "@nestjs/swagger": "^7.1.1",
33
- "@nestjs/testing": "^10.0.5",
32
+ "@nestjs/platform-express": "^10.1.0",
33
+ "@nestjs/swagger": "^7.1.2",
34
+ "@nestjs/testing": "^10.1.0",
34
35
  "@nestjs/typeorm": "^10.0.0",
35
36
  "@rollup/plugin-commonjs": "^21.0.1",
37
+ "@rollup/plugin-json": "^6.0.0",
36
38
  "@rollup/plugin-node-resolve": "^13.0.6",
37
39
  "@rollup/plugin-typescript": "^11.0.0",
40
+ "@types/express": "^4.17.17",
38
41
  "@types/jest": "^29.5.2",
39
42
  "@types/lodash": "^4.14.195",
43
+ "@types/supertest": "^2.0.12",
44
+ "async_hooks": "^1.0.0",
40
45
  "class-transformer": "^0.5.1",
41
46
  "class-validator": "^0.14.0",
42
- "jest": "^29.4.3",
47
+ "express": "^4.18.2",
48
+ "jest": "^29.6.1",
43
49
  "lodash": "^4.17.21",
44
50
  "pg": "^8.11.1",
45
51
  "pg-mem": "^2.6.13",
@@ -49,6 +55,7 @@
49
55
  "rollup-plugin-dts": "^4.0.1",
50
56
  "rollup-plugin-peer-deps-external": "^2.2.4",
51
57
  "rollup-plugin-postcss": "^4.0.2",
58
+ "supertest": "^6.3.3",
52
59
  "ts-jest": "^29.1.1",
53
60
  "tslib": "^2.5.0",
54
61
  "typeorm": "^0.3.17",
@@ -56,7 +63,7 @@
56
63
  },
57
64
  "peerDependencies": {},
58
65
  "dependencies": {
59
- "@punks/backend-core": "0.0.8"
66
+ "@punks/backend-core": "0.0.12"
60
67
  },
61
68
  "jest": {
62
69
  "transform": {
package/readme.md CHANGED
@@ -8,6 +8,12 @@ This library contains the entity manager of the Punks backend.
8
8
  npm install @punks/backend-entity-manager @punks/backend-core class-transformer class-validator
9
9
  ```
10
10
 
11
+ ## Add authentication
12
+
13
+ ```bash
14
+ npm install express async_hooks @nestjs/platform-express
15
+ ```
16
+
11
17
  ## Supported ORMs:
12
18
 
13
19
  - [TypeORM](https://typeorm.io/)
@@ -24,3 +30,27 @@ npm install typeorm
24
30
  # NestJS with TypeORM
25
31
  npm install @nestjs/core @nestjs/common @nestjs/event-emitter @nestjs/typeorm @nestjs/swagger
26
32
  ```
33
+
34
+ ## Library structure
35
+
36
+ ```
37
+ ├─ extensions
38
+ | |
39
+ | └─ plugins
40
+ | |
41
+ | └─ email: email plugin
42
+ |
43
+ ├─ platforms
44
+ | |
45
+ | └─ nestjs: nestjs core module
46
+ |
47
+ ├─ actions: entity manager actions
48
+ | |
49
+ | ├── commands
50
+ | |
51
+ | └── queries
52
+ |
53
+ ├─ ioc: dependency injection
54
+ |
55
+ └─ abstractions: common abstractions
56
+ ```