@usearazzo/runner 1.0.1-alpha.25 → 1.0.1-alpha.26

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
+ ## [1.0.1-alpha.26](https://github.com/usearazzo/arazzo-toolkit/compare/v1.0.1-alpha.25...v1.0.1-alpha.26) (2026-11-05)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **runner:** resolve duplicate workflow and operation ids first-wins ([#324](https://github.com/usearazzo/arazzo-toolkit/issues/324)) ([0f5072c](https://github.com/usearazzo/arazzo-toolkit/commit/0f5072c8c60f4d9b030c58f409675f0c2e677762)), closes [#322](https://github.com/usearazzo/arazzo-toolkit/issues/322)
11
+
6
12
  ## [1.0.1-alpha.25](https://github.com/usearazzo/arazzo-toolkit/compare/v1.0.1-alpha.24...v1.0.1-alpha.25) (2026-11-04)
7
13
 
8
14
  ### Features
@@ -10628,8 +10628,9 @@ class ArazzoDocument extends _APIDocument_ts__WEBPACK_IMPORTED_MODULE_3__["defau
10628
10628
 
10629
10629
  /**
10630
10630
  * The workflows of this document that can be addressed by `workflowId`, in
10631
- * document order. Reads this document only: source descriptions are neither
10632
- * loaded nor listed.
10631
+ * document order. A duplicated `workflowId` is listed once, for its first
10632
+ * workflow. Reads this document only: source descriptions are neither loaded
10633
+ * nor listed.
10633
10634
  */
10634
10635
  listWorkflows() {
10635
10636
  return [...this.workflowIndex].map(([workflowId, jsonPointer]) => {
@@ -16345,7 +16346,8 @@ class ArazzoDocumentRegistryProvider extends _DocumentRegistryProvider_ts__WEBPA
16345
16346
  * A source description's canonical URI is resolved here too — against the
16346
16347
  * document's base URI, into the exact form the document registry keys on —
16347
16348
  * so every consumer works with a ready-to-use, non-relative URI. The first
16348
- * element of a duplicated source description name wins.
16349
+ * element of a duplicated source description name wins, and so does the
16350
+ * first workflow of a duplicated workflowId.
16349
16351
  */
16350
16352
  #buildIndexes(uri, parseResult) {
16351
16353
  const workflowIndex = new _document_ArazzoWorkflowIndex_ts__WEBPACK_IMPORTED_MODULE_13__["default"]();
@@ -16357,6 +16359,7 @@ class ArazzoDocumentRegistryProvider extends _DocumentRegistryProvider_ts__WEBPA
16357
16359
  const workflowId = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_6__["default"])(workflow.workflowId);
16358
16360
  if (typeof workflowId !== 'string') return path.skip();
16359
16361
  if (workflowId === '') return path.skip();
16362
+ if (workflowIndex.has(workflowId)) return path.skip();
16360
16363
  const workflowPointer = path.formatPath('jsonpointer');
16361
16364
  workflowIndex.set(workflowId, workflowPointer);
16362
16365
 
@@ -16503,6 +16506,7 @@ const providerOptionsOverride = {
16503
16506
  * Provides OpenAPIDocument instances for the DocumentRegistry.
16504
16507
  *
16505
16508
  * Parses, dereferences, and builds an OperationIndex for OpenAPI documents.
16509
+ * The first operation of a duplicated operationId wins.
16506
16510
  * @public
16507
16511
  */
16508
16512
  class OpenAPIDocumentRegistryProvider extends _DocumentRegistryProvider_ts__WEBPACK_IMPORTED_MODULE_11__["default"] {
@@ -16554,6 +16558,7 @@ class OpenAPIDocumentRegistryProvider extends _DocumentRegistryProvider_ts__WEBP
16554
16558
  const operationId = (0,_speclynx_apidom_core__WEBPACK_IMPORTED_MODULE_8__["default"])(operation.operationId);
16555
16559
  if (typeof operationId !== 'string') return path.skip();
16556
16560
  if (operationId === '') return path.skip();
16561
+ if (index.has(operationId)) return path.skip();
16557
16562
  index.set(operationId, path.formatPath('jsonpointer'));
16558
16563
  path.skip();
16559
16564
  }