@carlonicora/nextjs-jsonapi 1.0.6 → 1.1.1

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 (112) hide show
  1. package/dist/{AbstractService-B2n_JdiC.d.mts → AbstractService-BsY6W3Ej.d.mts} +1 -1
  2. package/dist/{AbstractService-DtQTYovo.d.ts → AbstractService-wLid8dB0.d.ts} +1 -1
  3. package/dist/AuthComponent-hxOPs9o8.d.mts +11 -0
  4. package/dist/AuthComponent-hxOPs9o8.d.ts +11 -0
  5. package/dist/{BlockNoteEditor-BLVXQPXV.mjs → BlockNoteEditor-4VOBTXWC.mjs} +7 -7
  6. package/dist/{BlockNoteEditor-ZTDHULFT.js → BlockNoteEditor-6NVBI7XL.js} +17 -17
  7. package/dist/{BlockNoteEditor-ZTDHULFT.js.map → BlockNoteEditor-6NVBI7XL.js.map} +1 -1
  8. package/dist/{chunk-6GKHCVF6.js → chunk-32HM6MDD.js} +1 -1
  9. package/dist/chunk-32HM6MDD.js.map +1 -0
  10. package/dist/{chunk-A5DDIABK.js → chunk-EZK3H6EJ.js} +206 -206
  11. package/dist/{chunk-A5DDIABK.js.map → chunk-EZK3H6EJ.js.map} +1 -1
  12. package/dist/{chunk-RZO2LOW4.js → chunk-FYRFMABS.js} +181 -183
  13. package/dist/chunk-FYRFMABS.js.map +1 -0
  14. package/dist/{chunk-DD3KISNB.mjs → chunk-HAG77QBV.mjs} +1 -1
  15. package/dist/chunk-HAG77QBV.mjs.map +1 -0
  16. package/dist/{chunk-3APORDYP.mjs → chunk-HP4Q5ZVG.mjs} +705 -517
  17. package/dist/chunk-HP4Q5ZVG.mjs.map +1 -0
  18. package/dist/{chunk-2LM6LCJW.mjs → chunk-JLN6UWII.mjs} +41 -2
  19. package/dist/chunk-JLN6UWII.mjs.map +1 -0
  20. package/dist/{chunk-WEC4YMOS.js → chunk-KPRHIJO6.js} +783 -595
  21. package/dist/chunk-KPRHIJO6.js.map +1 -0
  22. package/dist/{chunk-JC3WJK65.js → chunk-LJRD4SRV.js} +41 -2
  23. package/dist/chunk-LJRD4SRV.js.map +1 -0
  24. package/dist/{chunk-7C5RAEBO.mjs → chunk-MA2L2PL2.mjs} +2 -4
  25. package/dist/chunk-MA2L2PL2.mjs.map +1 -0
  26. package/dist/{chunk-PYF2U6WG.mjs → chunk-NPPQNSXN.mjs} +11 -1
  27. package/dist/{chunk-PYF2U6WG.mjs.map → chunk-NPPQNSXN.mjs.map} +1 -1
  28. package/dist/{chunk-HMHGLXWC.js → chunk-WZJDLITG.js} +11 -1
  29. package/dist/chunk-WZJDLITG.js.map +1 -0
  30. package/dist/{chunk-IWFGEPAA.mjs → chunk-X53MF5ZN.mjs} +2 -2
  31. package/dist/client/index.d.mts +8 -4
  32. package/dist/client/index.d.ts +8 -4
  33. package/dist/client/index.js +9 -7
  34. package/dist/client/index.js.map +1 -1
  35. package/dist/client/index.mjs +8 -6
  36. package/dist/components/index.d.mts +20 -3
  37. package/dist/components/index.d.ts +20 -3
  38. package/dist/components/index.js +13 -7
  39. package/dist/components/index.js.map +1 -1
  40. package/dist/components/index.mjs +12 -6
  41. package/dist/{user.fields-CbdObSmS.d.mts → content.fields-cHPdM8GJ.d.mts} +10 -1
  42. package/dist/{user.fields-CbdObSmS.d.ts → content.fields-cHPdM8GJ.d.ts} +10 -1
  43. package/dist/{AuthComponent-m6Qp4Hz6.d.ts → content.interface-C_PGZMuy.d.ts} +1 -11
  44. package/dist/{AuthComponent-CPLvEerw.d.mts → content.interface-D_WS6CrB.d.mts} +1 -11
  45. package/dist/contexts/index.d.mts +2 -1
  46. package/dist/contexts/index.d.ts +2 -1
  47. package/dist/contexts/index.js +7 -7
  48. package/dist/contexts/index.mjs +6 -6
  49. package/dist/core/index.d.mts +6 -3
  50. package/dist/core/index.d.ts +6 -3
  51. package/dist/core/index.js +2 -2
  52. package/dist/core/index.mjs +1 -1
  53. package/dist/features/index.d.mts +7 -17
  54. package/dist/features/index.d.ts +7 -17
  55. package/dist/features/index.js +4 -4
  56. package/dist/features/index.mjs +3 -3
  57. package/dist/hooks/index.d.mts +4 -4
  58. package/dist/hooks/index.d.ts +4 -4
  59. package/dist/hooks/index.js +7 -7
  60. package/dist/hooks/index.mjs +6 -6
  61. package/dist/index.d.mts +4 -3
  62. package/dist/index.d.ts +4 -3
  63. package/dist/index.js +3 -3
  64. package/dist/index.mjs +2 -2
  65. package/dist/permissions/index.d.mts +3 -2
  66. package/dist/permissions/index.d.ts +3 -2
  67. package/dist/permissions/index.js +2 -2
  68. package/dist/permissions/index.mjs +1 -1
  69. package/dist/server/index.d.mts +2 -1
  70. package/dist/server/index.d.ts +2 -1
  71. package/dist/server/index.js +2 -2
  72. package/dist/server/index.mjs +1 -1
  73. package/dist/shadcnui/index.js +5 -3
  74. package/dist/shadcnui/index.js.map +1 -1
  75. package/dist/shadcnui/index.mjs +4 -2
  76. package/dist/{types-BUAlgqqh.d.ts → types-B2QRyqyK.d.ts} +1 -1
  77. package/dist/{types-iVdVY7ba.d.mts → types-CgvNmxTd.d.mts} +1 -1
  78. package/dist/{types-Bl61ob-7.d.mts → types-t2PyXhDu.d.mts} +4 -0
  79. package/dist/{types-Bl61ob-7.d.ts → types-t2PyXhDu.d.ts} +4 -0
  80. package/dist/utils/index.d.mts +27 -3
  81. package/dist/utils/index.d.ts +27 -3
  82. package/dist/utils/index.js +16 -2
  83. package/dist/utils/index.js.map +1 -1
  84. package/dist/utils/index.mjs +15 -1
  85. package/package.json +1 -1
  86. package/src/client/index.ts +3 -1
  87. package/src/components/index.ts +1 -0
  88. package/src/core/registry/ModuleRegistry.ts +16 -1
  89. package/src/features/content/components/index.ts +1 -0
  90. package/src/features/content/components/lists/ContentsList.tsx +67 -0
  91. package/src/features/content/components/lists/ContentsListById.tsx +30 -0
  92. package/src/features/content/components/lists/RelevantContentsList.tsx +30 -0
  93. package/src/features/content/components/lists/index.ts +3 -0
  94. package/src/features/content/data/content.fields.ts +0 -2
  95. package/src/features/content/hooks/index.ts +1 -0
  96. package/src/features/content/hooks/useContentTableStructure.tsx +132 -0
  97. package/src/hooks/usePageTracker.ts +1 -1
  98. package/src/hooks/useSocket.ts +4 -4
  99. package/src/permissions/types.ts +3 -0
  100. package/src/utils/icons.tsx +40 -0
  101. package/src/utils/index.ts +1 -0
  102. package/dist/chunk-2LM6LCJW.mjs.map +0 -1
  103. package/dist/chunk-3APORDYP.mjs.map +0 -1
  104. package/dist/chunk-6GKHCVF6.js.map +0 -1
  105. package/dist/chunk-7C5RAEBO.mjs.map +0 -1
  106. package/dist/chunk-DD3KISNB.mjs.map +0 -1
  107. package/dist/chunk-HMHGLXWC.js.map +0 -1
  108. package/dist/chunk-JC3WJK65.js.map +0 -1
  109. package/dist/chunk-RZO2LOW4.js.map +0 -1
  110. package/dist/chunk-WEC4YMOS.js.map +0 -1
  111. /package/dist/{BlockNoteEditor-BLVXQPXV.mjs.map → BlockNoteEditor-4VOBTXWC.mjs.map} +0 -0
  112. /package/dist/{chunk-IWFGEPAA.mjs.map → chunk-X53MF5ZN.mjs.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../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"],"sourcesContent":["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\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 return ModuleRegistry.get(prop as keyof ModuleDefinitions);\n },\n}) as ModuleDefinitions & { findByName: (name: string) => ModuleWithPermissions };\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"],"mappings":"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","names":["includedData","HttpMethod"]}
