@forklaunch/implementation-iam-base 0.1.2 → 0.1.4

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 (84) 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 +175 -0
  4. package/{schemas/typebox → lib/eject/schemas/zod}/organization.schema.ts +4 -4
  5. package/{schemas/typebox → lib/eject/schemas/zod}/permission.schema.ts +1 -1
  6. package/{schemas/typebox → lib/eject/schemas/zod}/role.schema.ts +4 -4
  7. package/{schemas/typebox → lib/eject/schemas/zod}/user.schema.ts +4 -4
  8. package/lib/eject/services/services/organization.service.ts +146 -0
  9. package/lib/eject/services/services/permission.service.ts +349 -0
  10. package/lib/eject/services/services/role.service.ts +182 -0
  11. package/lib/eject/services/user.service.ts +225 -0
  12. package/lib/index.d.ts +9 -0
  13. package/lib/index.d.ts.map +1 -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/organization.schema.d.ts +58 -0
  18. package/lib/schemas/organization.schema.d.ts.map +1 -0
  19. package/lib/schemas/organization.schema.js +14 -0
  20. package/lib/schemas/permission.schema.d.ts +42 -0
  21. package/lib/schemas/permission.schema.d.ts.map +1 -0
  22. package/lib/schemas/permission.schema.js +14 -0
  23. package/lib/schemas/role.schema.d.ts +42 -0
  24. package/lib/schemas/role.schema.d.ts.map +1 -0
  25. package/lib/schemas/role.schema.js +14 -0
  26. package/lib/schemas/typebox/organization.schema.d.ts +30 -0
  27. package/lib/schemas/typebox/organization.schema.d.ts.map +1 -0
  28. package/lib/schemas/typebox/organization.schema.js +28 -0
  29. package/lib/schemas/typebox/permission.schema.d.ts +20 -0
  30. package/lib/schemas/typebox/permission.schema.d.ts.map +1 -0
  31. package/lib/schemas/typebox/permission.schema.js +20 -0
  32. package/lib/schemas/typebox/role.schema.d.ts +22 -0
  33. package/lib/schemas/typebox/role.schema.d.ts.map +1 -0
  34. package/lib/schemas/typebox/role.schema.js +20 -0
  35. package/lib/schemas/typebox/user.schema.d.ts +37 -0
  36. package/lib/schemas/typebox/user.schema.d.ts.map +1 -0
  37. package/lib/schemas/typebox/user.schema.js +35 -0
  38. package/lib/schemas/user.schema.d.ts +72 -0
  39. package/lib/schemas/user.schema.d.ts.map +1 -0
  40. package/lib/schemas/user.schema.js +14 -0
  41. package/lib/schemas/zod/organization.schema.d.ts +30 -0
  42. package/lib/schemas/zod/organization.schema.d.ts.map +1 -0
  43. package/lib/schemas/zod/organization.schema.js +28 -0
  44. package/lib/schemas/zod/permission.schema.d.ts +20 -0
  45. package/lib/schemas/zod/permission.schema.d.ts.map +1 -0
  46. package/lib/schemas/zod/permission.schema.js +20 -0
  47. package/lib/schemas/zod/role.schema.d.ts +22 -0
  48. package/lib/schemas/zod/role.schema.d.ts.map +1 -0
  49. package/lib/schemas/zod/role.schema.js +20 -0
  50. package/lib/schemas/zod/user.schema.d.ts +37 -0
  51. package/lib/schemas/zod/user.schema.d.ts.map +1 -0
  52. package/lib/schemas/zod/user.schema.js +35 -0
  53. package/lib/services/organization.service.d.ts +44 -0
  54. package/lib/services/organization.service.d.ts.map +1 -0
  55. package/lib/services/organization.service.js +35 -0
  56. package/lib/services/permission.service.d.ts +61 -0
  57. package/lib/services/permission.service.d.ts.map +1 -0
  58. package/lib/services/permission.service.js +159 -0
  59. package/lib/services/role.service.d.ts +48 -0
  60. package/lib/services/role.service.d.ts.map +1 -0
  61. package/lib/services/role.service.js +57 -0
  62. package/lib/services/user.service.d.ts +54 -0
  63. package/lib/services/user.service.d.ts.map +1 -0
  64. package/lib/services/user.service.js +85 -0
  65. package/lib/tsconfig.tsbuildinfo +1 -0
  66. package/lib/vitest.config.d.ts +3 -0
  67. package/lib/vitest.config.d.ts.map +1 -0
  68. package/lib/vitest.config.js +7 -0
  69. package/package.json +6 -4
  70. package/__test__/schemaEquality.test.ts +0 -293
  71. package/schemas/organization.schema.ts +0 -28
  72. package/schemas/permission.schema.ts +0 -28
  73. package/schemas/role.schema.ts +0 -28
  74. package/schemas/user.schema.ts +0 -28
  75. package/tsconfig.json +0 -7
  76. /package/{schemas/zod → lib/eject/schemas}/organization.schema.ts +0 -0
  77. /package/{schemas/zod → lib/eject/schemas}/permission.schema.ts +0 -0
  78. /package/{schemas/zod → lib/eject/schemas}/role.schema.ts +0 -0
  79. /package/{schemas/zod → lib/eject/schemas}/user.schema.ts +0 -0
  80. /package/{services → lib/eject/services}/organization.service.ts +0 -0
  81. /package/{services → lib/eject/services}/permission.service.ts +0 -0
  82. /package/{services → lib/eject/services}/role.service.ts +0 -0
  83. /package/{services → lib/eject/services/services}/user.service.ts +0 -0
  84. /package/{index.ts → lib/index.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.schema.d.ts","sourceRoot":"","sources":["../../schemas/user.schema.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,sBAAsB,uNAZH,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAMX,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASlC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { serviceSchemaResolver } from '@forklaunch/core/dtoMapper';
2
+ import { CreateUserSchema as TypeBoxCreateUserSchema, UpdateUserSchema as TypeBoxUpdateUserSchema, UserSchema as TypeBoxUserSchema } from './typebox/user.schema';
3
+ import { CreateUserSchema as ZodCreateUserSchema, UpdateUserSchema as ZodUpdateUserSchema, UserSchema as ZodUserSchema } from './zod/user.schema';
4
+ const TypeBoxSchemas = (uuidId) => ({
5
+ CreateUserSchema: TypeBoxCreateUserSchema,
6
+ UpdateUserSchema: TypeBoxUpdateUserSchema(uuidId),
7
+ UserSchema: TypeBoxUserSchema(uuidId)
8
+ });
9
+ const ZodSchemas = (uuidId) => ({
10
+ CreateUserSchema: ZodCreateUserSchema,
11
+ UpdateUserSchema: ZodUpdateUserSchema(uuidId),
12
+ UserSchema: ZodUserSchema(uuidId)
13
+ });
14
+ export const BaseUserServiceSchemas = serviceSchemaResolver(TypeBoxSchemas, ZodSchemas);
@@ -0,0 +1,30 @@
1
+ import { IdiomaticSchema, LiteralSchema } from '@forklaunch/validator';
2
+ import { ZodSchemaValidator } from '@forklaunch/validator/zod';
3
+ export declare const CreateOrganizationSchema: {
4
+ name: import("zod").ZodString;
5
+ domain: import("zod").ZodString;
6
+ subscription: import("zod").ZodString;
7
+ logoUrl: import("zod").ZodOptional<import("zod").ZodString>;
8
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
9
+ };
10
+ export declare const UpdateOrganizationSchema: (uuidId: boolean) => {
11
+ id: import("zod").ZodString;
12
+ name: import("zod").ZodOptional<import("zod").ZodString>;
13
+ domain: import("zod").ZodOptional<import("zod").ZodString>;
14
+ subscription: import("zod").ZodOptional<import("zod").ZodString>;
15
+ logoUrl: import("zod").ZodOptional<import("zod").ZodString>;
16
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
17
+ };
18
+ export declare const OrganizationSchema: (uuidId: boolean) => <UserDtoSchema extends IdiomaticSchema<ZodSchemaValidator>, OrganizationStatus extends Record<string, LiteralSchema>>(UserDtoSchema: UserDtoSchema, OrganizationStatus: OrganizationStatus) => {
19
+ id: import("zod").ZodString;
20
+ name: import("zod").ZodString;
21
+ users: import("zod").ZodArray<UserDtoSchema extends LiteralSchema ? import("zod").ZodLiteral<UserDtoSchema> : UserDtoSchema extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? UserDtoSchema : UserDtoSchema extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K in keyof UserDtoSchema]: UserDtoSchema[K] extends infer T ? T extends UserDtoSchema[K] ? T extends LiteralSchema ? import("zod").ZodLiteral<T> : T extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T : T extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_1 in keyof T]: T[K_1] extends infer T_1 ? T_1 extends T[K_1] ? T_1 extends LiteralSchema ? import("zod").ZodLiteral<T_1> : T_1 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_1 : T_1 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_2 in keyof T_1]: T_1[K_2] extends infer T_2 ? T_2 extends T_1[K_2] ? T_2 extends LiteralSchema ? import("zod").ZodLiteral<T_2> : T_2 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_2 : T_2 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_3 in keyof T_2]: T_2[K_3] extends infer T_3 ? T_3 extends T_2[K_3] ? T_3 extends LiteralSchema ? import("zod").ZodLiteral<T_3> : T_3 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_3 : T_3 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_4 in keyof T_3]: T_3[K_4] extends infer T_4 ? T_4 extends T_3[K_4] ? T_4 extends LiteralSchema ? import("zod").ZodLiteral<T_4> : T_4 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_4 : T_4 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_5 in keyof T_4]: T_4[K_5] extends infer T_5 ? T_5 extends T_4[K_5] ? T_5 extends LiteralSchema ? import("zod").ZodLiteral<T_5> : T_5 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_5 : T_5 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_6 in keyof T_5]: T_5[K_6] extends infer T_6 ? T_6 extends T_5[K_6] ? T_6 extends LiteralSchema ? import("zod").ZodLiteral<T_6> : T_6 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_6 : T_6 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_7 in keyof T_6]: T_6[K_7] extends infer T_7 ? T_7 extends T_6[K_7] ? T_7 extends LiteralSchema ? import("zod").ZodLiteral<T_7> : T_7 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_7 : T_7 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_8 in keyof T_7]: T_7[K_8] extends infer T_8 ? T_8 extends T_7[K_8] ? T_8 extends LiteralSchema ? import("zod").ZodLiteral<T_8> : T_8 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_8 : T_8 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_9 in keyof T_8]: T_8[K_9] extends infer T_9 ? T_9 extends T_8[K_9] ? T_9 extends LiteralSchema ? import("zod").ZodLiteral<T_9> : T_9 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_9 : T_9 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_10 in keyof T_9]: /*elided*/ any; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever, "many">;
22
+ domain: import("zod").ZodString;
23
+ subscription: import("zod").ZodString;
24
+ status: import("zod").ZodUnion<[{ [K_11 in keyof OrganizationStatus]: import("zod").ZodLiteral<OrganizationStatus[K_11]>; }[keyof OrganizationStatus]]>;
25
+ logoUrl: import("zod").ZodOptional<import("zod").ZodString>;
26
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
27
+ createdAt: import("zod").ZodOptional<import("zod").ZodPipeline<import("zod").ZodEffects<import("zod").ZodAny, any, any>, import("zod").ZodDate>>;
28
+ updatedAt: import("zod").ZodOptional<import("zod").ZodPipeline<import("zod").ZodEffects<import("zod").ZodAny, any, any>, import("zod").ZodDate>>;
29
+ };
30
+ //# sourceMappingURL=organization.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization.schema.d.ts","sourceRoot":"","sources":["../../../schemas/zod/organization.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAQL,kBAAkB,EACnB,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,wBAAwB;;;;;;CAMpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,QAAQ,OAAO;;;;;;;CAOtD,CAAC;AAEH,eAAO,MAAM,kBAAkB,GAC5B,QAAQ,OAAO,MAEd,aAAa,SAAS,eAAe,CAAC,kBAAkB,CAAC,EACzD,kBAAkB,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAExD,eAAe,aAAa,EAC5B,oBAAoB,kBAAkB;;;;;;;;;;;CAYtC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { array, date, enum_, optional, string, unknown, uuid } from '@forklaunch/validator/zod';
2
+ export const CreateOrganizationSchema = {
3
+ name: string,
4
+ domain: string,
5
+ subscription: string,
6
+ logoUrl: optional(string),
7
+ extraFields: optional(unknown)
8
+ };
9
+ export const UpdateOrganizationSchema = (uuidId) => ({
10
+ id: uuidId ? uuid : string,
11
+ name: optional(string),
12
+ domain: optional(string),
13
+ subscription: optional(string),
14
+ logoUrl: optional(string),
15
+ extraFields: optional(unknown)
16
+ });
17
+ export const OrganizationSchema = (uuidId) => (UserDtoSchema, OrganizationStatus) => ({
18
+ id: uuidId ? uuid : string,
19
+ name: string,
20
+ users: array(UserDtoSchema),
21
+ domain: string,
22
+ subscription: string,
23
+ status: enum_(OrganizationStatus),
24
+ logoUrl: optional(string),
25
+ extraFields: optional(unknown),
26
+ createdAt: optional(date),
27
+ updatedAt: optional(date)
28
+ });
@@ -0,0 +1,20 @@
1
+ export declare const CreatePermissionSchema: {
2
+ slug: import("zod").ZodString;
3
+ addToRolesIds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
4
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
5
+ };
6
+ export declare const UpdatePermissionSchema: (uuidId: boolean) => {
7
+ id: import("zod").ZodString;
8
+ slug: import("zod").ZodOptional<import("zod").ZodString>;
9
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
10
+ addToRolesIds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
11
+ removeFromRolesIds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
12
+ };
13
+ export declare const PermissionSchema: (uuidId: boolean) => {
14
+ id: import("zod").ZodString;
15
+ slug: import("zod").ZodString;
16
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
17
+ createdAt: import("zod").ZodOptional<import("zod").ZodPipeline<import("zod").ZodEffects<import("zod").ZodAny, any, any>, import("zod").ZodDate>>;
18
+ updatedAt: import("zod").ZodOptional<import("zod").ZodPipeline<import("zod").ZodEffects<import("zod").ZodAny, any, any>, import("zod").ZodDate>>;
19
+ };
20
+ //# sourceMappingURL=permission.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.schema.d.ts","sourceRoot":"","sources":["../../../schemas/zod/permission.schema.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,sBAAsB;;;;CAIlC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,QAAQ,OAAO;;;;;;CAMpD,CAAC;AAEH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,OAAO;;;;;;CAM9C,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { array, date, optional, string, unknown, uuid } from '@forklaunch/validator/zod';
2
+ export const CreatePermissionSchema = {
3
+ slug: string,
4
+ addToRolesIds: optional(array(string)),
5
+ extraFields: optional(unknown)
6
+ };
7
+ export const UpdatePermissionSchema = (uuidId) => ({
8
+ id: uuidId ? uuid : string,
9
+ slug: optional(string),
10
+ extraFields: optional(unknown),
11
+ addToRolesIds: optional(array(string)),
12
+ removeFromRolesIds: optional(array(string))
13
+ });
14
+ export const PermissionSchema = (uuidId) => ({
15
+ id: uuidId ? uuid : string,
16
+ slug: string,
17
+ extraFields: optional(unknown),
18
+ createdAt: optional(date),
19
+ updatedAt: optional(date)
20
+ });
@@ -0,0 +1,22 @@
1
+ import { IdiomaticSchema } from '@forklaunch/validator';
2
+ import { ZodSchemaValidator } from '@forklaunch/validator/zod';
3
+ export declare const CreateRoleSchema: {
4
+ name: import("zod").ZodString;
5
+ permissionIds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
6
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
7
+ };
8
+ export declare const UpdateRoleSchema: (uuidId: boolean) => {
9
+ id: import("zod").ZodString;
10
+ name: import("zod").ZodOptional<import("zod").ZodString>;
11
+ permissionIds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
12
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
13
+ };
14
+ export declare const RoleSchema: (uuidId: boolean) => <PermissionSchema extends IdiomaticSchema<ZodSchemaValidator>>(PermissionSchema: PermissionSchema) => {
15
+ id: import("zod").ZodString;
16
+ name: import("zod").ZodString;
17
+ permissions: import("zod").ZodArray<PermissionSchema extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<PermissionSchema> : PermissionSchema extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? PermissionSchema : PermissionSchema extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K in keyof PermissionSchema]: PermissionSchema[K] extends infer T ? T extends PermissionSchema[K] ? T extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<T> : T extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T : T extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_1 in keyof T]: T[K_1] extends infer T_1 ? T_1 extends T[K_1] ? T_1 extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<T_1> : T_1 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_1 : T_1 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_2 in keyof T_1]: T_1[K_2] extends infer T_2 ? T_2 extends T_1[K_2] ? T_2 extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<T_2> : T_2 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_2 : T_2 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_3 in keyof T_2]: T_2[K_3] extends infer T_3 ? T_3 extends T_2[K_3] ? T_3 extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<T_3> : T_3 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_3 : T_3 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_4 in keyof T_3]: T_3[K_4] extends infer T_4 ? T_4 extends T_3[K_4] ? T_4 extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<T_4> : T_4 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_4 : T_4 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_5 in keyof T_4]: T_4[K_5] extends infer T_5 ? T_5 extends T_4[K_5] ? T_5 extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<T_5> : T_5 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_5 : T_5 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_6 in keyof T_5]: T_5[K_6] extends infer T_6 ? T_6 extends T_5[K_6] ? T_6 extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<T_6> : T_6 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_6 : T_6 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_7 in keyof T_6]: T_6[K_7] extends infer T_7 ? T_7 extends T_6[K_7] ? T_7 extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<T_7> : T_7 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_7 : T_7 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_8 in keyof T_7]: T_7[K_8] extends infer T_8 ? T_8 extends T_7[K_8] ? T_8 extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<T_8> : T_8 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_8 : T_8 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_9 in keyof T_8]: T_8[K_9] extends infer T_9 ? T_9 extends T_8[K_9] ? T_9 extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<T_9> : T_9 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_9 : T_9 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_10 in keyof T_9]: /*elided*/ any; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever, "many">;
18
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
19
+ createdAt: import("zod").ZodOptional<import("zod").ZodPipeline<import("zod").ZodEffects<import("zod").ZodAny, any, any>, import("zod").ZodDate>>;
20
+ updatedAt: import("zod").ZodOptional<import("zod").ZodPipeline<import("zod").ZodEffects<import("zod").ZodAny, any, any>, import("zod").ZodDate>>;
21
+ };
22
+ //# sourceMappingURL=role.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.schema.d.ts","sourceRoot":"","sources":["../../../schemas/zod/role.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAOL,kBAAkB,EACnB,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,gBAAgB;;;;CAI5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,QAAQ,OAAO;;;;;CAK9C,CAAC;AAEH,eAAO,MAAM,UAAU,GACpB,QAAQ,OAAO,MACf,gBAAgB,SAAS,eAAe,CAAC,kBAAkB,CAAC,EAC3D,kBAAkB,gBAAgB;;;;;;;CAQlC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { array, date, optional, string, unknown, uuid } from '@forklaunch/validator/zod';
2
+ export const CreateRoleSchema = {
3
+ name: string,
4
+ permissionIds: optional(array(string)),
5
+ extraFields: optional(unknown)
6
+ };
7
+ export const UpdateRoleSchema = (uuidId) => ({
8
+ id: uuidId ? uuid : string,
9
+ name: optional(string),
10
+ permissionIds: optional(array(string)),
11
+ extraFields: optional(unknown)
12
+ });
13
+ export const RoleSchema = (uuidId) => (PermissionSchema) => ({
14
+ id: uuidId ? uuid : string,
15
+ name: string,
16
+ permissions: array(PermissionSchema),
17
+ extraFields: optional(unknown),
18
+ createdAt: optional(date),
19
+ updatedAt: optional(date)
20
+ });
@@ -0,0 +1,37 @@
1
+ import { IdiomaticSchema } from '@forklaunch/validator';
2
+ import { ZodSchemaValidator } from '@forklaunch/validator/zod';
3
+ export declare const CreateUserSchema: {
4
+ email: import("zod").ZodString;
5
+ password: import("zod").ZodString;
6
+ firstName: import("zod").ZodString;
7
+ lastName: import("zod").ZodString;
8
+ organizationId: import("zod").ZodString;
9
+ roleIds: import("zod").ZodArray<import("zod").ZodString, "many">;
10
+ phoneNumber: import("zod").ZodOptional<import("zod").ZodString>;
11
+ subscription: import("zod").ZodOptional<import("zod").ZodString>;
12
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
13
+ };
14
+ export declare const UpdateUserSchema: (uuidId: boolean) => {
15
+ id: import("zod").ZodString;
16
+ email: import("zod").ZodOptional<import("zod").ZodString>;
17
+ password: import("zod").ZodOptional<import("zod").ZodString>;
18
+ firstName: import("zod").ZodOptional<import("zod").ZodString>;
19
+ lastName: import("zod").ZodOptional<import("zod").ZodString>;
20
+ roleIds: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
21
+ phoneNumber: import("zod").ZodOptional<import("zod").ZodString>;
22
+ subscription: import("zod").ZodOptional<import("zod").ZodString>;
23
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
24
+ };
25
+ export declare const UserSchema: (uuidId: boolean) => <RoleDtoSchema extends IdiomaticSchema<ZodSchemaValidator>>(RoleDtoSchema: RoleDtoSchema) => {
26
+ id: import("zod").ZodString;
27
+ email: import("zod").ZodString;
28
+ firstName: import("zod").ZodString;
29
+ lastName: import("zod").ZodString;
30
+ roles: import("zod").ZodArray<RoleDtoSchema extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<RoleDtoSchema> : RoleDtoSchema extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? RoleDtoSchema : RoleDtoSchema extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K in keyof RoleDtoSchema]: RoleDtoSchema[K] extends infer T ? T extends RoleDtoSchema[K] ? T extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<T> : T extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T : T extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_1 in keyof T]: T[K_1] extends infer T_1 ? T_1 extends T[K_1] ? T_1 extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<T_1> : T_1 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_1 : T_1 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_2 in keyof T_1]: T_1[K_2] extends infer T_2 ? T_2 extends T_1[K_2] ? T_2 extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<T_2> : T_2 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_2 : T_2 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_3 in keyof T_2]: T_2[K_3] extends infer T_3 ? T_3 extends T_2[K_3] ? T_3 extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<T_3> : T_3 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_3 : T_3 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_4 in keyof T_3]: T_3[K_4] extends infer T_4 ? T_4 extends T_3[K_4] ? T_4 extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<T_4> : T_4 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_4 : T_4 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_5 in keyof T_4]: T_4[K_5] extends infer T_5 ? T_5 extends T_4[K_5] ? T_5 extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<T_5> : T_5 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_5 : T_5 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_6 in keyof T_5]: T_5[K_6] extends infer T_6 ? T_6 extends T_5[K_6] ? T_6 extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<T_6> : T_6 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_6 : T_6 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_7 in keyof T_6]: T_6[K_7] extends infer T_7 ? T_7 extends T_6[K_7] ? T_7 extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<T_7> : T_7 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_7 : T_7 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_8 in keyof T_7]: T_7[K_8] extends infer T_8 ? T_8 extends T_7[K_8] ? T_8 extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<T_8> : T_8 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_8 : T_8 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_9 in keyof T_8]: T_8[K_9] extends infer T_9 ? T_9 extends T_8[K_9] ? T_9 extends import("@forklaunch/validator").LiteralSchema ? import("zod").ZodLiteral<T_9> : T_9 extends import("zod").ZodType<any, import("zod").ZodTypeDef, any> ? T_9 : T_9 extends import("@forklaunch/validator/zod").UnboxedZodObjectSchema ? import("@forklaunch/validator/zod").ZodObject<{ [K_10 in keyof T_9]: /*elided*/ any; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever : never : never; }> : import("zod").ZodNever, "many">;
31
+ phoneNumber: import("zod").ZodOptional<import("zod").ZodString>;
32
+ subscription: import("zod").ZodOptional<import("zod").ZodString>;
33
+ extraFields: import("zod").ZodOptional<import("zod").ZodUnknown>;
34
+ createdAt: import("zod").ZodOptional<import("zod").ZodPipeline<import("zod").ZodEffects<import("zod").ZodAny, any, any>, import("zod").ZodDate>>;
35
+ updatedAt: import("zod").ZodOptional<import("zod").ZodPipeline<import("zod").ZodEffects<import("zod").ZodAny, any, any>, import("zod").ZodDate>>;
36
+ };
37
+ //# sourceMappingURL=user.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.schema.d.ts","sourceRoot":"","sources":["../../../schemas/zod/user.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAQL,kBAAkB,EACnB,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,gBAAgB;;;;;;;;;;CAU5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,QAAQ,OAAO;;;;;;;;;;CAU9C,CAAC;AAEH,eAAO,MAAM,UAAU,GACpB,QAAQ,OAAO,MACf,aAAa,SAAS,eAAe,CAAC,kBAAkB,CAAC,EACxD,eAAe,aAAa;;;;;;;;;;;CAY5B,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { array, date, email, optional, string, unknown, uuid } from '@forklaunch/validator/zod';
2
+ export const CreateUserSchema = {
3
+ email: email,
4
+ password: string,
5
+ firstName: string,
6
+ lastName: string,
7
+ organizationId: string,
8
+ roleIds: array(string),
9
+ phoneNumber: optional(string),
10
+ subscription: optional(string),
11
+ extraFields: optional(unknown)
12
+ };
13
+ export const UpdateUserSchema = (uuidId) => ({
14
+ id: uuidId ? uuid : string,
15
+ email: optional(email),
16
+ password: optional(string),
17
+ firstName: optional(string),
18
+ lastName: optional(string),
19
+ roleIds: optional(array(string)),
20
+ phoneNumber: optional(string),
21
+ subscription: optional(string),
22
+ extraFields: optional(unknown)
23
+ });
24
+ export const UserSchema = (uuidId) => (RoleDtoSchema) => ({
25
+ id: uuidId ? uuid : string,
26
+ email: email,
27
+ firstName: string,
28
+ lastName: string,
29
+ roles: array(RoleDtoSchema),
30
+ phoneNumber: optional(string),
31
+ subscription: optional(string),
32
+ extraFields: optional(unknown),
33
+ createdAt: optional(date),
34
+ updatedAt: optional(date)
35
+ });
@@ -0,0 +1,44 @@
1
+ import { CreateOrganizationDto, OrganizationDto, OrganizationService, UpdateOrganizationDto } from '@forklaunch/interfaces-iam';
2
+ import { IdDto } from '@forklaunch/common';
3
+ import { RequestDtoMapperConstructor, ResponseDtoMapperConstructor } from '@forklaunch/core/dtoMapper';
4
+ import { MetricsDefinition, OpenTelemetryCollector } from '@forklaunch/core/http';
5
+ import { MapNestedDtoArraysToCollections } from '@forklaunch/core/services';
6
+ import { AnySchemaValidator } from '@forklaunch/validator';
7
+ import { EntityManager } from '@mikro-orm/core';
8
+ export declare class BaseOrganizationService<SchemaValidator extends AnySchemaValidator, OrganizationStatus, Metrics extends MetricsDefinition = MetricsDefinition, Dto extends {
9
+ OrganizationDtoMapper: OrganizationDto<OrganizationStatus>;
10
+ CreateOrganizationDtoMapper: CreateOrganizationDto;
11
+ UpdateOrganizationDtoMapper: UpdateOrganizationDto;
12
+ } = {
13
+ OrganizationDtoMapper: OrganizationDto<OrganizationStatus>;
14
+ CreateOrganizationDtoMapper: CreateOrganizationDto;
15
+ UpdateOrganizationDtoMapper: UpdateOrganizationDto;
16
+ }, Entities extends {
17
+ OrganizationDtoMapper: MapNestedDtoArraysToCollections<OrganizationDto<OrganizationStatus>, 'users'>;
18
+ CreateOrganizationDtoMapper: MapNestedDtoArraysToCollections<OrganizationDto<OrganizationStatus>, 'users'>;
19
+ UpdateOrganizationDtoMapper: MapNestedDtoArraysToCollections<OrganizationDto<OrganizationStatus>, 'users'>;
20
+ } = {
21
+ OrganizationDtoMapper: MapNestedDtoArraysToCollections<OrganizationDto<OrganizationStatus>, 'users'>;
22
+ CreateOrganizationDtoMapper: MapNestedDtoArraysToCollections<OrganizationDto<OrganizationStatus>, 'users'>;
23
+ UpdateOrganizationDtoMapper: MapNestedDtoArraysToCollections<OrganizationDto<OrganizationStatus>, 'users'>;
24
+ }> implements OrganizationService<OrganizationStatus> {
25
+ #private;
26
+ em: EntityManager;
27
+ protected openTelemetryCollector: OpenTelemetryCollector<Metrics>;
28
+ protected schemaValidator: SchemaValidator;
29
+ protected dtoMappers: {
30
+ OrganizationDtoMapper: ResponseDtoMapperConstructor<SchemaValidator, Dto['OrganizationDtoMapper'], Entities['OrganizationDtoMapper']>;
31
+ CreateOrganizationDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['CreateOrganizationDtoMapper'], Entities['CreateOrganizationDtoMapper']>;
32
+ UpdateOrganizationDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['UpdateOrganizationDtoMapper'], Entities['UpdateOrganizationDtoMapper']>;
33
+ };
34
+ constructor(em: EntityManager, openTelemetryCollector: OpenTelemetryCollector<Metrics>, schemaValidator: SchemaValidator, dtoMappers: {
35
+ OrganizationDtoMapper: ResponseDtoMapperConstructor<SchemaValidator, Dto['OrganizationDtoMapper'], Entities['OrganizationDtoMapper']>;
36
+ CreateOrganizationDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['CreateOrganizationDtoMapper'], Entities['CreateOrganizationDtoMapper']>;
37
+ UpdateOrganizationDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['UpdateOrganizationDtoMapper'], Entities['UpdateOrganizationDtoMapper']>;
38
+ });
39
+ createOrganization(organizationDto: Dto['CreateOrganizationDtoMapper'], em?: EntityManager): Promise<Dto['OrganizationDtoMapper']>;
40
+ getOrganization(idDto: IdDto, em?: EntityManager): Promise<Dto['OrganizationDtoMapper']>;
41
+ updateOrganization(organizationDto: Dto['UpdateOrganizationDtoMapper'], em?: EntityManager): Promise<Dto['OrganizationDtoMapper']>;
42
+ deleteOrganization(idDto: IdDto, em?: EntityManager): Promise<void>;
43
+ }
44
+ //# sourceMappingURL=organization.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization.service.d.ts","sourceRoot":"","sources":["../../services/organization.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,KAAK,EAAsB,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAEL,2BAA2B,EAC3B,4BAA4B,EAE7B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,qBAAa,uBAAuB,CAClC,eAAe,SAAS,kBAAkB,EAC1C,kBAAkB,EAClB,OAAO,SAAS,iBAAiB,GAAG,iBAAiB,EACrD,GAAG,SAAS;IACV,qBAAqB,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;IAC3D,2BAA2B,EAAE,qBAAqB,CAAC;IACnD,2BAA2B,EAAE,qBAAqB,CAAC;CACpD,GAAG;IACF,qBAAqB,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;IAC3D,2BAA2B,EAAE,qBAAqB,CAAC;IACnD,2BAA2B,EAAE,qBAAqB,CAAC;CACpD,EACD,QAAQ,SAAS;IACf,qBAAqB,EAAE,+BAA+B,CACpD,eAAe,CAAC,kBAAkB,CAAC,EACnC,OAAO,CACR,CAAC;IACF,2BAA2B,EAAE,+BAA+B,CAC1D,eAAe,CAAC,kBAAkB,CAAC,EACnC,OAAO,CACR,CAAC;IACF,2BAA2B,EAAE,+BAA+B,CAC1D,eAAe,CAAC,kBAAkB,CAAC,EACnC,OAAO,CACR,CAAC;CACH,GAAG;IACF,qBAAqB,EAAE,+BAA+B,CACpD,eAAe,CAAC,kBAAkB,CAAC,EACnC,OAAO,CACR,CAAC;IACF,2BAA2B,EAAE,+BAA+B,CAC1D,eAAe,CAAC,kBAAkB,CAAC,EACnC,OAAO,CACR,CAAC;IACF,2BAA2B,EAAE,+BAA+B,CAC1D,eAAe,CAAC,kBAAkB,CAAC,EACnC,OAAO,CACR,CAAC;CACH,CACD,YAAW,mBAAmB,CAAC,kBAAkB,CAAC;;IASzC,EAAE,EAAE,aAAa;IACxB,SAAS,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,OAAO,CAAC;IACjE,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,SAAS,CAAC,UAAU,EAAE;QACpB,qBAAqB,EAAE,4BAA4B,CACjD,eAAe,EACf,GAAG,CAAC,uBAAuB,CAAC,EAC5B,QAAQ,CAAC,uBAAuB,CAAC,CAClC,CAAC;QACF,2BAA2B,EAAE,2BAA2B,CACtD,eAAe,EACf,GAAG,CAAC,6BAA6B,CAAC,EAClC,QAAQ,CAAC,6BAA6B,CAAC,CACxC,CAAC;QACF,2BAA2B,EAAE,2BAA2B,CACtD,eAAe,EACf,GAAG,CAAC,6BAA6B,CAAC,EAClC,QAAQ,CAAC,6BAA6B,CAAC,CACxC,CAAC;KACH;gBAnBM,EAAE,EAAE,aAAa,EACd,sBAAsB,EAAE,sBAAsB,CAAC,OAAO,CAAC,EACvD,eAAe,EAAE,eAAe,EAChC,UAAU,EAAE;QACpB,qBAAqB,EAAE,4BAA4B,CACjD,eAAe,EACf,GAAG,CAAC,uBAAuB,CAAC,EAC5B,QAAQ,CAAC,uBAAuB,CAAC,CAClC,CAAC;QACF,2BAA2B,EAAE,2BAA2B,CACtD,eAAe,EACf,GAAG,CAAC,6BAA6B,CAAC,EAClC,QAAQ,CAAC,6BAA6B,CAAC,CACxC,CAAC;QACF,2BAA2B,EAAE,2BAA2B,CACtD,eAAe,EACf,GAAG,CAAC,6BAA6B,CAAC,EAClC,QAAQ,CAAC,6BAA6B,CAAC,CACxC,CAAC;KACH;IAQG,kBAAkB,CACtB,eAAe,EAAE,GAAG,CAAC,6BAA6B,CAAC,EACnD,EAAE,CAAC,EAAE,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAelC,eAAe,CACnB,KAAK,EAAE,KAAK,EACZ,EAAE,CAAC,EAAE,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAUlC,kBAAkB,CACtB,eAAe,EAAE,GAAG,CAAC,6BAA6B,CAAC,EACnD,EAAE,CAAC,EAAE,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAWlC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAG1E"}
@@ -0,0 +1,35 @@
1
+ import { transformIntoInternalDtoMapper } from '@forklaunch/core/dtoMapper';
2
+ export class BaseOrganizationService {
3
+ em;
4
+ openTelemetryCollector;
5
+ schemaValidator;
6
+ dtoMappers;
7
+ #dtoMappers;
8
+ constructor(em, openTelemetryCollector, schemaValidator, dtoMappers) {
9
+ this.em = em;
10
+ this.openTelemetryCollector = openTelemetryCollector;
11
+ this.schemaValidator = schemaValidator;
12
+ this.dtoMappers = dtoMappers;
13
+ this.#dtoMappers = transformIntoInternalDtoMapper(dtoMappers, schemaValidator);
14
+ }
15
+ async createOrganization(organizationDto, em) {
16
+ this.openTelemetryCollector.log('info', 'Creating organization');
17
+ const organization = this.#dtoMappers.CreateOrganizationDtoMapper.deserializeDtoToEntity(organizationDto);
18
+ await (em ?? this.em).transactional(async (innerEm) => {
19
+ await innerEm.persist(organization);
20
+ });
21
+ return this.#dtoMappers.OrganizationDtoMapper.serializeEntityToDto(organization);
22
+ }
23
+ async getOrganization(idDto, em) {
24
+ const organization = await (em ?? this.em).findOneOrFail('Organization', idDto);
25
+ return this.#dtoMappers.OrganizationDtoMapper.serializeEntityToDto(organization);
26
+ }
27
+ async updateOrganization(organizationDto, em) {
28
+ const updatedOrganization = this.#dtoMappers.UpdateOrganizationDtoMapper.deserializeDtoToEntity(organizationDto);
29
+ await (em ?? this.em).upsert(updatedOrganization);
30
+ return this.#dtoMappers.OrganizationDtoMapper.serializeEntityToDto(updatedOrganization);
31
+ }
32
+ async deleteOrganization(idDto, em) {
33
+ await (em ?? this.em).nativeDelete('Organization', idDto);
34
+ }
35
+ }
@@ -0,0 +1,61 @@
1
+ import { CreatePermissionDto, PermissionDto, PermissionService, RoleDto, RoleService, UpdatePermissionDto } from '@forklaunch/interfaces-iam';
2
+ import { IdDto, IdsDto } from '@forklaunch/common';
3
+ import { RequestDtoMapperConstructor, ResponseDtoMapperConstructor } from '@forklaunch/core/dtoMapper';
4
+ import { MetricsDefinition, OpenTelemetryCollector } from '@forklaunch/core/http';
5
+ import { MapNestedDtoArraysToCollections } from '@forklaunch/core/services';
6
+ import { AnySchemaValidator } from '@forklaunch/validator';
7
+ import { EntityManager } from '@mikro-orm/core';
8
+ export declare class BasePermissionService<SchemaValidator extends AnySchemaValidator, Metrics extends MetricsDefinition = MetricsDefinition, Dto extends {
9
+ PermissionDtoMapper: PermissionDto;
10
+ CreatePermissionDtoMapper: CreatePermissionDto;
11
+ UpdatePermissionDtoMapper: UpdatePermissionDto;
12
+ RoleDtoMapper: RoleDto;
13
+ } = {
14
+ PermissionDtoMapper: PermissionDto;
15
+ CreatePermissionDtoMapper: CreatePermissionDto;
16
+ UpdatePermissionDtoMapper: UpdatePermissionDto;
17
+ RoleDtoMapper: RoleDto;
18
+ }, Entities extends {
19
+ PermissionDtoMapper: PermissionDto;
20
+ CreatePermissionDtoMapper: PermissionDto;
21
+ UpdatePermissionDtoMapper: PermissionDto;
22
+ RoleDtoMapper: MapNestedDtoArraysToCollections<RoleDto, 'permissions'>;
23
+ } = {
24
+ PermissionDtoMapper: PermissionDto;
25
+ CreatePermissionDtoMapper: PermissionDto;
26
+ UpdatePermissionDtoMapper: PermissionDto;
27
+ RoleDtoMapper: MapNestedDtoArraysToCollections<RoleDto, 'permissions'>;
28
+ }> implements PermissionService {
29
+ #private;
30
+ em: EntityManager;
31
+ protected roleServiceFactory: () => RoleService;
32
+ protected openTelemetryCollector: OpenTelemetryCollector<Metrics>;
33
+ protected schemaValidator: SchemaValidator;
34
+ protected dtoMappers: {
35
+ PermissionDtoMapper: ResponseDtoMapperConstructor<SchemaValidator, Dto['PermissionDtoMapper'], Entities['PermissionDtoMapper']>;
36
+ CreatePermissionDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['CreatePermissionDtoMapper'], Entities['CreatePermissionDtoMapper']>;
37
+ UpdatePermissionDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['UpdatePermissionDtoMapper'], Entities['UpdatePermissionDtoMapper']>;
38
+ RoleDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['RoleDtoMapper'], Entities['RoleDtoMapper']>;
39
+ };
40
+ constructor(em: EntityManager, roleServiceFactory: () => RoleService, openTelemetryCollector: OpenTelemetryCollector<Metrics>, schemaValidator: SchemaValidator, dtoMappers: {
41
+ PermissionDtoMapper: ResponseDtoMapperConstructor<SchemaValidator, Dto['PermissionDtoMapper'], Entities['PermissionDtoMapper']>;
42
+ CreatePermissionDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['CreatePermissionDtoMapper'], Entities['CreatePermissionDtoMapper']>;
43
+ UpdatePermissionDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['UpdatePermissionDtoMapper'], Entities['UpdatePermissionDtoMapper']>;
44
+ RoleDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['RoleDtoMapper'], Entities['RoleDtoMapper']>;
45
+ });
46
+ private updateRolesWithPermissions;
47
+ private removePermissionsFromRoles;
48
+ private getBatchRoles;
49
+ private createPermissionDto;
50
+ private extractCreatePermissionDtoToEntityData;
51
+ createPermission(createPermissionDto: Dto['CreatePermissionDtoMapper'], em?: EntityManager): Promise<Dto['PermissionDtoMapper']>;
52
+ createBatchPermissions(permissionDtos: Dto['CreatePermissionDtoMapper'][], em?: EntityManager): Promise<Dto['PermissionDtoMapper'][]>;
53
+ getPermission(idDto: IdDto, em?: EntityManager): Promise<Dto['PermissionDtoMapper']>;
54
+ getBatchPermissions(idsDto: IdsDto, em?: EntityManager): Promise<Dto['PermissionDtoMapper'][]>;
55
+ private updatePermissionDto;
56
+ updatePermission(permissionDto: Dto['UpdatePermissionDtoMapper'], em?: EntityManager): Promise<Dto['PermissionDtoMapper']>;
57
+ updateBatchPermissions(permissionDtos: Dto['UpdatePermissionDtoMapper'][], em?: EntityManager): Promise<Dto['PermissionDtoMapper'][]>;
58
+ deletePermission(idDto: IdDto, em?: EntityManager): Promise<void>;
59
+ deleteBatchPermissions(idsDto: IdsDto, em?: EntityManager): Promise<void>;
60
+ }
61
+ //# sourceMappingURL=permission.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.service.d.ts","sourceRoot":"","sources":["../../services/permission.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,159 @@
1
+ import { transformIntoInternalDtoMapper } from '@forklaunch/core/dtoMapper';
2
+ export class BasePermissionService {
3
+ em;
4
+ roleServiceFactory;
5
+ openTelemetryCollector;
6
+ schemaValidator;
7
+ dtoMappers;
8
+ #dtoMappers;
9
+ constructor(em, roleServiceFactory, openTelemetryCollector, schemaValidator, dtoMappers) {
10
+ this.em = em;
11
+ this.roleServiceFactory = roleServiceFactory;
12
+ this.openTelemetryCollector = openTelemetryCollector;
13
+ this.schemaValidator = schemaValidator;
14
+ this.dtoMappers = dtoMappers;
15
+ this.#dtoMappers = transformIntoInternalDtoMapper(dtoMappers, schemaValidator);
16
+ }
17
+ // start: global helper functions
18
+ async updateRolesWithPermissions(roles, permissions) {
19
+ return await Promise.all(roles.map(async (role) => {
20
+ permissions.forEach((permission) => role.permissions.add(permission));
21
+ return role;
22
+ }));
23
+ }
24
+ async removePermissionsFromRoles(roles, permissions) {
25
+ return await Promise.all(roles.map(async (role) => {
26
+ permissions.forEach((permission) => role.permissions.remove(permission));
27
+ return role;
28
+ }));
29
+ }
30
+ async getBatchRoles(roleIds, em) {
31
+ return roleIds
32
+ ? (await this.roleServiceFactory().getBatchRoles(roleIds, em)).map((role) => {
33
+ return (em ?? this.em).merge(this.#dtoMappers.RoleDtoMapper.deserializeDtoToEntity(role));
34
+ })
35
+ : [];
36
+ }
37
+ // end: global helper functions
38
+ // start: createPermission helper functions
39
+ async createPermissionDto({ permission, addToRoles }) {
40
+ let roles = [];
41
+ if (addToRoles) {
42
+ roles = await this.updateRolesWithPermissions(addToRoles, [permission]);
43
+ }
44
+ return { permission, roles };
45
+ }
46
+ async extractCreatePermissionDtoToEntityData(permissionDto, em) {
47
+ return {
48
+ permission: (em ?? this.em).merge(this.#dtoMappers.CreatePermissionDtoMapper.deserializeDtoToEntity(permissionDto)),
49
+ addToRoles: permissionDto.addToRolesIds
50
+ ? await this.getBatchRoles({ ids: permissionDto.addToRolesIds }, em)
51
+ : []
52
+ };
53
+ }
54
+ // end: createPermission helper functions
55
+ async createPermission(createPermissionDto, em) {
56
+ const { permission, roles } = await this.createPermissionDto(await this.extractCreatePermissionDtoToEntityData(createPermissionDto, em));
57
+ await (em ?? this.em).transactional(async (innerEm) => {
58
+ await innerEm.persist([permission, ...roles]);
59
+ });
60
+ return this.#dtoMappers.PermissionDtoMapper.serializeEntityToDto(permission);
61
+ }
62
+ async createBatchPermissions(permissionDtos, em) {
63
+ const rolesCache = {};
64
+ const permissions = [];
65
+ await (em ?? this.em).transactional(async (em) => {
66
+ permissionDtos.map(async (createPermissionDto) => {
67
+ const { permission, roles } = await this.createPermissionDto(await this.extractCreatePermissionDtoToEntityData(createPermissionDto, em));
68
+ roles.forEach((role) => {
69
+ if (rolesCache[role.id] &&
70
+ role.permissions !== rolesCache[role.id].permissions) {
71
+ role.permissions.getItems().forEach((permission) => {
72
+ if (!rolesCache[role.id].permissions.contains(permission)) {
73
+ rolesCache[role.id].permissions.add(permission);
74
+ }
75
+ });
76
+ }
77
+ else {
78
+ rolesCache[role.id] = role;
79
+ }
80
+ });
81
+ permissions.push(permission);
82
+ });
83
+ await (em ?? this.em).persist([
84
+ ...permissions,
85
+ ...Object.values(rolesCache)
86
+ ]);
87
+ });
88
+ return permissions.map((permission) => this.#dtoMappers.PermissionDtoMapper.serializeEntityToDto(permission));
89
+ }
90
+ async getPermission(idDto, em) {
91
+ const permission = await (em ?? this.em).findOneOrFail('Permission', idDto);
92
+ return this.#dtoMappers.PermissionDtoMapper.serializeEntityToDto(permission);
93
+ }
94
+ async getBatchPermissions(idsDto, em) {
95
+ return (await (em ?? this.em).find('Permission', idsDto)).map((permission) => this.#dtoMappers.PermissionDtoMapper.serializeEntityToDto(permission));
96
+ }
97
+ // start: updatePermission helper functions
98
+ updatePermissionDto = async (permissionDto, em) => {
99
+ const permission = this.#dtoMappers.UpdatePermissionDtoMapper.deserializeDtoToEntity(permissionDto);
100
+ const addToRoles = permissionDto.addToRolesIds
101
+ ? await this.getBatchRoles({ ids: permissionDto.addToRolesIds }, em)
102
+ : [];
103
+ const removeFromRoles = permissionDto.removeFromRolesIds
104
+ ? await this.getBatchRoles({ ids: permissionDto.removeFromRolesIds }, em)
105
+ : [];
106
+ let roles = [];
107
+ roles = roles.concat(await this.updateRolesWithPermissions(addToRoles, [permission]));
108
+ roles = roles.concat(await this.removePermissionsFromRoles(removeFromRoles, [permission]));
109
+ return {
110
+ permission,
111
+ roles
112
+ };
113
+ };
114
+ // end: updatePermission helper functions
115
+ async updatePermission(permissionDto, em) {
116
+ const { permission, roles } = await this.updatePermissionDto(permissionDto);
117
+ await (em ?? this.em).upsertMany([permission, ...roles]);
118
+ if (!em) {
119
+ this.em.flush();
120
+ }
121
+ return this.#dtoMappers.PermissionDtoMapper.serializeEntityToDto(permission);
122
+ }
123
+ async updateBatchPermissions(permissionDtos, em) {
124
+ const rolesCache = {};
125
+ const permissions = [];
126
+ await (em ?? this.em).transactional(async (em) => {
127
+ permissionDtos.map(async (updatePermissionDto) => {
128
+ const { permission, roles } = await this.updatePermissionDto(updatePermissionDto);
129
+ roles.forEach((role) => {
130
+ if (rolesCache[role.id] &&
131
+ role.permissions !== rolesCache[role.id].permissions) {
132
+ role.permissions.getItems().forEach((permission) => {
133
+ if (!rolesCache[role.id].permissions.contains(permission)) {
134
+ rolesCache[role.id].permissions.add(permission);
135
+ }
136
+ });
137
+ }
138
+ else {
139
+ rolesCache[role.id] = role;
140
+ }
141
+ });
142
+ permissions.push(permission);
143
+ });
144
+ await (em ?? this.em).persist([
145
+ ...permissions,
146
+ ...Object.values(rolesCache)
147
+ ]);
148
+ });
149
+ return permissions.map((permission) => this.#dtoMappers.PermissionDtoMapper.serializeEntityToDto(permission));
150
+ }
151
+ async deletePermission(idDto, em) {
152
+ await (em ?? this.em).nativeDelete('Permission', idDto);
153
+ }
154
+ async deleteBatchPermissions(idsDto, em) {
155
+ await (em ?? this.em).nativeDelete('Permission', {
156
+ id: { $in: idsDto.ids }
157
+ });
158
+ }
159
+ }