@itwin/ecschema-locaters 5.0.0-dev.99 → 5.1.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/lib/cjs/SchemaFileLocater.d.ts +13 -6
  3. package/lib/cjs/SchemaFileLocater.d.ts.map +1 -1
  4. package/lib/cjs/SchemaFileLocater.js +9 -2
  5. package/lib/cjs/SchemaFileLocater.js.map +1 -1
  6. package/lib/cjs/SchemaJsonFileLocater.d.ts +2 -1
  7. package/lib/cjs/SchemaJsonFileLocater.d.ts.map +1 -1
  8. package/lib/cjs/SchemaJsonFileLocater.js +4 -3
  9. package/lib/cjs/SchemaJsonFileLocater.js.map +1 -1
  10. package/lib/cjs/SchemaXml.d.ts +1 -1
  11. package/lib/cjs/SchemaXml.js +1 -1
  12. package/lib/cjs/SchemaXml.js.map +1 -1
  13. package/lib/cjs/SchemaXmlFileLocater.d.ts +2 -2
  14. package/lib/cjs/SchemaXmlFileLocater.d.ts.map +1 -1
  15. package/lib/cjs/SchemaXmlFileLocater.js +4 -4
  16. package/lib/cjs/SchemaXmlFileLocater.js.map +1 -1
  17. package/lib/cjs/SchemaXmlStringLocater.d.ts.map +1 -1
  18. package/lib/cjs/SchemaXmlStringLocater.js +4 -4
  19. package/lib/cjs/SchemaXmlStringLocater.js.map +1 -1
  20. package/lib/cjs/StubSchemaXmlFileLocater.d.ts.map +1 -1
  21. package/lib/cjs/StubSchemaXmlFileLocater.js +9 -9
  22. package/lib/cjs/StubSchemaXmlFileLocater.js.map +1 -1
  23. package/lib/cjs/test/SchemaJsonFileLocator.test.js +2 -2
  24. package/lib/cjs/test/SchemaJsonFileLocator.test.js.map +1 -1
  25. package/lib/cjs/test/SchemaXmlFileLocator.test.js +9 -9
  26. package/lib/cjs/test/SchemaXmlFileLocator.test.js.map +1 -1
  27. package/lib/cjs/test/SchemaXmlStringLocater.test.js +9 -9
  28. package/lib/cjs/test/SchemaXmlStringLocater.test.js.map +1 -1
  29. package/lib/cjs/test/StubSchemaXmlFileLocater.test.js +9 -8
  30. package/lib/cjs/test/StubSchemaXmlFileLocater.test.js.map +1 -1
  31. package/lib/esm/SchemaFileLocater.d.ts +13 -6
  32. package/lib/esm/SchemaFileLocater.d.ts.map +1 -1
  33. package/lib/esm/SchemaFileLocater.js +9 -2
  34. package/lib/esm/SchemaFileLocater.js.map +1 -1
  35. package/lib/esm/SchemaJsonFileLocater.d.ts +2 -1
  36. package/lib/esm/SchemaJsonFileLocater.d.ts.map +1 -1
  37. package/lib/esm/SchemaJsonFileLocater.js +5 -4
  38. package/lib/esm/SchemaJsonFileLocater.js.map +1 -1
  39. package/lib/esm/SchemaXml.d.ts +1 -1
  40. package/lib/esm/SchemaXml.js +1 -1
  41. package/lib/esm/SchemaXml.js.map +1 -1
  42. package/lib/esm/SchemaXmlFileLocater.d.ts +2 -2
  43. package/lib/esm/SchemaXmlFileLocater.d.ts.map +1 -1
  44. package/lib/esm/SchemaXmlFileLocater.js +5 -5
  45. package/lib/esm/SchemaXmlFileLocater.js.map +1 -1
  46. package/lib/esm/SchemaXmlStringLocater.d.ts.map +1 -1
  47. package/lib/esm/SchemaXmlStringLocater.js +5 -5
  48. package/lib/esm/SchemaXmlStringLocater.js.map +1 -1
  49. package/lib/esm/StubSchemaXmlFileLocater.d.ts.map +1 -1
  50. package/lib/esm/StubSchemaXmlFileLocater.js +10 -10
  51. package/lib/esm/StubSchemaXmlFileLocater.js.map +1 -1
  52. package/lib/esm/test/SchemaJsonFileLocator.test.js +2 -2
  53. package/lib/esm/test/SchemaJsonFileLocator.test.js.map +1 -1
  54. package/lib/esm/test/SchemaXmlFileLocator.test.js +10 -10
  55. package/lib/esm/test/SchemaXmlFileLocator.test.js.map +1 -1
  56. package/lib/esm/test/SchemaXmlStringLocater.test.js +10 -10
  57. package/lib/esm/test/SchemaXmlStringLocater.test.js.map +1 -1
  58. package/lib/esm/test/StubSchemaXmlFileLocater.test.js +9 -8
  59. package/lib/esm/test/StubSchemaXmlFileLocater.test.js.map +1 -1
  60. 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.ECObjectsError(ecschema_metadata_1.ECObjectsStatus.UnableToLocateSchema, `Unable to locate schema XML file at ${schemaPath}`);
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.ECObjectsError(ecschema_metadata_1.ECObjectsStatus.InvalidSchemaXML, `Could not find '<ECSchema>' tag in the given file`);
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.ECObjectsError(ecschema_metadata_1.ECObjectsStatus.InvalidSchemaXML, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);
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.ECObjectsError(ecschema_metadata_1.ECObjectsStatus.UnableToLocateSchema, `Unable to locate referenced schema: ${key.name}.${key.readVersion}.${key.writeVersion}.${key.minorVersion}`);
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.ECObjectsError(ecschema_metadata_1.ECObjectsStatus.UnableToLocateSchema, `Could not locate the schema file, ${xmlSchemaKey.fileName}, for the schema ${xmlSchemaKey.name}`);
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.ECObjectsError(ecschema_metadata_1.ECObjectsStatus.InvalidSchemaXML, `Invalid ECSchemaReference xml encountered in the schema file`);
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.ECObjectsError(ecschema_metadata_1.ECObjectsStatus.InvalidSchemaXML, `Could not find the ECSchema 'alias' tag in the given file.`);
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.ECObjectsError(ecschema_metadata_1.ECObjectsStatus.InvalidECVersion, `The read version is missing from version string, ${versionString}`);
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.ECObjectsError(ecschema_metadata_1.ECObjectsStatus.InvalidECVersion, `The minor version is missing from version string, ${versionString}`);
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":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,6BAA6B;AAC7B,gEAEkC;AAClC,2DAAuE;AAEvE,SAAS,YAAY,CAAC,UAAkB;IACtC,OAAO,mCAAmC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;GAKG;AACH,MAAa,wBAAyB,SAAQ,qCAAiB;IAC7D;;;;;OAKG;IACI,UAAU,CAAC,UAAkB,EAAE,UAAmB;QACvD,UAAU,GAAG,UAAU,IAAI,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU;YACb,MAAM,IAAI,kCAAc,CAAC,mCAAe,CAAC,oBAAoB,EAAE,uCAAuC,UAAU,EAAE,CAAC,CAAC;QAEtH,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,iCAAa,EAAE,CAAC;QACpC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEzB,gCAAgC;QAChC,MAAM,MAAM,GAAG,IAAI,0BAAM,CAAC,OAAO,EAAE,IAAI,iCAAa,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1F,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,mCAAe,CAAC,qBAAqB,CAAC,CAAC;QACjF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,SAAS,CAAC,GAAc,EAAE,SAA0B,EAAE,OAAsB;QACvF,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;QAMI;IACG,KAAK,CAAC,aAAa,CAAC,GAAc,EAAE,SAA0B,EAAE,OAAsB;QAC3F,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAe,CAAC;IACnE,CAAC;IAED;;;;;;;OAOG;IACI,aAAa,CAAC,GAAc,EAAE,SAA0B,EAAE,OAAsB;QACrF,MAAM,UAAU,GAAoB,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAEvF,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YACxC,OAAO,SAAS,CAAC;QAEnB,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC5F,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,UAAW,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,0BAAM,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QACxD,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE9B,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,mCAAe,CAAC,qBAAqB,CAAC,CAAC;QACjF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACI,YAAY,CAAC,SAAiB;QACnC,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAClC,MAAM,IAAI,kCAAc,CAAC,mCAAe,CAAC,gBAAgB,EAAE,mDAAmD,CAAC,CAAC;QAElH,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAChE,MAAM,IAAI,kCAAc,CAAC,mCAAe,CAAC,gBAAgB,EAAE,6EAA6E,CAAC,CAAC;QAE5I,IAAI,SAAoB,CAAC;QACzB,IAAI,YAAY,CAAC,SAAS,CAAC;YACzB,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;;YAE5C,SAAS,GAAG,6BAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/C,MAAM,GAAG,GAAG,IAAI,6BAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC9C,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;OAGG;IACK,sBAAsB,CAAC,SAAwB;QACrD,OAAO,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;IAED;;;;;;OAMG;IACK,mBAAmB,CAAC,MAAc,EAAE,OAAsB,EAAE,YAA6B;QAC/F,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,SAA0B,CAAC,CAAC;QAE/E,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACjF,IAAI,CAAC,SAAS;gBACZ,MAAM,IAAI,kCAAc,CAAC,mCAAe,CAAC,oBAAoB,EAAE,uCAAuC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;YAE/K,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,uBAAuB,CAAC,YAA2B;QACzD,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC;QAErC,IAAI,CAAC,IAAI;YACP,MAAM,IAAI,kCAAc,CAAC,mCAAe,CAAC,oBAAoB,EAAE,qCAAqC,YAAY,CAAC,QAAQ,oBAAoB,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QAEpK,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,CAAC,2EAA2E;QAEhJ,MAAM,IAAI,GAAgB,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO;YACV,OAAO,IAAI,CAAC;QAEd,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACzC,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACpD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;gBAC1E,MAAM,IAAI,kCAAc,CAAC,mCAAe,CAAC,gBAAgB,EAAE,8DAA8D,CAAC,CAAC;YAE7H,6CAA6C;YAC7C,IAAI,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;gBAC3B,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YAEjC,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEvC,MAAM,GAAG,GAAG,IAAI,6BAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,6BAAS,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACK,cAAc,CAAC,SAAiB;QACtC,IAAI,KAAU,CAAC;QAEf,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5B,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,4CAA4C,CAAQ,CAAC;QAC/E,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,kCAAkC,CAAQ,CAAC;QACrE,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,IAAI,kCAAc,CAAC,mCAAe,CAAC,gBAAgB,EAAE,4DAA4D,CAAC,CAAC;QAC3H,CAAC;QAED,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACK,cAAc,CAAC,aAAqB;QAC1C,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE/C,IAAI,CAAC,IAAI;YACP,MAAM,IAAI,kCAAc,CAAC,mCAAe,CAAC,gBAAgB,EAAE,oDAAoD,aAAa,EAAE,CAAC,CAAC;QAElI,IAAI,CAAC,KAAK;YACR,MAAM,IAAI,kCAAc,CAAC,mCAAe,CAAC,gBAAgB,EAAE,qDAAqD,aAAa,EAAE,CAAC,CAAC;QAEnI,OAAO,IAAI,6BAAS,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;CACF;AAnMD,4DAmMC","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":["/*---------------------------------------------------------------------------------------------\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 ECSchemaError, ECSchemaStatus, 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 ECSchemaError(ECSchemaStatus.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 ECSchemaError(ECSchemaStatus.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 ECSchemaError(ECSchemaStatus.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 ECSchemaError(ECSchemaStatus.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 ECSchemaError(ECSchemaStatus.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 ECSchemaError(ECSchemaStatus.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 ECSchemaError(ECSchemaStatus.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 ECSchemaError(ECSchemaStatus.InvalidECVersion, `The read version is missing from version string, ${versionString}`);\n\n if (!minor)\n throw new ECSchemaError(ECSchemaStatus.InvalidECVersion, `The minor version is missing from version string, ${versionString}`);\n\n return new ECVersion(+read, 0, +minor);\n }\n}\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.ECObjectsStatus.InvalidECJson);
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.ECObjectsStatus.InvalidECJson);
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":";AAAA;;;+FAG+F;;AAE/F,+BAA8B;AAC9B,6BAA6B;AAC7B,+CAA+C;AAE/C,oEAAiE;AAEjE,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,IAAI,OAA8B,CAAC;IACnC,IAAI,OAAyB,CAAC;IAE9B,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,IAAI,6CAAqB,EAAE,CAAC;QAEtC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC5D,OAAO,GAAG,IAAI,EAAE,CAAC,aAAa,EAAE,CAAC;QACjC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,SAAS,GAAG,IAAI,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE5E,aAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzB,aAAM,CAAC,WAAW,CAAC,MAAO,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACtD,aAAM,CAAC,WAAW,CAAC,MAAO,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,SAAS,GAAG,IAAI,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE1E,aAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzB,aAAM,CAAC,WAAW,CAAC,MAAO,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACtD,aAAM,CAAC,WAAW,CAAC,MAAO,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,SAAS,GAAG,IAAI,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEvD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;QACtG,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;QACtG,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC9E,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE9E,qDAAqD;QACrD,aAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACpC,aAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACpC,aAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,SAAS,GAAG,IAAI,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEvD,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;QACpG,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;QACpG,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE5E,qDAAqD;QACrD,aAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACpC,aAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACpC,aAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,SAAS,GAAG,IAAI,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACrF,aAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,SAAS,GAAG,IAAI,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAEpD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,CAAqB,CAAC;YACpC,aAAM,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,aAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,8BAA8B,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,SAAS,GAAG,IAAI,EAAE,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAEvD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,CAAqB,CAAC;YACpC,aAAM,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,aAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,8BAA8B,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE9G,aAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,GAAG,GAAG,IAAK,CAAC,SAA0B,CAAC;QAC7C,aAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACxC,aAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,aAAM,CAAC,WAAW,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACvH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjH,aAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzB,aAAM,CAAC,WAAW,CAAC,MAAO,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACtD,aAAM,CAAC,WAAW,CAAC,MAAO,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;QAE9H,aAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvB,aAAM,CAAC,WAAW,CAAC,IAAK,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACpD,aAAM,CAAC,WAAW,CAAC,IAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC9E,aAAM,CAAC,WAAW,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC,CAAC;IACvI,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;QAE7H,aAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvB,aAAM,CAAC,WAAW,CAAC,IAAK,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACpD,aAAM,CAAC,WAAW,CAAC,IAAK,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,aAAM,CAAC,WAAW,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAAC;IACtI,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 } 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.ECSchemaError;\n assert.strictEqual(error.errorNumber, EC.ECSchemaStatus.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.ECSchemaError;\n assert.strictEqual(error.errorNumber, EC.ECSchemaStatus.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"]}
@@ -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.ECObjectsStatus.InvalidSchemaXML);
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.ECObjectsStatus.InvalidSchemaXML);
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.ECObjectsStatus.InvalidSchemaXML);
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.ECObjectsStatus.UnableToLocateSchema);
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.ECObjectsError, `Could not find '<ECSchema>' tag in the given file`);
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.ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);
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.ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);
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.ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);
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.ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);
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.`);
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaXmlFileLocator.test.js","sourceRoot":"","sources":["../../../src/test/SchemaXmlFileLocator.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 path from \"path\";\nimport { ECObjectsError, ECObjectsStatus, ECVersion, SchemaContext, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\nimport { FileSchemaKey } from \"../SchemaFileLocater\";\nimport { PublishedSchemaXmlFileLocater, SchemaXmlFileLocater } from \"../SchemaXmlFileLocater\";\n\ndescribe(\"SchemaXmlFileLocater tests:\", () => {\n let locater: SchemaXmlFileLocater;\n let context: SchemaContext;\n\n beforeEach(() => {\n locater = new SchemaXmlFileLocater();\n locater.addSchemaSearchPath(path.join(__dirname, \"assets\"));\n context = new SchemaContext();\n context.addLocater(locater);\n });\n\n it(\"locate valid schema with multiple references\", async () => {\n const schemaKey = new SchemaKey(\"SchemaA\", 1, 1, 1);\n const schema = await context.getSchema(schemaKey, 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 SchemaKey(\"SchemaA\", 1, 1, 1);\n const schema = context.getSchemaSync(schemaKey, 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 SchemaKey(\"SchemaD\", 4, 4, 4);\n\n const locater1 = await locater.getSchema(schemaKey, SchemaMatchType.Exact, new SchemaContext());\n const locater2 = await locater.getSchema(schemaKey, SchemaMatchType.Exact, new SchemaContext());\n const context1 = await context.getSchema(schemaKey, SchemaMatchType.Exact);\n const context2 = await context.getSchema(schemaKey, 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 SchemaKey(\"DoesNotExist\");\n\n assert.isUndefined(await locater.getSchema(schemaKey, SchemaMatchType.Exact, context));\n });\n\n it(\"loadSchema from file, bad schema tag, throws\", async () => {\n const schemaKey = new SchemaKey(\"BadSchemaTag\");\n try {\n await locater.getSchema(schemaKey, SchemaMatchType.Latest, context);\n } catch (e) {\n const error = e as ECObjectsError;\n assert.strictEqual(error.errorNumber, ECObjectsStatus.InvalidSchemaXML);\n return;\n }\n\n assert.fail(0, 1, \"Expected ECObjects exception\");\n });\n\n it(\"loadSchema from file, bad schema name tag, throws\", async () => {\n const schemaKey = new SchemaKey(\"BadSchemaNameTag\");\n try {\n await locater.getSchema(schemaKey, SchemaMatchType.Latest, context);\n } catch (e) {\n const error = e as ECObjectsError;\n assert.strictEqual(error.errorNumber, ECObjectsStatus.InvalidSchemaXML);\n return;\n }\n\n assert.fail(0, 1, \"Expected ECObjects exception\");\n });\n\n it(\"loadSchema from file, bad schema version tag, throws\", async () => {\n const schemaKey = new SchemaKey(\"BadSchemaVersionTag\");\n\n try {\n await locater.getSchema(schemaKey, SchemaMatchType.Latest, context);\n } catch (e) {\n const error = e as ECObjectsError;\n assert.strictEqual(error.errorNumber, ECObjectsStatus.InvalidSchemaXML);\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 SchemaKey(\"SchemaA\", 1, 1, 1), SchemaMatchType.Exact, context);\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, reference does not exist, throws.\", async () => {\n try {\n await locater.getSchema(new SchemaKey(\"RefDoesNotExist\", 1, 1, 1), SchemaMatchType.Exact, context);\n } catch (e) {\n const error = e as ECObjectsError;\n assert.strictEqual(error.errorNumber, ECObjectsStatus.UnableToLocateSchema);\n return;\n }\n\n assert.fail();\n });\n\n it(\"getSchema, references set\", async () => {\n const schemaA = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 1), SchemaMatchType.Exact);\n const schemaB = await context.getSchema(new SchemaKey(\"SchemaB\", 2, 2, 2), SchemaMatchType.Exact);\n const schemaC = await context.getSchema(new SchemaKey(\"SchemaC\", 3, 3, 3), SchemaMatchType.Exact);\n const schemaD = await context.getSchema(new SchemaKey(\"SchemaD\", 4, 4, 4), SchemaMatchType.Exact);\n\n assert.isDefined(schemaA);\n assert.strictEqual(schemaA!.references.length, 2);\n assert.deepEqual(schemaA!.references[0], schemaC);\n assert.deepEqual(schemaA!.references[1], schemaB);\n assert.deepEqual(schemaA!.references[0].references[0], schemaD);\n assert.deepEqual(schemaA!.references[1].references[0], schemaC);\n assert.deepEqual(schemaA!.references[1].references[1], schemaD);\n });\n\n it(\"getSchema, exact version, wrong minor, fails\", async () => {\n assert.isUndefined(await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 2), SchemaMatchType.Exact));\n });\n\n it(\"getSchema, latest, succeeds\", async () => {\n const stub = await locater.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 0), SchemaMatchType.Latest, context);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"02.00.02\");\n });\n\n it(\"getSchema, latest write compatible, succeeds\", async () => {\n const stub = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 0), SchemaMatchType.LatestWriteCompatible);\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 context.getSchema(new SchemaKey(\"SchemaA\", 1, 2, 0), SchemaMatchType.LatestWriteCompatible));\n });\n\n it(\"getSchema, latest read compatible, succeeds\", async () => {\n const stub = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 0, 0), SchemaMatchType.LatestReadCompatible);\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 context.getSchema(new SchemaKey(\"SchemaA\", 2, 1, 1), SchemaMatchType.LatestReadCompatible));\n });\n\n it(\"sync - should ignore commented out schema references\", () => {\n const stub = context.getSchemaSync(new SchemaKey(\"RefCommentedOut\", 1, 1, 1), SchemaMatchType.LatestReadCompatible);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"RefCommentedOut\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"async - should ignore commented out schema references\", async () => {\n const stub = await context.getSchema(new SchemaKey(\"RefCommentedOut\", 1, 1, 1), SchemaMatchType.LatestReadCompatible);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"RefCommentedOut\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchemaKey, valid version and name, succeeds\", () => {\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" version=\"1.1.1\"> </ECSchema>`;\n const key = locater.getSchemaKey(schemaXml);\n assert.deepEqual(key, new SchemaKey(\"SchemaA\", new ECVersion(1, 1, 1)));\n });\n it(\"getSchemaKey, invalid xml, throws\", () => {\n const schemaXml = `<ECSchemaBad schemaName=\"SchemaA\" version=\"1.1.1\"> </ECSchemaBad>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECObjectsError, `Could not find '<ECSchema>' tag in the given file`);\n });\n it(\"getSchemaKey, invalid schemaName attribute, throws\", () => {\n const schemaXml = `<ECSchema schemaNameBad=\"SchemaA\" version=\"1.1.1\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);\n });\n it(\"getSchemaKey, invalid schemaName, throws\", () => {\n const schemaXml = `<ECSchema version=\"1.1.1\" schemaName=\"\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);\n });\n it(\"getSchemaKey, invalid version attribute, throws\", () => {\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" versionBad=\"1.1.1\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);\n });\n it(\"getSchemaKey, invalid version, throws\", () => {\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" version=\"\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);\n });\n it(\"PublishedSchemaXmlFileLocater - should throw with incorrect argument\", async () => {\n assert.throw(() => new PublishedSchemaXmlFileLocater(__dirname), Error, `The directory ${path.join(__dirname, \"ECSchemas\")} containing standard schemas does not exist.`);\n });\n});\n"]}
1
+ {"version":3,"file":"SchemaXmlFileLocator.test.js","sourceRoot":"","sources":["../../../src/test/SchemaXmlFileLocator.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 path from \"path\";\nimport { ECSchemaError, ECSchemaStatus, ECVersion, SchemaContext, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\nimport { FileSchemaKey } from \"../SchemaFileLocater\";\nimport { PublishedSchemaXmlFileLocater, SchemaXmlFileLocater } from \"../SchemaXmlFileLocater\";\n\ndescribe(\"SchemaXmlFileLocater tests:\", () => {\n let locater: SchemaXmlFileLocater;\n let context: SchemaContext;\n\n beforeEach(() => {\n locater = new SchemaXmlFileLocater();\n locater.addSchemaSearchPath(path.join(__dirname, \"assets\"));\n context = new SchemaContext();\n context.addLocater(locater);\n });\n\n it(\"locate valid schema with multiple references\", async () => {\n const schemaKey = new SchemaKey(\"SchemaA\", 1, 1, 1);\n const schema = await context.getSchema(schemaKey, 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 SchemaKey(\"SchemaA\", 1, 1, 1);\n const schema = context.getSchemaSync(schemaKey, 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 SchemaKey(\"SchemaD\", 4, 4, 4);\n\n const locater1 = await locater.getSchema(schemaKey, SchemaMatchType.Exact, new SchemaContext());\n const locater2 = await locater.getSchema(schemaKey, SchemaMatchType.Exact, new SchemaContext());\n const context1 = await context.getSchema(schemaKey, SchemaMatchType.Exact);\n const context2 = await context.getSchema(schemaKey, 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 SchemaKey(\"DoesNotExist\");\n\n assert.isUndefined(await locater.getSchema(schemaKey, SchemaMatchType.Exact, context));\n });\n\n it(\"loadSchema from file, bad schema tag, throws\", async () => {\n const schemaKey = new SchemaKey(\"BadSchemaTag\");\n try {\n await locater.getSchema(schemaKey, SchemaMatchType.Latest, context);\n } catch (e) {\n const error = e as ECSchemaError;\n assert.strictEqual(error.errorNumber, ECSchemaStatus.InvalidSchemaXML);\n return;\n }\n\n assert.fail(0, 1, \"Expected ECObjects exception\");\n });\n\n it(\"loadSchema from file, bad schema name tag, throws\", async () => {\n const schemaKey = new SchemaKey(\"BadSchemaNameTag\");\n try {\n await locater.getSchema(schemaKey, SchemaMatchType.Latest, context);\n } catch (e) {\n const error = e as ECSchemaError;\n assert.strictEqual(error.errorNumber, ECSchemaStatus.InvalidSchemaXML);\n return;\n }\n\n assert.fail(0, 1, \"Expected ECObjects exception\");\n });\n\n it(\"loadSchema from file, bad schema version tag, throws\", async () => {\n const schemaKey = new SchemaKey(\"BadSchemaVersionTag\");\n\n try {\n await locater.getSchema(schemaKey, SchemaMatchType.Latest, context);\n } catch (e) {\n const error = e as ECSchemaError;\n assert.strictEqual(error.errorNumber, ECSchemaStatus.InvalidSchemaXML);\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 SchemaKey(\"SchemaA\", 1, 1, 1), SchemaMatchType.Exact, context);\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, reference does not exist, throws.\", async () => {\n try {\n await locater.getSchema(new SchemaKey(\"RefDoesNotExist\", 1, 1, 1), SchemaMatchType.Exact, context);\n } catch (e) {\n const error = e as ECSchemaError;\n assert.strictEqual(error.errorNumber, ECSchemaStatus.UnableToLocateSchema);\n return;\n }\n\n assert.fail();\n });\n\n it(\"getSchema, references set\", async () => {\n const schemaA = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 1), SchemaMatchType.Exact);\n const schemaB = await context.getSchema(new SchemaKey(\"SchemaB\", 2, 2, 2), SchemaMatchType.Exact);\n const schemaC = await context.getSchema(new SchemaKey(\"SchemaC\", 3, 3, 3), SchemaMatchType.Exact);\n const schemaD = await context.getSchema(new SchemaKey(\"SchemaD\", 4, 4, 4), SchemaMatchType.Exact);\n\n assert.isDefined(schemaA);\n assert.strictEqual(schemaA!.references.length, 2);\n assert.deepEqual(schemaA!.references[0], schemaC);\n assert.deepEqual(schemaA!.references[1], schemaB);\n assert.deepEqual(schemaA!.references[0].references[0], schemaD);\n assert.deepEqual(schemaA!.references[1].references[0], schemaC);\n assert.deepEqual(schemaA!.references[1].references[1], schemaD);\n });\n\n it(\"getSchema, exact version, wrong minor, fails\", async () => {\n assert.isUndefined(await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 2), SchemaMatchType.Exact));\n });\n\n it(\"getSchema, latest, succeeds\", async () => {\n const stub = await locater.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 0), SchemaMatchType.Latest, context);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"02.00.02\");\n });\n\n it(\"getSchema, latest write compatible, succeeds\", async () => {\n const stub = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 0), SchemaMatchType.LatestWriteCompatible);\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 context.getSchema(new SchemaKey(\"SchemaA\", 1, 2, 0), SchemaMatchType.LatestWriteCompatible));\n });\n\n it(\"getSchema, latest read compatible, succeeds\", async () => {\n const stub = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 0, 0), SchemaMatchType.LatestReadCompatible);\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 context.getSchema(new SchemaKey(\"SchemaA\", 2, 1, 1), SchemaMatchType.LatestReadCompatible));\n });\n\n it(\"sync - should ignore commented out schema references\", () => {\n const stub = context.getSchemaSync(new SchemaKey(\"RefCommentedOut\", 1, 1, 1), SchemaMatchType.LatestReadCompatible);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"RefCommentedOut\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"async - should ignore commented out schema references\", async () => {\n const stub = await context.getSchema(new SchemaKey(\"RefCommentedOut\", 1, 1, 1), SchemaMatchType.LatestReadCompatible);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"RefCommentedOut\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchemaKey, valid version and name, succeeds\", () => {\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" version=\"1.1.1\"> </ECSchema>`;\n const key = locater.getSchemaKey(schemaXml);\n assert.deepEqual(key, new SchemaKey(\"SchemaA\", new ECVersion(1, 1, 1)));\n });\n it(\"getSchemaKey, invalid xml, throws\", () => {\n const schemaXml = `<ECSchemaBad schemaName=\"SchemaA\" version=\"1.1.1\"> </ECSchemaBad>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECSchemaError, `Could not find '<ECSchema>' tag in the given file`);\n });\n it(\"getSchemaKey, invalid schemaName attribute, throws\", () => {\n const schemaXml = `<ECSchema schemaNameBad=\"SchemaA\" version=\"1.1.1\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);\n });\n it(\"getSchemaKey, invalid schemaName, throws\", () => {\n const schemaXml = `<ECSchema version=\"1.1.1\" schemaName=\"\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);\n });\n it(\"getSchemaKey, invalid version attribute, throws\", () => {\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" versionBad=\"1.1.1\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);\n });\n it(\"getSchemaKey, invalid version, throws\", () => {\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" version=\"\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given file`);\n });\n it(\"PublishedSchemaXmlFileLocater - should throw with incorrect argument\", async () => {\n assert.throw(() => new PublishedSchemaXmlFileLocater(__dirname), Error, `The directory ${path.join(__dirname, \"ECSchemas\")} containing standard schemas does not exist.`);\n });\n});\n"]}
@@ -77,7 +77,7 @@ describe("SchemaXmlStringLocater tests:", () => {
77
77
  }
78
78
  catch (e) {
79
79
  const error = e;
80
- chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECObjectsStatus.InvalidSchemaXML);
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");
@@ -89,7 +89,7 @@ describe("SchemaXmlStringLocater tests:", () => {
89
89
  }
90
90
  catch (e) {
91
91
  const error = e;
92
- chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECObjectsStatus.InvalidSchemaXML);
92
+ chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECSchemaStatus.InvalidSchemaXML);
93
93
  return;
94
94
  }
