@carlonicora/nextjs-jsonapi 1.3.0 → 1.4.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 (86) hide show
  1. package/dist/{BlockNoteEditor-CNXQ3WL3.js → BlockNoteEditor-QV6ESIQA.js} +18 -18
  2. package/dist/{BlockNoteEditor-CNXQ3WL3.js.map → BlockNoteEditor-QV6ESIQA.js.map} +1 -1
  3. package/dist/{BlockNoteEditor-DC33K4IF.mjs → BlockNoteEditor-U2IHUVUF.mjs} +8 -8
  4. package/dist/{JsonApiRequest-O7BGUMFO.mjs → JsonApiRequest-6UR7DIAR.mjs} +4 -2
  5. package/dist/JsonApiRequest-UJ7FGIVI.js +25 -0
  6. package/dist/JsonApiRequest-UJ7FGIVI.js.map +1 -0
  7. package/dist/chunk-3UELCPIN.js +46 -0
  8. package/dist/chunk-3UELCPIN.js.map +1 -0
  9. package/dist/{chunk-EZK3H6EJ.js → chunk-5IET37O4.js} +206 -206
  10. package/dist/{chunk-EZK3H6EJ.js.map → chunk-5IET37O4.js.map} +1 -1
  11. package/dist/{chunk-LJRD4SRV.js → chunk-DEYKTLA3.js} +6 -6
  12. package/dist/{chunk-LJRD4SRV.js.map → chunk-DEYKTLA3.js.map} +1 -1
  13. package/dist/{chunk-KDFDGXCX.js → chunk-E2HRC2OG.js} +593 -579
  14. package/dist/chunk-E2HRC2OG.js.map +1 -0
  15. package/dist/{chunk-NPPQNSXN.mjs → chunk-FMBQZAIP.mjs} +3 -3
  16. package/dist/{chunk-MHVXFWZY.mjs → chunk-HTLEKZND.mjs} +3 -3
  17. package/dist/{chunk-74F6BBHH.mjs → chunk-IKBA4AHN.mjs} +2 -1
  18. package/dist/chunk-IKBA4AHN.mjs.map +1 -0
  19. package/dist/{chunk-JLN6UWII.mjs → chunk-JGFWIT2E.mjs} +2 -2
  20. package/dist/{chunk-X53MF5ZN.mjs → chunk-P2F54I7Q.mjs} +2 -2
  21. package/dist/{chunk-5ZEADNNP.js → chunk-PMXG5WBC.js} +3 -2
  22. package/dist/chunk-PMXG5WBC.js.map +1 -0
  23. package/dist/{chunk-L6LH7WA4.js → chunk-PO5Q3H5I.js} +190 -190
  24. package/dist/{chunk-L6LH7WA4.js.map → chunk-PO5Q3H5I.js.map} +1 -1
  25. package/dist/{chunk-WZJDLITG.js → chunk-Q4FXESVT.js} +3 -3
  26. package/dist/{chunk-WZJDLITG.js.map → chunk-Q4FXESVT.js.map} +1 -1
  27. package/dist/{chunk-Y4XI3AZR.mjs → chunk-R2ONK22M.mjs} +38 -24
  28. package/dist/chunk-R2ONK22M.mjs.map +1 -0
  29. package/dist/chunk-SZZYEG3P.mjs +46 -0
  30. package/dist/chunk-SZZYEG3P.mjs.map +1 -0
  31. package/dist/client/index.js +8 -8
  32. package/dist/client/index.mjs +7 -7
  33. package/dist/components/index.js +8 -8
  34. package/dist/components/index.mjs +7 -7
  35. package/dist/contexts/index.js +8 -8
  36. package/dist/contexts/index.mjs +7 -7
  37. package/dist/core/index.js +2 -2
  38. package/dist/core/index.mjs +1 -1
  39. package/dist/features/index.js +5 -5
  40. package/dist/features/index.mjs +4 -4
  41. package/dist/hooks/index.js +8 -8
  42. package/dist/hooks/index.mjs +7 -7
  43. package/dist/index.d.mts +2 -1
  44. package/dist/index.d.ts +2 -1
  45. package/dist/index.js +6 -4
  46. package/dist/index.js.map +1 -1
  47. package/dist/index.mjs +5 -3
  48. package/dist/roles/index.d.mts +7 -1
  49. package/dist/roles/index.d.ts +7 -1
  50. package/dist/roles/index.js +8 -2
  51. package/dist/roles/index.js.map +1 -1
  52. package/dist/roles/index.mjs +7 -1
  53. package/dist/shadcnui/index.js +4 -4
  54. package/dist/shadcnui/index.mjs +3 -3
  55. package/dist/utils/index.js +3 -3
  56. package/dist/utils/index.mjs +2 -2
  57. package/package.json +1 -1
  58. package/src/components/errors/ErrorDetails.tsx +2 -2
  59. package/src/features/auth/components/containers/AuthContainer.tsx +1 -1
  60. package/src/features/auth/components/details/LandingComponent.tsx +29 -12
  61. package/src/features/auth/components/forms/AcceptInvitation.tsx +1 -1
  62. package/src/features/auth/components/forms/ActivateAccount.tsx +1 -1
  63. package/src/features/auth/components/forms/ForgotPassword.tsx +1 -1
  64. package/src/features/auth/components/forms/Login.tsx +1 -1
  65. package/src/features/auth/components/forms/Register.tsx +1 -1
  66. package/src/features/auth/components/forms/ResetPassword.tsx +1 -1
  67. package/src/features/company/components/forms/CompanyLicense.tsx +1 -8
  68. package/src/roles/config.ts +15 -0
  69. package/src/roles/index.ts +9 -1
  70. package/src/unified/JsonApiRequest.ts +2 -2
  71. package/dist/JsonApiRequest-VARLNKAF.js +0 -23
  72. package/dist/JsonApiRequest-VARLNKAF.js.map +0 -1
  73. package/dist/chunk-4HCRAOS5.js +0 -28
  74. package/dist/chunk-4HCRAOS5.js.map +0 -1
  75. package/dist/chunk-5ZEADNNP.js.map +0 -1
  76. package/dist/chunk-74F6BBHH.mjs.map +0 -1
  77. package/dist/chunk-BLWVZK6J.mjs +0 -28
  78. package/dist/chunk-BLWVZK6J.mjs.map +0 -1
  79. package/dist/chunk-KDFDGXCX.js.map +0 -1
  80. package/dist/chunk-Y4XI3AZR.mjs.map +0 -1
  81. /package/dist/{BlockNoteEditor-DC33K4IF.mjs.map → BlockNoteEditor-U2IHUVUF.mjs.map} +0 -0
  82. /package/dist/{JsonApiRequest-O7BGUMFO.mjs.map → JsonApiRequest-6UR7DIAR.mjs.map} +0 -0
  83. /package/dist/{chunk-NPPQNSXN.mjs.map → chunk-FMBQZAIP.mjs.map} +0 -0
  84. /package/dist/{chunk-MHVXFWZY.mjs.map → chunk-HTLEKZND.mjs.map} +0 -0
  85. /package/dist/{chunk-JLN6UWII.mjs.map → chunk-JGFWIT2E.mjs.map} +0 -0
  86. /package/dist/{chunk-X53MF5ZN.mjs.map → chunk-P2F54I7Q.mjs.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-WZJDLITG.js","../src/core/factories/RehydrationFactory.ts","../src/core/abstracts/AbstractApiData.ts","../src/core/abstracts/AbstractService.ts","../src/core/registry/ModuleRegistrar.ts","../src/core/registry/ModuleRegistry.ts","../src/core/endpoint/EndpointCreator.ts","../src/core/fields/FieldSelector.ts","../src/core/utils/rehydrate.ts"],"names":["includedData","HttpMethod"],"mappings":"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","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-WZJDLITG.js","sourcesContent":[null,"import { ApiDataInterface } from \"../interfaces/ApiDataInterface\";\nimport { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\nimport { JsonApiHydratedDataInterface } from \"../interfaces/JsonApiHydratedDataInterface\";\nimport { DataClassRegistry } from \"../registry/DataClassRegistry\";\n\nexport class RehydrationFactory {\n public static rehydrate<T extends ApiDataInterface>(\n classKey: ApiRequestDataTypeInterface,\n data: JsonApiHydratedDataInterface,\n ): T {\n const factoryClass = DataClassRegistry.get(classKey);\n\n const instance = new factoryClass();\n return instance.rehydrate(data) as T;\n }\n\n public static rehydrateList<T extends ApiDataInterface>(\n classKey: ApiRequestDataTypeInterface,\n data: JsonApiHydratedDataInterface[],\n ): T[] {\n const factoryClass = DataClassRegistry.get(classKey);\n\n const response = data.map((item: JsonApiHydratedDataInterface) => {\n const instance = new factoryClass();\n return instance.rehydrate(item) as T;\n });\n\n return response;\n }\n}\n","import { ApiDataInterface } from \"../interfaces/ApiDataInterface\";\nimport { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\nimport { JsonApiHydratedDataInterface } from \"../interfaces/JsonApiHydratedDataInterface\";\nimport { RehydrationFactory } from \"../factories/RehydrationFactory\";\n\nexport abstract class AbstractApiData implements ApiDataInterface {\n protected _jsonApi?: any;\n protected _included?: any[];\n\n protected _id?: string;\n protected _type?: string;\n protected _createdAt?: Date;\n protected _updatedAt?: Date;\n\n protected _self?: string;\n\n get type(): string {\n if (!this._type) throw new Error(\"Type is not set.\");\n return this._type;\n }\n\n get id(): string {\n if (!this._id) throw new Error(\"Id is not set.\");\n return this._id;\n }\n\n get self(): string | undefined {\n return this._self;\n }\n\n get createdAt(): Date {\n return this._createdAt ?? new Date();\n }\n\n get updatedAt(): Date {\n return this._updatedAt ?? new Date();\n }\n\n get included(): any[] {\n return this._included ?? [];\n }\n\n get jsonApi(): any {\n return this._jsonApi;\n }\n\n ingestJsonApi(_data: JsonApiHydratedDataInterface): void {}\n\n generateApiUrl(_params?: any): string {\n throw new Error(\"Method not implemented.\");\n }\n\n createJsonApi(_data?: any): any {\n throw new Error(\"Method not implemented.\");\n }\n\n protected _readIncluded<T extends ApiDataInterface>(\n data: JsonApiHydratedDataInterface,\n type: string,\n dataType: ApiRequestDataTypeInterface,\n ): T | T[] | undefined {\n if (\n data.included === undefined ||\n data.included.length === 0 ||\n data.jsonApi.relationships === undefined ||\n data.jsonApi.relationships[type] === undefined ||\n data.jsonApi.relationships[type].data === undefined\n ) {\n return undefined;\n }\n\n if (Array.isArray(data.jsonApi.relationships[type].data)) {\n const response: T[] = data.jsonApi.relationships[type].data.map((jsonApiData: any) => {\n const includedData = data.included.find(\n (includedData: any) => includedData.id === jsonApiData.id && includedData.type === jsonApiData.type,\n );\n\n if (includedData === undefined) return undefined;\n\n return RehydrationFactory.rehydrate(dataType, {\n jsonApi: includedData,\n included: data.included,\n }) as T;\n });\n\n return response.filter((item: T | undefined) => item !== undefined) as T[];\n }\n\n const includedData = data.included.find(\n (includedData: any) =>\n includedData.id === data.jsonApi.relationships[type].data.id &&\n includedData.type === data.jsonApi.relationships[type].data.type,\n );\n\n if (includedData === undefined && data.allData !== undefined) {\n // Try to find in allData as a fallback\n const fallbackData = data.allData.find(\n (includedData: any) =>\n includedData.id === data.jsonApi.relationships[type].data.id &&\n includedData.type === data.jsonApi.relationships[type].data.type,\n );\n if (fallbackData !== undefined) {\n return RehydrationFactory.rehydrate(dataType, {\n jsonApi: fallbackData,\n included: data.included,\n }) as T;\n }\n }\n\n if (includedData === undefined) return undefined;\n\n return RehydrationFactory.rehydrate(dataType, {\n jsonApi: includedData,\n included: data.included,\n }) as T;\n }\n\n dehydrate(): JsonApiHydratedDataInterface {\n return {\n jsonApi: this._jsonApi,\n included: this._included ?? [],\n };\n }\n\n rehydrate(data: JsonApiHydratedDataInterface): this {\n this._jsonApi = data.jsonApi;\n this._included = data.included;\n\n this._type = this._jsonApi.type;\n this._id = this._jsonApi.id;\n this._createdAt = this._jsonApi.meta?.createdAt !== undefined ? new Date(this._jsonApi.meta.createdAt) : undefined;\n this._updatedAt = this._jsonApi.meta?.updatedAt !== undefined ? new Date(this._jsonApi.meta.updatedAt) : undefined;\n\n this._self = this._jsonApi.links?.self ?? undefined;\n\n return this;\n }\n}\n","import { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\nimport { ApiResponseInterface } from \"../interfaces/ApiResponseInterface\";\n\nexport enum HttpMethod {\n GET = \"GET\",\n POST = \"POST\",\n PUT = \"PUT\",\n PATCH = \"PATCH\",\n DELETE = \"DELETE\",\n}\n\nexport interface NextRef {\n next?: string;\n}\n\nexport interface PreviousRef {\n previous?: string;\n}\n\nexport interface SelfRef {\n self?: string;\n}\n\nlet globalErrorHandler: ((status: number, message: string) => void) | null = null;\n\n/**\n * Set a global error handler for API errors (client-side only).\n * This handler will be called instead of throwing errors.\n */\nexport function setGlobalErrorHandler(handler: (status: number, message: string) => void) {\n globalErrorHandler = handler;\n}\n\n/**\n * Get the current global error handler.\n */\nexport function getGlobalErrorHandler(): ((status: number, message: string) => void) | null {\n return globalErrorHandler;\n}\n\n/**\n * Abstract base class for services that interact with the JSON:API.\n * Extend this class to create feature-specific services.\n */\nexport abstract class AbstractService {\n /**\n * Extract locale from client-side URL pathname\n * URL structure: /{locale}/route-path (e.g., /it/accounts)\n * Fallback chain: URL locale → navigator.language → \"en\"\n */\n private static getClientLocale(): string {\n if (typeof window === \"undefined\") {\n return \"en\"; // Server-side fallback\n }\n\n // Extract locale from URL pathname (first segment after leading slash)\n const pathSegments = window.location.pathname.split(\"/\").filter(Boolean);\n const urlLocale = pathSegments[0];\n\n // Validate against supported locales (currently only \"en\")\n const supportedLocales = [\"en\"];\n if (urlLocale && supportedLocales.includes(urlLocale)) {\n return urlLocale;\n }\n\n // Fallback to navigator language\n const navigatorLocale = navigator.language.split(\"-\")[0];\n if (navigatorLocale && supportedLocales.includes(navigatorLocale)) {\n return navigatorLocale;\n }\n\n // Final fallback\n return \"en\";\n }\n\n static async next<T>(params: {\n type: ApiRequestDataTypeInterface;\n endpoint: string;\n next?: NextRef;\n previous?: PreviousRef;\n self?: SelfRef;\n }): Promise<T> {\n return await this.callApi<T>({\n method: HttpMethod.GET,\n type: params.type,\n endpoint: params.endpoint,\n next: params.next,\n previous: params.previous,\n self: params.self,\n });\n }\n\n /**\n * Fetch the previous page of results.\n */\n static async previous<T>(params: {\n type: ApiRequestDataTypeInterface;\n endpoint: string;\n next?: NextRef;\n previous?: PreviousRef;\n self?: SelfRef;\n }): Promise<T> {\n return await this.callApi<T>({\n method: HttpMethod.GET,\n type: params.type,\n endpoint: params.endpoint,\n next: params.next,\n previous: params.previous,\n self: params.self,\n });\n }\n\n /**\n * Make an API call with automatic environment detection and error handling.\n */\n protected static async callApi<T>(params: {\n type: ApiRequestDataTypeInterface;\n method: HttpMethod;\n endpoint: string;\n companyId?: string;\n input?: any;\n overridesJsonApiCreation?: boolean;\n next?: NextRef;\n previous?: PreviousRef;\n self?: SelfRef;\n responseType?: ApiRequestDataTypeInterface;\n files?: { [key: string]: File | Blob } | File | Blob;\n }): Promise<T> {\n // Dynamic import to avoid bundling issues\n const { JsonApiGet, JsonApiPost, JsonApiPut, JsonApiPatch, JsonApiDelete } =\n await import(\"../../unified/JsonApiRequest\");\n\n let apiResponse: ApiResponseInterface;\n\n // Get language based on environment\n let language = \"en\";\n if (typeof window === \"undefined\") {\n const { getLocale } = await import(\"next-intl/server\");\n language = (await getLocale()) ?? \"en\";\n } else {\n // Client-side: extract locale from URL pathname\n language = this.getClientLocale();\n }\n\n switch (params.method) {\n case HttpMethod.GET:\n apiResponse = await JsonApiGet({\n classKey: params.type,\n endpoint: params.endpoint,\n companyId: params.companyId,\n language: language,\n });\n break;\n case HttpMethod.POST:\n apiResponse = await JsonApiPost({\n classKey: params.type,\n endpoint: params.endpoint,\n companyId: params.companyId,\n body: params.input,\n overridesJsonApiCreation: params.overridesJsonApiCreation,\n language: language,\n responseType: params.responseType,\n files: params.files,\n });\n break;\n case HttpMethod.PUT:\n apiResponse = await JsonApiPut({\n classKey: params.type,\n endpoint: params.endpoint,\n companyId: params.companyId,\n body: params.input,\n language: language,\n responseType: params.responseType,\n files: params.files,\n });\n break;\n case HttpMethod.PATCH:\n apiResponse = await JsonApiPatch({\n classKey: params.type,\n endpoint: params.endpoint,\n companyId: params.companyId,\n body: params.input,\n overridesJsonApiCreation: params.overridesJsonApiCreation,\n language: language,\n responseType: params.responseType,\n files: params.files,\n });\n break;\n case HttpMethod.DELETE:\n apiResponse = await JsonApiDelete({\n classKey: params.type,\n endpoint: params.endpoint,\n companyId: params.companyId,\n language: language,\n responseType: params.responseType,\n });\n break;\n default:\n throw new Error(\"Method not found\");\n }\n\n if (!apiResponse.ok) {\n if (globalErrorHandler && typeof window !== \"undefined\") {\n globalErrorHandler(apiResponse.response, apiResponse.error);\n return undefined as any;\n } else {\n const error = new Error(`${apiResponse.response}:${apiResponse.error}`) as any;\n error.status = apiResponse.response;\n error.digest = `HTTP_${apiResponse.response}`;\n throw error;\n }\n }\n\n if (apiResponse.next && params.next) params.next.next = apiResponse.next;\n if (apiResponse.prev && params.previous) params.previous.previous = apiResponse.prev;\n if (apiResponse.self && params.self) params.self.self = apiResponse.self;\n\n return apiResponse.data as T;\n }\n\n /**\n * Get raw JSON:API response data without deserialization.\n */\n protected static async getRawData(params: {\n type: ApiRequestDataTypeInterface;\n method: HttpMethod;\n endpoint: string;\n companyId?: string;\n }): Promise<any> {\n const { JsonApiGet } = await import(\"../../unified/JsonApiRequest\");\n\n let language = \"en\";\n\n if (typeof window === \"undefined\") {\n const { getLocale } = await import(\"next-intl/server\");\n language = (await getLocale()) ?? \"en\";\n } else {\n // Client-side: extract locale from URL pathname\n language = this.getClientLocale();\n }\n\n const apiResponse: ApiResponseInterface = await JsonApiGet({\n classKey: params.type,\n endpoint: params.endpoint,\n companyId: params.companyId,\n language: language,\n });\n\n if (!apiResponse.ok) {\n if (globalErrorHandler && typeof window !== \"undefined\") {\n globalErrorHandler(apiResponse.response, apiResponse.error);\n return undefined as any;\n } else {\n const error = new Error(`${apiResponse.response}:${apiResponse.error}`) as any;\n error.status = apiResponse.response;\n error.digest = `HTTP_${apiResponse.response}`;\n throw error;\n }\n }\n\n return apiResponse.raw;\n }\n}\n","import { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\nimport { DataClassRegistry } from \"./DataClassRegistry\";\n\n/**\n * Helper class to bootstrap the registry from a Modules-style class.\n * This supports the pattern where modules are defined as static getters.\n */\nexport class ModuleRegistrar {\n private static _isBootstrapped = false;\n\n /**\n * Bootstrap the registry from a Modules class.\n * Automatically detects static getters and registers their models.\n *\n * @param modulesClass - The Modules class with static getters\n */\n static bootstrap<T extends object>(modulesClass: T): void {\n if (this._isBootstrapped) return;\n\n const data = Object.getOwnPropertyNames(modulesClass)\n .filter((key) => {\n const descriptor = Object.getOwnPropertyDescriptor(modulesClass, key);\n return descriptor && typeof descriptor.get === \"function\";\n })\n .map((key) => (modulesClass as any)[key] as ApiRequestDataTypeInterface);\n\n data.forEach((item) => {\n if (item && item.model) {\n DataClassRegistry.registerObjectClass(item, item.model);\n }\n });\n\n this._isBootstrapped = true;\n }\n\n /**\n * Reset the bootstrapped state. Useful for testing.\n */\n static reset(): void {\n this._isBootstrapped = false;\n DataClassRegistry.clear();\n }\n}\n","import { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\nimport { ModuleWithPermissions } from \"../../permissions/types\";\n\n// Foundation module types - defined by LIBRARY\nexport interface FoundationModuleDefinitions {\n S3: ModuleWithPermissions;\n Auth: ModuleWithPermissions;\n User: ModuleWithPermissions;\n Author: ModuleWithPermissions;\n Company: ModuleWithPermissions;\n Role: ModuleWithPermissions;\n Notification: ModuleWithPermissions;\n Push: ModuleWithPermissions;\n Feature: ModuleWithPermissions;\n Module: ModuleWithPermissions;\n Content: ModuleWithPermissions;\n UserTopic: ModuleWithPermissions;\n UserExpertise: ModuleWithPermissions;\n}\n\n// App-specific modules - apps will augment this interface ONLY\n\nexport interface AppModuleDefinitions {}\n\n// Combined type for full autocompletion\nexport type ModuleDefinitions = FoundationModuleDefinitions & AppModuleDefinitions;\n\nclass ModuleRegistryClass {\n private _modules: Map<string, ApiRequestDataTypeInterface> = new Map();\n\n register<K extends string>(name: K, module: ApiRequestDataTypeInterface): void {\n this._modules.set(name, module);\n }\n\n get<K extends keyof ModuleDefinitions>(name: K): ModuleDefinitions[K] {\n const module = this._modules.get(name as string);\n if (!module) {\n throw new Error(`Module \"${String(name)}\" not registered. Call bootstrap() first.`);\n }\n return module as ModuleDefinitions[K];\n }\n\n findByName(moduleName: string): ModuleWithPermissions {\n // Search by module's name property (e.g., \"topics\", \"articles\")\n for (const module of this._modules.values()) {\n if ((module as ModuleWithPermissions).name === moduleName) {\n return module as ModuleWithPermissions;\n }\n }\n throw new Error(`Module not found: ${moduleName}`);\n }\n\n findByModelName(modelName: string): ModuleWithPermissions {\n // Direct lookup by registry key (e.g., \"Article\", \"Document\")\n const module = this._modules.get(modelName);\n if (!module) {\n throw new Error(`Module not found for model: ${modelName}`);\n }\n return module as ModuleWithPermissions;\n }\n}\n\nexport const ModuleRegistry = new ModuleRegistryClass();\n\n// Proxy object for Modules.X syntax with autocompletion\nexport const Modules = new Proxy({} as ModuleDefinitions, {\n get(_, prop: string) {\n if (prop === \"findByName\") {\n return (name: string) => ModuleRegistry.findByName(name);\n }\n if (prop === \"findByModelName\") {\n return (name: string) => ModuleRegistry.findByModelName(name);\n }\n return ModuleRegistry.get(prop as keyof ModuleDefinitions);\n },\n}) as ModuleDefinitions & {\n findByName: (name: string) => ModuleWithPermissions;\n findByModelName: (name: string) => ModuleWithPermissions;\n};\n","import { FieldSelector } from \"../fields/FieldSelector\";\nimport { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\n\nexport type EndpointQuery = {\n endpoint: ApiRequestDataTypeInterface;\n id?: string;\n childEndpoint?: ApiRequestDataTypeInterface | string;\n childId?: string;\n additionalParams?: { key: string; value: string | string[] }[];\n};\n\nexport class EndpointCreator {\n private _endpoint: EndpointQuery;\n\n constructor(params: {\n endpoint: ApiRequestDataTypeInterface;\n id?: string;\n childEndpoint?: ApiRequestDataTypeInterface | string;\n childId?: string;\n additionalParams?: { key: string; value: string }[];\n }) {\n this._endpoint = {\n endpoint: params.endpoint,\n id: params.id,\n childEndpoint: params.childEndpoint,\n childId: params.childId,\n additionalParams: params.additionalParams ?? [],\n };\n }\n\n endpoint(value: ApiRequestDataTypeInterface): EndpointCreator {\n this._endpoint.endpoint = value;\n return this;\n }\n\n id(value: string): EndpointCreator {\n this._endpoint.id = value;\n return this;\n }\n\n childEndpoint(value: ApiRequestDataTypeInterface | string): EndpointCreator {\n this._endpoint.childEndpoint = value;\n return this;\n }\n\n childId(value: string): EndpointCreator {\n this._endpoint.childId = value;\n return this;\n }\n\n set additionalParams(value: { key: string; value: string }[]) {\n this._endpoint.additionalParams = value;\n }\n\n addAdditionalParam(key: string, value: string | string[]): EndpointCreator {\n if (!this._endpoint.additionalParams) this._endpoint.additionalParams = [];\n this._endpoint.additionalParams.push({ key, value });\n return this;\n }\n\n limitToType(selectors: string[]): this {\n this.addAdditionalParam(`include`, selectors.join(\",\"));\n return this;\n }\n\n limitToFields(selectors: FieldSelector<any>[]): this {\n if (selectors.length === 0) return this;\n\n selectors.forEach((selector) => {\n const fieldString = selector.fields.join(\",\");\n this.addAdditionalParam(`fields[${selector.type}]`, fieldString);\n });\n\n return this;\n }\n\n generate(): string {\n let additionalParams = \"\";\n if (this._endpoint.additionalParams) {\n additionalParams = this._endpoint.additionalParams.map((param) => `${param.key}=${param.value}`).join(\"&\");\n }\n\n let response = `${this._endpoint.endpoint.name}`;\n if (this._endpoint.id) response += `/${this._endpoint.id}`;\n if (this._endpoint.childEndpoint) {\n response += `/${\n typeof this._endpoint.childEndpoint === \"string\"\n ? this._endpoint.childEndpoint\n : this._endpoint.childEndpoint.name\n }`;\n }\n if (this._endpoint.childId) response += `/${this._endpoint.childId}`;\n if (additionalParams) response += `?${additionalParams}`;\n\n return response;\n }\n}\n","export type GetterKeys<T> = {\n [K in keyof T]: T[K] extends () => any ? never : K;\n}[keyof T];\n\nexport type FieldSelector<T> = {\n type: string;\n fields: ReadonlyArray<GetterKeys<T>>;\n};\n\nexport function createJsonApiInclusion<T>(dataType: string, fields: ReadonlyArray<GetterKeys<T>>): FieldSelector<T> {\n return {\n type: dataType,\n fields,\n };\n}\n","import { ApiDataInterface } from \"../interfaces/ApiDataInterface\";\nimport { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\nimport { JsonApiHydratedDataInterface } from \"../interfaces/JsonApiHydratedDataInterface\";\nimport { RehydrationFactory } from \"../factories/RehydrationFactory\";\n\n/**\n * Rehydrate a single dehydrated object back into its typed class instance.\n */\nexport function rehydrate<T extends ApiDataInterface>(\n classKey: ApiRequestDataTypeInterface,\n data: JsonApiHydratedDataInterface,\n): T {\n return RehydrationFactory.rehydrate(classKey, data) as T;\n}\n\n/**\n * Rehydrate a list of dehydrated objects back into typed class instances.\n */\nexport function rehydrateList<T extends ApiDataInterface>(\n classKey: ApiRequestDataTypeInterface,\n data: JsonApiHydratedDataInterface[],\n): T[] {\n return RehydrationFactory.rehydrateList(classKey, data) as T[];\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-Q4FXESVT.js","../src/core/factories/RehydrationFactory.ts","../src/core/abstracts/AbstractApiData.ts","../src/core/abstracts/AbstractService.ts","../src/core/registry/ModuleRegistrar.ts","../src/core/registry/ModuleRegistry.ts","../src/core/endpoint/EndpointCreator.ts","../src/core/fields/FieldSelector.ts","../src/core/utils/rehydrate.ts"],"names":["includedData","HttpMethod"],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACA;ACFO,IAAM,mBAAA,EAAN,MAAyB;AAAA,EALhC,OAKgC;AAAA,IAAA,qCAAA,IAAA,EAAA,oBAAA,CAAA;AAAA,EAAA;AAAA,EAC9B,OAAc,SAAA,CACZ,QAAA,EACA,IAAA,EACG;AACH,IAAA,MAAM,aAAA,EAAe,kCAAA,CAAkB,GAAA,CAAI,QAAQ,CAAA;AAEnD,IAAA,MAAM,SAAA,EAAW,IAAI,YAAA,CAAa,CAAA;AAClC,IAAA,OAAO,QAAA,CAAS,SAAA,CAAU,IAAI,CAAA;AAAA,EAChC;AAAA,EAEA,OAAc,aAAA,CACZ,QAAA,EACA,IAAA,EACK;AACL,IAAA,MAAM,aAAA,EAAe,kCAAA,CAAkB,GAAA,CAAI,QAAQ,CAAA;AAEnD,IAAA,MAAM,SAAA,EAAW,IAAA,CAAK,GAAA,CAAI,CAAC,IAAA,EAAA,GAAuC;AAChE,MAAA,MAAM,SAAA,EAAW,IAAI,YAAA,CAAa,CAAA;AAClC,MAAA,OAAO,QAAA,CAAS,SAAA,CAAU,IAAI,CAAA;AAAA,IAChC,CAAC,CAAA;AAED,IAAA,OAAO,QAAA;AAAA,EACT;AACF,CAAA;ADHA;AACA;AEtBO,IAAe,gBAAA,EAAf,MAA2D;AAAA,EALlE,OAKkE;AAAA,IAAA,qCAAA,IAAA,EAAA,iBAAA,CAAA;AAAA,EAAA;AAAA,EACtD;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EAEV,IAAI,IAAA,CAAA,EAAe;AACjB,IAAA,GAAA,CAAI,CAAC,IAAA,CAAK,KAAA,EAAO,MAAM,IAAI,KAAA,CAAM,kBAAkB,CAAA;AACnD,IAAA,OAAO,IAAA,CAAK,KAAA;AAAA,EACd;AAAA,EAEA,IAAI,EAAA,CAAA,EAAa;AACf,IAAA,GAAA,CAAI,CAAC,IAAA,CAAK,GAAA,EAAK,MAAM,IAAI,KAAA,CAAM,gBAAgB,CAAA;AAC/C,IAAA,OAAO,IAAA,CAAK,GAAA;AAAA,EACd;AAAA,EAEA,IAAI,IAAA,CAAA,EAA2B;AAC7B,IAAA,OAAO,IAAA,CAAK,KAAA;AAAA,EACd;AAAA,EAEA,IAAI,SAAA,CAAA,EAAkB;AACpB,IAAA,wBAAO,IAAA,CAAK,UAAA,0BAAc,IAAI,IAAA,CAAK,GAAA;AAAA,EACrC;AAAA,EAEA,IAAI,SAAA,CAAA,EAAkB;AACpB,IAAA,wBAAO,IAAA,CAAK,UAAA,0BAAc,IAAI,IAAA,CAAK,GAAA;AAAA,EACrC;AAAA,EAEA,IAAI,QAAA,CAAA,EAAkB;AACpB,IAAA,wBAAO,IAAA,CAAK,SAAA,UAAa,CAAC,GAAA;AAAA,EAC5B;AAAA,EAEA,IAAI,OAAA,CAAA,EAAe;AACjB,IAAA,OAAO,IAAA,CAAK,QAAA;AAAA,EACd;AAAA,EAEA,aAAA,CAAc,KAAA,EAA2C;AAAA,EAAC;AAAA,EAE1D,cAAA,CAAe,OAAA,EAAuB;AACpC,IAAA,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAAA;AAAA,EAC3C;AAAA,EAEA,aAAA,CAAc,KAAA,EAAkB;AAC9B,IAAA,MAAM,IAAI,KAAA,CAAM,yBAAyB,CAAA;AAAA,EAC3C;AAAA,EAEU,aAAA,CACR,IAAA,EACA,IAAA,EACA,QAAA,EACqB;AACrB,IAAA,GAAA,CACE,IAAA,CAAK,SAAA,IAAa,KAAA,EAAA,GAClB,IAAA,CAAK,QAAA,CAAS,OAAA,IAAW,EAAA,GACzB,IAAA,CAAK,OAAA,CAAQ,cAAA,IAAkB,KAAA,EAAA,GAC/B,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,IAAI,EAAA,IAAM,KAAA,EAAA,GACrC,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,IAAI,CAAA,CAAE,KAAA,IAAS,KAAA,CAAA,EAC1C;AACA,MAAA,OAAO,KAAA,CAAA;AAAA,IACT;AAEA,IAAA,GAAA,CAAI,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,IAAI,CAAA,CAAE,IAAI,CAAA,EAAG;AACxD,MAAA,MAAM,SAAA,EAAgB,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,IAAI,CAAA,CAAE,IAAA,CAAK,GAAA,CAAI,CAAC,WAAA,EAAA,GAAqB;AACpF,QAAA,MAAMA,cAAAA,EAAe,IAAA,CAAK,QAAA,CAAS,IAAA;AAAA,UACjC,CAACA,aAAAA,EAAAA,GAAsBA,aAAAA,CAAa,GAAA,IAAO,WAAA,CAAY,GAAA,GAAMA,aAAAA,CAAa,KAAA,IAAS,WAAA,CAAY;AAAA,QACjG,CAAA;AAEA,QAAA,GAAA,CAAIA,cAAAA,IAAiB,KAAA,CAAA,EAAW,OAAO,KAAA,CAAA;AAEvC,QAAA,OAAO,kBAAA,CAAmB,SAAA,CAAU,QAAA,EAAU;AAAA,UAC5C,OAAA,EAASA,aAAAA;AAAA,UACT,QAAA,EAAU,IAAA,CAAK;AAAA,QACjB,CAAC,CAAA;AAAA,MACH,CAAC,CAAA;AAED,MAAA,OAAO,QAAA,CAAS,MAAA,CAAO,CAAC,IAAA,EAAA,GAAwB,KAAA,IAAS,KAAA,CAAS,CAAA;AAAA,IACpE;AAEA,IAAA,MAAM,aAAA,EAAe,IAAA,CAAK,QAAA,CAAS,IAAA;AAAA,MACjC,CAACA,aAAAA,EAAAA,GACCA,aAAAA,CAAa,GAAA,IAAO,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,IAAI,CAAA,CAAE,IAAA,CAAK,GAAA,GAC1DA,aAAAA,CAAa,KAAA,IAAS,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,IAAI,CAAA,CAAE,IAAA,CAAK;AAAA,IAChE,CAAA;AAEA,IAAA,GAAA,CAAI,aAAA,IAAiB,KAAA,EAAA,GAAa,IAAA,CAAK,QAAA,IAAY,KAAA,CAAA,EAAW;AAE5D,MAAA,MAAM,aAAA,EAAe,IAAA,CAAK,OAAA,CAAQ,IAAA;AAAA,QAChC,CAACA,aAAAA,EAAAA,GACCA,aAAAA,CAAa,GAAA,IAAO,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,IAAI,CAAA,CAAE,IAAA,CAAK,GAAA,GAC1DA,aAAAA,CAAa,KAAA,IAAS,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,IAAI,CAAA,CAAE,IAAA,CAAK;AAAA,MAChE,CAAA;AACA,MAAA,GAAA,CAAI,aAAA,IAAiB,KAAA,CAAA,EAAW;AAC9B,QAAA,OAAO,kBAAA,CAAmB,SAAA,CAAU,QAAA,EAAU;AAAA,UAC5C,OAAA,EAAS,YAAA;AAAA,UACT,QAAA,EAAU,IAAA,CAAK;AAAA,QACjB,CAAC,CAAA;AAAA,MACH;AAAA,IACF;AAEA,IAAA,GAAA,CAAI,aAAA,IAAiB,KAAA,CAAA,EAAW,OAAO,KAAA,CAAA;AAEvC,IAAA,OAAO,kBAAA,CAAmB,SAAA,CAAU,QAAA,EAAU;AAAA,MAC5C,OAAA,EAAS,YAAA;AAAA,MACT,QAAA,EAAU,IAAA,CAAK;AAAA,IACjB,CAAC,CAAA;AAAA,EACH;AAAA,EAEA,SAAA,CAAA,EAA0C;AACxC,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,IAAA,CAAK,QAAA;AAAA,MACd,QAAA,mBAAU,IAAA,CAAK,SAAA,UAAa,CAAC;AAAA,IAC/B,CAAA;AAAA,EACF;AAAA,EAEA,SAAA,CAAU,IAAA,EAA0C;AAClD,IAAA,IAAA,CAAK,SAAA,EAAW,IAAA,CAAK,OAAA;AACrB,IAAA,IAAA,CAAK,UAAA,EAAY,IAAA,CAAK,QAAA;AAEtB,IAAA,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,QAAA,CAAS,IAAA;AAC3B,IAAA,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,QAAA,CAAS,EAAA;AACzB,IAAA,IAAA,CAAK,WAAA,kBAAa,IAAA,qBAAK,QAAA,qBAAS,IAAA,6BAAM,YAAA,IAAc,KAAA,EAAA,EAAY,IAAI,IAAA,CAAK,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,SAAS,EAAA,EAAI,KAAA,CAAA;AACzG,IAAA,IAAA,CAAK,WAAA,kBAAa,IAAA,qBAAK,QAAA,qBAAS,IAAA,6BAAM,YAAA,IAAc,KAAA,EAAA,EAAY,IAAI,IAAA,CAAK,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,SAAS,EAAA,EAAI,KAAA,CAAA;AAEzG,IAAA,IAAA,CAAK,MAAA,mCAAQ,IAAA,qBAAK,QAAA,qBAAS,KAAA,+BAAO,MAAA,UAAQ,KAAA,GAAA;AAE1C,IAAA,OAAO,IAAA;AAAA,EACT;AACF,CAAA;AFbA;AACA;AG1HO,IAAK,WAAA,kBAAL,CAAA,CAAKC,WAAAA,EAAAA,GAAL;AACL,EAAAA,WAAAA,CAAA,KAAA,EAAA,EAAM,KAAA;AACN,EAAAA,WAAAA,CAAA,MAAA,EAAA,EAAO,MAAA;AACP,EAAAA,WAAAA,CAAA,KAAA,EAAA,EAAM,KAAA;AACN,EAAAA,WAAAA,CAAA,OAAA,EAAA,EAAQ,OAAA;AACR,EAAAA,WAAAA,CAAA,QAAA,EAAA,EAAS,QAAA;AALC,EAAA,OAAAA,WAAAA;AAAA,CAAA,CAAA,CAAA,WAAA,GAAA,CAAA,CAAA,CAAA;AAoBZ,IAAI,mBAAA,EAAyE,IAAA;AAMtE,SAAS,qBAAA,CAAsB,OAAA,EAAoD;AACxF,EAAA,mBAAA,EAAqB,OAAA;AACvB;AAFgB,qCAAA,qBAAA,EAAA,uBAAA,CAAA;AAOT,SAAS,qBAAA,CAAA,EAA4E;AAC1F,EAAA,OAAO,kBAAA;AACT;AAFgB,qCAAA,qBAAA,EAAA,uBAAA,CAAA;AAQT,IAAe,gBAAA,EAAf,MAA+B;AAAA,EA5CtC,OA4CsC;AAAA,IAAA,qCAAA,IAAA,EAAA,iBAAA,CAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMpC,OAAe,eAAA,CAAA,EAA0B;AACvC,IAAA,GAAA,CAAI,OAAO,OAAA,IAAW,WAAA,EAAa;AACjC,MAAA,OAAO,IAAA;AAAA,IACT;AAGA,IAAA,MAAM,aAAA,EAAe,MAAA,CAAO,QAAA,CAAS,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA;AACvE,IAAA,MAAM,UAAA,EAAY,YAAA,CAAa,CAAC,CAAA;AAGhC,IAAA,MAAM,iBAAA,EAAmB,CAAC,IAAI,CAAA;AAC9B,IAAA,GAAA,CAAI,UAAA,GAAa,gBAAA,CAAiB,QAAA,CAAS,SAAS,CAAA,EAAG;AACrD,MAAA,OAAO,SAAA;AAAA,IACT;AAGA,IAAA,MAAM,gBAAA,EAAkB,SAAA,CAAU,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA;AACvD,IAAA,GAAA,CAAI,gBAAA,GAAmB,gBAAA,CAAiB,QAAA,CAAS,eAAe,CAAA,EAAG;AACjE,MAAA,OAAO,eAAA;AAAA,IACT;AAGA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,OAAA,MAAa,IAAA,CAAQ,MAAA,EAMN;AACb,IAAA,OAAO,MAAM,IAAA,CAAK,OAAA,CAAW;AAAA,MAC3B,MAAA,EAAQ,eAAA;AAAA,MACR,IAAA,EAAM,MAAA,CAAO,IAAA;AAAA,MACb,QAAA,EAAU,MAAA,CAAO,QAAA;AAAA,MACjB,IAAA,EAAM,MAAA,CAAO,IAAA;AAAA,MACb,QAAA,EAAU,MAAA,CAAO,QAAA;AAAA,MACjB,IAAA,EAAM,MAAA,CAAO;AAAA,IACf,CAAC,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,OAAA,MAAa,QAAA,CAAY,MAAA,EAMV;AACb,IAAA,OAAO,MAAM,IAAA,CAAK,OAAA,CAAW;AAAA,MAC3B,MAAA,EAAQ,eAAA;AAAA,MACR,IAAA,EAAM,MAAA,CAAO,IAAA;AAAA,MACb,QAAA,EAAU,MAAA,CAAO,QAAA;AAAA,MACjB,IAAA,EAAM,MAAA,CAAO,IAAA;AAAA,MACb,QAAA,EAAU,MAAA,CAAO,QAAA;AAAA,MACjB,IAAA,EAAM,MAAA,CAAO;AAAA,IACf,CAAC,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,OAAA,MAAuB,OAAA,CAAW,MAAA,EAYnB;AAEb,IAAA,MAAM,EAAE,UAAA,EAAY,WAAA,EAAa,UAAA,EAAY,YAAA,EAAc,cAAc,EAAA,EACvE,MAAM,4DAAA,CAAO,8BAA8B,GAAA;AAE7C,IAAA,IAAI,WAAA;AAGJ,IAAA,IAAI,SAAA,EAAW,IAAA;AACf,IAAA,GAAA,CAAI,OAAO,OAAA,IAAW,WAAA,EAAa;AACjC,MAAA,MAAM,EAAE,UAAU,EAAA,EAAI,MAAM,4DAAA,CAAO,kBAAkB,GAAA;AACrD,MAAA,SAAA,8BAAY,MAAM,SAAA,CAAU,CAAA,gBAAM,MAAA;AAAA,IACpC,EAAA,KAAO;AAEL,MAAA,SAAA,EAAW,IAAA,CAAK,eAAA,CAAgB,CAAA;AAAA,IAClC;AAEA,IAAA,OAAA,CAAQ,MAAA,CAAO,MAAA,EAAQ;AAAA,MACrB,KAAK,eAAA;AACH,QAAA,YAAA,EAAc,MAAM,UAAA,CAAW;AAAA,UAC7B,QAAA,EAAU,MAAA,CAAO,IAAA;AAAA,UACjB,QAAA,EAAU,MAAA,CAAO,QAAA;AAAA,UACjB,SAAA,EAAW,MAAA,CAAO,SAAA;AAAA,UAClB;AAAA,QACF,CAAC,CAAA;AACD,QAAA,KAAA;AAAA,MACF,KAAK,iBAAA;AACH,QAAA,YAAA,EAAc,MAAM,WAAA,CAAY;AAAA,UAC9B,QAAA,EAAU,MAAA,CAAO,IAAA;AAAA,UACjB,QAAA,EAAU,MAAA,CAAO,QAAA;AAAA,UACjB,SAAA,EAAW,MAAA,CAAO,SAAA;AAAA,UAClB,IAAA,EAAM,MAAA,CAAO,KAAA;AAAA,UACb,wBAAA,EAA0B,MAAA,CAAO,wBAAA;AAAA,UACjC,QAAA;AAAA,UACA,YAAA,EAAc,MAAA,CAAO,YAAA;AAAA,UACrB,KAAA,EAAO,MAAA,CAAO;AAAA,QAChB,CAAC,CAAA;AACD,QAAA,KAAA;AAAA,MACF,KAAK,eAAA;AACH,QAAA,YAAA,EAAc,MAAM,UAAA,CAAW;AAAA,UAC7B,QAAA,EAAU,MAAA,CAAO,IAAA;AAAA,UACjB,QAAA,EAAU,MAAA,CAAO,QAAA;AAAA,UACjB,SAAA,EAAW,MAAA,CAAO,SAAA;AAAA,UAClB,IAAA,EAAM,MAAA,CAAO,KAAA;AAAA,UACb,QAAA;AAAA,UACA,YAAA,EAAc,MAAA,CAAO,YAAA;AAAA,UACrB,KAAA,EAAO,MAAA,CAAO;AAAA,QAChB,CAAC,CAAA;AACD,QAAA,KAAA;AAAA,MACF,KAAK,mBAAA;AACH,QAAA,YAAA,EAAc,MAAM,YAAA,CAAa;AAAA,UAC/B,QAAA,EAAU,MAAA,CAAO,IAAA;AAAA,UACjB,QAAA,EAAU,MAAA,CAAO,QAAA;AAAA,UACjB,SAAA,EAAW,MAAA,CAAO,SAAA;AAAA,UAClB,IAAA,EAAM,MAAA,CAAO,KAAA;AAAA,UACb,wBAAA,EAA0B,MAAA,CAAO,wBAAA;AAAA,UACjC,QAAA;AAAA,UACA,YAAA,EAAc,MAAA,CAAO,YAAA;AAAA,UACrB,KAAA,EAAO,MAAA,CAAO;AAAA,QAChB,CAAC,CAAA;AACD,QAAA,KAAA;AAAA,MACF,KAAK,qBAAA;AACH,QAAA,YAAA,EAAc,MAAM,aAAA,CAAc;AAAA,UAChC,QAAA,EAAU,MAAA,CAAO,IAAA;AAAA,UACjB,QAAA,EAAU,MAAA,CAAO,QAAA;AAAA,UACjB,SAAA,EAAW,MAAA,CAAO,SAAA;AAAA,UAClB,QAAA;AAAA,UACA,YAAA,EAAc,MAAA,CAAO;AAAA,QACvB,CAAC,CAAA;AACD,QAAA,KAAA;AAAA,MACF,OAAA;AACE,QAAA,MAAM,IAAI,KAAA,CAAM,kBAAkB,CAAA;AAAA,IACtC;AAEA,IAAA,GAAA,CAAI,CAAC,WAAA,CAAY,EAAA,EAAI;AACnB,MAAA,GAAA,CAAI,mBAAA,GAAsB,OAAO,OAAA,IAAW,WAAA,EAAa;AACvD,QAAA,kBAAA,CAAmB,WAAA,CAAY,QAAA,EAAU,WAAA,CAAY,KAAK,CAAA;AAC1D,QAAA,OAAO,KAAA,CAAA;AAAA,MACT,EAAA,KAAO;AACL,QAAA,MAAM,MAAA,EAAQ,IAAI,KAAA,CAAM,CAAA,EAAA;AACT,QAAA;AACQ,QAAA;AACjB,QAAA;AACR,MAAA;AACF,IAAA;AAEwB,IAAA;AACA,IAAA;AACA,IAAA;AAEL,IAAA;AACrB,EAAA;AAAA;AAAA;AAAA;AAKkC,EAAA;AAMH,IAAA;AAEd,IAAA;AAEO,IAAA;AACE,MAAA;AACM,MAAA;AACvB,IAAA;AAEW,MAAA;AAClB,IAAA;AAEgD,IAAA;AAC7B,MAAA;AACA,MAAA;AACC,MAAA;AAClB,MAAA;AACD,IAAA;AAEoB,IAAA;AACO,MAAA;AACL,QAAA;AACZ,QAAA;AACF,MAAA;AACmB,QAAA;AACT,QAAA;AACQ,QAAA;AACjB,QAAA;AACR,MAAA;AACF,IAAA;AAEmB,IAAA;AACrB,EAAA;AACF;AH8CiC;AACA;AI9SJ;AAAA,EAAA;AAAA,IAAA;AAAA,EAAA;AACM,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQyB,EAAA;AAC9B,IAAA;AAEN,IAAA;AAEU,MAAA;AACL,MAAA;AAEa,IAAA;AAEf,IAAA;AACG,MAAA;AACJ,QAAA;AACpB,MAAA;AACD,IAAA;AAEsB,IAAA;AACzB,EAAA;AAAA;AAAA;AAAA;AAKqB,EAAA;AACI,IAAA;AACC,IAAA;AAC1B,EAAA;AACF;AJ4SiC;AACA;AK5TP;AAAA,EAAA;AAAA,IAAA;AAAA,EAAA;AACyC,iBAAA;AAEc,EAAA;AACrD,IAAA;AAC1B,EAAA;AAEsE,EAAA;AACvC,IAAA;AAChB,IAAA;AACgB,MAAA;AAC7B,IAAA;AACO,IAAA;AACT,EAAA;AAEsD,EAAA;AAE1B,IAAA;AACuB,MAAA;AACtC,QAAA;AACT,MAAA;AACF,IAAA;AACgB,IAAA;AAClB,EAAA;AAE0D,EAAA;AAE3B,IAAA;AAChB,IAAA;AACK,MAAA;AAClB,IAAA;AACO,IAAA;AACT,EAAA;AACF;AAEkC;AAGwB;AACnC,EAAA;AACQ,IAAA;AACA,MAAA;AAC3B,IAAA;AACa,IAAA;AACc,MAAA;AAC3B,IAAA;AAC0B,IAAA;AAC5B,EAAA;AACD;ALwTgC;AACA;AMzXJ;AAAA,EAAA;AAAA,IAAA;AAAA,EAAA;AACnB,EAAA;AAQL,EAAA;AACgB,IAAA;AACE,MAAA;AACN,MAAA;AACW,MAAA;AACN,MAAA;AACS,MAAA;AAC3B,IAAA;AACF,EAAA;AAE8D,EAAA;AAClC,IAAA;AACnB,IAAA;AACT,EAAA;AAEmC,EAAA;AACb,IAAA;AACb,IAAA;AACT,EAAA;AAE4E,EAAA;AAC3D,IAAA;AACR,IAAA;AACT,EAAA;AAEwC,EAAA;AACb,IAAA;AAClB,IAAA;AACT,EAAA;AAE8D,EAAA;AAC7C,IAAA;AACjB,EAAA;AAE2E,EAAA;AACrD,IAAA;AACL,IAAA;AACR,IAAA;AACT,EAAA;AAEuC,EAAA;AACb,IAAA;AACjB,IAAA;AACT,EAAA;AAEqD,EAAA;AACvB,IAAA;AAET,IAAA;AACG,MAAA;AACI,MAAA;AACzB,IAAA;AAEM,IAAA;AACT,EAAA;AAEmB,EAAA;AACM,IAAA;AACJ,IAAA;AACO,MAAA;AAC1B,IAAA;AAEuB,IAAA;AACA,IAAA;AACJ,IAAA;AAER,MAAA;AAIX,IAAA;AAC4B,IAAA;AACN,IAAA;AAEf,IAAA;AACT,EAAA;AACF;ANsWiC;AACA;AO9bS;AACjC,EAAA;AACC,IAAA;AACN,IAAA;AACF,EAAA;AACF;AALgB;APsciB;AACA;AQtc/B;AAE0B,EAAA;AAC5B;AALgB;AAYd;AAE0B,EAAA;AAC5B;AALgB;ARuciB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-Q4FXESVT.js","sourcesContent":[null,"import { ApiDataInterface } from \"../interfaces/ApiDataInterface\";\nimport { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\nimport { JsonApiHydratedDataInterface } from \"../interfaces/JsonApiHydratedDataInterface\";\nimport { DataClassRegistry } from \"../registry/DataClassRegistry\";\n\nexport class RehydrationFactory {\n public static rehydrate<T extends ApiDataInterface>(\n classKey: ApiRequestDataTypeInterface,\n data: JsonApiHydratedDataInterface,\n ): T {\n const factoryClass = DataClassRegistry.get(classKey);\n\n const instance = new factoryClass();\n return instance.rehydrate(data) as T;\n }\n\n public static rehydrateList<T extends ApiDataInterface>(\n classKey: ApiRequestDataTypeInterface,\n data: JsonApiHydratedDataInterface[],\n ): T[] {\n const factoryClass = DataClassRegistry.get(classKey);\n\n const response = data.map((item: JsonApiHydratedDataInterface) => {\n const instance = new factoryClass();\n return instance.rehydrate(item) as T;\n });\n\n return response;\n }\n}\n","import { ApiDataInterface } from \"../interfaces/ApiDataInterface\";\nimport { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\nimport { JsonApiHydratedDataInterface } from \"../interfaces/JsonApiHydratedDataInterface\";\nimport { RehydrationFactory } from \"../factories/RehydrationFactory\";\n\nexport abstract class AbstractApiData implements ApiDataInterface {\n protected _jsonApi?: any;\n protected _included?: any[];\n\n protected _id?: string;\n protected _type?: string;\n protected _createdAt?: Date;\n protected _updatedAt?: Date;\n\n protected _self?: string;\n\n get type(): string {\n if (!this._type) throw new Error(\"Type is not set.\");\n return this._type;\n }\n\n get id(): string {\n if (!this._id) throw new Error(\"Id is not set.\");\n return this._id;\n }\n\n get self(): string | undefined {\n return this._self;\n }\n\n get createdAt(): Date {\n return this._createdAt ?? new Date();\n }\n\n get updatedAt(): Date {\n return this._updatedAt ?? new Date();\n }\n\n get included(): any[] {\n return this._included ?? [];\n }\n\n get jsonApi(): any {\n return this._jsonApi;\n }\n\n ingestJsonApi(_data: JsonApiHydratedDataInterface): void {}\n\n generateApiUrl(_params?: any): string {\n throw new Error(\"Method not implemented.\");\n }\n\n createJsonApi(_data?: any): any {\n throw new Error(\"Method not implemented.\");\n }\n\n protected _readIncluded<T extends ApiDataInterface>(\n data: JsonApiHydratedDataInterface,\n type: string,\n dataType: ApiRequestDataTypeInterface,\n ): T | T[] | undefined {\n if (\n data.included === undefined ||\n data.included.length === 0 ||\n data.jsonApi.relationships === undefined ||\n data.jsonApi.relationships[type] === undefined ||\n data.jsonApi.relationships[type].data === undefined\n ) {\n return undefined;\n }\n\n if (Array.isArray(data.jsonApi.relationships[type].data)) {\n const response: T[] = data.jsonApi.relationships[type].data.map((jsonApiData: any) => {\n const includedData = data.included.find(\n (includedData: any) => includedData.id === jsonApiData.id && includedData.type === jsonApiData.type,\n );\n\n if (includedData === undefined) return undefined;\n\n return RehydrationFactory.rehydrate(dataType, {\n jsonApi: includedData,\n included: data.included,\n }) as T;\n });\n\n return response.filter((item: T | undefined) => item !== undefined) as T[];\n }\n\n const includedData = data.included.find(\n (includedData: any) =>\n includedData.id === data.jsonApi.relationships[type].data.id &&\n includedData.type === data.jsonApi.relationships[type].data.type,\n );\n\n if (includedData === undefined && data.allData !== undefined) {\n // Try to find in allData as a fallback\n const fallbackData = data.allData.find(\n (includedData: any) =>\n includedData.id === data.jsonApi.relationships[type].data.id &&\n includedData.type === data.jsonApi.relationships[type].data.type,\n );\n if (fallbackData !== undefined) {\n return RehydrationFactory.rehydrate(dataType, {\n jsonApi: fallbackData,\n included: data.included,\n }) as T;\n }\n }\n\n if (includedData === undefined) return undefined;\n\n return RehydrationFactory.rehydrate(dataType, {\n jsonApi: includedData,\n included: data.included,\n }) as T;\n }\n\n dehydrate(): JsonApiHydratedDataInterface {\n return {\n jsonApi: this._jsonApi,\n included: this._included ?? [],\n };\n }\n\n rehydrate(data: JsonApiHydratedDataInterface): this {\n this._jsonApi = data.jsonApi;\n this._included = data.included;\n\n this._type = this._jsonApi.type;\n this._id = this._jsonApi.id;\n this._createdAt = this._jsonApi.meta?.createdAt !== undefined ? new Date(this._jsonApi.meta.createdAt) : undefined;\n this._updatedAt = this._jsonApi.meta?.updatedAt !== undefined ? new Date(this._jsonApi.meta.updatedAt) : undefined;\n\n this._self = this._jsonApi.links?.self ?? undefined;\n\n return this;\n }\n}\n","import { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\nimport { ApiResponseInterface } from \"../interfaces/ApiResponseInterface\";\n\nexport enum HttpMethod {\n GET = \"GET\",\n POST = \"POST\",\n PUT = \"PUT\",\n PATCH = \"PATCH\",\n DELETE = \"DELETE\",\n}\n\nexport interface NextRef {\n next?: string;\n}\n\nexport interface PreviousRef {\n previous?: string;\n}\n\nexport interface SelfRef {\n self?: string;\n}\n\nlet globalErrorHandler: ((status: number, message: string) => void) | null = null;\n\n/**\n * Set a global error handler for API errors (client-side only).\n * This handler will be called instead of throwing errors.\n */\nexport function setGlobalErrorHandler(handler: (status: number, message: string) => void) {\n globalErrorHandler = handler;\n}\n\n/**\n * Get the current global error handler.\n */\nexport function getGlobalErrorHandler(): ((status: number, message: string) => void) | null {\n return globalErrorHandler;\n}\n\n/**\n * Abstract base class for services that interact with the JSON:API.\n * Extend this class to create feature-specific services.\n */\nexport abstract class AbstractService {\n /**\n * Extract locale from client-side URL pathname\n * URL structure: /{locale}/route-path (e.g., /it/accounts)\n * Fallback chain: URL locale → navigator.language → \"en\"\n */\n private static getClientLocale(): string {\n if (typeof window === \"undefined\") {\n return \"en\"; // Server-side fallback\n }\n\n // Extract locale from URL pathname (first segment after leading slash)\n const pathSegments = window.location.pathname.split(\"/\").filter(Boolean);\n const urlLocale = pathSegments[0];\n\n // Validate against supported locales (currently only \"en\")\n const supportedLocales = [\"en\"];\n if (urlLocale && supportedLocales.includes(urlLocale)) {\n return urlLocale;\n }\n\n // Fallback to navigator language\n const navigatorLocale = navigator.language.split(\"-\")[0];\n if (navigatorLocale && supportedLocales.includes(navigatorLocale)) {\n return navigatorLocale;\n }\n\n // Final fallback\n return \"en\";\n }\n\n static async next<T>(params: {\n type: ApiRequestDataTypeInterface;\n endpoint: string;\n next?: NextRef;\n previous?: PreviousRef;\n self?: SelfRef;\n }): Promise<T> {\n return await this.callApi<T>({\n method: HttpMethod.GET,\n type: params.type,\n endpoint: params.endpoint,\n next: params.next,\n previous: params.previous,\n self: params.self,\n });\n }\n\n /**\n * Fetch the previous page of results.\n */\n static async previous<T>(params: {\n type: ApiRequestDataTypeInterface;\n endpoint: string;\n next?: NextRef;\n previous?: PreviousRef;\n self?: SelfRef;\n }): Promise<T> {\n return await this.callApi<T>({\n method: HttpMethod.GET,\n type: params.type,\n endpoint: params.endpoint,\n next: params.next,\n previous: params.previous,\n self: params.self,\n });\n }\n\n /**\n * Make an API call with automatic environment detection and error handling.\n */\n protected static async callApi<T>(params: {\n type: ApiRequestDataTypeInterface;\n method: HttpMethod;\n endpoint: string;\n companyId?: string;\n input?: any;\n overridesJsonApiCreation?: boolean;\n next?: NextRef;\n previous?: PreviousRef;\n self?: SelfRef;\n responseType?: ApiRequestDataTypeInterface;\n files?: { [key: string]: File | Blob } | File | Blob;\n }): Promise<T> {\n // Dynamic import to avoid bundling issues\n const { JsonApiGet, JsonApiPost, JsonApiPut, JsonApiPatch, JsonApiDelete } =\n await import(\"../../unified/JsonApiRequest\");\n\n let apiResponse: ApiResponseInterface;\n\n // Get language based on environment\n let language = \"en\";\n if (typeof window === \"undefined\") {\n const { getLocale } = await import(\"next-intl/server\");\n language = (await getLocale()) ?? \"en\";\n } else {\n // Client-side: extract locale from URL pathname\n language = this.getClientLocale();\n }\n\n switch (params.method) {\n case HttpMethod.GET:\n apiResponse = await JsonApiGet({\n classKey: params.type,\n endpoint: params.endpoint,\n companyId: params.companyId,\n language: language,\n });\n break;\n case HttpMethod.POST:\n apiResponse = await JsonApiPost({\n classKey: params.type,\n endpoint: params.endpoint,\n companyId: params.companyId,\n body: params.input,\n overridesJsonApiCreation: params.overridesJsonApiCreation,\n language: language,\n responseType: params.responseType,\n files: params.files,\n });\n break;\n case HttpMethod.PUT:\n apiResponse = await JsonApiPut({\n classKey: params.type,\n endpoint: params.endpoint,\n companyId: params.companyId,\n body: params.input,\n language: language,\n responseType: params.responseType,\n files: params.files,\n });\n break;\n case HttpMethod.PATCH:\n apiResponse = await JsonApiPatch({\n classKey: params.type,\n endpoint: params.endpoint,\n companyId: params.companyId,\n body: params.input,\n overridesJsonApiCreation: params.overridesJsonApiCreation,\n language: language,\n responseType: params.responseType,\n files: params.files,\n });\n break;\n case HttpMethod.DELETE:\n apiResponse = await JsonApiDelete({\n classKey: params.type,\n endpoint: params.endpoint,\n companyId: params.companyId,\n language: language,\n responseType: params.responseType,\n });\n break;\n default:\n throw new Error(\"Method not found\");\n }\n\n if (!apiResponse.ok) {\n if (globalErrorHandler && typeof window !== \"undefined\") {\n globalErrorHandler(apiResponse.response, apiResponse.error);\n return undefined as any;\n } else {\n const error = new Error(`${apiResponse.response}:${apiResponse.error}`) as any;\n error.status = apiResponse.response;\n error.digest = `HTTP_${apiResponse.response}`;\n throw error;\n }\n }\n\n if (apiResponse.next && params.next) params.next.next = apiResponse.next;\n if (apiResponse.prev && params.previous) params.previous.previous = apiResponse.prev;\n if (apiResponse.self && params.self) params.self.self = apiResponse.self;\n\n return apiResponse.data as T;\n }\n\n /**\n * Get raw JSON:API response data without deserialization.\n */\n protected static async getRawData(params: {\n type: ApiRequestDataTypeInterface;\n method: HttpMethod;\n endpoint: string;\n companyId?: string;\n }): Promise<any> {\n const { JsonApiGet } = await import(\"../../unified/JsonApiRequest\");\n\n let language = \"en\";\n\n if (typeof window === \"undefined\") {\n const { getLocale } = await import(\"next-intl/server\");\n language = (await getLocale()) ?? \"en\";\n } else {\n // Client-side: extract locale from URL pathname\n language = this.getClientLocale();\n }\n\n const apiResponse: ApiResponseInterface = await JsonApiGet({\n classKey: params.type,\n endpoint: params.endpoint,\n companyId: params.companyId,\n language: language,\n });\n\n if (!apiResponse.ok) {\n if (globalErrorHandler && typeof window !== \"undefined\") {\n globalErrorHandler(apiResponse.response, apiResponse.error);\n return undefined as any;\n } else {\n const error = new Error(`${apiResponse.response}:${apiResponse.error}`) as any;\n error.status = apiResponse.response;\n error.digest = `HTTP_${apiResponse.response}`;\n throw error;\n }\n }\n\n return apiResponse.raw;\n }\n}\n","import { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\nimport { DataClassRegistry } from \"./DataClassRegistry\";\n\n/**\n * Helper class to bootstrap the registry from a Modules-style class.\n * This supports the pattern where modules are defined as static getters.\n */\nexport class ModuleRegistrar {\n private static _isBootstrapped = false;\n\n /**\n * Bootstrap the registry from a Modules class.\n * Automatically detects static getters and registers their models.\n *\n * @param modulesClass - The Modules class with static getters\n */\n static bootstrap<T extends object>(modulesClass: T): void {\n if (this._isBootstrapped) return;\n\n const data = Object.getOwnPropertyNames(modulesClass)\n .filter((key) => {\n const descriptor = Object.getOwnPropertyDescriptor(modulesClass, key);\n return descriptor && typeof descriptor.get === \"function\";\n })\n .map((key) => (modulesClass as any)[key] as ApiRequestDataTypeInterface);\n\n data.forEach((item) => {\n if (item && item.model) {\n DataClassRegistry.registerObjectClass(item, item.model);\n }\n });\n\n this._isBootstrapped = true;\n }\n\n /**\n * Reset the bootstrapped state. Useful for testing.\n */\n static reset(): void {\n this._isBootstrapped = false;\n DataClassRegistry.clear();\n }\n}\n","import { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\nimport { ModuleWithPermissions } from \"../../permissions/types\";\n\n// Foundation module types - defined by LIBRARY\nexport interface FoundationModuleDefinitions {\n S3: ModuleWithPermissions;\n Auth: ModuleWithPermissions;\n User: ModuleWithPermissions;\n Author: ModuleWithPermissions;\n Company: ModuleWithPermissions;\n Role: ModuleWithPermissions;\n Notification: ModuleWithPermissions;\n Push: ModuleWithPermissions;\n Feature: ModuleWithPermissions;\n Module: ModuleWithPermissions;\n Content: ModuleWithPermissions;\n UserTopic: ModuleWithPermissions;\n UserExpertise: ModuleWithPermissions;\n}\n\n// App-specific modules - apps will augment this interface ONLY\n\nexport interface AppModuleDefinitions {}\n\n// Combined type for full autocompletion\nexport type ModuleDefinitions = FoundationModuleDefinitions & AppModuleDefinitions;\n\nclass ModuleRegistryClass {\n private _modules: Map<string, ApiRequestDataTypeInterface> = new Map();\n\n register<K extends string>(name: K, module: ApiRequestDataTypeInterface): void {\n this._modules.set(name, module);\n }\n\n get<K extends keyof ModuleDefinitions>(name: K): ModuleDefinitions[K] {\n const module = this._modules.get(name as string);\n if (!module) {\n throw new Error(`Module \"${String(name)}\" not registered. Call bootstrap() first.`);\n }\n return module as ModuleDefinitions[K];\n }\n\n findByName(moduleName: string): ModuleWithPermissions {\n // Search by module's name property (e.g., \"topics\", \"articles\")\n for (const module of this._modules.values()) {\n if ((module as ModuleWithPermissions).name === moduleName) {\n return module as ModuleWithPermissions;\n }\n }\n throw new Error(`Module not found: ${moduleName}`);\n }\n\n findByModelName(modelName: string): ModuleWithPermissions {\n // Direct lookup by registry key (e.g., \"Article\", \"Document\")\n const module = this._modules.get(modelName);\n if (!module) {\n throw new Error(`Module not found for model: ${modelName}`);\n }\n return module as ModuleWithPermissions;\n }\n}\n\nexport const ModuleRegistry = new ModuleRegistryClass();\n\n// Proxy object for Modules.X syntax with autocompletion\nexport const Modules = new Proxy({} as ModuleDefinitions, {\n get(_, prop: string) {\n if (prop === \"findByName\") {\n return (name: string) => ModuleRegistry.findByName(name);\n }\n if (prop === \"findByModelName\") {\n return (name: string) => ModuleRegistry.findByModelName(name);\n }\n return ModuleRegistry.get(prop as keyof ModuleDefinitions);\n },\n}) as ModuleDefinitions & {\n findByName: (name: string) => ModuleWithPermissions;\n findByModelName: (name: string) => ModuleWithPermissions;\n};\n","import { FieldSelector } from \"../fields/FieldSelector\";\nimport { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\n\nexport type EndpointQuery = {\n endpoint: ApiRequestDataTypeInterface;\n id?: string;\n childEndpoint?: ApiRequestDataTypeInterface | string;\n childId?: string;\n additionalParams?: { key: string; value: string | string[] }[];\n};\n\nexport class EndpointCreator {\n private _endpoint: EndpointQuery;\n\n constructor(params: {\n endpoint: ApiRequestDataTypeInterface;\n id?: string;\n childEndpoint?: ApiRequestDataTypeInterface | string;\n childId?: string;\n additionalParams?: { key: string; value: string }[];\n }) {\n this._endpoint = {\n endpoint: params.endpoint,\n id: params.id,\n childEndpoint: params.childEndpoint,\n childId: params.childId,\n additionalParams: params.additionalParams ?? [],\n };\n }\n\n endpoint(value: ApiRequestDataTypeInterface): EndpointCreator {\n this._endpoint.endpoint = value;\n return this;\n }\n\n id(value: string): EndpointCreator {\n this._endpoint.id = value;\n return this;\n }\n\n childEndpoint(value: ApiRequestDataTypeInterface | string): EndpointCreator {\n this._endpoint.childEndpoint = value;\n return this;\n }\n\n childId(value: string): EndpointCreator {\n this._endpoint.childId = value;\n return this;\n }\n\n set additionalParams(value: { key: string; value: string }[]) {\n this._endpoint.additionalParams = value;\n }\n\n addAdditionalParam(key: string, value: string | string[]): EndpointCreator {\n if (!this._endpoint.additionalParams) this._endpoint.additionalParams = [];\n this._endpoint.additionalParams.push({ key, value });\n return this;\n }\n\n limitToType(selectors: string[]): this {\n this.addAdditionalParam(`include`, selectors.join(\",\"));\n return this;\n }\n\n limitToFields(selectors: FieldSelector<any>[]): this {\n if (selectors.length === 0) return this;\n\n selectors.forEach((selector) => {\n const fieldString = selector.fields.join(\",\");\n this.addAdditionalParam(`fields[${selector.type}]`, fieldString);\n });\n\n return this;\n }\n\n generate(): string {\n let additionalParams = \"\";\n if (this._endpoint.additionalParams) {\n additionalParams = this._endpoint.additionalParams.map((param) => `${param.key}=${param.value}`).join(\"&\");\n }\n\n let response = `${this._endpoint.endpoint.name}`;\n if (this._endpoint.id) response += `/${this._endpoint.id}`;\n if (this._endpoint.childEndpoint) {\n response += `/${\n typeof this._endpoint.childEndpoint === \"string\"\n ? this._endpoint.childEndpoint\n : this._endpoint.childEndpoint.name\n }`;\n }\n if (this._endpoint.childId) response += `/${this._endpoint.childId}`;\n if (additionalParams) response += `?${additionalParams}`;\n\n return response;\n }\n}\n","export type GetterKeys<T> = {\n [K in keyof T]: T[K] extends () => any ? never : K;\n}[keyof T];\n\nexport type FieldSelector<T> = {\n type: string;\n fields: ReadonlyArray<GetterKeys<T>>;\n};\n\nexport function createJsonApiInclusion<T>(dataType: string, fields: ReadonlyArray<GetterKeys<T>>): FieldSelector<T> {\n return {\n type: dataType,\n fields,\n };\n}\n","import { ApiDataInterface } from \"../interfaces/ApiDataInterface\";\nimport { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\nimport { JsonApiHydratedDataInterface } from \"../interfaces/JsonApiHydratedDataInterface\";\nimport { RehydrationFactory } from \"../factories/RehydrationFactory\";\n\n/**\n * Rehydrate a single dehydrated object back into its typed class instance.\n */\nexport function rehydrate<T extends ApiDataInterface>(\n classKey: ApiRequestDataTypeInterface,\n data: JsonApiHydratedDataInterface,\n): T {\n return RehydrationFactory.rehydrate(classKey, data) as T;\n}\n\n/**\n * Rehydrate a list of dehydrated objects back into typed class instances.\n */\nexport function rehydrateList<T extends ApiDataInterface>(\n classKey: ApiRequestDataTypeInterface,\n data: JsonApiHydratedDataInterface[],\n): T[] {\n return RehydrationFactory.rehydrateList(classKey, data) as T[];\n}\n"]}
