@punks/backend-entity-manager 0.0.185 → 0.0.188

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 (60) hide show
  1. package/dist/cjs/index.js +91 -1
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/abstractions/cache.d.ts +21 -0
  4. package/dist/cjs/types/abstractions/index.d.ts +1 -0
  5. package/dist/cjs/types/integrations/cache/index.d.ts +1 -0
  6. package/dist/cjs/types/integrations/cache/typeorm/index.d.ts +2 -0
  7. package/dist/cjs/types/integrations/cache/typeorm/instance.d.ts +21 -0
  8. package/dist/cjs/types/integrations/cache/typeorm/types.d.ts +9 -0
  9. package/dist/cjs/types/integrations/index.d.ts +1 -0
  10. package/dist/cjs/types/platforms/nest/__test__/server/database/core/entities/appCacheEntry.entity.d.ts +9 -0
  11. package/dist/cjs/types/platforms/nest/__test__/server/database/core/entities.d.ts +2 -1
  12. package/dist/cjs/types/platforms/nest/__test__/server/database/core/index.d.ts +4 -0
  13. package/dist/cjs/types/platforms/nest/__test__/server/infrastructure/cache/module.d.ts +2 -0
  14. package/dist/cjs/types/platforms/nest/__test__/server/infrastructure/cache/providers/default-instance/index.d.ts +6 -0
  15. package/dist/cjs/types/platforms/nest/__test__/server/infrastructure/cache/providers/index.d.ts +2 -0
  16. package/dist/cjs/types/platforms/nest/__test__/tests/caching/caching.test.d.ts +1 -0
  17. package/dist/cjs/types/platforms/nest/decorators/cache.d.ts +4 -0
  18. package/dist/cjs/types/platforms/nest/decorators/index.d.ts +1 -0
  19. package/dist/cjs/types/platforms/nest/decorators/symbols.d.ts +1 -0
  20. package/dist/cjs/types/platforms/nest/extensions/authentication/handlers/handlers.d.ts +2 -1
  21. package/dist/cjs/types/platforms/nest/extensions/authentication/handlers/user-impersonate/index.d.ts +12 -0
  22. package/dist/cjs/types/platforms/nest/extensions/authentication/handlers/user-impersonate/types.d.ts +8 -0
  23. package/dist/cjs/types/platforms/nest/extensions/authentication/services/authentication/index.d.ts +5 -1
  24. package/dist/cjs/types/platforms/nest/processors/initializer/index.d.ts +2 -0
  25. package/dist/cjs/types/platforms/nest/services/cache/index.d.ts +7 -0
  26. package/dist/cjs/types/platforms/nest/services/index.d.ts +1 -0
  27. package/dist/cjs/types/platforms/nest/services/providers.d.ts +2 -1
  28. package/dist/cjs/types/providers/services.d.ts +4 -1
  29. package/dist/cjs/types/symbols/ioc.d.ts +1 -0
  30. package/dist/esm/index.js +91 -2
  31. package/dist/esm/index.js.map +1 -1
  32. package/dist/esm/types/abstractions/cache.d.ts +21 -0
  33. package/dist/esm/types/abstractions/index.d.ts +1 -0
  34. package/dist/esm/types/integrations/cache/index.d.ts +1 -0
  35. package/dist/esm/types/integrations/cache/typeorm/index.d.ts +2 -0
  36. package/dist/esm/types/integrations/cache/typeorm/instance.d.ts +21 -0
  37. package/dist/esm/types/integrations/cache/typeorm/types.d.ts +9 -0
  38. package/dist/esm/types/integrations/index.d.ts +1 -0
  39. package/dist/esm/types/platforms/nest/__test__/server/database/core/entities/appCacheEntry.entity.d.ts +9 -0
  40. package/dist/esm/types/platforms/nest/__test__/server/database/core/entities.d.ts +2 -1
  41. package/dist/esm/types/platforms/nest/__test__/server/database/core/index.d.ts +4 -0
  42. package/dist/esm/types/platforms/nest/__test__/server/infrastructure/cache/module.d.ts +2 -0
  43. package/dist/esm/types/platforms/nest/__test__/server/infrastructure/cache/providers/default-instance/index.d.ts +6 -0
  44. package/dist/esm/types/platforms/nest/__test__/server/infrastructure/cache/providers/index.d.ts +2 -0
  45. package/dist/esm/types/platforms/nest/__test__/tests/caching/caching.test.d.ts +1 -0
  46. package/dist/esm/types/platforms/nest/decorators/cache.d.ts +4 -0
  47. package/dist/esm/types/platforms/nest/decorators/index.d.ts +1 -0
  48. package/dist/esm/types/platforms/nest/decorators/symbols.d.ts +1 -0
  49. package/dist/esm/types/platforms/nest/extensions/authentication/handlers/handlers.d.ts +2 -1
  50. package/dist/esm/types/platforms/nest/extensions/authentication/handlers/user-impersonate/index.d.ts +12 -0
  51. package/dist/esm/types/platforms/nest/extensions/authentication/handlers/user-impersonate/types.d.ts +8 -0
  52. package/dist/esm/types/platforms/nest/extensions/authentication/services/authentication/index.d.ts +5 -1
  53. package/dist/esm/types/platforms/nest/processors/initializer/index.d.ts +2 -0
  54. package/dist/esm/types/platforms/nest/services/cache/index.d.ts +7 -0
  55. package/dist/esm/types/platforms/nest/services/index.d.ts +1 -0
  56. package/dist/esm/types/platforms/nest/services/providers.d.ts +2 -1
  57. package/dist/esm/types/providers/services.d.ts +4 -1
  58. package/dist/esm/types/symbols/ioc.d.ts +1 -0
  59. package/dist/index.d.ts +61 -2
  60. package/package.json +3 -3