95
95
  chai_1.assert.fail(0, 1, "Expected ECObjects exception");
@@ -101,7 +101,7 @@ describe("SchemaXmlStringLocater tests:", () => {
101
101
  }
102
102
  catch (e) {
103
103
  const error = e;
104
- chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECObjectsStatus.InvalidSchemaXML);
104
+ chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECSchemaStatus.InvalidSchemaXML);
105
105
  return;
106
106
  }
107
107
  chai_1.assert.fail(0, 1, "Expected ECObjects exception");
@@ -122,7 +122,7 @@ describe("SchemaXmlStringLocater tests:", () => {
122
122
  }
123
123
  catch (e) {
124
124
  const error = e;
125
- chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECObjectsStatus.UnableToLocateSchema);
125
+ chai_1.assert.strictEqual(error.errorNumber, ecschema_metadata_1.ECSchemaStatus.UnableToLocateSchema);
126
126
  return;
127
127
  }
128
128
  chai_1.assert.fail();
@@ -199,23 +199,23 @@ describe("SchemaXmlStringLocater tests:", () => {
199
199
  });
200
200
  it("getSchemaKey, invalid xml, throws", () => {
201
201
  const schemaXml = `<ECSchemaBad schemaName="SchemaA" version="1.1.1"> </ECSchemaBad>`;
202
- (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECObjectsError, `Could not find '<ECSchema>' tag in the given string`);
202
+ (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECSchemaError, `Could not find '<ECSchema>' tag in the given string`);
203
203
  });
