@speclynx/apidom-reference 2.2.3 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/apidom-reference.browser.js +296 -173
  3. package/dist/apidom-reference.browser.min.js +1 -1
  4. package/package.json +25 -25
  5. package/src/dereference/strategies/openapi-3-1/visitor.cjs +5 -2
  6. package/src/dereference/strategies/openapi-3-1/visitor.mjs +6 -3
  7. package/src/parse/parsers/Parser.cjs +7 -0
  8. package/src/parse/parsers/Parser.mjs +7 -0
  9. package/src/parse/parsers/arazzo-json-1/index.cjs +1 -1
  10. package/src/parse/parsers/arazzo-json-1/index.mjs +1 -1
  11. package/src/parse/parsers/arazzo-yaml-1/index.cjs +1 -1
  12. package/src/parse/parsers/arazzo-yaml-1/index.mjs +1 -1
  13. package/src/parse/parsers/asyncapi-json-2/index.cjs +1 -1
  14. package/src/parse/parsers/asyncapi-json-2/index.mjs +1 -1
  15. package/src/parse/parsers/asyncapi-yaml-2/index.cjs +1 -1
  16. package/src/parse/parsers/asyncapi-yaml-2/index.mjs +1 -1
  17. package/src/parse/parsers/json/index.cjs +1 -1
  18. package/src/parse/parsers/json/index.mjs +1 -1
  19. package/src/parse/parsers/openapi-json-2/index.cjs +1 -1
  20. package/src/parse/parsers/openapi-json-2/index.mjs +1 -1
  21. package/src/parse/parsers/openapi-json-3-0/index.cjs +1 -1
  22. package/src/parse/parsers/openapi-json-3-0/index.mjs +1 -1
  23. package/src/parse/parsers/openapi-json-3-1/index.cjs +1 -1
  24. package/src/parse/parsers/openapi-json-3-1/index.mjs +1 -1
  25. package/src/parse/parsers/openapi-yaml-2/index.cjs +1 -1
  26. package/src/parse/parsers/openapi-yaml-2/index.mjs +1 -1
  27. package/src/parse/parsers/openapi-yaml-3-0/index.cjs +1 -1
  28. package/src/parse/parsers/openapi-yaml-3-0/index.mjs +1 -1
  29. package/src/parse/parsers/openapi-yaml-3-1/index.cjs +1 -1
  30. package/src/parse/parsers/openapi-yaml-3-1/index.mjs +1 -1
  31. package/src/parse/parsers/yaml-1-2/index.cjs +2 -1
  32. package/src/parse/parsers/yaml-1-2/index.mjs +2 -1
  33. package/types/apidom-reference.d.ts +6 -1
  34. package/types/parse/parsers/Parser.d.ts +6 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@speclynx/apidom-reference",
3
- "version": "2.2.3",
3
+ "version": "2.4.0",
4
4
  "description": "Advanced algorithms for semantic ApiDOM manipulations like dereferencing or resolution.",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -213,7 +213,7 @@
213
213
  "test": "npm run build:es && cross-env BABEL_ENV=es babel test --out-dir test --extensions '.ts' --out-file-extension '.mjs' --root-mode 'upward' && cross-env NODE_ENV=test mocha",
214
214
  "perf": "cross-env BABEL_ENV=es babel ./test/perf/index.ts --out-file ./test/perf/index.mjs --root-mode 'upward' && cross-env NODE_ENV=test node ./test/perf/index.mjs",
215
215
  "perf:openapi-3-1-dereference": "cross-env BABEL_ENV=es babel ./test/perf/openapi-3-1-dereference.ts --out-file ./test/perf/openapi-3-1-dereference.mjs --root-mode 'upward' && cross-env NODE_ENV=test node ./test/perf/openapi-3-1-dereference.mjs",
216
- "typescript:check-types": "tsc --noEmit && tsc -p ./test/tsconfig.json --noEmit",
216
+ "typescript:check-types": "tsc --noEmit",
217
217
  "typescript:declaration": "tsc -p tsconfig.declaration.json && api-extractor run -l -c ./config/api-extractor/api-extractor.json",
218
218
  "prepack": "copyfiles -u 3 ../../LICENSES/* LICENSES && copyfiles -u 2 ../../NOTICE .",
