@itwin/core-backend 5.1.0-dev.1 → 5.1.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.
Files changed (126) hide show
  1. package/CHANGELOG.md +21 -1
  2. package/lib/cjs/Category.d.ts +37 -0
  3. package/lib/cjs/Category.d.ts.map +1 -1
  4. package/lib/cjs/Category.js +73 -0
  5. package/lib/cjs/Category.js.map +1 -1
  6. package/lib/cjs/DisplayStyle.d.ts +5 -0
  7. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  8. package/lib/cjs/DisplayStyle.js +27 -0
  9. package/lib/cjs/DisplayStyle.js.map +1 -1
  10. package/lib/cjs/Element.d.ts +166 -10
  11. package/lib/cjs/Element.d.ts.map +1 -1
  12. package/lib/cjs/Element.js +510 -9
  13. package/lib/cjs/Element.js.map +1 -1
  14. package/lib/cjs/Entity.d.ts +41 -1
  15. package/lib/cjs/Entity.d.ts.map +1 -1
  16. package/lib/cjs/Entity.js +58 -0
  17. package/lib/cjs/Entity.js.map +1 -1
  18. package/lib/cjs/GeographicCRSServices.d.ts +6 -2
  19. package/lib/cjs/GeographicCRSServices.d.ts.map +1 -1
  20. package/lib/cjs/GeographicCRSServices.js +1 -1
  21. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  22. package/lib/cjs/IModelDb.d.ts +21 -36
  23. package/lib/cjs/IModelDb.d.ts.map +1 -1
  24. package/lib/cjs/IModelDb.js +131 -69
  25. package/lib/cjs/IModelDb.js.map +1 -1
  26. package/lib/cjs/IModelHost.d.ts +13 -0
  27. package/lib/cjs/IModelHost.d.ts.map +1 -1
  28. package/lib/cjs/IModelHost.js +6 -0
  29. package/lib/cjs/IModelHost.js.map +1 -1
  30. package/lib/cjs/Material.d.ts +19 -0
  31. package/lib/cjs/Material.d.ts.map +1 -1
  32. package/lib/cjs/Material.js +29 -0
  33. package/lib/cjs/Material.js.map +1 -1
  34. package/lib/cjs/Model.d.ts +42 -6
  35. package/lib/cjs/Model.d.ts.map +1 -1
  36. package/lib/cjs/Model.js +93 -5
  37. package/lib/cjs/Model.js.map +1 -1
  38. package/lib/cjs/TxnManager.d.ts.map +1 -1
  39. package/lib/cjs/TxnManager.js +1 -0
  40. package/lib/cjs/TxnManager.js.map +1 -1
  41. package/lib/cjs/ViewDefinition.d.ts +126 -0
  42. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  43. package/lib/cjs/ViewDefinition.js +236 -0
  44. package/lib/cjs/ViewDefinition.js.map +1 -1
  45. package/lib/cjs/ViewStateHydrator.js +3 -3
  46. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  47. package/lib/cjs/internal/ElementLRUCache.d.ts +28 -0
  48. package/lib/cjs/internal/ElementLRUCache.d.ts.map +1 -0
  49. package/lib/cjs/internal/ElementLRUCache.js +120 -0
  50. package/lib/cjs/internal/ElementLRUCache.js.map +1 -0
  51. package/lib/cjs/internal/Symbols.d.ts +1 -0
  52. package/lib/cjs/internal/Symbols.d.ts.map +1 -1
  53. package/lib/cjs/internal/Symbols.js +2 -1
  54. package/lib/cjs/internal/Symbols.js.map +1 -1
  55. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +2 -2
  56. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  57. package/lib/esm/Category.d.ts +37 -0
  58. package/lib/esm/Category.d.ts.map +1 -1
  59. package/lib/esm/Category.js +73 -0
  60. package/lib/esm/Category.js.map +1 -1
  61. package/lib/esm/DisplayStyle.d.ts +5 -0
  62. package/lib/esm/DisplayStyle.d.ts.map +1 -1
  63. package/lib/esm/DisplayStyle.js +27 -0
  64. package/lib/esm/DisplayStyle.js.map +1 -1
  65. package/lib/esm/Element.d.ts +166 -10
  66. package/lib/esm/Element.d.ts.map +1 -1
  67. package/lib/esm/Element.js +513 -12
  68. package/lib/esm/Element.js.map +1 -1
  69. package/lib/esm/Entity.d.ts +41 -1
  70. package/lib/esm/Entity.d.ts.map +1 -1
  71. package/lib/esm/Entity.js +58 -0
  72. package/lib/esm/Entity.js.map +1 -1
  73. package/lib/esm/GeographicCRSServices.d.ts +6 -2
  74. package/lib/esm/GeographicCRSServices.d.ts.map +1 -1
  75. package/lib/esm/GeographicCRSServices.js +1 -1
  76. package/lib/esm/GeographicCRSServices.js.map +1 -1
  77. package/lib/esm/IModelDb.d.ts +21 -36
  78. package/lib/esm/IModelDb.d.ts.map +1 -1
  79. package/lib/esm/IModelDb.js +134 -72
  80. package/lib/esm/IModelDb.js.map +1 -1
  81. package/lib/esm/IModelHost.d.ts +13 -0
  82. package/lib/esm/IModelHost.d.ts.map +1 -1
  83. package/lib/esm/IModelHost.js +6 -0
  84. package/lib/esm/IModelHost.js.map +1 -1
  85. package/lib/esm/Material.d.ts +19 -0
  86. package/lib/esm/Material.d.ts.map +1 -1
  87. package/lib/esm/Material.js +30 -1
  88. package/lib/esm/Material.js.map +1 -1
  89. package/lib/esm/Model.d.ts +42 -6
  90. package/lib/esm/Model.d.ts.map +1 -1
  91. package/lib/esm/Model.js +94 -6
  92. package/lib/esm/Model.js.map +1 -1
  93. package/lib/esm/TxnManager.d.ts.map +1 -1
  94. package/lib/esm/TxnManager.js +1 -0
  95. package/lib/esm/TxnManager.js.map +1 -1
  96. package/lib/esm/ViewDefinition.d.ts +126 -0
  97. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  98. package/lib/esm/ViewDefinition.js +237 -1
  99. package/lib/esm/ViewDefinition.js.map +1 -1
  100. package/lib/esm/ViewStateHydrator.js +3 -3
  101. package/lib/esm/ViewStateHydrator.js.map +1 -1
  102. package/lib/esm/internal/ElementLRUCache.d.ts +28 -0
  103. package/lib/esm/internal/ElementLRUCache.d.ts.map +1 -0
  104. package/lib/esm/internal/ElementLRUCache.js +116 -0
  105. package/lib/esm/internal/ElementLRUCache.js.map +1 -0
  106. package/lib/esm/internal/Symbols.d.ts +1 -0
  107. package/lib/esm/internal/Symbols.d.ts.map +1 -1
  108. package/lib/esm/internal/Symbols.js +1 -0
  109. package/lib/esm/internal/Symbols.js.map +1 -1
  110. package/lib/esm/rpc-impl/IModelReadRpcImpl.js +2 -2
  111. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  112. package/lib/esm/test/ElementLRUCache.test.d.ts +2 -0
  113. package/lib/esm/test/ElementLRUCache.test.d.ts.map +1 -0
  114. package/lib/esm/test/ElementLRUCache.test.js +212 -0
  115. package/lib/esm/test/ElementLRUCache.test.js.map +1 -0
  116. package/lib/esm/test/ecdb/ECSqlQuery.test.js +0 -23
  117. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  118. package/lib/esm/test/imodel/IModel.test.js +22 -11
  119. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  120. package/lib/esm/test/misc/GeoServices.test.js +23 -9
  121. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  122. package/lib/esm/test/standalone/SnapshotDb.test.js +1 -0
  123. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  124. package/lib/esm/test/standalone/TxnManager.test.js +1 -1
  125. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  126. package/package.json +13 -13
