@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.
- package/dist/cjs/index.js +52296 -1181
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/__test__/entity/foo.d.ts +3 -3
- package/dist/cjs/types/__test__/providers/typeorm/entity/foo.d.ts +3 -2
- package/dist/cjs/types/abstractions/actions.d.ts +2 -2
- package/dist/cjs/types/abstractions/authentication.d.ts +9 -0
- package/dist/cjs/types/abstractions/authorization.d.ts +6 -5
- package/dist/cjs/types/abstractions/configuration.d.ts +6 -2
- package/dist/cjs/types/abstractions/index.d.ts +2 -1
- package/dist/cjs/types/abstractions/queries.d.ts +5 -4
- package/dist/cjs/types/actions/search.d.ts +2 -2
- package/dist/cjs/types/authorization/allowAll.d.ts +1 -1
- package/dist/cjs/types/index.d.ts +1 -0
- package/dist/cjs/types/integrations/repository/typeorm/queryBuilder.d.ts +9 -8
- package/dist/cjs/types/models/index.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/__test__/server/authentication/index.d.ts +13 -0
- package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/authentication.d.ts +10 -0
- package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/controller.d.ts +2 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/dto.d.ts +7 -0
- package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/models.d.ts +17 -0
- package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/query.d.ts +5 -2
- package/dist/cjs/types/platforms/nest/__test__/server/index.d.ts +10 -2
- package/dist/cjs/types/platforms/nest/__test__/server/middlewares/index.d.ts +6 -0
- package/dist/cjs/types/platforms/nest/__test__/server/session/session.controller.d.ts +9 -0
- package/dist/cjs/types/platforms/nest/__test__/tests/base/test_server_session.test.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/authentication/entityAuthorizationMiddleware.d.ts +7 -0
- package/dist/cjs/types/platforms/nest/authentication/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/extensions/authentication/abstractions/index.d.ts +2 -0
- package/dist/cjs/types/platforms/nest/extensions/authentication/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/extensions/authentication/module.d.ts +2 -0
- package/dist/cjs/types/platforms/nest/extensions/authentication/services/authentication/index.d.ts +3 -0
- package/dist/cjs/types/platforms/nest/extensions/authentication/services/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/extensions/authentication/services/providers.d.ts +2 -0
- package/dist/cjs/types/platforms/nest/extensions/index.d.ts +2 -0
- package/dist/cjs/types/platforms/nest/extensions/multi-tenancy/abstractions/index.d.ts +39 -0
- package/dist/cjs/types/platforms/nest/extensions/multi-tenancy/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/extensions/multi-tenancy/module.d.ts +2 -0
- package/dist/cjs/types/platforms/nest/index.d.ts +6 -0
- package/dist/cjs/types/platforms/nest/integrations/typeorm/queryBuilder.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/ioc/registry/index.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/middlewares/errors-handler/index.d.ts +12 -0
- package/dist/cjs/types/platforms/nest/middlewares/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/plugins/email/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/plugins/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/processors/initializer/index.d.ts +2 -0
- package/dist/cjs/types/platforms/nest/services/index.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/services/providers.d.ts +2 -0
- package/dist/cjs/types/platforms/nest/services/session/index.d.ts +9 -0
- package/dist/cjs/types/platforms/nest/session/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/session/middleware.d.ts +6 -0
- package/dist/cjs/types/platforms/nest/session/session.d.ts +12 -0
- package/dist/cjs/types/platforms/nest/session/storage.d.ts +6 -0
- package/dist/cjs/types/providers/services.d.ts +10 -6
- package/dist/cjs/types/queries/search.d.ts +5 -3
- package/dist/cjs/types/symbols/ioc.d.ts +3 -0
- package/dist/cjs/types/templates/queryBuilder.d.ts +5 -5
- package/dist/esm/index.js +52284 -1182
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/__test__/entity/foo.d.ts +3 -3
- package/dist/esm/types/__test__/providers/typeorm/entity/foo.d.ts +3 -2
- package/dist/esm/types/abstractions/actions.d.ts +2 -2
- package/dist/esm/types/abstractions/authentication.d.ts +9 -0
- package/dist/esm/types/abstractions/authorization.d.ts +6 -5
- package/dist/esm/types/abstractions/configuration.d.ts +6 -2
- package/dist/esm/types/abstractions/index.d.ts +2 -1
- package/dist/esm/types/abstractions/queries.d.ts +5 -4
- package/dist/esm/types/actions/search.d.ts +2 -2
- package/dist/esm/types/authorization/allowAll.d.ts +1 -1
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types/integrations/repository/typeorm/queryBuilder.d.ts +9 -8
- package/dist/esm/types/models/index.d.ts +1 -1
- package/dist/esm/types/platforms/nest/__test__/server/authentication/index.d.ts +13 -0
- package/dist/esm/types/platforms/nest/__test__/server/entities/foo/authentication.d.ts +10 -0
- package/dist/esm/types/platforms/nest/__test__/server/entities/foo/controller.d.ts +2 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/foo/dto.d.ts +7 -0
- package/dist/esm/types/platforms/nest/__test__/server/entities/foo/models.d.ts +17 -0
- package/dist/esm/types/platforms/nest/__test__/server/entities/foo/query.d.ts +5 -2
- package/dist/esm/types/platforms/nest/__test__/server/index.d.ts +10 -2
- package/dist/esm/types/platforms/nest/__test__/server/middlewares/index.d.ts +6 -0
- package/dist/esm/types/platforms/nest/__test__/server/session/session.controller.d.ts +9 -0
- package/dist/esm/types/platforms/nest/__test__/tests/base/test_server_session.test.d.ts +1 -0
- package/dist/esm/types/platforms/nest/authentication/entityAuthorizationMiddleware.d.ts +7 -0
- package/dist/esm/types/platforms/nest/authentication/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/extensions/authentication/abstractions/index.d.ts +2 -0
- package/dist/esm/types/platforms/nest/extensions/authentication/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/extensions/authentication/module.d.ts +2 -0
- package/dist/esm/types/platforms/nest/extensions/authentication/services/authentication/index.d.ts +3 -0
- package/dist/esm/types/platforms/nest/extensions/authentication/services/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/extensions/authentication/services/providers.d.ts +2 -0
- package/dist/esm/types/platforms/nest/extensions/index.d.ts +2 -0
- package/dist/esm/types/platforms/nest/extensions/multi-tenancy/abstractions/index.d.ts +39 -0
- package/dist/esm/types/platforms/nest/extensions/multi-tenancy/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/extensions/multi-tenancy/module.d.ts +2 -0
- package/dist/esm/types/platforms/nest/index.d.ts +6 -0
- package/dist/esm/types/platforms/nest/integrations/typeorm/queryBuilder.d.ts +1 -1
- package/dist/esm/types/platforms/nest/ioc/registry/index.d.ts +1 -1
- package/dist/esm/types/platforms/nest/middlewares/errors-handler/index.d.ts +12 -0
- package/dist/esm/types/platforms/nest/middlewares/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/plugins/email/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/plugins/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/processors/initializer/index.d.ts +2 -0
- package/dist/esm/types/platforms/nest/services/index.d.ts +1 -1
- package/dist/esm/types/platforms/nest/services/providers.d.ts +2 -0
- package/dist/esm/types/platforms/nest/services/session/index.d.ts +9 -0
- package/dist/esm/types/platforms/nest/session/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/session/middleware.d.ts +6 -0
- package/dist/esm/types/platforms/nest/session/session.d.ts +12 -0
- package/dist/esm/types/platforms/nest/session/storage.d.ts +6 -0
- package/dist/esm/types/providers/services.d.ts +10 -6
- package/dist/esm/types/queries/search.d.ts +5 -3
- package/dist/esm/types/symbols/ioc.d.ts +3 -0
- package/dist/esm/types/templates/queryBuilder.d.ts +5 -5
- package/dist/index.d.ts +88 -27
- package/package.json +15 -8
- package/readme.md +30 -0
|
@@ -2,7 +2,7 @@ import { IEntityManagerServiceRoot } from "../../abstractions/configuration";
|
|
|
2
2
|
import { IEntityConverter } from "../../abstractions/converters";
|
|
3
3
|
import { IEntitiesQueryBuilder } from "../../abstractions/queries";
|
|
4
4
|
import { IEntitySearchParameters } from "../../abstractions/searchParameters";
|
|
5
|
-
import {
|
|
5
|
+
import { IEntitiesSearchResults } from "../../models";
|
|
6
6
|
import { EntityServiceLocator } from "../../providers/services";
|
|
7
7
|
import { InMemoryRepository } from "../../testing/mocks/repository";
|
|
8
8
|
import { IEntityManager } from "../../abstractions";
|
|
@@ -29,10 +29,10 @@ export interface FooSearchParameters extends IEntitySearchParameters<FooSorting,
|
|
|
29
29
|
}
|
|
30
30
|
export interface FooFacets {
|
|
31
31
|
}
|
|
32
|
-
export declare class FooQueryBuilder implements IEntitiesQueryBuilder<FooEntity, FooSearchParameters, FooSorting, FooCursor, FooFacets> {
|
|
32
|
+
export declare class FooQueryBuilder implements IEntitiesQueryBuilder<FooEntity, FooSearchParameters, FooSorting, FooCursor, FooFacets, unknown> {
|
|
33
33
|
private readonly repository;
|
|
34
34
|
constructor(services: EntityServiceLocator<FooEntity, string>);
|
|
35
|
-
search(request: FooSearchParameters): Promise<
|
|
35
|
+
search(request: FooSearchParameters): Promise<IEntitiesSearchResults<FooSearchParameters, FooEntity, FooSorting, FooCursor, FooFacets>>;
|
|
36
36
|
}
|
|
37
37
|
export interface FooDto {
|
|
38
38
|
id: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DataSource, Repository, FindOptionsWhere } from "typeorm";
|
|
2
|
-
import { IEntityConverter, IEntityManager, IEntityManagerServiceRoot, IEntitySearchParameters } from "../../../../abstractions";
|
|
2
|
+
import { IAuthenticationContext, IEntityConverter, IEntityManager, IEntityManagerServiceRoot, IEntitySearchParameters } from "../../../../abstractions";
|
|
3
3
|
import { TypeOrmRepository } from "../../../../integrations/repository/typeorm";
|
|
4
4
|
import { EntityServiceLocator } from "../../../../providers/services";
|
|
5
5
|
import { TypeOrmQueryBuilder } from "../../../../integrations/repository/typeorm";
|
|
@@ -27,8 +27,9 @@ export interface FooSearchParameters extends IEntitySearchParameters<FooSorting,
|
|
|
27
27
|
}
|
|
28
28
|
export interface FooFacets {
|
|
29
29
|
}
|
|
30
|
-
export declare class FooQueryBuilder extends TypeOrmQueryBuilder<FooEntity, FooSearchParameters, FooSorting, FooFacets> {
|
|
30
|
+
export declare class FooQueryBuilder extends TypeOrmQueryBuilder<FooEntity, FooSearchParameters, FooSorting, FooFacets, unknown> {
|
|
31
31
|
constructor(services: EntityServiceLocator<FooEntity, string>);
|
|
32
|
+
protected buildContextFilter(context?: IAuthenticationContext<unknown> | undefined): FindOptionsWhere<FooEntity> | FindOptionsWhere<FooEntity>[];
|
|
32
33
|
protected buildWhereClause(request: FooSearchParameters): FindOptionsWhere<FooEntity> | FindOptionsWhere<FooEntity>[];
|
|
33
34
|
private buildAgeWhereClause;
|
|
34
35
|
protected calculateFacets(request: FooSearchParameters): Promise<FooFacets | undefined>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IEntitiesSearchResults } from "../models";
|
|
2
2
|
import { SortingType } from "./common";
|
|
3
3
|
import { IEntitySearchParameters } from "./searchParameters";
|
|
4
4
|
export interface IEntityCreateAction<TEntity, TEntityCreateDto, TEntityDto> {
|
|
@@ -17,7 +17,7 @@ export interface IEntityUpsertAction<TEntity, TEntityId, TEntityUpdateDto, TEnti
|
|
|
17
17
|
execute(id: TEntityId, input: TEntityUpdateDto): Promise<TEntityDto>;
|
|
18
18
|
}
|
|
19
19
|
export interface IEntitiesSearchAction<TEntity, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TEntityListItemDto, TSorting extends SortingType, TCursor, TFacets> {
|
|
20
|
-
execute(request: TEntitySearchParameters): Promise<
|
|
20
|
+
execute(request: TEntitySearchParameters): Promise<IEntitiesSearchResults<TEntitySearchParameters, TEntityListItemDto, TSorting, TCursor, TFacets>>;
|
|
21
21
|
}
|
|
22
22
|
export interface IEntityActions<TEntity, TEntityId, TEntityCreateDto, TEntityUpdateDto, TEntityDto, TEntityListItemDto, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets> {
|
|
23
23
|
get(): IEntityGetAction<TEntity, TEntityId, TEntityDto>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface IAuthenticationContext<TUserContext> {
|
|
2
|
+
isAuthenticated: boolean;
|
|
3
|
+
isAnonymous: boolean;
|
|
4
|
+
userId?: string;
|
|
5
|
+
userContext?: TUserContext;
|
|
6
|
+
}
|
|
7
|
+
export interface IAuthenticationContextProvider<TUserContext> {
|
|
8
|
+
getContext(): Promise<IAuthenticationContext<TUserContext>>;
|
|
9
|
+
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { IAuthenticationContext } from "./authentication";
|
|
1
2
|
export interface IAuthorizationResult {
|
|
2
3
|
isAuthorized: boolean;
|
|
3
4
|
}
|
|
4
|
-
export interface IEntityAuthorizationMiddleware<TEntity> {
|
|
5
|
-
canRead(entity: Partial<TEntity
|
|
6
|
-
canCreate(entity: Partial<TEntity
|
|
7
|
-
canUpdate(entity: Partial<TEntity
|
|
8
|
-
canDelete(entity: Partial<TEntity
|
|
5
|
+
export interface IEntityAuthorizationMiddleware<TEntity, TAuthenticationContext extends IAuthenticationContext<TUserContext>, TUserContext> {
|
|
6
|
+
canRead(entity: Partial<TEntity>, context: TAuthenticationContext): Promise<IAuthorizationResult>;
|
|
7
|
+
canCreate(entity: Partial<TEntity>, context: TAuthenticationContext): Promise<IAuthorizationResult>;
|
|
8
|
+
canUpdate(entity: Partial<TEntity>, context: TAuthenticationContext): Promise<IAuthorizationResult>;
|
|
9
|
+
canDelete(entity: Partial<TEntity>, context: TAuthenticationContext): Promise<IAuthorizationResult>;
|
|
9
10
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ServiceLocator } from "../ioc";
|
|
2
2
|
import { EntitiesServiceLocator, EntityServiceLocator } from "../providers/services";
|
|
3
3
|
import { IEntityAdapter } from "./adapters";
|
|
4
|
+
import { IAuthenticationContext, IAuthenticationContextProvider } from "./authentication";
|
|
4
5
|
import { IEntityAuthorizationMiddleware } from "./authorization";
|
|
5
6
|
import { SortingType } from "./common";
|
|
6
7
|
import { ConnectorOptions, IEntityConnector } from "./connectors";
|
|
@@ -14,16 +15,19 @@ export interface IEntityManagerServiceRoot {
|
|
|
14
15
|
locator: ServiceLocator;
|
|
15
16
|
getEntitiesServicesLocator(): EntitiesServiceLocator;
|
|
16
17
|
getEntityServicesLocator<TEntity, TEntityId>(entityName: string): EntityServiceLocator<TEntity, TEntityId>;
|
|
18
|
+
addAuthentication<TAuthenticationContextProvider extends IAuthenticationContextProvider<TUserContext>, TUserContext>({ provider, }: {
|
|
19
|
+
provider: TAuthenticationContextProvider;
|
|
20
|
+
}): void;
|
|
17
21
|
registerEntity<TEntity, TEntityId, TRepository extends IEntityRepository<TEntity, TEntityId, unknown, unknown, unknown, unknown>>(entityName: string, repository: TRepository): IEntityManagerServiceCollection<TEntity, TEntityId>;
|
|
18
22
|
}
|
|
19
23
|
export interface IEntityManagerServiceCollection<TEntity, TEntityId> {
|
|
20
24
|
getServiceLocator(): EntityServiceLocator<TEntity, TEntityId>;
|
|
21
|
-
mapCrudOperations<TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets, TEntitiesQueryBuilder extends IEntitiesQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets>>({ queryBuilder, }: {
|
|
25
|
+
mapCrudOperations<TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets, TEntitiesQueryBuilder extends IEntitiesQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets, unknown>>({ queryBuilder, }: {
|
|
22
26
|
queryBuilder: TEntitiesQueryBuilder;
|
|
23
27
|
}): IEntityManagerServiceCollection<TEntity, TEntityId>;
|
|
24
28
|
addConverter<TEntityDto, TListItemDto, TEntityCreateInput, TEntityUpdateInput, TEntityConverter extends IEntityConverter<TEntity, TEntityDto, TListItemDto, TEntityCreateInput, TEntityUpdateInput>>(converter: TEntityConverter): IEntityManagerServiceCollection<TEntity, TEntityId>;
|
|
25
29
|
addAdapter<TEntityCreateData, TEntityUpdateData, TEntityAdapter extends IEntityAdapter<TEntity, TEntityCreateData, TEntityUpdateData>>(adapter: TEntityAdapter): IEntityManagerServiceCollection<TEntity, TEntityId>;
|
|
26
|
-
addAuthorization<TEntityAuthorizationMiddleware extends IEntityAuthorizationMiddleware<TEntity
|
|
30
|
+
addAuthorization<TEntityAuthorizationMiddleware extends IEntityAuthorizationMiddleware<TEntity, TAuthenticationContext, TUserContext>, TAuthenticationContext extends IAuthenticationContext<TUserContext>, TUserContext>({ middleware, }: {
|
|
27
31
|
middleware: TEntityAuthorizationMiddleware;
|
|
28
32
|
}): IEntityManagerServiceCollection<TEntity, TEntityId>;
|
|
29
33
|
withReplica<TRepository extends IEntityRepository<TEntity, TEntityId, unknown, unknown, unknown, unknown>>({ name, options, repository, }: {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { IEntityCreateAction, IEntityDeleteAction, IEntityGetAction, IEntityUpdateAction, IEntityUpsertAction, IEntitiesSearchAction, IEntityActions, } from "./actions";
|
|
2
2
|
export { IEntityAdapter } from "./adapters";
|
|
3
|
-
export * from "./
|
|
3
|
+
export * from "./authentication";
|
|
4
|
+
export { IAuthorizationResult, IEntityAuthorizationMiddleware, } from "./authorization";
|
|
4
5
|
export { IEntityCreateCommand, IEntityUpdateCommand, IEntityUpsertCommand, IEntityDeleteCommand, } from "./commands";
|
|
5
6
|
export { SortingType } from "./common";
|
|
6
7
|
export { IEntityManagerServiceRoot, IEntityManagerServiceCollection, } from "./configuration";
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IEntitiesSearchResults } from "../models";
|
|
2
|
+
import { IAuthenticationContext } from "./authentication";
|
|
2
3
|
import { SortingType } from "./common";
|
|
3
4
|
import { IEntitySearchParameters } from "./searchParameters";
|
|
4
5
|
export interface IEntitiesSearchQuery<TEntity, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets> {
|
|
5
|
-
execute(request: TEntitySearchParameters): Promise<
|
|
6
|
+
execute(request: TEntitySearchParameters): Promise<IEntitiesSearchResults<TEntitySearchParameters, TEntity, TSorting, TCursor, TFacets>>;
|
|
6
7
|
}
|
|
7
8
|
export interface IEntityGetQuery<TEntity, TEntityId> {
|
|
8
9
|
execute(id: TEntityId): Promise<TEntity | undefined>;
|
|
9
10
|
}
|
|
10
|
-
export interface IEntitiesQueryBuilder<TEntity, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets> {
|
|
11
|
-
search(request: TEntitySearchParameters): Promise<
|
|
11
|
+
export interface IEntitiesQueryBuilder<TEntity, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets, TUserContext> {
|
|
12
|
+
search(request: TEntitySearchParameters, context?: IAuthenticationContext<TUserContext>): Promise<IEntitiesSearchResults<TEntitySearchParameters, TEntity, TSorting, TCursor, TFacets>>;
|
|
12
13
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { IEntitiesSearchAction } from "../abstractions/actions";
|
|
2
2
|
import { SortingType } from "../abstractions/common";
|
|
3
3
|
import { IEntitySearchParameters } from "../abstractions/searchParameters";
|
|
4
|
-
import {
|
|
4
|
+
import { IEntitiesSearchResults } from "../models";
|
|
5
5
|
import { EntityServiceLocator } from "../providers/services";
|
|
6
6
|
export declare class EntitiesSearchAction<TEntity, TEntityId, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TListItemDto, TSorting extends SortingType, TCursor, TFacets> implements IEntitiesSearchAction<TEntity, TEntitySearchParameters, TListItemDto, TSorting, TCursor, TFacets> {
|
|
7
7
|
private readonly services;
|
|
8
8
|
constructor(services: EntityServiceLocator<TEntity, TEntityId>);
|
|
9
|
-
execute(request: TEntitySearchParameters): Promise<
|
|
9
|
+
execute(request: TEntitySearchParameters): Promise<IEntitiesSearchResults<TEntitySearchParameters, TListItemDto, TSorting, TCursor, TFacets>>;
|
|
10
10
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IAuthorizationResult, IEntityAuthorizationMiddleware } from "../abstractions/authorization";
|
|
2
|
-
export declare class AllowAllAuthorizationMiddleware<TEntity> implements IEntityAuthorizationMiddleware<TEntity> {
|
|
2
|
+
export declare class AllowAllAuthorizationMiddleware<TEntity> implements IEntityAuthorizationMiddleware<TEntity, any, unknown> {
|
|
3
3
|
canRead(entity: TEntity): Promise<IAuthorizationResult>;
|
|
4
4
|
canCreate(entity: TEntity): Promise<{
|
|
5
5
|
isAuthorized: boolean;
|
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import { FindOptionsRelations, FindOptionsWhere, ObjectLiteral } from "typeorm";
|
|
2
|
-
import { IEntitySearchParameters, SortingType } from "../../../abstractions";
|
|
3
|
-
import {
|
|
2
|
+
import { IAuthenticationContext, IEntitySearchParameters, SortingType } from "../../../abstractions";
|
|
3
|
+
import { IEntitiesSearchResults } from "../../../models";
|
|
4
4
|
import { QueryBuilderBase } from "../../../templates";
|
|
5
5
|
import { TypeOrmRepository } from "./repository";
|
|
6
6
|
import { EntityServiceLocator } from "../../../providers/services";
|
|
7
|
-
export declare abstract class TypeOrmQueryBuilder<TEntity extends ObjectLiteral, TEntitySearchParameters extends IEntitySearchParameters<TSorting, number>, TSorting extends SortingType, TFacets> extends QueryBuilderBase<TEntity, TEntitySearchParameters, TSorting, number, TFacets> {
|
|
7
|
+
export 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> {
|
|
8
8
|
private readonly services;
|
|
9
9
|
private repository;
|
|
10
10
|
constructor(services: EntityServiceLocator<TEntity, unknown>);
|
|
11
|
-
search(request: TEntitySearchParameters): Promise<
|
|
12
|
-
protected findPagedQueryResults(request: TEntitySearchParameters): Promise<TEntity[]>;
|
|
13
|
-
protected getRelationsToLoad(request: TEntitySearchParameters): FindOptionsRelations<TEntity> | undefined;
|
|
11
|
+
search(request: TEntitySearchParameters, context?: IAuthenticationContext<TUserContext>): Promise<IEntitiesSearchResults<TEntitySearchParameters, TEntity, TSorting, number, TFacets>>;
|
|
12
|
+
protected findPagedQueryResults(request: TEntitySearchParameters, context?: IAuthenticationContext<TUserContext>): Promise<TEntity[]>;
|
|
13
|
+
protected getRelationsToLoad(request: TEntitySearchParameters, context?: IAuthenticationContext<TUserContext>): FindOptionsRelations<TEntity> | undefined;
|
|
14
14
|
protected buildPagingParameters(request: TEntitySearchParameters): {
|
|
15
15
|
skip: number | undefined;
|
|
16
16
|
take: number | undefined;
|
|
17
17
|
};
|
|
18
|
-
protected countQueryResults(request: TEntitySearchParameters): Promise<number>;
|
|
18
|
+
protected countQueryResults(request: TEntitySearchParameters, context?: IAuthenticationContext<TUserContext>): Promise<number>;
|
|
19
19
|
protected abstract buildWhereClause(request: TEntitySearchParameters): FindOptionsWhere<TEntity>[] | FindOptionsWhere<TEntity>;
|
|
20
|
-
protected abstract
|
|
20
|
+
protected abstract buildContextFilter(context?: IAuthenticationContext<TUserContext>): FindOptionsWhere<TEntity>[] | FindOptionsWhere<TEntity>;
|
|
21
|
+
protected abstract calculateFacets(request: TEntitySearchParameters, context?: IAuthenticationContext<TUserContext>): Promise<TFacets | undefined>;
|
|
21
22
|
protected getRepository(): TypeOrmRepository<TEntity, unknown>;
|
|
22
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { IEntitiesSearchResultsPaging
|
|
1
|
+
export { IEntitiesSearchResultsPaging, IEntitiesSearchResults } from "./search";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IAuthenticationContext, IAuthenticationContextProvider } from "../../../../../abstractions";
|
|
2
|
+
export type AppUserContext = {
|
|
3
|
+
email: string;
|
|
4
|
+
};
|
|
5
|
+
export declare class AppAuthContext implements IAuthenticationContext<AppUserContext> {
|
|
6
|
+
isAuthenticated: boolean;
|
|
7
|
+
isAnonymous: boolean;
|
|
8
|
+
userId?: string;
|
|
9
|
+
userContext?: AppUserContext;
|
|
10
|
+
}
|
|
11
|
+
export declare class AppAuthContextProvider implements IAuthenticationContextProvider<AppUserContext> {
|
|
12
|
+
getContext(): Promise<IAuthenticationContext<AppUserContext>>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IAuthorizationResult } from "../../../../../../abstractions";
|
|
2
|
+
import { NestEntityAuthorizationMiddleware } from "../../../../authentication";
|
|
3
|
+
import { AppAuthContext, AppUserContext } from "../../authentication";
|
|
4
|
+
import { FooEntity } from "./entity";
|
|
5
|
+
export declare class FooAuthMiddleware extends NestEntityAuthorizationMiddleware<FooEntity, AppAuthContext, AppUserContext> {
|
|
6
|
+
canRead(entity: Partial<FooEntity>, context: AppAuthContext): Promise<IAuthorizationResult>;
|
|
7
|
+
canCreate(entity: Partial<FooEntity>, context: AppAuthContext): Promise<IAuthorizationResult>;
|
|
8
|
+
canUpdate(entity: Partial<FooEntity>, context: AppAuthContext): Promise<IAuthorizationResult>;
|
|
9
|
+
canDelete(entity: Partial<FooEntity>, context: AppAuthContext): Promise<IAuthorizationResult>;
|
|
10
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FooEntityActions } from "./actions";
|
|
2
|
-
import { FooCreateDto, FooDto, FooListItemDto, FooUpdateDto } from "./dto";
|
|
2
|
+
import { FooCreateDto, FooDto, FooListItemDto, FooSearchRequest, FooSearchResponse, FooUpdateDto } from "./dto";
|
|
3
3
|
export declare class FooController {
|
|
4
4
|
private readonly actions;
|
|
5
5
|
constructor(actions: FooEntityActions);
|
|
@@ -8,4 +8,5 @@ export declare class FooController {
|
|
|
8
8
|
update(id: string, item: FooUpdateDto): Promise<FooDto>;
|
|
9
9
|
delete(id: string): Promise<void>;
|
|
10
10
|
items(): Promise<FooListItemDto[]>;
|
|
11
|
+
search(request: FooSearchRequest): Promise<FooSearchResponse>;
|
|
11
12
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { FooSearchParameters, FooSearchResults } from "./models";
|
|
1
2
|
export declare class FooProfile {
|
|
2
3
|
name: string;
|
|
3
4
|
age: number;
|
|
@@ -18,3 +19,9 @@ export declare class FooUpdateDto {
|
|
|
18
19
|
id: string;
|
|
19
20
|
profile: FooProfile;
|
|
20
21
|
}
|
|
22
|
+
export declare class FooSearchRequest {
|
|
23
|
+
params: FooSearchParameters;
|
|
24
|
+
}
|
|
25
|
+
export declare class FooSearchResponse extends FooSearchResults<FooListItemDto> {
|
|
26
|
+
items: FooListItemDto[];
|
|
27
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IEntitySearchParameters } from "../../../../../../abstractions";
|
|
2
|
+
import { IEntitiesSearchResults, IEntitiesSearchResultsPaging } from "../../../../../../models";
|
|
2
3
|
import { FooEntity } from "./entity";
|
|
3
4
|
export type FooEntityId = string;
|
|
4
5
|
export type FooCreateData = Partial<FooEntity>;
|
|
@@ -17,3 +18,19 @@ export declare enum FooSorting {
|
|
|
17
18
|
Age = "Age"
|
|
18
19
|
}
|
|
19
20
|
export type FooCursor = number;
|
|
21
|
+
export declare class FooSearchResultsPaging implements IEntitiesSearchResultsPaging<FooCursor> {
|
|
22
|
+
pageIndex: number;
|
|
23
|
+
pageSize: number;
|
|
24
|
+
totPageItems: number;
|
|
25
|
+
totPages: number;
|
|
26
|
+
totItems: number;
|
|
27
|
+
nextPageCursor?: FooCursor;
|
|
28
|
+
currentPageCursor?: FooCursor;
|
|
29
|
+
prevPageCursor?: FooCursor;
|
|
30
|
+
}
|
|
31
|
+
export declare class FooSearchResults<TResult> implements IEntitiesSearchResults<FooSearchParameters, TResult, FooSorting, FooCursor, FooFacets> {
|
|
32
|
+
request: FooSearchParameters;
|
|
33
|
+
facets?: FooFacets;
|
|
34
|
+
paging?: FooSearchResultsPaging;
|
|
35
|
+
items: TResult[];
|
|
36
|
+
}
|
|
@@ -3,9 +3,12 @@ import { FooEntity } from "./entity";
|
|
|
3
3
|
import { FooFacets, FooSearchParameters, FooSorting } from "./models";
|
|
4
4
|
import { NestTypeOrmQueryBuilder } from "../../../../integrations/typeorm";
|
|
5
5
|
import { EntityManagerRegistry } from "../../../../ioc/registry";
|
|
6
|
-
|
|
6
|
+
import { AppAuthContext } from "../../authentication";
|
|
7
|
+
import { IAuthenticationContext } from "../../../../../../abstractions";
|
|
8
|
+
export declare class FooQueryBuilder extends NestTypeOrmQueryBuilder<FooEntity, FooSearchParameters, FooSorting, FooFacets, AppAuthContext> {
|
|
7
9
|
constructor(registry: EntityManagerRegistry);
|
|
10
|
+
protected buildContextFilter(context?: IAuthenticationContext<AppAuthContext> | undefined): FindOptionsWhere<FooEntity> | FindOptionsWhere<FooEntity>[];
|
|
8
11
|
protected buildWhereClause(request: FooSearchParameters): FindOptionsWhere<FooEntity> | FindOptionsWhere<FooEntity>[];
|
|
9
12
|
private buildAgeWhereClause;
|
|
10
|
-
protected calculateFacets(request: FooSearchParameters): Promise<FooFacets | undefined>;
|
|
13
|
+
protected calculateFacets(request: FooSearchParameters, context?: IAuthenticationContext<AppAuthContext>): Promise<FooFacets | undefined>;
|
|
11
14
|
}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
export declare const createTestServer: (
|
|
2
|
-
|
|
1
|
+
export declare const createTestServer: (options?: {
|
|
2
|
+
createWebServer?: boolean;
|
|
3
|
+
serverStartPort?: number;
|
|
4
|
+
useAuthentication?: boolean;
|
|
5
|
+
extraControllers?: any[];
|
|
6
|
+
extraProviders?: any[];
|
|
7
|
+
}) => Promise<{
|
|
8
|
+
app: import("@nestjs/common").INestApplication<any>;
|
|
9
|
+
server: import("@nestjs/testing").TestingModule;
|
|
3
10
|
dataSource: import("typeorm").DataSource;
|
|
11
|
+
terminate: () => Promise<void>;
|
|
4
12
|
}>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AppExceptionsFilterBase } from "../../../middlewares";
|
|
2
|
+
import { RuntimeErrorInformation } from "../../../middlewares/errors-handler";
|
|
3
|
+
export declare class AppExceptionsFilter extends AppExceptionsFilterBase {
|
|
4
|
+
protected logError(info: RuntimeErrorInformation): Promise<void>;
|
|
5
|
+
protected getCustomErrorStatusCode(exception: any): number | undefined;
|
|
6
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AppSessionService } from "../../../services";
|
|
2
|
+
export declare class SessionController {
|
|
3
|
+
private readonly session;
|
|
4
|
+
constructor(session: AppSessionService);
|
|
5
|
+
getAndSetUserSessionDataFromService(data: any): Promise<unknown>;
|
|
6
|
+
getAndSetUserSessionData(data: any): Promise<any>;
|
|
7
|
+
private runWithContext;
|
|
8
|
+
private getContext;
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IAuthenticationContext, IAuthorizationResult, IEntityAuthorizationMiddleware } from "../../../abstractions";
|
|
2
|
+
export declare abstract class NestEntityAuthorizationMiddleware<TEntity, TAuthenticationContext extends IAuthenticationContext<TUserContext>, TUserContext> implements IEntityAuthorizationMiddleware<TEntity, TAuthenticationContext, TUserContext> {
|
|
3
|
+
abstract canRead(entity: Partial<TEntity>, context: TAuthenticationContext): Promise<IAuthorizationResult>;
|
|
4
|
+
abstract canCreate(entity: Partial<TEntity>, context: TAuthenticationContext): Promise<IAuthorizationResult>;
|
|
5
|
+
abstract canUpdate(entity: Partial<TEntity>, context: TAuthenticationContext): Promise<IAuthorizationResult>;
|
|
6
|
+
abstract canDelete(entity: Partial<TEntity>, context: TAuthenticationContext): Promise<IAuthorizationResult>;
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { NestEntityAuthorizationMiddleware } from "./entityAuthorizationMiddleware";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AuthenticationModule } from "./module";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AuthenticationService } from "./authentication";
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export interface ICompany {
|
|
2
|
+
id: string;
|
|
3
|
+
uid: string;
|
|
4
|
+
name: string;
|
|
5
|
+
}
|
|
6
|
+
export interface IDivision {
|
|
7
|
+
id: string;
|
|
8
|
+
uid: string;
|
|
9
|
+
name: string;
|
|
10
|
+
}
|
|
11
|
+
export interface IUser {
|
|
12
|
+
id: string;
|
|
13
|
+
uid: string;
|
|
14
|
+
}
|
|
15
|
+
export interface IModule {
|
|
16
|
+
id: string;
|
|
17
|
+
uid: string;
|
|
18
|
+
name: string;
|
|
19
|
+
}
|
|
20
|
+
export interface IOrganization {
|
|
21
|
+
id: string;
|
|
22
|
+
uid: string;
|
|
23
|
+
name: string;
|
|
24
|
+
}
|
|
25
|
+
export interface ISubscription {
|
|
26
|
+
id: string;
|
|
27
|
+
uid: string;
|
|
28
|
+
name: string;
|
|
29
|
+
}
|
|
30
|
+
export interface ITenant {
|
|
31
|
+
id: string;
|
|
32
|
+
uid: string;
|
|
33
|
+
name: string;
|
|
34
|
+
}
|
|
35
|
+
export interface IUserGroup {
|
|
36
|
+
id: string;
|
|
37
|
+
uid: string;
|
|
38
|
+
name: string;
|
|
39
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { MultiTenancyModule } from "./module";
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
+
export * from "./authentication";
|
|
1
2
|
export * from "./base";
|
|
2
3
|
export * from "./decorators";
|
|
4
|
+
export * from "./extensions";
|
|
3
5
|
export * from "./integrations";
|
|
4
6
|
export * from "./ioc";
|
|
7
|
+
export * from "./middlewares";
|
|
8
|
+
export * from "./plugins";
|
|
5
9
|
export * from "./processors";
|
|
10
|
+
export * from "./session";
|
|
11
|
+
export * from "./services";
|
|
6
12
|
export { EntityManagerModule } from "./module";
|
|
@@ -2,6 +2,6 @@ import { ObjectLiteral } from "typeorm";
|
|
|
2
2
|
import { TypeOrmQueryBuilder } from "../../../../integrations";
|
|
3
3
|
import { IEntitySearchParameters, SortingType } from "../../../../abstractions";
|
|
4
4
|
import { EntityManagerRegistry } from "../../ioc/registry";
|
|
5
|
-
export declare abstract class NestTypeOrmQueryBuilder<TEntity extends ObjectLiteral, TEntitySearchParameters extends IEntitySearchParameters<TSorting, number>, TSorting extends SortingType, TFacets> extends TypeOrmQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TFacets> {
|
|
5
|
+
export declare abstract class NestTypeOrmQueryBuilder<TEntity extends ObjectLiteral, TEntitySearchParameters extends IEntitySearchParameters<TSorting, number>, TSorting extends SortingType, TFacets, TUserContext> extends TypeOrmQueryBuilder<TEntity, TEntitySearchParameters, TSorting, TFacets, TUserContext> {
|
|
6
6
|
constructor(entityName: string, registry: EntityManagerRegistry);
|
|
7
7
|
}
|
|
@@ -7,7 +7,7 @@ import { IEventEmitter } from "../../../../abstractions/events";
|
|
|
7
7
|
export declare class EntityManagerRegistry {
|
|
8
8
|
private readonly container;
|
|
9
9
|
getContainer(): import("../../../../abstractions").IEntityManagerServiceRoot;
|
|
10
|
-
|
|
10
|
+
registerGlobalServices({ eventEmitter, }: {
|
|
11
11
|
eventEmitter?: IEventEmitter;
|
|
12
12
|
}): Promise<void>;
|
|
13
13
|
registerDiscoveredEntity(app: INestApplicationContext, { adapter, entityName, converter, queryBuilder, repository, authMiddleware, }: {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ExceptionFilter, ArgumentsHost } from "@nestjs/common";
|
|
2
|
+
export interface RuntimeErrorInformation {
|
|
3
|
+
exception: any;
|
|
4
|
+
request: any;
|
|
5
|
+
response: any;
|
|
6
|
+
}
|
|
7
|
+
export declare abstract class AppExceptionsFilterBase implements ExceptionFilter {
|
|
8
|
+
catch(exception: unknown, host: ArgumentsHost): void;
|
|
9
|
+
protected getErrorStatusCode(exception: any): number;
|
|
10
|
+
protected abstract logError(info: RuntimeErrorInformation): Promise<void>;
|
|
11
|
+
protected abstract getCustomErrorStatusCode(exception: any): number | undefined;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AppExceptionsFilterBase } from "./errors-handler";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./email";
|
|
@@ -4,9 +4,11 @@ import { EntityManagerRegistry } from "../../ioc/registry";
|
|
|
4
4
|
import { CustomDiscoveryService } from "../../ioc/discovery";
|
|
5
5
|
import { NestEventEmitter } from "../../providers/events";
|
|
6
6
|
import { ModulesContainer } from "@nestjs/core";
|
|
7
|
+
import { IAuthenticationContextProvider } from "../../../../abstractions";
|
|
7
8
|
export interface EntityManagerStaticProviders {
|
|
8
9
|
eventEmitter: EventEmitter2;
|
|
9
10
|
modulesContainer: ModulesContainer;
|
|
11
|
+
authenticationProvider?: IAuthenticationContextProvider<unknown>;
|
|
10
12
|
}
|
|
11
13
|
export declare class EntityManagerInitializer {
|
|
12
14
|
private readonly discover;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { AppSessionService } from "./session";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="qs" />
|
|
2
|
+
/// <reference types="express" />
|
|
3
|
+
export declare class AppSessionService {
|
|
4
|
+
getValue<T>(key: string): T;
|
|
5
|
+
setValue<T>(key: string, value: T): void;
|
|
6
|
+
clearValue(key: string): void;
|
|
7
|
+
getRequest(): import("express").Request<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
|
|
8
|
+
private getSession;
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AppSessionMiddleware } from "./middleware";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Request, Response, NextFunction } from "express";
|
|
2
|
+
import { NestMiddleware } from "@nestjs/common";
|
|
3
|
+
export declare class AppSessionMiddleware implements NestMiddleware {
|
|
4
|
+
use(req: Request, res: Response, next: NextFunction): void;
|
|
5
|
+
}
|
|
6
|
+
export declare function appSessionMiddleware(req: Request, res: Response, next: NextFunction): void;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class AppSession<TRequest, TResponse> {
|
|
2
|
+
private readonly _request;
|
|
3
|
+
private readonly _response;
|
|
4
|
+
private readonly _map;
|
|
5
|
+
constructor(request: TRequest, response: TResponse);
|
|
6
|
+
get<T>(key: string): T;
|
|
7
|
+
set<T>(key: string, value: T): void;
|
|
8
|
+
delete(key: string): void;
|
|
9
|
+
clear(): void;
|
|
10
|
+
get request(): TRequest;
|
|
11
|
+
get response(): TResponse;
|
|
12
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference types="qs" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { AsyncLocalStorage } from "async_hooks";
|
|
4
|
+
import { Request, Response } from "express";
|
|
5
|
+
import { AppSession } from "./session";
|
|
6
|
+
export declare const asyncLocalStorage: AsyncLocalStorage<AppSession<Request<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>, Response<any, Record<string, any>>>>;
|