@carlonicora/nextjs-jsonapi 1.6.0 → 1.7.0

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 (96) hide show
  1. package/dist/{ApiResponseInterface-CfcC7pPC.d.mts → ApiResponseInterface-DMwITHYP.d.mts} +1 -1
  2. package/dist/{ApiResponseInterface-DTBJaV5R.d.ts → ApiResponseInterface-DWgIAXI-.d.ts} +1 -1
  3. package/dist/{BlockNoteEditor-7FM7B737.js → BlockNoteEditor-IJASTIUZ.js} +14 -18
  4. package/dist/BlockNoteEditor-IJASTIUZ.js.map +1 -0
  5. package/dist/{BlockNoteEditor-RVL76ZAS.mjs → BlockNoteEditor-M6TUP3NT.mjs} +5 -9
  6. package/dist/{BlockNoteEditor-RVL76ZAS.mjs.map → BlockNoteEditor-M6TUP3NT.mjs.map} +1 -1
  7. package/dist/JsonApiRequest-2OM5NDAW.js +24 -0
  8. package/dist/JsonApiRequest-2OM5NDAW.js.map +1 -0
  9. package/dist/{JsonApiRequest-VCCRO732.mjs → JsonApiRequest-SYZ6FGCA.mjs} +2 -3
  10. package/dist/{chunk-SVX7E6RR.js → chunk-4L7OWJ2P.js} +360 -364
  11. package/dist/chunk-4L7OWJ2P.js.map +1 -0
  12. package/dist/{chunk-KFL5ZFM4.mjs → chunk-4U5CJA44.mjs} +732 -20
  13. package/dist/chunk-4U5CJA44.mjs.map +1 -0
  14. package/dist/{chunk-ZUEEIQHW.js → chunk-CKS6SVUK.js} +158 -22
  15. package/dist/chunk-CKS6SVUK.js.map +1 -0
  16. package/dist/{chunk-F4Y3GZG4.mjs → chunk-SAL7XW2G.mjs} +141 -5
  17. package/dist/chunk-SAL7XW2G.mjs.map +1 -0
  18. package/dist/{chunk-ZQTFZKLJ.mjs → chunk-TW4QRJ7D.mjs} +10 -14
  19. package/dist/{chunk-ZQTFZKLJ.mjs.map → chunk-TW4QRJ7D.mjs.map} +1 -1
  20. package/dist/{chunk-2Z56AS2S.js → chunk-U4NADAHN.js} +744 -32
  21. package/dist/chunk-U4NADAHN.js.map +1 -0
  22. package/dist/client/index.d.mts +5 -5
  23. package/dist/client/index.d.ts +5 -5
  24. package/dist/client/index.js +4 -7
  25. package/dist/client/index.js.map +1 -1
  26. package/dist/client/index.mjs +3 -6
  27. package/dist/components/index.d.mts +2 -2
  28. package/dist/components/index.d.ts +2 -2
  29. package/dist/components/index.js +4 -7
  30. package/dist/components/index.js.map +1 -1
  31. package/dist/components/index.mjs +3 -6
  32. package/dist/{config-B43zxEvn.d.mts → config-BdCV25CE.d.mts} +1 -1
  33. package/dist/{config-D2OUrI_G.d.ts → config-C9dt1QiR.d.ts} +1 -1
  34. package/dist/{content.interface-Bs8a7uW6.d.mts → content.interface-B6qP_ABq.d.mts} +1 -1
  35. package/dist/{content.interface-UtsJ-mzs.d.ts → content.interface-DHAFLasV.d.ts} +1 -1
  36. package/dist/contexts/index.d.mts +2 -2
  37. package/dist/contexts/index.d.ts +2 -2
  38. package/dist/contexts/index.js +4 -7
  39. package/dist/contexts/index.js.map +1 -1
  40. package/dist/contexts/index.mjs +3 -6
  41. package/dist/core/index.d.mts +43 -7
  42. package/dist/core/index.d.ts +43 -7
  43. package/dist/core/index.js +29 -3
  44. package/dist/core/index.js.map +1 -1
  45. package/dist/core/index.mjs +28 -2
  46. package/dist/index.d.mts +7 -44
  47. package/dist/index.d.ts +7 -44
  48. package/dist/index.js +20 -4
  49. package/dist/index.js.map +1 -1
  50. package/dist/index.mjs +24 -8
  51. package/dist/{notification.interface-BdcwkuQE.d.mts → notification.interface-agcMYCkg.d.mts} +1 -1
  52. package/dist/{notification.interface-BdcwkuQE.d.ts → notification.interface-agcMYCkg.d.ts} +1 -1
  53. package/dist/s3.service-DYnmymEd.d.mts +350 -0
  54. package/dist/s3.service-DyXjKTqr.d.ts +350 -0
  55. package/dist/server/index.d.mts +5 -235
  56. package/dist/server/index.d.ts +5 -235
  57. package/dist/server/index.js +12 -16
  58. package/dist/server/index.js.map +1 -1
  59. package/dist/server/index.mjs +3 -7
  60. package/dist/server/index.mjs.map +1 -1
  61. package/dist/{useSocket-BWJUXuOl.d.mts → useSocket-91s8M4Xd.d.mts} +1 -1
  62. package/dist/{useSocket-8vwK_R_c.d.ts → useSocket-DSR7vaXj.d.ts} +1 -1
  63. package/package.json +1 -1
  64. package/src/core/index.ts +3 -0
  65. package/src/features/auth/data/index.ts +1 -0
  66. package/src/features/company/data/index.ts +1 -0
  67. package/src/features/content/data/index.ts +1 -0
  68. package/src/features/feature/data/index.ts +1 -0
  69. package/src/features/notification/data/index.ts +1 -0
  70. package/src/features/push/data/index.ts +1 -0
  71. package/src/features/role/data/index.ts +1 -0
  72. package/src/features/s3/data/index.ts +1 -0
  73. package/src/features/user/data/index.ts +1 -0
  74. package/dist/BlockNoteEditor-7FM7B737.js.map +0 -1
  75. package/dist/JsonApiRequest-KOKGVPBI.js +0 -25
  76. package/dist/JsonApiRequest-KOKGVPBI.js.map +0 -1
  77. package/dist/chunk-2Z56AS2S.js.map +0 -1
  78. package/dist/chunk-37NJZ2VD.mjs +0 -637
  79. package/dist/chunk-37NJZ2VD.mjs.map +0 -1
  80. package/dist/chunk-AGAJMJ4T.js +0 -147
  81. package/dist/chunk-AGAJMJ4T.js.map +0 -1
  82. package/dist/chunk-CSM6AIAP.js +0 -98
  83. package/dist/chunk-CSM6AIAP.js.map +0 -1
  84. package/dist/chunk-F4Y3GZG4.mjs.map +0 -1
  85. package/dist/chunk-K4W5QXL5.mjs +0 -98
  86. package/dist/chunk-K4W5QXL5.mjs.map +0 -1
  87. package/dist/chunk-KFL5ZFM4.mjs.map +0 -1
  88. package/dist/chunk-LOSPCUCF.js +0 -637
  89. package/dist/chunk-LOSPCUCF.js.map +0 -1
  90. package/dist/chunk-RBIVEH2K.mjs +0 -147
  91. package/dist/chunk-RBIVEH2K.mjs.map +0 -1
  92. package/dist/chunk-SVX7E6RR.js.map +0 -1
  93. package/dist/chunk-ZUEEIQHW.js.map +0 -1
  94. package/dist/s3.interface-D7ttGatc.d.ts +0 -119
  95. package/dist/s3.interface-DlaMDRTn.d.mts +0 -119
  96. /package/dist/{JsonApiRequest-VCCRO732.mjs.map → JsonApiRequest-SYZ6FGCA.mjs.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/features/auth/data/auth.service.ts","../src/features/user/data/user.service.ts","../src/features/company/data/company.service.ts","../src/features/role/data/role.service.ts","../src/features/content/data/content.service.ts","../src/features/notification/data/notification.service.ts","../src/features/feature/data/feature.service.ts","../src/features/push/data/push.service.ts","../src/features/s3/data/s3.service.ts"],"sourcesContent":["import { AuthInput, AuthInterface } from \".\";\nimport { JsonApiDelete, JsonApiGet, JsonApiPost } from \"../../../unified\";\nimport {\n AbstractService,\n ApiResponseInterface,\n EndpointCreator,\n HttpMethod,\n JsonApiHydratedDataInterface,\n Modules,\n rehydrate,\n} from \"../../../core\";\nimport { UserInterface } from \"../../user\";\nimport { getTokenHandler } from \"../config\";\n\nexport class AuthService extends AbstractService {\n static async login(params: { email: string; password: string; language?: string }): Promise<UserInterface> {\n const language = params.language || \"en-US\";\n\n const apiResponse: ApiResponseInterface = await JsonApiPost({\n classKey: Modules.Auth,\n endpoint: new EndpointCreator({ endpoint: Modules.Auth, id: \"login\" }).generate(),\n body: { email: params.email, password: params.password } as AuthInput,\n language: language,\n });\n\n if (!apiResponse.ok) throw new Error(apiResponse.error);\n\n const auth = apiResponse.data as AuthInterface;\n\n // Use injected token handler if configured\n const handler = getTokenHandler();\n if (handler) {\n await handler.updateToken({\n token: auth.token,\n refreshToken: auth.refreshToken,\n userId: auth.user.id,\n companyId: auth.user.company?.id,\n licenseExpirationDate: auth.user.company?.licenseExpirationDate,\n roles: auth.user.roles.map((role) => role.id),\n features: auth.user.company?.features?.map((feature) => feature.id) ?? [],\n modules: auth.user.modules.map((module) => ({\n id: module.id,\n permissions: module.permissions,\n })),\n });\n }\n\n return auth.user;\n }\n\n static async logout(params?: { language?: string }): Promise<void> {\n const language = params?.language || \"en-US\";\n\n await JsonApiDelete({\n classKey: Modules.Auth,\n endpoint: new EndpointCreator({ endpoint: Modules.Auth }).generate(),\n language: language,\n });\n\n // Use injected token handler if configured\n const handler = getTokenHandler();\n if (handler) {\n await handler.removeToken();\n }\n }\n\n static async initialiseForgotPassword(params: { email: string; language?: string }): Promise<void> {\n const language = params.language || \"en-US\";\n\n const response: ApiResponseInterface = await JsonApiPost({\n classKey: Modules.Auth,\n endpoint: new EndpointCreator({ endpoint: Modules.Auth, id: \"forgot\" }).generate(),\n body: { email: params.email } as AuthInput,\n language: language,\n });\n\n if (!response.ok) {\n throw new Error(response.error);\n }\n }\n\n static async register(params: AuthInput): Promise<void> {\n const endpoint = new EndpointCreator({ endpoint: Modules.Auth, id: \"register\" });\n\n await this.callApi({\n type: Modules.Auth,\n method: HttpMethod.POST,\n endpoint: endpoint.generate(),\n input: params,\n });\n }\n\n static async activate(params: { activationCode: string }): Promise<void> {\n const endpoint = new EndpointCreator({\n endpoint: Modules.Auth,\n id: \"activate\",\n childEndpoint: params.activationCode,\n });\n\n await this.callApi({ type: Modules.Auth, method: HttpMethod.POST, endpoint: endpoint.generate() });\n }\n\n static async validateCode(params: { code: string; language?: string }): Promise<void> {\n const language = params.language || \"en-US\";\n\n const apiResponse: ApiResponseInterface = await JsonApiGet({\n classKey: Modules.Auth,\n endpoint: new EndpointCreator({ endpoint: Modules.Auth, id: \"validate\", childEndpoint: params.code }).generate(),\n language: language,\n });\n\n if (!apiResponse.ok) throw new Error(apiResponse.error);\n }\n\n static async resetPassword(params: { code: string; password: string }): Promise<void> {\n const endpoint = new EndpointCreator({ endpoint: Modules.Auth, id: \"reset\", childEndpoint: params.code });\n\n const input: AuthInput = { password: params.password };\n\n await this.callApi({ type: Modules.Auth, method: HttpMethod.POST, endpoint: endpoint.generate(), input: input });\n }\n\n static async acceptInvitation(params: { code: string; password: string }): Promise<void> {\n const endpoint = new EndpointCreator({ endpoint: Modules.Auth, id: \"invitation\", childEndpoint: params.code });\n\n const input: AuthInput = { password: params.password };\n\n await this.callApi({ type: Modules.Auth, method: HttpMethod.POST, endpoint: endpoint.generate(), input: input });\n }\n\n static async findToken(params: { tokenCode: string }): Promise<AuthInterface> {\n return await this.callApi<AuthInterface>({\n type: Modules.Auth,\n method: HttpMethod.POST,\n endpoint: new EndpointCreator({ endpoint: Modules.Auth }).addAdditionalParam(\"code\", params.tokenCode).generate(),\n });\n }\n\n static async saveToken(params: { dehydratedAuth: JsonApiHydratedDataInterface }): Promise<void> {\n const auth: AuthInterface = rehydrate(Modules.Auth, params.dehydratedAuth) as AuthInterface;\n\n const handler = getTokenHandler();\n if (handler) {\n await handler.updateToken({\n token: auth.token,\n refreshToken: auth.refreshToken,\n userId: auth.user.id,\n companyId: auth.user.company?.id,\n licenseExpirationDate: auth.user.company?.licenseExpirationDate,\n roles: auth.user.roles.map((role) => role.id),\n features: auth.user.company?.features?.map((feature) => feature.id) ?? [],\n modules: auth.user.modules.map((module) => ({\n id: module.id,\n permissions: module.permissions,\n })),\n });\n }\n }\n}\n","import { AbstractService, EndpointCreator, HttpMethod, Modules, NextRef, PreviousRef } from \"../../../core\";\nimport { UserInput, UserInterface } from \"./user.interface\";\n\nexport class UserService extends AbstractService {\n static async findFullUser(): Promise<UserInterface> {\n const endpoint = new EndpointCreator({ endpoint: Modules.User, id: \"me\", childEndpoint: \"full\" });\n\n return this.callApi<UserInterface>({\n type: Modules.User,\n method: HttpMethod.GET,\n endpoint: endpoint.generate(),\n });\n }\n\n static async findById(params: { userId: string }): Promise<UserInterface> {\n return this.callApi<UserInterface>({\n type: Modules.User,\n method: HttpMethod.GET,\n endpoint: new EndpointCreator({ endpoint: Modules.User, id: params.userId }).generate(),\n });\n }\n\n static async findByEmail(params: { email: string }): Promise<UserInterface> {\n const endpoint = new EndpointCreator({ endpoint: Modules.User, id: \"email\", childEndpoint: params.email });\n\n return this.callApi<UserInterface>({ type: Modules.User, method: HttpMethod.GET, endpoint: endpoint.generate() });\n }\n\n static async findMany(params: {\n roleId?: string;\n search?: string;\n fetchAll?: boolean;\n includeDeleted?: boolean;\n next?: NextRef;\n prev?: PreviousRef;\n }): Promise<UserInterface[]> {\n const endpoint = new EndpointCreator({ endpoint: Modules.User });\n\n if (params.roleId) endpoint.addAdditionalParam(\"roleId\", params.roleId);\n\n if (params.includeDeleted) endpoint.addAdditionalParam(\"includeDeleted\", \"true\");\n if (params.fetchAll) endpoint.addAdditionalParam(\"fetchAll\", \"true\");\n if (params.search) endpoint.addAdditionalParam(\"search\", params.search);\n\n return this.callApi({\n type: Modules.User,\n method: HttpMethod.GET,\n endpoint: endpoint.generate(),\n next: params.next,\n });\n }\n\n static async findManyByContentIds(params: {\n contentIds: string[];\n search?: string;\n next?: NextRef;\n prev?: PreviousRef;\n }): Promise<UserInterface[]> {\n const endpoint = new EndpointCreator({ endpoint: Modules.User });\n\n endpoint.addAdditionalParam(\"contentIds\", params.contentIds.map((id) => id).join(\",\"));\n endpoint.addAdditionalParam(\"includeDeleted\", \"true\");\n endpoint.addAdditionalParam(\"fetchAll\", \"true\");\n if (params.search) endpoint.addAdditionalParam(\"search\", params.search);\n\n return this.callApi({\n type: Modules.User,\n method: HttpMethod.GET,\n endpoint: endpoint.generate(),\n next: params.next,\n });\n }\n\n static async findRelevant(params: { id: string; next?: NextRef; prev?: PreviousRef }): Promise<UserInterface[]> {\n const endpoint: EndpointCreator = new EndpointCreator({\n endpoint: Modules.Content,\n id: params.id,\n childEndpoint: \"user-relevance\",\n });\n\n if (Modules.User.inclusions?.lists?.fields) endpoint.limitToFields(Modules.User.inclusions.lists.fields);\n if (Modules.User.inclusions?.lists?.types) endpoint.limitToType(Modules.User.inclusions.lists.types);\n\n return this.callApi<UserInterface[]>({\n type: Modules.User,\n method: HttpMethod.GET,\n endpoint: endpoint.generate(),\n next: params.next,\n });\n }\n\n static async findManyForAmin(params: {\n companyId?: string;\n search?: string;\n next?: NextRef;\n prev?: PreviousRef;\n }): Promise<UserInterface[]> {\n if (!params.companyId) return [];\n\n const endpoint = new EndpointCreator({\n endpoint: Modules.Company,\n id: params.companyId,\n childEndpoint: Modules.User,\n });\n\n if (params.search) endpoint.addAdditionalParam(\"search\", params.search);\n\n return this.callApi({\n type: Modules.User,\n method: HttpMethod.GET,\n endpoint: endpoint.generate(),\n next: params.next,\n previous: params.prev,\n });\n }\n\n static async findAllUsers(params: {\n companyId: string;\n search?: string;\n limitToRoles?: string[];\n isDeleted?: boolean;\n next?: NextRef;\n prev?: PreviousRef;\n }): Promise<UserInterface[]> {\n const endpoint = new EndpointCreator({\n endpoint: Modules.Company,\n id: params.companyId,\n childEndpoint: Modules.User,\n });\n\n if (params.search) endpoint.addAdditionalParam(\"search\", params.search);\n if (params.isDeleted) endpoint.addAdditionalParam(\"isDeleted\", \"true\");\n if (params.limitToRoles && params.limitToRoles.length > 0)\n endpoint.addAdditionalParam(\"limitToRoles\", params.limitToRoles.join(\",\"));\n\n return this.callApi({\n type: Modules.User,\n method: HttpMethod.GET,\n endpoint: endpoint.generate(),\n next: params.next,\n });\n }\n\n static async findAllUsersByRole(params: {\n roleId: string;\n search?: string;\n next?: NextRef;\n prev?: PreviousRef;\n }): Promise<UserInterface[]> {\n const endpoint = new EndpointCreator({ endpoint: Modules.Role, id: params.roleId, childEndpoint: Modules.User });\n\n if (params.search) endpoint.addAdditionalParam(\"search\", params.search);\n\n return this.callApi({\n type: Modules.User,\n method: HttpMethod.GET,\n endpoint: endpoint.generate(),\n next: params.next,\n });\n }\n\n static async findAllUsersNotInRole(params: {\n roleId: string;\n search?: string;\n next?: NextRef;\n prev?: PreviousRef;\n }): Promise<UserInterface[]> {\n const endpoint = new EndpointCreator({\n endpoint: Modules.Role,\n id: params.roleId,\n childEndpoint: Modules.User,\n }).addAdditionalParam(\"notInRole\", \"true\");\n\n if (params.search) endpoint.addAdditionalParam(\"search\", params.search);\n\n return this.callApi({\n type: Modules.User,\n method: HttpMethod.GET,\n endpoint: endpoint.generate(),\n next: params.next,\n });\n }\n\n static async create(params: UserInput): Promise<UserInterface> {\n return this.callApi({\n type: Modules.User,\n method: HttpMethod.POST,\n endpoint: new EndpointCreator({ endpoint: Modules.User }).generate(),\n companyId: params.companyId,\n input: params,\n });\n }\n\n static async reactivate(params: { userId: string }): Promise<UserInterface> {\n return this.callApi({\n type: Modules.User,\n method: HttpMethod.PATCH,\n endpoint: new EndpointCreator({ endpoint: Modules.User, id: params.userId }).generate(),\n });\n }\n\n static async sendInvitation(params: { userId: string; companyId?: string }): Promise<void> {\n const endpoint = new EndpointCreator({\n endpoint: Modules.User,\n id: params.userId,\n childEndpoint: \"send-invitation-email\",\n });\n\n if (params.companyId) endpoint.addAdditionalParam(\"companyId\", params.companyId);\n\n this.callApi({\n type: Modules.User,\n method: HttpMethod.POST,\n endpoint: endpoint.generate(),\n });\n }\n\n static async update(params: UserInput): Promise<UserInterface> {\n return this.callApi({\n type: Modules.User,\n method: HttpMethod.PUT,\n endpoint: new EndpointCreator({ endpoint: Modules.User, id: params.id }).generate(),\n companyId: params.companyId,\n input: params,\n });\n }\n\n static async patchRate(params: UserInput): Promise<UserInterface> {\n return this.callApi({\n type: Modules.User,\n method: HttpMethod.PATCH,\n endpoint: new EndpointCreator({ endpoint: Modules.User, id: params.id, childEndpoint: \"rates\" }).generate(),\n companyId: params.companyId,\n input: params,\n });\n }\n\n static async delete(params: { userId: string; companyId: string }): Promise<void> {\n await this.callApi({\n type: Modules.User,\n method: HttpMethod.DELETE,\n endpoint: new EndpointCreator({ endpoint: Modules.User, id: params.userId }).generate(),\n companyId: params.companyId,\n });\n }\n}\n","import { AbstractService, EndpointCreator, HttpMethod, Modules, NextRef } from \"../../../core\";\nimport { CompanyInput, CompanyInterface } from \"./company.interface\";\n\nexport class CompanyService extends AbstractService {\n static async findOne(params: { companyId: string }): Promise<CompanyInterface> {\n return this.callApi<CompanyInterface>({\n type: Modules.Company,\n method: HttpMethod.GET,\n endpoint: new EndpointCreator({ endpoint: Modules.Company, id: params.companyId }).generate(),\n });\n }\n\n static async findMany(params: { search?: string; next?: NextRef }): Promise<CompanyInterface[]> {\n const endpoint = new EndpointCreator({ endpoint: Modules.Company });\n\n if (params.search) endpoint.addAdditionalParam(\"search\", params.search);\n\n return this.callApi<CompanyInterface[]>({\n type: Modules.Company,\n method: HttpMethod.GET,\n endpoint: endpoint.generate(),\n next: params.next,\n });\n }\n\n static async delete(params: { companyId: string }): Promise<void> {\n await this.callApi({\n type: Modules.Company,\n method: HttpMethod.DELETE,\n endpoint: new EndpointCreator({ endpoint: Modules.Company, id: params.companyId }).generate(),\n });\n }\n\n static async create(params: CompanyInput): Promise<CompanyInterface> {\n return this.callApi({\n type: Modules.Company,\n method: HttpMethod.POST,\n endpoint: new EndpointCreator({ endpoint: Modules.Company }).generate(),\n input: params,\n });\n }\n\n static async update(params: CompanyInput): Promise<CompanyInterface> {\n return this.callApi({\n type: Modules.Company,\n method: HttpMethod.PUT,\n endpoint: new EndpointCreator({ endpoint: Modules.Company, id: params.id }).generate(),\n input: params,\n });\n }\n\n static async updateConfigurations(params: CompanyInput): Promise<CompanyInterface> {\n return this.callApi({\n type: Modules.Company,\n method: HttpMethod.PUT,\n endpoint: new EndpointCreator({\n endpoint: Modules.Company,\n id: params.id,\n childEndpoint: \"configurations\",\n }).generate(),\n input: params,\n });\n }\n\n static async activateLicense(params: CompanyInput): Promise<CompanyInterface> {\n return this.callApi({\n type: Modules.Company,\n method: HttpMethod.PUT,\n endpoint: new EndpointCreator({ endpoint: Modules.Company, id: params.id, childEndpoint: \"license\" }).generate(),\n input: params,\n });\n }\n}\n","import { AbstractService, EndpointCreator, HttpMethod, Modules, NextRef, PreviousRef } from \"../../../core\";\nimport { RoleInput, RoleInterface } from \"./role.interface\";\n\nexport class RoleService extends AbstractService {\n static async findById(params: { roleId: string }): Promise<RoleInterface> {\n return this.callApi<RoleInterface>({\n type: Modules.Role,\n method: HttpMethod.GET,\n endpoint: new EndpointCreator({ endpoint: Modules.Role, id: params.roleId }).generate(),\n });\n }\n\n static async findAllRoles(params: { search?: string; next?: NextRef }): Promise<RoleInterface[]> {\n const endpoint = new EndpointCreator({ endpoint: Modules.Role });\n\n if (params.search) endpoint.addAdditionalParam(\"search\", params.search);\n\n return this.callApi({\n type: Modules.Role,\n method: HttpMethod.GET,\n endpoint: endpoint.generate(),\n next: params.next,\n });\n }\n\n static async findAllRolesByUser(params: {\n userId: string;\n search?: string;\n next?: NextRef;\n prev?: PreviousRef;\n }): Promise<RoleInterface[]> {\n const endpoint = new EndpointCreator({ endpoint: Modules.User, id: params.userId, childEndpoint: Modules.Role });\n\n if (params.search) endpoint.addAdditionalParam(\"search\", params.search);\n\n return this.callApi({\n type: Modules.Role,\n method: HttpMethod.GET,\n endpoint: endpoint.generate(),\n next: params.next,\n });\n }\n\n static async findAllRolesUserNotIn(params: {\n userId: string;\n search?: string;\n next?: NextRef;\n prev?: PreviousRef;\n }): Promise<RoleInterface[]> {\n const endpoint = new EndpointCreator({\n endpoint: Modules.User,\n id: params.userId,\n childEndpoint: Modules.Role,\n }).addAdditionalParam(\"userNotIn\", \"true\");\n\n if (params.search) endpoint.addAdditionalParam(\"search\", params.search);\n\n return this.callApi({\n type: Modules.Role,\n method: HttpMethod.GET,\n endpoint: endpoint.generate(),\n next: params.next,\n });\n }\n\n static async addUserToRole(params: { userId: string; roleId: string }): Promise<void> {\n this.callApi<RoleInterface>({\n type: Modules.Role,\n method: HttpMethod.POST,\n endpoint: new EndpointCreator({\n endpoint: Modules.Role,\n id: params.roleId,\n childEndpoint: Modules.User,\n childId: params.userId,\n }).generate(),\n });\n }\n\n static async removeUserFromRole(params: { userId: string; roleId: string }): Promise<void> {\n this.callApi<RoleInterface>({\n type: Modules.Role,\n method: HttpMethod.DELETE,\n endpoint: new EndpointCreator({\n endpoint: Modules.Role,\n id: params.roleId,\n childEndpoint: Modules.User,\n childId: params.userId,\n }).generate(),\n });\n }\n\n static async create(params: { roleId: string; name: string; description?: string }): Promise<RoleInterface> {\n return this.callApi<RoleInterface>({\n type: Modules.Role,\n method: HttpMethod.POST,\n endpoint: new EndpointCreator({ endpoint: Modules.Role }).generate(),\n input: { id: params.roleId, name: params.name, description: params.description } as RoleInput,\n });\n }\n\n static async update(params: { roleId: string; name: string; description?: string }): Promise<RoleInterface> {\n return this.callApi<RoleInterface>({\n type: Modules.Role,\n method: HttpMethod.PUT,\n endpoint: new EndpointCreator({ endpoint: Modules.Role, id: params.roleId }).generate(),\n input: { id: params.roleId, name: params.name, description: params.description } as RoleInput,\n });\n }\n\n static async delete(params: { roleId: string }): Promise<RoleInterface> {\n return this.callApi<RoleInterface>({\n type: Modules.Role,\n method: HttpMethod.DELETE,\n endpoint: new EndpointCreator({ endpoint: Modules.Role, id: params.roleId }).generate(),\n });\n }\n}\n","import { AbstractService, EndpointCreator, HttpMethod, Modules, NextRef, PreviousRef } from \"../../../core\";\nimport { ContentInterface } from \"./content.interface\";\n\nexport class ContentService extends AbstractService {\n static async findMany(params: {\n contentIds?: string[];\n search?: string;\n fetchAll?: boolean;\n next?: NextRef;\n prev?: PreviousRef;\n }): Promise<ContentInterface[]> {\n const endpoint = new EndpointCreator({ endpoint: Modules.Content });\n\n if (params.contentIds) {\n endpoint.addAdditionalParam(\"contentIds\", params.contentIds.join(\",\"));\n endpoint.addAdditionalParam(\"fetchAll\", \"true\");\n } else {\n if (params.fetchAll) endpoint.addAdditionalParam(\"fetchAll\", \"true\");\n if (params.search) endpoint.addAdditionalParam(\"search\", params.search);\n }\n if (Modules.Content.inclusions?.lists?.fields) endpoint.limitToFields(Modules.Content.inclusions.lists.fields);\n if (Modules.Content.inclusions?.lists?.types) endpoint.limitToType(Modules.Content.inclusions.lists.types);\n\n return this.callApi({\n type: Modules.Content,\n method: HttpMethod.GET,\n endpoint: endpoint.generate(),\n next: params.next,\n });\n }\n\n static async findRelevant(params: { id: string; next?: NextRef; prev?: PreviousRef }): Promise<ContentInterface[]> {\n const endpoint: EndpointCreator = new EndpointCreator({\n endpoint: Modules.Content,\n id: params.id,\n childEndpoint: \"relevance\",\n });\n\n if (Modules.Content.inclusions?.lists?.fields) endpoint.limitToFields(Modules.Content.inclusions.lists.fields);\n if (Modules.Content.inclusions?.lists?.types) endpoint.limitToType(Modules.Content.inclusions.lists.types);\n\n return this.callApi<ContentInterface[]>({\n type: Modules.Content,\n method: HttpMethod.GET,\n endpoint: endpoint.generate(),\n next: params.next,\n });\n }\n\n static async findManyByAuthor(params: {\n userId: string;\n search?: string;\n fetchAll?: boolean;\n next?: NextRef;\n prev?: PreviousRef;\n }): Promise<ContentInterface[]> {\n const endpoint = new EndpointCreator({\n endpoint: Modules.Author,\n id: params.userId,\n childEndpoint: Modules.Content,\n });\n\n if (params.fetchAll) endpoint.addAdditionalParam(\"fetchAll\", \"true\");\n if (params.search) endpoint.addAdditionalParam(\"search\", params.search);\n if (Modules.Content.inclusions?.lists?.fields) endpoint.limitToFields(Modules.Content.inclusions.lists.fields);\n if (Modules.Content.inclusions?.lists?.types) endpoint.limitToType(Modules.Content.inclusions.lists.types);\n\n return this.callApi({\n type: Modules.Content,\n method: HttpMethod.GET,\n endpoint: endpoint.generate(),\n next: params.next,\n });\n }\n}\n","import { AbstractService, EndpointCreator, HttpMethod, Modules, NextRef } from \"../../../core\";\nimport { NotificationInterface } from \"./notification.interface\";\n\nexport class NotificationService extends AbstractService {\n static async findMany(params: { isArchived?: boolean; next?: NextRef }): Promise<NotificationInterface[]> {\n const endpoint = new EndpointCreator({ endpoint: Modules.Notification });\n\n if (params.isArchived) endpoint.addAdditionalParam(\"isArchived\", \"true\");\n\n return this.callApi<NotificationInterface[]>({\n type: Modules.Notification,\n method: HttpMethod.GET,\n endpoint: endpoint.generate(),\n next: params.next,\n });\n }\n\n static async markAsRead(params: { data: any }): Promise<void> {\n const endpoint = new EndpointCreator({ endpoint: Modules.Notification });\n await this.callApi({\n type: Modules.Notification,\n method: HttpMethod.PATCH,\n endpoint: endpoint.generate(),\n input: params.data,\n overridesJsonApiCreation: true,\n });\n }\n\n static async archive(params: { id: string }): Promise<void> {\n const endpoint = new EndpointCreator({ endpoint: Modules.Notification, id: params.id, childEndpoint: \"archive\" });\n\n await this.callApi({ type: Modules.Notification, method: HttpMethod.POST, endpoint: endpoint.generate() });\n }\n}\n","import { AbstractService, EndpointCreator, HttpMethod, Modules, NextRef } from \"../../../core\";\nimport { FeatureInterface } from \"./feature.interface\";\n\nexport class FeatureService extends AbstractService {\n static async findMany(params: { companyId?: string; search?: string; next?: NextRef }): Promise<FeatureInterface[]> {\n const endpoint = new EndpointCreator({ endpoint: Modules.Feature });\n\n if (params.companyId) endpoint.endpoint(Modules.Company).id(params.companyId).childEndpoint(Modules.Feature);\n\n if (params.search) endpoint.addAdditionalParam(\"search\", params.search);\n\n return this.callApi<FeatureInterface[]>({\n type: Modules.Feature,\n method: HttpMethod.GET,\n endpoint: endpoint.generate(),\n next: params.next,\n });\n }\n}\n","import { AbstractService, HttpMethod } from \"../../../core\";\nimport { EndpointCreator } from \"../../../core\";\nimport { Modules } from \"../../../core\";\n\nexport class PushService extends AbstractService {\n static async register(params: { data: any }): Promise<void> {\n const endpoint = new EndpointCreator({ endpoint: Modules.Push });\n\n await this.callApi({\n type: Modules.Push,\n method: HttpMethod.POST,\n endpoint: endpoint.generate(),\n input: params.data,\n overridesJsonApiCreation: true,\n });\n }\n}\n","import { AbstractService, EndpointCreator, HttpMethod, Modules } from \"../../../core\";\nimport { S3Interface } from \"./s3.interface\";\n\nexport class S3Service extends AbstractService {\n static async getPreSignedUrl(params: { key: string; contentType: string; isPublic?: boolean }): Promise<S3Interface> {\n const endpoint = new EndpointCreator({ endpoint: Modules.S3 })\n .addAdditionalParam(\"key\", params.key)\n .addAdditionalParam(\"contentType\", params.contentType);\n\n if (params.isPublic) endpoint.addAdditionalParam(\"isPublic\", \"true\");\n\n return this.callApi<S3Interface>({ type: Modules.S3, method: HttpMethod.GET, endpoint: endpoint.generate() });\n }\n\n static async getSignedUrl(params: { key: string; isPublic?: boolean }): Promise<S3Interface> {\n const endpoint = new EndpointCreator({ endpoint: Modules.S3, id: \"sign\" }).addAdditionalParam(\"key\", params.key);\n\n if (params.isPublic) endpoint.addAdditionalParam(\"isPublic\", \"true\");\n\n return this.callApi<S3Interface>({ type: Modules.S3, method: HttpMethod.GET, endpoint: endpoint.generate() });\n }\n\n static async deleteFile(params: { key: string }): Promise<void> {\n this.callApi<S3Interface>({\n type: Modules.S3,\n method: HttpMethod.DELETE,\n endpoint: new EndpointCreator({ endpoint: Modules.S3 }).addAdditionalParam(\"key\", params.key).generate(),\n });\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,147 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;
2
-
3
- var _chunk7QVYU63Ejs = require('./chunk-7QVYU63E.js');
4
-
5
- // src/core/registry/DataClassRegistry.ts
6
- var DataClassRegistry = (_class = class {
7
- static {
8
- _chunk7QVYU63Ejs.__name.call(void 0, this, "DataClassRegistry");
9
- }
10
- static __initStatic() {this._map = /* @__PURE__ */ new Map()}
11
- static registerObjectClass(key, classConstructor) {
12
- const classKey = key.name;
13
- if (!this._map.has(classKey)) {
14
- this._map.set(classKey, classConstructor);
15
- }
16
- }
17
- static get(classKey) {
18
- const response = this._map.get(classKey.name);
19
- if (!response) {
20
- throw new Error(`Class not registered for key: ${typeof classKey === "string" ? classKey : classKey.name}`);
21
- }
22
- return response;
23
- }
24
- /**
25
- * Bootstrap the registry with all modules.
26
- * This is a convenience method for apps to register all their modules at once.
27
- *
28
- * @param modules - An object with module definitions (like the app's Modules class)
29
- */
30
- static bootstrap(modules) {
31
- Object.values(modules).forEach((module) => {
32
- if (module && module.model) {
33
- this.registerObjectClass(module, module.model);
34
- }
35
- });
36
- }
37
- /**
38
- * Clear all registered classes. Useful for testing.
39
- */
40
- static clear() {
41
- this._map.clear();
42
- }
43
- }, _class.__initStatic(), _class);
44
-
45
- // src/core/factories/JsonApiDataFactory.ts
46
- var JsonApiDataFactory = class {
47
- static {
48
- _chunk7QVYU63Ejs.__name.call(void 0, this, "JsonApiDataFactory");
49
- }
50
- static create(classKey, data) {
51
- const factoryClass = DataClassRegistry.get(classKey);
52
- const instance = new factoryClass();
53
- return instance.createJsonApi(data);
54
- }
55
- };
56
-
57
- // src/core/utils/translateResponse.ts
58
- function translateData(params) {
59
- const factoryClass = DataClassRegistry.get(params.classKey);
60
- if (!factoryClass) {
61
- throw new Error(
62
- `Class not registered for key: ${typeof params.classKey === "string" ? params.classKey : params.classKey.name}`
63
- );
64
- }
65
- const included = _nullishCoalesce(params.data.included, () => ( []));
66
- if (Array.isArray(params.data.data)) {
67
- const responseData = [];
68
- for (const data of params.data.data) {
69
- const object = new factoryClass();
70
- object.rehydrate({ jsonApi: data, included, allData: params.data.data });
71
- responseData.push(object);
72
- }
73
- return responseData;
74
- } else {
75
- const responseData = new factoryClass();
76
- responseData.rehydrate({
77
- jsonApi: params.data.data,
78
- included
79
- });
80
- return responseData;
81
- }
82
- }
83
- _chunk7QVYU63Ejs.__name.call(void 0, translateData, "translateData");
84
- async function translateResponse(params) {
85
- const response = {
86
- ok: true,
87
- response: 0,
88
- data: [],
89
- error: ""
90
- };
91
- const factoryClass = DataClassRegistry.get(params.classKey);
92
- if (!factoryClass) {
93
- throw new Error(
94
- `Class not registered for key: ${typeof params.classKey === "string" ? params.classKey : params.classKey.name}`
95
- );
96
- }
97
- response.ok = params.apiResponse.ok;
98
- response.response = params.apiResponse.status;
99
- if (!params.apiResponse.ok) {
100
- response.error = _nullishCoalesce(_optionalChain([params, 'access', _ => _.apiResponse, 'optionalAccess', _2 => _2.data, 'optionalAccess', _3 => _3.message]), () => ( params.apiResponse.statusText));
101
- return response;
102
- }
103
- if (params.apiResponse.status === 204) return response;
104
- response.raw = params.apiResponse.data;
105
- try {
106
- const included = _nullishCoalesce(params.apiResponse.data.included, () => ( []));
107
- if (params.apiResponse.data.links) {
108
- response.self = params.apiResponse.data.links.self;
109
- if (params.apiResponse.data.links.next && params.paginationHandler) {
110
- response.next = params.apiResponse.data.links.next;
111
- response.nextPage = async () => params.paginationHandler(params.apiResponse.data.links.next);
112
- }
113
- if (params.apiResponse.data.links.prev && params.paginationHandler) {
114
- response.prev = params.apiResponse.data.links.prev;
115
- response.prevPage = async () => params.paginationHandler(params.apiResponse.data.links.prev);
116
- }
117
- }
118
- if (Array.isArray(params.apiResponse.data.data)) {
119
- const responseData = [];
120
- for (const data of params.apiResponse.data.data) {
121
- const object = new factoryClass();
122
- object.rehydrate({ jsonApi: data, included, allData: params.apiResponse.data.data });
123
- responseData.push(object);
124
- }
125
- response.data = responseData;
126
- } else {
127
- const responseData = new factoryClass();
128
- responseData.rehydrate({
129
- jsonApi: params.apiResponse.data.data,
130
- included
131
- });
132
- response.data = responseData;
133
- }
134
- } catch (e) {
135
- console.error(e);
136
- }
137
- return response;
138
- }
139
- _chunk7QVYU63Ejs.__name.call(void 0, translateResponse, "translateResponse");
140
-
141
-
142
-
143
-
144
-
145
-
146
- exports.DataClassRegistry = DataClassRegistry; exports.JsonApiDataFactory = JsonApiDataFactory; exports.translateData = translateData; exports.translateResponse = translateResponse;
147
- //# sourceMappingURL=chunk-AGAJMJ4T.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-AGAJMJ4T.js","../src/core/registry/DataClassRegistry.ts","../src/core/factories/JsonApiDataFactory.ts","../src/core/utils/translateResponse.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACA;ACDO,IAAM,kBAAA,YAAN,MAAwB;AAAA,EAH/B,OAG+B;AAAA,IAAA,qCAAA,IAAA,EAAA,mBAAA,CAAA;AAAA,EAAA;AAAA,EAC7B,4BAAe,KAAA,kBAAO,IAAI,GAAA,CAA0C,EAAA;AAAA,EAEpE,OAAc,mBAAA,CACZ,GAAA,EACA,gBAAA,EACM;AACN,IAAA,MAAM,SAAA,EAAW,GAAA,CAAI,IAAA;AACrB,IAAA,GAAA,CAAI,CAAC,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA,EAAG;AAC5B,MAAA,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,QAAA,EAAU,gBAAgB,CAAA;AAAA,IAC1C;AAAA,EACF;AAAA,EAEA,OAAc,GAAA,CAAI,QAAA,EAEhB;AACA,IAAA,MAAM,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,QAAA,CAAS,IAAI,CAAA;AAC5C,IAAA,GAAA,CAAI,CAAC,QAAA,EAAU;AACb,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,8BAAA,EAAiC,OAAO,SAAA,IAAa,SAAA,EAAW,SAAA,EAAW,QAAA,CAAS,IAAI,CAAA,CAAA;AAC1G,IAAA;AAEO,IAAA;AACT,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQoF,EAAA;AACvC,IAAA;AACb,MAAA;AACmB,QAAA;AAC/C,MAAA;AACD,IAAA;AACH,EAAA;AAAA;AAAA;AAAA;AAK4B,EAAA;AACV,IAAA;AAClB,EAAA;AACF;ADJ+G;AACA;AExC/E;AAAA,EAAA;AAAA,IAAA;AAAA,EAAA;AAC8C,EAAA;AACvB,IAAA;AAEjB,IAAA;AACA,IAAA;AACpC,EAAA;AACF;AF4C+G;AACA;AG3CnG;AACgD,EAAA;AAEvC,EAAA;AACP,IAAA;AACiG,MAAA;AAC3G,IAAA;AACF,EAAA;AAE+C,EAAA;AAEV,EAAA;AACR,IAAA;AAEU,IAAA;AACH,MAAA;AACiD,MAAA;AACpD,MAAA;AAC/B,IAAA;AAEO,IAAA;AACF,EAAA;AACiC,IAAA;AACf,IAAA;AACA,MAAA;AACrB,MAAA;AACD,IAAA;AAEM,IAAA;AACT,EAAA;AACF;AAjCgB;AA6CkB;AACO,EAAA;AACjC,IAAA;AACM,IAAA;AACH,IAAA;AACA,IAAA;AACT,EAAA;AAE0D,EAAA;AAEvC,EAAA;AACP,IAAA;AACiG,MAAA;AAC3G,IAAA;AACF,EAAA;AAEiC,EAAA;AACM,EAAA;AAEX,EAAA;AAC+C,IAAA;AAClE,IAAA;AACT,EAAA;AAE8C,EAAA;AAEZ,EAAA;AAE9B,EAAA;AACyD,IAAA;AAExB,IAAA;AACa,MAAA;AAEsB,MAAA;AACpB,QAAA;AAC8C,QAAA;AAC9F,MAAA;AAEoE,MAAA;AACpB,QAAA;AAC8C,QAAA;AAC9F,MAAA;AACF,IAAA;AAEiD,IAAA;AACpB,MAAA;AAEsB,MAAA;AACf,QAAA;AAC6D,QAAA;AAChE,QAAA;AAC/B,MAAA;AAEgB,MAAA;AACX,IAAA;AACiC,MAAA;AACf,MAAA;AACY,QAAA;AACjC,QAAA;AACD,MAAA;AAEe,MAAA;AAClB,IAAA;AACU,EAAA;AACK,IAAA;AACjB,EAAA;AAEO,EAAA;AACT;AA3EsB;AH0FyF;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-AGAJMJ4T.js","sourcesContent":[null,"import { ApiDataInterface } from \"../interfaces/ApiDataInterface\";\nimport { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\n\nexport class DataClassRegistry {\n private static _map = new Map<string, { new (): ApiDataInterface }>();\n\n public static registerObjectClass(\n key: ApiRequestDataTypeInterface,\n classConstructor: { new (): ApiDataInterface },\n ): void {\n const classKey = key.name;\n if (!this._map.has(classKey)) {\n this._map.set(classKey, classConstructor);\n }\n }\n\n public static get(classKey: ApiRequestDataTypeInterface): {\n new (): ApiDataInterface;\n } {\n const response = this._map.get(classKey.name);\n if (!response) {\n throw new Error(`Class not registered for key: ${typeof classKey === \"string\" ? classKey : classKey.name}`);\n }\n\n return response;\n }\n\n /**\n * Bootstrap the registry with all modules.\n * This is a convenience method for apps to register all their modules at once.\n *\n * @param modules - An object with module definitions (like the app's Modules class)\n */\n public static bootstrap(modules: Record<string, ApiRequestDataTypeInterface>): void {\n Object.values(modules).forEach((module) => {\n if (module && module.model) {\n this.registerObjectClass(module, module.model);\n }\n });\n }\n\n /**\n * Clear all registered classes. Useful for testing.\n */\n public static clear(): void {\n this._map.clear();\n }\n}\n\n// Export alias for backward compatibility\nexport { DataClassRegistry as DataClass };\n","import { ApiDataInterface } from \"../interfaces/ApiDataInterface\";\nimport { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\nimport { DataClassRegistry } from \"../registry/DataClassRegistry\";\n\nexport class JsonApiDataFactory {\n public static create(classKey: ApiRequestDataTypeInterface, data: any): any {\n const factoryClass = DataClassRegistry.get(classKey);\n\n const instance = new factoryClass() as ApiDataInterface;\n return instance.createJsonApi(data);\n }\n}\n","import { ApiData } from \"../interfaces/ApiData\";\nimport { ApiDataInterface } from \"../interfaces/ApiDataInterface\";\nimport { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\nimport { ApiResponseInterface } from \"../interfaces/ApiResponseInterface\";\nimport { DataClassRegistry } from \"../registry/DataClassRegistry\";\n\n/**\n * Translates raw JSON:API data into typed objects.\n * Does not require API response metadata.\n */\nexport function translateData<T extends ApiDataInterface>(params: {\n classKey: ApiRequestDataTypeInterface;\n data: any;\n}): T | T[] {\n const factoryClass = DataClassRegistry.get(params.classKey);\n\n if (!factoryClass) {\n throw new Error(\n `Class not registered for key: ${typeof params.classKey === \"string\" ? params.classKey : params.classKey.name}`,\n );\n }\n\n const included: any = params.data.included ?? [];\n\n if (Array.isArray(params.data.data)) {\n const responseData: T[] = [];\n\n for (const data of params.data.data) {\n const object = new factoryClass();\n object.rehydrate({ jsonApi: data, included: included, allData: params.data.data });\n responseData.push(object as T);\n }\n\n return responseData as T[];\n } else {\n const responseData = new factoryClass();\n responseData.rehydrate({\n jsonApi: params.data.data,\n included: included,\n });\n\n return responseData as T;\n }\n}\n\n/**\n * Translates a full API response into a typed ApiResponseInterface.\n * Includes pagination support.\n */\nexport async function translateResponse<T extends ApiDataInterface>(params: {\n classKey: ApiRequestDataTypeInterface;\n apiResponse: ApiData;\n companyId?: string;\n language: string;\n paginationHandler?: (endpoint: string) => Promise<ApiResponseInterface>;\n}): Promise<ApiResponseInterface> {\n const response: ApiResponseInterface = {\n ok: true,\n response: 0,\n data: [],\n error: \"\",\n };\n\n const factoryClass = DataClassRegistry.get(params.classKey);\n\n if (!factoryClass) {\n throw new Error(\n `Class not registered for key: ${typeof params.classKey === \"string\" ? params.classKey : params.classKey.name}`,\n );\n }\n\n response.ok = params.apiResponse.ok;\n response.response = params.apiResponse.status;\n\n if (!params.apiResponse.ok) {\n response.error = params.apiResponse?.data?.message ?? params.apiResponse.statusText;\n return response;\n }\n\n if (params.apiResponse.status === 204) return response;\n\n response.raw = params.apiResponse.data;\n\n try {\n const included: any = params.apiResponse.data.included ?? [];\n\n if (params.apiResponse.data.links) {\n response.self = params.apiResponse.data.links.self;\n\n if (params.apiResponse.data.links.next && params.paginationHandler) {\n response.next = params.apiResponse.data.links.next;\n response.nextPage = async () => params.paginationHandler!(params.apiResponse.data.links.next);\n }\n\n if (params.apiResponse.data.links.prev && params.paginationHandler) {\n response.prev = params.apiResponse.data.links.prev;\n response.prevPage = async () => params.paginationHandler!(params.apiResponse.data.links.prev);\n }\n }\n\n if (Array.isArray(params.apiResponse.data.data)) {\n const responseData: T[] = [];\n\n for (const data of params.apiResponse.data.data) {\n const object = new factoryClass();\n object.rehydrate({ jsonApi: data, included: included, allData: params.apiResponse.data.data });\n responseData.push(object as T);\n }\n\n response.data = responseData;\n } else {\n const responseData = new factoryClass();\n responseData.rehydrate({\n jsonApi: params.apiResponse.data.data,\n included: included,\n });\n\n response.data = responseData;\n }\n } catch (e) {\n console.error(e);\n }\n\n return response;\n}\n"]}
@@ -1,98 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
- var _chunk7QVYU63Ejs = require('./chunk-7QVYU63E.js');
4
-
5
- // src/permissions/types.ts
6
- var Action = /* @__PURE__ */ ((Action2) => {
7
- Action2["Read"] = "read";
8
- Action2["Create"] = "create";
9
- Action2["Update"] = "update";
10
- Action2["Delete"] = "delete";
11
- return Action2;
12
- })(Action || {});
13
-
14
- // src/permissions/check.ts
15
- function checkPermissions(params) {
16
- const selectedModule = params.user.modules.find((module) => module.id === params.module.moduleId);
17
- if (!selectedModule) return false;
18
- const permissionConfig = selectedModule.permissions[params.action];
19
- if (!permissionConfig) return false;
20
- if (typeof permissionConfig === "boolean") return permissionConfig;
21
- if (!params.data) return true;
22
- try {
23
- const singlePermissionConfig = permissionConfig.split("|").map((p) => p.trim());
24
- for (const path of singlePermissionConfig) {
25
- if (getValueFromPath(params.data, path, params.user.id)) return true;
26
- }
27
- return false;
28
- } catch (e) {
29
- if (typeof permissionConfig === "string") {
30
- return getValueFromPath(params.data, permissionConfig, params.user.id);
31
- }
32
- }
33
- return false;
34
- }
35
- _chunk7QVYU63Ejs.__name.call(void 0, checkPermissions, "checkPermissions");
36
- function checkPermissionsFromServer(params) {
37
- if (!params.selectedModule) return false;
38
- const permissionConfig = params.selectedModule.permissions[params.action];
39
- if (!permissionConfig) return false;
40
- if (typeof permissionConfig === "boolean") return permissionConfig;
41
- if (!params.data) return true;
42
- try {
43
- const singlePermissionConfig = permissionConfig.split("|").map((p) => p.trim());
44
- for (const path of singlePermissionConfig) {
45
- if (getValueFromPath(params.data, path, params.userId)) return true;
46
- }
47
- return false;
48
- } catch (e2) {
49
- if (typeof permissionConfig === "string") {
50
- return getValueFromPath(params.data, permissionConfig, params.userId);
51
- }
52
- }
53
- return false;
54
- }
55
- _chunk7QVYU63Ejs.__name.call(void 0, checkPermissionsFromServer, "checkPermissionsFromServer");
56
- function getValueFromPath(obj, path, userId) {
57
- const parts = path.split(".");
58
- let current = obj;
59
- for (const part of parts) {
60
- if (!current) return false;
61
- if (Array.isArray(current)) {
62
- let found = false;
63
- for (const item of current) {
64
- const result = getValueFromPath(item, parts.slice(parts.indexOf(part)).join("."), userId);
65
- if (result === userId || result === true) {
66
- found = true;
67
- break;
68
- }
69
- }
70
- return found;
71
- } else if (current[part] !== void 0) {
72
- current = current[part];
73
- } else {
74
- return false;
75
- }
76
- }
77
- if (Array.isArray(current)) {
78
- return current.some((item) => {
79
- if (typeof item === "object" && item.id !== void 0) {
80
- return item.id.toString() === userId;
81
- }
82
- return item.toString() === userId;
83
- });
84
- }
85
- if (typeof current === "object" && current.id !== void 0) {
86
- return current.id.toString() === userId;
87
- }
88
- return current.toString() === userId;
89
- }
90
- _chunk7QVYU63Ejs.__name.call(void 0, getValueFromPath, "getValueFromPath");
91
-
92
-
93
-
94
-
95
-
96
-
97
- exports.Action = Action; exports.checkPermissions = checkPermissions; exports.checkPermissionsFromServer = checkPermissionsFromServer; exports.getValueFromPath = getValueFromPath;
98
- //# sourceMappingURL=chunk-CSM6AIAP.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-CSM6AIAP.js","../src/permissions/types.ts","../src/permissions/check.ts"],"names":["Action"],"mappings":"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","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-CSM6AIAP.js","sourcesContent":[null,"import { LucideIcon } from \"lucide-react\";\nimport { ApiRequestDataTypeInterface } from \"../core/interfaces/ApiRequestDataTypeInterface\";\nimport { FieldSelector } from \"../core/fields/FieldSelector\";\n\n/**\n * Permission actions\n */\nexport enum Action {\n Read = \"read\",\n Create = \"create\",\n Update = \"update\",\n Delete = \"delete\",\n}\n\n/**\n * Generic permission check type.\n * Can be a boolean or a function that checks permissions dynamically.\n * @template T - The data type being checked\n * @template U - The user type (defaults to PermissionUser)\n */\nexport type PermissionCheck<T, U = PermissionUser> = boolean | ((user?: U | string, data?: T) => boolean);\n\n/**\n * Page URL configuration for modules\n */\nexport type PageUrl = {\n pageUrl?: string;\n};\n\n/**\n * Module permission definition wrapper\n */\nexport type ModulePermissionDefinition<T> = {\n interface: T;\n};\n\n/**\n * Base module definition\n */\nexport type ModuleDefinition = {\n pageUrl?: string;\n name: string;\n model: any;\n feature?: string;\n moduleId?: string;\n};\n\n/**\n * Permission configuration for a module.\n * Can be a boolean (allow/deny all) or a string path for dynamic checks.\n */\nexport interface PermissionConfig {\n create: boolean | string;\n read: boolean | string;\n update: boolean | string;\n delete: boolean | string;\n}\n\n/**\n * Generic interface for a module that has permissions.\n * Apps should ensure their Module class implements this.\n */\nexport interface PermissionModule {\n id: string;\n permissions: PermissionConfig;\n}\n\n/**\n * Generic interface for a user that has modules with permissions.\n * Apps should ensure their User class implements this.\n */\nexport interface PermissionUser {\n id: string;\n modules: PermissionModule[];\n}\n\n/**\n * Module definition with permissions - extends ApiRequestDataTypeInterface\n */\nexport type ModuleWithPermissions = ApiRequestDataTypeInterface & {\n pageUrl?: string;\n feature?: string;\n moduleId?: string;\n icon?: LucideIcon;\n inclusions?: Record<\n string,\n {\n types?: string[];\n fields?: FieldSelector<any>[];\n }\n >;\n};\n\n/**\n * Factory type for creating module definitions\n */\nexport type ModuleFactory = (params: {\n pageUrl?: string;\n name: string;\n cache?: string | \"days\" | \"default\" | \"hours\" | \"max\" | \"minutes\" | \"seconds\" | \"weeks\";\n model: any;\n feature?: string;\n moduleId?: string;\n icon?: LucideIcon;\n inclusions?: Record<\n string,\n {\n types?: string[];\n fields?: FieldSelector<any>[];\n }\n >;\n}) => ModuleWithPermissions;\n","import { Action, ModuleWithPermissions, PermissionModule, PermissionUser } from \"./types\";\n\n/**\n * Check if a user has permission to perform an action on a module.\n *\n * @param module - The module to check permissions for\n * @param action - The action to check (read, create, update, delete)\n * @param user - The user with their modules and permissions\n * @param data - Optional data object for path-based permission checks\n */\nexport function checkPermissions<T extends PermissionUser>(params: {\n module: ModuleWithPermissions;\n action: Action;\n user: T;\n data?: any;\n}): boolean {\n const selectedModule = params.user.modules.find((module: PermissionModule) => module.id === params.module.moduleId);\n\n if (!selectedModule) return false;\n const permissionConfig = selectedModule.permissions[params.action];\n\n if (!permissionConfig) return false;\n if (typeof permissionConfig === \"boolean\") return permissionConfig as boolean;\n\n if (!params.data) return true;\n\n try {\n const singlePermissionConfig = permissionConfig.split(\"|\").map((p) => p.trim());\n\n for (const path of singlePermissionConfig) {\n if (getValueFromPath(params.data, path, params.user.id)) return true;\n }\n return false;\n } catch {\n if (typeof permissionConfig === \"string\") {\n return getValueFromPath(params.data, permissionConfig, params.user.id);\n }\n }\n\n return false;\n}\n\n/**\n * Check permissions from server context where user object is not fully available.\n *\n * @param module - The module to check permissions for\n * @param action - The action to check\n * @param userId - The user's ID\n * @param selectedModule - The selected module with its permissions\n * @param data - Optional data object for path-based permission checks\n */\nexport function checkPermissionsFromServer(params: {\n module: ModuleWithPermissions;\n action: Action;\n userId: string;\n selectedModule?: PermissionModule;\n data?: any;\n}): boolean {\n if (!params.selectedModule) return false;\n const permissionConfig = params.selectedModule.permissions[params.action];\n\n if (!permissionConfig) return false;\n if (typeof permissionConfig === \"boolean\") return permissionConfig as boolean;\n\n if (!params.data) return true;\n\n try {\n const singlePermissionConfig = permissionConfig.split(\"|\").map((p) => p.trim());\n\n for (const path of singlePermissionConfig) {\n if (getValueFromPath(params.data, path, params.userId)) return true;\n }\n return false;\n } catch {\n if (typeof permissionConfig === \"string\") {\n return getValueFromPath(params.data, permissionConfig, params.userId);\n }\n }\n\n return false;\n}\n\n/**\n * Traverse an object path and check if the value matches the user ID.\n * Handles nested objects, arrays, and various data structures.\n */\nexport function getValueFromPath(obj: any, path: string, userId: string): any {\n const parts = path.split(\".\");\n let current = obj;\n\n for (const part of parts) {\n if (!current) return false;\n\n if (Array.isArray(current)) {\n let found = false;\n for (const item of current) {\n const result = getValueFromPath(item, parts.slice(parts.indexOf(part)).join(\".\"), userId);\n if (result === userId || result === true) {\n found = true;\n break;\n }\n }\n return found;\n } else if (current[part] !== undefined) {\n current = current[part];\n } else {\n return false;\n }\n }\n\n if (Array.isArray(current)) {\n // If final value is an array, check if any element has id matching userId\n return current.some((item: any) => {\n if (typeof item === \"object\" && item.id !== undefined) {\n return item.id.toString() === userId;\n }\n return item.toString() === userId;\n });\n }\n\n // Direct comparison for primitive values or objects with id\n if (typeof current === \"object\" && current.id !== undefined) {\n return current.id.toString() === userId;\n }\n\n return current.toString() === userId;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/unified/JsonApiRequest.ts"],"sourcesContent":["import { JsonApiDataFactory } from \"../core/factories/JsonApiDataFactory\";\nimport { ApiData } from \"../core/interfaces/ApiData\";\nimport { ApiRequestDataTypeInterface } from \"../core/interfaces/ApiRequestDataTypeInterface\";\nimport { ApiResponseInterface } from \"../core/interfaces/ApiResponseInterface\";\nimport { translateResponse } from \"../core/utils/translateResponse\";\nimport { ModuleWithPermissions } from \"../permissions/types\";\n\n// Type definitions for dynamically imported functions (avoiding typeof import to prevent bundling)\ntype DirectFetchFn = (params: {\n method: string;\n url: string;\n token?: string;\n body?: any;\n files?: { [key: string]: File | Blob } | File | Blob;\n companyId?: string;\n language: string;\n additionalHeaders?: Record<string, string>;\n}) => Promise<ApiData>;\n\ntype ServerRequestFn = (params: {\n method: string;\n url: string;\n token?: string;\n cache?: string;\n body?: any;\n files?: { [key: string]: File | Blob } | File | Blob;\n companyId?: string;\n language: string;\n additionalHeaders?: Record<string, string>;\n}) => Promise<ApiData>;\n\ntype GetTokenFn = () => Promise<string | undefined>;\n\n// These will be dynamically imported based on environment\nlet _directFetch: DirectFetchFn;\nlet _serverRequest: ServerRequestFn;\nlet _getClientToken: GetTokenFn;\nlet _getServerToken: GetTokenFn;\n\n// Config storage for non-React contexts\nlet _staticConfig: {\n apiUrl: string;\n appUrl?: string;\n trackablePages?: ModuleWithPermissions[];\n bootstrapper?: () => void;\n additionalHeaders?: Record<string, string>;\n} | null = null;\n\n/**\n * Configure the JSON:API client for non-React contexts (e.g., server components).\n * For React contexts, use JsonApiProvider instead.\n */\nexport function configureJsonApi(config: {\n apiUrl: string;\n appUrl?: string;\n trackablePages?: ModuleWithPermissions[];\n bootstrapper?: () => void;\n additionalHeaders?: Record<string, string>;\n}): void {\n _staticConfig = config;\n // Call bootstrapper immediately to register all modules\n if (config.bootstrapper) {\n config.bootstrapper();\n }\n}\n\nasync function getToken(): Promise<string | undefined> {\n if (typeof window === \"undefined\") {\n // Server-side\n if (!_getServerToken) {\n const serverModule = await import(\"../server/token\");\n _getServerToken = serverModule.getServerToken;\n }\n return _getServerToken();\n } else {\n // Client-side\n if (!_getClientToken) {\n const clientModule = await import(\"../client/token\");\n _getClientToken = clientModule.getClientToken;\n }\n return _getClientToken();\n }\n}\n\nasync function makeRequest(params: {\n method: string;\n url: string;\n token?: string;\n cache?: string;\n body?: any;\n files?: { [key: string]: File | Blob } | File | Blob;\n companyId?: string;\n language: string;\n additionalHeaders?: Record<string, string>;\n}): Promise<ApiData> {\n if (typeof window !== \"undefined\") {\n // Client-side: use direct fetch\n if (!_directFetch) {\n const clientModule = await import(\"../client/request\");\n _directFetch = clientModule.directFetch;\n }\n return _directFetch({\n method: params.method,\n url: params.url,\n token: params.token,\n body: params.body,\n files: params.files,\n companyId: params.companyId,\n language: params.language,\n additionalHeaders: params.additionalHeaders,\n });\n } else {\n // Server-side: use server request with caching\n if (!_serverRequest) {\n const serverModule = await import(\"../server/request\");\n _serverRequest = serverModule.serverRequest;\n }\n return _serverRequest({\n method: params.method,\n url: params.url,\n token: params.token,\n cache: params.cache,\n body: params.body,\n files: params.files,\n companyId: params.companyId,\n language: params.language,\n additionalHeaders: params.additionalHeaders,\n });\n }\n}\n\nexport function getApiUrl(): string {\n if (_staticConfig?.apiUrl) {\n return _staticConfig.apiUrl;\n }\n // Fallback to environment variable\n const envUrl = process.env.NEXT_PUBLIC_API_URL;\n if (!envUrl) {\n throw new Error(\"API URL not configured. Use configureJsonApi() or set NEXT_PUBLIC_API_URL environment variable.\");\n }\n return envUrl;\n}\n\nexport function getAppUrl(): string {\n if (_staticConfig?.appUrl) {\n return _staticConfig.appUrl;\n }\n // Fallback to environment variable\n const envUrl = process.env.NEXT_PUBLIC_ADDRESS;\n if (!envUrl) {\n throw new Error(\n \"App URL not configured. Use configureJsonApi({ appUrl }) or set NEXT_PUBLIC_ADDRESS environment variable.\",\n );\n }\n return envUrl.trim().replace(/\\/+$/, \"\");\n}\n\nexport function getTrackablePages(): ModuleWithPermissions[] {\n return _staticConfig?.trackablePages ?? [];\n}\n\nfunction runBootstrapper(): void {\n if (_staticConfig?.bootstrapper) {\n _staticConfig.bootstrapper();\n }\n}\n\nfunction buildUrl(endpoint: string): string {\n const apiUrl = getApiUrl();\n return endpoint.startsWith(\"http\") ? endpoint : `${apiUrl}${endpoint}`;\n}\n\nexport async function JsonApiGet(params: {\n classKey: ApiRequestDataTypeInterface;\n endpoint: string;\n companyId?: string;\n language: string;\n}): Promise<ApiResponseInterface> {\n runBootstrapper();\n const token = await getToken();\n\n const apiResponse = await makeRequest({\n method: \"GET\",\n url: buildUrl(params.endpoint),\n token,\n cache: params.classKey.cache,\n companyId: params.companyId,\n language: params.language,\n additionalHeaders: _staticConfig?.additionalHeaders,\n });\n\n return translateResponse({\n classKey: params.classKey,\n apiResponse,\n companyId: params.companyId,\n language: params.language,\n paginationHandler: async (endpoint: string) =>\n JsonApiGet({\n classKey: params.classKey,\n endpoint,\n companyId: params.companyId,\n language: params.language,\n }),\n });\n}\n\nexport async function JsonApiPost(params: {\n classKey: ApiRequestDataTypeInterface;\n endpoint: string;\n companyId?: string;\n body?: any;\n overridesJsonApiCreation?: boolean;\n files?: { [key: string]: File | Blob } | File | Blob;\n language: string;\n responseType?: ApiRequestDataTypeInterface;\n}): Promise<ApiResponseInterface> {\n runBootstrapper();\n const token = await getToken();\n\n let body = params.body;\n if (!body) {\n body = {};\n } else if (params.overridesJsonApiCreation !== true) {\n body = JsonApiDataFactory.create(params.classKey, body);\n }\n\n const apiResponse = await makeRequest({\n method: \"POST\",\n url: buildUrl(params.endpoint),\n token,\n body,\n files: params.files,\n companyId: params.companyId,\n language: params.language,\n additionalHeaders: _staticConfig?.additionalHeaders,\n });\n\n return translateResponse({\n classKey: params.responseType ?? params.classKey,\n apiResponse,\n companyId: params.companyId,\n language: params.language,\n });\n}\n\nexport async function JsonApiPut(params: {\n classKey: ApiRequestDataTypeInterface;\n endpoint: string;\n companyId?: string;\n body?: any;\n files?: { [key: string]: File | Blob } | File | Blob;\n language: string;\n responseType?: ApiRequestDataTypeInterface;\n}): Promise<ApiResponseInterface> {\n runBootstrapper();\n const token = await getToken();\n\n let body = params.body;\n if (!body) {\n body = {};\n } else {\n body = JsonApiDataFactory.create(params.classKey, body);\n }\n\n const apiResponse = await makeRequest({\n method: \"PUT\",\n url: buildUrl(params.endpoint),\n token,\n body,\n files: params.files,\n companyId: params.companyId,\n language: params.language,\n additionalHeaders: _staticConfig?.additionalHeaders,\n });\n\n return translateResponse({\n classKey: params.responseType ?? params.classKey,\n apiResponse,\n companyId: params.companyId,\n language: params.language,\n });\n}\n\nexport async function JsonApiPatch(params: {\n classKey: ApiRequestDataTypeInterface;\n endpoint: string;\n companyId?: string;\n body?: any;\n files?: { [key: string]: File | Blob } | File | Blob;\n overridesJsonApiCreation?: boolean;\n responseType?: ApiRequestDataTypeInterface;\n language: string;\n}): Promise<ApiResponseInterface> {\n runBootstrapper();\n const token = await getToken();\n\n let body = params.body;\n if (!body) {\n body = {};\n } else if (params.overridesJsonApiCreation !== true) {\n body = JsonApiDataFactory.create(params.classKey, body);\n }\n\n const apiResponse = await makeRequest({\n method: \"PATCH\",\n url: buildUrl(params.endpoint),\n token,\n body,\n files: params.files,\n companyId: params.companyId,\n language: params.language,\n additionalHeaders: _staticConfig?.additionalHeaders,\n });\n\n return translateResponse({\n classKey: params.responseType ?? params.classKey,\n apiResponse,\n companyId: params.companyId,\n language: params.language,\n });\n}\n\nexport async function JsonApiDelete(params: {\n classKey: ApiRequestDataTypeInterface;\n endpoint: string;\n companyId?: string;\n language: string;\n responseType?: ApiRequestDataTypeInterface;\n}): Promise<ApiResponseInterface> {\n runBootstrapper();\n const token = await getToken();\n\n const apiResponse = await makeRequest({\n method: \"DELETE\",\n url: buildUrl(params.endpoint),\n token,\n companyId: params.companyId,\n language: params.language,\n additionalHeaders: _staticConfig?.additionalHeaders,\n });\n\n return translateResponse({\n classKey: params.responseType ?? params.classKey,\n apiResponse,\n companyId: params.companyId,\n language: params.language,\n });\n}\n"],"mappings":"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","names":[]}
@@ -1,98 +0,0 @@
1
- import {
2
- __name
3
- } from "./chunk-PAWJFY3S.mjs";
4
-
5
- // src/permissions/types.ts
6
- var Action = /* @__PURE__ */ ((Action2) => {
7
- Action2["Read"] = "read";
8
- Action2["Create"] = "create";
9
- Action2["Update"] = "update";
10
- Action2["Delete"] = "delete";
11
- return Action2;
12
- })(Action || {});
13
-
14
- // src/permissions/check.ts
15
- function checkPermissions(params) {
16
- const selectedModule = params.user.modules.find((module) => module.id === params.module.moduleId);
17
- if (!selectedModule) return false;
18
- const permissionConfig = selectedModule.permissions[params.action];
19
- if (!permissionConfig) return false;
20
- if (typeof permissionConfig === "boolean") return permissionConfig;
21
- if (!params.data) return true;
22
- try {
23
- const singlePermissionConfig = permissionConfig.split("|").map((p) => p.trim());
24
- for (const path of singlePermissionConfig) {
25
- if (getValueFromPath(params.data, path, params.user.id)) return true;
26
- }
27
- return false;
28
- } catch {
29
- if (typeof permissionConfig === "string") {
30
- return getValueFromPath(params.data, permissionConfig, params.user.id);
31
- }
32
- }
33
- return false;
34
- }
35
- __name(checkPermissions, "checkPermissions");
36
- function checkPermissionsFromServer(params) {
37
- if (!params.selectedModule) return false;
38
- const permissionConfig = params.selectedModule.permissions[params.action];
39
- if (!permissionConfig) return false;
40
- if (typeof permissionConfig === "boolean") return permissionConfig;
41
- if (!params.data) return true;
42
- try {
43
- const singlePermissionConfig = permissionConfig.split("|").map((p) => p.trim());
44
- for (const path of singlePermissionConfig) {
45
- if (getValueFromPath(params.data, path, params.userId)) return true;
46
- }
47
- return false;
48
- } catch {
49
- if (typeof permissionConfig === "string") {
50
- return getValueFromPath(params.data, permissionConfig, params.userId);
51
- }
52
- }
53
- return false;
54
- }
55
- __name(checkPermissionsFromServer, "checkPermissionsFromServer");
56
- function getValueFromPath(obj, path, userId) {
57
- const parts = path.split(".");
58
- let current = obj;
59
- for (const part of parts) {
60
- if (!current) return false;
61
- if (Array.isArray(current)) {
62
- let found = false;
63
- for (const item of current) {
64
- const result = getValueFromPath(item, parts.slice(parts.indexOf(part)).join("."), userId);
65
- if (result === userId || result === true) {
66
- found = true;
67
- break;
68
- }
69
- }
70
- return found;
71
- } else if (current[part] !== void 0) {
72
- current = current[part];
73
- } else {
74
- return false;
75
- }
76
- }
77
- if (Array.isArray(current)) {
78
- return current.some((item) => {
79
- if (typeof item === "object" && item.id !== void 0) {
80
- return item.id.toString() === userId;
81
- }
82
- return item.toString() === userId;
83
- });
84
- }
85
- if (typeof current === "object" && current.id !== void 0) {
86
- return current.id.toString() === userId;
87
- }
88
- return current.toString() === userId;
89
- }
90
- __name(getValueFromPath, "getValueFromPath");
91
-
92
- export {
93
- Action,
94
- checkPermissions,
95
- checkPermissionsFromServer,
96
- getValueFromPath
97
- };
98
- //# sourceMappingURL=chunk-K4W5QXL5.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/permissions/types.ts","../src/permissions/check.ts"],"sourcesContent":["import { LucideIcon } from \"lucide-react\";\nimport { ApiRequestDataTypeInterface } from \"../core/interfaces/ApiRequestDataTypeInterface\";\nimport { FieldSelector } from \"../core/fields/FieldSelector\";\n\n/**\n * Permission actions\n */\nexport enum Action {\n Read = \"read\",\n Create = \"create\",\n Update = \"update\",\n Delete = \"delete\",\n}\n\n/**\n * Generic permission check type.\n * Can be a boolean or a function that checks permissions dynamically.\n * @template T - The data type being checked\n * @template U - The user type (defaults to PermissionUser)\n */\nexport type PermissionCheck<T, U = PermissionUser> = boolean | ((user?: U | string, data?: T) => boolean);\n\n/**\n * Page URL configuration for modules\n */\nexport type PageUrl = {\n pageUrl?: string;\n};\n\n/**\n * Module permission definition wrapper\n */\nexport type ModulePermissionDefinition<T> = {\n interface: T;\n};\n\n/**\n * Base module definition\n */\nexport type ModuleDefinition = {\n pageUrl?: string;\n name: string;\n model: any;\n feature?: string;\n moduleId?: string;\n};\n\n/**\n * Permission configuration for a module.\n * Can be a boolean (allow/deny all) or a string path for dynamic checks.\n */\nexport interface PermissionConfig {\n create: boolean | string;\n read: boolean | string;\n update: boolean | string;\n delete: boolean | string;\n}\n\n/**\n * Generic interface for a module that has permissions.\n * Apps should ensure their Module class implements this.\n */\nexport interface PermissionModule {\n id: string;\n permissions: PermissionConfig;\n}\n\n/**\n * Generic interface for a user that has modules with permissions.\n * Apps should ensure their User class implements this.\n */\nexport interface PermissionUser {\n id: string;\n modules: PermissionModule[];\n}\n\n/**\n * Module definition with permissions - extends ApiRequestDataTypeInterface\n */\nexport type ModuleWithPermissions = ApiRequestDataTypeInterface & {\n pageUrl?: string;\n feature?: string;\n moduleId?: string;\n icon?: LucideIcon;\n inclusions?: Record<\n string,\n {\n types?: string[];\n fields?: FieldSelector<any>[];\n }\n >;\n};\n\n/**\n * Factory type for creating module definitions\n */\nexport type ModuleFactory = (params: {\n pageUrl?: string;\n name: string;\n cache?: string | \"days\" | \"default\" | \"hours\" | \"max\" | \"minutes\" | \"seconds\" | \"weeks\";\n model: any;\n feature?: string;\n moduleId?: string;\n icon?: LucideIcon;\n inclusions?: Record<\n string,\n {\n types?: string[];\n fields?: FieldSelector<any>[];\n }\n >;\n}) => ModuleWithPermissions;\n","import { Action, ModuleWithPermissions, PermissionModule, PermissionUser } from \"./types\";\n\n/**\n * Check if a user has permission to perform an action on a module.\n *\n * @param module - The module to check permissions for\n * @param action - The action to check (read, create, update, delete)\n * @param user - The user with their modules and permissions\n * @param data - Optional data object for path-based permission checks\n */\nexport function checkPermissions<T extends PermissionUser>(params: {\n module: ModuleWithPermissions;\n action: Action;\n user: T;\n data?: any;\n}): boolean {\n const selectedModule = params.user.modules.find((module: PermissionModule) => module.id === params.module.moduleId);\n\n if (!selectedModule) return false;\n const permissionConfig = selectedModule.permissions[params.action];\n\n if (!permissionConfig) return false;\n if (typeof permissionConfig === \"boolean\") return permissionConfig as boolean;\n\n if (!params.data) return true;\n\n try {\n const singlePermissionConfig = permissionConfig.split(\"|\").map((p) => p.trim());\n\n for (const path of singlePermissionConfig) {\n if (getValueFromPath(params.data, path, params.user.id)) return true;\n }\n return false;\n } catch {\n if (typeof permissionConfig === \"string\") {\n return getValueFromPath(params.data, permissionConfig, params.user.id);\n }\n }\n\n return false;\n}\n\n/**\n * Check permissions from server context where user object is not fully available.\n *\n * @param module - The module to check permissions for\n * @param action - The action to check\n * @param userId - The user's ID\n * @param selectedModule - The selected module with its permissions\n * @param data - Optional data object for path-based permission checks\n */\nexport function checkPermissionsFromServer(params: {\n module: ModuleWithPermissions;\n action: Action;\n userId: string;\n selectedModule?: PermissionModule;\n data?: any;\n}): boolean {\n if (!params.selectedModule) return false;\n const permissionConfig = params.selectedModule.permissions[params.action];\n\n if (!permissionConfig) return false;\n if (typeof permissionConfig === \"boolean\") return permissionConfig as boolean;\n\n if (!params.data) return true;\n\n try {\n const singlePermissionConfig = permissionConfig.split(\"|\").map((p) => p.trim());\n\n for (const path of singlePermissionConfig) {\n if (getValueFromPath(params.data, path, params.userId)) return true;\n }\n return false;\n } catch {\n if (typeof permissionConfig === \"string\") {\n return getValueFromPath(params.data, permissionConfig, params.userId);\n }\n }\n\n return false;\n}\n\n/**\n * Traverse an object path and check if the value matches the user ID.\n * Handles nested objects, arrays, and various data structures.\n */\nexport function getValueFromPath(obj: any, path: string, userId: string): any {\n const parts = path.split(\".\");\n let current = obj;\n\n for (const part of parts) {\n if (!current) return false;\n\n if (Array.isArray(current)) {\n let found = false;\n for (const item of current) {\n const result = getValueFromPath(item, parts.slice(parts.indexOf(part)).join(\".\"), userId);\n if (result === userId || result === true) {\n found = true;\n break;\n }\n }\n return found;\n } else if (current[part] !== undefined) {\n current = current[part];\n } else {\n return false;\n }\n }\n\n if (Array.isArray(current)) {\n // If final value is an array, check if any element has id matching userId\n return current.some((item: any) => {\n if (typeof item === \"object\" && item.id !== undefined) {\n return item.id.toString() === userId;\n }\n return item.toString() === userId;\n });\n }\n\n // Direct comparison for primitive values or objects with id\n if (typeof current === \"object\" && current.id !== undefined) {\n return current.id.toString() === userId;\n }\n\n return current.toString() === userId;\n}\n"],"mappings":";;;;;AAOO,IAAK,SAAL,kBAAKA,YAAL;AACL,EAAAA,QAAA,UAAO;AACP,EAAAA,QAAA,YAAS;AACT,EAAAA,QAAA,YAAS;AACT,EAAAA,QAAA,YAAS;AAJC,SAAAA;AAAA,GAAA;;;ACGL,SAAS,iBAA2C,QAK/C;AACV,QAAM,iBAAiB,OAAO,KAAK,QAAQ,KAAK,CAAC,WAA6B,OAAO,OAAO,OAAO,OAAO,QAAQ;AAElH,MAAI,CAAC,eAAgB,QAAO;AAC5B,QAAM,mBAAmB,eAAe,YAAY,OAAO,MAAM;AAEjE,MAAI,CAAC,iBAAkB,QAAO;AAC9B,MAAI,OAAO,qBAAqB,UAAW,QAAO;AAElD,MAAI,CAAC,OAAO,KAAM,QAAO;AAEzB,MAAI;AACF,UAAM,yBAAyB,iBAAiB,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AAE9E,eAAW,QAAQ,wBAAwB;AACzC,UAAI,iBAAiB,OAAO,MAAM,MAAM,OAAO,KAAK,EAAE,EAAG,QAAO;AAAA,IAClE;AACA,WAAO;AAAA,EACT,QAAQ;AACN,QAAI,OAAO,qBAAqB,UAAU;AACxC,aAAO,iBAAiB,OAAO,MAAM,kBAAkB,OAAO,KAAK,EAAE;AAAA,IACvE;AAAA,EACF;AAEA,SAAO;AACT;AA9BgB;AAyCT,SAAS,2BAA2B,QAM/B;AACV,MAAI,CAAC,OAAO,eAAgB,QAAO;AACnC,QAAM,mBAAmB,OAAO,eAAe,YAAY,OAAO,MAAM;AAExE,MAAI,CAAC,iBAAkB,QAAO;AAC9B,MAAI,OAAO,qBAAqB,UAAW,QAAO;AAElD,MAAI,CAAC,OAAO,KAAM,QAAO;AAEzB,MAAI;AACF,UAAM,yBAAyB,iBAAiB,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AAE9E,eAAW,QAAQ,wBAAwB;AACzC,UAAI,iBAAiB,OAAO,MAAM,MAAM,OAAO,MAAM,EAAG,QAAO;AAAA,IACjE;AACA,WAAO;AAAA,EACT,QAAQ;AACN,QAAI,OAAO,qBAAqB,UAAU;AACxC,aAAO,iBAAiB,OAAO,MAAM,kBAAkB,OAAO,MAAM;AAAA,IACtE;AAAA,EACF;AAEA,SAAO;AACT;AA7BgB;AAmCT,SAAS,iBAAiB,KAAU,MAAc,QAAqB;AAC5E,QAAM,QAAQ,KAAK,MAAM,GAAG;AAC5B,MAAI,UAAU;AAEd,aAAW,QAAQ,OAAO;AACxB,QAAI,CAAC,QAAS,QAAO;AAErB,QAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,UAAI,QAAQ;AACZ,iBAAW,QAAQ,SAAS;AAC1B,cAAM,SAAS,iBAAiB,MAAM,MAAM,MAAM,MAAM,QAAQ,IAAI,CAAC,EAAE,KAAK,GAAG,GAAG,MAAM;AACxF,YAAI,WAAW,UAAU,WAAW,MAAM;AACxC,kBAAQ;AACR;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT,WAAW,QAAQ,IAAI,MAAM,QAAW;AACtC,gBAAU,QAAQ,IAAI;AAAA,IACxB,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAI,MAAM,QAAQ,OAAO,GAAG;AAE1B,WAAO,QAAQ,KAAK,CAAC,SAAc;AACjC,UAAI,OAAO,SAAS,YAAY,KAAK,OAAO,QAAW;AACrD,eAAO,KAAK,GAAG,SAAS,MAAM;AAAA,MAChC;AACA,aAAO,KAAK,SAAS,MAAM;AAAA,IAC7B,CAAC;AAAA,EACH;AAGA,MAAI,OAAO,YAAY,YAAY,QAAQ,OAAO,QAAW;AAC3D,WAAO,QAAQ,GAAG,SAAS,MAAM;AAAA,EACnC;AAEA,SAAO,QAAQ,SAAS,MAAM;AAChC;AAxCgB;","names":["Action"]}