@itwin/ecschema-metadata 5.2.0-dev.16 → 5.2.0-dev.18

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 (43) hide show
  1. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.d.ts +18 -24
  2. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.d.ts.map +1 -1
  3. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.js +40 -20
  4. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -1
  5. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.d.ts +2 -2
  6. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.d.ts.map +1 -1
  7. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.js +5 -4
  8. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -1
  9. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.d.ts.map +1 -1
  10. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.js +1 -0
  11. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.js.map +1 -1
  12. package/lib/cjs/IncrementalLoading/SchemaParser.d.ts +8 -2
  13. package/lib/cjs/IncrementalLoading/SchemaParser.d.ts.map +1 -1
  14. package/lib/cjs/IncrementalLoading/SchemaParser.js +6 -6
  15. package/lib/cjs/IncrementalLoading/SchemaParser.js.map +1 -1
  16. package/lib/cjs/Metadata/EntityClass.js +1 -1
  17. package/lib/cjs/Metadata/EntityClass.js.map +1 -1
  18. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.d.ts +18 -24
  19. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.d.ts.map +1 -1
  20. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.js +39 -19
  21. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -1
  22. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.d.ts +2 -2
  23. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.d.ts.map +1 -1
  24. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.js +5 -4
  25. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -1
  26. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.d.ts.map +1 -1
  27. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.js +1 -0
  28. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.js.map +1 -1
  29. package/lib/esm/IncrementalLoading/SchemaParser.d.ts +8 -2
  30. package/lib/esm/IncrementalLoading/SchemaParser.d.ts.map +1 -1
  31. package/lib/esm/IncrementalLoading/SchemaParser.js +6 -6
  32. package/lib/esm/IncrementalLoading/SchemaParser.js.map +1 -1
  33. package/lib/esm/Metadata/EntityClass.js +1 -1
  34. package/lib/esm/Metadata/EntityClass.js.map +1 -1
  35. package/package.json +6 -6
  36. package/lib/cjs/IncrementalLoading/PerformanceLogger.d.ts +0 -60
  37. package/lib/cjs/IncrementalLoading/PerformanceLogger.d.ts.map +0 -1
  38. package/lib/cjs/IncrementalLoading/PerformanceLogger.js +0 -82
  39. package/lib/cjs/IncrementalLoading/PerformanceLogger.js.map +0 -1
  40. package/lib/esm/IncrementalLoading/PerformanceLogger.d.ts +0 -60
  41. package/lib/esm/IncrementalLoading/PerformanceLogger.d.ts.map +0 -1
  42. package/lib/esm/IncrementalLoading/PerformanceLogger.js +0 -78
  43. package/lib/esm/IncrementalLoading/PerformanceLogger.js.map +0 -1