1
+ {"version":3,"sources":["../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"],"sourcesContent":["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"],"mappings":"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","names":["includedData","HttpMethod"]}
@@ -365,6 +365,13 @@ var ModuleRegistryClass = (_class2 = class {constructor() { _class2.prototype.__
365
365
  }
366
366
  throw new Error(`Module not found: ${moduleName}`);
367
367
  }
368
+ findByModelName(modelName) {
369
+ const module = this._modules.get(modelName);
370
+ if (!module) {
371
+ throw new Error(`Module not found for model: ${modelName}`);
372
+ }
373
+ return module;
374
+ }
368
375
  }, _class2);
369
376
  var ModuleRegistry = new ModuleRegistryClass();
370
377
  var Modules = new Proxy({}, {
@@ -372,6 +379,9 @@ var Modules = new Proxy({}, {
372
379
  if (prop === "findByName") {
373
380
  return (name) => ModuleRegistry.findByName(name);
374
381
  }
382
+ if (prop === "findByModelName") {
383
+ return (name) => ModuleRegistry.findByModelName(name);
384
+ }
375
385
  return ModuleRegistry.get(prop);
376
386
  }
377
387
  });
@@ -477,4 +487,4 @@ _chunk7QVYU63Ejs.__name.call(void 0, rehydrateList, "rehydrateList");
477
487
 
478
488
 
479
489
  exports.RehydrationFactory = RehydrationFactory; exports.AbstractApiData = AbstractApiData; exports.HttpMethod = HttpMethod; exports.setGlobalErrorHandler = setGlobalErrorHandler; exports.getGlobalErrorHandler = getGlobalErrorHandler; exports.AbstractService = AbstractService; exports.ModuleRegistrar = ModuleRegistrar; exports.ModuleRegistry = ModuleRegistry; exports.Modules = Modules; exports.EndpointCreator = EndpointCreator; exports.createJsonApiInclusion = createJsonApiInclusion; exports.rehydrate = rehydrate; exports.rehydrateList = rehydrateList;
480
- //# sourceMappingURL=chunk-HMHGLXWC.js.map
490
+ //# sourceMappingURL=chunk-WZJDLITG.js.map
@@ -0,0 +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"]}
@@ -3,7 +3,7 @@ import {
3
3
  cn,
4
4
  useComposedRefs,
5
5
  useIsMobile
6
- } from "./chunk-2LM6LCJW.mjs";
6
+ } from "./chunk-JLN6UWII.mjs";
7
7
  import {
8
8
  __name
9
9
  } from "./chunk-PAWJFY3S.mjs";
