fumadocs-openapi 10.6.7 → 10.7.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 (118) hide show
  1. package/css/generated/shared.css +2 -5
  2. package/dist/_virtual/_rolldown/runtime.js +2 -1
  3. package/dist/i18n.js +3 -2
  4. package/dist/node_modules/.pnpm/@fastify_deepmerge@3.2.1/node_modules/@fastify/deepmerge/index.js +108 -0
  5. package/dist/node_modules/.pnpm/@scalar_helpers@0.4.3/node_modules/@scalar/helpers/dist/general/create-limiter.js +43 -0
  6. package/dist/node_modules/.pnpm/@scalar_helpers@0.4.3/node_modules/@scalar/helpers/dist/object/is-object.js +26 -0
  7. package/dist/node_modules/.pnpm/@scalar_helpers@0.4.3/node_modules/@scalar/helpers/dist/object/prevent-pollution.js +33 -0
  8. package/dist/node_modules/.pnpm/@scalar_helpers@0.4.3/node_modules/@scalar/helpers/dist/queue/queue.js +106 -0
  9. package/dist/node_modules/.pnpm/@scalar_helpers@0.4.3/node_modules/@scalar/helpers/dist/string/generate-hash.js +120 -0
  10. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.5/node_modules/@scalar/json-magic/dist/bundle/bundle.js +346 -0
  11. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.5/node_modules/@scalar/json-magic/dist/bundle/plugins/fetch-urls/index.js +73 -0
  12. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.5/node_modules/@scalar/json-magic/dist/bundle/plugins/node.js +3 -0
  13. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.5/node_modules/@scalar/json-magic/dist/bundle/plugins/parse-yaml/index.js +1 -0
  14. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.5/node_modules/@scalar/json-magic/dist/bundle/plugins/read-files/index.js +51 -0
  15. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.5/node_modules/@scalar/json-magic/dist/bundle/value-generator.js +88 -0
  16. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/convert-to-local-ref.js +24 -0
  17. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/escape-json-pointer.js +11 -0
  18. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/get-schemas.js +44 -0
  19. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/get-segments-from-path.js +10 -0
  20. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/get-value-by-path.js +42 -0
  21. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/is-file-path.js +23 -0
  22. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/is-http-url.js +23 -0
  23. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/is-json-object.js +28 -0
  24. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/is-yaml.js +21 -0
  25. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/normalize.js +26 -0
  26. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/resolve-reference-path.js +30 -0
  27. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/set-value-at-path.js +70 -0
  28. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/to-relative-path.js +33 -0
  29. package/dist/node_modules/.pnpm/@scalar_json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/unescape-json-pointer.js +12 -0
  30. package/dist/node_modules/.pnpm/@scalar_openapi-upgrader@0.2.4/node_modules/@scalar/openapi-upgrader/dist/2.0-to-3.0/upgrade-from-two-to-three.js +487 -0
  31. package/dist/node_modules/.pnpm/@scalar_openapi-upgrader@0.2.4/node_modules/@scalar/openapi-upgrader/dist/3.0-to-3.1/upgrade-from-three-to-three-one.js +95 -0
  32. package/dist/node_modules/.pnpm/@scalar_openapi-upgrader@0.2.4/node_modules/@scalar/openapi-upgrader/dist/3.1-to-3.2/upgrade-from-three-one-to-three-two.js +59 -0
  33. package/dist/node_modules/.pnpm/@scalar_openapi-upgrader@0.2.4/node_modules/@scalar/openapi-upgrader/dist/helpers/traverse.js +25 -0
  34. package/dist/node_modules/.pnpm/@scalar_openapi-upgrader@0.2.4/node_modules/@scalar/openapi-upgrader/dist/upgrade.js +15 -0
  35. package/dist/node_modules/.pnpm/fast-content-type-parse@3.0.0/node_modules/fast-content-type-parse/index.js +115 -0
  36. package/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/index.js +19 -0
  37. package/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.js +430 -0
  38. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/compose/compose-collection.js +50 -0
  39. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/compose/compose-doc.js +39 -0
  40. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/compose/compose-node.js +85 -0
  41. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/compose/compose-scalar.js +57 -0
  42. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/compose/composer.js +193 -0
  43. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/compose/resolve-block-map.js +82 -0
  44. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +173 -0
  45. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +40 -0
  46. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/compose/resolve-end.js +36 -0
  47. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +153 -0
  48. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +204 -0
  49. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/compose/resolve-props.js +105 -0
  50. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/compose/util-contains-newline.js +27 -0
  51. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +25 -0
  52. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +10 -0
  53. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/compose/util-map-includes.js +10 -0
  54. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/doc/Document.js +277 -0
  55. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/doc/anchors.js +57 -0
  56. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/doc/applyReviver.js +38 -0
  57. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/doc/createNode.js +61 -0
  58. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/doc/directives.js +163 -0
  59. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/errors.js +48 -0
  60. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/index.js +16 -0
  61. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/log.js +6 -0
  62. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/nodes/Alias.js +91 -0
  63. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/nodes/Collection.js +117 -0
  64. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/nodes/Node.js +32 -0
  65. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/nodes/Pair.js +29 -0
  66. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
  67. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/nodes/YAMLMap.js +106 -0
  68. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +104 -0
  69. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +49 -0
  70. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/nodes/identity.js +33 -0
  71. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/nodes/toJS.js +35 -0
  72. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/parse/cst-scalar.js +3 -0
  73. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/parse/cst-visit.js +89 -0
  74. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/parse/cst.js +40 -0
  75. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/parse/lexer.js +517 -0
  76. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/parse/line-counter.js +45 -0
  77. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/parse/parser.js +852 -0
  78. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/public-api.js +44 -0
  79. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/schema/Schema.js +27 -0
  80. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/schema/common/map.js +16 -0
  81. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/schema/common/null.js +13 -0
  82. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/schema/common/seq.js +16 -0
  83. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
  84. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/schema/core/bool.js +17 -0
  85. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/schema/core/float.js +38 -0
  86. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/schema/core/int.js +37 -0
  87. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
  88. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/schema/json/schema.js +61 -0
  89. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/schema/tags.js +81 -0
  90. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +44 -0
  91. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +24 -0
  92. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +41 -0
  93. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +70 -0
  94. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +36 -0
  95. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +60 -0
  96. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +56 -0
  97. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +39 -0
  98. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +65 -0
  99. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +79 -0
  100. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +111 -0
  101. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/stringify/stringify.js +105 -0
  102. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +116 -0
  103. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/stringify/stringifyComment.js +16 -0
  104. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +59 -0
  105. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +19 -0
  106. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/stringify/stringifyPair.js +95 -0
  107. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/stringify/stringifyString.js +222 -0
  108. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/dist/visit.js +187 -0
  109. package/dist/node_modules/.pnpm/yaml@2.8.3/node_modules/yaml/browser/index.js +16 -0
  110. package/dist/playground/components/oauth-dialog.js +17 -11
  111. package/dist/playground/components/result-display.js +3 -2
  112. package/dist/playground/schema.js +1 -1
  113. package/dist/scalar/client.js +15 -24
  114. package/dist/ui/operation/get-example-requests.js +1 -1
  115. package/dist/ui/operation/response-tabs.js +1 -1
  116. package/dist/utils/document/process.js +5 -3
  117. package/dist/utils/schema/sample.js +442 -0
  118. package/package.json +26 -25