@@ -3,7 +3,6 @@ import { ConstantProps, CustomAttributeClassProps, EntityClassProps, Enumeration
3
3
  import { SchemaInfo } from "../Interfaces";
4
4
  import { SchemaKey } from "../SchemaKey";
5
5
  import { IncrementalSchemaLocater, SchemaLocaterOptions } from "./IncrementalSchemaLocater";
6
- import { PerformanceLogger } from "./PerformanceLogger";
7
6
  interface QueryParameters {
8
7
  [parameterName: string]: string | number;
9
8
  }
@@ -23,8 +22,6 @@ export interface ECSqlQueryOptions {
23
22
  export interface ECSqlSchemaLocaterOptions extends SchemaLocaterOptions {
24
23
  /** Query for Schemas using multiple queries. Defaults to false. */
25
24
  readonly useMultipleQueries?: boolean;
26
- /** Collects query execution performance data. Defaults to false. */
27
- readonly performanceLogger?: PerformanceLogger;
28
25
  }
29
26
  /**
30
27
  * An abstract [[IncrementalSchemaLocater]] implementation for loading
@@ -60,10 +57,7 @@ export declare abstract class ECSqlSchemaLocater extends IncrementalSchemaLocate
60
57
  * @param context The [[SchemaContext]] to use for resolving references.
61
58
  * @internal
62
59
  */
63
- getSchemaJson(schemaKey: SchemaKey, context: SchemaContext): Promise<SchemaProps | undefined>;
64
- /**
65
- * Gets the [[SchemaProps]] without schemaItems.
66
- */
60
+ protected getSchemaJson(schemaKey: SchemaKey, context: SchemaContext): Promise<SchemaProps | undefined>;
67
61
  /**
68
62
  * Gets the [[SchemaProps]] without schemaItems for the given schema name.
69
63
  * @param schemaName The name of the Schema.
@@ -71,7 +65,7 @@ export declare abstract class ECSqlSchemaLocater extends IncrementalSchemaLocate
71
65
  * @returns
72
66
  * @internal
73
67
  */
74
- getSchemaNoItems(schemaName: string, context: SchemaContext): Promise<SchemaProps | undefined>;
68
+ private getSchemaNoItems;
75
69
  /**
76
70
  * Checks if the [[SchemaContext]] has the right Meta Schema version to support the incremental schema loading.
77
71
  * @param context The schema context to lookup the meta schema.
@@ -85,7 +79,7 @@ export declare abstract class ECSqlSchemaLocater extends IncrementalSchemaLocate
85
79
  * @returns A promise that resolves to a EntityClassProps array. Maybe empty of no entities are found.
86
80
  * @internal
87
81
  */
88
- getEntities(schema: string, context: SchemaContext, queryOverride?: string): Promise<EntityClassProps[]>;
82
+ protected getEntities(schema: string, context: SchemaContext, queryOverride?: string): Promise<EntityClassProps[]>;
89
83
  /**
90
84
  * Gets all the Schema's Mixin classes as [[MixinProps]] JSON objects.
91
85
  * @param schemaName The name of the Schema.
@@ -93,7 +87,7 @@ export declare abstract class ECSqlSchemaLocater extends IncrementalSchemaLocate
93
87
  * @returns A promise that resolves to a MixinProps array. Maybe empty of no entities are found.
94
88
  * @internal
95
89
  */
96
- getMixins(schema: string, context: SchemaContext, queryOverride?: string): Promise<MixinProps[]>;
90
+ protected getMixins(schema: string, context: SchemaContext, queryOverride?: string): Promise<MixinProps[]>;
97
91
  /**
98
92
  * Gets all the Schema's Relationship classes as [[RelationshipClassProps]] JSON objects.
99
93
  * @param schemaName The name of the Schema.
@@ -101,7 +95,7 @@ export declare abstract class ECSqlSchemaLocater extends IncrementalSchemaLocate
101
95
  * @returns A promise that resolves to a RelationshipClassProps array. Maybe empty if no items are found.
102
96
  * @internal
103
97
  */
104
- getRelationships(schema: string, context: SchemaContext, queryOverride?: string): Promise<RelationshipClassProps[]>;
98
+ protected getRelationships(schema: string, context: SchemaContext, queryOverride?: string): Promise<RelationshipClassProps[]>;
105
99
  /**
106
100
  * Gets all the Schema's CustomAttributeClass items as [[CustomAttributeClassProps]] JSON objects.
107
101
  * @param schemaName The name of the Schema.
@@ -109,7 +103,7 @@ export declare abstract class ECSqlSchemaLocater extends IncrementalSchemaLocate
109
103
  * @returns A promise that resolves to a CustomAttributeClassProps array. Maybe empty if not items are found.
110
104
  * @internal
111
105
  */
112
- getCustomAttributeClasses(schema: string, context: SchemaContext, queryOverride?: string): Promise<CustomAttributeClassProps[]>;
106
+ protected getCustomAttributeClasses(schema: string, context: SchemaContext, queryOverride?: string): Promise<CustomAttributeClassProps[]>;
113
107
  /**
114
108
  * Gets all the Schema's StructClass items as [[StructClassProps]] JSON objects.
115
109
  * @param schemaName The name of the Schema.
@@ -117,7 +111,7 @@ export declare abstract class ECSqlSchemaLocater extends IncrementalSchemaLocate
117
111
  * @returns A promise that resolves to a StructClassProps array. Maybe empty if not items are found.
118
112
  * @internal
119
113
  */
120
- getStructs(schema: string, context: SchemaContext, queryOverride?: string): Promise<StructClassProps[]>;
114
+ protected getStructs(schema: string, context: SchemaContext, queryOverride?: string): Promise<StructClassProps[]>;
121
115
  /**
122
116
  * Gets all the Schema's KindOfQuantity items as [[KindOfQuantityProps]] JSON objects.
123
117
  * @param schema The name of the Schema.
@@ -125,7 +119,7 @@ export declare abstract class ECSqlSchemaLocater extends IncrementalSchemaLocate
125
119
  * @returns A promise that resolves to a KindOfQuantityProps array. Maybe empty if not items are found.
126
120
  * @internal
127
121
  */
128
- getKindOfQuantities(schema: string, context: SchemaContext): Promise<KindOfQuantityProps[]>;
122
+ protected getKindOfQuantities(schema: string, context: SchemaContext): Promise<KindOfQuantityProps[]>;
129
123
  /**
130
124
  * Gets all the Schema's PropertyCategory items as [[PropertyCategoryProps]] JSON objects.
131
125
  * @param schema The name of the Schema.
@@ -133,7 +127,7 @@ export declare abstract class ECSqlSchemaLocater extends IncrementalSchemaLocate
133
127
  * @returns A promise that resolves to a PropertyCategoryProps array. Maybe empty if not items are found.
134
128
  * @internal
135
129
  */
136
- getPropertyCategories(schema: string, context: SchemaContext): Promise<PropertyCategoryProps[]>;
130
+ protected getPropertyCategories(schema: string, context: SchemaContext): Promise<PropertyCategoryProps[]>;
137
131
  /**
138
132
  * Gets all the Schema's Enumeration items as [[EnumerationProps]] JSON objects.
139
133
  * @param schema The name of the Schema.
@@ -141,7 +135,7 @@ export declare abstract class ECSqlSchemaLocater extends IncrementalSchemaLocate
141
135
  * @returns A promise that resolves to a EnumerationProps array. Maybe empty if not items are found.
142
136
  * @internal
143
137
  */
144
- getEnumerations(schema: string, context: SchemaContext): Promise<EnumerationProps[]>;
138
+ protected getEnumerations(schema: string, context: SchemaContext): Promise<EnumerationProps[]>;
145
139
  /**
146
140
  * Gets all the Schema's Unit items as [[SchemaItemUnitProps]] JSON objects.
147
141
  * @param schema The name of the Schema.
@@ -149,7 +143,7 @@ export declare abstract class ECSqlSchemaLocater extends IncrementalSchemaLocate
149
143
  * @returns A promise that resolves to a SchemaItemUnitProps array. Maybe empty if not items are found.
150
144
  * @internal
151
145
  */
152
- getUnits(schema: string, context: SchemaContext): Promise<SchemaItemUnitProps[]>;
146
+ protected getUnits(schema: string, context: SchemaContext): Promise<SchemaItemUnitProps[]>;
153
147
  /**
154
148
  * Gets all the Schema's InvertedUnit items as [[InvertedUnitProps]] JSON objects.
155
149
  * @param schema The name of the Schema.
@@ -157,7 +151,7 @@ export declare abstract class ECSqlSchemaLocater extends IncrementalSchemaLocate
157
151
  * @returns A promise that resolves to a InvertedUnitProps array. Maybe empty if not items are found.
158
152
  * @internal
159
153
  */
160
- getInvertedUnits(schema: string, context: SchemaContext): Promise<InvertedUnitProps[]>;
154
+ protected getInvertedUnits(schema: string, context: SchemaContext): Promise<InvertedUnitProps[]>;
161
155
  /**
162
156
  * Gets all the Schema's Constant items as [[ConstantProps]] JSON objects.
163
157
  * @param schema The name of the Schema.
@@ -165,7 +159,7 @@ export declare abstract class ECSqlSchemaLocater extends IncrementalSchemaLocate
165
159
  * @returns A promise that resolves to a ConstantProps array. Maybe empty if not items are found.
166
160
  * @internal
167
161
  */
168
- getConstants(schema: string, context: SchemaContext): Promise<ConstantProps[]>;
162
+ protected getConstants(schema: string, context: SchemaContext): Promise<ConstantProps[]>;
169
163
  /**
170
164
  * Gets all the Schema's UnitSystem items as [[UnitSystemProps]] JSON objects.
171
165
  * @param schema The name of the Schema.
@@ -173,7 +167,7 @@ export declare abstract class ECSqlSchemaLocater extends IncrementalSchemaLocate
173
167
  * @returns A promise that resolves to a UnitSystemProps array. Maybe empty if not items are found.
174
168
  * @internal
175
169
  */
176
- getUnitSystems(schema: string, context: SchemaContext): Promise<UnitSystemProps[]>;
170
+ protected getUnitSystems(schema: string, context: SchemaContext): Promise<UnitSystemProps[]>;
177
171
  /**
178
172
  * Gets all the Schema's Phenomenon items as [[PhenomenonProps]] JSON objects.
179
173
  * @param schema The name of the Schema.
@@ -181,7 +175,7 @@ export declare abstract class ECSqlSchemaLocater extends IncrementalSchemaLocate
181
175
  * @returns A promise that resolves to a PhenomenonProps array. Maybe empty if not items are found.
182
176
  * @internal
183
177
  */
184
- getPhenomenon(schema: string, context: SchemaContext): Promise<PhenomenonProps[]>;
178
+ protected getPhenomenon(schema: string, context: SchemaContext): Promise<PhenomenonProps[]>;
185
179
  /**
186
180
  * Gets all the Schema's Format items as [[SchemaItemFormatProps]] JSON objects.
187
181
  * @param schema The name of the Schema.
@@ -189,12 +183,12 @@ export declare abstract class ECSqlSchemaLocater extends IncrementalSchemaLocate
189
183
  * @returns A promise that resolves to a SchemaItemFormatProps array. Maybe empty if not items are found.
190
184
  * @internal
191
185
  */
192
- getFormats(schema: string, context: SchemaContext): Promise<SchemaItemFormatProps[]>;
186
+ protected getFormats(schema: string, context: SchemaContext): Promise<SchemaItemFormatProps[]>;
193
187
  /**
194
188
  * Gets [[SchemaInfo]] objects for all schemas including their direct schema references.
195
189
  * @internal
196
190
  */
197
- loadSchemaInfos(): Promise<ReadonlyArray<SchemaInfo>>;
191
+ protected loadSchemaInfos(): Promise<ReadonlyArray<SchemaInfo>>;
198
192
  /**
199
193
  * Gets the [[SchemaProps]] to create the basic schema skeleton. Depending on which options are set, the schema items or class hierarchy
200
194
  * can be included in the initial fetch.
@@ -202,7 +196,7 @@ export declare abstract class ECSqlSchemaLocater extends IncrementalSchemaLocate
202
196
  * @returns A promise that resolves to the schema partials, which is an array of [[SchemaProps]].
203
197
  * @internal
204
198
  */
205
- getSchemaPartials(schemaKey: SchemaKey, context: SchemaContext): Promise<ReadonlyArray<SchemaProps> | undefined>;
199
+ protected getSchemaPartials(schemaKey: SchemaKey, context: SchemaContext): Promise<ReadonlyArray<SchemaProps> | undefined>;
206
200
  private querySchemaItem;
207
201
  private getFullSchema;
208
202
  private getFullSchemaMultipleQueries;
@@ -1 +1 @@
1
- {"version":3,"file":"ECSqlSchemaLocater.d.ts","sourceRoot":"","sources":["../../../src/IncrementalLoading/ECSqlSchemaLocater.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ECSqlSchemaLocater.d.ts","sourceRoot":"","sources":["../../../src/IncrementalLoading/ECSqlSchemaLocater.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ECSqlSchemaLocater = void 0;
2
4
  /*---------------------------------------------------------------------------------------------
3
5
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
6
  * See LICENSE.md in the project root for license terms and full copyright notice.
5
7
  *--------------------------------------------------------------------------------------------*/
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.ECSqlSchemaLocater = void 0;
8
+ const core_bentley_1 = require("@itwin/core-bentley");
8
9
  const ECObjects_1 = require("../ECObjects");
9
10
  const SchemaKey_1 = require("../SchemaKey");
10
11
  const FullSchemaQueries_1 = require("./FullSchemaQueries");
@@ -12,6 +13,7 @@ const IncrementalSchemaLocater_1 = require("./IncrementalSchemaLocater");
12
13
  const SchemaItemQueries_1 = require("./SchemaItemQueries");
13
14
  const SchemaParser_1 = require("./SchemaParser");
14
15
  const SchemaStubQueries_1 = require("./SchemaStubQueries");
16
+ const LOGGER_CATEGORY = "IncrementalSchemaLoading.Performance";
15
17
  /**
16
18
  * An abstract [[IncrementalSchemaLocater]] implementation for loading
17
19
  * EC [Schema] instances from an iModelDb using ECSql queries.
@@ -44,17 +46,19 @@ class ECSqlSchemaLocater extends IncrementalSchemaLocater_1.IncrementalSchemaLoc
44
46
  // to fetch the whole schema json.
45
47
  if (!await this.supportPartialSchemaLoading(context))
46
48
  return this.getSchemaProps(schemaKey);
47
- const start = Date.now();
49
+ const queryStart = Date.now();
48
50
  const schemaProps = this.options.useMultipleQueries
49
51
  ? await this.getFullSchemaMultipleQueries(schemaKey, context)
50
52
  : await this.getFullSchema(schemaKey, context);
51
- this.options.performanceLogger?.logSchema(start, schemaKey.name);
53
+ const queryDuration = Date.now() - queryStart;
54
+ core_bentley_1.Logger.logTrace(LOGGER_CATEGORY, `Recieved SchemaProps for ${schemaKey.name} in ${queryDuration}ms`, {
55
+ schemaName: schemaKey.name,
56
+ queryMode: this.options.useMultipleQueries ? "parallel" : "single",
57
+ duration: queryDuration,
58
+ });
52
59
  return schemaProps;
53
60
  }
54
61
  ;
55
- /**
56
- * Gets the [[SchemaProps]] without schemaItems.
57
- */
58
62
  /**
59
63
  * Gets the [[SchemaProps]] without schemaItems for the given schema name.
60
64
  * @param schemaName The name of the Schema.
@@ -247,12 +251,16 @@ class ECSqlSchemaLocater extends IncrementalSchemaLocater_1.IncrementalSchemaLoc
247
251
  * @internal
248
252
  */
249
253
  async getSchemaPartials(schemaKey, context) {
250
- const start = Date.now();
254
+ const queryStart = Date.now();
251
255
  const [schemaRow] = await this.executeQuery(SchemaStubQueries_1.ecsqlQueries.schemaStubQuery, {
252
256
  parameters: { schemaName: schemaKey.name },
253
257
  limit: 1
254
258
  });
255
- this.options.performanceLogger?.logSchemaItem(start, schemaKey.name, 'SchemaPartials', 1);
259
+ const queryDuration = Date.now() - queryStart;
260
+ core_bentley_1.Logger.logTrace(LOGGER_CATEGORY, `Recieved PartialSchema for ${schemaKey.name} in ${queryDuration}ms`, {
261
+ schemaName: schemaKey.name,
262
+ duration: queryDuration,
263
+ });
256
264
  if (!schemaRow)
257
265
  return undefined;
258
266
  const schemaPartials = [];
@@ -273,11 +281,12 @@ class ECSqlSchemaLocater extends IncrementalSchemaLocater_1.IncrementalSchemaLoc
273
281
  if (!schemaStub) {
274
282
  schemaStub = await addSchema(SchemaKey_1.SchemaKey.parseString(`${schemaName}.0.0.0`));
275
283
  }
276
- if (!schemaStub.items) {
277
- Object.assign(schemaStub, { items: {} });
284
+ let items = schemaStub.items;
285
+ if (!items) {
286
+ Object.assign(schemaStub, items = { items: {} });
278
287
  }
279
- const existingItem = schemaStub.items[itemInfo.name] || {};
280
- Object.assign(schemaStub.items, { [itemInfo.name]: Object.assign(existingItem, itemInfo) });
288
+ const existingItem = items[itemInfo.name] || {};
289
+ Object.assign(items, { [itemInfo.name]: Object.assign(existingItem, itemInfo) });
281
290
  };
282
291
  const reviver = (_key, value) => {
283
292
  if (value === null) {
@@ -293,7 +302,13 @@ class ECSqlSchemaLocater extends IncrementalSchemaLocater_1.IncrementalSchemaLoc
293
302
  async querySchemaItem(context, schemaName, query, schemaType) {
294
303
  const start = Date.now();
295
304
  const itemRows = await this.executeQuery(query, { parameters: { schemaName } });
296
- this.options.performanceLogger?.logSchemaItem(start, schemaName, schemaType, itemRows.length);
305
+ const queryDuration = Date.now() - start;
306
+ core_bentley_1.Logger.logTrace(LOGGER_CATEGORY, `Recieved rows of ${schemaType} items for ${schemaName} in ${queryDuration}ms`, {
307
+ schemaName,
308
+ itemCount: itemRows.length,
309
+ itemType: schemaType,
310
+ duration: queryDuration,
311
+ });
297
312
  if (itemRows.length === 0)
298
313
  return [];
299
314
  const items = itemRows.map((itemRow) => {
@@ -319,7 +334,7 @@ class ECSqlSchemaLocater extends IncrementalSchemaLocater_1.IncrementalSchemaLoc
319
334
  const schema = await this.getSchemaNoItems(schemaKey.name, context);
320
335
  if (!schema)
321
336
  return undefined;
322
- schema.items = {};
337
+ const items = schema.items || (schema.items = {});
323
338
  await Promise.all([
324
339
  this.getEntities(schemaKey.name, context),
325
340
  this.getMixins(schemaKey.name, context),
@@ -336,9 +351,14 @@ class ECSqlSchemaLocater extends IncrementalSchemaLocater_1.IncrementalSchemaLoc
336
351
  this.getPhenomenon(schemaKey.name, context),
337
352
  this.getFormats(schemaKey.name, context)
338
353
  ]).then((itemResults) => {
339
- const flatItemList = itemResults.reduce((acc, item) => acc.concat(item));
354
+ const flatItemList = itemResults.reduce((acc, result) => acc.concat(result));
340
355
  flatItemList.forEach((schemaItem) => {
341
- schema.items[schemaItem.name] = schemaItem;
356
+ if (!schemaItem.name) {
357
+ // This should never be happen, as we query the schema items by name from the database, but since the SchemaProps
358
+ // have name optional, we need the check here to make the compiler happy.
359
+ throw new Error(`SchemaItem with no name encountered in schema ${schemaKey.name}`);
360
+ }
361
+ items[schemaItem.name] = schemaItem;
342
362
  });
343
363
  });
344
364
  return schema;
@@ -363,7 +383,7 @@ async function parseSchemaItemStubs(schemaName, itemRows, addItemsHandler, schem
363
383
  await addItemsHandler(currentItem.schema, {
364
384
  ...schemaItem,
365
385
  name: schemaItem.name,
366
- schemaItemType: (0, ECObjects_1.parseSchemaItemType)(schemaItem.schemaItemType),
386
+ schemaItemType: schemaItem.schemaItemType,
367
387
  baseClass: baseClassName,
368
388
  });
369
389
  }
@@ -373,7 +393,7 @@ async function parseSchemaItemStubs(schemaName, itemRows, addItemsHandler, schem
373
393
  await addItemsHandler(schemaName, {
374
394
  ...schemaItem,
375
395
  name: schemaItem.name,
376
- schemaItemType: (0, ECObjects_1.parseSchemaItemType)(schemaItem.schemaItemType),
396
+ schemaItemType: schemaItem.schemaItemType,
377
397
  mixins: itemRow.mixins
378
398
  ? itemRow.mixins.map(mixin => { return `${mixin.schema}.${mixin.name}`; })
379
399
  : undefined,
@@ -384,7 +404,7 @@ async function parseSchemaItemStubs(schemaName, itemRows, addItemsHandler, schem
384
404
  await addItemsHandler(mixinRow.schema, {
385
405
  ...mixinItem,
386
406
  name: mixinItem.name,
387
- schemaItemType: (0, ECObjects_1.parseSchemaItemType)(mixinItem.schemaItemType),
407
+ schemaItemType: mixinItem.schemaItemType,
388
408
  });
389
409
  await parseBaseClasses(mixinRow.baseClasses);
390
410
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ECSqlSchemaLocater.js","sourceRoot":"","sources":["../../../src/IncrementalLoading/ECSqlSchemaLocater.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\nimport { SchemaContext } from \"../Context\";\nimport { ConstantProps, CustomAttributeClassProps, EntityClassProps, EnumerationProps, InvertedUnitProps, KindOfQuantityProps, MixinProps,\n PhenomenonProps, PropertyCategoryProps, RelationshipClassProps, SchemaItemFormatProps, SchemaItemProps, SchemaItemUnitProps, SchemaProps,\n StructClassProps, UnitSystemProps } from \"../Deserialization/JsonProps\";\nimport { parseSchemaItemType, SchemaItemType, SchemaMatchType } from \"../ECObjects\";\nimport { SchemaInfo, WithSchemaKey } from \"../Interfaces\";\nimport { SchemaKey } from \"../SchemaKey\";\nimport { FullSchemaQueries } from \"./FullSchemaQueries\";\nimport { IncrementalSchemaLocater, SchemaLocaterOptions } from \"./IncrementalSchemaLocater\";\nimport { PerformanceLogger } from \"./PerformanceLogger\";\nimport { SchemaItemQueries } from \"./SchemaItemQueries\";\nimport { SchemaParser } from \"./SchemaParser\";\nimport { ecsqlQueries } from \"./SchemaStubQueries\";\n\ninterface SchemaItemInfo {\n readonly name: string;\n readonly schemaItemType: SchemaItemType;\n}\n\ninterface SchemaInfoRow {\n readonly name: string;\n readonly version: string;\n readonly alias: string;\n readonly references: string;\n}\n\ninterface SchemaStubRow {\n readonly name: string;\n readonly version: string;\n readonly alias: string;\n readonly displayLabel: string;\n readonly description: string;\n readonly references: string;\n readonly items: string;\n}\n\ninterface BaseClassStubRow {\n readonly schema: string;\n readonly name: string;\n readonly schemaItemType: string;\n readonly modifier: number;\n}\n\ninterface SchemaItemStubRow {\n readonly name: string;\n readonly schemaItemType: string;\n readonly modifier?: number;\n readonly baseClasses?: Array<BaseClassStubRow>;\n readonly mixins?: Array<{\n readonly schema: string,\n readonly name: string;\n readonly schemaItemType: string;\n readonly modifier: number;\n readonly baseClasses?: Array<BaseClassStubRow>\n }>;\n}\n\ninterface SchemaRow {\n schema: string\n}\n\ninterface SchemaItemRow {\n item: string | SchemaItemProps;\n}\n\ntype AddSchemaItemHandler = <T extends SchemaItemInfo>(schemaName: string, itemStub: T) => Promise<void>;\n\ntype MutableSchemaProps = {\n -readonly [K in keyof SchemaProps]: SchemaProps[K]\n};\n\ninterface QueryParameters {\n [parameterName: string]: string | number;\n}\n\n/**\n * Query options used by the ECSqlSchemaLocater.\n * @internal\n */\nexport interface ECSqlQueryOptions {\n parameters?: QueryParameters;\n limit?: number;\n}\n\n/**\n * Defines the [[ECSqlSchemaLocater]] options which determine how each\n * schema is to be loaded. All options are optional.\n * @internal\n */\nexport interface ECSqlSchemaLocaterOptions extends SchemaLocaterOptions {\n /** Query for Schemas using multiple queries. Defaults to false. */\n readonly useMultipleQueries?: boolean;\n /** Collects query execution performance data. Defaults to false. */\n readonly performanceLogger?: PerformanceLogger;\n}\n\n/**\n * An abstract [[IncrementalSchemaLocater]] implementation for loading\n * EC [Schema] instances from an iModelDb using ECSql queries.\n * @internal\n */\nexport abstract class ECSqlSchemaLocater extends IncrementalSchemaLocater {\n /**\n * Gets the [[ECSqlSchemaLocaterOptions]] used by this locater.\n */\n protected override get options(): ECSqlSchemaLocaterOptions {\n return super.options as ECSqlSchemaLocaterOptions;\n }\n\n /**\n * Initializes a new ECSqlSchemaLocater instance.\n * @param options The options used by this Schema locater.\n */\n constructor(options?: ECSqlSchemaLocaterOptions) {\n super(options);\n }\n\n /**\n * Executes the given ECSql query and returns the resulting rows.\n * @param query The ECSql query to execute.\n * @param options Optional arguments to control the query result.\n * @returns A promise that resolves to the resulting rows.\n */\n protected abstract executeQuery<TRow>(query: string, options?: ECSqlQueryOptions): Promise<ReadonlyArray<TRow>>;\n\n /**\n * Gets the [[SchemaProps]] for the given schema key.\n * @param schemaKey The schema key of the schema to be resolved.\n */\n protected abstract getSchemaProps(schemaKey: SchemaKey): Promise<SchemaProps | undefined>\n\n /**\n * Gets the [[SchemaProps]] for the given schema key. This is the full schema json with all elements that are defined\n * in the schema. The schema locater calls this after the stub has been loaded to fully load the schema in the background.\n * @param schemaKey The [[SchemaKey]] of the schema to be resolved.\n * @param context The [[SchemaContext]] to use for resolving references.\n * @internal\n */\n public async getSchemaJson(schemaKey: SchemaKey, context: SchemaContext): Promise<SchemaProps | undefined> {\n // If the meta schema is an earlier version than 4.0.3, we can't use the ECSql query interface to get the schema\n // information required to load the schema entirely. In this case, we fallback to use the ECSchema RPC interface\n // to fetch the whole schema json.\n if (!await this.supportPartialSchemaLoading(context))\n return this.getSchemaProps(schemaKey);\n\n const start = Date.now();\n const schemaProps = this.options.useMultipleQueries\n ? await this.getFullSchemaMultipleQueries(schemaKey, context)\n : await this.getFullSchema(schemaKey, context);\n\n this.options.performanceLogger?.logSchema(start, schemaKey.name);\n\n return schemaProps;\n };\n\n /**\n * Gets the [[SchemaProps]] without schemaItems.\n */\n /**\n * Gets the [[SchemaProps]] without schemaItems for the given schema name.\n * @param schemaName The name of the Schema.\n * @param context The [[SchemaContext]] to use for resolving references.\n * @returns\n * @internal\n */\n public async getSchemaNoItems(schemaName: string, context: SchemaContext): Promise<SchemaProps | undefined> {\n const schemaRows = await this.executeQuery<SchemaRow>(FullSchemaQueries.schemaNoItemsQuery, { parameters: { schemaName } });\n const schemaRow = schemaRows[0];\n if (schemaRow === undefined)\n return undefined;\n\n const schema = JSON.parse(schemaRow.schema) as SchemaProps;\n const schemaInfos = await this._schemaInfoCache.getSchemasByContext(context) ?? [];\n return SchemaParser.parse(schema, schemaInfos);\n }\n\n /**\n * Checks if the [[SchemaContext]] has the right Meta Schema version to support the incremental schema loading.\n * @param context The schema context to lookup the meta schema.\n * @returns true if the context has a supported meta schema version, false otherwise.\n */\n protected async supportPartialSchemaLoading(context: SchemaContext): Promise<boolean> {\n const metaSchemaKey = new SchemaKey(\"ECDbMeta\", 4, 0, 3);\n const metaSchemaInfo = await context.getSchemaInfo(metaSchemaKey, SchemaMatchType.LatestWriteCompatible);\n return metaSchemaInfo !== undefined;\n };\n\n /**\n * Gets all the Schema's Entity classes as [[EntityClassProps]] JSON objects.\n * @param schemaName The name of the Schema.\n * @param context The [[SchemaContext]] to which the schema belongs.\n * @returns A promise that resolves to a EntityClassProps array. Maybe empty of no entities are found.\n * @internal\n */\n public async getEntities(schema: string, context: SchemaContext, queryOverride?: string): Promise<EntityClassProps[]> {\n const query = queryOverride ?? FullSchemaQueries.entityQuery;\n return this.querySchemaItem<EntityClassProps>(context, schema, query, \"EntityClass\");\n }\n\n /**\n * Gets all the Schema's Mixin classes as [[MixinProps]] JSON objects.\n * @param schemaName The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a MixinProps array. Maybe empty of no entities are found.\n * @internal\n */\n public async getMixins(schema: string, context: SchemaContext, queryOverride?: string): Promise<MixinProps[]> {\n const query = queryOverride ?? FullSchemaQueries.mixinQuery;\n return this.querySchemaItem<MixinProps>(context, schema, query, \"Mixin\");\n }\n\n /**\n * Gets all the Schema's Relationship classes as [[RelationshipClassProps]] JSON objects.\n * @param schemaName The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a RelationshipClassProps array. Maybe empty if no items are found.\n * @internal\n */\n public async getRelationships(schema: string, context: SchemaContext, queryOverride?: string): Promise<RelationshipClassProps[]> {\n const query = queryOverride ?? FullSchemaQueries.relationshipClassQuery;\n return this.querySchemaItem<RelationshipClassProps>(context, schema, query, \"RelationshipClass\");\n }\n\n /**\n * Gets all the Schema's CustomAttributeClass items as [[CustomAttributeClassProps]] JSON objects.\n * @param schemaName The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a CustomAttributeClassProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getCustomAttributeClasses(schema: string, context: SchemaContext, queryOverride?: string): Promise<CustomAttributeClassProps[]> {\n const query = queryOverride ?? FullSchemaQueries.customAttributeQuery;\n return this.querySchemaItem<CustomAttributeClassProps>(context, schema, query, \"CustomAttributeClass\");\n }\n\n\n /**\n * Gets all the Schema's StructClass items as [[StructClassProps]] JSON objects.\n * @param schemaName The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a StructClassProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getStructs(schema: string, context: SchemaContext, queryOverride?: string): Promise<StructClassProps[]> {\n const query = queryOverride ?? FullSchemaQueries.structQuery;\n return this.querySchemaItem<StructClassProps>(context, schema, query, \"StructClass\");\n }\n\n /**\n * Gets all the Schema's KindOfQuantity items as [[KindOfQuantityProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a KindOfQuantityProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getKindOfQuantities(schema: string, context: SchemaContext): Promise<KindOfQuantityProps[]> {\n return this.querySchemaItem<KindOfQuantityProps>(context, schema, SchemaItemQueries.kindOfQuantity(true), \"KindOfQuantity\");\n }\n\n /**\n * Gets all the Schema's PropertyCategory items as [[PropertyCategoryProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a PropertyCategoryProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getPropertyCategories(schema: string, context: SchemaContext): Promise<PropertyCategoryProps[]> {\n return this.querySchemaItem<PropertyCategoryProps>(context, schema, SchemaItemQueries.propertyCategory(true), \"PropertyCategory\");\n }\n\n /**\n * Gets all the Schema's Enumeration items as [[EnumerationProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a EnumerationProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getEnumerations(schema: string, context: SchemaContext): Promise<EnumerationProps[]> {\n return this.querySchemaItem<EnumerationProps>(context, schema, SchemaItemQueries.enumeration(true), \"Enumeration\");\n }\n\n /**\n * Gets all the Schema's Unit items as [[SchemaItemUnitProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a SchemaItemUnitProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getUnits(schema: string, context: SchemaContext): Promise<SchemaItemUnitProps[]> {\n return this.querySchemaItem<SchemaItemUnitProps>(context, schema, SchemaItemQueries.unit(true), \"Unit\");\n }\n\n /**\n * Gets all the Schema's InvertedUnit items as [[InvertedUnitProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a InvertedUnitProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getInvertedUnits(schema: string, context: SchemaContext): Promise<InvertedUnitProps[]> {\n return this.querySchemaItem<InvertedUnitProps>(context, schema, SchemaItemQueries.invertedUnit(true), \"InvertedUnit\");\n }\n\n /**\n * Gets all the Schema's Constant items as [[ConstantProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a ConstantProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getConstants(schema: string, context: SchemaContext): Promise<ConstantProps[]> {\n return this.querySchemaItem<ConstantProps>(context, schema, SchemaItemQueries.constant(true), \"Constant\");\n }\n\n /**\n * Gets all the Schema's UnitSystem items as [[UnitSystemProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a UnitSystemProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getUnitSystems(schema: string, context: SchemaContext): Promise<UnitSystemProps[]> {\n return this.querySchemaItem<UnitSystemProps>(context, schema, SchemaItemQueries.unitSystem(true), \"UnitSystem\");\n }\n\n /**\n * Gets all the Schema's Phenomenon items as [[PhenomenonProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a PhenomenonProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getPhenomenon(schema: string, context: SchemaContext): Promise<PhenomenonProps[]> {\n return this.querySchemaItem<PhenomenonProps>(context, schema, SchemaItemQueries.phenomenon(true), \"Phenomenon\");\n }\n\n /**\n * Gets all the Schema's Format items as [[SchemaItemFormatProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a SchemaItemFormatProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getFormats(schema: string, context: SchemaContext): Promise<SchemaItemFormatProps[]> {\n return this.querySchemaItem<SchemaItemFormatProps>(context, schema, SchemaItemQueries.format(true), \"Format\");\n }\n\n /**\n * Gets [[SchemaInfo]] objects for all schemas including their direct schema references.\n * @internal\n */\n public async loadSchemaInfos(): Promise<ReadonlyArray<SchemaInfo>> {\n const schemaRows = await this.executeQuery<SchemaInfoRow>(ecsqlQueries.schemaInfoQuery);\n return schemaRows.map((schemaRow) => (\n {\n alias: schemaRow.alias,\n schemaKey: SchemaKey.parseString(`${schemaRow.name}.${schemaRow.version}`),\n references: Array.from(JSON.parse(schemaRow.references), parseSchemaReference),\n }\n ));\n }\n\n /**\n * Gets the [[SchemaProps]] to create the basic schema skeleton. Depending on which options are set, the schema items or class hierarchy\n * can be included in the initial fetch.\n * @param schemaKey The [[SchemaKey]] of the schema to be resolved.\n * @returns A promise that resolves to the schema partials, which is an array of [[SchemaProps]].\n * @internal\n */\n public async getSchemaPartials(schemaKey: SchemaKey, context: SchemaContext): Promise<ReadonlyArray<SchemaProps> | undefined> {\n const start = Date.now();\n const [schemaRow] = await this.executeQuery<SchemaStubRow>(ecsqlQueries.schemaStubQuery, {\n parameters: { schemaName: schemaKey.name },\n limit: 1\n });\n this.options.performanceLogger?.logSchemaItem(start, schemaKey.name, 'SchemaPartials', 1);\n\n if (!schemaRow)\n return undefined;\n\n const schemaPartials: Array<SchemaProps> = [];\n const addSchema = async (key: SchemaKey) => {\n const stub = await this.createSchemaProps(key, context);\n schemaPartials.push(stub);\n\n if (stub.references) {\n for (const referenceProps of stub.references) {\n if (!schemaPartials.some((schema) => schema.name === referenceProps.name)) {\n await addSchema(SchemaKey.parseString(`${referenceProps.name}.${referenceProps.version}`));\n }\n }\n }\n\n return stub;\n };\n\n const addItems = async (schemaName: string, itemInfo: SchemaItemInfo) => {\n let schemaStub = schemaPartials.find((schema) => schema.name === schemaName);\n if (!schemaStub) {\n schemaStub = await addSchema(SchemaKey.parseString(`${schemaName}.0.0.0`));\n }\n\n if (!schemaStub.items) {\n Object.assign(schemaStub, { items: {} });\n }\n\n const existingItem = schemaStub.items![itemInfo.name] || {};\n Object.assign(schemaStub.items!, { [itemInfo.name]: Object.assign(existingItem, itemInfo) });\n };\n\n const reviver = (_key: string, value: any) => {\n if (value === null) {\n return undefined;\n }\n return value;\n };\n\n await addSchema(schemaKey);\n\n const schemaInfos = await this._schemaInfoCache.getSchemasByContext(context) ?? [];\n await parseSchemaItemStubs(schemaKey.name, JSON.parse(schemaRow.items, reviver), addItems, schemaInfos);\n\n return schemaPartials;\n }\n\n private async querySchemaItem<TRow extends SchemaItemProps>(context: SchemaContext, schemaName: string, query: string, schemaType: string): Promise<Array<TRow>> {\n const start = Date.now();\n const itemRows = await this.executeQuery<SchemaItemRow>(query, { parameters: { schemaName } });\n this.options.performanceLogger?.logSchemaItem(start, schemaName, schemaType, itemRows.length);\n\n if (itemRows.length === 0)\n return [];\n\n const items = itemRows.map((itemRow: SchemaItemRow) => {\n return \"string\" === typeof itemRow.item ? JSON.parse(itemRow.item) : itemRow.item;\n });\n\n const schemaInfos = await this._schemaInfoCache.getSchemasByContext(context) ?? [];\n return await SchemaParser.parseSchemaItems(items, schemaName, schemaInfos) as Array<TRow> ?? []\n }\n\n private async getFullSchema(schemaKey: SchemaKey, context: SchemaContext): Promise<SchemaProps | undefined> {\n const schemaRows = await this.executeQuery<SchemaRow>(FullSchemaQueries.schemaQuery, { parameters: { schemaName: schemaKey.name } });\n const schemaRow = schemaRows[0];\n if (schemaRow === undefined)\n return undefined;\n\n // Map SchemaItemRow array, [{item: SchemaItemProps}], to array of SchemaItemProps.\n const schema = JSON.parse(schemaRow.schema) as SchemaProps;\n if (schema.items) {\n (schema as any).items = (schema.items as any).map((itemRow: SchemaItemRow) => { return itemRow.item; });\n }\n\n const schemaInfos = await this._schemaInfoCache.getSchemasByContext(context) ?? [];\n return SchemaParser.parse(schema, schemaInfos);\n }\n\n private async getFullSchemaMultipleQueries(schemaKey: SchemaKey, context: SchemaContext): Promise<SchemaProps | undefined> {\n const schema = await this.getSchemaNoItems(schemaKey.name, context) as MutableSchemaProps;\n if (!schema)\n return undefined;\n\n schema.items = {};\n await Promise.all([\n this.getEntities(schemaKey.name, context),\n this.getMixins(schemaKey.name, context),\n this.getStructs(schemaKey.name, context),\n this.getRelationships(schemaKey.name, context),\n this.getCustomAttributeClasses(schemaKey.name, context),\n this.getKindOfQuantities(schemaKey.name, context),\n this.getPropertyCategories(schemaKey.name, context),\n this.getEnumerations(schemaKey.name, context),\n this.getUnits(schemaKey.name, context),\n this.getInvertedUnits(schemaKey.name, context),\n this.getUnitSystems(schemaKey.name, context),\n this.getConstants(schemaKey.name, context),\n this.getPhenomenon(schemaKey.name, context),\n this.getFormats(schemaKey.name, context)\n ]).then((itemResults) => {\n const flatItemList = itemResults.reduce((acc, item) => acc.concat(item));\n flatItemList.forEach((schemaItem) => {\n schema.items![schemaItem.name!] = schemaItem;\n });\n });\n\n return schema;\n }\n}\n\nfunction parseSchemaReference(referenceName: string): WithSchemaKey {\n return { schemaKey: SchemaKey.parseString(referenceName) };\n}\n\nasync function parseSchemaItemStubs(schemaName: string, itemRows: Array<SchemaItemStubRow>, addItemsHandler: AddSchemaItemHandler, schemaInfos: Iterable<SchemaInfo>) {\n if (!itemRows || itemRows.length === 0) {\n return;\n }\n\n const parseBaseClasses = async (baseClasses: Array<BaseClassStubRow> | undefined) => {\n if (!baseClasses || baseClasses.length < 2)\n return;\n\n for (let index = baseClasses.length - 1; index >= 0;) {\n const currentItem = baseClasses[index--];\n const baseClassItem = baseClasses[index];\n const baseClassName = baseClassItem ? `${baseClassItem.schema}.${baseClassItem.name}` : undefined;\n\n const schemaItem = await SchemaParser.parseItem(currentItem, currentItem.schema, schemaInfos);\n await addItemsHandler(currentItem.schema, {\n ...schemaItem,\n name: schemaItem.name!,\n schemaItemType: parseSchemaItemType(schemaItem.schemaItemType!)!,\n baseClass: baseClassName,\n });\n }\n };\n\n for (const itemRow of itemRows) {\n const schemaItem = await SchemaParser.parseItem(itemRow, schemaName, schemaInfos);\n await addItemsHandler(schemaName, {\n ...schemaItem,\n name: schemaItem.name!,\n schemaItemType: parseSchemaItemType(schemaItem.schemaItemType!)!,\n mixins: itemRow.mixins\n ? itemRow.mixins.map(mixin => { return `${mixin.schema}.${mixin.name}`; })\n : undefined,\n });\n\n await parseBaseClasses(itemRow.baseClasses);\n\n for (const mixinRow of itemRow.mixins || []) {\n const mixinItem = await SchemaParser.parseItem(mixinRow, mixinRow.schema, schemaInfos);\n await addItemsHandler(mixinRow.schema, {\n ...mixinItem,\n name: mixinItem.name!,\n schemaItemType: parseSchemaItemType(mixinItem.schemaItemType!)!,\n });\n await parseBaseClasses(mixinRow.baseClasses);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ECSqlSchemaLocater.js","sourceRoot":"","sources":["../../../src/IncrementalLoading/ECSqlSchemaLocater.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 *--------------------------------------------------------------------------------------------*/\nimport { Logger } from \"@itwin/core-bentley\";\nimport { SchemaContext } from \"../Context\";\nimport { ConstantProps, CustomAttributeClassProps, EntityClassProps, EnumerationProps, InvertedUnitProps, KindOfQuantityProps, MixinProps,\n PhenomenonProps, PropertyCategoryProps, RelationshipClassProps, SchemaItemFormatProps, SchemaItemProps, SchemaItemUnitProps, SchemaProps,\n StructClassProps, UnitSystemProps } from \"../Deserialization/JsonProps\";\nimport { SchemaItemType, SchemaMatchType } from \"../ECObjects\";\nimport { SchemaInfo, WithSchemaKey } from \"../Interfaces\";\nimport { SchemaKey } from \"../SchemaKey\";\nimport { FullSchemaQueries } from \"./FullSchemaQueries\";\nimport { IncrementalSchemaLocater, SchemaLocaterOptions } from \"./IncrementalSchemaLocater\";\nimport { SchemaItemQueries } from \"./SchemaItemQueries\";\nimport { SchemaParser } from \"./SchemaParser\";\nimport { ecsqlQueries } from \"./SchemaStubQueries\";\n\ninterface SchemaItemInfo {\n readonly name: string;\n readonly schemaItemType: SchemaItemType;\n}\n\ninterface SchemaInfoRow {\n readonly name: string;\n readonly version: string;\n readonly alias: string;\n readonly references: string;\n}\n\ninterface SchemaStubRow {\n readonly name: string;\n readonly version: string;\n readonly alias: string;\n readonly displayLabel: string;\n readonly description: string;\n readonly references: string;\n readonly items: string;\n}\n\ninterface BaseClassStubRow {\n readonly schema: string;\n readonly name: string;\n readonly schemaItemType: string;\n readonly modifier: number;\n}\n\ninterface SchemaItemStubRow {\n readonly name: string;\n readonly schemaItemType: string;\n readonly modifier?: number;\n readonly baseClasses?: Array<BaseClassStubRow>;\n readonly mixins?: Array<{\n readonly schema: string,\n readonly name: string;\n readonly schemaItemType: string;\n readonly modifier: number;\n readonly baseClasses?: Array<BaseClassStubRow>\n }>;\n}\n\ninterface SchemaRow {\n schema: string\n}\n\ninterface SchemaItemRow {\n item: string | SchemaItemProps;\n}\n\ntype AddSchemaItemHandler = <T extends SchemaItemInfo>(schemaName: string, itemStub: T) => Promise<void>;\n\ntype MutableSchemaProps = {\n -readonly [K in keyof SchemaProps]: SchemaProps[K];\n};\n\ninterface QueryParameters {\n [parameterName: string]: string | number;\n}\n\nconst LOGGER_CATEGORY = \"IncrementalSchemaLoading.Performance\";\n\n/**\n * Query options used by the ECSqlSchemaLocater.\n * @internal\n */\nexport interface ECSqlQueryOptions {\n parameters?: QueryParameters;\n limit?: number;\n}\n\n/**\n * Defines the [[ECSqlSchemaLocater]] options which determine how each\n * schema is to be loaded. All options are optional.\n * @internal\n */\nexport interface ECSqlSchemaLocaterOptions extends SchemaLocaterOptions {\n /** Query for Schemas using multiple queries. Defaults to false. */\n readonly useMultipleQueries?: boolean;\n}\n\n/**\n * An abstract [[IncrementalSchemaLocater]] implementation for loading\n * EC [Schema] instances from an iModelDb using ECSql queries.\n * @internal\n */\nexport abstract class ECSqlSchemaLocater extends IncrementalSchemaLocater {\n /**\n * Gets the [[ECSqlSchemaLocaterOptions]] used by this locater.\n */\n protected override get options(): ECSqlSchemaLocaterOptions {\n return super.options as ECSqlSchemaLocaterOptions;\n }\n\n /**\n * Initializes a new ECSqlSchemaLocater instance.\n * @param options The options used by this Schema locater.\n */\n constructor(options?: ECSqlSchemaLocaterOptions) {\n super(options);\n }\n\n /**\n * Executes the given ECSql query and returns the resulting rows.\n * @param query The ECSql query to execute.\n * @param options Optional arguments to control the query result.\n * @returns A promise that resolves to the resulting rows.\n */\n protected abstract executeQuery<TRow>(query: string, options?: ECSqlQueryOptions): Promise<ReadonlyArray<TRow>>;\n\n /**\n * Gets the [[SchemaProps]] for the given schema key.\n * @param schemaKey The schema key of the schema to be resolved.\n */\n protected abstract getSchemaProps(schemaKey: SchemaKey): Promise<SchemaProps | undefined>\n\n /**\n * Gets the [[SchemaProps]] for the given schema key. This is the full schema json with all elements that are defined\n * in the schema. The schema locater calls this after the stub has been loaded to fully load the schema in the background.\n * @param schemaKey The [[SchemaKey]] of the schema to be resolved.\n * @param context The [[SchemaContext]] to use for resolving references.\n * @internal\n */\n protected async getSchemaJson(schemaKey: SchemaKey, context: SchemaContext): Promise<SchemaProps | undefined> {\n // If the meta schema is an earlier version than 4.0.3, we can't use the ECSql query interface to get the schema\n // information required to load the schema entirely. In this case, we fallback to use the ECSchema RPC interface\n // to fetch the whole schema json.\n if (!await this.supportPartialSchemaLoading(context))\n return this.getSchemaProps(schemaKey);\n\n const queryStart = Date.now();\n const schemaProps = this.options.useMultipleQueries\n ? await this.getFullSchemaMultipleQueries(schemaKey, context)\n : await this.getFullSchema(schemaKey, context);\n\n const queryDuration = Date.now() - queryStart;\n Logger.logTrace(LOGGER_CATEGORY, `Recieved SchemaProps for ${schemaKey.name} in ${queryDuration}ms`, {\n schemaName: schemaKey.name,\n queryMode: this.options.useMultipleQueries ? \"parallel\" : \"single\",\n duration: queryDuration,\n });\n\n return schemaProps;\n };\n\n /**\n * Gets the [[SchemaProps]] without schemaItems for the given schema name.\n * @param schemaName The name of the Schema.\n * @param context The [[SchemaContext]] to use for resolving references.\n * @returns\n * @internal\n */\n private async getSchemaNoItems(schemaName: string, context: SchemaContext): Promise<SchemaProps | undefined> {\n const schemaRows = await this.executeQuery<SchemaRow>(FullSchemaQueries.schemaNoItemsQuery, { parameters: { schemaName } });\n const schemaRow = schemaRows[0];\n if (schemaRow === undefined)\n return undefined;\n\n const schema = JSON.parse(schemaRow.schema) as SchemaProps;\n const schemaInfos = await this._schemaInfoCache.getSchemasByContext(context) ?? [];\n return SchemaParser.parse(schema, schemaInfos);\n }\n\n /**\n * Checks if the [[SchemaContext]] has the right Meta Schema version to support the incremental schema loading.\n * @param context The schema context to lookup the meta schema.\n * @returns true if the context has a supported meta schema version, false otherwise.\n */\n protected async supportPartialSchemaLoading(context: SchemaContext): Promise<boolean> {\n const metaSchemaKey = new SchemaKey(\"ECDbMeta\", 4, 0, 3);\n const metaSchemaInfo = await context.getSchemaInfo(metaSchemaKey, SchemaMatchType.LatestWriteCompatible);\n return metaSchemaInfo !== undefined;\n };\n\n /**\n * Gets all the Schema's Entity classes as [[EntityClassProps]] JSON objects.\n * @param schemaName The name of the Schema.\n * @param context The [[SchemaContext]] to which the schema belongs.\n * @returns A promise that resolves to a EntityClassProps array. Maybe empty of no entities are found.\n * @internal\n */\n protected async getEntities(schema: string, context: SchemaContext, queryOverride?: string): Promise<EntityClassProps[]> {\n const query = queryOverride ?? FullSchemaQueries.entityQuery;\n return this.querySchemaItem<EntityClassProps>(context, schema, query, \"EntityClass\");\n }\n\n /**\n * Gets all the Schema's Mixin classes as [[MixinProps]] JSON objects.\n * @param schemaName The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a MixinProps array. Maybe empty of no entities are found.\n * @internal\n */\n protected async getMixins(schema: string, context: SchemaContext, queryOverride?: string): Promise<MixinProps[]> {\n const query = queryOverride ?? FullSchemaQueries.mixinQuery;\n return this.querySchemaItem<MixinProps>(context, schema, query, \"Mixin\");\n }\n\n /**\n * Gets all the Schema's Relationship classes as [[RelationshipClassProps]] JSON objects.\n * @param schemaName The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a RelationshipClassProps array. Maybe empty if no items are found.\n * @internal\n */\n protected async getRelationships(schema: string, context: SchemaContext, queryOverride?: string): Promise<RelationshipClassProps[]> {\n const query = queryOverride ?? FullSchemaQueries.relationshipClassQuery;\n return this.querySchemaItem<RelationshipClassProps>(context, schema, query, \"RelationshipClass\");\n }\n\n /**\n * Gets all the Schema's CustomAttributeClass items as [[CustomAttributeClassProps]] JSON objects.\n * @param schemaName The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a CustomAttributeClassProps array. Maybe empty if not items are found.\n * @internal\n */\n protected async getCustomAttributeClasses(schema: string, context: SchemaContext, queryOverride?: string): Promise<CustomAttributeClassProps[]> {\n const query = queryOverride ?? FullSchemaQueries.customAttributeQuery;\n return this.querySchemaItem<CustomAttributeClassProps>(context, schema, query, \"CustomAttributeClass\");\n }\n\n\n /**\n * Gets all the Schema's StructClass items as [[StructClassProps]] JSON objects.\n * @param schemaName The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a StructClassProps array. Maybe empty if not items are found.\n * @internal\n */\n protected async getStructs(schema: string, context: SchemaContext, queryOverride?: string): Promise<StructClassProps[]> {\n const query = queryOverride ?? FullSchemaQueries.structQuery;\n return this.querySchemaItem<StructClassProps>(context, schema, query, \"StructClass\");\n }\n\n /**\n * Gets all the Schema's KindOfQuantity items as [[KindOfQuantityProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a KindOfQuantityProps array. Maybe empty if not items are found.\n * @internal\n */\n protected async getKindOfQuantities(schema: string, context: SchemaContext): Promise<KindOfQuantityProps[]> {\n return this.querySchemaItem<KindOfQuantityProps>(context, schema, SchemaItemQueries.kindOfQuantity(true), \"KindOfQuantity\");\n }\n\n /**\n * Gets all the Schema's PropertyCategory items as [[PropertyCategoryProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a PropertyCategoryProps array. Maybe empty if not items are found.\n * @internal\n */\n protected async getPropertyCategories(schema: string, context: SchemaContext): Promise<PropertyCategoryProps[]> {\n return this.querySchemaItem<PropertyCategoryProps>(context, schema, SchemaItemQueries.propertyCategory(true), \"PropertyCategory\");\n }\n\n /**\n * Gets all the Schema's Enumeration items as [[EnumerationProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a EnumerationProps array. Maybe empty if not items are found.\n * @internal\n */\n protected async getEnumerations(schema: string, context: SchemaContext): Promise<EnumerationProps[]> {\n return this.querySchemaItem<EnumerationProps>(context, schema, SchemaItemQueries.enumeration(true), \"Enumeration\");\n }\n\n /**\n * Gets all the Schema's Unit items as [[SchemaItemUnitProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a SchemaItemUnitProps array. Maybe empty if not items are found.\n * @internal\n */\n protected async getUnits(schema: string, context: SchemaContext): Promise<SchemaItemUnitProps[]> {\n return this.querySchemaItem<SchemaItemUnitProps>(context, schema, SchemaItemQueries.unit(true), \"Unit\");\n }\n\n /**\n * Gets all the Schema's InvertedUnit items as [[InvertedUnitProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a InvertedUnitProps array. Maybe empty if not items are found.\n * @internal\n */\n protected async getInvertedUnits(schema: string, context: SchemaContext): Promise<InvertedUnitProps[]> {\n return this.querySchemaItem<InvertedUnitProps>(context, schema, SchemaItemQueries.invertedUnit(true), \"InvertedUnit\");\n }\n\n /**\n * Gets all the Schema's Constant items as [[ConstantProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a ConstantProps array. Maybe empty if not items are found.\n * @internal\n */\n protected async getConstants(schema: string, context: SchemaContext): Promise<ConstantProps[]> {\n return this.querySchemaItem<ConstantProps>(context, schema, SchemaItemQueries.constant(true), \"Constant\");\n }\n\n /**\n * Gets all the Schema's UnitSystem items as [[UnitSystemProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a UnitSystemProps array. Maybe empty if not items are found.\n * @internal\n */\n protected async getUnitSystems(schema: string, context: SchemaContext): Promise<UnitSystemProps[]> {\n return this.querySchemaItem<UnitSystemProps>(context, schema, SchemaItemQueries.unitSystem(true), \"UnitSystem\");\n }\n\n /**\n * Gets all the Schema's Phenomenon items as [[PhenomenonProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a PhenomenonProps array. Maybe empty if not items are found.\n * @internal\n */\n protected async getPhenomenon(schema: string, context: SchemaContext): Promise<PhenomenonProps[]> {\n return this.querySchemaItem<PhenomenonProps>(context, schema, SchemaItemQueries.phenomenon(true), \"Phenomenon\");\n }\n\n /**\n * Gets all the Schema's Format items as [[SchemaItemFormatProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a SchemaItemFormatProps array. Maybe empty if not items are found.\n * @internal\n */\n protected async getFormats(schema: string, context: SchemaContext): Promise<SchemaItemFormatProps[]> {\n return this.querySchemaItem<SchemaItemFormatProps>(context, schema, SchemaItemQueries.format(true), \"Format\");\n }\n\n /**\n * Gets [[SchemaInfo]] objects for all schemas including their direct schema references.\n * @internal\n */\n protected async loadSchemaInfos(): Promise<ReadonlyArray<SchemaInfo>> {\n const schemaRows = await this.executeQuery<SchemaInfoRow>(ecsqlQueries.schemaInfoQuery);\n return schemaRows.map((schemaRow) => (\n {\n alias: schemaRow.alias,\n schemaKey: SchemaKey.parseString(`${schemaRow.name}.${schemaRow.version}`),\n references: Array.from(JSON.parse(schemaRow.references), parseSchemaReference),\n }\n ));\n }\n\n /**\n * Gets the [[SchemaProps]] to create the basic schema skeleton. Depending on which options are set, the schema items or class hierarchy\n * can be included in the initial fetch.\n * @param schemaKey The [[SchemaKey]] of the schema to be resolved.\n * @returns A promise that resolves to the schema partials, which is an array of [[SchemaProps]].\n * @internal\n */\n protected async getSchemaPartials(schemaKey: SchemaKey, context: SchemaContext): Promise<ReadonlyArray<SchemaProps> | undefined> {\n const queryStart = Date.now();\n const [schemaRow] = await this.executeQuery<SchemaStubRow>(ecsqlQueries.schemaStubQuery, {\n parameters: { schemaName: schemaKey.name },\n limit: 1\n });\n\n const queryDuration = Date.now() - queryStart;\n Logger.logTrace(LOGGER_CATEGORY, `Recieved PartialSchema for ${schemaKey.name} in ${queryDuration}ms`, {\n schemaName: schemaKey.name,\n duration: queryDuration,\n });\n\n if (!schemaRow)\n return undefined;\n\n const schemaPartials: Array<SchemaProps> = [];\n const addSchema = async (key: SchemaKey) => {\n const stub = await this.createSchemaProps(key, context);\n schemaPartials.push(stub);\n\n if (stub.references) {\n for (const referenceProps of stub.references) {\n if (!schemaPartials.some((schema) => schema.name === referenceProps.name)) {\n await addSchema(SchemaKey.parseString(`${referenceProps.name}.${referenceProps.version}`));\n }\n }\n }\n\n return stub;\n };\n\n const addItems = async (schemaName: string, itemInfo: SchemaItemInfo) => {\n let schemaStub = schemaPartials.find((schema) => schema.name === schemaName);\n if (!schemaStub) {\n schemaStub = await addSchema(SchemaKey.parseString(`${schemaName}.0.0.0`));\n }\n\n let items = schemaStub.items;\n if (!items) {\n Object.assign(schemaStub, items = { items: {} });\n }\n\n const existingItem = items[itemInfo.name] || {};\n Object.assign(items, { [itemInfo.name]: Object.assign(existingItem, itemInfo) });\n };\n\n const reviver = (_key: string, value: any) => {\n if (value === null) {\n return undefined;\n }\n return value;\n };\n\n await addSchema(schemaKey);\n\n const schemaInfos = await this._schemaInfoCache.getSchemasByContext(context) ?? [];\n await parseSchemaItemStubs(schemaKey.name, JSON.parse(schemaRow.items, reviver), addItems, schemaInfos);\n\n return schemaPartials;\n }\n\n private async querySchemaItem<TRow extends SchemaItemProps>(context: SchemaContext, schemaName: string, query: string, schemaType: string): Promise<Array<TRow>> {\n const start = Date.now();\n const itemRows = await this.executeQuery<SchemaItemRow>(query, { parameters: { schemaName } });\n\n const queryDuration = Date.now() - start;\n Logger.logTrace(LOGGER_CATEGORY, `Recieved rows of ${schemaType} items for ${schemaName} in ${queryDuration}ms`, {\n schemaName,\n itemCount: itemRows.length,\n itemType: schemaType,\n duration: queryDuration,\n });\n\n if (itemRows.length === 0)\n return [];\n\n const items = itemRows.map((itemRow: SchemaItemRow) => {\n return \"string\" === typeof itemRow.item ? JSON.parse(itemRow.item) : itemRow.item;\n });\n\n const schemaInfos = await this._schemaInfoCache.getSchemasByContext(context) ?? [];\n return await SchemaParser.parseSchemaItems(items, schemaName, schemaInfos) as Array<TRow> ?? []\n }\n\n private async getFullSchema(schemaKey: SchemaKey, context: SchemaContext): Promise<SchemaProps | undefined> {\n const schemaRows = await this.executeQuery<SchemaRow>(FullSchemaQueries.schemaQuery, { parameters: { schemaName: schemaKey.name } });\n const schemaRow = schemaRows[0];\n if (schemaRow === undefined)\n return undefined;\n\n // Map SchemaItemRow array, [{item: SchemaItemProps}], to array of SchemaItemProps.\n const schema = JSON.parse(schemaRow.schema) as SchemaProps;\n if (schema.items) {\n (schema as any).items = (schema.items as any).map((itemRow: SchemaItemRow) => { return itemRow.item; });\n }\n\n const schemaInfos = await this._schemaInfoCache.getSchemasByContext(context) ?? [];\n return SchemaParser.parse(schema, schemaInfos);\n }\n\n private async getFullSchemaMultipleQueries(schemaKey: SchemaKey, context: SchemaContext): Promise<SchemaProps | undefined> {\n const schema = await this.getSchemaNoItems(schemaKey.name, context) as MutableSchemaProps;\n if (!schema)\n return undefined;\n\n const items = schema.items || (schema.items = {});\n await Promise.all([\n this.getEntities(schemaKey.name, context),\n this.getMixins(schemaKey.name, context),\n this.getStructs(schemaKey.name, context),\n this.getRelationships(schemaKey.name, context),\n this.getCustomAttributeClasses(schemaKey.name, context),\n this.getKindOfQuantities(schemaKey.name, context),\n this.getPropertyCategories(schemaKey.name, context),\n this.getEnumerations(schemaKey.name, context),\n this.getUnits(schemaKey.name, context),\n this.getInvertedUnits(schemaKey.name, context),\n this.getUnitSystems(schemaKey.name, context),\n this.getConstants(schemaKey.name, context),\n this.getPhenomenon(schemaKey.name, context),\n this.getFormats(schemaKey.name, context)\n ]).then((itemResults) => {\n const flatItemList = itemResults.reduce((acc, result) => acc.concat(result));\n flatItemList.forEach((schemaItem) => {\n if(!schemaItem.name) {\n // This should never be happen, as we query the schema items by name from the database, but since the SchemaProps\n // have name optional, we need the check here to make the compiler happy.\n throw new Error(`SchemaItem with no name encountered in schema ${schemaKey.name}`);\n }\n items[schemaItem.name] = schemaItem;\n });\n });\n\n return schema;\n }\n}\n\nfunction parseSchemaReference(referenceName: string): WithSchemaKey {\n return { schemaKey: SchemaKey.parseString(referenceName) };\n}\n\nasync function parseSchemaItemStubs(schemaName: string, itemRows: Array<SchemaItemStubRow>, addItemsHandler: AddSchemaItemHandler, schemaInfos: Iterable<SchemaInfo>) {\n if (!itemRows || itemRows.length === 0) {\n return;\n }\n\n const parseBaseClasses = async (baseClasses: Array<BaseClassStubRow> | undefined) => {\n if (!baseClasses || baseClasses.length < 2)\n return;\n\n for (let index = baseClasses.length - 1; index >= 0;) {\n const currentItem = baseClasses[index--];\n const baseClassItem = baseClasses[index];\n const baseClassName = baseClassItem ? `${baseClassItem.schema}.${baseClassItem.name}` : undefined;\n\n const schemaItem = await SchemaParser.parseItem(currentItem, currentItem.schema, schemaInfos);\n await addItemsHandler(currentItem.schema, {\n ...schemaItem,\n name: schemaItem.name,\n schemaItemType: schemaItem.schemaItemType,\n baseClass: baseClassName,\n });\n }\n };\n\n for (const itemRow of itemRows) {\n const schemaItem = await SchemaParser.parseItem(itemRow, schemaName, schemaInfos);\n await addItemsHandler(schemaName, {\n ...schemaItem,\n name: schemaItem.name,\n schemaItemType: schemaItem.schemaItemType,\n mixins: itemRow.mixins\n ? itemRow.mixins.map(mixin => { return `${mixin.schema}.${mixin.name}`; })\n : undefined,\n });\n\n await parseBaseClasses(itemRow.baseClasses);\n\n for (const mixinRow of itemRow.mixins || []) {\n const mixinItem = await SchemaParser.parseItem(mixinRow, mixinRow.schema, schemaInfos);\n await addItemsHandler(mixinRow.schema, {\n ...mixinItem,\n name: mixinItem.name,\n schemaItemType: mixinItem.schemaItemType,\n });\n await parseBaseClasses(mixinRow.baseClasses);\n }\n }\n}\n"]}
@@ -79,7 +79,7 @@ export declare abstract class IncrementalSchemaLocater implements ISchemaLocater
79
79
  * @param context The schema context to load the schema infos for.
80
80
  * @returns A promise that resolves to an iterable of schema infos.
81
81
  */
82
- abstract loadSchemaInfos(context: SchemaContext): Promise<Iterable<SchemaInfo>>;
82
+ protected abstract loadSchemaInfos(context: SchemaContext): Promise<Iterable<SchemaInfo>>;
83
83
  /**
84
84
  * Checks if the context contains the right schemas to support incremental schema loading.
85
85
  * @param context The schema context to check.
@@ -94,7 +94,7 @@ export declare abstract class IncrementalSchemaLocater implements ISchemaLocater
94
94
  * @param schemaInfo The schema info of the schema to load.
95
95
  * @param schemaContext The schema context to load the schema into.
96
96
  */
97
- loadSchema(schemaInfo: SchemaInfo, schemaContext: SchemaContext): Promise<Schema>;
97
+ protected loadSchema(schemaInfo: SchemaInfo, schemaContext: SchemaContext): Promise<Schema>;
98
98
  /**
99
99
  * Creates a SchemaProps object by loading the Schema information from the given SchemaContext.
100
100
  * @param schemaKey The SchemaKey of the Schema whose props are to be retrieved.
@@ -1 +1 @@
1
- {"version":3,"file":"IncrementalSchemaLocater.d.ts","sourceRoot":"","sources":["../../../src/IncrementalLoading/IncrementalSchemaLocater.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IncrementalSchemaLocater.d.ts","sourceRoot":"","sources":["../../../src/IncrementalLoading/IncrementalSchemaLocater.ts"],"names":[],"mappings":"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"}
@@ -89,6 +89,8 @@ class IncrementalSchemaLocater {
89
89
  // to fetch the whole schema json.
90
90
  if (!await this.supportPartialSchemaLoading(schemaContext)) {
91
91
  const schemaJson = await this.getSchemaJson(schemaInfo.schemaKey, schemaContext);
92
+ if (schemaJson === undefined)
93
+ throw new Exception_1.ECSchemaError(Exception_1.ECSchemaStatus.UnableToLocateSchema, `Could not locate the schema, ${schemaInfo.schemaKey.name}.${schemaInfo.schemaKey.version.toString()}`);
92
94
  return Schema_1.Schema.fromJson(schemaJson, schemaContext);
93
95
  }
94
96
  // Fetches the schema partials for the given schema key. The first item in the array is the
@@ -119,18 +121,17 @@ class IncrementalSchemaLocater {
119
121
  const schemaInfo = await schemaContext.getSchemaInfo(schemaKey, ECObjects_1.SchemaMatchType.Latest);
120
122
  if (!schemaInfo)
121
123
  throw new Error(`Schema ${schemaKey.name} could not be found.`);
124
+ const schemaReferences = [];
122
125
  const schemaProps = {
123
126
  $schema: Constants_1.ECSchemaNamespaceUris.SCHEMAURL3_2_JSON,
124
127
  name: schemaKey.name,
125
128
  alias: schemaInfo.alias,
126
129
  version: schemaInfo.schemaKey.version.toString(),
127
- references: [],
130
+ references: schemaReferences,
128
131
  items: {}
129
132
  };
130
- if (!schemaProps.references)
131
- throw new Error(`Schema references is undefined for the Schema ${schemaInfo.schemaKey.name}`);
132
133
  schemaInfo.references.forEach((ref) => {
133
- schemaProps.references.push({ name: ref.schemaKey.name, version: ref.schemaKey.version.toString() });
134
+ schemaReferences.push({ name: ref.schemaKey.name, version: ref.schemaKey.version.toString() });
134
135
  });
135
136
  return schemaProps;
136
137
  }