@forklaunch/implementation-iam-base 0.1.12 → 0.1.13

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 (75) hide show
  1. package/lib/__test__/schemaEquality.test.d.ts +2 -0
  2. package/lib/__test__/schemaEquality.test.d.ts.map +1 -0
  3. package/lib/__test__/schemaEquality.test.js +183 -0
  4. package/lib/eject/domain/schemas/index.ts +4 -0
  5. package/lib/eject/domain/schemas/organization.schema.ts +53 -0
  6. package/lib/eject/domain/schemas/permission.schema.ts +36 -0
  7. package/lib/eject/domain/schemas/role.schema.ts +37 -0
  8. package/lib/eject/domain/schemas/user.schema.ts +53 -0
  9. package/lib/eject/services/index.ts +4 -0
  10. package/lib/eject/services/organization.service.ts +143 -0
  11. package/lib/eject/services/permission.service.ts +345 -0
  12. package/lib/eject/services/role.service.ts +179 -0
  13. package/lib/eject/services/user.service.ts +224 -0
  14. package/lib/jest.config.d.ts +4 -0
  15. package/lib/jest.config.d.ts.map +1 -0
  16. package/lib/jest.config.js +19 -0
  17. package/lib/schemas/index.d.ts +5 -0
  18. package/lib/schemas/index.d.ts.map +1 -0
  19. package/lib/schemas/index.js +4 -0
  20. package/lib/schemas/organization.schema.d.ts +200 -0
  21. package/lib/schemas/organization.schema.d.ts.map +1 -0
  22. package/lib/schemas/organization.schema.js +4 -0
  23. package/lib/schemas/permission.schema.d.ts +50 -0
  24. package/lib/schemas/permission.schema.d.ts.map +1 -0
  25. package/lib/schemas/permission.schema.js +4 -0
  26. package/lib/schemas/role.schema.d.ts +74 -0
  27. package/lib/schemas/role.schema.d.ts.map +1 -0
  28. package/lib/schemas/role.schema.js +4 -0
  29. package/lib/schemas/typebox/organization.schema.d.ts +112 -0
  30. package/lib/schemas/typebox/organization.schema.d.ts.map +1 -0
  31. package/lib/schemas/typebox/organization.schema.js +34 -0
  32. package/lib/schemas/typebox/permission.schema.d.ts +47 -0
  33. package/lib/schemas/typebox/permission.schema.d.ts.map +1 -0
  34. package/lib/schemas/typebox/permission.schema.js +25 -0
  35. package/lib/schemas/typebox/role.schema.d.ts +59 -0
  36. package/lib/schemas/typebox/role.schema.d.ts.map +1 -0
  37. package/lib/schemas/typebox/role.schema.js +26 -0
  38. package/lib/schemas/typebox/user.schema.d.ts +103 -0
  39. package/lib/schemas/typebox/user.schema.d.ts.map +1 -0
  40. package/lib/schemas/typebox/user.schema.js +41 -0
  41. package/lib/schemas/user.schema.d.ts +144 -0
  42. package/lib/schemas/user.schema.d.ts.map +1 -0
  43. package/lib/schemas/user.schema.js +4 -0
  44. package/lib/schemas/zod/organization.schema.d.ts +284 -0
  45. package/lib/schemas/zod/organization.schema.d.ts.map +1 -0
  46. package/lib/schemas/zod/organization.schema.js +34 -0
  47. package/lib/schemas/zod/permission.schema.d.ts +47 -0
  48. package/lib/schemas/zod/permission.schema.d.ts.map +1 -0
  49. package/lib/schemas/zod/permission.schema.js +25 -0
  50. package/lib/schemas/zod/role.schema.d.ts +83 -0
  51. package/lib/schemas/zod/role.schema.d.ts.map +1 -0
  52. package/lib/schemas/zod/role.schema.js +26 -0
  53. package/lib/schemas/zod/user.schema.d.ts +179 -0
  54. package/lib/schemas/zod/user.schema.d.ts.map +1 -0
  55. package/lib/schemas/zod/user.schema.js +41 -0
  56. package/lib/services/index.d.ts +5 -0
  57. package/lib/services/index.d.ts.map +1 -0
  58. package/lib/services/index.js +4 -0
  59. package/lib/services/organization.service.d.ts +45 -0
  60. package/lib/services/organization.service.d.ts.map +1 -0
  61. package/lib/services/organization.service.js +35 -0
  62. package/lib/services/permission.service.d.ts +62 -0
  63. package/lib/services/permission.service.d.ts.map +1 -0
  64. package/lib/services/permission.service.js +159 -0
  65. package/lib/services/role.service.d.ts +49 -0
  66. package/lib/services/role.service.d.ts.map +1 -0
  67. package/lib/services/role.service.js +57 -0
  68. package/lib/services/user.service.d.ts +54 -0
  69. package/lib/services/user.service.d.ts.map +1 -0
  70. package/lib/services/user.service.js +85 -0
  71. package/lib/tsconfig.tsbuildinfo +1 -0
  72. package/lib/vitest.config.d.ts +3 -0
  73. package/lib/vitest.config.d.ts.map +1 -0
  74. package/lib/vitest.config.js +7 -0
  75. package/package.json +2 -2