219
219
  "postpack": "rimraf NOTICE LICENSES"
@@ -226,28 +226,28 @@
226
226
  "license": "Apache-2.0",
227
227
  "dependencies": {
228
228
  "@babel/runtime-corejs3": "^7.28.4",
229
- "@speclynx/apidom-core": "^2.2.3",
230
- "@speclynx/apidom-datamodel": "^2.2.3",
231
- "@speclynx/apidom-error": "^2.2.3",
232
- "@speclynx/apidom-json-pointer": "^2.2.3",
233
- "@speclynx/apidom-ns-arazzo-1": "^2.2.3",
234
- "@speclynx/apidom-ns-asyncapi-2": "^2.2.3",
235
- "@speclynx/apidom-ns-openapi-2": "^2.2.3",
236
- "@speclynx/apidom-ns-openapi-3-0": "^2.2.3",
237
- "@speclynx/apidom-ns-openapi-3-1": "^2.2.3",
238
- "@speclynx/apidom-parser-adapter-arazzo-json-1": "^2.2.3",
239
- "@speclynx/apidom-parser-adapter-arazzo-yaml-1": "^2.2.3",
240
- "@speclynx/apidom-parser-adapter-asyncapi-json-2": "^2.2.3",
241
- "@speclynx/apidom-parser-adapter-asyncapi-yaml-2": "^2.2.3",
242
- "@speclynx/apidom-parser-adapter-json": "^2.2.3",
243
- "@speclynx/apidom-parser-adapter-openapi-json-2": "^2.2.3",
244
- "@speclynx/apidom-parser-adapter-openapi-json-3-0": "^2.2.3",
245
- "@speclynx/apidom-parser-adapter-openapi-json-3-1": "^2.2.3",
246
- "@speclynx/apidom-parser-adapter-openapi-yaml-2": "^2.2.3",
247
- "@speclynx/apidom-parser-adapter-openapi-yaml-3-0": "^2.2.3",
248
- "@speclynx/apidom-parser-adapter-openapi-yaml-3-1": "^2.2.3",
249
- "@speclynx/apidom-parser-adapter-yaml-1-2": "^2.2.3",
250
- "@speclynx/apidom-traverse": "^2.2.3",
229
+ "@speclynx/apidom-core": "^2.4.0",
230
+ "@speclynx/apidom-datamodel": "^2.4.0",
231
+ "@speclynx/apidom-error": "^2.4.0",
232
+ "@speclynx/apidom-json-pointer": "^2.4.0",
233
+ "@speclynx/apidom-ns-arazzo-1": "^2.4.0",
234
+ "@speclynx/apidom-ns-asyncapi-2": "^2.4.0",
235
+ "@speclynx/apidom-ns-openapi-2": "^2.4.0",
236
+ "@speclynx/apidom-ns-openapi-3-0": "^2.4.0",
237
+ "@speclynx/apidom-ns-openapi-3-1": "^2.4.0",
238
+ "@speclynx/apidom-parser-adapter-arazzo-json-1": "^2.4.0",
239
+ "@speclynx/apidom-parser-adapter-arazzo-yaml-1": "^2.4.0",
240
+ "@speclynx/apidom-parser-adapter-asyncapi-json-2": "^2.4.0",
241
+ "@speclynx/apidom-parser-adapter-asyncapi-yaml-2": "^2.4.0",
242
+ "@speclynx/apidom-parser-adapter-json": "^2.4.0",
243
+ "@speclynx/apidom-parser-adapter-openapi-json-2": "^2.4.0",
244
+ "@speclynx/apidom-parser-adapter-openapi-json-3-0": "^2.4.0",
245
+ "@speclynx/apidom-parser-adapter-openapi-json-3-1": "^2.4.0",
246
+ "@speclynx/apidom-parser-adapter-openapi-yaml-2": "^2.4.0",
247
+ "@speclynx/apidom-parser-adapter-openapi-yaml-3-0": "^2.4.0",
248
+ "@speclynx/apidom-parser-adapter-openapi-yaml-3-1": "^2.4.0",
249
+ "@speclynx/apidom-parser-adapter-yaml-1-2": "^2.4.0",
250
+ "@speclynx/apidom-traverse": "^2.4.0",
251
251
  "axios": "^1.13.0",
252
252
  "minimatch": "^7.4.6",
253
253
  "process": "^0.11.10",
@@ -267,5 +267,5 @@
267
267
  "README.md",
268
268
  "CHANGELOG.md"
269
269
  ],
