@itwin/ecschema-metadata 5.2.0-dev.8 → 5.3.0-dev.2

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 (116) hide show
  1. package/CHANGELOG.md +36 -1
  2. package/lib/cjs/Deserialization/JsonProps.d.ts +9 -2
  3. package/lib/cjs/Deserialization/JsonProps.d.ts.map +1 -1
  4. package/lib/cjs/Deserialization/JsonProps.js.map +1 -1
  5. package/lib/cjs/Formatting/FormatSetFormatsProvider.d.ts +37 -0
  6. package/lib/cjs/Formatting/FormatSetFormatsProvider.d.ts.map +1 -0
  7. package/lib/cjs/Formatting/FormatSetFormatsProvider.js +58 -0
  8. package/lib/cjs/Formatting/FormatSetFormatsProvider.js.map +1 -0
  9. package/lib/cjs/{SchemaFormatsProvider.d.ts → Formatting/SchemaFormatsProvider.d.ts} +1 -1
  10. package/lib/cjs/Formatting/SchemaFormatsProvider.d.ts.map +1 -0
  11. package/lib/cjs/{SchemaFormatsProvider.js → Formatting/SchemaFormatsProvider.js} +6 -6
  12. package/lib/cjs/Formatting/SchemaFormatsProvider.js.map +1 -0
  13. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.d.ts +18 -24
  14. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.d.ts.map +1 -1
  15. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.js +62 -34
  16. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -1
  17. package/lib/cjs/IncrementalLoading/FullSchemaQueries.d.ts.map +1 -1
  18. package/lib/cjs/IncrementalLoading/FullSchemaQueries.js +1 -0
  19. package/lib/cjs/IncrementalLoading/FullSchemaQueries.js.map +1 -1
  20. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.d.ts +20 -3
  21. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.d.ts.map +1 -1
  22. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.js +7 -4
  23. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -1
  24. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.d.ts.map +1 -1
  25. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.js +2 -7
  26. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.js.map +1 -1
  27. package/lib/cjs/IncrementalLoading/SchemaItemParsers.d.ts +4 -4
  28. package/lib/cjs/IncrementalLoading/SchemaItemParsers.d.ts.map +1 -1
  29. package/lib/cjs/IncrementalLoading/SchemaItemParsers.js +17 -17
  30. package/lib/cjs/IncrementalLoading/SchemaItemParsers.js.map +1 -1
  31. package/lib/cjs/IncrementalLoading/SchemaItemQueries.js +4 -4
  32. package/lib/cjs/IncrementalLoading/SchemaItemQueries.js.map +1 -1
  33. package/lib/cjs/IncrementalLoading/SchemaParser.d.ts +10 -4
  34. package/lib/cjs/IncrementalLoading/SchemaParser.d.ts.map +1 -1
  35. package/lib/cjs/IncrementalLoading/SchemaParser.js +19 -19
  36. package/lib/cjs/IncrementalLoading/SchemaParser.js.map +1 -1
  37. package/lib/cjs/IncrementalLoading/SchemaStubQueries.d.ts.map +1 -1
  38. package/lib/cjs/IncrementalLoading/SchemaStubQueries.js +7 -24
  39. package/lib/cjs/IncrementalLoading/SchemaStubQueries.js.map +1 -1
  40. package/lib/cjs/Metadata/EntityClass.js +1 -1
  41. package/lib/cjs/Metadata/EntityClass.js.map +1 -1
  42. package/lib/cjs/Metadata/KindOfQuantity.d.ts.map +1 -1
  43. package/lib/cjs/Metadata/KindOfQuantity.js +9 -22
  44. package/lib/cjs/Metadata/KindOfQuantity.js.map +1 -1
  45. package/lib/cjs/Metadata/Schema.d.ts +2 -0
  46. package/lib/cjs/Metadata/Schema.d.ts.map +1 -1
  47. package/lib/cjs/Metadata/Schema.js +4 -0
  48. package/lib/cjs/Metadata/Schema.js.map +1 -1
  49. package/lib/cjs/ecschema-metadata.d.ts +2 -1
  50. package/lib/cjs/ecschema-metadata.d.ts.map +1 -1
  51. package/lib/cjs/ecschema-metadata.js +2 -1
  52. package/lib/cjs/ecschema-metadata.js.map +1 -1
  53. package/lib/esm/Deserialization/JsonProps.d.ts +9 -2
  54. package/lib/esm/Deserialization/JsonProps.d.ts.map +1 -1
  55. package/lib/esm/Deserialization/JsonProps.js.map +1 -1
  56. package/lib/esm/Formatting/FormatSetFormatsProvider.d.ts +37 -0
  57. package/lib/esm/Formatting/FormatSetFormatsProvider.d.ts.map +1 -0
  58. package/lib/esm/Formatting/FormatSetFormatsProvider.js +54 -0
  59. package/lib/esm/Formatting/FormatSetFormatsProvider.js.map +1 -0
  60. package/lib/esm/{SchemaFormatsProvider.d.ts → Formatting/SchemaFormatsProvider.d.ts} +1 -1
  61. package/lib/esm/Formatting/SchemaFormatsProvider.d.ts.map +1 -0
  62. package/lib/esm/{SchemaFormatsProvider.js → Formatting/SchemaFormatsProvider.js} +6 -6
  63. package/lib/esm/Formatting/SchemaFormatsProvider.js.map +1 -0
  64. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.d.ts +18 -24
  65. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.d.ts.map +1 -1
  66. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.js +61 -33
  67. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -1
  68. package/lib/esm/IncrementalLoading/FullSchemaQueries.d.ts.map +1 -1
  69. package/lib/esm/IncrementalLoading/FullSchemaQueries.js +1 -0
  70. package/lib/esm/IncrementalLoading/FullSchemaQueries.js.map +1 -1
  71. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.d.ts +20 -3
  72. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.d.ts.map +1 -1
  73. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.js +7 -4
  74. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -1
  75. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.d.ts.map +1 -1
  76. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.js +2 -7
  77. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.js.map +1 -1
  78. package/lib/esm/IncrementalLoading/SchemaItemParsers.d.ts +4 -4
  79. package/lib/esm/IncrementalLoading/SchemaItemParsers.d.ts.map +1 -1
  80. package/lib/esm/IncrementalLoading/SchemaItemParsers.js +17 -17
  81. package/lib/esm/IncrementalLoading/SchemaItemParsers.js.map +1 -1
  82. package/lib/esm/IncrementalLoading/SchemaItemQueries.js +4 -4
  83. package/lib/esm/IncrementalLoading/SchemaItemQueries.js.map +1 -1
  84. package/lib/esm/IncrementalLoading/SchemaParser.d.ts +10 -4
  85. package/lib/esm/IncrementalLoading/SchemaParser.d.ts.map +1 -1
  86. package/lib/esm/IncrementalLoading/SchemaParser.js +19 -19
  87. package/lib/esm/IncrementalLoading/SchemaParser.js.map +1 -1
  88. package/lib/esm/IncrementalLoading/SchemaStubQueries.d.ts.map +1 -1
  89. package/lib/esm/IncrementalLoading/SchemaStubQueries.js +7 -24
  90. package/lib/esm/IncrementalLoading/SchemaStubQueries.js.map +1 -1
  91. package/lib/esm/Metadata/EntityClass.js +1 -1
  92. package/lib/esm/Metadata/EntityClass.js.map +1 -1
  93. package/lib/esm/Metadata/KindOfQuantity.d.ts.map +1 -1
  94. package/lib/esm/Metadata/KindOfQuantity.js +9 -22
  95. package/lib/esm/Metadata/KindOfQuantity.js.map +1 -1
  96. package/lib/esm/Metadata/Schema.d.ts +2 -0
  97. package/lib/esm/Metadata/Schema.d.ts.map +1 -1
  98. package/lib/esm/Metadata/Schema.js +4 -0
  99. package/lib/esm/Metadata/Schema.js.map +1 -1
  100. package/lib/esm/ecschema-metadata.d.ts +2 -1
  101. package/lib/esm/ecschema-metadata.d.ts.map +1 -1
  102. package/lib/esm/ecschema-metadata.js +2 -1
  103. package/lib/esm/ecschema-metadata.js.map +1 -1
  104. package/package.json +6 -6
  105. package/lib/cjs/IncrementalLoading/PerformanceLogger.d.ts +0 -60
  106. package/lib/cjs/IncrementalLoading/PerformanceLogger.d.ts.map +0 -1
  107. package/lib/cjs/IncrementalLoading/PerformanceLogger.js +0 -82
  108. package/lib/cjs/IncrementalLoading/PerformanceLogger.js.map +0 -1
  109. package/lib/cjs/SchemaFormatsProvider.d.ts.map +0 -1
  110. package/lib/cjs/SchemaFormatsProvider.js.map +0 -1
  111. package/lib/esm/IncrementalLoading/PerformanceLogger.d.ts +0 -60
  112. package/lib/esm/IncrementalLoading/PerformanceLogger.d.ts.map +0 -1
  113. package/lib/esm/IncrementalLoading/PerformanceLogger.js +0 -78
  114. package/lib/esm/IncrementalLoading/PerformanceLogger.js.map +0 -1
  115. package/lib/esm/SchemaFormatsProvider.d.ts.map +0 -1
  116. package/lib/esm/SchemaFormatsProvider.js.map +0 -1
@@ -1,5 +1,5 @@
1
- import { SchemaContext } from "../Context";
2
1
  import { AnySchemaItemProps, KindOfQuantityProps, SchemaItemProps } from "../Deserialization/JsonProps";
2
+ import { SchemaInfo } from "../Interfaces";
3
3
  /**
4
4
  * Parses SchemaItemProps JSON returned from an ECSql query and returns the correct SchemaItemProps JSON.
5
5
  * This is necessary as a small amount information (ie. CustomAttribute data) returned from the iModelDb
@@ -8,13 +8,13 @@ import { AnySchemaItemProps, KindOfQuantityProps, SchemaItemProps } from "../Des
8
8
  */
9
9
  export declare class SchemaItemParser {
10
10
  protected _schema: string;
11
- protected _context: SchemaContext;
11
+ protected _schemaInfos: Iterable<SchemaInfo>;
12
12
  /**
13
13
  * Initializes a new SchemaItemParser.
14
14
  * @param schemaName The name the Schema containing the SchemaItems.
15
15
  * @param context The SchemaContext containing the Schema.
16
16
  */
17
- constructor(schemaName: string, context: SchemaContext);
17
+ constructor(schemaName: string, schemaInfos: Iterable<SchemaInfo>);
18
18
  /**
19
19
  * Parses the given SchemaItemProps JSON returned from an ECSql query.
20
20
  * @param data The SchemaItemProps JSON as returned from an iModelDb.
@@ -29,7 +29,7 @@ export declare class SchemaItemParser {
29
29
  * @param rawTypeName The name or aliased name of the SchemaItem.
30
30
  * @returns The full name of the SchemaItem, ie. 'BisCore.PhysicalElement'
31
31
  */
32
- getQualifiedTypeName(rawTypeName: string): Promise<string>;
32
+ getQualifiedTypeName(rawTypeName: string): string;
33
33
  private resolveNameFromAlias;
34
34
  }
35
35
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaItemParsers.d.ts","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaItemParsers.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAUxG;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC;IAElC;;;;OAIG;gBACgB,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa;IAK7D;;;;OAIG;IACU,KAAK,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC;IAUtE;;;;;;;OAOG;IACU,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAgBzD,oBAAoB;CAOnC;AAMD;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,gBAAgB;IACxD;;;;OAIG;IACmB,KAAK,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAWtE,sBAAsB;YActB,0BAA0B;CAmBzC"}
1
+ {"version":3,"file":"SchemaItemParsers.d.ts","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaItemParsers.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAExG,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAS3C;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAE7C;;;;OAIG;gBACgB,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAKxE;;;;OAIG;IACU,KAAK,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC;IAUtE;;;;;;;OAOG;IACI,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAgBxD,OAAO,CAAC,oBAAoB;CAO7B;AAMD;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,gBAAgB;IACxD;;;;OAIG;IACmB,KAAK,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAWpF,OAAO,CAAC,sBAAsB;IAc9B,OAAO,CAAC,0BAA0B;CAmBnC"}
@@ -14,15 +14,15 @@ import { parseCustomAttribute } from "./SchemaParser";
14
14
  */
