@speclynx/apidom-overlay 4.6.0 → 4.7.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
+ # [4.7.0](https://github.com/speclynx/apidom/compare/v4.6.0...v4.7.0) (2026-04-12)
7
+
8
+ ### Features
9
+
10
+ - **overlay:** generic targets, export defaults, scoped opts ([#236](https://github.com/speclynx/apidom/issues/236)) ([7df6dc7](https://github.com/speclynx/apidom/commit/7df6dc79d18e4c71ceb17037a45f9ba069fdcaf1))
11
+
6
12
  # [4.6.0](https://github.com/speclynx/apidom/compare/v4.5.0...v4.6.0) (2026-04-12)
7
13
 
8
14
  ### Features
@@ -306,10 +306,10 @@ const applyOverlay = (overlayElement, targetElement, options = defaultApplyOptio
306
306
  }
307
307
  let target;
308
308
  if (targetElement instanceof _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"]) {
309
- if (targetElement.api === undefined) {
310
- throw new _errors_OverlayError_ts__WEBPACK_IMPORTED_MODULE_8__["default"]('Target ParseResultElement contains no API element');
309
+ if (targetElement.result === undefined) {
310
+ throw new _errors_OverlayError_ts__WEBPACK_IMPORTED_MODULE_8__["default"]('Target ParseResultElement contains no result element');
311
311
  }
312
- target = targetElement.api;
312
+ target = targetElement.result;
313
313
  } else {
314
314
  target = targetElement;
315
315
  }
@@ -325,7 +325,9 @@ const applyOverlay = (overlayElement, targetElement, options = defaultApplyOptio
325
325
  target = applyAction(action, target, internalOptions);
326
326
  }
327
327
  if (targetElement instanceof _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_2__["default"]) {
328
- targetElement.replaceResult(target);
328
+ if (target !== targetElement.result) {
329
+ targetElement.replaceResult(target);
330
+ }
329
331
  return targetElement;
330
332
  }
331
333
  return target;
@@ -373,7 +375,8 @@ const applyOverlay = (overlay, target, options) => (0,_speclynx_apidom_core__WEB
373
375
  "use strict";
374
376
  __webpack_require__.r(__webpack_exports__);
375
377
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
376
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
378
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
379
+ /* harmony export */ defaultOptions: () => (/* binding */ defaultOptions)
377
380
  /* harmony export */ });
378
381
  /* harmony import */ var _speclynx_apidom_datamodel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(96911);
379
382
  /* harmony import */ var _speclynx_apidom_ns_overlay_1__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26432);
@@ -390,7 +393,7 @@ __webpack_require__.r(__webpack_exports__);
390
393
  * @public
391
394
  */
392
395
 
393
- const defaultOptions = {
396
+ const defaultReferenceOptions = {
394
397
  parse: {
395
398
  parserOpts: {
396
399
  strict: false,
@@ -414,6 +417,15 @@ const defaultOptions = {
414
417
  }
415
418
  };
416
419
 
420
+ /**
421
+ * @public
422
+ */
423
+ const defaultOptions = {
424
+ immutable: false,
425
+ strict: false,
426
+ reference: defaultReferenceOptions
427
+ };
428
+
417
429
  /**
418
430
  * Applies an overlay document from a file/URL to its target document.
419
431
  *
@@ -423,27 +435,23 @@ const defaultOptions = {
423
435
  *
424
436
  * @param overlayURI - URI to the overlay document (file path or URL)
425
437
  * @param targetURI - URI to the target document; if omitted, uses the overlay's `extends` field
426
- * @param options - apidom-reference options + overlay merge options
438
+ * @param options - overlay apply options; reference options live under `options.reference`
427
439
  * @returns ParseResultElement with the modified target document
428
440
  *
429
441
  * @public
430
442
  */
431
- const applyOverlay = async (overlayURI, targetURI, options = {
432
- immutable: false,
433
- strict: false
434
- }) => {
435
- const mergedOptions = (0,_speclynx_apidom_reference__WEBPACK_IMPORTED_MODULE_2__.mergeOptions)(defaultOptions, options);
443
+ const applyOverlay = async (overlayURI, targetURI, options = defaultOptions) => {
444
+ const mergedRefOptions = (0,_speclynx_apidom_reference__WEBPACK_IMPORTED_MODULE_2__.mergeOptions)(defaultReferenceOptions, options.reference ?? {});
436
445
 
437
446
  // parse the overlay document along with document attached to `extends` field (if present)
438
- const overlayParseResult = await (0,_speclynx_apidom_reference__WEBPACK_IMPORTED_MODULE_2__.parse)(overlayURI, mergedOptions);
447
+ const overlayParseResult = await (0,_speclynx_apidom_reference__WEBPACK_IMPORTED_MODULE_2__.parse)(overlayURI, mergedRefOptions);
439
448
  const overlayElement = overlayParseResult.api;
440
449
  if (!(0,_speclynx_apidom_ns_overlay_1__WEBPACK_IMPORTED_MODULE_1__.isOverlay1Element)(overlayElement)) {
441
450
  throw new _errors_OverlayError_ts__WEBPACK_IMPORTED_MODULE_4__["default"](`Failed to parse overlay document "${overlayURI}"`);
442
451
  }
443
452
  let targetParseResult;
444
453
  if (targetURI) {
445
- const targetOptions = (0,_speclynx_apidom_reference__WEBPACK_IMPORTED_MODULE_2__.mergeOptions)(defaultOptions, options);
446
- targetParseResult = await (0,_speclynx_apidom_reference__WEBPACK_IMPORTED_MODULE_2__.parse)(targetURI, targetOptions);
454
+ targetParseResult = await (0,_speclynx_apidom_reference__WEBPACK_IMPORTED_MODULE_2__.parse)(targetURI, mergedRefOptions);
447
455
  } else {
448
456
  const extendsElement = overlayElement.get('extends');
449
457
  targetParseResult = extendsElement?.meta?.get('parseResult');
@@ -101017,6 +101025,7 @@ __webpack_require__.r(__webpack_exports__);
101017
101025
  /* harmony export */ applyOverlay: () => (/* reexport safe */ _apply_realms_uri_ts__WEBPACK_IMPORTED_MODULE_1__["default"]),
101018
101026
  /* harmony export */ applyOverlayApiDOM: () => (/* reexport safe */ _apply_realms_apidom_ts__WEBPACK_IMPORTED_MODULE_0__.applyOverlay),
101019
101027
  /* harmony export */ applyOverlayPOJO: () => (/* reexport safe */ _apply_realms_pojo_ts__WEBPACK_IMPORTED_MODULE_2__.applyOverlay),
101028
+ /* harmony export */ defaultApplyOverlayOptions: () => (/* reexport safe */ _apply_realms_uri_ts__WEBPACK_IMPORTED_MODULE_1__.defaultOptions),
101020
101029
  /* harmony export */ validateAction: () => (/* reexport safe */ _validate_ts__WEBPACK_IMPORTED_MODULE_3__.validateAction)
101021
101030
  /* harmony export */ });
101022
101031
  /* harmony import */ var _apply_realms_apidom_ts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(28216);