204
204
  it("getSchemaKey, invalid schemaName attribute, throws", () => {
205
205
  const schemaXml = `<ECSchema schemaNameBad="SchemaA" version="1.1.1"> </ECSchema>`;
206
- (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);
206
+ (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 string`);
207
207
  });
208
208
  it("getSchemaKey, invalid schemaName, throws", () => {
209
209
  const schemaXml = `<ECSchema version="1.1.1" schemaName=""> </ECSchema>`;
210
- (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);
210
+ (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 string`);
211
211
  });
212
212
  it("getSchemaKey, invalid version attribute, throws", () => {
213
213
  const schemaXml = `<ECSchema schemaName="SchemaA" versionBad="1.1.1"> </ECSchema>`;
214
- (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);
214
+ (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 string`);
215
215
  });
216
216
  it("getSchemaKey, invalid version, throws", () => {
217
217
  const schemaXml = `<ECSchema schemaName="SchemaA" version=""> </ECSchema>`;
218
- (0, chai_1.expect)(() => locater.getSchemaKey(schemaXml)).to.throw(ecschema_metadata_1.ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);
218
+ (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 string`);
219
219
  });
220
220
  });
221
221
  //# sourceMappingURL=SchemaXmlStringLocater.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaXmlStringLocater.test.js","sourceRoot":"","sources":["../../../src/test/SchemaXmlStringLocater.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 path from \"path\";\nimport * as fs from \"fs\";\nimport { globSync } from \"glob\";\nimport { ECObjectsError, ECObjectsStatus, ECVersion, SchemaContext, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\nimport { SchemaXmlStringLocater } from \"../SchemaXmlStringLocater\";\nimport { StringSchemaKey } from \"../SchemaStringLocater\";\n\ndescribe(\"SchemaXmlStringLocater tests:\", () => {\n let locater: SchemaXmlStringLocater;\n let context: SchemaContext;\n let schemaStrings: string [];\n\n const loadSchemaString = (schemaName: string) => {\n const searchPath = path.join(__dirname, \"assets\", `${schemaName}.ecschema.xml`);\n const file = fs.readFileSync(searchPath);\n return file.toString();\n };\n\n const loadSchemaStrings = () => {\n const schemas: string [] = [];\n const searchPath = path.join(__dirname, \"assets\", \"Schema*.ecschema.xml\");\n const result = globSync(searchPath, { windowsPathsNoEscape: true });\n for (const match of result) {\n const file = fs.readFileSync(match);\n if (!file)\n continue;\n schemas.push(file.toString());\n }\n return schemas;\n };\n\n beforeEach(() => {\n schemaStrings = loadSchemaStrings();\n locater = new SchemaXmlStringLocater();\n context = new SchemaContext();\n context.addLocater(locater);\n });\n\n it(\"locate valid schema with multiple references\", async () => {\n locater.addSchemaStrings(schemaStrings);\n const schemaKey = new SchemaKey(\"SchemaA\", 1, 1, 1);\n const schema = await context.getSchema(schemaKey, 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 locater.addSchemaStrings(schemaStrings);\n const schemaKey = new SchemaKey(\"SchemaA\", 1, 1, 1);\n const schema = context.getSchemaSync(schemaKey, 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 locater.addSchemaStrings(schemaStrings);\n const schemaKey = new SchemaKey(\"SchemaD\", 4, 4, 4);\n\n const locater1 = await locater.getSchema(schemaKey, SchemaMatchType.Exact, new SchemaContext());\n const locater2 = await locater.getSchema(schemaKey, SchemaMatchType.Exact, new SchemaContext());\n const context1 = await context.getSchema(schemaKey, SchemaMatchType.Exact);\n const context2 = await context.getSchema(schemaKey, 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 locater.addSchemaStrings(schemaStrings);\n const schemaKey = new SchemaKey(\"DoesNotExist\");\n\n assert.isUndefined(await locater.getSchema(schemaKey, SchemaMatchType.Exact, context));\n });\n\n it(\"addSchemaString, bad schema tag, throws\", async () => {\n const schemaString = loadSchemaString(\"BadSchemaTag\");\n try {\n locater.addSchemaString(schemaString);\n } catch (e) {\n const error = e as ECObjectsError;\n assert.strictEqual(error.errorNumber, ECObjectsStatus.InvalidSchemaXML);\n return;\n }\n\n assert.fail(0, 1, \"Expected ECObjects exception\");\n });\n\n it(\"addSchemaString, bad schema name tag, throws\", async () => {\n const schemaString = loadSchemaString(\"BadSchemaNameTag\");\n try {\n locater.addSchemaString(schemaString);\n } catch (e) {\n const error = e as ECObjectsError;\n assert.strictEqual(error.errorNumber, ECObjectsStatus.InvalidSchemaXML);\n return;\n }\n\n assert.fail(0, 1, \"Expected ECObjects exception\");\n });\n\n it(\"addSchemaString, bad schema version tag, throws\", async () => {\n const schemaString = loadSchemaString(\"BadSchemaVersionTag\");\n try {\n locater.addSchemaString(schemaString);\n } catch (e) {\n const error = e as ECObjectsError;\n assert.strictEqual(error.errorNumber, ECObjectsStatus.InvalidSchemaXML);\n return;\n }\n\n assert.fail(0, 1, \"Expected ECObjects exception\");\n });\n\n it(\"getSchema, full version, succeeds\", async () => {\n locater.addSchemaStrings(schemaStrings);\n const stub = await locater.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 1), SchemaMatchType.Exact, context);\n assert.isDefined(stub);\n const key = stub!.schemaKey as StringSchemaKey;\n assert.strictEqual(key.name, \"SchemaA\");\n assert.strictEqual(key.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchema, reference does not exist, throws.\", async () => {\n const schemaString = loadSchemaString(\"RefDoesNotExist\");\n locater.addSchemaString(schemaString);\n try {\n await locater.getSchema(new SchemaKey(\"RefDoesNotExist\", 1, 1, 1), SchemaMatchType.Exact, context);\n } catch (e) {\n const error = e as ECObjectsError;\n assert.strictEqual(error.errorNumber, ECObjectsStatus.UnableToLocateSchema);\n return;\n }\n\n assert.fail();\n });\n\n it(\"getSchema, references set\", async () => {\n locater.addSchemaStrings(schemaStrings);\n\n const schemaA = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 1), SchemaMatchType.Exact);\n const schemaB = await context.getSchema(new SchemaKey(\"SchemaB\", 2, 2, 2), SchemaMatchType.Exact);\n const schemaC = await context.getSchema(new SchemaKey(\"SchemaC\", 3, 3, 3), SchemaMatchType.Exact);\n const schemaD = await context.getSchema(new SchemaKey(\"SchemaD\", 4, 4, 4), SchemaMatchType.Exact);\n\n assert.isDefined(schemaA);\n assert.strictEqual(schemaA!.references.length, 2);\n assert.deepEqual(schemaA!.references[0], schemaC);\n assert.deepEqual(schemaA!.references[1], schemaB);\n assert.deepEqual(schemaA!.references[0].references[0], schemaD);\n assert.deepEqual(schemaA!.references[1].references[0], schemaC);\n assert.deepEqual(schemaA!.references[1].references[1], schemaD);\n });\n\n it(\"getSchema, exact version, wrong minor, fails\", async () => {\n locater.addSchemaStrings(schemaStrings);\n assert.isUndefined(await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 2), SchemaMatchType.Exact));\n });\n\n it(\"getSchema, latest, succeeds\", async () => {\n locater.addSchemaStrings(schemaStrings);\n const stub = await locater.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 0), SchemaMatchType.Latest, context);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"02.00.02\");\n });\n\n it(\"getSchema, latest write compatible, succeeds\", async () => {\n locater.addSchemaStrings(schemaStrings);\n const stub = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 0), SchemaMatchType.LatestWriteCompatible);\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 locater.addSchemaStrings(schemaStrings);\n assert.isUndefined(await context.getSchema(new SchemaKey(\"SchemaA\", 1, 2, 0), SchemaMatchType.LatestWriteCompatible));\n });\n\n it(\"getSchema, latest read compatible, succeeds\", async () => {\n locater.addSchemaStrings(schemaStrings);\n const stub = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 0, 0), SchemaMatchType.LatestReadCompatible);\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 locater.addSchemaStrings(schemaStrings);\n assert.isUndefined(await context.getSchema(new SchemaKey(\"SchemaA\", 2, 1, 1), SchemaMatchType.LatestReadCompatible));\n });\n\n it(\"sync - should ignore commented out schema references\", () => {\n locater.addSchemaStrings(schemaStrings);\n const schemaString = loadSchemaString(\"RefCommentedOut\");\n locater.addSchemaString(schemaString);\n\n const stub = context.getSchemaSync(new SchemaKey(\"RefCommentedOut\", 1, 1, 1), SchemaMatchType.LatestReadCompatible);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"RefCommentedOut\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"async - should ignore commented out schema references\", async () => {\n locater.addSchemaStrings(schemaStrings);\n const schemaString = loadSchemaString(\"RefCommentedOut\");\n locater.addSchemaString(schemaString);\n\n const stub = await context.getSchema(new SchemaKey(\"RefCommentedOut\", 1, 1, 1), SchemaMatchType.LatestReadCompatible);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"RefCommentedOut\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchemaKey, valid version and name, succeeds\", () => {\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" version=\"1.1.1\"> </ECSchema>`;\n const key = locater.getSchemaKey(schemaXml);\n assert.deepEqual(key, new SchemaKey(\"SchemaA\", new ECVersion(1, 1, 1)));\n });\n\n it(\"getSchemaKey, invalid xml, throws\", () => {\n const schemaXml = `<ECSchemaBad schemaName=\"SchemaA\" version=\"1.1.1\"> </ECSchemaBad>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECObjectsError, `Could not find '<ECSchema>' tag in the given string`);\n });\n\n it(\"getSchemaKey, invalid schemaName attribute, throws\", () => {\n const schemaXml = `<ECSchema schemaNameBad=\"SchemaA\" version=\"1.1.1\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);\n });\n\n it(\"getSchemaKey, invalid schemaName, throws\", () => {\n const schemaXml = `<ECSchema version=\"1.1.1\" schemaName=\"\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);\n });\n\n it(\"getSchemaKey, invalid version attribute, throws\", () => {\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" versionBad=\"1.1.1\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);\n });\n\n it(\"getSchemaKey, invalid version, throws\", () => {\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" version=\"\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECObjectsError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);\n });\n});\n\n"]}
