@jentic/arazzo-resolver 1.0.0-alpha.10
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 +49 -0
- package/LICENSE +202 -0
- package/NOTICE +4 -0
- package/README.md +490 -0
- package/dist/jentic-arazzo-resolver.browser.js +84468 -0
- package/dist/jentic-arazzo-resolver.browser.min.js +1 -0
- package/package.json +73 -0
- package/src/dereference/arazzo.cjs +272 -0
- package/src/dereference/arazzo.mjs +264 -0
- package/src/dereference/openapi.cjs +259 -0
- package/src/dereference/openapi.mjs +251 -0
- package/src/errors/DereferenceError.cjs +15 -0
- package/src/errors/DereferenceError.mjs +12 -0
- package/src/index.cjs +15 -0
- package/src/index.mjs +3 -0
- package/types/arazzo-resolver.d.ts +217 -0
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { ApiDOMError } from '@speclynx/apidom-error';
|
|
2
|
+
import { ApiDOMErrorOptions } from '@speclynx/apidom-error';
|
|
3
|
+
import type { ApiDOMReferenceOptions } from '@speclynx/apidom-reference/configuration/empty';
|
|
4
|
+
import { Element as Element_2 } from '@speclynx/apidom-datamodel';
|
|
5
|
+
import { ParseResultElement } from '@speclynx/apidom-datamodel';
|
|
6
|
+
import type { PartialDeep } from 'type-fest';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Default reference options for dereferencing Arazzo Documents.
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
export declare const defaultDereferenceArazzoOptions: DereferenceArazzoOptions;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Default reference options for dereferencing OpenAPI Documents.
|
|
16
|
+
* @public
|
|
17
|
+
*/
|
|
18
|
+
export declare const defaultDereferenceOpenAPIOptions: DereferenceOpenAPIOptions;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Dereferences an Arazzo Document from a file system path or HTTP(S) URL.
|
|
22
|
+
*
|
|
23
|
+
* This function resolves all JSON References ($ref) and Reusable Object references
|
|
24
|
+
* ($components.*) in the Arazzo Document.
|
|
25
|
+
*
|
|
26
|
+
* Source descriptions can optionally be dereferenced using strategy options:
|
|
27
|
+
* - `sourceDescriptions`: `true` (all) or `['name1', 'name2']` (specific names only)
|
|
28
|
+
* - `sourceDescriptionsMaxDepth`: Maximum recursion depth for nested Arazzo source descriptions (default: `+Infinity`)
|
|
29
|
+
*
|
|
30
|
+
* Options can be passed globally via `strategyOpts` or strategy-specific via `strategyOpts['arazzo-1']`.
|
|
31
|
+
*
|
|
32
|
+
* @param uri - A file system path or HTTP(S) URL to the Arazzo Document
|
|
33
|
+
* @param options - Reference options (uses defaultOptions when not provided)
|
|
34
|
+
* @returns A promise that resolves to the dereferenced Arazzo Document as ApiDOM element
|
|
35
|
+
* @throws DereferenceError - When dereferencing fails or document is not an Arazzo specification. The original error is available via the `cause` property.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* // Dereference from file
|
|
39
|
+
* const result = await dereferenceArazzo('/path/to/arazzo.json');
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* // Dereference from URL
|
|
43
|
+
* const result = await dereferenceArazzo('https://example.com/arazzo.yaml');
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* // Dereference with source descriptions
|
|
47
|
+
* const result = await dereferenceArazzo('/path/to/arazzo.json', {
|
|
48
|
+
* dereference: { strategyOpts: { sourceDescriptions: true } },
|
|
49
|
+
* });
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* // Dereference with custom options
|
|
53
|
+
* const result = await dereferenceArazzo('/path/to/arazzo.json', customReferenceOptions);
|
|
54
|
+
* @public
|
|
55
|
+
*/
|
|
56
|
+
export declare function dereferenceArazzo(uri: string, options?: DereferenceArazzoOptions): Promise<ParseResultElement>;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Dereferences an ApiDOM element representing an Arazzo Document.
|
|
60
|
+
*
|
|
61
|
+
* This function resolves all JSON References ($ref) and Reusable Object references
|
|
62
|
+
* ($components.*) in the Arazzo Document element.
|
|
63
|
+
*
|
|
64
|
+
* Supported scenarios:
|
|
65
|
+
* - ParseResultElement with retrievalURI metadata: baseURI derived automatically
|
|
66
|
+
* - ParseResultElement without retrievalURI: requires `options.resolve.baseURI`
|
|
67
|
+
* - Child element (e.g., WorkflowElement) with parseResult in strategyOpts:
|
|
68
|
+
* requires `options.dereference.strategyOpts.parseResult` for component resolution,
|
|
69
|
+
* and `options.resolve.baseURI` if parseResult lacks retrievalURI metadata
|
|
70
|
+
*
|
|
71
|
+
* Source descriptions can optionally be dereferenced using strategy options:
|
|
72
|
+
* - `sourceDescriptions`: `true` (all) or `['name1', 'name2']` (specific names only)
|
|
73
|
+
* - `sourceDescriptionsMaxDepth`: Maximum recursion depth for nested Arazzo source descriptions (default: `+Infinity`)
|
|
74
|
+
*
|
|
75
|
+
* Options can be passed globally via `strategyOpts` or strategy-specific via `strategyOpts['arazzo-1']`.
|
|
76
|
+
*
|
|
77
|
+
* @param element - An ApiDOM element (ParseResultElement or child element like WorkflowElement)
|
|
78
|
+
* @param options - Reference options (uses defaultOptions when not provided)
|
|
79
|
+
* @returns A promise that resolves to the dereferenced element
|
|
80
|
+
* @throws DereferenceError - When baseURI is required but not provided, or when dereferencing fails
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* Dereference ParseResultElement with retrievalURI (from file parsing)
|
|
84
|
+
* ```typescript
|
|
85
|
+
* import { parseArazzo } from '@jentic/arazzo-parser';
|
|
86
|
+
*
|
|
87
|
+
* const parseResult = await parseArazzo('/path/to/arazzo.json');
|
|
88
|
+
* const dereferenced = await dereferenceArazzoElement(parseResult);
|
|
89
|
+
* ```
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* Dereference ParseResultElement without retrievalURI (from inline parsing)
|
|
93
|
+
* ```typescript
|
|
94
|
+
* const parseResult = await parseArazzo({ arazzo: '1.0.1', ... });
|
|
95
|
+
* const dereferenced = await dereferenceArazzoElement(parseResult, {
|
|
96
|
+
* resolve: { baseURI: 'https://example.com/arazzo.json' },
|
|
97
|
+
* });
|
|
98
|
+
* ```
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* Dereference child element (e.g., WorkflowElement)
|
|
102
|
+
* ```typescript
|
|
103
|
+
* const parseResult = await parseArazzo('/path/to/arazzo.json');
|
|
104
|
+
* const workflow = parseResult.api.workflows.get(0);
|
|
105
|
+
* const dereferenced = await dereferenceArazzoElement(workflow, {
|
|
106
|
+
* dereference: { strategyOpts: { parseResult } },
|
|
107
|
+
* });
|
|
108
|
+
* ```
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* Dereference with source descriptions
|
|
112
|
+
* ```typescript
|
|
113
|
+
* const parseResult = await parseArazzo('/path/to/arazzo.json');
|
|
114
|
+
* const dereferenced = await dereferenceArazzoElement(parseResult, {
|
|
115
|
+
* dereference: { strategyOpts: { sourceDescriptions: true } },
|
|
116
|
+
* });
|
|
117
|
+
* ```
|
|
118
|
+
* @public
|
|
119
|
+
*/
|
|
120
|
+
export declare function dereferenceArazzoElement<T extends Element_2>(element: T, options?: DereferenceArazzoOptions): Promise<T>;
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Options for dereferencing Arazzo Documents.
|
|
124
|
+
* @public
|
|
125
|
+
*/
|
|
126
|
+
export declare type DereferenceArazzoOptions = PartialDeep<ApiDOMReferenceOptions>;
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Error thrown when dereferencing an Arazzo document or element fails.
|
|
130
|
+
* @public
|
|
131
|
+
*/
|
|
132
|
+
export declare class DereferenceError extends ApiDOMError {
|
|
133
|
+
constructor(message?: string, options?: ApiDOMErrorOptions);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Dereferences an OpenAPI Document from a file system path or HTTP(S) URL.
|
|
138
|
+
*
|
|
139
|
+
* This function resolves all JSON References ($ref) in the OpenAPI Document.
|
|
140
|
+
*
|
|
141
|
+
* Supports OpenAPI 2.0 (Swagger), OpenAPI 3.0.x, and OpenAPI 3.1.x.
|
|
142
|
+
*
|
|
143
|
+
* @param uri - A file system path or HTTP(S) URL to the OpenAPI Document
|
|
144
|
+
* @param options - Reference options (uses defaultOptions when not provided)
|
|
145
|
+
* @returns A promise that resolves to the dereferenced OpenAPI Document as ApiDOM element
|
|
146
|
+
* @throws DereferenceError - When dereferencing fails or document is not an OpenAPI specification. The original error is available via the `cause` property.
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* // Dereference from file
|
|
150
|
+
* const result = await dereferenceOpenAPI('/path/to/openapi.json');
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* // Dereference from URL
|
|
154
|
+
* const result = await dereferenceOpenAPI('https://example.com/openapi.yaml');
|
|
155
|
+
*
|
|
156
|
+
* @example
|
|
157
|
+
* // Dereference with custom options
|
|
158
|
+
* const result = await dereferenceOpenAPI('/path/to/openapi.json', customReferenceOptions);
|
|
159
|
+
* @public
|
|
160
|
+
*/
|
|
161
|
+
export declare function dereferenceOpenAPI(uri: string, options?: DereferenceOpenAPIOptions): Promise<ParseResultElement>;
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Dereferences an ApiDOM element representing an OpenAPI Document.
|
|
165
|
+
*
|
|
166
|
+
* This function resolves all JSON References ($ref) in the OpenAPI Document element.
|
|
167
|
+
*
|
|
168
|
+
* Supported scenarios:
|
|
169
|
+
* - ParseResultElement with retrievalURI metadata: baseURI derived automatically
|
|
170
|
+
* - ParseResultElement without retrievalURI: requires `options.resolve.baseURI`
|
|
171
|
+
* - Child element (e.g., PathItemElement) with parseResult in strategyOpts:
|
|
172
|
+
* requires `options.dereference.strategyOpts.parseResult` for component resolution,
|
|
173
|
+
* and `options.resolve.baseURI` if parseResult lacks retrievalURI metadata
|
|
174
|
+
*
|
|
175
|
+
* @param element - An ApiDOM element (ParseResultElement or child element like PathItemElement)
|
|
176
|
+
* @param options - Reference options (uses defaultOptions when not provided)
|
|
177
|
+
* @returns A promise that resolves to the dereferenced element
|
|
178
|
+
* @throws DereferenceError - When baseURI is required but not provided, or when dereferencing fails
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* Dereference ParseResultElement with retrievalURI (from file parsing)
|
|
182
|
+
* ```typescript
|
|
183
|
+
* import { parseOpenAPI } from '@jentic/arazzo-parser';
|
|
184
|
+
*
|
|
185
|
+
* const parseResult = await parseOpenAPI('/path/to/openapi.json');
|
|
186
|
+
* const dereferenced = await dereferenceOpenAPIElement(parseResult);
|
|
187
|
+
* ```
|
|
188
|
+
*
|
|
189
|
+
* @example
|
|
190
|
+
* Dereference ParseResultElement without retrievalURI (from inline parsing)
|
|
191
|
+
* ```typescript
|
|
192
|
+
* const parseResult = await parseOpenAPI({ openapi: '3.1.0', ... });
|
|
193
|
+
* const dereferenced = await dereferenceOpenAPIElement(parseResult, {
|
|
194
|
+
* resolve: { baseURI: 'https://example.com/openapi.json' },
|
|
195
|
+
* });
|
|
196
|
+
* ```
|
|
197
|
+
*
|
|
198
|
+
* @example
|
|
199
|
+
* Dereference child element (e.g., PathItemElement)
|
|
200
|
+
* ```typescript
|
|
201
|
+
* const parseResult = await parseOpenAPI('/path/to/openapi.json');
|
|
202
|
+
* const pathItem = parseResult.api.paths.get('/users');
|
|
203
|
+
* const dereferenced = await dereferenceOpenAPIElement(pathItem, {
|
|
204
|
+
* dereference: { strategyOpts: { parseResult } },
|
|
205
|
+
* });
|
|
206
|
+
* ```
|
|
207
|
+
* @public
|
|
208
|
+
*/
|
|
209
|
+
export declare function dereferenceOpenAPIElement<T extends Element_2>(element: T, options?: DereferenceOpenAPIOptions): Promise<T>;
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Options for dereferencing OpenAPI Documents.
|
|
213
|
+
* @public
|
|
214
|
+
*/
|
|
215
|
+
export declare type DereferenceOpenAPIOptions = PartialDeep<ApiDOMReferenceOptions>;
|
|
216
|
+
|
|
217
|
+
export { }
|