@speclynx/apidom-reference 2.7.0 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [2.8.0](https://github.com/speclynx/apidom/compare/v2.7.0...v2.8.0) (2026-02-06)
7
+
8
+ ### Features
9
+
10
+ - **reference:** expose low level API for parsing Arazzo source descriptions ([#73](https://github.com/speclynx/apidom/issues/73)) ([1f0d771](https://github.com/speclynx/apidom/commit/1f0d7713f864924e03c601113c0270aeed6e9f81))
11
+
6
12
  # [2.7.0](https://github.com/speclynx/apidom/compare/v2.6.1...v2.7.0) (2026-02-05)
7
13
 
8
14
  ### Features
@@ -5704,14 +5704,15 @@ class ApiDOMJSONParser extends _Parser_ts__WEBPACK_IMPORTED_MODULE_4__["default"
5704
5704
  "use strict";
5705
5705
  __webpack_require__.r(__webpack_exports__);
5706
5706
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
5707
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
5707
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
5708
+ /* harmony export */ parseSourceDescriptions: () => (/* reexport safe */ _source_descriptions_ts__WEBPACK_IMPORTED_MODULE_5__.parseSourceDescriptions)
5708
5709
  /* harmony export */ });
5709
5710
  /* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14494);
5710
5711
  /* harmony import */ var _speclynx_apidom_parser_adapter_arazzo_json_1__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6017);
5711
5712
  /* harmony import */ var _speclynx_apidom_parser_adapter_arazzo_json_1__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29028);
5712
5713
  /* harmony import */ var _errors_ParserError_ts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(89371);
5713
5714
  /* harmony import */ var _Parser_ts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(13166);
5714
- /* harmony import */ var _source_description_ts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(69848);
5715
+ /* harmony import */ var _source_descriptions_ts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(61407);
5715
5716
 
5716
5717
 
5717
5718
 
@@ -5757,7 +5758,7 @@ class ArazzoJSON1Parser extends _Parser_ts__WEBPACK_IMPORTED_MODULE_4__["default
5757
5758
  const parseResult = await (0,_speclynx_apidom_parser_adapter_arazzo_json_1__WEBPACK_IMPORTED_MODULE_1__.parse)(source, parserOpts);
5758
5759
  const shouldParseSourceDescriptions = options?.parse?.parserOpts?.[this.name]?.sourceDescriptions ?? options?.parse?.parserOpts?.sourceDescriptions;
5759
5760
  if (shouldParseSourceDescriptions) {
5760
- const sourceDescriptions = await (0,_source_description_ts__WEBPACK_IMPORTED_MODULE_5__.parseSourceDescriptions)(this.name, parseResult.api, file, options);
5761
+ const sourceDescriptions = await (0,_source_descriptions_ts__WEBPACK_IMPORTED_MODULE_5__.parseSourceDescriptions)(parseResult, file.uri, options, this.name);
5761
5762
  parseResult.push(...sourceDescriptions);
5762
5763
  }
5763
5764
  return parseResult;
@@ -5768,11 +5769,12 @@ class ArazzoJSON1Parser extends _Parser_ts__WEBPACK_IMPORTED_MODULE_4__["default
5768
5769
  }
5769
5770
  }
5770
5771
  }
5772
+
5771
5773
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ArazzoJSON1Parser);
5772
5774
 
5773
5775
  /***/ },
5774
5776
 
5775
- /***/ 69848
5777
+ /***/ 61407
5776
5778
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
5777
5779
 
5778
5780
  "use strict";
@@ -5789,9 +5791,11 @@ __webpack_require__.r(__webpack_exports__);
5789
5791
  /* harmony import */ var _speclynx_apidom_ns_openapi_3_0__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(32131);
5790
5792
  /* harmony import */ var _speclynx_apidom_ns_openapi_3_1__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(76332);
5791
5793
  /* harmony import */ var _speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(44673);
5792
- /* harmony import */ var _util_url_ts__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(30658);
5793
- /* harmony import */ var _options_util_ts__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(86547);
5794
- /* harmony import */ var _index_ts__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(35014);
5794
+ /* harmony import */ var _File_ts__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(10682);
5795
+ /* harmony import */ var _util_url_ts__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(30658);
5796
+ /* harmony import */ var _options_util_ts__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(86547);
5797
+ /* harmony import */ var _index_ts__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(35014);
5798
+
5795
5799
 
