@itwin/ecschema-metadata 5.1.0-dev.59 → 5.1.0-dev.60

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 (127) hide show
  1. package/lib/cjs/Deserialization/Helper.d.ts +30 -11
  2. package/lib/cjs/Deserialization/Helper.d.ts.map +1 -1
  3. package/lib/cjs/Deserialization/Helper.js +124 -96
  4. package/lib/cjs/Deserialization/Helper.js.map +1 -1
  5. package/lib/cjs/Deserialization/XmlParser.d.ts.map +1 -1
  6. package/lib/cjs/Deserialization/XmlParser.js +14 -5
  7. package/lib/cjs/Deserialization/XmlParser.js.map +1 -1
  8. package/lib/cjs/IncrementalLoading/ClassParsers.d.ts +60 -0
  9. package/lib/cjs/IncrementalLoading/ClassParsers.d.ts.map +1 -0
  10. package/lib/cjs/IncrementalLoading/ClassParsers.js +111 -0
  11. package/lib/cjs/IncrementalLoading/ClassParsers.js.map +1 -0
  12. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.d.ts +211 -0
  13. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.d.ts.map +1 -0
  14. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.js +387 -0
  15. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -0
  16. package/lib/cjs/IncrementalLoading/FullSchemaQueries.d.ts +14 -0
  17. package/lib/cjs/IncrementalLoading/FullSchemaQueries.d.ts.map +1 -0
  18. package/lib/cjs/IncrementalLoading/FullSchemaQueries.js +609 -0
  19. package/lib/cjs/IncrementalLoading/FullSchemaQueries.js.map +1 -0
  20. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.d.ts +109 -0
  21. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.d.ts.map +1 -0
  22. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.js +219 -0
  23. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -0
  24. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.d.ts +36 -0
  25. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.d.ts.map +1 -0
  26. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.js +77 -0
  27. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.js.map +1 -0
  28. package/lib/cjs/IncrementalLoading/PerformanceLogger.d.ts +60 -0
  29. package/lib/cjs/IncrementalLoading/PerformanceLogger.d.ts.map +1 -0
  30. package/lib/cjs/IncrementalLoading/PerformanceLogger.js +82 -0
  31. package/lib/cjs/IncrementalLoading/PerformanceLogger.js.map +1 -0
  32. package/lib/cjs/IncrementalLoading/SchemaItemParsers.d.ts +51 -0
  33. package/lib/cjs/IncrementalLoading/SchemaItemParsers.d.ts.map +1 -0
  34. package/lib/cjs/IncrementalLoading/SchemaItemParsers.js +122 -0
  35. package/lib/cjs/IncrementalLoading/SchemaItemParsers.js.map +1 -0
  36. package/lib/cjs/IncrementalLoading/SchemaItemQueries.d.ts +16 -0
  37. package/lib/cjs/IncrementalLoading/SchemaItemQueries.d.ts.map +1 -0
  38. package/lib/cjs/IncrementalLoading/SchemaItemQueries.js +308 -0
  39. package/lib/cjs/IncrementalLoading/SchemaItemQueries.js.map +1 -0
  40. package/lib/cjs/IncrementalLoading/SchemaParser.d.ts +42 -0
  41. package/lib/cjs/IncrementalLoading/SchemaParser.d.ts.map +1 -0
  42. package/lib/cjs/IncrementalLoading/SchemaParser.js +109 -0
  43. package/lib/cjs/IncrementalLoading/SchemaParser.js.map +1 -0
  44. package/lib/cjs/IncrementalLoading/SchemaStubQueries.d.ts +12 -0
  45. package/lib/cjs/IncrementalLoading/SchemaStubQueries.d.ts.map +1 -0
  46. package/lib/cjs/IncrementalLoading/SchemaStubQueries.js +365 -0
  47. package/lib/cjs/IncrementalLoading/SchemaStubQueries.js.map +1 -0
  48. package/lib/cjs/Metadata/Schema.d.ts +10 -0
  49. package/lib/cjs/Metadata/Schema.d.ts.map +1 -1
  50. package/lib/cjs/Metadata/Schema.js +13 -0
  51. package/lib/cjs/Metadata/Schema.js.map +1 -1
  52. package/lib/cjs/Metadata/SchemaItem.d.ts +10 -0
  53. package/lib/cjs/Metadata/SchemaItem.d.ts.map +1 -1
  54. package/lib/cjs/Metadata/SchemaItem.js +13 -0
  55. package/lib/cjs/Metadata/SchemaItem.js.map +1 -1
  56. package/lib/cjs/ecschema-metadata.d.ts +2 -0
  57. package/lib/cjs/ecschema-metadata.d.ts.map +1 -1
  58. package/lib/cjs/ecschema-metadata.js +2 -0
  59. package/lib/cjs/ecschema-metadata.js.map +1 -1
  60. package/lib/cjs/utils/SchemaLoadingController.d.ts +37 -0
  61. package/lib/cjs/utils/SchemaLoadingController.d.ts.map +1 -0
  62. package/lib/cjs/utils/SchemaLoadingController.js +65 -0
  63. package/lib/cjs/utils/SchemaLoadingController.js.map +1 -0
  64. package/lib/esm/Deserialization/Helper.d.ts +30 -11
  65. package/lib/esm/Deserialization/Helper.d.ts.map +1 -1
  66. package/lib/esm/Deserialization/Helper.js +124 -96
  67. package/lib/esm/Deserialization/Helper.js.map +1 -1
  68. package/lib/esm/Deserialization/XmlParser.d.ts.map +1 -1
  69. package/lib/esm/Deserialization/XmlParser.js +14 -5
  70. package/lib/esm/Deserialization/XmlParser.js.map +1 -1
  71. package/lib/esm/IncrementalLoading/ClassParsers.d.ts +60 -0
  72. package/lib/esm/IncrementalLoading/ClassParsers.d.ts.map +1 -0
  73. package/lib/esm/IncrementalLoading/ClassParsers.js +104 -0
  74. package/lib/esm/IncrementalLoading/ClassParsers.js.map +1 -0
  75. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.d.ts +211 -0
  76. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.d.ts.map +1 -0
  77. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.js +383 -0
  78. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -0
  79. package/lib/esm/IncrementalLoading/FullSchemaQueries.d.ts +14 -0
  80. package/lib/esm/IncrementalLoading/FullSchemaQueries.d.ts.map +1 -0
  81. package/lib/esm/IncrementalLoading/FullSchemaQueries.js +606 -0
  82. package/lib/esm/IncrementalLoading/FullSchemaQueries.js.map +1 -0
  83. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.d.ts +109 -0
  84. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.d.ts.map +1 -0
  85. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.js +215 -0
  86. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -0
  87. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.d.ts +36 -0
  88. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.d.ts.map +1 -0
  89. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.js +73 -0
  90. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.js.map +1 -0
  91. package/lib/esm/IncrementalLoading/PerformanceLogger.d.ts +60 -0
  92. package/lib/esm/IncrementalLoading/PerformanceLogger.d.ts.map +1 -0
  93. package/lib/esm/IncrementalLoading/PerformanceLogger.js +78 -0
  94. package/lib/esm/IncrementalLoading/PerformanceLogger.js.map +1 -0
  95. package/lib/esm/IncrementalLoading/SchemaItemParsers.d.ts +51 -0
  96. package/lib/esm/IncrementalLoading/SchemaItemParsers.d.ts.map +1 -0
  97. package/lib/esm/IncrementalLoading/SchemaItemParsers.js +117 -0
  98. package/lib/esm/IncrementalLoading/SchemaItemParsers.js.map +1 -0
  99. package/lib/esm/IncrementalLoading/SchemaItemQueries.d.ts +16 -0
  100. package/lib/esm/IncrementalLoading/SchemaItemQueries.d.ts.map +1 -0
  101. package/lib/esm/IncrementalLoading/SchemaItemQueries.js +305 -0
  102. package/lib/esm/IncrementalLoading/SchemaItemQueries.js.map +1 -0
  103. package/lib/esm/IncrementalLoading/SchemaParser.d.ts +42 -0
  104. package/lib/esm/IncrementalLoading/SchemaParser.d.ts.map +1 -0
  105. package/lib/esm/IncrementalLoading/SchemaParser.js +104 -0
  106. package/lib/esm/IncrementalLoading/SchemaParser.js.map +1 -0
  107. package/lib/esm/IncrementalLoading/SchemaStubQueries.d.ts +12 -0
  108. package/lib/esm/IncrementalLoading/SchemaStubQueries.d.ts.map +1 -0
  109. package/lib/esm/IncrementalLoading/SchemaStubQueries.js +359 -0
  110. package/lib/esm/IncrementalLoading/SchemaStubQueries.js.map +1 -0
  111. package/lib/esm/Metadata/Schema.d.ts +10 -0
  112. package/lib/esm/Metadata/Schema.d.ts.map +1 -1
  113. package/lib/esm/Metadata/Schema.js +13 -0
  114. package/lib/esm/Metadata/Schema.js.map +1 -1
  115. package/lib/esm/Metadata/SchemaItem.d.ts +10 -0
  116. package/lib/esm/Metadata/SchemaItem.d.ts.map +1 -1
  117. package/lib/esm/Metadata/SchemaItem.js +13 -0
  118. package/lib/esm/Metadata/SchemaItem.js.map +1 -1
  119. package/lib/esm/ecschema-metadata.d.ts +2 -0
  120. package/lib/esm/ecschema-metadata.d.ts.map +1 -1
  121. package/lib/esm/ecschema-metadata.js +2 -0
  122. package/lib/esm/ecschema-metadata.js.map +1 -1
  123. package/lib/esm/utils/SchemaLoadingController.d.ts +37 -0
  124. package/lib/esm/utils/SchemaLoadingController.d.ts.map +1 -0
  125. package/lib/esm/utils/SchemaLoadingController.js +61 -0
  126. package/lib/esm/utils/SchemaLoadingController.js.map +1 -0
  127. package/package.json +6 -6