@@ -4207,4 +4207,4 @@ export {
4207
4207
  Link2 as Link,
4208
4208
  MultiSelect
4209
4209
  };
4210
- //# sourceMappingURL=chunk-IWFGEPAA.mjs.map
4210
+ //# sourceMappingURL=chunk-X53MF5ZN.mjs.map
@@ -2,12 +2,14 @@ import * as React from 'react';
2
2
  import React__default from 'react';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import { A as ApiDataInterface, J as JsonApiHydratedDataInterface } from '../ApiDataInterface-DPP8s46n.mjs';
5
- import { A as ApiRequestDataTypeInterface } from '../types-Bl61ob-7.mjs';
5
+ import { A as ApiRequestDataTypeInterface } from '../types-t2PyXhDu.mjs';
6
6
  import { A as ApiResponseInterface } from '../ApiResponseInterface-BHN5D9r5.mjs';
7
7
  import { A as ApiData } from '../ApiData-DPKNfY-9.mjs';
8
- import { U as UseTableStructureHook } from '../types-iVdVY7ba.mjs';
8
+ import { U as UseTableStructureHook } from '../types-CgvNmxTd.mjs';
9
+ import { C as ContentInterface } from '../content.interface-D_WS6CrB.mjs';
10
+ import { C as ContentFields, R as RoleFields, U as UserFields } from '../content.fields-cHPdM8GJ.mjs';
9
11
  import { R as RoleInterface, U as UserInterface } from '../user.interface-CAsTIbuQ.mjs';
10
- import { R as RoleFields, U as UserFields } from '../user.fields-CbdObSmS.mjs';
12
+ import 'lucide-react';
11
13
  import '@tanstack/react-table';
12
14
  import '../useDataListRetriever-futhx3OP.mjs';
13
15
 
@@ -254,6 +256,8 @@ declare function directFetch(params: DirectFetchParams): Promise<ApiData>;
254
256
  */
255
257
  declare function getClientToken(): Promise<string | undefined>;
256
258
 
259
+ declare const useContentTableStructure: <U extends string = ContentFields>(params: Parameters<UseTableStructureHook<ContentInterface, U>>[0]) => ReturnType<UseTableStructureHook<ContentInterface, U>>;
260
+
257
261
  declare const useRoleTableStructure: UseTableStructureHook<RoleInterface, RoleFields>;
258
262
 
