industrial-model 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cognite/adapter.ts","../src/constants.ts","../src/mappers/utils.ts","../src/mappers/filter-mapper.ts","../src/mappers/sort-mapper.ts","../src/mappers/query-mapper.ts","../src/mappers/result-mapper.ts","../src/mappers/view-mapper.ts","../src/utils/query.ts","../src/client.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["import type { CogniteClient } from \"@cognite/sdk\";\nimport type { CognitePort } from \"./port\";\nimport type {\n DataModelId,\n DataModelRetrieveOptions,\n InstancesQueryRequest,\n InstancesQueryResponse,\n ViewDefinition,\n} from \"./types\";\n\nexport function createCogniteAdapter(client: CogniteClient): CognitePort {\n return new CogniteSdkAdapter(client);\n}\n\nclass CogniteSdkAdapter implements CognitePort {\n constructor(private readonly client: CogniteClient) {}\n\n async retrieveDataModels(ids: DataModelId[], options?: DataModelRetrieveOptions) {\n const response = await this.client.dataModels.retrieve(ids, options);\n return {\n items: response.items.map((item) => ({\n createdTime: item.createdTime,\n views: (item.views ?? []) as ViewDefinition[],\n })),\n };\n }\n\n async queryInstances(request: InstancesQueryRequest): Promise<InstancesQueryResponse> {\n const response = await this.client.instances.query(\n request as Parameters<CogniteClient[\"instances\"][\"query\"]>[0],\n );\n return {\n items: response.items as unknown as InstancesQueryResponse[\"items\"],\n nextCursor: response.nextCursor,\n };\n }\n}\n","export const NESTED_SEP = \"|\" as const;\nexport const EDGE_MARKER = \"<EdgeMarker>\" as const;\nexport const MAX_LIMIT = 10_000;\nexport const DEFAULT_LIMIT = 1_000;\nexport const MAX_DEPENDENCY_DEPTH = 3;\n","import type {\n EdgeConnection,\n QuerySelectExpression,\n ReverseDirectRelationConnection,\n ViewDefinition,\n ViewDefinitionProperty,\n ViewPropertyDefinition,\n ViewReference,\n} from \"../cognite\";\n\nconst NODE_PROPERTIES = new Set([\n \"externalId\",\n \"space\",\n \"createdTime\",\n \"deletedTime\",\n \"lastUpdatedTime\",\n]);\n\nexport function getPropertyRef(\n property: string,\n view: ViewDefinition,\n instanceType: \"node\" | \"edge\" = \"node\",\n): string[] {\n if (NODE_PROPERTIES.has(property)) return [instanceType, property];\n return [view.space, `${view.externalId}/${view.version}`, property];\n}\n\nexport function toViewReference(view: ViewDefinition): ViewReference {\n return { type: \"view\", space: view.space, externalId: view.externalId, version: view.version };\n}\n\nexport function isViewPropertyDefinition(p: ViewDefinitionProperty): p is ViewPropertyDefinition {\n return \"container\" in p;\n}\n\nexport function isReverseDirectRelation(\n p: ViewDefinitionProperty,\n): p is ReverseDirectRelationConnection {\n return \"through\" in p;\n}\n\nexport function isEdgeConnection(p: ViewDefinitionProperty): p is EdgeConnection {\n return !isViewPropertyDefinition(p) && !isReverseDirectRelation(p) && \"source\" in p;\n}\n\nexport function getDirectRelationSource(p: ViewPropertyDefinition): ViewReference | undefined {\n const type = p.type;\n if (type.type === \"direct\" && type.source) return type.source;\n return undefined;\n}\n\nexport function isDirectRelationWithSource(p: ViewDefinitionProperty): boolean {\n if (!isViewPropertyDefinition(p)) return false;\n return getDirectRelationSource(p) !== undefined;\n}\n\nexport function isListDirectRelation(p: ViewPropertyDefinition): boolean {\n return p.type.list === true;\n}\n\nexport function buildSelect(\n source: ViewReference,\n properties: string[],\n): QuerySelectExpression | Record<string, never> {\n if (properties.length === 0) return {};\n return { sources: [{ source, properties }] };\n}\n","import type { FilterDefinition, ViewDefinition } from \"../cognite\";\nimport { getDirectRelationSource, getPropertyRef, isViewPropertyDefinition } from \"./utils\";\nimport type { ViewMapper } from \"./view-mapper\";\n\nconst LEAF_OPS = new Set([\n \"eq\",\n \"in\",\n \"gt\",\n \"gte\",\n \"lt\",\n \"lte\",\n \"exists\",\n \"prefix\",\n \"containsAny\",\n \"containsAll\",\n]);\n\nfunction isLeafFilter(value: Record<string, unknown>): boolean {\n return Object.keys(value).some((k) => LEAF_OPS.has(k));\n}\n\nexport class FilterMapper {\n constructor(private readonly viewMapper: ViewMapper) {}\n\n async map(input: Record<string, unknown>, rootView: ViewDefinition): Promise<FilterDefinition[]> {\n const result: FilterDefinition[] = [];\n\n for (const [key, value] of Object.entries(input)) {\n if (value == null) continue;\n\n if (key === \"AND\") {\n const clauses = (Array.isArray(value) ? value : [value]) as Record<string, unknown>[];\n const inner = await Promise.all(clauses.map((c) => this.whereInputToSingle(c, rootView)));\n result.push({ and: inner });\n } else if (key === \"OR\") {\n const clauses = value as Record<string, unknown>[];\n const branches = await Promise.all(\n clauses.map((c) => this.whereInputToSingle(c, rootView)),\n );\n result.push({ or: branches });\n } else if (key === \"NOT\") {\n const clauses = (Array.isArray(value) ? value : [value]) as Record<string, unknown>[];\n const [firstClause, ...restClauses] = clauses;\n const combined: Record<string, unknown> =\n restClauses.length === 0 && firstClause !== undefined ? firstClause : { AND: clauses };\n result.push({ not: await this.whereInputToSingle(combined, rootView) });\n } else {\n const filterValue = value as Record<string, unknown>;\n const property = getPropertyRef(key, rootView);\n if (isLeafFilter(filterValue)) {\n result.push(...this.leafToFilterDefs(property, filterValue));\n } else {\n const targetView = await this.getNestedTargetView(key, rootView);\n const innerFilter = await this.whereInputToSingle(filterValue, targetView);\n result.push({ nested: { scope: property, filter: innerFilter } });\n }\n }\n }\n\n return result;\n }\n\n private async whereInputToSingle(\n input: Record<string, unknown>,\n rootView: ViewDefinition,\n ): Promise<FilterDefinition> {\n const filters = await this.map(input, rootView);\n const [firstFilter, ...restFilters] = filters;\n if (restFilters.length === 0 && firstFilter !== undefined) {\n return firstFilter;\n }\n return { and: filters };\n }\n\n private leafToFilterDefs(\n property: string[],\n filter: Record<string, unknown>,\n ): FilterDefinition[] {\n const result: FilterDefinition[] = [];\n\n if (\"eq\" in filter && filter.eq !== undefined) {\n result.push({\n equals: { property, value: this.coerceValue(filter.eq) as string | number | boolean },\n });\n }\n if (\"in\" in filter && filter.in !== undefined) {\n result.push({\n in: { property, values: this.coerceValue(filter.in) as (string | number | boolean)[] },\n });\n }\n if (\"gt\" in filter && filter.gt !== undefined) {\n result.push({ range: { property, gt: this.coerceValue(filter.gt) as number | string } });\n }\n if (\"gte\" in filter && filter.gte !== undefined) {\n result.push({ range: { property, gte: this.coerceValue(filter.gte) as number | string } });\n }\n if (\"lt\" in filter && filter.lt !== undefined) {\n result.push({ range: { property, lt: this.coerceValue(filter.lt) as number | string } });\n }\n if (\"lte\" in filter && filter.lte !== undefined) {\n result.push({ range: { property, lte: this.coerceValue(filter.lte) as number | string } });\n }\n if (\"exists\" in filter) {\n if (filter.exists === true) {\n result.push({ exists: { property } });\n } else if (filter.exists === false) {\n result.push({ not: { exists: { property } } });\n }\n }\n if (\"prefix\" in filter && filter.prefix !== undefined) {\n result.push({ prefix: { property, value: this.coerceValue(filter.prefix) as string } });\n }\n if (\"containsAll\" in filter && filter.containsAll !== undefined) {\n result.push({\n containsAll: {\n property,\n values: this.coerceValue(filter.containsAll) as (string | number | boolean)[],\n },\n });\n }\n if (\"containsAny\" in filter && filter.containsAny !== undefined) {\n result.push({\n containsAny: {\n property,\n values: this.coerceValue(filter.containsAny) as (string | number | boolean)[],\n },\n });\n }\n\n return result;\n }\n\n private async getNestedTargetView(\n property: string,\n rootView: ViewDefinition,\n ): Promise<ViewDefinition> {\n const viewProp = rootView.properties[property];\n if (!viewProp || !isViewPropertyDefinition(viewProp)) {\n throw new Error(`Property \"${property}\" is not a mapped property`);\n }\n const source = getDirectRelationSource(viewProp);\n if (!source) throw new Error(`Property \"${property}\" has no relation source`);\n return this.viewMapper.getView(source.externalId);\n }\n\n private coerceValue(value: unknown): unknown {\n if (value instanceof Date) return value.toISOString();\n if (Array.isArray(value)) return value.map((v) => this.coerceValue(v));\n return value;\n }\n}\n","import type { PropertySort, ViewDefinition } from \"../cognite\";\nimport type { SortDirection } from \"../types\";\nimport { getPropertyRef, isDirectRelationWithSource } from \"./utils\";\n\nexport class SortMapper {\n map(sortClauses: Record<string, SortDirection>, rootView: ViewDefinition): PropertySort[] {\n return Object.entries(sortClauses).map(([property, direction]) => ({\n property: getPropertyRef(property, rootView),\n direction,\n nullsFirst: this.isNullsFirst(property, rootView, direction),\n }));\n }\n\n private isNullsFirst(property: string, view: ViewDefinition, direction: SortDirection): boolean {\n const prop = view.properties[property];\n if (prop && isDirectRelationWithSource(prop)) {\n return direction === \"ascending\";\n }\n return direction === \"descending\";\n }\n}\n","import type {\n FilterDefinition,\n InstancesQueryRequest,\n QueryNodeTableExpression,\n QuerySelectExpression,\n QueryTableExpression,\n TableExpressionFilter,\n ViewDefinition,\n ViewReference,\n} from \"../cognite\";\nimport { DEFAULT_LIMIT, EDGE_MARKER, MAX_LIMIT, NESTED_SEP } from \"../constants\";\nimport type { QueryOptions, QuerySelect } from \"../types\";\nimport { FilterMapper } from \"./filter-mapper\";\nimport { SortMapper } from \"./sort-mapper\";\nimport {\n buildSelect,\n getDirectRelationSource,\n isEdgeConnection,\n isReverseDirectRelation,\n isViewPropertyDefinition,\n toViewReference,\n} from \"./utils\";\nimport type { ViewMapper } from \"./view-mapper\";\n\nexport class QueryMapper {\n private readonly filterMapper: FilterMapper;\n private readonly sortMapper: SortMapper;\n\n constructor(private readonly viewMapper: ViewMapper) {\n this.filterMapper = new FilterMapper(viewMapper);\n this.sortMapper = new SortMapper();\n }\n\n async map<T, TRelation = never>(\n options: QueryOptions<T, TRelation>,\n ): Promise<InstancesQueryRequest> {\n const {\n viewExternalId,\n select = { _all: true },\n filters,\n sortClauses = {},\n limit: requestedLimit = DEFAULT_LIMIT,\n cursor = null,\n } = options;\n const limit = requestedLimit === -1 ? DEFAULT_LIMIT : requestedLimit;\n\n const rootView = await this.viewMapper.getView(viewExternalId);\n const rootViewRef = toViewReference(rootView);\n\n const whereFilters = filters\n ? await this.filterMapper.map(filters as Record<string, unknown>, rootView)\n : [];\n\n const baseFilters: FilterDefinition[] = [{ hasData: [rootViewRef] }, ...whereFilters];\n\n const withExprs: Record<string, QueryTableExpression> = {\n [viewExternalId]: {\n nodes: {\n filter: { and: baseFilters } as TableExpressionFilter,\n },\n sort: this.sortMapper.map(sortClauses, rootView),\n limit,\n },\n };\n const selectExprs: Record<string, QuerySelectExpression | Record<string, never>> = {};\n\n const properties = await this.includeStatements(\n viewExternalId,\n rootView,\n select,\n withExprs,\n selectExprs,\n );\n\n selectExprs[viewExternalId] = buildSelect(rootViewRef, properties);\n\n const cursors: Record<string, string> = {};\n if (cursor != null) cursors[viewExternalId] = cursor;\n\n return { with: withExprs, select: selectExprs, cursors };\n }\n\n private async includeStatements<T, TRelation = never>(\n key: string,\n view: ViewDefinition,\n select: QuerySelect<T, TRelation>,\n withExprs: Record<string, QueryTableExpression>,\n selectExprs: Record<string, QuerySelectExpression | Record<string, never>>,\n ): Promise<string[]> {\n const selectProperties: string[] = [];\n const selectRecord = select as Record<string, boolean | QuerySelect<T> | undefined>;\n for (const [propertyName, property] of Object.entries(view.properties)) {\n const propertyKey = `${key}${NESTED_SEP}${propertyName}`;\n\n const canIncludeProperty = select._all === true || propertyName in select;\n if (!canIncludeProperty) {\n continue;\n }\n\n const relationToInclude =\n propertyName in select &&\n selectRecord[propertyName] != null &&\n typeof selectRecord[propertyName] === \"object\"\n ? selectRecord[propertyName]\n : null;\n if (isViewPropertyDefinition(property)) {\n const relSource = getDirectRelationSource(property);\n if (!relSource) {\n selectProperties.push(propertyName);\n } else {\n selectProperties.push(propertyName);\n const nestedView = await this.viewMapper.getView(relSource.externalId);\n const props =\n relationToInclude != null\n ? await this.includeStatements(\n propertyKey,\n nestedView,\n relationToInclude,\n withExprs,\n selectExprs,\n )\n : [];\n if (props.length > 0) {\n (withExprs[propertyKey] as QueryNodeTableExpression) = {\n nodes: {\n from: key,\n direction: \"outwards\",\n through: { view: toViewReference(view), identifier: propertyName },\n },\n limit: MAX_LIMIT,\n };\n selectExprs[propertyKey] = buildSelect(relSource, props);\n }\n }\n } else if (isReverseDirectRelation(property) && relationToInclude != null) {\n const nestedView = await this.viewMapper.getView(property.source.externalId);\n const props = await this.includeStatements(\n propertyKey,\n nestedView,\n relationToInclude,\n withExprs,\n selectExprs,\n );\n if (!props.includes(property.through.identifier)) {\n props.push(property.through.identifier);\n }\n (withExprs[propertyKey] as QueryNodeTableExpression) = {\n nodes: {\n from: key,\n direction: \"inwards\",\n through: {\n source: property.through.source as ViewReference,\n identifier: property.through.identifier,\n },\n },\n limit: MAX_LIMIT,\n };\n selectExprs[propertyKey] = buildSelect(property.source, props);\n } else if (isEdgeConnection(property) && relationToInclude != null) {\n const edgePropertyKey = `${propertyKey}${NESTED_SEP}${EDGE_MARKER}`;\n\n withExprs[edgePropertyKey] = {\n edges: {\n from: key,\n maxDistance: 1,\n filter: {\n equals: { property: [\"edge\", \"type\"], value: property.type },\n } as TableExpressionFilter,\n direction: property.direction ?? \"outwards\",\n },\n limit: MAX_LIMIT,\n };\n (withExprs[propertyKey] as QueryNodeTableExpression) = {\n nodes: { from: edgePropertyKey },\n limit: MAX_LIMIT,\n };\n selectExprs[edgePropertyKey] = {};\n\n const nestedView = await this.viewMapper.getView(property.source.externalId);\n const props = await this.includeStatements(\n propertyKey,\n nestedView,\n relationToInclude,\n withExprs,\n selectExprs,\n );\n selectExprs[propertyKey] = buildSelect(property.source, props);\n }\n }\n\n return selectProperties;\n }\n}\n","import type {\n EdgeDefinition,\n NodeDefinition,\n ReverseDirectRelationConnection,\n ViewDefinition,\n} from \"../cognite\";\nimport { EDGE_MARKER, NESTED_SEP } from \"../constants\";\nimport type { QueryResultMap } from \"../types\";\nimport {\n getDirectRelationSource,\n isEdgeConnection,\n isListDirectRelation,\n isReverseDirectRelation,\n isViewPropertyDefinition,\n} from \"./utils\";\nimport type { ViewMapper } from \"./view-mapper\";\n\ntype ConnectionType = \"DirectRelation\" | \"ReverseDirectRelation\" | \"Edge\";\n\ninterface PropertyMapping {\n isList: boolean;\n connectionType: ConnectionType;\n nodes: Map<string, NodeDefinition[]>;\n edges: Map<string, EdgeDefinition[]>;\n}\n\nfunction nodeInstanceId(node: NodeDefinition): string {\n return `${node.space}:${node.externalId}`;\n}\n\nfunction getElementKeys(node: NodeDefinition, element: unknown): string[] {\n if (element && typeof element === \"object\" && !Array.isArray(element)) {\n const ref = element as Record<string, string>;\n return [`${ref.space ?? \"\"}:${ref.externalId ?? \"\"}`];\n }\n if (Array.isArray(element)) {\n return element\n .filter((item) => item && typeof item === \"object\")\n .map((item) => {\n const ref = item as Record<string, string>;\n return `${ref.space ?? \"\"}:${ref.externalId ?? \"\"}`;\n });\n }\n return [nodeInstanceId(node)];\n}\n\nexport class QueryResultMapper {\n constructor(private readonly viewMapper: ViewMapper) {}\n\n async mapNodes(\n rootNode: string,\n queryResult: QueryResultMap,\n ): Promise<Record<string, unknown>[]> {\n if (!(rootNode in queryResult)) {\n throw new Error(`\"${rootNode}\" is not available in the query result`);\n }\n\n const rootView = await this.viewMapper.getView(rootNode);\n const values = await this.mapNodeProperty(rootNode, rootView, queryResult);\n if (!values) return [];\n\n return [...values.values()].flatMap((nodes) => nodes.map((n) => this.nodeToDict(n)));\n }\n\n private async mapNodeProperty(\n key: string,\n view: ViewDefinition,\n queryResult: QueryResultMap,\n resultPropertyKey?: string,\n ): Promise<Map<string, NodeDefinition[]> | null> {\n if (!(key in queryResult)) return null;\n\n const mappings = await this.getPropertyMappings(key, view, queryResult);\n const viewKey = `${view.externalId}/${view.version}`;\n\n const visited = new Set<string>();\n const result = new Map<string, NodeDefinition[]>();\n\n for (const item of queryResult[key] ?? []) {\n if (item.instanceType !== \"node\") continue;\n const node = item as NodeDefinition;\n\n const id = nodeInstanceId(node);\n if (visited.has(id)) continue;\n visited.add(id);\n\n const spaceProps = node.properties?.[view.space];\n if (!spaceProps || !(viewKey in spaceProps)) continue;\n\n const properties: Record<string, unknown> = { ...(spaceProps[viewKey] ?? {}) };\n\n const getResultId = (): string => {\n if (!resultPropertyKey) return id;\n const entry = properties[resultPropertyKey];\n if (!entry || typeof entry !== \"object\") {\n throw new Error(`Invalid result property key \"${resultPropertyKey}\"`);\n }\n const ref = entry as Record<string, string>;\n return `${ref.space ?? \"\"}:${ref.externalId ?? \"\"}`;\n };\n\n const edgesMapping: Record<string, EdgeDefinition[]> = {};\n const resultId = getResultId();\n\n for (const [mappingKey, mapping] of Object.entries(mappings)) {\n const element = properties[mappingKey];\n const { isList, connectionType, nodes: mappingNodes, edges: mappingEdges } = mapping;\n\n if (element === undefined && connectionType === \"DirectRelation\") continue;\n\n const elementKeys = getElementKeys(node, element);\n const nodeEntries = elementKeys.flatMap((k) => mappingNodes.get(k) ?? []);\n\n if (nodeEntries.length === 0) {\n delete properties[mappingKey];\n continue;\n }\n\n const entryData = nodeEntries.map((n) => this.nodeToDict(n));\n properties[mappingKey] = isList ? entryData : entryData[0];\n\n const edgeEntries = elementKeys.flatMap((k) => mappingEdges.get(k) ?? []);\n if (edgeEntries.length > 0) edgesMapping[mappingKey] = edgeEntries;\n }\n\n properties._edges = edgesMapping;\n\n if (node.properties?.[view.space]) {\n node.properties[view.space] = {\n ...node.properties[view.space],\n [viewKey]: properties,\n };\n }\n\n const existing = result.get(resultId);\n if (existing) {\n existing.push(node);\n } else {\n result.set(resultId, [node]);\n }\n }\n\n return result;\n }\n\n private async getPropertyMappings(\n key: string,\n view: ViewDefinition,\n queryResult: QueryResultMap,\n ): Promise<Record<string, PropertyMapping>> {\n const mappings: Record<string, PropertyMapping> = {};\n\n for (const [propertyName, property] of Object.entries(view.properties)) {\n const propertyKey = `${key}${NESTED_SEP}${propertyName}`;\n\n let nodes: Map<string, NodeDefinition[]> | null = null;\n let edges: Map<string, EdgeDefinition[]> = new Map();\n let isList = false;\n let connectionType: ConnectionType = \"DirectRelation\";\n\n if (isViewPropertyDefinition(property)) {\n const source = getDirectRelationSource(property);\n if (source) {\n const nestedView = await this.viewMapper.getView(source.externalId);\n nodes = await this.mapNodeProperty(propertyKey, nestedView, queryResult);\n isList = isListDirectRelation(property);\n connectionType = \"DirectRelation\";\n }\n } else if (isReverseDirectRelation(property)) {\n const rel = property as ReverseDirectRelationConnection;\n const nestedView = await this.viewMapper.getView(rel.source.externalId);\n nodes = await this.mapNodeProperty(\n propertyKey,\n nestedView,\n queryResult,\n rel.through.identifier,\n );\n isList = rel.connectionType === \"multi_reverse_direct_relation\" || rel.targetsList === true;\n connectionType = \"ReverseDirectRelation\";\n } else if (isEdgeConnection(property)) {\n const nestedView = await this.viewMapper.getView(property.source.externalId);\n const [edgeNodes, edgeEdges] = await this.mapEdgeProperty(\n propertyKey,\n nestedView,\n queryResult,\n property.direction ?? \"outwards\",\n );\n nodes = edgeNodes;\n edges = edgeEdges ?? new Map();\n isList = true;\n connectionType = \"Edge\";\n }\n\n if (nodes !== null) {\n mappings[propertyName] = { isList, connectionType, nodes, edges };\n }\n }\n\n return mappings;\n }\n\n private async mapEdgeProperty(\n key: string,\n view: ViewDefinition,\n queryResult: QueryResultMap,\n edgeDirection: \"outwards\" | \"inwards\",\n ): Promise<[Map<string, NodeDefinition[]> | null, Map<string, EdgeDefinition[]> | null]> {\n const edgeKey = `${key}${NESTED_SEP}${EDGE_MARKER}`;\n if (!(key in queryResult) || !(edgeKey in queryResult)) return [null, null];\n\n const nodes = await this.mapNodeProperty(key, view, queryResult);\n if (!nodes) return [null, null];\n\n const visitedEdges = new Set<string>();\n const nodesResult = new Map<string, NodeDefinition[]>();\n const edgesResult = new Map<string, EdgeDefinition[]>();\n\n for (const item of queryResult[edgeKey] ?? []) {\n if (item.instanceType !== \"edge\") continue;\n const edge = item as EdgeDefinition;\n\n const edgeId = `${edge.space}:${edge.externalId}`;\n if (visitedEdges.has(edgeId)) continue;\n visitedEdges.add(edgeId);\n\n const entryKey =\n edgeDirection === \"inwards\"\n ? `${edge.endNode.space}:${edge.endNode.externalId}`\n : `${edge.startNode.space}:${edge.startNode.externalId}`;\n const nodeKey =\n edgeDirection === \"inwards\"\n ? `${edge.startNode.space}:${edge.startNode.externalId}`\n : `${edge.endNode.space}:${edge.endNode.externalId}`;\n\n const existingEdges = edgesResult.get(entryKey);\n if (existingEdges) existingEdges.push(edge);\n else edgesResult.set(entryKey, [edge]);\n\n const relatedNodes = nodes.get(nodeKey);\n if (relatedNodes) {\n const existingNodes = nodesResult.get(entryKey);\n if (existingNodes) existingNodes.push(...relatedNodes);\n else nodesResult.set(entryKey, relatedNodes.slice());\n }\n }\n\n return [nodesResult, edgesResult];\n }\n\n private nodeToDict(node: NodeDefinition): Record<string, unknown> {\n const { properties, ...rest } = node;\n const entry: Record<string, unknown> = { ...rest };\n\n for (const spaceProp of Object.values(properties ?? {})) {\n for (const viewProp of Object.values(spaceProp)) {\n Object.assign(entry, viewProp);\n }\n }\n\n return entry;\n }\n}\n","import type { CognitePort, ViewDefinition } from \"../cognite\";\nimport type { DataModelId } from \"../types\";\n\nexport class ViewMapper {\n private cachePromise: Promise<Map<string, ViewDefinition>> | null = null;\n\n constructor(\n private readonly cognite: CognitePort,\n private readonly dataModelId: DataModelId,\n ) {}\n\n async getView(externalId: string): Promise<ViewDefinition> {\n const views = await this.loadViews();\n const view = views.get(externalId);\n if (!view) {\n throw new Error(\n `View \"${externalId}\" not found in data model \"${this.dataModelId.externalId}\"`,\n );\n }\n return view;\n }\n\n private loadViews(): Promise<Map<string, ViewDefinition>> {\n if (this.cachePromise == null) {\n this.cachePromise = this.fetchViews();\n }\n return this.cachePromise;\n }\n\n private async fetchViews(): Promise<Map<string, ViewDefinition>> {\n const response = await this.cognite.retrieveDataModels(\n [\n {\n space: this.dataModelId.space,\n externalId: this.dataModelId.externalId,\n version: this.dataModelId.version,\n },\n ],\n { inlineViews: true },\n );\n\n const dm = response.items.sort((a, b) => b.createdTime - a.createdTime)[0];\n if (!dm) {\n throw new Error(`Data model \"${this.dataModelId.externalId}\" not found`);\n }\n\n const views = new Map<string, ViewDefinition>();\n for (const view of dm.views ?? []) {\n views.set(view.externalId, view);\n }\n return views;\n }\n}\n","import type { InstancesQueryRequest, InstancesQueryResponse } from \"../cognite\";\nimport { EDGE_MARKER, MAX_LIMIT, NESTED_SEP } from \"../constants\";\nimport type { QueryResultMap } from \"../types\";\n\nexport function mapNodesAndEdges(\n queryResult: InstancesQueryResponse,\n _query: InstancesQueryRequest,\n): QueryResultMap {\n return queryResult.items;\n}\n\nexport function appendNodesAndEdges(\n initial: QueryResultMap,\n additional: QueryResultMap | null,\n): QueryResultMap {\n if (!additional) return initial;\n\n for (const [key, items] of Object.entries(additional)) {\n const existing = initial[key];\n if (existing) {\n existing.push(...items);\n } else {\n initial[key] = [...items];\n }\n }\n\n return initial;\n}\n\nexport function getQueryForDependenciesPagination(\n query: InstancesQueryRequest,\n queryResult: InstancesQueryResponse,\n viewExternalId: string,\n): InstancesQueryRequest | null {\n const cursorKeys = new Set(Object.keys(queryResult.nextCursor));\n const { nodesParent, nodesChildren } = getParentAndChildrenNodes(cursorKeys);\n\n const leafCursors = getLeafCursors(queryResult, viewExternalId, nodesParent, nodesChildren);\n\n if (Object.keys(leafCursors).length === 0) {\n return null;\n }\n\n return buildDependenciesQuery(query, nodesParent, nodesChildren, leafCursors);\n}\n\nfunction getParentAndChildrenNodes(keys: Set<string>): {\n nodesParent: Map<string, Set<string>>;\n nodesChildren: Map<string, Set<string>>;\n} {\n const nodesParent = new Map<string, Set<string>>();\n const nodesChildren = new Map<string, Set<string>>();\n\n for (const key of keys) {\n const keyParts = key.split(NESTED_SEP);\n const validParents = new Set<string>();\n\n for (let i = keyParts.length - 1; i > 0; i--) {\n const parentPath = keyParts.slice(0, i).join(NESTED_SEP);\n const parentWithEdgeMarker = `${parentPath}${NESTED_SEP}${EDGE_MARKER}`;\n\n if (keys.has(parentWithEdgeMarker)) {\n validParents.add(parentWithEdgeMarker);\n const children = nodesChildren.get(parentWithEdgeMarker) ?? new Set<string>();\n children.add(key);\n nodesChildren.set(parentWithEdgeMarker, children);\n }\n if (keys.has(parentPath)) {\n validParents.add(parentPath);\n const children = nodesChildren.get(parentPath) ?? new Set<string>();\n children.add(key);\n nodesChildren.set(parentPath, children);\n }\n }\n\n nodesParent.set(key, validParents);\n }\n\n return { nodesParent, nodesChildren };\n}\n\nfunction getLeafCursors(\n queryResult: InstancesQueryResponse,\n viewExternalId: string,\n nodesParent: Map<string, Set<string>>,\n nodesChildren: Map<string, Set<string>>,\n): Record<string, string> {\n const targetCursors: Record<string, string> = {};\n const targetCursorKeys = new Set<string>();\n\n for (const [cursorKey, cursorValue] of Object.entries(queryResult.nextCursor)) {\n if (\n cursorKey === viewExternalId ||\n !cursorValue ||\n (queryResult.items[cursorKey]?.length ?? 0) !== MAX_LIMIT\n ) {\n continue;\n }\n\n const children = nodesChildren.get(cursorKey) ?? new Set<string>();\n let skipDueToChild = false;\n for (const c of children) {\n if (targetCursorKeys.has(c)) {\n skipDueToChild = true;\n break;\n }\n }\n if (skipDueToChild) continue;\n\n const parent = nodesParent.get(cursorKey) ?? new Set<string>();\n for (const key of parent) {\n if (targetCursorKeys.has(key)) {\n delete targetCursors[key];\n targetCursorKeys.delete(key);\n }\n }\n\n targetCursors[cursorKey] = cursorValue;\n targetCursorKeys.add(cursorKey);\n }\n\n return targetCursors;\n}\n\nfunction buildDependenciesQuery(\n previousQuery: InstancesQueryRequest,\n nodesParent: Map<string, Set<string>>,\n nodesChildren: Map<string, Set<string>>,\n leafCursors: Record<string, string>,\n): InstancesQueryRequest {\n const withExprs: InstancesQueryRequest[\"with\"] = {};\n const selectExprs: InstancesQueryRequest[\"select\"] = {};\n const finalCursors: Record<string, string> = {};\n\n for (const [cursorKey, cursorValue] of Object.entries(leafCursors)) {\n const children = nodesChildren.get(cursorKey) ?? new Set<string>();\n const parent = nodesParent.get(cursorKey) ?? new Set<string>();\n const validKeys = new Set([...parent, ...children, cursorKey]);\n\n for (const [k, v] of Object.entries(previousQuery.with)) {\n if (validKeys.has(k)) withExprs[k] = v;\n }\n for (const [k, v] of Object.entries(previousQuery.select)) {\n if (validKeys.has(k)) selectExprs[k] = v;\n }\n for (const [k, v] of Object.entries(previousQuery.cursors ?? {})) {\n if (parent.has(k) && v) finalCursors[k] = v;\n }\n\n finalCursors[cursorKey] = cursorValue;\n }\n\n return { with: withExprs, select: selectExprs, cursors: finalCursors };\n}\n","import type { CogniteClient } from \"@cognite/sdk\";\nimport {\n type CognitePort,\n createCogniteAdapter,\n type InstancesQueryRequest,\n type InstancesQueryResponse,\n} from \"./cognite\";\nimport { DEFAULT_LIMIT, MAX_DEPENDENCY_DEPTH } from \"./constants\";\nimport { QueryMapper } from \"./mappers/query-mapper\";\nimport { QueryResultMapper } from \"./mappers/result-mapper\";\nimport { ViewMapper } from \"./mappers/view-mapper\";\nimport type { DataModelId, QueryOptions, QueryResult, QueryResultMap } from \"./types\";\nimport {\n appendNodesAndEdges,\n getQueryForDependenciesPagination,\n mapNodesAndEdges,\n} from \"./utils/query\";\n\nexport class IndustrialModel {\n private readonly cognite: CognitePort;\n private readonly queryMapper: QueryMapper;\n private readonly resultMapper: QueryResultMapper;\n\n constructor(client: CogniteClient, dataModelId: DataModelId) {\n const cognite = createCogniteAdapter(client);\n this.cognite = cognite;\n const viewMapper = new ViewMapper(cognite, dataModelId);\n this.queryMapper = new QueryMapper(viewMapper);\n this.resultMapper = new QueryResultMapper(viewMapper);\n }\n\n async query<T, TRelation = never>(options: QueryOptions<T, TRelation>): Promise<QueryResult> {\n const { viewExternalId, limit = DEFAULT_LIMIT } = options;\n const allPages = options.limit === -1;\n const cogniteQuery = await this.queryMapper.map(options);\n const data: Record<string, unknown>[] = [];\n\n while (true) {\n const queryResult = await this.cognite.queryInstances(cogniteQuery);\n\n const dependenciesData = await this.queryDependenciesPages(\n cogniteQuery,\n queryResult,\n viewExternalId,\n );\n\n const queryResultData = appendNodesAndEdges(\n mapNodesAndEdges(queryResult, cogniteQuery),\n dependenciesData,\n );\n\n const pageResult = await this.resultMapper.mapNodes(viewExternalId, queryResultData);\n const nextCursor = queryResult.nextCursor[viewExternalId] ?? null;\n data.push(...pageResult);\n\n const isLastPage = pageResult.length < limit || !nextCursor;\n const resolvedCursor = isLastPage ? null : nextCursor;\n\n if (!isLastPage && resolvedCursor !== null) {\n cogniteQuery.cursors = { [viewExternalId]: resolvedCursor };\n }\n\n if (!allPages || isLastPage) {\n return { items: data, cursor: resolvedCursor };\n }\n }\n }\n\n private async queryDependenciesPages(\n cogniteQuery: InstancesQueryRequest,\n queryResult: InstancesQueryResponse,\n viewExternalId: string,\n remainingDepth = MAX_DEPENDENCY_DEPTH,\n ): Promise<QueryResultMap | null> {\n if (remainingDepth <= 0) {\n return null;\n }\n\n const newQuery = getQueryForDependenciesPagination(cogniteQuery, queryResult, viewExternalId);\n\n if (!newQuery) return null;\n\n const newQueryResult = await this.cognite.queryInstances(newQuery);\n const result = mapNodesAndEdges(newQueryResult, newQuery);\n\n const nestedResults = await this.queryDependenciesPages(\n newQuery,\n newQueryResult,\n viewExternalId,\n remainingDepth - 1,\n );\n\n return appendNodesAndEdges(result, nestedResults);\n }\n}\n"]}
@@ -0,0 +1,96 @@
1
+ import { CogniteClient } from '@cognite/sdk';
2
+
3
+ type NodeId = {
4
+ externalId: string;
5
+ space: string;
6
+ };
7
+ type DataModelId = NodeId & {
8
+ version: string;
9
+ };
10
+ type SortDirection = "ascending" | "descending";
11
+ type SelectFor<T, TRelation = never> = T extends Array<infer U> ? boolean | (U extends object ? QuerySelect<U, TRelation> : never) : T extends object ? boolean | QuerySelect<T, TRelation> : boolean;
12
+ type QuerySelect<T, TRelation = never> = {
13
+ _all?: boolean;
14
+ } & ([TRelation] extends [never] ? {
15
+ [K in keyof T]?: SelectFor<T[K], TRelation>;
16
+ } : {
17
+ [K in Exclude<keyof T, keyof TRelation>]?: SelectFor<T[K], TRelation>;
18
+ }) & ([TRelation] extends [never] ? {} : {
19
+ [K in keyof TRelation]?: SelectFor<TRelation[K], TRelation>;
20
+ });
21
+ type SortInput<T> = {
22
+ [K in keyof T as T[K] extends string | number | boolean | Date | NodeId ? K : never]?: SortDirection;
23
+ };
24
+ interface QueryOptions<T, TRelation = never> {
25
+ viewExternalId: string;
26
+ select?: QuerySelect<T, TRelation>;
27
+ filters?: WhereInput<T, TRelation>;
28
+ sortClauses?: SortInput<T>;
29
+ limit?: number;
30
+ cursor?: string | null;
31
+ }
32
+ interface QueryResult {
33
+ items: Record<string, unknown>[];
34
+ cursor: string | null;
35
+ }
36
+ type StringFilters = {
37
+ eq?: string;
38
+ in?: string[];
39
+ prefix?: string;
40
+ exists?: boolean;
41
+ };
42
+ type NumberFilters = {
43
+ eq?: number;
44
+ in?: number[];
45
+ gt?: number;
46
+ gte?: number;
47
+ lt?: number;
48
+ lte?: number;
49
+ exists?: boolean;
50
+ };
51
+ type BooleanFilters = {
52
+ eq?: boolean;
53
+ exists?: boolean;
54
+ };
55
+ type DateFilters = {
56
+ eq?: string;
57
+ in?: string[];
58
+ gt?: string;
59
+ gte?: string;
60
+ lt?: string;
61
+ lte?: string;
62
+ exists?: boolean;
63
+ };
64
+ type NodeIdFilters = {
65
+ eq?: NodeId;
66
+ in?: NodeId[];
67
+ exists?: boolean;
68
+ };
69
+ type ListFilters<T> = {
70
+ containsAny?: T[];
71
+ containsAll?: T[];
72
+ exists?: boolean;
73
+ };
74
+ type FilterFor<T, TRelation = never> = T extends NodeId ? NodeIdFilters : T extends string ? StringFilters : T extends number ? NumberFilters : T extends boolean ? BooleanFilters : T extends Date ? DateFilters : T extends Array<infer U> ? ListFilters<U> : T extends object ? NodeIdFilters | WhereInput<T, TRelation> : never;
75
+ type WhereInput<T, TRelation = never> = {
76
+ AND?: WhereInput<T, TRelation> | WhereInput<T, TRelation>[];
77
+ OR?: WhereInput<T, TRelation>[];
78
+ NOT?: WhereInput<T, TRelation> | WhereInput<T, TRelation>[];
79
+ } & ([TRelation] extends [never] ? {
80
+ [K in keyof T]?: FilterFor<T[K], TRelation>;
81
+ } : {
82
+ [K in Exclude<keyof T, keyof TRelation>]?: FilterFor<T[K], TRelation>;
83
+ }) & ([TRelation] extends [never] ? {} : {
84
+ [K in keyof TRelation]?: FilterFor<TRelation[K], TRelation>;
85
+ });
86
+
87
+ declare class IndustrialModel {
88
+ private readonly cognite;
89
+ private readonly queryMapper;
90
+ private readonly resultMapper;
91
+ constructor(client: CogniteClient, dataModelId: DataModelId);
92
+ query<T, TRelation = never>(options: QueryOptions<T, TRelation>): Promise<QueryResult>;
93
+ private queryDependenciesPages;
94
+ }
95
+
96
+ export { type DataModelId, IndustrialModel, type NodeId, type QueryOptions, type QueryResult };
@@ -0,0 +1,96 @@
1
+ import { CogniteClient } from '@cognite/sdk';
2
+
3
+ type NodeId = {
4
+ externalId: string;
5
+ space: string;
6
+ };
7
+ type DataModelId = NodeId & {
8
+ version: string;
9
+ };
10
+ type SortDirection = "ascending" | "descending";
11
+ type SelectFor<T, TRelation = never> = T extends Array<infer U> ? boolean | (U extends object ? QuerySelect<U, TRelation> : never) : T extends object ? boolean | QuerySelect<T, TRelation> : boolean;
12
+ type QuerySelect<T, TRelation = never> = {
13
+ _all?: boolean;
14
+ } & ([TRelation] extends [never] ? {
15
+ [K in keyof T]?: SelectFor<T[K], TRelation>;
16
+ } : {
17
+ [K in Exclude<keyof T, keyof TRelation>]?: SelectFor<T[K], TRelation>;
18
+ }) & ([TRelation] extends [never] ? {} : {
19
+ [K in keyof TRelation]?: SelectFor<TRelation[K], TRelation>;
20
+ });
21
+ type SortInput<T> = {
22
+ [K in keyof T as T[K] extends string | number | boolean | Date | NodeId ? K : never]?: SortDirection;
23
+ };
24
+ interface QueryOptions<T, TRelation = never> {
25
+ viewExternalId: string;
26
+ select?: QuerySelect<T, TRelation>;
27
+ filters?: WhereInput<T, TRelation>;
28
+ sortClauses?: SortInput<T>;
29
+ limit?: number;
30
+ cursor?: string | null;
31
+ }
32
+ interface QueryResult {
33
+ items: Record<string, unknown>[];
34
+ cursor: string | null;
35
+ }
36
+ type StringFilters = {
37
+ eq?: string;
38
+ in?: string[];
39
+ prefix?: string;
40
+ exists?: boolean;
41
+ };
42
+ type NumberFilters = {
43
+ eq?: number;
44
+ in?: number[];
45
+ gt?: number;
46
+ gte?: number;
47
+ lt?: number;
48
+ lte?: number;
49
+ exists?: boolean;
50
+ };
51
+ type BooleanFilters = {
52
+ eq?: boolean;
53
+ exists?: boolean;
54
+ };
55
+ type DateFilters = {
56
+ eq?: string;
57
+ in?: string[];
58
+ gt?: string;
59
+ gte?: string;
60
+ lt?: string;
61
+ lte?: string;
62
+ exists?: boolean;
63
+ };
64
+ type NodeIdFilters = {
65
+ eq?: NodeId;
66
+ in?: NodeId[];
67
+ exists?: boolean;
68
+ };
69
+ type ListFilters<T> = {
70
+ containsAny?: T[];
71
+ containsAll?: T[];
72
+ exists?: boolean;
73
+ };
74
+ type FilterFor<T, TRelation = never> = T extends NodeId ? NodeIdFilters : T extends string ? StringFilters : T extends number ? NumberFilters : T extends boolean ? BooleanFilters : T extends Date ? DateFilters : T extends Array<infer U> ? ListFilters<U> : T extends object ? NodeIdFilters | WhereInput<T, TRelation> : never;
75
+ type WhereInput<T, TRelation = never> = {
76
+ AND?: WhereInput<T, TRelation> | WhereInput<T, TRelation>[];
77
+ OR?: WhereInput<T, TRelation>[];
78
+ NOT?: WhereInput<T, TRelation> | WhereInput<T, TRelation>[];
79
+ } & ([TRelation] extends [never] ? {
80
+ [K in keyof T]?: FilterFor<T[K], TRelation>;
81
+ } : {
82
+ [K in Exclude<keyof T, keyof TRelation>]?: FilterFor<T[K], TRelation>;
83
+ }) & ([TRelation] extends [never] ? {} : {
84
+ [K in keyof TRelation]?: FilterFor<TRelation[K], TRelation>;
85
+ });
86
+
87
+ declare class IndustrialModel {
88
+ private readonly cognite;
89
+ private readonly queryMapper;
90
+ private readonly resultMapper;
91
+ constructor(client: CogniteClient, dataModelId: DataModelId);
92
+ query<T, TRelation = never>(options: QueryOptions<T, TRelation>): Promise<QueryResult>;
93
+ private queryDependenciesPages;
94
+ }
95
+
96
+ export { type DataModelId, IndustrialModel, type NodeId, type QueryOptions, type QueryResult };