1
+ {"version":3,"file":"SchemaXmlStringLocater.test.js","sourceRoot":"","sources":["../../../src/test/SchemaXmlStringLocater.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 path from \"path\";\nimport * as fs from \"fs\";\nimport { globSync } from \"glob\";\nimport { ECSchemaError, ECSchemaStatus, ECVersion, SchemaContext, SchemaKey, SchemaMatchType } from \"@itwin/ecschema-metadata\";\nimport { SchemaXmlStringLocater } from \"../SchemaXmlStringLocater\";\nimport { StringSchemaKey } from \"../SchemaStringLocater\";\n\ndescribe(\"SchemaXmlStringLocater tests:\", () => {\n let locater: SchemaXmlStringLocater;\n let context: SchemaContext;\n let schemaStrings: string [];\n\n const loadSchemaString = (schemaName: string) => {\n const searchPath = path.join(__dirname, \"assets\", `${schemaName}.ecschema.xml`);\n const file = fs.readFileSync(searchPath);\n return file.toString();\n };\n\n const loadSchemaStrings = () => {\n const schemas: string [] = [];\n const searchPath = path.join(__dirname, \"assets\", \"Schema*.ecschema.xml\");\n const result = globSync(searchPath, { windowsPathsNoEscape: true });\n for (const match of result) {\n const file = fs.readFileSync(match);\n if (!file)\n continue;\n schemas.push(file.toString());\n }\n return schemas;\n };\n\n beforeEach(() => {\n schemaStrings = loadSchemaStrings();\n locater = new SchemaXmlStringLocater();\n context = new SchemaContext();\n context.addLocater(locater);\n });\n\n it(\"locate valid schema with multiple references\", async () => {\n locater.addSchemaStrings(schemaStrings);\n const schemaKey = new SchemaKey(\"SchemaA\", 1, 1, 1);\n const schema = await context.getSchema(schemaKey, 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 locater.addSchemaStrings(schemaStrings);\n const schemaKey = new SchemaKey(\"SchemaA\", 1, 1, 1);\n const schema = context.getSchemaSync(schemaKey, 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 locater.addSchemaStrings(schemaStrings);\n const schemaKey = new SchemaKey(\"SchemaD\", 4, 4, 4);\n\n const locater1 = await locater.getSchema(schemaKey, SchemaMatchType.Exact, new SchemaContext());\n const locater2 = await locater.getSchema(schemaKey, SchemaMatchType.Exact, new SchemaContext());\n const context1 = await context.getSchema(schemaKey, SchemaMatchType.Exact);\n const context2 = await context.getSchema(schemaKey, 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 locater.addSchemaStrings(schemaStrings);\n const schemaKey = new SchemaKey(\"DoesNotExist\");\n\n assert.isUndefined(await locater.getSchema(schemaKey, SchemaMatchType.Exact, context));\n });\n\n it(\"addSchemaString, bad schema tag, throws\", async () => {\n const schemaString = loadSchemaString(\"BadSchemaTag\");\n try {\n locater.addSchemaString(schemaString);\n } catch (e) {\n const error = e as ECSchemaError;\n assert.strictEqual(error.errorNumber, ECSchemaStatus.InvalidSchemaXML);\n return;\n }\n\n assert.fail(0, 1, \"Expected ECObjects exception\");\n });\n\n it(\"addSchemaString, bad schema name tag, throws\", async () => {\n const schemaString = loadSchemaString(\"BadSchemaNameTag\");\n try {\n locater.addSchemaString(schemaString);\n } catch (e) {\n const error = e as ECSchemaError;\n assert.strictEqual(error.errorNumber, ECSchemaStatus.InvalidSchemaXML);\n return;\n }\n\n assert.fail(0, 1, \"Expected ECObjects exception\");\n });\n\n it(\"addSchemaString, bad schema version tag, throws\", async () => {\n const schemaString = loadSchemaString(\"BadSchemaVersionTag\");\n try {\n locater.addSchemaString(schemaString);\n } catch (e) {\n const error = e as ECSchemaError;\n assert.strictEqual(error.errorNumber, ECSchemaStatus.InvalidSchemaXML);\n return;\n }\n\n assert.fail(0, 1, \"Expected ECObjects exception\");\n });\n\n it(\"getSchema, full version, succeeds\", async () => {\n locater.addSchemaStrings(schemaStrings);\n const stub = await locater.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 1), SchemaMatchType.Exact, context);\n assert.isDefined(stub);\n const key = stub!.schemaKey as StringSchemaKey;\n assert.strictEqual(key.name, \"SchemaA\");\n assert.strictEqual(key.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchema, reference does not exist, throws.\", async () => {\n const schemaString = loadSchemaString(\"RefDoesNotExist\");\n locater.addSchemaString(schemaString);\n try {\n await locater.getSchema(new SchemaKey(\"RefDoesNotExist\", 1, 1, 1), SchemaMatchType.Exact, context);\n } catch (e) {\n const error = e as ECSchemaError;\n assert.strictEqual(error.errorNumber, ECSchemaStatus.UnableToLocateSchema);\n return;\n }\n\n assert.fail();\n });\n\n it(\"getSchema, references set\", async () => {\n locater.addSchemaStrings(schemaStrings);\n\n const schemaA = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 1), SchemaMatchType.Exact);\n const schemaB = await context.getSchema(new SchemaKey(\"SchemaB\", 2, 2, 2), SchemaMatchType.Exact);\n const schemaC = await context.getSchema(new SchemaKey(\"SchemaC\", 3, 3, 3), SchemaMatchType.Exact);\n const schemaD = await context.getSchema(new SchemaKey(\"SchemaD\", 4, 4, 4), SchemaMatchType.Exact);\n\n assert.isDefined(schemaA);\n assert.strictEqual(schemaA!.references.length, 2);\n assert.deepEqual(schemaA!.references[0], schemaC);\n assert.deepEqual(schemaA!.references[1], schemaB);\n assert.deepEqual(schemaA!.references[0].references[0], schemaD);\n assert.deepEqual(schemaA!.references[1].references[0], schemaC);\n assert.deepEqual(schemaA!.references[1].references[1], schemaD);\n });\n\n it(\"getSchema, exact version, wrong minor, fails\", async () => {\n locater.addSchemaStrings(schemaStrings);\n assert.isUndefined(await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 2), SchemaMatchType.Exact));\n });\n\n it(\"getSchema, latest, succeeds\", async () => {\n locater.addSchemaStrings(schemaStrings);\n const stub = await locater.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 0), SchemaMatchType.Latest, context);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"SchemaA\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"02.00.02\");\n });\n\n it(\"getSchema, latest write compatible, succeeds\", async () => {\n locater.addSchemaStrings(schemaStrings);\n const stub = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 1, 0), SchemaMatchType.LatestWriteCompatible);\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 locater.addSchemaStrings(schemaStrings);\n assert.isUndefined(await context.getSchema(new SchemaKey(\"SchemaA\", 1, 2, 0), SchemaMatchType.LatestWriteCompatible));\n });\n\n it(\"getSchema, latest read compatible, succeeds\", async () => {\n locater.addSchemaStrings(schemaStrings);\n const stub = await context.getSchema(new SchemaKey(\"SchemaA\", 1, 0, 0), SchemaMatchType.LatestReadCompatible);\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 locater.addSchemaStrings(schemaStrings);\n assert.isUndefined(await context.getSchema(new SchemaKey(\"SchemaA\", 2, 1, 1), SchemaMatchType.LatestReadCompatible));\n });\n\n it(\"sync - should ignore commented out schema references\", () => {\n locater.addSchemaStrings(schemaStrings);\n const schemaString = loadSchemaString(\"RefCommentedOut\");\n locater.addSchemaString(schemaString);\n\n const stub = context.getSchemaSync(new SchemaKey(\"RefCommentedOut\", 1, 1, 1), SchemaMatchType.LatestReadCompatible);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"RefCommentedOut\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"async - should ignore commented out schema references\", async () => {\n locater.addSchemaStrings(schemaStrings);\n const schemaString = loadSchemaString(\"RefCommentedOut\");\n locater.addSchemaString(schemaString);\n\n const stub = await context.getSchema(new SchemaKey(\"RefCommentedOut\", 1, 1, 1), SchemaMatchType.LatestReadCompatible);\n\n assert.isDefined(stub);\n assert.strictEqual(stub!.schemaKey.name, \"RefCommentedOut\");\n assert.strictEqual(stub!.schemaKey.version.toString(), \"01.01.01\");\n });\n\n it(\"getSchemaKey, valid version and name, succeeds\", () => {\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" version=\"1.1.1\"> </ECSchema>`;\n const key = locater.getSchemaKey(schemaXml);\n assert.deepEqual(key, new SchemaKey(\"SchemaA\", new ECVersion(1, 1, 1)));\n });\n\n it(\"getSchemaKey, invalid xml, throws\", () => {\n const schemaXml = `<ECSchemaBad schemaName=\"SchemaA\" version=\"1.1.1\"> </ECSchemaBad>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECSchemaError, `Could not find '<ECSchema>' tag in the given string`);\n });\n\n it(\"getSchemaKey, invalid schemaName attribute, throws\", () => {\n const schemaXml = `<ECSchema schemaNameBad=\"SchemaA\" version=\"1.1.1\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);\n });\n\n it(\"getSchemaKey, invalid schemaName, throws\", () => {\n const schemaXml = `<ECSchema version=\"1.1.1\" schemaName=\"\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);\n });\n\n it(\"getSchemaKey, invalid version attribute, throws\", () => {\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" versionBad=\"1.1.1\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);\n });\n\n it(\"getSchemaKey, invalid version, throws\", () => {\n const schemaXml = `<ECSchema schemaName=\"SchemaA\" version=\"\"> </ECSchema>`;\n expect(() => locater.getSchemaKey(schemaXml)).to.throw(ECSchemaError, `Could not find the ECSchema 'schemaName' or 'version' tag in the given string`);\n });\n});\n\n"]}