@trailmix-cms/cms 0.0.1

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 (85) hide show
  1. package/dist/auth.guard.d.ts +22 -0
  2. package/dist/auth.guard.d.ts.map +1 -0
  3. package/dist/auth.guard.js +109 -0
  4. package/dist/auth.guard.js.map +1 -0
  5. package/dist/cms.module.d.ts +7 -0
  6. package/dist/cms.module.d.ts.map +1 -0
  7. package/dist/cms.module.js +47 -0
  8. package/dist/cms.module.js.map +1 -0
  9. package/dist/cms.providers.d.ts +119 -0
  10. package/dist/cms.providers.d.ts.map +1 -0
  11. package/dist/cms.providers.js +122 -0
  12. package/dist/cms.providers.js.map +1 -0
  13. package/dist/collections/account.collection.d.ts +18 -0
  14. package/dist/collections/account.collection.d.ts.map +1 -0
  15. package/dist/collections/account.collection.js +52 -0
  16. package/dist/collections/account.collection.js.map +1 -0
  17. package/dist/collections/file.collection.d.ts +21 -0
  18. package/dist/collections/file.collection.d.ts.map +1 -0
  19. package/dist/collections/file.collection.js +59 -0
  20. package/dist/collections/file.collection.js.map +1 -0
  21. package/dist/collections/index.d.ts +4 -0
  22. package/dist/collections/index.d.ts.map +1 -0
  23. package/dist/collections/index.js +10 -0
  24. package/dist/collections/index.js.map +1 -0
  25. package/dist/collections/text.collection.d.ts +20 -0
  26. package/dist/collections/text.collection.d.ts.map +1 -0
  27. package/dist/collections/text.collection.js +56 -0
  28. package/dist/collections/text.collection.js.map +1 -0
  29. package/dist/config.d.ts +12 -0
  30. package/dist/config.d.ts.map +1 -0
  31. package/dist/config.js +31 -0
  32. package/dist/config.js.map +1 -0
  33. package/dist/constants/cms-collection-names.d.ts +7 -0
  34. package/dist/constants/cms-collection-names.d.ts.map +1 -0
  35. package/dist/constants/cms-collection-names.js +9 -0
  36. package/dist/constants/cms-collection-names.js.map +1 -0
  37. package/dist/constants/index.d.ts +3 -0
  38. package/dist/constants/index.d.ts.map +1 -0
  39. package/dist/constants/index.js +19 -0
  40. package/dist/constants/index.js.map +1 -0
  41. package/dist/constants/provider-symbols.d.ts +14 -0
  42. package/dist/constants/provider-symbols.d.ts.map +1 -0
  43. package/dist/constants/provider-symbols.js +17 -0
  44. package/dist/constants/provider-symbols.js.map +1 -0
  45. package/dist/controllers/account.controller.d.ts +10 -0
  46. package/dist/controllers/account.controller.d.ts.map +1 -0
  47. package/dist/controllers/account.controller.js +53 -0
  48. package/dist/controllers/account.controller.js.map +1 -0
  49. package/dist/controllers/file.controller.d.ts +2 -0
  50. package/dist/controllers/file.controller.d.ts.map +1 -0
  51. package/dist/controllers/file.controller.js +80 -0
  52. package/dist/controllers/file.controller.js.map +1 -0
  53. package/dist/controllers/text.controller.d.ts +2 -0
  54. package/dist/controllers/text.controller.d.ts.map +1 -0
  55. package/dist/controllers/text.controller.js +48 -0
  56. package/dist/controllers/text.controller.js.map +1 -0
  57. package/dist/decorators/account.decorator.d.ts +4 -0
  58. package/dist/decorators/account.decorator.d.ts.map +1 -0
  59. package/dist/decorators/account.decorator.js +16 -0
  60. package/dist/decorators/account.decorator.js.map +1 -0
  61. package/dist/decorators/audit-context.decorator.d.ts +2 -0
  62. package/dist/decorators/audit-context.decorator.d.ts.map +1 -0
  63. package/dist/decorators/audit-context.decorator.js +17 -0
  64. package/dist/decorators/audit-context.decorator.js.map +1 -0
  65. package/dist/decorators/auth.decorator.d.ts +9 -0
  66. package/dist/decorators/auth.decorator.d.ts.map +1 -0
  67. package/dist/decorators/auth.decorator.js +13 -0
  68. package/dist/decorators/auth.decorator.js.map +1 -0
  69. package/dist/index.d.ts +6 -0
  70. package/dist/index.d.ts.map +1 -0
  71. package/dist/index.js +22 -0
  72. package/dist/index.js.map +1 -0
  73. package/dist/pipes/file.pipe.d.ts +8 -0
  74. package/dist/pipes/file.pipe.d.ts.map +1 -0
  75. package/dist/pipes/file.pipe.js +28 -0
  76. package/dist/pipes/file.pipe.js.map +1 -0
  77. package/dist/services/authorization.service.d.ts +14 -0
  78. package/dist/services/authorization.service.d.ts.map +1 -0
  79. package/dist/services/authorization.service.js +101 -0
  80. package/dist/services/authorization.service.js.map +1 -0
  81. package/dist/types/collection-config.d.ts +4 -0
  82. package/dist/types/collection-config.d.ts.map +1 -0
  83. package/dist/types/collection-config.js +3 -0
  84. package/dist/types/collection-config.js.map +1 -0
  85. package/package.json +44 -0
