@c-rex/services 0.1.18 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{client-requests.d.mts → generated/client-requests.d.mts} +11 -7
- package/dist/{client-requests.d.ts → generated/client-requests.d.ts} +11 -7
- package/dist/{client-requests.js → generated/client-requests.js} +90 -80
- package/dist/generated/client-requests.js.map +1 -0
- package/dist/{client-requests.mjs → generated/client-requests.mjs} +88 -80
- package/dist/generated/client-requests.mjs.map +1 -0
- package/dist/{server-requests.d.mts → generated/server-requests.d.mts} +11 -7
- package/dist/{server-requests.d.ts → generated/server-requests.d.ts} +11 -7
- package/dist/{server-requests.js → generated/server-requests.js} +103 -81
- package/dist/generated/server-requests.js.map +1 -0
- package/dist/{server-requests.mjs → generated/server-requests.mjs} +101 -81
- package/dist/generated/server-requests.mjs.map +1 -0
- package/dist/index.d.mts +44 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.js +3268 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2905 -0
- package/dist/index.mjs.map +1 -0
- package/dist/read-models/index.d.mts +244 -0
- package/dist/read-models/index.d.ts +244 -0
- package/dist/read-models/index.js +1268 -0
- package/dist/read-models/index.js.map +1 -0
- package/dist/read-models/index.mjs +1226 -0
- package/dist/read-models/index.mjs.map +1 -0
- package/dist/vcard/index.d.mts +102 -0
- package/dist/vcard/index.d.ts +102 -0
- package/dist/vcard/index.js +561 -0
- package/dist/vcard/index.js.map +1 -0
- package/dist/vcard/index.mjs +522 -0
- package/dist/vcard/index.mjs.map +1 -0
- package/package.json +69 -49
- package/dist/client-requests.js.map +0 -1
- package/dist/client-requests.mjs.map +0 -1
- package/dist/server-requests.js.map +0 -1
- package/dist/server-requests.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/read-models/index.ts","../../src/read-models/metadata-read-models.ts","../../src/base-server-request.ts","../../src/server-request-context.ts","../../src/generated/server-requests.ts","../../src/vcard/profile-utils.ts","../../src/read-models/cache-policy.ts","../../src/read-models/metadata-presentation-config.ts","../../src/read-models/metadata-presentation.ts","../../src/read-models/metadata-display.ts","../../src/read-models/version-availability.ts","../../src/read-models/metadata-view-profile.ts"],"sourcesContent":["export * from \"./types\";\r\nexport * from \"./metadata-read-models\";\r\nexport * from \"./metadata-presentation-config\";\r\nexport * from \"./metadata-presentation\";\r\nexport * from \"./metadata-display\";\r\nexport * from \"./version-availability\";\r\nexport * from \"./metadata-view-profile\";\r\nexport * from \"./cache-policy\";\r\n","import {\r\n CREX_API_CACHE_TAG,\r\n CREX_READMODEL_CACHE_COMPONENTS_TAG,\r\n CREX_READMODEL_CACHE_DOCUMENT_TYPES_TAG,\r\n CREX_READMODEL_CACHE_INFORMATION_SUBJECTS_TAG,\r\n CREX_READMODEL_CACHE_METADATA_TAG,\r\n CREX_READMODEL_CACHE_PARTIES_TAG,\r\n CREX_READMODEL_CACHE_TAG,\r\n} from \"@c-rex/core/requests\";\r\nimport {\r\n CategoriesGetAllQueryParams,\r\n CategoryModel,\r\n ComponentModel,\r\n ComponentsGetAllQueryParams,\r\n ContentLifeCycleStatusGetAllQueryParams,\r\n ContentLifeCycleStatusModel,\r\n DocumentTypeModel,\r\n DocumentTypesGetAllQueryParams,\r\n FunctionalMetadataModel,\r\n FunctionalMetadatasGetAllQueryParams,\r\n InformationSubjectModel,\r\n InformationSubjectsGetAllQueryParams,\r\n InformationTypeModel,\r\n InformationTypesGetAllQueryParams,\r\n ObjectRefModel,\r\n PartiesGetAllQueryParams,\r\n PartyModel,\r\n PlanningTimeModel,\r\n PlanningTimesGetAllQueryParams,\r\n ProductFeatureModel,\r\n ProductFeaturesGetAllQueryParams,\r\n ProductLifeCyclePhaseModel,\r\n ProductLifeCyclePhasesGetAllQueryParams,\r\n ProductMetadataGetAllQueryParams,\r\n ProductMetadataModel,\r\n ProductVariantModel,\r\n ProductVariantsGetAllQueryParams,\r\n QualificationModel,\r\n QualificationsGetAllQueryParams,\r\n SuppliesGetAllQueryParams,\r\n SupplyModel,\r\n TopicTypeModel,\r\n TopicTypesGetAllQueryParams,\r\n} from \"@c-rex/interfaces\";\r\nimport { unstable_cache } from \"next/cache\";\r\nimport {\r\n categoriesGetAllServer,\r\n componentsGetAllServer,\r\n contentLifeCycleStatusGetAllServer,\r\n documentTypesGetAllServer,\r\n functionalMetadatasGetAllServer,\r\n informationSubjectsGetAllServer,\r\n informationTypesGetAllServer,\r\n partiesGetAllServer,\r\n planningTimesGetAllServer,\r\n productFeaturesGetAllServer,\r\n productLifeCyclePhasesGetAllServer,\r\n productMetadataGetAllServer,\r\n productVariantsGetAllServer,\r\n qualificationsGetAllServer,\r\n suppliesGetAllServer,\r\n topicTypesGetAllServer,\r\n} from \"../generated/server-requests\";\r\nimport { resolveUiLanguage } from \"../vcard/profile-utils\";\r\nimport { withServerRequestContext } from \"../server-request-context\";\r\nimport {\r\n PartiesResult,\r\n PartyNode,\r\n TaxonomyEntityRef,\r\n TaxonomyNode,\r\n TaxonomyResult,\r\n} from \"./types\";\r\nimport { READMODEL_CACHE_POLICY } from \"./cache-policy\";\r\n\r\ntype TaxonomyEntity = {\r\n id?: string | null;\r\n shortId?: string | null;\r\n labels?: { language?: string | null; value?: string | null }[] | null;\r\n class?: ObjectRefModel | null;\r\n parents?: ObjectRefModel[] | null;\r\n ancestors?: ObjectRefModel[][] | null;\r\n ancestorsOrSelf?: ObjectRefModel[][] | null;\r\n hasInformationUnits?: boolean | null;\r\n hasInformationUnitReferences?: boolean | null;\r\n};\r\n\r\ntype BuildTreeOptions = {\r\n uiLanguage: string;\r\n groupRootsByClass?: boolean;\r\n includeOnlyUsed?: boolean;\r\n};\r\n\r\ntype ResultContainerLike<T> = {\r\n items: T[];\r\n};\r\n\r\ntype PagedQuery = {\r\n PageNumber?: number;\r\n PageSize?: number;\r\n};\r\n\r\ntype MetadataPropertyKey =\r\n | \"parties\"\r\n | \"components\"\r\n | \"informationSubjects\"\r\n | \"topicTypes\"\r\n | \"documentTypes\"\r\n | \"contentLifeCycleStatus\"\r\n | \"applicableForTypes\"\r\n | \"planningTimes\"\r\n | \"functionalMetadata\"\r\n | \"productFeatures\"\r\n | \"productLifeCyclePhases\"\r\n | \"productMetadata\"\r\n | \"productVariants\"\r\n | \"qualifications\"\r\n | \"supplies\";\r\n\r\nconst resolveLocalizedLabel = (\r\n labels:\r\n | { language?: string | null; value?: string | null }[]\r\n | null\r\n | undefined,\r\n uiLanguage: string\r\n): string | undefined => {\r\n if (!labels || labels.length === 0) return undefined;\r\n\r\n const normalizedUiLanguage = uiLanguage.trim().toLowerCase();\r\n const baseLanguage = normalizedUiLanguage.split(\"-\")[0];\r\n\r\n const normalized = labels\r\n .map((item) => ({\r\n language: (item.language || \"\").trim().toLowerCase(),\r\n value: (item.value || \"\").trim(),\r\n }))\r\n .filter((item) => item.value.length > 0);\r\n\r\n const exact = normalized.find((item) => item.language === normalizedUiLanguage)?.value;\r\n if (exact) return exact;\r\n\r\n const base = normalized.find((item) => item.language === baseLanguage)?.value;\r\n if (base) return base;\r\n\r\n const english = normalized.find((item) => item.language === \"en\" || item.language === \"en-us\")?.value;\r\n if (english) return english;\r\n\r\n return normalized[0]?.value;\r\n};\r\n\r\nconst stableSerialize = (value: unknown): string => {\r\n const normalize = (input: unknown): unknown => {\r\n if (Array.isArray(input)) {\r\n return input.map((item) => normalize(item));\r\n }\r\n\r\n if (input && typeof input === \"object\") {\r\n const sorted: Record<string, unknown> = {};\r\n Object.keys(input as Record<string, unknown>)\r\n .sort((a, b) => a.localeCompare(b))\r\n .forEach((key) => {\r\n sorted[key] = normalize((input as Record<string, unknown>)[key]);\r\n });\r\n return sorted;\r\n }\r\n\r\n return input;\r\n };\r\n\r\n return JSON.stringify(normalize(value));\r\n};\r\n\r\nconst READMODEL_PAGE_SIZE = 300;\r\nconst READMODEL_MAX_PAGES = 50;\r\n\r\nconst fetchAllPages = async <TItem, TQuery extends object>(\r\n fetcher: (query?: Partial<TQuery>) => Promise<ResultContainerLike<TItem>>,\r\n baseQuery: Partial<TQuery> & PagedQuery\r\n): Promise<TItem[]> => {\r\n const pageSize = baseQuery.PageSize && baseQuery.PageSize > 0 ? baseQuery.PageSize : READMODEL_PAGE_SIZE;\r\n const collected: TItem[] = [];\r\n\r\n for (let pageNumber = 1; pageNumber <= READMODEL_MAX_PAGES; pageNumber += 1) {\r\n const pageQuery = {\r\n ...baseQuery,\r\n PageNumber: pageNumber,\r\n PageSize: pageSize,\r\n } as Partial<TQuery>;\r\n\r\n const response = await fetcher(pageQuery);\r\n const pageItems = response.items || [];\r\n if (pageItems.length === 0) break;\r\n\r\n collected.push(...pageItems);\r\n if (pageItems.length < pageSize) break;\r\n }\r\n\r\n return collected;\r\n};\r\n\r\nconst getRefId = (ref?: ObjectRefModel | null): string | undefined => ref?.id?.trim() || undefined;\r\n\r\nconst toEntityRef = (entity: TaxonomyEntity, uiLanguage: string): TaxonomyEntityRef | undefined => {\r\n const id = entity.id?.trim();\r\n if (!id) return undefined;\r\n const label = resolveLocalizedLabel(entity.labels || [], uiLanguage) || entity.shortId?.trim() || id;\r\n return { id, shortId: entity.shortId?.trim() || undefined, label };\r\n};\r\n\r\nconst toClassRef = (classRef: ObjectRefModel | null | undefined, uiLanguage: string): TaxonomyEntityRef | undefined => {\r\n const id = classRef?.id?.trim();\r\n if (!id) return undefined;\r\n const label = resolveLocalizedLabel(classRef?.labels || [], uiLanguage) || classRef?.shortId?.trim() || id;\r\n return { id, shortId: classRef?.shortId?.trim() || undefined, label };\r\n};\r\n\r\nconst deriveParentIds = (entity: TaxonomyEntity): string[] => {\r\n const directParents = (entity.parents || [])\r\n .map((parent) => getRefId(parent))\r\n .filter((value): value is string => Boolean(value));\r\n if (directParents.length > 0) {\r\n return Array.from(new Set(directParents));\r\n }\r\n\r\n const ancestorParents = (entity.ancestors || [])\r\n .map((path) => path[path.length - 1])\r\n .map((parent) => getRefId(parent))\r\n .filter((value): value is string => Boolean(value));\r\n return Array.from(new Set(ancestorParents));\r\n};\r\n\r\nconst deriveAncestorIds = (entity: TaxonomyEntity): string[] => {\r\n const ids = (entity.ancestors || [])\r\n .flatMap((path) => path)\r\n .map((item) => getRefId(item))\r\n .filter((value): value is string => Boolean(value));\r\n return Array.from(new Set(ids));\r\n};\r\n\r\nconst buildTaxonomyTree = (items: TaxonomyEntity[], options: BuildTreeOptions): TaxonomyResult => {\r\n const nodesById: Record<string, TaxonomyNode> = {};\r\n const parentLinks = new Map<string, string[]>();\r\n\r\n for (const item of items) {\r\n const entityRef = toEntityRef(item, options.uiLanguage);\r\n if (!entityRef) continue;\r\n\r\n nodesById[entityRef.id] = {\r\n ...entityRef,\r\n classRef: toClassRef(item.class, options.uiLanguage),\r\n hasInformationUnits: item.hasInformationUnits === true || item.hasInformationUnitReferences === true,\r\n parentIds: deriveParentIds(item),\r\n ancestorIds: deriveAncestorIds(item),\r\n children: [],\r\n };\r\n }\r\n\r\n Object.values(nodesById).forEach((node) => {\r\n parentLinks.set(node.id, node.parentIds.filter((id) => Boolean(nodesById[id])));\r\n });\r\n\r\n if (options.includeOnlyUsed) {\r\n const keepIds = new Set<string>(\r\n Object.values(nodesById)\r\n .filter((node) => node.hasInformationUnits === true)\r\n .map((node) => node.id)\r\n );\r\n\r\n let changed = true;\r\n while (changed) {\r\n changed = false;\r\n Array.from(keepIds).forEach((nodeId) => {\r\n const parentIds = parentLinks.get(nodeId) || [];\r\n parentIds.forEach((parentId) => {\r\n if (!keepIds.has(parentId)) {\r\n keepIds.add(parentId);\r\n changed = true;\r\n }\r\n });\r\n });\r\n }\r\n\r\n Object.keys(nodesById).forEach((nodeId) => {\r\n if (!keepIds.has(nodeId)) {\r\n delete nodesById[nodeId];\r\n parentLinks.delete(nodeId);\r\n }\r\n });\r\n }\r\n\r\n Object.values(nodesById).forEach((node) => {\r\n const parents = parentLinks.get(node.id) || [];\r\n parents.forEach((parentId) => {\r\n if (nodesById[parentId]) {\r\n nodesById[parentId].children.push(node);\r\n }\r\n });\r\n });\r\n\r\n const roots = Object.values(nodesById).filter((node) => (parentLinks.get(node.id) || []).length === 0);\r\n if (!options.groupRootsByClass) {\r\n return {\r\n roots: roots.sort((a, b) => a.label.localeCompare(b.label)),\r\n nodesById,\r\n generatedAt: new Date().toISOString(),\r\n };\r\n }\r\n\r\n const groupedRoots = new Map<string, TaxonomyNode>();\r\n const ungroupedRootId = \"class:ungrouped\";\r\n groupedRoots.set(ungroupedRootId, {\r\n id: ungroupedRootId,\r\n label: \"Ungrouped\",\r\n parentIds: [],\r\n ancestorIds: [],\r\n children: [],\r\n isVirtualGroup: true,\r\n });\r\n\r\n roots.forEach((root) => {\r\n const classId = root.classRef?.id || ungroupedRootId;\r\n if (!groupedRoots.has(classId)) {\r\n groupedRoots.set(classId, {\r\n id: classId,\r\n shortId: root.classRef?.shortId,\r\n label: root.classRef?.label || \"Ungrouped\",\r\n parentIds: [],\r\n ancestorIds: [],\r\n children: [],\r\n isVirtualGroup: true,\r\n });\r\n }\r\n groupedRoots.get(classId)?.children.push(root);\r\n });\r\n\r\n const groupedRootNodes = Array.from(groupedRoots.values())\r\n .filter((group) => group.children.length > 0)\r\n .map((group) => ({\r\n ...group,\r\n children: [...group.children].sort((a, b) => a.label.localeCompare(b.label)),\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label));\r\n\r\n return {\r\n roots: groupedRootNodes,\r\n nodesById,\r\n generatedAt: new Date().toISOString(),\r\n };\r\n};\r\n\r\nconst defaultTreeOptions = (uiLanguage: string): BuildTreeOptions => ({\r\n uiLanguage,\r\n groupRootsByClass: true,\r\n});\r\n\r\ntype TaxonomyReadOptions = {\r\n includeOnlyUsed?: boolean;\r\n};\r\n\r\nconst createTaxonomyResolver = <TItem extends TaxonomyEntity, TQuery extends object>(\r\n options: {\r\n cacheKey: string;\r\n tags?: string[];\r\n defaultQuery: Record<string, unknown>;\r\n fetch: (query?: Partial<TQuery>) => Promise<ResultContainerLike<TItem>>;\r\n }\r\n) => {\r\n const cached = unstable_cache(\r\n async (\r\n _queryKey: string,\r\n query: Partial<TQuery>,\r\n uiLanguage: string,\r\n readOptions: TaxonomyReadOptions\r\n ): Promise<TaxonomyResult> => {\r\n const items = await withServerRequestContext(\r\n { skipCookieTokenLookup: true },\r\n () => fetchAllPages(options.fetch, query as Partial<TQuery> & PagedQuery)\r\n );\r\n return buildTaxonomyTree(items, {\r\n ...defaultTreeOptions(uiLanguage),\r\n includeOnlyUsed: readOptions.includeOnlyUsed,\r\n });\r\n },\r\n [\"read-model\", options.cacheKey],\r\n {\r\n revalidate: READMODEL_CACHE_POLICY.metadataRevalidateSeconds,\r\n tags: [\r\n CREX_API_CACHE_TAG,\r\n CREX_READMODEL_CACHE_TAG,\r\n CREX_READMODEL_CACHE_METADATA_TAG,\r\n ...(options.tags || []),\r\n ],\r\n }\r\n );\r\n\r\n return async (query?: Partial<TQuery>, readOptions?: TaxonomyReadOptions): Promise<TaxonomyResult> => {\r\n const uiLanguage = resolveUiLanguage();\r\n const normalizedQuery = { ...options.defaultQuery, ...(query || {}) } as Partial<TQuery>;\r\n const normalizedReadOptions: TaxonomyReadOptions = {\r\n includeOnlyUsed: readOptions?.includeOnlyUsed === true,\r\n };\r\n const cacheKey = stableSerialize({ normalizedQuery, uiLanguage, normalizedReadOptions });\r\n return cached(cacheKey, normalizedQuery, uiLanguage, normalizedReadOptions);\r\n };\r\n};\r\n\r\nconst defaultMetadataQuery = {\r\n PageNumber: 1,\r\n PageSize: READMODEL_PAGE_SIZE,\r\n Fields: [\"labels\", \"class\", \"hasInformationUnits\"],\r\n Sort: [\"shortId\"],\r\n};\r\n\r\nconst getCategoriesCached = createTaxonomyResolver<CategoryModel, CategoriesGetAllQueryParams>({\r\n cacheKey: \"categories\",\r\n tags: [CREX_READMODEL_CACHE_INFORMATION_SUBJECTS_TAG],\r\n defaultQuery: defaultMetadataQuery,\r\n fetch: categoriesGetAllServer,\r\n});\r\n\r\nconst getInformationSubjectsLegacyCached = createTaxonomyResolver<InformationSubjectModel, InformationSubjectsGetAllQueryParams>({\r\n cacheKey: \"information-subjects-legacy\",\r\n tags: [CREX_READMODEL_CACHE_INFORMATION_SUBJECTS_TAG],\r\n defaultQuery: defaultMetadataQuery,\r\n fetch: informationSubjectsGetAllServer,\r\n});\r\n\r\nconst getDocumentTypesCached = createTaxonomyResolver<DocumentTypeModel, DocumentTypesGetAllQueryParams>({\r\n cacheKey: \"document-types\",\r\n tags: [CREX_READMODEL_CACHE_DOCUMENT_TYPES_TAG],\r\n defaultQuery: defaultMetadataQuery,\r\n fetch: documentTypesGetAllServer,\r\n});\r\n\r\nconst getComponentsCached = createTaxonomyResolver<ComponentModel, ComponentsGetAllQueryParams>({\r\n cacheKey: \"components\",\r\n tags: [CREX_READMODEL_CACHE_COMPONENTS_TAG],\r\n defaultQuery: {\r\n ...defaultMetadataQuery,\r\n Fields: [\"labels\", \"class\", \"parents\", \"ancestors\", \"ancestorsOrSelf\", \"hasInformationUnits\"],\r\n },\r\n fetch: componentsGetAllServer,\r\n});\r\n\r\nconst getTopicTypesCached = createTaxonomyResolver<TopicTypeModel, TopicTypesGetAllQueryParams>({\r\n cacheKey: \"topic-types\",\r\n defaultQuery: defaultMetadataQuery,\r\n fetch: topicTypesGetAllServer,\r\n});\r\n\r\nconst getContentLifeCycleStatusCached = createTaxonomyResolver<ContentLifeCycleStatusModel, ContentLifeCycleStatusGetAllQueryParams>({\r\n cacheKey: \"content-life-cycle-status\",\r\n defaultQuery: defaultMetadataQuery,\r\n fetch: contentLifeCycleStatusGetAllServer,\r\n});\r\n\r\nconst getApplicableForTypesCached = createTaxonomyResolver<InformationTypeModel, InformationTypesGetAllQueryParams>({\r\n cacheKey: \"applicable-for-types\",\r\n defaultQuery: defaultMetadataQuery,\r\n fetch: informationTypesGetAllServer,\r\n});\r\n\r\nconst getPlanningTimesCached = createTaxonomyResolver<PlanningTimeModel, PlanningTimesGetAllQueryParams>({\r\n cacheKey: \"planning-times\",\r\n defaultQuery: defaultMetadataQuery,\r\n fetch: planningTimesGetAllServer,\r\n});\r\n\r\nconst getFunctionalMetadataCached = createTaxonomyResolver<FunctionalMetadataModel, FunctionalMetadatasGetAllQueryParams>({\r\n cacheKey: \"functional-metadata\",\r\n defaultQuery: defaultMetadataQuery,\r\n fetch: functionalMetadatasGetAllServer,\r\n});\r\n\r\nconst getProductFeaturesCached = createTaxonomyResolver<ProductFeatureModel, ProductFeaturesGetAllQueryParams>({\r\n cacheKey: \"product-features\",\r\n defaultQuery: defaultMetadataQuery,\r\n fetch: productFeaturesGetAllServer,\r\n});\r\n\r\nconst getProductLifeCyclePhasesCached = createTaxonomyResolver<ProductLifeCyclePhaseModel, ProductLifeCyclePhasesGetAllQueryParams>({\r\n cacheKey: \"product-life-cycle-phases\",\r\n defaultQuery: defaultMetadataQuery,\r\n fetch: productLifeCyclePhasesGetAllServer,\r\n});\r\n\r\nconst getProductMetadataCached = createTaxonomyResolver<ProductMetadataModel, ProductMetadataGetAllQueryParams>({\r\n cacheKey: \"product-metadata\",\r\n defaultQuery: defaultMetadataQuery,\r\n fetch: productMetadataGetAllServer,\r\n});\r\n\r\nconst getProductVariantsCached = createTaxonomyResolver<ProductVariantModel, ProductVariantsGetAllQueryParams>({\r\n cacheKey: \"product-variants\",\r\n defaultQuery: defaultMetadataQuery,\r\n fetch: productVariantsGetAllServer,\r\n});\r\n\r\nconst getQualificationsCached = createTaxonomyResolver<QualificationModel, QualificationsGetAllQueryParams>({\r\n cacheKey: \"qualifications\",\r\n defaultQuery: defaultMetadataQuery,\r\n fetch: qualificationsGetAllServer,\r\n});\r\n\r\nconst getSuppliesCached = createTaxonomyResolver<SupplyModel, SuppliesGetAllQueryParams>({\r\n cacheKey: \"supplies\",\r\n defaultQuery: defaultMetadataQuery,\r\n fetch: suppliesGetAllServer,\r\n});\r\n\r\nconst toRoleRef = (party: PartyModel, uiLanguage: string): TaxonomyEntityRef => {\r\n const role = party.partyRole;\r\n const id = role?.id?.trim() || \"role:unknown\";\r\n return {\r\n id,\r\n shortId: role?.shortId?.trim() || undefined,\r\n label: resolveLocalizedLabel(role?.labels || [], uiLanguage) || role?.shortId?.trim() || \"Unknown role\",\r\n };\r\n};\r\n\r\nconst getPartiesCached = unstable_cache(\r\n async (_queryKey: string, query: Partial<PartiesGetAllQueryParams>, uiLanguage: string): Promise<PartiesResult> => {\r\n const items = await withServerRequestContext(\r\n { skipCookieTokenLookup: true },\r\n () => fetchAllPages(partiesGetAllServer, query as Partial<PartiesGetAllQueryParams> & PagedQuery)\r\n );\r\n const groups = new Map<string, { role: TaxonomyEntityRef; parties: PartyNode[] }>();\r\n\r\n items.forEach((party) => {\r\n const id = party.id?.trim();\r\n if (!id) return;\r\n const role = toRoleRef(party as PartyModel, uiLanguage);\r\n if (!groups.has(role.id)) {\r\n groups.set(role.id, { role, parties: [] });\r\n }\r\n\r\n const label = resolveLocalizedLabel(party.labels || [], uiLanguage) || party.shortId?.trim() || id;\r\n groups.get(role.id)?.parties.push({\r\n id,\r\n shortId: party.shortId?.trim() || undefined,\r\n label,\r\n role,\r\n vcardId: party.vcard?.id?.trim() || undefined,\r\n });\r\n });\r\n\r\n return {\r\n groups: Array.from(groups.values())\r\n .map((group) => ({\r\n ...group,\r\n parties: group.parties.sort((a, b) => a.label.localeCompare(b.label)),\r\n }))\r\n .sort((a, b) => a.role.label.localeCompare(b.role.label)),\r\n generatedAt: new Date().toISOString(),\r\n };\r\n },\r\n [\"read-model\", \"parties\"],\r\n {\r\n revalidate: READMODEL_CACHE_POLICY.metadataRevalidateSeconds,\r\n tags: [CREX_API_CACHE_TAG, CREX_READMODEL_CACHE_TAG, CREX_READMODEL_CACHE_METADATA_TAG, CREX_READMODEL_CACHE_PARTIES_TAG],\r\n }\r\n);\r\n\r\n/**\r\n * Returns a cached, class-grouped read model for Information Subjects.\r\n * Prefers CREX Categories (hierarchy + usage flags) and falls back to legacy InformationSubjects.\r\n */\r\nexport const getInformationSubjects = async (options?: TaxonomyReadOptions): Promise<TaxonomyResult> => {\r\n const readOptions: TaxonomyReadOptions = { includeOnlyUsed: options?.includeOnlyUsed === true };\r\n\r\n try {\r\n const categories = await getCategoriesCached(undefined, readOptions);\r\n if (categories.roots.length > 0) {\r\n return categories;\r\n }\r\n } catch (error) {\r\n console.warn(\"[MetadataReadModels] Categories endpoint unavailable, falling back to InformationSubjects.\", error);\r\n }\r\n\r\n return getInformationSubjectsLegacyCached(undefined, readOptions);\r\n};\r\n\r\n/**\r\n * Returns a cached, class-grouped read model for Document Types.\r\n * Current IDS payload does not expose parent links for this type; roots are grouped by class until hierarchy fields are available.\r\n */\r\nexport const getDocumentTypes = async (): Promise<TaxonomyResult> => {\r\n return getDocumentTypesCached();\r\n};\r\n\r\n/**\r\n * Returns a cached read model for Components.\r\n * Uses IDS parent/ancestor fields when available and groups root nodes by class.\r\n */\r\nexport const getComponents = async (): Promise<TaxonomyResult> => {\r\n return getComponentsCached();\r\n};\r\n\r\n/**\r\n * Returns a cached read model for Parties grouped by partyRole.\r\n * VCard references are included when available and can be resolved separately via VCARD endpoints.\r\n */\r\nexport const getParties = async (): Promise<PartiesResult> => {\r\n const uiLanguage = resolveUiLanguage();\r\n const query: Partial<PartiesGetAllQueryParams> = {\r\n PageNumber: 1,\r\n PageSize: READMODEL_PAGE_SIZE,\r\n Fields: [\"labels\", \"partyRole\", \"vcard\", \"class\"],\r\n Sort: [\"shortId\"],\r\n Embed: [\"vcard\"],\r\n };\r\n return getPartiesCached(stableSerialize({ query, uiLanguage }), query, uiLanguage);\r\n};\r\n\r\nexport const getTopicTypes = async (query?: Partial<TopicTypesGetAllQueryParams>): Promise<TaxonomyResult> => {\r\n return getTopicTypesCached(query);\r\n};\r\n\r\nexport const getContentLifeCycleStatus = async (query?: Partial<ContentLifeCycleStatusGetAllQueryParams>): Promise<TaxonomyResult> => {\r\n return getContentLifeCycleStatusCached(query);\r\n};\r\n\r\nexport const getApplicableForTypes = async (query?: Partial<InformationTypesGetAllQueryParams>): Promise<TaxonomyResult> => {\r\n return getApplicableForTypesCached(query);\r\n};\r\n\r\nexport const getPlanningTimes = async (query?: Partial<PlanningTimesGetAllQueryParams>): Promise<TaxonomyResult> => {\r\n return getPlanningTimesCached(query);\r\n};\r\n\r\nexport const getFunctionalMetadata = async (query?: Partial<FunctionalMetadatasGetAllQueryParams>): Promise<TaxonomyResult> => {\r\n return getFunctionalMetadataCached(query);\r\n};\r\n\r\nexport const getProductFeatures = async (query?: Partial<ProductFeaturesGetAllQueryParams>): Promise<TaxonomyResult> => {\r\n return getProductFeaturesCached(query);\r\n};\r\n\r\nexport const getProductLifeCyclePhases = async (query?: Partial<ProductLifeCyclePhasesGetAllQueryParams>): Promise<TaxonomyResult> => {\r\n return getProductLifeCyclePhasesCached(query);\r\n};\r\n\r\nexport const getProductMetadata = async (query?: Partial<ProductMetadataGetAllQueryParams>): Promise<TaxonomyResult> => {\r\n return getProductMetadataCached(query);\r\n};\r\n\r\nexport const getProductVariants = async (query?: Partial<ProductVariantsGetAllQueryParams>): Promise<TaxonomyResult> => {\r\n return getProductVariantsCached(query);\r\n};\r\n\r\nexport const getQualifications = async (query?: Partial<QualificationsGetAllQueryParams>): Promise<TaxonomyResult> => {\r\n return getQualificationsCached(query);\r\n};\r\n\r\nexport const getSupplies = async (query?: Partial<SuppliesGetAllQueryParams>): Promise<TaxonomyResult> => {\r\n return getSuppliesCached(query);\r\n};\r\n\r\nexport const getMetadataPropertyResolvers = (): Record<MetadataPropertyKey, () => Promise<TaxonomyResult | PartiesResult>> => ({\r\n parties: getParties,\r\n components: getComponents,\r\n informationSubjects: getInformationSubjects,\r\n topicTypes: getTopicTypes,\r\n documentTypes: getDocumentTypes,\r\n contentLifeCycleStatus: getContentLifeCycleStatus,\r\n applicableForTypes: getApplicableForTypes,\r\n planningTimes: getPlanningTimes,\r\n functionalMetadata: getFunctionalMetadata,\r\n productFeatures: getProductFeatures,\r\n productLifeCyclePhases: getProductLifeCyclePhases,\r\n productMetadata: getProductMetadata,\r\n productVariants: getProductVariants,\r\n qualifications: getQualifications,\r\n supplies: getSupplies,\r\n});\r\n","import { CrexApi } from \"@c-rex/core/requests\";\r\nimport { getServerRequestContext } from \"./server-request-context\";\r\n\r\nexport const baseServerRequest = async <T>(\r\n endpoint: string,\r\n query?: Record<string, any>\r\n): Promise<T> => {\r\n const api = new CrexApi();\r\n const requestContext = getServerRequestContext();\r\n\r\n const response = await api.execute({\r\n url: endpoint,\r\n method: \"GET\",\r\n params: query,\r\n skipCookieTokenLookup: requestContext?.skipCookieTokenLookup,\r\n authToken: requestContext?.authToken,\r\n })\r\n\r\n return response as T;\r\n}\r\n","import { AsyncLocalStorage } from \"node:async_hooks\";\r\n\r\nexport type ServerRequestContext = {\r\n skipCookieTokenLookup?: boolean;\r\n authToken?: string;\r\n};\r\n\r\nconst requestContextStorage = new AsyncLocalStorage<ServerRequestContext>();\r\n\r\nexport const withServerRequestContext = async <T>(\r\n context: ServerRequestContext,\r\n run: () => Promise<T>\r\n): Promise<T> => {\r\n return requestContextStorage.run(context, run);\r\n};\r\n\r\nexport const getServerRequestContext = (): ServerRequestContext | undefined => {\r\n return requestContextStorage.getStore();\r\n};\r\n","/**\r\n * Auto-generated request functions from OpenAPI spec\r\n * Source: https://staging.c-rex.net/ids/api/swagger/v1/swagger.json\r\n * Generated: 2025-12-22T14:05:43.687Z\r\n * Do not edit manually\r\n */\r\n\r\nimport { baseServerRequest } from '../base-server-request';\r\nimport type {\r\n AdministrativeMetadataGetAllQueryParams,\r\n AdministrativeMetadataGetByIdPathParams,\r\n AdministrativeMetadataGetByIdQueryParams,\r\n AdministrativeMetadataModel,\r\n AfterUsesGetAllQueryParams,\r\n AfterUsesGetByIdPathParams,\r\n AfterUsesGetByIdQueryParams,\r\n CategoriesGetAllQueryParams,\r\n CategoriesGetByIdPathParams,\r\n CategoriesGetByIdQueryParams,\r\n CategoryModel,\r\n CollectionsGetAllQueryParams,\r\n CollectionsGetByIdPathParams,\r\n CollectionsGetByIdQueryParams,\r\n ComponentModel,\r\n ComponentsGetAllQueryParams,\r\n ComponentsGetByIdPathParams,\r\n ComponentsGetByIdQueryParams,\r\n ConceptsGetAllQueryParams,\r\n ConceptsGetByIdPathParams,\r\n ConceptsGetByIdQueryParams,\r\n ConformitiesGetAllQueryParams,\r\n ConformitiesGetByIdPathParams,\r\n ConformitiesGetByIdQueryParams,\r\n ConsumablesGetAllQueryParams,\r\n ConsumablesGetByIdPathParams,\r\n ConsumablesGetByIdQueryParams,\r\n ContentLifeCycleStatusGetAllQueryParams,\r\n ContentLifeCycleStatusGetByIdPathParams,\r\n ContentLifeCycleStatusGetByIdQueryParams,\r\n ContentLifeCycleStatusModel,\r\n DesignAndRealizationsGetAllQueryParams,\r\n DesignAndRealizationsGetByIdPathParams,\r\n DesignAndRealizationsGetByIdQueryParams,\r\n DirectoryNodeModel,\r\n DirectoryNodeTypeModel,\r\n DirectoryNodeTypesGetAllQueryParams,\r\n DirectoryNodeTypesGetByIdPathParams,\r\n DirectoryNodeTypesGetByIdQueryParams,\r\n DirectoryNodesGetAllQueryParams,\r\n DirectoryNodesGetByIdPathParams,\r\n DirectoryNodesGetByIdQueryParams,\r\n DocumentModel,\r\n DocumentTypeModel,\r\n DocumentTypesGetAllQueryParams,\r\n DocumentTypesGetByIdPathParams,\r\n DocumentTypesGetByIdQueryParams,\r\n DocumentationMetadataGetAllQueryParams,\r\n DocumentationMetadataGetByIdPathParams,\r\n DocumentationMetadataGetByIdQueryParams,\r\n DocumentationMetadataModel,\r\n DocumentsGetAllQueryParams,\r\n DocumentsGetByIdPathParams,\r\n DocumentsGetByIdQueryParams,\r\n DocumentsLanguagesQueryParams,\r\n DomainEntitiesGetAllQueryParams,\r\n DomainEntitiesGetByIdPathParams,\r\n DomainEntitiesGetByIdQueryParams,\r\n DomainEntityModel,\r\n DownTimesGetAllQueryParams,\r\n DownTimesGetByIdPathParams,\r\n DownTimesGetByIdQueryParams,\r\n EventModel,\r\n EventsGetAllQueryParams,\r\n EventsGetByIdPathParams,\r\n EventsGetByIdQueryParams,\r\n FormalitiesGetAllQueryParams,\r\n FormalitiesGetByIdPathParams,\r\n FormalitiesGetByIdQueryParams,\r\n FormsGetAllQueryParams,\r\n FormsGetByIdPathParams,\r\n FormsGetByIdQueryParams,\r\n FragmentModel,\r\n FragmentsGetAllQueryParams,\r\n FragmentsGetByIdPathParams,\r\n FragmentsGetByIdQueryParams,\r\n FragmentsLanguagesQueryParams,\r\n FunctionalMetadataModel,\r\n FunctionalMetadatasGetAllQueryParams,\r\n FunctionalMetadatasGetByIdPathParams,\r\n FunctionalMetadatasGetByIdQueryParams,\r\n FunctionalitiesGetAllQueryParams,\r\n FunctionalitiesGetByIdPathParams,\r\n FunctionalitiesGetByIdQueryParams,\r\n GroupsGetAllQueryParams,\r\n GroupsGetByIdPathParams,\r\n GroupsGetByIdQueryParams,\r\n HardwareToolsGetAllQueryParams,\r\n HardwareToolsGetByIdPathParams,\r\n HardwareToolsGetByIdQueryParams,\r\n IdentitiesGetAllQueryParams,\r\n IdentitiesGetByIdPathParams,\r\n IdentitiesGetByIdQueryParams,\r\n IdentityDomainModel,\r\n IdentityDomainsGetAllQueryParams,\r\n IdentityDomainsGetByIdPathParams,\r\n IdentityDomainsGetByIdQueryParams,\r\n IdentityModel,\r\n IndividualsGetAllQueryParams,\r\n IndividualsGetByIdPathParams,\r\n IndividualsGetByIdQueryParams,\r\n InformationObjectModel,\r\n InformationObjectsGetAllQueryParams,\r\n InformationObjectsGetByIdPathParams,\r\n InformationObjectsGetByIdQueryParams,\r\n InformationSubjectCollectionModel,\r\n InformationSubjectConformityModel,\r\n InformationSubjectFormalityModel,\r\n InformationSubjectFunctionalityModel,\r\n InformationSubjectModel,\r\n InformationSubjectProcessModel,\r\n InformationSubjectSafetyModel,\r\n InformationSubjectSafetyWarningMessageModel,\r\n InformationSubjectTechnicalDataModel,\r\n InformationSubjectTechnicalOverviewModel,\r\n InformationSubjectsGetAllQueryParams,\r\n InformationSubjectsGetByIdPathParams,\r\n InformationSubjectsGetByIdQueryParams,\r\n InformationTypeModel,\r\n InformationTypesGetAllQueryParams,\r\n InformationTypesGetByIdPathParams,\r\n InformationTypesGetByIdQueryParams,\r\n InformationUnitModel,\r\n InformationUnitsGetAllQueryParams,\r\n InformationUnitsGetByIdPathParams,\r\n InformationUnitsGetByIdQueryParams,\r\n InformationUnitsLanguagesQueryParams,\r\n LearningsGetAllQueryParams,\r\n LearningsGetByIdPathParams,\r\n LearningsGetByIdQueryParams,\r\n LocationsGetAllQueryParams,\r\n LocationsGetByIdPathParams,\r\n LocationsGetByIdQueryParams,\r\n LubricantsGetAllQueryParams,\r\n LubricantsGetByIdPathParams,\r\n LubricantsGetByIdQueryParams,\r\n MaintenanceIntervalsGetAllQueryParams,\r\n MaintenanceIntervalsGetByIdPathParams,\r\n MaintenanceIntervalsGetByIdQueryParams,\r\n OperatingSuppliesGetAllQueryParams,\r\n OperatingSuppliesGetByIdPathParams,\r\n OperatingSuppliesGetByIdQueryParams,\r\n OrganizationsGetAllQueryParams,\r\n OrganizationsGetByIdPathParams,\r\n OrganizationsGetByIdQueryParams,\r\n PackageModel,\r\n PackagesCreateClientAppQueryParams,\r\n PackagesGetAllQueryParams,\r\n PackagesGetByIdPathParams,\r\n PackagesGetByIdQueryParams,\r\n PackagesLanguagesQueryParams,\r\n PartiesGetAllQueryParams,\r\n PartiesGetByIdPathParams,\r\n PartiesGetByIdQueryParams,\r\n PartyModel,\r\n PlanningDownTimeModel,\r\n PlanningMaintenanceIntervalModel,\r\n PlanningSetupTimeModel,\r\n PlanningTimeModel,\r\n PlanningTimesGetAllQueryParams,\r\n PlanningTimesGetByIdPathParams,\r\n PlanningTimesGetByIdQueryParams,\r\n PlanningWorkingTimeModel,\r\n ProcessesGetAllQueryParams,\r\n ProcessesGetByIdPathParams,\r\n ProcessesGetByIdQueryParams,\r\n ProductFeatureModel,\r\n ProductFeaturesGetAllQueryParams,\r\n ProductFeaturesGetByIdPathParams,\r\n ProductFeaturesGetByIdQueryParams,\r\n ProductFunctionModel,\r\n ProductFunctionsGetAllQueryParams,\r\n ProductFunctionsGetByIdPathParams,\r\n ProductFunctionsGetByIdQueryParams,\r\n ProductLcpAfterUseModel,\r\n ProductLcpDesignAndRealizationModel,\r\n ProductLcpPuttingToUseModel,\r\n ProductLcpUseModel,\r\n ProductLifeCyclePhaseModel,\r\n ProductLifeCyclePhasesGetAllQueryParams,\r\n ProductLifeCyclePhasesGetByIdPathParams,\r\n ProductLifeCyclePhasesGetByIdQueryParams,\r\n ProductMetadataGetAllQueryParams,\r\n ProductMetadataGetByIdPathParams,\r\n ProductMetadataGetByIdQueryParams,\r\n ProductMetadataModel,\r\n ProductPropertiesGetAllQueryParams,\r\n ProductPropertiesGetByIdPathParams,\r\n ProductPropertiesGetByIdQueryParams,\r\n ProductPropertyModel,\r\n ProductVariantModel,\r\n ProductVariantsGetAllQueryParams,\r\n ProductVariantsGetByIdPathParams,\r\n ProductVariantsGetByIdQueryParams,\r\n PuttingToUsesGetAllQueryParams,\r\n PuttingToUsesGetByIdPathParams,\r\n PuttingToUsesGetByIdQueryParams,\r\n QualificationModel,\r\n QualificationRoleModel,\r\n QualificationSkillLevelModel,\r\n QualificationsGetAllQueryParams,\r\n QualificationsGetByIdPathParams,\r\n QualificationsGetByIdQueryParams,\r\n ReferencesGetAllQueryParams,\r\n ReferencesGetByIdPathParams,\r\n ReferencesGetByIdQueryParams,\r\n RenditionModel,\r\n RenditionsGetAllQueryParams,\r\n RenditionsGetByIdPathParams,\r\n RenditionsGetByIdQueryParams,\r\n RenditionsGetWithBinaryWithBinaryPathPathParams,\r\n ResourcesDownloadResourcePathParams,\r\n ResourcesDownloadResourceWithBinaryPathPathParams,\r\n ResourcesPackagesGetPackagePathParams,\r\n ResourcesPackagesGetPackageQueryParams,\r\n ResourcesSubjectsGetSubjectFromPackagePathParams,\r\n ResourcesSubjectsGetSubjectFromPackageQueryParams,\r\n ResourcesViewViewResourcePathParams,\r\n ResourcesViewViewResourceWithBinaryPathPathParams,\r\n ResultContainerModel,\r\n RolesGetAllQueryParams,\r\n RolesGetByIdPathParams,\r\n RolesGetByIdQueryParams,\r\n SafetiesGetAllQueryParams,\r\n SafetiesGetByIdPathParams,\r\n SafetiesGetByIdQueryParams,\r\n SearchFacetsGetAllQueryParams,\r\n SetupTimesGetAllQueryParams,\r\n SetupTimesGetByIdPathParams,\r\n SetupTimesGetByIdQueryParams,\r\n SkillLevelsGetAllQueryParams,\r\n SkillLevelsGetByIdPathParams,\r\n SkillLevelsGetByIdQueryParams,\r\n SparQLExecuteSparQlPathParams,\r\n SparePartsGetAllQueryParams,\r\n SparePartsGetByIdPathParams,\r\n SparePartsGetByIdQueryParams,\r\n SuppliesGetAllQueryParams,\r\n SuppliesGetByIdPathParams,\r\n SuppliesGetByIdQueryParams,\r\n SupplyConsumableModel,\r\n SupplyHardwareToolModel,\r\n SupplyLubricantModel,\r\n SupplyModel,\r\n SupplyOperatingModel,\r\n SupplySparePartModel,\r\n TasksGetAllQueryParams,\r\n TasksGetByIdPathParams,\r\n TasksGetByIdQueryParams,\r\n TechnicalDataGetAllQueryParams,\r\n TechnicalDataGetByIdPathParams,\r\n TechnicalDataGetByIdQueryParams,\r\n TechnicalOverviewsGetAllQueryParams,\r\n TechnicalOverviewsGetByIdPathParams,\r\n TechnicalOverviewsGetByIdQueryParams,\r\n TopicModel,\r\n TopicTypeConceptModel,\r\n TopicTypeFormModel,\r\n TopicTypeLearningModel,\r\n TopicTypeModel,\r\n TopicTypeReferenceModel,\r\n TopicTypeTaskModel,\r\n TopicTypeTroubleShootingModel,\r\n TopicTypesGetAllQueryParams,\r\n TopicTypesGetByIdPathParams,\r\n TopicTypesGetByIdQueryParams,\r\n TopicsGetAllQueryParams,\r\n TopicsGetByIdPathParams,\r\n TopicsGetByIdQueryParams,\r\n TopicsLanguagesQueryParams,\r\n TroubleShootingsGetAllQueryParams,\r\n TroubleShootingsGetByIdPathParams,\r\n TroubleShootingsGetByIdQueryParams,\r\n UsesGetAllQueryParams,\r\n UsesGetByIdPathParams,\r\n UsesGetByIdQueryParams,\r\n VCardGroupModel,\r\n VCardIndividualModel,\r\n VCardLocationModel,\r\n VCardModel,\r\n VCardOrganizationModel,\r\n VCardsGetAllQueryParams,\r\n VCardsGetByIdPathParams,\r\n VCardsGetByIdQueryParams,\r\n WarningMessagesGetAllQueryParams,\r\n WarningMessagesGetByIdPathParams,\r\n WarningMessagesGetByIdQueryParams,\r\n WorkingTimesGetAllQueryParams,\r\n WorkingTimesGetByIdPathParams,\r\n WorkingTimesGetByIdQueryParams\r\n} from '@c-rex/interfaces';\r\n\r\n// ---------------------------------------------------------------------------\r\n// Request Functions\r\n// ---------------------------------------------------------------------------\r\n\r\n/** Get all entities by given criteria */\r\nexport const administrativeMetadataGetAllServer = async (query?: Partial<AdministrativeMetadataGetAllQueryParams>): Promise<ResultContainerModel<AdministrativeMetadataModel>> => {\r\n return baseServerRequest<ResultContainerModel<AdministrativeMetadataModel>>('AdministrativeMetadata', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const administrativeMetadataGetByIdServer = async (params: AdministrativeMetadataGetByIdPathParams, query?: Partial<AdministrativeMetadataGetByIdQueryParams>): Promise<AdministrativeMetadataModel> => {\r\n return baseServerRequest<AdministrativeMetadataModel>(`AdministrativeMetadata/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const afterUsesGetAllServer = async (query?: Partial<AfterUsesGetAllQueryParams>): Promise<ResultContainerModel<ProductLcpAfterUseModel>> => {\r\n return baseServerRequest<ResultContainerModel<ProductLcpAfterUseModel>>('AfterUses', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const afterUsesGetByIdServer = async (params: AfterUsesGetByIdPathParams, query?: Partial<AfterUsesGetByIdQueryParams>): Promise<ProductLcpAfterUseModel> => {\r\n return baseServerRequest<ProductLcpAfterUseModel>(`AfterUses/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const categoriesGetAllServer = async (query?: Partial<CategoriesGetAllQueryParams>): Promise<ResultContainerModel<CategoryModel>> => {\r\n return baseServerRequest<ResultContainerModel<CategoryModel>>('crex/v1/Categories', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const categoriesGetByIdServer = async (params: CategoriesGetByIdPathParams, query?: Partial<CategoriesGetByIdQueryParams>): Promise<CategoryModel> => {\r\n return baseServerRequest<CategoryModel>(`crex/v1/Categories/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const collectionsGetAllServer = async (query?: Partial<CollectionsGetAllQueryParams>): Promise<ResultContainerModel<InformationSubjectCollectionModel>> => {\r\n return baseServerRequest<ResultContainerModel<InformationSubjectCollectionModel>>('Collections', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const collectionsGetByIdServer = async (params: CollectionsGetByIdPathParams, query?: Partial<CollectionsGetByIdQueryParams>): Promise<InformationSubjectCollectionModel> => {\r\n return baseServerRequest<InformationSubjectCollectionModel>(`Collections/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const componentsGetAllServer = async (query?: Partial<ComponentsGetAllQueryParams>): Promise<ResultContainerModel<ComponentModel>> => {\r\n return baseServerRequest<ResultContainerModel<ComponentModel>>('Components', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const componentsGetByIdServer = async (params: ComponentsGetByIdPathParams, query?: Partial<ComponentsGetByIdQueryParams>): Promise<ComponentModel> => {\r\n return baseServerRequest<ComponentModel>(`Components/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const conceptsGetAllServer = async (query?: Partial<ConceptsGetAllQueryParams>): Promise<ResultContainerModel<TopicTypeConceptModel>> => {\r\n return baseServerRequest<ResultContainerModel<TopicTypeConceptModel>>('Concepts', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const conceptsGetByIdServer = async (params: ConceptsGetByIdPathParams, query?: Partial<ConceptsGetByIdQueryParams>): Promise<TopicTypeConceptModel> => {\r\n return baseServerRequest<TopicTypeConceptModel>(`Concepts/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const conformitiesGetAllServer = async (query?: Partial<ConformitiesGetAllQueryParams>): Promise<ResultContainerModel<InformationSubjectConformityModel>> => {\r\n return baseServerRequest<ResultContainerModel<InformationSubjectConformityModel>>('Conformities', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const conformitiesGetByIdServer = async (params: ConformitiesGetByIdPathParams, query?: Partial<ConformitiesGetByIdQueryParams>): Promise<InformationSubjectConformityModel> => {\r\n return baseServerRequest<InformationSubjectConformityModel>(`Conformities/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const consumablesGetAllServer = async (query?: Partial<ConsumablesGetAllQueryParams>): Promise<ResultContainerModel<SupplyConsumableModel>> => {\r\n return baseServerRequest<ResultContainerModel<SupplyConsumableModel>>('Consumables', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const consumablesGetByIdServer = async (params: ConsumablesGetByIdPathParams, query?: Partial<ConsumablesGetByIdQueryParams>): Promise<SupplyConsumableModel> => {\r\n return baseServerRequest<SupplyConsumableModel>(`Consumables/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const contentLifeCycleStatusGetAllServer = async (query?: Partial<ContentLifeCycleStatusGetAllQueryParams>): Promise<ResultContainerModel<ContentLifeCycleStatusModel>> => {\r\n return baseServerRequest<ResultContainerModel<ContentLifeCycleStatusModel>>('ContentLifeCycleStatus', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const contentLifeCycleStatusGetByIdServer = async (params: ContentLifeCycleStatusGetByIdPathParams, query?: Partial<ContentLifeCycleStatusGetByIdQueryParams>): Promise<ContentLifeCycleStatusModel> => {\r\n return baseServerRequest<ContentLifeCycleStatusModel>(`ContentLifeCycleStatus/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const designAndRealizationsGetAllServer = async (query?: Partial<DesignAndRealizationsGetAllQueryParams>): Promise<ResultContainerModel<ProductLcpDesignAndRealizationModel>> => {\r\n return baseServerRequest<ResultContainerModel<ProductLcpDesignAndRealizationModel>>('DesignAndRealizations', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const designAndRealizationsGetByIdServer = async (params: DesignAndRealizationsGetByIdPathParams, query?: Partial<DesignAndRealizationsGetByIdQueryParams>): Promise<ProductLcpDesignAndRealizationModel> => {\r\n return baseServerRequest<ProductLcpDesignAndRealizationModel>(`DesignAndRealizations/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const directoryNodesGetAllServer = async (query?: Partial<DirectoryNodesGetAllQueryParams>): Promise<ResultContainerModel<DirectoryNodeModel>> => {\r\n return baseServerRequest<ResultContainerModel<DirectoryNodeModel>>('DirectoryNodes', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const directoryNodesGetByIdServer = async (params: DirectoryNodesGetByIdPathParams, query?: Partial<DirectoryNodesGetByIdQueryParams>): Promise<DirectoryNodeModel> => {\r\n return baseServerRequest<DirectoryNodeModel>(`DirectoryNodes/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const directoryNodeTypesGetAllServer = async (query?: Partial<DirectoryNodeTypesGetAllQueryParams>): Promise<ResultContainerModel<DirectoryNodeTypeModel>> => {\r\n return baseServerRequest<ResultContainerModel<DirectoryNodeTypeModel>>('DirectoryNodeTypes', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const directoryNodeTypesGetByIdServer = async (params: DirectoryNodeTypesGetByIdPathParams, query?: Partial<DirectoryNodeTypesGetByIdQueryParams>): Promise<DirectoryNodeTypeModel> => {\r\n return baseServerRequest<DirectoryNodeTypeModel>(`DirectoryNodeTypes/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const documentationMetadataGetAllServer = async (query?: Partial<DocumentationMetadataGetAllQueryParams>): Promise<ResultContainerModel<DocumentationMetadataModel>> => {\r\n return baseServerRequest<ResultContainerModel<DocumentationMetadataModel>>('DocumentationMetadata', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const documentationMetadataGetByIdServer = async (params: DocumentationMetadataGetByIdPathParams, query?: Partial<DocumentationMetadataGetByIdQueryParams>): Promise<DocumentationMetadataModel> => {\r\n return baseServerRequest<DocumentationMetadataModel>(`DocumentationMetadata/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const documentsGetAllServer = async (query?: Partial<DocumentsGetAllQueryParams>): Promise<ResultContainerModel<DocumentModel>> => {\r\n return baseServerRequest<ResultContainerModel<DocumentModel>>('Documents', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const documentsGetByIdServer = async (params: DocumentsGetByIdPathParams, query?: Partial<DocumentsGetByIdQueryParams>): Promise<DocumentModel> => {\r\n return baseServerRequest<DocumentModel>(`Documents/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Languages used by indexed terms */\r\nexport const documentsLanguagesServer = async (query?: Partial<DocumentsLanguagesQueryParams>): Promise<unknown> => {\r\n return baseServerRequest<unknown>('Documents/Languages', query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const documentTypesGetAllServer = async (query?: Partial<DocumentTypesGetAllQueryParams>): Promise<ResultContainerModel<DocumentTypeModel>> => {\r\n return baseServerRequest<ResultContainerModel<DocumentTypeModel>>('DocumentTypes', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const documentTypesGetByIdServer = async (params: DocumentTypesGetByIdPathParams, query?: Partial<DocumentTypesGetByIdQueryParams>): Promise<DocumentTypeModel> => {\r\n return baseServerRequest<DocumentTypeModel>(`DocumentTypes/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const domainEntitiesGetAllServer = async (query?: Partial<DomainEntitiesGetAllQueryParams>): Promise<ResultContainerModel<DomainEntityModel>> => {\r\n return baseServerRequest<ResultContainerModel<DomainEntityModel>>('DomainEntities', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const domainEntitiesGetByIdServer = async (params: DomainEntitiesGetByIdPathParams, query?: Partial<DomainEntitiesGetByIdQueryParams>): Promise<DomainEntityModel> => {\r\n return baseServerRequest<DomainEntityModel>(`DomainEntities/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const downTimesGetAllServer = async (query?: Partial<DownTimesGetAllQueryParams>): Promise<ResultContainerModel<PlanningDownTimeModel>> => {\r\n return baseServerRequest<ResultContainerModel<PlanningDownTimeModel>>('DownTimes', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const downTimesGetByIdServer = async (params: DownTimesGetByIdPathParams, query?: Partial<DownTimesGetByIdQueryParams>): Promise<PlanningDownTimeModel> => {\r\n return baseServerRequest<PlanningDownTimeModel>(`DownTimes/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const eventsGetAllServer = async (query?: Partial<EventsGetAllQueryParams>): Promise<ResultContainerModel<EventModel>> => {\r\n return baseServerRequest<ResultContainerModel<EventModel>>('Events', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const eventsGetByIdServer = async (params: EventsGetByIdPathParams, query?: Partial<EventsGetByIdQueryParams>): Promise<EventModel> => {\r\n return baseServerRequest<EventModel>(`Events/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const formalitiesGetAllServer = async (query?: Partial<FormalitiesGetAllQueryParams>): Promise<ResultContainerModel<InformationSubjectFormalityModel>> => {\r\n return baseServerRequest<ResultContainerModel<InformationSubjectFormalityModel>>('Formalities', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const formalitiesGetByIdServer = async (params: FormalitiesGetByIdPathParams, query?: Partial<FormalitiesGetByIdQueryParams>): Promise<InformationSubjectFormalityModel> => {\r\n return baseServerRequest<InformationSubjectFormalityModel>(`Formalities/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const formsGetAllServer = async (query?: Partial<FormsGetAllQueryParams>): Promise<ResultContainerModel<TopicTypeFormModel>> => {\r\n return baseServerRequest<ResultContainerModel<TopicTypeFormModel>>('Forms', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const formsGetByIdServer = async (params: FormsGetByIdPathParams, query?: Partial<FormsGetByIdQueryParams>): Promise<TopicTypeFormModel> => {\r\n return baseServerRequest<TopicTypeFormModel>(`Forms/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const fragmentsGetAllServer = async (query?: Partial<FragmentsGetAllQueryParams>): Promise<ResultContainerModel<FragmentModel>> => {\r\n return baseServerRequest<ResultContainerModel<FragmentModel>>('Fragments', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const fragmentsGetByIdServer = async (params: FragmentsGetByIdPathParams, query?: Partial<FragmentsGetByIdQueryParams>): Promise<FragmentModel> => {\r\n return baseServerRequest<FragmentModel>(`Fragments/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Languages used by indexed terms */\r\nexport const fragmentsLanguagesServer = async (query?: Partial<FragmentsLanguagesQueryParams>): Promise<unknown> => {\r\n return baseServerRequest<unknown>('Fragments/Languages', query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const functionalitiesGetAllServer = async (query?: Partial<FunctionalitiesGetAllQueryParams>): Promise<ResultContainerModel<InformationSubjectFunctionalityModel>> => {\r\n return baseServerRequest<ResultContainerModel<InformationSubjectFunctionalityModel>>('Functionalities', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const functionalitiesGetByIdServer = async (params: FunctionalitiesGetByIdPathParams, query?: Partial<FunctionalitiesGetByIdQueryParams>): Promise<InformationSubjectFunctionalityModel> => {\r\n return baseServerRequest<InformationSubjectFunctionalityModel>(`Functionalities/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const functionalMetadatasGetAllServer = async (query?: Partial<FunctionalMetadatasGetAllQueryParams>): Promise<ResultContainerModel<FunctionalMetadataModel>> => {\r\n return baseServerRequest<ResultContainerModel<FunctionalMetadataModel>>('FunctionalMetadatas', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const functionalMetadatasGetByIdServer = async (params: FunctionalMetadatasGetByIdPathParams, query?: Partial<FunctionalMetadatasGetByIdQueryParams>): Promise<FunctionalMetadataModel> => {\r\n return baseServerRequest<FunctionalMetadataModel>(`FunctionalMetadatas/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const groupsGetAllServer = async (query?: Partial<GroupsGetAllQueryParams>): Promise<ResultContainerModel<VCardGroupModel>> => {\r\n return baseServerRequest<ResultContainerModel<VCardGroupModel>>('vcard/v1/Groups', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const groupsGetByIdServer = async (params: GroupsGetByIdPathParams, query?: Partial<GroupsGetByIdQueryParams>): Promise<VCardGroupModel> => {\r\n return baseServerRequest<VCardGroupModel>(`vcard/v1/Groups/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const hardwareToolsGetAllServer = async (query?: Partial<HardwareToolsGetAllQueryParams>): Promise<ResultContainerModel<SupplyHardwareToolModel>> => {\r\n return baseServerRequest<ResultContainerModel<SupplyHardwareToolModel>>('HardwareTools', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const hardwareToolsGetByIdServer = async (params: HardwareToolsGetByIdPathParams, query?: Partial<HardwareToolsGetByIdQueryParams>): Promise<SupplyHardwareToolModel> => {\r\n return baseServerRequest<SupplyHardwareToolModel>(`HardwareTools/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const identitiesGetAllServer = async (query?: Partial<IdentitiesGetAllQueryParams>): Promise<ResultContainerModel<IdentityModel>> => {\r\n return baseServerRequest<ResultContainerModel<IdentityModel>>('Identities', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const identitiesGetByIdServer = async (params: IdentitiesGetByIdPathParams, query?: Partial<IdentitiesGetByIdQueryParams>): Promise<IdentityModel> => {\r\n return baseServerRequest<IdentityModel>(`Identities/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const identityDomainsGetAllServer = async (query?: Partial<IdentityDomainsGetAllQueryParams>): Promise<ResultContainerModel<IdentityDomainModel>> => {\r\n return baseServerRequest<ResultContainerModel<IdentityDomainModel>>('IdentityDomains', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const identityDomainsGetByIdServer = async (params: IdentityDomainsGetByIdPathParams, query?: Partial<IdentityDomainsGetByIdQueryParams>): Promise<IdentityDomainModel> => {\r\n return baseServerRequest<IdentityDomainModel>(`IdentityDomains/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const individualsGetAllServer = async (query?: Partial<IndividualsGetAllQueryParams>): Promise<ResultContainerModel<VCardIndividualModel>> => {\r\n return baseServerRequest<ResultContainerModel<VCardIndividualModel>>('vcard/v1/Individuals', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const individualsGetByIdServer = async (params: IndividualsGetByIdPathParams, query?: Partial<IndividualsGetByIdQueryParams>): Promise<VCardIndividualModel> => {\r\n return baseServerRequest<VCardIndividualModel>(`vcard/v1/Individuals/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const informationObjectsGetAllServer = async (query?: Partial<InformationObjectsGetAllQueryParams>): Promise<ResultContainerModel<InformationObjectModel>> => {\r\n return baseServerRequest<ResultContainerModel<InformationObjectModel>>('InformationObjects', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const informationObjectsGetByIdServer = async (params: InformationObjectsGetByIdPathParams, query?: Partial<InformationObjectsGetByIdQueryParams>): Promise<InformationObjectModel> => {\r\n return baseServerRequest<InformationObjectModel>(`InformationObjects/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const informationSubjectsGetAllServer = async (query?: Partial<InformationSubjectsGetAllQueryParams>): Promise<ResultContainerModel<InformationSubjectModel>> => {\r\n return baseServerRequest<ResultContainerModel<InformationSubjectModel>>('InformationSubjects', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const informationSubjectsGetByIdServer = async (params: InformationSubjectsGetByIdPathParams, query?: Partial<InformationSubjectsGetByIdQueryParams>): Promise<InformationSubjectModel> => {\r\n return baseServerRequest<InformationSubjectModel>(`InformationSubjects/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const informationTypesGetAllServer = async (query?: Partial<InformationTypesGetAllQueryParams>): Promise<ResultContainerModel<InformationTypeModel>> => {\r\n return baseServerRequest<ResultContainerModel<InformationTypeModel>>('InformationTypes', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const informationTypesGetByIdServer = async (params: InformationTypesGetByIdPathParams, query?: Partial<InformationTypesGetByIdQueryParams>): Promise<InformationTypeModel> => {\r\n return baseServerRequest<InformationTypeModel>(`InformationTypes/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const informationUnitsGetAllServer = async (query?: Partial<InformationUnitsGetAllQueryParams>): Promise<ResultContainerModel<InformationUnitModel>> => {\r\n return baseServerRequest<ResultContainerModel<InformationUnitModel>>('InformationUnits', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const informationUnitsGetByIdServer = async (params: InformationUnitsGetByIdPathParams, query?: Partial<InformationUnitsGetByIdQueryParams>): Promise<InformationUnitModel> => {\r\n return baseServerRequest<InformationUnitModel>(`InformationUnits/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Languages used by indexed terms */\r\nexport const informationUnitsLanguagesServer = async (query?: Partial<InformationUnitsLanguagesQueryParams>): Promise<unknown> => {\r\n return baseServerRequest<unknown>('InformationUnits/Languages', query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const learningsGetAllServer = async (query?: Partial<LearningsGetAllQueryParams>): Promise<ResultContainerModel<TopicTypeLearningModel>> => {\r\n return baseServerRequest<ResultContainerModel<TopicTypeLearningModel>>('Learnings', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const learningsGetByIdServer = async (params: LearningsGetByIdPathParams, query?: Partial<LearningsGetByIdQueryParams>): Promise<TopicTypeLearningModel> => {\r\n return baseServerRequest<TopicTypeLearningModel>(`Learnings/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const locationsGetAllServer = async (query?: Partial<LocationsGetAllQueryParams>): Promise<ResultContainerModel<VCardLocationModel>> => {\r\n return baseServerRequest<ResultContainerModel<VCardLocationModel>>('vcard/v1/Locations', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const locationsGetByIdServer = async (params: LocationsGetByIdPathParams, query?: Partial<LocationsGetByIdQueryParams>): Promise<VCardLocationModel> => {\r\n return baseServerRequest<VCardLocationModel>(`vcard/v1/Locations/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const lubricantsGetAllServer = async (query?: Partial<LubricantsGetAllQueryParams>): Promise<ResultContainerModel<SupplyLubricantModel>> => {\r\n return baseServerRequest<ResultContainerModel<SupplyLubricantModel>>('Lubricants', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const lubricantsGetByIdServer = async (params: LubricantsGetByIdPathParams, query?: Partial<LubricantsGetByIdQueryParams>): Promise<SupplyLubricantModel> => {\r\n return baseServerRequest<SupplyLubricantModel>(`Lubricants/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const maintenanceIntervalsGetAllServer = async (query?: Partial<MaintenanceIntervalsGetAllQueryParams>): Promise<ResultContainerModel<PlanningMaintenanceIntervalModel>> => {\r\n return baseServerRequest<ResultContainerModel<PlanningMaintenanceIntervalModel>>('MaintenanceIntervals', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const maintenanceIntervalsGetByIdServer = async (params: MaintenanceIntervalsGetByIdPathParams, query?: Partial<MaintenanceIntervalsGetByIdQueryParams>): Promise<PlanningMaintenanceIntervalModel> => {\r\n return baseServerRequest<PlanningMaintenanceIntervalModel>(`MaintenanceIntervals/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const operatingSuppliesGetAllServer = async (query?: Partial<OperatingSuppliesGetAllQueryParams>): Promise<ResultContainerModel<SupplyOperatingModel>> => {\r\n return baseServerRequest<ResultContainerModel<SupplyOperatingModel>>('OperatingSupplies', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const operatingSuppliesGetByIdServer = async (params: OperatingSuppliesGetByIdPathParams, query?: Partial<OperatingSuppliesGetByIdQueryParams>): Promise<SupplyOperatingModel> => {\r\n return baseServerRequest<SupplyOperatingModel>(`OperatingSupplies/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const organizationsGetAllServer = async (query?: Partial<OrganizationsGetAllQueryParams>): Promise<ResultContainerModel<VCardOrganizationModel>> => {\r\n return baseServerRequest<ResultContainerModel<VCardOrganizationModel>>('vcard/v1/Organizations', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const organizationsGetByIdServer = async (params: OrganizationsGetByIdPathParams, query?: Partial<OrganizationsGetByIdQueryParams>): Promise<VCardOrganizationModel> => {\r\n return baseServerRequest<VCardOrganizationModel>(`vcard/v1/Organizations/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Create an Offline Client App from the given Repositories */\r\nexport const packagesCreateClientAppServer = async (query?: Partial<PackagesCreateClientAppQueryParams>): Promise<unknown> => {\r\n return baseServerRequest<unknown>('ids/v1/Packages/CreateClientApp', query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const packagesGetAllServer = async (query?: Partial<PackagesGetAllQueryParams>): Promise<ResultContainerModel<PackageModel>> => {\r\n return baseServerRequest<ResultContainerModel<PackageModel>>('Packages', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const packagesGetByIdServer = async (params: PackagesGetByIdPathParams, query?: Partial<PackagesGetByIdQueryParams>): Promise<PackageModel> => {\r\n return baseServerRequest<PackageModel>(`Packages/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Languages used by indexed terms */\r\nexport const packagesLanguagesServer = async (query?: Partial<PackagesLanguagesQueryParams>): Promise<unknown> => {\r\n return baseServerRequest<unknown>('Packages/Languages', query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const partiesGetAllServer = async (query?: Partial<PartiesGetAllQueryParams>): Promise<ResultContainerModel<PartyModel>> => {\r\n return baseServerRequest<ResultContainerModel<PartyModel>>('Parties', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const partiesGetByIdServer = async (params: PartiesGetByIdPathParams, query?: Partial<PartiesGetByIdQueryParams>): Promise<PartyModel> => {\r\n return baseServerRequest<PartyModel>(`Parties/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const planningTimesGetAllServer = async (query?: Partial<PlanningTimesGetAllQueryParams>): Promise<ResultContainerModel<PlanningTimeModel>> => {\r\n return baseServerRequest<ResultContainerModel<PlanningTimeModel>>('PlanningTimes', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const planningTimesGetByIdServer = async (params: PlanningTimesGetByIdPathParams, query?: Partial<PlanningTimesGetByIdQueryParams>): Promise<PlanningTimeModel> => {\r\n return baseServerRequest<PlanningTimeModel>(`PlanningTimes/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const processesGetAllServer = async (query?: Partial<ProcessesGetAllQueryParams>): Promise<ResultContainerModel<InformationSubjectProcessModel>> => {\r\n return baseServerRequest<ResultContainerModel<InformationSubjectProcessModel>>('Processes', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const processesGetByIdServer = async (params: ProcessesGetByIdPathParams, query?: Partial<ProcessesGetByIdQueryParams>): Promise<InformationSubjectProcessModel> => {\r\n return baseServerRequest<InformationSubjectProcessModel>(`Processes/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const productFeaturesGetAllServer = async (query?: Partial<ProductFeaturesGetAllQueryParams>): Promise<ResultContainerModel<ProductFeatureModel>> => {\r\n return baseServerRequest<ResultContainerModel<ProductFeatureModel>>('ProductFeatures', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const productFeaturesGetByIdServer = async (params: ProductFeaturesGetByIdPathParams, query?: Partial<ProductFeaturesGetByIdQueryParams>): Promise<ProductFeatureModel> => {\r\n return baseServerRequest<ProductFeatureModel>(`ProductFeatures/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const productFunctionsGetAllServer = async (query?: Partial<ProductFunctionsGetAllQueryParams>): Promise<ResultContainerModel<ProductFunctionModel>> => {\r\n return baseServerRequest<ResultContainerModel<ProductFunctionModel>>('ProductFunctions', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const productFunctionsGetByIdServer = async (params: ProductFunctionsGetByIdPathParams, query?: Partial<ProductFunctionsGetByIdQueryParams>): Promise<ProductFunctionModel> => {\r\n return baseServerRequest<ProductFunctionModel>(`ProductFunctions/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const productLifeCyclePhasesGetAllServer = async (query?: Partial<ProductLifeCyclePhasesGetAllQueryParams>): Promise<ResultContainerModel<ProductLifeCyclePhaseModel>> => {\r\n return baseServerRequest<ResultContainerModel<ProductLifeCyclePhaseModel>>('ProductLifeCyclePhases', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const productLifeCyclePhasesGetByIdServer = async (params: ProductLifeCyclePhasesGetByIdPathParams, query?: Partial<ProductLifeCyclePhasesGetByIdQueryParams>): Promise<ProductLifeCyclePhaseModel> => {\r\n return baseServerRequest<ProductLifeCyclePhaseModel>(`ProductLifeCyclePhases/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const productMetadataGetAllServer = async (query?: Partial<ProductMetadataGetAllQueryParams>): Promise<ResultContainerModel<ProductMetadataModel>> => {\r\n return baseServerRequest<ResultContainerModel<ProductMetadataModel>>('ProductMetadata', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const productMetadataGetByIdServer = async (params: ProductMetadataGetByIdPathParams, query?: Partial<ProductMetadataGetByIdQueryParams>): Promise<ProductMetadataModel> => {\r\n return baseServerRequest<ProductMetadataModel>(`ProductMetadata/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const productPropertiesGetAllServer = async (query?: Partial<ProductPropertiesGetAllQueryParams>): Promise<ResultContainerModel<ProductPropertyModel>> => {\r\n return baseServerRequest<ResultContainerModel<ProductPropertyModel>>('ProductProperties', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const productPropertiesGetByIdServer = async (params: ProductPropertiesGetByIdPathParams, query?: Partial<ProductPropertiesGetByIdQueryParams>): Promise<ProductPropertyModel> => {\r\n return baseServerRequest<ProductPropertyModel>(`ProductProperties/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const productVariantsGetAllServer = async (query?: Partial<ProductVariantsGetAllQueryParams>): Promise<ResultContainerModel<ProductVariantModel>> => {\r\n return baseServerRequest<ResultContainerModel<ProductVariantModel>>('ProductVariants', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const productVariantsGetByIdServer = async (params: ProductVariantsGetByIdPathParams, query?: Partial<ProductVariantsGetByIdQueryParams>): Promise<ProductVariantModel> => {\r\n return baseServerRequest<ProductVariantModel>(`ProductVariants/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const puttingToUsesGetAllServer = async (query?: Partial<PuttingToUsesGetAllQueryParams>): Promise<ResultContainerModel<ProductLcpPuttingToUseModel>> => {\r\n return baseServerRequest<ResultContainerModel<ProductLcpPuttingToUseModel>>('PuttingToUses', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const puttingToUsesGetByIdServer = async (params: PuttingToUsesGetByIdPathParams, query?: Partial<PuttingToUsesGetByIdQueryParams>): Promise<ProductLcpPuttingToUseModel> => {\r\n return baseServerRequest<ProductLcpPuttingToUseModel>(`PuttingToUses/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const qualificationsGetAllServer = async (query?: Partial<QualificationsGetAllQueryParams>): Promise<ResultContainerModel<QualificationModel>> => {\r\n return baseServerRequest<ResultContainerModel<QualificationModel>>('Qualifications', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const qualificationsGetByIdServer = async (params: QualificationsGetByIdPathParams, query?: Partial<QualificationsGetByIdQueryParams>): Promise<QualificationModel> => {\r\n return baseServerRequest<QualificationModel>(`Qualifications/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const referencesGetAllServer = async (query?: Partial<ReferencesGetAllQueryParams>): Promise<ResultContainerModel<TopicTypeReferenceModel>> => {\r\n return baseServerRequest<ResultContainerModel<TopicTypeReferenceModel>>('References', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const referencesGetByIdServer = async (params: ReferencesGetByIdPathParams, query?: Partial<ReferencesGetByIdQueryParams>): Promise<TopicTypeReferenceModel> => {\r\n return baseServerRequest<TopicTypeReferenceModel>(`References/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const renditionsGetAllServer = async (query?: Partial<RenditionsGetAllQueryParams>): Promise<ResultContainerModel<RenditionModel>> => {\r\n return baseServerRequest<ResultContainerModel<RenditionModel>>('Renditions', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const renditionsGetByIdServer = async (params: RenditionsGetByIdPathParams, query?: Partial<RenditionsGetByIdQueryParams>): Promise<RenditionModel> => {\r\n return baseServerRequest<RenditionModel>(`Renditions/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get the rendition for the given url */\r\nexport const renditionsGetWithBinaryWithBinaryPathServer = async (params: RenditionsGetWithBinaryWithBinaryPathPathParams): Promise<RenditionModel> => {\r\n return baseServerRequest<RenditionModel>(`Renditions/${encodeURIComponent(String(params.id))}/${encodeURIComponent(String(params.binaryPath))}`);\r\n};\r\n\r\n/** Get the binary stream */\r\nexport const resourcesDownloadResourceServer = async (params: ResourcesDownloadResourcePathParams): Promise<unknown> => {\r\n return baseServerRequest<unknown>(`ids/v1/Resources/${encodeURIComponent(String(params.renditionId))}`);\r\n};\r\n\r\n/** Get the binary stream */\r\nexport const resourcesDownloadResourceWithBinaryPathServer = async (params: ResourcesDownloadResourceWithBinaryPathPathParams): Promise<unknown> => {\r\n return baseServerRequest<unknown>(`ids/v1/Resources/${encodeURIComponent(String(params.renditionId))}/${encodeURIComponent(String(params.binaryPath))}`);\r\n};\r\n\r\n/** Query package with id\r\ndefault mediatypes application/json\r\nchange mediatype by Adding accept-Header (like application/rdf+xml application/rdf+json, and more) */\r\nexport const resourcesGetPackageServer = async (params: ResourcesPackagesGetPackagePathParams, query?: Partial<ResourcesPackagesGetPackageQueryParams>): Promise<unknown> => {\r\n return baseServerRequest<unknown>(`Resources/packages/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Request any resource in tiple store from packages */\r\nexport const resourcesGetSubjectFromPackageServer = async (params: ResourcesSubjectsGetSubjectFromPackagePathParams, query?: Partial<ResourcesSubjectsGetSubjectFromPackageQueryParams>): Promise<unknown> => {\r\n return baseServerRequest<unknown>(`Resources/subjects/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get the binary stream */\r\nexport const resourcesViewResourceServer = async (params: ResourcesViewViewResourcePathParams): Promise<unknown> => {\r\n return baseServerRequest<unknown>(`ids/v1/Resources/view/${encodeURIComponent(String(params.renditionId))}`);\r\n};\r\n\r\n/** Get the binary stream */\r\nexport const resourcesViewResourceWithBinaryPathServer = async (params: ResourcesViewViewResourceWithBinaryPathPathParams): Promise<unknown> => {\r\n return baseServerRequest<unknown>(`ids/v1/Resources/view/${encodeURIComponent(String(params.renditionId))}/${encodeURIComponent(String(params.binaryPath))}`);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const rolesGetAllServer = async (query?: Partial<RolesGetAllQueryParams>): Promise<ResultContainerModel<QualificationRoleModel>> => {\r\n return baseServerRequest<ResultContainerModel<QualificationRoleModel>>('Roles', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const rolesGetByIdServer = async (params: RolesGetByIdPathParams, query?: Partial<RolesGetByIdQueryParams>): Promise<QualificationRoleModel> => {\r\n return baseServerRequest<QualificationRoleModel>(`Roles/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const safetiesGetAllServer = async (query?: Partial<SafetiesGetAllQueryParams>): Promise<ResultContainerModel<InformationSubjectSafetyModel>> => {\r\n return baseServerRequest<ResultContainerModel<InformationSubjectSafetyModel>>('Safeties', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const safetiesGetByIdServer = async (params: SafetiesGetByIdPathParams, query?: Partial<SafetiesGetByIdQueryParams>): Promise<InformationSubjectSafetyModel> => {\r\n return baseServerRequest<InformationSubjectSafetyModel>(`Safeties/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const searchGetAllServer = async (query?: Partial<SearchFacetsGetAllQueryParams>): Promise<ResultContainerModel<unknown>> => {\r\n return baseServerRequest<ResultContainerModel<unknown>>('ids/v1/Search/Facets', query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const setupTimesGetAllServer = async (query?: Partial<SetupTimesGetAllQueryParams>): Promise<ResultContainerModel<PlanningSetupTimeModel>> => {\r\n return baseServerRequest<ResultContainerModel<PlanningSetupTimeModel>>('SetupTimes', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const setupTimesGetByIdServer = async (params: SetupTimesGetByIdPathParams, query?: Partial<SetupTimesGetByIdQueryParams>): Promise<PlanningSetupTimeModel> => {\r\n return baseServerRequest<PlanningSetupTimeModel>(`SetupTimes/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const skillLevelsGetAllServer = async (query?: Partial<SkillLevelsGetAllQueryParams>): Promise<ResultContainerModel<QualificationSkillLevelModel>> => {\r\n return baseServerRequest<ResultContainerModel<QualificationSkillLevelModel>>('SkillLevels', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const skillLevelsGetByIdServer = async (params: SkillLevelsGetByIdPathParams, query?: Partial<SkillLevelsGetByIdQueryParams>): Promise<QualificationSkillLevelModel> => {\r\n return baseServerRequest<QualificationSkillLevelModel>(`SkillLevels/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const sparePartsGetAllServer = async (query?: Partial<SparePartsGetAllQueryParams>): Promise<ResultContainerModel<SupplySparePartModel>> => {\r\n return baseServerRequest<ResultContainerModel<SupplySparePartModel>>('SpareParts', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const sparePartsGetByIdServer = async (params: SparePartsGetByIdPathParams, query?: Partial<SparePartsGetByIdQueryParams>): Promise<SupplySparePartModel> => {\r\n return baseServerRequest<SupplySparePartModel>(`SpareParts/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Query Iirds storage by SparQL */\r\nexport const sparQLExecuteSparQlServer = async (params: SparQLExecuteSparQlPathParams): Promise<Record<string, string>[]> => {\r\n return baseServerRequest<Record<string, string>[]>(`SparQL/${encodeURIComponent(String(params.query))}`);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const suppliesGetAllServer = async (query?: Partial<SuppliesGetAllQueryParams>): Promise<ResultContainerModel<SupplyModel>> => {\r\n return baseServerRequest<ResultContainerModel<SupplyModel>>('Supplies', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const suppliesGetByIdServer = async (params: SuppliesGetByIdPathParams, query?: Partial<SuppliesGetByIdQueryParams>): Promise<SupplyModel> => {\r\n return baseServerRequest<SupplyModel>(`Supplies/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const tasksGetAllServer = async (query?: Partial<TasksGetAllQueryParams>): Promise<ResultContainerModel<TopicTypeTaskModel>> => {\r\n return baseServerRequest<ResultContainerModel<TopicTypeTaskModel>>('Tasks', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const tasksGetByIdServer = async (params: TasksGetByIdPathParams, query?: Partial<TasksGetByIdQueryParams>): Promise<TopicTypeTaskModel> => {\r\n return baseServerRequest<TopicTypeTaskModel>(`Tasks/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const technicalDataGetAllServer = async (query?: Partial<TechnicalDataGetAllQueryParams>): Promise<ResultContainerModel<InformationSubjectTechnicalDataModel>> => {\r\n return baseServerRequest<ResultContainerModel<InformationSubjectTechnicalDataModel>>('TechnicalData', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const technicalDataGetByIdServer = async (params: TechnicalDataGetByIdPathParams, query?: Partial<TechnicalDataGetByIdQueryParams>): Promise<InformationSubjectTechnicalDataModel> => {\r\n return baseServerRequest<InformationSubjectTechnicalDataModel>(`TechnicalData/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const technicalOverviewsGetAllServer = async (query?: Partial<TechnicalOverviewsGetAllQueryParams>): Promise<ResultContainerModel<InformationSubjectTechnicalOverviewModel>> => {\r\n return baseServerRequest<ResultContainerModel<InformationSubjectTechnicalOverviewModel>>('TechnicalOverviews', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const technicalOverviewsGetByIdServer = async (params: TechnicalOverviewsGetByIdPathParams, query?: Partial<TechnicalOverviewsGetByIdQueryParams>): Promise<InformationSubjectTechnicalOverviewModel> => {\r\n return baseServerRequest<InformationSubjectTechnicalOverviewModel>(`TechnicalOverviews/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const topicsGetAllServer = async (query?: Partial<TopicsGetAllQueryParams>): Promise<ResultContainerModel<TopicModel>> => {\r\n return baseServerRequest<ResultContainerModel<TopicModel>>('Topics', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const topicsGetByIdServer = async (params: TopicsGetByIdPathParams, query?: Partial<TopicsGetByIdQueryParams>): Promise<TopicModel> => {\r\n return baseServerRequest<TopicModel>(`Topics/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Languages used by indexed terms */\r\nexport const topicsLanguagesServer = async (query?: Partial<TopicsLanguagesQueryParams>): Promise<unknown> => {\r\n return baseServerRequest<unknown>('Topics/Languages', query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const topicTypesGetAllServer = async (query?: Partial<TopicTypesGetAllQueryParams>): Promise<ResultContainerModel<TopicTypeModel>> => {\r\n return baseServerRequest<ResultContainerModel<TopicTypeModel>>('TopicTypes', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const topicTypesGetByIdServer = async (params: TopicTypesGetByIdPathParams, query?: Partial<TopicTypesGetByIdQueryParams>): Promise<TopicTypeModel> => {\r\n return baseServerRequest<TopicTypeModel>(`TopicTypes/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const troubleShootingsGetAllServer = async (query?: Partial<TroubleShootingsGetAllQueryParams>): Promise<ResultContainerModel<TopicTypeTroubleShootingModel>> => {\r\n return baseServerRequest<ResultContainerModel<TopicTypeTroubleShootingModel>>('TroubleShootings', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const troubleShootingsGetByIdServer = async (params: TroubleShootingsGetByIdPathParams, query?: Partial<TroubleShootingsGetByIdQueryParams>): Promise<TopicTypeTroubleShootingModel> => {\r\n return baseServerRequest<TopicTypeTroubleShootingModel>(`TroubleShootings/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const usesGetAllServer = async (query?: Partial<UsesGetAllQueryParams>): Promise<ResultContainerModel<ProductLcpUseModel>> => {\r\n return baseServerRequest<ResultContainerModel<ProductLcpUseModel>>('Uses', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const usesGetByIdServer = async (params: UsesGetByIdPathParams, query?: Partial<UsesGetByIdQueryParams>): Promise<ProductLcpUseModel> => {\r\n return baseServerRequest<ProductLcpUseModel>(`Uses/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const vCardsGetAllServer = async (query?: Partial<VCardsGetAllQueryParams>): Promise<ResultContainerModel<VCardModel>> => {\r\n return baseServerRequest<ResultContainerModel<VCardModel>>('vcard/v1/VCards', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const vCardsGetByIdServer = async (params: VCardsGetByIdPathParams, query?: Partial<VCardsGetByIdQueryParams>): Promise<VCardModel> => {\r\n return baseServerRequest<VCardModel>(`vcard/v1/VCards/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const warningMessagesGetAllServer = async (query?: Partial<WarningMessagesGetAllQueryParams>): Promise<ResultContainerModel<InformationSubjectSafetyWarningMessageModel>> => {\r\n return baseServerRequest<ResultContainerModel<InformationSubjectSafetyWarningMessageModel>>('WarningMessages', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const warningMessagesGetByIdServer = async (params: WarningMessagesGetByIdPathParams, query?: Partial<WarningMessagesGetByIdQueryParams>): Promise<InformationSubjectSafetyWarningMessageModel> => {\r\n return baseServerRequest<InformationSubjectSafetyWarningMessageModel>(`WarningMessages/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n\r\n/** Get all entities by given criteria */\r\nexport const workingTimesGetAllServer = async (query?: Partial<WorkingTimesGetAllQueryParams>): Promise<ResultContainerModel<PlanningWorkingTimeModel>> => {\r\n return baseServerRequest<ResultContainerModel<PlanningWorkingTimeModel>>('WorkingTimes', query);\r\n};\r\n\r\n/** Get an entity by its id */\r\nexport const workingTimesGetByIdServer = async (params: WorkingTimesGetByIdPathParams, query?: Partial<WorkingTimesGetByIdQueryParams>): Promise<PlanningWorkingTimeModel> => {\r\n return baseServerRequest<PlanningWorkingTimeModel>(`WorkingTimes/${encodeURIComponent(String(params.id))}`, query);\r\n};\r\n","import { CrexSDK } from \"@c-rex/core/sdk\";\r\nimport { UI_LANG_KEY } from \"@c-rex/constants\";\r\nimport type { ConfigInterface, LiteralModel, VCardImageModel, VCardInfoModel } from \"@c-rex/interfaces\";\r\nimport { cookies } from \"next/headers\";\r\n\r\nexport type ContactEntry = {\r\n label: string;\r\n value: string;\r\n href?: string;\r\n};\r\n\r\nexport type BaseVCardProfile = {\r\n id?: string;\r\n displayName: string;\r\n logoSrc: string;\r\n addressLines: string[];\r\n email?: string;\r\n telephoneEntries: ContactEntry[];\r\n website?: string;\r\n};\r\n\r\nexport type ResolvedSocialLink = {\r\n label: string;\r\n href: string;\r\n provider: string;\r\n};\r\n\r\ntype VCardEntityLike = {\r\n id?: string | null;\r\n fullName?: string | null;\r\n organizationName?: string | null;\r\n logos?: VCardImageModel[] | null;\r\n photos?: VCardImageModel[] | null;\r\n emails?: VCardInfoModel[] | null;\r\n telephones?: VCardInfoModel[] | null;\r\n addresses?: VCardInfoModel[] | null;\r\n urls?: VCardInfoModel[] | null;\r\n};\r\n\r\nexport const DEFAULT_LOGO_SRC = \"/img/logo.png\";\r\n\r\nconst normalizePathLikeImageSource = (value?: string | null): string | undefined => {\r\n if (!value) return undefined;\r\n const trimmed = value.trim();\r\n if (!trimmed) return undefined;\r\n\r\n if (\r\n trimmed.startsWith(\"data:\") ||\r\n trimmed.startsWith(\"http://\") ||\r\n trimmed.startsWith(\"https://\") ||\r\n trimmed.startsWith(\"/\")\r\n ) {\r\n return trimmed;\r\n }\r\n\r\n return `/${trimmed}`;\r\n};\r\n\r\nexport const resolveLogoSource = (images: VCardImageModel[] = []): string | undefined => {\r\n const sourceFirst = images\r\n .map((image) => normalizePathLikeImageSource(image.source))\r\n .find((value): value is string => Boolean(value));\r\n\r\n if (!sourceFirst) {\r\n console.warn(\"[VCardProfile] No usable VCARD image source found. Ignoring 'value' until IDS provides absolute resource URLs.\");\r\n }\r\n\r\n return sourceFirst;\r\n};\r\n\r\nexport const normalizeHref = (value?: string | null): string | undefined => {\r\n if (!value) return undefined;\r\n const trimmed = value.trim();\r\n if (!trimmed) return undefined;\r\n\r\n if (trimmed.startsWith(\"http://\") || trimmed.startsWith(\"https://\") || trimmed.startsWith(\"mailto:\") || trimmed.startsWith(\"tel:\")) {\r\n return trimmed;\r\n }\r\n\r\n return `https://${trimmed}`;\r\n};\r\n\r\nconst SOCIAL_MEDIA_TYPE_URI = \"https://www.c-rex.net/ns/iirds/vcard#SocialMedia\";\r\nconst SOCIAL_MEDIA_TYPE_URI_NORMALIZED = SOCIAL_MEDIA_TYPE_URI.toLowerCase();\r\n\r\nconst isSocialMediaType = (value?: string | null): boolean => {\r\n if (!value) return false;\r\n const normalized = value.trim().toLowerCase();\r\n return normalized === SOCIAL_MEDIA_TYPE_URI_NORMALIZED || normalized.endsWith(\"#socialmedia\");\r\n};\r\n\r\nconst isSocialMediaUrlEntry = (url: VCardInfoModel): boolean => {\r\n const hasTypedMarker = Array.isArray(url.types) && url.types.some((type) => isSocialMediaType(type));\r\n if (hasTypedMarker) return true;\r\n\r\n const hasClassMarker = Array.isArray(url.classes)\r\n && url.classes.some((cls) => isSocialMediaType(cls?.id));\r\n if (hasClassMarker) return true;\r\n\r\n const hasClassLabelMarker = Array.isArray(url.classes) && url.classes.some((cls) =>\r\n (cls?.labels || []).some((label) => (label.value || \"\").trim().toLowerCase() === \"social media\")\r\n );\r\n return hasClassLabelMarker;\r\n};\r\n\r\nconst SOCIAL_PROVIDER_BY_HOST: Array<{ hostPattern: RegExp; label: string }> = [\r\n { hostPattern: /(^|\\.)x\\.com$/i, label: \"X\" },\r\n { hostPattern: /(^|\\.)twitter\\.com$/i, label: \"Twitter\" },\r\n { hostPattern: /(^|\\.)facebook\\.com$/i, label: \"Facebook\" },\r\n { hostPattern: /(^|\\.)instagram\\.com$/i, label: \"Instagram\" },\r\n { hostPattern: /(^|\\.)youtube\\.com$/i, label: \"YouTube\" },\r\n { hostPattern: /(^|\\.)youtu\\.be$/i, label: \"YouTube\" },\r\n { hostPattern: /(^|\\.)linkedin\\.com$/i, label: \"LinkedIn\" },\r\n { hostPattern: /(^|\\.)xing\\.com$/i, label: \"Xing\" },\r\n];\r\n\r\nexport const resolveSocialProviderLabel = (href: string): string => {\r\n try {\r\n const hostname = new URL(href).hostname.toLowerCase();\r\n const provider = SOCIAL_PROVIDER_BY_HOST.find((entry) => entry.hostPattern.test(hostname));\r\n return provider?.label || hostname.replace(/^www\\./i, \"\");\r\n } catch {\r\n return \"Social\";\r\n }\r\n};\r\n\r\nconst isKnownSocialProviderHref = (href: string): boolean => {\r\n try {\r\n const hostname = new URL(href).hostname.toLowerCase();\r\n return SOCIAL_PROVIDER_BY_HOST.some((entry) => entry.hostPattern.test(hostname));\r\n } catch {\r\n return false;\r\n }\r\n};\r\n\r\nexport const resolveTypedSocialLinks = (urls: VCardInfoModel[] = []): ResolvedSocialLink[] => {\r\n const items = urls\r\n .filter((url) => {\r\n if (isSocialMediaUrlEntry(url)) return true;\r\n const href = normalizeHref(url.value);\r\n return Boolean(href && isKnownSocialProviderHref(href));\r\n })\r\n .map((url) => normalizeHref(url.value))\r\n .filter((value): value is string => Boolean(value));\r\n\r\n const byHref = new Map<string, ResolvedSocialLink>();\r\n items.forEach((href) => {\r\n if (byHref.has(href)) return;\r\n const label = resolveSocialProviderLabel(href);\r\n byHref.set(href, {\r\n href,\r\n label,\r\n provider: label,\r\n });\r\n });\r\n\r\n return Array.from(byHref.values());\r\n};\r\n\r\nconst normalizePhone = (value?: string | null): string | undefined => {\r\n if (!value) return undefined;\r\n return value.replace(/^tel:/i, \"\").trim() || undefined;\r\n};\r\n\r\nconst isDialablePhone = (value?: string): boolean => {\r\n if (!value) return false;\r\n const normalized = value.trim();\r\n if (!normalized) return false;\r\n if (!/\\d/.test(normalized)) return false;\r\n return /^[+\\d()[\\]\\-./\\s]+$/.test(normalized);\r\n};\r\n\r\nconst normalizePhoneHref = (value?: string | null): string | undefined => {\r\n if (!value) return undefined;\r\n const normalizedPhone = normalizePhone(value);\r\n if (!normalizedPhone || !isDialablePhone(normalizedPhone)) return undefined;\r\n return `tel:${normalizedPhone}`;\r\n};\r\n\r\nexport const normalizeEmail = (value?: string | null): string | undefined => {\r\n if (!value) return undefined;\r\n return value.replace(/^mailto:/i, \"\").trim() || undefined;\r\n};\r\n\r\nconst normalizeLanguage = (value?: string | null): string => {\r\n return (value || \"\").trim().toLowerCase().replace(\"_\", \"-\");\r\n};\r\n\r\nconst getLiteralLanguage = (literal: LiteralModel): string => {\r\n const language =\r\n literal.language ||\r\n ((literal as unknown as Record<string, unknown>)[\"xml:lang\"] as string | undefined) ||\r\n \"\";\r\n return normalizeLanguage(language);\r\n};\r\n\r\nconst getLocalizedLiteral = (labels: LiteralModel[] = [], uiLanguage: string): string | undefined => {\r\n const normalizedUiLanguage = normalizeLanguage(uiLanguage);\r\n const normalizedUiBaseLanguage = normalizedUiLanguage.split(\"-\")[0];\r\n\r\n const exact = labels.find((item) => getLiteralLanguage(item) === normalizedUiLanguage)?.value?.trim();\r\n if (exact) return exact;\r\n\r\n const base = labels.find((item) => getLiteralLanguage(item).startsWith(`${normalizedUiBaseLanguage}`))?.value?.trim();\r\n if (base) return base;\r\n\r\n const fallback = labels.find((item) => (item.value || \"\").trim().length > 0)?.value?.trim();\r\n return fallback || undefined;\r\n};\r\n\r\nexport const buildTelephoneEntries = (telephones: VCardInfoModel[] = [], uiLanguage: string): ContactEntry[] => {\r\n return telephones.reduce<ContactEntry[]>((entries, telephone) => {\r\n const normalizedValue = normalizePhone(telephone.value);\r\n if (!normalizedValue) return entries;\r\n\r\n const classLabels = (telephone.classes || [])\r\n .map((cls) => getLocalizedLiteral(cls.labels || [], uiLanguage))\r\n .filter((value): value is string => Boolean(value));\r\n\r\n const dedupedClassLabels = Array.from(\r\n new Map(classLabels.map((value) => [value.toLowerCase(), value])).values()\r\n );\r\n\r\n entries.push({\r\n label: dedupedClassLabels.length > 0 ? dedupedClassLabels.join(\" \") : \"\",\r\n value: normalizedValue,\r\n href: normalizePhoneHref(telephone.value),\r\n });\r\n\r\n return entries;\r\n }, []);\r\n};\r\n\r\nexport const resolveUiLanguage = (): string => {\r\n const sdk = new CrexSDK();\r\n const clientConfig = sdk.getClientConfig();\r\n const defaultLanguage = normalizeLanguage(clientConfig.languageSwitcher.default || \"en-us\");\r\n const uiLanguageFromCookie = cookies().get(UI_LANG_KEY)?.value;\r\n return normalizeLanguage(uiLanguageFromCookie) || defaultLanguage;\r\n};\r\n\r\nconst buildAddressLines = (address?: VCardInfoModel | null): string[] => {\r\n if (!address) return [];\r\n\r\n const line1 = [address.streetAddress].filter(Boolean).join(\" \").trim();\r\n const line2 = [address.postalCode, address.locality].filter(Boolean).join(\" \").trim();\r\n const line3 = [address.countryName].filter(Boolean).join(\" \").trim();\r\n\r\n return [line1, line2, line3].filter((line) => line.length > 0);\r\n};\r\n\r\nexport const mapVCardEntityToBaseProfile = (\r\n entity: VCardEntityLike,\r\n options: {\r\n uiLanguage: string;\r\n displayNameFallback: string;\r\n logoFallbackSrc?: string;\r\n }\r\n): BaseVCardProfile => {\r\n const preferredAddress = entity.addresses?.[0];\r\n const preferredEmail = entity.emails?.[0];\r\n const preferredWebsite = entity.urls?.find((item) => normalizeHref(item.value));\r\n const logoSrc =\r\n resolveLogoSource([...(entity.logos || []), ...(entity.photos || [])]) ||\r\n (options.logoFallbackSrc || DEFAULT_LOGO_SRC);\r\n\r\n return {\r\n id: entity.id || undefined,\r\n displayName: entity.organizationName?.trim() || entity.fullName?.trim() || options.displayNameFallback,\r\n logoSrc,\r\n addressLines: buildAddressLines(preferredAddress),\r\n email: normalizeEmail(preferredEmail?.value),\r\n telephoneEntries: buildTelephoneEntries(entity.telephones || [], options.uiLanguage),\r\n website: normalizeHref(preferredWebsite?.value),\r\n };\r\n};\r\n\r\nexport const decodeEncodedVcardId = (encodedId: string): string | undefined => {\r\n try {\r\n return decodeURIComponent(encodedId);\r\n } catch (error) {\r\n console.error(`[VCardProfile] Invalid encoded VCARD ID value: \"${encodedId}\".`, error);\r\n return undefined;\r\n }\r\n};\r\n\r\nexport const getServerConfig = (): ConfigInterface => {\r\n const sdk = new CrexSDK();\r\n return sdk.getServerConfig();\r\n};\r\n","const readPositiveInt = (rawValue: string | undefined, fallback: number): number => {\r\n const parsed = Number(rawValue);\r\n if (!Number.isFinite(parsed) || parsed <= 0) return fallback;\r\n return Math.floor(parsed);\r\n};\r\n\r\n/**\r\n * Central read-model cache policy (seconds).\r\n * Values can be overridden per environment to tune cache windows by top-level domain.\r\n */\r\nexport const READMODEL_CACHE_POLICY = {\r\n metadataRevalidateSeconds: readPositiveInt(\r\n process.env.CREX_CACHE_REVALIDATE_METADATA_SECONDS,\r\n 2 * 60 * 60\r\n ),\r\n vcardRevalidateSeconds: readPositiveInt(\r\n process.env.CREX_CACHE_REVALIDATE_VCARD_SECONDS,\r\n 6 * 60 * 60\r\n ),\r\n requestsRevalidateSeconds: readPositiveInt(\r\n process.env.CREX_CACHE_REVALIDATE_REQUESTS_SECONDS,\r\n 15 * 60\r\n ),\r\n} as const;\r\n\r\n","import type { InformationUnitModel } from \"@c-rex/interfaces\";\r\n\r\nexport type InformationUnitPropertyKey = keyof InformationUnitModel;\r\n\r\n/**\r\n * Describes the raw shape of a metadata property value in InformationUnitModel.\r\n * This drives generic rendering/grouping logic without coupling to one concrete UI control.\r\n */\r\nexport type MetadataValueKind =\r\n /** Primitive scalar (string/number/date-like value). */\r\n | \"scalar\"\r\n /** Array of localized literals ({ language, value }). */\r\n | \"literalArray\"\r\n /** Array of primitive strings. */\r\n | \"stringArray\"\r\n /** Single ObjectRef relation. */\r\n | \"objectRef\"\r\n /** Multiple ObjectRef relations. */\r\n | \"objectRefArray\"\r\n /** Array of API resource links. */\r\n | \"resourceLinkArray\"\r\n /** Array of rendition entries. */\r\n | \"renditionArray\";\r\n\r\n/**\r\n * Defines how facet search sections are derived for one metadata property.\r\n */\r\nexport type FacetSectionStrategy = \"none\" | \"class\" | \"partyRole\";\r\n\r\n/**\r\n * Defines how generic metadata display sections are derived (property grid, card metadata, etc.).\r\n * Name is intentionally control-agnostic and not tied to InformationUnitMetadataGrid.\r\n */\r\nexport type MetadataDisplaySectionStrategy = \"none\" | \"class\" | \"partyRole\";\r\n\r\n/**\r\n * Central presentation contract for one InformationUnit metadata property.\r\n * - facet: behavior for facet search grouping.\r\n * - metadataDisplay: behavior for generic metadata rendering components.\r\n */\r\nexport type MetadataPropertyPresentationConfig = {\r\n /** Raw value shape from API model. */\r\n valueKind: MetadataValueKind;\r\n facet: {\r\n /** If false, property is not used as facet dimension. */\r\n supported: boolean;\r\n /**\r\n * How facet sections are built:\r\n * - \"none\": keep the property as one flat facet group (no additional taxonomy section split).\r\n * - \"class\": split entries by their class label.\r\n * - \"partyRole\": split entries by party role label.\r\n */\r\n sectionStrategy: FacetSectionStrategy;\r\n };\r\n metadataDisplay: {\r\n /** If false, property is not rendered in generic metadata displays. */\r\n supported: boolean;\r\n /**\r\n * How metadata sections are built in generic displays:\r\n * - \"none\": keep one property row/group.\r\n * - \"class\": split/group by class label.\r\n * - \"partyRole\": split/group by party role label.\r\n */\r\n sectionStrategy: MetadataDisplaySectionStrategy;\r\n };\r\n};\r\n\r\n/**\r\n * Central presentation rules for all InformationUnitModel properties.\r\n * This is the single source of truth for facet grouping and generic metadata display behavior.\r\n */\r\nexport const INFORMATION_UNIT_PROPERTY_PRESENTATION: Record<\r\n InformationUnitPropertyKey,\r\n MetadataPropertyPresentationConfig\r\n> = {\r\n id: {\r\n valueKind: \"scalar\",\r\n facet: { supported: false, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: false, sectionStrategy: \"none\" },\r\n },\r\n shortId: {\r\n valueKind: \"scalar\",\r\n facet: { supported: false, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: false, sectionStrategy: \"none\" },\r\n },\r\n score: {\r\n valueKind: \"scalar\",\r\n facet: { supported: false, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: false, sectionStrategy: \"none\" },\r\n },\r\n class: {\r\n valueKind: \"objectRef\",\r\n facet: { supported: false, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: false, sectionStrategy: \"class\" },\r\n },\r\n labels: {\r\n valueKind: \"literalArray\",\r\n facet: { supported: false, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: false, sectionStrategy: \"none\" },\r\n },\r\n comments: {\r\n valueKind: \"literalArray\",\r\n facet: { supported: false, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"none\" },\r\n },\r\n descriptions: {\r\n valueKind: \"literalArray\",\r\n facet: { supported: false, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"none\" },\r\n },\r\n synonyms: {\r\n valueKind: \"stringArray\",\r\n facet: { supported: false, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"none\" },\r\n },\r\n packages: {\r\n valueKind: \"objectRefArray\",\r\n facet: { supported: true, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: false, sectionStrategy: \"none\" },\r\n },\r\n hasInformationUnits: {\r\n valueKind: \"scalar\",\r\n facet: { supported: false, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: false, sectionStrategy: \"none\" },\r\n },\r\n links: {\r\n valueKind: \"resourceLinkArray\",\r\n facet: { supported: false, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: false, sectionStrategy: \"none\" },\r\n },\r\n revision: {\r\n valueKind: \"scalar\",\r\n facet: { supported: false, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"none\" },\r\n },\r\n created: {\r\n valueKind: \"scalar\",\r\n facet: { supported: false, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"none\" },\r\n },\r\n modified: {\r\n valueKind: \"scalar\",\r\n facet: { supported: false, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"none\" },\r\n },\r\n abstract: {\r\n valueKind: \"literalArray\",\r\n facet: { supported: false, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"none\" },\r\n },\r\n replaces: {\r\n valueKind: \"objectRef\",\r\n facet: { supported: false, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"none\" },\r\n },\r\n versionOf: {\r\n valueKind: \"objectRef\",\r\n facet: { supported: false, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: false, sectionStrategy: \"none\" },\r\n },\r\n titles: {\r\n valueKind: \"literalArray\",\r\n facet: { supported: false, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"none\" },\r\n },\r\n languages: {\r\n valueKind: \"stringArray\",\r\n facet: { supported: true, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"none\" },\r\n },\r\n parties: {\r\n valueKind: \"objectRefArray\",\r\n facet: { supported: true, sectionStrategy: \"partyRole\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"partyRole\" },\r\n },\r\n renditions: {\r\n valueKind: \"renditionArray\",\r\n facet: { supported: false, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"none\" },\r\n },\r\n identities: {\r\n valueKind: \"objectRefArray\",\r\n facet: { supported: false, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: false, sectionStrategy: \"none\" },\r\n },\r\n components: {\r\n valueKind: \"objectRefArray\",\r\n facet: { supported: true, sectionStrategy: \"class\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"class\" },\r\n },\r\n informationSubjects: {\r\n valueKind: \"objectRefArray\",\r\n facet: { supported: true, sectionStrategy: \"class\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"class\" },\r\n },\r\n topicTypes: {\r\n valueKind: \"objectRefArray\",\r\n facet: { supported: true, sectionStrategy: \"class\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"class\" },\r\n },\r\n documentTypes: {\r\n valueKind: \"objectRefArray\",\r\n facet: { supported: true, sectionStrategy: \"class\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"class\" },\r\n },\r\n directoryNodes: {\r\n valueKind: \"objectRefArray\",\r\n facet: { supported: false, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: false, sectionStrategy: \"none\" },\r\n },\r\n contentLifeCycleStatus: {\r\n valueKind: \"objectRefArray\",\r\n facet: { supported: true, sectionStrategy: \"class\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"class\" },\r\n },\r\n applicableForTypes: {\r\n valueKind: \"objectRefArray\",\r\n facet: { supported: true, sectionStrategy: \"class\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"class\" },\r\n },\r\n planningTimes: {\r\n valueKind: \"objectRefArray\",\r\n facet: { supported: true, sectionStrategy: \"class\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"class\" },\r\n },\r\n events: {\r\n valueKind: \"objectRefArray\",\r\n facet: { supported: true, sectionStrategy: \"class\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"class\" },\r\n },\r\n functionalMetadata: {\r\n valueKind: \"objectRefArray\",\r\n facet: { supported: true, sectionStrategy: \"class\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"class\" },\r\n },\r\n informationUnits: {\r\n valueKind: \"objectRefArray\",\r\n facet: { supported: false, sectionStrategy: \"none\" },\r\n metadataDisplay: { supported: false, sectionStrategy: \"none\" },\r\n },\r\n productFeatures: {\r\n valueKind: \"objectRefArray\",\r\n facet: { supported: true, sectionStrategy: \"class\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"class\" },\r\n },\r\n productLifeCyclePhases: {\r\n valueKind: \"objectRefArray\",\r\n facet: { supported: true, sectionStrategy: \"class\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"class\" },\r\n },\r\n productMetadata: {\r\n valueKind: \"objectRefArray\",\r\n facet: { supported: true, sectionStrategy: \"class\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"class\" },\r\n },\r\n productVariants: {\r\n valueKind: \"objectRefArray\",\r\n facet: { supported: true, sectionStrategy: \"class\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"class\" },\r\n },\r\n qualifications: {\r\n valueKind: \"objectRefArray\",\r\n facet: { supported: true, sectionStrategy: \"class\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"class\" },\r\n },\r\n supplies: {\r\n valueKind: \"objectRefArray\",\r\n facet: { supported: true, sectionStrategy: \"class\" },\r\n metadataDisplay: { supported: true, sectionStrategy: \"class\" },\r\n },\r\n};\r\n\r\n","import {\r\n getApplicableForTypes,\r\n getComponents,\r\n getContentLifeCycleStatus,\r\n getDocumentTypes,\r\n getFunctionalMetadata,\r\n getInformationSubjects,\r\n getParties,\r\n getPlanningTimes,\r\n getProductFeatures,\r\n getProductLifeCyclePhases,\r\n getProductMetadata,\r\n getProductVariants,\r\n getQualifications,\r\n getSupplies,\r\n getTopicTypes,\r\n} from \"./metadata-read-models\";\r\nimport { TaxonomyNode, TaxonomyResult } from \"./types\";\r\nimport { INFORMATION_UNIT_PROPERTY_PRESENTATION, InformationUnitPropertyKey } from \"./metadata-presentation-config\";\r\nimport { DomainEntitiesGetByIdQueryParams } from \"@c-rex/interfaces\";\r\nimport { domainEntitiesGetByIdServer } from \"../generated/server-requests\";\r\nimport { unstable_cache } from \"next/cache\";\r\nimport { CREX_API_CACHE_TAG, CREX_READMODEL_CACHE_METADATA_TAG, CREX_READMODEL_CACHE_TAG } from \"@c-rex/core/requests\";\r\nimport { READMODEL_CACHE_POLICY } from \"./cache-policy\";\r\nimport { withServerRequestContext } from \"../server-request-context\";\r\n\r\nexport type MetadataPresentationPropertyKey = InformationUnitPropertyKey;\r\n\r\n/**\r\n * UI-facing label override for one facet value (usually referenced by shortId).\r\n * - `label`: display value label (item label in facet list)\r\n * - `groupLabel`: optional nested group bucket (third level)\r\n * - `sectionLabel`: optional section bucket (second level)\r\n */\r\nexport type MetadataFacetLabelOverride = {\r\n label: string;\r\n groupLabel?: string;\r\n sectionLabel?: string;\r\n};\r\n\r\nexport type MetadataFacetLabelOverrides = Partial<\r\n Record<MetadataPresentationPropertyKey, Record<string, MetadataFacetLabelOverride>>\r\n>;\r\n\r\n/**\r\n * Optional behavior flags for override generation.\r\n * Example: enable API-driven \"only used entries\" mode for informationSubjects.\r\n */\r\nexport type MetadataFacetLabelOptions = {\r\n includeOnlyUsedByProperty?: Partial<Record<MetadataPresentationPropertyKey, boolean>>;\r\n};\r\n\r\nconst addTaxonomyNodeOverride = (\r\n node: TaxonomyNode,\r\n map: Record<string, MetadataFacetLabelOverride>,\r\n sectionLabel?: string\r\n) => {\r\n if (!node.shortId) return;\r\n map[node.shortId] = {\r\n label: node.label,\r\n sectionLabel,\r\n };\r\n};\r\n\r\nconst createClassSectionOverrides = (nodes: Record<string, TaxonomyNode>) => {\r\n const overrides: Record<string, MetadataFacetLabelOverride> = {};\r\n Object.values(nodes).forEach((node) => {\r\n addTaxonomyNodeOverride(node, overrides, node.classRef?.label);\r\n });\r\n return overrides;\r\n};\r\n\r\n// TopicTypes and ContentLifeCycleStatus section labels are not derived from child item classes.\r\n// They are resolved from the iiRDS base class labels via DomainEntity lookup.\r\nconst TOPIC_TYPE_DOMAIN_ENTITY_ID = \"http://iirds.tekom.de/iirds#TopicType\";\r\nconst CONTENT_LIFECYCLE_STATUS_DOMAIN_ENTITY_ID = \"http://iirds.tekom.de/iirds#ContentLifeCycleStatus\";\r\n\r\nconst resolveLocalizedLabel = (\r\n labels: Array<{ language?: string | null; value?: string | null }> | null | undefined,\r\n uiLanguage: string\r\n): string | undefined => {\r\n if (!labels || labels.length === 0) return undefined;\r\n\r\n const normalizedLanguage = uiLanguage.toLowerCase();\r\n const baseLanguage = normalizedLanguage.split(\"-\")[0];\r\n const normalized = labels\r\n .map((item) => ({\r\n language: (item.language || \"\").toLowerCase(),\r\n value: item.value || \"\",\r\n }))\r\n .filter((item) => item.value.length > 0);\r\n\r\n const exact = normalized.find((item) => item.language === normalizedLanguage)?.value;\r\n if (exact) return exact;\r\n\r\n const base = normalized.find((item) => item.language === baseLanguage)?.value;\r\n if (base) return base;\r\n\r\n const english = normalized.find((item) => item.language === \"en\" || item.language === \"en-us\")?.value;\r\n if (english) return english;\r\n\r\n return normalized[0]?.value;\r\n};\r\n\r\nconst getDomainEntitySectionLabelUncached = async (id: string, uiLanguage: string): Promise<string | undefined> => {\r\n const query: Partial<DomainEntitiesGetByIdQueryParams> = {\r\n Fields: [\"labels\"],\r\n };\r\n const entity = await withServerRequestContext(\r\n { skipCookieTokenLookup: true },\r\n () => domainEntitiesGetByIdServer({ id }, query)\r\n );\r\n return resolveLocalizedLabel(entity.labels || [], uiLanguage);\r\n};\r\n\r\nconst getDomainEntitySectionLabelCached = unstable_cache(\r\n async (id: string, uiLanguage: string): Promise<string | undefined> =>\r\n getDomainEntitySectionLabelUncached(id, uiLanguage),\r\n [\"metadata-presentation-domain-entity-label\"],\r\n {\r\n revalidate: READMODEL_CACHE_POLICY.metadataRevalidateSeconds,\r\n tags: [CREX_API_CACHE_TAG, CREX_READMODEL_CACHE_TAG, CREX_READMODEL_CACHE_METADATA_TAG],\r\n }\r\n);\r\n\r\nconst inFlightDomainEntityLabelRequests = new Map<string, Promise<string | undefined>>();\r\n\r\nconst getDomainEntitySectionLabel = async (id: string, uiLanguage: string): Promise<string | undefined> => {\r\n const inFlightKey = `${id}::${uiLanguage.toLowerCase()}`;\r\n const existing = inFlightDomainEntityLabelRequests.get(inFlightKey);\r\n if (existing) return existing;\r\n\r\n const promise = getDomainEntitySectionLabelCached(id, uiLanguage)\r\n .finally(() => {\r\n inFlightDomainEntityLabelRequests.delete(inFlightKey);\r\n });\r\n inFlightDomainEntityLabelRequests.set(inFlightKey, promise);\r\n return promise;\r\n};\r\n\r\n/**\r\n * Builds localized facet label metadata from read-models.\r\n *\r\n * Output shape:\r\n * - property key (`parties`, `topicTypes`, ...)\r\n * - shortId map -> `{ label, sectionLabel?, groupLabel? }`\r\n *\r\n * Resolution strategy:\r\n * 1) Reads central property config (`INFORMATION_UNIT_PROPERTY_PRESENTATION`).\r\n * 2) Applies strategy per property:\r\n * - `partyRole`: groups parties by role label.\r\n * - `class`: groups by class label from taxonomy nodes.\r\n * 3) Applies special class-label override for:\r\n * - `topicTypes` -> section label from `TopicType` DomainEntity.\r\n * - `contentLifeCycleStatus` -> section label from `ContentLifeCycleStatus` DomainEntity.\r\n *\r\n * This keeps UI components (facet sidebar/navbar) free from endpoint-specific\r\n * branching and ensures one SSOT for label/group generation.\r\n */\r\nexport const getMetadataFacetLabelOverrides = async (\r\n properties?: MetadataPresentationPropertyKey[],\r\n uiLanguage: string = \"en-US\",\r\n options?: MetadataFacetLabelOptions\r\n): Promise<MetadataFacetLabelOverrides> => {\r\n const defaultProperties = (Object.keys(INFORMATION_UNIT_PROPERTY_PRESENTATION) as MetadataPresentationPropertyKey[])\r\n .filter((property) => INFORMATION_UNIT_PROPERTY_PRESENTATION[property].facet.supported);\r\n const propertySet = new Set(properties && properties.length > 0 ? properties : defaultProperties);\r\n const result: MetadataFacetLabelOverrides = {};\r\n\r\n const classResolvers: Partial<Record<MetadataPresentationPropertyKey, () => Promise<TaxonomyResult>>> = {\r\n components: getComponents,\r\n informationSubjects: getInformationSubjects,\r\n documentTypes: getDocumentTypes,\r\n applicableForTypes: getApplicableForTypes,\r\n planningTimes: getPlanningTimes,\r\n functionalMetadata: getFunctionalMetadata,\r\n contentLifeCycleStatus: getContentLifeCycleStatus,\r\n productFeatures: getProductFeatures,\r\n productLifeCyclePhases: getProductLifeCyclePhases,\r\n productMetadata: getProductMetadata,\r\n productVariants: getProductVariants,\r\n qualifications: getQualifications,\r\n supplies: getSupplies,\r\n topicTypes: getTopicTypes,\r\n };\r\n\r\n const classTasks: Array<Promise<void>> = [];\r\n let partiesTask: Promise<void> | undefined;\r\n\r\n for (const property of propertySet) {\r\n const config = INFORMATION_UNIT_PROPERTY_PRESENTATION[property];\r\n if (!config?.facet.supported) continue;\r\n\r\n if (config.facet.sectionStrategy === \"partyRole\" && property === \"parties\") {\r\n partiesTask = (async () => {\r\n const parties = await getParties();\r\n const partyOverrides: Record<string, MetadataFacetLabelOverride> = {};\r\n parties.groups.forEach((group) => {\r\n const sectionLabel = group.role.label;\r\n group.parties.forEach((party) => {\r\n if (!party.shortId) return;\r\n partyOverrides[party.shortId] = {\r\n label: party.label,\r\n sectionLabel,\r\n };\r\n });\r\n });\r\n result.parties = partyOverrides;\r\n })();\r\n continue;\r\n }\r\n\r\n if (config.facet.sectionStrategy === \"class\") {\r\n const resolver = classResolvers[property];\r\n if (!resolver) continue;\r\n classTasks.push(\r\n (async () => {\r\n const taxonomy =\r\n property === \"informationSubjects\" &&\r\n options?.includeOnlyUsedByProperty?.informationSubjects === true\r\n ? await getInformationSubjects({ includeOnlyUsed: true })\r\n : await resolver();\r\n if (property === \"topicTypes\" || property === \"contentLifeCycleStatus\") {\r\n const domainEntityId =\r\n property === \"topicTypes\"\r\n ? TOPIC_TYPE_DOMAIN_ENTITY_ID\r\n : CONTENT_LIFECYCLE_STATUS_DOMAIN_ENTITY_ID;\r\n const sectionLabel = await getDomainEntitySectionLabel(domainEntityId, uiLanguage);\r\n const overrides = createClassSectionOverrides(taxonomy.nodesById);\r\n if (sectionLabel) {\r\n Object.values(overrides).forEach((entry) => {\r\n entry.sectionLabel = sectionLabel;\r\n });\r\n }\r\n result[property] = overrides;\r\n return;\r\n }\r\n\r\n result[property] = createClassSectionOverrides(taxonomy.nodesById);\r\n })()\r\n );\r\n }\r\n }\r\n\r\n await Promise.all([...classTasks, ...(partiesTask ? [partiesTask] : [])]);\r\n\r\n return result;\r\n};\r\n","import { InformationUnitModel, LiteralModel, ObjectRefModel } from \"@c-rex/interfaces\";\r\nimport { resolvePreferredLanguage, sortAndDeduplicateLanguages } from \"@c-rex/utils\";\r\nimport {\r\n INFORMATION_UNIT_PROPERTY_PRESENTATION,\r\n InformationUnitPropertyKey,\r\n MetadataDisplaySectionStrategy,\r\n} from \"./metadata-presentation-config\";\r\nimport { getMetadataFacetLabelOverrides, MetadataFacetLabelOverrides } from \"./metadata-presentation\";\r\n\r\nexport type MetadataDisplayRow = {\r\n key: InformationUnitPropertyKey;\r\n label: string;\r\n labelSource: \"translationKey\" | \"direct\";\r\n values: string[];\r\n valueType?: \"text\" | \"language\";\r\n};\r\n\r\ntype BuildMetadataDisplayRowsOptions = {\r\n uiLanguage: string;\r\n includeProperties?: InformationUnitPropertyKey[];\r\n overrides?: MetadataFacetLabelOverrides;\r\n};\r\n\r\nconst resolveLiteralLabel = (labels?: LiteralModel[] | null, uiLanguage?: string): string | undefined => {\r\n if (!labels || labels.length === 0) return undefined;\r\n const language = uiLanguage || \"en\";\r\n const preferred = resolvePreferredLanguage(\r\n labels.map((item) => item.language || \"\"),\r\n language\r\n );\r\n if (preferred) {\r\n const exact = labels.find((item) => item.language === preferred)?.value;\r\n if (exact) return exact;\r\n }\r\n return labels.find((item) => item.value)?.value || undefined;\r\n};\r\n\r\nconst resolveObjectRefLabel = (item: ObjectRefModel, uiLanguage: string): string | undefined => {\r\n return resolveLiteralLabel(item.labels || [], uiLanguage) || item.shortId || item.id || undefined;\r\n};\r\n\r\nconst asObjectRefArray = (value: unknown): ObjectRefModel[] => {\r\n if (!Array.isArray(value)) return [];\r\n return value.filter((item): item is ObjectRefModel => Boolean(item && typeof item === \"object\"));\r\n};\r\n\r\nconst asLiteralArray = (value: unknown): LiteralModel[] => {\r\n if (!Array.isArray(value)) return [];\r\n return value.filter((item): item is LiteralModel => Boolean(item && typeof item === \"object\"));\r\n};\r\n\r\nconst shouldUseOverrides = (strategy: MetadataDisplaySectionStrategy): boolean => {\r\n return strategy === \"class\" || strategy === \"partyRole\";\r\n};\r\n\r\nexport const getMetadataDisplayRows = async (\r\n data: InformationUnitModel,\r\n options: BuildMetadataDisplayRowsOptions\r\n): Promise<MetadataDisplayRow[]> => {\r\n const includeProperties = options.includeProperties || (Object.keys(INFORMATION_UNIT_PROPERTY_PRESENTATION) as InformationUnitPropertyKey[]);\r\n const uiLanguage = options.uiLanguage;\r\n const preferredTitle = resolveLiteralLabel(data.titles || [], uiLanguage) || resolveLiteralLabel(data.labels || [], uiLanguage);\r\n\r\n const objectRefProperties = includeProperties.filter((key) => {\r\n const config = INFORMATION_UNIT_PROPERTY_PRESENTATION[key];\r\n if (!config?.metadataDisplay?.supported) return false;\r\n return config.valueKind === \"objectRefArray\" || config.valueKind === \"objectRef\";\r\n });\r\n\r\n const overrideProperties = objectRefProperties.filter((key) =>\r\n shouldUseOverrides(INFORMATION_UNIT_PROPERTY_PRESENTATION[key].metadataDisplay.sectionStrategy)\r\n );\r\n\r\n const labelOverrides =\r\n options.overrides ||\r\n (overrideProperties.length > 0 ? await getMetadataFacetLabelOverrides(overrideProperties, uiLanguage) : {});\r\n\r\n const rows: MetadataDisplayRow[] = [];\r\n\r\n for (const key of includeProperties) {\r\n const config = INFORMATION_UNIT_PROPERTY_PRESENTATION[key];\r\n if (!config?.metadataDisplay?.supported) continue;\r\n\r\n if (key === \"labels\") {\r\n continue;\r\n }\r\n\r\n if (key === \"titles\") {\r\n if (preferredTitle) {\r\n rows.push({\r\n key,\r\n label: key,\r\n labelSource: \"translationKey\",\r\n values: [preferredTitle],\r\n valueType: \"text\",\r\n });\r\n }\r\n continue;\r\n }\r\n\r\n const value = data[key];\r\n if (value === null || value === undefined) continue;\r\n\r\n if (key === \"languages\") {\r\n const languages = sortAndDeduplicateLanguages((value as string[]) || []);\r\n if (languages.length > 0) {\r\n rows.push({\r\n key,\r\n label: key,\r\n labelSource: \"translationKey\",\r\n values: languages,\r\n valueType: \"language\",\r\n });\r\n }\r\n continue;\r\n }\r\n\r\n if (config.valueKind === \"scalar\") {\r\n rows.push({\r\n key,\r\n label: key,\r\n labelSource: \"translationKey\",\r\n values: [String(value)],\r\n valueType: \"text\",\r\n });\r\n continue;\r\n }\r\n\r\n if (config.valueKind === \"stringArray\") {\r\n const values = Array.from(new Set((value as string[]).map((item) => String(item)).filter((item) => item.length > 0)));\r\n if (values.length > 0) {\r\n rows.push({\r\n key,\r\n label: key,\r\n labelSource: \"translationKey\",\r\n values,\r\n valueType: \"text\",\r\n });\r\n }\r\n continue;\r\n }\r\n\r\n if (config.valueKind === \"literalArray\") {\r\n const literals = asLiteralArray(value);\r\n const preferred = resolveLiteralLabel(literals, uiLanguage);\r\n if (preferred) {\r\n rows.push({\r\n key,\r\n label: key,\r\n labelSource: \"translationKey\",\r\n values: [preferred],\r\n valueType: \"text\",\r\n });\r\n }\r\n continue;\r\n }\r\n\r\n if (config.valueKind === \"objectRef\") {\r\n const ref = value as ObjectRefModel;\r\n const label = resolveObjectRefLabel(ref, uiLanguage);\r\n if (label) {\r\n rows.push({\r\n key,\r\n label: key,\r\n labelSource: \"translationKey\",\r\n values: [label],\r\n valueType: \"text\",\r\n });\r\n }\r\n continue;\r\n }\r\n\r\n if (config.valueKind === \"objectRefArray\") {\r\n const refs = asObjectRefArray(value);\r\n if (refs.length === 0) continue;\r\n\r\n const grouped = new Map<string, string[]>();\r\n const strategy = config.metadataDisplay.sectionStrategy;\r\n\r\n refs.forEach((ref) => {\r\n const shortId = ref.shortId || \"\";\r\n const override = shortId ? labelOverrides[key]?.[shortId] : undefined;\r\n const label = override?.label || resolveObjectRefLabel(ref, uiLanguage);\r\n if (!label) return;\r\n\r\n const section = strategy === \"none\" ? key : override?.sectionLabel || key;\r\n if (!grouped.has(section)) grouped.set(section, []);\r\n grouped.get(section)?.push(label);\r\n });\r\n\r\n Array.from(grouped.entries())\r\n .sort((a, b) => a[0].localeCompare(b[0]))\r\n .forEach(([section, values]) => {\r\n const uniqueValues = Array.from(new Set(values)).sort((a, b) => a.localeCompare(b));\r\n if (uniqueValues.length === 0) return;\r\n\r\n const isDirect = section !== key;\r\n rows.push({\r\n key,\r\n label: section,\r\n labelSource: isDirect ? \"direct\" : \"translationKey\",\r\n values: uniqueValues,\r\n valueType: \"text\",\r\n });\r\n });\r\n continue;\r\n }\r\n }\r\n\r\n return rows;\r\n};\r\n","import { CREX_API_CACHE_TAG, CREX_READMODEL_CACHE_METADATA_TAG, CREX_READMODEL_CACHE_TAG } from \"@c-rex/core/requests\";\r\nimport { InformationUnitsGetAllQueryParams, InformationUnitModel } from \"@c-rex/interfaces\";\r\nimport { resolvePreferredLanguage } from \"@c-rex/utils\";\r\nimport { unstable_cache } from \"next/cache\";\r\nimport { informationUnitsGetAllServer } from \"../generated/server-requests\";\r\nimport { withServerRequestContext } from \"../server-request-context\";\r\nimport { resolveUiLanguage } from \"../vcard/profile-utils\";\r\nimport { READMODEL_CACHE_POLICY } from \"./cache-policy\";\r\n\r\nexport type AvailableLanguageVersion = {\r\n shortId: string;\r\n language: string;\r\n};\r\n\r\ntype ResultContainerLike<T> = {\r\n items: T[];\r\n};\r\n\r\nconst stableSerialize = (value: unknown): string => {\r\n const normalize = (input: unknown): unknown => {\r\n if (Array.isArray(input)) return input.map((item) => normalize(item));\r\n if (input && typeof input === \"object\") {\r\n const sorted: Record<string, unknown> = {};\r\n Object.keys(input as Record<string, unknown>)\r\n .sort((a, b) => a.localeCompare(b))\r\n .forEach((key) => {\r\n sorted[key] = normalize((input as Record<string, unknown>)[key]);\r\n });\r\n return sorted;\r\n }\r\n return input;\r\n };\r\n\r\n return JSON.stringify(normalize(value));\r\n};\r\n\r\nconst normalizeVersionItems = (\r\n items: InformationUnitModel[],\r\n uiLanguage: string\r\n): AvailableLanguageVersion[] => {\r\n const uniqueByShortId = new Map<string, AvailableLanguageVersion>();\r\n\r\n items.forEach((item) => {\r\n const shortId = item.shortId?.trim();\r\n if (!shortId) return;\r\n\r\n const language = resolvePreferredLanguage(item.languages, uiLanguage);\r\n if (!language) return;\r\n\r\n uniqueByShortId.set(shortId, {\r\n shortId,\r\n language,\r\n });\r\n });\r\n\r\n return Array.from(uniqueByShortId.values()).sort((a, b) => {\r\n const languageOrder = a.language.localeCompare(b.language);\r\n if (languageOrder !== 0) return languageOrder;\r\n return a.shortId.localeCompare(b.shortId);\r\n });\r\n};\r\n\r\nconst getAvailableLanguagesByVersionOfCached = unstable_cache(\r\n async (_cacheKey: string, query: Partial<InformationUnitsGetAllQueryParams>, uiLanguage: string): Promise<AvailableLanguageVersion[]> => {\r\n const result = await withServerRequestContext(\r\n { skipCookieTokenLookup: true },\r\n () => informationUnitsGetAllServer(query) as Promise<ResultContainerLike<InformationUnitModel>>\r\n );\r\n\r\n return normalizeVersionItems(result.items || [], uiLanguage);\r\n },\r\n [\"read-model\", \"version-availability\"],\r\n {\r\n revalidate: READMODEL_CACHE_POLICY.metadataRevalidateSeconds,\r\n tags: [CREX_API_CACHE_TAG, CREX_READMODEL_CACHE_TAG, CREX_READMODEL_CACHE_METADATA_TAG],\r\n }\r\n);\r\n\r\nconst fetchAvailableLanguagesByVersionOfDirect = async (\r\n query: Partial<InformationUnitsGetAllQueryParams>,\r\n uiLanguage: string\r\n): Promise<AvailableLanguageVersion[]> => {\r\n const result = await withServerRequestContext(\r\n { skipCookieTokenLookup: true },\r\n () => informationUnitsGetAllServer(query) as Promise<ResultContainerLike<InformationUnitModel>>\r\n );\r\n\r\n return normalizeVersionItems(result.items || [], uiLanguage);\r\n};\r\n\r\nexport const getAvailableLanguagesByVersionOf = async (\r\n versionOfShortId?: string | null\r\n): Promise<AvailableLanguageVersion[]> => {\r\n if (!versionOfShortId) return [];\r\n\r\n const uiLanguage = resolveUiLanguage();\r\n const query: Partial<InformationUnitsGetAllQueryParams> = {\r\n Restrict: [`versionOf.shortId=${versionOfShortId}`],\r\n Fields: [\"shortId\", \"languages\", \"labels\", \"versionOf\"],\r\n PageNumber: 1,\r\n PageSize: 200,\r\n Sort: [\"languages\"],\r\n };\r\n\r\n const cacheKey = stableSerialize({ versionOfShortId, uiLanguage, query });\r\n if (process.env.NODE_ENV === \"test\") {\r\n return fetchAvailableLanguagesByVersionOfDirect(query, uiLanguage);\r\n }\r\n\r\n return getAvailableLanguagesByVersionOfCached(cacheKey, query, uiLanguage);\r\n};\r\n","import { InformationUnitPropertyKey } from \"./metadata-presentation-config\";\r\nimport { INFORMATION_UNIT_PROPERTY_PRESENTATION } from \"./metadata-presentation-config\";\r\n\r\nexport type MetadataViewProfileId =\r\n | \"default-search\"\r\n | \"information-unit-search\"\r\n | \"default-metadata-display\";\r\n\r\nexport type MetadataViewProfile = {\r\n id: MetadataViewProfileId;\r\n facet?: {\r\n includeProperties?: InformationUnitPropertyKey[];\r\n excludeProperties?: InformationUnitPropertyKey[];\r\n includeZeroHits?: boolean;\r\n extraTags?: string[];\r\n };\r\n metadataDisplay?: {\r\n includeProperties?: InformationUnitPropertyKey[];\r\n excludeProperties?: InformationUnitPropertyKey[];\r\n };\r\n};\r\n\r\nconst ALL_PROPERTIES = Object.keys(INFORMATION_UNIT_PROPERTY_PRESENTATION) as InformationUnitPropertyKey[];\r\n\r\nconst DEFAULT_FACET_PROPERTIES = ALL_PROPERTIES.filter((key) => {\r\n const config = INFORMATION_UNIT_PROPERTY_PRESENTATION[key];\r\n return config.facet.supported && config.valueKind === \"objectRefArray\";\r\n});\r\n\r\nconst DEFAULT_METADATA_DISPLAY_PROPERTIES = ALL_PROPERTIES.filter((key) => {\r\n const config = INFORMATION_UNIT_PROPERTY_PRESENTATION[key];\r\n return config.metadataDisplay.supported;\r\n});\r\n\r\nconst toSet = <T extends string>(values?: T[]) => new Set(values || []);\r\n\r\nconst applyIncludeExclude = <T extends string>(base: T[], include?: T[], exclude?: T[]): T[] => {\r\n const includeSet = toSet(include);\r\n const excludeSet = toSet(exclude);\r\n const source = includeSet.size > 0 ? base.filter((item) => includeSet.has(item)) : base;\r\n return source.filter((item) => !excludeSet.has(item));\r\n};\r\n\r\nexport const METADATA_VIEW_PROFILES: Record<MetadataViewProfileId, MetadataViewProfile> = {\r\n \"default-search\": {\r\n id: \"default-search\",\r\n facet: {\r\n includeProperties: DEFAULT_FACET_PROPERTIES,\r\n extraTags: [\"rdfType\"],\r\n includeZeroHits: true,\r\n },\r\n },\r\n \"information-unit-search\": {\r\n id: \"information-unit-search\",\r\n facet: {\r\n includeProperties: DEFAULT_FACET_PROPERTIES.filter((property) => property !== \"informationSubjects\"),\r\n extraTags: [\"rdfType\"],\r\n includeZeroHits: true,\r\n },\r\n },\r\n \"default-metadata-display\": {\r\n id: \"default-metadata-display\",\r\n metadataDisplay: {\r\n includeProperties: DEFAULT_METADATA_DISPLAY_PROPERTIES,\r\n },\r\n },\r\n};\r\n\r\ntype ResolveFacetTagsOptions = {\r\n profileId?: MetadataViewProfileId;\r\n includeProperties?: string[];\r\n excludeProperties?: string[];\r\n extraTags?: string[];\r\n};\r\n\r\nconst toInformationUnitPropertyKeys = (values?: string[]): InformationUnitPropertyKey[] => {\r\n const available = new Set<string>(ALL_PROPERTIES);\r\n return (values || []).filter((value): value is InformationUnitPropertyKey => available.has(value));\r\n};\r\n\r\n/**\r\n * Resolves API tag keys for facet requests from one central profile definition.\r\n * Use this instead of hardcoded page-level tag arrays.\r\n */\r\nexport const resolveFacetTags = (options?: ResolveFacetTagsOptions): string[] => {\r\n const profile = METADATA_VIEW_PROFILES[options?.profileId || \"default-search\"];\r\n const facetConfig = profile.facet;\r\n\r\n const supported = DEFAULT_FACET_PROPERTIES;\r\n const profileScoped = applyIncludeExclude(\r\n supported,\r\n facetConfig?.includeProperties,\r\n facetConfig?.excludeProperties\r\n );\r\n const runtimeScoped = applyIncludeExclude(\r\n profileScoped,\r\n toInformationUnitPropertyKeys(options?.includeProperties),\r\n toInformationUnitPropertyKeys(options?.excludeProperties)\r\n );\r\n\r\n const tagSet = new Set<string>(runtimeScoped);\r\n (facetConfig?.extraTags || []).forEach((tag) => tagSet.add(tag));\r\n (options?.extraTags || []).forEach((tag) => tagSet.add(tag));\r\n\r\n return Array.from(tagSet);\r\n};\r\n\r\ntype ResolveMetadataDisplayPropertiesOptions = {\r\n profileId?: MetadataViewProfileId;\r\n includeProperties?: string[];\r\n excludeProperties?: string[];\r\n};\r\n\r\n/**\r\n * Resolves the effective metadata properties used by generic metadata displays.\r\n * Supports profile-level defaults and usage-specific include/exclude narrowing.\r\n */\r\nexport const resolveMetadataDisplayProperties = (\r\n options?: ResolveMetadataDisplayPropertiesOptions\r\n): InformationUnitPropertyKey[] => {\r\n const profile = METADATA_VIEW_PROFILES[options?.profileId || \"default-metadata-display\"];\r\n const displayConfig = profile.metadataDisplay;\r\n\r\n const supported = DEFAULT_METADATA_DISPLAY_PROPERTIES;\r\n const profileScoped = applyIncludeExclude(\r\n supported,\r\n displayConfig?.includeProperties,\r\n displayConfig?.excludeProperties\r\n );\r\n return applyIncludeExclude(\r\n profileScoped,\r\n toInformationUnitPropertyKeys(options?.includeProperties),\r\n toInformationUnitPropertyKeys(options?.excludeProperties)\r\n );\r\n};\r\n"],"mappings":"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","names":["import_requests","import_cache","import_requests","resolveLocalizedLabel","import_requests","import_utils","import_cache","stableSerialize"]}
|