@itwin/presentation-backend 5.12.0-dev.10 → 5.12.0-dev.12
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/CHANGELOG.md +6 -1
- package/lib/cjs/presentation-backend/BackendLoggerCategory.js.map +1 -1
- package/lib/cjs/presentation-backend/ElementPropertiesHelper.js +14 -14
- package/lib/cjs/presentation-backend/ElementPropertiesHelper.js.map +1 -1
- package/lib/cjs/presentation-backend/InternalSymbols.js.map +1 -1
- package/lib/cjs/presentation-backend/NativePlatform.js.map +1 -1
- package/lib/cjs/presentation-backend/Presentation.d.ts +9 -0
- package/lib/cjs/presentation-backend/Presentation.d.ts.map +1 -1
- package/lib/cjs/presentation-backend/Presentation.js +2 -0
- package/lib/cjs/presentation-backend/Presentation.js.map +1 -1
- package/lib/cjs/presentation-backend/PresentationIpcHandler.js +4 -4
- package/lib/cjs/presentation-backend/PresentationIpcHandler.js.map +1 -1
- package/lib/cjs/presentation-backend/PresentationManager.js.map +1 -1
- package/lib/cjs/presentation-backend/PresentationManagerDetail.js.map +1 -1
- package/lib/cjs/presentation-backend/PresentationRpcImpl.d.ts +7 -2
- package/lib/cjs/presentation-backend/PresentationRpcImpl.d.ts.map +1 -1
- package/lib/cjs/presentation-backend/PresentationRpcImpl.js +52 -23
- package/lib/cjs/presentation-backend/PresentationRpcImpl.js.map +1 -1
- package/lib/cjs/presentation-backend/RulesetEmbedder.js +4 -4
- package/lib/cjs/presentation-backend/RulesetEmbedder.js.map +1 -1
- package/lib/cjs/presentation-backend/RulesetManager.js.map +1 -1
- package/lib/cjs/presentation-backend/RulesetVariablesManager.js.map +1 -1
- package/lib/cjs/presentation-backend/SelectionScopesHelper.js +16 -16
- package/lib/cjs/presentation-backend/SelectionScopesHelper.js.map +1 -1
- package/lib/cjs/presentation-backend/TemporaryStorage.d.ts +13 -1
- package/lib/cjs/presentation-backend/TemporaryStorage.d.ts.map +1 -1
- package/lib/cjs/presentation-backend/TemporaryStorage.js +28 -4
- package/lib/cjs/presentation-backend/TemporaryStorage.js.map +1 -1
- package/lib/cjs/presentation-backend/Utils.js.map +1 -1
- package/lib/cjs/presentation-backend/domain/PresentationRulesDomain.js.map +1 -1
- package/lib/cjs/presentation-backend/domain/RulesetElements.js.map +1 -1
- package/lib/cjs/presentation-backend-internal.js.map +1 -1
- package/lib/cjs/presentation-backend.js.map +1 -1
- package/lib/esm/presentation-backend/BackendLoggerCategory.js.map +1 -1
- package/lib/esm/presentation-backend/ElementPropertiesHelper.js +14 -14
- package/lib/esm/presentation-backend/ElementPropertiesHelper.js.map +1 -1
- package/lib/esm/presentation-backend/InternalSymbols.js.map +1 -1
- package/lib/esm/presentation-backend/NativePlatform.js.map +1 -1
- package/lib/esm/presentation-backend/Presentation.d.ts +9 -0
- package/lib/esm/presentation-backend/Presentation.d.ts.map +1 -1
- package/lib/esm/presentation-backend/Presentation.js +2 -0
- package/lib/esm/presentation-backend/Presentation.js.map +1 -1
- package/lib/esm/presentation-backend/PresentationIpcHandler.js +4 -4
- package/lib/esm/presentation-backend/PresentationIpcHandler.js.map +1 -1
- package/lib/esm/presentation-backend/PresentationManager.js.map +1 -1
- package/lib/esm/presentation-backend/PresentationManagerDetail.js.map +1 -1
- package/lib/esm/presentation-backend/PresentationRpcImpl.d.ts +7 -2
- package/lib/esm/presentation-backend/PresentationRpcImpl.d.ts.map +1 -1
- package/lib/esm/presentation-backend/PresentationRpcImpl.js +53 -24
- package/lib/esm/presentation-backend/PresentationRpcImpl.js.map +1 -1
- package/lib/esm/presentation-backend/RulesetEmbedder.js +4 -4
- package/lib/esm/presentation-backend/RulesetEmbedder.js.map +1 -1
- package/lib/esm/presentation-backend/RulesetManager.js.map +1 -1
- package/lib/esm/presentation-backend/RulesetVariablesManager.js.map +1 -1
- package/lib/esm/presentation-backend/SelectionScopesHelper.js +16 -16
- package/lib/esm/presentation-backend/SelectionScopesHelper.js.map +1 -1
- package/lib/esm/presentation-backend/TemporaryStorage.d.ts +13 -1
- package/lib/esm/presentation-backend/TemporaryStorage.d.ts.map +1 -1
- package/lib/esm/presentation-backend/TemporaryStorage.js +28 -4
- package/lib/esm/presentation-backend/TemporaryStorage.js.map +1 -1
- package/lib/esm/presentation-backend/Utils.js.map +1 -1
- package/lib/esm/presentation-backend/domain/PresentationRulesDomain.js.map +1 -1
- package/lib/esm/presentation-backend/domain/RulesetElements.js.map +1 -1
- package/lib/esm/presentation-backend-internal.js.map +1 -1
- package/lib/esm/presentation-backend.js.map +1 -1
- package/package.json +15 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PresentationManagerDetail.js","sourceRoot":"","sources":["../../../src/presentation-backend/PresentationManagerDetail.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable @typescript-eslint/ban-ts-comment */\r\n\r\nimport * as hash from \"object-hash\";\r\nimport * as path from \"path\";\r\nimport { IModelDb, IModelJsNative, IpcHost } from \"@itwin/core-backend\";\r\nimport { BeEvent, Logger } from \"@itwin/core-bentley\";\r\nimport { UnitSystemKey } from \"@itwin/core-quantity\";\r\nimport {\r\n CompressedClassInfoJSON,\r\n Content,\r\n ContentDescriptorRequestOptions,\r\n ContentFlags,\r\n ContentRequestOptions,\r\n ContentSourcesRequestOptions,\r\n DefaultContentDisplayTypes,\r\n Descriptor,\r\n DescriptorOverrides,\r\n DiagnosticsOptions,\r\n DiagnosticsScopeLogs,\r\n DisplayLabelRequestOptions,\r\n DisplayLabelsRequestOptions,\r\n DisplayValueGroup,\r\n DistinctValuesRequestOptions,\r\n FilterByInstancePathsHierarchyRequestOptions,\r\n FilterByTextHierarchyRequestOptions,\r\n FormatsMap,\r\n HierarchyLevelDescriptorRequestOptions,\r\n HierarchyRequestOptions,\r\n InstanceKey,\r\n Item,\r\n ItemJSON,\r\n Key,\r\n KeySet,\r\n LabelDefinition,\r\n NodeKey,\r\n NodePathElement,\r\n Paged,\r\n PagedResponse,\r\n Prioritized,\r\n Ruleset,\r\n RulesetVariable,\r\n SelectClassInfo,\r\n SelectClassInfoJSON,\r\n UpdateInfo,\r\n WithCancelEvent,\r\n} from \"@itwin/presentation-common\";\r\nimport { deepReplaceNullsToUndefined, PresentationIpcEvents } from \"@itwin/presentation-common/internal\";\r\nimport { normalizeFullClassName } from \"@itwin/presentation-shared\";\r\nimport { PresentationBackendLoggerCategory } from \"./BackendLoggerCategory.js\";\r\nimport {\r\n createDefaultNativePlatform,\r\n NativePlatformDefinition,\r\n NativePlatformRequestTypes,\r\n NativePlatformResponse,\r\n NativePresentationDefaultUnitFormats,\r\n NativePresentationKeySetJSON,\r\n NativePresentationUnitSystem,\r\n PresentationNativePlatformResponseError,\r\n} from \"./NativePlatform.js\";\r\nimport { HierarchyCacheConfig, HierarchyCacheMode, PresentationManagerProps } from \"./PresentationManager.js\";\r\n// @ts-ignore TS complains about `with` in CJS builds, but not ESM\r\nimport elementPropertiesRuleset from \"./primary-presentation-rules/ElementProperties.PresentationRuleSet.json\" with { type: \"json\" };\r\nimport { RulesetManager, RulesetManagerImpl } from \"./RulesetManager.js\";\r\n// @ts-ignore TS complains about `with` in CJS builds, but not ESM\r\nimport bisSupplementalRuleset from \"./supplemental-presentation-rules/BisCore.PresentationRuleSet.json\" with { type: \"json\" };\r\n// @ts-ignore TS complains about `with` in CJS builds, but not ESM\r\nimport funcSupplementalRuleset from \"./supplemental-presentation-rules/Functional.PresentationRuleSet.json\" with { type: \"json\" };\r\nimport { BackendDiagnosticsAttribute, BackendDiagnosticsOptions, combineDiagnosticsOptions, getElementKey, reportDiagnostics } from \"./Utils.js\";\r\n\r\n/**\r\n * Produce content descriptor that is not intended for querying content. Allows the implementation to omit certain\r\n * operations to make obtaining content descriptor faster.\r\n * @internal\r\n */\r\nexport const DESCRIPTOR_ONLY_CONTENT_FLAG = 1 << 9;\r\n\r\ninterface PresentationManagerDetailProps extends PresentationManagerProps {\r\n id?: string;\r\n addon?: NativePlatformDefinition;\r\n}\r\n\r\n/** @internal */\r\nexport class PresentationManagerDetail implements Disposable {\r\n private _disposed: boolean;\r\n private _nativePlatform: NativePlatformDefinition | undefined;\r\n private _diagnosticsOptions: BackendDiagnosticsOptions | undefined;\r\n\r\n public rulesets: RulesetManager;\r\n public activeUnitSystem: UnitSystemKey | undefined;\r\n public readonly onUsed: BeEvent<() => void>;\r\n\r\n constructor(params: PresentationManagerDetailProps) {\r\n this._disposed = false;\r\n\r\n this._nativePlatform =\r\n params.addon ??\r\n createNativePlatform(\r\n params.id ?? \"\",\r\n params.workerThreadsCount ?? 2,\r\n IpcHost.isValid ? ipcUpdatesHandler : noopUpdatesHandler,\r\n params.caching,\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n params.defaultFormats,\r\n params.useMmap,\r\n );\r\n\r\n setupRulesets(this._nativePlatform, params.supplementalRulesetDirectories ?? [], params.rulesetDirectories ?? []);\r\n this.activeUnitSystem = params.defaultUnitSystem;\r\n\r\n this.onUsed = new BeEvent();\r\n this.rulesets = new RulesetManagerImpl(() => this.getNativePlatform());\r\n this._diagnosticsOptions = params.diagnostics;\r\n }\r\n\r\n public [Symbol.dispose](): void {\r\n if (this._disposed) {\r\n return;\r\n }\r\n\r\n this.getNativePlatform()[Symbol.dispose]();\r\n this._nativePlatform = undefined;\r\n this.onUsed.clear();\r\n\r\n this._disposed = true;\r\n }\r\n\r\n public getNativePlatform(): NativePlatformDefinition {\r\n if (this._disposed) {\r\n throw new Error(\"Attempting to use Presentation manager after disposal\");\r\n }\r\n return this._nativePlatform!;\r\n }\r\n\r\n /* eslint-disable @typescript-eslint/no-deprecated */\r\n\r\n public async getNodes(\r\n requestOptions: WithCancelEvent<Prioritized<Paged<HierarchyRequestOptions<IModelDb, NodeKey, RulesetVariable>>>> & BackendDiagnosticsAttribute,\r\n ): Promise<string> {\r\n const { rulesetOrId, parentKey, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: parentKey ? NativePlatformRequestTypes.GetChildren : NativePlatformRequestTypes.GetRootNodes,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n nodeKey: parentKey,\r\n };\r\n return this.request(params);\r\n }\r\n\r\n public async getNodesCount(\r\n requestOptions: WithCancelEvent<Prioritized<HierarchyRequestOptions<IModelDb, NodeKey, RulesetVariable>>> & BackendDiagnosticsAttribute,\r\n ): Promise<number> {\r\n const { rulesetOrId, parentKey, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: parentKey ? NativePlatformRequestTypes.GetChildrenCount : NativePlatformRequestTypes.GetRootNodesCount,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n nodeKey: parentKey,\r\n };\r\n return JSON.parse(await this.request(params));\r\n }\r\n\r\n public async getNodesDescriptor(\r\n requestOptions: WithCancelEvent<Prioritized<HierarchyLevelDescriptorRequestOptions<IModelDb, NodeKey, RulesetVariable>>> & BackendDiagnosticsAttribute,\r\n ): Promise<string> {\r\n const { rulesetOrId, parentKey, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetNodesDescriptor,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n nodeKey: parentKey,\r\n };\r\n return this.request(params);\r\n }\r\n\r\n public async getNodePaths(\r\n requestOptions: WithCancelEvent<Prioritized<FilterByInstancePathsHierarchyRequestOptions<IModelDb, RulesetVariable>>> & BackendDiagnosticsAttribute,\r\n ): Promise<NodePathElement[]> {\r\n const { rulesetOrId, instancePaths, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetNodePaths,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n paths: instancePaths,\r\n };\r\n const paths: NodePathElement[] = deepReplaceNullsToUndefined(JSON.parse(await this.request(params)));\r\n return paths;\r\n }\r\n\r\n public async getFilteredNodePaths(\r\n requestOptions: WithCancelEvent<Prioritized<FilterByTextHierarchyRequestOptions<IModelDb, RulesetVariable>>> & BackendDiagnosticsAttribute,\r\n ): Promise<NodePathElement[]> {\r\n const { rulesetOrId, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetFilteredNodePaths,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n };\r\n const paths: NodePathElement[] = deepReplaceNullsToUndefined(JSON.parse(await this.request(params)));\r\n return paths;\r\n }\r\n\r\n /* eslint-enable @typescript-eslint/no-deprecated */\r\n\r\n public async getContentDescriptor(requestOptions: WithCancelEvent<Prioritized<ContentDescriptorRequestOptions<IModelDb, KeySet>>>): Promise<string> {\r\n const { rulesetOrId, contentFlags, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetContentDescriptor,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n contentFlags: contentFlags ?? DESCRIPTOR_ONLY_CONTENT_FLAG, // only set \"descriptor only\" flag if there are no flags provided\r\n keys: getKeysForContentRequest(requestOptions.keys, (map) => bisElementInstanceKeysProcessor(requestOptions.imodel, map)),\r\n };\r\n return this.request(params);\r\n }\r\n\r\n public async getContentSources(\r\n requestOptions: WithCancelEvent<Prioritized<ContentSourcesRequestOptions<IModelDb>>> & BackendDiagnosticsAttribute,\r\n ): Promise<SelectClassInfo[]> {\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetContentSources,\r\n rulesetId: \"ElementProperties\",\r\n ...requestOptions,\r\n };\r\n const json: {\r\n sources: SelectClassInfoJSON<string>[];\r\n classesMap: { [id: string]: CompressedClassInfoJSON };\r\n } = JSON.parse(await this.request(params));\r\n return deepReplaceNullsToUndefined(json.sources.map((sourceJson) => SelectClassInfo.fromCompressedJSON(sourceJson, json.classesMap)));\r\n }\r\n\r\n public async getContentSetSize(\r\n requestOptions: WithCancelEvent<Prioritized<ContentRequestOptions<IModelDb, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>>> &\r\n BackendDiagnosticsAttribute,\r\n ): Promise<number> {\r\n const { rulesetOrId, descriptor, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetContentSetSize,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n keys: getKeysForContentRequest(requestOptions.keys, (map) => bisElementInstanceKeysProcessor(requestOptions.imodel, map)),\r\n descriptorOverrides: createContentDescriptorOverrides(descriptor),\r\n };\r\n return JSON.parse(await this.request(params));\r\n }\r\n\r\n public async getContentSet(\r\n requestOptions: WithCancelEvent<Prioritized<Paged<ContentRequestOptions<IModelDb, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>>>> &\r\n BackendDiagnosticsAttribute,\r\n ): Promise<Item[]> {\r\n const { rulesetOrId, descriptor, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetContentSet,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n keys: getKeysForContentRequest(requestOptions.keys, (map) => bisElementInstanceKeysProcessor(requestOptions.imodel, map)),\r\n descriptorOverrides: createContentDescriptorOverrides(descriptor),\r\n };\r\n return JSON.parse(await this.request(params))\r\n .map((json: ItemJSON) => Item.fromJSON(deepReplaceNullsToUndefined(json)))\r\n .filter((item: Item | undefined): item is Item => !!item);\r\n }\r\n\r\n public async getContent(\r\n requestOptions: WithCancelEvent<Prioritized<Paged<ContentRequestOptions<IModelDb, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>>>> &\r\n BackendDiagnosticsAttribute,\r\n ): Promise<Content | undefined> {\r\n const { rulesetOrId, descriptor, ...strippedOptions } = requestOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetContent,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptions,\r\n keys: getKeysForContentRequest(requestOptions.keys, (map) => bisElementInstanceKeysProcessor(requestOptions.imodel, map)),\r\n descriptorOverrides: createContentDescriptorOverrides(descriptor),\r\n };\r\n return Content.fromJSON(deepReplaceNullsToUndefined(JSON.parse(await this.request(params))));\r\n }\r\n\r\n public async getPagedDistinctValues(\r\n requestOptions: WithCancelEvent<Prioritized<DistinctValuesRequestOptions<IModelDb, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>>> &\r\n BackendDiagnosticsAttribute,\r\n ): Promise<PagedResponse<DisplayValueGroup>> {\r\n const { rulesetOrId, ...strippedOptions } = requestOptions;\r\n const { descriptor, keys, ...strippedOptionsNoDescriptorAndKeys } = strippedOptions;\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetPagedDistinctValues,\r\n rulesetId: this.registerRuleset(rulesetOrId),\r\n ...strippedOptionsNoDescriptorAndKeys,\r\n keys: getKeysForContentRequest(keys, (map) => bisElementInstanceKeysProcessor(requestOptions.imodel, map)),\r\n descriptorOverrides: createContentDescriptorOverrides(descriptor),\r\n };\r\n return deepReplaceNullsToUndefined(JSON.parse(await this.request(params)));\r\n }\r\n\r\n public async getDisplayLabelDefinition(\r\n requestOptions: WithCancelEvent<Prioritized<DisplayLabelRequestOptions<IModelDb, InstanceKey>>> & BackendDiagnosticsAttribute,\r\n ): Promise<LabelDefinition> {\r\n const params = {\r\n requestId: NativePlatformRequestTypes.GetDisplayLabel,\r\n ...requestOptions,\r\n };\r\n return deepReplaceNullsToUndefined(JSON.parse(await this.request(params)));\r\n }\r\n\r\n public async getDisplayLabelDefinitions(\r\n requestOptions: WithCancelEvent<Prioritized<Paged<DisplayLabelsRequestOptions<IModelDb, InstanceKey>>>> & BackendDiagnosticsAttribute,\r\n ): Promise<LabelDefinition[]> {\r\n const concreteKeys = requestOptions.keys\r\n .map((k) => {\r\n if (normalizeFullClassName(k.className).toLowerCase() === \"BisCore.Element\".toLowerCase()) {\r\n return getElementKey(requestOptions.imodel, k.id);\r\n }\r\n return k;\r\n })\r\n .filter<InstanceKey>((k): k is InstanceKey => !!k);\r\n const contentRequestOptions: ContentRequestOptions<IModelDb, Descriptor | DescriptorOverrides, KeySet> = {\r\n ...requestOptions,\r\n rulesetOrId: \"RulesDrivenECPresentationManager_RulesetId_DisplayLabel\",\r\n descriptor: {\r\n displayType: DefaultContentDisplayTypes.List,\r\n contentFlags: ContentFlags.ShowLabels | ContentFlags.NoFields,\r\n },\r\n keys: new KeySet(concreteKeys),\r\n };\r\n const content = await this.getContent(contentRequestOptions);\r\n return concreteKeys.map((key) => {\r\n const item = content ? content.contentSet.find((it) => it.primaryKeys.length > 0 && InstanceKey.compare(it.primaryKeys[0], key) === 0) : undefined;\r\n if (!item) {\r\n return { displayValue: \"\", rawValue: \"\", typeName: \"\" };\r\n }\r\n return item.label;\r\n });\r\n }\r\n\r\n /** Registers given ruleset and replaces the ruleset with its ID in the resulting object */\r\n public registerRuleset(rulesetOrId: Ruleset | string): string {\r\n if (typeof rulesetOrId === \"object\") {\r\n const rulesetWithNativeId = { ...rulesetOrId, id: this.getRulesetId(rulesetOrId) };\r\n return this.rulesets.add(rulesetWithNativeId).id;\r\n }\r\n\r\n return rulesetOrId;\r\n }\r\n\r\n /** @internal */\r\n public getRulesetId(rulesetOrId: Ruleset | string): string {\r\n return getRulesetIdObject(rulesetOrId).uniqueId;\r\n }\r\n\r\n public async request(params: RequestParams): Promise<string> {\r\n this.onUsed.raiseEvent();\r\n const { requestId, imodel, unitSystem, diagnostics: requestDiagnostics, cancelEvent, ...strippedParams } = params;\r\n const imodelAddon = this.getNativePlatform().getImodelAddon(imodel);\r\n const response = await withOptionalDiagnostics([this._diagnosticsOptions, requestDiagnostics], async (diagnosticsOptions) => {\r\n const nativeRequestParams: any = {\r\n requestId,\r\n params: {\r\n unitSystem: toOptionalNativeUnitSystem(unitSystem ?? this.activeUnitSystem),\r\n ...strippedParams,\r\n ...(diagnosticsOptions ? { diagnostics: diagnosticsOptions } : undefined),\r\n },\r\n };\r\n return this.getNativePlatform().handleRequest(imodelAddon, JSON.stringify(nativeRequestParams), cancelEvent);\r\n });\r\n return response.result;\r\n }\r\n}\r\n\r\nasync function withOptionalDiagnostics(\r\n diagnosticsOptions: Array<BackendDiagnosticsOptions | undefined>,\r\n nativePlatformRequestHandler: (combinedDiagnosticsOptions: DiagnosticsOptions | undefined) => Promise<NativePlatformResponse<string>>,\r\n): Promise<NativePlatformResponse<string>> {\r\n const contexts = diagnosticsOptions.map((d) => d?.requestContextSupplier?.());\r\n const combinedOptions = combineDiagnosticsOptions(...diagnosticsOptions);\r\n let responseDiagnostics: DiagnosticsScopeLogs | undefined;\r\n try {\r\n const response = await nativePlatformRequestHandler(combinedOptions);\r\n responseDiagnostics = response.diagnostics;\r\n return response;\r\n } catch (e) {\r\n if (e instanceof PresentationNativePlatformResponseError) {\r\n responseDiagnostics = e.diagnostics;\r\n }\r\n throw e;\r\n /* c8 ignore next */\r\n } finally {\r\n if (responseDiagnostics) {\r\n const diagnostics = { logs: [responseDiagnostics] };\r\n diagnosticsOptions.forEach((options, i) => {\r\n options && reportDiagnostics(diagnostics, options, contexts[i]);\r\n });\r\n }\r\n }\r\n}\r\n\r\ninterface RequestParams {\r\n diagnostics?: BackendDiagnosticsOptions;\r\n requestId: string;\r\n imodel: IModelDb;\r\n unitSystem?: UnitSystemKey;\r\n cancelEvent?: BeEvent<() => void>;\r\n}\r\n\r\nfunction setupRulesets(nativePlatform: NativePlatformDefinition, supplementalRulesetDirectories: string[], primaryRulesetDirectories: string[]): void {\r\n nativePlatform.addRuleset(JSON.stringify(elementPropertiesRuleset));\r\n nativePlatform.registerSupplementalRuleset(JSON.stringify(bisSupplementalRuleset));\r\n nativePlatform.registerSupplementalRuleset(JSON.stringify(funcSupplementalRuleset));\r\n nativePlatform.setupSupplementalRulesetDirectories(collateAssetDirectories(supplementalRulesetDirectories));\r\n nativePlatform.setupRulesetDirectories(collateAssetDirectories(primaryRulesetDirectories));\r\n}\r\n\r\ninterface RulesetIdObject {\r\n uniqueId: string;\r\n parts: {\r\n id: string;\r\n hash?: string;\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getRulesetIdObject(rulesetOrId: Ruleset | string): RulesetIdObject {\r\n if (typeof rulesetOrId === \"object\") {\r\n if (IpcHost.isValid) {\r\n // in case of native apps we don't want to enforce ruleset id uniqueness as ruleset variables\r\n // are stored on a backend and creating new id will lose those variables\r\n return {\r\n uniqueId: rulesetOrId.id,\r\n parts: { id: rulesetOrId.id },\r\n };\r\n }\r\n\r\n const hashedId = hash.MD5(rulesetOrId);\r\n return {\r\n uniqueId: `${rulesetOrId.id}-${hashedId}`,\r\n parts: {\r\n id: rulesetOrId.id,\r\n hash: hashedId,\r\n },\r\n };\r\n }\r\n\r\n return { uniqueId: rulesetOrId, parts: { id: rulesetOrId } };\r\n}\r\n\r\n/** @internal */\r\nexport function getKeysForContentRequest(\r\n keys: Readonly<KeySet>,\r\n classInstanceKeysProcessor?: (keys: Map<string, Set<string>>) => void,\r\n): NativePresentationKeySetJSON {\r\n const result: NativePresentationKeySetJSON = {\r\n instanceKeys: [],\r\n nodeKeys: [],\r\n };\r\n const classInstancesMap = new Map<string, Set<string>>();\r\n keys.forEach((key) => {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n if (Key.isNodeKey(key)) {\r\n result.nodeKeys.push(key);\r\n }\r\n\r\n if (Key.isInstanceKey(key)) {\r\n addInstanceKey(classInstancesMap, key);\r\n }\r\n });\r\n\r\n if (classInstanceKeysProcessor) {\r\n classInstanceKeysProcessor(classInstancesMap);\r\n }\r\n\r\n for (const entry of classInstancesMap) {\r\n if (entry[1].size > 0) {\r\n result.instanceKeys.push([entry[\"0\"], [...entry[1]]]);\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/** @internal */\r\nexport function bisElementInstanceKeysProcessor(imodel: IModelDb, classInstancesMap: Map<string, Set<string>>) {\r\n const elementClassName = \"BisCore:Element\";\r\n const elementIds = classInstancesMap.get(elementClassName);\r\n if (elementIds) {\r\n const deleteElementIds = new Array<string>();\r\n elementIds.forEach((elementId) => {\r\n const concreteKey = getElementKey(imodel, elementId);\r\n if (concreteKey && concreteKey.className !== elementClassName) {\r\n deleteElementIds.push(elementId);\r\n addInstanceKey(classInstancesMap, { className: concreteKey.className, id: elementId });\r\n }\r\n });\r\n for (const id of deleteElementIds) {\r\n elementIds.delete(id);\r\n }\r\n }\r\n}\r\n\r\nfunction addInstanceKey(classInstancesMap: Map<string, Set<string>>, key: InstanceKey): void {\r\n let set = classInstancesMap.get(key.className);\r\n if (!set) {\r\n set = new Set();\r\n classInstancesMap.set(key.className, set);\r\n }\r\n set.add(key.id);\r\n}\r\n\r\nfunction createNativePlatform(\r\n id: string,\r\n workerThreadsCount: number,\r\n updateCallback: (updateInfo: UpdateInfo | undefined) => void,\r\n caching: PresentationManagerProps[\"caching\"],\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n defaultFormats: FormatsMap | undefined,\r\n useMmap: boolean | number | undefined,\r\n): NativePlatformDefinition {\r\n return new (createDefaultNativePlatform({\r\n id,\r\n taskAllocationsMap: { [Number.MAX_SAFE_INTEGER]: workerThreadsCount },\r\n updateCallback,\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n cacheConfig: createCacheConfig(caching?.hierarchies),\r\n contentCacheSize: caching?.content?.size,\r\n workerConnectionCacheSize: caching?.workerConnectionCacheSize,\r\n defaultFormats: toNativeUnitFormatsMap(defaultFormats),\r\n useMmap,\r\n }))();\r\n\r\n /* eslint-disable @typescript-eslint/no-deprecated */\r\n function createCacheConfig(config?: HierarchyCacheConfig): IModelJsNative.ECPresentationHierarchyCacheConfig {\r\n switch (config?.mode) {\r\n case HierarchyCacheMode.Disk:\r\n return { ...config, directory: normalizeDirectory(config.directory) };\r\n\r\n case HierarchyCacheMode.Hybrid:\r\n return {\r\n ...config,\r\n disk: config.disk ? { ...config.disk, directory: normalizeDirectory(config.disk.directory) } : undefined,\r\n };\r\n\r\n case HierarchyCacheMode.Memory:\r\n return config;\r\n\r\n default:\r\n return { mode: HierarchyCacheMode.Disk, directory: \"\" };\r\n }\r\n }\r\n /* eslint-enable @typescript-eslint/no-deprecated */\r\n\r\n function normalizeDirectory(directory?: string): string {\r\n return directory ? path.resolve(directory) : \"\";\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n function toNativeUnitFormatsMap(map: FormatsMap | undefined): NativePresentationDefaultUnitFormats | undefined {\r\n if (!map) {\r\n return undefined;\r\n }\r\n\r\n const nativeFormatsMap: NativePresentationDefaultUnitFormats = {};\r\n Object.entries(map).forEach(([phenomenon, formats]) => {\r\n nativeFormatsMap[phenomenon] = (Array.isArray(formats) ? formats : [formats]).map((unitSystemsFormat) => ({\r\n unitSystems: unitSystemsFormat.unitSystems.map(toNativeUnitSystem),\r\n format: unitSystemsFormat.format,\r\n }));\r\n });\r\n return nativeFormatsMap;\r\n }\r\n}\r\n\r\nfunction toOptionalNativeUnitSystem(unitSystem: UnitSystemKey | undefined): NativePresentationUnitSystem | undefined {\r\n return unitSystem ? toNativeUnitSystem(unitSystem) : undefined;\r\n}\r\n\r\nfunction toNativeUnitSystem(unitSystem: UnitSystemKey): NativePresentationUnitSystem {\r\n switch (unitSystem) {\r\n case \"imperial\":\r\n return NativePresentationUnitSystem.BritishImperial;\r\n case \"metric\":\r\n return NativePresentationUnitSystem.Metric;\r\n case \"usCustomary\":\r\n return NativePresentationUnitSystem.UsCustomary;\r\n case \"usSurvey\":\r\n return NativePresentationUnitSystem.UsSurvey;\r\n }\r\n}\r\n\r\nfunction collateAssetDirectories(dirs: string[]): string[] {\r\n return [...new Set(dirs)];\r\n}\r\nconst createContentDescriptorOverrides = (descriptorOrOverrides: Descriptor | DescriptorOverrides): DescriptorOverrides => {\r\n if (descriptorOrOverrides instanceof Descriptor) {\r\n return descriptorOrOverrides.createDescriptorOverrides();\r\n }\r\n return descriptorOrOverrides;\r\n};\r\n\r\nfunction parseUpdateInfo(info: UpdateInfo | undefined) {\r\n if (info === undefined) {\r\n return undefined;\r\n }\r\n\r\n const parsedInfo: UpdateInfo = {};\r\n for (const fileName in info) {\r\n /* c8 ignore next 3 */\r\n if (!info.hasOwnProperty(fileName)) {\r\n continue;\r\n }\r\n\r\n const imodelDb = IModelDb.findByFilename(fileName);\r\n if (!imodelDb) {\r\n Logger.logError(PresentationBackendLoggerCategory.PresentationManager, `Update records IModelDb not found with path ${fileName}`);\r\n continue;\r\n }\r\n\r\n parsedInfo[imodelDb.getRpcProps().key] = info[fileName];\r\n }\r\n return Object.keys(parsedInfo).length > 0 ? parsedInfo : undefined;\r\n}\r\n\r\n/** @internal */\r\nexport function ipcUpdatesHandler(info: UpdateInfo | undefined) {\r\n const parsed = parseUpdateInfo(info);\r\n if (parsed) {\r\n IpcHost.send(PresentationIpcEvents.Update, parsed);\r\n }\r\n}\r\n\r\n/** @internal */\r\n/* c8 ignore next */\r\nexport function noopUpdatesHandler(_info: UpdateInfo | undefined) {}\r\n"]}
|
|
1
|
+
{"version":3,"file":"PresentationManagerDetail.js","sourceRoot":"","sources":["../../../src/presentation-backend/PresentationManagerDetail.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n\nimport * as hash from \"object-hash\";\nimport * as path from \"path\";\nimport { IModelDb, IModelJsNative, IpcHost } from \"@itwin/core-backend\";\nimport { BeEvent, Logger } from \"@itwin/core-bentley\";\nimport { UnitSystemKey } from \"@itwin/core-quantity\";\nimport {\n CompressedClassInfoJSON,\n Content,\n ContentDescriptorRequestOptions,\n ContentFlags,\n ContentRequestOptions,\n ContentSourcesRequestOptions,\n DefaultContentDisplayTypes,\n Descriptor,\n DescriptorOverrides,\n DiagnosticsOptions,\n DiagnosticsScopeLogs,\n DisplayLabelRequestOptions,\n DisplayLabelsRequestOptions,\n DisplayValueGroup,\n DistinctValuesRequestOptions,\n FilterByInstancePathsHierarchyRequestOptions,\n FilterByTextHierarchyRequestOptions,\n FormatsMap,\n HierarchyLevelDescriptorRequestOptions,\n HierarchyRequestOptions,\n InstanceKey,\n Item,\n ItemJSON,\n Key,\n KeySet,\n LabelDefinition,\n NodeKey,\n NodePathElement,\n Paged,\n PagedResponse,\n Prioritized,\n Ruleset,\n RulesetVariable,\n SelectClassInfo,\n SelectClassInfoJSON,\n UpdateInfo,\n WithCancelEvent,\n} from \"@itwin/presentation-common\";\nimport { deepReplaceNullsToUndefined, PresentationIpcEvents } from \"@itwin/presentation-common/internal\";\nimport { normalizeFullClassName } from \"@itwin/presentation-shared\";\nimport { PresentationBackendLoggerCategory } from \"./BackendLoggerCategory.js\";\nimport {\n createDefaultNativePlatform,\n NativePlatformDefinition,\n NativePlatformRequestTypes,\n NativePlatformResponse,\n NativePresentationDefaultUnitFormats,\n NativePresentationKeySetJSON,\n NativePresentationUnitSystem,\n PresentationNativePlatformResponseError,\n} from \"./NativePlatform.js\";\nimport { HierarchyCacheConfig, HierarchyCacheMode, PresentationManagerProps } from \"./PresentationManager.js\";\n// @ts-ignore TS complains about `with` in CJS builds, but not ESM\nimport elementPropertiesRuleset from \"./primary-presentation-rules/ElementProperties.PresentationRuleSet.json\" with { type: \"json\" };\nimport { RulesetManager, RulesetManagerImpl } from \"./RulesetManager.js\";\n// @ts-ignore TS complains about `with` in CJS builds, but not ESM\nimport bisSupplementalRuleset from \"./supplemental-presentation-rules/BisCore.PresentationRuleSet.json\" with { type: \"json\" };\n// @ts-ignore TS complains about `with` in CJS builds, but not ESM\nimport funcSupplementalRuleset from \"./supplemental-presentation-rules/Functional.PresentationRuleSet.json\" with { type: \"json\" };\nimport { BackendDiagnosticsAttribute, BackendDiagnosticsOptions, combineDiagnosticsOptions, getElementKey, reportDiagnostics } from \"./Utils.js\";\n\n/**\n * Produce content descriptor that is not intended for querying content. Allows the implementation to omit certain\n * operations to make obtaining content descriptor faster.\n * @internal\n */\nexport const DESCRIPTOR_ONLY_CONTENT_FLAG = 1 << 9;\n\ninterface PresentationManagerDetailProps extends PresentationManagerProps {\n id?: string;\n addon?: NativePlatformDefinition;\n}\n\n/** @internal */\nexport class PresentationManagerDetail implements Disposable {\n private _disposed: boolean;\n private _nativePlatform: NativePlatformDefinition | undefined;\n private _diagnosticsOptions: BackendDiagnosticsOptions | undefined;\n\n public rulesets: RulesetManager;\n public activeUnitSystem: UnitSystemKey | undefined;\n public readonly onUsed: BeEvent<() => void>;\n\n constructor(params: PresentationManagerDetailProps) {\n this._disposed = false;\n\n this._nativePlatform =\n params.addon ??\n createNativePlatform(\n params.id ?? \"\",\n params.workerThreadsCount ?? 2,\n IpcHost.isValid ? ipcUpdatesHandler : noopUpdatesHandler,\n params.caching,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n params.defaultFormats,\n params.useMmap,\n );\n\n setupRulesets(this._nativePlatform, params.supplementalRulesetDirectories ?? [], params.rulesetDirectories ?? []);\n this.activeUnitSystem = params.defaultUnitSystem;\n\n this.onUsed = new BeEvent();\n this.rulesets = new RulesetManagerImpl(() => this.getNativePlatform());\n this._diagnosticsOptions = params.diagnostics;\n }\n\n public [Symbol.dispose](): void {\n if (this._disposed) {\n return;\n }\n\n this.getNativePlatform()[Symbol.dispose]();\n this._nativePlatform = undefined;\n this.onUsed.clear();\n\n this._disposed = true;\n }\n\n public getNativePlatform(): NativePlatformDefinition {\n if (this._disposed) {\n throw new Error(\"Attempting to use Presentation manager after disposal\");\n }\n return this._nativePlatform!;\n }\n\n /* eslint-disable @typescript-eslint/no-deprecated */\n\n public async getNodes(\n requestOptions: WithCancelEvent<Prioritized<Paged<HierarchyRequestOptions<IModelDb, NodeKey, RulesetVariable>>>> & BackendDiagnosticsAttribute,\n ): Promise<string> {\n const { rulesetOrId, parentKey, ...strippedOptions } = requestOptions;\n const params = {\n requestId: parentKey ? NativePlatformRequestTypes.GetChildren : NativePlatformRequestTypes.GetRootNodes,\n rulesetId: this.registerRuleset(rulesetOrId),\n ...strippedOptions,\n nodeKey: parentKey,\n };\n return this.request(params);\n }\n\n public async getNodesCount(\n requestOptions: WithCancelEvent<Prioritized<HierarchyRequestOptions<IModelDb, NodeKey, RulesetVariable>>> & BackendDiagnosticsAttribute,\n ): Promise<number> {\n const { rulesetOrId, parentKey, ...strippedOptions } = requestOptions;\n const params = {\n requestId: parentKey ? NativePlatformRequestTypes.GetChildrenCount : NativePlatformRequestTypes.GetRootNodesCount,\n rulesetId: this.registerRuleset(rulesetOrId),\n ...strippedOptions,\n nodeKey: parentKey,\n };\n return JSON.parse(await this.request(params));\n }\n\n public async getNodesDescriptor(\n requestOptions: WithCancelEvent<Prioritized<HierarchyLevelDescriptorRequestOptions<IModelDb, NodeKey, RulesetVariable>>> & BackendDiagnosticsAttribute,\n ): Promise<string> {\n const { rulesetOrId, parentKey, ...strippedOptions } = requestOptions;\n const params = {\n requestId: NativePlatformRequestTypes.GetNodesDescriptor,\n rulesetId: this.registerRuleset(rulesetOrId),\n ...strippedOptions,\n nodeKey: parentKey,\n };\n return this.request(params);\n }\n\n public async getNodePaths(\n requestOptions: WithCancelEvent<Prioritized<FilterByInstancePathsHierarchyRequestOptions<IModelDb, RulesetVariable>>> & BackendDiagnosticsAttribute,\n ): Promise<NodePathElement[]> {\n const { rulesetOrId, instancePaths, ...strippedOptions } = requestOptions;\n const params = {\n requestId: NativePlatformRequestTypes.GetNodePaths,\n rulesetId: this.registerRuleset(rulesetOrId),\n ...strippedOptions,\n paths: instancePaths,\n };\n const paths: NodePathElement[] = deepReplaceNullsToUndefined(JSON.parse(await this.request(params)));\n return paths;\n }\n\n public async getFilteredNodePaths(\n requestOptions: WithCancelEvent<Prioritized<FilterByTextHierarchyRequestOptions<IModelDb, RulesetVariable>>> & BackendDiagnosticsAttribute,\n ): Promise<NodePathElement[]> {\n const { rulesetOrId, ...strippedOptions } = requestOptions;\n const params = {\n requestId: NativePlatformRequestTypes.GetFilteredNodePaths,\n rulesetId: this.registerRuleset(rulesetOrId),\n ...strippedOptions,\n };\n const paths: NodePathElement[] = deepReplaceNullsToUndefined(JSON.parse(await this.request(params)));\n return paths;\n }\n\n /* eslint-enable @typescript-eslint/no-deprecated */\n\n public async getContentDescriptor(requestOptions: WithCancelEvent<Prioritized<ContentDescriptorRequestOptions<IModelDb, KeySet>>>): Promise<string> {\n const { rulesetOrId, contentFlags, ...strippedOptions } = requestOptions;\n const params = {\n requestId: NativePlatformRequestTypes.GetContentDescriptor,\n rulesetId: this.registerRuleset(rulesetOrId),\n ...strippedOptions,\n contentFlags: contentFlags ?? DESCRIPTOR_ONLY_CONTENT_FLAG, // only set \"descriptor only\" flag if there are no flags provided\n keys: getKeysForContentRequest(requestOptions.keys, (map) => bisElementInstanceKeysProcessor(requestOptions.imodel, map)),\n };\n return this.request(params);\n }\n\n public async getContentSources(\n requestOptions: WithCancelEvent<Prioritized<ContentSourcesRequestOptions<IModelDb>>> & BackendDiagnosticsAttribute,\n ): Promise<SelectClassInfo[]> {\n const params = {\n requestId: NativePlatformRequestTypes.GetContentSources,\n rulesetId: \"ElementProperties\",\n ...requestOptions,\n };\n const json: {\n sources: SelectClassInfoJSON<string>[];\n classesMap: { [id: string]: CompressedClassInfoJSON };\n } = JSON.parse(await this.request(params));\n return deepReplaceNullsToUndefined(json.sources.map((sourceJson) => SelectClassInfo.fromCompressedJSON(sourceJson, json.classesMap)));\n }\n\n public async getContentSetSize(\n requestOptions: WithCancelEvent<Prioritized<ContentRequestOptions<IModelDb, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>>> &\n BackendDiagnosticsAttribute,\n ): Promise<number> {\n const { rulesetOrId, descriptor, ...strippedOptions } = requestOptions;\n const params = {\n requestId: NativePlatformRequestTypes.GetContentSetSize,\n rulesetId: this.registerRuleset(rulesetOrId),\n ...strippedOptions,\n keys: getKeysForContentRequest(requestOptions.keys, (map) => bisElementInstanceKeysProcessor(requestOptions.imodel, map)),\n descriptorOverrides: createContentDescriptorOverrides(descriptor),\n };\n return JSON.parse(await this.request(params));\n }\n\n public async getContentSet(\n requestOptions: WithCancelEvent<Prioritized<Paged<ContentRequestOptions<IModelDb, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>>>> &\n BackendDiagnosticsAttribute,\n ): Promise<Item[]> {\n const { rulesetOrId, descriptor, ...strippedOptions } = requestOptions;\n const params = {\n requestId: NativePlatformRequestTypes.GetContentSet,\n rulesetId: this.registerRuleset(rulesetOrId),\n ...strippedOptions,\n keys: getKeysForContentRequest(requestOptions.keys, (map) => bisElementInstanceKeysProcessor(requestOptions.imodel, map)),\n descriptorOverrides: createContentDescriptorOverrides(descriptor),\n };\n return JSON.parse(await this.request(params))\n .map((json: ItemJSON) => Item.fromJSON(deepReplaceNullsToUndefined(json)))\n .filter((item: Item | undefined): item is Item => !!item);\n }\n\n public async getContent(\n requestOptions: WithCancelEvent<Prioritized<Paged<ContentRequestOptions<IModelDb, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>>>> &\n BackendDiagnosticsAttribute,\n ): Promise<Content | undefined> {\n const { rulesetOrId, descriptor, ...strippedOptions } = requestOptions;\n const params = {\n requestId: NativePlatformRequestTypes.GetContent,\n rulesetId: this.registerRuleset(rulesetOrId),\n ...strippedOptions,\n keys: getKeysForContentRequest(requestOptions.keys, (map) => bisElementInstanceKeysProcessor(requestOptions.imodel, map)),\n descriptorOverrides: createContentDescriptorOverrides(descriptor),\n };\n return Content.fromJSON(deepReplaceNullsToUndefined(JSON.parse(await this.request(params))));\n }\n\n public async getPagedDistinctValues(\n requestOptions: WithCancelEvent<Prioritized<DistinctValuesRequestOptions<IModelDb, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>>> &\n BackendDiagnosticsAttribute,\n ): Promise<PagedResponse<DisplayValueGroup>> {\n const { rulesetOrId, ...strippedOptions } = requestOptions;\n const { descriptor, keys, ...strippedOptionsNoDescriptorAndKeys } = strippedOptions;\n const params = {\n requestId: NativePlatformRequestTypes.GetPagedDistinctValues,\n rulesetId: this.registerRuleset(rulesetOrId),\n ...strippedOptionsNoDescriptorAndKeys,\n keys: getKeysForContentRequest(keys, (map) => bisElementInstanceKeysProcessor(requestOptions.imodel, map)),\n descriptorOverrides: createContentDescriptorOverrides(descriptor),\n };\n return deepReplaceNullsToUndefined(JSON.parse(await this.request(params)));\n }\n\n public async getDisplayLabelDefinition(\n requestOptions: WithCancelEvent<Prioritized<DisplayLabelRequestOptions<IModelDb, InstanceKey>>> & BackendDiagnosticsAttribute,\n ): Promise<LabelDefinition> {\n const params = {\n requestId: NativePlatformRequestTypes.GetDisplayLabel,\n ...requestOptions,\n };\n return deepReplaceNullsToUndefined(JSON.parse(await this.request(params)));\n }\n\n public async getDisplayLabelDefinitions(\n requestOptions: WithCancelEvent<Prioritized<Paged<DisplayLabelsRequestOptions<IModelDb, InstanceKey>>>> & BackendDiagnosticsAttribute,\n ): Promise<LabelDefinition[]> {\n const concreteKeys = requestOptions.keys\n .map((k) => {\n if (normalizeFullClassName(k.className).toLowerCase() === \"BisCore.Element\".toLowerCase()) {\n return getElementKey(requestOptions.imodel, k.id);\n }\n return k;\n })\n .filter<InstanceKey>((k): k is InstanceKey => !!k);\n const contentRequestOptions: ContentRequestOptions<IModelDb, Descriptor | DescriptorOverrides, KeySet> = {\n ...requestOptions,\n rulesetOrId: \"RulesDrivenECPresentationManager_RulesetId_DisplayLabel\",\n descriptor: {\n displayType: DefaultContentDisplayTypes.List,\n contentFlags: ContentFlags.ShowLabels | ContentFlags.NoFields,\n },\n keys: new KeySet(concreteKeys),\n };\n const content = await this.getContent(contentRequestOptions);\n return concreteKeys.map((key) => {\n const item = content ? content.contentSet.find((it) => it.primaryKeys.length > 0 && InstanceKey.compare(it.primaryKeys[0], key) === 0) : undefined;\n if (!item) {\n return { displayValue: \"\", rawValue: \"\", typeName: \"\" };\n }\n return item.label;\n });\n }\n\n /** Registers given ruleset and replaces the ruleset with its ID in the resulting object */\n public registerRuleset(rulesetOrId: Ruleset | string): string {\n if (typeof rulesetOrId === \"object\") {\n const rulesetWithNativeId = { ...rulesetOrId, id: this.getRulesetId(rulesetOrId) };\n return this.rulesets.add(rulesetWithNativeId).id;\n }\n\n return rulesetOrId;\n }\n\n /** @internal */\n public getRulesetId(rulesetOrId: Ruleset | string): string {\n return getRulesetIdObject(rulesetOrId).uniqueId;\n }\n\n public async request(params: RequestParams): Promise<string> {\n this.onUsed.raiseEvent();\n const { requestId, imodel, unitSystem, diagnostics: requestDiagnostics, cancelEvent, ...strippedParams } = params;\n const imodelAddon = this.getNativePlatform().getImodelAddon(imodel);\n const response = await withOptionalDiagnostics([this._diagnosticsOptions, requestDiagnostics], async (diagnosticsOptions) => {\n const nativeRequestParams: any = {\n requestId,\n params: {\n unitSystem: toOptionalNativeUnitSystem(unitSystem ?? this.activeUnitSystem),\n ...strippedParams,\n ...(diagnosticsOptions ? { diagnostics: diagnosticsOptions } : undefined),\n },\n };\n return this.getNativePlatform().handleRequest(imodelAddon, JSON.stringify(nativeRequestParams), cancelEvent);\n });\n return response.result;\n }\n}\n\nasync function withOptionalDiagnostics(\n diagnosticsOptions: Array<BackendDiagnosticsOptions | undefined>,\n nativePlatformRequestHandler: (combinedDiagnosticsOptions: DiagnosticsOptions | undefined) => Promise<NativePlatformResponse<string>>,\n): Promise<NativePlatformResponse<string>> {\n const contexts = diagnosticsOptions.map((d) => d?.requestContextSupplier?.());\n const combinedOptions = combineDiagnosticsOptions(...diagnosticsOptions);\n let responseDiagnostics: DiagnosticsScopeLogs | undefined;\n try {\n const response = await nativePlatformRequestHandler(combinedOptions);\n responseDiagnostics = response.diagnostics;\n return response;\n } catch (e) {\n if (e instanceof PresentationNativePlatformResponseError) {\n responseDiagnostics = e.diagnostics;\n }\n throw e;\n /* c8 ignore next */\n } finally {\n if (responseDiagnostics) {\n const diagnostics = { logs: [responseDiagnostics] };\n diagnosticsOptions.forEach((options, i) => {\n options && reportDiagnostics(diagnostics, options, contexts[i]);\n });\n }\n }\n}\n\ninterface RequestParams {\n diagnostics?: BackendDiagnosticsOptions;\n requestId: string;\n imodel: IModelDb;\n unitSystem?: UnitSystemKey;\n cancelEvent?: BeEvent<() => void>;\n}\n\nfunction setupRulesets(nativePlatform: NativePlatformDefinition, supplementalRulesetDirectories: string[], primaryRulesetDirectories: string[]): void {\n nativePlatform.addRuleset(JSON.stringify(elementPropertiesRuleset));\n nativePlatform.registerSupplementalRuleset(JSON.stringify(bisSupplementalRuleset));\n nativePlatform.registerSupplementalRuleset(JSON.stringify(funcSupplementalRuleset));\n nativePlatform.setupSupplementalRulesetDirectories(collateAssetDirectories(supplementalRulesetDirectories));\n nativePlatform.setupRulesetDirectories(collateAssetDirectories(primaryRulesetDirectories));\n}\n\ninterface RulesetIdObject {\n uniqueId: string;\n parts: {\n id: string;\n hash?: string;\n };\n}\n\n/** @internal */\nexport function getRulesetIdObject(rulesetOrId: Ruleset | string): RulesetIdObject {\n if (typeof rulesetOrId === \"object\") {\n if (IpcHost.isValid) {\n // in case of native apps we don't want to enforce ruleset id uniqueness as ruleset variables\n // are stored on a backend and creating new id will lose those variables\n return {\n uniqueId: rulesetOrId.id,\n parts: { id: rulesetOrId.id },\n };\n }\n\n const hashedId = hash.MD5(rulesetOrId);\n return {\n uniqueId: `${rulesetOrId.id}-${hashedId}`,\n parts: {\n id: rulesetOrId.id,\n hash: hashedId,\n },\n };\n }\n\n return { uniqueId: rulesetOrId, parts: { id: rulesetOrId } };\n}\n\n/** @internal */\nexport function getKeysForContentRequest(\n keys: Readonly<KeySet>,\n classInstanceKeysProcessor?: (keys: Map<string, Set<string>>) => void,\n): NativePresentationKeySetJSON {\n const result: NativePresentationKeySetJSON = {\n instanceKeys: [],\n nodeKeys: [],\n };\n const classInstancesMap = new Map<string, Set<string>>();\n keys.forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (Key.isNodeKey(key)) {\n result.nodeKeys.push(key);\n }\n\n if (Key.isInstanceKey(key)) {\n addInstanceKey(classInstancesMap, key);\n }\n });\n\n if (classInstanceKeysProcessor) {\n classInstanceKeysProcessor(classInstancesMap);\n }\n\n for (const entry of classInstancesMap) {\n if (entry[1].size > 0) {\n result.instanceKeys.push([entry[\"0\"], [...entry[1]]]);\n }\n }\n\n return result;\n}\n\n/** @internal */\nexport function bisElementInstanceKeysProcessor(imodel: IModelDb, classInstancesMap: Map<string, Set<string>>) {\n const elementClassName = \"BisCore:Element\";\n const elementIds = classInstancesMap.get(elementClassName);\n if (elementIds) {\n const deleteElementIds = new Array<string>();\n elementIds.forEach((elementId) => {\n const concreteKey = getElementKey(imodel, elementId);\n if (concreteKey && concreteKey.className !== elementClassName) {\n deleteElementIds.push(elementId);\n addInstanceKey(classInstancesMap, { className: concreteKey.className, id: elementId });\n }\n });\n for (const id of deleteElementIds) {\n elementIds.delete(id);\n }\n }\n}\n\nfunction addInstanceKey(classInstancesMap: Map<string, Set<string>>, key: InstanceKey): void {\n let set = classInstancesMap.get(key.className);\n if (!set) {\n set = new Set();\n classInstancesMap.set(key.className, set);\n }\n set.add(key.id);\n}\n\nfunction createNativePlatform(\n id: string,\n workerThreadsCount: number,\n updateCallback: (updateInfo: UpdateInfo | undefined) => void,\n caching: PresentationManagerProps[\"caching\"],\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n defaultFormats: FormatsMap | undefined,\n useMmap: boolean | number | undefined,\n): NativePlatformDefinition {\n return new (createDefaultNativePlatform({\n id,\n taskAllocationsMap: { [Number.MAX_SAFE_INTEGER]: workerThreadsCount },\n updateCallback,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n cacheConfig: createCacheConfig(caching?.hierarchies),\n contentCacheSize: caching?.content?.size,\n workerConnectionCacheSize: caching?.workerConnectionCacheSize,\n defaultFormats: toNativeUnitFormatsMap(defaultFormats),\n useMmap,\n }))();\n\n /* eslint-disable @typescript-eslint/no-deprecated */\n function createCacheConfig(config?: HierarchyCacheConfig): IModelJsNative.ECPresentationHierarchyCacheConfig {\n switch (config?.mode) {\n case HierarchyCacheMode.Disk:\n return { ...config, directory: normalizeDirectory(config.directory) };\n\n case HierarchyCacheMode.Hybrid:\n return {\n ...config,\n disk: config.disk ? { ...config.disk, directory: normalizeDirectory(config.disk.directory) } : undefined,\n };\n\n case HierarchyCacheMode.Memory:\n return config;\n\n default:\n return { mode: HierarchyCacheMode.Disk, directory: \"\" };\n }\n }\n /* eslint-enable @typescript-eslint/no-deprecated */\n\n function normalizeDirectory(directory?: string): string {\n return directory ? path.resolve(directory) : \"\";\n }\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n function toNativeUnitFormatsMap(map: FormatsMap | undefined): NativePresentationDefaultUnitFormats | undefined {\n if (!map) {\n return undefined;\n }\n\n const nativeFormatsMap: NativePresentationDefaultUnitFormats = {};\n Object.entries(map).forEach(([phenomenon, formats]) => {\n nativeFormatsMap[phenomenon] = (Array.isArray(formats) ? formats : [formats]).map((unitSystemsFormat) => ({\n unitSystems: unitSystemsFormat.unitSystems.map(toNativeUnitSystem),\n format: unitSystemsFormat.format,\n }));\n });\n return nativeFormatsMap;\n }\n}\n\nfunction toOptionalNativeUnitSystem(unitSystem: UnitSystemKey | undefined): NativePresentationUnitSystem | undefined {\n return unitSystem ? toNativeUnitSystem(unitSystem) : undefined;\n}\n\nfunction toNativeUnitSystem(unitSystem: UnitSystemKey): NativePresentationUnitSystem {\n switch (unitSystem) {\n case \"imperial\":\n return NativePresentationUnitSystem.BritishImperial;\n case \"metric\":\n return NativePresentationUnitSystem.Metric;\n case \"usCustomary\":\n return NativePresentationUnitSystem.UsCustomary;\n case \"usSurvey\":\n return NativePresentationUnitSystem.UsSurvey;\n }\n}\n\nfunction collateAssetDirectories(dirs: string[]): string[] {\n return [...new Set(dirs)];\n}\nconst createContentDescriptorOverrides = (descriptorOrOverrides: Descriptor | DescriptorOverrides): DescriptorOverrides => {\n if (descriptorOrOverrides instanceof Descriptor) {\n return descriptorOrOverrides.createDescriptorOverrides();\n }\n return descriptorOrOverrides;\n};\n\nfunction parseUpdateInfo(info: UpdateInfo | undefined) {\n if (info === undefined) {\n return undefined;\n }\n\n const parsedInfo: UpdateInfo = {};\n for (const fileName in info) {\n /* c8 ignore next 3 */\n if (!info.hasOwnProperty(fileName)) {\n continue;\n }\n\n const imodelDb = IModelDb.findByFilename(fileName);\n if (!imodelDb) {\n Logger.logError(PresentationBackendLoggerCategory.PresentationManager, `Update records IModelDb not found with path ${fileName}`);\n continue;\n }\n\n parsedInfo[imodelDb.getRpcProps().key] = info[fileName];\n }\n return Object.keys(parsedInfo).length > 0 ? parsedInfo : undefined;\n}\n\n/** @internal */\nexport function ipcUpdatesHandler(info: UpdateInfo | undefined) {\n const parsed = parseUpdateInfo(info);\n if (parsed) {\n IpcHost.send(PresentationIpcEvents.Update, parsed);\n }\n}\n\n/** @internal */\n/* c8 ignore next */\nexport function noopUpdatesHandler(_info: UpdateInfo | undefined) {}\n"]}
|
|
@@ -31,9 +31,14 @@ export declare class PresentationRpcImpl extends PresentationRpcInterface implem
|
|
|
31
31
|
/** Returns a bad request response with empty result and an error code */
|
|
32
32
|
private errorResponse;
|
|
33
33
|
/**
|
|
34
|
-
* Get the [[PresentationManager]] used by this RPC impl.
|
|
34
|
+
* Get the [[PresentationManager]] used by this RPC impl for the currently authenticated client.
|
|
35
|
+
*
|
|
36
|
+
* In IPC apps there's a single trusted local user, so a single shared manager is used for all
|
|
37
|
+
* requests (consistent with [[PresentationIpcHandler]]). In web apps, the manager is keyed by the
|
|
38
|
+
* JWT `sub` (subject) claim derived from the request's access token, so all sessions of the same
|
|
39
|
+
* user share a manager. When there's no usable token, the default shared manager is used.
|
|
35
40
|
*/
|
|
36
|
-
getManager(
|
|
41
|
+
getManager(): PresentationManager;
|
|
37
42
|
private getIModel;
|
|
38
43
|
private makeRequest;
|
|
39
44
|
getNodesCount(token: IModelRpcProps, requestOptions: HierarchyRpcRequestOptions): PresentationRpcResponse<number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PresentationRpcImpl.d.ts","sourceRoot":"","sources":["../../../src/presentation-backend/PresentationRpcImpl.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,cAAc,EAAsB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAEL,iCAAiC,EACjC,kCAAkC,EAElC,oCAAoC,EACpC,wBAAwB,EACxB,+BAA+B,EAC/B,uBAAuB,EACvB,cAAc,EAEd,6BAA6B,EAC7B,8BAA8B,EAC9B,iBAAiB,EACjB,+BAA+B,EAC/B,iBAAiB,EACjB,+CAA+C,EAC/C,sCAAsC,EAEtC,yCAAyC,EACzC,0BAA0B,EAC1B,QAAQ,EAER,UAAU,EACV,eAAe,EACf,IAAI,EACJ,eAAe,EACf,KAAK,EACL,aAAa,EAGb,wBAAwB,EACxB,uBAAuB,EAQvB,cAAc,EACd,+BAA+B,EAC/B,wCAAwC,EACzC,MAAM,4BAA4B,CAAC;AAQpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAMzD,gBAAgB;AAChB,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,gBAAgB;AAChB,eAAO,MAAM,0BAA0B,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"PresentationRpcImpl.d.ts","sourceRoot":"","sources":["../../../src/presentation-backend/PresentationRpcImpl.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
/** @packageDocumentation
|
|
6
6
|
* @module RPC
|
|
7
7
|
*/
|
|
8
|
-
import { IModelDb, RpcTrace } from "@itwin/core-backend";
|
|
8
|
+
import { IModelDb, IpcHost, RpcTrace } from "@itwin/core-backend";
|
|
9
9
|
import { BeEvent, ErrorCategory, Logger, omit, StatusCategory, SuccessCategory } from "@itwin/core-bentley";
|
|
10
10
|
import { RpcPendingResponse } from "@itwin/core-common";
|
|
11
11
|
import { ContentFlags, KeySet, PresentationError, PresentationRpcInterface, PresentationStatus, RulesetVariable, SelectClassInfo, } from "@itwin/presentation-common";
|
|
@@ -24,6 +24,30 @@ export const MAX_ALLOWED_PAGE_SIZE = 1000;
|
|
|
24
24
|
/** @internal */
|
|
25
25
|
export const MAX_ALLOWED_KEYS_PAGE_SIZE = 10000;
|
|
26
26
|
const DEFAULT_REQUEST_TIMEOUT = 5000;
|
|
27
|
+
/**
|
|
28
|
+
* Derives a stable cache key for a client `PresentationManager` from the given access token.
|
|
29
|
+
* Returns the JWT `sub` (subject) claim - a stable, server-issued identifier for the authenticated
|
|
30
|
+
* user - when the token is a well-formed JWT. Returns `undefined` otherwise (e.g. no token, opaque
|
|
31
|
+
* token or malformed token), in which case the default shared manager is used.
|
|
32
|
+
*/
|
|
33
|
+
function getManagerKeyFromAccessToken(accessToken) {
|
|
34
|
+
if (!accessToken) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
// the token may be prefixed with the authorization scheme (e.g. "Bearer <jwt>")
|
|
39
|
+
const jwt = accessToken.substring(accessToken.lastIndexOf(" ") + 1);
|
|
40
|
+
const parts = jwt.split(".");
|
|
41
|
+
if (parts.length !== 3) {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
const payload = JSON.parse(Buffer.from(parts[1], "base64url").toString("utf8"));
|
|
45
|
+
return typeof payload.sub === "string" && payload.sub.length > 0 ? payload.sub : undefined;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
27
51
|
/**
|
|
28
52
|
* The backend implementation of PresentationRpcInterface. All it's basically
|
|
29
53
|
* responsible for is forwarding calls to [[Presentation.manager]].
|
|
@@ -85,10 +109,16 @@ export class PresentationRpcImpl extends PresentationRpcInterface {
|
|
|
85
109
|
};
|
|
86
110
|
}
|
|
87
111
|
/**
|
|
88
|
-
* Get the [[PresentationManager]] used by this RPC impl.
|
|
112
|
+
* Get the [[PresentationManager]] used by this RPC impl for the currently authenticated client.
|
|
113
|
+
*
|
|
114
|
+
* In IPC apps there's a single trusted local user, so a single shared manager is used for all
|
|
115
|
+
* requests (consistent with [[PresentationIpcHandler]]). In web apps, the manager is keyed by the
|
|
116
|
+
* JWT `sub` (subject) claim derived from the request's access token, so all sessions of the same
|
|
117
|
+
* user share a manager. When there's no usable token, the default shared manager is used.
|
|
89
118
|
*/
|
|
90
|
-
getManager(
|
|
91
|
-
|
|
119
|
+
getManager() {
|
|
120
|
+
const managerKey = IpcHost.isValid ? undefined : getManagerKeyFromAccessToken(RpcTrace.expectCurrentActivity.accessToken);
|
|
121
|
+
return Presentation.getManager(managerKey);
|
|
92
122
|
}
|
|
93
123
|
async getIModel(token) {
|
|
94
124
|
const imodel = IModelDb.findByKey(token.key);
|
|
@@ -180,15 +210,15 @@ export class PresentationRpcImpl extends PresentationRpcInterface {
|
|
|
180
210
|
/* eslint-disable @typescript-eslint/no-deprecated */
|
|
181
211
|
async getNodesCount(token, requestOptions) {
|
|
182
212
|
return this.makeRequest(token, "getNodesCount", requestOptions, async (options) => {
|
|
183
|
-
return this.getManager(
|
|
213
|
+
return this.getManager().getNodesCount(options);
|
|
184
214
|
});
|
|
185
215
|
}
|
|
186
216
|
async getPagedNodes(token, requestOptions) {
|
|
187
217
|
return this.makeRequest(token, "getPagedNodes", requestOptions, async (options) => {
|
|
188
218
|
options = enforceValidPageSize(options);
|
|
189
219
|
const [serializedHierarchyLevel, count] = await Promise.all([
|
|
190
|
-
this.getManager(
|
|
191
|
-
this.getManager(
|
|
220
|
+
this.getManager()[_presentation_manager_detail].getNodes(options),
|
|
221
|
+
this.getManager().getNodesCount(options),
|
|
192
222
|
]);
|
|
193
223
|
const hierarchyLevel = deepReplaceNullsToUndefined(JSON.parse(serializedHierarchyLevel));
|
|
194
224
|
return {
|
|
@@ -199,23 +229,23 @@ export class PresentationRpcImpl extends PresentationRpcInterface {
|
|
|
199
229
|
}
|
|
200
230
|
async getNodesDescriptor(token, requestOptions) {
|
|
201
231
|
return this.makeRequest(token, "getNodesDescriptor", requestOptions, async (options) => {
|
|
202
|
-
return this.getManager(
|
|
232
|
+
return this.getManager()[_presentation_manager_detail].getNodesDescriptor(options);
|
|
203
233
|
});
|
|
204
234
|
}
|
|
205
235
|
async getNodePaths(token, requestOptions) {
|
|
206
236
|
return this.makeRequest(token, "getNodePaths", requestOptions, async (options) => {
|
|
207
|
-
return this.getManager(
|
|
237
|
+
return this.getManager()[_presentation_manager_detail].getNodePaths(options);
|
|
208
238
|
});
|
|
209
239
|
}
|
|
210
240
|
async getFilteredNodePaths(token, requestOptions) {
|
|
211
241
|
return this.makeRequest(token, "getFilteredNodePaths", requestOptions, async (options) => {
|
|
212
|
-
return this.getManager(
|
|
242
|
+
return this.getManager()[_presentation_manager_detail].getFilteredNodePaths(options);
|
|
213
243
|
});
|
|
214
244
|
}
|
|
215
245
|
/* eslint-enable @typescript-eslint/no-deprecated */
|
|
216
246
|
async getContentSources(token, requestOptions) {
|
|
217
247
|
return this.makeRequest(token, "getContentSources", requestOptions, async (options) => {
|
|
218
|
-
const result = await this.getManager(
|
|
248
|
+
const result = await this.getManager().getContentSources(options);
|
|
219
249
|
const classesMap = {};
|
|
220
250
|
const selectClasses = result.map((sci) => SelectClassInfo.toCompressedJSON(sci, classesMap));
|
|
221
251
|
return { sources: selectClasses, classesMap };
|
|
@@ -230,7 +260,7 @@ export class PresentationRpcImpl extends PresentationRpcInterface {
|
|
|
230
260
|
};
|
|
231
261
|
// Here we send a plain JSON string but we will parse it to DescriptorJSON on the frontend. This way we are
|
|
232
262
|
// bypassing unnecessary deserialization and serialization.
|
|
233
|
-
return
|
|
263
|
+
return this.getManager()[_presentation_manager_detail].getContentDescriptor(options);
|
|
234
264
|
});
|
|
235
265
|
}
|
|
236
266
|
async getContentSetSize(token, requestOptions) {
|
|
@@ -239,7 +269,7 @@ export class PresentationRpcImpl extends PresentationRpcInterface {
|
|
|
239
269
|
...options,
|
|
240
270
|
keys: KeySet.fromJSON(options.keys),
|
|
241
271
|
};
|
|
242
|
-
return this.getManager(
|
|
272
|
+
return this.getManager().getContentSetSize(options);
|
|
243
273
|
});
|
|
244
274
|
}
|
|
245
275
|
async getPagedContent(token, requestOptions) {
|
|
@@ -249,8 +279,8 @@ export class PresentationRpcImpl extends PresentationRpcInterface {
|
|
|
249
279
|
keys: KeySet.fromJSON(options.keys),
|
|
250
280
|
});
|
|
251
281
|
const [size, content] = await Promise.all([
|
|
252
|
-
this.getManager(
|
|
253
|
-
this.getManager(
|
|
282
|
+
this.getManager().getContentSetSize(options),
|
|
283
|
+
this.getManager()[_presentation_manager_detail].getContent(options),
|
|
254
284
|
]);
|
|
255
285
|
if (!content) {
|
|
256
286
|
return undefined;
|
|
@@ -280,8 +310,7 @@ export class PresentationRpcImpl extends PresentationRpcInterface {
|
|
|
280
310
|
}
|
|
281
311
|
async getElementProperties(token, requestOptions) {
|
|
282
312
|
return this.makeRequest(token, "getElementProperties", { ...requestOptions }, async (options) => {
|
|
283
|
-
|
|
284
|
-
return this.getManager(clientId).getElementProperties(restOptions);
|
|
313
|
+
return this.getManager().getElementProperties(options);
|
|
285
314
|
});
|
|
286
315
|
}
|
|
287
316
|
async getPagedDistinctValues(token, requestOptions) {
|
|
@@ -290,7 +319,7 @@ export class PresentationRpcImpl extends PresentationRpcInterface {
|
|
|
290
319
|
...options,
|
|
291
320
|
keys: KeySet.fromJSON(options.keys),
|
|
292
321
|
});
|
|
293
|
-
return this.getManager(
|
|
322
|
+
return this.getManager()[_presentation_manager_detail].getPagedDistinctValues(options);
|
|
294
323
|
});
|
|
295
324
|
}
|
|
296
325
|
async getContentInstanceKeys(token, requestOptions) {
|
|
@@ -305,8 +334,8 @@ export class PresentationRpcImpl extends PresentationRpcInterface {
|
|
|
305
334
|
},
|
|
306
335
|
}, MAX_ALLOWED_KEYS_PAGE_SIZE);
|
|
307
336
|
const [size, content] = await Promise.all([
|
|
308
|
-
this.getManager(
|
|
309
|
-
this.getManager(
|
|
337
|
+
this.getManager().getContentSetSize(options),
|
|
338
|
+
this.getManager()[_presentation_manager_detail].getContent(options),
|
|
310
339
|
]);
|
|
311
340
|
if (size === 0 || !content) {
|
|
312
341
|
return { total: 0, items: new KeySet().toJSON() };
|
|
@@ -319,7 +348,7 @@ export class PresentationRpcImpl extends PresentationRpcInterface {
|
|
|
319
348
|
}
|
|
320
349
|
async getDisplayLabelDefinition(token, requestOptions) {
|
|
321
350
|
return this.makeRequest(token, "getDisplayLabelDefinition", requestOptions, async (options) => {
|
|
322
|
-
const label = await this.getManager(
|
|
351
|
+
const label = await this.getManager()[_presentation_manager_detail].getDisplayLabelDefinition(options);
|
|
323
352
|
return label;
|
|
324
353
|
});
|
|
325
354
|
}
|
|
@@ -329,7 +358,7 @@ export class PresentationRpcImpl extends PresentationRpcInterface {
|
|
|
329
358
|
requestOptions.keys.splice(pageOpts.paging.size);
|
|
330
359
|
}
|
|
331
360
|
return this.makeRequest(token, "getPagedDisplayLabelDefinitions", requestOptions, async (options) => {
|
|
332
|
-
const labels = await this.getManager(
|
|
361
|
+
const labels = await this.getManager()[_presentation_manager_detail].getDisplayLabelDefinitions({
|
|
333
362
|
...options,
|
|
334
363
|
keys: options.keys,
|
|
335
364
|
});
|
|
@@ -341,11 +370,11 @@ export class PresentationRpcImpl extends PresentationRpcInterface {
|
|
|
341
370
|
}
|
|
342
371
|
/* eslint-disable @typescript-eslint/no-deprecated */
|
|
343
372
|
async getSelectionScopes(token, requestOptions) {
|
|
344
|
-
return this.makeRequest(token, "getSelectionScopes", requestOptions, async (options) => this.getManager(
|
|
373
|
+
return this.makeRequest(token, "getSelectionScopes", requestOptions, async (options) => this.getManager().getSelectionScopes(options));
|
|
345
374
|
}
|
|
346
375
|
async computeSelection(token, requestOptions) {
|
|
347
376
|
return this.makeRequest(token, "computeSelection", requestOptions, async (options) => {
|
|
348
|
-
const keys = await this.getManager(
|
|
377
|
+
const keys = await this.getManager().computeSelection(options);
|
|
349
378
|
return keys.toJSON();
|
|
350
379
|
});
|
|
351
380
|
}
|