@@ -87,7 +87,17 @@ function expectIModelError(expectedErrorNumber, error) {
87
87
  expect(error).instanceof(IModelError);
88
88
  expect(error.errorNumber).to.equal(expectedErrorNumber);
89
89
  }
90
+ async function generateTestSnapshot(targetFileName, seedAssetName) {
91
+ const seedFile = IModelTestUtils.resolveAssetFile(seedAssetName);
92
+ const snapshotFile = IModelTestUtils.prepareOutputFile("IModel", targetFileName);
93
+ const imodel = IModelTestUtils.createSnapshotFromSeed(snapshotFile, seedFile);
94
+ const schemaPathname = path.join(KnownTestLocations.assetsDir, "TestBim.ecschema.xml");
95
+ await imodel.importSchemas([schemaPathname]); // will throw an exception if import fails
96
+ imodel.saveChanges();
97
+ return imodel;
98
+ }
90
99
  describe("iModel", () => {
100
+ //TODO: These imodels are used and modified across multiple tests. This is not a good practice and should be refactored.
91
101
  let imodel1;
92
102
  let imodel2;
93
103
  let imodel3;
@@ -97,13 +107,11 @@ describe("iModel", () => {
97
107
  before(async () => {
98
108
  originalEnv = { ...process.env };
99
109
  IModelTestUtils.registerTestBimSchema();
100
- imodel1 = IModelTestUtils.createSnapshotFromSeed(IModelTestUtils.prepareOutputFile("IModel", "test.bim"), IModelTestUtils.resolveAssetFile("test.bim"));
110
+ imodel1 = await generateTestSnapshot("test.bim", "test.bim");
101
111
  imodel2 = IModelTestUtils.createSnapshotFromSeed(IModelTestUtils.prepareOutputFile("IModel", "CompatibilityTestSeed.bim"), IModelTestUtils.resolveAssetFile("CompatibilityTestSeed.bim"));
102
112
  imodel3 = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile("GetSetAutoHandledStructProperties.bim"));
103
113
  imodel4 = IModelTestUtils.createSnapshotFromSeed(IModelTestUtils.prepareOutputFile("IModel", "GetSetAutoHandledArrayProperties.bim"), IModelTestUtils.resolveAssetFile("GetSetAutoHandledArrayProperties.bim"));
104
114
  imodel5 = IModelTestUtils.createSnapshotFromSeed(IModelTestUtils.prepareOutputFile("IModel", "mirukuru.ibim"), IModelTestUtils.resolveAssetFile("mirukuru.ibim"));
105
- const schemaPathname = path.join(KnownTestLocations.assetsDir, "TestBim.ecschema.xml");
106
- await imodel1.importSchemas([schemaPathname]); // will throw an exception if import fails
107
115
  });
108
116
  after(() => {
109
117
  process.env = originalEnv;
@@ -1984,6 +1992,7 @@ describe("iModel", () => {
1984
1992
  getCurrentChangeset: () => changeset,
1985
1993
  setIModelDb: () => { },
1986
1994
  closeFile: () => { },
1995
+ clearECDbCache: () => { },
1987
1996
  };
1988
1997
  const errorLogStub = sinon.stub(Logger, "logError").callsFake(() => { });
1989
1998
  const infoLogStub = sinon.stub(Logger, "logInfo").callsFake(() => { });
@@ -2104,14 +2113,15 @@ describe("iModel", () => {
2104
2113
  standaloneDb1.close();
2105
2114
  assert.isUndefined(StandaloneDb.tryFindByKey(standaloneDb1.key));
2106
2115
  });
2107
- it("Snapshot iModel properties", () => {
2116
+ it("Snapshot iModel properties", async () => {
2108
2117
  const snapshotRootSubjectName = "Snapshot";
2109
2118
  const snapshotFile1 = IModelTestUtils.prepareOutputFile("IModel", "Snapshot1.bim");
2110
2119
  const snapshotFile2 = IModelTestUtils.prepareOutputFile("IModel", "Snapshot2.bim");
2111
2120
  const snapshotFile3 = IModelTestUtils.prepareOutputFile("IModel", "Snapshot3.bim");
2121
+ const imodel = await generateTestSnapshot("test_for_snapshot.bim", "test.bim");
2112
2122
  let snapshotDb1 = SnapshotDb.createEmpty(snapshotFile1, { rootSubject: { name: snapshotRootSubjectName }, createClassViews: true });
2113
2123
  let snapshotDb2 = SnapshotDb.createFrom(snapshotDb1, snapshotFile2);
2114
- let snapshotDb3 = SnapshotDb.createFrom(imodel1, snapshotFile3, { createClassViews: true });
2124
+ let snapshotDb3 = SnapshotDb.createFrom(imodel, snapshotFile3, { createClassViews: true });
2115
2125
  assert.isTrue(snapshotDb1.isSnapshotDb());
2116
2126
  assert.isTrue(snapshotDb2.isSnapshotDb());
2117
2127
  assert.isTrue(snapshotDb3.isSnapshotDb());
@@ -2124,7 +2134,7 @@ describe("iModel", () => {
2124
2134
  assert.equal(snapshotDb1.getBriefcaseId(), BriefcaseIdValue.Unassigned);
2125
2135
  assert.equal(snapshotDb2.getBriefcaseId(), BriefcaseIdValue.Unassigned);
2126
2136
  assert.equal(snapshotDb3.getBriefcaseId(), BriefcaseIdValue.Unassigned);
2127
- assert.equal(imodel1.getBriefcaseId(), BriefcaseIdValue.Unassigned);
2137
+ assert.equal(imodel.getBriefcaseId(), BriefcaseIdValue.Unassigned);
2128
2138
  assert.equal(snapshotDb1.pathName, snapshotFile1);
2129
2139
  assert.equal(snapshotDb2.pathName, snapshotFile2);
2130
2140
  assert.equal(snapshotDb3.pathName, snapshotFile3);
@@ -2139,10 +2149,10 @@ describe("iModel", () => {
2139
2149
  const rootSubjectName1 = snapshotDb1.elements.getRootSubject().code.value;
2140
2150
  const rootSubjectName2 = snapshotDb2.elements.getRootSubject().code.value;
2141
2151
  const rootSubjectName3 = snapshotDb3.elements.getRootSubject().code.value;
2142
- const imodel1RootSubjectName = imodel1.elements.getRootSubject().code.value;
2152
+ const imodelRootSubjectName = imodel.elements.getRootSubject().code.value;
2143
2153
  assert.equal(rootSubjectName1, snapshotRootSubjectName);
2144
2154
  assert.equal(rootSubjectName1, rootSubjectName2, "Expect a snapshot to maintain the root Subject name from its seed");
2145
- assert.equal(rootSubjectName3, imodel1RootSubjectName, "Expect a snapshot to maintain the root Subject name from its seed");
2155
+ assert.equal(rootSubjectName3, imodelRootSubjectName, "Expect a snapshot to maintain the root Subject name from its seed");
2146
2156
  assert.isTrue(snapshotDb1.isOpen);
2147
2157
  assert.isTrue(snapshotDb2.isOpen);
2148
2158
  assert.isTrue(snapshotDb3.isOpen);
@@ -2177,6 +2187,7 @@ describe("iModel", () => {
2177
2187
  assert.isTrue(hasClassView(snapshotDb1, "bis.ElementRefersToElements"));
2178
2188
  assert.isFalse(hasClassView(snapshotDb2, "bis.Element"));
2179
2189
  assert.isTrue(hasClassView(snapshotDb3, "bis.Element"));
2190
+ imodel.close();
2180
2191
  snapshotDb1.close();
2181
2192
  snapshotDb2.close();
2182
2193
  snapshotDb3.close();
@@ -2384,7 +2395,7 @@ describe("iModel", () => {
2384
2395
  expect(elProps.code.scope).equal(element.code.scope);
2385
2396
  expect(elProps.code.spec).equal(element.code.spec);
2386
2397
  expect(elProps.federationGuid).equal(element.federationGuid);
2387
- expect(elProps.isPrivate).undefined;
2398
+ expect(elProps.isPrivate).to.be.oneOf([false, undefined]);
2388
2399
  expect(elProps.isInstanceOfEntity).undefined;
2389
2400
  // remove userlabel by setting it to the blank string
2390
2401
  element.userLabel = "";
@@ -2562,12 +2573,12 @@ describe("iModel", () => {
2562
2573
  expect(imodel.codeValueBehavior).to.equal("trim-unicode-whitespace");
2563
2574
  const code1 = getNumberedCodeValAndProps(1);
2564
2575
  const categ1Id = imodel.elements.insertElement(code1.props);
2565
- const categ1 = imodel.elements.getElementJson({ id: categ1Id });
2576
+ const categ1 = imodel.elements.getElementProps({ id: categ1Id });
2566
2577
  expect(categ1.code.value).to.equal(code1.trimmedCodeVal);
2567
2578
  imodel.codeValueBehavior = "exact";
2568
2579
  const code2 = getNumberedCodeValAndProps(2);
2569
2580
  const categ2Id = imodel.elements.insertElement(code2.props);
2570
- const categ2 = imodel.elements.getElementJson({ id: categ2Id });
2581
+ const categ2 = imodel.elements.getElementProps({ id: categ2Id });
2571
2582
  expect(categ2.code.value).to.equal(code2.untrimmedCodeVal);
2572
2583
  imodel.codeValueBehavior = "trim-unicode-whitespace";
2573
2584
  const code3 = getNumberedCodeValAndProps(3);