@speclynx/apidom-reference 4.10.1 → 4.12.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.
Files changed (133) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +215 -3
  3. package/dist/apidom-reference.browser.js +1515 -191
  4. package/dist/apidom-reference.browser.min.js +1 -1
  5. package/package.json +36 -31
  6. package/src/File.cjs +3 -1
  7. package/src/Reference.cjs +3 -1
  8. package/src/ReferenceSet.cjs +3 -1
  9. package/src/bundle/index.cjs +9 -1
  10. package/src/bundle/index.mjs +6 -0
  11. package/src/bundle/strategies/BundleStrategy.cjs +3 -1
  12. package/src/bundle/strategies/openapi-3-0/index.cjs +94 -0
  13. package/src/bundle/strategies/openapi-3-0/index.mjs +81 -0
  14. package/src/bundle/strategies/openapi-3-0/visitor.cjs +650 -0
  15. package/src/bundle/strategies/openapi-3-0/visitor.mjs +642 -0
  16. package/src/bundle/strategies/openapi-3-1/index.cjs +3 -1
  17. package/src/bundle/util.cjs +42 -0
  18. package/src/bundle/util.mjs +33 -0
  19. package/src/configuration/empty.cjs +9 -2
  20. package/src/configuration/saturated.cjs +19 -11
  21. package/src/configuration/saturated.mjs +2 -1
  22. package/src/dereference/index.cjs +3 -1
  23. package/src/dereference/strategies/DereferenceStrategy.cjs +3 -1
  24. package/src/dereference/strategies/apidom/index.cjs +9 -2
  25. package/src/dereference/strategies/apidom/selectors/element-id.cjs +9 -2
  26. package/src/dereference/strategies/apidom/visitor.cjs +3 -1
  27. package/src/dereference/strategies/arazzo-1/index.cjs +35 -8
  28. package/src/dereference/strategies/arazzo-1/index.mjs +1 -1
  29. package/src/dereference/strategies/arazzo-1/selectors/$anchor.cjs +46 -10
  30. package/src/dereference/strategies/arazzo-1/selectors/uri.cjs +22 -6
  31. package/src/dereference/strategies/arazzo-1/source-descriptions.cjs +3 -1
  32. package/src/dereference/strategies/arazzo-1/util.cjs +16 -4
  33. package/src/dereference/strategies/arazzo-1/visitor.cjs +4 -2
  34. package/src/dereference/strategies/arazzo-1/visitor.mjs +1 -1
  35. package/src/dereference/strategies/asyncapi-2/index.cjs +10 -3
  36. package/src/dereference/strategies/asyncapi-2/index.mjs +1 -1
  37. package/src/dereference/strategies/asyncapi-2/visitor.cjs +5 -3
  38. package/src/dereference/strategies/asyncapi-2/visitor.mjs +2 -2
  39. package/src/dereference/strategies/openapi-2/index.cjs +10 -3
  40. package/src/dereference/strategies/openapi-2/index.mjs +1 -1
  41. package/src/dereference/strategies/openapi-2/visitor.cjs +6 -4
  42. package/src/dereference/strategies/openapi-2/visitor.mjs +3 -3
  43. package/src/dereference/strategies/openapi-3-0/index.cjs +10 -3
  44. package/src/dereference/strategies/openapi-3-0/index.mjs +1 -1
  45. package/src/dereference/strategies/openapi-3-0/visitor.cjs +5 -3
  46. package/src/dereference/strategies/openapi-3-0/visitor.mjs +2 -2
  47. package/src/dereference/strategies/openapi-3-1/index.cjs +29 -7
  48. package/src/dereference/strategies/openapi-3-1/index.mjs +1 -1
  49. package/src/dereference/strategies/openapi-3-1/selectors/$anchor.cjs +22 -5
  50. package/src/dereference/strategies/openapi-3-1/selectors/uri.cjs +16 -4
  51. package/src/dereference/strategies/openapi-3-1/util.cjs +3 -1
  52. package/src/dereference/strategies/openapi-3-1/visitor.cjs +6 -4
  53. package/src/dereference/strategies/openapi-3-1/visitor.mjs +3 -3
  54. package/src/dereference/strategies/overlay-1/extends.cjs +3 -1
  55. package/src/dereference/strategies/overlay-1/index.cjs +9 -2
  56. package/src/dereference/util.cjs +3 -1
  57. package/src/errors/BundleError.cjs +4 -2
  58. package/src/errors/BundleError.mjs +2 -2
  59. package/src/errors/DereferenceError.cjs +3 -1
  60. package/src/errors/EvaluationElementIdError.cjs +3 -1
  61. package/src/errors/EvaluationJsonSchema$anchorError.cjs +3 -1
  62. package/src/errors/EvaluationJsonSchemaUriError.cjs +3 -1
  63. package/src/errors/InvalidJsonSchema$anchorError.cjs +3 -1
  64. package/src/errors/JsonSchema$anchorError.cjs +3 -1
  65. package/src/errors/JsonSchemaUriError.cjs +3 -1
  66. package/src/errors/MaximumBundleDepthError.cjs +3 -1
  67. package/src/errors/MaximumDereferenceDepthError.cjs +3 -1
  68. package/src/errors/MaximumResolveDepthError.cjs +3 -1
  69. package/src/errors/ParseError.cjs +3 -1
  70. package/src/errors/ParserError.cjs +3 -1
  71. package/src/errors/PluginError.cjs +3 -1
  72. package/src/errors/ResolveError.cjs +3 -1
  73. package/src/errors/ResolverError.cjs +3 -1
  74. package/src/errors/UnmatchedBundleStrategyError.cjs +3 -1
  75. package/src/errors/UnmatchedDereferenceStrategyError.cjs +3 -1
  76. package/src/errors/UnmatchedParserError.cjs +3 -1
  77. package/src/errors/UnmatchedResolveStrategyError.cjs +3 -1
  78. package/src/errors/UnmatchedResolverError.cjs +3 -1
  79. package/src/errors/UnresolvableReferenceError.cjs +8 -3
  80. package/src/errors/UnresolvableReferenceError.mjs +5 -2
  81. package/src/index.cjs +209 -36
  82. package/src/options/index.cjs +71 -2
  83. package/src/options/index.mjs +68 -1
  84. package/src/options/util.cjs +3 -1
  85. package/src/parse/index.cjs +3 -1
  86. package/src/parse/parsers/Parser.cjs +3 -1
  87. package/src/parse/parsers/apidom-json/index.cjs +3 -1
  88. package/src/parse/parsers/arazzo-json-1/index.cjs +9 -2
  89. package/src/parse/parsers/arazzo-json-1/source-descriptions.cjs +3 -1
  90. package/src/parse/parsers/arazzo-yaml-1/index.cjs +9 -2
  91. package/src/parse/parsers/arazzo-yaml-1/source-descriptions.cjs +3 -1
  92. package/src/parse/parsers/asyncapi-json-2/index.cjs +3 -1
  93. package/src/parse/parsers/asyncapi-yaml-2/index.cjs +3 -1
  94. package/src/parse/parsers/binary/index-browser.cjs +3 -1
  95. package/src/parse/parsers/binary/index-node.cjs +3 -1
  96. package/src/parse/parsers/json/index.cjs +3 -1
  97. package/src/parse/parsers/openapi-json-2/index.cjs +3 -1
  98. package/src/parse/parsers/openapi-json-3-0/index.cjs +3 -1
  99. package/src/parse/parsers/openapi-json-3-1/index.cjs +3 -1
  100. package/src/parse/parsers/openapi-yaml-2/index.cjs +3 -1
  101. package/src/parse/parsers/openapi-yaml-3-0/index.cjs +3 -1
  102. package/src/parse/parsers/openapi-yaml-3-1/index.cjs +3 -1
  103. package/src/parse/parsers/overlay-json-1/extends.cjs +3 -1
  104. package/src/parse/parsers/overlay-json-1/index.cjs +9 -2
  105. package/src/parse/parsers/overlay-yaml-1/extends.cjs +10 -4
  106. package/src/parse/parsers/overlay-yaml-1/index.cjs +9 -2
  107. package/src/parse/parsers/yaml-1-2/index.cjs +3 -1
  108. package/src/resolve/index.cjs +3 -1
  109. package/src/resolve/resolvers/HTTPResolver.cjs +3 -1
  110. package/src/resolve/resolvers/Resolver.cjs +3 -1
  111. package/src/resolve/resolvers/file/index-browser.cjs +3 -1
  112. package/src/resolve/resolvers/file/index-node.cjs +3 -1
  113. package/src/resolve/resolvers/http-axios/cache/MemoryCache.cjs +3 -1
  114. package/src/resolve/resolvers/http-axios/index.cjs +3 -1
  115. package/src/resolve/strategies/ResolveStrategy.cjs +3 -1
  116. package/src/resolve/strategies/apidom/index.cjs +3 -1
  117. package/src/resolve/strategies/arazzo-1/index.cjs +3 -1
  118. package/src/resolve/strategies/asyncapi-2/index.cjs +3 -1
  119. package/src/resolve/strategies/openapi-2/index.cjs +3 -1
  120. package/src/resolve/strategies/openapi-3-0/index.cjs +3 -1
  121. package/src/resolve/strategies/openapi-3-1/index.cjs +3 -1
  122. package/src/resolve/strategies/overlay-1/index.cjs +3 -1
  123. package/src/resolve/util.cjs +3 -1
  124. package/src/util/plugins.cjs +3 -1
  125. package/src/util/url.cjs +3 -1
  126. package/types/apidom-reference.d.ts +41 -2
  127. package/types/bundle/strategies/openapi-3-0/index.d.ts +31 -0
  128. package/types/bundle/strategies/openapi-3-0/visitor.d.ts +131 -0
  129. package/types/bundle/util.d.ts +22 -0
  130. package/types/errors/BundleError.d.ts +2 -2
  131. package/types/errors/UnresolvableReferenceError.d.ts +5 -2
  132. package/types/index.d.ts +1 -0
  133. package/types/options/index.d.ts +33 -1