@@ -0,0 +1,42 @@
1
+ import { SchemaContext } from "../Context";
2
+ import { SchemaItemProps, SchemaProps } from "../Deserialization/JsonProps";
3
+ import { CustomAttribute } from "../Metadata/CustomAttribute";
4
+ /**
5
+ * Parses SchemaProps JSON returned from an ECSql query and returns the correct SchemaProps JSON object.
6
+ * This is necessary as a small amount information (ie. CustomAttributes, unqualified type names, etc.)
7
+ * returned from the iModelDb is in a different format than is required for a given Schema or
8
+ * SchemaItemProps JSON object.
9
+ * @internal
10
+ */
11
+ export declare class SchemaParser {
12
+ /**
13
+ * Corrects the SchemaProps JSON returned from the query to a proper SchemaProps
14
+ * JSON object.
15
+ * @param schema The SchemaProps JSON object to parse.
16
+ * @param context The SchemaContext that will contain the schema and it's references.
17
+ * @returns The corrected SchemaProps JSON.
18
+ */
19
+ static parse(schema: SchemaProps, context: SchemaContext): Promise<SchemaProps>;
20
+ /**
21
+ * Parse the given SchemaItemProps array, as returned from an ECSql query, and returns the corrected SchemaItemProps.
22
+ * @param schemaItems The SchemaItemProps array returned from an iModelDb.
23
+ * @param schemaName The name of the Schema to which the SchemaItemProps belong.
24
+ * @param context The SchemaContext containing the Schema.
25
+ * @returns The corrected SchemaItemProps.
26
+ */
27
+ static parseSchemaItems(schemaItems: readonly SchemaItemProps[], schemaName: string, context: SchemaContext): Promise<SchemaItemProps[] | undefined>;
28
+ private static parseItems;
29
+ static parseItem(props: SchemaItemProps, schemaName: string, context: SchemaContext): Promise<SchemaItemProps>;
30
+ }
31
+ /**
32
+ * Utility method to parse CustomAttribute data retrieved from a ECSql query.
33
+ * @param customAttribute CustomAttribute data as retrieved from an iModel query.
34
+ * @returns The CustomAttribute instance.
35
+ * @internal
36
+ */
37
+ export declare function parseCustomAttribute(customAttribute: {
38
+ ecClass: string;
39
+ ecSchema: string;
40
+ [propName: string]: any;
41
+ }): CustomAttribute;
42
+ //# sourceMappingURL=SchemaParser.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.SchemaParser = void 0;
8
+ exports.parseCustomAttribute = parseCustomAttribute;
9
+ const Constants_1 = require("../Constants");
10
+ const ECObjects_1 = require("../ECObjects");
11
+ const ClassParsers_1 = require("./ClassParsers");
12
+ const SchemaItemParsers_1 = require("./SchemaItemParsers");
13
+ function clean(_key, value) {
14
+ return value === null ? undefined : value;
15
+ }
16
+ /**
17
+ * Parses SchemaProps JSON returned from an ECSql query and returns the correct SchemaProps JSON object.
18
+ * This is necessary as a small amount information (ie. CustomAttributes, unqualified type names, etc.)
19
+ * returned from the iModelDb is in a different format than is required for a given Schema or
20
+ * SchemaItemProps JSON object.
21
+ * @internal
22
+ */
23
+ class SchemaParser {
24
+ /**
25
+ * Corrects the SchemaProps JSON returned from the query to a proper SchemaProps
26
+ * JSON object.
27
+ * @param schema The SchemaProps JSON object to parse.
28
+ * @param context The SchemaContext that will contain the schema and it's references.
29
+ * @returns The corrected SchemaProps JSON.
30
+ */
31
+ static async parse(schema, context) {
32
+ const props = schema;
33
+ props.$schema = Constants_1.ECSchemaNamespaceUris.SCHEMAURL3_2_JSON,
34
+ props.customAttributes = props.customAttributes ? props.customAttributes.map((attr) => { return parseCustomAttribute(attr); }) : undefined;
35
+ props.label = props.label === null ? undefined : props.label;
36
+ props.description = props.description === null ? undefined : props.description;
37
+ if (props.items) {
38
+ props.items = await this.parseItems(props.items, props.name, context);
39
+ }
40
+ if (!props.customAttributes || props.customAttributes.length === 0)
41
+ delete props.customAttributes;
42
+ const cleaned = JSON.parse(JSON.stringify(props, clean));
43
+ return cleaned;
44
+ }
45
+ /**
46
+ * Parse the given SchemaItemProps array, as returned from an ECSql query, and returns the corrected SchemaItemProps.
47
+ * @param schemaItems The SchemaItemProps array returned from an iModelDb.
48
+ * @param schemaName The name of the Schema to which the SchemaItemProps belong.
49
+ * @param context The SchemaContext containing the Schema.
50
+ * @returns The corrected SchemaItemProps.
51
+ */
52
+ static async parseSchemaItems(schemaItems, schemaName, context) {
53
+ const items = [];
54
+ for (const item of schemaItems) {
55
+ const props = await this.parseItem(item, schemaName, context);
56
+ const cleaned = JSON.parse(JSON.stringify(props, clean));
57
+ items.push(cleaned);
58
+ }
59
+ return items.length > 0 ? items : undefined;
60
+ }
61
+ static async parseItems(schemaItemProps, schemaName, context) {
62
+ const items = {};
63
+ for (const itemProps of schemaItemProps) {
64
+ const props = await this.parseItem(itemProps, schemaName, context);
65
+ items[props.name] = props;
66
+ delete props.name;
67
+ }
68
+ return Object.keys(items).length > 0 ? items : undefined;
69
+ }
70
+ static async parseItem(props, schemaName, context) {
71
+ const schemaItem = "string" === typeof (props) ? JSON.parse(props) : props;
72
+ const type = (0, ECObjects_1.parseSchemaItemType)(schemaItem.schemaItemType);
73
+ switch (type) {
74
+ case ECObjects_1.SchemaItemType.KindOfQuantity:
75
+ const koqParser = new SchemaItemParsers_1.KindOfQuantityParser(schemaName, context);
76
+ return koqParser.parse(schemaItem);
77
+ case ECObjects_1.SchemaItemType.EntityClass:
78
+ case ECObjects_1.SchemaItemType.StructClass:
79
+ const classParser = new ClassParsers_1.ClassParser(schemaName, context);
80
+ return classParser.parse(schemaItem);
81
+ case ECObjects_1.SchemaItemType.RelationshipClass:
82
+ const relationshipParser = new ClassParsers_1.RelationshipClassParser(schemaName, context);
83
+ return relationshipParser.parse(schemaItem);
84
+ case ECObjects_1.SchemaItemType.Mixin:
85
+ const mixinParser = new ClassParsers_1.MixinParser(schemaName, context);
86
+ return mixinParser.parse(schemaItem);
87
+ case ECObjects_1.SchemaItemType.CustomAttributeClass:
88
+ const caParser = new ClassParsers_1.CustomAttributeClassParser(schemaName, context);
89
+ return caParser.parse(schemaItem);
90
+ default:
91
+ const itemParser = new SchemaItemParsers_1.SchemaItemParser(schemaName, context);
92
+ return itemParser.parse(schemaItem);
93
+ }
94
+ }
95
+ }
96
+ exports.SchemaParser = SchemaParser;
97
+ /**
98
+ * Utility method to parse CustomAttribute data retrieved from a ECSql query.
99
+ * @param customAttribute CustomAttribute data as retrieved from an iModel query.
100
+ * @returns The CustomAttribute instance.
101
+ * @internal
102
+ */
103
+ function parseCustomAttribute(customAttribute) {
104
+ return {
105
+ ...customAttribute[customAttribute.ecClass],
106
+ className: `${(customAttribute.ecSchema).split('.')[0]}.${customAttribute.ecClass}`,
107
+ };
108
+ }
109
+ //# sourceMappingURL=SchemaParser.js.map
@@ -0,0 +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}"]}
@@ -0,0 +1,12 @@
1
+ export declare const modifier: (alias: string) => string;
2
+ export declare const strength: (alias: string) => string;
3
+ export declare const strengthDirection: (alias: string) => string;
4
+ /**
5
+ * Partial Schema queries.
6
+ * @internal
7
+ */
8
+ export declare const ecsqlQueries: {
9
+ schemaStubQuery: string;
10
+ schemaInfoQuery: string;
11
+ };
12
+ //# sourceMappingURL=SchemaStubQueries.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,365 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ecsqlQueries = exports.strengthDirection = exports.strength = exports.modifier = void 0;
4
+ /*---------------------------------------------------------------------------------------------
5
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
+ * See LICENSE.md in the project root for license terms and full copyright notice.
7
+ *--------------------------------------------------------------------------------------------*/
8
+ const SchemaItemQueries_1 = require("./SchemaItemQueries");
9
+ const modifier = (alias) => {
10
+ return `
11
+ CASE
12
+ WHEN [${alias}].[modifier] = 0 THEN 'None'
13
+ WHEN [${alias}].[modifier] = 1 THEN 'Abstract'
14
+ WHEN [${alias}].[modifier] = 2 THEN 'Sealed'
15
+ ELSE NULL
16
+ END
17
+ `;
18
+ };
19
+ exports.modifier = modifier;
20
+ const strength = (alias) => {
21
+ return `
22
+ CASE
23
+ WHEN [${alias}].[RelationshipStrength] = 0 THEN 'Referencing'
24
+ WHEN [${alias}].[RelationshipStrength] = 1 THEN 'Holding'
25
+ WHEN [${alias}].[RelationshipStrength] = 2 THEN 'Embedding'
26
+ ELSE NULL
27
+ END
28
+ `;
29
+ };
30
+ exports.strength = strength;
31
+ const strengthDirection = (alias) => {
32
+ return `
33
+ CASE
34
+ WHEN [${alias}].[RelationshipStrengthDirection] = 1 THEN 'Forward'
35
+ WHEN [${alias}].[RelationshipStrengthDirection] = 2 THEN 'Backward'
36
+ ELSE NULL
37
+ END
38
+ `;
39
+ };
40
+ exports.strengthDirection = strengthDirection;
41
+ const withAppliesTo = `
42
+ AppliesToCTE AS (
43
+ SELECT
44
+ [mixinAppliesTo].[ECInstanceId] AS [AppliesToId],
45
+ [appliesToSchema].[name] as [AppliesToSchema],
46
+ json_extract(XmlCAToJson([ca].[Class].[Id], [ca].[Instance]), '$.IsMixin.AppliesToEntityClass') AS [AppliesTo]
47
+ FROM [meta].[CustomAttribute] [ca]
48
+ JOIN [meta].[ECClassDef] [mixinAppliesTo]
49
+ ON [mixinAppliesTo].[ECInstanceId] = [ca].[ContainerId]
50
+ JOIN [meta].[ECSchemaDef] [appliesToSchema]
51
+ ON [appliesToSchema].[ECInstanceId] = [mixinAppliesTo].[Schema].[Id]
52
+ WHERE [ca].[ContainerType] = 30
53
+ AND json_extract(XmlCAToJson([ca].[Class].[Id], [ca].[Instance]), '$.ecClass') = 'IsMixin'
54
+ )
55
+ `;
56
+ const withSchemaReferences = `
57
+ SchemaReferences AS (
58
+ SELECT
59
+ [ref].[SourceECInstanceId] AS [SchemaId],
60
+ CONCAT([Name],'.',[VersionMajor],'.',[VersionWrite],'.',[VersionMinor]) AS [fullName]
61
+ FROM
62
+ [meta].[ECSchemaDef] AS [refSchema]
63
+ INNER JOIN [meta].[SchemaHasSchemaReferences] [ref]
64
+ ON [ref].[TargetECInstanceId] = [refSchema].[ECInstanceId]
65
+ )
66
+ `;
67
+ const customAttributeQuery = `
68
+ SELECT
69
+ [Schema].[Id] AS [SchemaId],
70
+ json_object(
71
+ 'name', [class].[Name],
72
+ 'schemaItemType', 'CustomAttributeClass',
73
+ 'modifier', ${(0, exports.modifier)("class")},
74
+ 'label', [class].[DisplayLabel],
75
+ 'description', [class].[Description],
76
+ 'appliesTo', [class].[CustomAttributeContainerType],
77
+ 'baseClasses', (
78
+ SELECT
79
+ json_group_array(json(json_object(
80
+ 'schema', ec_classname([baseClass].[ECInstanceId], 's'),
81
+ 'name', [baseClass].[Name],
82
+ 'schemaItemType', 'CustomAttributeClass',
83
+ 'modifier', ${(0, exports.modifier)("baseClass")},
84
+ 'label', [baseClass].[DisplayLabel],
85
+ 'description', [baseClass].[Description],
86
+ 'appliesTo', [baseClass].[CustomAttributeContainerType]
87
+ )))
88
+ FROM
89
+ [meta].[ECClassDef] [baseClass]
90
+ INNER JOIN [meta].[ClassHasAllBaseClasses] [baseClassMap]
91
+ ON [baseClassMap].[TargetECInstanceId] = [baseclass].[ECInstanceId]
92
+ WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]
93
+ )
94
+ ) AS [item]
95
+ FROM [meta].[ECClassDef] [class]
96
+ WHERE [class].[Type] = 3
97
+ `;
98
+ const structQuery = `
99
+ SELECT
100
+ [Schema].[Id] AS [SchemaId],
101
+ json_object(
102
+ 'name', [class].[Name],
103
+ 'schemaItemType', 'StructClass',
104
+ 'modifier', ${(0, exports.modifier)("class")},
105
+ 'label', [class].[DisplayLabel],
106
+ 'description', [class].[Description],
107
+ 'baseClasses', (
108
+ SELECT
109
+ json_group_array(json(json_object(
110
+ 'schema', ec_classname([baseClass].[ECInstanceId], 's'),
111
+ 'name', [baseClass].[Name],
112
+ 'schemaItemType', 'StructClass',
113
+ 'modifier', ${(0, exports.modifier)("baseClass")},
114
+ 'label', [baseClass].[DisplayLabel],
115
+ 'description', [baseClass].[Description]
116
+ )))
117
+ FROM
118
+ [meta].[ECClassDef] [baseClass]
119
+ INNER JOIN [meta].[ClassHasAllBaseClasses] [baseClassMap]
120
+ ON [baseClassMap].[TargetECInstanceId] = [baseclass].[ECInstanceId]
121
+ WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]
122
+ )
123
+ ) AS [item]
124
+ FROM [meta].[ECClassDef] [class]
125
+ WHERE [class].[Type] = 2
126
+ `;
127
+ const relationshipQuery = `
128
+ SELECT
129
+ [Schema].[Id] AS [SchemaId],
130
+ json_object(
131
+ 'name', [class].[Name],
132
+ 'schemaItemType', 'RelationshipClass',
133
+ 'modifier', ${(0, exports.modifier)("class")},
134
+ 'label', [class].[DisplayLabel],
135
+ 'description', [class].[Description],
136
+ 'strength', ${(0, exports.strength)("class")},
137
+ 'strengthDirection', ${(0, exports.strengthDirection)("class")},
138
+ 'baseClasses', (
139
+ SELECT
140
+ json_group_array(json(json_object(
141
+ 'schema', ec_classname([baseClass].[ECInstanceId], 's'),
142
+ 'name', [baseClass].[Name],
143
+ 'schemaItemType', 'RelationshipClass',
144
+ 'modifier', ${(0, exports.modifier)("baseClass")},
145
+ 'label', [baseClass].[DisplayLabel],
146
+ 'description', [baseClass].[Description],
147
+ 'strength', ${(0, exports.strength)("baseClass")},
148
+ 'strengthDirection', ${(0, exports.strengthDirection)("baseClass")}
149
+ )))
150
+ FROM
151
+ [meta].[ECClassDef] [baseClass]
152
+ INNER JOIN [meta].[ClassHasAllBaseClasses] [baseClassMap]
153
+ ON [baseClassMap].[TargetECInstanceId] = [baseclass].[ECInstanceId]
154
+ WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]
155
+ )
156
+ ) AS [item]
157
+ FROM [meta].[ECClassDef] [class]
158
+ WHERE [class].[Type] = 1
159
+ `;
160
+ const entityQuery = `
161
+ SELECT
162
+ [Schema].[Id] AS [SchemaId],
163
+ json_object(
164
+ 'name', [class].[Name],
165
+ 'schemaItemType', 'EntityClass',
166
+ 'modifier', ${(0, exports.modifier)("class")},
167
+ 'label', [class].[DisplayLabel],
168
+ 'description', [class].[Description],
169
+ 'baseClasses', (
170
+ SELECT
171
+ json_group_array(json(json_object(
172
+ 'schema', ec_classname([baseClass].[ECInstanceId], 's'),
173
+ 'name', [baseClass].[Name],
174
+ 'schemaItemType', 'EntityClass',
175
+ 'modifier', ${(0, exports.modifier)("baseClass")},
176
+ 'label', [baseClass].[DisplayLabel],
177
+ 'description', [baseClass].[Description]
178
+ )))
179
+ FROM
180
+ [meta].[ECClassDef] [baseClass]
181
+ INNER JOIN [meta].[ClassHasAllBaseClasses] [baseClassMap]
182
+ ON [baseClassMap].[TargetECInstanceId] = [baseclass].[ECInstanceId]
183
+ WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]
184
+ AND NOT EXISTS(SELECT 1 FROM [meta].[ClassCustomAttribute] [ca] WHERE [baseClass].[ECInstanceId] = [ca].[Class].[Id]
185
+ AND [ca].[CustomAttributeClass].[Id] Is ([CoreCA].[IsMixin]))
186
+ ),
187
+ 'mixins', (
188
+ SELECT
189
+ json_group_array(json(json_object(
190
+ 'schema', ec_classname([baseClass].[ECInstanceId], 's'),
191
+ 'name', [baseClass].[Name],
192
+ 'schemaItemType', 'Mixin',
193
+ 'modifier', ${(0, exports.modifier)("baseClass")},
194
+ 'label', [baseClass].[DisplayLabel],
195
+ 'description', [baseClass].[Description],
196
+ 'appliesTo', (
197
+ SELECT IIF(instr([atCTE].[AppliesTo], ':') > 1, ec_classname(ec_classId([atCTE].[AppliesTo]), 's.c'), CONCAT([atCTE].[AppliesToSchema], '.', [atCTE].[AppliesTo]))
198
+ FROM [AppliesToCTE] [atCTE]
199
+ WHERE [atCTE].[AppliesToId] = [baseClass].[ECInstanceId]
200
+ ),
201
+ 'baseClasses', (
202
+ SELECT
203
+ json_group_array(json(json_object(
204
+ 'schema', ec_classname([mixinBaseClass].[ECInstanceId], 's'),
205
+ 'name', [mixinBaseClass].[Name],
206
+ 'schemaItemType', 'Mixin',
207
+ 'modifier', ${(0, exports.modifier)("mixinBaseClass")},
208
+ 'label', [mixinBaseClass].[DisplayLabel],
209
+ 'description', [mixinBaseClass].[Description],
210
+ 'appliesTo', (
211
+ SELECT IIF(instr([atCTE].[AppliesTo], ':') > 1, ec_classname(ec_classId([atCTE].[AppliesTo]), 's.c'), CONCAT([atCTE].[AppliesToSchema], '.', [atCTE].[AppliesTo]))
212
+ FROM [AppliesToCTE] [atCTE]
213
+ WHERE [atCTE].[AppliesToId] = [mixinBaseClass].[ECInstanceId]
214
+ )
215
+ )))
216
+ FROM
217
+ [meta].[ECClassDef] [mixinBaseClass]
218
+ INNER JOIN [meta].[ClassHasAllBaseClasses] [mixinBaseClassMap]
219
+ ON [mixinBaseClassMap].[TargetECInstanceId] = [mixinBaseClass].[ECInstanceId]
220
+ WHERE [mixinBaseClassMap].[SourceECInstanceId] = [baseClass].[ECInstanceId]
221
+ )
222
+ )))
223
+ FROM
224
+ [meta].[ECClassDef] [baseClass]
225
+ INNER JOIN [meta].[ClassHasBaseClasses] [baseClassMap]
226
+ ON [baseClassMap].[TargetECInstanceId] = [baseclass].[ECInstanceId]
227
+ WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]
228
+ AND EXISTS(SELECT 1 FROM [meta].[ClassCustomAttribute] [ca] WHERE [baseClass].[ECInstanceId] = [ca].[Class].[Id]
229
+ AND [ca].[CustomAttributeClass].[Id] Is ([CoreCA].[IsMixin]))
230
+ )
231
+ ) AS [item]
232
+ FROM [meta].[ECClassDef] [class]
233
+ WHERE [class].[Type] = 0
234
+ AND NOT EXISTS(SELECT 1 FROM [meta].[ClassCustomAttribute] [ca] WHERE [class].[ECInstanceId] = [ca].[Class].[Id]
235
+ AND [ca].[CustomAttributeClass].[Id] Is ([CoreCA].[IsMixin]))
236
+ `;
237
+ const mixinQuery = `
238
+ SELECT
239
+ [Schema].[Id] AS [SchemaId],
240
+ json_object(
241
+ 'name', [class].[Name],
242
+ 'schemaItemType', 'Mixin',
243
+ 'modifier', ${(0, exports.modifier)("class")},
244
+ 'label', [class].[DisplayLabel],
245
+ 'description', [class].[Description],
246
+ 'appliesTo', (
247
+ SELECT IIF(instr([atCTE].[AppliesTo], ':') > 1, ec_classname(ec_classId([atCTE].[AppliesTo]), 's.c'), CONCAT([atCTE].[AppliesToSchema], '.', [atCTE].[AppliesTo]))
248
+ FROM [AppliesToCTE] [atCTE]
249
+ WHERE [atCTE].[AppliesToId] = [class].[ECInstanceId]
250
+ ),
251
+ 'baseClasses', (
252
+ SELECT
253
+ json_group_array(json(json_object(
254
+ 'schema', ec_classname([baseClass].[ECInstanceId], 's'),
255
+ 'name', [baseClass].[Name],
256
+ 'schemaItemType', 'Mixin',
257
+ 'modifier', ${(0, exports.modifier)("baseClass")},
258
+ 'label', [baseClass].[DisplayLabel],
259
+ 'description', [baseClass].[Description],
260
+ 'appliesTo', (
261
+ SELECT IIF(instr([atCTE].[AppliesTo], ':') > 1, ec_classname(ec_classId([atCTE].[AppliesTo]), 's.c'), CONCAT([atCTE].[AppliesToSchema], '.', [atCTE].[AppliesTo]))
262
+ FROM [AppliesToCTE] [atCTE]
263
+ WHERE [atCTE].[AppliesToId] = [baseClass].[ECInstanceId]
264
+ )
265
+ )))
266
+ FROM
267
+ [meta].[ECClassDef] [baseClass]
268
+ INNER JOIN [meta].[ClassHasAllBaseClasses] [baseClassMap]
269
+ ON [baseClassMap].[TargetECInstanceId] = [baseclass].[ECInstanceId]
270
+ WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]
271
+ )
272
+ ) AS [item]
273
+ FROM [meta].[ECClassDef] [class]
274
+ WHERE [class].[Type] = 0 AND EXISTS (SELECT 1 FROM [meta].[ClassCustomAttribute] [ca] WHERE [class].[ECInstanceId] = [ca].[Class].[Id]
275
+ AND [ca].[CustomAttributeClass].[Id] Is ([CoreCA].[IsMixin]))
276
+ `;
277
+ const withSchemaItems = `
278
+ SchemaItems AS (
279
+ ${customAttributeQuery}
280
+ UNION ALL
281
+ ${structQuery}
282
+ UNION ALL
283
+ ${relationshipQuery}
284
+ UNION ALL
285
+ ${entityQuery}
286
+ UNION ALL
287
+ ${mixinQuery}
288
+ UNION ALL
289
+ ${SchemaItemQueries_1.SchemaItemQueries.enumeration()}
290
+ UNION ALL
291
+ ${SchemaItemQueries_1.SchemaItemQueries.kindOfQuantity()}
292
+ UNION ALL
293
+ ${SchemaItemQueries_1.SchemaItemQueries.propertyCategory()}
294
+ UNION ALL
295
+ ${SchemaItemQueries_1.SchemaItemQueries.unit()}
296
+ UNION ALL
297
+ ${SchemaItemQueries_1.SchemaItemQueries.invertedUnit()}
298
+ UNION ALL
299
+ ${SchemaItemQueries_1.SchemaItemQueries.constant()}
300
+ UNION ALL
301
+ ${SchemaItemQueries_1.SchemaItemQueries.phenomenon()}
302
+ UNION ALL
303
+ ${SchemaItemQueries_1.SchemaItemQueries.unitSystem()}
304
+ UNION ALL
305
+ ${SchemaItemQueries_1.SchemaItemQueries.format()}
306
+ )
307
+ `;
308
+ const schemaStubQuery = `
309
+ WITH
310
+ ${withSchemaReferences},
311
+ ${withAppliesTo},
312
+ ${withSchemaItems}
313
+ SELECT
314
+ [Name] as [name],
315
+ CONCAT('',[VersionMajor],'.',[VersionWrite],'.',[VersionMinor]) AS [version],
316
+ [Alias] as [alias],
317
+ [DisplayLabel] as [displayLabel],
318
+ [Description] as [description],
319
+ (
320
+ SELECT
321
+ json_group_array([schemaReferences].[fullName])
322
+ FROM
323
+ [SchemaReferences] [schemaReferences]
324
+ WHERE
325
+ [schemaReferences].[SchemaId] = [schemaDef].[ECInstanceId]
326
+ ) AS [references],
327
+ (
328
+ SELECT
329
+ json_group_array(json([items].[item]))
330
+ FROM
331
+ [SchemaItems] [items]
332
+ WHERE
333
+ [items].[SchemaId] = [schemaDef].[ECInstanceId]
334
+ ) AS [items]
335
+ FROM
336
+ [meta].[ECSchemaDef] [schemaDef]
337
+ WHERE [Name] = :schemaName
338
+ `;
339
+ const schemaInfoQuery = `
340
+ WITH
341
+ ${withSchemaReferences}
342
+ SELECT
343
+ [Name] as [name],
344
+ CONCAT('',[VersionMajor],'.',[VersionWrite],'.',[VersionMinor]) AS [version],
345
+ [Alias] as [alias],
346
+ (
347
+ SELECT
348
+ json_group_array([schemaReferences].[fullName])
349
+ FROM
350
+ [SchemaReferences] [schemaReferences]
351
+ WHERE
352
+ [schemaReferences].[SchemaId] = [schemaDef].[ECInstanceId]
353
+ ) AS [references]
354
+ FROM
355
+ [meta].[ECSchemaDef] [schemaDef]
356
+ `;
357
+ /**
358
+ * Partial Schema queries.
359
+ * @internal
360
+ */
361
+ exports.ecsqlQueries = {
362
+ schemaStubQuery,
363
+ schemaInfoQuery,
364
+ };
365
+ //# sourceMappingURL=SchemaStubQueries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaStubQueries.js","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaStubQueries.ts"],"names":[],"mappings":";;;AAAA;;;gGAGgG;AAChG,2DAAwD;AAEjD,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE;IACxC,OAAO;;cAEK,KAAK;cACL,KAAK;cACL,KAAK;;;GAGhB,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,QAAQ,YASnB;AAEK,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE;IACxC,OAAO;;cAEK,KAAK;cACL,KAAK;cACL,KAAK;;;GAGhB,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,QAAQ,YASnB;AAEK,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAE,EAAE;IACjD,OAAO;;cAEK,KAAK;cACL,KAAK;;;GAGhB,CAAC;AACJ,CAAC,CAAC;AARW,QAAA,iBAAiB,qBAQ5B;AAEF,MAAM,aAAa,GAAG;;;;;;;;;;;;;;CAcrB,CAAC;AAEF,MAAM,oBAAoB,GAAG;;;;;;;;;;CAU5B,CAAC;AAEF,MAAM,oBAAoB,GAAG;;;;;;oBAMT,IAAA,gBAAQ,EAAC,OAAO,CAAC;;;;;;;;;;0BAUX,IAAA,gBAAQ,EAAC,WAAW,CAAC;;;;;;;;;;;;;;CAc9C,CAAC;AAEF,MAAM,WAAW,GAAG;;;;;;oBAMA,IAAA,gBAAQ,EAAC,OAAO,CAAC;;;;;;;;;0BASX,IAAA,gBAAQ,EAAC,WAAW,CAAC;;;;;;;;;;;;;CAa9C,CAAC;AAEF,MAAM,iBAAiB,GAAG;;;;;;oBAMN,IAAA,gBAAQ,EAAC,OAAO,CAAC;;;oBAGjB,IAAA,gBAAQ,EAAC,OAAO,CAAC;6BACR,IAAA,yBAAiB,EAAC,OAAO,CAAC;;;;;;;0BAO7B,IAAA,gBAAQ,EAAC,WAAW,CAAC;;;0BAGrB,IAAA,gBAAQ,EAAC,WAAW,CAAC;mCACZ,IAAA,yBAAiB,EAAC,WAAW,CAAC;;;;;;;;;;;CAWhE,CAAC;AAEF,MAAM,WAAW,GAAG;;;;;;oBAMA,IAAA,gBAAQ,EAAC,OAAO,CAAC;;;;;;;;;0BASX,IAAA,gBAAQ,EAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;0BAkBrB,IAAA,gBAAQ,EAAC,WAAW,CAAC;;;;;;;;;;;;;;gCAcf,IAAA,gBAAQ,EAAC,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BzD,CAAC;AAEF,MAAM,UAAU,GAAG;;;;;;oBAMC,IAAA,gBAAQ,EAAC,OAAO,CAAC;;;;;;;;;;;;;;0BAcX,IAAA,gBAAQ,EAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;CAmB9C,CAAC;AAEF,MAAM,eAAe,GAAG;;IAEpB,oBAAoB;;IAEpB,WAAW;;IAEX,iBAAiB;;IAEjB,WAAW;;IAEX,UAAU;;IAEV,qCAAiB,CAAC,WAAW,EAAE;;IAE/B,qCAAiB,CAAC,cAAc,EAAE;;IAElC,qCAAiB,CAAC,gBAAgB,EAAE;;IAEpC,qCAAiB,CAAC,IAAI,EAAE;;IAExB,qCAAiB,CAAC,YAAY,EAAE;;IAEhC,qCAAiB,CAAC,QAAQ,EAAE;;IAE5B,qCAAiB,CAAC,UAAU,EAAE;;IAE9B,qCAAiB,CAAC,UAAU,EAAE;;IAE9B,qCAAiB,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;AACU,QAAA,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"]}
@@ -22,6 +22,7 @@ import { RelationshipClass } from "./RelationshipClass";
22
22
  import { SchemaItem } from "./SchemaItem";