15
15
  export class SchemaItemParser {
16
16
  _schema;
17
- _context;
17
+ _schemaInfos;
18
18
  /**
19
19
  * Initializes a new SchemaItemParser.
20
20
  * @param schemaName The name the Schema containing the SchemaItems.
21
21
  * @param context The SchemaContext containing the Schema.
22
22
  */
23
- constructor(schemaName, context) {
23
+ constructor(schemaName, schemaInfos) {
24
24
  this._schema = schemaName;
25
- this._context = context;
25
+ this._schemaInfos = schemaInfos;
26
26
  }
27
27
  /**
28
28
  * Parses the given SchemaItemProps JSON returned from an ECSql query.
@@ -45,7 +45,7 @@ export class SchemaItemParser {
45
45
  * @param rawTypeName The name or aliased name of the SchemaItem.
46
46
  * @returns The full name of the SchemaItem, ie. 'BisCore.PhysicalElement'
47
47
  */
48
- async getQualifiedTypeName(rawTypeName) {
48
+ getQualifiedTypeName(rawTypeName) {
49
49
  const nameParts = rawTypeName.split(":");
50
50
  if (nameParts.length !== 2) {
51
51
  const [schemaName, itemName] = SchemaItem.parseFullName(rawTypeName);
@@ -53,15 +53,15 @@ export class SchemaItemParser {
53
53
  return `${this._schema}.${itemName}`;
54
54
  return rawTypeName;
55
55
  }
56
- const resolvedName = await this.resolveNameFromAlias(nameParts[0].toLocaleLowerCase());
56
+ const resolvedName = this.resolveNameFromAlias(nameParts[0].toLocaleLowerCase());
57
57
  if (!resolvedName)
58
58
  throw new Error(`No valid schema found for alias '${nameParts[0]}'`);
59
59
  return `${resolvedName}.${nameParts[1]}`;
60
60
  }
61
- async resolveNameFromAlias(alias) {
62
- for (const schema of this._context.getKnownSchemas()) {
63
- if (schema.alias === alias)
64
- return schema.schemaKey.name;
61
+ resolveNameFromAlias(alias) {
62
+ for (const schemaInfo of this._schemaInfos) {
63
+ if (schemaInfo.alias === alias)
64
+ return schemaInfo.schemaKey.name;
65
65
  }
66
66
  return undefined;
67
67
  }
@@ -81,31 +81,31 @@ export class KindOfQuantityParser extends SchemaItemParser {
81
81
  async parse(data) {
82
82
  const mutableProps = await super.parse(data);
83
83
  if (mutableProps.persistenceUnit) {
84
- mutableProps.persistenceUnit = await this.getQualifiedTypeName(mutableProps.persistenceUnit);
84
+ mutableProps.persistenceUnit = this.getQualifiedTypeName(mutableProps.persistenceUnit);
85
85
  }
86
- mutableProps.presentationUnits = await this.parsePresentationUnits(mutableProps);
86
+ mutableProps.presentationUnits = this.parsePresentationUnits(mutableProps);
87
87
  return mutableProps;
88
88
  }
89
- async parsePresentationUnits(props) {
89
+ parsePresentationUnits(props) {
90
90
  const presentationUnits = [];
91
91
  if (!props.presentationUnits)
92
92
  return [];
93
93
  for (const presentationUnit of props.presentationUnits) {
94
94
  const presFormatOverride = OverrideFormat.parseFormatString(presentationUnit);
95
- const formatString = await this.createOverrideFormatString(presFormatOverride);
95
+ const formatString = this.createOverrideFormatString(presFormatOverride);
96
96
  presentationUnits.push(formatString);
97
97
  }
98
98
  ;
99
99
  return presentationUnits;
100
100
  }
101
- async createOverrideFormatString(overrideFormatProps) {
102
- let formatFullName = await this.getQualifiedTypeName(overrideFormatProps.name);
103
- if (overrideFormatProps.precision)
101
+ createOverrideFormatString(overrideFormatProps) {
102
+ let formatFullName = this.getQualifiedTypeName(overrideFormatProps.name);
103
+ if (overrideFormatProps.precision !== undefined)
104
104
  formatFullName += `(${overrideFormatProps.precision.toString()})`;
105
105
  if (undefined === overrideFormatProps.unitAndLabels)
106
106
  return formatFullName;
107
107
  for (const [unit, unitLabel] of overrideFormatProps.unitAndLabels) {
108
- const unitFullName = await this.getQualifiedTypeName(unit);
108
+ const unitFullName = this.getQualifiedTypeName(unit);
109
109
  if (undefined === unitLabel)
110
110
  formatFullName += `[${unitFullName}]`;
111
111
  else
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaItemParsers.js","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaItemParsers.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAIhG,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,cAAc,EAAuB,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAMtD;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IACjB,OAAO,CAAS;IAChB,QAAQ,CAAgB;IAElC;;;;OAIG;IACH,YAAmB,UAAkB,EAAE,OAAsB;QAC3D,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,KAAK,CAAC,IAAwB;QACzC,MAAM,KAAK,GAAG,IAA8B,CAAC;QAC7C,KAAK,CAAC,cAAc,GAAG,mBAAmB,CAAE,IAAY,CAAC,cAAc,CAAC,CAAC;QACzE,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,GAAG,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChJ,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC;YAChE,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAEhC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,oBAAoB,CAAC,WAAmB;QACnD,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YACrE,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,EAAE;gBAClC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAC;YACvC,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,YAAY;YACf,MAAM,IAAI,KAAK,CAAC,oCAAoC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAEvE,OAAO,GAAG,YAAY,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,KAAa;QAC9C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,CAAC;YACrD,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK;gBACxB,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;QACjC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAMD;;;;;GAKG;AACH,MAAM,OAAO,oBAAqB,SAAQ,gBAAgB;IACxD;;;;OAIG;IACa,KAAK,CAAC,KAAK,CAAC,IAAyB;QACnD,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAA+B,CAAC;QAE3E,IAAI,YAAY,CAAC,eAAe,EAAE,CAAC;YACjC,YAAY,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QAC/F,CAAC;QACD,YAAY,CAAC,iBAAiB,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;QAEjF,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,KAA0B;QAC7D,MAAM,iBAAiB,GAAa,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,iBAAiB;YAC1B,OAAO,EAAE,CAAC;QAEZ,KAAK,MAAM,gBAAgB,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACvD,MAAM,kBAAkB,GAAwB,cAAc,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;YACnG,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;YAC/E,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACvC,CAAC;QAAA,CAAC;QAEF,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,0BAA0B,CAAC,mBAAwC;QAE/E,IAAI,cAAc,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC/E,IAAI,mBAAmB,CAAC,SAAS;YAC/B,cAAc,IAAI,IAAI,mBAAmB,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC;QAEpE,IAAI,SAAS,KAAK,mBAAmB,CAAC,aAAa;YACjD,OAAO,cAAc,CAAC;QAExB,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,mBAAmB,CAAC,aAAa,EAAE,CAAC;YAClE,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAE3D,IAAI,SAAS,KAAK,SAAS;gBACzB,cAAc,IAAI,IAAI,YAAY,GAAG,CAAC;;gBAEtC,cAAc,IAAI,IAAI,YAAY,IAAI,SAAS,GAAG,CAAC;QACvD,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;CACF","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 { AnySchemaItemProps, KindOfQuantityProps, SchemaItemProps } from \"../Deserialization/JsonProps\";\nimport { parseSchemaItemType } from \"../ECObjects\";\nimport { OverrideFormat, OverrideFormatProps } from \"../Metadata/OverrideFormat\";\nimport { SchemaItem } from \"../Metadata/SchemaItem\";\nimport { parseCustomAttribute } from \"./SchemaParser\";\n\ntype MutableSchemaItemProps = {\n -readonly [K in keyof SchemaItemProps]: SchemaItemProps[K]\n};\n\n/**\n * Parses SchemaItemProps JSON returned from an ECSql query and returns the correct SchemaItemProps JSON.\n * This is necessary as a small amount information (ie. CustomAttribute data) returned from the iModelDb\n * is in a different format than is required for a SchemaItemProps JSON object.\n * @internal\n */\nexport class SchemaItemParser {\n protected _schema: string;\n protected _context: SchemaContext;\n\n /**\n * Initializes a new SchemaItemParser.\n * @param schemaName The name the Schema containing the SchemaItems.\n * @param context The SchemaContext containing the Schema.\n */\n public constructor(schemaName: string, context: SchemaContext) {\n this._schema = schemaName;\n this._context = context;\n }\n\n /**\n * Parses the given SchemaItemProps JSON returned from an ECSql query.\n * @param data The SchemaItemProps JSON as returned from an iModelDb.\n * @returns The corrected SchemaItemProps Json.\n */\n public async parse(data: AnySchemaItemProps): Promise<SchemaItemProps> {\n const props = data as MutableSchemaItemProps;\n props.schemaItemType = parseSchemaItemType((data as any).schemaItemType);\n props.customAttributes = props.customAttributes ? props.customAttributes.map((attr: any) => { return parseCustomAttribute(attr); }) : undefined;\n if (!props.customAttributes || props.customAttributes.length === 0)\n delete props.customAttributes;\n\n return props;\n }\n\n /**\n * Helper method to resolve the SchemaItem's full name from the given rawTypeName.\n * If the SchemaItem is defined in the same Schema from which it is referenced,\n * the rawTypeName will be SchemaItem name ('PhysicalElement'). Otherwise,\n * the rawTypeName will have the schema alias ('bis:PhysicalElement').\n * @param rawTypeName The name or aliased name of the SchemaItem.\n * @returns The full name of the SchemaItem, ie. 'BisCore.PhysicalElement'\n */\n public async getQualifiedTypeName(rawTypeName: string): Promise<string> {\n const nameParts = rawTypeName.split(\":\");\n if (nameParts.length !== 2) {\n const [schemaName, itemName] = SchemaItem.parseFullName(rawTypeName);\n if (!schemaName || schemaName === '')\n return `${this._schema}.${itemName}`;\n return rawTypeName;\n }\n\n const resolvedName = await this.resolveNameFromAlias(nameParts[0].toLocaleLowerCase());\n if (!resolvedName)\n throw new Error(`No valid schema found for alias '${nameParts[0]}'`);\n\n return `${resolvedName}.${nameParts[1]}`;\n }\n\n private async resolveNameFromAlias(alias: string): Promise<string | undefined> {\n for (const schema of this._context.getKnownSchemas()) {\n if (schema.alias === alias)\n return schema.schemaKey.name;\n }\n return undefined;\n }\n}\n\ntype MutableKindOfQuantityProps = {\n -readonly [K in keyof KindOfQuantityProps]: KindOfQuantityProps[K]\n};\n\n/**\n * Parses KindOfQuantityProps JSON returned from an ECSql query and returns the correct KindOfQuantityProps JSON.\n * This is necessary as a small amount information (ie. unqualified type names of presentationUnits) returned from\n * the iModelDb is in a different format than is required for a KindOfQuantityProps JSON object.\n * @internal\n */\nexport class KindOfQuantityParser extends SchemaItemParser {\n /**\n * Parses the given KindOfQuantityProps JSON returned from an ECSql query.\n * @param data The KindOfQuantityProps JSON as returned from an iModelDb.\n * @returns The corrected KindOfQuantityProps Json.\n */\n public override async parse(data: KindOfQuantityProps): Promise<KindOfQuantityProps> {\n const mutableProps = await super.parse(data) as MutableKindOfQuantityProps;\n\n if (mutableProps.persistenceUnit) {\n mutableProps.persistenceUnit = await this.getQualifiedTypeName(mutableProps.persistenceUnit);\n }\n mutableProps.presentationUnits = await this.parsePresentationUnits(mutableProps);\n\n return mutableProps;\n }\n\n private async parsePresentationUnits(props: KindOfQuantityProps): Promise<string[]> {\n const presentationUnits: string[] = [];\n if (!props.presentationUnits)\n return [];\n\n for (const presentationUnit of props.presentationUnits) {\n const presFormatOverride: OverrideFormatProps = OverrideFormat.parseFormatString(presentationUnit);\n const formatString = await this.createOverrideFormatString(presFormatOverride);\n presentationUnits.push(formatString);\n };\n\n return presentationUnits;\n }\n\n private async createOverrideFormatString(overrideFormatProps: OverrideFormatProps): Promise<string> {\n\n let formatFullName = await this.getQualifiedTypeName(overrideFormatProps.name);\n if (overrideFormatProps.precision)\n formatFullName += `(${overrideFormatProps.precision.toString()})`;\n\n if (undefined === overrideFormatProps.unitAndLabels)\n return formatFullName;\n\n for (const [unit, unitLabel] of overrideFormatProps.unitAndLabels) {\n const unitFullName = await this.getQualifiedTypeName(unit);\n\n if (undefined === unitLabel)\n formatFullName += `[${unitFullName}]`;\n else\n formatFullName += `[${unitFullName}|${unitLabel}]`;\n }\n return formatFullName;\n }\n}"]}
1
+ {"version":3,"file":"SchemaItemParsers.js","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaItemParsers.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAGhG,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAuB,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAMtD;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IACjB,OAAO,CAAS;IAChB,YAAY,CAAuB;IAE7C;;;;OAIG;IACH,YAAmB,UAAkB,EAAE,WAAiC;QACtE,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,KAAK,CAAC,IAAwB;QACzC,MAAM,KAAK,GAAG,IAA8B,CAAC;QAC7C,KAAK,CAAC,cAAc,GAAG,mBAAmB,CAAE,IAAY,CAAC,cAAc,CAAC,CAAC;QACzE,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,GAAG,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChJ,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC;YAChE,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAEhC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;OAOG;IACI,oBAAoB,CAAC,WAAmB;QAC7C,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YACrE,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,EAAE;gBAClC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAC;YACvC,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,YAAY;YACf,MAAM,IAAI,KAAK,CAAC,oCAAoC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAEvE,OAAO,GAAG,YAAY,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3C,CAAC;IAEO,oBAAoB,CAAC,KAAa;QACxC,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC3C,IAAI,UAAU,CAAC,KAAK,KAAK,KAAK;gBAC5B,OAAO,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;QACrC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAMD;;;;;GAKG;AACH,MAAM,OAAO,oBAAqB,SAAQ,gBAAgB;IACxD;;;;OAIG;IACa,KAAK,CAAC,KAAK,CAAC,IAAyB;QACnD,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAA+B,CAAC;QAE3E,IAAI,YAAY,CAAC,eAAe,EAAE,CAAC;YACjC,YAAY,CAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QACzF,CAAC;QACD,YAAY,CAAC,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;QAE3E,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,sBAAsB,CAAC,KAA0B;QACvD,MAAM,iBAAiB,GAAa,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,iBAAiB;YAC1B,OAAO,EAAE,CAAC;QAEZ,KAAK,MAAM,gBAAgB,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACvD,MAAM,kBAAkB,GAAwB,cAAc,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;YACnG,MAAM,YAAY,GAAG,IAAI,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;YACzE,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACvC,CAAC;QAAA,CAAC;QAEF,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEO,0BAA0B,CAAC,mBAAwC;QAEzE,IAAI,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACzE,IAAI,mBAAmB,CAAC,SAAS,KAAK,SAAS;YAC7C,cAAc,IAAI,IAAI,mBAAmB,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC;QAEpE,IAAI,SAAS,KAAK,mBAAmB,CAAC,aAAa;YACjD,OAAO,cAAc,CAAC;QAExB,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,mBAAmB,CAAC,aAAa,EAAE,CAAC;YAClE,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAErD,IAAI,SAAS,KAAK,SAAS;gBACzB,cAAc,IAAI,IAAI,YAAY,GAAG,CAAC;;gBAEtC,cAAc,IAAI,IAAI,YAAY,IAAI,SAAS,GAAG,CAAC;QACvD,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;CACF","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 { AnySchemaItemProps, KindOfQuantityProps, SchemaItemProps } from \"../Deserialization/JsonProps\";\nimport { parseSchemaItemType } from \"../ECObjects\";\nimport { SchemaInfo } from \"../Interfaces\";\nimport { OverrideFormat, OverrideFormatProps } from \"../Metadata/OverrideFormat\";\nimport { SchemaItem } from \"../Metadata/SchemaItem\";\nimport { parseCustomAttribute } from \"./SchemaParser\";\n\ntype MutableSchemaItemProps = {\n -readonly [K in keyof SchemaItemProps]: SchemaItemProps[K]\n};\n\n/**\n * Parses SchemaItemProps JSON returned from an ECSql query and returns the correct SchemaItemProps JSON.\n * This is necessary as a small amount information (ie. CustomAttribute data) returned from the iModelDb\n * is in a different format than is required for a SchemaItemProps JSON object.\n * @internal\n */\nexport class SchemaItemParser {\n protected _schema: string;\n protected _schemaInfos: Iterable<SchemaInfo>;\n\n /**\n * Initializes a new SchemaItemParser.\n * @param schemaName The name the Schema containing the SchemaItems.\n * @param context The SchemaContext containing the Schema.\n */\n public constructor(schemaName: string, schemaInfos: Iterable<SchemaInfo>) {\n this._schema = schemaName;\n this._schemaInfos = schemaInfos;\n }\n\n /**\n * Parses the given SchemaItemProps JSON returned from an ECSql query.\n * @param data The SchemaItemProps JSON as returned from an iModelDb.\n * @returns The corrected SchemaItemProps Json.\n */\n public async parse(data: AnySchemaItemProps): Promise<SchemaItemProps> {\n const props = data as MutableSchemaItemProps;\n props.schemaItemType = parseSchemaItemType((data as any).schemaItemType);\n props.customAttributes = props.customAttributes ? props.customAttributes.map((attr: any) => { return parseCustomAttribute(attr); }) : undefined;\n if (!props.customAttributes || props.customAttributes.length === 0)\n delete props.customAttributes;\n\n return props;\n }\n\n /**\n * Helper method to resolve the SchemaItem's full name from the given rawTypeName.\n * If the SchemaItem is defined in the same Schema from which it is referenced,\n * the rawTypeName will be SchemaItem name ('PhysicalElement'). Otherwise,\n * the rawTypeName will have the schema alias ('bis:PhysicalElement').\n * @param rawTypeName The name or aliased name of the SchemaItem.\n * @returns The full name of the SchemaItem, ie. 'BisCore.PhysicalElement'\n */\n public getQualifiedTypeName(rawTypeName: string): string {\n const nameParts = rawTypeName.split(\":\");\n if (nameParts.length !== 2) {\n const [schemaName, itemName] = SchemaItem.parseFullName(rawTypeName);\n if (!schemaName || schemaName === '')\n return `${this._schema}.${itemName}`;\n return rawTypeName;\n }\n\n const resolvedName = this.resolveNameFromAlias(nameParts[0].toLocaleLowerCase());\n if (!resolvedName)\n throw new Error(`No valid schema found for alias '${nameParts[0]}'`);\n\n return `${resolvedName}.${nameParts[1]}`;\n }\n\n private resolveNameFromAlias(alias: string): string | undefined {\n for (const schemaInfo of this._schemaInfos) {\n if (schemaInfo.alias === alias)\n return schemaInfo.schemaKey.name;\n }\n return undefined;\n }\n}\n\ntype MutableKindOfQuantityProps = {\n -readonly [K in keyof KindOfQuantityProps]: KindOfQuantityProps[K]\n};\n\n/**\n * Parses KindOfQuantityProps JSON returned from an ECSql query and returns the correct KindOfQuantityProps JSON.\n * This is necessary as a small amount information (ie. unqualified type names of presentationUnits) returned from\n * the iModelDb is in a different format than is required for a KindOfQuantityProps JSON object.\n * @internal\n */\nexport class KindOfQuantityParser extends SchemaItemParser {\n /**\n * Parses the given KindOfQuantityProps JSON returned from an ECSql query.\n * @param data The KindOfQuantityProps JSON as returned from an iModelDb.\n * @returns The corrected KindOfQuantityProps Json.\n */\n public override async parse(data: KindOfQuantityProps): Promise<KindOfQuantityProps> {\n const mutableProps = await super.parse(data) as MutableKindOfQuantityProps;\n\n if (mutableProps.persistenceUnit) {\n mutableProps.persistenceUnit = this.getQualifiedTypeName(mutableProps.persistenceUnit);\n }\n mutableProps.presentationUnits = this.parsePresentationUnits(mutableProps);\n\n return mutableProps;\n }\n\n private parsePresentationUnits(props: KindOfQuantityProps): string[] {\n const presentationUnits: string[] = [];\n if (!props.presentationUnits)\n return [];\n\n for (const presentationUnit of props.presentationUnits) {\n const presFormatOverride: OverrideFormatProps = OverrideFormat.parseFormatString(presentationUnit);\n const formatString = this.createOverrideFormatString(presFormatOverride);\n presentationUnits.push(formatString);\n };\n\n return presentationUnits;\n }\n\n private createOverrideFormatString(overrideFormatProps: OverrideFormatProps): string {\n\n let formatFullName = this.getQualifiedTypeName(overrideFormatProps.name);\n if (overrideFormatProps.precision !== undefined)\n formatFullName += `(${overrideFormatProps.precision.toString()})`;\n\n if (undefined === overrideFormatProps.unitAndLabels)\n return formatFullName;\n\n for (const [unit, unitLabel] of overrideFormatProps.unitAndLabels) {\n const unitFullName = this.getQualifiedTypeName(unit);\n\n if (undefined === unitLabel)\n formatFullName += `[${unitFullName}]`;\n else\n formatFullName += `[${unitFullName}|${unitLabel}]`;\n }\n return formatFullName;\n }\n}"]}
@@ -17,11 +17,11 @@ SELECT
17
17
  'schemaItemType', 'KindOfQuantity',
18
18
  'name', [koq].[Name],
19
19
  'label', [koq].[DisplayLabel],
20
- 'description', [koq].[Description]
20
+ 'description', [koq].[Description],
21
+ 'relativeError', [koq].[RelativeError],
22
+ 'persistenceUnit', [koq].[PersistenceUnit]
21
23
  ${singleSchema ? `
22
- ,'relativeError', [koq].[RelativeError],
23
- 'persistenceUnit', [koq].[PersistenceUnit],
24
- 'presentationUnits', (
24
+ ,'presentationUnits', (
25
25
  SELECT json_group_array(js."value")
26
26
  FROM [meta].[KindOfQuantityDef] [koq1], json1.json_each([PresentationUnits]) js
27
27
  WHERE [koq1].[ECInstanceId] = [koq].[ECInstanceId]
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaItemQueries.js","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaItemQueries.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG;;;qFAGqF;AAErF;;;GAGG;AACH,MAAM,cAAc,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;MAQ7C,YAAY,CAAC,CAAC,CAAC;;;;;;;OAOd,CAAA,CAAC,CAAC,EAAE;;;;EAIT,YAAY,CAAC,CAAC,CAAC;;;;CAIhB,CAAC,CAAC,CAAC,EAAE;CACL,CAAC;AAEF;;;GAGG;AACH,MAAM,gBAAgB,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;EAYnD,YAAY,CAAC,CAAC,CAAC;;;;CAIhB,CAAC,CAAC,CAAC,EAAE;CACL,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;EAuB9C,YAAY,CAAC,CAAC,CAAC;;;oCAGmB,CAAC,CAAC,CAAC,EAAE;CACxC,CAAC;AAEF;;;GAGG;AACH,MAAM,IAAI,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;;;;;;EAiBvC,YAAY,CAAC,CAAC,CAAC;;gFAE+D,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;IAUjF,YAAY,CAAC,CAAC,CAAC;oCACiB,CAAC,CAAC,CAAC,EAAE;;;CAGxC,CAAC;AAEF;;;GAGG;AACH,MAAM,YAAY,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;;EAa/C,YAAY,CAAC,CAAC,CAAC;;gFAE+D,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;IAUjF,YAAY,CAAC,CAAC,CAAC;oCACiB,CAAC,CAAC,CAAC,EAAE;;;CAGxC,CAAC;AAEF;;;GAGG;AACH,MAAM,QAAQ,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;;;;EAe3C,YAAY,CAAC,CAAC,CAAC;;gFAE+D,CAAC,CAAC,CAAC,EAAE;;;;;;IAMjF,YAAY,CAAC,CAAC,CAAC;oCACiB,CAAC,CAAC,CAAC,EAAE;;CAExC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;EAW7C,YAAY,CAAC,CAAC,CAAC;;;oCAGmB,CAAC,CAAC,CAAC,EAAE;CACxC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;EAY7C,YAAY,CAAC,CAAC,CAAC;;;oCAGmB,CAAC,CAAC,CAAC,EAAE;CACxC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;MAoBrC,YAAY,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;MAoBf,CAAC,CAAC,CAAC,EAAE;;;;EAIT,YAAY,CAAC,CAAC,CAAC;;;oCAGmB,CAAC,CAAC,CAAC,EAAE;CACxC,CAAA;AAED;;;GAGG;AACH,gEAAgE;AAChE,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,cAAc;IACd,gBAAgB;IAChB,WAAW;IACX,IAAI;IACJ,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,UAAU;IACV,MAAM;CACP,CAAC","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\n/************************************************************************************\n * All SchemaItem queries for each SchemaItemType are defined here. These queries\n * are shared for both 'partial schema' and 'full schema' queries.\n ***********************************************************************************/\n\n/**\n * Query for SchemaItemType KindOfQuantity data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst kindOfQuantity = (singleSchema?: boolean) => `\nSELECT\n [koq].[Schema].[Id] AS [SchemaId],\n json_object (\n 'schemaItemType', 'KindOfQuantity',\n 'name', [koq].[Name],\n 'label', [koq].[DisplayLabel],\n 'description', [koq].[Description]\n ${singleSchema ? `\n ,'relativeError', [koq].[RelativeError],\n 'persistenceUnit', [koq].[PersistenceUnit],\n 'presentationUnits', (\n SELECT json_group_array(js.\"value\")\n FROM [meta].[KindOfQuantityDef] [koq1], json1.json_each([PresentationUnits]) js\n WHERE [koq1].[ECInstanceId] = [koq].[ECInstanceId]\n ) `: \"\"}\n ) as [item]\nFROM\n [meta].[KindOfQuantityDef] [koq]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [koq].[Schema].[Id]\nWHERE [schema].[Name] = :schemaName\n` : \"\"}\n`;\n\n/**\n * Query for SchemaItemType PropertyCategory data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst propertyCategory = (singleSchema?: boolean) => `\nSELECT\n [pc].[Schema].[Id] AS [SchemaId],\n json_object (\n 'schemaItemType', 'PropertyCategory',\n 'name', [pc].[Name],\n 'label', [pc].[DisplayLabel],\n 'description', [pc].[Description],\n 'priority', [pc].[Priority]\n ) as [item]\nFROM\n [meta].[PropertyCategoryDef] [pc]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [pc].[Schema].[Id]\nWHERE [schema].[Name] = :schemaName\n` : \"\"}\n`;\n\n/**\n * Query for SchemaItemType Enumeration data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst enumeration = (singleSchema?: boolean) => `\nSELECT\n [ed].[Schema].[Id] AS [SchemaId],\n json_object (\n 'schemaItemType', 'Enumeration',\n 'name', [ed].[Name],\n 'label', [ed].[DisplayLabel],\n 'description', [ed].[Description],\n 'type', IIF([ed].[Type] = 1281, 'int', IIF([ed].[Type] = 2305, 'string', null)),\n 'isStrict', IIF([ed].[IsStrict] = 1, json('true'), json('false')),\n 'enumerators', (\n SELECT json_group_array(json(json_object(\n 'name', json_extract(js.\"value\", '$.Name'),\n 'value', IFNULL(json_extract(js.\"value\", '$.StringValue'), (json_extract(js.\"value\", '$.IntValue'))),\n 'label', json_extract(js.\"value\", '$.DisplayLabel'),\n 'description', json_extract(js.\"value\", '$.Description')\n )))\n FROM [meta].[ECEnumerationDef] [enumerationDef], json1.json_each([EnumValues]) js\n WHERE [enumerationDef].[ECInstanceId] = [ed].[ECInstanceId]\n )\n ) as [item]\nFROM\n [meta].[ECEnumerationDef] [ed]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [ed].[Schema].[Id]\nWHERE [schema].[Name] = :schemaName` : \"\"}\n`;\n\n/**\n * Query for SchemaItemType Unit data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst unit = (singleSchema?: boolean) => `\nSELECT\n [ud].[Schema].[Id] AS [SchemaId],\n json_object (\n 'schemaItemType', 'Unit',\n 'name', [ud].[Name],\n 'label', [ud].[DisplayLabel],\n 'description', [ud].[Description],\n 'definition', [ud].[Definition],\n 'numerator', IIF([ud].[Numerator] IS NULL, NULL, json(format('%.16g', [ud].[Numerator]))),\n 'denominator', IIF([ud].[Denominator] IS NULL, NULL, json(format('%.16g', [ud].[Denominator]))),\n 'offset', IIF([ud].[Offset] IS NULL, NULL, json(format('%!.15f', [ud].[Offset]))),\n 'unitSystem', CONCAT([uss].[Name],'.', [usd].[Name]),\n 'phenomenon', CONCAT([ps].[Name],'.', [pd].[Name])\n ) as item\nFROM\n [meta].[UnitDef] [ud]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [ud].[Schema].[Id]` : \"\"}\nJOIN [meta].[UnitSystemDef] [usd]\n ON [usd].[ECInstanceId] = [ud].[UnitSystem].[Id]\nJOIN [meta].[ECSchemaDef] [uss]\n ON [uss].[ECInstanceId] = [usd].[Schema].[Id]\nJOIN [meta].[PhenomenonDef] [pd]\n ON [pd].[ECInstanceId] = [ud].[Phenomenon].[Id]\nJOIN [meta].[ECSchemaDef] [ps]\n ON [ps].[ECInstanceId] = [pd].[Schema].[Id]\nWHERE\n ${singleSchema ? `\n [schema].[Name] = :schemaName AND` : \"\"}\n [ud].[IsConstant] = 0 AND\n [ud].[InvertingUnit] IS NULL\n`;\n\n/**\n * Query for SchemaItemType InvertedUnit data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst invertedUnit = (singleSchema?: boolean) => `\nSELECT\n [ud].[Schema].[Id] AS [SchemaId],\n json_object (\n 'schemaItemType', 'InvertedUnit',\n 'name', [ud].[Name],\n 'label', [ud].[DisplayLabel],\n 'description', [ud].[Description],\n 'unitSystem', CONCAT([systemSchema].[Name],'.', [usd].[Name]),\n 'invertsUnit', IIF([iud].[Name] IS NULL, null, CONCAT([ius].[Name],'.', [iud].[Name]))\n ) as [item]\nFROM\n [meta].[UnitDef] [ud]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [ud].[Schema].[Id]` : \"\"}\nJOIN [meta].[UnitSystemDef] [usd]\n ON [usd].[ECInstanceId] = [ud].[UnitSystem].[Id]\nJOIN [meta].[ECSchemaDef] [systemSchema]\n ON [systemSchema].[ECInstanceId] = [usd].[Schema].[Id]\nLEFT JOIN [meta].[UnitDef] [iud]\n ON [iud].[ECInstanceId] = [ud].[InvertingUnit].[Id]\nLEFT JOIN [meta].[ECSchemaDef] [ius]\n ON [ius].[ECInstanceId] = [iud].[Schema].[Id]\nWHERE\n ${singleSchema ? `\n [schema].[Name] = :schemaName AND` : \"\"}\n [ud].[IsConstant] = 0 AND\n [ud].[InvertingUnit] IS NOT NULL\n`;\n\n/**\n * Query for SchemaItemType Constant data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst constant = (singleSchema?: boolean) => `\nSELECT\n [cd].[Schema].[Id] AS [SchemaId],\n json_object(\n 'schemaItemType', 'Constant',\n 'name', [cd].[Name],\n 'label', [cd].[DisplayLabel],\n 'description', [cd].[Description],\n 'definition', [cd].[Definition],\n 'numerator', IIF([cd].[Numerator] IS NULL, NULL, json(format('%.16g', [cd].[Numerator]))),\n 'denominator', IIF([cd].[Denominator] IS NULL, NULL, json(format('%.16g', [cd].[Denominator]))),\n 'phenomenon', CONCAT([phenomSchema].[Name],'.', [phenomDef].[Name])\n ) as item\nFROM\n [meta].[UnitDef] [cd]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [cd].[Schema].[Id]` : \"\"}\nJOIN [meta].[PhenomenonDef] [phenomDef]\n ON [phenomDef].[ECInstanceId] = [cd].[Phenomenon].[Id]\nJOIN [meta].[ECSchemaDef] [phenomSchema]\n ON [phenomSchema].[ECInstanceId] = [phenomDef].[Schema].[Id]\nWHERE\n ${singleSchema ? `\n [schema].[Name] = :schemaName AND` : \"\"}\n [cd].[IsConstant] = 1\n`;\n\n/**\n * Query for SchemaItemType UnitSystem data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst unitSystem = (singleSchema?: boolean) => `\nSELECT\n [us].[Schema].[Id] AS [SchemaId],\n json_object (\n 'schemaItemType', 'UnitSystem',\n 'name', [us].[Name],\n 'label', [us].[DisplayLabel],\n 'description', [us].[Description]\n ) as [item]\nFROM\n [meta].[UnitSystemDef] [us]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [us].[Schema].[Id]\nWHERE [schema].[Name] = :schemaName` : \"\"}\n`;\n\n/**\n * Query for SchemaItemType Phenomenon data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst phenomenon = (singleSchema?: boolean) => `\nSELECT\n [pd].[Schema].[Id] AS [SchemaId],\n json_object(\n 'schemaItemType', 'Phenomenon',\n 'name', [pd].[Name],\n 'label', [pd].[DisplayLabel],\n 'description', [pd].[Description],\n 'definition', [pd].[Definition]\n ) as [item]\nFROM\n [meta].[PhenomenonDef] [pd]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [pd].[Schema].[Id]\nWHERE [schema].[Name] = :schemaName` : \"\"}\n`;\n\n/**\n * Query for SchemaItemType Format data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst format = (singleSchema?: boolean) => `\nSELECT\n [fd].[Schema].[Id] AS [SchemaId],\n json_object(\n 'schemaItemType', 'Format',\n 'name', [fd].[Name],\n 'label', [fd].[DisplayLabel],\n 'description', [fd].[Description],\n 'type', json_extract([fd].[NumericSpec], '$.type'),\n 'precision', json_extract([fd].[NumericSpec], '$.precision'),\n 'roundFactor', json_extract([fd].[NumericSpec], '$.roundFactor'),\n 'minWidth', json_extract([fd].[NumericSpec], '$.minWidth'),\n 'showSignOption', json_extract([fd].[NumericSpec], '$.showSignOption'),\n 'decimalSeparator', json_extract([fd].[NumericSpec], '$.decimalSeparator'),\n 'thousandSeparator', json_extract([fd].[NumericSpec], '$.thousandSeparator'),\n 'uomSeparator', json_extract([fd].[NumericSpec], '$.uomSeparator'),\n 'scientificType', json_extract([fd].[NumericSpec], '$.scientificType'),\n 'stationOffsetSize', json_extract([fd].[NumericSpec], '$.stationOffsetSize'),\n 'stationSeparator', json_extract([fd].[NumericSpec], '$.stationSeparator'),\n 'formatTraits', json_extract([fd].[NumericSpec], '$.formatTraits')\n ${singleSchema ? `\n ,'composite', (\n SELECT\n json_object(\n 'spacer', json_extract([fd1].[CompositeSpec], '$.spacer'),\n 'includeZero', json(IIF(json_extract([fd1].[CompositeSpec], '$.includeZero') = 1, 'true', IIF(json_extract([fd1].[CompositeSpec], '$.includeZero') = 0, 'false', null))),\n 'units', (\n SELECT json_group_array(json(json_object(\n 'name', CONCAT([sd].[Name], '.', [ud].[Name]),\n 'label', [fud].[Label]\n )))\n FROM [meta].[FormatDef] [fd2]\n LEFT JOIN [meta].[FormatCompositeUnitDef] [fud] ON [fud].[Format].[Id] = [fd2].[ECInstanceId]\n LEFT JOIN [meta].[UnitDef] [ud] ON [ud].[ECInstanceId] = [fud].[Unit].[Id]\n INNER JOIN [meta].[ECSchemaDef] [sd] ON [sd].[ECInstanceId] = [ud].[Schema].[Id]\n WHERE [fd2].[ECInstanceId] = [fd1].[ECInstanceId]\n )\n )\n FROM [meta].[FormatDef] [fd1]\n WHERE [fd1].[ECInstanceId]= [fd].[ECInstanceId] AND [fd1].[CompositeSpec] IS NOT NULL\n )` : \"\"}\n) AS item\nFROM\n [meta].[FormatDef] [fd]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [fd].[Schema].[Id]\nWHERE [schema].[Name] = :schemaName` : \"\"}\n`\n\n/**\n * Queries for each SchemaItemType\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const SchemaItemQueries = {\n kindOfQuantity,\n propertyCategory,\n enumeration,\n unit,\n invertedUnit,\n constant,\n unitSystem,\n phenomenon,\n format\n};\n"]}
1
+ {"version":3,"file":"SchemaItemQueries.js","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaItemQueries.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG;;;qFAGqF;AAErF;;;GAGG;AACH,MAAM,cAAc,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;MAU7C,YAAY,CAAC,CAAC,CAAC;;;;;OAKd,CAAA,CAAC,CAAC,EAAE;;;;EAIT,YAAY,CAAC,CAAC,CAAC;;;;CAIhB,CAAC,CAAC,CAAC,EAAE;CACL,CAAC;AAEF;;;GAGG;AACH,MAAM,gBAAgB,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;EAYnD,YAAY,CAAC,CAAC,CAAC;;;;CAIhB,CAAC,CAAC,CAAC,EAAE;CACL,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;EAuB9C,YAAY,CAAC,CAAC,CAAC;;;oCAGmB,CAAC,CAAC,CAAC,EAAE;CACxC,CAAC;AAEF;;;GAGG;AACH,MAAM,IAAI,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;;;;;;EAiBvC,YAAY,CAAC,CAAC,CAAC;;gFAE+D,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;IAUjF,YAAY,CAAC,CAAC,CAAC;oCACiB,CAAC,CAAC,CAAC,EAAE;;;CAGxC,CAAC;AAEF;;;GAGG;AACH,MAAM,YAAY,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;;EAa/C,YAAY,CAAC,CAAC,CAAC;;gFAE+D,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;IAUjF,YAAY,CAAC,CAAC,CAAC;oCACiB,CAAC,CAAC,CAAC,EAAE;;;CAGxC,CAAC;AAEF;;;GAGG;AACH,MAAM,QAAQ,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;;;;EAe3C,YAAY,CAAC,CAAC,CAAC;;gFAE+D,CAAC,CAAC,CAAC,EAAE;;;;;;IAMjF,YAAY,CAAC,CAAC,CAAC;oCACiB,CAAC,CAAC,CAAC,EAAE;;CAExC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;EAW7C,YAAY,CAAC,CAAC,CAAC;;;oCAGmB,CAAC,CAAC,CAAC,EAAE;CACxC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;EAY7C,YAAY,CAAC,CAAC,CAAC;;;oCAGmB,CAAC,CAAC,CAAC,EAAE;CACxC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;MAoBrC,YAAY,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;MAoBf,CAAC,CAAC,CAAC,EAAE;;;;EAIT,YAAY,CAAC,CAAC,CAAC;;;oCAGmB,CAAC,CAAC,CAAC,EAAE;CACxC,CAAA;AAED;;;GAGG;AACH,gEAAgE;AAChE,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,cAAc;IACd,gBAAgB;IAChB,WAAW;IACX,IAAI;IACJ,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,UAAU;IACV,MAAM;CACP,CAAC","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\n/************************************************************************************\n * All SchemaItem queries for each SchemaItemType are defined here. These queries\n * are shared for both 'partial schema' and 'full schema' queries.\n ***********************************************************************************/\n\n/**\n * Query for SchemaItemType KindOfQuantity data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst kindOfQuantity = (singleSchema?: boolean) => `\nSELECT\n [koq].[Schema].[Id] AS [SchemaId],\n json_object (\n 'schemaItemType', 'KindOfQuantity',\n 'name', [koq].[Name],\n 'label', [koq].[DisplayLabel],\n 'description', [koq].[Description],\n 'relativeError', [koq].[RelativeError],\n 'persistenceUnit', [koq].[PersistenceUnit]\n ${singleSchema ? `\n ,'presentationUnits', (\n SELECT json_group_array(js.\"value\")\n FROM [meta].[KindOfQuantityDef] [koq1], json1.json_each([PresentationUnits]) js\n WHERE [koq1].[ECInstanceId] = [koq].[ECInstanceId]\n ) `: \"\"}\n ) as [item]\nFROM\n [meta].[KindOfQuantityDef] [koq]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [koq].[Schema].[Id]\nWHERE [schema].[Name] = :schemaName\n` : \"\"}\n`;\n\n/**\n * Query for SchemaItemType PropertyCategory data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst propertyCategory = (singleSchema?: boolean) => `\nSELECT\n [pc].[Schema].[Id] AS [SchemaId],\n json_object (\n 'schemaItemType', 'PropertyCategory',\n 'name', [pc].[Name],\n 'label', [pc].[DisplayLabel],\n 'description', [pc].[Description],\n 'priority', [pc].[Priority]\n ) as [item]\nFROM\n [meta].[PropertyCategoryDef] [pc]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [pc].[Schema].[Id]\nWHERE [schema].[Name] = :schemaName\n` : \"\"}\n`;\n\n/**\n * Query for SchemaItemType Enumeration data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst enumeration = (singleSchema?: boolean) => `\nSELECT\n [ed].[Schema].[Id] AS [SchemaId],\n json_object (\n 'schemaItemType', 'Enumeration',\n 'name', [ed].[Name],\n 'label', [ed].[DisplayLabel],\n 'description', [ed].[Description],\n 'type', IIF([ed].[Type] = 1281, 'int', IIF([ed].[Type] = 2305, 'string', null)),\n 'isStrict', IIF([ed].[IsStrict] = 1, json('true'), json('false')),\n 'enumerators', (\n SELECT json_group_array(json(json_object(\n 'name', json_extract(js.\"value\", '$.Name'),\n 'value', IFNULL(json_extract(js.\"value\", '$.StringValue'), (json_extract(js.\"value\", '$.IntValue'))),\n 'label', json_extract(js.\"value\", '$.DisplayLabel'),\n 'description', json_extract(js.\"value\", '$.Description')\n )))\n FROM [meta].[ECEnumerationDef] [enumerationDef], json1.json_each([EnumValues]) js\n WHERE [enumerationDef].[ECInstanceId] = [ed].[ECInstanceId]\n )\n ) as [item]\nFROM\n [meta].[ECEnumerationDef] [ed]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [ed].[Schema].[Id]\nWHERE [schema].[Name] = :schemaName` : \"\"}\n`;\n\n/**\n * Query for SchemaItemType Unit data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst unit = (singleSchema?: boolean) => `\nSELECT\n [ud].[Schema].[Id] AS [SchemaId],\n json_object (\n 'schemaItemType', 'Unit',\n 'name', [ud].[Name],\n 'label', [ud].[DisplayLabel],\n 'description', [ud].[Description],\n 'definition', [ud].[Definition],\n 'numerator', IIF([ud].[Numerator] IS NULL, NULL, json(format('%.16g', [ud].[Numerator]))),\n 'denominator', IIF([ud].[Denominator] IS NULL, NULL, json(format('%.16g', [ud].[Denominator]))),\n 'offset', IIF([ud].[Offset] IS NULL, NULL, json(format('%!.15f', [ud].[Offset]))),\n 'unitSystem', CONCAT([uss].[Name],'.', [usd].[Name]),\n 'phenomenon', CONCAT([ps].[Name],'.', [pd].[Name])\n ) as item\nFROM\n [meta].[UnitDef] [ud]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [ud].[Schema].[Id]` : \"\"}\nJOIN [meta].[UnitSystemDef] [usd]\n ON [usd].[ECInstanceId] = [ud].[UnitSystem].[Id]\nJOIN [meta].[ECSchemaDef] [uss]\n ON [uss].[ECInstanceId] = [usd].[Schema].[Id]\nJOIN [meta].[PhenomenonDef] [pd]\n ON [pd].[ECInstanceId] = [ud].[Phenomenon].[Id]\nJOIN [meta].[ECSchemaDef] [ps]\n ON [ps].[ECInstanceId] = [pd].[Schema].[Id]\nWHERE\n ${singleSchema ? `\n [schema].[Name] = :schemaName AND` : \"\"}\n [ud].[IsConstant] = 0 AND\n [ud].[InvertingUnit] IS NULL\n`;\n\n/**\n * Query for SchemaItemType InvertedUnit data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst invertedUnit = (singleSchema?: boolean) => `\nSELECT\n [ud].[Schema].[Id] AS [SchemaId],\n json_object (\n 'schemaItemType', 'InvertedUnit',\n 'name', [ud].[Name],\n 'label', [ud].[DisplayLabel],\n 'description', [ud].[Description],\n 'unitSystem', CONCAT([systemSchema].[Name],'.', [usd].[Name]),\n 'invertsUnit', IIF([iud].[Name] IS NULL, null, CONCAT([ius].[Name],'.', [iud].[Name]))\n ) as [item]\nFROM\n [meta].[UnitDef] [ud]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [ud].[Schema].[Id]` : \"\"}\nJOIN [meta].[UnitSystemDef] [usd]\n ON [usd].[ECInstanceId] = [ud].[UnitSystem].[Id]\nJOIN [meta].[ECSchemaDef] [systemSchema]\n ON [systemSchema].[ECInstanceId] = [usd].[Schema].[Id]\nLEFT JOIN [meta].[UnitDef] [iud]\n ON [iud].[ECInstanceId] = [ud].[InvertingUnit].[Id]\nLEFT JOIN [meta].[ECSchemaDef] [ius]\n ON [ius].[ECInstanceId] = [iud].[Schema].[Id]\nWHERE\n ${singleSchema ? `\n [schema].[Name] = :schemaName AND` : \"\"}\n [ud].[IsConstant] = 0 AND\n [ud].[InvertingUnit] IS NOT NULL\n`;\n\n/**\n * Query for SchemaItemType Constant data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst constant = (singleSchema?: boolean) => `\nSELECT\n [cd].[Schema].[Id] AS [SchemaId],\n json_object(\n 'schemaItemType', 'Constant',\n 'name', [cd].[Name],\n 'label', [cd].[DisplayLabel],\n 'description', [cd].[Description],\n 'definition', [cd].[Definition],\n 'numerator', IIF([cd].[Numerator] IS NULL, NULL, json(format('%.16g', [cd].[Numerator]))),\n 'denominator', IIF([cd].[Denominator] IS NULL, NULL, json(format('%.16g', [cd].[Denominator]))),\n 'phenomenon', CONCAT([phenomSchema].[Name],'.', [phenomDef].[Name])\n ) as item\nFROM\n [meta].[UnitDef] [cd]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [cd].[Schema].[Id]` : \"\"}\nJOIN [meta].[PhenomenonDef] [phenomDef]\n ON [phenomDef].[ECInstanceId] = [cd].[Phenomenon].[Id]\nJOIN [meta].[ECSchemaDef] [phenomSchema]\n ON [phenomSchema].[ECInstanceId] = [phenomDef].[Schema].[Id]\nWHERE\n ${singleSchema ? `\n [schema].[Name] = :schemaName AND` : \"\"}\n [cd].[IsConstant] = 1\n`;\n\n/**\n * Query for SchemaItemType UnitSystem data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst unitSystem = (singleSchema?: boolean) => `\nSELECT\n [us].[Schema].[Id] AS [SchemaId],\n json_object (\n 'schemaItemType', 'UnitSystem',\n 'name', [us].[Name],\n 'label', [us].[DisplayLabel],\n 'description', [us].[Description]\n ) as [item]\nFROM\n [meta].[UnitSystemDef] [us]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [us].[Schema].[Id]\nWHERE [schema].[Name] = :schemaName` : \"\"}\n`;\n\n/**\n * Query for SchemaItemType Phenomenon data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst phenomenon = (singleSchema?: boolean) => `\nSELECT\n [pd].[Schema].[Id] AS [SchemaId],\n json_object(\n 'schemaItemType', 'Phenomenon',\n 'name', [pd].[Name],\n 'label', [pd].[DisplayLabel],\n 'description', [pd].[Description],\n 'definition', [pd].[Definition]\n ) as [item]\nFROM\n [meta].[PhenomenonDef] [pd]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [pd].[Schema].[Id]\nWHERE [schema].[Name] = :schemaName` : \"\"}\n`;\n\n/**\n * Query for SchemaItemType Format data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst format = (singleSchema?: boolean) => `\nSELECT\n [fd].[Schema].[Id] AS [SchemaId],\n json_object(\n 'schemaItemType', 'Format',\n 'name', [fd].[Name],\n 'label', [fd].[DisplayLabel],\n 'description', [fd].[Description],\n 'type', json_extract([fd].[NumericSpec], '$.type'),\n 'precision', json_extract([fd].[NumericSpec], '$.precision'),\n 'roundFactor', json_extract([fd].[NumericSpec], '$.roundFactor'),\n 'minWidth', json_extract([fd].[NumericSpec], '$.minWidth'),\n 'showSignOption', json_extract([fd].[NumericSpec], '$.showSignOption'),\n 'decimalSeparator', json_extract([fd].[NumericSpec], '$.decimalSeparator'),\n 'thousandSeparator', json_extract([fd].[NumericSpec], '$.thousandSeparator'),\n 'uomSeparator', json_extract([fd].[NumericSpec], '$.uomSeparator'),\n 'scientificType', json_extract([fd].[NumericSpec], '$.scientificType'),\n 'stationOffsetSize', json_extract([fd].[NumericSpec], '$.stationOffsetSize'),\n 'stationSeparator', json_extract([fd].[NumericSpec], '$.stationSeparator'),\n 'formatTraits', json_extract([fd].[NumericSpec], '$.formatTraits')\n ${singleSchema ? `\n ,'composite', (\n SELECT\n json_object(\n 'spacer', json_extract([fd1].[CompositeSpec], '$.spacer'),\n 'includeZero', json(IIF(json_extract([fd1].[CompositeSpec], '$.includeZero') = 1, 'true', IIF(json_extract([fd1].[CompositeSpec], '$.includeZero') = 0, 'false', null))),\n 'units', (\n SELECT json_group_array(json(json_object(\n 'name', CONCAT([sd].[Name], '.', [ud].[Name]),\n 'label', [fud].[Label]\n )))\n FROM [meta].[FormatDef] [fd2]\n LEFT JOIN [meta].[FormatCompositeUnitDef] [fud] ON [fud].[Format].[Id] = [fd2].[ECInstanceId]\n LEFT JOIN [meta].[UnitDef] [ud] ON [ud].[ECInstanceId] = [fud].[Unit].[Id]\n INNER JOIN [meta].[ECSchemaDef] [sd] ON [sd].[ECInstanceId] = [ud].[Schema].[Id]\n WHERE [fd2].[ECInstanceId] = [fd1].[ECInstanceId]\n )\n )\n FROM [meta].[FormatDef] [fd1]\n WHERE [fd1].[ECInstanceId]= [fd].[ECInstanceId] AND [fd1].[CompositeSpec] IS NOT NULL\n )` : \"\"}\n) AS item\nFROM\n [meta].[FormatDef] [fd]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [fd].[Schema].[Id]\nWHERE [schema].[Name] = :schemaName` : \"\"}\n`\n\n/**\n * Queries for each SchemaItemType\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const SchemaItemQueries = {\n kindOfQuantity,\n propertyCategory,\n enumeration,\n unit,\n invertedUnit,\n constant,\n unitSystem,\n phenomenon,\n format\n};\n"]}
@@ -1,6 +1,11 @@
1
- import { SchemaContext } from "../Context";
2
1
  import { SchemaItemProps, SchemaProps } from "../Deserialization/JsonProps";
2
+ import { SchemaItemType } from "../ECObjects";
3
+ import { SchemaInfo } from "../Interfaces";
3
4
  import { CustomAttribute } from "../Metadata/CustomAttribute";
5
+ interface NamedSchemaItemProps extends SchemaItemProps {
6
+ name: string;
7
+ schemaItemType: SchemaItemType;
8
+ }
4
9
  /**
5
10
  * Parses SchemaProps JSON returned from an ECSql query and returns the correct SchemaProps JSON object.
6
11
  * This is necessary as a small amount information (ie. CustomAttributes, unqualified type names, etc.)
@@ -16,7 +21,7 @@ export declare class SchemaParser {
16
21
  * @param context The SchemaContext that will contain the schema and it's references.
17
22
  * @returns The corrected SchemaProps JSON.
18
23
  */
19
- static parse(schema: SchemaProps, context: SchemaContext): Promise<SchemaProps>;
24
+ static parse(schema: SchemaProps, schemaInfos: Iterable<SchemaInfo>): Promise<SchemaProps>;
20
25
  /**
21
26
  * Parse the given SchemaItemProps array, as returned from an ECSql query, and returns the corrected SchemaItemProps.
22
27
  * @param schemaItems The SchemaItemProps array returned from an iModelDb.
@@ -24,9 +29,9 @@ export declare class SchemaParser {
24
29
  * @param context The SchemaContext containing the Schema.
25
30
  * @returns The corrected SchemaItemProps.
26
31
  */
27
- static parseSchemaItems(schemaItems: readonly SchemaItemProps[], schemaName: string, context: SchemaContext): Promise<SchemaItemProps[] | undefined>;
32
+ static parseSchemaItems(schemaItems: readonly SchemaItemProps[], schemaName: string, schemaInfos: Iterable<SchemaInfo>): Promise<NamedSchemaItemProps[] | undefined>;
28
33
  private static parseItems;
29
- static parseItem(props: SchemaItemProps, schemaName: string, context: SchemaContext): Promise<SchemaItemProps>;
34
+ static parseItem(props: SchemaItemProps, schemaName: string, schemaInfos: Iterable<SchemaInfo>): Promise<NamedSchemaItemProps>;
30
35
  }
31
36
  /**
32
37
  * Utility method to parse CustomAttribute data retrieved from a ECSql query.
@@ -39,4 +44,5 @@ export declare function parseCustomAttribute(customAttribute: {
39
44
  ecSchema: string;
40
45
  [propName: string]: any;
41
46
  }): CustomAttribute;
47
+ export {};
42
48
  //# sourceMappingURL=SchemaParser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaParser.d.ts","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaParser.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE5E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAY9D;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB;;;;;;OAMG;WACiB,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IAiB5F;;;;;;OAMG;WACiB,gBAAgB,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,EAAE,GAAG,SAAS,CAAC;mBAU5I,UAAU;WAWX,SAAS,CAAC,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC;CAyB5H;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,eAAe,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAA,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC;CAAE,GAAG,eAAe,CAKrI"}
1
+ {"version":3,"file":"SchemaParser.d.ts","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaParser.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAuB,cAAc,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAY9D,UAAU,oBAAqB,SAAQ,eAAe;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,cAAc,CAAC;CAChC;AAED;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB;;;;;;OAMG;WACiB,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAiBvG;;;;;;OAMG;WACiB,gBAAgB,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,oBAAoB,EAAE,GAAG,SAAS,CAAC;mBAU5J,UAAU;WAWX,SAAS,CAAC,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAyB5I;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,eAAe,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAA,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC;CAAE,GAAG,eAAe,CAKrI"}
@@ -24,14 +24,14 @@ export class SchemaParser {
24
24
  * @param context The SchemaContext that will contain the schema and it's references.
25
25
  * @returns The corrected SchemaProps JSON.
26
26
  */
27
- static async parse(schema, context) {
27
+ static async parse(schema, schemaInfos) {
28
28
  const props = schema;
29
29
  props.$schema = ECSchemaNamespaceUris.SCHEMAURL3_2_JSON,
30
30
  props.customAttributes = props.customAttributes ? props.customAttributes.map((attr) => { return parseCustomAttribute(attr); }) : undefined;
31
31
  props.label = props.label === null ? undefined : props.label;
32
32
  props.description = props.description === null ? undefined : props.description;
33
33
  if (props.items) {
34
- props.items = await this.parseItems(props.items, props.name, context);
34
+ props.items = await this.parseItems(props.items, props.name, schemaInfos);
35
35
  }
36
36
  if (!props.customAttributes || props.customAttributes.length === 0)
37
37
  delete props.customAttributes;
@@ -45,47 +45,47 @@ export class SchemaParser {
45
45
  * @param context The SchemaContext containing the Schema.
46
46
  * @returns The corrected SchemaItemProps.
47
47
  */
48
- static async parseSchemaItems(schemaItems, schemaName, context) {
48
+ static async parseSchemaItems(schemaItems, schemaName, schemaInfos) {
49
49
  const items = [];
50
50
  for (const item of schemaItems) {
51
- const props = await this.parseItem(item, schemaName, context);
51
+ const props = await this.parseItem(item, schemaName, schemaInfos);
52
52
  const cleaned = JSON.parse(JSON.stringify(props, clean));
53
53
  items.push(cleaned);
54
54
  }
55
55
  return items.length > 0 ? items : undefined;
56
56
  }
57
- static async parseItems(schemaItemProps, schemaName, context) {
57
+ static async parseItems(schemaItemProps, schemaName, schemaInfos) {
58
58
  const items = {};
59
59
  for (const itemProps of schemaItemProps) {
60
- const props = await this.parseItem(itemProps, schemaName, context);
60
+ const props = await this.parseItem(itemProps, schemaName, schemaInfos);
61
61
  items[props.name] = props;
62
62
  delete props.name;
63
63
  }
64
64
  return Object.keys(items).length > 0 ? items : undefined;
65
65
  }
66
- static async parseItem(props, schemaName, context) {
66
+ static async parseItem(props, schemaName, schemaInfos) {
67
67
  const schemaItem = "string" === typeof (props) ? JSON.parse(props) : props;
68
68
  const type = parseSchemaItemType(schemaItem.schemaItemType);
69
69
  switch (type) {
70
70
  case SchemaItemType.KindOfQuantity:
71
- const koqParser = new KindOfQuantityParser(schemaName, context);
72
- return koqParser.parse(schemaItem);
71
+ const koqParser = new KindOfQuantityParser(schemaName, schemaInfos);
72
+ return await koqParser.parse(schemaItem);
73
73
  case SchemaItemType.EntityClass:
74
74
  case SchemaItemType.StructClass:
75
- const classParser = new ClassParser(schemaName, context);
76
- return classParser.parse(schemaItem);
75
+ const classParser = new ClassParser(schemaName, schemaInfos);
76
+ return await classParser.parse(schemaItem);
77
77
  case SchemaItemType.RelationshipClass:
78
- const relationshipParser = new RelationshipClassParser(schemaName, context);
79
- return relationshipParser.parse(schemaItem);
78
+ const relationshipParser = new RelationshipClassParser(schemaName, schemaInfos);
79
+ return await relationshipParser.parse(schemaItem);
80
80
  case SchemaItemType.Mixin:
81
- const mixinParser = new MixinParser(schemaName, context);
82
- return mixinParser.parse(schemaItem);
81
+ const mixinParser = new MixinParser(schemaName, schemaInfos);
82
+ return await mixinParser.parse(schemaItem);
83
83
  case SchemaItemType.CustomAttributeClass:
84
- const caParser = new CustomAttributeClassParser(schemaName, context);
85
- return caParser.parse(schemaItem);
84
+ const caParser = new CustomAttributeClassParser(schemaName, schemaInfos);
85
+ return await caParser.parse(schemaItem);
86
86
  default:
87
- const itemParser = new SchemaItemParser(schemaName, context);
88
- return itemParser.parse(schemaItem);
87
+ const itemParser = new SchemaItemParser(schemaName, schemaInfos);
88
+ return await itemParser.parse(schemaItem);
89
89
  }
90
90
  }
91
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaParser.js","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaParser.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 { ECSchemaNamespaceUris } from \"../Constants\";\nimport { SchemaContext } from \"../Context\";\nimport { SchemaItemProps, SchemaProps } from \"../Deserialization/JsonProps\";\nimport { parseSchemaItemType, SchemaItemType } from \"../ECObjects\";\nimport { CustomAttribute } from \"../Metadata/CustomAttribute\";\nimport { ClassParser, CustomAttributeClassParser, MixinParser, RelationshipClassParser } from \"./ClassParsers\";\nimport { KindOfQuantityParser, SchemaItemParser } from \"./SchemaItemParsers\";\n\nfunction clean(_key: string, value: any) {\n return value === null ? undefined : value;\n}\n\ntype MutableSchemaProps = {\n -readonly [K in keyof SchemaProps]: SchemaProps[K]\n};\n\n/**\n * Parses SchemaProps JSON returned from an ECSql query and returns the correct SchemaProps JSON object.\n * This is necessary as a small amount information (ie. CustomAttributes, unqualified type names, etc.)\n * returned from the iModelDb is in a different format than is required for a given Schema or\n * SchemaItemProps JSON object.\n * @internal\n */\nexport class SchemaParser {\n /**\n * Corrects the SchemaProps JSON returned from the query to a proper SchemaProps\n * JSON object.\n * @param schema The SchemaProps JSON object to parse.\n * @param context The SchemaContext that will contain the schema and it's references.\n * @returns The corrected SchemaProps JSON.\n */\n public static async parse(schema: SchemaProps, context: SchemaContext): Promise<SchemaProps> {\n const props = schema as MutableSchemaProps;\n props.$schema = ECSchemaNamespaceUris.SCHEMAURL3_2_JSON,\n props.customAttributes = props.customAttributes ? props.customAttributes.map((attr: any) => { return parseCustomAttribute(attr); }) : undefined;\n props.label = props.label === null ? undefined : props.label;\n props.description = props.description === null ? undefined : props.description;\n if (props.items) {\n props.items = await this.parseItems(props.items as any, props.name, context);\n }\n\n if (!props.customAttributes || props.customAttributes.length === 0)\n delete props.customAttributes;\n\n const cleaned = JSON.parse(JSON.stringify(props, clean)) as SchemaProps;\n return cleaned;\n }\n\n /**\n * Parse the given SchemaItemProps array, as returned from an ECSql query, and returns the corrected SchemaItemProps.\n * @param schemaItems The SchemaItemProps array returned from an iModelDb.\n * @param schemaName The name of the Schema to which the SchemaItemProps belong.\n * @param context The SchemaContext containing the Schema.\n * @returns The corrected SchemaItemProps.\n */\n public static async parseSchemaItems(schemaItems: readonly SchemaItemProps[], schemaName: string, context: SchemaContext): Promise<SchemaItemProps[] | undefined> {\n const items: SchemaItemProps[] = [];\n for (const item of schemaItems) {\n const props = await this.parseItem(item, schemaName, context);\n const cleaned = JSON.parse(JSON.stringify(props, clean));\n items.push(cleaned);\n }\n return items.length > 0 ? items : undefined;\n }\n\n private static async parseItems(schemaItemProps: readonly SchemaItemProps[], schemaName: string, context: SchemaContext): Promise<{ [name: string]: SchemaItemProps } | undefined> {\n const items: { [name: string]: SchemaItemProps } = {};\n for (const itemProps of schemaItemProps) {\n const props = await this.parseItem(itemProps, schemaName, context);\n items[props.name!] = props;\n delete (props as any).name;\n }\n\n return Object.keys(items).length > 0 ? items : undefined;\n }\n\n public static async parseItem(props: SchemaItemProps, schemaName: string, context: SchemaContext): Promise<SchemaItemProps> {\n const schemaItem = \"string\" === typeof (props) ? JSON.parse(props) : props;\n const type = parseSchemaItemType(schemaItem.schemaItemType);\n switch (type) {\n case SchemaItemType.KindOfQuantity:\n const koqParser = new KindOfQuantityParser(schemaName, context);\n return koqParser.parse(schemaItem);\n case SchemaItemType.EntityClass:\n case SchemaItemType.StructClass:\n const classParser = new ClassParser(schemaName, context);\n return classParser.parse(schemaItem);\n case SchemaItemType.RelationshipClass:\n const relationshipParser = new RelationshipClassParser(schemaName, context);\n return relationshipParser.parse(schemaItem);\n case SchemaItemType.Mixin:\n const mixinParser = new MixinParser(schemaName, context);\n return mixinParser.parse(schemaItem);\n case SchemaItemType.CustomAttributeClass:\n const caParser = new CustomAttributeClassParser(schemaName, context);\n return caParser.parse(schemaItem);\n default:\n const itemParser = new SchemaItemParser(schemaName, context);\n return itemParser.parse(schemaItem);\n }\n }\n}\n\n/**\n * Utility method to parse CustomAttribute data retrieved from a ECSql query.\n * @param customAttribute CustomAttribute data as retrieved from an iModel query.\n * @returns The CustomAttribute instance.\n * @internal\n */\nexport function parseCustomAttribute(customAttribute: { ecClass: string; ecSchema: string;[propName: string]: any; }): CustomAttribute {\n return {\n ...customAttribute[customAttribute.ecClass],\n className: `${(customAttribute.ecSchema).split('.')[0]}.${customAttribute.ecClass}`,\n }\n}"]}
1
+ {"version":3,"file":"SchemaParser.js","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaParser.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 { ECSchemaNamespaceUris } from \"../Constants\";\nimport { SchemaItemProps, SchemaProps } from \"../Deserialization/JsonProps\";\nimport { parseSchemaItemType, SchemaItemType } from \"../ECObjects\";\nimport { SchemaInfo } from \"../Interfaces\";\nimport { CustomAttribute } from \"../Metadata/CustomAttribute\";\nimport { ClassParser, CustomAttributeClassParser, MixinParser, RelationshipClassParser } from \"./ClassParsers\";\nimport { KindOfQuantityParser, SchemaItemParser } from \"./SchemaItemParsers\";\n\nfunction clean(_key: string, value: any) {\n return value === null ? undefined : value;\n}\n\ntype MutableSchemaProps = {\n -readonly [K in keyof SchemaProps]: SchemaProps[K]\n};\n\ninterface NamedSchemaItemProps extends SchemaItemProps {\n name: string;\n schemaItemType: SchemaItemType;\n}\n\n/**\n * Parses SchemaProps JSON returned from an ECSql query and returns the correct SchemaProps JSON object.\n * This is necessary as a small amount information (ie. CustomAttributes, unqualified type names, etc.)\n * returned from the iModelDb is in a different format than is required for a given Schema or\n * SchemaItemProps JSON object.\n * @internal\n */\nexport class SchemaParser {\n /**\n * Corrects the SchemaProps JSON returned from the query to a proper SchemaProps\n * JSON object.\n * @param schema The SchemaProps JSON object to parse.\n * @param context The SchemaContext that will contain the schema and it's references.\n * @returns The corrected SchemaProps JSON.\n */\n public static async parse(schema: SchemaProps, schemaInfos: Iterable<SchemaInfo>): Promise<SchemaProps> {\n const props = schema as MutableSchemaProps;\n props.$schema = ECSchemaNamespaceUris.SCHEMAURL3_2_JSON,\n props.customAttributes = props.customAttributes ? props.customAttributes.map((attr: any) => { return parseCustomAttribute(attr); }) : undefined;\n props.label = props.label === null ? undefined : props.label;\n props.description = props.description === null ? undefined : props.description;\n if (props.items) {\n props.items = await this.parseItems(props.items as any, props.name, schemaInfos);\n }\n\n if (!props.customAttributes || props.customAttributes.length === 0)\n delete props.customAttributes;\n\n const cleaned = JSON.parse(JSON.stringify(props, clean)) as SchemaProps;\n return cleaned;\n }\n\n /**\n * Parse the given SchemaItemProps array, as returned from an ECSql query, and returns the corrected SchemaItemProps.\n * @param schemaItems The SchemaItemProps array returned from an iModelDb.\n * @param schemaName The name of the Schema to which the SchemaItemProps belong.\n * @param context The SchemaContext containing the Schema.\n * @returns The corrected SchemaItemProps.\n */\n public static async parseSchemaItems(schemaItems: readonly SchemaItemProps[], schemaName: string, schemaInfos: Iterable<SchemaInfo>): Promise<NamedSchemaItemProps[] | undefined> {\n const items: NamedSchemaItemProps[] = [];\n for (const item of schemaItems) {\n const props = await this.parseItem(item, schemaName, schemaInfos);\n const cleaned = JSON.parse(JSON.stringify(props, clean));\n items.push(cleaned);\n }\n return items.length > 0 ? items : undefined;\n }\n\n private static async parseItems(schemaItemProps: readonly SchemaItemProps[], schemaName: string, schemaInfos: Iterable<SchemaInfo>): Promise<{ [name: string]: SchemaItemProps } | undefined> {\n const items: { [name: string]: SchemaItemProps } = {};\n for (const itemProps of schemaItemProps) {\n const props = await this.parseItem(itemProps, schemaName, schemaInfos);\n items[props.name] = props;\n delete (props as any).name;\n }\n\n return Object.keys(items).length > 0 ? items : undefined;\n }\n\n public static async parseItem(props: SchemaItemProps, schemaName: string, schemaInfos: Iterable<SchemaInfo>): Promise<NamedSchemaItemProps> {\n const schemaItem = \"string\" === typeof (props) ? JSON.parse(props) : props;\n const type = parseSchemaItemType(schemaItem.schemaItemType);\n switch (type) {\n case SchemaItemType.KindOfQuantity:\n const koqParser = new KindOfQuantityParser(schemaName, schemaInfos);\n return await koqParser.parse(schemaItem) as NamedSchemaItemProps;\n case SchemaItemType.EntityClass:\n case SchemaItemType.StructClass:\n const classParser = new ClassParser(schemaName, schemaInfos);\n return await classParser.parse(schemaItem) as NamedSchemaItemProps;\n case SchemaItemType.RelationshipClass:\n const relationshipParser = new RelationshipClassParser(schemaName, schemaInfos);\n return await relationshipParser.parse(schemaItem) as NamedSchemaItemProps;\n case SchemaItemType.Mixin:\n const mixinParser = new MixinParser(schemaName, schemaInfos);\n return await mixinParser.parse(schemaItem) as NamedSchemaItemProps;\n case SchemaItemType.CustomAttributeClass:\n const caParser = new CustomAttributeClassParser(schemaName, schemaInfos);\n return await caParser.parse(schemaItem) as NamedSchemaItemProps;\n default:\n const itemParser = new SchemaItemParser(schemaName, schemaInfos);\n return await itemParser.parse(schemaItem) as NamedSchemaItemProps;\n }\n }\n}\n\n/**\n * Utility method to parse CustomAttribute data retrieved from a ECSql query.\n * @param customAttribute CustomAttribute data as retrieved from an iModel query.\n * @returns The CustomAttribute instance.\n * @internal\n */\nexport function parseCustomAttribute(customAttribute: { ecClass: string; ecSchema: string;[propName: string]: any; }): CustomAttribute {\n return {\n ...customAttribute[customAttribute.ecClass],\n className: `${(customAttribute.ecSchema).split('.')[0]}.${customAttribute.ecClass}`,\n }\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaStubQueries.d.ts","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaStubQueries.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,QAAQ,UAAW,MAAM,WASrC,CAAC;AAEF,eAAO,MAAM,QAAQ,UAAW,MAAM,WASrC,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,MAAM,WAQ9C,CAAC;AAwUF;;;GAGG;AACH,eAAO,MAAM,YAAY;;;CAGxB,CAAC"}
1
+ {"version":3,"file":"SchemaStubQueries.d.ts","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaStubQueries.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,QAAQ,UAAW,MAAM,WASrC,CAAC;AAEF,eAAO,MAAM,QAAQ,UAAW,MAAM,WASrC,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,MAAM,WAQ9C,CAAC;AAuTF;;;GAGG;AACH,eAAO,MAAM,YAAY;;;CAGxB,CAAC"}
@@ -301,34 +301,15 @@ SchemaItems AS (
301
301
  `;
302
302
  const schemaStubQuery = `
303
303
  WITH
304
- ${withSchemaReferences},
305
304
  ${withAppliesTo},
306
305
  ${withSchemaItems}
307
306
  SELECT
308
- [Name] as [name],
309
- CONCAT('',[VersionMajor],'.',[VersionWrite],'.',[VersionMinor]) AS [version],
310
- [Alias] as [alias],
311
- [DisplayLabel] as [displayLabel],
312
- [Description] as [description],
313
- (
314
- SELECT
315
- json_group_array([schemaReferences].[fullName])
316
- FROM
317
- [SchemaReferences] [schemaReferences]
318
- WHERE
319
- [schemaReferences].[SchemaId] = [schemaDef].[ECInstanceId]
320
- ) AS [references],
321
- (
322
- SELECT
323
- json_group_array(json([items].[item]))
324
- FROM
325
- [SchemaItems] [items]
326
- WHERE
327
- [items].[SchemaId] = [schemaDef].[ECInstanceId]
328
- ) AS [items]
307
+ [items].[item]
329
308
  FROM
330
- [meta].[ECSchemaDef] [schemaDef]
331
- WHERE [Name] = :schemaName
309
+ [SchemaItems] [items]
310
+ JOIN [meta].[ECSchemaDef] [schemaDef]
311
+ ON [schemaDef].[ECInstanceId] = [items].[SchemaId]
312
+ WHERE [schemaDef].[Name] = :schemaName
332
313
  `;
333
314
  const schemaInfoQuery = `
334
315
  WITH
@@ -337,6 +318,8 @@ const schemaInfoQuery = `
337
318
  [Name] as [name],
338
319
  CONCAT('',[VersionMajor],'.',[VersionWrite],'.',[VersionMinor]) AS [version],
339
320
  [Alias] as [alias],
321
+ [DisplayLabel] as [label],
322
+ [Description] as [description],
340
323
  (
341
324
  SELECT
342
325
  json_group_array([schemaReferences].[fullName])
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaStubQueries.js","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaStubQueries.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE;IACxC,OAAO;;cAEK,KAAK;cACL,KAAK;cACL,KAAK;;;GAGhB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE;IACxC,OAAO;;cAEK,KAAK;cACL,KAAK;cACL,KAAK;;;GAGhB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAE,EAAE;IACjD,OAAO;;cAEK,KAAK;cACL,KAAK;;;GAGhB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG;;;;;;;;;;;;;;CAcrB,CAAC;AAEF,MAAM,oBAAoB,GAAG;;;;;;;;;;CAU5B,CAAC;AAEF,MAAM,oBAAoB,GAAG;;;;;;oBAMT,QAAQ,CAAC,OAAO,CAAC;;;;;;;;;;0BAUX,QAAQ,CAAC,WAAW,CAAC;;;;;;;;;;;;;;CAc9C,CAAC;AAEF,MAAM,WAAW,GAAG;;;;;;oBAMA,QAAQ,CAAC,OAAO,CAAC;;;;;;;;;0BASX,QAAQ,CAAC,WAAW,CAAC;;;;;;;;;;;;;CAa9C,CAAC;AAEF,MAAM,iBAAiB,GAAG;;;;;;oBAMN,QAAQ,CAAC,OAAO,CAAC;;;oBAGjB,QAAQ,CAAC,OAAO,CAAC;6BACR,iBAAiB,CAAC,OAAO,CAAC;;;;;;;0BAO7B,QAAQ,CAAC,WAAW,CAAC;;;0BAGrB,QAAQ,CAAC,WAAW,CAAC;mCACZ,iBAAiB,CAAC,WAAW,CAAC;;;;;;;;;;;CAWhE,CAAC;AAEF,MAAM,WAAW,GAAG;;;;;;oBAMA,QAAQ,CAAC,OAAO,CAAC;;;;;;;;;0BASX,QAAQ,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;0BAkBrB,QAAQ,CAAC,WAAW,CAAC;;;;;;;;;;;;;;gCAcf,QAAQ,CAAC,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BzD,CAAC;AAEF,MAAM,UAAU,GAAG;;;;;;oBAMC,QAAQ,CAAC,OAAO,CAAC;;;;;;;;;;;;;;0BAcX,QAAQ,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;CAmB9C,CAAC;AAEF,MAAM,eAAe,GAAG;;IAEpB,oBAAoB;;IAEpB,WAAW;;IAEX,iBAAiB;;IAEjB,WAAW;;IAEX,UAAU;;IAEV,iBAAiB,CAAC,WAAW,EAAE;;IAE/B,iBAAiB,CAAC,cAAc,EAAE;;IAElC,iBAAiB,CAAC,gBAAgB,EAAE;;IAEpC,iBAAiB,CAAC,IAAI,EAAE;;IAExB,iBAAiB,CAAC,YAAY,EAAE;;IAEhC,iBAAiB,CAAC,QAAQ,EAAE;;IAE5B,iBAAiB,CAAC,UAAU,EAAE;;IAE9B,iBAAiB,CAAC,UAAU,EAAE;;IAE9B,iBAAiB,CAAC,MAAM,EAAE;;CAE7B,CAAC;AAEF,MAAM,eAAe,GAAG;;MAElB,oBAAoB;MACpB,aAAa;MACb,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BpB,CAAC;AAEF,MAAM,eAAe,GAAG;;MAElB,oBAAoB;;;;;;;;;;;;;;;CAezB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,eAAe;IACf,eAAe;CAChB,CAAC","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 { SchemaItemQueries } from \"./SchemaItemQueries\";\n\nexport const modifier = (alias: string) => {\n return `\n CASE\n WHEN [${alias}].[modifier] = 0 THEN 'None'\n WHEN [${alias}].[modifier] = 1 THEN 'Abstract'\n WHEN [${alias}].[modifier] = 2 THEN 'Sealed'\n ELSE NULL\n END\n `;\n};\n\nexport const strength = (alias: string) => {\n return `\n CASE\n WHEN [${alias}].[RelationshipStrength] = 0 THEN 'Referencing'\n WHEN [${alias}].[RelationshipStrength] = 1 THEN 'Holding'\n WHEN [${alias}].[RelationshipStrength] = 2 THEN 'Embedding'\n ELSE NULL\n END\n `;\n};\n\nexport const strengthDirection = (alias: string) => {\n return `\n CASE\n WHEN [${alias}].[RelationshipStrengthDirection] = 1 THEN 'Forward'\n WHEN [${alias}].[RelationshipStrengthDirection] = 2 THEN 'Backward'\n ELSE NULL\n END\n `;\n};\n\nconst withAppliesTo = `\n AppliesToCTE AS (\n SELECT\n [mixinAppliesTo].[ECInstanceId] AS [AppliesToId],\n [appliesToSchema].[name] as [AppliesToSchema],\n json_extract(XmlCAToJson([ca].[Class].[Id], [ca].[Instance]), '$.IsMixin.AppliesToEntityClass') AS [AppliesTo]\n FROM [meta].[CustomAttribute] [ca]\n JOIN [meta].[ECClassDef] [mixinAppliesTo]\n ON [mixinAppliesTo].[ECInstanceId] = [ca].[ContainerId]\n JOIN [meta].[ECSchemaDef] [appliesToSchema]\n ON [appliesToSchema].[ECInstanceId] = [mixinAppliesTo].[Schema].[Id]\n WHERE [ca].[ContainerType] = 30\n AND json_extract(XmlCAToJson([ca].[Class].[Id], [ca].[Instance]), '$.ecClass') = 'IsMixin'\n )\n`;\n\nconst withSchemaReferences = `\n SchemaReferences AS (\n SELECT\n [ref].[SourceECInstanceId] AS [SchemaId],\n CONCAT([Name],'.',[VersionMajor],'.',[VersionWrite],'.',[VersionMinor]) AS [fullName]\n FROM\n [meta].[ECSchemaDef] AS [refSchema]\n INNER JOIN [meta].[SchemaHasSchemaReferences] [ref]\n ON [ref].[TargetECInstanceId] = [refSchema].[ECInstanceId]\n )\n`;\n\nconst customAttributeQuery = `\n SELECT\n [Schema].[Id] AS [SchemaId],\n json_object(\n 'name', [class].[Name],\n 'schemaItemType', 'CustomAttributeClass',\n 'modifier', ${modifier(\"class\")},\n 'label', [class].[DisplayLabel],\n 'description', [class].[Description],\n 'appliesTo', [class].[CustomAttributeContainerType],\n 'baseClasses', (\n SELECT\n json_group_array(json(json_object(\n 'schema', ec_classname([baseClass].[ECInstanceId], 's'),\n 'name', [baseClass].[Name],\n 'schemaItemType', 'CustomAttributeClass',\n 'modifier', ${modifier(\"baseClass\")},\n 'label', [baseClass].[DisplayLabel],\n 'description', [baseClass].[Description],\n 'appliesTo', [baseClass].[CustomAttributeContainerType]\n )))\n FROM\n [meta].[ECClassDef] [baseClass]\n INNER JOIN [meta].[ClassHasAllBaseClasses] [baseClassMap]\n ON [baseClassMap].[TargetECInstanceId] = [baseclass].[ECInstanceId]\n WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]\n )\n ) AS [item]\n FROM [meta].[ECClassDef] [class]\n WHERE [class].[Type] = 3\n`;\n\nconst structQuery = `\n SELECT\n [Schema].[Id] AS [SchemaId],\n json_object(\n 'name', [class].[Name],\n 'schemaItemType', 'StructClass',\n 'modifier', ${modifier(\"class\")},\n 'label', [class].[DisplayLabel],\n 'description', [class].[Description],\n 'baseClasses', (\n SELECT\n json_group_array(json(json_object(\n 'schema', ec_classname([baseClass].[ECInstanceId], 's'),\n 'name', [baseClass].[Name],\n 'schemaItemType', 'StructClass',\n 'modifier', ${modifier(\"baseClass\")},\n 'label', [baseClass].[DisplayLabel],\n 'description', [baseClass].[Description]\n )))\n FROM\n [meta].[ECClassDef] [baseClass]\n INNER JOIN [meta].[ClassHasAllBaseClasses] [baseClassMap]\n ON [baseClassMap].[TargetECInstanceId] = [baseclass].[ECInstanceId]\n WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]\n )\n ) AS [item]\n FROM [meta].[ECClassDef] [class]\n WHERE [class].[Type] = 2\n`;\n\nconst relationshipQuery = `\n SELECT\n [Schema].[Id] AS [SchemaId],\n json_object(\n 'name', [class].[Name],\n 'schemaItemType', 'RelationshipClass',\n 'modifier', ${modifier(\"class\")},\n 'label', [class].[DisplayLabel],\n 'description', [class].[Description],\n 'strength', ${strength(\"class\")},\n 'strengthDirection', ${strengthDirection(\"class\")},\n 'baseClasses', (\n SELECT\n json_group_array(json(json_object(\n 'schema', ec_classname([baseClass].[ECInstanceId], 's'),\n 'name', [baseClass].[Name],\n 'schemaItemType', 'RelationshipClass',\n 'modifier', ${modifier(\"baseClass\")},\n 'label', [baseClass].[DisplayLabel],\n 'description', [baseClass].[Description],\n 'strength', ${strength(\"baseClass\")},\n 'strengthDirection', ${strengthDirection(\"baseClass\")}\n )))\n FROM\n [meta].[ECClassDef] [baseClass]\n INNER JOIN [meta].[ClassHasAllBaseClasses] [baseClassMap]\n ON [baseClassMap].[TargetECInstanceId] = [baseclass].[ECInstanceId]\n WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]\n )\n ) AS [item]\n FROM [meta].[ECClassDef] [class]\n WHERE [class].[Type] = 1\n`;\n\nconst entityQuery = `\n SELECT\n [Schema].[Id] AS [SchemaId],\n json_object(\n 'name', [class].[Name],\n 'schemaItemType', 'EntityClass',\n 'modifier', ${modifier(\"class\")},\n 'label', [class].[DisplayLabel],\n 'description', [class].[Description],\n 'baseClasses', (\n SELECT\n json_group_array(json(json_object(\n 'schema', ec_classname([baseClass].[ECInstanceId], 's'),\n 'name', [baseClass].[Name],\n 'schemaItemType', 'EntityClass',\n 'modifier', ${modifier(\"baseClass\")},\n 'label', [baseClass].[DisplayLabel],\n 'description', [baseClass].[Description]\n )))\n FROM\n [meta].[ECClassDef] [baseClass]\n INNER JOIN [meta].[ClassHasAllBaseClasses] [baseClassMap]\n ON [baseClassMap].[TargetECInstanceId] = [baseclass].[ECInstanceId]\n WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]\n AND NOT EXISTS(SELECT 1 FROM [meta].[ClassCustomAttribute] [ca] WHERE [baseClass].[ECInstanceId] = [ca].[Class].[Id]\n AND [ca].[CustomAttributeClass].[Id] Is ([CoreCA].[IsMixin]))\n ),\n 'mixins', (\n SELECT\n json_group_array(json(json_object(\n 'schema', ec_classname([baseClass].[ECInstanceId], 's'),\n 'name', [baseClass].[Name],\n 'schemaItemType', 'Mixin',\n 'modifier', ${modifier(\"baseClass\")},\n 'label', [baseClass].[DisplayLabel],\n 'description', [baseClass].[Description],\n 'appliesTo', (\n SELECT IIF(instr([atCTE].[AppliesTo], ':') > 1, ec_classname(ec_classId([atCTE].[AppliesTo]), 's.c'), CONCAT([atCTE].[AppliesToSchema], '.', [atCTE].[AppliesTo]))\n FROM [AppliesToCTE] [atCTE]\n WHERE [atCTE].[AppliesToId] = [baseClass].[ECInstanceId]\n ),\n 'baseClasses', (\n SELECT\n json_group_array(json(json_object(\n 'schema', ec_classname([mixinBaseClass].[ECInstanceId], 's'),\n 'name', [mixinBaseClass].[Name],\n 'schemaItemType', 'Mixin',\n 'modifier', ${modifier(\"mixinBaseClass\")},\n 'label', [mixinBaseClass].[DisplayLabel],\n 'description', [mixinBaseClass].[Description],\n 'appliesTo', (\n SELECT IIF(instr([atCTE].[AppliesTo], ':') > 1, ec_classname(ec_classId([atCTE].[AppliesTo]), 's.c'), CONCAT([atCTE].[AppliesToSchema], '.', [atCTE].[AppliesTo]))\n FROM [AppliesToCTE] [atCTE]\n WHERE [atCTE].[AppliesToId] = [mixinBaseClass].[ECInstanceId]\n )\n )))\n FROM\n [meta].[ECClassDef] [mixinBaseClass]\n INNER JOIN [meta].[ClassHasAllBaseClasses] [mixinBaseClassMap]\n ON [mixinBaseClassMap].[TargetECInstanceId] = [mixinBaseClass].[ECInstanceId]\n WHERE [mixinBaseClassMap].[SourceECInstanceId] = [baseClass].[ECInstanceId]\n )\n )))\n FROM\n [meta].[ECClassDef] [baseClass]\n INNER JOIN [meta].[ClassHasBaseClasses] [baseClassMap]\n ON [baseClassMap].[TargetECInstanceId] = [baseclass].[ECInstanceId]\n WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]\n AND EXISTS(SELECT 1 FROM [meta].[ClassCustomAttribute] [ca] WHERE [baseClass].[ECInstanceId] = [ca].[Class].[Id]\n AND [ca].[CustomAttributeClass].[Id] Is ([CoreCA].[IsMixin]))\n )\n ) AS [item]\n FROM [meta].[ECClassDef] [class]\n WHERE [class].[Type] = 0\n AND NOT EXISTS(SELECT 1 FROM [meta].[ClassCustomAttribute] [ca] WHERE [class].[ECInstanceId] = [ca].[Class].[Id]\n AND [ca].[CustomAttributeClass].[Id] Is ([CoreCA].[IsMixin]))\n`;\n\nconst mixinQuery = `\n SELECT\n [Schema].[Id] AS [SchemaId],\n json_object(\n 'name', [class].[Name],\n 'schemaItemType', 'Mixin',\n 'modifier', ${modifier(\"class\")},\n 'label', [class].[DisplayLabel],\n 'description', [class].[Description],\n 'appliesTo', (\n SELECT IIF(instr([atCTE].[AppliesTo], ':') > 1, ec_classname(ec_classId([atCTE].[AppliesTo]), 's.c'), CONCAT([atCTE].[AppliesToSchema], '.', [atCTE].[AppliesTo]))\n FROM [AppliesToCTE] [atCTE]\n WHERE [atCTE].[AppliesToId] = [class].[ECInstanceId]\n ),\n 'baseClasses', (\n SELECT\n json_group_array(json(json_object(\n 'schema', ec_classname([baseClass].[ECInstanceId], 's'),\n 'name', [baseClass].[Name],\n 'schemaItemType', 'Mixin',\n 'modifier', ${modifier(\"baseClass\")},\n 'label', [baseClass].[DisplayLabel],\n 'description', [baseClass].[Description],\n 'appliesTo', (\n SELECT IIF(instr([atCTE].[AppliesTo], ':') > 1, ec_classname(ec_classId([atCTE].[AppliesTo]), 's.c'), CONCAT([atCTE].[AppliesToSchema], '.', [atCTE].[AppliesTo]))\n FROM [AppliesToCTE] [atCTE]\n WHERE [atCTE].[AppliesToId] = [baseClass].[ECInstanceId]\n )\n )))\n FROM\n [meta].[ECClassDef] [baseClass]\n INNER JOIN [meta].[ClassHasAllBaseClasses] [baseClassMap]\n ON [baseClassMap].[TargetECInstanceId] = [baseclass].[ECInstanceId]\n WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]\n )\n ) AS [item]\n FROM [meta].[ECClassDef] [class]\n WHERE [class].[Type] = 0 AND EXISTS (SELECT 1 FROM [meta].[ClassCustomAttribute] [ca] WHERE [class].[ECInstanceId] = [ca].[Class].[Id]\n AND [ca].[CustomAttributeClass].[Id] Is ([CoreCA].[IsMixin]))\n`;\n\nconst withSchemaItems = `\nSchemaItems AS (\n ${customAttributeQuery}\n UNION ALL\n ${structQuery}\n UNION ALL\n ${relationshipQuery}\n UNION ALL\n ${entityQuery}\n UNION ALL\n ${mixinQuery}\n UNION ALL\n ${SchemaItemQueries.enumeration()}\n UNION ALL\n ${SchemaItemQueries.kindOfQuantity()}\n UNION ALL\n ${SchemaItemQueries.propertyCategory()}\n UNION ALL\n ${SchemaItemQueries.unit()}\n UNION ALL\n ${SchemaItemQueries.invertedUnit()}\n UNION ALL\n ${SchemaItemQueries.constant()}\n UNION ALL\n ${SchemaItemQueries.phenomenon()}\n UNION ALL\n ${SchemaItemQueries.unitSystem()}\n UNION ALL\n ${SchemaItemQueries.format()}\n )\n`;\n\nconst schemaStubQuery = `\n WITH\n ${withSchemaReferences},\n ${withAppliesTo},\n ${withSchemaItems}\n SELECT\n [Name] as [name],\n CONCAT('',[VersionMajor],'.',[VersionWrite],'.',[VersionMinor]) AS [version],\n [Alias] as [alias],\n [DisplayLabel] as [displayLabel],\n [Description] as [description],\n (\n SELECT\n json_group_array([schemaReferences].[fullName])\n FROM\n [SchemaReferences] [schemaReferences]\n WHERE\n [schemaReferences].[SchemaId] = [schemaDef].[ECInstanceId]\n ) AS [references],\n (\n SELECT\n json_group_array(json([items].[item]))\n FROM\n [SchemaItems] [items]\n WHERE\n [items].[SchemaId] = [schemaDef].[ECInstanceId]\n ) AS [items]\n FROM\n [meta].[ECSchemaDef] [schemaDef]\n WHERE [Name] = :schemaName\n`;\n\nconst schemaInfoQuery = `\n WITH\n ${withSchemaReferences}\n SELECT\n [Name] as [name],\n CONCAT('',[VersionMajor],'.',[VersionWrite],'.',[VersionMinor]) AS [version],\n [Alias] as [alias],\n (\n SELECT\n json_group_array([schemaReferences].[fullName])\n FROM\n [SchemaReferences] [schemaReferences]\n WHERE\n [schemaReferences].[SchemaId] = [schemaDef].[ECInstanceId]\n ) AS [references]\n FROM\n [meta].[ECSchemaDef] [schemaDef]\n`;\n\n/**\n * Partial Schema queries.\n * @internal\n */\nexport const ecsqlQueries = {\n schemaStubQuery,\n schemaInfoQuery,\n};\n"]}
1
+ {"version":3,"file":"SchemaStubQueries.js","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaStubQueries.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE;IACxC,OAAO;;cAEK,KAAK;cACL,KAAK;cACL,KAAK;;;GAGhB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE;IACxC,OAAO;;cAEK,KAAK;cACL,KAAK;cACL,KAAK;;;GAGhB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAE,EAAE;IACjD,OAAO;;cAEK,KAAK;cACL,KAAK;;;GAGhB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG;;;;;;;;;;;;;;CAcrB,CAAC;AAEF,MAAM,oBAAoB,GAAG;;;;;;;;;;CAU5B,CAAC;AAEF,MAAM,oBAAoB,GAAG;;;;;;oBAMT,QAAQ,CAAC,OAAO,CAAC;;;;;;;;;;0BAUX,QAAQ,CAAC,WAAW,CAAC;;;;;;;;;;;;;;CAc9C,CAAC;AAEF,MAAM,WAAW,GAAG;;;;;;oBAMA,QAAQ,CAAC,OAAO,CAAC;;;;;;;;;0BASX,QAAQ,CAAC,WAAW,CAAC;;;;;;;;;;;;;CAa9C,CAAC;AAEF,MAAM,iBAAiB,GAAG;;;;;;oBAMN,QAAQ,CAAC,OAAO,CAAC;;;oBAGjB,QAAQ,CAAC,OAAO,CAAC;6BACR,iBAAiB,CAAC,OAAO,CAAC;;;;;;;0BAO7B,QAAQ,CAAC,WAAW,CAAC;;;0BAGrB,QAAQ,CAAC,WAAW,CAAC;mCACZ,iBAAiB,CAAC,WAAW,CAAC;;;;;;;;;;;CAWhE,CAAC;AAEF,MAAM,WAAW,GAAG;;;;;;oBAMA,QAAQ,CAAC,OAAO,CAAC;;;;;;;;;0BASX,QAAQ,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;0BAkBrB,QAAQ,CAAC,WAAW,CAAC;;;;;;;;;;;;;;gCAcf,QAAQ,CAAC,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BzD,CAAC;AAEF,MAAM,UAAU,GAAG;;;;;;oBAMC,QAAQ,CAAC,OAAO,CAAC;;;;;;;;;;;;;;0BAcX,QAAQ,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;CAmB9C,CAAC;AAEF,MAAM,eAAe,GAAG;;IAEpB,oBAAoB;;IAEpB,WAAW;;IAEX,iBAAiB;;IAEjB,WAAW;;IAEX,UAAU;;IAEV,iBAAiB,CAAC,WAAW,EAAE;;IAE/B,iBAAiB,CAAC,cAAc,EAAE;;IAElC,iBAAiB,CAAC,gBAAgB,EAAE;;IAEpC,iBAAiB,CAAC,IAAI,EAAE;;IAExB,iBAAiB,CAAC,YAAY,EAAE;;IAEhC,iBAAiB,CAAC,QAAQ,EAAE;;IAE5B,iBAAiB,CAAC,UAAU,EAAE;;IAE9B,iBAAiB,CAAC,UAAU,EAAE;;IAE9B,iBAAiB,CAAC,MAAM,EAAE;;CAE7B,CAAC;AAEF,MAAM,eAAe,GAAG;;MAElB,aAAa;MACb,eAAe;;;;;;;;CAQpB,CAAC;AAEF,MAAM,eAAe,GAAG;;MAElB,oBAAoB;;;;;;;;;;;;;;;;;CAiBzB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,eAAe;IACf,eAAe;CAChB,CAAC","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 { SchemaItemQueries } from \"./SchemaItemQueries\";\n\nexport const modifier = (alias: string) => {\n return `\n CASE\n WHEN [${alias}].[modifier] = 0 THEN 'None'\n WHEN [${alias}].[modifier] = 1 THEN 'Abstract'\n WHEN [${alias}].[modifier] = 2 THEN 'Sealed'\n ELSE NULL\n END\n `;\n};\n\nexport const strength = (alias: string) => {\n return `\n CASE\n WHEN [${alias}].[RelationshipStrength] = 0 THEN 'Referencing'\n WHEN [${alias}].[RelationshipStrength] = 1 THEN 'Holding'\n WHEN [${alias}].[RelationshipStrength] = 2 THEN 'Embedding'\n ELSE NULL\n END\n `;\n};\n\nexport const strengthDirection = (alias: string) => {\n return `\n CASE\n WHEN [${alias}].[RelationshipStrengthDirection] = 1 THEN 'Forward'\n WHEN [${alias}].[RelationshipStrengthDirection] = 2 THEN 'Backward'\n ELSE NULL\n END\n `;\n};\n\nconst withAppliesTo = `\n AppliesToCTE AS (\n SELECT\n [mixinAppliesTo].[ECInstanceId] AS [AppliesToId],\n [appliesToSchema].[name] as [AppliesToSchema],\n json_extract(XmlCAToJson([ca].[Class].[Id], [ca].[Instance]), '$.IsMixin.AppliesToEntityClass') AS [AppliesTo]\n FROM [meta].[CustomAttribute] [ca]\n JOIN [meta].[ECClassDef] [mixinAppliesTo]\n ON [mixinAppliesTo].[ECInstanceId] = [ca].[ContainerId]\n JOIN [meta].[ECSchemaDef] [appliesToSchema]\n ON [appliesToSchema].[ECInstanceId] = [mixinAppliesTo].[Schema].[Id]\n WHERE [ca].[ContainerType] = 30\n AND json_extract(XmlCAToJson([ca].[Class].[Id], [ca].[Instance]), '$.ecClass') = 'IsMixin'\n )\n`;\n\nconst withSchemaReferences = `\n SchemaReferences AS (\n SELECT\n [ref].[SourceECInstanceId] AS [SchemaId],\n CONCAT([Name],'.',[VersionMajor],'.',[VersionWrite],'.',[VersionMinor]) AS [fullName]\n FROM\n [meta].[ECSchemaDef] AS [refSchema]\n INNER JOIN [meta].[SchemaHasSchemaReferences] [ref]\n ON [ref].[TargetECInstanceId] = [refSchema].[ECInstanceId]\n )\n`;\n\nconst customAttributeQuery = `\n SELECT\n [Schema].[Id] AS [SchemaId],\n json_object(\n 'name', [class].[Name],\n 'schemaItemType', 'CustomAttributeClass',\n 'modifier', ${modifier(\"class\")},\n 'label', [class].[DisplayLabel],\n 'description', [class].[Description],\n 'appliesTo', [class].[CustomAttributeContainerType],\n 'baseClasses', (\n SELECT\n json_group_array(json(json_object(\n 'schema', ec_classname([baseClass].[ECInstanceId], 's'),\n 'name', [baseClass].[Name],\n 'schemaItemType', 'CustomAttributeClass',\n 'modifier', ${modifier(\"baseClass\")},\n 'label', [baseClass].[DisplayLabel],\n 'description', [baseClass].[Description],\n 'appliesTo', [baseClass].[CustomAttributeContainerType]\n )))\n FROM\n [meta].[ECClassDef] [baseClass]\n INNER JOIN [meta].[ClassHasAllBaseClasses] [baseClassMap]\n ON [baseClassMap].[TargetECInstanceId] = [baseclass].[ECInstanceId]\n WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]\n )\n ) AS [item]\n FROM [meta].[ECClassDef] [class]\n WHERE [class].[Type] = 3\n`;\n\nconst structQuery = `\n SELECT\n [Schema].[Id] AS [SchemaId],\n json_object(\n 'name', [class].[Name],\n 'schemaItemType', 'StructClass',\n 'modifier', ${modifier(\"class\")},\n 'label', [class].[DisplayLabel],\n 'description', [class].[Description],\n 'baseClasses', (\n SELECT\n json_group_array(json(json_object(\n 'schema', ec_classname([baseClass].[ECInstanceId], 's'),\n 'name', [baseClass].[Name],\n 'schemaItemType', 'StructClass',\n 'modifier', ${modifier(\"baseClass\")},\n 'label', [baseClass].[DisplayLabel],\n 'description', [baseClass].[Description]\n )))\n FROM\n [meta].[ECClassDef] [baseClass]\n INNER JOIN [meta].[ClassHasAllBaseClasses] [baseClassMap]\n ON [baseClassMap].[TargetECInstanceId] = [baseclass].[ECInstanceId]\n WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]\n )\n ) AS [item]\n FROM [meta].[ECClassDef] [class]\n WHERE [class].[Type] = 2\n`;\n\nconst relationshipQuery = `\n SELECT\n [Schema].[Id] AS [SchemaId],\n json_object(\n 'name', [class].[Name],\n 'schemaItemType', 'RelationshipClass',\n 'modifier', ${modifier(\"class\")},\n 'label', [class].[DisplayLabel],\n 'description', [class].[Description],\n 'strength', ${strength(\"class\")},\n 'strengthDirection', ${strengthDirection(\"class\")},\n 'baseClasses', (\n SELECT\n json_group_array(json(json_object(\n 'schema', ec_classname([baseClass].[ECInstanceId], 's'),\n 'name', [baseClass].[Name],\n 'schemaItemType', 'RelationshipClass',\n 'modifier', ${modifier(\"baseClass\")},\n 'label', [baseClass].[DisplayLabel],\n 'description', [baseClass].[Description],\n 'strength', ${strength(\"baseClass\")},\n 'strengthDirection', ${strengthDirection(\"baseClass\")}\n )))\n FROM\n [meta].[ECClassDef] [baseClass]\n INNER JOIN [meta].[ClassHasAllBaseClasses] [baseClassMap]\n ON [baseClassMap].[TargetECInstanceId] = [baseclass].[ECInstanceId]\n WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]\n )\n ) AS [item]\n FROM [meta].[ECClassDef] [class]\n WHERE [class].[Type] = 1\n`;\n\nconst entityQuery = `\n SELECT\n [Schema].[Id] AS [SchemaId],\n json_object(\n 'name', [class].[Name],\n 'schemaItemType', 'EntityClass',\n 'modifier', ${modifier(\"class\")},\n 'label', [class].[DisplayLabel],\n 'description', [class].[Description],\n 'baseClasses', (\n SELECT\n json_group_array(json(json_object(\n 'schema', ec_classname([baseClass].[ECInstanceId], 's'),\n 'name', [baseClass].[Name],\n 'schemaItemType', 'EntityClass',\n 'modifier', ${modifier(\"baseClass\")},\n 'label', [baseClass].[DisplayLabel],\n 'description', [baseClass].[Description]\n )))\n FROM\n [meta].[ECClassDef] [baseClass]\n INNER JOIN [meta].[ClassHasAllBaseClasses] [baseClassMap]\n ON [baseClassMap].[TargetECInstanceId] = [baseclass].[ECInstanceId]\n WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]\n AND NOT EXISTS(SELECT 1 FROM [meta].[ClassCustomAttribute] [ca] WHERE [baseClass].[ECInstanceId] = [ca].[Class].[Id]\n AND [ca].[CustomAttributeClass].[Id] Is ([CoreCA].[IsMixin]))\n ),\n 'mixins', (\n SELECT\n json_group_array(json(json_object(\n 'schema', ec_classname([baseClass].[ECInstanceId], 's'),\n 'name', [baseClass].[Name],\n 'schemaItemType', 'Mixin',\n 'modifier', ${modifier(\"baseClass\")},\n 'label', [baseClass].[DisplayLabel],\n 'description', [baseClass].[Description],\n 'appliesTo', (\n SELECT IIF(instr([atCTE].[AppliesTo], ':') > 1, ec_classname(ec_classId([atCTE].[AppliesTo]), 's.c'), CONCAT([atCTE].[AppliesToSchema], '.', [atCTE].[AppliesTo]))\n FROM [AppliesToCTE] [atCTE]\n WHERE [atCTE].[AppliesToId] = [baseClass].[ECInstanceId]\n ),\n 'baseClasses', (\n SELECT\n json_group_array(json(json_object(\n 'schema', ec_classname([mixinBaseClass].[ECInstanceId], 's'),\n 'name', [mixinBaseClass].[Name],\n 'schemaItemType', 'Mixin',\n 'modifier', ${modifier(\"mixinBaseClass\")},\n 'label', [mixinBaseClass].[DisplayLabel],\n 'description', [mixinBaseClass].[Description],\n 'appliesTo', (\n SELECT IIF(instr([atCTE].[AppliesTo], ':') > 1, ec_classname(ec_classId([atCTE].[AppliesTo]), 's.c'), CONCAT([atCTE].[AppliesToSchema], '.', [atCTE].[AppliesTo]))\n FROM [AppliesToCTE] [atCTE]\n WHERE [atCTE].[AppliesToId] = [mixinBaseClass].[ECInstanceId]\n )\n )))\n FROM\n [meta].[ECClassDef] [mixinBaseClass]\n INNER JOIN [meta].[ClassHasAllBaseClasses] [mixinBaseClassMap]\n ON [mixinBaseClassMap].[TargetECInstanceId] = [mixinBaseClass].[ECInstanceId]\n WHERE [mixinBaseClassMap].[SourceECInstanceId] = [baseClass].[ECInstanceId]\n )\n )))\n FROM\n [meta].[ECClassDef] [baseClass]\n INNER JOIN [meta].[ClassHasBaseClasses] [baseClassMap]\n ON [baseClassMap].[TargetECInstanceId] = [baseclass].[ECInstanceId]\n WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]\n AND EXISTS(SELECT 1 FROM [meta].[ClassCustomAttribute] [ca] WHERE [baseClass].[ECInstanceId] = [ca].[Class].[Id]\n AND [ca].[CustomAttributeClass].[Id] Is ([CoreCA].[IsMixin]))\n )\n ) AS [item]\n FROM [meta].[ECClassDef] [class]\n WHERE [class].[Type] = 0\n AND NOT EXISTS(SELECT 1 FROM [meta].[ClassCustomAttribute] [ca] WHERE [class].[ECInstanceId] = [ca].[Class].[Id]\n AND [ca].[CustomAttributeClass].[Id] Is ([CoreCA].[IsMixin]))\n`;\n\nconst mixinQuery = `\n SELECT\n [Schema].[Id] AS [SchemaId],\n json_object(\n 'name', [class].[Name],\n 'schemaItemType', 'Mixin',\n 'modifier', ${modifier(\"class\")},\n 'label', [class].[DisplayLabel],\n 'description', [class].[Description],\n 'appliesTo', (\n SELECT IIF(instr([atCTE].[AppliesTo], ':') > 1, ec_classname(ec_classId([atCTE].[AppliesTo]), 's.c'), CONCAT([atCTE].[AppliesToSchema], '.', [atCTE].[AppliesTo]))\n FROM [AppliesToCTE] [atCTE]\n WHERE [atCTE].[AppliesToId] = [class].[ECInstanceId]\n ),\n 'baseClasses', (\n SELECT\n json_group_array(json(json_object(\n 'schema', ec_classname([baseClass].[ECInstanceId], 's'),\n 'name', [baseClass].[Name],\n 'schemaItemType', 'Mixin',\n 'modifier', ${modifier(\"baseClass\")},\n 'label', [baseClass].[DisplayLabel],\n 'description', [baseClass].[Description],\n 'appliesTo', (\n SELECT IIF(instr([atCTE].[AppliesTo], ':') > 1, ec_classname(ec_classId([atCTE].[AppliesTo]), 's.c'), CONCAT([atCTE].[AppliesToSchema], '.', [atCTE].[AppliesTo]))\n FROM [AppliesToCTE] [atCTE]\n WHERE [atCTE].[AppliesToId] = [baseClass].[ECInstanceId]\n )\n )))\n FROM\n [meta].[ECClassDef] [baseClass]\n INNER JOIN [meta].[ClassHasAllBaseClasses] [baseClassMap]\n ON [baseClassMap].[TargetECInstanceId] = [baseclass].[ECInstanceId]\n WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]\n )\n ) AS [item]\n FROM [meta].[ECClassDef] [class]\n WHERE [class].[Type] = 0 AND EXISTS (SELECT 1 FROM [meta].[ClassCustomAttribute] [ca] WHERE [class].[ECInstanceId] = [ca].[Class].[Id]\n AND [ca].[CustomAttributeClass].[Id] Is ([CoreCA].[IsMixin]))\n`;\n\nconst withSchemaItems = `\nSchemaItems AS (\n ${customAttributeQuery}\n UNION ALL\n ${structQuery}\n UNION ALL\n ${relationshipQuery}\n UNION ALL\n ${entityQuery}\n UNION ALL\n ${mixinQuery}\n UNION ALL\n ${SchemaItemQueries.enumeration()}\n UNION ALL\n ${SchemaItemQueries.kindOfQuantity()}\n UNION ALL\n ${SchemaItemQueries.propertyCategory()}\n UNION ALL\n ${SchemaItemQueries.unit()}\n UNION ALL\n ${SchemaItemQueries.invertedUnit()}\n UNION ALL\n ${SchemaItemQueries.constant()}\n UNION ALL\n ${SchemaItemQueries.phenomenon()}\n UNION ALL\n ${SchemaItemQueries.unitSystem()}\n UNION ALL\n ${SchemaItemQueries.format()}\n )\n`;\n\nconst schemaStubQuery = `\n WITH\n ${withAppliesTo},\n ${withSchemaItems}\n SELECT\n [items].[item]\n FROM\n [SchemaItems] [items]\n JOIN [meta].[ECSchemaDef] [schemaDef]\n ON [schemaDef].[ECInstanceId] = [items].[SchemaId]\n WHERE [schemaDef].[Name] = :schemaName\n`;\n\nconst schemaInfoQuery = `\n WITH\n ${withSchemaReferences}\n SELECT\n [Name] as [name],\n CONCAT('',[VersionMajor],'.',[VersionWrite],'.',[VersionMinor]) AS [version],\n [Alias] as [alias],\n [DisplayLabel] as [label],\n [Description] as [description],\n (\n SELECT\n json_group_array([schemaReferences].[fullName])\n FROM\n [SchemaReferences] [schemaReferences]\n WHERE\n [schemaReferences].[SchemaId] = [schemaDef].[ECInstanceId]\n ) AS [references]\n FROM\n [meta].[ECSchemaDef] [schemaDef]\n`;\n\n/**\n * Partial Schema queries.\n * @internal\n */\nexport const ecsqlQueries = {\n schemaStubQuery,\n schemaInfoQuery,\n};\n"]}
@@ -262,7 +262,7 @@ export async function createNavigationProperty(ecClass, name, relationship, dire
262
262
  }
263
263
  /** @internal */
264
264
  export function createNavigationPropertySync(ecClass, name, relationship, direction) {
265
- if (ecClass.getPropertySync(name))
265
+ if (ecClass.getPropertySync(name, true))
266
266
  throw new ECSchemaError(ECSchemaStatus.DuplicateProperty, `An ECProperty with the name ${name} already exists in the class ${ecClass.name}.`);
267
267
  let resolvedRelationship;
268
268
  if (typeof (relationship) === "string") {