@carlonicora/nextjs-jsonapi 1.5.0 → 1.6.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.
- package/dist/{ApiResponseInterface-DDI7QQPR.d.ts → ApiResponseInterface-CfcC7pPC.d.mts} +11 -2
- package/dist/{ApiResponseInterface-BHN5D9r5.d.mts → ApiResponseInterface-DTBJaV5R.d.ts} +11 -2
- package/dist/AuthComponent-hxOPs9o8.d.mts +11 -0
- package/dist/AuthComponent-hxOPs9o8.d.ts +11 -0
- package/dist/{BlockNoteEditor-G6AK2NWA.js → BlockNoteEditor-7FM7B737.js} +19 -22
- package/dist/BlockNoteEditor-7FM7B737.js.map +1 -0
- package/dist/{BlockNoteEditor-AIEEQM6A.mjs → BlockNoteEditor-RVL76ZAS.mjs} +11 -14
- package/dist/BlockNoteEditor-RVL76ZAS.mjs.map +1 -0
- package/dist/JsonApiRequest-KOKGVPBI.js +25 -0
- package/dist/{JsonApiRequest-UJ7FGIVI.js.map → JsonApiRequest-KOKGVPBI.js.map} +1 -1
- package/dist/{JsonApiRequest-6UR7DIAR.mjs → JsonApiRequest-VCCRO732.mjs} +2 -2
- package/dist/chunk-2Z56AS2S.js +2723 -0
- package/dist/chunk-2Z56AS2S.js.map +1 -0
- package/dist/chunk-37NJZ2VD.mjs +637 -0
- package/dist/chunk-37NJZ2VD.mjs.map +1 -0
- package/dist/{chunk-2K3Q24UF.js → chunk-3ZPK4QOB.js} +24 -14
- package/dist/chunk-3ZPK4QOB.js.map +1 -0
- package/dist/chunk-AGWQ75PQ.js +142 -0
- package/dist/chunk-AGWQ75PQ.js.map +1 -0
- package/dist/{chunk-32HM6MDD.js → chunk-CSM6AIAP.js} +1 -1
- package/dist/{chunk-32HM6MDD.js.map → chunk-CSM6AIAP.js.map} +1 -1
- package/dist/{chunk-IKBA4AHN.mjs → chunk-F4Y3GZG4.mjs} +3 -3
- package/dist/{chunk-YF5XQZDR.mjs → chunk-F5UNXZ3J.mjs} +1 -1
- package/dist/chunk-F5UNXZ3J.mjs.map +1 -0
- package/dist/chunk-IGOWVLJH.mjs +142 -0
- package/dist/chunk-IGOWVLJH.mjs.map +1 -0
- package/dist/{chunk-HAG77QBV.mjs → chunk-K4W5QXL5.mjs} +1 -1
- package/dist/chunk-KFL5ZFM4.mjs +2723 -0
- package/dist/chunk-KFL5ZFM4.mjs.map +1 -0
- package/dist/{chunk-HR4H2FP7.mjs → chunk-KJ4ETLJB.mjs} +24 -14
- package/dist/chunk-KJ4ETLJB.mjs.map +1 -0
- package/dist/chunk-LOSPCUCF.js +637 -0
- package/dist/chunk-LOSPCUCF.js.map +1 -0
- package/dist/{chunk-VET55IZO.js → chunk-SVX7E6RR.js} +10293 -7536
- package/dist/chunk-SVX7E6RR.js.map +1 -0
- package/dist/{chunk-EFJEWLRL.js → chunk-YUO55Q5A.js} +1 -1
- package/dist/chunk-YUO55Q5A.js.map +1 -0
- package/dist/chunk-ZQTFZKLJ.mjs +12089 -0
- package/dist/chunk-ZQTFZKLJ.mjs.map +1 -0
- package/dist/{chunk-PMXG5WBC.js → chunk-ZUEEIQHW.js} +3 -3
- package/dist/{chunk-PMXG5WBC.js.map → chunk-ZUEEIQHW.js.map} +1 -1
- package/dist/client/index.d.mts +161 -11
- package/dist/client/index.d.ts +161 -11
- package/dist/client/index.js +74 -11
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +73 -10
- package/dist/components/index.d.mts +763 -11
- package/dist/components/index.d.ts +763 -11
- package/dist/components/index.js +465 -11
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +466 -12
- package/dist/config-B43zxEvn.d.mts +69 -0
- package/dist/config-D2OUrI_G.d.ts +69 -0
- package/dist/content.fields-Ck5lkQ5d.d.mts +47 -0
- package/dist/content.fields-Ck5lkQ5d.d.ts +47 -0
- package/dist/{content.interface-CR2aBeAW.d.ts → content.interface-Bs8a7uW6.d.mts} +2 -3
- package/dist/{content.interface-FpLfsaRm.d.mts → content.interface-UtsJ-mzs.d.ts} +2 -3
- package/dist/contexts/index.d.mts +13 -6
- package/dist/contexts/index.d.ts +13 -6
- package/dist/contexts/index.js +10 -11
- package/dist/contexts/index.js.map +1 -1
- package/dist/contexts/index.mjs +9 -10
- package/dist/core/index.d.mts +539 -8
- package/dist/core/index.d.ts +539 -8
- package/dist/core/index.js +104 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.mjs +105 -3
- package/dist/index.d.mts +131 -70
- package/dist/index.d.ts +131 -70
- package/dist/index.js +97 -7
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +118 -28
- package/dist/notification.interface-BdcwkuQE.d.mts +228 -0
- package/dist/notification.interface-BdcwkuQE.d.ts +228 -0
- package/dist/request-GBLBPYFM.js +8 -0
- package/dist/request-GBLBPYFM.js.map +1 -0
- package/dist/request-XABCMU25.mjs +8 -0
- package/dist/{AbstractService-wLid8dB0.d.ts → s3.interface-D7ttGatc.d.ts} +36 -26
- package/dist/{AbstractService-BsY6W3Ej.d.mts → s3.interface-DlaMDRTn.d.mts} +36 -26
- package/dist/server/index.d.mts +299 -4
- package/dist/server/index.d.ts +299 -4
- package/dist/server/index.js +215 -5
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +214 -4
- package/dist/server/index.mjs.map +1 -1
- package/dist/token-2UWQJY5T.js +8 -0
- package/dist/token-2UWQJY5T.js.map +1 -0
- package/dist/token-EOK3N45S.mjs +8 -0
- package/dist/{useSocket-BV6yMdWS.d.ts → useSocket-8vwK_R_c.d.ts} +1 -1
- package/dist/{useSocket-L-An7_Mr.d.mts → useSocket-BWJUXuOl.d.mts} +1 -1
- package/package.json +12 -52
- package/src/client/JsonApiClient.ts +248 -0
- package/src/client/config.ts +78 -0
- package/src/client/index.ts +6 -1
- package/src/components/containers/TabsContainer.tsx +1 -1
- package/src/components/editors/BlockNoteEditor.tsx +3 -1
- package/src/components/index.ts +4 -0
- package/src/components/navigations/Breadcrumb.tsx +1 -1
- package/src/components/navigations/Header.tsx +2 -2
- package/src/contexts/CommonContext.tsx +1 -1
- package/src/contexts/SocketContext.tsx +1 -1
- package/src/contexts/index.ts +3 -0
- package/src/core/abstracts/ClientAbstractService.ts +255 -0
- package/src/core/abstracts/ServerAbstractService.ts +180 -0
- package/src/core/abstracts/index.ts +2 -0
- package/src/core/index.ts +32 -3
- package/src/discord/config.ts +15 -0
- package/src/discord/index.ts +1 -0
- package/src/features/auth/components/details/LandingComponent.tsx +2 -2
- package/src/features/auth/components/forms/AcceptInvitation.tsx +1 -1
- package/src/features/auth/components/forms/ActivateAccount.tsx +1 -1
- package/src/features/auth/components/forms/Cookies.tsx +2 -1
- package/src/features/auth/components/forms/ForgotPassword.tsx +1 -1
- package/src/features/auth/components/forms/Login.tsx +1 -1
- package/src/features/auth/components/forms/Logout.tsx +1 -1
- package/src/features/auth/components/forms/RefreshUser.tsx +2 -1
- package/src/features/auth/components/forms/Register.tsx +1 -1
- package/src/features/auth/components/forms/ResetPassword.tsx +1 -1
- package/src/features/auth/data/auth.service.ts +1 -1
- package/src/features/auth/data/index.ts +0 -1
- package/src/features/auth/utils/AuthCookies.ts +1 -1
- package/src/features/company/components/forms/CompanyConfigurationEditor.tsx +4 -2
- package/src/features/company/components/forms/CompanyDeleter.tsx +2 -1
- package/src/features/company/components/forms/CompanyEditor.tsx +6 -3
- package/src/features/company/components/forms/CompanyLicense.tsx +4 -2
- package/src/features/company/components/lists/CompaniesList.tsx +2 -1
- package/src/features/company/data/index.ts +0 -1
- package/src/features/content/components/lists/ContentsListById.tsx +2 -1
- package/src/features/content/components/lists/RelevantContentsList.tsx +2 -1
- package/src/features/content/data/index.ts +0 -1
- package/src/features/feature/data/index.ts +0 -1
- package/src/features/notification/components/lists/NotificationsList.tsx +2 -1
- package/src/features/notification/contexts/NotificationContext.tsx +2 -1
- package/src/features/notification/data/index.ts +0 -1
- package/src/features/push/data/index.ts +0 -1
- package/src/features/role/components/forms/RemoveUserFromRole.tsx +4 -2
- package/src/features/role/components/forms/UserRoleAdd.tsx +2 -1
- package/src/features/role/components/lists/RolesList.tsx +2 -1
- package/src/features/role/components/lists/UserRolesList.tsx +2 -1
- package/src/features/role/data/index.ts +0 -1
- package/src/features/s3/data/index.ts +0 -1
- package/src/features/user/components/forms/RoleUserAdd.tsx +4 -2
- package/src/features/user/components/forms/UserDeleter.tsx +2 -1
- package/src/features/user/components/forms/UserEditor.tsx +6 -3
- package/src/features/user/components/forms/UserMultiSelect.tsx +2 -1
- package/src/features/user/components/forms/UserReactivator.tsx +2 -1
- package/src/features/user/components/forms/UserResentInvitationEmail.tsx +2 -1
- package/src/features/user/components/forms/UserSelector.tsx +2 -1
- package/src/features/user/components/lists/AdminUsersList.tsx +2 -1
- package/src/features/user/components/lists/CompanyUsersList.tsx +2 -1
- package/src/features/user/components/lists/RelevantUsersList.tsx +2 -1
- package/src/features/user/components/lists/RoleUsersList.tsx +2 -1
- package/src/features/user/components/lists/UsersListByContentIds.tsx +2 -1
- package/src/features/user/data/index.ts +0 -1
- package/src/features/user/hooks/useUserSearch.ts +2 -1
- package/src/hooks/useDataListRetriever.ts +4 -4
- package/src/hooks/usePageTracker.ts +1 -1
- package/src/hooks/usePushNotifications.ts +3 -2
- package/src/hooks/useSocket.ts +1 -1
- package/src/index.ts +7 -2
- package/src/roles/config.ts +0 -15
- package/src/roles/index.ts +1 -9
- package/src/server/JsonApiServer.ts +249 -0
- package/src/server/cache.ts +1 -1
- package/src/server/index.ts +13 -0
- package/src/server/request.ts +32 -18
- package/src/server/token.ts +1 -1
- package/dist/ApiData-DPKNfY-9.d.mts +0 -10
- package/dist/ApiData-DPKNfY-9.d.ts +0 -10
- package/dist/ApiDataInterface-DPP8s46n.d.mts +0 -21
- package/dist/ApiDataInterface-DPP8s46n.d.ts +0 -21
- package/dist/AuthComponent-B_Ps2Vb9.d.ts +0 -78
- package/dist/AuthComponent-CxnGgvoh.d.mts +0 -78
- package/dist/BlockNoteEditor-AIEEQM6A.mjs.map +0 -1
- package/dist/BlockNoteEditor-G6AK2NWA.js.map +0 -1
- package/dist/JsonApiRequest-UJ7FGIVI.js +0 -25
- package/dist/atoms/index.d.mts +0 -12
- package/dist/atoms/index.d.ts +0 -12
- package/dist/atoms/index.js +0 -9
- package/dist/atoms/index.js.map +0 -1
- package/dist/atoms/index.mjs +0 -9
- package/dist/chunk-2K3Q24UF.js.map +0 -1
- package/dist/chunk-3FBCC4G3.js +0 -8
- package/dist/chunk-3FBCC4G3.js.map +0 -1
- package/dist/chunk-3UELCPIN.js +0 -46
- package/dist/chunk-3UELCPIN.js.map +0 -1
- package/dist/chunk-5IET37O4.js +0 -4210
- package/dist/chunk-5IET37O4.js.map +0 -1
- package/dist/chunk-AYHKQWHH.js +0 -68
- package/dist/chunk-AYHKQWHH.js.map +0 -1
- package/dist/chunk-DEYKTLA3.js +0 -1131
- package/dist/chunk-DEYKTLA3.js.map +0 -1
- package/dist/chunk-EFJEWLRL.js.map +0 -1
- package/dist/chunk-FMBQZAIP.mjs +0 -490
- package/dist/chunk-FMBQZAIP.mjs.map +0 -1
- package/dist/chunk-HR4H2FP7.mjs.map +0 -1
- package/dist/chunk-J7YDGYSW.mjs +0 -9332
- package/dist/chunk-J7YDGYSW.mjs.map +0 -1
- package/dist/chunk-JGFWIT2E.mjs +0 -1131
- package/dist/chunk-JGFWIT2E.mjs.map +0 -1
- package/dist/chunk-P2F54I7Q.mjs +0 -4210
- package/dist/chunk-P2F54I7Q.mjs.map +0 -1
- package/dist/chunk-Q2N6SQYW.mjs +0 -8
- package/dist/chunk-Q2N6SQYW.mjs.map +0 -1
- package/dist/chunk-Q4FXESVT.js +0 -490
- package/dist/chunk-Q4FXESVT.js.map +0 -1
- package/dist/chunk-SM63SZCP.mjs +0 -68
- package/dist/chunk-SM63SZCP.mjs.map +0 -1
- package/dist/chunk-SZZYEG3P.mjs +0 -46
- package/dist/chunk-SZZYEG3P.mjs.map +0 -1
- package/dist/chunk-VET55IZO.js.map +0 -1
- package/dist/chunk-YF5XQZDR.mjs.map +0 -1
- package/dist/config-BmnK65TD.d.mts +0 -35
- package/dist/config-BmnK65TD.d.ts +0 -35
- package/dist/config-DQeAo9Kf.d.mts +0 -49
- package/dist/config-DQeAo9Kf.d.ts +0 -49
- package/dist/content.fields-cHPdM8GJ.d.mts +0 -27
- package/dist/content.fields-cHPdM8GJ.d.ts +0 -27
- package/dist/d3.link.interface-ClC4Irqp.d.mts +0 -21
- package/dist/d3.link.interface-ClC4Irqp.d.ts +0 -21
- package/dist/features/index.d.mts +0 -477
- package/dist/features/index.d.ts +0 -477
- package/dist/features/index.js +0 -108
- package/dist/features/index.js.map +0 -1
- package/dist/features/index.mjs +0 -108
- package/dist/hooks/index.d.mts +0 -69
- package/dist/hooks/index.d.ts +0 -69
- package/dist/hooks/index.js +0 -55
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/index.mjs +0 -55
- package/dist/hooks/index.mjs.map +0 -1
- package/dist/interfaces/index.d.mts +0 -4
- package/dist/interfaces/index.d.ts +0 -4
- package/dist/interfaces/index.js +0 -2
- package/dist/interfaces/index.js.map +0 -1
- package/dist/interfaces/index.mjs +0 -2
- package/dist/interfaces/index.mjs.map +0 -1
- package/dist/notification.interface-B2BrLoDA.d.mts +0 -14
- package/dist/notification.interface-DlZLnAfg.d.ts +0 -14
- package/dist/permissions/index.d.mts +0 -41
- package/dist/permissions/index.d.ts +0 -41
- package/dist/permissions/index.js +0 -14
- package/dist/permissions/index.js.map +0 -1
- package/dist/permissions/index.mjs +0 -14
- package/dist/permissions/index.mjs.map +0 -1
- package/dist/request-7FE3LJLV.mjs +0 -9
- package/dist/request-7FE3LJLV.mjs.map +0 -1
- package/dist/request-QFS7NEIE.js +0 -9
- package/dist/request-QFS7NEIE.js.map +0 -1
- package/dist/roles/index.d.mts +0 -39
- package/dist/roles/index.d.ts +0 -39
- package/dist/roles/index.js +0 -18
- package/dist/roles/index.js.map +0 -1
- package/dist/roles/index.mjs +0 -18
- package/dist/roles/index.mjs.map +0 -1
- package/dist/shadcnui/index.d.mts +0 -698
- package/dist/shadcnui/index.d.ts +0 -698
- package/dist/shadcnui/index.js +0 -468
- package/dist/shadcnui/index.js.map +0 -1
- package/dist/shadcnui/index.mjs +0 -467
- package/dist/shadcnui/index.mjs.map +0 -1
- package/dist/token-IJSPOMW6.mjs +0 -9
- package/dist/token-IJSPOMW6.mjs.map +0 -1
- package/dist/token-UYE7CV6X.js +0 -9
- package/dist/token-UYE7CV6X.js.map +0 -1
- package/dist/types-B2QRyqyK.d.ts +0 -39
- package/dist/types-CgvNmxTd.d.mts +0 -39
- package/dist/types-t2PyXhDu.d.mts +0 -116
- package/dist/types-t2PyXhDu.d.ts +0 -116
- package/dist/user.interface-CooB1R79.d.mts +0 -85
- package/dist/user.interface-KnIT9pVY.d.ts +0 -85
- package/dist/utils/index.d.mts +0 -224
- package/dist/utils/index.d.ts +0 -224
- package/dist/utils/index.js +0 -46
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/index.mjs +0 -46
- package/dist/utils/index.mjs.map +0 -1
- /package/dist/{JsonApiRequest-6UR7DIAR.mjs.map → JsonApiRequest-VCCRO732.mjs.map} +0 -0
- /package/dist/{chunk-IKBA4AHN.mjs.map → chunk-F4Y3GZG4.mjs.map} +0 -0
- /package/dist/{chunk-HAG77QBV.mjs.map → chunk-K4W5QXL5.mjs.map} +0 -0
- /package/dist/{atoms/index.mjs.map → request-XABCMU25.mjs.map} +0 -0
- /package/dist/{features/index.mjs.map → token-EOK3N45S.mjs.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
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":[]}
|
|
@@ -3,25 +3,23 @@
|
|
|
3
3
|
var _chunk7QVYU63Ejs = require('./chunk-7QVYU63E.js');
|
|
4
4
|
|
|
5
5
|
// src/server/request.ts
|
|
6
|
-
var
|
|
7
|
-
|
|
6
|
+
var cacheLifeToSeconds = {
|
|
7
|
+
seconds: 1,
|
|
8
|
+
minutes: 60,
|
|
9
|
+
hours: 3600,
|
|
10
|
+
days: 86400,
|
|
11
|
+
weeks: 604800,
|
|
12
|
+
max: 31536e3,
|
|
13
|
+
// 1 year
|
|
14
|
+
default: 60
|
|
15
|
+
};
|
|
8
16
|
async function serverRequest(params) {
|
|
9
|
-
"use cache";
|
|
10
17
|
const response = {
|
|
11
18
|
data: void 0,
|
|
12
19
|
ok: false,
|
|
13
20
|
status: 0,
|
|
14
21
|
statusText: ""
|
|
15
22
|
};
|
|
16
|
-
if (params.cache) {
|
|
17
|
-
if (["days", "default", "hours", "max", "minutes", "seconds", "weeks"].includes(params.cache)) {
|
|
18
|
-
_cachelife.cacheLife.call(void 0, params.cache);
|
|
19
|
-
} else {
|
|
20
|
-
_cachetag.cacheTag.call(void 0, params.cache);
|
|
21
|
-
}
|
|
22
|
-
} else {
|
|
23
|
-
_cachelife.cacheLife.call(void 0, "seconds");
|
|
24
|
-
}
|
|
25
23
|
const additionalHeaders = { ...params.additionalHeaders };
|
|
26
24
|
if (params.companyId) {
|
|
27
25
|
additionalHeaders["x-companyid"] = params.companyId;
|
|
@@ -54,9 +52,21 @@ async function serverRequest(params) {
|
|
|
54
52
|
requestBody = JSON.stringify(params.body);
|
|
55
53
|
additionalHeaders["Content-Type"] = "application/json";
|
|
56
54
|
}
|
|
55
|
+
const nextOptions = {};
|
|
56
|
+
if (params.cache) {
|
|
57
|
+
if (params.cache in cacheLifeToSeconds) {
|
|
58
|
+
nextOptions.revalidate = cacheLifeToSeconds[params.cache];
|
|
59
|
+
} else {
|
|
60
|
+
nextOptions.tags = [params.cache];
|
|
61
|
+
nextOptions.revalidate = 60;
|
|
62
|
+
}
|
|
63
|
+
} else {
|
|
64
|
+
nextOptions.revalidate = 1;
|
|
65
|
+
}
|
|
57
66
|
const options = {
|
|
58
67
|
method: params.method,
|
|
59
|
-
headers: { Accept: "application/json", ...additionalHeaders }
|
|
68
|
+
headers: { Accept: "application/json", ...additionalHeaders },
|
|
69
|
+
next: nextOptions
|
|
60
70
|
};
|
|
61
71
|
if (requestBody !== void 0) {
|
|
62
72
|
options.body = requestBody;
|
|
@@ -86,4 +96,4 @@ _chunk7QVYU63Ejs.__name.call(void 0, serverRequest, "serverRequest");
|
|
|
86
96
|
|
|
87
97
|
|
|
88
98
|
exports.serverRequest = serverRequest;
|
|
89
|
-
//# sourceMappingURL=chunk-
|
|
99
|
+
//# sourceMappingURL=chunk-3ZPK4QOB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-3ZPK4QOB.js","../src/server/request.ts"],"names":[],"mappings":"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","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-3ZPK4QOB.js","sourcesContent":[null,"// Server-only utilities (NOT server actions - these cannot be called from client components)\n\nimport { ApiData } from \"../core/interfaces/ApiData\";\n\nexport interface ServerRequestParams {\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}\n\n// Map cache configuration names to revalidation times in seconds\nconst cacheLifeToSeconds: Record<string, number> = {\n seconds: 1,\n minutes: 60,\n hours: 3600,\n days: 86400,\n weeks: 604800,\n max: 31536000, // 1 year\n default: 60,\n};\n\n/**\n * Server-side request with Next.js caching support.\n * Uses fetch's native caching options for Next.js compatibility.\n */\nexport async function serverRequest(params: ServerRequestParams): Promise<ApiData> {\n const response: ApiData = {\n data: undefined,\n ok: false,\n status: 0,\n statusText: \"\",\n };\n\n const additionalHeaders: Record<string, string> = { ...params.additionalHeaders };\n\n if (params.companyId) {\n additionalHeaders[\"x-companyid\"] = params.companyId;\n }\n additionalHeaders[\"x-language\"] = params.language;\n\n let requestBody: BodyInit | undefined = undefined;\n\n if (params.files) {\n const formData = new FormData();\n if (params.body && typeof params.body === \"object\") {\n for (const key in params.body) {\n if (Object.prototype.hasOwnProperty.call(params.body, key)) {\n formData.append(\n key,\n typeof params.body[key] === \"object\" ? JSON.stringify(params.body[key]) : params.body[key],\n );\n }\n }\n }\n\n if (params.files instanceof Blob) {\n formData.append(\"file\", params.files);\n } else if (typeof params.files === \"object\" && params.files !== null) {\n for (const key in params.files) {\n if (Object.prototype.hasOwnProperty.call(params.files, key)) {\n formData.append(key, params.files[key]);\n }\n }\n }\n\n requestBody = formData;\n } else if (params.body !== undefined) {\n requestBody = JSON.stringify(params.body);\n additionalHeaders[\"Content-Type\"] = \"application/json\";\n }\n\n // Build Next.js fetch caching options\n const nextOptions: { revalidate?: number; tags?: string[] } = {};\n\n if (params.cache) {\n // Check if it's a predefined cache life name\n if (params.cache in cacheLifeToSeconds) {\n nextOptions.revalidate = cacheLifeToSeconds[params.cache];\n } else {\n // Treat as a cache tag\n nextOptions.tags = [params.cache];\n nextOptions.revalidate = 60; // Default revalidation time for tagged caches\n }\n } else {\n // Default to short caching\n nextOptions.revalidate = 1;\n }\n\n const options: RequestInit & { next?: { revalidate?: number; tags?: string[] } } = {\n method: params.method,\n headers: { Accept: \"application/json\", ...additionalHeaders },\n next: nextOptions,\n };\n\n if (requestBody !== undefined) {\n options.body = requestBody;\n }\n\n if (params.token) {\n options.headers = { ...options.headers, Authorization: `Bearer ${params.token}` };\n }\n\n try {\n const apiResponse = await fetch(params.url, options);\n\n response.ok = apiResponse.ok;\n response.status = apiResponse.status;\n response.statusText = apiResponse.statusText;\n try {\n response.data = await apiResponse.json();\n } catch {\n response.data = undefined;\n }\n } catch {\n response.ok = false;\n response.status = 500;\n response.data = undefined;\n }\n\n return response;\n}\n"]}
|
|
@@ -0,0 +1,142 @@
|
|
|
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; }
|
|
2
|
+
|
|
3
|
+
var _chunk7QVYU63Ejs = require('./chunk-7QVYU63E.js');
|
|
4
|
+
|
|
5
|
+
// src/client/config.ts
|
|
6
|
+
var _clientConfig = null;
|
|
7
|
+
function configureJsonApi(config) {
|
|
8
|
+
_clientConfig = config;
|
|
9
|
+
if (config.bootstrapper) {
|
|
10
|
+
config.bootstrapper();
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
_chunk7QVYU63Ejs.__name.call(void 0, configureJsonApi, "configureJsonApi");
|
|
14
|
+
function configureClientConfig(config) {
|
|
15
|
+
_clientConfig = config;
|
|
16
|
+
}
|
|
17
|
+
_chunk7QVYU63Ejs.__name.call(void 0, configureClientConfig, "configureClientConfig");
|
|
18
|
+
function getApiUrl() {
|
|
19
|
+
if (_optionalChain([_clientConfig, 'optionalAccess', _ => _.apiUrl])) {
|
|
20
|
+
return _clientConfig.apiUrl;
|
|
21
|
+
}
|
|
22
|
+
if (typeof process !== "undefined" && _optionalChain([process, 'access', _2 => _2.env, 'optionalAccess', _3 => _3.NEXT_PUBLIC_API_URL])) {
|
|
23
|
+
return process.env.NEXT_PUBLIC_API_URL;
|
|
24
|
+
}
|
|
25
|
+
return "";
|
|
26
|
+
}
|
|
27
|
+
_chunk7QVYU63Ejs.__name.call(void 0, getApiUrl, "getApiUrl");
|
|
28
|
+
function getAppUrl() {
|
|
29
|
+
if (_optionalChain([_clientConfig, 'optionalAccess', _4 => _4.appUrl])) {
|
|
30
|
+
return _clientConfig.appUrl;
|
|
31
|
+
}
|
|
32
|
+
if (typeof process !== "undefined" && _optionalChain([process, 'access', _5 => _5.env, 'optionalAccess', _6 => _6.NEXT_PUBLIC_APP_URL])) {
|
|
33
|
+
return process.env.NEXT_PUBLIC_APP_URL;
|
|
34
|
+
}
|
|
35
|
+
if (typeof window !== "undefined") {
|
|
36
|
+
return window.location.origin;
|
|
37
|
+
}
|
|
38
|
+
return "";
|
|
39
|
+
}
|
|
40
|
+
_chunk7QVYU63Ejs.__name.call(void 0, getAppUrl, "getAppUrl");
|
|
41
|
+
function getTrackablePages() {
|
|
42
|
+
return _nullishCoalesce(_optionalChain([_clientConfig, 'optionalAccess', _7 => _7.trackablePages]), () => ( []));
|
|
43
|
+
}
|
|
44
|
+
_chunk7QVYU63Ejs.__name.call(void 0, getTrackablePages, "getTrackablePages");
|
|
45
|
+
|
|
46
|
+
// src/i18n/config.ts
|
|
47
|
+
var _config = null;
|
|
48
|
+
function configureI18n(config) {
|
|
49
|
+
_config = config;
|
|
50
|
+
}
|
|
51
|
+
_chunk7QVYU63Ejs.__name.call(void 0, configureI18n, "configureI18n");
|
|
52
|
+
function useI18nRouter() {
|
|
53
|
+
if (!_optionalChain([_config, 'optionalAccess', _8 => _8.useRouter])) {
|
|
54
|
+
throw new Error("i18n not configured. Call configureI18n() at app startup.");
|
|
55
|
+
}
|
|
56
|
+
return _config.useRouter();
|
|
57
|
+
}
|
|
58
|
+
_chunk7QVYU63Ejs.__name.call(void 0, useI18nRouter, "useI18nRouter");
|
|
59
|
+
function useI18nTranslations(namespace) {
|
|
60
|
+
if (!_optionalChain([_config, 'optionalAccess', _9 => _9.useTranslations])) {
|
|
61
|
+
return (key) => key;
|
|
62
|
+
}
|
|
63
|
+
return _config.useTranslations(namespace);
|
|
64
|
+
}
|
|
65
|
+
_chunk7QVYU63Ejs.__name.call(void 0, useI18nTranslations, "useI18nTranslations");
|
|
66
|
+
function getI18nLink() {
|
|
67
|
+
if (!_optionalChain([_config, 'optionalAccess', _10 => _10.Link])) {
|
|
68
|
+
throw new Error("i18n not configured. Call configureI18n() at app startup.");
|
|
69
|
+
}
|
|
70
|
+
return _config.Link;
|
|
71
|
+
}
|
|
72
|
+
_chunk7QVYU63Ejs.__name.call(void 0, getI18nLink, "getI18nLink");
|
|
73
|
+
function useI18nLocale() {
|
|
74
|
+
if (_optionalChain([_config, 'optionalAccess', _11 => _11.useLocale])) {
|
|
75
|
+
return _config.useLocale();
|
|
76
|
+
}
|
|
77
|
+
return "en";
|
|
78
|
+
}
|
|
79
|
+
_chunk7QVYU63Ejs.__name.call(void 0, useI18nLocale, "useI18nLocale");
|
|
80
|
+
function useI18nDateFnsLocale() {
|
|
81
|
+
if (_optionalChain([_config, 'optionalAccess', _12 => _12.useDateFnsLocale])) {
|
|
82
|
+
return _config.useDateFnsLocale();
|
|
83
|
+
}
|
|
84
|
+
return void 0;
|
|
85
|
+
}
|
|
86
|
+
_chunk7QVYU63Ejs.__name.call(void 0, useI18nDateFnsLocale, "useI18nDateFnsLocale");
|
|
87
|
+
|
|
88
|
+
// src/discord/config.ts
|
|
89
|
+
var _useDiscord = false;
|
|
90
|
+
var _useInternalAuth = true;
|
|
91
|
+
function configureDiscord(params) {
|
|
92
|
+
_useDiscord = params.useDiscord;
|
|
93
|
+
_useInternalAuth = params.useInternalAuth;
|
|
94
|
+
}
|
|
95
|
+
_chunk7QVYU63Ejs.__name.call(void 0, configureDiscord, "configureDiscord");
|
|
96
|
+
function isDiscordConfigured() {
|
|
97
|
+
return _useDiscord;
|
|
98
|
+
}
|
|
99
|
+
_chunk7QVYU63Ejs.__name.call(void 0, isDiscordConfigured, "isDiscordConfigured");
|
|
100
|
+
function isInternalAuthConfigured() {
|
|
101
|
+
return _useInternalAuth;
|
|
102
|
+
}
|
|
103
|
+
_chunk7QVYU63Ejs.__name.call(void 0, isInternalAuthConfigured, "isInternalAuthConfigured");
|
|
104
|
+
|
|
105
|
+
// src/roles/config.ts
|
|
106
|
+
var _roleId = null;
|
|
107
|
+
function configureRoles(roleId) {
|
|
108
|
+
_roleId = roleId;
|
|
109
|
+
}
|
|
110
|
+
_chunk7QVYU63Ejs.__name.call(void 0, configureRoles, "configureRoles");
|
|
111
|
+
function getRoleId() {
|
|
112
|
+
if (!_roleId) {
|
|
113
|
+
throw new Error("Roles not configured. Call configureRoles() at app startup.");
|
|
114
|
+
}
|
|
115
|
+
return _roleId;
|
|
116
|
+
}
|
|
117
|
+
_chunk7QVYU63Ejs.__name.call(void 0, getRoleId, "getRoleId");
|
|
118
|
+
function isRolesConfigured() {
|
|
119
|
+
return _roleId !== null;
|
|
120
|
+
}
|
|
121
|
+
_chunk7QVYU63Ejs.__name.call(void 0, isRolesConfigured, "isRolesConfigured");
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
exports.configureJsonApi = configureJsonApi; exports.configureClientConfig = configureClientConfig; exports.getApiUrl = getApiUrl; exports.getAppUrl = getAppUrl; exports.getTrackablePages = getTrackablePages; exports.configureI18n = configureI18n; exports.useI18nRouter = useI18nRouter; exports.useI18nTranslations = useI18nTranslations; exports.getI18nLink = getI18nLink; exports.useI18nLocale = useI18nLocale; exports.useI18nDateFnsLocale = useI18nDateFnsLocale; exports.configureDiscord = configureDiscord; exports.isDiscordConfigured = isDiscordConfigured; exports.isInternalAuthConfigured = isInternalAuthConfigured; exports.configureRoles = configureRoles; exports.getRoleId = getRoleId; exports.isRolesConfigured = isRolesConfigured;
|
|
142
|
+
//# sourceMappingURL=chunk-AGWQ75PQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-AGWQ75PQ.js","../src/client/config.ts","../src/i18n/config.ts","../src/discord/config.ts","../src/roles/config.ts"],"names":[],"mappings":"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","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-AGWQ75PQ.js","sourcesContent":[null,"\"use client\";\n\nimport { ModuleWithPermissions } from \"../permissions/types\";\n\n// Config storage for client-side contexts\nlet _clientConfig: {\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. This is the main configuration function.\n * This is typically called during app initialization.\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 _clientConfig = config;\n // Call bootstrapper immediately to register all modules\n if (config.bootstrapper) {\n config.bootstrapper();\n }\n}\n\n/**\n * Configure the client config. This is typically called during app initialization.\n * @deprecated Use configureJsonApi instead\n */\nexport function configureClientConfig(config: {\n apiUrl: string;\n appUrl?: string;\n trackablePages?: ModuleWithPermissions[];\n}): void {\n _clientConfig = config;\n}\n\n/**\n * Get the configured API URL.\n */\nexport function getApiUrl(): string {\n if (_clientConfig?.apiUrl) {\n return _clientConfig.apiUrl;\n }\n if (typeof process !== \"undefined\" && process.env?.NEXT_PUBLIC_API_URL) {\n return process.env.NEXT_PUBLIC_API_URL;\n }\n return \"\";\n}\n\n/**\n * Get the configured app URL.\n */\nexport function getAppUrl(): string {\n if (_clientConfig?.appUrl) {\n return _clientConfig.appUrl;\n }\n if (typeof process !== \"undefined\" && process.env?.NEXT_PUBLIC_APP_URL) {\n return process.env.NEXT_PUBLIC_APP_URL;\n }\n if (typeof window !== \"undefined\") {\n return window.location.origin;\n }\n return \"\";\n}\n\n/**\n * Get the configured trackable pages.\n */\nexport function getTrackablePages(): ModuleWithPermissions[] {\n return _clientConfig?.trackablePages ?? [];\n}\n","import { ComponentType } from \"react\";\n\n// Types for injected hooks\nexport interface I18nRouter {\n push: (href: string) => void;\n replace: (href: string) => void;\n back: () => void;\n forward: () => void;\n refresh: () => void;\n prefetch: (href: string) => void;\n}\n\nexport type UseRouterHook = () => I18nRouter;\nexport type UseTranslationsHook = (namespace?: string) => (key: string, values?: Record<string, any>) => string;\nexport type UseLocaleHook = () => string;\n\nexport type UseDateFnsLocaleHook = () => any; // date-fns Locale type\nexport type LinkComponent = ComponentType<{ href: string; children: React.ReactNode; [key: string]: any }>;\n\nexport interface I18nConfig {\n useRouter: UseRouterHook;\n useTranslations: UseTranslationsHook;\n useLocale?: UseLocaleHook;\n useDateFnsLocale?: UseDateFnsLocaleHook;\n Link: LinkComponent;\n usePathname: () => string;\n}\n\n// Private storage\nlet _config: I18nConfig | null = null;\n\n// Configuration function (called by app at startup)\nexport function configureI18n(config: I18nConfig): void {\n _config = config;\n}\n\n// Hooks for library components to use\nexport function useI18nRouter(): I18nRouter {\n if (!_config?.useRouter) {\n throw new Error(\"i18n not configured. Call configureI18n() at app startup.\");\n }\n return _config.useRouter();\n}\n\nexport function useI18nTranslations(namespace?: string): (key: string, values?: Record<string, any>) => string {\n if (!_config?.useTranslations) {\n // Fallback: return key as-is (safe for server/client)\n return (key: string) => key;\n }\n return _config.useTranslations(namespace);\n}\n\nexport function getI18nLink(): LinkComponent {\n if (!_config?.Link) {\n throw new Error(\"i18n not configured. Call configureI18n() at app startup.\");\n }\n return _config.Link;\n}\n\nexport function useI18nLocale(): string {\n if (_config?.useLocale) {\n return _config.useLocale();\n }\n // Fallback to English (safe for server/client)\n return \"en\";\n}\n\nexport function useI18nDateFnsLocale(): any {\n if (_config?.useDateFnsLocale) {\n return _config.useDateFnsLocale();\n }\n // Fallback to undefined (Calendar will use default)\n return undefined;\n}\n","let _useDiscord: boolean = false;\nlet _useInternalAuth: boolean = true;\n\nexport function configureDiscord(params: { useDiscord: boolean; useInternalAuth: boolean }): void {\n _useDiscord = params.useDiscord;\n _useInternalAuth = params.useInternalAuth;\n}\n\nexport function isDiscordConfigured(): boolean {\n return _useDiscord;\n}\n\nexport function isInternalAuthConfigured(): boolean {\n return _useInternalAuth;\n}\n","/**\n * Role ID configuration interface\n * Apps provide their role IDs via configureRoles()\n */\nexport interface RoleIdConfig {\n Administrator: string;\n CompanyAdministrator: string;\n [key: string]: string; // Allow additional roles\n}\n\n// Private storage for the injected role IDs\nlet _roleId: RoleIdConfig | null = null;\n\n/**\n * Configure role IDs for the library\n * Call this at app startup to provide role ID constants\n *\n * @example\n * ```typescript\n * import { configureRoles } from \"@carlonicora/nextjs-jsonapi\";\n * import { RoleId } from \"@phlow/shared\";\n *\n * configureRoles(RoleId);\n * ```\n */\nexport function configureRoles(roleId: RoleIdConfig): void {\n _roleId = roleId;\n}\n\n/**\n * Get configured role IDs\n * @throws Error if roles not configured\n */\nexport function getRoleId(): RoleIdConfig {\n if (!_roleId) {\n throw new Error(\"Roles not configured. Call configureRoles() at app startup.\");\n }\n return _roleId;\n}\n\n/**\n * Check if roles have been configured\n */\nexport function isRolesConfigured(): boolean {\n return _roleId !== null;\n}\n"]}
|
|
@@ -95,4 +95,4 @@ _chunk7QVYU63Ejs.__name.call(void 0, getValueFromPath, "getValueFromPath");
|
|
|
95
95
|
|
|
96
96
|
|
|
97
97
|
exports.Action = Action; exports.checkPermissions = checkPermissions; exports.checkPermissionsFromServer = checkPermissionsFromServer; exports.getValueFromPath = getValueFromPath;
|
|
98
|
-
//# sourceMappingURL=chunk-
|
|
98
|
+
//# sourceMappingURL=chunk-CSM6AIAP.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-32HM6MDD.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-32HM6MDD.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
|
+
{"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"]}
|
|
@@ -22,7 +22,7 @@ __name(configureJsonApi, "configureJsonApi");
|
|
|
22
22
|
async function getToken() {
|
|
23
23
|
if (typeof window === "undefined") {
|
|
24
24
|
if (!_getServerToken) {
|
|
25
|
-
const serverModule = await import("./token-
|
|
25
|
+
const serverModule = await import("./token-EOK3N45S.mjs");
|
|
26
26
|
_getServerToken = serverModule.getServerToken;
|
|
27
27
|
}
|
|
28
28
|
return _getServerToken();
|
|
@@ -53,7 +53,7 @@ async function makeRequest(params) {
|
|
|
53
53
|
});
|
|
54
54
|
} else {
|
|
55
55
|
if (!_serverRequest) {
|
|
56
|
-
const serverModule = await import("./request-
|
|
56
|
+
const serverModule = await import("./request-XABCMU25.mjs");
|
|
57
57
|
_serverRequest = serverModule.serverRequest;
|
|
58
58
|
}
|
|
59
59
|
return _serverRequest({
|
|
@@ -247,4 +247,4 @@ export {
|
|
|
247
247
|
JsonApiPatch,
|
|
248
248
|
JsonApiDelete
|
|
249
249
|
};
|
|
250
|
-
//# sourceMappingURL=chunk-
|
|
250
|
+
//# sourceMappingURL=chunk-F4Y3GZG4.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server/token.ts"],"sourcesContent":["// Server-only utilities (NOT server actions - these cannot be called from client components)\n\n/**\n * Get the authentication token from cookies (server-side)\n */\nexport async function getServerToken(): Promise<string | undefined> {\n const { cookies } = await import(\"next/headers\");\n const cookieStore = await cookies();\n return cookieStore.get(\"token\")?.value;\n}\n"],"mappings":";;;;;AAKA,eAAsB,iBAA8C;AAClE,QAAM,EAAE,QAAQ,IAAI,MAAM,OAAO,cAAc;AAC/C,QAAM,cAAc,MAAM,QAAQ;AAClC,SAAO,YAAY,IAAI,OAAO,GAAG;AACnC;AAJsB;","names":[]}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__name
|
|
3
|
+
} from "./chunk-PAWJFY3S.mjs";
|
|
4
|
+
|
|
5
|
+
// src/client/config.ts
|
|
6
|
+
var _clientConfig = null;
|
|
7
|
+
function configureJsonApi(config) {
|
|
8
|
+
_clientConfig = config;
|
|
9
|
+
if (config.bootstrapper) {
|
|
10
|
+
config.bootstrapper();
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
__name(configureJsonApi, "configureJsonApi");
|
|
14
|
+
function configureClientConfig(config) {
|
|
15
|
+
_clientConfig = config;
|
|
16
|
+
}
|
|
17
|
+
__name(configureClientConfig, "configureClientConfig");
|
|
18
|
+
function getApiUrl() {
|
|
19
|
+
if (_clientConfig?.apiUrl) {
|
|
20
|
+
return _clientConfig.apiUrl;
|
|
21
|
+
}
|
|
22
|
+
if (typeof process !== "undefined" && process.env?.NEXT_PUBLIC_API_URL) {
|
|
23
|
+
return process.env.NEXT_PUBLIC_API_URL;
|
|
24
|
+
}
|
|
25
|
+
return "";
|
|
26
|
+
}
|
|
27
|
+
__name(getApiUrl, "getApiUrl");
|
|
28
|
+
function getAppUrl() {
|
|
29
|
+
if (_clientConfig?.appUrl) {
|
|
30
|
+
return _clientConfig.appUrl;
|
|
31
|
+
}
|
|
32
|
+
if (typeof process !== "undefined" && process.env?.NEXT_PUBLIC_APP_URL) {
|
|
33
|
+
return process.env.NEXT_PUBLIC_APP_URL;
|
|
34
|
+
}
|
|
35
|
+
if (typeof window !== "undefined") {
|
|
36
|
+
return window.location.origin;
|
|
37
|
+
}
|
|
38
|
+
return "";
|
|
39
|
+
}
|
|
40
|
+
__name(getAppUrl, "getAppUrl");
|
|
41
|
+
function getTrackablePages() {
|
|
42
|
+
return _clientConfig?.trackablePages ?? [];
|
|
43
|
+
}
|
|
44
|
+
__name(getTrackablePages, "getTrackablePages");
|
|
45
|
+
|
|
46
|
+
// src/i18n/config.ts
|
|
47
|
+
var _config = null;
|
|
48
|
+
function configureI18n(config) {
|
|
49
|
+
_config = config;
|
|
50
|
+
}
|
|
51
|
+
__name(configureI18n, "configureI18n");
|
|
52
|
+
function useI18nRouter() {
|
|
53
|
+
if (!_config?.useRouter) {
|
|
54
|
+
throw new Error("i18n not configured. Call configureI18n() at app startup.");
|
|
55
|
+
}
|
|
56
|
+
return _config.useRouter();
|
|
57
|
+
}
|
|
58
|
+
__name(useI18nRouter, "useI18nRouter");
|
|
59
|
+
function useI18nTranslations(namespace) {
|
|
60
|
+
if (!_config?.useTranslations) {
|
|
61
|
+
return (key) => key;
|
|
62
|
+
}
|
|
63
|
+
return _config.useTranslations(namespace);
|
|
64
|
+
}
|
|
65
|
+
__name(useI18nTranslations, "useI18nTranslations");
|
|
66
|
+
function getI18nLink() {
|
|
67
|
+
if (!_config?.Link) {
|
|
68
|
+
throw new Error("i18n not configured. Call configureI18n() at app startup.");
|
|
69
|
+
}
|
|
70
|
+
return _config.Link;
|
|
71
|
+
}
|
|
72
|
+
__name(getI18nLink, "getI18nLink");
|
|
73
|
+
function useI18nLocale() {
|
|
74
|
+
if (_config?.useLocale) {
|
|
75
|
+
return _config.useLocale();
|
|
76
|
+
}
|
|
77
|
+
return "en";
|
|
78
|
+
}
|
|
79
|
+
__name(useI18nLocale, "useI18nLocale");
|
|
80
|
+
function useI18nDateFnsLocale() {
|
|
81
|
+
if (_config?.useDateFnsLocale) {
|
|
82
|
+
return _config.useDateFnsLocale();
|
|
83
|
+
}
|
|
84
|
+
return void 0;
|
|
85
|
+
}
|
|
86
|
+
__name(useI18nDateFnsLocale, "useI18nDateFnsLocale");
|
|
87
|
+
|
|
88
|
+
// src/discord/config.ts
|
|
89
|
+
var _useDiscord = false;
|
|
90
|
+
var _useInternalAuth = true;
|
|
91
|
+
function configureDiscord(params) {
|
|
92
|
+
_useDiscord = params.useDiscord;
|
|
93
|
+
_useInternalAuth = params.useInternalAuth;
|
|
94
|
+
}
|
|
95
|
+
__name(configureDiscord, "configureDiscord");
|
|
96
|
+
function isDiscordConfigured() {
|
|
97
|
+
return _useDiscord;
|
|
98
|
+
}
|
|
99
|
+
__name(isDiscordConfigured, "isDiscordConfigured");
|
|
100
|
+
function isInternalAuthConfigured() {
|
|
101
|
+
return _useInternalAuth;
|
|
102
|
+
}
|
|
103
|
+
__name(isInternalAuthConfigured, "isInternalAuthConfigured");
|
|
104
|
+
|
|
105
|
+
// src/roles/config.ts
|
|
106
|
+
var _roleId = null;
|
|
107
|
+
function configureRoles(roleId) {
|
|
108
|
+
_roleId = roleId;
|
|
109
|
+
}
|
|
110
|
+
__name(configureRoles, "configureRoles");
|
|
111
|
+
function getRoleId() {
|
|
112
|
+
if (!_roleId) {
|
|
113
|
+
throw new Error("Roles not configured. Call configureRoles() at app startup.");
|
|
114
|
+
}
|
|
115
|
+
return _roleId;
|
|
116
|
+
}
|
|
117
|
+
__name(getRoleId, "getRoleId");
|
|
118
|
+
function isRolesConfigured() {
|
|
119
|
+
return _roleId !== null;
|
|
120
|
+
}
|
|
121
|
+
__name(isRolesConfigured, "isRolesConfigured");
|
|
122
|
+
|
|
123
|
+
export {
|
|
124
|
+
configureJsonApi,
|
|
125
|
+
configureClientConfig,
|
|
126
|
+
getApiUrl,
|
|
127
|
+
getAppUrl,
|
|
128
|
+
getTrackablePages,
|
|
129
|
+
configureI18n,
|
|
130
|
+
useI18nRouter,
|
|
131
|
+
useI18nTranslations,
|
|
132
|
+
getI18nLink,
|
|
133
|
+
useI18nLocale,
|
|
134
|
+
useI18nDateFnsLocale,
|
|
135
|
+
configureDiscord,
|
|
136
|
+
isDiscordConfigured,
|
|
137
|
+
isInternalAuthConfigured,
|
|
138
|
+
configureRoles,
|
|
139
|
+
getRoleId,
|
|
140
|
+
isRolesConfigured
|
|
141
|
+
};
|
|
142
|
+
//# sourceMappingURL=chunk-IGOWVLJH.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/client/config.ts","../src/i18n/config.ts","../src/discord/config.ts","../src/roles/config.ts"],"sourcesContent":["\"use client\";\n\nimport { ModuleWithPermissions } from \"../permissions/types\";\n\n// Config storage for client-side contexts\nlet _clientConfig: {\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. This is the main configuration function.\n * This is typically called during app initialization.\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 _clientConfig = config;\n // Call bootstrapper immediately to register all modules\n if (config.bootstrapper) {\n config.bootstrapper();\n }\n}\n\n/**\n * Configure the client config. This is typically called during app initialization.\n * @deprecated Use configureJsonApi instead\n */\nexport function configureClientConfig(config: {\n apiUrl: string;\n appUrl?: string;\n trackablePages?: ModuleWithPermissions[];\n}): void {\n _clientConfig = config;\n}\n\n/**\n * Get the configured API URL.\n */\nexport function getApiUrl(): string {\n if (_clientConfig?.apiUrl) {\n return _clientConfig.apiUrl;\n }\n if (typeof process !== \"undefined\" && process.env?.NEXT_PUBLIC_API_URL) {\n return process.env.NEXT_PUBLIC_API_URL;\n }\n return \"\";\n}\n\n/**\n * Get the configured app URL.\n */\nexport function getAppUrl(): string {\n if (_clientConfig?.appUrl) {\n return _clientConfig.appUrl;\n }\n if (typeof process !== \"undefined\" && process.env?.NEXT_PUBLIC_APP_URL) {\n return process.env.NEXT_PUBLIC_APP_URL;\n }\n if (typeof window !== \"undefined\") {\n return window.location.origin;\n }\n return \"\";\n}\n\n/**\n * Get the configured trackable pages.\n */\nexport function getTrackablePages(): ModuleWithPermissions[] {\n return _clientConfig?.trackablePages ?? [];\n}\n","import { ComponentType } from \"react\";\n\n// Types for injected hooks\nexport interface I18nRouter {\n push: (href: string) => void;\n replace: (href: string) => void;\n back: () => void;\n forward: () => void;\n refresh: () => void;\n prefetch: (href: string) => void;\n}\n\nexport type UseRouterHook = () => I18nRouter;\nexport type UseTranslationsHook = (namespace?: string) => (key: string, values?: Record<string, any>) => string;\nexport type UseLocaleHook = () => string;\n\nexport type UseDateFnsLocaleHook = () => any; // date-fns Locale type\nexport type LinkComponent = ComponentType<{ href: string; children: React.ReactNode; [key: string]: any }>;\n\nexport interface I18nConfig {\n useRouter: UseRouterHook;\n useTranslations: UseTranslationsHook;\n useLocale?: UseLocaleHook;\n useDateFnsLocale?: UseDateFnsLocaleHook;\n Link: LinkComponent;\n usePathname: () => string;\n}\n\n// Private storage\nlet _config: I18nConfig | null = null;\n\n// Configuration function (called by app at startup)\nexport function configureI18n(config: I18nConfig): void {\n _config = config;\n}\n\n// Hooks for library components to use\nexport function useI18nRouter(): I18nRouter {\n if (!_config?.useRouter) {\n throw new Error(\"i18n not configured. Call configureI18n() at app startup.\");\n }\n return _config.useRouter();\n}\n\nexport function useI18nTranslations(namespace?: string): (key: string, values?: Record<string, any>) => string {\n if (!_config?.useTranslations) {\n // Fallback: return key as-is (safe for server/client)\n return (key: string) => key;\n }\n return _config.useTranslations(namespace);\n}\n\nexport function getI18nLink(): LinkComponent {\n if (!_config?.Link) {\n throw new Error(\"i18n not configured. Call configureI18n() at app startup.\");\n }\n return _config.Link;\n}\n\nexport function useI18nLocale(): string {\n if (_config?.useLocale) {\n return _config.useLocale();\n }\n // Fallback to English (safe for server/client)\n return \"en\";\n}\n\nexport function useI18nDateFnsLocale(): any {\n if (_config?.useDateFnsLocale) {\n return _config.useDateFnsLocale();\n }\n // Fallback to undefined (Calendar will use default)\n return undefined;\n}\n","let _useDiscord: boolean = false;\nlet _useInternalAuth: boolean = true;\n\nexport function configureDiscord(params: { useDiscord: boolean; useInternalAuth: boolean }): void {\n _useDiscord = params.useDiscord;\n _useInternalAuth = params.useInternalAuth;\n}\n\nexport function isDiscordConfigured(): boolean {\n return _useDiscord;\n}\n\nexport function isInternalAuthConfigured(): boolean {\n return _useInternalAuth;\n}\n","/**\n * Role ID configuration interface\n * Apps provide their role IDs via configureRoles()\n */\nexport interface RoleIdConfig {\n Administrator: string;\n CompanyAdministrator: string;\n [key: string]: string; // Allow additional roles\n}\n\n// Private storage for the injected role IDs\nlet _roleId: RoleIdConfig | null = null;\n\n/**\n * Configure role IDs for the library\n * Call this at app startup to provide role ID constants\n *\n * @example\n * ```typescript\n * import { configureRoles } from \"@carlonicora/nextjs-jsonapi\";\n * import { RoleId } from \"@phlow/shared\";\n *\n * configureRoles(RoleId);\n * ```\n */\nexport function configureRoles(roleId: RoleIdConfig): void {\n _roleId = roleId;\n}\n\n/**\n * Get configured role IDs\n * @throws Error if roles not configured\n */\nexport function getRoleId(): RoleIdConfig {\n if (!_roleId) {\n throw new Error(\"Roles not configured. Call configureRoles() at app startup.\");\n }\n return _roleId;\n}\n\n/**\n * Check if roles have been configured\n */\nexport function isRolesConfigured(): boolean {\n return _roleId !== null;\n}\n"],"mappings":";;;;;AAKA,IAAI,gBAMO;AAMJ,SAAS,iBAAiB,QAMxB;AACP,kBAAgB;AAEhB,MAAI,OAAO,cAAc;AACvB,WAAO,aAAa;AAAA,EACtB;AACF;AAZgB;AAkBT,SAAS,sBAAsB,QAI7B;AACP,kBAAgB;AAClB;AANgB;AAWT,SAAS,YAAoB;AAClC,MAAI,eAAe,QAAQ;AACzB,WAAO,cAAc;AAAA,EACvB;AACA,MAAI,OAAO,YAAY,eAAe,QAAQ,KAAK,qBAAqB;AACtE,WAAO,QAAQ,IAAI;AAAA,EACrB;AACA,SAAO;AACT;AARgB;AAaT,SAAS,YAAoB;AAClC,MAAI,eAAe,QAAQ;AACzB,WAAO,cAAc;AAAA,EACvB;AACA,MAAI,OAAO,YAAY,eAAe,QAAQ,KAAK,qBAAqB;AACtE,WAAO,QAAQ,IAAI;AAAA,EACrB;AACA,MAAI,OAAO,WAAW,aAAa;AACjC,WAAO,OAAO,SAAS;AAAA,EACzB;AACA,SAAO;AACT;AAXgB;AAgBT,SAAS,oBAA6C;AAC3D,SAAO,eAAe,kBAAkB,CAAC;AAC3C;AAFgB;;;AC9ChB,IAAI,UAA6B;AAG1B,SAAS,cAAc,QAA0B;AACtD,YAAU;AACZ;AAFgB;AAKT,SAAS,gBAA4B;AAC1C,MAAI,CAAC,SAAS,WAAW;AACvB,UAAM,IAAI,MAAM,2DAA2D;AAAA,EAC7E;AACA,SAAO,QAAQ,UAAU;AAC3B;AALgB;AAOT,SAAS,oBAAoB,WAA2E;AAC7G,MAAI,CAAC,SAAS,iBAAiB;AAE7B,WAAO,CAAC,QAAgB;AAAA,EAC1B;AACA,SAAO,QAAQ,gBAAgB,SAAS;AAC1C;AANgB;AAQT,SAAS,cAA6B;AAC3C,MAAI,CAAC,SAAS,MAAM;AAClB,UAAM,IAAI,MAAM,2DAA2D;AAAA,EAC7E;AACA,SAAO,QAAQ;AACjB;AALgB;AAOT,SAAS,gBAAwB;AACtC,MAAI,SAAS,WAAW;AACtB,WAAO,QAAQ,UAAU;AAAA,EAC3B;AAEA,SAAO;AACT;AANgB;AAQT,SAAS,uBAA4B;AAC1C,MAAI,SAAS,kBAAkB;AAC7B,WAAO,QAAQ,iBAAiB;AAAA,EAClC;AAEA,SAAO;AACT;AANgB;;;ACnEhB,IAAI,cAAuB;AAC3B,IAAI,mBAA4B;AAEzB,SAAS,iBAAiB,QAAiE;AAChG,gBAAc,OAAO;AACrB,qBAAmB,OAAO;AAC5B;AAHgB;AAKT,SAAS,sBAA+B;AAC7C,SAAO;AACT;AAFgB;AAIT,SAAS,2BAAoC;AAClD,SAAO;AACT;AAFgB;;;ACDhB,IAAI,UAA+B;AAc5B,SAAS,eAAe,QAA4B;AACzD,YAAU;AACZ;AAFgB;AAQT,SAAS,YAA0B;AACxC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,6DAA6D;AAAA,EAC/E;AACA,SAAO;AACT;AALgB;AAUT,SAAS,oBAA6B;AAC3C,SAAO,YAAY;AACrB;AAFgB;","names":[]}
|