5796
5800
 
5797
5801
 
@@ -5828,7 +5832,7 @@ async function parseSourceDescription(sourceDescription, ctx) {
5828
5832
  parseResult.push(annotation);
5829
5833
  return parseResult;
5830
5834
  }
5831
- const retrievalURI = _util_url_ts__WEBPACK_IMPORTED_MODULE_9__.resolve(ctx.baseURI, sourceDescriptionURI);
5835
+ const retrievalURI = _util_url_ts__WEBPACK_IMPORTED_MODULE_10__.resolve(ctx.baseURI, sourceDescriptionURI);
5832
5836
 
5833
5837
  // skip if already visited (cycle detection)
5834
5838
  if (ctx.visitedUrls.has(retrievalURI)) {
@@ -5839,7 +5843,7 @@ async function parseSourceDescription(sourceDescription, ctx) {
5839
5843
  }
5840
5844
  ctx.visitedUrls.add(retrievalURI);
5841
5845
  try {
5842
- const sdParseResult = await (0,_index_ts__WEBPACK_IMPORTED_MODULE_11__["default"])(retrievalURI, (0,_options_util_ts__WEBPACK_IMPORTED_MODULE_10__.merge)(ctx.options, {
5846
+ const sourceDescriptionParseResult = await (0,_index_ts__WEBPACK_IMPORTED_MODULE_12__["default"])(retrievalURI, (0,_options_util_ts__WEBPACK_IMPORTED_MODULE_11__.merge)(ctx.options, {
5843
5847
  parse: {
5844
5848
  mediaType: 'text/plain',
5845
5849
  // allow parser plugin detection
@@ -5852,7 +5856,7 @@ async function parseSourceDescription(sourceDescription, ctx) {
5852
5856
  }
5853
5857
  }));
5854
5858
  // merge parsed result into our parse result
5855
- for (const item of sdParseResult) {
5859
+ for (const item of sourceDescriptionParseResult) {
5856
5860
  parseResult.push(item);
5857
5861
  }
5858
5862
  } catch (error) {
@@ -5894,10 +5898,40 @@ async function parseSourceDescription(sourceDescription, ctx) {
5894
5898
  }
5895
5899
 
5896
5900
  /**
5897
- * Shared function for parsing source descriptions.
5901
+ * Parses source descriptions from an Arazzo document's ParseResult.
5902
+ *
5903
+ * @param parseResult - ParseResult containing an Arazzo specification
5904
+ * @param parseResultRetrievalURI - URI from which the parseResult was retrieved
5905
+ * @param options - Full ReferenceOptions (caller responsibility to construct)
5906
+ * @param parserName - Parser name for options lookup (defaults to 'arazzo-json-1')
5907
+ * @returns Array of ParseResultElements. On success, returns one ParseResultElement per
5908
+ * source description (each with class 'source-description' and name/type metadata).
5909
+ * May return early with a single-element array containing a warning annotation when:
5910
+ * - The API is not an Arazzo specification
5911
+ * - The sourceDescriptions field is missing or not an array
5912
+ * - Maximum parse depth is exceeded (error annotation)
5913
+ * Returns an empty array when sourceDescriptions option is disabled or no names match.
5914
+ *
5915
+ * @example
5916
+ * ```typescript
5917
+ * import { options, mergeOptions } from '@speclynx/apidom-reference';
5918
+ * import { parseSourceDescriptions } from '@speclynx/apidom-reference/parse/parsers/arazzo-json-1';
5919
+ *
5920
+ * const fullOptions = mergeOptions(options, {
5921
+ * parse: { parserOpts: { sourceDescriptions: true } }
5922
+ * });
5923
+ * const results = await parseSourceDescriptions(parseResult, uri, fullOptions);
5924
+ * ```
5925
+ *
5898
5926
  * @public
5899
5927
  */
5900
- async function parseSourceDescriptions(parserName, api, file, options) {
5928
+ async function parseSourceDescriptions(parseResult, parseResultRetrievalURI, options, parserName = 'arazzo-json-1') {
5929
+ const {
5930
+ api
5931
+ } = parseResult;
5932
+ const file = new _File_ts__WEBPACK_IMPORTED_MODULE_9__["default"]({
5933
+ uri: _util_url_ts__WEBPACK_IMPORTED_MODULE_10__.sanitize(_util_url_ts__WEBPACK_IMPORTED_MODULE_10__.stripHash(parseResultRetrievalURI))
5934
+ });
5901
5935
  const results = [];
5902
5936
 
5903
5937
  /**
@@ -5968,14 +6002,15 @@ async function parseSourceDescriptions(parserName, api, file, options) {
5968
6002
  "use strict";
5969
6003
  __webpack_require__.r(__webpack_exports__);
5970
6004
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
5971
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
6005
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
6006
+ /* harmony export */ parseSourceDescriptions: () => (/* reexport safe */ _source_descriptions_ts__WEBPACK_IMPORTED_MODULE_5__.parseSourceDescriptions)
5972
6007
  /* harmony export */ });
5973
6008
  /* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14494);
5974
6009
  /* harmony import */ var _speclynx_apidom_parser_adapter_arazzo_yaml_1__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16206);
5975
6010
  /* harmony import */ var _speclynx_apidom_parser_adapter_arazzo_yaml_1__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(43195);
5976
6011
  /* harmony import */ var _errors_ParserError_ts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(89371);
5977
6012
  /* harmony import */ var _Parser_ts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(13166);
5978
- /* harmony import */ var _arazzo_json_1_source_description_ts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(69848);
6013
+ /* harmony import */ var _source_descriptions_ts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(97782);
5979
6014
 
5980
6015
 
5981
6016
 
@@ -6021,7 +6056,7 @@ class ArazzoYAML1Parser extends _Parser_ts__WEBPACK_IMPORTED_MODULE_4__["default
6021
6056
  const parseResult = await (0,_speclynx_apidom_parser_adapter_arazzo_yaml_1__WEBPACK_IMPORTED_MODULE_1__.parse)(source, parserOpts);
6022
6057
  const shouldParseSourceDescriptions = options?.parse?.parserOpts?.[this.name]?.sourceDescriptions ?? options?.parse?.parserOpts?.sourceDescriptions;
6023
6058
  if (shouldParseSourceDescriptions) {
6024
- const sourceDescriptions = await (0,_arazzo_json_1_source_description_ts__WEBPACK_IMPORTED_MODULE_5__.parseSourceDescriptions)(this.name, parseResult.api, file, options);
6059
+ const sourceDescriptions = await (0,_source_descriptions_ts__WEBPACK_IMPORTED_MODULE_5__.parseSourceDescriptions)(parseResult, file.uri, options, this.name);
6025
6060
  parseResult.push(...sourceDescriptions);
6026
6061
  }
6027
6062
  return parseResult;
@@ -6032,10 +6067,30 @@ class ArazzoYAML1Parser extends _Parser_ts__WEBPACK_IMPORTED_MODULE_4__["default
6032
6067
  }
6033
6068
  }
6034
6069
  }
6070
+
6035
6071
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ArazzoYAML1Parser);
6036
6072
 
6037
6073
  /***/ },
6038
6074
 
6075
+ /***/ 97782
6076
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
6077
+
6078
+ "use strict";
6079
+ __webpack_require__.r(__webpack_exports__);
6080
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
6081
+ /* harmony export */ parseSourceDescriptions: () => (/* binding */ parseSourceDescriptions)
6082
+ /* harmony export */ });
6083
+ /* harmony import */ var _arazzo_json_1_source_descriptions_ts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(61407);
6084
+
6085
+ /**
6086
+ * @public
6087
+ */
6088
+ const parseSourceDescriptions = (parseResult, parseResultRetrievalURI, options, parserName = 'arazzo-yaml-1') => {
6089
+ return (0,_arazzo_json_1_source_descriptions_ts__WEBPACK_IMPORTED_MODULE_0__.parseSourceDescriptions)(parseResult, parseResultRetrievalURI, options, parserName);
6090
+ };
6091
+
6092
+ /***/ },
6093
+
6039
6094
  /***/ 35844
6040
6095
  (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
6041
6096