270
- "gitHead": "e08f97d01904015b1cf621e093145fe55de0d02d"
270
+ "gitHead": "f127ee0b98cc108b83a690bf317895e17a32b4d4"
271
271
  }
@@ -243,11 +243,14 @@ class OpenAPI3_1DereferenceVisitor {
243
243
 
244
244
  // override description and summary (outer has higher priority then inner)
245
245
  if ((0, _apidomDatamodel.isObjectElement)(referencedElement) && (0, _apidomDatamodel.isObjectElement)(mergedElement)) {
246
- if (referencingElement.hasKey('description') && 'description' in referencedElement) {
246
+ const fields = (0, _apidomCore.fixedFields)(referencedElement, {
247
+ indexed: true
248
+ });
249
+ if (referencingElement.hasKey('description') && Object.hasOwn(fields, 'description')) {
247
250
  mergedElement.remove('description');
248
251
  mergedElement.set('description', referencingElement.get('description'));
249
252
  }
250
- if (referencingElement.hasKey('summary') && 'summary' in referencedElement) {
253
+ if (referencingElement.hasKey('summary') && Object.hasOwn(fields, 'summary')) {
251
254
  mergedElement.remove('summary');
252
255
  mergedElement.set('summary', referencingElement.get('summary'));
253
256
  }
@@ -1,7 +1,7 @@
1
1
  import { propEq, none } from 'ramda';
2
2
  import { isUndefined } from 'ramda-adjunct';
3
3
  import { isElement, isPrimitiveElement, isStringElement, isObjectElement, RefElement, cloneShallow, cloneDeep } from '@speclynx/apidom-datamodel';
4
- import { IdentityManager, toValue } from '@speclynx/apidom-core';
4
+ import { IdentityManager, toValue, fixedFields } from '@speclynx/apidom-core';
5
5
  import { ApiDOMError } from '@speclynx/apidom-error';
6
6
  import { traverseAsync, find } from '@speclynx/apidom-traverse';
7
7
  import { evaluate as jsonPointerEvaluate, URIFragmentIdentifier } from '@speclynx/apidom-json-pointer';
@@ -237,11 +237,14 @@ class OpenAPI3_1DereferenceVisitor {
237
237
 
238
238
  // override description and summary (outer has higher priority then inner)
239
239
  if (isObjectElement(referencedElement) && isObjectElement(mergedElement)) {
240
- if (referencingElement.hasKey('description') && 'description' in referencedElement) {
240
+ const fields = fixedFields(referencedElement, {
241
+ indexed: true
242
+ });
243
+ if (referencingElement.hasKey('description') && Object.hasOwn(fields, 'description')) {
241
244
  mergedElement.remove('description');
242
245
  mergedElement.set('description', referencingElement.get('description'));
243
246
  }
244
- if (referencingElement.hasKey('summary') && 'summary' in referencedElement) {
247
+ if (referencingElement.hasKey('summary') && Object.hasOwn(fields, 'summary')) {
245
248
  mergedElement.remove('summary');
246
249
  mergedElement.set('summary', referencingElement.get('summary'));
247
250
  }
@@ -22,6 +22,11 @@ class Parser {
22
22
  */
23
23
  sourceMap;
24
24
 
25
+ /**
26
+ * Whether to use strict parsing (native JSON.parse/YAML instead of tree-sitter).
27
+ */
28
+ strict;
29
+
25
30
  /**
26
31
  * List of supported file extensions.
27
32
  */
@@ -35,12 +40,14 @@ class Parser {
35
40
  name,
36
41
  allowEmpty = true,
37
42
  sourceMap = false,
43
+ strict = true,
38
44
  fileExtensions = [],
39
45
  mediaTypes = []
40
46
  }) {
41
47
  this.name = name;
42
48
  this.allowEmpty = allowEmpty;
43
49
  this.sourceMap = sourceMap;
50
+ this.strict = strict;
44
51
  this.fileExtensions = fileExtensions;
45
52
  this.mediaTypes = mediaTypes;
46
53
  }
@@ -18,6 +18,11 @@ class Parser {
18
18
  */
19
19
  sourceMap;
20
20
 
21
+ /**
22
+ * Whether to use strict parsing (native JSON.parse/YAML instead of tree-sitter).
23
+ */
24
+ strict;
25
+
21
26
  /**
22
27
  * List of supported file extensions.
23
28
  */
@@ -31,12 +36,14 @@ class Parser {
31
36
  name,
32
37
  allowEmpty = true,
33
38
  sourceMap = false,
39
+ strict = true,
34
40
  fileExtensions = [],
35
41
  mediaTypes = []
36
42
  }) {
37
43
  this.name = name;
38
44
  this.allowEmpty = allowEmpty;
39
45
  this.sourceMap = sourceMap;
46
+ this.strict = strict;
40
47
  this.fileExtensions = fileExtensions;
41
48
  this.mediaTypes = mediaTypes;
42
49
  }
@@ -42,7 +42,7 @@ class ArazzoJSON1Parser extends _Parser.default {
42
42
  async parse(file) {
43
43
  const source = file.toString();
44
44
  try {
45
- const parserOpts = (0, _ramda.pick)(['sourceMap', 'refractorOpts'], this);
45
+ const parserOpts = (0, _ramda.pick)(['sourceMap', 'strict', 'refractorOpts'], this);
46
46
  return await (0, _apidomParserAdapterArazzoJson.parse)(source, parserOpts);
47
47
  } catch (error) {
48
48
  throw new _ParserError.default(`Error parsing "${file.uri}"`, {
@@ -36,7 +36,7 @@ class ArazzoJSON1Parser extends Parser {
36
36
  async parse(file) {
37
37
  const source = file.toString();
38
38
  try {
39
- const parserOpts = pick(['sourceMap', 'refractorOpts'], this);
39
+ const parserOpts = pick(['sourceMap', 'strict', 'refractorOpts'], this);
40
40
  return await parse(source, parserOpts);
41
41
  } catch (error) {
42
42
  throw new ParserError(`Error parsing "${file.uri}"`, {
@@ -42,7 +42,7 @@ class ArazzoYAML1Parser extends _Parser.default {
42
42
  async parse(file) {
43
43
  const source = file.toString();
44
44
  try {
45
- const parserOpts = (0, _ramda.pick)(['sourceMap', 'refractorOpts'], this);
45
+ const parserOpts = (0, _ramda.pick)(['sourceMap', 'strict', 'refractorOpts'], this);
46
46
  return await (0, _apidomParserAdapterArazzoYaml.parse)(source, parserOpts);
47
47
  } catch (error) {
48
48
  throw new _ParserError.default(`Error parsing "${file.uri}"`, {
@@ -36,7 +36,7 @@ class ArazzoYAML1Parser extends Parser {
36
36
  async parse(file) {
37
37
  const source = file.toString();
38
38
  try {
39
- const parserOpts = pick(['sourceMap', 'refractorOpts'], this);
39
+ const parserOpts = pick(['sourceMap', 'strict', 'refractorOpts'], this);
40
40
  return await parse(source, parserOpts);
41
41
  } catch (error) {
42
42
  throw new ParserError(`Error parsing "${file.uri}"`, {
@@ -42,7 +42,7 @@ class AsyncAPIJSON2Parser extends _Parser.default {
42
42
  async parse(file) {
43
43
  const source = file.toString();
44
44
  try {
45
- const parserOpts = (0, _ramda.pick)(['sourceMap', 'refractorOpts'], this);
45
+ const parserOpts = (0, _ramda.pick)(['sourceMap', 'strict', 'refractorOpts'], this);
46
46
  return await (0, _apidomParserAdapterAsyncapiJson.parse)(source, parserOpts);
47
47
  } catch (error) {
48
48
  throw new _ParserError.default(`Error parsing "${file.uri}"`, {
@@ -36,7 +36,7 @@ class AsyncAPIJSON2Parser extends Parser {
36
36
  async parse(file) {
37
37
  const source = file.toString();
38
38
  try {
39
- const parserOpts = pick(['sourceMap', 'refractorOpts'], this);
39
+ const parserOpts = pick(['sourceMap', 'strict', 'refractorOpts'], this);
40
40
  return await parse(source, parserOpts);
41
41
  } catch (error) {
42
42
  throw new ParserError(`Error parsing "${file.uri}"`, {
@@ -42,7 +42,7 @@ class AsyncAPIYAML2Parser extends _Parser.default {
42
42
  async parse(file) {
43
43
  const source = file.toString();
44
44
  try {
45
- const parserOpts = (0, _ramda.pick)(['sourceMap', 'refractorOpts'], this);
45
+ const parserOpts = (0, _ramda.pick)(['sourceMap', 'strict', 'refractorOpts'], this);
46
46
  return await (0, _apidomParserAdapterAsyncapiYaml.parse)(source, parserOpts);
47
47
  } catch (error) {
48
48
  throw new _ParserError.default(`Error parsing "${file.uri}"`, {
@@ -36,7 +36,7 @@ class AsyncAPIYAML2Parser extends Parser {
36
36
  async parse(file) {
37
37
  const source = file.toString();
38
38
  try {
39
- const parserOpts = pick(['sourceMap', 'refractorOpts'], this);
39
+ const parserOpts = pick(['sourceMap', 'strict', 'refractorOpts'], this);
40
40
  return await parse(source, parserOpts);
41
41
  } catch (error) {
42
42
  throw new ParserError(`Error parsing "${file.uri}"`, {
@@ -41,7 +41,7 @@ class JSONParser extends _Parser.default {
41
41
  async parse(file) {
42
42
  const source = file.toString();
43
43
  try {
44
- const parserOpts = (0, _ramda.pick)(['sourceMap'], this);
44
+ const parserOpts = (0, _ramda.pick)(['sourceMap', 'strict'], this);
45
45
  return await (0, _apidomParserAdapterJson.parse)(source, parserOpts);
46
46
  } catch (error) {
47
47
  throw new _ParserError.default(`Error parsing "${file.uri}"`, {
@@ -35,7 +35,7 @@ class JSONParser extends Parser {
35
35
  async parse(file) {
36
36
  const source = file.toString();
37
37
  try {
38
- const parserOpts = pick(['sourceMap'], this);
38
+ const parserOpts = pick(['sourceMap', 'strict'], this);
39
39
  return await parse(source, parserOpts);
40
40
  } catch (error) {
41
41
  throw new ParserError(`Error parsing "${file.uri}"`, {
@@ -42,7 +42,7 @@ class OpenAPIJSON2Parser extends _Parser.default {
42
42
  async parse(file) {
43
43
  const source = file.toString();
44
44
  try {
45
- const parserOpts = (0, _ramda.pick)(['sourceMap', 'refractorOpts'], this);
45
+ const parserOpts = (0, _ramda.pick)(['sourceMap', 'strict', 'refractorOpts'], this);
46
46
  return await (0, _apidomParserAdapterOpenapiJson.parse)(source, parserOpts);
47
47
  } catch (error) {
48
48
  throw new _ParserError.default(`Error parsing "${file.uri}"`, {
@@ -36,7 +36,7 @@ class OpenAPIJSON2Parser extends Parser {
36
36
  async parse(file) {
37
37
  const source = file.toString();
38
38
  try {
39
- const parserOpts = pick(['sourceMap', 'refractorOpts'], this);
39
+ const parserOpts = pick(['sourceMap', 'strict', 'refractorOpts'], this);
40
40
  return await parse(source, parserOpts);
41
41
  } catch (error) {
42
42
  throw new ParserError(`Error parsing "${file.uri}"`, {
@@ -42,7 +42,7 @@ class OpenAPIJSON3_0Parser extends _Parser.default {
42
42
  async parse(file) {
43
43
  const source = file.toString();
44
44
  try {
45
- const parserOpts = (0, _ramda.pick)(['sourceMap', 'refractorOpts'], this);
45
+ const parserOpts = (0, _ramda.pick)(['sourceMap', 'strict', 'refractorOpts'], this);
46
46
  return await (0, _apidomParserAdapterOpenapiJson.parse)(source, parserOpts);
47
47
  } catch (error) {
48
48
  throw new _ParserError.default(`Error parsing "${file.uri}"`, {
@@ -36,7 +36,7 @@ class OpenAPIJSON3_0Parser extends Parser {
36
36
  async parse(file) {
37
37
  const source = file.toString();
38
38
  try {
39
- const parserOpts = pick(['sourceMap', 'refractorOpts'], this);
39
+ const parserOpts = pick(['sourceMap', 'strict', 'refractorOpts'], this);
40
40
  return await parse(source, parserOpts);
41
41
  } catch (error) {
42
42
  throw new ParserError(`Error parsing "${file.uri}"`, {
@@ -42,7 +42,7 @@ class OpenAPIJSON3_1Parser extends _Parser.default {
42
42
  async parse(file) {
43
43
  const source = file.toString();
44
44
  try {
45
- const parserOpts = (0, _ramda.pick)(['sourceMap', 'refractorOpts'], this);
45
+ const parserOpts = (0, _ramda.pick)(['sourceMap', 'strict', 'refractorOpts'], this);
46
46
  return await (0, _apidomParserAdapterOpenapiJson.parse)(source, parserOpts);
47
47
  } catch (error) {
48
48
  throw new _ParserError.default(`Error parsing "${file.uri}"`, {
@@ -36,7 +36,7 @@ class OpenAPIJSON3_1Parser extends Parser {
36
36
  async parse(file) {
37
37
  const source = file.toString();
38
38
  try {
39
- const parserOpts = pick(['sourceMap', 'refractorOpts'], this);
39
+ const parserOpts = pick(['sourceMap', 'strict', 'refractorOpts'], this);
40
40
  return await parse(source, parserOpts);
41
41
  } catch (error) {
42
42
  throw new ParserError(`Error parsing "${file.uri}"`, {
@@ -42,7 +42,7 @@ class OpenAPIYAML2Parser extends _Parser.default {
42
42
  async parse(file) {
43
43
  const source = file.toString();
44
44
  try {
45
- const parserOpts = (0, _ramda.pick)(['sourceMap', 'refractorOpts'], this);
45
+ const parserOpts = (0, _ramda.pick)(['sourceMap', 'strict', 'refractorOpts'], this);
46
46
  return await (0, _apidomParserAdapterOpenapiYaml.parse)(source, parserOpts);
47
47
  } catch (error) {
48
48
  throw new _ParserError.default(`Error parsing "${file.uri}"`, {
@@ -36,7 +36,7 @@ class OpenAPIYAML2Parser extends Parser {
36
36
  async parse(file) {
37
37
  const source = file.toString();
38
38
  try {
39
- const parserOpts = pick(['sourceMap', 'refractorOpts'], this);
39
+ const parserOpts = pick(['sourceMap', 'strict', 'refractorOpts'], this);
40
40
  return await parse(source, parserOpts);
41
41
  } catch (error) {
42
42
  throw new ParserError(`Error parsing "${file.uri}"`, {
@@ -42,7 +42,7 @@ class OpenAPIYAML3_0Parser extends _Parser.default {
42
42
  async parse(file) {
43
43
  const source = file.toString();
44
44
  try {
45
- const parserOpts = (0, _ramda.pick)(['sourceMap', 'refractorOpts'], this);
45
+ const parserOpts = (0, _ramda.pick)(['sourceMap', 'strict', 'refractorOpts'], this);
46
46
  return await (0, _apidomParserAdapterOpenapiYaml.parse)(source, parserOpts);
47
47
  } catch (error) {
48
48
  throw new _ParserError.default(`Error parsing "${file.uri}"`, {
@@ -36,7 +36,7 @@ class OpenAPIYAML3_0Parser extends Parser {
36
36
  async parse(file) {
37
37
  const source = file.toString();
38
38
  try {
39
- const parserOpts = pick(['sourceMap', 'refractorOpts'], this);
39
+ const parserOpts = pick(['sourceMap', 'strict', 'refractorOpts'], this);
40
40
  return await parse(source, parserOpts);
41
41
  } catch (error) {
42
42
  throw new ParserError(`Error parsing "${file.uri}"`, {
@@ -42,7 +42,7 @@ class OpenAPIYAML3_1Parser extends _Parser.default {
42
42
  async parse(file) {
43
43
  const source = file.toString();
44
44
  try {
45
- const parserOpts = (0, _ramda.pick)(['sourceMap', 'refractorOpts'], this);
45
+ const parserOpts = (0, _ramda.pick)(['sourceMap', 'strict', 'refractorOpts'], this);
46
46
  return await (0, _apidomParserAdapterOpenapiYaml.parse)(source, parserOpts);
47
47
  } catch (error) {
48
48
  throw new _ParserError.default(`Error parsing "${file.uri}"`, {
@@ -36,7 +36,7 @@ class OpenAPIYAML3_1Parser extends Parser {
36
36
  async parse(file) {
37
37
  const source = file.toString();
38
38
  try {
39
- const parserOpts = pick(['sourceMap', 'refractorOpts'], this);
39
+ const parserOpts = pick(['sourceMap', 'strict', 'refractorOpts'], this);
40
40
  return await parse(source, parserOpts);
41
41
  } catch (error) {
42
42
  throw new ParserError(`Error parsing "${file.uri}"`, {
@@ -42,7 +42,8 @@ class YAML1Parser extends _Parser.default {
42
42
  const source = file.toString();
43
43
  try {
44
44
  return await (0, _apidomParserAdapterYaml.parse)(source, {
45
- sourceMap: this.sourceMap
45
+ sourceMap: this.sourceMap,
46
+ strict: this.strict
46
47
  });
47
48
  } catch (error) {
48
49
  throw new _ParserError.default(`Error parsing "${file.uri}"`, {
@@ -36,7 +36,8 @@ class YAML1Parser extends Parser {
36
36
  const source = file.toString();
37
37
  try {
38
38
  return await parse(source, {
39
- sourceMap: this.sourceMap
39
+ sourceMap: this.sourceMap,
40
+ strict: this.strict
40
41
  });
41
42
  } catch (error) {
42
43
  throw new ParserError(`Error parsing "${file.uri}"`, {
@@ -331,6 +331,10 @@ export declare abstract class Parser {
331
331
  * Whether to generate source map during parsing.
332
332
  */
333
333
  sourceMap: boolean;
334
+ /**
335
+ * Whether to use strict parsing (native JSON.parse/YAML instead of tree-sitter).
336
+ */
337
+ strict: boolean;
334
338
  /**
335
339
  * List of supported file extensions.
336
340
  */
@@ -339,7 +343,7 @@ export declare abstract class Parser {
339
343
  * List of supported media types.
340
344
  */
341
345
  mediaTypes: string[];
342
- constructor({ name, allowEmpty, sourceMap, fileExtensions, mediaTypes, }: ParserOptions);
346
+ constructor({ name, allowEmpty, sourceMap, strict, fileExtensions, mediaTypes, }: ParserOptions);
343
347
  abstract canParse(file: File_2): boolean | Promise<boolean>;
344
348
  abstract parse(file: File_2): ParseResultElement | Promise<ParseResultElement>;
345
349
  }
@@ -357,6 +361,7 @@ export declare interface ParserOptions {
357
361
  readonly name: string;
358
362
  readonly allowEmpty?: boolean;
359
363
  readonly sourceMap?: boolean;
364
+ readonly strict?: boolean;
360
365
  readonly fileExtensions?: string[];
361
366
  readonly mediaTypes?: string[];
362
367
  }
@@ -7,6 +7,7 @@ export interface ParserOptions {
7
7
  readonly name: string;
8
8
  readonly allowEmpty?: boolean;
9
9
  readonly sourceMap?: boolean;
10
+ readonly strict?: boolean;
10
11
  readonly fileExtensions?: string[];
11
12
  readonly mediaTypes?: string[];
12
13
  }
@@ -23,6 +24,10 @@ declare abstract class Parser {
23
24
  * Whether to generate source map during parsing.
24
25
  */
25
26
  sourceMap: boolean;
27
+ /**
28
+ * Whether to use strict parsing (native JSON.parse/YAML instead of tree-sitter).
29
+ */
30
+ strict: boolean;
26
31
  /**
27
32
  * List of supported file extensions.
28
33
  */
@@ -31,7 +36,7 @@ declare abstract class Parser {
31
36
  * List of supported media types.
32
37
  */
33
38
  mediaTypes: string[];
34
- constructor({ name, allowEmpty, sourceMap, fileExtensions, mediaTypes, }: ParserOptions);
39
+ constructor({ name, allowEmpty, sourceMap, strict, fileExtensions, mediaTypes, }: ParserOptions);
35
40
  abstract canParse(file: File): boolean | Promise<boolean>;
36
41
  abstract parse(file: File): ParseResultElement | Promise<ParseResultElement>;
37
42
  }