@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.
@@ -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 { }