@@ -0,0 +1,224 @@
1
+ import {
2
+ OrganizationService,
3
+ RoleService,
4
+ UserService
5
+ } from '@forklaunch/interfaces-iam/interfaces';
6
+
7
+ import { IdDto, IdsDto, InstanceTypeRecord } from '@forklaunch/common';
8
+ import {
9
+ InternalDtoMapper,
10
+ RequestDtoMapperConstructor,
11
+ ResponseDtoMapperConstructor,
12
+ transformIntoInternalDtoMapper
13
+ } from '@forklaunch/core/mappers';
14
+ import {
15
+ MetricsDefinition,
16
+ OpenTelemetryCollector
17
+ } from '@forklaunch/core/http';
18
+ import { MapNestedDtoArraysToCollections } from '@forklaunch/core/services';
19
+ import {
20
+ CreateUserDto,
21
+ UpdateUserDto,
22
+ UserDto
23
+ } from '@forklaunch/interfaces-iam/types';
24
+ import { AnySchemaValidator } from '@forklaunch/validator';
25
+ import { EntityManager } from '@mikro-orm/core';
26
+
27
+ export class BaseUserService<
28
+ SchemaValidator extends AnySchemaValidator,
29
+ OrganizationStatus,
30
+ Metrics extends MetricsDefinition = MetricsDefinition,
31
+ Dto extends {
32
+ UserDtoMapper: UserDto;
33
+ CreateUserDtoMapper: CreateUserDto;
34
+ UpdateUserDtoMapper: UpdateUserDto;
35
+ } = {
36
+ UserDtoMapper: UserDto;
37
+ CreateUserDtoMapper: CreateUserDto;
38
+ UpdateUserDtoMapper: UpdateUserDto;
39
+ },
40
+ Entities extends {
41
+ UserDtoMapper: MapNestedDtoArraysToCollections<UserDto, 'roles'>;
42
+ CreateUserDtoMapper: MapNestedDtoArraysToCollections<UserDto, 'roles'>;
43
+ UpdateUserDtoMapper: MapNestedDtoArraysToCollections<UserDto, 'roles'>;
44
+ } = {
45
+ UserDtoMapper: MapNestedDtoArraysToCollections<UserDto, 'roles'>;
46
+ CreateUserDtoMapper: MapNestedDtoArraysToCollections<UserDto, 'roles'>;
47
+ UpdateUserDtoMapper: MapNestedDtoArraysToCollections<UserDto, 'roles'>;
48
+ }
49
+ > implements UserService
50
+ {
51
+ #mapperss: InternalDtoMapper<
52
+ InstanceTypeRecord<typeof this.mapperss>,
53
+ Entities,
54
+ Dto
55
+ >;
56
+
57
+ constructor(
58
+ public em: EntityManager,
59
+ protected passwordEncryptionPublicKeyPath: string,
60
+ protected roleServiceFactory: () => RoleService,
61
+ protected organizationServiceFactory: () => OrganizationService<OrganizationStatus>,
62
+ protected openTelemetryCollector: OpenTelemetryCollector<Metrics>,
63
+ protected schemaValidator: SchemaValidator,
64
+ protected mapperss: {
65
+ UserDtoMapper: ResponseDtoMapperConstructor<
66
+ SchemaValidator,
67
+ Dto['UserDtoMapper'],
68
+ Entities['UserDtoMapper']
69
+ >;
70
+ CreateUserDtoMapper: RequestDtoMapperConstructor<
71
+ SchemaValidator,
72
+ Dto['CreateUserDtoMapper'],
73
+ Entities['CreateUserDtoMapper'],
74
+ (
75
+ dto: never,
76
+ passwordEncryptionPublicKeyPath: string
77
+ ) => Entities['UpdateUserDtoMapper']
78
+ >;
79
+ UpdateUserDtoMapper: RequestDtoMapperConstructor<
80
+ SchemaValidator,
81
+ Dto['UpdateUserDtoMapper'],
82
+ Entities['UpdateUserDtoMapper'],
83
+ (
84
+ dto: never,
85
+ passwordEncryptionPublicKeyPath: string
86
+ ) => Entities['UpdateUserDtoMapper']
87
+ >;
88
+ }
89
+ ) {
90
+ this.#mapperss = transformIntoInternalDtoMapper(mapperss, schemaValidator);
91
+ }
92
+
93
+ async createUser(
94
+ userDto: Dto['CreateUserDtoMapper'],
95
+ em?: EntityManager
96
+ ): Promise<Dto['UserDtoMapper']> {
97
+ const user =
98
+ await this.#mapperss.CreateUserDtoMapper.deserializeDtoToEntity(
99
+ userDto,
100
+ this.passwordEncryptionPublicKeyPath
101
+ );
102
+ ((await em) ?? this.em).transactional(async (em) => {
103
+ await em.persist(user);
104
+ });
105
+ return this.#mapperss.UserDtoMapper.serializeEntityToDto(user);
106
+ }
107
+
108
+ async createBatchUsers(
109
+ userDtos: Dto['CreateUserDtoMapper'][],
110
+ em?: EntityManager
111
+ ): Promise<Dto['UserDtoMapper'][]> {
112
+ const users = await Promise.all(
113
+ userDtos.map(async (createUserDto) =>
114
+ this.#mapperss.CreateUserDtoMapper.deserializeDtoToEntity(
115
+ createUserDto,
116
+ this.passwordEncryptionPublicKeyPath
117
+ )
118
+ )
119
+ );
120
+ await (em ?? this.em).transactional(async (em) => {
121
+ await em.persist(users);
122
+ });
123
+
124
+ return users.map((user) =>
125
+ this.#mapperss.UserDtoMapper.serializeEntityToDto(user)
126
+ );
127
+ }
128
+
129
+ async getUser(
130
+ idDto: IdDto,
131
+ em?: EntityManager
132
+ ): Promise<Dto['UserDtoMapper']> {
133
+ const user = await (em ?? this.em).findOneOrFail('User', idDto, {
134
+ populate: ['id', '*']
135
+ });
136
+ return this.#mapperss.UserDtoMapper.serializeEntityToDto(
137
+ user as Entities['UserDtoMapper']
138
+ );
139
+ }
140
+
141
+ async getBatchUsers(
142
+ idsDto: IdsDto,
143
+ em?: EntityManager
144
+ ): Promise<Dto['UserDtoMapper'][]> {
145
+ return (
146
+ await (em ?? this.em).find('User', idsDto, {
147
+ populate: ['id', '*']
148
+ })
149
+ ).map((user) =>
150
+ this.#mapperss.UserDtoMapper.serializeEntityToDto(
151
+ user as Entities['UserDtoMapper']
152
+ )
153
+ );
154
+ }
155
+
156
+ async updateUser(
157
+ userDto: Dto['UpdateUserDtoMapper'],
158
+ em?: EntityManager
159
+ ): Promise<Dto['UserDtoMapper']> {
160
+ let user = this.#mapperss.UpdateUserDtoMapper.deserializeDtoToEntity(
161
+ userDto,
162
+ this.passwordEncryptionPublicKeyPath
163
+ );
164
+ await (em ?? this.em).transactional(async (localEm) => {
165
+ user = await localEm.upsert(user);
166
+ });
167
+ return this.#mapperss.UserDtoMapper.serializeEntityToDto(user);
168
+ }
169
+
170
+ async updateBatchUsers(
171
+ userDtos: UpdateUserDto[],
172
+ em?: EntityManager
173
+ ): Promise<Dto['UserDtoMapper'][]> {
174
+ let users = await Promise.all(
175
+ userDtos.map(async (updateUserDto) =>
176
+ this.#mapperss.UpdateUserDtoMapper.deserializeDtoToEntity(
177
+ updateUserDto,
178
+ this.passwordEncryptionPublicKeyPath
179
+ )
180
+ )
181
+ );
182
+ await (em ?? this.em).transactional(async (localEm) => {
183
+ users = await localEm.upsertMany(users);
184
+ });
185
+ return users.map((user) =>
186
+ this.#mapperss.UserDtoMapper.serializeEntityToDto(user)
187
+ );
188
+ }
189
+
190
+ async deleteUser(idDto: IdDto, em?: EntityManager): Promise<void> {
191
+ const entityManager = em || this.em;
192
+ await entityManager.nativeDelete('User', idDto);
193
+ }
194
+
195
+ async deleteBatchUsers(idsDto: IdsDto, em?: EntityManager): Promise<void> {
196
+ const entityManager = em || this.em;
197
+ await entityManager.nativeDelete('User', idsDto);
198
+ }
199
+
200
+ async verifyHasRole(idDto: IdDto, roleId: string): Promise<void> {
201
+ const user = await this.getUser(idDto);
202
+ if (
203
+ user.roles.filter((role) => {
204
+ return roleId == role.id;
205
+ }).length === 0
206
+ ) {
207
+ throw new Error(`User ${idDto.id} does not have role ${roleId}`);
208
+ }
209
+ }
210
+
211
+ async verifyHasPermission(idDto: IdDto, permissionId: string): Promise<void> {
212
+ const user = await this.getUser(idDto);
213
+ if (
214
+ user.roles
215
+ .map((role) => role.permissions.map((permission) => permission.id))
216
+ .flat()
217
+ .filter((id) => id == permissionId).length === 0
218
+ ) {
219
+ throw new Error(
220
+ `User ${idDto.id} does not have permission ${permissionId}`
221
+ );
222
+ }
223
+ }
224
+ }
@@ -0,0 +1,4 @@
1
+ import type { JestConfigWithTsJest } from 'ts-jest';
2
+ declare const jestConfig: JestConfigWithTsJest;
3
+ export default jestConfig;
4
+ //# sourceMappingURL=jest.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.config.d.ts","sourceRoot":"","sources":["../jest.config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,QAAA,MAAM,UAAU,EAAE,oBAiBjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,19 @@
1
+ const jestConfig = {
2
+ preset: 'ts-jest/presets/default-esm', // or other ESM presets
3
+ moduleNameMapper: {
4
+ '^(\\.{1,2}/.*)\\.js$': '$1'
5
+ },
6
+ transform: {
7
+ // '^.+\\.[tj]sx?$' to process ts,js,tsx,jsx with `ts-jest`
8
+ // '^.+\\.m?[tj]sx?$' to process ts,js,tsx,jsx,mts,mjs,mtsx,mjsx with `ts-jest`
9
+ '^.+\\.[tj]sx?$': [
10
+ 'ts-jest',
11
+ {
12
+ useESM: true
13
+ }
14
+ ],
15
+ '^.+\\.js$': 'babel-jest'
16
+ },
17
+ testPathIgnorePatterns: ['.*dist/', '.*node_modules/']
18
+ };
19
+ export default jestConfig;
@@ -0,0 +1,5 @@
1
+ export * from './organization.schema';
2
+ export * from './permission.schema';
3
+ export * from './role.schema';
4
+ export * from './user.schema';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './organization.schema';
2
+ export * from './permission.schema';
3
+ export * from './role.schema';
4
+ export * from './user.schema';
@@ -0,0 +1,200 @@
1
+ export declare const BaseOrganizationServiceSchemas: <SchemaValidator extends import("@forklaunch/validator").AnySchemaValidator>(options: {
2
+ uuidId: boolean;
3
+ } & {
4
+ validator: SchemaValidator;
5
+ }) => import("@forklaunch/core/mappers").SchemasByValidator<SchemaValidator, (options: {
6
+ uuidId: boolean;
7
+ }) => {
8
+ CreateOrganizationSchema: {
9
+ name: import("@sinclair/typebox").TString;
10
+ domain: import("@sinclair/typebox").TString;
11
+ subscription: import("@sinclair/typebox").TString;
12
+ logoUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
13
+ extraFields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
14
+ };
15
+ UpdateOrganizationSchema: {
16
+ id: import("@sinclair/typebox").TString;
17
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
18
+ domain: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
19
+ subscription: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
20
+ logoUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
21
+ extraFields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
22
+ };
23
+ OrganizationSchema: <OrganizationStatus extends Record<string, import("@forklaunch/validator").LiteralSchema>>(organizationStatus: OrganizationStatus) => {
24
+ id: import("@sinclair/typebox").TString;
25
+ name: import("@sinclair/typebox").TString;
26
+ users: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
27
+ id: import("@sinclair/typebox").TString;
28
+ email: import("@sinclair/typebox").TString;
29
+ firstName: import("@sinclair/typebox").TString;
30
+ lastName: import("@sinclair/typebox").TString;
31
+ roles: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
32
+ id: import("@sinclair/typebox").TString;
33
+ name: import("@sinclair/typebox").TString;
34
+ permissions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
35
+ id: import("@sinclair/typebox").TString;
36
+ slug: import("@sinclair/typebox").TString;
37
+ extraFields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
38
+ createdAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TDate, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TString, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>, Date>>;
39
+ updatedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TDate, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TString, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>, Date>>;
40
+ }>>;
41
+ extraFields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
42
+ createdAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TDate, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TString, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>, Date>>;
43
+ updatedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TDate, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TString, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>, Date>>;
44
+ }>>;
45
+ phoneNumber: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
46
+ subscription: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
47
+ extraFields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
48
+ createdAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TDate, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TString, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>, Date>>;
49
+ updatedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TDate, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TString, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>, Date>>;
50
+ }>>;
51
+ domain: import("@sinclair/typebox").TString;
52
+ subscription: import("@sinclair/typebox").TString;
53
+ status: import("@sinclair/typebox").TUnion<[{ [K in keyof OrganizationStatus]: import("@sinclair/typebox").TLiteral<OrganizationStatus[K]>; }[keyof OrganizationStatus]]>;
54
+ logoUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
55
+ extraFields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
56
+ createdAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TDate, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TString, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>, Date>>;
57
+ updatedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TDate, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TString, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>, Date>>;
58
+ };
59
+ }, (options: {
60
+ uuidId: boolean;
61
+ }) => {
62
+ CreateOrganizationSchema: {
63
+ name: import("zod").ZodString;
64
+ domain: import("zod").ZodString;
65
+ subscription: import("zod").ZodString;
66
+ logoUrl: import("zod").ZodOptional<import("zod").ZodString>;
67
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
68
+ };
69
+ UpdateOrganizationSchema: {
70
+ id: import("zod").ZodString;
71
+ name: import("zod").ZodOptional<import("zod").ZodString>;
72
+ domain: import("zod").ZodOptional<import("zod").ZodString>;
73
+ subscription: import("zod").ZodOptional<import("zod").ZodString>;
74
+ logoUrl: import("zod").ZodOptional<import("zod").ZodString>;
75
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
76
+ };
77
+ OrganizationSchema: <OrganizationStatus extends Record<string, import("@forklaunch/validator").LiteralSchema>>(organizationStatus: OrganizationStatus) => {
78
+ id: import("zod").ZodString;
79
+ name: import("zod").ZodString;
80
+ users: import("zod").ZodArray<import("zod").ZodObject<{
81
+ id: import("zod").ZodString;
82
+ email: import("zod").ZodString;
83
+ firstName: import("zod").ZodString;
84
+ lastName: import("zod").ZodString;
85
+ roles: import("zod").ZodArray<import("zod").ZodObject<{
86
+ id: import("zod").ZodString;
87
+ name: import("zod").ZodString;
88
+ permissions: import("zod").ZodArray<import("zod").ZodObject<{
89
+ id: import("zod").ZodString;
90
+ slug: import("zod").ZodString;
91
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
92
+ createdAt: import("zod").ZodOptional<import("zod").ZodDate>;
93
+ updatedAt: import("zod").ZodOptional<import("zod").ZodDate>;
94
+ }, import("zod").UnknownKeysParam, import("zod").ZodTypeAny, {
95
+ id: string;
96
+ slug: string;
97
+ extraFields?: unknown;
98
+ createdAt?: Date | undefined;
99
+ updatedAt?: Date | undefined;
100
+ }, {
101
+ id: string;
102
+ slug: string;
103
+ extraFields?: unknown;
104
+ createdAt?: Date | undefined;
105
+ updatedAt?: Date | undefined;
106
+ }>, "many">;
107
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
108
+ createdAt: import("zod").ZodOptional<import("zod").ZodDate>;
109
+ updatedAt: import("zod").ZodOptional<import("zod").ZodDate>;
110
+ }, import("zod").UnknownKeysParam, import("zod").ZodTypeAny, {
111
+ id: string;
112
+ name: string;
113
+ permissions: {
114
+ id: string;
115
+ slug: string;
116
+ extraFields?: unknown;
117
+ createdAt?: Date | undefined;
118
+ updatedAt?: Date | undefined;
119
+ }[];
120
+ extraFields?: unknown;
121
+ createdAt?: Date | undefined;
122
+ updatedAt?: Date | undefined;
123
+ }, {
124
+ id: string;
125
+ name: string;
126
+ permissions: {
127
+ id: string;
128
+ slug: string;
129
+ extraFields?: unknown;
130
+ createdAt?: Date | undefined;
131
+ updatedAt?: Date | undefined;
132
+ }[];
133
+ extraFields?: unknown;
134
+ createdAt?: Date | undefined;
135
+ updatedAt?: Date | undefined;
136
+ }>, "many">;
137
+ phoneNumber: import("zod").ZodOptional<import("zod").ZodString>;
138
+ subscription: import("zod").ZodOptional<import("zod").ZodString>;
139
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
140
+ createdAt: import("zod").ZodOptional<import("zod").ZodDate>;
141
+ updatedAt: import("zod").ZodOptional<import("zod").ZodDate>;
142
+ }, import("zod").UnknownKeysParam, import("zod").ZodTypeAny, {
143
+ id: string;
144
+ email: string;
145
+ firstName: string;
146
+ lastName: string;
147
+ roles: {
148
+ id: string;
149
+ name: string;
150
+ permissions: {
151
+ id: string;
152
+ slug: string;
153
+ extraFields?: unknown;
154
+ createdAt?: Date | undefined;
155
+ updatedAt?: Date | undefined;
156
+ }[];
157
+ extraFields?: unknown;
158
+ createdAt?: Date | undefined;
159
+ updatedAt?: Date | undefined;
160
+ }[];
161
+ extraFields?: unknown;
162
+ createdAt?: Date | undefined;
163
+ updatedAt?: Date | undefined;
164
+ phoneNumber?: string | undefined;
165
+ subscription?: string | undefined;
166
+ }, {
167
+ id: string;
168
+ email: string;
169
+ firstName: string;
170
+ lastName: string;
171
+ roles: {
172
+ id: string;
173
+ name: string;
174
+ permissions: {
175
+ id: string;
176
+ slug: string;
177
+ extraFields?: unknown;
178
+ createdAt?: Date | undefined;
179
+ updatedAt?: Date | undefined;
180
+ }[];
181
+ extraFields?: unknown;
182
+ createdAt?: Date | undefined;
183
+ updatedAt?: Date | undefined;
184
+ }[];
185
+ extraFields?: unknown;
186
+ createdAt?: Date | undefined;
187
+ updatedAt?: Date | undefined;
188
+ phoneNumber?: string | undefined;
189
+ subscription?: string | undefined;
190
+ }>, "many">;
191
+ domain: import("zod").ZodString;
192
+ subscription: import("zod").ZodString;
193
+ status: import("zod").ZodUnion<[{ [K in keyof OrganizationStatus]: import("zod").ZodLiteral<OrganizationStatus[K]>; }[keyof OrganizationStatus]]>;
194
+ logoUrl: import("zod").ZodOptional<import("zod").ZodString>;
195
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
196
+ createdAt: import("zod").ZodOptional<import("zod").ZodDate>;
197
+ updatedAt: import("zod").ZodOptional<import("zod").ZodDate>;
198
+ };
199
+ }>;
200
+ //# sourceMappingURL=organization.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization.schema.d.ts","sourceRoot":"","sources":["../../schemas/organization.schema.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG1C,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { serviceSchemaResolver } from '@forklaunch/core/mappers';
2
+ import { BaseOrganizationServiceSchemas as TypeBoxSchemas } from './typebox/organization.schema';
3
+ import { BaseOrganizationServiceSchemas as ZodSchemas } from './zod/organization.schema';
4
+ export const BaseOrganizationServiceSchemas = serviceSchemaResolver(TypeBoxSchemas, ZodSchemas);
@@ -0,0 +1,50 @@
1
+ export declare const BasePermissionServiceSchemas: <SchemaValidator extends import("@forklaunch/validator").AnySchemaValidator>(options: {
2
+ uuidId: boolean;
3
+ } & {
4
+ validator: SchemaValidator;
5
+ }) => import("@forklaunch/core/mappers").SchemasByValidator<SchemaValidator, (options: {
6
+ uuidId: boolean;
7
+ }) => {
8
+ CreatePermissionSchema: {
9
+ slug: import("@sinclair/typebox").TString;
10
+ addToRolesIds: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
11
+ extraFields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
12
+ };
13
+ UpdatePermissionSchema: {
14
+ id: import("@sinclair/typebox").TString;
15
+ slug: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
16
+ extraFields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
17
+ addToRolesIds: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
18
+ removeFromRolesIds: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
19
+ };
20
+ PermissionSchema: {
21
+ id: import("@sinclair/typebox").TString;
22
+ slug: import("@sinclair/typebox").TString;
23
+ extraFields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
24
+ createdAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TDate, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TString, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>, Date>>;
25
+ updatedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TDate, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TString, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>, Date>>;
26
+ };
27
+ }, (options: {
28
+ uuidId: boolean;
29
+ }) => {
30
+ CreatePermissionSchema: {
31
+ slug: import("zod").ZodString;
32
+ addToRolesIds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
33
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
34
+ };
35
+ UpdatePermissionSchema: {
36
+ id: import("zod").ZodString;
37
+ slug: import("zod").ZodOptional<import("zod").ZodString>;
38
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
39
+ addToRolesIds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
40
+ removeFromRolesIds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
41
+ };
42
+ PermissionSchema: {
43
+ id: import("zod").ZodString;
44
+ slug: import("zod").ZodString;
45
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
46
+ createdAt: import("zod").ZodOptional<import("zod").ZodDate>;
47
+ updatedAt: import("zod").ZodOptional<import("zod").ZodDate>;
48
+ };
49
+ }>;
50
+ //# sourceMappingURL=permission.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.schema.d.ts","sourceRoot":"","sources":["../../schemas/permission.schema.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGxC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { serviceSchemaResolver } from '@forklaunch/core/mappers';
2
+ import { BasePermissionServiceSchemas as TypeBoxSchemas } from './typebox/permission.schema';
3
+ import { BasePermissionServiceSchemas as ZodSchemas } from './zod/permission.schema';
4
+ export const BasePermissionServiceSchemas = serviceSchemaResolver(TypeBoxSchemas, ZodSchemas);
@@ -0,0 +1,74 @@
1
+ export declare const BaseRoleServiceSchemas: <SchemaValidator extends import("@forklaunch/validator").AnySchemaValidator>(options: {
2
+ uuidId: boolean;
3
+ } & {
4
+ validator: SchemaValidator;
5
+ }) => import("@forklaunch/core/mappers").SchemasByValidator<SchemaValidator, (options: {
6
+ uuidId: boolean;
7
+ }) => {
8
+ CreateRoleSchema: {
9
+ name: import("@sinclair/typebox").TString;
10
+ permissionIds: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
11
+ extraFields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
12
+ };
13
+ UpdateRoleSchema: {
14
+ id: import("@sinclair/typebox").TString;
15
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
16
+ permissionIds: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
17
+ extraFields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
18
+ };
19
+ RoleSchema: {
20
+ id: import("@sinclair/typebox").TString;
21
+ name: import("@sinclair/typebox").TString;
22
+ permissions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
23
+ id: import("@sinclair/typebox").TString;
24
+ slug: import("@sinclair/typebox").TString;
25
+ extraFields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
26
+ createdAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TDate, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TString, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>, Date>>;
27
+ updatedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TDate, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TString, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>, Date>>;
28
+ }>>;
29
+ extraFields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
30
+ createdAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TDate, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TString, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>, Date>>;
31
+ updatedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TDate, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TString, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>, Date>>;
32
+ };
33
+ }, (options: {
34
+ uuidId: boolean;
35
+ }) => {
36
+ CreateRoleSchema: {
37
+ name: import("zod").ZodString;
38
+ permissionIds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
39
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
40
+ };
41
+ UpdateRoleSchema: {
42
+ id: import("zod").ZodString;
43
+ name: import("zod").ZodOptional<import("zod").ZodString>;
44
+ permissionIds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
45
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
46
+ };
47
+ RoleSchema: {
48
+ id: import("zod").ZodString;
49
+ name: import("zod").ZodString;
50
+ permissions: import("zod").ZodArray<import("zod").ZodObject<{
51
+ id: import("zod").ZodString;
52
+ slug: import("zod").ZodString;
53
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
54
+ createdAt: import("zod").ZodOptional<import("zod").ZodDate>;
55
+ updatedAt: import("zod").ZodOptional<import("zod").ZodDate>;
56
+ }, import("zod").UnknownKeysParam, import("zod").ZodTypeAny, {
57
+ id: string;
58
+ slug: string;
59
+ extraFields?: unknown;
60
+ createdAt?: Date | undefined;
61
+ updatedAt?: Date | undefined;
62
+ }, {
63
+ id: string;
64
+ slug: string;
65
+ extraFields?: unknown;
66
+ createdAt?: Date | undefined;
67
+ updatedAt?: Date | undefined;
68
+ }>, "many">;
69
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
70
+ createdAt: import("zod").ZodOptional<import("zod").ZodDate>;
71
+ updatedAt: import("zod").ZodOptional<import("zod").ZodDate>;
72
+ };
73
+ }>;
74
+ //# sourceMappingURL=role.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.schema.d.ts","sourceRoot":"","sources":["../../schemas/role.schema.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGlC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { serviceSchemaResolver } from '@forklaunch/core/mappers';
2
+ import { BaseRoleServiceSchemas as TypeBoxSchemas } from './typebox/role.schema';
3
+ import { BaseRoleServiceSchemas as ZodSchemas } from './zod/role.schema';
4
+ export const BaseRoleServiceSchemas = serviceSchemaResolver(TypeBoxSchemas, ZodSchemas);