@speclynx/apidom-reference 4.0.3 → 4.0.5
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 +10 -0
- package/dist/apidom-reference.browser.js +43 -19
- package/dist/apidom-reference.browser.min.js +1 -1
- package/package.json +27 -26
- package/src/File.ts +0 -63
- package/src/Reference.ts +0 -38
- package/src/ReferenceSet.ts +0 -73
- package/src/bundle/index.ts +0 -57
- package/src/bundle/strategies/BundleStrategy.ts +0 -27
- package/src/bundle/strategies/openapi-3-1/index.ts +0 -57
- package/src/configuration/empty.ts +0 -1
- package/src/configuration/saturated.ts +0 -72
- package/src/dereference/index.ts +0 -96
- package/src/dereference/strategies/DereferenceStrategy.ts +0 -27
- package/src/dereference/strategies/apidom/index.ts +0 -128
- package/src/dereference/strategies/apidom/selectors/element-id.ts +0 -48
- package/src/dereference/strategies/apidom/visitor.ts +0 -316
- package/src/dereference/strategies/arazzo-1/index.ts +0 -158
- package/src/dereference/strategies/arazzo-1/selectors/$anchor.ts +0 -9
- package/src/dereference/strategies/arazzo-1/selectors/uri.ts +0 -5
- package/src/dereference/strategies/arazzo-1/source-descriptions.ts +0 -317
- package/src/dereference/strategies/arazzo-1/util.ts +0 -33
- package/src/dereference/strategies/arazzo-1/visitor.ts +0 -574
- package/src/dereference/strategies/asyncapi-2/index.ts +0 -133
- package/src/dereference/strategies/asyncapi-2/visitor.ts +0 -589
- package/src/dereference/strategies/openapi-2/index.ts +0 -136
- package/src/dereference/strategies/openapi-2/visitor.ts +0 -745
- package/src/dereference/strategies/openapi-3-0/index.ts +0 -134
- package/src/dereference/strategies/openapi-3-0/visitor.ts +0 -760
- package/src/dereference/strategies/openapi-3-1/index.ts +0 -141
- package/src/dereference/strategies/openapi-3-1/selectors/$anchor.ts +0 -64
- package/src/dereference/strategies/openapi-3-1/selectors/uri.ts +0 -54
- package/src/dereference/strategies/openapi-3-1/util.ts +0 -83
- package/src/dereference/strategies/openapi-3-1/visitor.ts +0 -1053
- package/src/dereference/util.ts +0 -29
- package/src/errors/BundleError.ts +0 -8
- package/src/errors/DereferenceError.ts +0 -8
- package/src/errors/EvaluationElementIdError.ts +0 -8
- package/src/errors/EvaluationJsonSchema$anchorError.ts +0 -8
- package/src/errors/EvaluationJsonSchemaUriError.ts +0 -8
- package/src/errors/InvalidJsonSchema$anchorError.ts +0 -12
- package/src/errors/JsonSchema$anchorError.ts +0 -8
- package/src/errors/JsonSchemaUriError.ts +0 -8
- package/src/errors/MaximumBundleDepthError.ts +0 -8
- package/src/errors/MaximumDereferenceDepthError.ts +0 -8
- package/src/errors/MaximumResolveDepthError.ts +0 -8
- package/src/errors/ParseError.ts +0 -8
- package/src/errors/ParserError.ts +0 -8
- package/src/errors/PluginError.ts +0 -15
- package/src/errors/ResolveError.ts +0 -8
- package/src/errors/ResolverError.ts +0 -8
- package/src/errors/UnmatchedBundleStrategyError.ts +0 -8
- package/src/errors/UnmatchedDereferenceStrategyError.ts +0 -8
- package/src/errors/UnmatchedParserError.ts +0 -8
- package/src/errors/UnmatchedResolveStrategyError.ts +0 -8
- package/src/errors/UnmatchedResolverError.ts +0 -8
- package/src/errors/UnresolvableReferenceError.ts +0 -8
- package/src/index.ts +0 -135
- package/src/options/index.ts +0 -239
- package/src/options/util.ts +0 -22
- package/src/parse/index.ts +0 -67
- package/src/parse/parsers/Parser.ts +0 -80
- package/src/parse/parsers/apidom-json/index.ts +0 -78
- package/src/parse/parsers/arazzo-json-1/index.ts +0 -76
- package/src/parse/parsers/arazzo-json-1/source-descriptions.ts +0 -280
- package/src/parse/parsers/arazzo-yaml-1/index.ts +0 -77
- package/src/parse/parsers/arazzo-yaml-1/source-descriptions.ts +0 -16
- package/src/parse/parsers/asyncapi-json-2/index.ts +0 -58
- package/src/parse/parsers/asyncapi-yaml-2/index.ts +0 -58
- package/src/parse/parsers/binary/index-browser.ts +0 -60
- package/src/parse/parsers/binary/index-node.ts +0 -57
- package/src/parse/parsers/json/index.ts +0 -52
- package/src/parse/parsers/openapi-json-2/index.ts +0 -58
- package/src/parse/parsers/openapi-json-3-0/index.ts +0 -59
- package/src/parse/parsers/openapi-json-3-1/index.ts +0 -59
- package/src/parse/parsers/openapi-yaml-2/index.ts +0 -58
- package/src/parse/parsers/openapi-yaml-3-0/index.ts +0 -59
- package/src/parse/parsers/openapi-yaml-3-1/index.ts +0 -59
- package/src/parse/parsers/yaml-1-2/index.ts +0 -60
- package/src/resolve/index.ts +0 -75
- package/src/resolve/resolvers/HTTPResolver.ts +0 -58
- package/src/resolve/resolvers/Resolver.ts +0 -25
- package/src/resolve/resolvers/file/index-browser.ts +0 -24
- package/src/resolve/resolvers/file/index-node.ts +0 -55
- package/src/resolve/resolvers/http-axios/cache/MemoryCache.ts +0 -46
- package/src/resolve/resolvers/http-axios/index.ts +0 -130
- package/src/resolve/strategies/ResolveStrategy.ts +0 -26
- package/src/resolve/strategies/apidom/index.ts +0 -78
- package/src/resolve/strategies/asyncapi-2/index.ts +0 -78
- package/src/resolve/strategies/openapi-2/index.ts +0 -78
- package/src/resolve/strategies/openapi-3-0/index.ts +0 -78
- package/src/resolve/strategies/openapi-3-1/index.ts +0 -78
- package/src/resolve/util.ts +0 -39
- package/src/util/plugins.ts +0 -37
- package/src/util/url.ts +0 -285
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { Element, cloneDeep } from '@speclynx/apidom-datamodel';
|
|
2
|
-
import { isSwaggerElement, mediaTypes } from '@speclynx/apidom-ns-openapi-2';
|
|
3
|
-
import { traverseAsync } from '@speclynx/apidom-traverse';
|
|
4
|
-
|
|
5
|
-
import DereferenceStrategy, { DereferenceStrategyOptions } from '../DereferenceStrategy.ts';
|
|
6
|
-
import File from '../../../File.ts';
|
|
7
|
-
import Reference from '../../../Reference.ts';
|
|
8
|
-
import ReferenceSet from '../../../ReferenceSet.ts';
|
|
9
|
-
import OpenAPI2DereferenceVisitor from './visitor.ts';
|
|
10
|
-
import type { ReferenceOptions } from '../../../options/index.ts';
|
|
11
|
-
|
|
12
|
-
export type {
|
|
13
|
-
default as DereferenceStrategy,
|
|
14
|
-
DereferenceStrategyOptions,
|
|
15
|
-
} from '../DereferenceStrategy.ts';
|
|
16
|
-
export type { default as File, FileOptions } from '../../../File.ts';
|
|
17
|
-
export type { default as Reference, ReferenceOptions } from '../../../Reference.ts';
|
|
18
|
-
export type { default as ReferenceSet, ReferenceSetOptions } from '../../../ReferenceSet.ts';
|
|
19
|
-
export type { OpenAPI2DereferenceVisitorOptions } from './visitor.ts';
|
|
20
|
-
export type {
|
|
21
|
-
ReferenceOptions as ApiDOMReferenceOptions,
|
|
22
|
-
ReferenceBundleOptions as ApiDOMReferenceBundleOptions,
|
|
23
|
-
ReferenceDereferenceOptions as ApiDOMReferenceDereferenceOptions,
|
|
24
|
-
ReferenceParseOptions as ApiDOMReferenceParseOptions,
|
|
25
|
-
ReferenceResolveOptions as ApiDOMReferenceResolveOptions,
|
|
26
|
-
} from '../../../options/index.ts';
|
|
27
|
-
export type { default as Parser, ParserOptions } from '../../../parse/parsers/Parser.ts';
|
|
28
|
-
export type { default as Resolver, ResolverOptions } from '../../../resolve/resolvers/Resolver.ts';
|
|
29
|
-
export type {
|
|
30
|
-
default as ResolveStrategy,
|
|
31
|
-
ResolveStrategyOptions,
|
|
32
|
-
} from '../../../resolve/strategies/ResolveStrategy.ts';
|
|
33
|
-
export type {
|
|
34
|
-
default as BundleStrategy,
|
|
35
|
-
BundleStrategyOptions,
|
|
36
|
-
} from '../../../bundle/strategies/BundleStrategy.ts';
|
|
37
|
-
export type { AncestorLineage } from '../../util.ts';
|
|
38
|
-
export type { AsyncAPI2DereferenceVisitorOptions } from '../asyncapi-2/visitor.ts';
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* @public
|
|
42
|
-
*/
|
|
43
|
-
export interface OpenAPI2DereferenceStrategyOptions extends Omit<
|
|
44
|
-
DereferenceStrategyOptions,
|
|
45
|
-
'name'
|
|
46
|
-
> {}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* @public
|
|
50
|
-
*/
|
|
51
|
-
class OpenAPI2DereferenceStrategy extends DereferenceStrategy {
|
|
52
|
-
constructor(options?: OpenAPI2DereferenceStrategyOptions) {
|
|
53
|
-
super({ ...(options ?? {}), name: 'openapi-2' });
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
canDereference(file: File): boolean {
|
|
57
|
-
// assert by media type
|
|
58
|
-
if (file.mediaType !== 'text/plain') {
|
|
59
|
-
return mediaTypes.includes(file.mediaType);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// assert by inspecting ApiDOM
|
|
63
|
-
return isSwaggerElement(file.parseResult?.result);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
async dereference(file: File, options: ReferenceOptions): Promise<Element> {
|
|
67
|
-
const immutableRefSet = options.dereference.refSet ?? new ReferenceSet();
|
|
68
|
-
const mutableRefSet = new ReferenceSet();
|
|
69
|
-
let refSet = immutableRefSet;
|
|
70
|
-
let reference;
|
|
71
|
-
|
|
72
|
-
if (!immutableRefSet.has(file.uri)) {
|
|
73
|
-
reference = new Reference({ uri: file.uri, value: file.parseResult! });
|
|
74
|
-
immutableRefSet.add(reference);
|
|
75
|
-
} else {
|
|
76
|
-
// pre-computed refSet was provided as configuration option
|
|
77
|
-
reference = immutableRefSet.find((ref) => ref.uri === file.uri);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Clone refSet due the dereferencing process being mutable.
|
|
82
|
-
* We don't want to mutate the original refSet and the references.
|
|
83
|
-
*/
|
|
84
|
-
if (options.dereference.immutable) {
|
|
85
|
-
immutableRefSet.refs
|
|
86
|
-
.map(
|
|
87
|
-
(ref) =>
|
|
88
|
-
new Reference({
|
|
89
|
-
...ref,
|
|
90
|
-
value: cloneDeep(ref.value),
|
|
91
|
-
}),
|
|
92
|
-
)
|
|
93
|
-
.forEach((ref) => mutableRefSet.add(ref));
|
|
94
|
-
reference = mutableRefSet.find((ref) => ref.uri === file.uri);
|
|
95
|
-
refSet = mutableRefSet;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
const visitor = new OpenAPI2DereferenceVisitor({ reference: reference!, options });
|
|
99
|
-
const dereferencedElement = await traverseAsync(refSet.rootRef!.value, visitor, {
|
|
100
|
-
mutable: true,
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* If immutable option is set, replay refs from the refSet.
|
|
105
|
-
*/
|
|
106
|
-
if (options.dereference.immutable) {
|
|
107
|
-
mutableRefSet.refs
|
|
108
|
-
.filter((ref) => ref.uri.startsWith('immutable://'))
|
|
109
|
-
.map(
|
|
110
|
-
(ref) =>
|
|
111
|
-
new Reference({
|
|
112
|
-
...ref,
|
|
113
|
-
uri: ref.uri.replace(/^immutable:\/\//, ''),
|
|
114
|
-
}),
|
|
115
|
-
)
|
|
116
|
-
.forEach((ref) => immutableRefSet.add(ref));
|
|
117
|
-
reference = immutableRefSet.find((ref) => ref.uri === file.uri);
|
|
118
|
-
refSet = immutableRefSet;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Release all memory if this refSet was not provided as a configuration option.
|
|
123
|
-
* If provided as configuration option, then provider is responsible for cleanup.
|
|
124
|
-
*/
|
|
125
|
-
if (options.dereference.refSet === null) {
|
|
126
|
-
immutableRefSet.clean();
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
mutableRefSet.clean();
|
|
130
|
-
|
|
131
|
-
return dereferencedElement;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
export { OpenAPI2DereferenceVisitor };
|
|
136
|
-
export default OpenAPI2DereferenceStrategy;
|