fumadocs-openapi 10.10.1 → 10.10.3

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 (127) hide show
  1. package/css/generated/shared.css +16 -8
  2. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/bundle.js +239 -0
  3. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/dereference.js +187 -0
  4. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/index.js +136 -0
  5. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/normalize-args.js +41 -0
  6. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/options.js +124 -0
  7. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/parse.js +109 -0
  8. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/parsers/binary.js +30 -0
  9. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/parsers/json.js +46 -0
  10. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/parsers/text.js +36 -0
  11. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/parsers/yaml.js +49 -0
  12. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/pointer.js +242 -0
  13. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/ref.js +247 -0
  14. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/refs.js +210 -0
  15. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/resolve-external.js +100 -0
  16. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/resolvers/file.js +41 -0
  17. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/resolvers/http.js +112 -0
  18. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/convert-path-to-posix.js +8 -0
  19. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/errors.js +146 -0
  20. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/is-windows.js +5 -0
  21. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/maybe.js +18 -0
  22. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/next.js +11 -0
  23. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/plugins.js +99 -0
  24. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/schema-resources.js +30 -0
  25. package/dist/node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/url.js +315 -0
  26. package/dist/ui/schema/client.js +70 -69
  27. package/dist/utils/document/process.js +7 -12
  28. package/package.json +4 -7
  29. package/dist/node_modules/.pnpm/@scalar_helpers@0.8.0/node_modules/@scalar/helpers/dist/general/create-limiter.js +0 -43
  30. package/dist/node_modules/.pnpm/@scalar_helpers@0.8.0/node_modules/@scalar/helpers/dist/object/is-object.js +0 -27
  31. package/dist/node_modules/.pnpm/@scalar_helpers@0.8.0/node_modules/@scalar/helpers/dist/object/prevent-pollution.js +0 -33
  32. package/dist/node_modules/.pnpm/@scalar_helpers@0.8.0/node_modules/@scalar/helpers/dist/queue/queue.js +0 -106
  33. package/dist/node_modules/.pnpm/@scalar_helpers@0.8.0/node_modules/@scalar/helpers/dist/string/generate-hash.js +0 -120
  34. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/bundle/bundle.js +0 -357
  35. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/bundle/plugins/fetch-urls/index.js +0 -73
  36. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/bundle/plugins/node.js +0 -3
  37. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/bundle/plugins/parse-yaml/index.js +0 -1
  38. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/bundle/plugins/read-files/index.js +0 -51
  39. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/bundle/value-generator.js +0 -102
  40. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/helpers/convert-to-local-ref.js +0 -24
  41. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/helpers/escape-json-pointer.js +0 -11
  42. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/helpers/get-schemas.js +0 -44
  43. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/helpers/get-segments-from-path.js +0 -10
  44. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/helpers/get-value-by-path.js +0 -42
  45. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/helpers/is-file-path.js +0 -23
  46. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/helpers/is-http-url.js +0 -23
  47. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/helpers/is-json-object.js +0 -28
  48. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/helpers/is-yaml.js +0 -21
  49. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/helpers/normalize.js +0 -33
  50. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/helpers/resolve-reference-path.js +0 -30
  51. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/helpers/set-value-at-path.js +0 -70
  52. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/helpers/to-relative-path.js +0 -33
  53. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/helpers/unescape-json-pointer.js +0 -12
  54. package/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/index.js +0 -19
  55. package/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.js +0 -430
  56. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/compose/compose-collection.js +0 -50
  57. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/compose/compose-doc.js +0 -39
  58. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/compose/compose-node.js +0 -85
  59. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/compose/compose-scalar.js +0 -57
  60. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/compose/composer.js +0 -193
  61. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/compose/resolve-block-map.js +0 -82
  62. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +0 -174
  63. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +0 -40
  64. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/compose/resolve-end.js +0 -36
  65. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +0 -153
  66. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +0 -203
  67. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/compose/resolve-props.js +0 -105
  68. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/compose/util-contains-newline.js +0 -27
  69. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +0 -25
  70. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +0 -10
  71. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/compose/util-map-includes.js +0 -10
  72. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/doc/Document.js +0 -277
  73. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/doc/anchors.js +0 -62
  74. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/doc/applyReviver.js +0 -38
  75. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/doc/createNode.js +0 -61
  76. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/doc/directives.js +0 -163
  77. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/errors.js +0 -48
  78. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/index.js +0 -16
  79. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/log.js +0 -6
  80. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/nodes/Alias.js +0 -92
  81. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/nodes/Collection.js +0 -117
  82. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/nodes/Node.js +0 -32
  83. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/nodes/Pair.js +0 -29
  84. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/nodes/Scalar.js +0 -24
  85. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/nodes/YAMLMap.js +0 -106
  86. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +0 -104
  87. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +0 -49
  88. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/nodes/identity.js +0 -33
  89. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/nodes/toJS.js +0 -35
  90. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/parse/cst-scalar.js +0 -3
  91. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/parse/cst-visit.js +0 -89
  92. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/parse/cst.js +0 -40
  93. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/parse/lexer.js +0 -529
  94. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/parse/line-counter.js +0 -45
  95. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/parse/parser.js +0 -859
  96. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/public-api.js +0 -44
  97. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/schema/Schema.js +0 -27
  98. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/schema/common/map.js +0 -16
  99. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/schema/common/null.js +0 -13
  100. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/schema/common/seq.js +0 -16
  101. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/schema/common/string.js +0 -14
  102. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/schema/core/bool.js +0 -17
  103. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/schema/core/float.js +0 -38
  104. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/schema/core/int.js +0 -37
  105. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/schema/core/schema.js +0 -23
  106. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/schema/json/schema.js +0 -61
  107. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/schema/tags.js +0 -81
  108. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +0 -52
  109. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +0 -24
  110. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +0 -41
  111. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +0 -70
  112. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +0 -39
  113. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +0 -60
  114. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +0 -56
  115. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +0 -39
  116. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +0 -65
  117. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +0 -79
  118. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +0 -111
  119. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/stringify/stringify.js +0 -105
  120. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +0 -116
  121. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/stringify/stringifyComment.js +0 -16
  122. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +0 -59
  123. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +0 -19
  124. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/stringify/stringifyPair.js +0 -95
  125. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/stringify/stringifyString.js +0 -222
  126. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/dist/visit.js +0 -187
  127. package/dist/node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/browser/index.js +0 -16