@@ -0,0 +1,42 @@
1
+ import { getId } from "./get-schemas.js";
2
+ //#region ../../node_modules/.pnpm/@scalar+json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/get-value-by-path.js
3
+ /**
4
+ * Traverses an object using an array of string segments (path keys) and returns
5
+ * the value at the specified path along with its context (id if available).
6
+ *
7
+ * @param target - The root object to traverse.
8
+ * @param segments - An array of string keys representing the path to traverse.
9
+ * @returns An object containing the final context (id or previous context) and the value at the path.
10
+ *
11
+ * @example
12
+ * const obj = {
13
+ * foo: {
14
+ * bar: {
15
+ * baz: 42
16
+ * }
17
+ * }
18
+ * };
19
+ * // Returns: { context: '', value: 42 }
20
+ * getValueByPath(obj, ['foo', 'bar', 'baz']);
21
+ */
22
+ function getValueByPath(target, segments) {
23
+ return segments.reduce((acc, key) => {
24
+ if (acc.value === void 0) return {
25
+ context: "",
26
+ value: void 0
27
+ };
28
+ if (typeof acc.value !== "object" || acc.value === null) return {
29
+ context: "",
30
+ value: void 0
31
+ };
32
+ return {
33
+ context: getId(acc.value) ?? acc.context,
34
+ value: acc.value?.[key]
35
+ };
36
+ }, {
37
+ context: "",
38
+ value: target
39
+ });
40
+ }
41
+ //#endregion
42
+ export { getValueByPath };
@@ -0,0 +1,23 @@
1
+ import { isHttpUrl } from "./is-http-url.js";
2
+ import { isJsonObject } from "./is-json-object.js";
3
+ import { isYaml } from "./is-yaml.js";
4
+ //#region ../../node_modules/.pnpm/@scalar+json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/is-file-path.js
5
+ /**
6
+ * Checks if a string represents a file path by ensuring it's not a remote URL,
7
+ * YAML content, or JSON content.
8
+ *
9
+ * @param value - The string to check
10
+ * @returns true if the string appears to be a file path, false otherwise
11
+ * @example
12
+ * ```ts
13
+ * isFilePath('./schemas/user.json') // true
14
+ * isFilePath('https://example.com/schema.json') // false
15
+ * isFilePath('{"type": "object"}') // false
16
+ * isFilePath('type: object') // false
17
+ * ```
18
+ */
19
+ function isFilePath(value) {
20
+ return !isHttpUrl(value) && !isYaml(value) && !isJsonObject(value);
21
+ }
22
+ //#endregion
23
+ export { isFilePath };
@@ -0,0 +1,23 @@
1
+ //#region ../../node_modules/.pnpm/@scalar+json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/is-http-url.js
2
+ /**
3
+ * Checks if a string is a remote URL (starts with http:// or https://)
4
+ * @param value - The URL string to check
5
+ * @returns true if the string is a remote URL, false otherwise
6
+ * @example
7
+ * ```ts
8
+ * isHttpUrl('https://example.com/schema.json') // true
9
+ * isHttpUrl('http://api.example.com/schemas/user.json') // true
10
+ * isHttpUrl('#/components/schemas/User') // false
11
+ * isHttpUrl('./local-schema.json') // false
12
+ * ```
13
+ */
14
+ function isHttpUrl(value) {
15
+ try {
16
+ const url = new URL(value);
17
+ return url.protocol === "http:" || url.protocol === "https:";
18
+ } catch {
19
+ return false;
20
+ }
21
+ }
22
+ //#endregion
23
+ export { isHttpUrl };
@@ -0,0 +1,28 @@
1
+ import { isObject } from "../../../../../../@scalar_helpers@0.4.3/node_modules/@scalar/helpers/dist/object/is-object.js";
2
+ //#region ../../node_modules/.pnpm/@scalar+json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/is-json-object.js
3
+ /**
4
+ * Determines if a string represents a valid JSON object (i.e., a plain object, not an array, primitive, or null).
5
+ * The function first checks if the string appears to start with an opening curly brace (ignoring leading whitespace),
6
+ * which is a quick heuristic to rule out arrays, primitives, and most invalid JSON. If this check passes,
7
+ * it attempts to parse the string with JSON.parse. The result is then checked to ensure it is a plain object
8
+ * (not an array, null, or primitive) using the isObject utility.
9
+ *
10
+ * @param value - The string to evaluate
11
+ * @returns true if the string is valid JSON and parses to a plain object, false otherwise
12
+ *
13
+ * @example
14
+ * isJsonObject('{"foo": "bar"}') // true
15
+ * isJsonObject('[1,2,3]') // false
16
+ * isJsonObject('not json') // false
17
+ * isJsonObject('42') // false
18
+ */
19
+ function isJsonObject(value) {
20
+ if (!/^\s*(\{)/.test(value.slice(0, 500))) return false;
21
+ try {
22
+ return isObject(JSON.parse(value));
23
+ } catch {
24
+ return false;
25
+ }
26
+ }
27
+ //#endregion
28
+ export { isJsonObject };
@@ -0,0 +1,21 @@
1
+ //#region ../../node_modules/.pnpm/@scalar+json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/is-yaml.js
2
+ /**
3
+ * Checks if a string appears to be YAML content.
4
+ * This function uses a simple heuristic: it looks for a line that starts with an optional dash,
5
+ * followed by a key (alphanumeric or dash), a colon, and a value, and then at least one more line.
6
+ * This is not a full YAML parser, but works for basic detection.
7
+ *
8
+ * @param value - The string to check
9
+ * @returns true if the string looks like YAML, false otherwise
10
+ *
11
+ * @example
12
+ * isYaml('openapi: 3.0.0\ninfo:\n title: Example') // true
13
+ * isYaml('{"openapi": "3.0.0", "info": {"title": "Example"}}') // false
14
+ * isYaml('- name: value\n- name: value2') // true
15
+ * isYaml('type: object') // false (only one line)
16
+ */
17
+ function isYaml(value) {
18
+ return /^\s*(?:-\s*)?[\w\-]+\s*:\s*.+\n.*/.test(value);
19
+ }
20
+ //#endregion
21
+ export { isYaml };
@@ -0,0 +1,26 @@
1
+ import { parse } from "../../../../../../yaml@2.8.3/node_modules/yaml/browser/dist/public-api.js";
2
+ import "../../../../../../yaml@2.8.3/node_modules/yaml/browser/index.js";
3
+ //#region ../../node_modules/.pnpm/@scalar+json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/normalize.js
4
+ /**
5
+ * Normalize a string (YAML, JSON, object) to a JavaScript datatype.
6
+ */
7
+ function normalize(content) {
8
+ if (content === null) return;
9
+ if (typeof content === "string") {
10
+ if (content.trim() === "") return;
11
+ try {
12
+ return JSON.parse(content);
13
+ } catch (_error) {
14
+ const hasColon = /^[^:]+:/.test(content);
15
+ const isJson = content.slice(0, 50).trimStart().startsWith("{");
16
+ if (!hasColon || isJson) return;
17
+ return parse(content, {
18
+ maxAliasCount: 1e4,
19
+ merge: true
20
+ });
21
+ }
22
+ }
23
+ return content;
24
+ }
25
+ //#endregion
26
+ export { normalize };
@@ -0,0 +1,30 @@
1
+ import { isHttpUrl } from "./is-http-url.js";
2
+ import { posix } from "../../../../../../pathe@2.0.3/node_modules/pathe/dist/index.js";
3
+ //#region ../../node_modules/.pnpm/@scalar+json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/resolve-reference-path.js
4
+ /**
5
+ * Resolves a reference path by combining a base path with a relative path.
6
+ * Handles both remote URLs and local file paths.
7
+ *
8
+ * @param base - The base path (can be a URL or local file path)
9
+ * @param relativePath - The relative path to resolve against the base
10
+ * @returns The resolved absolute path
11
+ * @example
12
+ * // Resolve remote URL
13
+ * resolveReferencePath('https://example.com/api/schema.json', 'user.json')
14
+ * // Returns: 'https://example.com/api/user.json'
15
+ *
16
+ * // Resolve local path
17
+ * resolveReferencePath('/path/to/schema.json', 'user.json')
18
+ * // Returns: '/path/to/user.json'
19
+ */
20
+ const resolveReferencePath = (base, relativePath) => {
21
+ if (isHttpUrl(relativePath)) return relativePath;
22
+ if (isHttpUrl(base)) {
23
+ const baseUrl = new URL(base);
24
+ baseUrl.pathname = posix.posix.resolve("/", posix.dirname(baseUrl.pathname), relativePath);
25
+ return baseUrl.toString();
26
+ }
27
+ return posix.resolve(posix.dirname(base), relativePath);
28
+ };
29
+ //#endregion
30
+ export { resolveReferencePath };
@@ -0,0 +1,70 @@
1
+ import { preventPollution } from "../../../../../../@scalar_helpers@0.4.3/node_modules/@scalar/helpers/dist/object/prevent-pollution.js";
2
+ import { getSegmentsFromPath } from "./get-segments-from-path.js";
3
+ //#region ../../node_modules/.pnpm/@scalar+json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/set-value-at-path.js
4
+ /**
5
+ * Sets a value at a specified path in an object, creating intermediate objects/arrays as needed.
6
+ * This function traverses the object structure and creates any missing intermediate objects
7
+ * or arrays based on the path segments. If the next segment is a numeric string, it creates
8
+ * an array instead of an object.
9
+ *
10
+ * ⚠️ Warning: Be careful with object keys that look like numbers (e.g. "123") as this function
11
+ * will interpret them as array indices and create arrays instead of objects. If you need to
12
+ * use numeric-looking keys, consider prefixing them with a non-numeric character.
13
+ *
14
+ * @param obj - The target object to set the value in
15
+ * @param path - The JSON pointer path where the value should be set
16
+ * @param value - The value to set at the specified path
17
+ * @throws {Error} If attempting to set a value at the root path ('')
18
+ *
19
+ * @example
20
+ * const obj = {}
21
+ * setValueAtPath(obj, '/foo/bar/0', 'value')
22
+ * // Result:
23
+ * // {
24
+ * // foo: {
25
+ * // bar: ['value']
26
+ * // }
27
+ * // }
28
+ *
29
+ * @example
30
+ * const obj = { existing: { path: 'old' } }
31
+ * setValueAtPath(obj, '/existing/path', 'new')
32
+ * // Result:
33
+ * // {
34
+ * // existing: {
35
+ * // path: 'new'
36
+ * // }
37
+ * // }
38
+ *
39
+ * @example
40
+ * // ⚠️ Warning: This will create an array instead of an object with key "123"
41
+ * setValueAtPath(obj, '/foo/123/bar', 'value')
42
+ * // Result:
43
+ * // {
44
+ * // foo: [
45
+ * // undefined,
46
+ * // undefined,
47
+ * // undefined,
48
+ * // { bar: 'value' }
49
+ * // ]
50
+ * // }
51
+ */
52
+ function setValueAtPath(obj, path, value) {
53
+ if (path === "") throw new Error("Cannot set value at root ('') pointer");
54
+ const parts = getSegmentsFromPath(path);
55
+ parts.forEach((part) => preventPollution(part));
56
+ let current = obj;
57
+ for (let i = 0; i < parts.length; i++) {
58
+ const key = parts[i];
59
+ const isLast = i === parts.length - 1;
60
+ const nextKey = parts[i + 1];
61
+ const shouldBeArray = /^\d+$/.test(nextKey ?? "");
62
+ if (isLast) current[key] = value;
63
+ else {
64
+ if (!(key in current) || typeof current[key] !== "object") current[key] = shouldBeArray ? [] : {};
65
+ current = current[key];
66
+ }
67
+ }
68
+ }
69
+ //#endregion
70
+ export { setValueAtPath };
@@ -0,0 +1,33 @@
1
+ import { isHttpUrl } from "./is-http-url.js";
2
+ import { posix } from "../../../../../../pathe@2.0.3/node_modules/pathe/dist/index.js";
3
+ //#region ../../node_modules/.pnpm/@scalar+json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/to-relative-path.js
4
+ /**
5
+ * Converts an input path or URL to a relative path based on the provided base.
6
+ * Handles both remote URLs and local file system paths.
7
+ * - If both input and base are remote URLs and share the same origin, computes the relative pathname.
8
+ * - If base is a remote URL but input is local, returns a remote URL with a relative pathname.
9
+ * - If input is a remote URL but base is local, returns input as is.
10
+ * - Otherwise, computes the relative path between two local paths.
11
+ */
12
+ const toRelativePath = (input, base) => {
13
+ if (isHttpUrl(input) && isHttpUrl(base)) {
14
+ const inputUrl = new URL(input);
15
+ const baseUrl = new URL(base);
16
+ if (inputUrl.origin !== baseUrl.origin) return input;
17
+ const baseDir = posix.dirname(posix.posix.resolve("/", baseUrl.pathname));
18
+ const inputPath = posix.posix.resolve("/", inputUrl.pathname);
19
+ return posix.posix.relative(baseDir, inputPath);
20
+ }
21
+ if (isHttpUrl(base)) {
22
+ const baseUrl = new URL(base);
23
+ const baseDir = posix.dirname(posix.posix.resolve("/", baseUrl.pathname));
24
+ baseUrl.pathname = posix.posix.relative(baseDir, posix.posix.resolve("/", input));
25
+ return baseUrl.toString();
26
+ }
27
+ if (isHttpUrl(input)) return input;
28
+ const baseDir = posix.dirname(posix.resolve(base));
29
+ const inputPath = posix.resolve(input);
30
+ return posix.relative(baseDir, inputPath);
31
+ };
32
+ //#endregion
33
+ export { toRelativePath };
@@ -0,0 +1,12 @@
1
+ //#region ../../node_modules/.pnpm/@scalar+json-magic@0.12.5/node_modules/@scalar/json-magic/dist/helpers/unescape-json-pointer.js
2
+ /**
3
+ * Unescape JSON pointer
4
+ *
5
+ * Examples:
6
+ * /foo~1bar~0baz -> /foo/bar~baz
7
+ */
8
+ function unescapeJsonPointer(uri) {
9
+ return decodeURI(uri.replace(/~1/g, "/").replace(/~0/g, "~"));
10
+ }
11
+ //#endregion
12
+ export { unescapeJsonPointer };