@itwin/ecschema-locaters 5.0.0-dev.99 → 5.1.0-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -1
- package/lib/cjs/SchemaFileLocater.d.ts +13 -6
- package/lib/cjs/SchemaFileLocater.d.ts.map +1 -1
- package/lib/cjs/SchemaFileLocater.js +9 -2
- package/lib/cjs/SchemaFileLocater.js.map +1 -1
- package/lib/cjs/SchemaJsonFileLocater.d.ts +2 -1
- package/lib/cjs/SchemaJsonFileLocater.d.ts.map +1 -1
- package/lib/cjs/SchemaJsonFileLocater.js +4 -3
- package/lib/cjs/SchemaJsonFileLocater.js.map +1 -1
- package/lib/cjs/SchemaStringLocater.js.map +1 -1
- package/lib/cjs/SchemaXml.d.ts +1 -1
- package/lib/cjs/SchemaXml.js +1 -1
- package/lib/cjs/SchemaXml.js.map +1 -1
- package/lib/cjs/SchemaXmlFileLocater.d.ts +2 -2
- package/lib/cjs/SchemaXmlFileLocater.d.ts.map +1 -1
- package/lib/cjs/SchemaXmlFileLocater.js +4 -4
- package/lib/cjs/SchemaXmlFileLocater.js.map +1 -1
- package/lib/cjs/SchemaXmlStringLocater.d.ts.map +1 -1
- package/lib/cjs/SchemaXmlStringLocater.js +4 -4
- package/lib/cjs/SchemaXmlStringLocater.js.map +1 -1
- package/lib/cjs/StubSchemaXmlFileLocater.d.ts.map +1 -1
- package/lib/cjs/StubSchemaXmlFileLocater.js +9 -9
- package/lib/cjs/StubSchemaXmlFileLocater.js.map +1 -1
- package/lib/cjs/ecschema-locaters.js.map +1 -1
- package/lib/cjs/test/ConcurrentGetSchemaJson.test.js.map +1 -1
- package/lib/cjs/test/ConcurrentGetSchemaXml.test.js.map +1 -1
- package/lib/cjs/test/SchemaJsonFileLocator.test.js +2 -2
- package/lib/cjs/test/SchemaJsonFileLocator.test.js.map +1 -1
- package/lib/cjs/test/SchemaXml.test.js.map +1 -1
- package/lib/cjs/test/SchemaXmlFileLocator.test.js +9 -9
- package/lib/cjs/test/SchemaXmlFileLocator.test.js.map +1 -1
- package/lib/cjs/test/SchemaXmlStringLocater.test.js +9 -9
- package/lib/cjs/test/SchemaXmlStringLocater.test.js.map +1 -1
- package/lib/cjs/test/StubSchemaXmlFileLocater.test.js +9 -8
- package/lib/cjs/test/StubSchemaXmlFileLocater.test.js.map +1 -1
- package/lib/esm/SchemaFileLocater.d.ts +13 -6
- package/lib/esm/SchemaFileLocater.d.ts.map +1 -1
- package/lib/esm/SchemaFileLocater.js +9 -2
- package/lib/esm/SchemaFileLocater.js.map +1 -1
- package/lib/esm/SchemaJsonFileLocater.d.ts +2 -1
- package/lib/esm/SchemaJsonFileLocater.d.ts.map +1 -1
- package/lib/esm/SchemaJsonFileLocater.js +5 -4
- package/lib/esm/SchemaJsonFileLocater.js.map +1 -1
- package/lib/esm/SchemaStringLocater.js.map +1 -1
- package/lib/esm/SchemaXml.d.ts +1 -1
- package/lib/esm/SchemaXml.js +1 -1
- package/lib/esm/SchemaXml.js.map +1 -1
- package/lib/esm/SchemaXmlFileLocater.d.ts +2 -2
- package/lib/esm/SchemaXmlFileLocater.d.ts.map +1 -1
- package/lib/esm/SchemaXmlFileLocater.js +5 -5
- package/lib/esm/SchemaXmlFileLocater.js.map +1 -1
- package/lib/esm/SchemaXmlStringLocater.d.ts.map +1 -1
- package/lib/esm/SchemaXmlStringLocater.js +5 -5
- package/lib/esm/SchemaXmlStringLocater.js.map +1 -1
- package/lib/esm/StubSchemaXmlFileLocater.d.ts.map +1 -1
- package/lib/esm/StubSchemaXmlFileLocater.js +10 -10
- package/lib/esm/StubSchemaXmlFileLocater.js.map +1 -1
- package/lib/esm/ecschema-locaters.js.map +1 -1
- package/lib/esm/test/ConcurrentGetSchemaJson.test.js.map +1 -1
- package/lib/esm/test/ConcurrentGetSchemaXml.test.js.map +1 -1
- package/lib/esm/test/SchemaJsonFileLocator.test.js +2 -2
- package/lib/esm/test/SchemaJsonFileLocator.test.js.map +1 -1
- package/lib/esm/test/SchemaXml.test.js.map +1 -1
- package/lib/esm/test/SchemaXmlFileLocator.test.js +10 -10
- package/lib/esm/test/SchemaXmlFileLocator.test.js.map +1 -1
- package/lib/esm/test/SchemaXmlStringLocater.test.js +10 -10
- package/lib/esm/test/SchemaXmlStringLocater.test.js.map +1 -1
- package/lib/esm/test/StubSchemaXmlFileLocater.test.js +9 -8
- package/lib/esm/test/StubSchemaXmlFileLocater.test.js.map +1 -1
- package/package.json +4 -4
|
@@ -30,7 +30,7 @@ class StubSchemaXmlFileLocater extends SchemaFileLocater_1.SchemaFileLocater {
|
|
|
30
30
|
loadSchema(schemaPath, schemaText) {
|
|
31
31
|
schemaText = schemaText || this.readUtf8FileToStringSync(schemaPath);
|
|
32
32
|
if (!schemaText)
|
|
33
|
-
throw new ecschema_metadata_1.
|
|
33
|
+
throw new ecschema_metadata_1.ECSchemaError(ecschema_metadata_1.ECSchemaStatus.UnableToLocateSchema, `Unable to locate schema XML file at ${schemaPath}`);
|
|
34
34
|
this.addSchemaSearchPaths([path.dirname(schemaPath)]);
|
|
35
35
|
const key = this.getSchemaKey(schemaText);
|
|
36
36
|
const alias = this.getSchemaAlias(schemaText);
|
|
@@ -88,11 +88,11 @@ class StubSchemaXmlFileLocater extends SchemaFileLocater_1.SchemaFileLocater {
|
|
|
88
88
|
getSchemaKey(schemaXml) {
|
|
89
89
|
const matches = schemaXml.match(/<ECSchema ([^]+?)>/g);
|
|
90
90
|
if (!matches || matches.length !== 1)
|
|
91
|
-
throw new ecschema_metadata_1.
|
|
91
|
+
throw new ecschema_metadata_1.ECSchemaError(ecschema_metadata_1.ECSchemaStatus.InvalidSchemaXML, `Could not find '<ECSchema>' tag in the given file`);
|
|
92
92
|
const name = matches[0].match(/schemaName="(.+?)"/);
|
|
93
93
|
const version = matches[0].match(/version="(.+?)"/);
|
|
94
94
|
if (!name || name.length !== 2 || !version || version.length !== 2)
|
|
95
|
-
throw new ecschema_metadata_1.
|
|
95
|
+
throw new ecschema_metadata_1.ECSchemaError(ecschema_metadata_1.ECSchemaStatus.InvalidSchemaXML, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);
|
|
96
96
|
let ecVersion;
|
|
97
97
|
if (isECv2Schema(schemaXml))
|
|
98
98
|
ecVersion = this.fromECv2String(version[1]);
|
|
@@ -120,7 +120,7 @@ class StubSchemaXmlFileLocater extends SchemaFileLocater_1.SchemaFileLocater {
|
|
|
120
120
|
for (const key of refKeys) {
|
|
121
121
|
const refSchema = context ? context.getSchemaSync(key, refMatchType) : undefined;
|
|
122
122
|
if (!refSchema)
|
|
123
|
-
throw new ecschema_metadata_1.
|
|
123
|
+
throw new ecschema_metadata_1.ECSchemaError(ecschema_metadata_1.ECSchemaStatus.UnableToLocateSchema, `Unable to locate referenced schema: ${key.name}.${key.readVersion}.${key.writeVersion}.${key.minorVersion}`);
|
|
124
124
|
schema.references.push(refSchema);
|
|
125
125
|
}
|
|
126
126
|
}
|
|
@@ -131,7 +131,7 @@ class StubSchemaXmlFileLocater extends SchemaFileLocater_1.SchemaFileLocater {
|
|
|
131
131
|
_getSchemaReferenceKeys(xmlSchemaKey) {
|
|
132
132
|
const file = xmlSchemaKey.schemaText;
|
|
133
133
|
if (!file)
|
|
134
|
-
throw new ecschema_metadata_1.
|
|
134
|
+
throw new ecschema_metadata_1.ECSchemaError(ecschema_metadata_1.ECSchemaStatus.UnableToLocateSchema, `Could not locate the schema file, ${xmlSchemaKey.fileName}, for the schema ${xmlSchemaKey.name}`);
|
|
135
135
|
const data = file.toString().replace(/(\s*)<!--[\s\S]*?--!?>/g, ""); // ignore any comments in the XML file when getting the array of SchemaKeys
|
|
136
136
|
const keys = [];
|
|
137
137
|
const matches = data.match(/<ECSchemaReference ([^]+?)\/>/g);
|
|
@@ -141,7 +141,7 @@ class StubSchemaXmlFileLocater extends SchemaFileLocater_1.SchemaFileLocater {
|
|
|
141
141
|
const name = match.match(/name="(.+?)"/);
|
|
142
142
|
const versionMatch = match.match(/version="(.+?)"/);
|
|
143
143
|
if (!name || name.length !== 2 || !versionMatch || versionMatch.length !== 2)
|
|
144
|
-
throw new ecschema_metadata_1.
|
|
144
|
+
throw new ecschema_metadata_1.ECSchemaError(ecschema_metadata_1.ECSchemaStatus.InvalidSchemaXML, `Invalid ECSchemaReference xml encountered in the schema file`);
|
|
145
145
|
// write version maybe missing, so insert "0"
|
|
146
146
|
let versionString = versionMatch[1];
|
|
147
147
|
const versionParts = versionString.split(".");
|
|
@@ -166,7 +166,7 @@ class StubSchemaXmlFileLocater extends SchemaFileLocater_1.SchemaFileLocater {
|
|
|
166
166
|
match = schemaXml.match(/<ECSchema.*alias="(?<alias>\w+)"/);
|
|
167
167
|
}
|
|
168
168
|
if (!match || !match.groups.alias) {
|
|
169
|
-
throw new ecschema_metadata_1.
|
|
169
|
+
throw new ecschema_metadata_1.ECSchemaError(ecschema_metadata_1.ECSchemaStatus.InvalidSchemaXML, `Could not find the ECSchema 'alias' tag in the given file.`);
|
|
170
170
|
}
|
|
171
171
|
return match.groups.alias;
|
|
172
172
|
}
|
|
@@ -178,9 +178,9 @@ class StubSchemaXmlFileLocater extends SchemaFileLocater_1.SchemaFileLocater {
|
|
|
178
178
|
fromECv2String(versionString) {
|
|
179
179
|
const [read, minor] = versionString.split(".");
|
|
180
180
|
if (!read)
|
|
181
|
-
throw new ecschema_metadata_1.
|
|
181
|
+
throw new ecschema_metadata_1.ECSchemaError(ecschema_metadata_1.ECSchemaStatus.InvalidECVersion, `The read version is missing from version string, ${versionString}`);
|
|
182
182
|
if (!minor)
|
|
183
|
-
throw new ecschema_metadata_1.
|
|
183
|
+
throw new ecschema_metadata_1.ECSchemaError(ecschema_metadata_1.ECSchemaStatus.InvalidECVersion, `The minor version is missing from version string, ${versionString}`);
|
|
184
184
|
return new ecschema_metadata_1.ECVersion(+read, 0, +minor);
|
|
185
185
|
}
|
|
186
186
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StubSchemaXmlFileLocater.js","sourceRoot":"","sources":["../../src/StubSchemaXmlFileLocater.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/** @packageDocumentation\n * @module Locaters\n */\n\nimport * as path from \"path\";\nimport {\n ECObjectsError, ECObjectsStatus, ECVersion, ISchemaLocater, Schema, SchemaContext, SchemaInfo, SchemaKey, SchemaMatchType,\n} from \"@itwin/ecschema-metadata\";\nimport { FileSchemaKey, SchemaFileLocater } from \"./SchemaFileLocater\";\n\nfunction isECv2Schema(schemaText: string): boolean {\n return /<ECSchema[^>]*xmlns=\".*ECXML.2.0\"/.test(schemaText);\n}\n\n/**\n * A SchemaLocater implementation for locating XML Schema files\n * from the file system using configurable search paths. Returns only\n * Schemas from XML files with their keys populated.\n * @internal\n */\nexport class StubSchemaXmlFileLocater extends SchemaFileLocater implements ISchemaLocater {\n /**\n * Loads a Schema from an XML file on the file system.\n * @param schemaPath The path to the Schema file.\n * @param schemaText Optionally pass in the schema text read from the schema file. If undefined,\n * the schema will be read from the provided schemaPath.\n */\n public loadSchema(schemaPath: string, schemaText?: string): Schema {\n schemaText = schemaText || this.readUtf8FileToStringSync(schemaPath);\n if (!schemaText)\n throw new ECObjectsError(ECObjectsStatus.UnableToLocateSchema, `Unable to locate schema XML file at ${schemaPath}`);\n\n this.addSchemaSearchPaths([path.dirname(schemaPath)]);\n const key = this.getSchemaKey(schemaText);\n const alias = this.getSchemaAlias(schemaText);\n const context = new SchemaContext();\n context.addLocater(this);\n\n // Load the schema and return it\n const schema = new Schema(context, new FileSchemaKey(key, schemaPath, schemaText), alias);\n this.addSchemaReferences(schema, context, SchemaMatchType.LatestWriteCompatible);\n return schema;\n }\n\n /**\n * Attempts to retrieve a Schema with the given SchemaKey by using the configured search paths\n * to locate the XML Schema file from the file system. Returns only Schemas from XML files with\n * their keys populated.\n * @param key The SchemaKey of the Schema to retrieve.\n * @param matchType The SchemaMatchType.\n * @param context The SchemaContext that will control the lifetime of the schema.\n */\n public async getSchema(key: SchemaKey, matchType: SchemaMatchType, context: SchemaContext): Promise<Schema | undefined> {\n return this.getSchemaSync(key, matchType, context);\n }\n\n /**\n * Gets the schema info which matches the provided SchemaKey. The schema info may be returned before the schema is fully loaded.\n * The fully loaded schema can be gotten later from the context using the getCachedSchema method.\n * @param schemaKey The SchemaKey describing the schema to get from the cache.\n * @param matchType The match type to use when locating the schema\n * @param context The SchemaContext that will control the lifetime of the schema and holds the schema's references, if they exist.\n */\n public async getSchemaInfo(key: SchemaKey, matchType: SchemaMatchType, context: SchemaContext): Promise<SchemaInfo | undefined> {\n return this.getSchemaSync(key, matchType, context) as SchemaInfo;\n }\n\n /**\n * Attempts to retrieve a Schema with the given SchemaKey by using the configured search paths\n * to locate the XML Schema file from the file system. Returns only Schemas from XML files with\n * their keys populated.\n * @param key The SchemaKey of the Schema to retrieve.\n * @param matchType The SchemaMatchType.\n * @param context The SchemaContext that will control the lifetime of the schema.\n */\n public getSchemaSync(key: SchemaKey, matchType: SchemaMatchType, context: SchemaContext): Schema | undefined {\n const candidates: FileSchemaKey[] = this.findEligibleSchemaKeys(key, matchType, \"xml\");\n\n if (!candidates || candidates.length === 0)\n return undefined;\n\n const maxCandidate = candidates.sort(this.compareSchemaKeyByVersion)[candidates.length - 1];\n const alias = this.getSchemaAlias(maxCandidate.schemaText!);\n const schema = new Schema(context, maxCandidate, alias);\n context.addSchemaSync(schema);\n\n this.addSchemaReferences(schema, context, SchemaMatchType.LatestWriteCompatible);\n return schema;\n }\n\n /**\n * Constructs a SchemaKey based on the information in the Schema XML.\n * @param schemaXml The Schema XML as a string.\n */\n public getSchemaKey(schemaXml: string): SchemaKey {\n const matches = schemaXml.match(/<ECSchema ([^]+?)>/g);\n if (!matches || matches.length !== 1)\n throw new ECObjectsError(ECObjectsStatus.InvalidSchemaXML, `Could not find '<ECSchema>' tag in the given file`);\n\n const name = matches[0].match(/schemaName=\"(.+?)\"/);\n const version = matches[0].match(/version=\"(.+?)\"/);\n if (!name || name.length !== 2 || !version || version.length !== 2)\n throw new ECObjectsError(ECObjectsStatus.InvalidSchemaXML, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);\n\n let ecVersion: ECVersion;\n if (isECv2Schema(schemaXml))\n ecVersion = this.fromECv2String(version[1]);\n else\n ecVersion = ECVersion.fromString(version[1]);\n\n const key = new SchemaKey(name[1], ecVersion);\n return key;\n }\n\n /**\n * Gets an array of SchemaKeys of the Schemas referenced by the given Schema.\n * @param xmlSchemaKey The SchemaKey of the parent Schema containing the references.\n */\n private getSchemaReferenceKeys(schemaKey: FileSchemaKey): SchemaKey[] {\n return this._getSchemaReferenceKeys(schemaKey);\n }\n\n /**\n * Adds schemas to the references collection for the given Schema by locating\n * the referenced schemas.\n * @param schema The schema for which to add the references.\n * @param context The SchemaContext that will control the lifetime of the schema.\n * @param refMatchType The SchemaMatchType to use when locating schema references.\n */\n private addSchemaReferences(schema: Schema, context: SchemaContext, refMatchType: SchemaMatchType): void {\n const refKeys = this.getSchemaReferenceKeys(schema.schemaKey as FileSchemaKey);\n\n for (const key of refKeys) {\n const refSchema = context ? context.getSchemaSync(key, refMatchType) : undefined;\n if (!refSchema)\n throw new ECObjectsError(ECObjectsStatus.UnableToLocateSchema, `Unable to locate referenced schema: ${key.name}.${key.readVersion}.${key.writeVersion}.${key.minorVersion}`);\n\n schema.references.push(refSchema);\n }\n }\n\n /**\n * Gets an array of SchemaKeys of the Schemas referenced by the given Schema.\n * @param data The Schema XML string.\n */\n private _getSchemaReferenceKeys(xmlSchemaKey: FileSchemaKey): SchemaKey[] {\n const file = xmlSchemaKey.schemaText;\n\n if (!file)\n throw new ECObjectsError(ECObjectsStatus.UnableToLocateSchema, `Could not locate the schema file, ${xmlSchemaKey.fileName}, for the schema ${xmlSchemaKey.name}`);\n\n const data = file.toString().replace(/(\\s*)<!--[\\s\\S]*?--!?>/g, \"\"); // ignore any comments in the XML file when getting the array of SchemaKeys\n\n const keys: SchemaKey[] = [];\n const matches = data.match(/<ECSchemaReference ([^]+?)\\/>/g);\n if (!matches)\n return keys;\n\n for (const match of matches) {\n const name = match.match(/name=\"(.+?)\"/);\n const versionMatch = match.match(/version=\"(.+?)\"/);\n if (!name || name.length !== 2 || !versionMatch || versionMatch.length !== 2)\n throw new ECObjectsError(ECObjectsStatus.InvalidSchemaXML, `Invalid ECSchemaReference xml encountered in the schema file`);\n\n // write version maybe missing, so insert \"0\"\n let versionString = versionMatch[1];\n const versionParts = versionString.split(\".\");\n if (versionParts.length === 2)\n versionParts.splice(1, 0, \"0\");\n\n versionString = versionParts.join(\".\");\n\n const key = new SchemaKey(name[1], ECVersion.fromString(versionString));\n keys.push(key);\n }\n\n return keys;\n }\n\n /**\n * Gets the Schema alias from the Schema XML.\n * @param data The Schema XML as a string.\n */\n private getSchemaAlias(schemaXml: string): string {\n let match: any;\n\n if (isECv2Schema(schemaXml)) {\n match = schemaXml.match(/<ECSchema.*nameSpacePrefix=\"(?<alias>\\w+)\"/) as any;\n } else {\n match = schemaXml.match(/<ECSchema.*alias=\"(?<alias>\\w+)\"/) as any;\n }\n\n if (!match || !match.groups.alias) {\n throw new ECObjectsError(ECObjectsStatus.InvalidSchemaXML, `Could not find the ECSchema 'alias' tag in the given file.`);\n }\n\n return match.groups.alias;\n }\n\n /**\n * Parses a valid EC 2.0 version string and returns an ECVersion object. The second digit becomes the minor version,\n * and a zero is inserted as the 'write' digit. Example: \"1.1\" -> \"1.0.1\".\n * @param versionString A valid EC 2.0 version string of the format, 'RR.mm'.\n */\n private fromECv2String(versionString: string): ECVersion {\n const [read, minor] = versionString.split(\".\");\n\n if (!read)\n throw new ECObjectsError(ECObjectsStatus.InvalidECVersion, `The read version is missing from version string, ${versionString}`);\n\n if (!minor)\n throw new ECObjectsError(ECObjectsStatus.InvalidECVersion, `The minor version is missing from version string, ${versionString}`);\n\n return new ECVersion(+read, 0, +minor);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"StubSchemaXmlFileLocater.js","sourceRoot":"","sources":["../../src/StubSchemaXmlFileLocater.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Locaters\r\n */\r\n\r\nimport * as path from \"path\";\r\nimport {\r\n ECSchemaError, ECSchemaStatus, ECVersion, ISchemaLocater, Schema, SchemaContext, SchemaInfo, SchemaKey, SchemaMatchType,\r\n} from \"@itwin/ecschema-metadata\";\r\nimport { FileSchemaKey, SchemaFileLocater } from \"./SchemaFileLocater\";\r\n\r\nfunction isECv2Schema(schemaText: string): boolean {\r\n return /<ECSchema[^>]*xmlns=\".*ECXML.2.0\"/.test(schemaText);\r\n}\r\n\r\n/**\r\n * A SchemaLocater implementation for locating XML Schema files\r\n * from the file system using configurable search paths. Returns only\r\n * Schemas from XML files with their keys populated.\r\n * @internal\r\n */\r\nexport class StubSchemaXmlFileLocater extends SchemaFileLocater implements ISchemaLocater {\r\n /**\r\n * Loads a Schema from an XML file on the file system.\r\n * @param schemaPath The path to the Schema file.\r\n * @param schemaText Optionally pass in the schema text read from the schema file. If undefined,\r\n * the schema will be read from the provided schemaPath.\r\n */\r\n public loadSchema(schemaPath: string, schemaText?: string): Schema {\r\n schemaText = schemaText || this.readUtf8FileToStringSync(schemaPath);\r\n if (!schemaText)\r\n throw new ECSchemaError(ECSchemaStatus.UnableToLocateSchema, `Unable to locate schema XML file at ${schemaPath}`);\r\n\r\n this.addSchemaSearchPaths([path.dirname(schemaPath)]);\r\n const key = this.getSchemaKey(schemaText);\r\n const alias = this.getSchemaAlias(schemaText);\r\n const context = new SchemaContext();\r\n context.addLocater(this);\r\n\r\n // Load the schema and return it\r\n const schema = new Schema(context, new FileSchemaKey(key, schemaPath, schemaText), alias);\r\n this.addSchemaReferences(schema, context, SchemaMatchType.LatestWriteCompatible);\r\n return schema;\r\n }\r\n\r\n /**\r\n * Attempts to retrieve a Schema with the given SchemaKey by using the configured search paths\r\n * to locate the XML Schema file from the file system. Returns only Schemas from XML files with\r\n * their keys populated.\r\n * @param key The SchemaKey of the Schema to retrieve.\r\n * @param matchType The SchemaMatchType.\r\n * @param context The SchemaContext that will control the lifetime of the schema.\r\n */\r\n public async getSchema(key: SchemaKey, matchType: SchemaMatchType, context: SchemaContext): Promise<Schema | undefined> {\r\n return this.getSchemaSync(key, matchType, context);\r\n }\r\n\r\n /**\r\n * Gets the schema info which matches the provided SchemaKey. The schema info may be returned before the schema is fully loaded.\r\n * The fully loaded schema can be gotten later from the context using the getCachedSchema method.\r\n * @param schemaKey The SchemaKey describing the schema to get from the cache.\r\n * @param matchType The match type to use when locating the schema\r\n * @param context The SchemaContext that will control the lifetime of the schema and holds the schema's references, if they exist.\r\n */\r\n public async getSchemaInfo(key: SchemaKey, matchType: SchemaMatchType, context: SchemaContext): Promise<SchemaInfo | undefined> {\r\n return this.getSchemaSync(key, matchType, context) as SchemaInfo;\r\n }\r\n\r\n /**\r\n * Attempts to retrieve a Schema with the given SchemaKey by using the configured search paths\r\n * to locate the XML Schema file from the file system. Returns only Schemas from XML files with\r\n * their keys populated.\r\n * @param key The SchemaKey of the Schema to retrieve.\r\n * @param matchType The SchemaMatchType.\r\n * @param context The SchemaContext that will control the lifetime of the schema.\r\n */\r\n public getSchemaSync(key: SchemaKey, matchType: SchemaMatchType, context: SchemaContext): Schema | undefined {\r\n const candidates: FileSchemaKey[] = this.findEligibleSchemaKeys(key, matchType, \"xml\");\r\n\r\n if (!candidates || candidates.length === 0)\r\n return undefined;\r\n\r\n const maxCandidate = candidates.sort(this.compareSchemaKeyByVersion)[candidates.length - 1];\r\n const alias = this.getSchemaAlias(maxCandidate.schemaText!);\r\n const schema = new Schema(context, maxCandidate, alias);\r\n context.addSchemaSync(schema);\r\n\r\n this.addSchemaReferences(schema, context, SchemaMatchType.LatestWriteCompatible);\r\n return schema;\r\n }\r\n\r\n /**\r\n * Constructs a SchemaKey based on the information in the Schema XML.\r\n * @param schemaXml The Schema XML as a string.\r\n */\r\n public getSchemaKey(schemaXml: string): SchemaKey {\r\n const matches = schemaXml.match(/<ECSchema ([^]+?)>/g);\r\n if (!matches || matches.length !== 1)\r\n throw new ECSchemaError(ECSchemaStatus.InvalidSchemaXML, `Could not find '<ECSchema>' tag in the given file`);\r\n\r\n const name = matches[0].match(/schemaName=\"(.+?)\"/);\r\n const version = matches[0].match(/version=\"(.+?)\"/);\r\n if (!name || name.length !== 2 || !version || version.length !== 2)\r\n throw new ECSchemaError(ECSchemaStatus.InvalidSchemaXML, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);\r\n\r\n let ecVersion: ECVersion;\r\n if (isECv2Schema(schemaXml))\r\n ecVersion = this.fromECv2String(version[1]);\r\n else\r\n ecVersion = ECVersion.fromString(version[1]);\r\n\r\n const key = new SchemaKey(name[1], ecVersion);\r\n return key;\r\n }\r\n\r\n /**\r\n * Gets an array of SchemaKeys of the Schemas referenced by the given Schema.\r\n * @param xmlSchemaKey The SchemaKey of the parent Schema containing the references.\r\n */\r\n private getSchemaReferenceKeys(schemaKey: FileSchemaKey): SchemaKey[] {\r\n return this._getSchemaReferenceKeys(schemaKey);\r\n }\r\n\r\n /**\r\n * Adds schemas to the references collection for the given Schema by locating\r\n * the referenced schemas.\r\n * @param schema The schema for which to add the references.\r\n * @param context The SchemaContext that will control the lifetime of the schema.\r\n * @param refMatchType The SchemaMatchType to use when locating schema references.\r\n */\r\n private addSchemaReferences(schema: Schema, context: SchemaContext, refMatchType: SchemaMatchType): void {\r\n const refKeys = this.getSchemaReferenceKeys(schema.schemaKey as FileSchemaKey);\r\n\r\n for (const key of refKeys) {\r\n const refSchema = context ? context.getSchemaSync(key, refMatchType) : undefined;\r\n if (!refSchema)\r\n throw new ECSchemaError(ECSchemaStatus.UnableToLocateSchema, `Unable to locate referenced schema: ${key.name}.${key.readVersion}.${key.writeVersion}.${key.minorVersion}`);\r\n\r\n schema.references.push(refSchema);\r\n }\r\n }\r\n\r\n /**\r\n * Gets an array of SchemaKeys of the Schemas referenced by the given Schema.\r\n * @param data The Schema XML string.\r\n */\r\n private _getSchemaReferenceKeys(xmlSchemaKey: FileSchemaKey): SchemaKey[] {\r\n const file = xmlSchemaKey.schemaText;\r\n\r\n if (!file)\r\n throw new ECSchemaError(ECSchemaStatus.UnableToLocateSchema, `Could not locate the schema file, ${xmlSchemaKey.fileName}, for the schema ${xmlSchemaKey.name}`);\r\n\r\n const data = file.toString().replace(/(\\s*)<!--[\\s\\S]*?--!?>/g, \"\"); // ignore any comments in the XML file when getting the array of SchemaKeys\r\n\r\n const keys: SchemaKey[] = [];\r\n const matches = data.match(/<ECSchemaReference ([^]+?)\\/>/g);\r\n if (!matches)\r\n return keys;\r\n\r\n for (const match of matches) {\r\n const name = match.match(/name=\"(.+?)\"/);\r\n const versionMatch = match.match(/version=\"(.+?)\"/);\r\n if (!name || name.length !== 2 || !versionMatch || versionMatch.length !== 2)\r\n throw new ECSchemaError(ECSchemaStatus.InvalidSchemaXML, `Invalid ECSchemaReference xml encountered in the schema file`);\r\n\r\n // write version maybe missing, so insert \"0\"\r\n let versionString = versionMatch[1];\r\n const versionParts = versionString.split(\".\");\r\n if (versionParts.length === 2)\r\n versionParts.splice(1, 0, \"0\");\r\n\r\n versionString = versionParts.join(\".\");\r\n\r\n const key = new SchemaKey(name[1], ECVersion.fromString(versionString));\r\n keys.push(key);\r\n }\r\n\r\n return keys;\r\n }\r\n\r\n /**\r\n * Gets the Schema alias from the Schema XML.\r\n * @param data The Schema XML as a string.\r\n */\r\n private getSchemaAlias(schemaXml: string): string {\r\n let match: any;\r\n\r\n if (isECv2Schema(schemaXml)) {\r\n match = schemaXml.match(/<ECSchema.*nameSpacePrefix=\"(?<alias>\\w+)\"/) as any;\r\n } else {\r\n match = schemaXml.match(/<ECSchema.*alias=\"(?<alias>\\w+)\"/) as any;\r\n }\r\n\r\n if (!match || !match.groups.alias) {\r\n throw new ECSchemaError(ECSchemaStatus.InvalidSchemaXML, `Could not find the ECSchema 'alias' tag in the given file.`);\r\n }\r\n\r\n return match.groups.alias;\r\n }\r\n\r\n /**\r\n * Parses a valid EC 2.0 version string and returns an ECVersion object. The second digit becomes the minor version,\r\n * and a zero is inserted as the 'write' digit. Example: \"1.1\" -> \"1.0.1\".\r\n * @param versionString A valid EC 2.0 version string of the format, 'RR.mm'.\r\n */\r\n private fromECv2String(versionString: string): ECVersion {\r\n const [read, minor] = versionString.split(\".\");\r\n\r\n if (!read)\r\n throw new ECSchemaError(ECSchemaStatus.InvalidECVersion, `The read version is missing from version string, ${versionString}`);\r\n\r\n if (!minor)\r\n throw new ECSchemaError(ECSchemaStatus.InvalidECVersion, `The minor version is missing from version string, ${versionString}`);\r\n\r\n return new ECVersion(+read, 0, +minor);\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecschema-locaters.js","sourceRoot":"","sources":["../../src/ecschema-locaters.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;;;;;;;;;;;;;;AAE/F,sDAAoC;AACpC,8CAA4B;AAC5B,0DAAwC;AACxC,yDAAuC;AACvC,6DAA2C;AAC3C,2DAAyC;AAEzC;;;;GAIG;AACH;;;GAGG;AACH;;;GAGG","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\nexport * from \"./SchemaFileLocater\";\nexport * from \"./SchemaXml\";\nexport * from \"./SchemaJsonFileLocater\";\nexport * from \"./SchemaXmlFileLocater\";\nexport * from \"./StubSchemaXmlFileLocater\";\nexport * from \"./SchemaXmlStringLocater\";\n\n/** @docs-package-description\n * The ecschema-locaters package contains classes for locating ECSchemas within a given\n * [SchemaContext](https://www.itwinjs.org/reference/ecschema-metadata/context/schemacontext). Each locater\n * implements the [ISchemaLocater interface](https://www.itwinjs.org/reference/ecschema-metadata/context/ischemalocater/).\n */\n/**\n * @docs-group-description Locaters\n * ISchemaLocater implementations used to locate schemas in a given [SchemaContext](https://www.itwinjs.org/reference/ecschema-metadata/context/schemacontext).\n */\n/**\n * @docs-group-description Utils\n * A set of utility classes used throughout the package.\n */\n"]}
|
|
1
|
+
{"version":3,"file":"ecschema-locaters.js","sourceRoot":"","sources":["../../src/ecschema-locaters.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;;;;;;;;;;;;;;AAE/F,sDAAoC;AACpC,8CAA4B;AAC5B,0DAAwC;AACxC,yDAAuC;AACvC,6DAA2C;AAC3C,2DAAyC;AAEzC;;;;GAIG;AACH;;;GAGG;AACH;;;GAGG","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nexport * from \"./SchemaFileLocater\";\r\nexport * from \"./SchemaXml\";\r\nexport * from \"./SchemaJsonFileLocater\";\r\nexport * from \"./SchemaXmlFileLocater\";\r\nexport * from \"./StubSchemaXmlFileLocater\";\r\nexport * from \"./SchemaXmlStringLocater\";\r\n\r\n/** @docs-package-description\r\n * The ecschema-locaters package contains classes for locating ECSchemas within a given\r\n * [SchemaContext](https://www.itwinjs.org/reference/ecschema-metadata/context/schemacontext). Each locater\r\n * implements the [ISchemaLocater interface](https://www.itwinjs.org/reference/ecschema-metadata/context/ischemalocater/).\r\n */\r\n/**\r\n * @docs-group-description Locaters\r\n * ISchemaLocater implementations used to locate schemas in a given [SchemaContext](https://www.itwinjs.org/reference/ecschema-metadata/context/schemacontext).\r\n */\r\n/**\r\n * @docs-group-description Utils\r\n * A set of utility classes used throughout the package.\r\n */\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConcurrentGetSchemaJson.test.js","sourceRoot":"","sources":["../../../src/test/ConcurrentGetSchemaJson.test.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;AAE/F,+BAAsC;AACtC,yBAAyB;AACzB,6BAA6B;AAC7B,gEAA2H;AAC3H,oEAAiE;AAEjE,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;IACtD,MAAM,QAAQ,GAAW,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE5D,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,IAAI,OAAsB,CAAC;IAC3B,IAAI,WAA0B,CAAC;IAC/B,IAAI,WAAW,GAA8B,EAAE,CAAC;IAEhD,MAAM,OAAO,GAAG,IAAI,6CAAqB,EAAE,CAAC;IAE5C,MAAM,CAAC,GAAG,EAAE;QACV,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC1B,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;YAC9B,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAE7B,sBAAsB,EAAE,CAAC;QAEzB,uEAAuE;QACvE,WAAW,GAAG,IAAI,iCAAa,EAAE,CAAC;QAClC,OAAO,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAC1C,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEhC,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACjD,WAAW,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACrD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YACpE,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC;YACnC,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC;YAEzC,MAAM,GAAG,GAAG,IAAI,6BAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,6BAAS,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACjG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAsB,EAAE;YACvD,IAAI,CAAC,GAAG;gBACN,OAAO,SAAS,CAAC;YAEnB,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,EAAE,mCAAe,CAAC,MAAM,CAAC,CAAC;YACtE,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,IAAI,iCAAa,EAAE,CAAC;QAC9B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,SAAS,wBAAwB,CAAC,WAAmB,EAAE,cAAsB;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;QACnH,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,SAAS,sBAAsB;QAC7B,wCAAwC;QACxC,EAAE,CAAC,YAAY,CAAC,wBAAwB,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAC3I,EAAE,CAAC,YAAY,CAAC,wBAAwB,CAAC,+BAA+B,EAAE,qCAAqC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,qCAAqC,CAAC,CAAC,CAAC;QAClL,EAAE,CAAC,YAAY,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC,CAAC;QACxI,EAAE,CAAC,YAAY,CAAC,wBAAwB,CAAC,8BAA8B,EAAE,mCAAmC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,mCAAmC,CAAC,CAAC,CAAC;QAC7K,EAAE,CAAC,YAAY,CAAC,wBAAwB,CAAC,qBAAqB,EAAE,4BAA4B,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,4BAA4B,CAAC,CAAC,CAAC;QACtJ,EAAE,CAAC,YAAY,CAAC,wBAAwB,CAAC,+BAA+B,EAAE,oCAAoC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,oCAAoC,CAAC,CAAC,CAAC;QAChL,EAAE,CAAC,YAAY,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC,CAAC;QACxI,EAAE,CAAC,YAAY,CAAC,wBAAwB,CAAC,6BAA6B,EAAE,kCAAkC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,kCAAkC,CAAC,CAAC,CAAC;QAC1K,EAAE,CAAC,YAAY,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC,CAAC;QACvI,EAAE,CAAC,YAAY,CAAC,wBAAwB,CAAC,2BAA2B,EAAE,iCAAiC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,iCAAiC,CAAC,CAAC,CAAC;QACtK,EAAE,CAAC,YAAY,CAAC,wBAAwB,CAAC,0BAA0B,EAAE,gCAAgC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,gCAAgC,CAAC,CAAC,CAAC;QACnK,EAAE,CAAC,YAAY,CAAC,wBAAwB,CAAC,gCAAgC,EAAE,qCAAqC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,qCAAqC,CAAC,CAAC,CAAC;QACnL,EAAE,CAAC,YAAY,CAAC,wBAAwB,CAAC,kCAAkC,EAAE,uCAAuC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,uCAAuC,CAAC,CAAC,CAAC;QACzL,EAAE,CAAC,YAAY,CAAC,wBAAwB,CAAC,4BAA4B,EAAE,kCAAkC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,kCAAkC,CAAC,CAAC,CAAC;QACzK,EAAE,CAAC,YAAY,CAAC,wBAAwB,CAAC,4BAA4B,EAAE,kCAAkC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,kCAAkC,CAAC,CAAC,CAAC;QACzK,EAAE,CAAC,YAAY,CAAC,wBAAwB,CAAC,cAAc,EAAE,qBAAqB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC,CAAC;IACnI,CAAC;IAED,EAAE,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;QACjG,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAA+B,EAAE;YAC/E,IAAI,CAAC,GAAG;gBACN,OAAO,SAAS,CAAC;YAEnB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,mCAAe,CAAC,MAAM,CAAC,CAAC;YACpE,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAEvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAClC,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YACvC,MAAM,QAAQ,GAAG,UAAW,CAAC,MAAM,EAAE,CAAC;YAEtC,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YACxC,MAAM,SAAS,GAAG,WAAY,CAAC,MAAM,EAAE,CAAC;YACxC,IAAA,aAAM,EAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAA+B,EAAE;YACtF,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpB,mCAAmC;gBACnC,IAAI,CAAC,GAAG;oBACN,OAAO,SAAS,CAAC;gBAEnB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,mCAAe,CAAC,MAAM,CAAC,CAAC;gBACpE,OAAO,MAAM,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,sCAAsC;gBACtC,IAAI,CAAC,GAAG;oBACN,OAAO,SAAS,CAAC;gBAEnB,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,mCAAe,CAAC,MAAM,CAAC,CAAC;gBAClE,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAElD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAClC,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YACvC,MAAM,QAAQ,GAAG,UAAW,CAAC,MAAM,EAAE,CAAC;YAEtC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YACnC,MAAM,UAAU,GAAG,MAAO,CAAC,MAAM,EAAE,CAAC;YACpC,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,kIAAkI;IAClI,EAAE,CAAC,IAAI,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAA+B,EAAE;YAC/E,IAAI,CAAC,GAAG;gBACN,OAAO,SAAS,CAAC;YAEnB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,mCAAe,CAAC,MAAM,CAAC,CAAC;YACpE,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACrC,MAAM,OAAO,CAAC;QAChB,CAAC;QAED,IAAA,aAAM,EAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAA+B,EAAE;YAC/E,IAAI,CAAC,GAAG;gBACN,OAAO,SAAS,CAAC;YAEnB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,mCAAe,CAAC,MAAM,CAAC,CAAC;YACpE,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAEvD,IAAA,aAAM,EAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,aAAa,GAAG,IAAI,iCAAa,EAAE,CAAC;QAC1C,MAAM,eAAe,GAAG,IAAI,6CAAqB,EAAE,CAAC;QACpD,eAAe,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAClD,aAAa,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QAE1C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YACpC,OAAO,aAAa,CAAC,SAAS,CAAC,IAAI,6BAAS,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC,CACH,CAAC;QACF,IAAA,aAAM,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACzB,IAAA,aAAM,EAAC,MAAM,KAAK,SAAS,CAAC,CAAC;YAC7B,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;QAC/F,MAAM,aAAa,GAAG,IAAI,iCAAa,EAAE,CAAC;QAC1C,MAAM,eAAe,GAAG,IAAI,6CAAqB,EAAE,CAAC;QACpD,eAAe,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAClD,aAAa,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QAE1C,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YAClC,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;gBAC1B,eAAe,GAAG,CAAC,CAAC;gBACpB,OAAO,aAAa,CAAC,SAAS,CAAC,IAAI,6BAAS,CAAC,SAAS,CAAC,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,aAAa,CAAC,SAAS,CAAC,IAAI,6BAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,CACH,CAAC;QACF,IAAA,aAAM,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACzB,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,CAAC,UAAkB,EAAE,EAAE;QAC5C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO;gBACL,OAAO,EAAE,qDAAqD;gBAC9D,KAAK,EAAE,KAAK;gBACZ,WAAW,EAAE,4EAA4E;gBACzF,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,UAAU;gBACnB,UAAU,EAAC,CAAC,EAAC,IAAI,EAAC,sBAAsB,EAAE,OAAO,EAAC,UAAU,EAAC,EAAC,EAAC,IAAI,EAAC,SAAS,EAAE,OAAO,EAAC,UAAU,EAAC,EAAC,EAAC,IAAI,EAAC,oBAAoB,EAAE,OAAO,EAAC,UAAU,EAAC,CAAC;aACpJ,CAAC;QACJ,CAAC;QACD,IAAI,UAAU,KAAK,sBAAsB,EAAE,CAAC;YAC1C,OAAO;gBACL,OAAO,EAAE,qDAAqD;gBAC9D,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,wHAAwH;gBACrI,KAAK,EAAE,wBAAwB;gBAC/B,IAAI,EAAE,sBAAsB;gBAC5B,OAAO,EAAE,UAAU;aACpB,CAAC;QACJ,CAAC;QACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO;gBACL,OAAO,EAAE,qDAAqD;gBAC9D,KAAK,EAAE,SAAS;gBAChB,WAAW,EAAE,cAAc;gBAC3B,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,UAAU;aACpB,CAAC;QACJ,CAAC;QACD,IAAI,UAAU,KAAK,oBAAoB,EAAE,CAAC;YACxC,OAAO;gBACL,OAAO,EAAE,qDAAqD;gBAC9D,KAAK,EAAE,oBAAoB;gBAC3B,WAAW,EAAE,yBAAyB;gBACtC,KAAK,EAAE,oBAAoB;gBAC3B,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,UAAU;aACpB,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,aAAa,GAAG,IAAI,iCAAa,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,qCAAiB,CAAC,cAAc,CAAC,CAAC;QAC1D,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAEtC,MAAM,WAAW,GAAG,IAAI,CAAC;QACzB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YAC5C,OAAO,aAAa,CAAC,SAAS,CAAC,IAAI,6BAAS,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC,CACH,CAAC;QACF,IAAA,aAAM,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACzB,IAAA,aAAM,EAAC,MAAM,KAAK,SAAS,CAAC,CAAC;YAC7B,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;QAC3F,MAAM,aAAa,GAAG,IAAI,iCAAa,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,qCAAiB,CAAC,cAAc,CAAC,CAAC;QAC1D,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAEtC,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,MAAM,WAAW,GAAG,IAAI,CAAC;QACzB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YAC5C,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;gBAC1B,eAAe,GAAG,CAAC,CAAC;gBACpB,OAAO,aAAa,CAAC,SAAS,CAAC,IAAI,6BAAS,CAAC,SAAS,CAAC,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,aAAa,CAAC,SAAS,CAAC,IAAI,6BAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,CACH,CAAC;QACF,IAAA,aAAM,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACzB,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,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\nimport { assert, expect } from \"chai\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport { ECVersion, Schema, SchemaContext, SchemaJsonLocater, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\nimport { SchemaJsonFileLocater } from \"../SchemaJsonFileLocater\";\n\ndescribe(\"Concurrent schema JSON deserialization\", () => {\n const assetDir: string = path.join(__dirname, \"assets\");\n const schemaFolder = path.join(__dirname, \"assets\", \"json\");\n\n const schemaKeys: SchemaKey[] = [];\n let context: SchemaContext;\n let contextSync: SchemaContext;\n let syncSchemas: Array<Schema | undefined> = [];\n\n const locater = new SchemaJsonFileLocater();\n\n before(() => {\n if (!fs.existsSync(assetDir))\n fs.mkdirSync(assetDir);\n if (!fs.existsSync(schemaFolder))\n fs.mkdirSync(schemaFolder);\n\n copySchemasToAssetsDir();\n\n // Deserialize schemas synchronously/serially as standard to compare to\n contextSync = new SchemaContext();\n locater.addSchemaSearchPath(schemaFolder);\n contextSync.addLocater(locater);\n\n const schemaFiles = fs.readdirSync(schemaFolder);\n schemaFiles.forEach((fileName) => {\n const schemaFile = path.join(schemaFolder, fileName);\n const schemaJson = JSON.parse(fs.readFileSync(schemaFile, \"utf-8\"));\n const schemaName = schemaJson.name;\n const schemaVersion = schemaJson.version;\n\n const key = new SchemaKey(schemaName.toString(), ECVersion.fromString(schemaVersion.toString()));\n schemaKeys.push(key);\n });\n\n syncSchemas = schemaKeys.map((key): Schema | undefined => {\n if (!key)\n return undefined;\n\n const schema = contextSync.getSchemaSync(key, SchemaMatchType.Latest);\n return schema;\n });\n });\n\n beforeEach(() => {\n context = new SchemaContext();\n context.addLocater(locater);\n });\n\n function getSchemaPathFromPackage(packageName: string, schemaFileName: string): string {\n const schemaFile = path.join(__dirname, \"..\", \"..\", \"..\", \"node_modules\", \"@bentley\", packageName, schemaFileName);\n return schemaFile;\n }\n\n function copySchemasToAssetsDir() {\n // Copy Schemas that we need for testing\n fs.copyFileSync(getSchemaPathFromPackage(\"aec-units-schema\", \"AecUnits.ecschema.json\"), path.join(schemaFolder, \"AecUnits.ecschema.json\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"architectural-physical-schema\", \"ArchitecturalPhysical.ecschema.json\"), path.join(schemaFolder, \"ArchitecturalPhysical.ecschema.json\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"bis-core-schema\", \"BisCore.ecschema.json\"), path.join(schemaFolder, \"BisCore.ecschema.json\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"bis-custom-attributes-schema\", \"BisCustomAttributes.ecschema.json\"), path.join(schemaFolder, \"BisCustomAttributes.ecschema.json\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"construction-schema\", \"Construction.ecschema.json\"), path.join(schemaFolder, \"Construction.ecschema.json\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"core-custom-attributes-schema\", \"CoreCustomAttributes.ecschema.json\"), path.join(schemaFolder, \"CoreCustomAttributes.ecschema.json\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"ecdb-map-schema\", \"ECDbMap.ecschema.json\"), path.join(schemaFolder, \"ECDbMap.ecschema.json\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"ecdb-schema-policies-schema\", \"ECDbSchemaPolicies.ecschema.json\"), path.join(schemaFolder, \"ECDbSchemaPolicies.ecschema.json\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"formats-schema\", \"Formats.ecschema.json\"), path.join(schemaFolder, \"Formats.ecschema.json\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"linear-referencing-schema\", \"LinearReferencing.ecschema.json\"), path.join(schemaFolder, \"LinearReferencing.ecschema.json\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"physical-material-schema\", \"PhysicalMaterial.ecschema.json\"), path.join(schemaFolder, \"PhysicalMaterial.ecschema.json\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"plant-custom-attributes-schema\", \"PlantCustomAttributes.ecschema.json\"), path.join(schemaFolder, \"PlantCustomAttributes.ecschema.json\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"quantity-takeoffs-aspects-schema\", \"QuantityTakeoffsAspects.ecschema.json\"), path.join(schemaFolder, \"QuantityTakeoffsAspects.ecschema.json\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"spatial-composition-schema\", \"SpatialComposition.ecschema.json\"), path.join(schemaFolder, \"SpatialComposition.ecschema.json\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"structural-physical-schema\", \"StructuralPhysical.ecschema.json\"), path.join(schemaFolder, \"StructuralPhysical.ecschema.json\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"units-schema\", \"Units.ecschema.json\"), path.join(schemaFolder, \"Units.ecschema.json\"));\n }\n\n it(\"should match schemas deserialized concurrently with schemas deserialized serially\", async () => {\n const schemaPromises = schemaKeys.map(async (key): Promise<Schema | undefined> => {\n if (!key)\n return undefined;\n\n const schema = await context.getSchema(key, SchemaMatchType.Latest);\n return schema;\n });\n const asyncSchemas = await Promise.all(schemaPromises);\n\n for (let i = 0; i < schemaKeys.length; i++) {\n const syncSchema = syncSchemas[i];\n expect(syncSchema).not.to.be.undefined;\n const syncJSON = syncSchema!.toJSON();\n\n const asyncSchema = asyncSchemas[i];\n expect(asyncSchema).not.to.be.undefined;\n const asyncJSON = asyncSchema!.toJSON();\n expect(asyncJSON).to.deep.equal(syncJSON);\n }\n });\n\n it(\"should be able to mix getSchema and getSchemaSync\", async () => {\n const schemaPromises = schemaKeys.map(async (key, index): Promise<Schema | undefined> => {\n if (index % 2 === 0) {\n // Use getSchema() for even indices\n if (!key)\n return undefined;\n\n const schema = await context.getSchema(key, SchemaMatchType.Latest);\n return schema;\n } else {\n // Use getSchemaSync() for odd indices\n if (!key)\n return undefined;\n\n const schema = context.getSchemaSync(key, SchemaMatchType.Latest);\n return schema;\n }\n });\n const schemas = await Promise.all(schemaPromises);\n\n for (let i = 0; i < schemaKeys.length; i++) {\n const syncSchema = syncSchemas[i];\n expect(syncSchema).not.to.be.undefined;\n const syncJSON = syncSchema!.toJSON();\n\n const schema = schemas[i];\n expect(schema).not.to.be.undefined;\n const schemaJSON = schema!.toJSON();\n expect(schemaJSON).to.deep.equal(syncJSON);\n }\n });\n\n /* Run these tests below one at a time. Running them together doesn't get accurate performance likely bc of disk access caching */\n it.skip(\"should measure regular deserialization performance\", async () => {\n const schemaPromises = schemaKeys.map(async (key): Promise<Schema | undefined> => {\n if (!key)\n return undefined;\n\n const schema = await context.getSchema(key, SchemaMatchType.Latest);\n return schema;\n });\n\n for (const promise of schemaPromises) {\n await promise;\n }\n\n expect(schemaPromises.length).to.equal(schemaKeys.length);\n });\n\n it.skip(\"should measure concurrent deserialization performance\", async () => {\n const schemaPromises = schemaKeys.map(async (key): Promise<Schema | undefined> => {\n if (!key)\n return undefined;\n\n const schema = await context.getSchema(key, SchemaMatchType.Latest);\n return schema;\n });\n const asyncSchemas = await Promise.all(schemaPromises);\n\n expect(asyncSchemas.length).to.equal(schemaKeys.length);\n });\n\n it(\"Concurrently get BisCore with SchemaJsonFileLocater\", async () => {\n const schemaContext = new SchemaContext();\n const jsonFileLocater = new SchemaJsonFileLocater();\n jsonFileLocater.addSchemaSearchPath(schemaFolder);\n schemaContext.addLocater(jsonFileLocater);\n\n const schemas = await Promise.all(\n [...Array(100).keys()].map(async () => {\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\n }),\n );\n expect(schemas.length).to.equal(100);\n schemas.forEach((schema) => {\n assert(schema !== undefined);\n expect(schema.fullName).to.equal(\"BisCore\");\n });\n });\n\n it(\"Concurrently get a schema and it's referenced schema with SchemaJsonFileLocater\", async () => {\n const schemaContext = new SchemaContext();\n const jsonFileLocater = new SchemaJsonFileLocater();\n jsonFileLocater.addSchemaSearchPath(schemaFolder);\n schemaContext.addLocater(jsonFileLocater);\n\n let getBisCoreFirst = 0;\n const schemas = await Promise.all(\n [...Array(2).keys()].map(async () => {\n if (getBisCoreFirst === 0) {\n getBisCoreFirst = 1;\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\n }\n return schemaContext.getSchema(new SchemaKey(\"CoreCustomAttributes\"));\n }),\n );\n expect(schemas.length).to.equal(2);\n schemas.forEach((schema) => {\n expect(schema).to.not.be.undefined;\n });\n });\n\n const getSchemaProps = (schemaName: string) => {\n if (schemaName === \"BisCore\") {\n return {\n $schema: \"https://dev.bentley.com/json_schemas/ec/32/ecschema\",\n alias: \"bis\",\n description: \"The BIS core schema contains classes that all other domain schemas extend.\",\n label: \"BIS Core\",\n name: \"BisCore\",\n version: \"01.00.15\",\n references:[{name:\"CoreCustomAttributes\", version:\"01.00.04\"},{name:\"ECDbMap\", version:\"02.00.00\"},{name:\"ECDbSchemaPolicies\", version:\"01.00.00\"}],\n };\n }\n if (schemaName === \"CoreCustomAttributes\") {\n return {\n $schema: \"https://dev.bentley.com/json_schemas/ec/32/ecschema\",\n alias: \"CoreCA\",\n description: \"Custom attributes to indicate core EC concepts, may include struct classes intended for use in core custom attributes.\",\n label: \"Core Custom Attributes\",\n name: \"CoreCustomAttributes\",\n version: \"01.00.04\",\n };\n }\n if (schemaName === \"ECDbMap\") {\n return {\n $schema: \"https://dev.bentley.com/json_schemas/ec/32/ecschema\",\n alias: \"ECDbMap\",\n description: \"ECDbMap Desc\",\n label: \"ECDbMap\",\n name: \"ECDbMap\",\n version: \"02.00.00\",\n };\n }\n if (schemaName === \"ECDbSchemaPolicies\") {\n return {\n $schema: \"https://dev.bentley.com/json_schemas/ec/32/ecschema\",\n alias: \"ECDbSchemaPolicies\",\n description: \"ECDbSchemaPolicies Desc\",\n label: \"ECDbSchemaPolicies\",\n name: \"ECDbSchemaPolicies\",\n version: \"01.00.00\",\n };\n }\n\n return undefined;\n };\n\n it(\"Concurrently get BisCore with SchemaJsonLocater\", async () => {\n const schemaContext = new SchemaContext();\n const jsonLocater = new SchemaJsonLocater(getSchemaProps);\n schemaContext.addLocater(jsonLocater);\n\n const schemaCount = 1000;\n const schemas = await Promise.all(\n [...Array(schemaCount).keys()].map(async () => {\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\n }),\n );\n expect(schemas.length).to.equal(schemaCount);\n schemas.forEach((schema) => {\n assert(schema !== undefined);\n expect(schema.fullName).to.equal(\"BisCore\");\n });\n });\n\n it(\"Concurrently get a schema and it's referenced schema with SchemaJsonLocater\", async () => {\n const schemaContext = new SchemaContext();\n const jsonLocater = new SchemaJsonLocater(getSchemaProps);\n schemaContext.addLocater(jsonLocater);\n\n let getBisCoreFirst = 0;\n const schemaCount = 1000;\n const schemas = await Promise.all(\n [...Array(schemaCount).keys()].map(async () => {\n if (getBisCoreFirst === 0) {\n getBisCoreFirst = 1;\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\n }\n return schemaContext.getSchema(new SchemaKey(\"CoreCustomAttributes\"));\n }),\n );\n expect(schemas.length).to.equal(schemaCount);\n schemas.forEach((schema) => {\n expect(schema).to.not.be.undefined;\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"ConcurrentGetSchemaJson.test.js","sourceRoot":"","sources":["../../../src/test/ConcurrentGetSchemaJson.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { assert, expect } from \"chai\";\r\nimport * as fs from \"fs\";\r\nimport * as path from \"path\";\r\nimport { ECVersion, Schema, SchemaContext, SchemaJsonLocater, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\r\nimport { SchemaJsonFileLocater } from \"../SchemaJsonFileLocater\";\r\n\r\ndescribe(\"Concurrent schema JSON deserialization\", () => {\r\n const assetDir: string = path.join(__dirname, \"assets\");\r\n const schemaFolder = path.join(__dirname, \"assets\", \"json\");\r\n\r\n const schemaKeys: SchemaKey[] = [];\r\n let context: SchemaContext;\r\n let contextSync: SchemaContext;\r\n let syncSchemas: Array<Schema | undefined> = [];\r\n\r\n const locater = new SchemaJsonFileLocater();\r\n\r\n before(() => {\r\n if (!fs.existsSync(assetDir))\r\n fs.mkdirSync(assetDir);\r\n if (!fs.existsSync(schemaFolder))\r\n fs.mkdirSync(schemaFolder);\r\n\r\n copySchemasToAssetsDir();\r\n\r\n // Deserialize schemas synchronously/serially as standard to compare to\r\n contextSync = new SchemaContext();\r\n locater.addSchemaSearchPath(schemaFolder);\r\n contextSync.addLocater(locater);\r\n\r\n const schemaFiles = fs.readdirSync(schemaFolder);\r\n schemaFiles.forEach((fileName) => {\r\n const schemaFile = path.join(schemaFolder, fileName);\r\n const schemaJson = JSON.parse(fs.readFileSync(schemaFile, \"utf-8\"));\r\n const schemaName = schemaJson.name;\r\n const schemaVersion = schemaJson.version;\r\n\r\n const key = new SchemaKey(schemaName.toString(), ECVersion.fromString(schemaVersion.toString()));\r\n schemaKeys.push(key);\r\n });\r\n\r\n syncSchemas = schemaKeys.map((key): Schema | undefined => {\r\n if (!key)\r\n return undefined;\r\n\r\n const schema = contextSync.getSchemaSync(key, SchemaMatchType.Latest);\r\n return schema;\r\n });\r\n });\r\n\r\n beforeEach(() => {\r\n context = new SchemaContext();\r\n context.addLocater(locater);\r\n });\r\n\r\n function getSchemaPathFromPackage(packageName: string, schemaFileName: string): string {\r\n const schemaFile = path.join(__dirname, \"..\", \"..\", \"..\", \"node_modules\", \"@bentley\", packageName, schemaFileName);\r\n return schemaFile;\r\n }\r\n\r\n function copySchemasToAssetsDir() {\r\n // Copy Schemas that we need for testing\r\n fs.copyFileSync(getSchemaPathFromPackage(\"aec-units-schema\", \"AecUnits.ecschema.json\"), path.join(schemaFolder, \"AecUnits.ecschema.json\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"architectural-physical-schema\", \"ArchitecturalPhysical.ecschema.json\"), path.join(schemaFolder, \"ArchitecturalPhysical.ecschema.json\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"bis-core-schema\", \"BisCore.ecschema.json\"), path.join(schemaFolder, \"BisCore.ecschema.json\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"bis-custom-attributes-schema\", \"BisCustomAttributes.ecschema.json\"), path.join(schemaFolder, \"BisCustomAttributes.ecschema.json\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"construction-schema\", \"Construction.ecschema.json\"), path.join(schemaFolder, \"Construction.ecschema.json\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"core-custom-attributes-schema\", \"CoreCustomAttributes.ecschema.json\"), path.join(schemaFolder, \"CoreCustomAttributes.ecschema.json\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"ecdb-map-schema\", \"ECDbMap.ecschema.json\"), path.join(schemaFolder, \"ECDbMap.ecschema.json\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"ecdb-schema-policies-schema\", \"ECDbSchemaPolicies.ecschema.json\"), path.join(schemaFolder, \"ECDbSchemaPolicies.ecschema.json\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"formats-schema\", \"Formats.ecschema.json\"), path.join(schemaFolder, \"Formats.ecschema.json\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"linear-referencing-schema\", \"LinearReferencing.ecschema.json\"), path.join(schemaFolder, \"LinearReferencing.ecschema.json\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"physical-material-schema\", \"PhysicalMaterial.ecschema.json\"), path.join(schemaFolder, \"PhysicalMaterial.ecschema.json\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"plant-custom-attributes-schema\", \"PlantCustomAttributes.ecschema.json\"), path.join(schemaFolder, \"PlantCustomAttributes.ecschema.json\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"quantity-takeoffs-aspects-schema\", \"QuantityTakeoffsAspects.ecschema.json\"), path.join(schemaFolder, \"QuantityTakeoffsAspects.ecschema.json\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"spatial-composition-schema\", \"SpatialComposition.ecschema.json\"), path.join(schemaFolder, \"SpatialComposition.ecschema.json\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"structural-physical-schema\", \"StructuralPhysical.ecschema.json\"), path.join(schemaFolder, \"StructuralPhysical.ecschema.json\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"units-schema\", \"Units.ecschema.json\"), path.join(schemaFolder, \"Units.ecschema.json\"));\r\n }\r\n\r\n it(\"should match schemas deserialized concurrently with schemas deserialized serially\", async () => {\r\n const schemaPromises = schemaKeys.map(async (key): Promise<Schema | undefined> => {\r\n if (!key)\r\n return undefined;\r\n\r\n const schema = await context.getSchema(key, SchemaMatchType.Latest);\r\n return schema;\r\n });\r\n const asyncSchemas = await Promise.all(schemaPromises);\r\n\r\n for (let i = 0; i < schemaKeys.length; i++) {\r\n const syncSchema = syncSchemas[i];\r\n expect(syncSchema).not.to.be.undefined;\r\n const syncJSON = syncSchema!.toJSON();\r\n\r\n const asyncSchema = asyncSchemas[i];\r\n expect(asyncSchema).not.to.be.undefined;\r\n const asyncJSON = asyncSchema!.toJSON();\r\n expect(asyncJSON).to.deep.equal(syncJSON);\r\n }\r\n });\r\n\r\n it(\"should be able to mix getSchema and getSchemaSync\", async () => {\r\n const schemaPromises = schemaKeys.map(async (key, index): Promise<Schema | undefined> => {\r\n if (index % 2 === 0) {\r\n // Use getSchema() for even indices\r\n if (!key)\r\n return undefined;\r\n\r\n const schema = await context.getSchema(key, SchemaMatchType.Latest);\r\n return schema;\r\n } else {\r\n // Use getSchemaSync() for odd indices\r\n if (!key)\r\n return undefined;\r\n\r\n const schema = context.getSchemaSync(key, SchemaMatchType.Latest);\r\n return schema;\r\n }\r\n });\r\n const schemas = await Promise.all(schemaPromises);\r\n\r\n for (let i = 0; i < schemaKeys.length; i++) {\r\n const syncSchema = syncSchemas[i];\r\n expect(syncSchema).not.to.be.undefined;\r\n const syncJSON = syncSchema!.toJSON();\r\n\r\n const schema = schemas[i];\r\n expect(schema).not.to.be.undefined;\r\n const schemaJSON = schema!.toJSON();\r\n expect(schemaJSON).to.deep.equal(syncJSON);\r\n }\r\n });\r\n\r\n /* Run these tests below one at a time. Running them together doesn't get accurate performance likely bc of disk access caching */\r\n it.skip(\"should measure regular deserialization performance\", async () => {\r\n const schemaPromises = schemaKeys.map(async (key): Promise<Schema | undefined> => {\r\n if (!key)\r\n return undefined;\r\n\r\n const schema = await context.getSchema(key, SchemaMatchType.Latest);\r\n return schema;\r\n });\r\n\r\n for (const promise of schemaPromises) {\r\n await promise;\r\n }\r\n\r\n expect(schemaPromises.length).to.equal(schemaKeys.length);\r\n });\r\n\r\n it.skip(\"should measure concurrent deserialization performance\", async () => {\r\n const schemaPromises = schemaKeys.map(async (key): Promise<Schema | undefined> => {\r\n if (!key)\r\n return undefined;\r\n\r\n const schema = await context.getSchema(key, SchemaMatchType.Latest);\r\n return schema;\r\n });\r\n const asyncSchemas = await Promise.all(schemaPromises);\r\n\r\n expect(asyncSchemas.length).to.equal(schemaKeys.length);\r\n });\r\n\r\n it(\"Concurrently get BisCore with SchemaJsonFileLocater\", async () => {\r\n const schemaContext = new SchemaContext();\r\n const jsonFileLocater = new SchemaJsonFileLocater();\r\n jsonFileLocater.addSchemaSearchPath(schemaFolder);\r\n schemaContext.addLocater(jsonFileLocater);\r\n\r\n const schemas = await Promise.all(\r\n [...Array(100).keys()].map(async () => {\r\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\r\n }),\r\n );\r\n expect(schemas.length).to.equal(100);\r\n schemas.forEach((schema) => {\r\n assert(schema !== undefined);\r\n expect(schema.fullName).to.equal(\"BisCore\");\r\n });\r\n });\r\n\r\n it(\"Concurrently get a schema and it's referenced schema with SchemaJsonFileLocater\", async () => {\r\n const schemaContext = new SchemaContext();\r\n const jsonFileLocater = new SchemaJsonFileLocater();\r\n jsonFileLocater.addSchemaSearchPath(schemaFolder);\r\n schemaContext.addLocater(jsonFileLocater);\r\n\r\n let getBisCoreFirst = 0;\r\n const schemas = await Promise.all(\r\n [...Array(2).keys()].map(async () => {\r\n if (getBisCoreFirst === 0) {\r\n getBisCoreFirst = 1;\r\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\r\n }\r\n return schemaContext.getSchema(new SchemaKey(\"CoreCustomAttributes\"));\r\n }),\r\n );\r\n expect(schemas.length).to.equal(2);\r\n schemas.forEach((schema) => {\r\n expect(schema).to.not.be.undefined;\r\n });\r\n });\r\n\r\n const getSchemaProps = (schemaName: string) => {\r\n if (schemaName === \"BisCore\") {\r\n return {\r\n $schema: \"https://dev.bentley.com/json_schemas/ec/32/ecschema\",\r\n alias: \"bis\",\r\n description: \"The BIS core schema contains classes that all other domain schemas extend.\",\r\n label: \"BIS Core\",\r\n name: \"BisCore\",\r\n version: \"01.00.15\",\r\n references:[{name:\"CoreCustomAttributes\", version:\"01.00.04\"},{name:\"ECDbMap\", version:\"02.00.00\"},{name:\"ECDbSchemaPolicies\", version:\"01.00.00\"}],\r\n };\r\n }\r\n if (schemaName === \"CoreCustomAttributes\") {\r\n return {\r\n $schema: \"https://dev.bentley.com/json_schemas/ec/32/ecschema\",\r\n alias: \"CoreCA\",\r\n description: \"Custom attributes to indicate core EC concepts, may include struct classes intended for use in core custom attributes.\",\r\n label: \"Core Custom Attributes\",\r\n name: \"CoreCustomAttributes\",\r\n version: \"01.00.04\",\r\n };\r\n }\r\n if (schemaName === \"ECDbMap\") {\r\n return {\r\n $schema: \"https://dev.bentley.com/json_schemas/ec/32/ecschema\",\r\n alias: \"ECDbMap\",\r\n description: \"ECDbMap Desc\",\r\n label: \"ECDbMap\",\r\n name: \"ECDbMap\",\r\n version: \"02.00.00\",\r\n };\r\n }\r\n if (schemaName === \"ECDbSchemaPolicies\") {\r\n return {\r\n $schema: \"https://dev.bentley.com/json_schemas/ec/32/ecschema\",\r\n alias: \"ECDbSchemaPolicies\",\r\n description: \"ECDbSchemaPolicies Desc\",\r\n label: \"ECDbSchemaPolicies\",\r\n name: \"ECDbSchemaPolicies\",\r\n version: \"01.00.00\",\r\n };\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n it(\"Concurrently get BisCore with SchemaJsonLocater\", async () => {\r\n const schemaContext = new SchemaContext();\r\n const jsonLocater = new SchemaJsonLocater(getSchemaProps);\r\n schemaContext.addLocater(jsonLocater);\r\n\r\n const schemaCount = 1000;\r\n const schemas = await Promise.all(\r\n [...Array(schemaCount).keys()].map(async () => {\r\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\r\n }),\r\n );\r\n expect(schemas.length).to.equal(schemaCount);\r\n schemas.forEach((schema) => {\r\n assert(schema !== undefined);\r\n expect(schema.fullName).to.equal(\"BisCore\");\r\n });\r\n });\r\n\r\n it(\"Concurrently get a schema and it's referenced schema with SchemaJsonLocater\", async () => {\r\n const schemaContext = new SchemaContext();\r\n const jsonLocater = new SchemaJsonLocater(getSchemaProps);\r\n schemaContext.addLocater(jsonLocater);\r\n\r\n let getBisCoreFirst = 0;\r\n const schemaCount = 1000;\r\n const schemas = await Promise.all(\r\n [...Array(schemaCount).keys()].map(async () => {\r\n if (getBisCoreFirst === 0) {\r\n getBisCoreFirst = 1;\r\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\r\n }\r\n return schemaContext.getSchema(new SchemaKey(\"CoreCustomAttributes\"));\r\n }),\r\n );\r\n expect(schemas.length).to.equal(schemaCount);\r\n schemas.forEach((schema) => {\r\n expect(schema).to.not.be.undefined;\r\n });\r\n });\r\n});\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConcurrentGetSchemaXml.test.js","sourceRoot":"","sources":["../../../src/test/ConcurrentGetSchemaXml.test.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 { assert, expect } from \"chai\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport { Schema, SchemaContext, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\nimport { SchemaXmlFileLocater } from \"../SchemaXmlFileLocater\";\nimport { StubSchemaXmlFileLocater } from \"../StubSchemaXmlFileLocater\";\nimport { SchemaXml } from \"../SchemaXml\";\nimport { SchemaXmlStringLocater } from \"../SchemaXmlStringLocater\";\n\ndescribe(\"Concurrent XML schema deserialization\", () => {\n const assetDir: string = path.join(__dirname, \"assets\");\n const schemaFolder = path.join(__dirname, \"assets\", \"xml\");\n\n const schemaKeys: SchemaKey[] = [];\n let context: SchemaContext;\n let contextSync: SchemaContext;\n let syncSchemas: Array<Schema | undefined> = [];\n\n const locater = new SchemaXmlFileLocater();\n const helperLocater = new StubSchemaXmlFileLocater();\n\n before(() => {\n if (!fs.existsSync(assetDir))\n fs.mkdirSync(assetDir);\n if (!fs.existsSync(schemaFolder))\n fs.mkdirSync(schemaFolder);\n\n copySchemasToAssetsDir();\n\n // Deserialize schemas synchronously/serially as standard to compare to\n contextSync = new SchemaContext();\n locater.addSchemaSearchPath(schemaFolder);\n contextSync.addLocater(locater);\n\n const schemaFiles = fs.readdirSync(schemaFolder);\n schemaFiles.forEach((fileName) => {\n const schemaFile = path.join(schemaFolder, fileName);\n const key = helperLocater.getSchemaKey(fs.readFileSync(schemaFile, \"utf-8\"));\n\n schemaKeys.push(key);\n });\n\n syncSchemas = schemaKeys.map((key): Schema | undefined => {\n if (!key)\n return undefined;\n\n const schema = contextSync.getSchemaSync(key, SchemaMatchType.Latest);\n return schema;\n });\n });\n\n beforeEach(() => {\n context = new SchemaContext();\n context.addLocater(locater);\n });\n\n function getSchemaPathFromPackage(packageName: string, schemaFileName: string): string {\n const schemaFile = path.join(__dirname, \"..\", \"..\", \"..\", \"node_modules\", \"@bentley\", packageName, schemaFileName);\n return schemaFile;\n }\n\n function copySchemasToAssetsDir() {\n // Copy Schemas that we need for testing\n fs.copyFileSync(getSchemaPathFromPackage(\"aec-units-schema\", \"AecUnits.ecschema.xml\"), path.join(schemaFolder, \"AecUnits.ecschema.xml\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"bis-custom-attributes-schema\", \"BisCustomAttributes.ecschema.xml\"), path.join(schemaFolder, \"BisCustomAttributes.ecschema.xml\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"ecdb-map-schema\", \"ECDbMap.ecschema.xml\"), path.join(schemaFolder, \"ECDbMap.ecschema.xml\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"ecdb-schema-policies-schema\", \"ECDbSchemaPolicies.ecschema.xml\"), path.join(schemaFolder, \"ECDbSchemaPolicies.ecschema.xml\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"formats-schema\", \"Formats.ecschema.xml\"), path.join(schemaFolder, \"Formats.ecschema.xml\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"units-schema\", \"Units.ecschema.xml\"), path.join(schemaFolder, \"Units.ecschema.xml\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"core-custom-attributes-schema\", \"CoreCustomAttributes.ecschema.xml\"), path.join(schemaFolder, \"CoreCustomAttributes.ecschema.xml\"));\n fs.copyFileSync(getSchemaPathFromPackage(\"bis-core-schema\", \"BisCore.ecschema.xml\"), path.join(schemaFolder, \"BisCore.ecschema.xml\"));\n }\n\n const loadSchemaString = (schemaName: string) => {\n const searchPath = path.join(__dirname, \"assets\", \"xml\", `${schemaName}.ecschema.xml`);\n const file = fs.readFileSync(searchPath);\n return file.toString();\n };\n\n it(\"should match schemas deserialized concurrently with schemas deserialized serially\", async () => {\n const schemaPromises = schemaKeys.map(async (key): Promise<Schema | undefined> => {\n if (!key)\n return undefined;\n\n const schema = await context.getSchema(key, SchemaMatchType.Latest);\n return schema;\n });\n const asyncSchemas = await Promise.all(schemaPromises);\n\n for (let i = 0; i < schemaKeys.length; i++) {\n const syncSchema = syncSchemas[i];\n expect(syncSchema).not.to.be.undefined;\n const syncXML = await SchemaXml.writeString(syncSchema!);\n\n const asyncSchema = asyncSchemas[i];\n expect(asyncSchema).not.to.be.undefined;\n const asyncXML = await SchemaXml.writeString(asyncSchema!);\n expect(asyncXML).to.deep.equal(syncXML);\n }\n });\n\n it(\"should be able to mix getSchema and getSchemaSync\", async () => {\n const schemaPromises = schemaKeys.map(async (key, index): Promise<Schema | undefined> => {\n if (index % 2 === 0) {\n // Use getSchema() for even indices\n if (!key)\n return undefined;\n\n const schema = await context.getSchema(key, SchemaMatchType.Latest);\n return schema;\n } else {\n // Use getSchemaSync() for odd indices\n if (!key)\n return undefined;\n\n const schema = context.getSchemaSync(key, SchemaMatchType.Latest);\n return schema;\n }\n });\n const asyncSchemas = await Promise.all(schemaPromises);\n\n for (let i = 0; i < schemaKeys.length; i++) {\n const syncSchema = syncSchemas[i];\n expect(syncSchema).not.to.be.undefined;\n const syncXML = await SchemaXml.writeString(syncSchema!);\n\n const asyncSchema = asyncSchemas[i];\n expect(asyncSchema).not.to.be.undefined;\n const asyncXML = await SchemaXml.writeString(asyncSchema!);\n expect(asyncXML).to.deep.equal(syncXML);\n }\n });\n\n it(\"Concurrently get BisCore with SchemaXmlFileLocater\", async () => {\n const schemaContext = new SchemaContext();\n const xmlFileLocater = new SchemaXmlFileLocater();\n xmlFileLocater.addSchemaSearchPath(schemaFolder);\n schemaContext.addLocater(xmlFileLocater);\n\n const schemas = await Promise.all(\n [...Array(100).keys()].map(async () => {\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\n }),\n );\n expect(schemas.length).to.equal(100);\n schemas.forEach((schema) => {\n assert(schema !== undefined);\n expect(schema.fullName).to.equal(\"BisCore\");\n });\n });\n\n it(\"Concurrently get a schema and it's referenced schema with SchemaXmlFileLocater\", async () => {\n const schemaContext = new SchemaContext();\n const xmlFileLocater = new SchemaXmlFileLocater();\n xmlFileLocater.addSchemaSearchPath(schemaFolder);\n schemaContext.addLocater(xmlFileLocater);\n\n let getBisCoreFirst = 0;\n const schemas = await Promise.all(\n [...Array(2).keys()].map(async () => {\n if (getBisCoreFirst === 0) {\n getBisCoreFirst = 1;\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\n }\n return schemaContext.getSchema(new SchemaKey(\"CoreCustomAttributes\"));\n }),\n );\n expect(schemas.length).to.equal(2);\n schemas.forEach((schema) => {\n expect(schema).to.not.be.undefined;\n });\n });\n\n it(\"Concurrently get BisCore with SchemaXmlStringLocater\", async () => {\n const schemaContext = new SchemaContext();\n const xmlStringLocater = new SchemaXmlStringLocater();\n schemaContext.addLocater(xmlStringLocater);\n\n xmlStringLocater.addSchemaString(loadSchemaString(\"CoreCustomAttributes\"));\n xmlStringLocater.addSchemaString(loadSchemaString(\"ECDbMap\"));\n xmlStringLocater.addSchemaString(loadSchemaString(\"ECDbSchemaPolicies\"));\n xmlStringLocater.addSchemaString(loadSchemaString(\"BisCore\"));\n\n const schemas = await Promise.all(\n [...Array(100).keys()].map(async () => {\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\n }),\n );\n expect(schemas.length).to.equal(100);\n schemas.forEach((schema) => {\n assert(schema !== undefined);\n expect(schema.fullName).to.equal(\"BisCore\");\n });\n });\n\n it(\"Concurrently get a schema and it's referenced schema with SchemaXmlStringLocater\", async () => {\n const schemaContext = new SchemaContext();\n const xmlStringLocater = new SchemaXmlStringLocater();\n schemaContext.addLocater(xmlStringLocater);\n\n xmlStringLocater.addSchemaString(loadSchemaString(\"CoreCustomAttributes\"));\n xmlStringLocater.addSchemaString(loadSchemaString(\"ECDbMap\"));\n xmlStringLocater.addSchemaString(loadSchemaString(\"ECDbSchemaPolicies\"));\n xmlStringLocater.addSchemaString(loadSchemaString(\"BisCore\"));\n\n let getBisCoreFirst = 0;\n const schemas = await Promise.all(\n [...Array(2).keys()].map(async () => {\n if (getBisCoreFirst === 0) {\n getBisCoreFirst = 1;\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\n }\n return schemaContext.getSchema(new SchemaKey(\"CoreCustomAttributes\"));\n }),\n );\n expect(schemas.length).to.equal(2);\n schemas.forEach((schema) => {\n expect(schema).to.not.be.undefined;\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"ConcurrentGetSchemaXml.test.js","sourceRoot":"","sources":["../../../src/test/ConcurrentGetSchemaXml.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { assert, expect } from \"chai\";\r\nimport * as fs from \"fs\";\r\nimport * as path from \"path\";\r\nimport { Schema, SchemaContext, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\r\nimport { SchemaXmlFileLocater } from \"../SchemaXmlFileLocater\";\r\nimport { StubSchemaXmlFileLocater } from \"../StubSchemaXmlFileLocater\";\r\nimport { SchemaXml } from \"../SchemaXml\";\r\nimport { SchemaXmlStringLocater } from \"../SchemaXmlStringLocater\";\r\n\r\ndescribe(\"Concurrent XML schema deserialization\", () => {\r\n const assetDir: string = path.join(__dirname, \"assets\");\r\n const schemaFolder = path.join(__dirname, \"assets\", \"xml\");\r\n\r\n const schemaKeys: SchemaKey[] = [];\r\n let context: SchemaContext;\r\n let contextSync: SchemaContext;\r\n let syncSchemas: Array<Schema | undefined> = [];\r\n\r\n const locater = new SchemaXmlFileLocater();\r\n const helperLocater = new StubSchemaXmlFileLocater();\r\n\r\n before(() => {\r\n if (!fs.existsSync(assetDir))\r\n fs.mkdirSync(assetDir);\r\n if (!fs.existsSync(schemaFolder))\r\n fs.mkdirSync(schemaFolder);\r\n\r\n copySchemasToAssetsDir();\r\n\r\n // Deserialize schemas synchronously/serially as standard to compare to\r\n contextSync = new SchemaContext();\r\n locater.addSchemaSearchPath(schemaFolder);\r\n contextSync.addLocater(locater);\r\n\r\n const schemaFiles = fs.readdirSync(schemaFolder);\r\n schemaFiles.forEach((fileName) => {\r\n const schemaFile = path.join(schemaFolder, fileName);\r\n const key = helperLocater.getSchemaKey(fs.readFileSync(schemaFile, \"utf-8\"));\r\n\r\n schemaKeys.push(key);\r\n });\r\n\r\n syncSchemas = schemaKeys.map((key): Schema | undefined => {\r\n if (!key)\r\n return undefined;\r\n\r\n const schema = contextSync.getSchemaSync(key, SchemaMatchType.Latest);\r\n return schema;\r\n });\r\n });\r\n\r\n beforeEach(() => {\r\n context = new SchemaContext();\r\n context.addLocater(locater);\r\n });\r\n\r\n function getSchemaPathFromPackage(packageName: string, schemaFileName: string): string {\r\n const schemaFile = path.join(__dirname, \"..\", \"..\", \"..\", \"node_modules\", \"@bentley\", packageName, schemaFileName);\r\n return schemaFile;\r\n }\r\n\r\n function copySchemasToAssetsDir() {\r\n // Copy Schemas that we need for testing\r\n fs.copyFileSync(getSchemaPathFromPackage(\"aec-units-schema\", \"AecUnits.ecschema.xml\"), path.join(schemaFolder, \"AecUnits.ecschema.xml\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"bis-custom-attributes-schema\", \"BisCustomAttributes.ecschema.xml\"), path.join(schemaFolder, \"BisCustomAttributes.ecschema.xml\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"ecdb-map-schema\", \"ECDbMap.ecschema.xml\"), path.join(schemaFolder, \"ECDbMap.ecschema.xml\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"ecdb-schema-policies-schema\", \"ECDbSchemaPolicies.ecschema.xml\"), path.join(schemaFolder, \"ECDbSchemaPolicies.ecschema.xml\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"formats-schema\", \"Formats.ecschema.xml\"), path.join(schemaFolder, \"Formats.ecschema.xml\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"units-schema\", \"Units.ecschema.xml\"), path.join(schemaFolder, \"Units.ecschema.xml\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"core-custom-attributes-schema\", \"CoreCustomAttributes.ecschema.xml\"), path.join(schemaFolder, \"CoreCustomAttributes.ecschema.xml\"));\r\n fs.copyFileSync(getSchemaPathFromPackage(\"bis-core-schema\", \"BisCore.ecschema.xml\"), path.join(schemaFolder, \"BisCore.ecschema.xml\"));\r\n }\r\n\r\n const loadSchemaString = (schemaName: string) => {\r\n const searchPath = path.join(__dirname, \"assets\", \"xml\", `${schemaName}.ecschema.xml`);\r\n const file = fs.readFileSync(searchPath);\r\n return file.toString();\r\n };\r\n\r\n it(\"should match schemas deserialized concurrently with schemas deserialized serially\", async () => {\r\n const schemaPromises = schemaKeys.map(async (key): Promise<Schema | undefined> => {\r\n if (!key)\r\n return undefined;\r\n\r\n const schema = await context.getSchema(key, SchemaMatchType.Latest);\r\n return schema;\r\n });\r\n const asyncSchemas = await Promise.all(schemaPromises);\r\n\r\n for (let i = 0; i < schemaKeys.length; i++) {\r\n const syncSchema = syncSchemas[i];\r\n expect(syncSchema).not.to.be.undefined;\r\n const syncXML = await SchemaXml.writeString(syncSchema!);\r\n\r\n const asyncSchema = asyncSchemas[i];\r\n expect(asyncSchema).not.to.be.undefined;\r\n const asyncXML = await SchemaXml.writeString(asyncSchema!);\r\n expect(asyncXML).to.deep.equal(syncXML);\r\n }\r\n });\r\n\r\n it(\"should be able to mix getSchema and getSchemaSync\", async () => {\r\n const schemaPromises = schemaKeys.map(async (key, index): Promise<Schema | undefined> => {\r\n if (index % 2 === 0) {\r\n // Use getSchema() for even indices\r\n if (!key)\r\n return undefined;\r\n\r\n const schema = await context.getSchema(key, SchemaMatchType.Latest);\r\n return schema;\r\n } else {\r\n // Use getSchemaSync() for odd indices\r\n if (!key)\r\n return undefined;\r\n\r\n const schema = context.getSchemaSync(key, SchemaMatchType.Latest);\r\n return schema;\r\n }\r\n });\r\n const asyncSchemas = await Promise.all(schemaPromises);\r\n\r\n for (let i = 0; i < schemaKeys.length; i++) {\r\n const syncSchema = syncSchemas[i];\r\n expect(syncSchema).not.to.be.undefined;\r\n const syncXML = await SchemaXml.writeString(syncSchema!);\r\n\r\n const asyncSchema = asyncSchemas[i];\r\n expect(asyncSchema).not.to.be.undefined;\r\n const asyncXML = await SchemaXml.writeString(asyncSchema!);\r\n expect(asyncXML).to.deep.equal(syncXML);\r\n }\r\n });\r\n\r\n it(\"Concurrently get BisCore with SchemaXmlFileLocater\", async () => {\r\n const schemaContext = new SchemaContext();\r\n const xmlFileLocater = new SchemaXmlFileLocater();\r\n xmlFileLocater.addSchemaSearchPath(schemaFolder);\r\n schemaContext.addLocater(xmlFileLocater);\r\n\r\n const schemas = await Promise.all(\r\n [...Array(100).keys()].map(async () => {\r\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\r\n }),\r\n );\r\n expect(schemas.length).to.equal(100);\r\n schemas.forEach((schema) => {\r\n assert(schema !== undefined);\r\n expect(schema.fullName).to.equal(\"BisCore\");\r\n });\r\n });\r\n\r\n it(\"Concurrently get a schema and it's referenced schema with SchemaXmlFileLocater\", async () => {\r\n const schemaContext = new SchemaContext();\r\n const xmlFileLocater = new SchemaXmlFileLocater();\r\n xmlFileLocater.addSchemaSearchPath(schemaFolder);\r\n schemaContext.addLocater(xmlFileLocater);\r\n\r\n let getBisCoreFirst = 0;\r\n const schemas = await Promise.all(\r\n [...Array(2).keys()].map(async () => {\r\n if (getBisCoreFirst === 0) {\r\n getBisCoreFirst = 1;\r\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\r\n }\r\n return schemaContext.getSchema(new SchemaKey(\"CoreCustomAttributes\"));\r\n }),\r\n );\r\n expect(schemas.length).to.equal(2);\r\n schemas.forEach((schema) => {\r\n expect(schema).to.not.be.undefined;\r\n });\r\n });\r\n\r\n it(\"Concurrently get BisCore with SchemaXmlStringLocater\", async () => {\r\n const schemaContext = new SchemaContext();\r\n const xmlStringLocater = new SchemaXmlStringLocater();\r\n schemaContext.addLocater(xmlStringLocater);\r\n\r\n xmlStringLocater.addSchemaString(loadSchemaString(\"CoreCustomAttributes\"));\r\n xmlStringLocater.addSchemaString(loadSchemaString(\"ECDbMap\"));\r\n xmlStringLocater.addSchemaString(loadSchemaString(\"ECDbSchemaPolicies\"));\r\n xmlStringLocater.addSchemaString(loadSchemaString(\"BisCore\"));\r\n\r\n const schemas = await Promise.all(\r\n [...Array(100).keys()].map(async () => {\r\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\r\n }),\r\n );\r\n expect(schemas.length).to.equal(100);\r\n schemas.forEach((schema) => {\r\n assert(schema !== undefined);\r\n expect(schema.fullName).to.equal(\"BisCore\");\r\n });\r\n });\r\n\r\n it(\"Concurrently get a schema and it's referenced schema with SchemaXmlStringLocater\", async () => {\r\n const schemaContext = new SchemaContext();\r\n const xmlStringLocater = new SchemaXmlStringLocater();\r\n schemaContext.addLocater(xmlStringLocater);\r\n\r\n xmlStringLocater.addSchemaString(loadSchemaString(\"CoreCustomAttributes\"));\r\n xmlStringLocater.addSchemaString(loadSchemaString(\"ECDbMap\"));\r\n xmlStringLocater.addSchemaString(loadSchemaString(\"ECDbSchemaPolicies\"));\r\n xmlStringLocater.addSchemaString(loadSchemaString(\"BisCore\"));\r\n\r\n let getBisCoreFirst = 0;\r\n const schemas = await Promise.all(\r\n [...Array(2).keys()].map(async () => {\r\n if (getBisCoreFirst === 0) {\r\n getBisCoreFirst = 1;\r\n return schemaContext.getSchema(new SchemaKey(\"BisCore\"));\r\n }\r\n return schemaContext.getSchema(new SchemaKey(\"CoreCustomAttributes\"));\r\n }),\r\n );\r\n expect(schemas.length).to.equal(2);\r\n schemas.forEach((schema) => {\r\n expect(schema).to.not.be.undefined;\r\n });\r\n });\r\n});\r\n"]}
|
|
@@ -65,7 +65,7 @@ describe("SchemaJsonFileLocater tests: ", () => {
|
|
|
65
65
|
}
|
|
66
66
|
catch (e) {
|
|
67
67
|
const error = e;
|
|
68
|
-
chai_1.assert.strictEqual(error.errorNumber, EC.
|
|
68
|
+
chai_1.assert.strictEqual(error.errorNumber, EC.ECSchemaStatus.InvalidECJson);
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
71
|
chai_1.assert.fail(0, 1, "Expected ECObjects exception");
|
|
@@ -77,7 +77,7 @@ describe("SchemaJsonFileLocater tests: ", () => {
|
|
|
77
77
|
}
|
|
78
78
|
catch (e) {
|
|
79
79
|
const error = e;
|
|
80
|
-
chai_1.assert.strictEqual(error.errorNumber, EC.
|
|
80
|
+
chai_1.assert.strictEqual(error.errorNumber, EC.ECSchemaStatus.InvalidECJson);
|
|
81
81
|
return;
|
|
82
82
|
}
|
|
83
83
|
chai_1.assert.fail(0, 1, "Expected ECObjects exception");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaJsonFileLocator.test.js","sourceRoot":"","sources":["../../../src/test/SchemaJsonFileLocator.test.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 { assert } from \"chai\";\nimport * as path from \"path\";\nimport * as EC from \"@itwin/ecschema-metadata\";\nimport { FileSchemaKey } from \"../SchemaFileLocater\";\nimport { SchemaJsonFileLocater } from \"../SchemaJsonFileLocater\";\n\ndescribe(\"SchemaJsonFileLocater tests: \", () => {\n let locater: SchemaJsonFileLocater;\n let context: EC.SchemaContext;\n\n beforeEach(() => {\n locater = new SchemaJsonFileLocater();\n\n locater.addSchemaSearchPath(path.join(__dirname, \"assets\"));\n context = new EC.SchemaContext();\n context.addLocater(locater);\n });\n\n it(\"locate valid schema with multiple references\", async () => {\n const schemaKey = new EC.SchemaKey(\"SchemaA\", 1, 1, 1);\n const schema = await context.getSchema(schemaKey, EC.SchemaMatchType.Exact);\n\n assert.isDefined(schema);\n assert.strictEqual(schema!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(schema!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"locate valid schema with multiple references synchronously\", () => {\n const schemaKey = new EC.SchemaKey(\"SchemaA\", 1, 1, 1);\n const schema = context.getSchemaSync(schemaKey, EC.SchemaMatchType.Exact);\n\n assert.isDefined(schema);\n assert.strictEqual(schema!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(schema!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchema called multiple times for same schema\", async () => {\n const schemaKey = new EC.SchemaKey(\"SchemaD\", 4, 4, 4);\n\n const locater1 = await locater.getSchema(schemaKey, EC.SchemaMatchType.Exact, new EC.SchemaContext());\n const locater2 = await locater.getSchema(schemaKey, EC.SchemaMatchType.Exact, new EC.SchemaContext());\n const context1 = await context.getSchema(schemaKey, EC.SchemaMatchType.Exact);\n const context2 = await context.getSchema(schemaKey, EC.SchemaMatchType.Exact);\n\n // locater should not cache, but context should cache\n assert.notEqual(locater1, locater2);\n assert.notEqual(locater1, context1);\n assert.strictEqual(context1, context2);\n });\n\n it(\"getSchema called multiple times for same schema synchronously\", () => {\n const schemaKey = new EC.SchemaKey(\"SchemaD\", 4, 4, 4);\n\n const locater1 = locater.getSchemaSync(schemaKey, EC.SchemaMatchType.Exact, new EC.SchemaContext());\n const locater2 = locater.getSchemaSync(schemaKey, EC.SchemaMatchType.Exact, new EC.SchemaContext());\n const context1 = context.getSchemaSync(schemaKey, EC.SchemaMatchType.Exact);\n const context2 = context.getSchemaSync(schemaKey, EC.SchemaMatchType.Exact);\n\n // locater should not cache, but context should cache\n assert.notEqual(locater1, locater2);\n assert.notEqual(locater1, context1);\n assert.strictEqual(context1, context2);\n });\n\n it(\"getSchema which does not exist, returns undefined\", async () => {\n const schemaKey = new EC.SchemaKey(\"DoesNotExist\");\n const result = await locater.getSchema(schemaKey, EC.SchemaMatchType.Exact, context);\n assert.isUndefined(result);\n });\n\n it(\"loadSchema from file, bad schema name, throws\", async () => {\n const schemaKey = new EC.SchemaKey(\"BadSchemaName\");\n\n try {\n await locater.getSchema(schemaKey, EC.SchemaMatchType.Exact, context);\n } catch (e) {\n const error = e as EC.ECObjectsError;\n assert.strictEqual(error.errorNumber, EC.ECObjectsStatus.InvalidECJson);\n return;\n }\n\n assert.fail(0, 1, \"Expected ECObjects exception\");\n });\n\n it(\"loadSchema from file, bad schema version, throws\", async () => {\n const schemaKey = new EC.SchemaKey(\"BadSchemaVersion\");\n\n try {\n await locater.getSchema(schemaKey, EC.SchemaMatchType.Exact, context);\n } catch (e) {\n const error = e as EC.ECObjectsError;\n assert.strictEqual(error.errorNumber, EC.ECObjectsStatus.InvalidECJson);\n return;\n }\n\n assert.fail(0, 1, \"Expected ECObjects exception\");\n });\n\n it(\"getSchema, full version, succeeds\", async () => {\n const stub = await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 1, 1), EC.SchemaMatchType.Exact, context);\n\n assert.isDefined(stub);\n const key = stub!.schemaKey as FileSchemaKey;\n assert.strictEqual(key.name, \"SchemaA\");\n assert.strictEqual(key.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchema, exact version, wrong minor, fails\", async () => {\n assert.isUndefined(await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 1, 2), EC.SchemaMatchType.Exact, context));\n });\n\n it(\"getSchema, latest, succeeds\", async () => {\n const schema = await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 1, 0), EC.SchemaMatchType.Latest, context);\n assert.isDefined(schema);\n assert.strictEqual(schema!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(schema!.schemaKey.version.toString(), \"02.00.02\");\n });\n\n it(\"getSchema, latest write compatible, succeeds\", async () => {\n const stub = await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 1, 0), EC.SchemaMatchType.LatestWriteCompatible, context);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchema, latest write compatible, write version wrong, fails\", async () => {\n assert.isUndefined(await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 2, 0), EC.SchemaMatchType.LatestWriteCompatible, context));\n });\n\n it(\"getSchema, latest read compatible, succeeds\", async () => {\n const stub = await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 0, 0), EC.SchemaMatchType.LatestReadCompatible, context);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchema, latest read compatible, read version wrong, fails\", async () => {\n assert.isUndefined(await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 2, 1, 1), EC.SchemaMatchType.LatestReadCompatible, context));\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"SchemaJsonFileLocator.test.js","sourceRoot":"","sources":["../../../src/test/SchemaJsonFileLocator.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { assert } from \"chai\";\r\nimport * as path from \"path\";\r\nimport * as EC from \"@itwin/ecschema-metadata\";\r\nimport { FileSchemaKey } from \"../SchemaFileLocater\";\r\nimport { SchemaJsonFileLocater } from \"../SchemaJsonFileLocater\";\r\n\r\ndescribe(\"SchemaJsonFileLocater tests: \", () => {\r\n let locater: SchemaJsonFileLocater;\r\n let context: EC.SchemaContext;\r\n\r\n beforeEach(() => {\r\n locater = new SchemaJsonFileLocater();\r\n\r\n locater.addSchemaSearchPath(path.join(__dirname, \"assets\"));\r\n context = new EC.SchemaContext();\r\n context.addLocater(locater);\r\n });\r\n\r\n it(\"locate valid schema with multiple references\", async () => {\r\n const schemaKey = new EC.SchemaKey(\"SchemaA\", 1, 1, 1);\r\n const schema = await context.getSchema(schemaKey, EC.SchemaMatchType.Exact);\r\n\r\n assert.isDefined(schema);\r\n assert.strictEqual(schema!.schemaKey.name, \"SchemaA\");\r\n assert.strictEqual(schema!.schemaKey.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"locate valid schema with multiple references synchronously\", () => {\r\n const schemaKey = new EC.SchemaKey(\"SchemaA\", 1, 1, 1);\r\n const schema = context.getSchemaSync(schemaKey, EC.SchemaMatchType.Exact);\r\n\r\n assert.isDefined(schema);\r\n assert.strictEqual(schema!.schemaKey.name, \"SchemaA\");\r\n assert.strictEqual(schema!.schemaKey.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"getSchema called multiple times for same schema\", async () => {\r\n const schemaKey = new EC.SchemaKey(\"SchemaD\", 4, 4, 4);\r\n\r\n const locater1 = await locater.getSchema(schemaKey, EC.SchemaMatchType.Exact, new EC.SchemaContext());\r\n const locater2 = await locater.getSchema(schemaKey, EC.SchemaMatchType.Exact, new EC.SchemaContext());\r\n const context1 = await context.getSchema(schemaKey, EC.SchemaMatchType.Exact);\r\n const context2 = await context.getSchema(schemaKey, EC.SchemaMatchType.Exact);\r\n\r\n // locater should not cache, but context should cache\r\n assert.notEqual(locater1, locater2);\r\n assert.notEqual(locater1, context1);\r\n assert.strictEqual(context1, context2);\r\n });\r\n\r\n it(\"getSchema called multiple times for same schema synchronously\", () => {\r\n const schemaKey = new EC.SchemaKey(\"SchemaD\", 4, 4, 4);\r\n\r\n const locater1 = locater.getSchemaSync(schemaKey, EC.SchemaMatchType.Exact, new EC.SchemaContext());\r\n const locater2 = locater.getSchemaSync(schemaKey, EC.SchemaMatchType.Exact, new EC.SchemaContext());\r\n const context1 = context.getSchemaSync(schemaKey, EC.SchemaMatchType.Exact);\r\n const context2 = context.getSchemaSync(schemaKey, EC.SchemaMatchType.Exact);\r\n\r\n // locater should not cache, but context should cache\r\n assert.notEqual(locater1, locater2);\r\n assert.notEqual(locater1, context1);\r\n assert.strictEqual(context1, context2);\r\n });\r\n\r\n it(\"getSchema which does not exist, returns undefined\", async () => {\r\n const schemaKey = new EC.SchemaKey(\"DoesNotExist\");\r\n const result = await locater.getSchema(schemaKey, EC.SchemaMatchType.Exact, context);\r\n assert.isUndefined(result);\r\n });\r\n\r\n it(\"loadSchema from file, bad schema name, throws\", async () => {\r\n const schemaKey = new EC.SchemaKey(\"BadSchemaName\");\r\n\r\n try {\r\n await locater.getSchema(schemaKey, EC.SchemaMatchType.Exact, context);\r\n } catch (e) {\r\n const error = e as EC.ECSchemaError;\r\n assert.strictEqual(error.errorNumber, EC.ECSchemaStatus.InvalidECJson);\r\n return;\r\n }\r\n\r\n assert.fail(0, 1, \"Expected ECObjects exception\");\r\n });\r\n\r\n it(\"loadSchema from file, bad schema version, throws\", async () => {\r\n const schemaKey = new EC.SchemaKey(\"BadSchemaVersion\");\r\n\r\n try {\r\n await locater.getSchema(schemaKey, EC.SchemaMatchType.Exact, context);\r\n } catch (e) {\r\n const error = e as EC.ECSchemaError;\r\n assert.strictEqual(error.errorNumber, EC.ECSchemaStatus.InvalidECJson);\r\n return;\r\n }\r\n\r\n assert.fail(0, 1, \"Expected ECObjects exception\");\r\n });\r\n\r\n it(\"getSchema, full version, succeeds\", async () => {\r\n const stub = await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 1, 1), EC.SchemaMatchType.Exact, context);\r\n\r\n assert.isDefined(stub);\r\n const key = stub!.schemaKey as FileSchemaKey;\r\n assert.strictEqual(key.name, \"SchemaA\");\r\n assert.strictEqual(key.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"getSchema, exact version, wrong minor, fails\", async () => {\r\n assert.isUndefined(await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 1, 2), EC.SchemaMatchType.Exact, context));\r\n });\r\n\r\n it(\"getSchema, latest, succeeds\", async () => {\r\n const schema = await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 1, 0), EC.SchemaMatchType.Latest, context);\r\n assert.isDefined(schema);\r\n assert.strictEqual(schema!.schemaKey.name, \"SchemaA\");\r\n assert.strictEqual(schema!.schemaKey.version.toString(), \"02.00.02\");\r\n });\r\n\r\n it(\"getSchema, latest write compatible, succeeds\", async () => {\r\n const stub = await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 1, 0), EC.SchemaMatchType.LatestWriteCompatible, context);\r\n\r\n assert.isDefined(stub);\r\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\r\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"getSchema, latest write compatible, write version wrong, fails\", async () => {\r\n assert.isUndefined(await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 2, 0), EC.SchemaMatchType.LatestWriteCompatible, context));\r\n });\r\n\r\n it(\"getSchema, latest read compatible, succeeds\", async () => {\r\n const stub = await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 1, 0, 0), EC.SchemaMatchType.LatestReadCompatible, context);\r\n\r\n assert.isDefined(stub);\r\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\r\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\r\n });\r\n\r\n it(\"getSchema, latest read compatible, read version wrong, fails\", async () => {\r\n assert.isUndefined(await locater.getSchema(new EC.SchemaKey(\"SchemaA\", 2, 1, 1), EC.SchemaMatchType.LatestReadCompatible, context));\r\n });\r\n});\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaXml.test.js","sourceRoot":"","sources":["../../../src/test/SchemaXml.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { expect } from \"chai\";\nimport * as path from \"path\";\nimport * as fs from \"fs-extra\";\nimport * as sinon from \"sinon\";\nimport { SchemaContext, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\nimport { SchemaXmlFileLocater } from \"../SchemaXmlFileLocater\";\nimport { SchemaXml } from \"../SchemaXml\";\n\ndescribe(\"SchemaXml tests:\", () => {\n let locater: SchemaXmlFileLocater;\n let resultLocater: SchemaXmlFileLocater;\n let context: SchemaContext;\n let resultContext: SchemaContext;\n const outDir = path.join(__dirname, \"output\");\n\n before(() => {\n fs.ensureDirSync(outDir);\n });\n\n beforeEach(() => {\n locater = new SchemaXmlFileLocater();\n locater.addSchemaSearchPath(path.join(__dirname, \"assets\"));\n context = new SchemaContext();\n context.addLocater(locater);\n\n resultLocater = new SchemaXmlFileLocater();\n resultLocater.addSchemaSearchPath(path.join(__dirname, \"output\"));\n resultContext = new SchemaContext();\n resultContext.addLocater(resultLocater);\n });\n\n afterEach(() => {\n sinon.restore();\n });\n\n it(\"writeFile creates schema xml file successfully.\", async () => {\n const schemaKey = new SchemaKey(\"SchemaD\", 4, 4, 4);\n const schema = await context.getSchema(schemaKey, SchemaMatchType.Exact);\n\n await SchemaXml.writeFile(schema!, outDir);\n\n const resultSchema = await resultContext.getSchema(schemaKey, SchemaMatchType.Exact);\n\n expect(resultSchema).to.not.be.undefined;\n expect(resultSchema?.schemaKey.matches(schema?.schemaKey as SchemaKey)).to.be.true;\n });\n\n it(\"writeFile with bad path specified, should fail.\", async () => {\n const schemaKey = new SchemaKey(\"SchemaD\", 4, 4, 4);\n const schema = await context.getSchema(schemaKey, SchemaMatchType.Exact);\n\n await expect(SchemaXml.writeFile(schema!, \"badPath\")).to.be.rejectedWith(`The output directory 'badPath' does not exist.`);\n });\n\n it(\"writeFile, writeFile fails, failure handled properly.\", async () => {\n const schemaKey = new SchemaKey(\"SchemaD\", 4, 4, 4);\n const schema = await context.getSchema(schemaKey, SchemaMatchType.Exact);\n sinon.stub(fs, \"writeFile\").rejects(new Error(\"SomeError\"));\n const outFile = path.resolve(outDir, `${schema!.name}.ecschema.xml`);\n\n await expect(SchemaXml.writeFile(schema!, outDir)).to.be.rejectedWith(`An error occurred writing to file '${outFile}': SomeError`);\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"SchemaXml.test.js","sourceRoot":"","sources":["../../../src/test/SchemaXml.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { expect } from \"chai\";\r\nimport * as path from \"path\";\r\nimport * as fs from \"fs-extra\";\r\nimport * as sinon from \"sinon\";\r\nimport { SchemaContext, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\r\nimport { SchemaXmlFileLocater } from \"../SchemaXmlFileLocater\";\r\nimport { SchemaXml } from \"../SchemaXml\";\r\n\r\ndescribe(\"SchemaXml tests:\", () => {\r\n let locater: SchemaXmlFileLocater;\r\n let resultLocater: SchemaXmlFileLocater;\r\n let context: SchemaContext;\r\n let resultContext: SchemaContext;\r\n const outDir = path.join(__dirname, \"output\");\r\n\r\n before(() => {\r\n fs.ensureDirSync(outDir);\r\n });\r\n\r\n beforeEach(() => {\r\n locater = new SchemaXmlFileLocater();\r\n locater.addSchemaSearchPath(path.join(__dirname, \"assets\"));\r\n context = new SchemaContext();\r\n context.addLocater(locater);\r\n\r\n resultLocater = new SchemaXmlFileLocater();\r\n resultLocater.addSchemaSearchPath(path.join(__dirname, \"output\"));\r\n resultContext = new SchemaContext();\r\n resultContext.addLocater(resultLocater);\r\n });\r\n\r\n afterEach(() => {\r\n sinon.restore();\r\n });\r\n\r\n it(\"writeFile creates schema xml file successfully.\", async () => {\r\n const schemaKey = new SchemaKey(\"SchemaD\", 4, 4, 4);\r\n const schema = await context.getSchema(schemaKey, SchemaMatchType.Exact);\r\n\r\n await SchemaXml.writeFile(schema!, outDir);\r\n\r\n const resultSchema = await resultContext.getSchema(schemaKey, SchemaMatchType.Exact);\r\n\r\n expect(resultSchema).to.not.be.undefined;\r\n expect(resultSchema?.schemaKey.matches(schema?.schemaKey as SchemaKey)).to.be.true;\r\n });\r\n\r\n it(\"writeFile with bad path specified, should fail.\", async () => {\r\n const schemaKey = new SchemaKey(\"SchemaD\", 4, 4, 4);\r\n const schema = await context.getSchema(schemaKey, SchemaMatchType.Exact);\r\n\r\n await expect(SchemaXml.writeFile(schema!, \"badPath\")).to.be.rejectedWith(`The output directory 'badPath' does not exist.`);\r\n });\r\n\r\n it(\"writeFile, writeFile fails, failure handled properly.\", async () => {\r\n const schemaKey = new SchemaKey(\"SchemaD\", 4, 4, 4);\r\n const schema = await context.getSchema(schemaKey, SchemaMatchType.Exact);\r\n sinon.stub(fs, \"writeFile\").rejects(new Error(\"SomeError\"));\r\n const outFile = path.resolve(outDir, `${schema!.name}.ecschema.xml`);\r\n\r\n await expect(SchemaXml.writeFile(schema!, outDir)).to.be.rejectedWith(`An error occurred writing to file '${outFile}': SomeError`);\r\n });\r\n});\r\n"]}
|
|
@@ -53,7 +53,7 @@ describe("SchemaXmlFileLocater tests:", () => {
|
|
|
53
53
|
}
|
|
54
54
|
catch (e) {
|
|
55
55
|
const error = e;
|
|
56
|
-
chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.
|
|
56
|
+
chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECSchemaStatus.InvalidSchemaXML);
|
|
57
57
|
return;
|
|
58
58
|
}
|
|
59
59
|
chai_1.assert.fail(0, 1, "Expected ECObjects exception");
|
|
@@ -65,7 +65,7 @@ describe("SchemaXmlFileLocater tests:", () => {
|
|
|
65
65
|
}
|
|
66
66
|
catch (e) {
|
|
67
67
|
const error = e;
|
|
68
|
-
chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.
|
|
68
|
+
chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECSchemaStatus.InvalidSchemaXML);
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
71
|
chai_1.assert.fail(0, 1, "Expected ECObjects exception");
|
|
@@ -77,7 +77,7 @@ describe("SchemaXmlFileLocater tests:", () => {
|
|
|
77
77
|
}
|
|
78
78
|
catch (e) {
|
|
79
79
|
const error = e;
|
|
80
|
-
chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.
|
|
80
|
+
chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECSchemaStatus.InvalidSchemaXML);
|
|
81
81
|
return;
|
|
82
82
|
}
|
|
83
83
|
chai_1.assert.fail(0, 1, "Expected ECObjects exception");
|
|
@@ -95,7 +95,7 @@ describe("SchemaXmlFileLocater tests:", () => {
|
|
|
95
95
|
}
|
|
96
96
|
catch (e) {
|
|
97
97
|
const error = e;
|
|
98
|
-
chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.
|
|
98
|
+
chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECSchemaStatus.UnableToLocateSchema);
|
|
99
99
|
return;
|
|
100
100
|
}
|
|
101
101
|
chai_1.assert.fail();
|
|
@@ -159,23 +159,23 @@ describe("SchemaXmlFileLocater tests:", () => {
|
|
|
159
159
|
});
|
|
160
160
|
it("getSchemaKey, invalid xml, throws", () => {
|
|
161
161
|
const schemaXml = `<ECSchemaBad schemaName="SchemaA" version="1.1.1"> </ECSchemaBad>`;
|
|
162
|
-
(0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.
|
|
162
|
+
(0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECSchemaError, `Could not find '<ECSchema>' tag in the given file`);
|
|
163
163
|
});
|
|
164
164
|
it("getSchemaKey, invalid schemaName attribute, throws", () => {
|
|
165
165
|
const schemaXml = `<ECSchema schemaNameBad="SchemaA" version="1.1.1"> </ECSchema>`;
|
|
166
|
-
(0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.
|
|
166
|
+
(0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);
|
|
167
167
|
});
|
|
168
168
|
it("getSchemaKey, invalid schemaName, throws", () => {
|
|
169
169
|
const schemaXml = `<ECSchema version="1.1.1" schemaName=""> </ECSchema>`;
|
|
170
|
-
(0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.
|
|
170
|
+
(0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);
|
|
171
171
|
});
|
|
172
172
|
it("getSchemaKey, invalid version attribute, throws", () => {
|
|
173
173
|
const schemaXml = `<ECSchema schemaName="SchemaA" versionBad="1.1.1"> </ECSchema>`;
|
|
174
|
-
(0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.
|
|
174
|
+
(0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);
|
|
175
175
|
});
|
|
176
176
|
it("getSchemaKey, invalid version, throws", () => {
|
|
177
177
|
const schemaXml = `<ECSchema schemaName="SchemaA" version=""> </ECSchema>`;
|
|
178
|
-
(0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.
|
|
178
|
+
(0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);
|
|
179
179
|
});
|
|
180
180
|
it("PublishedSchemaXmlFileLocater - should throw with incorrect argument", async () => {
|
|
181
181
|
chai_1.assert.throw(() => new SchemaXmlFileLocater_1.PublishedSchemaXmlFileLocater(__dirname), Error, `The directory ${path.join(__dirname, "ECSchemas")} containing standard schemas does not exist.`);
|