@itwin/core-backend 5.15.0-dev.13 → 5.15.0-dev.15
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/lib/cjs/BriefcaseManager.d.ts +2 -1
- package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
- package/lib/cjs/BriefcaseManager.js +39 -9
- package/lib/cjs/BriefcaseManager.js.map +1 -1
- package/lib/cjs/ChangeUnifier.d.ts +82 -0
- package/lib/cjs/ChangeUnifier.d.ts.map +1 -0
- package/lib/cjs/ChangeUnifier.js +163 -0
- package/lib/cjs/ChangeUnifier.js.map +1 -0
- package/lib/cjs/ChangesetReader.d.ts +21 -2
- package/lib/cjs/ChangesetReader.d.ts.map +1 -1
- package/lib/cjs/ChangesetReader.js +37 -1
- package/lib/cjs/ChangesetReader.js.map +1 -1
- package/lib/cjs/ECDb.d.ts +1 -0
- package/lib/cjs/ECDb.d.ts.map +1 -1
- package/lib/cjs/ECDb.js +4 -1
- package/lib/cjs/ECDb.js.map +1 -1
- package/lib/cjs/IModelDb.d.ts +6 -1
- package/lib/cjs/IModelDb.d.ts.map +1 -1
- package/lib/cjs/IModelDb.js +16 -5
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/NativeHost.d.ts.map +1 -1
- package/lib/cjs/NativeHost.js +5 -1
- package/lib/cjs/NativeHost.js.map +1 -1
- package/lib/cjs/Relationship.d.ts +28 -0
- package/lib/cjs/Relationship.d.ts.map +1 -1
- package/lib/cjs/Relationship.js +78 -0
- package/lib/cjs/Relationship.js.map +1 -1
- package/lib/cjs/SchemaSync.d.ts.map +1 -1
- package/lib/cjs/SchemaSync.js +1 -0
- package/lib/cjs/SchemaSync.js.map +1 -1
- package/lib/cjs/TxnManager.d.ts +126 -89
- package/lib/cjs/TxnManager.d.ts.map +1 -1
- package/lib/cjs/TxnManager.js +109 -75
- package/lib/cjs/TxnManager.js.map +1 -1
- package/lib/cjs/annotations/LeaderGeometry.d.ts.map +1 -1
- package/lib/cjs/annotations/LeaderGeometry.js +3 -0
- package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
- package/lib/cjs/core-backend.d.ts +1 -0
- package/lib/cjs/core-backend.d.ts.map +1 -1
- package/lib/cjs/core-backend.js +1 -0
- package/lib/cjs/core-backend.js.map +1 -1
- package/lib/cjs/internal/BriefcaseUtils.d.ts +19 -0
- package/lib/cjs/internal/BriefcaseUtils.d.ts.map +1 -0
- package/lib/cjs/internal/BriefcaseUtils.js +65 -0
- package/lib/cjs/internal/BriefcaseUtils.js.map +1 -0
- package/lib/cjs/internal/QueryMetadataCache.d.ts +44 -0
- package/lib/cjs/internal/QueryMetadataCache.d.ts.map +1 -0
- package/lib/cjs/internal/QueryMetadataCache.js +107 -0
- package/lib/cjs/internal/QueryMetadataCache.js.map +1 -0
- package/lib/cjs/internal/Symbols.d.ts +6 -0
- package/lib/cjs/internal/Symbols.d.ts.map +1 -1
- package/lib/cjs/internal/Symbols.js +7 -1
- package/lib/cjs/internal/Symbols.js.map +1 -1
- package/lib/esm/BriefcaseManager.d.ts +2 -1
- package/lib/esm/BriefcaseManager.d.ts.map +1 -1
- package/lib/esm/BriefcaseManager.js +40 -10
- package/lib/esm/BriefcaseManager.js.map +1 -1
- package/lib/esm/ChangeUnifier.d.ts +82 -0
- package/lib/esm/ChangeUnifier.d.ts.map +1 -0
- package/lib/esm/ChangeUnifier.js +159 -0
- package/lib/esm/ChangeUnifier.js.map +1 -0
- package/lib/esm/ChangesetReader.d.ts +21 -2
- package/lib/esm/ChangesetReader.d.ts.map +1 -1
- package/lib/esm/ChangesetReader.js +38 -2
- package/lib/esm/ChangesetReader.js.map +1 -1
- package/lib/esm/ECDb.d.ts +1 -0
- package/lib/esm/ECDb.d.ts.map +1 -1
- package/lib/esm/ECDb.js +4 -1
- package/lib/esm/ECDb.js.map +1 -1
- package/lib/esm/IModelDb.d.ts +6 -1
- package/lib/esm/IModelDb.d.ts.map +1 -1
- package/lib/esm/IModelDb.js +17 -6
- package/lib/esm/IModelDb.js.map +1 -1
- package/lib/esm/NativeHost.d.ts.map +1 -1
- package/lib/esm/NativeHost.js +5 -1
- package/lib/esm/NativeHost.js.map +1 -1
- package/lib/esm/Relationship.d.ts +28 -0
- package/lib/esm/Relationship.d.ts.map +1 -1
- package/lib/esm/Relationship.js +78 -0
- package/lib/esm/Relationship.js.map +1 -1
- package/lib/esm/SchemaSync.d.ts.map +1 -1
- package/lib/esm/SchemaSync.js +1 -0
- package/lib/esm/SchemaSync.js.map +1 -1
- package/lib/esm/TxnManager.d.ts +126 -89
- package/lib/esm/TxnManager.d.ts.map +1 -1
- package/lib/esm/TxnManager.js +110 -76
- package/lib/esm/TxnManager.js.map +1 -1
- package/lib/esm/annotations/LeaderGeometry.d.ts.map +1 -1
- package/lib/esm/annotations/LeaderGeometry.js +3 -0
- package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
- package/lib/esm/core-backend.d.ts +1 -0
- package/lib/esm/core-backend.d.ts.map +1 -1
- package/lib/esm/core-backend.js +1 -0
- package/lib/esm/core-backend.js.map +1 -1
- package/lib/esm/internal/BriefcaseUtils.d.ts +19 -0
- package/lib/esm/internal/BriefcaseUtils.d.ts.map +1 -0
- package/lib/esm/internal/BriefcaseUtils.js +61 -0
- package/lib/esm/internal/BriefcaseUtils.js.map +1 -0
- package/lib/esm/internal/QueryMetadataCache.d.ts +44 -0
- package/lib/esm/internal/QueryMetadataCache.d.ts.map +1 -0
- package/lib/esm/internal/QueryMetadataCache.js +103 -0
- package/lib/esm/internal/QueryMetadataCache.js.map +1 -0
- package/lib/esm/internal/Symbols.d.ts +6 -0
- package/lib/esm/internal/Symbols.d.ts.map +1 -1
- package/lib/esm/internal/Symbols.js +6 -0
- package/lib/esm/internal/Symbols.js.map +1 -1
- package/lib/esm/test/annotations/LeaderGeometry.test.js +15 -1
- package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
- package/lib/esm/test/ecdb/ConcurrentQuery.test.js +35 -16
- package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/QueryMetadataCache.test.d.ts +2 -0
- package/lib/esm/test/ecdb/QueryMetadataCache.test.d.ts.map +1 -0
- package/lib/esm/test/ecdb/QueryMetadataCache.test.js +630 -0
- package/lib/esm/test/ecdb/QueryMetadataCache.test.js.map +1 -0
- package/lib/esm/test/element/RelationshipBatchLookup.test.d.ts +2 -0
- package/lib/esm/test/element/RelationshipBatchLookup.test.d.ts.map +1 -0
- package/lib/esm/test/element/RelationshipBatchLookup.test.js +202 -0
- package/lib/esm/test/element/RelationshipBatchLookup.test.js.map +1 -0
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js +187 -1
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
- package/lib/esm/test/standalone/BriefcaseManagerDelete.test.d.ts +2 -0
- package/lib/esm/test/standalone/BriefcaseManagerDelete.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/BriefcaseManagerDelete.test.js +159 -0
- package/lib/esm/test/standalone/BriefcaseManagerDelete.test.js.map +1 -0
- package/lib/esm/test/standalone/ChangeUnifier.test.d.ts +2 -0
- package/lib/esm/test/standalone/ChangeUnifier.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/ChangeUnifier.test.js +732 -0
- package/lib/esm/test/standalone/ChangeUnifier.test.js.map +1 -0
- package/package.json +17 -17
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChangeUnifier.test.js","sourceRoot":"","sources":["../../../../src/test/standalone/ChangeUnifier.test.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\nimport { DbResult, Id64, Id64String, IModelStatus } from \"@itwin/core-bentley\";\r\nimport { Code, ColorDef, GeometricElement2dProps, IModel, IModelError, SubCategoryAppearance } from \"@itwin/core-common\";\r\nimport { IModelJsNative } from \"@bentley/imodeljs-native\";\r\nimport { assert, expect } from \"chai\";\r\nimport * as path from \"node:path\";\r\nimport { DrawingCategory } from \"../../Category\";\r\nimport { ChangesetReader } from \"../../ChangesetReader\";\r\nimport { ChangeInstance, PropertyFilter, RowFormatOptions } from \"../../ChangesetReaderTypes\";\r\nimport { ChangeUnifier, ChangeUnifierArgs } from \"../../ChangeUnifier\";\r\nimport { BriefcaseDb, ChannelControl } from \"../../core-backend\";\r\nimport { EditTxn } from \"../../EditTxn\";\r\nimport { HubMock } from \"../../internal/HubMock\";\r\nimport { _appendToNativeUnifier } from \"../../internal/Symbols\";\r\nimport { IModelNative } from \"../../internal/NativePlatform\";\r\nimport { ChangeUnifierCache, PartialChangeUnifier } from \"../../PartialChangeUnifier\";\r\nimport { SqliteChangeOp } from \"../../SqliteChangesetReader\";\r\nimport { HubWrappers, IModelTestUtils } from \"../IModelTestUtils\";\r\nimport { KnownTestLocations } from \"../KnownTestLocations\";\r\nimport \"../TestUtils\"; // registers the global mocha before/after hooks that start/stop the backend\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */ // EC property names are PascalCase\r\n\r\n/** `true` once the native addon implements `ChangeUnifier` (iTwin/itwinjs-core#9761). Until then, tests that need it are skipped. */\r\nfunction isNativeChangeUnifierAvailable(): boolean {\r\n return typeof (IModelNative.platform as Partial<typeof IModelJsNative>).ChangeUnifier === \"function\";\r\n}\r\n\r\n/** What the tests need to know about the tables of an iModel, queried from `ec_Table`. */\r\ninterface TableInfo {\r\n /** Names of the overflow tables. */\r\n readonly overflowTables: ReadonlySet<string>;\r\n /** Id of the root class of the class family mapped to each table, i.e. the exclusive root class of the family's primary table. */\r\n readonly rootClassIds: ReadonlyMap<string, bigint>;\r\n}\r\n\r\nfunction queryTableInfo(db: BriefcaseDb): TableInfo {\r\n interface Table { readonly name: string, readonly parentId?: Id64String, readonly isOverflow: boolean, readonly exclusiveRootClassId?: Id64String }\r\n const tables = new Map<Id64String, Table>();\r\n db.withSqliteStatement(\"SELECT Id, ParentTableId, Name, Type, ExclusiveRootClassId FROM ec_Table\", (stmt) => {\r\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\r\n tables.set(stmt.getValueId(0), {\r\n parentId: stmt.isValueNull(1) ? undefined : stmt.getValueId(1),\r\n name: stmt.getValueString(2),\r\n isOverflow: stmt.getValueInteger(3) === 3, // DbTable::Type::Overflow\r\n exclusiveRootClassId: stmt.isValueNull(4) ? undefined : stmt.getValueId(4),\r\n });\r\n }\r\n });\r\n\r\n const overflowTables = new Set<string>();\r\n const rootClassIds = new Map<string, bigint>();\r\n for (const table of tables.values()) {\r\n if (table.isOverflow)\r\n overflowTables.add(table.name);\r\n // Joined and overflow tables reference their parent table; the primary table of the class family has no parent.\r\n let primary: Table | undefined = table;\r\n while (primary?.parentId !== undefined)\r\n primary = tables.get(primary.parentId);\r\n if (primary?.exclusiveRootClassId !== undefined)\r\n rootClassIds.set(table.name, BigInt(primary.exclusiveRootClassId));\r\n }\r\n return { overflowTables, rootClassIds };\r\n}\r\n\r\n/** The order of [[ChangeUnifier.instances]]: numeric (root class id, ECInstanceId, stage), with \"Old\" before \"New\". */\r\nfunction sortKeyOf(instance: ChangeInstance, tableInfo: TableInfo): bigint[] {\r\n const table = instance.$meta.tables[0];\r\n const rootClassId = tableInfo.rootClassIds.get(table);\r\n assert.isDefined(rootClassId, `root class of table ${table}`);\r\n return [rootClassId!, BigInt(instance.ECInstanceId), BigInt(instance.$meta.stage === \"Old\" ? 0 : 1)];\r\n}\r\n\r\nfunction compareSortKeys(lhs: bigint[], rhs: bigint[]): number {\r\n for (let i = 0; i < lhs.length; ++i) {\r\n if (lhs[i] !== rhs[i])\r\n return lhs[i] < rhs[i] ? -1 : 1;\r\n }\r\n return 0;\r\n}\r\n\r\n/** The ops and `isIndirectChange` flags of the rows of one instance and stage that came from main (i.e. non-overflow) tables. */\r\ninterface MainTableRows {\r\n readonly ops: Set<SqliteChangeOp>;\r\n readonly isIndirect: Set<boolean>;\r\n}\r\n\r\n/** The expected output of [[ChangeUnifier]], computed with [[PartialChangeUnifier]]. */\r\ninterface ExpectedInstances {\r\n /** Instances merged by PartialChangeUnifier, sorted the way ChangeUnifier sorts them. */\r\n readonly instances: ChangeInstance[];\r\n /** The main-table rows of each instance, by PartialChangeUnifier merge key. */\r\n readonly mainTableRows: ReadonlyMap<string, MainTableRows>;\r\n}\r\n\r\n/** The key PartialChangeUnifier merges partial instances by. */\r\nfunction partialChangeUnifierKey(instance: ChangeInstance): string {\r\n return `${instance.$meta.instanceKey}-${instance.$meta.stage}`.toLowerCase();\r\n}\r\n\r\nfunction unifyWithPartialChangeUnifier(readers: Iterable<ChangesetReader>, tableInfo: TableInfo): ExpectedInstances {\r\n const mainTableRows = new Map<string, MainTableRows>();\r\n using unifier = new PartialChangeUnifier(ChangeUnifierCache.createInMemoryCache());\r\n for (const reader of readers) {\r\n while (reader.step()) {\r\n if (!reader.isECTable)\r\n continue;\r\n if (!tableInfo.overflowTables.has(reader.tableName)) {\r\n for (const partial of [reader.inserted, reader.deleted]) {\r\n if (partial === undefined)\r\n continue;\r\n const key = partialChangeUnifierKey(partial);\r\n const rows = mainTableRows.get(key) ?? { ops: new Set<SqliteChangeOp>(), isIndirect: new Set<boolean>() };\r\n rows.ops.add(reader.op);\r\n rows.isIndirect.add(reader.isIndirectChange);\r\n mainTableRows.set(key, rows);\r\n }\r\n }\r\n unifier.appendFrom(reader);\r\n }\r\n }\r\n const instances = Array.from(unifier.instances);\r\n instances.sort((lhs, rhs) => compareSortKeys(sortKeyOf(lhs, tableInfo), sortKeyOf(rhs, tableInfo)));\r\n return { instances, mainTableRows };\r\n}\r\n\r\nfunction unifyNatively(readers: Iterable<ChangesetReader>, args?: ChangeUnifierArgs): ChangeInstance[] {\r\n using unifier = ChangeUnifier.fromReaders(readers, args);\r\n return Array.from(unifier.instances());\r\n}\r\n\r\n/**\r\n * Assert that the instances of [[ChangeUnifier]] equal those of [[PartialChangeUnifier]], except for the documented differences:\r\n * - ChangeUnifier sorts numerically by (root class id, ECInstanceId, stage).\r\n * - ChangeUnifier takes `op` and `isIndirectChange` from the rows of main (non-overflow) tables. If only overflow tables\r\n * contributed, `op` is \"Updated\" and `isIndirectChange` comes from the first row. PartialChangeUnifier takes both from the first row.\r\n * @param severalReaders `true` if the instances merge the rows of several readers, in which case the same table or\r\n * change index can contribute more than once, so `tables` and `changeIndexes` are compared as sets.\r\n */\r\nfunction assertMatchesPartialChangeUnifier(actual: ChangeInstance[], expected: ExpectedInstances, tableInfo: TableInfo, severalReaders = false): void {\r\n for (let i = 1; i < actual.length; ++i)\r\n assert.isBelow(compareSortKeys(sortKeyOf(actual[i - 1], tableInfo), sortKeyOf(actual[i], tableInfo)), 0, `instances ${i - 1} and ${i} are not sorted`);\r\n\r\n assert.equal(actual.length, expected.instances.length, \"number of instances\");\r\n actual.forEach((actualInstance, i) => {\r\n const expectedInstance = expected.instances[i];\r\n const { $meta: actualMeta, ...actualProps } = actualInstance;\r\n const { $meta: expectedMeta, ...expectedProps } = expectedInstance;\r\n const what = `${expectedMeta.instanceKey} ${expectedMeta.stage}`;\r\n\r\n assert.deepEqual(actualProps, expectedProps, `${what}: properties`);\r\n assert.sameMembers(Object.keys(actualMeta), Object.keys(expectedMeta), `${what}: $meta keys`);\r\n assert.equal(actualMeta.instanceKey, expectedMeta.instanceKey, `${what}: instanceKey`);\r\n assert.equal(actualMeta.stage, expectedMeta.stage, `${what}: stage`);\r\n assert.equal(actualMeta.propFilter, expectedMeta.propFilter, `${what}: propFilter`);\r\n assert.deepEqual(actualMeta.rowOptions, expectedMeta.rowOptions, `${what}: rowOptions`);\r\n assert.deepEqual(actualMeta.changeFetchedPropNames, expectedMeta.changeFetchedPropNames, `${what}: changeFetchedPropNames`);\r\n if (severalReaders) {\r\n assert.sameMembers([...new Set(actualMeta.tables)], [...new Set(expectedMeta.tables)], `${what}: tables`);\r\n assert.sameMembers([...new Set(actualMeta.changeIndexes)], [...new Set(expectedMeta.changeIndexes)], `${what}: changeIndexes`);\r\n } else {\r\n assert.deepEqual(actualMeta.tables, expectedMeta.tables, `${what}: tables`);\r\n assert.deepEqual(actualMeta.changeIndexes, expectedMeta.changeIndexes, `${what}: changeIndexes`);\r\n }\r\n\r\n const mainTableRows = expected.mainTableRows.get(partialChangeUnifierKey(expectedInstance));\r\n if (mainTableRows === undefined) {\r\n assert.equal(actualMeta.op, \"Updated\", `${what}: op of an instance only overflow tables contributed to`);\r\n assert.equal(actualMeta.isIndirectChange, expectedMeta.isIndirectChange, `${what}: isIndirectChange`);\r\n } else {\r\n assert.include([...mainTableRows.ops], actualMeta.op, `${what}: op`);\r\n assert.include([...mainTableRows.isIndirect], actualMeta.isIndirectChange, `${what}: isIndirectChange`);\r\n }\r\n });\r\n}\r\n\r\n/** Options for opening a [[ChangesetReader]] in these tests. */\r\ninterface ReaderOptions {\r\n readonly propFilter?: PropertyFilter;\r\n readonly rowOptions?: RowFormatOptions;\r\n readonly invert?: boolean;\r\n /** Configures the reader, e.g. sets filters, before it is used. */\r\n readonly configure?: (reader: ChangesetReader) => void;\r\n}\r\n\r\nfunction startTestTxn(iModel: BriefcaseDb, description: string): EditTxn {\r\n const txn = new EditTxn(iModel, description);\r\n txn.start();\r\n return txn;\r\n}\r\n\r\nasync function importSchemaStrings(txn: EditTxn, schemas: string[]): Promise<void> {\r\n if (txn.isActive)\r\n txn.saveChanges();\r\n await txn.iModel.importSchemaStrings(schemas);\r\n}\r\n\r\n/** Wait so that LastMod on bis_Model gets a distinct timestamp in the next changeset. */\r\nasync function waitForDistinctLastMod(): Promise<void> {\r\n await new Promise((resolve) => setTimeout(resolve, 300));\r\n}\r\n\r\ndescribe(\"ChangeUnifier\", () => {\r\n const accessToken = \"super manager token\";\r\n const wideElementPropCount = 36; // enough to spill properties p34 and p35 into bis_GeometricElement2d_Overflow\r\n let rwIModel: BriefcaseDb | undefined;\r\n let txn: EditTxn | undefined;\r\n let tableInfo: TableInfo;\r\n /** Paths of the changesets pushed by the test setup, except the one that imports the schema. */\r\n const changesets = { inserts: \"\", updates: \"\", deletes: \"\", bulkInserts: \"\" };\r\n /** Ids of CuTest:CuElements `e[0]`..`e[4]`, CuTest:CuWideElements `w0` and `w1` and CuTest:CuRefersTo relationships `r0` and `r1`. */\r\n const ids = { e: [] as Id64String[], w0: \"\", w1: \"\", r0: \"\", r1: \"\" };\r\n /** Label of e4: a string that starts with the header BeJsValue uses for binary data. */\r\n const base64LikeLabel = \"encoding=base64;SGVsbG8=\";\r\n\r\n function db(): BriefcaseDb {\r\n assert.isDefined(rwIModel);\r\n return rwIModel!;\r\n }\r\n\r\n function openReader(fileName: string, options: ReaderOptions = {}): ChangesetReader {\r\n const reader = ChangesetReader.openFile({ db: db(), fileName, propFilter: options.propFilter, rowOptions: options.rowOptions, invert: options.invert });\r\n options.configure?.(reader);\r\n return reader;\r\n }\r\n\r\n /** Opens each reader when it is requested and disposes it when the next one is requested, as documented for [[ChangeUnifier.fromReaders]]. */\r\n function* openReaders(fileNames: string[], options: ReaderOptions = {}): Generator<ChangesetReader> {\r\n for (const fileName of fileNames) {\r\n using reader = openReader(fileName, options);\r\n yield reader;\r\n }\r\n }\r\n\r\n before(async function () {\r\n if (!isNativeChangeUnifierAvailable())\r\n this.skip();\r\n\r\n HubMock.startup(\"ChangeUnifier\", KnownTestLocations.outputDir);\r\n const iTwinId = HubMock.iTwinId;\r\n const iModelId = await HubMock.createNewIModel({ iTwinId, iModelName: \"changeUnifier\", description: \"ChangeUnifier\", accessToken });\r\n const iModel = rwIModel = await HubWrappers.downloadAndOpenBriefcase({ iTwinId, iModelId, accessToken });\r\n const editTxn = txn = startTestTxn(iModel, \"ChangeUnifier setup\");\r\n\r\n // Changeset 0: schema, drawing model and category.\r\n const schema = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n <ECSchema schemaName=\"CuTest\" alias=\"cut\" version=\"01.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\r\n <ECSchemaReference name=\"BisCore\" version=\"01.00\" alias=\"bis\"/>\r\n <ECEntityClass typeName=\"CuElement\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n <ECProperty propertyName=\"Label\" typeName=\"string\"/>\r\n <ECProperty propertyName=\"Num\" typeName=\"int\"/>\r\n <ECProperty propertyName=\"Pt\" typeName=\"point2d\"/>\r\n <ECProperty propertyName=\"Bin\" typeName=\"binary\"/>\r\n </ECEntityClass>\r\n <ECEntityClass typeName=\"CuWideElement\">\r\n <BaseClass>bis:GraphicalElement2d</BaseClass>\r\n ${Array.from({ length: wideElementPropCount }, (_, i) => `<ECProperty propertyName=\"p${i}\" typeName=\"string\"/>`).join(\"\\n \")}\r\n </ECEntityClass>\r\n <ECRelationshipClass typeName=\"CuRefersTo\" strength=\"referencing\" modifier=\"Sealed\">\r\n <BaseClass>bis:ElementRefersToElements</BaseClass>\r\n <Source multiplicity=\"(0..*)\" roleLabel=\"refers to\" polymorphic=\"true\"><Class class=\"CuElement\"/></Source>\r\n <Target multiplicity=\"(0..*)\" roleLabel=\"is referenced by\" polymorphic=\"true\"><Class class=\"CuElement\"/></Target>\r\n </ECRelationshipClass>\r\n </ECSchema>`;\r\n await importSchemaStrings(editTxn, [schema]);\r\n iModel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\r\n await iModel.locks.acquireLocks({ shared: IModel.dictionaryId });\r\n const modelCode = Code.createEmpty();\r\n modelCode.value = \"ChangeUnifierDrawing\";\r\n const [, drawingModelId] = IModelTestUtils.createAndInsertDrawingPartitionAndModel(editTxn, modelCode, true);\r\n const categoryId = DrawingCategory.queryCategoryIdByName(iModel, IModel.dictionaryId, \"ChangeUnifierCategory\")\r\n ?? DrawingCategory.insert(editTxn, IModel.dictionaryId, \"ChangeUnifierCategory\", new SubCategoryAppearance({ color: ColorDef.fromString(\"rgb(0,128,255)\").toJSON() }));\r\n editTxn.saveChanges(\"setup\");\r\n await iModel.pushChanges({ description: \"setup\", accessToken });\r\n\r\n const insertElement = (classFullName: string, props: object) => editTxn.insertElement({\r\n classFullName,\r\n model: drawingModelId,\r\n category: categoryId,\r\n code: Code.createEmpty(),\r\n ...props,\r\n } as any);\r\n const wideProps = (prefix: string, count: number) => Object.fromEntries(Array.from({ length: count }, (_, i) => [`p${i}`, `${prefix}-${i}`]));\r\n\r\n // Changeset 1: insert elements - including properties in the overflow table - and relationships.\r\n await waitForDistinctLastMod();\r\n await iModel.locks.acquireLocks({ shared: drawingModelId });\r\n for (let i = 0; i < 5; ++i)\r\n ids.e.push(insertElement(\"CuTest:CuElement\", { Label: i === 4 ? base64LikeLabel : `e${i}`, Num: i, Pt: { x: i, y: -i }, Bin: new Uint8Array([i, i + 1, i + 2]) }));\r\n ids.w0 = insertElement(\"CuTest:CuWideElement\", wideProps(\"w0\", wideElementPropCount));\r\n ids.w1 = insertElement(\"CuTest:CuWideElement\", wideProps(\"w1\", wideElementPropCount));\r\n editTxn.saveChanges(\"insert elements\");\r\n await iModel.locks.acquireLocks({ exclusive: Id64.toIdSet([ids.e[0], ids.e[1], ids.e[3], ids.e[4]]) });\r\n ids.r0 = editTxn.insertRelationship({ classFullName: \"CuTest:CuRefersTo\", sourceId: ids.e[0], targetId: ids.e[1] });\r\n ids.r1 = editTxn.insertRelationship({ classFullName: \"CuTest:CuRefersTo\", sourceId: ids.e[3], targetId: ids.e[4] });\r\n editTxn.saveChanges(\"insert relationships\");\r\n await iModel.pushChanges({ description: \"inserts\", accessToken });\r\n\r\n // Changeset 2: update elements, including properties in the overflow table.\r\n await waitForDistinctLastMod();\r\n await iModel.locks.acquireLocks({ exclusive: Id64.toIdSet([ids.e[0], ids.e[1], ids.w0]) });\r\n editTxn.updateElement({ ...iModel.elements.getElementProps(ids.e[0]), Label: \"e0-updated\" });\r\n editTxn.updateElement({ ...iModel.elements.getElementProps(ids.e[1]), Num: 100, Pt: { x: 10, y: 20 } });\r\n editTxn.updateElement({ ...iModel.elements.getElementProps(ids.w0), p34: \"w0-34-updated\", p35: \"w0-35-updated\" }); // only properties in the overflow table\r\n editTxn.saveChanges(\"update elements\");\r\n await iModel.pushChanges({ description: \"updates\", accessToken });\r\n\r\n // Changeset 3: delete elements - including properties in the overflow table - and a relationship.\r\n await waitForDistinctLastMod();\r\n await iModel.locks.acquireLocks({ exclusive: Id64.toIdSet([ids.e[2], ids.w1, ids.e[3], ids.e[4]]) });\r\n editTxn.deleteRelationship(iModel.relationships.getInstanceProps(\"CuTest:CuRefersTo\", ids.r1));\r\n editTxn.deleteElement([ids.e[2], ids.w1]);\r\n editTxn.saveChanges(\"delete elements\");\r\n await iModel.pushChanges({ description: \"deletes\", accessToken });\r\n\r\n // Changeset 4: insert enough elements to spill when the memory budget is tiny.\r\n await waitForDistinctLastMod();\r\n await iModel.locks.acquireLocks({ shared: drawingModelId });\r\n for (let i = 0; i < 60; ++i)\r\n insertElement(\"CuTest:CuElement\", { Label: `bulk${i}`, Num: i, Pt: { x: i, y: i }, Bin: new Uint8Array([i, 255 - i]) });\r\n editTxn.saveChanges(\"bulk insert elements\");\r\n await iModel.pushChanges({ description: \"bulk inserts\", accessToken });\r\n\r\n const downloaded = await HubMock.downloadChangesets({ iModelId, targetDir: path.join(KnownTestLocations.outputDir, iModelId, \"changesets\") });\r\n assert.equal(downloaded.length, 5);\r\n [, changesets.inserts, changesets.updates, changesets.deletes, changesets.bulkInserts] = downloaded.map((changeset) => changeset.pathname);\r\n tableInfo = queryTableInfo(iModel);\r\n assert.isTrue(tableInfo.overflowTables.has(\"bis_GeometricElement2d_Overflow\"));\r\n });\r\n\r\n after(() => {\r\n txn?.end();\r\n rwIModel?.close();\r\n if (rwIModel !== undefined)\r\n HubMock.shutdown();\r\n });\r\n\r\n it(\"matches PartialChangeUnifier for inserts, updates and deletes\", () => {\r\n const propFilters = [PropertyFilter.All, PropertyFilter.BisCoreElement, PropertyFilter.InstanceKey, PropertyFilter.InstanceKeyAndIdentifiers];\r\n const rowOptionsList: Array<RowFormatOptions | undefined> = [undefined, { classIdsToClassNames: true }, { abbreviateBlobs: false }];\r\n for (const fileName of [changesets.inserts, changesets.updates, changesets.deletes]) {\r\n for (const propFilter of propFilters) {\r\n for (const rowOptions of rowOptionsList) {\r\n const options = { propFilter, rowOptions };\r\n const expected = unifyWithPartialChangeUnifier(openReaders([fileName], options), tableInfo);\r\n assert.isNotEmpty(expected.instances);\r\n assertMatchesPartialChangeUnifier(unifyNatively(openReaders([fileName], options)), expected, tableInfo);\r\n }\r\n }\r\n }\r\n });\r\n\r\n it(\"merges the rows of all tables of an instance and fills $meta from the reader\", () => {\r\n const rowOptions = { classIdsToClassNames: true };\r\n const instances = unifyNatively(openReaders([changesets.updates], { propFilter: PropertyFilter.All, rowOptions }));\r\n\r\n const w0Old = instances.find((i) => i.ECInstanceId === ids.w0 && i.$meta.stage === \"Old\");\r\n const w0New = instances.find((i) => i.ECInstanceId === ids.w0 && i.$meta.stage === \"New\");\r\n expect(w0Old).to.exist;\r\n expect(w0New).to.exist;\r\n assert.isBelow(instances.indexOf(w0Old!), instances.indexOf(w0New!), \"Old before New\");\r\n for (const instance of [w0Old!, w0New!]) {\r\n assert.equal(instance.ECClassId, \"CuTest.CuWideElement\");\r\n assert.equal(instance.$meta.op, \"Updated\");\r\n assert.equal(instance.$meta.propFilter, PropertyFilter.All);\r\n assert.deepEqual(instance.$meta.rowOptions, rowOptions);\r\n assert.isFalse(instance.$meta.isIndirectChange);\r\n assert.include(instance.$meta.tables, \"bis_Element\");\r\n assert.include(instance.$meta.tables, \"bis_GeometricElement2d_Overflow\");\r\n assert.isString(instance.LastMod);\r\n }\r\n assert.equal(w0Old!.p34, \"w0-34\");\r\n assert.equal(w0Old!.p35, \"w0-35\");\r\n assert.equal(w0New!.p34, \"w0-34-updated\");\r\n assert.equal(w0New!.p35, \"w0-35-updated\");\r\n assert.isUndefined(w0New!.p0, \"unchanged properties are not part of the change\");\r\n\r\n const e1New = instances.find((i) => i.ECInstanceId === ids.e[1] && i.$meta.stage === \"New\");\r\n expect(e1New).to.exist;\r\n assert.equal(e1New!.Num, 100);\r\n assert.deepEqual(e1New!.Pt, { X: 10, Y: 20 });\r\n });\r\n\r\n it(\"honors the options and filters of the readers\", () => {\r\n const cases: Array<{ fileName: string, options: ReaderOptions }> = [\r\n { fileName: changesets.updates, options: { invert: true } },\r\n { fileName: changesets.deletes, options: { configure: (reader) => reader.setOpCodeFilters(new Set([\"Deleted\"])) } },\r\n { fileName: changesets.inserts, options: { configure: (reader) => reader.setClassNameFilters(new Set([\"CuTest:CuWideElement\", \"CuTest:CuRefersTo\"])) } },\r\n { fileName: changesets.updates, options: { configure: (reader) => reader.setTableNameFilters(new Set([\"bis_Element\"])) } },\r\n { fileName: changesets.bulkInserts, options: { configure: (reader) => reader.enableStrictMode() } },\r\n ];\r\n for (const { fileName, options } of cases) {\r\n const expected = unifyWithPartialChangeUnifier(openReaders([fileName], options), tableInfo);\r\n assert.isNotEmpty(expected.instances);\r\n assertMatchesPartialChangeUnifier(unifyNatively(openReaders([fileName], options)), expected, tableInfo);\r\n }\r\n\r\n const deleted = unifyNatively(openReaders([changesets.deletes], cases[1].options));\r\n assert.sameMembers(deleted.map((i) => i.ECInstanceId), [ids.e[2], ids.w1, ids.r1]);\r\n for (const instance of deleted) {\r\n assert.equal(instance.$meta.op, \"Deleted\");\r\n assert.equal(instance.$meta.stage, \"Old\");\r\n }\r\n });\r\n\r\n it(\"reports 'Updated' for instances only overflow tables contributed to\", () => {\r\n const options: ReaderOptions = { configure: (reader) => reader.setTableNameFilters(new Set(tableInfo.overflowTables)) };\r\n for (const fileName of [changesets.inserts, changesets.updates, changesets.deletes]) {\r\n const expected = unifyWithPartialChangeUnifier(openReaders([fileName], options), tableInfo);\r\n assert.isNotEmpty(expected.instances, \"rows from overflow tables\");\r\n const actual = unifyNatively(openReaders([fileName], options));\r\n assertMatchesPartialChangeUnifier(actual, expected, tableInfo);\r\n for (const instance of actual)\r\n assert.equal(instance.$meta.op, \"Updated\");\r\n }\r\n });\r\n\r\n it(\"keeps strings that start with the base64 header as strings\", () => {\r\n const instances = unifyNatively(openReaders([changesets.inserts], { rowOptions: { abbreviateBlobs: false } }));\r\n const e4 = instances.find((instance) => instance.ECInstanceId === ids.e[4]);\r\n assert.strictEqual(e4?.Label, base64LikeLabel);\r\n assert.instanceOf(e4?.Bin, Uint8Array);\r\n });\r\n\r\n it(\"ends a native batch early once it holds 16 MiB of strings and binary\", async () => {\r\n const iModel = db();\r\n const { model, category } = iModel.elements.getElementProps<GeometricElement2dProps>(ids.e[0]);\r\n await iModel.locks.acquireLocks({ shared: model });\r\n const blob = new Uint8Array(8 * 1024 * 1024);\r\n try {\r\n const inserted = [0, 1, 2].map(() => txn!.insertElement({ classFullName: \"CuTest:CuElement\", model, category, code: Code.createEmpty(), Bin: blob } as GeometricElement2dProps));\r\n using reader = ChangesetReader.openInMemoryChanges({ db: iModel, rowOptions: { abbreviateBlobs: false } });\r\n const nativeUnifier = new IModelNative.platform.ChangeUnifier({});\r\n try {\r\n reader[_appendToNativeUnifier](nativeUnifier);\r\n const batchSizes: number[] = [];\r\n const returnedIds: string[] = [];\r\n for (let batch = nativeUnifier.step(1000); batch.length > 0; batch = nativeUnifier.step(1000)) {\r\n batchSizes.push(batch.length);\r\n returnedIds.push(...batch.map((instance) => instance.ECInstanceId as string));\r\n }\r\n assert.isAbove(batchSizes.length, 1, \"24 MiB of blobs were returned in one batch\");\r\n assert.includeMembers(returnedIds, inserted);\r\n } finally {\r\n nativeUnifier.close();\r\n }\r\n } finally {\r\n txn!.abandonChanges();\r\n }\r\n });\r\n\r\n it(\"keeps only the requested properties\", () => {\r\n const propNames = [\"Label\", \"Num\", \"Model\", \"LastMod\", \"p35\"];\r\n const kept = new Set([\"ECInstanceId\", \"ECClassId\", ...propNames]);\r\n for (const fileName of [changesets.inserts, changesets.updates, changesets.deletes]) {\r\n const all = unifyNatively(openReaders([fileName]));\r\n const projected = unifyNatively(openReaders([fileName]), { propNames });\r\n assert.equal(projected.length, all.length);\r\n projected.forEach((instance, i) => {\r\n const { $meta: meta, ...props } = instance;\r\n const { $meta: allMeta, ...allProps } = all[i];\r\n assert.deepEqual(props, Object.fromEntries(Object.entries(allProps).filter(([name]) => kept.has(name))));\r\n assert.isDefined(props.ECInstanceId);\r\n assert.isDefined(props.ECClassId);\r\n const { changeFetchedPropNames, ...otherMeta } = meta;\r\n const { changeFetchedPropNames: allChangeFetchedPropNames, ...allOtherMeta } = allMeta;\r\n assert.deepEqual(otherMeta, allOtherMeta);\r\n assert.includeMembers(allChangeFetchedPropNames, changeFetchedPropNames);\r\n });\r\n assert.isTrue(projected.some((instance) => instance.Label !== undefined || instance.p35 !== undefined), \"some requested properties were kept\");\r\n }\r\n });\r\n\r\n it(\"returns the same instances when it spills to temporary files\", () => {\r\n const options: ReaderOptions = { rowOptions: { abbreviateBlobs: false } };\r\n const fileNameLists = [[changesets.bulkInserts], [changesets.updates], [changesets.inserts, changesets.updates, changesets.deletes, changesets.bulkInserts]];\r\n for (const fileNames of fileNameLists) {\r\n const inMemory = unifyNatively(openReaders(fileNames, options), { memoryBudgetBytes: 0 });\r\n assert.isNotEmpty(inMemory);\r\n assert.deepEqual(unifyNatively(openReaders(fileNames, options)), inMemory, \"default memory budget\");\r\n for (const args of [{ memoryBudgetBytes: 1 }, { memoryBudgetBytes: 1, batchSize: 1 }, { memoryBudgetBytes: 1024, batchSize: 7 }, { memoryBudgetBytes: 0, batchSize: 3 }])\r\n assert.deepEqual(unifyNatively(openReaders(fileNames, options), args), inMemory, JSON.stringify(args));\r\n\r\n const projectedInMemory = unifyNatively(openReaders(fileNames, options), { propNames: [\"Label\", \"Bin\"], memoryBudgetBytes: 0 });\r\n assert.deepEqual(unifyNatively(openReaders(fileNames, options), { propNames: [\"Label\", \"Bin\"], memoryBudgetBytes: 1 }), projectedInMemory, \"projected\");\r\n }\r\n\r\n const expected = unifyWithPartialChangeUnifier(openReaders([changesets.bulkInserts], options), tableInfo);\r\n assert.isAtLeast(expected.instances.length, 60);\r\n assertMatchesPartialChangeUnifier(unifyNatively(openReaders([changesets.bulkInserts], options), { memoryBudgetBytes: 1 }), expected, tableInfo);\r\n });\r\n\r\n it(\"merges the rows of several readers\", () => {\r\n const fileNames = [changesets.inserts, changesets.updates, changesets.deletes];\r\n const expected = unifyWithPartialChangeUnifier(openReaders(fileNames), tableInfo);\r\n const actual = unifyNatively(openReaders(fileNames));\r\n assertMatchesPartialChangeUnifier(actual, expected, tableInfo, true);\r\n\r\n // Rows of later readers win.\r\n const e0New = actual.find((i) => i.ECInstanceId === ids.e[0] && i.$meta.stage === \"New\");\r\n assert.equal(e0New?.Label, \"e0-updated\");\r\n // An instance inserted by one reader and deleted by another has both stages.\r\n assert.sameMembers(actual.filter((i) => i.ECInstanceId === ids.e[2]).map((i) => i.$meta.stage), [\"Old\", \"New\"]);\r\n\r\n // Readers that are all open while the unifier is created give the same result as readers opened one at a time.\r\n using inserts = openReader(changesets.inserts);\r\n using updates = openReader(changesets.updates);\r\n using deletes = openReader(changesets.deletes);\r\n assert.deepEqual(unifyNatively([inserts, updates, deletes]), actual);\r\n });\r\n\r\n it(\"consumes the readers\", () => {\r\n using reader = openReader(changesets.inserts);\r\n using unifier = ChangeUnifier.fromReader(reader);\r\n assert.isFalse(reader.step(), \"the unifier read all rows\");\r\n assert.isUndefined(reader.inserted);\r\n assert.isUndefined(reader.deleted);\r\n expect(() => reader.setOpCodeFilters(new Set([\"Inserted\"]))).to.throw(IModelError, \"consumed by a ChangeUnifier\");\r\n expect(() => ChangeUnifier.fromReader(reader)).to.throw(IModelError, \"already been consumed\");\r\n assert.isNotEmpty(Array.from(unifier.instances()));\r\n expect(() => reader.close()).to.not.throw();\r\n });\r\n\r\n it(\"rejects readers that cannot be merged\", () => {\r\n {\r\n using reader = openReader(changesets.inserts);\r\n assert.isTrue(reader.step());\r\n expect(() => ChangeUnifier.fromReader(reader)).to.throw(IModelError, \"already been stepped\");\r\n assert.isTrue(reader.step(), \"the reader was not consumed\");\r\n }\r\n {\r\n using reader = openReader(changesets.inserts);\r\n expect(() => ChangeUnifier.fromReaders([reader, reader])).to.throw(IModelError, \"already been consumed\");\r\n }\r\n {\r\n using inserts = openReader(changesets.inserts, { propFilter: PropertyFilter.All });\r\n using updates = openReader(changesets.updates, { propFilter: PropertyFilter.InstanceKey });\r\n expect(() => ChangeUnifier.fromReaders([inserts, updates])).to.throw(IModelError, \"same propFilter and rowOptions\");\r\n assert.isFalse(inserts.step(), \"readers before the failing one were consumed\");\r\n assert.isTrue(updates.step(), \"the failing reader was not consumed\");\r\n }\r\n {\r\n using inserts = openReader(changesets.inserts, { rowOptions: { classIdsToClassNames: true } });\r\n using updates = openReader(changesets.updates);\r\n expect(() => ChangeUnifier.fromReaders([inserts, updates])).to.throw(IModelError, \"same propFilter and rowOptions\");\r\n }\r\n {\r\n // An options object shared by the readers and changed between them is compared as it was for the first reader.\r\n const rowOptions: RowFormatOptions = { classIdsToClassNames: true };\r\n function* readers(): Generator<ChangesetReader> {\r\n using inserts = openReader(changesets.inserts, { rowOptions });\r\n yield inserts;\r\n rowOptions.classIdsToClassNames = false;\r\n using updates = openReader(changesets.updates, { rowOptions });\r\n yield updates;\r\n }\r\n expect(() => ChangeUnifier.fromReaders(readers())).to.throw(IModelError, \"same propFilter and rowOptions\");\r\n }\r\n {\r\n // Omitted row options are equivalent to their defaults.\r\n using inserts = openReader(changesets.inserts, { rowOptions: { abbreviateBlobs: true, classIdsToClassNames: false } });\r\n using updates = openReader(changesets.updates);\r\n using unifier = ChangeUnifier.fromReaders([inserts, updates]);\r\n for (const instance of unifier.instances())\r\n assert.deepEqual(instance.$meta.rowOptions, { abbreviateBlobs: true, classIdsToClassNames: false });\r\n }\r\n });\r\n\r\n it(\"returns each instance once and can be disposed more than once\", () => {\r\n const all = unifyNatively(openReaders([changesets.bulkInserts]));\r\n assert.isAtLeast(all.length, 20);\r\n\r\n using unifier = ChangeUnifier.fromReaders(openReaders([changesets.bulkInserts]), { batchSize: 4 });\r\n const first: ChangeInstance[] = [];\r\n for (const instance of unifier.instances()) {\r\n first.push(instance);\r\n if (first.length === 10)\r\n break;\r\n }\r\n const rest = Array.from(unifier.instances());\r\n assert.deepEqual([...first, ...rest], all);\r\n assert.isEmpty(Array.from(unifier.instances()));\r\n\r\n unifier[Symbol.dispose]();\r\n expect(() => unifier[Symbol.dispose]()).to.not.throw();\r\n expect(() => unifier.instances().next()).to.throw(IModelError, \"disposed\");\r\n });\r\n\r\n it(\"returns no instances without readers\", () => {\r\n using unifier = ChangeUnifier.fromReaders([]);\r\n assert.isEmpty(Array.from(unifier.instances()));\r\n });\r\n});\r\n\r\ndescribe(\"ChangeUnifier arguments\", () => {\r\n it(\"are validated before any reader is requested\", () => {\r\n const invalidArgs: ChangeUnifierArgs[] = [\r\n { batchSize: 0 },\r\n { batchSize: -1 },\r\n { batchSize: 1.5 },\r\n { batchSize: Number.NaN },\r\n { memoryBudgetBytes: -1 },\r\n { memoryBudgetBytes: 0.5 },\r\n { memoryBudgetBytes: Number.POSITIVE_INFINITY },\r\n ];\r\n for (const args of invalidArgs) {\r\n let requested = false;\r\n const readers: Iterable<ChangesetReader> = {\r\n [Symbol.iterator]: () => {\r\n requested = true;\r\n return ([] as ChangesetReader[])[Symbol.iterator]();\r\n },\r\n };\r\n expect(() => ChangeUnifier.fromReaders(readers, args), JSON.stringify(args)).to.throw(IModelError, \"ChangeUnifier:\").with.property(\"errorNumber\", IModelStatus.BadArg);\r\n assert.isFalse(requested, JSON.stringify(args));\r\n }\r\n });\r\n});\r\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@itwin/core-backend",
|
|
3
|
-
"version": "5.15.0-dev.
|
|
3
|
+
"version": "5.15.0-dev.15",
|
|
4
4
|
"description": "iTwin.js backend components",
|
|
5
5
|
"main": "lib/cjs/core-backend.js",
|
|
6
6
|
"module": "lib/esm/core-backend.js",
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
},
|
|
28
28
|
"peerDependencies": {
|
|
29
29
|
"@opentelemetry/api": "^1.0.4",
|
|
30
|
-
"@itwin/core-bentley": "5.15.0-dev.
|
|
31
|
-
"@itwin/core-
|
|
32
|
-
"@itwin/core-
|
|
33
|
-
"@itwin/core-geometry": "5.15.0-dev.
|
|
34
|
-
"@itwin/ecschema-metadata": "5.15.0-dev.
|
|
30
|
+
"@itwin/core-bentley": "5.15.0-dev.15",
|
|
31
|
+
"@itwin/core-common": "5.15.0-dev.15",
|
|
32
|
+
"@itwin/core-quantity": "5.15.0-dev.15",
|
|
33
|
+
"@itwin/core-geometry": "5.15.0-dev.15",
|
|
34
|
+
"@itwin/ecschema-metadata": "5.15.0-dev.15"
|
|
35
35
|
},
|
|
36
36
|
"peerDependenciesMeta": {
|
|
37
37
|
"@opentelemetry/api": {
|
|
@@ -71,19 +71,19 @@
|
|
|
71
71
|
"typescript": "~5.6.2",
|
|
72
72
|
"marked": "^14.1.3",
|
|
73
73
|
"sql-formatter": "^15.4.6",
|
|
74
|
-
"vite": "^6.4.
|
|
75
|
-
"@itwin/core-
|
|
76
|
-
"@itwin/
|
|
77
|
-
"@itwin/
|
|
78
|
-
"@itwin/core-quantity": "5.15.0-dev.
|
|
79
|
-
"@itwin/
|
|
80
|
-
"@itwin/
|
|
81
|
-
"@itwin/
|
|
82
|
-
"
|
|
83
|
-
"
|
|
74
|
+
"vite": "^6.4.4",
|
|
75
|
+
"@itwin/core-bentley": "5.15.0-dev.15",
|
|
76
|
+
"@itwin/core-common": "5.15.0-dev.15",
|
|
77
|
+
"@itwin/build-tools": "5.15.0-dev.15",
|
|
78
|
+
"@itwin/core-quantity": "5.15.0-dev.15",
|
|
79
|
+
"@itwin/ecschema-locaters": "5.15.0-dev.15",
|
|
80
|
+
"@itwin/core-geometry": "5.15.0-dev.15",
|
|
81
|
+
"@itwin/ecsql-common": "5.15.0-dev.15",
|
|
82
|
+
"@itwin/ecschema-metadata": "5.15.0-dev.15",
|
|
83
|
+
"internal-tools": "3.0.0-dev.69"
|
|
84
84
|
},
|
|
85
85
|
"dependencies": {
|
|
86
|
-
"@bentley/imodeljs-native": "5.15.
|
|
86
|
+
"@bentley/imodeljs-native": "5.15.29",
|
|
87
87
|
"@itwin/object-storage-azure": "^3.0.4",
|
|
88
88
|
"@azure/storage-blob": "^12.28.0",
|
|
89
89
|
"form-data": "^4.0.6",
|