@punks/backend-entity-manager 0.0.211 → 0.0.213
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 +173 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/abstractions/buckets.d.ts +2 -2
- package/dist/cjs/types/abstractions/index.d.ts +2 -1
- package/dist/cjs/types/abstractions/media.d.ts +77 -0
- package/dist/cjs/types/abstractions/settings.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/decorators/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/decorators/media.d.ts +12 -0
- package/dist/cjs/types/platforms/nest/decorators/symbols.d.ts +3 -0
- package/dist/cjs/types/platforms/nest/plugins/buckets/aws-s3/index.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/plugins/media/aws-s3/errors/index.d.ts +3 -0
- package/dist/cjs/types/platforms/nest/plugins/media/aws-s3/index.d.ts +4 -0
- package/dist/cjs/types/platforms/nest/plugins/media/aws-s3/module.d.ts +5 -0
- package/dist/cjs/types/platforms/nest/plugins/media/aws-s3/provider/media.d.ts +11 -0
- package/dist/cjs/types/platforms/nest/plugins/media/aws-s3/settings/index.d.ts +12 -0
- package/dist/cjs/types/platforms/nest/plugins/media/index.d.ts +2 -0
- package/dist/cjs/types/platforms/nest/plugins/media/testing/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/plugins/media/testing/mock.d.ts +10 -0
- package/dist/cjs/types/platforms/nest/processors/initializer/index.d.ts +6 -0
- package/dist/cjs/types/platforms/nest/services/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/services/media/index.d.ts +21 -0
- package/dist/cjs/types/platforms/nest/services/providers.d.ts +2 -1
- package/dist/cjs/types/providers/services.d.ts +8 -1
- package/dist/cjs/types/symbols/ioc.d.ts +3 -0
- package/dist/esm/index.js +172 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/abstractions/buckets.d.ts +2 -2
- package/dist/esm/types/abstractions/index.d.ts +2 -1
- package/dist/esm/types/abstractions/media.d.ts +77 -0
- package/dist/esm/types/abstractions/settings.d.ts +1 -0
- package/dist/esm/types/platforms/nest/decorators/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/decorators/media.d.ts +12 -0
- package/dist/esm/types/platforms/nest/decorators/symbols.d.ts +3 -0
- package/dist/esm/types/platforms/nest/plugins/buckets/aws-s3/index.d.ts +1 -1
- package/dist/esm/types/platforms/nest/plugins/media/aws-s3/errors/index.d.ts +3 -0
- package/dist/esm/types/platforms/nest/plugins/media/aws-s3/index.d.ts +4 -0
- package/dist/esm/types/platforms/nest/plugins/media/aws-s3/module.d.ts +5 -0
- package/dist/esm/types/platforms/nest/plugins/media/aws-s3/provider/media.d.ts +11 -0
- package/dist/esm/types/platforms/nest/plugins/media/aws-s3/settings/index.d.ts +12 -0
- package/dist/esm/types/platforms/nest/plugins/media/index.d.ts +2 -0
- package/dist/esm/types/platforms/nest/plugins/media/testing/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/plugins/media/testing/mock.d.ts +10 -0
- package/dist/esm/types/platforms/nest/processors/initializer/index.d.ts +6 -0
- package/dist/esm/types/platforms/nest/services/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/services/media/index.d.ts +21 -0
- package/dist/esm/types/platforms/nest/services/providers.d.ts +2 -1
- package/dist/esm/types/providers/services.d.ts +8 -1
- package/dist/esm/types/symbols/ioc.d.ts +3 -0
- package/dist/index.d.ts +121 -3
- package/package.json +1 -1
- package/dist/cjs/types/utils/labels.d.ts +0 -2
- package/dist/esm/types/utils/labels.d.ts +0 -2
|
@@ -44,10 +44,10 @@ export type BucketFileUploadInput = {
|
|
|
44
44
|
content: Buffer;
|
|
45
45
|
contentType?: string;
|
|
46
46
|
};
|
|
47
|
-
export
|
|
47
|
+
export type BucketFileDeleteInput = {
|
|
48
48
|
bucket: string;
|
|
49
49
|
filePath: string;
|
|
50
|
-
}
|
|
50
|
+
};
|
|
51
51
|
export interface IBucketProvider {
|
|
52
52
|
folderList(input: BucketFolderListInput): Promise<BucketFolderListResult>;
|
|
53
53
|
folderEnsure(input: BucketFolderEnsureInput): Promise<void>;
|
|
@@ -9,7 +9,7 @@ export { SortingType, ClassType, EnumType } from "./common";
|
|
|
9
9
|
export { IEntityManagerServiceRoot, IEntityManagerServiceCollection, } from "./configuration";
|
|
10
10
|
export { IEntityConverter } from "./converters";
|
|
11
11
|
export * from "./email";
|
|
12
|
-
export
|
|
12
|
+
export { EntityManagerException, EntityOperationType, EntityManagerUnauthorizedException, EntityOperationUnauthorizedException, EntityNotFoundException, MultipleEntitiesFoundException, EntityManagerConfigurationError, MissingEntityIdError, } from "./errors";
|
|
13
13
|
export { IEntityEventsManager } from "./events";
|
|
14
14
|
export { EntitiesExportFile, EntitiesExportInput, EntitiesExportOptions, EntitiesExportResult, EntitiesImportExportSettings, EntitiesSampleDownloadOptions, EntitiesSampleDownloadResult, EntityExportBucketSettings, } from "./export";
|
|
15
15
|
export * from "./files";
|
|
@@ -18,6 +18,7 @@ export { EntitiesImportInput, EntitiesImportResult, EntitiesImportStatistics, }
|
|
|
18
18
|
export * from "./localization";
|
|
19
19
|
export { IEntityManager } from "./manager";
|
|
20
20
|
export { IEntityMapper } from "./mappers";
|
|
21
|
+
export * from "./media";
|
|
21
22
|
export {} from "./pipelines";
|
|
22
23
|
export { IEntitiesSearchQuery, IEntityGetQuery, IEntitiesQueryBuilder, IEntityExistsQuery, IEntitiesCountQuery, IEntityVersionsSearchQuery, } from "./queries";
|
|
23
24
|
export { IReplicasConfiguration, ReplicationMode, ReplicaOptions, ReplicaConfiguration, IEntityReplicaDeleteManager, IEntityReplicaSyncManager, } from "./replication";
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
export type MediaUploadInput = {
|
|
3
|
+
fileName: string;
|
|
4
|
+
content: Buffer;
|
|
5
|
+
contentType?: string;
|
|
6
|
+
folderId?: string;
|
|
7
|
+
};
|
|
8
|
+
export type MediaReference = {
|
|
9
|
+
ref: string;
|
|
10
|
+
};
|
|
11
|
+
export type IMediaProvider = {
|
|
12
|
+
mediaUpload(input: MediaUploadInput): Promise<MediaReference>;
|
|
13
|
+
mediaDelete(input: MediaReference): Promise<void>;
|
|
14
|
+
mediaDownload(input: MediaReference): Promise<Buffer>;
|
|
15
|
+
getFileName(input: MediaReference): string;
|
|
16
|
+
};
|
|
17
|
+
export type MediaReferenceRecord = {
|
|
18
|
+
id: string;
|
|
19
|
+
ref: string;
|
|
20
|
+
folderId?: string;
|
|
21
|
+
createdOn: Date;
|
|
22
|
+
updatedOn: Date;
|
|
23
|
+
};
|
|
24
|
+
export type IMediaReferenceRepository = {
|
|
25
|
+
getReference(file: MediaReference): Promise<MediaReferenceRecord>;
|
|
26
|
+
createReference(file: MediaReference, folderId: string | undefined): Promise<MediaReferenceRecord>;
|
|
27
|
+
updateReferenceFolder(file: MediaReference, folderId: string | undefined): Promise<void>;
|
|
28
|
+
deleteReference(file: MediaReference): Promise<void>;
|
|
29
|
+
getFolderReferences(folderId?: string): Promise<MediaReferenceRecord[]>;
|
|
30
|
+
};
|
|
31
|
+
export type MediaFolderRecord = {
|
|
32
|
+
id: string;
|
|
33
|
+
name: string;
|
|
34
|
+
createdOn: Date;
|
|
35
|
+
updatedOn: Date;
|
|
36
|
+
};
|
|
37
|
+
export type IMediaFolderRepository = {
|
|
38
|
+
folderCreate(input: {
|
|
39
|
+
name: string;
|
|
40
|
+
parentId?: string;
|
|
41
|
+
}): Promise<MediaFolderRecord>;
|
|
42
|
+
folderRename(id: string, name: string): Promise<void>;
|
|
43
|
+
folderMove(id: string, parentId?: string): Promise<void>;
|
|
44
|
+
folderDelete(id: string): Promise<void>;
|
|
45
|
+
foldersList(parentId?: string): Promise<MediaFolderRecord[]>;
|
|
46
|
+
};
|
|
47
|
+
export type MediaFolderCreateInput = {
|
|
48
|
+
folderName: string;
|
|
49
|
+
parentId?: string;
|
|
50
|
+
};
|
|
51
|
+
export type MediaFolderReference = {
|
|
52
|
+
id: string;
|
|
53
|
+
name: string;
|
|
54
|
+
};
|
|
55
|
+
export type MediaFolderRenameInput = {
|
|
56
|
+
id: string;
|
|
57
|
+
folderName?: string;
|
|
58
|
+
};
|
|
59
|
+
export type MediaFolderMoveInput = {
|
|
60
|
+
id: string;
|
|
61
|
+
folderId?: string;
|
|
62
|
+
};
|
|
63
|
+
export type MediaInfo = {
|
|
64
|
+
ref: string;
|
|
65
|
+
fileName: string;
|
|
66
|
+
};
|
|
67
|
+
export type IMediaLibraryManager = {
|
|
68
|
+
mediaUpload(input: MediaUploadInput): Promise<MediaReference>;
|
|
69
|
+
mediaDelete(input: MediaReference): Promise<void>;
|
|
70
|
+
mediaDownload(input: MediaReference): Promise<Buffer>;
|
|
71
|
+
folderCreate(input: MediaFolderCreateInput): Promise<MediaFolderReference>;
|
|
72
|
+
folderDelete(input: MediaFolderReference): Promise<void>;
|
|
73
|
+
folderMove(input: MediaFolderMoveInput): Promise<void>;
|
|
74
|
+
folderRename(input: MediaFolderRenameInput): Promise<void>;
|
|
75
|
+
foldersList(parent?: MediaFolderReference): Promise<MediaFolderReference[]>;
|
|
76
|
+
getFolderMedia(input: MediaFolderReference): Promise<MediaInfo[]>;
|
|
77
|
+
};
|
|
@@ -12,6 +12,7 @@ export { WpFileProvider, FileProviderProps, WpFileReferenceRepository, FileRefer
|
|
|
12
12
|
export { WpAppInitializer } from "./initializer";
|
|
13
13
|
export { WpEntityRepository, EntityRepositoryProps } from "./repository";
|
|
14
14
|
export { WpEntityManager, EntityManagerProps } from "./manager";
|
|
15
|
+
export { WpMediaProvider, MediaProviderProps } from "./media";
|
|
15
16
|
export { WpEntityQueryBuilder, EntityQueryBuilderProps } from "./queryBuilder";
|
|
16
17
|
export { WpPipeline, PipelineTemplateProps } from "./pipelines";
|
|
17
18
|
export { WpEntitySeeder, EntitySeederProps } from "./seed";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface MediaProviderProps {
|
|
2
|
+
providerId: string;
|
|
3
|
+
}
|
|
4
|
+
export declare const WpMediaProvider: (providerId: string) => <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol | undefined, descriptor?: TypedPropertyDescriptor<Y> | undefined) => void;
|
|
5
|
+
export interface MediaReferenceRepositoryProps {
|
|
6
|
+
providerId: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const WpMediaReferenceRepository: (providerId: string) => <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol | undefined, descriptor?: TypedPropertyDescriptor<Y> | undefined) => void;
|
|
9
|
+
export interface MediaReferenceRepositoryProps {
|
|
10
|
+
providerId: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const WpMediaFolderRepository: (providerId: string) => <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol | undefined, descriptor?: TypedPropertyDescriptor<Y> | undefined) => void;
|
|
@@ -19,6 +19,9 @@ export declare const EntityManagerSymbols: {
|
|
|
19
19
|
EmailTemplate: symbol;
|
|
20
20
|
EmailLogger: symbol;
|
|
21
21
|
BucketProvider: symbol;
|
|
22
|
+
MediaProvider: symbol;
|
|
23
|
+
MediaReferenceRepository: symbol;
|
|
24
|
+
MediaFolderRepository: symbol;
|
|
22
25
|
SecretsProvider: symbol;
|
|
23
26
|
FileProvider: symbol;
|
|
24
27
|
FileReferenceRepository: symbol;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { IMediaProvider, MediaReference, MediaUploadInput } from "../../../../../../abstractions";
|
|
3
|
+
export declare class AwsS3MediaProvider implements IMediaProvider {
|
|
4
|
+
private readonly client;
|
|
5
|
+
constructor();
|
|
6
|
+
getFileName(input: MediaReference): string;
|
|
7
|
+
mediaUpload(input: MediaUploadInput): Promise<MediaReference>;
|
|
8
|
+
mediaDelete(input: MediaReference): Promise<void>;
|
|
9
|
+
mediaDownload(input: MediaReference): Promise<Buffer>;
|
|
10
|
+
private buildUploadPath;
|
|
11
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AppInMemorySettings } from "../../../../../../settings";
|
|
2
|
+
export type AwsBucketPaths = {
|
|
3
|
+
filesUpload: string;
|
|
4
|
+
};
|
|
5
|
+
export type AwsMediaSettings = {
|
|
6
|
+
awsAccessKeyId?: string;
|
|
7
|
+
awsSecretAccessKey?: string;
|
|
8
|
+
region?: string;
|
|
9
|
+
defaultBucket: string;
|
|
10
|
+
paths: AwsBucketPaths;
|
|
11
|
+
};
|
|
12
|
+
export declare const awsMediaSettings: AppInMemorySettings<AwsMediaSettings>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { InMemoryMediaProvider } from "./mock";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { IMediaProvider, MediaReference, MediaUploadInput } from "../../../../../abstractions";
|
|
3
|
+
export declare class InMemoryMediaProvider implements IMediaProvider {
|
|
4
|
+
private readonly provider;
|
|
5
|
+
mediaUpload(input: MediaUploadInput): Promise<MediaReference>;
|
|
6
|
+
mediaDelete(input: MediaReference): Promise<void>;
|
|
7
|
+
mediaDownload(input: MediaReference): Promise<Buffer>;
|
|
8
|
+
getFileName(input: MediaReference): string;
|
|
9
|
+
getProviderId(): string;
|
|
10
|
+
}
|
|
@@ -21,6 +21,9 @@ export declare class EntityManagerInitializer {
|
|
|
21
21
|
private executeInitializers;
|
|
22
22
|
private executeSeeders;
|
|
23
23
|
private registerFileProviders;
|
|
24
|
+
private registerMediaProviders;
|
|
25
|
+
private registerMediaReferenceRepositoryProviders;
|
|
26
|
+
private registerMediaFolderRepositoryProviders;
|
|
24
27
|
private registerGlobalAuthenticationMiddlewares;
|
|
25
28
|
private registerSecretsProviders;
|
|
26
29
|
private registerBucketProviders;
|
|
@@ -54,4 +57,7 @@ export declare class EntityManagerInitializer {
|
|
|
54
57
|
private discoverCacheInstances;
|
|
55
58
|
private discoverFileProviders;
|
|
56
59
|
private discoverFilesReferenceRepositoryProviders;
|
|
60
|
+
private discoverMediaProviders;
|
|
61
|
+
private discoverMediaReferenceRepositories;
|
|
62
|
+
private discoverMediaFolderRepositories;
|
|
57
63
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { AppSessionService } from "./session";
|
|
2
2
|
export { AppHashingService } from "./hashing";
|
|
3
3
|
export { EntityManagerService } from "./manager";
|
|
4
|
+
export { MediaLibraryService } from "./media";
|
|
4
5
|
export { EmailService } from "./email";
|
|
5
6
|
export { CacheService } from "./cache";
|
|
6
7
|
export { FilesService } from "./files";
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { IMediaLibraryManager, MediaFolderCreateInput, MediaFolderMoveInput, MediaFolderReference, MediaFolderRenameInput, MediaInfo, MediaReference, MediaUploadInput } from "../../../../abstractions";
|
|
3
|
+
import { EntityManagerRegistry } from "../../ioc";
|
|
4
|
+
export declare class MediaLibraryService implements IMediaLibraryManager {
|
|
5
|
+
private readonly registry;
|
|
6
|
+
constructor(registry: EntityManagerRegistry);
|
|
7
|
+
mediaUpload(input: MediaUploadInput): Promise<MediaReference>;
|
|
8
|
+
mediaDelete(input: MediaReference): Promise<void>;
|
|
9
|
+
mediaDownload(input: MediaReference): Promise<Buffer>;
|
|
10
|
+
folderCreate(input: MediaFolderCreateInput): Promise<MediaFolderReference>;
|
|
11
|
+
folderMove(input: MediaFolderMoveInput): Promise<void>;
|
|
12
|
+
folderRename(input: MediaFolderRenameInput): Promise<void>;
|
|
13
|
+
folderDelete(input: MediaFolderReference): Promise<void>;
|
|
14
|
+
foldersList(parent?: MediaFolderReference | undefined): Promise<MediaFolderReference[]>;
|
|
15
|
+
getFolderMedia(input: MediaFolderReference): Promise<MediaInfo[]>;
|
|
16
|
+
private parseReferenceProviderId;
|
|
17
|
+
private getMediaProvider;
|
|
18
|
+
private get defaultMediaProvider();
|
|
19
|
+
private get mediaFolderRepository();
|
|
20
|
+
private get mediaReferenceRepository();
|
|
21
|
+
}
|
|
@@ -4,7 +4,8 @@ import { EventsService } from "./events";
|
|
|
4
4
|
import { FilesService } from "./files";
|
|
5
5
|
import { AppHashingService } from "./hashing";
|
|
6
6
|
import { EntityManagerService } from "./manager";
|
|
7
|
+
import { MediaLibraryService } from "./media";
|
|
7
8
|
import { SecretsService } from "./secrets";
|
|
8
9
|
import { AppSessionService } from "./session";
|
|
9
10
|
import { TrackingService } from "./tracking";
|
|
10
|
-
export declare const Services: (typeof AppSessionService | typeof AppHashingService | typeof EntityManagerService | typeof EmailService | typeof CacheService | typeof FilesService | typeof EventsService | typeof TrackingService | typeof SecretsService)[];
|
|
11
|
+
export declare const Services: (typeof AppSessionService | typeof AppHashingService | typeof EntityManagerService | typeof MediaLibraryService | typeof EmailService | typeof CacheService | typeof FilesService | typeof EventsService | typeof TrackingService | typeof SecretsService)[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IAuthenticationContext, IAuthenticationContextProvider, IAuthenticationMiddleware, IBucketProvider, ICacheInstance, IEmailLogger, IEmailProvider, IEmailTemplatesCollection, IEntityFacets, IEntitySerializer, IEntitySnapshotService, IEntityVersioningProvider, IEventLog, IEventsTracker, IFileProvider, IFilesReferenceRepository, ISecretsProvider } from "../abstractions";
|
|
1
|
+
import { IAuthenticationContext, IAuthenticationContextProvider, IAuthenticationMiddleware, IBucketProvider, ICacheInstance, IEmailLogger, IEmailProvider, IEmailTemplatesCollection, IEntityFacets, IEntitySerializer, IEntitySnapshotService, IEntityVersioningProvider, IEventLog, IEventsTracker, IFileProvider, IFilesReferenceRepository, IMediaFolderRepository, IMediaProvider, IMediaReferenceRepository, ISecretsProvider } 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,7 @@ 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
|
+
resolveDefaultMediaProvider<TMediaProvider extends IMediaProvider>(): TMediaProvider;
|
|
86
87
|
resolveCacheInstance<TCacheInstance extends ICacheInstance>(name: string): TCacheInstance;
|
|
87
88
|
resolveCacheInstances<TCacheInstance extends ICacheInstance>(): TCacheInstance[];
|
|
88
89
|
registerCacheInstance<TCacheInstance extends ICacheInstance>(name: string, instance: TCacheInstance): this;
|
|
@@ -92,6 +93,12 @@ export declare class EntitiesServiceLocator {
|
|
|
92
93
|
registerSecretsProvider<TSecretsProvider extends ISecretsProvider>(name: string, instance: TSecretsProvider): this;
|
|
93
94
|
resolveAuthenticationMiddlewares<TAuthenticationMiddleware extends IAuthenticationMiddleware<any, unknown>>(): TAuthenticationMiddleware[];
|
|
94
95
|
registerAuthenticationMiddleware<TAuthenticationMiddleware extends IAuthenticationMiddleware<any, unknown>>(name: string, instance: TAuthenticationMiddleware): this;
|
|
96
|
+
resolveMediaReferenceRepository<TMediaReferenceRepository extends IMediaReferenceRepository>(): TMediaReferenceRepository;
|
|
97
|
+
registerMediaReferenceRepository<TMediaReferenceRepository extends IMediaReferenceRepository>(instance: TMediaReferenceRepository): void;
|
|
98
|
+
resolveMediaFolderRepository<TMediaFolderRepository extends IMediaFolderRepository>(): TMediaFolderRepository;
|
|
99
|
+
registerMediaFolderRepository<TMediaFolderRepository extends IMediaFolderRepository>(instance: TMediaFolderRepository): void;
|
|
100
|
+
resolveMediaProvider<TMediaProvider extends IMediaProvider>(providerId: string): TMediaProvider;
|
|
101
|
+
registerMediaProvider<TMediaProvider extends IMediaProvider>(name: string, instance: TMediaProvider): this;
|
|
95
102
|
resolveFileProvider<TFileProvider extends IFileProvider>(providerId: string): TFileProvider;
|
|
96
103
|
registerFileProvider<TFileProvider extends IFileProvider>(name: string, instance: TFileProvider): this;
|
|
97
104
|
resolveFilesReferenceRepositoryProviders<TFilesReferenceRepo extends IFilesReferenceRepository>(): TFilesReferenceRepo;
|
|
@@ -92,6 +92,9 @@ export declare const GlobalServices: {
|
|
|
92
92
|
IBucketProvider: string;
|
|
93
93
|
ISecretsProvider: string;
|
|
94
94
|
IFileProvider: string;
|
|
95
|
+
IMediaProvider: string;
|
|
96
|
+
IMediaFolderRepository: string;
|
|
97
|
+
IMediaReferenceRepository: string;
|
|
95
98
|
};
|
|
96
99
|
Settings: {
|
|
97
100
|
EntityManagerSettings: string;
|
package/dist/esm/index.js
CHANGED
|
@@ -38,7 +38,6 @@ const getOperationLabel = (operation) => {
|
|
|
38
38
|
return "find";
|
|
39
39
|
}
|
|
40
40
|
};
|
|
41
|
-
|
|
42
41
|
class EntityManagerException extends Error {
|
|
43
42
|
constructor(message) {
|
|
44
43
|
super(message);
|
|
@@ -1204,6 +1203,9 @@ const GlobalServices = {
|
|
|
1204
1203
|
IBucketProvider: "IBucketProvider",
|
|
1205
1204
|
ISecretsProvider: "ISecretsProvider",
|
|
1206
1205
|
IFileProvider: "IFileProvider",
|
|
1206
|
+
IMediaProvider: "IMediaProvider",
|
|
1207
|
+
IMediaFolderRepository: "IMediaFolderRepository",
|
|
1208
|
+
IMediaReferenceRepository: "IMediaReferenceRepository",
|
|
1207
1209
|
},
|
|
1208
1210
|
Settings: {
|
|
1209
1211
|
EntityManagerSettings: "EntityManagerSettings",
|
|
@@ -1408,6 +1410,10 @@ class EntitiesServiceLocator {
|
|
|
1408
1410
|
const settings = this.resolveSettings();
|
|
1409
1411
|
return this.provider.resolveMultipleNamed(GlobalServices.Plugins.IFileProvider, settings.defaultFilesProvider);
|
|
1410
1412
|
}
|
|
1413
|
+
resolveDefaultMediaProvider() {
|
|
1414
|
+
const settings = this.resolveSettings();
|
|
1415
|
+
return this.provider.resolveMultipleNamed(GlobalServices.Plugins.IMediaProvider, settings.defaultMediaProvider);
|
|
1416
|
+
}
|
|
1411
1417
|
resolveCacheInstance(name) {
|
|
1412
1418
|
return this.provider.resolveMultipleNamed(GlobalServices.Plugins.ICacheInstance, name);
|
|
1413
1419
|
}
|
|
@@ -1441,6 +1447,25 @@ class EntitiesServiceLocator {
|
|
|
1441
1447
|
this.provider.registerMultiple(GlobalServices.Authentication.IAuthenticationMiddleware, name, instance);
|
|
1442
1448
|
return this;
|
|
1443
1449
|
}
|
|
1450
|
+
resolveMediaReferenceRepository() {
|
|
1451
|
+
return this.provider.resolve(GlobalServices.Plugins.IMediaReferenceRepository);
|
|
1452
|
+
}
|
|
1453
|
+
registerMediaReferenceRepository(instance) {
|
|
1454
|
+
this.provider.register(GlobalServices.Plugins.IMediaReferenceRepository, instance);
|
|
1455
|
+
}
|
|
1456
|
+
resolveMediaFolderRepository() {
|
|
1457
|
+
return this.provider.resolve(GlobalServices.Plugins.IMediaFolderRepository);
|
|
1458
|
+
}
|
|
1459
|
+
registerMediaFolderRepository(instance) {
|
|
1460
|
+
this.provider.register(GlobalServices.Plugins.IMediaFolderRepository, instance);
|
|
1461
|
+
}
|
|
1462
|
+
resolveMediaProvider(providerId) {
|
|
1463
|
+
return this.provider.resolveMultipleNamed(GlobalServices.Plugins.IMediaProvider, providerId);
|
|
1464
|
+
}
|
|
1465
|
+
registerMediaProvider(name, instance) {
|
|
1466
|
+
this.provider.registerMultiple(GlobalServices.Plugins.IMediaProvider, name, instance);
|
|
1467
|
+
return this;
|
|
1468
|
+
}
|
|
1444
1469
|
resolveFileProvider(providerId) {
|
|
1445
1470
|
return this.provider.resolveMultipleNamed(GlobalServices.Plugins.IFileProvider, providerId);
|
|
1446
1471
|
}
|
|
@@ -3306,6 +3331,9 @@ const EntityManagerSymbols = {
|
|
|
3306
3331
|
EmailTemplate: Symbol.for("WP:EMAIL_TEMPLATE"),
|
|
3307
3332
|
EmailLogger: Symbol.for("WP:EMAIL_LOGGER"),
|
|
3308
3333
|
BucketProvider: Symbol.for("WP:BUCKET_PROVIDER"),
|
|
3334
|
+
MediaProvider: Symbol.for("WP:MEDIA_PROVIDER"),
|
|
3335
|
+
MediaReferenceRepository: Symbol.for("WP:MEDIA_REFERENCE_REPOSITORY"),
|
|
3336
|
+
MediaFolderRepository: Symbol.for("WP:MEDIA_FOLDER_REPOSITORY"),
|
|
3309
3337
|
SecretsProvider: Symbol.for("WP:SECRETS_PROVIDER"),
|
|
3310
3338
|
FileProvider: Symbol.for("WP:FILE_PROVIDER"),
|
|
3311
3339
|
FileReferenceRepository: Symbol.for("WP:FILE_REFERENCE_REPO"),
|
|
@@ -3381,6 +3409,10 @@ const WpEntityManager = (entityName, props = {}) => applyDecorators(Injectable()
|
|
|
3381
3409
|
...props,
|
|
3382
3410
|
}));
|
|
3383
3411
|
|
|
3412
|
+
const WpMediaProvider = (providerId) => applyDecorators(Injectable(), SetMetadata(EntityManagerSymbols.MediaProvider, {
|
|
3413
|
+
providerId,
|
|
3414
|
+
}));
|
|
3415
|
+
|
|
3384
3416
|
const WpEntityQueryBuilder = (entityName, props = {}) => applyDecorators(Injectable(), SetMetadata(EntityManagerSymbols.EntityQueryBuilder, {
|
|
3385
3417
|
entityName,
|
|
3386
3418
|
...props,
|
|
@@ -21232,6 +21264,92 @@ EntityManagerService = __decorate([
|
|
|
21232
21264
|
__metadata("design:paramtypes", [EntityManagerRegistry])
|
|
21233
21265
|
], EntityManagerService);
|
|
21234
21266
|
|
|
21267
|
+
let MediaLibraryService = class MediaLibraryService {
|
|
21268
|
+
constructor(registry) {
|
|
21269
|
+
this.registry = registry;
|
|
21270
|
+
}
|
|
21271
|
+
async mediaUpload(input) {
|
|
21272
|
+
const reference = await this.defaultMediaProvider.mediaUpload(input);
|
|
21273
|
+
await this.mediaReferenceRepository.createReference(reference, input.folderId);
|
|
21274
|
+
return reference;
|
|
21275
|
+
}
|
|
21276
|
+
async mediaDelete(input) {
|
|
21277
|
+
await this.getMediaProvider(this.parseReferenceProviderId(input)).mediaDelete(input);
|
|
21278
|
+
await this.mediaReferenceRepository.deleteReference(input);
|
|
21279
|
+
}
|
|
21280
|
+
async mediaDownload(input) {
|
|
21281
|
+
return await this.getMediaProvider(this.parseReferenceProviderId(input)).mediaDownload(input);
|
|
21282
|
+
}
|
|
21283
|
+
async folderCreate(input) {
|
|
21284
|
+
return await this.mediaFolderRepository.folderCreate({
|
|
21285
|
+
name: input.folderName,
|
|
21286
|
+
parentId: input.parentId,
|
|
21287
|
+
});
|
|
21288
|
+
}
|
|
21289
|
+
async folderMove(input) {
|
|
21290
|
+
await this.mediaFolderRepository.folderMove(input.id, input.folderId);
|
|
21291
|
+
}
|
|
21292
|
+
async folderRename(input) {
|
|
21293
|
+
await this.mediaFolderRepository.folderRename(input.id, input.folderName ?? "");
|
|
21294
|
+
}
|
|
21295
|
+
async folderDelete(input) {
|
|
21296
|
+
const folderFiles = await this.mediaReferenceRepository.getFolderReferences(input.id);
|
|
21297
|
+
if (folderFiles.length > 0) {
|
|
21298
|
+
throw new Error("Cannot delete folder with files inside");
|
|
21299
|
+
}
|
|
21300
|
+
const subfolders = await this.mediaFolderRepository.foldersList(input.id);
|
|
21301
|
+
if (subfolders.length > 0) {
|
|
21302
|
+
throw new Error("Cannot delete folder with subfolders inside");
|
|
21303
|
+
}
|
|
21304
|
+
await this.mediaFolderRepository.folderDelete(input.id);
|
|
21305
|
+
}
|
|
21306
|
+
async foldersList(parent) {
|
|
21307
|
+
const subfolders = await this.mediaFolderRepository.foldersList(parent?.id);
|
|
21308
|
+
return subfolders.map((f) => ({
|
|
21309
|
+
id: f.id,
|
|
21310
|
+
name: f.name,
|
|
21311
|
+
}));
|
|
21312
|
+
}
|
|
21313
|
+
async getFolderMedia(input) {
|
|
21314
|
+
const folderFiles = await this.mediaReferenceRepository.getFolderReferences(input.id);
|
|
21315
|
+
return folderFiles.map((f) => ({
|
|
21316
|
+
ref: f.ref,
|
|
21317
|
+
fileName: this.getMediaProvider(this.parseReferenceProviderId(f)).getFileName(f),
|
|
21318
|
+
}));
|
|
21319
|
+
}
|
|
21320
|
+
parseReferenceProviderId(ref) {
|
|
21321
|
+
return ref.ref.split(":")[0];
|
|
21322
|
+
}
|
|
21323
|
+
getMediaProvider(providerId) {
|
|
21324
|
+
return this.registry
|
|
21325
|
+
.getContainer()
|
|
21326
|
+
.getEntitiesServicesLocator()
|
|
21327
|
+
.resolveMediaProvider(providerId);
|
|
21328
|
+
}
|
|
21329
|
+
get defaultMediaProvider() {
|
|
21330
|
+
return this.registry
|
|
21331
|
+
.getContainer()
|
|
21332
|
+
.getEntitiesServicesLocator()
|
|
21333
|
+
.resolveDefaultMediaProvider();
|
|
21334
|
+
}
|
|
21335
|
+
get mediaFolderRepository() {
|
|
21336
|
+
return this.registry
|
|
21337
|
+
.getContainer()
|
|
21338
|
+
.getEntitiesServicesLocator()
|
|
21339
|
+
.resolveMediaFolderRepository();
|
|
21340
|
+
}
|
|
21341
|
+
get mediaReferenceRepository() {
|
|
21342
|
+
return this.registry
|
|
21343
|
+
.getContainer()
|
|
21344
|
+
.getEntitiesServicesLocator()
|
|
21345
|
+
.resolveMediaReferenceRepository();
|
|
21346
|
+
}
|
|
21347
|
+
};
|
|
21348
|
+
MediaLibraryService = __decorate([
|
|
21349
|
+
Injectable(),
|
|
21350
|
+
__metadata("design:paramtypes", [EntityManagerRegistry])
|
|
21351
|
+
], MediaLibraryService);
|
|
21352
|
+
|
|
21235
21353
|
let EmailService = class EmailService {
|
|
21236
21354
|
constructor(registry) {
|
|
21237
21355
|
this.registry = registry;
|
|
@@ -22166,8 +22284,9 @@ const Services$1 = [
|
|
|
22166
22284
|
EmailService,
|
|
22167
22285
|
EventsService,
|
|
22168
22286
|
FilesService,
|
|
22169
|
-
|
|
22287
|
+
MediaLibraryService,
|
|
22170
22288
|
SecretsService,
|
|
22289
|
+
TrackingService,
|
|
22171
22290
|
];
|
|
22172
22291
|
|
|
22173
22292
|
const IoC = [EntityManagerRegistry];
|
|
@@ -22236,6 +22355,9 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
|
|
|
22236
22355
|
await this.registerEmailLogger();
|
|
22237
22356
|
await this.registerFilesReferenceRepositoryProviders();
|
|
22238
22357
|
await this.registerFileProviders();
|
|
22358
|
+
await this.registerMediaProviders();
|
|
22359
|
+
await this.registerMediaReferenceRepositoryProviders();
|
|
22360
|
+
await this.registerMediaFolderRepositoryProviders();
|
|
22239
22361
|
await this.registerGlobalAuthenticationMiddlewares();
|
|
22240
22362
|
await this.registerBucketProviders();
|
|
22241
22363
|
await this.registerSecretsProviders();
|
|
@@ -22343,6 +22465,44 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
|
|
|
22343
22465
|
this.logger.log(`File provider ${provider.discoveredClass.name} registered 🚜`);
|
|
22344
22466
|
}
|
|
22345
22467
|
}
|
|
22468
|
+
async registerMediaProviders() {
|
|
22469
|
+
const providers = await this.discoverMediaProviders();
|
|
22470
|
+
if (!providers.length) {
|
|
22471
|
+
this.logger.warn("No media providers found ⚠️");
|
|
22472
|
+
return;
|
|
22473
|
+
}
|
|
22474
|
+
for (const provider of providers) {
|
|
22475
|
+
this.registry
|
|
22476
|
+
.getContainer()
|
|
22477
|
+
.getEntitiesServicesLocator()
|
|
22478
|
+
.registerMediaProvider(provider.meta.providerId, provider.discoveredClass.instance);
|
|
22479
|
+
this.logger.log(`Media provider ${provider.discoveredClass.name} registered 🚜`);
|
|
22480
|
+
}
|
|
22481
|
+
}
|
|
22482
|
+
async registerMediaReferenceRepositoryProviders() {
|
|
22483
|
+
const providers = await this.discoverMediaReferenceRepositories();
|
|
22484
|
+
if (!providers.length) {
|
|
22485
|
+
this.logger.warn("No media reference repository ⚠️");
|
|
22486
|
+
return;
|
|
22487
|
+
}
|
|
22488
|
+
this.registry
|
|
22489
|
+
.getContainer()
|
|
22490
|
+
.getEntitiesServicesLocator()
|
|
22491
|
+
.registerMediaReferenceRepository(providers[0].discoveredClass.instance);
|
|
22492
|
+
this.logger.log(`Media Reference Repository ${providers[0].discoveredClass.name} registered 🚜`);
|
|
22493
|
+
}
|
|
22494
|
+
async registerMediaFolderRepositoryProviders() {
|
|
22495
|
+
const providers = await this.discoverMediaFolderRepositories();
|
|
22496
|
+
if (!providers.length) {
|
|
22497
|
+
this.logger.warn("No media folder repository ⚠️");
|
|
22498
|
+
return;
|
|
22499
|
+
}
|
|
22500
|
+
this.registry
|
|
22501
|
+
.getContainer()
|
|
22502
|
+
.getEntitiesServicesLocator()
|
|
22503
|
+
.registerMediaFolderRepository(providers[0].discoveredClass.instance);
|
|
22504
|
+
this.logger.log(`Media Folder Repository ${providers[0].discoveredClass.name} registered 🚜`);
|
|
22505
|
+
}
|
|
22346
22506
|
async registerGlobalAuthenticationMiddlewares() {
|
|
22347
22507
|
const providers = await this.discoverGlobalAuthenticationMiddlewares();
|
|
22348
22508
|
for (const provider of providers) {
|
|
@@ -22540,6 +22700,15 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
|
|
|
22540
22700
|
async discoverFilesReferenceRepositoryProviders() {
|
|
22541
22701
|
return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.FileReferenceRepository);
|
|
22542
22702
|
}
|
|
22703
|
+
async discoverMediaProviders() {
|
|
22704
|
+
return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.MediaProvider);
|
|
22705
|
+
}
|
|
22706
|
+
async discoverMediaReferenceRepositories() {
|
|
22707
|
+
return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.MediaReferenceRepository);
|
|
22708
|
+
}
|
|
22709
|
+
async discoverMediaFolderRepositories() {
|
|
22710
|
+
return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.MediaFolderRepository);
|
|
22711
|
+
}
|
|
22543
22712
|
};
|
|
22544
22713
|
EntityManagerInitializer = EntityManagerInitializer_1 = __decorate([
|
|
22545
22714
|
Injectable(),
|
|
@@ -28945,5 +29114,5 @@ AwsSecretsModule = AwsSecretsModule_1 = __decorate([
|
|
|
28945
29114
|
})
|
|
28946
29115
|
], AwsSecretsModule);
|
|
28947
29116
|
|
|
28948
|
-
export { AUTHENTICATION_EVENTS_NAMESPACE, AppExceptionsFilterBase, AppHashingService, AppInMemorySettings, AppSessionMiddleware, AppSessionService, AuthGuard, Authenticated, AuthenticationEmailTemplates, AuthenticationError, AuthenticationEvents, AuthenticationExtensionSymbols, AuthenticationModule, AuthenticationService, AwsBucketModule, AwsEmailModule, AwsS3BucketError
|
|
29117
|
+
export { AUTHENTICATION_EVENTS_NAMESPACE, AppExceptionsFilterBase, AppHashingService, AppInMemorySettings, AppSessionMiddleware, AppSessionService, AuthGuard, Authenticated, AuthenticationEmailTemplates, AuthenticationError, AuthenticationEvents, AuthenticationExtensionSymbols, AuthenticationModule, AuthenticationService, AwsBucketModule, AwsEmailModule, AwsS3BucketError, AwsS3BucketProvider, AwsSecretsModule, AwsSecretsProvider, 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, MediaLibraryService, 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, SecretsService, SendgridEmailModule, SendgridEmailTemplate, SortDirection, TrackingService, TypeOrmQueryBuilder, TypeOrmRepository, TypeormCacheInstance, 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, WpGlobalAuthenticationMiddleware, WpMediaProvider, WpPermissionsService, WpPipeline, WpRolesService, WpSendgridEmailTemplate, WpUserRolesService, WpUserService, buildPermissionsGuard, buildRolesGuard, createContainer, createExpressFileResponse, getLocalizedText, newUuid, renderHandlebarsTemplate, toEntitiesImportInput };
|
|
28949
29118
|
//# sourceMappingURL=index.js.map
|