@@ -0,0 +1,315 @@
1
+ import convertPathToPosix from "./convert-path-to-posix.js";
2
+ import { isWindows } from "./is-windows.js";
3
+ //#region ../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@15.3.5_@types+json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/url.js
4
+ const forwardSlashPattern = /\//g;
5
+ const protocolPattern = /^(\w{2,}):\/\//i;
6
+ const jsonPointerSlash = /~1/g;
7
+ const jsonPointerTilde = /~0/g;
8
+ const isAbsoluteWin32Path = /^[a-zA-Z]:[\\/]/;
9
+ const urlEncodePatterns = [[/\?/g, "%3F"], [/#/g, "%23"]];
10
+ const urlDecodePatterns = [
11
+ /%23/g,
12
+ "#",
13
+ /%24/g,
14
+ "$",
15
+ /%26/g,
16
+ "&",
17
+ /%2C/g,
18
+ ",",
19
+ /%40/g,
20
+ "@"
21
+ ];
22
+ const parse = (u) => new URL(u);
23
+ /**
24
+ * Returns resolved target URL relative to a base URL in a manner similar to that of a Web browser resolving an anchor tag HREF.
25
+ *
26
+ * @returns
27
+ */
28
+ function resolve(from, to) {
29
+ const fromUrl = new URL(convertPathToPosix(from), "https://aaa.nonexistanturl.com");
30
+ const resolvedUrl = new URL(convertPathToPosix(to), fromUrl);
31
+ const endSpaces = to.match(/(\s*)$/)?.[1] || "";
32
+ if (resolvedUrl.hostname === "aaa.nonexistanturl.com") {
33
+ const { pathname, search, hash } = resolvedUrl;
34
+ return pathname + search + decodeURIComponent(hash) + endSpaces;
35
+ }
36
+ const resolved = resolvedUrl.toString() + endSpaces;
37
+ if (resolved.includes("#")) {
38
+ const [base, hash] = resolved.split("#", 2);
39
+ return base + "#" + decodeURIComponent(hash || "");
40
+ }
41
+ return resolved;
42
+ }
43
+ /**
44
+ * Returns the current working directory (in Node) or the current page URL (in browsers).
45
+ *
46
+ * @returns
47
+ */
48
+ function cwd() {
49
+ if (typeof window !== "undefined" && window.location && window.location.href) {
50
+ const href = window.location.href;
51
+ if (!href || !href.startsWith("http")) try {
52
+ new URL(href);
53
+ return href;
54
+ } catch {
55
+ return "/";
56
+ }
57
+ return href;
58
+ }
59
+ if (typeof process !== "undefined" && process.cwd) {
60
+ const path = process.cwd();
61
+ const lastChar = path.slice(-1);
62
+ if (lastChar === "/" || lastChar === "\\") return path;
63
+ else return path + "/";
64
+ }
65
+ return "/";
66
+ }
67
+ /**
68
+ * Returns the protocol of the given URL, or `undefined` if it has no protocol.
69
+ *
70
+ * @param path
71
+ * @returns
72
+ */
73
+ function getProtocol(path) {
74
+ const match = protocolPattern.exec(path || "");
75
+ if (match) return match[1].toLowerCase();
76
+ }
77
+ /**
78
+ * Returns the lowercased file extension of the given URL,
79
+ * or an empty string if it has no extension.
80
+ *
81
+ * @param path
82
+ * @returns
83
+ */
84
+ function getExtension(path) {
85
+ const lastDot = path.lastIndexOf(".");
86
+ if (lastDot >= 0) return stripQuery(path.substring(lastDot).toLowerCase());
87
+ return "";
88
+ }
89
+ /**
90
+ * Removes the query, if any, from the given path.
91
+ *
92
+ * @param path
93
+ * @returns
94
+ */
95
+ function stripQuery(path) {
96
+ const queryIndex = path.indexOf("?");
97
+ if (queryIndex >= 0) path = path.substring(0, queryIndex);
98
+ return path;
99
+ }
100
+ /**
101
+ * Returns the hash (URL fragment), of the given path.
102
+ * If there is no hash, then the root hash ("#") is returned.
103
+ *
104
+ * @param path
105
+ * @returns
106
+ */
107
+ function getHash(path) {
108
+ if (!path) return "#";
109
+ const hashIndex = path.indexOf("#");
110
+ if (hashIndex >= 0) return path.substring(hashIndex);
111
+ return "#";
112
+ }
113
+ /**
114
+ * Removes the hash (URL fragment), if any, from the given path.
115
+ *
116
+ * @param path
117
+ * @returns
118
+ */
119
+ function stripHash(path) {
120
+ if (!path) return "";
121
+ const hashIndex = path.indexOf("#");
122
+ if (hashIndex >= 0) path = path.substring(0, hashIndex);
123
+ return path;
124
+ }
125
+ /**
126
+ * Determines whether the given path is an HTTP(S) URL.
127
+ *
128
+ * @param path
129
+ * @returns
130
+ */
131
+ function isHttp(path) {
132
+ const protocol = getProtocol(path);
133
+ if (protocol === "http" || protocol === "https") return true;
134
+ else if (protocol === void 0) return typeof window !== "undefined";
135
+ else return false;
136
+ }
137
+ /**
138
+ * Determines whether the given url is an unsafe or internal url.
139
+ *
140
+ * @param path - The URL or path to check
141
+ * @returns true if the URL is unsafe/internal, false otherwise
142
+ */
143
+ function isUnsafeUrl(path) {
144
+ if (!path || typeof path !== "string") return true;
145
+ const normalizedPath = path.trim().toLowerCase();
146
+ if (!normalizedPath) return true;
147
+ if (normalizedPath.startsWith("javascript:") || normalizedPath.startsWith("vbscript:") || normalizedPath.startsWith("data:")) return true;
148
+ if (normalizedPath.startsWith("file:")) return true;
149
+ if (typeof window !== "undefined" && window.location && window.location.href) return false;
150
+ const localPatterns = [
151
+ "localhost",
152
+ "127.0.0.1",
153
+ "::1",
154
+ "10.",
155
+ "172.16.",
156
+ "172.17.",
157
+ "172.18.",
158
+ "172.19.",
159
+ "172.20.",
160
+ "172.21.",
161
+ "172.22.",
162
+ "172.23.",
163
+ "172.24.",
164
+ "172.25.",
165
+ "172.26.",
166
+ "172.27.",
167
+ "172.28.",
168
+ "172.29.",
169
+ "172.30.",
170
+ "172.31.",
171
+ "192.168.",
172
+ "169.254.",
173
+ ".local",
174
+ ".internal",
175
+ ".intranet",
176
+ ".corp",
177
+ ".home",
178
+ ".lan"
179
+ ];
180
+ try {
181
+ const url = new URL(normalizedPath.startsWith("//") ? "http:" + normalizedPath : normalizedPath);
182
+ const hostname = url.hostname.toLowerCase();
183
+ for (const pattern of localPatterns) if (hostname === pattern || hostname.startsWith(pattern) || hostname.endsWith(pattern)) return true;
184
+ if (isPrivateIP(hostname)) return true;
185
+ const port = url.port;
186
+ if (port && isInternalPort(parseInt(port))) return true;
187
+ } catch {
188
+ if (normalizedPath.startsWith("/") && !normalizedPath.startsWith("//")) return false;
189
+ for (const pattern of localPatterns) if (normalizedPath.includes(pattern)) return true;
190
+ }
191
+ return false;
192
+ }
193
+ /**
194
+ * Helper function to check if an IP address is in a private range
195
+ */
196
+ function isPrivateIP(ip) {
197
+ const match = ip.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);
198
+ if (!match) return false;
199
+ const [, a, b, c, d] = match.map(Number);
200
+ if (a > 255 || b > 255 || c > 255 || d > 255) return false;
201
+ return a === 10 || a === 127 || a === 172 && b >= 16 && b <= 31 || a === 192 && b === 168 || a === 169 && b === 254;
202
+ }
203
+ /**
204
+ * Helper function to check if a port is typically used for internal services
205
+ */
206
+ function isInternalPort(port) {
207
+ return [
208
+ 22,
209
+ 23,
210
+ 25,
211
+ 53,
212
+ 135,
213
+ 139,
214
+ 445,
215
+ 993,
216
+ 995,
217
+ 1433,
218
+ 1521,
219
+ 3306,
220
+ 3389,
221
+ 5432,
222
+ 5900,
223
+ 6379,
224
+ 8080,
225
+ 8443,
226
+ 9200,
227
+ 27017
228
+ ].includes(port);
229
+ }
230
+ /**
231
+ * Determines whether the given path is a filesystem path.
232
+ * This includes "file://" URLs.
233
+ *
234
+ * @param path
235
+ * @returns
236
+ */
237
+ function isFileSystemPath(path) {
238
+ if (typeof window !== "undefined" || typeof process !== "undefined" && process.browser) return false;
239
+ const protocol = getProtocol(path);
240
+ return protocol === void 0 || protocol === "file";
241
+ }
242
+ /**
243
+ * Converts a filesystem path to a properly-encoded URL.
244
+ *
245
+ * This is intended to handle situations where JSON Schema $Ref Parser is called
246
+ * with a filesystem path that contains characters which are not allowed in URLs.
247
+ *
248
+ * @example
249
+ * The following filesystem paths would be converted to the following URLs:
250
+ *
251
+ * <"!@#$%^&*+=?'>.json ==> %3C%22!@%23$%25%5E&*+=%3F\'%3E.json
252
+ * C:\\My Documents\\File (1).json ==> C:/My%20Documents/File%20(1).json
253
+ * file://Project #42/file.json ==> file://Project%20%2342/file.json
254
+ *
255
+ * @param path
256
+ * @returns
257
+ */
258
+ function fromFileSystemPath(path) {
259
+ if (isWindows()) {
260
+ const projectDir = cwd();
261
+ const upperPath = path.toUpperCase();
262
+ const posixUpper = convertPathToPosix(projectDir).toUpperCase();
263
+ const hasProjectDir = upperPath.includes(posixUpper);
264
+ const hasProjectUri = upperPath.includes(posixUpper);
265
+ const isAbsolutePath = isAbsoluteWin32Path.test(path) || path.startsWith("http://") || path.startsWith("https://") || path.startsWith("file://");
266
+ if (!(hasProjectDir || hasProjectUri || isAbsolutePath) && !projectDir.startsWith("http")) {
267
+ const join = (a, b) => {
268
+ if (a.endsWith("/") || a.endsWith("\\")) return a + b;
269
+ else return a + "/" + b;
270
+ };
271
+ path = join(projectDir, path);
272
+ }
273
+ path = convertPathToPosix(path);
274
+ }
275
+ path = encodeURI(path);
276
+ for (const pattern of urlEncodePatterns) path = path.replace(pattern[0], pattern[1]);
277
+ return path;
278
+ }
279
+ /**
280
+ * Converts a URL to a local filesystem path.
281
+ */
282
+ function toFileSystemPath(path, keepFileProtocol) {
283
+ path = path.replace(/%(?![0-9A-Fa-f]{2})/g, "%25");
284
+ path = decodeURI(path);
285
+ for (let i = 0; i < urlDecodePatterns.length; i += 2) path = path.replace(urlDecodePatterns[i], urlDecodePatterns[i + 1]);
286
+ let isFileUrl = path.toLowerCase().startsWith("file://");
287
+ if (isFileUrl) {
288
+ path = path.replace(/^file:\/\//, "").replace(/^\//, "");
289
+ if (isWindows() && path[1] === "/") path = `${path[0]}:${path.substring(1)}`;
290
+ if (keepFileProtocol) path = "file:///" + path;
291
+ else {
292
+ isFileUrl = false;
293
+ path = isWindows() ? path : "/" + path;
294
+ }
295
+ }
296
+ if (isWindows() && !isFileUrl) {
297
+ path = path.replace(forwardSlashPattern, "\\");
298
+ if (path.match(/^[a-z]:\\/i)) path = path[0].toUpperCase() + path.substring(1);
299
+ }
300
+ return path;
301
+ }
302
+ /**
303
+ * Converts a $ref pointer to a valid JSON Path.
304
+ *
305
+ * @param pointer
306
+ * @returns
307
+ */
308
+ function safePointerToPath(pointer) {
309
+ if (pointer.length <= 1 || pointer[0] !== "#" || pointer[1] !== "/") return [];
310
+ return pointer.slice(2).split("/").map((value) => {
311
+ return value.replace(jsonPointerSlash, "/").replace(jsonPointerTilde, "~");
312
+ });
313
+ }
314
+ //#endregion
315
+ export { cwd, fromFileSystemPath, getExtension, getHash, isFileSystemPath, isHttp, isUnsafeUrl, parse, resolve, safePointerToPath, stripHash, toFileSystemPath };
@@ -20,24 +20,15 @@ function useStates() {
20
20
  }
21
21
  function SchemaUI({ name, required = false, as = "property", generated }) {
22
22
  const rootId = useAnchorId([name]);
23
- const [path, _setPath] = useState(() => [{
23
+ const [path, setPath] = useState(() => [{
24
24
  $ref: generated.$root,
25
25
  name
26
26
  }]);
27
27
  const ref = useRef(null);
28
- const popoverRef = useRef(null);
29
- const setPath = useCallback((v) => {
30
- for (const item of v) delete item.highlighted;
31
- _setPath((current) => {
32
- if (popoverRef.current && current.length > 0) current[current.length - 1].scrollTop = popoverRef.current.scrollTop;
33
- return v;
34
- });
35
- }, []);
36
- useEffect(() => {
37
- const element = popoverRef.current;
28
+ const popoverRef = useCallback((element) => {
38
29
  if (!element) return;
39
30
  element.scrollTop = path.at(-1).scrollTop ?? 0;
40
- const current = parseFloat(element.style.getPropertyValue("--min-height") || "0");
31
+ const current = parseFloat(element.style.getPropertyValue("--min-height") || "200px");
41
32
  element.style.setProperty("--min-height", Math.max(element.clientHeight + 2, current) + "px");
42
33
  }, [path]);
43
34
  useEffect(() => {
@@ -46,7 +37,7 @@ function SchemaUI({ name, required = false, as = "property", generated }) {
46
37
  if (url.hash !== `#${rootId}` || !param) return;
47
38
  const decoded = decodePath(param, url.searchParams.get("s-highlight"));
48
39
  if (!decoded || decoded.length === 0 || decoded.some((item) => !generated.refs[item.$ref])) return;
49
- _setPath(decoded);
40
+ setPath(decoded);
50
41
  if (!decoded.at(-1).highlighted) ref.current?.scrollIntoView({ behavior: "smooth" });
51
42
  }, [rootId]);
52
43
  return /* @__PURE__ */ jsx(Context, {
@@ -56,24 +47,30 @@ function SchemaUI({ name, required = false, as = "property", generated }) {
56
47
  generated,
57
48
  setPath,
58
49
  renderTypeInfoTrigger: ({ $ref, children, pathName }) => /* @__PURE__ */ jsxs(Popover, {
59
- open: path[1] && path[1].$ref === $ref && path[1].name === pathName && !path.at(-1).closed,
50
+ open: path.length > 1 && path[1].$ref === $ref && path[1].name === pathName && !path[0].closed,
60
51
  onOpenChange: (v) => {
61
- if (v) setPath([path[0], {
52
+ if (v) setPath([{
53
+ ...path[0],
54
+ closed: false
55
+ }, {
62
56
  name: pathName,
63
57
  $ref
64
58
  }]);
65
- else {
66
- const next = [...path];
67
- next.at(-1).closed = true;
68
- setPath(next);
69
- }
59
+ else setPath(path.map((item, i) => i === 0 ? {
60
+ ...item,
61
+ closed: true
62
+ } : item));
70
63
  },
71
64
  children: [/* @__PURE__ */ jsx(PopoverTrigger, {
72
65
  className: cn(typeVariants({ variant: "trigger" })),
73
66
  children
74
67
  }), /* @__PURE__ */ jsx(PopoverContent, {
75
68
  ref: popoverRef,
76
- className: "w-[600px] min-h-(--min-height,0) max-h-[460px] px-2 pt-0",
69
+ collisionPadding: 10,
70
+ className: "w-[600px] max-w-(--radix-popover-content-available-width) min-h-(--min-height,200px) fd-scroll-container max-h-[460px] px-3 pt-0",
71
+ onScrollEnd: (e) => {
72
+ path.at(-1).scrollTop = e.target.scrollTop;
73
+ },
77
74
  onOpenAutoFocus: (e) => {
78
75
  const input = e.target.querySelector("input[data-object-search-input]");
79
76
  if (!(input instanceof HTMLInputElement)) return;
@@ -87,13 +84,14 @@ function SchemaUI({ name, required = false, as = "property", generated }) {
87
84
  generated,
88
85
  path,
89
86
  rootId,
90
- setPath
87
+ popoverRef
91
88
  ]),
92
89
  children: as === "property" || generated.refs[generated.$root].type === "primitive" ? /* @__PURE__ */ jsx(ObjectProperty, {
93
90
  ref,
94
91
  id: rootId,
95
92
  name,
96
93
  $type: generated.$root,
94
+ parentPathIndex: 0,
97
95
  required
98
96
  }) : /* @__PURE__ */ jsx("div", {
99
97
  id: rootId,
@@ -112,11 +110,21 @@ function SchemaDescription({ schema, ...props }) {
112
110
  })]
113
111
  });
114
112
  }
115
- function ObjectProperty({ name, $type, required, ...props }) {
113
+ function ObjectProperty({ name, $type, required, parentPathIndex, ...props }) {
116
114
  const t = useTranslations();
117
115
  const { path, generated: { refs }, rootId } = useStates();
118
116
  const schema = refs[$type];
119
- const highlighted = path.at(-1).highlighted === name;
117
+ const parentItem = path[parentPathIndex];
118
+ const ref = useCallback((element) => {
119
+ if (!element || parentItem.highlighted !== name) return;
120
+ window.setTimeout(() => {
121
+ element.scrollIntoView({
122
+ behavior: "smooth",
123
+ block: "end"
124
+ });
125
+ delete parentItem.highlighted;
126
+ }, 300);
127
+ }, [parentItem, name]);
120
128
  const [isChecked, onClick] = useCopyButton(() => {
121
129
  const url = new URL(window.location.href);
122
130
  url.hash = `#${rootId}`;
@@ -126,17 +134,15 @@ function ObjectProperty({ name, $type, required, ...props }) {
126
134
  });
127
135
  return /* @__PURE__ */ jsxs("div", {
128
136
  ...props,
129
- ref: mergeRefs(props.ref, useCallback((element) => {
130
- if (element && highlighted) element.scrollIntoView();
131
- }, [highlighted])),
132
- className: cn("group/property text-sm border-t py-4 first:border-t-0", props.className),
137
+ ref: mergeRefs(props.ref, ref),
138
+ className: cn("text-sm border-t py-4 scroll-m-20 first:border-t-0", props.className),
133
139
  children: [/* @__PURE__ */ jsxs("div", {
134
- className: "flex flex-wrap items-center gap-3 not-prose",
140
+ className: "flex flex-wrap items-center gap-2 not-prose",
135
141
  children: [
136
142
  /* @__PURE__ */ jsxs("span", {
137
143
  className: "font-medium font-mono",
138
144
  children: [/* @__PURE__ */ jsx("span", {
139
- className: cn(highlighted ? "bg-fd-primary text-fd-primary-foreground rounded-sm" : "text-fd-primary", schema.deprecated && "line-through opacity-80"),
145
+ className: cn(parentItem.highlighted === name ? "bg-fd-primary text-fd-primary-foreground rounded-sm" : "text-fd-primary", schema.deprecated && "line-through opacity-80"),
140
146
  children: name
141
147
  }), required ? /* @__PURE__ */ jsx("span", {
142
148
  className: "text-red-400",
@@ -164,7 +170,7 @@ function ObjectProperty({ name, $type, required, ...props }) {
164
170
  className: cn(buttonVariants({
165
171
  size: "icon-xs",
166
172
  variant: "ghost"
167
- }), "text-fd-muted-foreground"),
173
+ }), "text-fd-muted-foreground [&_svg]:size-3.5"),
168
174
  onClick,
169
175
  children: isChecked ? /* @__PURE__ */ jsx(CheckIcon, {}) : /* @__PURE__ */ jsx(LinkIcon, {})
170
176
  })
@@ -218,37 +224,33 @@ function PathItemBody({ pathIndex, asSchema, tabDepth = 0, objectSearchOverrides
218
224
  });
219
225
  }
220
226
  if (schema.type === "object" && schema.props.length > 0) return /* @__PURE__ */ jsx(ObjectSearch, {
221
- properties: schema.props,
227
+ pathIndex,
228
+ schema,
222
229
  ...objectSearchOverrides,
223
230
  children: /* @__PURE__ */ jsx(SchemaDescription, { schema })
224
231
  });
225
232
  if (schema.type === "array") return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(SchemaDescription, { schema }), /* @__PURE__ */ jsx(ObjectProperty, {
226
233
  name: "[index: integer]",
227
- $type: schema.item.$type
234
+ $type: schema.item.$type,
235
+ parentPathIndex: pathIndex
228
236
  })] });
229
237
  return /* @__PURE__ */ jsx(SchemaDescription, { schema });
230
238
  }
231
- function ObjectSearch({ variant = "secondary", properties, inputContainer, children }) {
239
+ function ObjectSearch({ variant = "default", schema, pathIndex, children }) {
232
240
  const { path, setPath } = useStates();
233
241
  const [search, setSearch] = useState("");
234
242
  const deferredValue = useDeferredValue(search);
235
243
  const firstItemRef = useRef(null);
236
- const prevProperties = useRef(properties);
237
244
  const t = useTranslations();
238
- if (prevProperties.current !== properties) {
239
- prevProperties.current = properties;
240
- setSearch("");
241
- }
242
245
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
243
246
  /* @__PURE__ */ jsxs("div", {
244
- ...inputContainer,
245
- className: cn("flex items-center bg-fd-secondary text-fd-secondary-foreground transition-colors", variant === "ghost" && "border-b focus-within:[&_svg]:text-fd-primary", variant === "secondary" && "border bg-fd-secondary rounded-md shadow-sm focus-within:ring-2 focus-within:ring-fd-ring", inputContainer?.className),
246
- children: [/* @__PURE__ */ jsx(FilterIcon, { className: "text-fd-muted-foreground ms-2 size-3.5 transition-colors" }), /* @__PURE__ */ jsx("input", {
247
+ className: cn("flex items-center bg-fd-secondary text-fd-secondary-foreground transition-colors", variant === "in-popover" && "sticky top-10 -mx-3 ps-3 border-b focus-within:[&_svg]:text-fd-primary", variant === "default" && "border rounded-md ps-2 shadow-sm focus-within:ring-2 focus-within:ring-fd-ring"),
248
+ children: [/* @__PURE__ */ jsx(FilterIcon, { className: "text-fd-muted-foreground size-3.5 transition-colors" }), /* @__PURE__ */ jsx("input", {
247
249
  value: search,
248
250
  "data-object-search-input": "",
249
251
  onChange: (e) => setSearch(e.target.value),
250
252
  placeholder: t.schemaFilterPropertiesPlaceholder,
251
- className: "peer text-sm ps-2 py-2 flex-1 outline-none placeholder:text-fd-muted-foreground",
253
+ className: "text-sm ps-2 py-2 flex-1 outline-none placeholder:text-fd-muted-foreground",
252
254
  onKeyDown: (e) => {
253
255
  if (e.key === "Enter") {
254
256
  const item = firstItemRef.current;
@@ -264,34 +266,36 @@ function ObjectSearch({ variant = "secondary", properties, inputContainer, child
264
266
  children,
265
267
  /* @__PURE__ */ jsx(Suspense, { children: /* @__PURE__ */ jsx(ObjectSearchContent, {
266
268
  search: deferredValue,
267
- properties,
268
- firstItemRef
269
+ properties: schema.props,
270
+ firstItemRef,
271
+ empty: () => /* @__PURE__ */ jsxs("p", {
272
+ className: "text-fd-muted-foreground text-sm mt-2! mb-0!",
273
+ children: [
274
+ t.schemaFilterPropertiesEmpty,
275
+ " ",
276
+ /* @__PURE__ */ jsx("span", {
277
+ className: "text-fd-foreground font-medium",
278
+ children: `"${deferredValue}"`
279
+ })
280
+ ]
281
+ }),
282
+ render: (item) => /* @__PURE__ */ jsx(ObjectProperty, {
283
+ name: item.name,
284
+ $type: item.$type,
285
+ required: item.required,
286
+ parentPathIndex: pathIndex
287
+ }, item.name)
269
288
  }) })
270
289
  ] });
271
290
  }
272
- function ObjectSearchContent({ search: rawSearch, firstItemRef, properties }) {
273
- const t = useTranslations();
291
+ function ObjectSearchContent({ search: rawSearch, firstItemRef, properties, empty, render }) {
274
292
  const filtered = useMemo(() => {
275
293
  const search = rawSearch.trim().toLowerCase();
276
294
  return search.length > 0 ? properties.filter((prop) => prop.name.toLowerCase().includes(search)) : properties;
277
295
  }, [properties, rawSearch]);
278
296
  firstItemRef.current = filtered[0] ?? null;
279
- if (filtered.length === 0) return /* @__PURE__ */ jsxs("p", {
280
- className: "text-fd-muted-foreground text-sm",
281
- children: [
282
- t.schemaFilterPropertiesEmpty,
283
- " ",
284
- /* @__PURE__ */ jsx("span", {
285
- className: "text-fd-foreground font-medium",
286
- children: `"${rawSearch}"`
287
- })
288
- ]
289
- });
290
- return filtered.map((prop) => /* @__PURE__ */ jsx(ObjectProperty, {
291
- name: prop.name,
292
- $type: prop.$type,
293
- required: prop.required
294
- }, prop.name));
297
+ if (filtered.length === 0) return empty();
298
+ return filtered.map(render);
295
299
  }
296
300
  function InfoTag({ tag }) {
297
301
  const ref = useRef(null);
@@ -325,7 +329,7 @@ function SchemaUIPopover() {
325
329
  })
326
330
  }), [states]),
327
331
  children: [/* @__PURE__ */ jsx("div", {
328
- className: "sticky top-0 -mx-2 flex flex-row overflow-x-auto overflow-y-hidden items-center text-sm font-medium font-mono bg-fd-popover px-2 h-10 border-b z-20",
332
+ className: "sticky top-0 -mx-3 flex overflow-x-auto overflow-y-hidden items-center text-sm font-medium font-mono bg-fd-secondary text-fd-secondary-foreground px-3 h-10 border-b z-20",
329
333
  children: path.map((item, i) => {
330
334
  if (i === 0) return;
331
335
  const isDuplicated = path.some((other, j) => j !== i && other.$ref === item.$ref);
@@ -342,10 +346,7 @@ function SchemaUIPopover() {
342
346
  })
343
347
  }), /* @__PURE__ */ jsx(PathItemBody, {
344
348
  pathIndex: path.length - 1,
345
- objectSearchOverrides: {
346
- variant: "ghost",
347
- inputContainer: { className: "sticky top-10 -mx-2" }
348
- }
349
+ objectSearchOverrides: { variant: "in-popover" }
349
350
  })]
350
351
  });
351
352
  }
@@ -390,7 +391,7 @@ function encodePath(path) {
390
391
  item.name,
391
392
  item.$ref,
392
393
  ...item.tabValues ?? []
393
- ].join("\0").replaceAll("|", "")).join("|");
394
+ ].join("\0")).join("|");
394
395
  }
395
396
  function decodePath(path, highlighted) {
396
397
  const out = [];
@@ -1,23 +1,18 @@
1
- import { bundle } from "../../node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/bundle/bundle.js";
2
1
  import { upgrade } from "../../node_modules/.pnpm/@scalar_openapi-upgrader@0.2.8/node_modules/@scalar/openapi-upgrader/dist/upgrade.js";
3
- import { fetchUrls } from "../../node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/bundle/plugins/fetch-urls/index.js";
4
- import { readFiles } from "../../node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/bundle/plugins/read-files/index.js";
5
- import "../../node_modules/.pnpm/@scalar_json-magic@0.12.14/node_modules/@scalar/json-magic/dist/bundle/plugins/node.js";
6
2
  import { dereferenceDocument } from "./dereference.js";
3
+ import { bundle } from "../../node_modules/.pnpm/@apidevtools_json-schema-ref-parser@15.3.5_@types_json-schema@7.0.15/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/index.js";
7
4
  //#region src/utils/document/process.ts
8
5
  /**
9
6
  * process & reference input document to a Fumadocs OpenAPI compatible format
10
7
  */
11
8
  async function processDocument(input) {
12
- return dereferenceDocument(await bundle(input, {
13
- plugins: [fetchUrls(), readFiles()],
14
- treeShake: true,
15
- hooks: { onResolveError(node) {
16
- throw new Error(`Failed to resolve ${node.$ref}`);
17
- } }
18
- }).then((v) => upgrade(v, "3.2")).catch((e) => {
9
+ try {
10
+ let bundled = await bundle(input);
11
+ bundled = upgrade(bundled, "3.2");
12
+ return dereferenceDocument(bundled);
13
+ } catch (e) {
19
14
  throw new Error(`[OpenAPI] Failed to resolve input: ${input}`, { cause: e });
20
- }));
15
+ }
21
16
  }
22
17
  //#endregion
23
18
  export { processDocument };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fumadocs-openapi",
3
- "version": "10.10.1",
3
+ "version": "10.10.3",
4
4
  "description": "Generate MDX docs for your OpenAPI spec",
5
5
  "keywords": [
6
6
  "Docs",
@@ -57,9 +57,9 @@
57
57
  "@fumari/stf": "1.0.5"
58
58
  },
59
59
  "devDependencies": {
60
+ "@apidevtools/json-schema-ref-parser": "^15.3.5",
60
61
  "@fastify/deepmerge": "^3.2.1",
61
62
  "@scalar/api-client-react": "2.0.20",
62
- "@scalar/json-magic": "^0.12.14",
63
63
  "@scalar/openapi-upgrader": "^0.2.8",
64
64
  "@tailwindcss/oxide": "^4.3.0",
65
65
  "@types/js-yaml": "^4.0.9",
@@ -96,18 +96,15 @@
96
96
  }
97
97
  },
98
98
  "inlinedDependencies": {
99
+ "@apidevtools/json-schema-ref-parser": "15.3.5",
99
100
  "@fastify/deepmerge": "3.2.1",
100
- "@scalar/helpers": "0.8.0",
101
- "@scalar/json-magic": "0.12.14",
102
101
  "@scalar/openapi-upgrader": "0.2.8",
103
102
  "ajv": "8.20.0",
104
103
  "fast-content-type-parse": "3.0.0",
105
104
  "fast-deep-equal": "3.1.3",
106
105
  "fast-uri": "3.1.0",
107
106
  "json-schema-traverse": "1.0.0",
108
- "pathe": "2.0.3",
109
- "xml-js": "1.6.11",
110
- "yaml": "2.9.0"
107
+ "xml-js": "1.6.11"
111
108
  },
112
109
  "scripts": {
113
110
  "build": "tsdown",