@@ -0,0 +1,21 @@
1
+ export type CacheTtl = {
2
+ value: number;
3
+ unit: "years" | "months" | "days" | "hours" | "minutes" | "seconds";
4
+ };
5
+ export interface ICacheInstance {
6
+ getAll<T>(): Promise<T[]>;
7
+ get<T>(key: string): Promise<T | undefined>;
8
+ set<T>(key: string, input: {
9
+ value: T;
10
+ ttl: CacheTtl;
11
+ }): Promise<void>;
12
+ retrieve<T>(key: string, input: {
13
+ ttl: CacheTtl;
14
+ valueFactory: () => Promise<T>;
15
+ }): Promise<T>;
16
+ delete(key: string): Promise<void>;
17
+ clear(): Promise<void>;
18
+ }
19
+ export interface ICache {
20
+ getInstance(instanceName: string): Promise<ICacheInstance>;
21
+ }
@@ -2,6 +2,7 @@ export { IEntityCreateAction, IEntityDeleteAction, IEntityGetAction, IEntityUpda
2
2
  export { IEntityAdapter } from "./adapters";
3
3
  export * from "./authentication";
4
4
  export * from "./buckets";
5
+ export * from "./cache";
5
6
  export { IAuthorizationResult, IEntityAuthorizationMiddleware, } from "./authorization";
6
7
  export { IEntityCreateCommand, IEntityUpdateCommand, IEntityUpsertCommand, IEntityDeleteCommand, IEntityVersionCommand, IEntitiesImportCommand, IEntitiesExportCommand, IEntitiesDeleteParameters, IEntitiesDeleteCommand, IEntitiesDeleteResult, IEntitiesSampleDownloadCommand, } from "./commands";
7
8
  export { SortingType, ClassType, EnumType } from "./common";
@@ -0,0 +1 @@
1
+ export * from "./typeorm";
@@ -0,0 +1,2 @@
1
+ export { TypeormCacheInstance } from "./instance";
2
+ export { ICacheDatabaseItem } from "./types";
@@ -0,0 +1,21 @@
1
+ import { Repository } from "typeorm";
2
+ import { CacheTtl, ICacheInstance } from "../../../abstractions";
3
+ import { ICacheDatabaseItem } from "./types";
4
+ export declare class TypeormCacheInstance<TEntity extends ICacheDatabaseItem> implements ICacheInstance {
5
+ protected readonly repository: Repository<TEntity>;
6
+ protected readonly instanceName: string;
7
+ private readonly logger;
8
+ constructor(repository: Repository<TEntity>, instanceName: string);
9
+ retrieve<T>(key: string, input: {
10
+ ttl: CacheTtl;
11
+ valueFactory: () => Promise<T>;
12
+ }): Promise<T>;
13
+ getAll<T>(): Promise<T[]>;
14
+ get<T>(key: string): Promise<T | undefined>;
15
+ set<T>(key: string, { ttl, value }: {
16
+ value: T;
17
+ ttl: CacheTtl;
18
+ }): Promise<void>;
19
+ delete(key: string): Promise<void>;
20
+ clear(): Promise<void>;
21
+ }
@@ -0,0 +1,9 @@
1
+ export interface ICacheDatabaseItem {
2
+ id: string;
3
+ instance: string;
4
+ key: string;
5
+ data: any;
6
+ createdOn: Date;
7
+ updatedOn: Date;
8
+ expirationTime: Date;
9
+ }
@@ -1 +1,2 @@
1
+ export * from "./cache";
1
2
  export * from "./repository";
@@ -0,0 +1,9 @@
1
+ export declare class AppCacheEntry {
2
+ id: string;
3
+ instance: string;
4
+ key: string;
5
+ data: any;
6
+ expirationTime: Date;
7
+ createdOn: Date;
8
+ updatedOn: Date;
9
+ }
@@ -19,4 +19,5 @@ import { AppOrganizationalUnitEntity } from "./entities/appOrganizationalUnit.en
19
19
  import { AppOrganizationalUnitTypeEntity } from "./entities/appOrganizationalUnitType.entity";
20
20
  import { AppOrganizationalUnitTypeChildEntity } from "./entities/appOrganizationalUnitTypeChild.entity";
21
21
  import { AppRoleOrganizationalUnitTypeEntity } from "./entities/appRoleOrganizationalUnitType.entity";
22
- export declare const CoreDatabaseEntities: (typeof AppUserProfileEntity | typeof AppRoleEntity | typeof AppUserRoleEntity | typeof AppUserEntity | typeof AppUserGroupEntity | typeof AppOrganizationEntity | typeof AppUserGroupMemberEntity | typeof AppDirectoryEntity | typeof AppTenantEntity | typeof AppOrganizationalUnitTypeChildEntity | typeof AppOrganizationalUnitTypeEntity | typeof AppRoleOrganizationalUnitTypeEntity | typeof AppOrganizationalUnitEntity | typeof AppCompanyEntity | typeof AppDivisionEntity | typeof AppEmailLogEntity | typeof AppEntityVersionEntity | typeof AppFileReferenceEntity | typeof AppRolePermissionEntity | typeof AppPermissionEntity | typeof FooEntity)[];
22
+ import { AppCacheEntry } from "./entities/appCacheEntry.entity";
23
+ export declare const CoreDatabaseEntities: (typeof AppUserProfileEntity | typeof AppRoleEntity | typeof AppUserRoleEntity | typeof AppUserEntity | typeof AppUserGroupEntity | typeof AppOrganizationEntity | typeof AppUserGroupMemberEntity | typeof AppDirectoryEntity | typeof AppTenantEntity | typeof AppOrganizationalUnitTypeChildEntity | typeof AppOrganizationalUnitTypeEntity | typeof AppRoleOrganizationalUnitTypeEntity | typeof AppOrganizationalUnitEntity | typeof AppCompanyEntity | typeof AppDivisionEntity | typeof AppEmailLogEntity | typeof AppEntityVersionEntity | typeof AppFileReferenceEntity | typeof AppRolePermissionEntity | typeof AppPermissionEntity | typeof FooEntity | typeof AppCacheEntry)[];
@@ -22,7 +22,11 @@ import { AppOrganizationalUnitEntity } from "./entities/appOrganizationalUnit.en
22
22
  import { AppOrganizationalUnitTypeEntity } from "./entities/appOrganizationalUnitType.entity";
23
23
  import { AppOrganizationalUnitTypeChildEntity } from "./entities/appOrganizationalUnitTypeChild.entity";
24
24
  import { AppRoleOrganizationalUnitTypeEntity } from "./entities/appRoleOrganizationalUnitType.entity";
25
+ import { AppCacheEntry } from "./entities/appCacheEntry.entity";
25
26
  export declare const mockDatabaseProviders: (dataSource: DataSource) => ({
27
+ provide: string | Function;
28
+ useValue: import("typeorm").Repository<AppCacheEntry>;
29
+ } | {
26
30
  provide: string | Function;
27
31
  useValue: import("typeorm").Repository<AppCompanyEntity>;
28
32
  } | {
@@ -0,0 +1,2 @@
1
+ export declare class CacheInfrastructureModule {
2
+ }
@@ -0,0 +1,6 @@
1
+ import { TypeormCacheInstance } from "../../../../../../../../integrations";
2
+ import { AppCacheEntry } from "../../../../database/core/entities/appCacheEntry.entity";
3
+ import { Repository } from "typeorm";
4
+ export declare class DefaultCacheInstance extends TypeormCacheInstance<AppCacheEntry> {
5
+ constructor(repository: Repository<AppCacheEntry>);
6
+ }
@@ -0,0 +1,2 @@
1
+ import { DefaultCacheInstance } from "./default-instance";
2
+ export declare const CacheProviders: (typeof DefaultCacheInstance)[];
@@ -0,0 +1,4 @@
1
+ export interface CacheInstanceProps {
2
+ instanceName: string;
3
+ }
4
+ export declare const WpCacheInstance: (instanceName: string) => <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol | undefined, descriptor?: TypedPropertyDescriptor<Y> | undefined) => void;
@@ -1,5 +1,6 @@
1
1
  export { WpEntityAuthMiddleware, EntityAuthMiddlewareProps, } from "./authorization";
2
2
  export { WpBucketProvider, BucketProviderProps } from "./bucket";
3
+ export { WpCacheInstance, CacheInstanceProps } from "./cache";
3
4
  export { WpEntityActions, EntityActionsProps } from "./actions";
4
5
  export { WpEntityAdapter, EntityAdapterProps } from "./adapter";
5
6
  export { WpEntityConnector, EntityConnectorProps } from "./connector";
@@ -21,4 +21,5 @@ export declare const EntityManagerSymbols: {
21
21
  FileProvider: symbol;
22
22
  FileReferenceRepository: symbol;
23
23
  PipelineTemplate: symbol;
24
+ CacheInstance: symbol;
24
25
  };
@@ -2,6 +2,7 @@ import { UserCreationHandler } from "./user-create";
2
2
  import { UserDeleteHandler } from "./user-delete";
3
3
  import { UserDisableHandler } from "./user-disable";
4
4
  import { UserEnableHandler } from "./user-enable";
5
+ import { UserImpersonateHandler } from "./user-impersonate";
5
6
  import { UserLoginHandler } from "./user-login";
6
7
  import { UserPasswordChangeHandler } from "./user-password-change";
7
8
  import { UserPasswordResetCompleteHandler } from "./user-password-reset-complete";
@@ -10,4 +11,4 @@ import { UserRegistrationHandler } from "./user-register";
10
11
  import { UserTokenVerifyHandler } from "./user-token-verify";
11
12
  import { UserVerifyCompleteHandler } from "./user-verify-complete";
12
13
  import { UserVerifyRequestHandler } from "./user-verify-request";
13
- export declare const UserHandlers: (typeof UserRegistrationHandler | typeof UserDisableHandler | typeof UserEnableHandler | typeof UserLoginHandler | typeof UserPasswordChangeHandler | typeof UserPasswordResetCompleteHandler | typeof UserPasswordResetRequestHandler | typeof UserVerifyCompleteHandler | typeof UserTokenVerifyHandler | typeof UserVerifyRequestHandler | typeof UserCreationHandler | typeof UserDeleteHandler)[];
14
+ export declare const UserHandlers: (typeof UserRegistrationHandler | typeof UserDisableHandler | typeof UserEnableHandler | typeof UserLoginHandler | typeof UserPasswordChangeHandler | typeof UserPasswordResetCompleteHandler | typeof UserPasswordResetRequestHandler | typeof UserVerifyCompleteHandler | typeof UserTokenVerifyHandler | typeof UserVerifyRequestHandler | typeof UserCreationHandler | typeof UserDeleteHandler | typeof UserImpersonateHandler)[];
@@ -0,0 +1,12 @@
1
+ import { AuthenticationServicesResolver } from "../../resolver";
2
+ import { JwtProvider } from "../../providers/jwt";
3
+ import { IAuthUserContext } from "../../abstractions";
4
+ import { UserImpersonateInput, UserImpersonateResult } from "./types";
5
+ export declare class UserImpersonateHandler {
6
+ private readonly services;
7
+ private readonly jwtProvider;
8
+ constructor(services: AuthenticationServicesResolver, jwtProvider: JwtProvider);
9
+ execute<TUserContext extends IAuthUserContext>(input: UserImpersonateInput<TUserContext>): Promise<UserImpersonateResult>;
10
+ private generateUserJwtToken;
11
+ private resolveUser;
12
+ }
@@ -0,0 +1,8 @@
1
+ import { IAuthUserContext } from "../../abstractions";
2
+ export interface UserImpersonateInput<TUserContext extends IAuthUserContext> {
3
+ userName: string;
4
+ context?: TUserContext;
5
+ }
6
+ export interface UserImpersonateResult {
7
+ token: string;
8
+ }
@@ -23,11 +23,14 @@ import { AuthenticationServicesResolver } from "../../resolver";
23
23
  import { UserCreationHandler } from "../../handlers/user-create";
24
24
  import { UserCreationInput, UserDeleteInput } from "../../handlers";
25
25
  import { UserDeleteHandler } from "../../handlers/user-delete";
26
+ import { UserImpersonateHandler } from "../../handlers/user-impersonate";
27
+ import { UserImpersonateInput, UserImpersonateResult } from "../../handlers/user-impersonate/types";
26
28
  export declare class AuthenticationService implements IAuthService {
27
29
  private readonly userCreationHandler;
28
30
  private readonly userDisableHandler;
29
31
  private readonly userDeleteHandler;
30
32
  private readonly userEnableHandler;
33
+ private readonly userImpersonateHandler;
31
34
  private readonly userLoginHandler;
32
35
  private readonly userPasswordChangeHandler;
33
36
  private readonly userPasswordResetFinalizeHandler;
@@ -37,11 +40,12 @@ export declare class AuthenticationService implements IAuthService {
37
40
  private readonly userVerifyRequestHandler;
38
41
  private readonly userVerifyCompleteHandler;
39
42
  private readonly resolver;
40
- constructor(userCreationHandler: UserCreationHandler, userDisableHandler: UserDisableHandler, userDeleteHandler: UserDeleteHandler, userEnableHandler: UserEnableHandler, userLoginHandler: UserLoginHandler, userPasswordChangeHandler: UserPasswordChangeHandler, userPasswordResetFinalizeHandler: UserPasswordResetCompleteHandler, userPasswordResetRequestHandler: UserPasswordResetRequestHandler, userRegistrationHandler: UserRegistrationHandler, userTokenVerifyHandler: UserTokenVerifyHandler, userVerifyRequestHandler: UserVerifyRequestHandler, userVerifyCompleteHandler: UserVerifyCompleteHandler, resolver: AuthenticationServicesResolver);
43
+ constructor(userCreationHandler: UserCreationHandler, userDisableHandler: UserDisableHandler, userDeleteHandler: UserDeleteHandler, userEnableHandler: UserEnableHandler, userImpersonateHandler: UserImpersonateHandler, userLoginHandler: UserLoginHandler, userPasswordChangeHandler: UserPasswordChangeHandler, userPasswordResetFinalizeHandler: UserPasswordResetCompleteHandler, userPasswordResetRequestHandler: UserPasswordResetRequestHandler, userRegistrationHandler: UserRegistrationHandler, userTokenVerifyHandler: UserTokenVerifyHandler, userVerifyRequestHandler: UserVerifyRequestHandler, userVerifyCompleteHandler: UserVerifyCompleteHandler, resolver: AuthenticationServicesResolver);
41
44
  userCreate<TUserRegistrationInfo, TUserContext extends IAuthUserContext>(input: UserCreationInput<TUserRegistrationInfo, TUserContext>): Promise<import("../../handlers").UserCreationResult>;
42
45
  userDisable(input: UserDisableInput): Promise<void>;
43
46
  userDelete(input: UserDeleteInput): Promise<void>;
44
47
  userEnable(input: UserEnableInput): Promise<void>;
48
+ userImpersonate<TUserContext extends IAuthUserContext>(input: UserImpersonateInput<TUserContext>): Promise<UserImpersonateResult>;
45
49
  userLogin<TUserContext extends IAuthUserContext>(input: UserLoginInput<TUserContext>): Promise<UserLoginResult>;
46
50
  userPasswordChange(input: UserPasswordChangeInput): Promise<void>;
47
51
  userPasswordResetFinalize(input: UserPasswordResetCompleteInput): Promise<void>;
@@ -22,6 +22,7 @@ export declare class EntityManagerInitializer {
22
22
  private executeSeeders;
23
23
  private registerFileProviders;
24
24
  private registerBucketProviders;
25
+ private registerCacheInstances;
25
26
  private registerFilesReferenceRepositoryProviders;
26
27
  private registerEventTrackingProviders;
27
28
  private registerEmailLogger;
@@ -46,6 +47,7 @@ export declare class EntityManagerInitializer {
46
47
  private discoverEventTrackingProviders;
47
48
  private discoverEmailLogger;
48
49
  private discoverBucketProviders;
50
+ private discoverCacheInstances;
49
51
  private discoverFileProviders;
50
52
  private discoverFilesReferenceRepositoryProviders;
51
53
  }
@@ -0,0 +1,7 @@
1
+ import { EntityManagerRegistry } from "../../ioc";
2
+ export declare class CacheService {
3
+ private readonly registry;
4
+ constructor(registry: EntityManagerRegistry);
5
+ getInstance(instanceName: string): import("../../../..").ICacheInstance;
6
+ getInstances(): import("../../../..").ICacheInstance[];
7
+ }
@@ -2,6 +2,7 @@ export { AppSessionService } from "./session";
2
2
  export { AppHashingService } from "./hashing";
3
3
  export { EntityManagerService } from "./manager";
4
4
  export { EmailService } from "./email";
5
+ export { CacheService } from "./cache";
5
6
  export { FilesService } from "./files";
6
7
  export { EventsService } from "./events";
7
8
  export { TrackingService } from "./tracking";
@@ -1,3 +1,4 @@
1
+ import { CacheService } from "./cache";
1
2
  import { EmailService } from "./email";
2
3
  import { EventsService } from "./events";
3
4
  import { FilesService } from "./files";
@@ -5,4 +6,4 @@ import { AppHashingService } from "./hashing";
5
6
  import { EntityManagerService } from "./manager";
6
7
  import { AppSessionService } from "./session";
7
8
  import { TrackingService } from "./tracking";
8
- export declare const Services: (typeof AppSessionService | typeof AppHashingService | typeof EntityManagerService | typeof EmailService | typeof FilesService | typeof EventsService | typeof TrackingService)[];
9
+ export declare const Services: (typeof AppSessionService | typeof AppHashingService | typeof EntityManagerService | typeof EmailService | typeof CacheService | typeof FilesService | typeof EventsService | typeof TrackingService)[];
@@ -1,4 +1,4 @@
1
- import { IAuthenticationContext, IAuthenticationContextProvider, IBucketProvider, IEmailLogger, IEmailProvider, IEmailTemplatesCollection, IEntityFacets, IEntitySerializer, IEntitySnapshotService, IEntityVersioningProvider, IEventLog, IEventsTracker, IFileProvider, IFilesReferenceRepository } from "../abstractions";
1
+ import { IAuthenticationContext, IAuthenticationContextProvider, IBucketProvider, ICacheInstance, IEmailLogger, IEmailProvider, IEmailTemplatesCollection, IEntityFacets, IEntitySerializer, IEntitySnapshotService, IEntityVersioningProvider, IEventLog, IEventsTracker, IFileProvider, IFilesReferenceRepository } from "../abstractions";
2
2
  import { IEntitiesCountAction, IEntitiesDeleteAction, IEntitiesExportAction, IEntitiesImportAction, IEntitiesSampleDownloadAction, IEntitiesSearchAction, IEntityActions, IEntityCreateAction, IEntityDeleteAction, IEntityExistsAction, IEntityGetAction, IEntityUpdateAction, IEntityUpsertAction, IEntityVersionsSearchAction } from "../abstractions/actions";
3
3
  import { IEntityAdapter } from "../abstractions/adapters";
4
4
  import { IEntityAuthorizationMiddleware } from "../abstractions/authorization";
@@ -83,6 +83,9 @@ export declare class EntitiesServiceLocator {
83
83
  registerEntityVersioningProvider<TEntityVersioningProvider extends IEntityVersioningProvider>(instance: TEntityVersioningProvider): void;
84
84
  resolveDefaultBucketProvider<TBucketProvider extends IBucketProvider>(): TBucketProvider;
85
85
  resolveDefaultFilesProvider<TFileProvider extends IFileProvider>(): TFileProvider;
86
+ resolveCacheInstance<TCacheInstance extends ICacheInstance>(name: string): TCacheInstance;
87
+ resolveCacheInstances<TCacheInstance extends ICacheInstance>(): TCacheInstance[];
88
+ registerCacheInstance<TCacheInstance extends ICacheInstance>(name: string, instance: TCacheInstance): this;
86
89
  resolveBucketProviders<TBucketProvider extends IFileProvider>(): TBucketProvider[];
87
90
  registerBucketProvider<TBucketProvider extends IBucketProvider>(name: string, instance: TBucketProvider): this;
88
91
  resolveFileProvider<TFileProvider extends IFileProvider>(providerId: string): TFileProvider;
@@ -84,6 +84,7 @@ export declare const GlobalServices: {
84
84
  IPipelineController: string;
85
85
  };
86
86
  Plugins: {
87
+ ICacheInstance: string;
87
88
  IEmailProvider: string;
88
89
  IEmailLogger: string;
89
90
  IEmailTemplatesCollection: string;
package/dist/esm/index.js CHANGED
@@ -1178,6 +1178,7 @@ const GlobalServices = {
1178
1178
  IPipelineController: "IPipelineController",
1179
1179
  },
1180
1180
  Plugins: {
1181
+ ICacheInstance: "ICacheInstance",
1181
1182
  IEmailProvider: "IEmailProvider",
1182
1183
  IEmailLogger: "IEmailLogger",
1183
1184
  IEmailTemplatesCollection: "IEmailTemplatesCollection",
@@ -1387,6 +1388,16 @@ class EntitiesServiceLocator {
1387
1388
  const settings = this.resolveSettings();
1388
1389
  return this.provider.resolveMultipleNamed(GlobalServices.Plugins.IFileProvider, settings.defaultFilesProvider);
1389
1390
  }
1391
+ resolveCacheInstance(name) {
1392
+ return this.provider.resolveMultipleNamed(GlobalServices.Plugins.ICacheInstance, name);
1393
+ }
1394
+ resolveCacheInstances() {
1395
+ return this.provider.resolveMultiple(GlobalServices.Plugins.ICacheInstance);
1396
+ }
1397
+ registerCacheInstance(name, instance) {
1398
+ this.provider.registerMultiple(GlobalServices.Plugins.ICacheInstance, name, instance);
1399
+ return this;
1400
+ }
1390
1401
  resolveBucketProviders() {
1391
1402
  return this.provider.resolveMultiple(GlobalServices.Plugins.IFileProvider);
1392
1403
  }
@@ -2396,6 +2407,7 @@ const EntityManagerSymbols = {
2396
2407
  FileProvider: Symbol.for("WP:FILE_PROVIDER"),
2397
2408
  FileReferenceRepository: Symbol.for("WP:FILE_REFERENCE_REPO"),
2398
2409
  PipelineTemplate: Symbol.for("WP:PIPELINE_TEMPLATE"),
2410
+ CacheInstance: Symbol.for("WP:CACHE_INSTANCE"),
2399
2411
  };
2400
2412
 
2401
2413
  const WpEntityAuthMiddleware = (entityName, props = {}) => applyDecorators(Injectable(), SetMetadata(EntityManagerSymbols.EntityAuthMiddleware, {
@@ -2407,6 +2419,10 @@ const WpBucketProvider = (providerId) => applyDecorators(Injectable(), SetMetada
2407
2419
  providerId,
2408
2420
  }));
2409
2421
 
2422
+ const WpCacheInstance = (instanceName) => applyDecorators(Injectable(), SetMetadata(EntityManagerSymbols.CacheInstance, {
2423
+ instanceName,
2424
+ }));
2425
+
2410
2426
  const WpEntityActions = (entityName, props = {}) => applyDecorators(Injectable(), SetMetadata(EntityManagerSymbols.EntityActions, {
2411
2427
  entityName,
2412
2428
  ...props,
@@ -20352,6 +20368,28 @@ EmailService = __decorate([
20352
20368
  __metadata("design:paramtypes", [EntityManagerRegistry])
20353
20369
  ], EmailService);
20354
20370
 
20371
+ let CacheService = class CacheService {
20372
+ constructor(registry) {
20373
+ this.registry = registry;
20374
+ }
20375
+ getInstance(instanceName) {
20376
+ return this.registry
20377
+ .getContainer()
20378
+ .getEntitiesServicesLocator()
20379
+ .resolveCacheInstance(instanceName);
20380
+ }
20381
+ getInstances() {
20382
+ return this.registry
20383
+ .getContainer()
20384
+ .getEntitiesServicesLocator()
20385
+ .resolveCacheInstances();
20386
+ }
20387
+ };
20388
+ CacheService = __decorate([
20389
+ Injectable(),
20390
+ __metadata("design:paramtypes", [EntityManagerRegistry])
20391
+ ], CacheService);
20392
+
20355
20393
  let FilesService = class FilesService {
20356
20394
  constructor(registry) {
20357
20395
  this.registry = registry;
@@ -21077,12 +21115,43 @@ UserDeleteHandler = __decorate([
21077
21115
  __metadata("design:paramtypes", [AuthenticationServicesResolver])
21078
21116
  ], UserDeleteHandler);
21079
21117
 
21118
+ let UserImpersonateHandler = class UserImpersonateHandler {
21119
+ constructor(services, jwtProvider) {
21120
+ this.services = services;
21121
+ this.jwtProvider = jwtProvider;
21122
+ }
21123
+ async execute(input) {
21124
+ const user = await this.resolveUser(input.userName, input.context);
21125
+ if (!user) {
21126
+ throw new Error(`User ${input.userName} not found`);
21127
+ }
21128
+ return {
21129
+ token: await this.generateUserJwtToken(user, input.context),
21130
+ };
21131
+ }
21132
+ async generateUserJwtToken(user, context) {
21133
+ return await this.jwtProvider.sign(extractUserTokenData(user, context));
21134
+ }
21135
+ async resolveUser(userName, context) {
21136
+ return ((await this.services
21137
+ .getUsersService()
21138
+ .getByUserName(userName, context)) ??
21139
+ (await this.services.getUsersService().getByEmail(userName, context)));
21140
+ }
21141
+ };
21142
+ UserImpersonateHandler = __decorate([
21143
+ Injectable(),
21144
+ __metadata("design:paramtypes", [AuthenticationServicesResolver,
21145
+ JwtProvider])
21146
+ ], UserImpersonateHandler);
21147
+
21080
21148
  let AuthenticationService = class AuthenticationService {
21081
- constructor(userCreationHandler, userDisableHandler, userDeleteHandler, userEnableHandler, userLoginHandler, userPasswordChangeHandler, userPasswordResetFinalizeHandler, userPasswordResetRequestHandler, userRegistrationHandler, userTokenVerifyHandler, userVerifyRequestHandler, userVerifyCompleteHandler, resolver) {
21149
+ constructor(userCreationHandler, userDisableHandler, userDeleteHandler, userEnableHandler, userImpersonateHandler, userLoginHandler, userPasswordChangeHandler, userPasswordResetFinalizeHandler, userPasswordResetRequestHandler, userRegistrationHandler, userTokenVerifyHandler, userVerifyRequestHandler, userVerifyCompleteHandler, resolver) {
21082
21150
  this.userCreationHandler = userCreationHandler;
21083
21151
  this.userDisableHandler = userDisableHandler;
21084
21152
  this.userDeleteHandler = userDeleteHandler;
21085
21153
  this.userEnableHandler = userEnableHandler;
21154
+ this.userImpersonateHandler = userImpersonateHandler;
21086
21155
  this.userLoginHandler = userLoginHandler;
21087
21156
  this.userPasswordChangeHandler = userPasswordChangeHandler;
21088
21157
  this.userPasswordResetFinalizeHandler = userPasswordResetFinalizeHandler;
@@ -21105,6 +21174,9 @@ let AuthenticationService = class AuthenticationService {
21105
21174
  async userEnable(input) {
21106
21175
  await this.userEnableHandler.execute(input);
21107
21176
  }
21177
+ async userImpersonate(input) {
21178
+ return await this.userImpersonateHandler.execute(input);
21179
+ }
21108
21180
  async userLogin(input) {
21109
21181
  return await this.userLoginHandler.execute(input);
21110
21182
  }
@@ -21145,6 +21217,7 @@ AuthenticationService = __decorate([
21145
21217
  UserDisableHandler,
21146
21218
  UserDeleteHandler,
21147
21219
  UserEnableHandler,
21220
+ UserImpersonateHandler,
21148
21221
  UserLoginHandler,
21149
21222
  UserPasswordChangeHandler,
21150
21223
  UserPasswordResetCompleteHandler,
@@ -21161,6 +21234,7 @@ const Services$2 = [AuthenticationService];
21161
21234
  const Services$1 = [
21162
21235
  AppSessionService,
21163
21236
  AppHashingService,
21237
+ CacheService,
21164
21238
  EntityManagerService,
21165
21239
  EmailService,
21166
21240
  EventsService,
@@ -21497,6 +21571,7 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
21497
21571
  await this.registerFilesReferenceRepositoryProviders();
21498
21572
  await this.registerFileProviders();
21499
21573
  await this.registerBucketProviders();
21574
+ await this.registerCacheInstances();
21500
21575
  await this.executeInitializers(app);
21501
21576
  await this.executeSeeders();
21502
21577
  this.logger.log("Entity manager initialization completed 🚀");
@@ -21614,6 +21689,16 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
21614
21689
  this.logger.log(`Bucket provider ${provider.discoveredClass.name} registered 🚜`);
21615
21690
  }
21616
21691
  }
21692
+ async registerCacheInstances() {
21693
+ const providers = await this.discoverCacheInstances();
21694
+ for (const provider of providers) {
21695
+ this.registry
21696
+ .getContainer()
21697
+ .getEntitiesServicesLocator()
21698
+ .registerCacheInstance(provider.meta.instanceName, provider.discoveredClass.instance);
21699
+ this.logger.log(`Cache instance ${provider.meta.instanceName} -> ${provider.discoveredClass.name} registered 🚜`);
21700
+ }
21701
+ }
21617
21702
  async registerFilesReferenceRepositoryProviders() {
21618
21703
  const providers = await this.discoverFilesReferenceRepositoryProviders();
21619
21704
  if (!providers.length) {
@@ -21748,6 +21833,9 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
21748
21833
  async discoverBucketProviders() {
21749
21834
  return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.BucketProvider);
21750
21835
  }
21836
+ async discoverCacheInstances() {
21837
+ return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.CacheInstance);
21838
+ }
21751
21839
  async discoverFileProviders() {
21752
21840
  return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.FileProvider);
21753
21841
  }
@@ -21917,6 +22005,7 @@ const UserHandlers = [
21917
22005
  UserDisableHandler,
21918
22006
  UserDeleteHandler,
21919
22007
  UserEnableHandler,
22008
+ UserImpersonateHandler,
21920
22009
  UserLoginHandler,
21921
22010
  UserPasswordChangeHandler,
21922
22011
  UserPasswordResetCompleteHandler,
@@ -28400,5 +28489,5 @@ InMemoryEmailProvider = __decorate([
28400
28489
  WpEmailProvider("in-memory")
28401
28490
  ], InMemoryEmailProvider);
28402
28491
 
28403
- export { AUTHENTICATION_EVENTS_NAMESPACE, AppExceptionsFilterBase, AppHashingService, AppInMemorySettings, AppSessionMiddleware, AppSessionService, AuthGuard, Authenticated, AuthenticationEmailTemplates, AuthenticationError, AuthenticationEvents, AuthenticationExtensionSymbols, AuthenticationModule, AuthenticationService, AwsBucketModule, AwsEmailModule, AwsS3BucketError as AwsS2BucketError, AwsS3BucketProvider, AwsSesEmailTemplate, BucketItemType, CurrentUser, EmailService, EntityManagerConfigurationError, EntityManagerException, EntityManagerInitializer, EntityManagerModule, EntityManagerRegistry, EntityManagerService, EntityManagerSymbols, EntityManagerUnauthorizedException, EntityNotFoundException, EntityOperationType, EntityOperationUnauthorizedException, EntitySeeder, EntitySerializationFormat, EntitySerializer, EntitySnapshotService, EntityVersionOperation, EventsService, FilesService, IEntityVersionsCursor, InMemoryBucketProvider, InMemoryEmailProvider, InvalidCredentialsError, MemberOf, MissingEntityIdError, ModulesContainerProvider, MultiTenancyModule, MultipleEntitiesFoundException, NestEntityActions, NestEntityAuthorizationMiddleware, NestEntityManager, NestEntitySerializer, NestEntitySnapshotService, NestPipelineTemplate, NestTypeOrmEntitySeeder, NestTypeOrmQueryBuilder, NestTypeOrmRepository, OperationTokenMismatchError, PLATFORM_EVENT_NAMESPACE, Permissions, PipelineController, PipelineErrorType, PipelineInvocationError, PipelineStatus, PipelineStepErrorType, PipelinesBuilder, PipelinesRunner, PlatformEvents, Public, QueryBuilderBase, QueryBuilderOperation, ReplicationMode, Roles, SendgridEmailModule, SendgridEmailTemplate, SortDirection, TrackingService, UserCreationError, UserRegistrationError, WpAppInitializer, WpAwsSesEmailTemplate, WpBucketProvider, WpEmailLogger, WpEmailProvider, WpEmailTemplate, WpEntity, WpEntityActions, WpEntityAdapter, WpEntityAuthMiddleware, WpEntityConnector, WpEntityConverter, WpEntityManager, WpEntityQueryBuilder, WpEntityRepository, WpEntitySeeder, WpEntitySerializer, WpEntitySnapshotService, WpEntityVersioningProvider, WpEventsTracker, WpFileProvider, WpFileReferenceRepository, WpPermissionsService, WpPipeline, WpRolesService, WpSendgridEmailTemplate, WpUserRolesService, WpUserService, buildPermissionsGuard, buildRolesGuard, createContainer, createExpressFileResponse, getLocalizedText, newUuid, renderHandlebarsTemplate, toEntitiesImportInput };
28492
+ export { AUTHENTICATION_EVENTS_NAMESPACE, AppExceptionsFilterBase, AppHashingService, AppInMemorySettings, AppSessionMiddleware, AppSessionService, AuthGuard, Authenticated, AuthenticationEmailTemplates, AuthenticationError, AuthenticationEvents, AuthenticationExtensionSymbols, AuthenticationModule, AuthenticationService, AwsBucketModule, AwsEmailModule, AwsS3BucketError as AwsS2BucketError, AwsS3BucketProvider, AwsSesEmailTemplate, BucketItemType, CacheService, CurrentUser, EmailService, EntityManagerConfigurationError, EntityManagerException, EntityManagerInitializer, EntityManagerModule, EntityManagerRegistry, EntityManagerService, EntityManagerSymbols, EntityManagerUnauthorizedException, EntityNotFoundException, EntityOperationType, EntityOperationUnauthorizedException, EntitySeeder, EntitySerializationFormat, EntitySerializer, EntitySnapshotService, EntityVersionOperation, EventsService, FilesService, IEntityVersionsCursor, InMemoryBucketProvider, InMemoryEmailProvider, InvalidCredentialsError, MemberOf, MissingEntityIdError, ModulesContainerProvider, MultiTenancyModule, MultipleEntitiesFoundException, NestEntityActions, NestEntityAuthorizationMiddleware, NestEntityManager, NestEntitySerializer, NestEntitySnapshotService, NestPipelineTemplate, NestTypeOrmEntitySeeder, NestTypeOrmQueryBuilder, NestTypeOrmRepository, OperationTokenMismatchError, PLATFORM_EVENT_NAMESPACE, Permissions, PipelineController, PipelineErrorType, PipelineInvocationError, PipelineStatus, PipelineStepErrorType, PipelinesBuilder, PipelinesRunner, PlatformEvents, Public, QueryBuilderBase, QueryBuilderOperation, ReplicationMode, Roles, SendgridEmailModule, SendgridEmailTemplate, SortDirection, TrackingService, UserCreationError, UserRegistrationError, WpAppInitializer, WpAwsSesEmailTemplate, WpBucketProvider, WpCacheInstance, WpEmailLogger, WpEmailProvider, WpEmailTemplate, WpEntity, WpEntityActions, WpEntityAdapter, WpEntityAuthMiddleware, WpEntityConnector, WpEntityConverter, WpEntityManager, WpEntityQueryBuilder, WpEntityRepository, WpEntitySeeder, WpEntitySerializer, WpEntitySnapshotService, WpEntityVersioningProvider, WpEventsTracker, WpFileProvider, WpFileReferenceRepository, WpPermissionsService, WpPipeline, WpRolesService, WpSendgridEmailTemplate, WpUserRolesService, WpUserService, buildPermissionsGuard, buildRolesGuard, createContainer, createExpressFileResponse, getLocalizedText, newUuid, renderHandlebarsTemplate, toEntitiesImportInput };
28404
28493
  //# sourceMappingURL=index.js.map