@@ -0,0 +1,22 @@
1
+ import { Reflector } from '@nestjs/core';
2
+ import { CanActivate, ExecutionContext } from '@nestjs/common';
3
+ import { Account } from '@trailmixcms/models';
4
+ import { AccountCollection } from './collections';
5
+ import { ConfigService } from '@nestjs/config';
6
+ import { AppConfig } from './config';
7
+ declare module 'fastify' {
8
+ interface FastifyRequest {
9
+ account?: Account.Entity;
10
+ }
11
+ }
12
+ export declare class AuthGuard implements CanActivate {
13
+ private reflector;
14
+ private accountCollection;
15
+ private configService;
16
+ private readonly logger;
17
+ private readonly clerkClient;
18
+ constructor(reflector: Reflector, accountCollection: AccountCollection, configService: ConfigService<AppConfig>);
19
+ canActivate(context: ExecutionContext): Promise<boolean>;
20
+ private getAccount;
21
+ }
22
+ //# sourceMappingURL=auth.guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.guard.d.ts","sourceRoot":"","sources":["../src/auth.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAc,WAAW,EAAE,gBAAgB,EAAmF,MAAM,gBAAgB,CAAC;AAG5J,OAAO,EAAE,OAAO,EAAQ,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,OAAO,QAAQ,SAAS,CAAC;IACrB,UAAU,cAAc;QACpB,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAA;KAC3B;CACJ;AAED,qBACa,SAAU,YAAW,WAAW;IAKrC,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,aAAa;IANzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8B;IACrD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;gBAG9B,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,aAAa,CAAC,SAAS,CAAC;IAO7C,WAAW,CACb,OAAO,EAAE,gBAAgB,GAC1B,OAAO,CAAC,OAAO,CAAC;YA2CL,UAAU;CAuC3B"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var AuthGuard_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.AuthGuard = void 0;
14
+ const core_1 = require("@nestjs/core");
15
+ const common_1 = require("@nestjs/common");
16
+ const fastify_1 = require("@clerk/fastify");
17
+ const models_1 = require("@trailmixcms/models");
18
+ const collections_1 = require("./collections");
19
+ const config_1 = require("@nestjs/config");
20
+ const auth_decorator_1 = require("./decorators/auth.decorator");
21
+ let AuthGuard = AuthGuard_1 = class AuthGuard {
22
+ reflector;
23
+ accountCollection;
24
+ configService;
25
+ logger = new common_1.Logger(AuthGuard_1.name);
26
+ clerkClient;
27
+ constructor(reflector, accountCollection, configService) {
28
+ this.reflector = reflector;
29
+ this.accountCollection = accountCollection;
30
+ this.configService = configService;
31
+ this.clerkClient = (0, fastify_1.createClerkClient)({
32
+ secretKey: this.configService.get('CLERK_SECRET_KEY'),
33
+ });
34
+ }
35
+ async canActivate(context) {
36
+ const requiredRoles = this.reflector.getAllAndOverride(auth_decorator_1.ROLES_KEY, [
37
+ context.getHandler(),
38
+ context.getClass(),
39
+ ]);
40
+ const allowAnonymous = this.reflector.getAllAndOverride(auth_decorator_1.ALLOW_ANONYMOUS_KEY, [
41
+ context.getHandler(),
42
+ context.getClass(),
43
+ ]);
44
+ const request = context.switchToHttp().getRequest();
45
+ const { account } = await this.getAccount(context);
46
+ if (!account) {
47
+ if (allowAnonymous) {
48
+ return true;
49
+ }
50
+ throw new common_1.UnauthorizedException('Unauthorized request');
51
+ }
52
+ request.account = account;
53
+ if (allowAnonymous) {
54
+ return true;
55
+ }
56
+ // If no roles are required, allow any authenticated user
57
+ if (requiredRoles.length == 0) {
58
+ return true;
59
+ }
60
+ // Check if user has required role
61
+ const hasRole = requiredRoles.some((role) => account?.roles?.includes(role))
62
+ || account?.roles?.includes(models_1.Role.Admin);
63
+ if (!hasRole) {
64
+ throw new common_1.ForbiddenException('You are not authorized to access this resource');
65
+ }
66
+ return true;
67
+ }
68
+ async getAccount(context) {
69
+ const request = context.switchToHttp().getRequest();
70
+ const auth = (0, fastify_1.getAuth)(request);
71
+ if (!auth.userId) {
72
+ return {};
73
+ }
74
+ // const cachedUser = await this.userCache.getUser(auth.userId);
75
+ // if (cachedUser) {
76
+ // return {
77
+ // account: cachedUser.account,
78
+ // userPublicMetadata: cachedUser.metadata,
79
+ // };
80
+ // }
81
+ const user = await this.clerkClient.users.getUser(auth.userId);
82
+ const account = await this.accountCollection.upsertOne({ user_id: auth.userId }, {
83
+ $set: {
84
+ user_id: auth.userId,
85
+ }
86
+ }, {
87
+ system: true,
88
+ message: 'Account upserted',
89
+ source: AuthGuard_1.name,
90
+ });
91
+ // TODO: Cache user
92
+ // await this.userCache.cacheUser(auth.userId, {
93
+ // account: account!,
94
+ // metadata: user.publicMetadata,
95
+ // });
96
+ return {
97
+ account,
98
+ userPublicMetadata: user.publicMetadata,
99
+ };
100
+ }
101
+ };
102
+ exports.AuthGuard = AuthGuard;
103
+ exports.AuthGuard = AuthGuard = AuthGuard_1 = __decorate([
104
+ (0, common_1.Injectable)(),
105
+ __metadata("design:paramtypes", [core_1.Reflector,
106
+ collections_1.AccountCollection,
107
+ config_1.ConfigService])
108
+ ], AuthGuard);
109
+ //# sourceMappingURL=auth.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.guard.js","sourceRoot":"","sources":["../src/auth.guard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import * as models from '@trailmixcms/models';
3
+ import { createCmsProviders } from './cms.providers';
4
+ export declare class CmsModule {
5
+ static forRoot<AccountEntity extends models.Account.Entity = models.Account.Entity, AccountDtoEntity = AccountEntity, FileEntity extends models.File.Entity = models.File.Entity, TextEntity extends models.Text.Entity = models.Text.Entity>(options?: Parameters<typeof createCmsProviders<AccountEntity, AccountDtoEntity, FileEntity, TextEntity>>[0]): Promise<DynamicModule>;
6
+ }
7
+ //# sourceMappingURL=cms.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cms.module.d.ts","sourceRoot":"","sources":["../src/cms.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAGvD,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAI9C,OAAO,EAAwB,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG3E,qBASa,SAAS;WACL,OAAO,CAChB,aAAa,SAAS,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EACnE,gBAAgB,GAAG,aAAa,EAChC,UAAU,SAAS,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAC1D,UAAU,SAAS,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAC5D,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;CAgBzI"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var CmsModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.CmsModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const config_1 = require("@nestjs/config");
13
+ const db_1 = require("@trailmixcms/db");
14
+ const config_2 = require("./config");
15
+ const cms_providers_1 = require("./cms.providers");
16
+ const account_controller_1 = require("./controllers/account.controller");
17
+ let CmsModule = CmsModule_1 = class CmsModule {
18
+ static async forRoot(options) {
19
+ const providers = (0, cms_providers_1.createCmsProviders)(options);
20
+ const { collectionNames, collections } = (0, cms_providers_1.configureCollections)(options);
21
+ return {
22
+ module: CmsModule_1,
23
+ providers,
24
+ controllers: [
25
+ (0, account_controller_1.buildAccountController)(options?.entities?.accountDto),
26
+ ],
27
+ exports: [
28
+ ...providers,
29
+ ...db_1.Utils.buildCollectionTokens(collectionNames),
30
+ ...collections,
31
+ ]
32
+ };
33
+ }
34
+ };
35
+ exports.CmsModule = CmsModule;
36
+ exports.CmsModule = CmsModule = CmsModule_1 = __decorate([
37
+ (0, common_1.Module)({
38
+ imports: [
39
+ config_1.ConfigModule.forRoot({
40
+ load: [config_2.configuration],
41
+ }),
42
+ db_1.DatabaseModule
43
+ ],
44
+ exports: []
45
+ })
46
+ ], CmsModule);
47
+ //# sourceMappingURL=cms.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cms.module.js","sourceRoot":"","sources":["../src/cms.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,2CAA8C;AAG9C,wCAAwD;AAExD,qCAAyC;AACzC,mDAA2E;AAC3E,yEAA0E;AAWnE,IAAM,SAAS,iBAAf,MAAM,SAAS;IAClB,MAAM,CAAC,KAAK,CAAC,OAAO,CAKlB,OAA2G;QACzG,MAAM,SAAS,GAAG,IAAA,kCAAkB,EAA0D,OAAO,CAAC,CAAC;QACvG,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,IAAA,oCAAoB,EAAC,OAAO,CAAC,CAAC;QACvE,OAAO;YACH,MAAM,EAAE,WAAS;YACjB,SAAS;YACT,WAAW,EAAE;gBACT,IAAA,2CAAsB,EAAkC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC;aACzF;YACD,OAAO,EAAE;gBACL,GAAG,SAAS;gBACZ,GAAG,UAAK,CAAC,qBAAqB,CAAC,eAAe,CAAC;gBAC/C,GAAG,WAAW;aACjB;SACJ,CAAC;IACN,CAAC;CACJ,CAAA;AAtBY,8BAAS;oBAAT,SAAS;IATrB,IAAA,eAAM,EAAC;QACJ,OAAO,EAAE;YACL,qBAAY,CAAC,OAAO,CAAC;gBACjB,IAAI,EAAE,CAAC,sBAAa,CAAC;aACxB,CAAC;YACF,mBAAc;SACjB;QACD,OAAO,EAAE,EAAE;KACd,CAAC;GACW,SAAS,CAsBrB"}
@@ -0,0 +1,119 @@
1
+ import { OptionalUnlessRequiredId } from 'mongodb';
2
+ import { ZodType } from 'zod';
3
+ import * as models from '@trailmixcms/models';
4
+ import { CollectionConfig } from './types/collection-config';
5
+ import { Collection } from 'mongodb';
6
+ import { AccountCollection, FileCollection, TextCollection } from './collections';
7
+ export declare function configureCollections(options?: {
8
+ features?: {
9
+ file?: boolean;
10
+ text?: boolean;
11
+ };
12
+ }): {
13
+ collectionNames: ("account" | "file" | "text")[];
14
+ collections: (typeof AccountCollection | typeof FileCollection | typeof TextCollection)[];
15
+ };
16
+ export declare function createCmsProviders<AccountEntity extends models.Account.Entity = models.Account.Entity, AccountDtoEntity = AccountEntity, FileEntity extends models.File.Entity = models.File.Entity, TextEntity extends models.Text.Entity = models.Text.Entity>(options?: {
17
+ entities?: {
18
+ accountSchema?: ZodType<OptionalUnlessRequiredId<AccountEntity>>;
19
+ accountSetup?: (collection: Collection<AccountEntity>) => Promise<void>;
20
+ accountDtoSchema?: ZodType<OptionalUnlessRequiredId<AccountDtoEntity>>;
21
+ accountDto?: any;
22
+ accountMapEntity?: (entity: AccountEntity) => AccountDtoEntity;
23
+ accountConfig?: CollectionConfig;
24
+ fileSchema?: ZodType<OptionalUnlessRequiredId<FileEntity>>;
25
+ fileSetup?: (collection: Collection<FileEntity>) => Promise<void>;
26
+ fileConfig?: CollectionConfig;
27
+ textSchema?: ZodType<OptionalUnlessRequiredId<TextEntity>>;
28
+ textSetup?: (collection: Collection<TextEntity>) => Promise<void>;
29
+ textConfig?: CollectionConfig;
30
+ };
31
+ features?: {
32
+ file?: boolean;
33
+ text?: boolean;
34
+ };
35
+ }): (typeof AccountCollection | typeof FileCollection | typeof TextCollection | {
36
+ provide: string;
37
+ useFactory: (databaseService: import("@trailmixcms/db").DatabaseService) => Promise<Collection<import("bson").Document>>;
38
+ inject: (typeof import("@trailmixcms/db").DatabaseService)[];
39
+ } | {
40
+ provide: "TRAILMIXCMS_CMS_ACCOUNT_SCHEMA";
41
+ useValue: import("zod").ZodObject<{
42
+ _id: import("zod").ZodCodec<import("zod").ZodString, import("zod").ZodCustom<import("bson").ObjectId, import("bson").ObjectId>>;
43
+ created_at: import("zod").ZodCodec<import("zod").ZodISODateTime, import("zod").ZodDate>;
44
+ updated_at: import("zod").ZodOptional<import("zod").ZodCodec<import("zod").ZodISODateTime, import("zod").ZodDate>>;
45
+ user_id: import("zod").ZodString;
46
+ roles: import("zod").ZodArray<import("zod").ZodString>;
47
+ }, import("zod/v4/core").$strip> | ZodType<OptionalUnlessRequiredId<AccountEntity>, unknown, import("zod/v4/core").$ZodTypeInternals<OptionalUnlessRequiredId<AccountEntity>, unknown>>;
48
+ } | {
49
+ provide: "TRAILMIXCMS_CMS_ACCOUNT_SETUP";
50
+ useValue: (collection: Collection<AccountEntity>) => Promise<void>;
51
+ } | {
52
+ provide: "TRAILMIXCMS_CMS_ACCOUNT_CONFIG";
53
+ useValue: CollectionConfig;
54
+ } | {
55
+ provide: "TRAILMIXCMS_CMS_ACCOUNT_DTO_SCHEMA";
56
+ useValue: import("zod").ZodObject<{
57
+ _id: import("zod").ZodCodec<import("zod").ZodString, import("zod").ZodCustom<import("bson").ObjectId, import("bson").ObjectId>>;
58
+ created_at: import("zod").ZodCodec<import("zod").ZodISODateTime, import("zod").ZodDate>;
59
+ updated_at: import("zod").ZodOptional<import("zod").ZodCodec<import("zod").ZodISODateTime, import("zod").ZodDate>>;
60
+ user_id: import("zod").ZodString;
61
+ roles: import("zod").ZodArray<import("zod").ZodString>;
62
+ }, import("zod/v4/core").$strip> | ZodType<OptionalUnlessRequiredId<AccountDtoEntity>, unknown, import("zod/v4/core").$ZodTypeInternals<OptionalUnlessRequiredId<AccountDtoEntity>, unknown>>;
63
+ } | {
64
+ provide: "TRAILMIXCMS_CMS_ACCOUNT_MAP_ENTITY";
65
+ useValue: ((entity: AccountEntity) => AccountDtoEntity) | ((entity: AccountEntity) => AccountEntity);
66
+ } | {
67
+ provide: "TRAILMIXCMS_CMS_FILE_SCHEMA";
68
+ useValue: import("zod").ZodObject<{
69
+ _id: import("zod").ZodCodec<import("zod").ZodString, import("zod").ZodCustom<import("bson").ObjectId, import("bson").ObjectId>>;
70
+ created_at: import("zod").ZodCodec<import("zod").ZodISODateTime, import("zod").ZodDate>;
71
+ updated_at: import("zod").ZodOptional<import("zod").ZodCodec<import("zod").ZodISODateTime, import("zod").ZodDate>>;
72
+ published: import("zod").ZodOptional<import("zod").ZodBoolean>;
73
+ authorization: import("zod").ZodOptional<import("zod").ZodObject<{
74
+ public: import("zod").ZodOptional<import("zod").ZodBoolean>;
75
+ roles: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
76
+ accountIds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodCodec<import("zod").ZodString, import("zod").ZodCustom<import("bson").ObjectId, import("bson").ObjectId>>>>;
77
+ }, import("zod/v4/core").$strip>>;
78
+ external_id: import("zod").ZodString;
79
+ name: import("zod").ZodOptional<import("zod").ZodString>;
80
+ description: import("zod").ZodOptional<import("zod").ZodString>;
81
+ guid: import("zod").ZodOptional<import("zod").ZodString>;
82
+ file_name: import("zod").ZodString;
83
+ file_extension: import("zod").ZodString;
84
+ path: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
85
+ size: import("zod").ZodNumber;
86
+ encryption: import("zod").ZodOptional<import("zod").ZodObject<{
87
+ key: import("zod").ZodString;
88
+ iv: import("zod").ZodString;
89
+ }, import("zod/v4/core").$strip>>;
90
+ }, import("zod/v4/core").$strip> | ZodType<OptionalUnlessRequiredId<FileEntity>, unknown, import("zod/v4/core").$ZodTypeInternals<OptionalUnlessRequiredId<FileEntity>, unknown>>;
91
+ } | {
92
+ provide: "TRAILMIXCMS_CMS_FILE_SETUP";
93
+ useValue: (collection: Collection<FileEntity>) => Promise<void>;
94
+ } | {
95
+ provide: "TRAILMIXCMS_CMS_FILE_CONFIG";
96
+ useValue: CollectionConfig;
97
+ } | {
98
+ provide: "TRAILMIXCMS_CMS_TEXT_SCHEMA";
99
+ useValue: import("zod").ZodObject<{
100
+ _id: import("zod").ZodCodec<import("zod").ZodString, import("zod").ZodCustom<import("bson").ObjectId, import("bson").ObjectId>>;
101
+ created_at: import("zod").ZodCodec<import("zod").ZodISODateTime, import("zod").ZodDate>;
102
+ updated_at: import("zod").ZodOptional<import("zod").ZodCodec<import("zod").ZodISODateTime, import("zod").ZodDate>>;
103
+ authorization: import("zod").ZodOptional<import("zod").ZodObject<{
104
+ public: import("zod").ZodOptional<import("zod").ZodBoolean>;
105
+ roles: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
106
+ accountIds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodCodec<import("zod").ZodString, import("zod").ZodCustom<import("bson").ObjectId, import("bson").ObjectId>>>>;
107
+ }, import("zod/v4/core").$strip>>;
108
+ published: import("zod").ZodOptional<import("zod").ZodBoolean>;
109
+ guid: import("zod").ZodString;
110
+ content: import("zod").ZodString;
111
+ }, import("zod/v4/core").$strip> | ZodType<OptionalUnlessRequiredId<TextEntity>, unknown, import("zod/v4/core").$ZodTypeInternals<OptionalUnlessRequiredId<TextEntity>, unknown>>;
112
+ } | {
113
+ provide: "TRAILMIXCMS_CMS_TEXT_SETUP";
114
+ useValue: (collection: Collection<TextEntity>) => Promise<void>;
115
+ } | {
116
+ provide: "TRAILMIXCMS_CMS_TEXT_CONFIG";
117
+ useValue: CollectionConfig;
118
+ })[];
119
+ //# sourceMappingURL=cms.providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cms.providers.d.ts","sourceRoot":"","sources":["../src/cms.providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAC9B,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAI9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAElF,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE;IAC3C,QAAQ,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,IAAI,CAAC,EAAE,OAAO,CAAC;KAClB,CAAA;CACJ;;;EAaA;AAED,wBAAgB,kBAAkB,CAC9B,aAAa,SAAS,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EACnE,gBAAgB,GAAG,aAAa,EAChC,UAAU,SAAS,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAC1D,UAAU,SAAS,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAC5D,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE;QACP,aAAa,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC,CAAC;QACjE,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,aAAa,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACxE,gBAAgB,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACvE,UAAU,CAAC,EAAE,GAAG,CAAC;QACjB,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,gBAAgB,CAAC;QAC/D,aAAa,CAAC,EAAE,gBAAgB,CAAC;QACjC,UAAU,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3D,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAClE,UAAU,CAAC,EAAE,gBAAgB,CAAC;QAC9B,UAAU,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3D,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAClE,UAAU,CAAC,EAAE,gBAAgB,CAAC;KACjC,CAAC;IACF,QAAQ,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,IAAI,CAAC,EAAE,OAAO,CAAC;KAClB,CAAA;CACJ;;;;;;;;;;;;;;;2BAhBmC,UAAU,CAAC,aAAa,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;wBAG3C,aAAa,KAAK,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAGrC,UAAU,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;2BAGxC,UAAU,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;;;;KAwExE"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.configureCollections = configureCollections;
37
+ exports.createCmsProviders = createCmsProviders;
38
+ const models = __importStar(require("@trailmixcms/models"));
39
+ const constants_1 = require("./constants");
40
+ const constants_2 = require("./constants");
41
+ const db_1 = require("@trailmixcms/db");
42
+ const collections_1 = require("./collections");
43
+ function configureCollections(options) {
44
+ return {
45
+ collectionNames: [
46
+ constants_2.CMSCollectionName.Account,
47
+ ...(options?.features?.file ? [constants_2.CMSCollectionName.File] : []),
48
+ ...(options?.features?.text ? [constants_2.CMSCollectionName.Text] : []),
49
+ ],
50
+ collections: [
51
+ collections_1.AccountCollection,
52
+ ...(options?.features?.file ? [collections_1.FileCollection] : []),
53
+ ...(options?.features?.text ? [collections_1.TextCollection] : []),
54
+ ],
55
+ };
56
+ }
57
+ function createCmsProviders(options) {
58
+ const mongodbCollectionProviders = Object.values([
59
+ constants_2.CMSCollectionName.Account,
60
+ ...(options?.features?.file ? [constants_2.CMSCollectionName.File] : []),
61
+ ...(options?.features?.text ? [constants_2.CMSCollectionName.Text] : []),
62
+ ]).map(collectionName => (0, db_1.collectionFactory)(collectionName));
63
+ const defaultCollectionConfig = {
64
+ disableDefaultIndexes: false
65
+ };
66
+ return [
67
+ ...mongodbCollectionProviders,
68
+ // Account
69
+ {
70
+ provide: constants_1.PROVIDER_SYMBOLS.TRAILMIXCMS_CMS_ACCOUNT_SCHEMA,
71
+ useValue: options?.entities?.accountSchema ?? models.Account.entitySchema
72
+ },
73
+ {
74
+ provide: constants_1.PROVIDER_SYMBOLS.TRAILMIXCMS_CMS_ACCOUNT_SETUP,
75
+ useValue: options?.entities?.accountSetup ?? (async (collection) => { })
76
+ },
77
+ {
78
+ provide: constants_1.PROVIDER_SYMBOLS.TRAILMIXCMS_CMS_ACCOUNT_CONFIG,
79
+ useValue: options?.entities?.accountConfig ?? defaultCollectionConfig
80
+ },
81
+ {
82
+ provide: constants_1.PROVIDER_SYMBOLS.TRAILMIXCMS_CMS_ACCOUNT_DTO_SCHEMA,
83
+ useValue: options?.entities?.accountDtoSchema ?? models.Account.entitySchema
84
+ },
85
+ {
86
+ provide: constants_1.PROVIDER_SYMBOLS.TRAILMIXCMS_CMS_ACCOUNT_MAP_ENTITY,
87
+ useValue: options?.entities?.accountMapEntity ?? (entity => entity)
88
+ },
89
+ // File
90
+ ...(options?.features?.file ? [
91
+ {
92
+ provide: constants_1.PROVIDER_SYMBOLS.TRAILMIXCMS_CMS_FILE_SCHEMA,
93
+ useValue: options?.entities?.fileSchema ?? models.File.entitySchema
94
+ },
95
+ {
96
+ provide: constants_1.PROVIDER_SYMBOLS.TRAILMIXCMS_CMS_FILE_SETUP,
97
+ useValue: options?.entities?.fileSetup ?? (async (collection) => { })
98
+ },
99
+ {
100
+ provide: constants_1.PROVIDER_SYMBOLS.TRAILMIXCMS_CMS_FILE_CONFIG,
101
+ useValue: options?.entities?.fileConfig ?? defaultCollectionConfig
102
+ },
103
+ ] : []),
104
+ // Text
105
+ ...(options?.features?.text ? [
106
+ {
107
+ provide: constants_1.PROVIDER_SYMBOLS.TRAILMIXCMS_CMS_TEXT_SCHEMA,
108
+ useValue: options?.entities?.textSchema ?? models.Text.entitySchema
109
+ },
110
+ {
111
+ provide: constants_1.PROVIDER_SYMBOLS.TRAILMIXCMS_CMS_TEXT_SETUP,
112
+ useValue: options?.entities?.textSetup ?? (async (collection) => { })
113
+ },
114
+ {
115
+ provide: constants_1.PROVIDER_SYMBOLS.TRAILMIXCMS_CMS_TEXT_CONFIG,
116
+ useValue: options?.entities?.textConfig ?? defaultCollectionConfig
117
+ },
118
+ ] : []),
119
+ ...configureCollections(options).collections,
120
+ ];
121
+ }
122
+ //# sourceMappingURL=cms.providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cms.providers.js","sourceRoot":"","sources":["../src/cms.providers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { Collection, OptionalUnlessRequiredId } from 'mongodb';
2
+ import { OnModuleInit } from '@nestjs/common';
3
+ import { ZodType } from 'zod';
4
+ import { Account } from '@trailmixcms/models';
5
+ import { Collections, DatabaseService, AuditedCollection } from '@trailmixcms/db';
6
+ import { CollectionConfig } from '../types/collection-config';
7
+ type Record = Account.Entity;
8
+ export declare class AccountCollection<T extends Record = Record> extends AuditedCollection<T> implements OnModuleInit {
9
+ protected readonly entitySchema: ZodType<OptionalUnlessRequiredId<T>>;
10
+ protected readonly setup: (collection: Collection<T>) => Promise<void>;
11
+ protected readonly config: CollectionConfig;
12
+ private readonly logger;
13
+ protected readonly collectionName: "account";
14
+ constructor(entitySchema: ZodType<OptionalUnlessRequiredId<T>>, setup: (collection: Collection<T>) => Promise<void>, config: CollectionConfig, collection: Collection<T>, databaseService: DatabaseService, auditCollection: Collections.AuditCollection);
15
+ onModuleInit(): Promise<void>;
16
+ }
17
+ export {};
18
+ //# sourceMappingURL=account.collection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.collection.d.ts","sourceRoot":"","sources":["../../src/collections/account.collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAA8B,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAsB,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGtG,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;AAG5B,qBACa,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,iBAAiB,CAAC,CAAC,CAAE,YAAW,YAAY;IAK7C,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IACtE,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;IACrE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB;IANxG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,SAAS,CAAC,QAAQ,CAAC,cAAc,YAAkB;gBAG6B,YAAY,EAAE,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EACnD,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EAClD,MAAM,EAAE,gBAAgB,EAChE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAC7D,eAAe,EAAE,eAAe,EAChC,eAAe,EAAE,WAAW,CAAC,eAAe;IAK1C,YAAY;CAOrB"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.AccountCollection = void 0;
16
+ const mongodb_1 = require("mongodb");
17
+ const common_1 = require("@nestjs/common");
18
+ const zod_1 = require("zod");
19
+ const db_1 = require("@trailmixcms/db");
20
+ const constants_1 = require("../constants");
21
+ const collectionName = constants_1.CMSCollectionName.Account;
22
+ let AccountCollection = class AccountCollection extends db_1.AuditedCollection {
23
+ entitySchema;
24
+ setup;
25
+ config;
26
+ logger = new common_1.Logger(this.constructor.name);
27
+ collectionName = collectionName;
28
+ constructor(entitySchema, setup, config, collection, databaseService, auditCollection) {
29
+ super(collection, databaseService, auditCollection);
30
+ this.entitySchema = entitySchema;
31
+ this.setup = setup;
32
+ this.config = config;
33
+ }
34
+ async onModuleInit() {
35
+ this.logger.verbose(`creating custom indexes for collection_${collectionName}`);
36
+ if (!this.config.disableDefaultIndexes) {
37
+ await this.collection.createIndex({ user_id: 1 }, { unique: true, sparse: true });
38
+ }
39
+ await this.setup(this.collection);
40
+ }
41
+ };
42
+ exports.AccountCollection = AccountCollection;
43
+ exports.AccountCollection = AccountCollection = __decorate([
44
+ (0, common_1.Injectable)(),
45
+ __param(0, (0, common_1.Inject)(constants_1.PROVIDER_SYMBOLS.TRAILMIXCMS_CMS_ACCOUNT_SCHEMA)),
46
+ __param(1, (0, common_1.Inject)(constants_1.PROVIDER_SYMBOLS.TRAILMIXCMS_CMS_ACCOUNT_SETUP)),
47
+ __param(2, (0, common_1.Inject)(constants_1.PROVIDER_SYMBOLS.TRAILMIXCMS_CMS_ACCOUNT_CONFIG)),
48
+ __param(3, (0, db_1.DocumentCollection)(collectionName)),
49
+ __metadata("design:paramtypes", [zod_1.ZodType, Function, Object, mongodb_1.Collection,
50
+ db_1.DatabaseService, db_1.Collections.AuditCollection])
51
+ ], AccountCollection);
52
+ //# sourceMappingURL=account.collection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.collection.js","sourceRoot":"","sources":["../../src/collections/account.collection.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,qCAA+D;AAC/D,2CAA0E;AAC1E,6BAA8B;AAE9B,wCAAsG;AAEtG,4CAAmE;AAInE,MAAM,cAAc,GAAG,6BAAiB,CAAC,OAAO,CAAC;AAG1C,IAAM,iBAAiB,GAAvB,MAAM,iBAA6C,SAAQ,sBAAoB;IAKF;IACD;IACC;IAN/D,MAAM,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACzC,cAAc,GAAG,cAAc,CAAC;IAEnD,YACgF,YAAkD,EACnD,KAAmD,EAClD,MAAwB,EAChE,UAAyB,EAC7D,eAAgC,EAChC,eAA4C;QAE5C,KAAK,CAAC,UAAU,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;QAPwB,iBAAY,GAAZ,YAAY,CAAsC;QACnD,UAAK,GAAL,KAAK,CAA8C;QAClD,WAAM,GAAN,MAAM,CAAkB;IAMxG,CAAC;IAED,KAAK,CAAC,YAAY;QACd,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,0CAA0C,cAAc,EAAE,CAAC,CAAA;QAC/E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;CACJ,CAAA;AAtBY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;IAMJ,WAAA,IAAA,eAAM,EAAC,4BAAgB,CAAC,8BAA8B,CAAC,CAAA;IACvD,WAAA,IAAA,eAAM,EAAC,4BAAgB,CAAC,6BAA6B,CAAC,CAAA;IACtD,WAAA,IAAA,eAAM,EAAC,4BAAgB,CAAC,8BAA8B,CAAC,CAAA;IACvD,WAAA,IAAA,uBAAkB,EAAC,cAAc,CAAC,CAAA;qCAHuD,aAAO,oBAGjD,oBAAU;QACzC,oBAAe,EACf,gBAAW,CAAC,eAAe;GAVvC,iBAAiB,CAsB7B"}
@@ -0,0 +1,21 @@
1
+ import { Collection, OptionalUnlessRequiredId } from 'mongodb';
2
+ import { OnModuleInit } from '@nestjs/common';
3
+ import { File } from '@trailmixcms/models';
4
+ import { ZodType } from 'zod';
5
+ import { Collections, DatabaseService, AuditedCollection } from '@trailmixcms/db';
6
+ import { CollectionConfig } from '../types/collection-config';
7
+ type Record = File.Entity;
8
+ export declare class FileCollection<T extends Record = Record> extends AuditedCollection<T> implements OnModuleInit {
9
+ protected readonly entitySchema: ZodType<OptionalUnlessRequiredId<T>>;
10
+ protected readonly setup: (colection: Collection<T>) => Promise<void>;
11
+ protected readonly config: CollectionConfig;
12
+ protected readonly collection: Collection<T>;
13
+ protected readonly databaseService: DatabaseService;
14
+ protected readonly auditCollection: Collections.AuditCollection;
15
+ private readonly logger;
16
+ readonly collectionName: "file";
17
+ constructor(entitySchema: ZodType<OptionalUnlessRequiredId<T>>, setup: (colection: Collection<T>) => Promise<void>, config: CollectionConfig, collection: Collection<T>, databaseService: DatabaseService, auditCollection: Collections.AuditCollection);
18
+ onModuleInit(): Promise<void>;
19
+ }
20
+ export {};
21
+ //# sourceMappingURL=file.collection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.collection.d.ts","sourceRoot":"","sources":["../../src/collections/file.collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAA8B,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAsB,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEtG,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;AAGzB,qBACa,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,iBAAiB,CAAC,CAAC,CAAE,YAAW,YAAY;IAK7C,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IACtE,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;IACpE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB;IAC7D,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAChF,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe;IACnD,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,eAAe;IATnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,SAAgB,cAAc,SAAkB;gBAG6B,YAAY,EAAE,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EACnD,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EACjD,MAAM,EAAE,gBAAgB,EAC1C,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAC7D,eAAe,EAAE,eAAe,EAChC,eAAe,EAAE,WAAW,CAAC,eAAe;IAK7D,YAAY;CAQrB"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.FileCollection = void 0;
16
+ const mongodb_1 = require("mongodb");
17
+ const common_1 = require("@nestjs/common");
18
+ const zod_1 = require("zod");
19
+ const db_1 = require("@trailmixcms/db");
20
+ const constants_1 = require("../constants");
21
+ const collectionName = constants_1.CMSCollectionName.File;
22
+ let FileCollection = class FileCollection extends db_1.AuditedCollection {
23
+ entitySchema;
24
+ setup;
25
+ config;
26
+ collection;
27
+ databaseService;
28
+ auditCollection;
29
+ logger = new common_1.Logger(this.constructor.name);
30
+ collectionName = collectionName;
31
+ constructor(entitySchema, setup, config, collection, databaseService, auditCollection) {
32
+ super(collection, databaseService, auditCollection);
33
+ this.entitySchema = entitySchema;
34
+ this.setup = setup;
35
+ this.config = config;
36
+ this.collection = collection;
37
+ this.databaseService = databaseService;
38
+ this.auditCollection = auditCollection;
39
+ }
40
+ async onModuleInit() {
41
+ this.logger.verbose(`creating custom indexes for collection_${collectionName}`);
42
+ if (!this.config.disableDefaultIndexes) {
43
+ await this.collection.createIndex({ external_id: 1 });
44
+ await this.collection.createIndex({ guid: 1 }, { unique: true, sparse: true });
45
+ }
46
+ await this.setup(this.collection);
47
+ }
48
+ };
49
+ exports.FileCollection = FileCollection;
50
+ exports.FileCollection = FileCollection = __decorate([
51
+ (0, common_1.Injectable)(),
52
+ __param(0, (0, common_1.Inject)(constants_1.PROVIDER_SYMBOLS.TRAILMIXCMS_CMS_FILE_SCHEMA)),
53
+ __param(1, (0, common_1.Inject)(constants_1.PROVIDER_SYMBOLS.TRAILMIXCMS_CMS_FILE_SETUP)),
54
+ __param(2, (0, common_1.Inject)(constants_1.PROVIDER_SYMBOLS.TRAILMIXCMS_CMS_FILE_CONFIG)),
55
+ __param(3, (0, db_1.DocumentCollection)(collectionName)),
56
+ __metadata("design:paramtypes", [zod_1.ZodType, Function, Object, mongodb_1.Collection,
57
+ db_1.DatabaseService, db_1.Collections.AuditCollection])
58
+ ], FileCollection);
59
+ //# sourceMappingURL=file.collection.js.map