23
23
  import { Unit } from "./Unit";
24
24
  import { UnitSystem } from "./UnitSystem";
25
+ import { SchemaLoadingController } from "../utils/SchemaLoadingController";
25
26
  /**
26
27
  * @public @preview
27
28
  */
@@ -37,6 +38,7 @@ export declare class Schema implements CustomAttributeContainerProps {
37
38
  private _customAttributes?;
38
39
  private _originalECSpecMajorVersion?;
39
40
  private _originalECSpecMinorVersion?;
41
+ private _loadingController?;
40
42
  /**
41
43
  * Constructs an empty Schema with the given name and version in the provided context.
42
44
  * @param context The SchemaContext that will control the lifetime of the schema
@@ -79,6 +81,12 @@ export declare class Schema implements CustomAttributeContainerProps {
79
81
  get schema(): Schema;
80
82
  /** Returns the schema context this schema is within. */
81
83
  get context(): SchemaContext;
84
+ /**
85
+ * Returns the SchemaLoadingController for this Schema. This would only be set if the schema is
86
+ * loaded incrementally.
87
+ * @internal
88
+ */
89
+ get loadingController(): SchemaLoadingController | undefined;
82
90
  /**
83
91
  * Returns a SchemaItemKey given the item name and the schema it belongs to
84
92
  * @param fullName fully qualified name {Schema name}.{Item Name}
@@ -421,6 +429,8 @@ export declare class Schema implements CustomAttributeContainerProps {
421
429
  protected setDescription(description: string): void;
422
430
  /** @internal */
423
431
  protected setAlias(alias: string): void;
432
+ /** @internal */
433
+ setLoadingController(controller: SchemaLoadingController): void;
424
434
  }
425
435
  /**
426
436
  * Hackish approach that works like a "friend class" so we can access protected members without making them public.