@@ -94,11 +94,11 @@ import {
94
94
  TooltipTrigger,
95
95
  buttonVariants,
96
96
  useSidebar
97
- } from "./chunk-X53MF5ZN.mjs";
97
+ } from "./chunk-P2F54I7Q.mjs";
98
98
  import {
99
99
  cn,
100
100
  getIconByModule
101
- } from "./chunk-JLN6UWII.mjs";
101
+ } from "./chunk-JGFWIT2E.mjs";
102
102
  import {
103
103
  AuthService,
104
104
  CompanyService,
@@ -109,7 +109,7 @@ import {
109
109
  RoleService,
110
110
  S3Service,
111
111
  UserService
112
- } from "./chunk-MHVXFWZY.mjs";
112
+ } from "./chunk-HTLEKZND.mjs";
113
113
  import {
114
114
  getTokenHandler,
115
115
  useI18nDateFnsLocale,
@@ -118,12 +118,15 @@ import {
118
118
  useI18nTranslations
119
119
  } from "./chunk-SM63SZCP.mjs";
120
120
  import {
121
+ getApiUrl,
121
122
  getAppUrl,
122
123
  getTrackablePages
123
- } from "./chunk-74F6BBHH.mjs";
124
+ } from "./chunk-IKBA4AHN.mjs";
124
125
  import {
125
- getRoleId
126
- } from "./chunk-BLWVZK6J.mjs";
126
+ getRoleId,
127
+ isDiscordConfigured,
128
+ isInternalAuthConfigured
129
+ } from "./chunk-SZZYEG3P.mjs";
127
130
  import {
128
131
  recentPagesAtom
129
132
  } from "./chunk-Q2N6SQYW.mjs";