@@ -1,7 +1,10 @@
1
- import DereferenceError from './DereferenceError.ts';
1
+ import ResolveError from './ResolveError.ts';
2
2
  /**
3
+ * Thrown when a reference cannot be resolved. Resolution is shared by the
4
+ * dereference and bundle components, so this error lives under `ResolveError`.
5
+ *
3
6
  * @public
4
7
  */
5
- declare class UnresolvableReferenceError extends DereferenceError {
8
+ declare class UnresolvableReferenceError extends ResolveError {
6
9
  }
7
10
  export default UnresolvableReferenceError;
package/types/index.d.ts CHANGED
@@ -16,6 +16,7 @@ export type { DereferenceStrategyOptions } from './dereference/strategies/Derefe
16
16
  export { AncestorLineage as DereferenceAncestorLineage } from './dereference/util.ts';
17
17
  export { default as BundleStrategy } from './bundle/strategies/BundleStrategy.ts';
18
18
  export type { BundleStrategyOptions } from './bundle/strategies/BundleStrategy.ts';
19
+ export type { ComponentNamesStrategy, ComponentNameResolver, ComponentNameResolverArgs, ComponentNameCollisionSeverity, } from './options/index.ts';
19
20
  export { default as options } from './options/index.ts';
20
21
  export { merge as mergeOptions } from './options/util.ts';
21
22
  export type { ReferenceOptions as ApiDOMReferenceOptions, ReferenceBundleOptions as ApiDOMReferenceBundleOptions, ReferenceDereferenceOptions as ApiDOMReferenceDereferenceOptions, ReferenceParseOptions as ApiDOMReferenceParseOptions, ReferenceResolveOptions as ApiDOMReferenceResolveOptions, } from './options/index.ts';
@@ -1,4 +1,4 @@
1
- import type { RefElement } from '@speclynx/apidom-datamodel';
1
+ import type { RefElement, Element } from '@speclynx/apidom-datamodel';
2
2
  import type Parser from '../parse/parsers/Parser.ts';
3
3
  import type Resolver from '../resolve/resolvers/Resolver.ts';
4
4
  import type ResolveStrategy from '../resolve/strategies/ResolveStrategy.ts';
@@ -40,13 +40,45 @@ export interface ReferenceDereferenceOptions {
40
40
  immutable: boolean;
41
41
  continueOnError: boolean | ((error: UnresolvableReferenceError) => void);
42
42
  }
43
+ /**
44
+ * Context passed to a custom component-name resolver.
45
+ *
46
+ * @public
47
+ */
48
+ export interface ComponentNameResolverArgs {
49
+ /** The refracted element being hoisted. */
50
+ readonly element: Element;
51
+ /** The Components Object field the element is hoisted into (e.g. `schemas`). */
52
+ readonly field: string;
53
+ /** The JSON Pointer of the referenced fragment within its document. */
54
+ readonly jsonPointer: string;
55
+ /** The base URI (without hash) of the referenced document. */
56
+ readonly baseURI: string;
57
+ }
58
+ /**
59
+ * @public
60
+ */
61
+ export type ComponentNameResolver = (args: ComponentNameResolverArgs) => string;
62
+ /**
63
+ * @public
64
+ */
65
+ export type ComponentNamesStrategy = 'basename' | 'title' | ComponentNameResolver;
66
+ /**
67
+ * @public
68
+ */
69
+ export type ComponentNameCollisionSeverity = 'off' | 'warn' | 'error';
43
70
  /**
44
71
  * @public
45
72
  */
46
73
  export interface ReferenceBundleOptions {
47
74
  strategies: Array<BundleStrategy>;
75
+ strategyOpts: Record<string, any>;
48
76
  refSet: null | ReferenceSet;
49
77
  maxDepth: number;
78
+ immutable: boolean;
79
+ componentNamesStrategy: ComponentNamesStrategy;
80
+ onComponentNameCollision: ComponentNameCollisionSeverity;
81
+ continueOnError: boolean | ((error: UnresolvableReferenceError) => void);
50
82
  }
51
83
  /**
52
84
  * @public