259
263
  declare const useUserSearch: () => {
@@ -268,4 +272,4 @@ declare const useUserSearch: () => {
268
272
 
269
273
  declare const useUserTableStructure: UseTableStructureHook<UserInterface, UserFields>;
270
274
 
271
- export { type CacheProfile, type DirectFetchParams, type JsonApiConfig, JsonApiContext, JsonApiProvider, type JsonApiProviderProps, type MutationMethod, type MutationParams, type UseJsonApiGetOptions, type UseJsonApiGetResult, type UseJsonApiMutationResult, directFetch, getClientToken, useJsonApiConfig, useJsonApiConfigOptional, useJsonApiGet, useJsonApiMutation, useRehydration, useRehydrationList, useRoleTableStructure, useUserSearch, useUserTableStructure };
275
+ export { type CacheProfile, type DirectFetchParams, type JsonApiConfig, JsonApiContext, JsonApiProvider, type JsonApiProviderProps, type MutationMethod, type MutationParams, type UseJsonApiGetOptions, type UseJsonApiGetResult, type UseJsonApiMutationResult, directFetch, getClientToken, useContentTableStructure, useJsonApiConfig, useJsonApiConfigOptional, useJsonApiGet, useJsonApiMutation, useRehydration, useRehydrationList, useRoleTableStructure, useUserSearch, useUserTableStructure };
@@ -2,12 +2,14 @@ import * as React from 'react';
2
2
  import React__default from 'react';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import { A as ApiDataInterface, J as JsonApiHydratedDataInterface } from '../ApiDataInterface-DPP8s46n.js';
5
- import { A as ApiRequestDataTypeInterface } from '../types-Bl61ob-7.js';
5
+ import { A as ApiRequestDataTypeInterface } from '../types-t2PyXhDu.js';
6
6
  import { A as ApiResponseInterface } from '../ApiResponseInterface-DDI7QQPR.js';
7
7
  import { A as ApiData } from '../ApiData-DPKNfY-9.js';
8
- import { U as UseTableStructureHook } from '../types-BUAlgqqh.js';
8
+ import { U as UseTableStructureHook } from '../types-B2QRyqyK.js';
9
+ import { C as ContentInterface } from '../content.interface-C_PGZMuy.js';
10
+ import { C as ContentFields, R as RoleFields, U as UserFields } from '../content.fields-cHPdM8GJ.js';
9
11
  import { R as RoleInterface, U as UserInterface } from '../user.interface-CbWqMaaU.js';
10
- import { R as RoleFields, U as UserFields } from '../user.fields-CbdObSmS.js';
12
+ import 'lucide-react';
11
13
  import '@tanstack/react-table';
12
14
  import '../useDataListRetriever-futhx3OP.js';
13
15
 
@@ -254,6 +256,8 @@ declare function directFetch(params: DirectFetchParams): Promise<ApiData>;
254
256
  */
255
257
  declare function getClientToken(): Promise<string | undefined>;
256
258
 
259
+ declare const useContentTableStructure: <U extends string = ContentFields>(params: Parameters<UseTableStructureHook<ContentInterface, U>>[0]) => ReturnType<UseTableStructureHook<ContentInterface, U>>;
260
+
257
261
  declare const useRoleTableStructure: UseTableStructureHook<RoleInterface, RoleFields>;
258
262
 
259
263
  declare const useUserSearch: () => {
@@ -268,4 +272,4 @@ declare const useUserSearch: () => {
268
272
 
269
273
  declare const useUserTableStructure: UseTableStructureHook<UserInterface, UserFields>;
270
274
 
271
- export { type CacheProfile, type DirectFetchParams, type JsonApiConfig, JsonApiContext, JsonApiProvider, type JsonApiProviderProps, type MutationMethod, type MutationParams, type UseJsonApiGetOptions, type UseJsonApiGetResult, type UseJsonApiMutationResult, directFetch, getClientToken, useJsonApiConfig, useJsonApiConfigOptional, useJsonApiGet, useJsonApiMutation, useRehydration, useRehydrationList, useRoleTableStructure, useUserSearch, useUserTableStructure };
275
+ export { type CacheProfile, type DirectFetchParams, type JsonApiConfig, JsonApiContext, JsonApiProvider, type JsonApiProviderProps, type MutationMethod, type MutationParams, type UseJsonApiGetOptions, type UseJsonApiGetResult, type UseJsonApiMutationResult, directFetch, getClientToken, useContentTableStructure, useJsonApiConfig, useJsonApiConfigOptional, useJsonApiGet, useJsonApiMutation, useRehydration, useRehydrationList, useRoleTableStructure, useUserSearch, useUserTableStructure };
@@ -12,13 +12,14 @@
12
12
 
13
13
 
14
14
 
15
- var _chunkWEC4YMOSjs = require('../chunk-WEC4YMOS.js');
15
+
16
+ var _chunkKPRHIJO6js = require('../chunk-KPRHIJO6.js');
16
17
 
17
18
 
18
19
  var _chunkIBS6NI7Djs = require('../chunk-IBS6NI7D.js');
19
- require('../chunk-A5DDIABK.js');
20
- require('../chunk-JC3WJK65.js');
21
- require('../chunk-RZO2LOW4.js');
20
+ require('../chunk-EZK3H6EJ.js');
21
+ require('../chunk-LJRD4SRV.js');
22
+ require('../chunk-FYRFMABS.js');
22
23
 
23
24
 
24
25
  var _chunkLXKSUWAVjs = require('../chunk-LXKSUWAV.js');
@@ -26,9 +27,9 @@ require('../chunk-AYHKQWHH.js');
26
27
  require('../chunk-5ZEADNNP.js');
27
28
  require('../chunk-4HCRAOS5.js');
28
29
  require('../chunk-3FBCC4G3.js');
29
- require('../chunk-HMHGLXWC.js');
30
+ require('../chunk-WZJDLITG.js');
30
31
  require('../chunk-AGAJMJ4T.js');
31
- require('../chunk-6GKHCVF6.js');
32
+ require('../chunk-32HM6MDD.js');
32
33
  require('../chunk-7QVYU63E.js');
33
34
 
34
35
 
@@ -44,5 +45,6 @@ require('../chunk-7QVYU63E.js');
44
45
 
45
46
 
46
47
 
47
- exports.JsonApiContext = _chunkWEC4YMOSjs.JsonApiContext; exports.JsonApiProvider = _chunkWEC4YMOSjs.JsonApiProvider; exports.directFetch = _chunkIBS6NI7Djs.directFetch; exports.getClientToken = _chunkLXKSUWAVjs.getClientToken; exports.useJsonApiConfig = _chunkWEC4YMOSjs.useJsonApiConfig; exports.useJsonApiConfigOptional = _chunkWEC4YMOSjs.useJsonApiConfigOptional; exports.useJsonApiGet = _chunkWEC4YMOSjs.useJsonApiGet; exports.useJsonApiMutation = _chunkWEC4YMOSjs.useJsonApiMutation; exports.useRehydration = _chunkWEC4YMOSjs.useRehydration; exports.useRehydrationList = _chunkWEC4YMOSjs.useRehydrationList; exports.useRoleTableStructure = _chunkWEC4YMOSjs.useRoleTableStructure; exports.useUserSearch = _chunkWEC4YMOSjs.useUserSearch; exports.useUserTableStructure = _chunkWEC4YMOSjs.useUserTableStructure;
48
+
49
+ exports.JsonApiContext = _chunkKPRHIJO6js.JsonApiContext; exports.JsonApiProvider = _chunkKPRHIJO6js.JsonApiProvider; exports.directFetch = _chunkIBS6NI7Djs.directFetch; exports.getClientToken = _chunkLXKSUWAVjs.getClientToken; exports.useContentTableStructure = _chunkKPRHIJO6js.useContentTableStructure; exports.useJsonApiConfig = _chunkKPRHIJO6js.useJsonApiConfig; exports.useJsonApiConfigOptional = _chunkKPRHIJO6js.useJsonApiConfigOptional; exports.useJsonApiGet = _chunkKPRHIJO6js.useJsonApiGet; exports.useJsonApiMutation = _chunkKPRHIJO6js.useJsonApiMutation; exports.useRehydration = _chunkKPRHIJO6js.useRehydration; exports.useRehydrationList = _chunkKPRHIJO6js.useRehydrationList; exports.useRoleTableStructure = _chunkKPRHIJO6js.useRoleTableStructure; exports.useUserSearch = _chunkKPRHIJO6js.useUserSearch; exports.useUserTableStructure = _chunkKPRHIJO6js.useUserTableStructure;
48
50
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/client/index.js"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,uDAA6B;AAC7B;AACE;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,6yBAAC","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/client/index.js"}
1
+ {"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/client/index.js"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,uDAA6B;AAC7B;AACE;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,23BAAC","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/client/index.js"}
@@ -2,6 +2,7 @@
2
2
  import {
3
3
  JsonApiContext,
4
4
  JsonApiProvider,
5
+ useContentTableStructure,
5
6
  useJsonApiConfig,
6
7
  useJsonApiConfigOptional,
7
8
  useJsonApiGet,
@@ -11,13 +12,13 @@ import {
11
12
  useRoleTableStructure,
12
13
  useUserSearch,
13
14
  useUserTableStructure
14
- } from "../chunk-3APORDYP.mjs";
15
+ } from "../chunk-HP4Q5ZVG.mjs";
15
16
  import {
16
17
  directFetch
17
18
  } from "../chunk-C7C7VY4F.mjs";
18
- import "../chunk-IWFGEPAA.mjs";
19
- import "../chunk-2LM6LCJW.mjs";
20
- import "../chunk-7C5RAEBO.mjs";
19
+ import "../chunk-X53MF5ZN.mjs";
20
+ import "../chunk-JLN6UWII.mjs";
21
+ import "../chunk-MA2L2PL2.mjs";
21
22
  import {
22
23
  getClientToken
23
24
  } from "../chunk-AUXK7QSA.mjs";
@@ -25,15 +26,16 @@ import "../chunk-SM63SZCP.mjs";
25
26
  import "../chunk-74F6BBHH.mjs";
26
27
  import "../chunk-BLWVZK6J.mjs";
27
28
  import "../chunk-Q2N6SQYW.mjs";
28
- import "../chunk-PYF2U6WG.mjs";
29
+ import "../chunk-NPPQNSXN.mjs";
29
30
  import "../chunk-RBIVEH2K.mjs";
30
- import "../chunk-DD3KISNB.mjs";
31
+ import "../chunk-HAG77QBV.mjs";
31
32
  import "../chunk-PAWJFY3S.mjs";
32
33
  export {
33
34
  JsonApiContext,
34
35
  JsonApiProvider,
35
36
  directFetch,
36
37
  getClientToken,
38
+ useContentTableStructure,
37
39
  useJsonApiConfig,
38
40
  useJsonApiConfigOptional,
39
41
  useJsonApiGet,
@@ -1,8 +1,8 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React$1 from 'react';
3
3
  import React__default, { ReactElement, ReactNode, Dispatch, SetStateAction, Component, JSX } from 'react';
4
- import { M as ModuleWithPermissions, a as Action } from '../types-Bl61ob-7.mjs';
5
- import { C as ContentInterface, A as AuthComponent } from '../AuthComponent-CPLvEerw.mjs';
4
+ import { M as ModuleWithPermissions, a as Action } from '../types-t2PyXhDu.mjs';
5
+ import { C as ContentInterface } from '../content.interface-D_WS6CrB.mjs';
6
6
  import { PartialBlock } from '@blocknote/core';
7
7
  import { D as DataListRetriever } from '../useDataListRetriever-futhx3OP.mjs';
8
8
  import { DateRange } from 'react-day-picker';
@@ -10,9 +10,11 @@ import { DropzoneState, DropzoneOptions } from 'react-dropzone';
10
10
  import { F as FeatureInterface, C as CompanyInterface, U as UserInterface, R as RoleInterface } from '../user.interface-CAsTIbuQ.mjs';
11
11
  import { B as BreadcrumbItemData } from '../breadcrumb.item.data.interface-CgB4_1EE.mjs';
12
12
  import { ColumnDef } from '@tanstack/react-table';
13
+ import { A as AuthComponent } from '../AuthComponent-hxOPs9o8.mjs';
13
14
  import { J as JsonApiHydratedDataInterface } from '../ApiDataInterface-DPP8s46n.mjs';
14
15
  import { UseFormReturn } from 'react-hook-form';
15
16
  import { N as NotificationInterface } from '../notification.interface-BBgMUdLR.mjs';
17
+ import 'lucide-react';
16
18
 
17
19
  type PageContainerProps = {
18
20
  children: React.ReactNode;
@@ -506,6 +508,21 @@ declare function CompanyEditor(props: CompanyEditorProps): react_jsx_runtime.JSX
506
508
 
507
509
  declare function CompaniesList(): react_jsx_runtime.JSX.Element;
508
510
 
511
+ type ContentsListProps = {
512
+ contentList: ContentInterface[];
513
+ };
514
+ declare function ContentsList({ contentList }: ContentsListProps): react_jsx_runtime.JSX.Element;
515
+
516
+ type ContentsListByIdProps = {
517
+ contentIds: string[];
518
+ };
519
+ declare function ContentsListById({ contentIds }: ContentsListByIdProps): react_jsx_runtime.JSX.Element;
520
+
521
+ type RelevantContentsListProps = {
522
+ id: string;
523
+ };
524
+ declare function RelevantContentsList({ id }: RelevantContentsListProps): react_jsx_runtime.JSX.Element;
525
+
509
526
  interface Props {
510
527
  children: ReactNode;
511
528
  fallback?: ReactNode;
@@ -723,4 +740,4 @@ type UserAvatarProps = {
723
740
  };
724
741
  declare function UserAvatar({ user, className, showFull, showLink }: UserAvatarProps): react_jsx_runtime.JSX.Element;
725
742
 
726
- export { AcceptInvitation, ActivateAccount, AddUserToRole, AdminCompanyContainer, AdminUsersList, AllowedUsersDetails, AttributeElement, AuthContainer, BlockNoteEditorContainer, Breadcrumb, CommonAssociationCommandDialog, CommonAssociationTrigger, CommonDeleter, CommonEditorButtons, CommonEditorHeader, CommonEditorTrigger, CompaniesList, CompanyConfigurationEditor, CompanyConfigurationSecurityForm, CompanyContainer, CompanyDeleter, CompanyDetails, CompanyEditor, CompanyUsersList, ContentListTable, ContentTableSearch, ContentTitle, ContributorsList, Cookies, DatePickerPopover, DateRangeSelector, ErrorDetails, FileInput, FileUploader, FileUploaderContent, FileUploaderItem, ForgotPassword, FormCheckbox, FormContainerGeneric, FormDate, FormDateTime, FormFeatures, FormInput, FormPassword, FormPlaceAutocomplete, FormRoles, FormSelect, FormSlider, FormSwitch, FormTextarea, type GenerateTableStructureParams, Header, LandingComponent, Login, Logout, ModeToggleSwitch, NotificationErrorBoundary, NotificationMenuItem, NotificationModal, NotificationToast, NotificationsList, NotificationsListContainer, PageContainer, PageContainerContentDetails, type PageContainerItems, PageContentContainer, PageSection, PasswordInput, type PasswordInputProps, PushNotificationProvider, ReactMarkdownContainer, RecentPagesNavigator, RefreshUser, RelevantUsersList, RemoveUserFromRole, ResetPassword, RoleContainer, RoleDetails, RoleUsersList, RolesList, type Tab, TabsContainer, UserAvatar, UserAvatarEditor, UserContainer, UserDeleter, UserDetails, UserEditor, UserIndexContainer, UserIndexDetails, UserListInAdd, UserMultiSelect, UserReactivator, UserResentInvitationEmail, UserRoleAdd, UserRolesList, UserSelector, UsersList, UsersListByContentIds, UsersListContainer, cellComponent, cellDate, cellId, cellLink, cellUrl, errorToast, generateNotificationData, triggerAssociationToast, useFileUpload };
743
+ export { AcceptInvitation, ActivateAccount, AddUserToRole, AdminCompanyContainer, AdminUsersList, AllowedUsersDetails, AttributeElement, AuthContainer, BlockNoteEditorContainer, Breadcrumb, CommonAssociationCommandDialog, CommonAssociationTrigger, CommonDeleter, CommonEditorButtons, CommonEditorHeader, CommonEditorTrigger, CompaniesList, CompanyConfigurationEditor, CompanyConfigurationSecurityForm, CompanyContainer, CompanyDeleter, CompanyDetails, CompanyEditor, CompanyUsersList, ContentListTable, ContentTableSearch, ContentTitle, ContentsList, ContentsListById, ContributorsList, Cookies, DatePickerPopover, DateRangeSelector, ErrorDetails, FileInput, FileUploader, FileUploaderContent, FileUploaderItem, ForgotPassword, FormCheckbox, FormContainerGeneric, FormDate, FormDateTime, FormFeatures, FormInput, FormPassword, FormPlaceAutocomplete, FormRoles, FormSelect, FormSlider, FormSwitch, FormTextarea, type GenerateTableStructureParams, Header, LandingComponent, Login, Logout, ModeToggleSwitch, NotificationErrorBoundary, NotificationMenuItem, NotificationModal, NotificationToast, NotificationsList, NotificationsListContainer, PageContainer, PageContainerContentDetails, type PageContainerItems, PageContentContainer, PageSection, PasswordInput, type PasswordInputProps, PushNotificationProvider, ReactMarkdownContainer, RecentPagesNavigator, RefreshUser, RelevantContentsList, RelevantUsersList, RemoveUserFromRole, ResetPassword, RoleContainer, RoleDetails, RoleUsersList, RolesList, type Tab, TabsContainer, UserAvatar, UserAvatarEditor, UserContainer, UserDeleter, UserDetails, UserEditor, UserIndexContainer, UserIndexDetails, UserListInAdd, UserMultiSelect, UserReactivator, UserResentInvitationEmail, UserRoleAdd, UserRolesList, UserSelector, UsersList, UsersListByContentIds, UsersListContainer, cellComponent, cellDate, cellId, cellLink, cellUrl, errorToast, generateNotificationData, triggerAssociationToast, useFileUpload };
@@ -1,8 +1,8 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React$1 from 'react';
3
3
  import React__default, { ReactElement, ReactNode, Dispatch, SetStateAction, Component, JSX } from 'react';
4
- import { M as ModuleWithPermissions, a as Action } from '../types-Bl61ob-7.js';
5
- import { C as ContentInterface, A as AuthComponent } from '../AuthComponent-m6Qp4Hz6.js';
4
+ import { M as ModuleWithPermissions, a as Action } from '../types-t2PyXhDu.js';
5
+ import { C as ContentInterface } from '../content.interface-C_PGZMuy.js';
6
6
  import { PartialBlock } from '@blocknote/core';
7
7
  import { D as DataListRetriever } from '../useDataListRetriever-futhx3OP.js';
8
8
  import { DateRange } from 'react-day-picker';
@@ -10,9 +10,11 @@ import { DropzoneState, DropzoneOptions } from 'react-dropzone';
10
10
  import { F as FeatureInterface, C as CompanyInterface, U as UserInterface, R as RoleInterface } from '../user.interface-CbWqMaaU.js';
11
11
  import { B as BreadcrumbItemData } from '../breadcrumb.item.data.interface-CgB4_1EE.js';
12
12
  import { ColumnDef } from '@tanstack/react-table';
13
+ import { A as AuthComponent } from '../AuthComponent-hxOPs9o8.js';
13
14
  import { J as JsonApiHydratedDataInterface } from '../ApiDataInterface-DPP8s46n.js';
14
15
  import { UseFormReturn } from 'react-hook-form';
15
16
  import { N as NotificationInterface } from '../notification.interface-gyvT-Z2F.js';
17
+ import 'lucide-react';
16
18
 
17
19
  type PageContainerProps = {
18
20
  children: React.ReactNode;
@@ -506,6 +508,21 @@ declare function CompanyEditor(props: CompanyEditorProps): react_jsx_runtime.JSX
506
508
 
507
509
  declare function CompaniesList(): react_jsx_runtime.JSX.Element;
508
510
 
511
+ type ContentsListProps = {
512
+ contentList: ContentInterface[];
513
+ };
514
+ declare function ContentsList({ contentList }: ContentsListProps): react_jsx_runtime.JSX.Element;
515
+
516
+ type ContentsListByIdProps = {
517
+ contentIds: string[];
518
+ };
519
+ declare function ContentsListById({ contentIds }: ContentsListByIdProps): react_jsx_runtime.JSX.Element;
520
+
521
+ type RelevantContentsListProps = {
522
+ id: string;
523
+ };
524
+ declare function RelevantContentsList({ id }: RelevantContentsListProps): react_jsx_runtime.JSX.Element;
525
+
509
526
  interface Props {
510
527
  children: ReactNode;
511
528
  fallback?: ReactNode;
@@ -723,4 +740,4 @@ type UserAvatarProps = {
723
740
  };
724
741
  declare function UserAvatar({ user, className, showFull, showLink }: UserAvatarProps): react_jsx_runtime.JSX.Element;
725
742
 
726
- export { AcceptInvitation, ActivateAccount, AddUserToRole, AdminCompanyContainer, AdminUsersList, AllowedUsersDetails, AttributeElement, AuthContainer, BlockNoteEditorContainer, Breadcrumb, CommonAssociationCommandDialog, CommonAssociationTrigger, CommonDeleter, CommonEditorButtons, CommonEditorHeader, CommonEditorTrigger, CompaniesList, CompanyConfigurationEditor, CompanyConfigurationSecurityForm, CompanyContainer, CompanyDeleter, CompanyDetails, CompanyEditor, CompanyUsersList, ContentListTable, ContentTableSearch, ContentTitle, ContributorsList, Cookies, DatePickerPopover, DateRangeSelector, ErrorDetails, FileInput, FileUploader, FileUploaderContent, FileUploaderItem, ForgotPassword, FormCheckbox, FormContainerGeneric, FormDate, FormDateTime, FormFeatures, FormInput, FormPassword, FormPlaceAutocomplete, FormRoles, FormSelect, FormSlider, FormSwitch, FormTextarea, type GenerateTableStructureParams, Header, LandingComponent, Login, Logout, ModeToggleSwitch, NotificationErrorBoundary, NotificationMenuItem, NotificationModal, NotificationToast, NotificationsList, NotificationsListContainer, PageContainer, PageContainerContentDetails, type PageContainerItems, PageContentContainer, PageSection, PasswordInput, type PasswordInputProps, PushNotificationProvider, ReactMarkdownContainer, RecentPagesNavigator, RefreshUser, RelevantUsersList, RemoveUserFromRole, ResetPassword, RoleContainer, RoleDetails, RoleUsersList, RolesList, type Tab, TabsContainer, UserAvatar, UserAvatarEditor, UserContainer, UserDeleter, UserDetails, UserEditor, UserIndexContainer, UserIndexDetails, UserListInAdd, UserMultiSelect, UserReactivator, UserResentInvitationEmail, UserRoleAdd, UserRolesList, UserSelector, UsersList, UsersListByContentIds, UsersListContainer, cellComponent, cellDate, cellId, cellLink, cellUrl, errorToast, generateNotificationData, triggerAssociationToast, useFileUpload };
743
+ export { AcceptInvitation, ActivateAccount, AddUserToRole, AdminCompanyContainer, AdminUsersList, AllowedUsersDetails, AttributeElement, AuthContainer, BlockNoteEditorContainer, Breadcrumb, CommonAssociationCommandDialog, CommonAssociationTrigger, CommonDeleter, CommonEditorButtons, CommonEditorHeader, CommonEditorTrigger, CompaniesList, CompanyConfigurationEditor, CompanyConfigurationSecurityForm, CompanyContainer, CompanyDeleter, CompanyDetails, CompanyEditor, CompanyUsersList, ContentListTable, ContentTableSearch, ContentTitle, ContentsList, ContentsListById, ContributorsList, Cookies, DatePickerPopover, DateRangeSelector, ErrorDetails, FileInput, FileUploader, FileUploaderContent, FileUploaderItem, ForgotPassword, FormCheckbox, FormContainerGeneric, FormDate, FormDateTime, FormFeatures, FormInput, FormPassword, FormPlaceAutocomplete, FormRoles, FormSelect, FormSlider, FormSwitch, FormTextarea, type GenerateTableStructureParams, Header, LandingComponent, Login, Logout, ModeToggleSwitch, NotificationErrorBoundary, NotificationMenuItem, NotificationModal, NotificationToast, NotificationsList, NotificationsListContainer, PageContainer, PageContainerContentDetails, type PageContainerItems, PageContentContainer, PageSection, PasswordInput, type PasswordInputProps, PushNotificationProvider, ReactMarkdownContainer, RecentPagesNavigator, RefreshUser, RelevantContentsList, RelevantUsersList, RemoveUserFromRole, ResetPassword, RoleContainer, RoleDetails, RoleUsersList, RolesList, type Tab, TabsContainer, UserAvatar, UserAvatarEditor, UserContainer, UserDeleter, UserDetails, UserEditor, UserIndexContainer, UserIndexDetails, UserListInAdd, UserMultiSelect, UserReactivator, UserResentInvitationEmail, UserRoleAdd, UserRolesList, UserSelector, UsersList, UsersListByContentIds, UsersListContainer, cellComponent, cellDate, cellId, cellLink, cellUrl, errorToast, generateNotificationData, triggerAssociationToast, useFileUpload };