@@ -132,7 +135,7 @@ import {
132
135
  Modules,
133
136
  RehydrationFactory,
134
137
  rehydrate
135
- } from "./chunk-NPPQNSXN.mjs";
138
+ } from "./chunk-FMBQZAIP.mjs";
136
139
  import {
137
140
  checkPermissions
138
141
  } from "./chunk-HAG77QBV.mjs";
@@ -1984,7 +1987,7 @@ __name(AllowedUsersDetails, "AllowedUsersDetails");
1984
1987
  import dynamic from "next/dynamic";
1985
1988
  import React3 from "react";
1986
1989
  import { jsx as jsx29 } from "react/jsx-runtime";
1987
- var BlockNoteEditor = dynamic(() => import("./BlockNoteEditor-DC33K4IF.mjs"), {
1990
+ var BlockNoteEditor = dynamic(() => import("./BlockNoteEditor-U2IHUVUF.mjs"), {
1988
1991
  ssr: false
1989
1992
  });
1990
1993
  var BlockNoteEditorContainer = React3.memo(/* @__PURE__ */ __name(function EditorContainer(props) {
@@ -1999,7 +2002,7 @@ function ErrorDetails({ title, message, code }) {
1999
2002
  return /* @__PURE__ */ jsx30("div", { className: "w-xl max-w-xl", children: /* @__PURE__ */ jsxs17(Card, { className: "w-full", children: [
2000
2003
  /* @__PURE__ */ jsxs17(CardHeader, { children: [
2001
2004
  /* @__PURE__ */ jsxs17(CardTitle, { className: "text-foreground flex flex-col items-center gap-y-4 pb-10 text-4xl", children: [
2002
- /* @__PURE__ */ jsx30(Image2, { src: "/phlow-logo.webp", alt: "Phlow", width: 100, height: 100, priority: true }),
2005
+ /* @__PURE__ */ jsx30(Image2, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
2003
2006
  /* @__PURE__ */ jsx30("div", { children: "Unauthorised" })
2004
2007
  ] }),
2005
2008
  /* @__PURE__ */ jsx30(CardDescription, { className: "text-center text-lg", children: "We are sorry, but you are not allowed to access this content." })
@@ -2009,7 +2012,7 @@ function ErrorDetails({ title, message, code }) {
2009
2012
  return /* @__PURE__ */ jsx30("div", { className: "w-xl max-w-xl", children: /* @__PURE__ */ jsxs17(Card, { className: "w-full", children: [
2010
2013
  /* @__PURE__ */ jsxs17(CardHeader, { children: [
2011
2014
  /* @__PURE__ */ jsxs17(CardTitle, { className: "text-foreground flex flex-col items-center gap-y-4 pb-10 text-center text-4xl", children: [
2012
- /* @__PURE__ */ jsx30(Image2, { src: "/phlow-logo.webp", alt: "Phlow", width: 100, height: 100, priority: true }),
2015
+ /* @__PURE__ */ jsx30(Image2, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
2013
2016
  /* @__PURE__ */ jsx30("div", { children: code }),
2014
2017
  /* @__PURE__ */ jsx30("div", { children: title })
2015
2018
  ] }),
@@ -3978,7 +3981,7 @@ function useJsonApiGet(params) {
3978
3981
  setLoading(true);
3979
3982
  setError(null);
3980
3983
  try {
3981
- const { JsonApiGet } = await import("./JsonApiRequest-O7BGUMFO.mjs");
3984
+ const { JsonApiGet } = await import("./JsonApiRequest-6UR7DIAR.mjs");
3982
3985
  const language = navigator.language.split("-")[0] || "en";
3983
3986
  const apiResponse = await JsonApiGet({
3984
3987
  classKey: params.classKey,
@@ -4083,7 +4086,7 @@ function useJsonApiMutation(config) {
4083
4086
  setLoading(true);
4084
4087
  setError(null);
4085
4088
  try {
4086
- const { JsonApiPost, JsonApiPut, JsonApiPatch, JsonApiDelete } = await import("./JsonApiRequest-O7BGUMFO.mjs");
4089
+ const { JsonApiPost, JsonApiPut, JsonApiPatch, JsonApiDelete } = await import("./JsonApiRequest-6UR7DIAR.mjs");
4087
4090
  const language = navigator.language.split("-")[0] || "en";
4088
4091
  let apiResponse;
4089
4092
  switch (config.method) {
@@ -4786,7 +4789,7 @@ function Register() {
4786
4789
  return /* @__PURE__ */ jsxs45(Fragment12, { children: [
4787
4790
  /* @__PURE__ */ jsxs45(CardHeader, { children: [
4788
4791
  /* @__PURE__ */ jsxs45(CardTitle, { className: "text-primary flex flex-col items-center pb-10 text-4xl", children: [
4789
- /* @__PURE__ */ jsx66(Image4, { src: "/phlow-logo.webp", alt: "Phlow", width: 100, height: 100, priority: true }),
4792
+ /* @__PURE__ */ jsx66(Image4, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
4790
4793
  t(`foundations.auth.register`)
4791
4794
  ] }),
4792
4795
  /* @__PURE__ */ jsx66(CardDescription, { className: "text-sm", children: showConfirmation ? /* @__PURE__ */ jsx66(Fragment12, { children: " " }) : /* @__PURE__ */ jsx66(Fragment12, { children: t(`foundations.auth.register_description`) }) })
@@ -4919,7 +4922,7 @@ __name(AuthContainer, "AuthContainer");
4919
4922
  function InnerAuthContainer() {
4920
4923
  const { activeComponent } = useAuthContext();
4921
4924
  if (activeComponent === null)
4922
- return /* @__PURE__ */ jsx68("div", { className: "max-w-sm", children: /* @__PURE__ */ jsx68(Image5, { src: "/phlow-logo.webp", alt: "Phlow", width: 100, height: 100, className: "animate-spin-slow", priority: true }) });
4925
+ return /* @__PURE__ */ jsx68("div", { className: "max-w-sm", children: /* @__PURE__ */ jsx68(Image5, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, className: "animate-spin-slow", priority: true }) });
4923
4926
  return /* @__PURE__ */ jsx68(Card, { className: "w-full max-w-md", children: activeComponent });
4924
4927
  }
4925
4928
  __name(InnerAuthContainer, "InnerAuthContainer");
@@ -4934,14 +4937,25 @@ function LandingComponent() {
4934
4937
  return /* @__PURE__ */ jsxs46(Fragment13, { children: [
4935
4938
  /* @__PURE__ */ jsxs46(CardHeader, { className: "mb-4", "data-testid": "page-pre-login-container", children: [
4936
4939
  /* @__PURE__ */ jsxs46(CardTitle, { className: "text-primary flex flex-col items-center gap-y-8 pb-8 text-4xl", children: [
4937
- /* @__PURE__ */ jsx69(Image6, { src: "/phlow-logo.webp", alt: "Phlow", width: 100, height: 100, priority: true }),
4940
+ /* @__PURE__ */ jsx69(Image6, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
4938
4941
  t(`generic.title`)
4939
4942
  ] }),
4940
4943
  /* @__PURE__ */ jsx69(CardDescription, { className: "flex w-full justify-center text-center text-sm", children: t(`generic.description`) })
4941
4944
  ] }),
4942
- /* @__PURE__ */ jsxs46(CardFooter, { className: "mt-4 flex w-full flex-col justify-between", children: [
4943
- /* @__PURE__ */ jsx69(Link, { href: "#", className: "flex w-full justify-start", onClick: () => setComponentType(5 /* Register */), children: /* @__PURE__ */ jsx69(Button, { className: "mt-4 w-full", variant: `default`, children: t(`foundations.auth.buttons.register`) }) }),
4944
- /* @__PURE__ */ jsx69(Link, { href: "#", className: "flex w-full justify-end", onClick: () => setComponentType(0 /* Login */), children: /* @__PURE__ */ jsx69(Button, { className: "mt-4 w-full", variant: `outline`, "data-testid": "page-login-button-initial-login", children: t(`foundations.auth.buttons.login`) }) })
4945
+ /* @__PURE__ */ jsxs46(CardFooter, { className: "mt-4 flex w-full flex-col justify-between gap-y-4", children: [
4946
+ isInternalAuthConfigured() && /* @__PURE__ */ jsxs46(Fragment13, { children: [
4947
+ /* @__PURE__ */ jsx69(
4948
+ Link,
4949
+ {
4950
+ href: "#",
4951
+ className: "flex w-full justify-start",
4952
+ onClick: () => setComponentType(5 /* Register */),
4953
+ children: /* @__PURE__ */ jsx69(Button, { className: "w-full", variant: `default`, children: t(`foundations.auth.buttons.register`) })
4954
+ }
4955
+ ),
4956
+ /* @__PURE__ */ jsx69(Link, { href: "#", className: "flex w-full justify-end", onClick: () => setComponentType(0 /* Login */), children: /* @__PURE__ */ jsx69(Button, { className: "w-full", variant: `outline`, "data-testid": "page-login-button-initial-login", children: t(`foundations.auth.buttons.login`) }) })
4957
+ ] }),
4958
+ isDiscordConfigured() && /* @__PURE__ */ jsx69(Link, { href: `${getApiUrl()}auth/discord`, className: "flex w-full justify-end", children: /* @__PURE__ */ jsx69(Button, { className: "w-full", variant: `outline`, "data-testid": "page-login-button-initial-login", children: "Login with Discord" }) })
4945
4959
  ] })
4946
4960
  ] });
4947
4961
  }
@@ -5021,7 +5035,7 @@ function AcceptInvitation() {
5021
5035
  return /* @__PURE__ */ jsxs47(Fragment14, { children: [
5022
5036
  /* @__PURE__ */ jsxs47(CardHeader, { children: [
5023
5037
  /* @__PURE__ */ jsxs47(CardTitle, { className: "text-primary flex flex-col items-center pb-10 text-4xl", children: [
5024
- /* @__PURE__ */ jsx70(Image7, { src: "/phlow-logo.webp", alt: "Phlow", width: 100, height: 100, priority: true }),
5038
+ /* @__PURE__ */ jsx70(Image7, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
5025
5039
  t("foundations.auth.accept_invitation")
5026
5040
  ] }),
5027
5041
  /* @__PURE__ */ jsx70(CardDescription, { className: "text-center text-sm", children: error ? /* @__PURE__ */ jsx70(Fragment14, { children: t("foundations.auth.errors.activating_account") }) : /* @__PURE__ */ jsx70(Fragment14, { children: t("foundations.auth.select_password") }) })
@@ -5092,7 +5106,7 @@ function ActivateAccount() {
5092
5106
  return /* @__PURE__ */ jsxs48(Fragment15, { children: [
5093
5107
  /* @__PURE__ */ jsxs48(CardHeader, { children: [
5094
5108
  /* @__PURE__ */ jsxs48(CardTitle, { className: "text-primary flex flex-col items-center pb-10 text-4xl", children: [
5095
- /* @__PURE__ */ jsx71(Image8, { src: "/phlow-logo.webp", alt: "Phlow", width: 100, height: 100, priority: true }),
5109
+ /* @__PURE__ */ jsx71(Image8, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
5096
5110
  t("foundations.auth.accept_invitation")
5097
5111
  ] }),
5098
5112
  /* @__PURE__ */ jsx71(CardDescription, { className: "text-center text-sm", children: error ? /* @__PURE__ */ jsx71(Fragment15, { children: t("foundations.auth.errors.activating_account") }) : /* @__PURE__ */ jsx71(Fragment15, { children: " " }) })
@@ -5164,7 +5178,7 @@ function ForgotPassword() {
5164
5178
  return /* @__PURE__ */ jsxs49(Fragment16, { children: [
5165
5179
  /* @__PURE__ */ jsxs49(CardHeader, { "data-testid": "page-forgot-password-container", children: [
5166
5180
  /* @__PURE__ */ jsxs49(CardTitle, { className: "text-primary flex flex-col items-center pb-10 text-4xl", children: [
5167
- /* @__PURE__ */ jsx72(Image9, { src: "/phlow-logo.webp", alt: "Phlows", width: 100, height: 100, priority: true }),
5181
+ /* @__PURE__ */ jsx72(Image9, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
5168
5182
  t("foundations.auth.forgot_password")
5169
5183
  ] }),
5170
5184
  /* @__PURE__ */ jsx72(CardDescription, { className: "text-sm", children: showConfirmation ? /* @__PURE__ */ jsx72(Fragment16, { children: " " }) : /* @__PURE__ */ jsx72(Fragment16, { children: t(`foundations.auth.add_email_to_reset`) }) })
@@ -5242,7 +5256,7 @@ function Login() {
5242
5256
  return /* @__PURE__ */ jsxs50(Fragment17, { children: [
5243
5257
  /* @__PURE__ */ jsxs50(CardHeader, { "data-testid": "page-login-container", children: [
5244
5258
  /* @__PURE__ */ jsxs50(CardTitle, { className: "text-primary flex flex-col items-center pb-10 text-4xl", children: [
5245
- /* @__PURE__ */ jsx73(Image10, { src: "/phlow-logo.webp", alt: "Phlow", width: 100, height: 100, priority: true }),
5259
+ /* @__PURE__ */ jsx73(Image10, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
5246
5260
  t("foundations.auth.login")
5247
5261
  ] }),
5248
5262
  /* @__PURE__ */ jsx73(CardDescription, { className: "text-sm", children: t(`foundations.auth.login_description`) })
@@ -5419,7 +5433,7 @@ function ResetPassword() {
5419
5433
  return /* @__PURE__ */ jsxs51(Fragment19, { children: [
5420
5434
  /* @__PURE__ */ jsxs51(CardHeader, { children: [
5421
5435
  /* @__PURE__ */ jsxs51(CardTitle, { className: "text-primary flex flex-col items-center pb-10 text-4xl", children: [
5422
- /* @__PURE__ */ jsx75(Image11, { src: "/phlow-logo.webp", alt: "Phlow", width: 100, height: 100, priority: true }),
5436
+ /* @__PURE__ */ jsx75(Image11, { src: "/logo.webp", alt: "Logo", width: 100, height: 100, priority: true }),
5423
5437
  t(`foundations.auth.password_reset`)
5424
5438
  ] }),
5425
5439
  /* @__PURE__ */ jsx75(CardDescription, { className: "text-center text-sm", children: error ? /* @__PURE__ */ jsx75(Fragment19, { children: t(`foundations.auth.errors.password_reset_error`) }) : /* @__PURE__ */ jsx75(Fragment19, { children: t(`foundations.auth.reset_password`) }) })
@@ -7968,4 +7982,4 @@ export {
7968
7982
  RolesList,
7969
7983
  UserRolesList
7970
7984
  };
7971
- //# sourceMappingURL=chunk-Y4XI3AZR.mjs.map
7985
+ //# sourceMappingURL=chunk-R2ONK22M.mjs.map