@fumadocs/api-docs 0.0.1
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/LICENSE +21 -0
- package/css/generated/shared.css +1 -0
- package/css/preset.css +1 -0
- package/dist/.translations/index.d.ts +28 -0
- package/dist/.translations/keys.js +28 -0
- package/dist/_virtual/_rolldown/runtime.js +4 -0
- package/dist/auto-anchor/client.d.ts +16 -0
- package/dist/auto-anchor/client.js +20 -0
- package/dist/auto-anchor/index.d.ts +9 -0
- package/dist/auto-anchor/index.js +17 -0
- package/dist/codegen.d.ts +38 -0
- package/dist/codegen.js +35 -0
- package/dist/components/accordion.d.ts +22 -0
- package/dist/components/accordion.js +67 -0
- package/dist/components/dialog.d.ts +39 -0
- package/dist/components/dialog.js +61 -0
- package/dist/components/input.d.ts +8 -0
- package/dist/components/input.js +17 -0
- package/dist/components/playground/inputs.d.ts +50 -0
- package/dist/components/playground/inputs.js +426 -0
- package/dist/components/playground/schema.d.ts +66 -0
- package/dist/components/playground/schema.js +144 -0
- package/dist/components/schema/client.d.ts +17 -0
- package/dist/components/schema/client.js +415 -0
- package/dist/components/schema/index.d.ts +102 -0
- package/dist/components/schema/index.js +276 -0
- package/dist/components/select-tab.d.ts +33 -0
- package/dist/components/select-tab.js +56 -0
- package/dist/components/select.d.ts +16 -0
- package/dist/components/select.js +72 -0
- package/dist/components/spinner.d.ts +7 -0
- package/dist/components/spinner.js +14 -0
- package/dist/i18n.d.ts +7 -0
- package/dist/i18n.js +7 -0
- 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
- 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
- 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.d.ts +157 -0
- 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
- 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
- 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.d.ts +166 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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.d.ts +96 -0
- 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
- 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.d.ts +190 -0
- 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
- 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.d.ts +134 -0
- 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
- 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
- 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
- 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
- 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/types/index.d.ts +133 -0
- 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
- 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.d.ts +34 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/dist/node_modules/.pnpm/@fastify_deepmerge@3.2.1/node_modules/@fastify/deepmerge/index.js +108 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/2020.js +110 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/code.js +138 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/index.js +674 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/scope.js +141 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/errors.js +102 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/index.js +223 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/names.js +28 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/ref_error.js +18 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/resolve.js +133 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/rules.js +61 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/util.js +146 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/applicability.js +23 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/boolSchema.js +48 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/dataType.js +172 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/defaults.js +31 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/index.js +433 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/keyword.js +113 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/subschema.js +72 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/core.js +583 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/data.js +18 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/index.js +42 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.js +50 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.js +20 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.js +51 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.js +16 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.js +36 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.js +19 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.js +85 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/schema.js +59 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/equal.js +12 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/ucs2length.js +25 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/uri.js +12 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/validation_error.js +16 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +57 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +96 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/allOf.js +29 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +16 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/contains.js +89 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +87 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js +16 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/if.js +62 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/index.js +60 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/items.js +59 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/items2020.js +34 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/not.js +31 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +51 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +61 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +17 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/properties.js +52 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +41 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +17 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/code.js +130 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/core/id.js +14 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/core/index.js +22 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/core/ref.js +112 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/index.js +101 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/types.js +14 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/draft2020.js +35 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js +46 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js +45 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/index.js +22 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js +20 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js +15 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/format/format.js +92 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/format/index.js +10 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/metadata.js +23 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/next.js +19 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/index.js +13 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js +46 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js +59 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/const.js +27 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js +17 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/enum.js +49 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/index.js +48 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitContains.js +18 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitItems.js +28 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitLength.js +33 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +47 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +28 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +27 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/pattern.js +38 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/required.js +72 -0
- package/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +70 -0
- package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js +33 -0
- package/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/index.js +236 -0
- package/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/schemes.js +187 -0
- package/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/utils.js +282 -0
- package/dist/node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js +78 -0
- package/dist/schema/bundle.d.ts +2 -0
- package/dist/schema/bundle.js +2 -0
- package/dist/schema/dereference.d.ts +19 -0
- package/dist/schema/dereference.js +49 -0
- package/dist/schema/index.d.ts +21 -0
- package/dist/schema/index.js +0 -0
- package/dist/schema/merge.d.ts +12 -0
- package/dist/schema/merge.js +156 -0
- package/dist/schema/ref.d.ts +20 -0
- package/dist/schema/ref.js +43 -0
- package/dist/schema/resolve-ref.d.ts +4 -0
- package/dist/schema/resolve-ref.js +11 -0
- package/dist/schema/sample.d.ts +12 -0
- package/dist/schema/sample.js +442 -0
- package/dist/schema/to-string.d.ts +10 -0
- package/dist/schema/to-string.js +51 -0
- package/dist/utils/cn.js +2 -0
- package/dist/utils/deep-equal.js +21 -0
- package/dist/utils/id-to-title.d.ts +4 -0
- package/dist/utils/id-to-title.js +12 -0
- package/dist/utils/is-plain-object.js +8 -0
- package/dist/utils/merge-refs.js +11 -0
- package/dist/utils/url.d.ts +5 -0
- package/dist/utils/url.js +13 -0
- package/package.json +105 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { cwd, fromFileSystemPath, isFileSystemPath, parse as parse$1, resolve as resolve$1, stripHash } from "./util/url.js";
|
|
2
|
+
import { JSONParserErrorGroup, isHandledError } from "./util/errors.js";
|
|
3
|
+
import { registerSchemaResources, usesDynamicIdScope } from "./util/schema-resources.js";
|
|
4
|
+
import $Refs from "./refs.js";
|
|
5
|
+
import parse$2 from "./parse.js";
|
|
6
|
+
import "./resolvers/file.js";
|
|
7
|
+
import "./resolvers/http.js";
|
|
8
|
+
import "./options.js";
|
|
9
|
+
import normalizeArgs from "./normalize-args.js";
|
|
10
|
+
import resolveExternal from "./resolve-external.js";
|
|
11
|
+
import bundle$1 from "./bundle.js";
|
|
12
|
+
import dereference_default from "./dereference.js";
|
|
13
|
+
import maybe from "./util/maybe.js";
|
|
14
|
+
//#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/index.js
|
|
15
|
+
/**
|
|
16
|
+
* This class parses a JSON schema, builds a map of its JSON references and their resolved values,
|
|
17
|
+
* and provides methods for traversing, manipulating, and dereferencing those references.
|
|
18
|
+
*
|
|
19
|
+
* @class
|
|
20
|
+
*/
|
|
21
|
+
var $RefParser = class $RefParser {
|
|
22
|
+
/**
|
|
23
|
+
* The parsed (and possibly dereferenced) JSON schema object
|
|
24
|
+
*
|
|
25
|
+
* @type {object}
|
|
26
|
+
* @readonly
|
|
27
|
+
*/
|
|
28
|
+
schema = null;
|
|
29
|
+
/**
|
|
30
|
+
* The resolved JSON references
|
|
31
|
+
*
|
|
32
|
+
* @type {$Refs}
|
|
33
|
+
* @readonly
|
|
34
|
+
*/
|
|
35
|
+
$refs = new $Refs();
|
|
36
|
+
async parse() {
|
|
37
|
+
const args = normalizeArgs(arguments);
|
|
38
|
+
let promise;
|
|
39
|
+
if (!args.path && !args.schema) {
|
|
40
|
+
const err = /* @__PURE__ */ new Error(`Expected a file path, URL, or object. Got ${args.path || args.schema}`);
|
|
41
|
+
return maybe(args.callback, Promise.reject(err));
|
|
42
|
+
}
|
|
43
|
+
this.schema = null;
|
|
44
|
+
this.$refs = new $Refs();
|
|
45
|
+
let pathType = "http";
|
|
46
|
+
if (isFileSystemPath(args.path)) {
|
|
47
|
+
args.path = fromFileSystemPath(args.path);
|
|
48
|
+
pathType = "file";
|
|
49
|
+
} else if (!args.path && args.schema && "$id" in args.schema && args.schema.$id) {
|
|
50
|
+
const params = parse$1(args.schema.$id);
|
|
51
|
+
const port = params.port ?? (params.protocol === "https:" ? 443 : 80);
|
|
52
|
+
args.path = `${params.protocol}//${params.hostname}:${port}`;
|
|
53
|
+
}
|
|
54
|
+
args.path = resolve$1(cwd(), args.path);
|
|
55
|
+
if (args.schema && typeof args.schema === "object") {
|
|
56
|
+
const $ref = this.$refs._add(args.path);
|
|
57
|
+
$ref.value = args.schema;
|
|
58
|
+
$ref.pathType = pathType;
|
|
59
|
+
$ref.dynamicIdScope = usesDynamicIdScope($ref.value);
|
|
60
|
+
registerSchemaResources(this.$refs, $ref.path, $ref.value, $ref.pathType, $ref.dynamicIdScope);
|
|
61
|
+
promise = Promise.resolve(args.schema);
|
|
62
|
+
} else promise = parse$2(args.path, this.$refs, args.options);
|
|
63
|
+
try {
|
|
64
|
+
const result = await promise;
|
|
65
|
+
if (result !== null && typeof result === "object" && !Buffer.isBuffer(result)) {
|
|
66
|
+
this.schema = result;
|
|
67
|
+
return maybe(args.callback, Promise.resolve(this.schema));
|
|
68
|
+
} else if (args.options.continueOnError) {
|
|
69
|
+
this.schema = null;
|
|
70
|
+
return maybe(args.callback, Promise.resolve(this.schema));
|
|
71
|
+
} else throw new SyntaxError(`"${this.$refs._root$Ref.path || result}" is not a valid JSON Schema`);
|
|
72
|
+
} catch (err) {
|
|
73
|
+
if (!args.options.continueOnError || !isHandledError(err)) return maybe(args.callback, Promise.reject(err));
|
|
74
|
+
if (this.$refs._$refs[stripHash(args.path)]) this.$refs._$refs[stripHash(args.path)].addError(err);
|
|
75
|
+
return maybe(args.callback, Promise.resolve(null));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
static parse() {
|
|
79
|
+
const parser = new $RefParser();
|
|
80
|
+
return parser.parse.apply(parser, arguments);
|
|
81
|
+
}
|
|
82
|
+
async resolve() {
|
|
83
|
+
const args = normalizeArgs(arguments);
|
|
84
|
+
try {
|
|
85
|
+
await this.parse(args.path, args.schema, args.options);
|
|
86
|
+
await resolveExternal(this, args.options);
|
|
87
|
+
finalize(this);
|
|
88
|
+
return maybe(args.callback, Promise.resolve(this.$refs));
|
|
89
|
+
} catch (err) {
|
|
90
|
+
return maybe(args.callback, Promise.reject(err));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
static resolve() {
|
|
94
|
+
const instance = new $RefParser();
|
|
95
|
+
return instance.resolve.apply(instance, arguments);
|
|
96
|
+
}
|
|
97
|
+
static bundle() {
|
|
98
|
+
const instance = new $RefParser();
|
|
99
|
+
return instance.bundle.apply(instance, arguments);
|
|
100
|
+
}
|
|
101
|
+
async bundle() {
|
|
102
|
+
const args = normalizeArgs(arguments);
|
|
103
|
+
try {
|
|
104
|
+
await this.resolve(args.path, args.schema, args.options);
|
|
105
|
+
bundle$1(this, args.options);
|
|
106
|
+
finalize(this);
|
|
107
|
+
return maybe(args.callback, Promise.resolve(this.schema));
|
|
108
|
+
} catch (err) {
|
|
109
|
+
return maybe(args.callback, Promise.reject(err));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
static dereference() {
|
|
113
|
+
const instance = new $RefParser();
|
|
114
|
+
return instance.dereference.apply(instance, arguments);
|
|
115
|
+
}
|
|
116
|
+
async dereference() {
|
|
117
|
+
const args = normalizeArgs(arguments);
|
|
118
|
+
try {
|
|
119
|
+
await this.resolve(args.path, args.schema, args.options);
|
|
120
|
+
dereference_default(this, args.options);
|
|
121
|
+
finalize(this);
|
|
122
|
+
return maybe(args.callback, Promise.resolve(this.schema));
|
|
123
|
+
} catch (err) {
|
|
124
|
+
return maybe(args.callback, Promise.reject(err));
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
function finalize(parser) {
|
|
129
|
+
if (JSONParserErrorGroup.getParserErrors(parser).length > 0) throw new JSONParserErrorGroup(parser);
|
|
130
|
+
}
|
|
131
|
+
$RefParser.parse;
|
|
132
|
+
$RefParser.resolve;
|
|
133
|
+
const bundle = $RefParser.bundle;
|
|
134
|
+
$RefParser.dereference;
|
|
135
|
+
//#endregion
|
|
136
|
+
export { bundle };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { getNewOptions } from "./options.js";
|
|
2
|
+
//#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/normalize-args.js
|
|
3
|
+
/**
|
|
4
|
+
* Normalizes the given arguments, accounting for optional args.
|
|
5
|
+
*/
|
|
6
|
+
function normalizeArgs(_args) {
|
|
7
|
+
let path;
|
|
8
|
+
let schema;
|
|
9
|
+
let options;
|
|
10
|
+
let callback;
|
|
11
|
+
const args = Array.prototype.slice.call(_args);
|
|
12
|
+
if (typeof args[args.length - 1] === "function") callback = args.pop();
|
|
13
|
+
if (typeof args[0] === "string") {
|
|
14
|
+
path = args[0];
|
|
15
|
+
if (typeof args[2] === "object") {
|
|
16
|
+
schema = args[1];
|
|
17
|
+
options = args[2];
|
|
18
|
+
} else {
|
|
19
|
+
schema = void 0;
|
|
20
|
+
options = args[1];
|
|
21
|
+
}
|
|
22
|
+
} else {
|
|
23
|
+
path = "";
|
|
24
|
+
schema = args[0];
|
|
25
|
+
options = args[1];
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
options = getNewOptions(options);
|
|
29
|
+
} catch (e) {
|
|
30
|
+
console.error(`JSON Schema Ref Parser: Error normalizing options: ${e}`);
|
|
31
|
+
}
|
|
32
|
+
if (!options.mutateInputSchema && typeof schema === "object") schema = JSON.parse(JSON.stringify(schema));
|
|
33
|
+
return {
|
|
34
|
+
path,
|
|
35
|
+
schema,
|
|
36
|
+
options,
|
|
37
|
+
callback
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { normalizeArgs as default };
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { HTTPResolverOptions, JSONSchema, JSONSchemaObject, Plugin, ResolverOptions } from "./types/index.js";
|
|
2
|
+
|
|
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/options.d.ts
|
|
4
|
+
type DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]> } : T;
|
|
5
|
+
interface BundleOptions {
|
|
6
|
+
/**
|
|
7
|
+
* A function, called for each path, which can return true to stop this path and all
|
|
8
|
+
* subpaths from being processed further. This is useful in schemas where some
|
|
9
|
+
* subpaths contain literal $ref keys that should not be changed.
|
|
10
|
+
*/
|
|
11
|
+
excludedPathMatcher?(path: string): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Callback invoked during bundling.
|
|
14
|
+
*
|
|
15
|
+
* @argument {string} path - The path being processed (ie. the `$ref` string)
|
|
16
|
+
* @argument {JSONSchemaObject} value - The JSON-Schema that the `$ref` resolved to
|
|
17
|
+
* @argument {JSONSchemaObject} parent - The parent of the processed object
|
|
18
|
+
* @argument {string} parentPropName - The prop name of the parent object whose value was processed
|
|
19
|
+
*/
|
|
20
|
+
onBundle?(path: string, value: JSONSchemaObject, parent?: JSONSchemaObject, parentPropName?: string): void;
|
|
21
|
+
/**
|
|
22
|
+
* Whether to optimize internal `$ref` paths by following intermediate `$ref` chains and
|
|
23
|
+
* rewriting them to point directly to the final target. When `false`, intermediate `$ref`
|
|
24
|
+
* indirections are preserved as-is.
|
|
25
|
+
*
|
|
26
|
+
* Default: `true`
|
|
27
|
+
*/
|
|
28
|
+
optimizeInternalRefs?: boolean;
|
|
29
|
+
}
|
|
30
|
+
interface DereferenceOptions {
|
|
31
|
+
/**
|
|
32
|
+
* Determines whether circular `$ref` pointers are handled.
|
|
33
|
+
*
|
|
34
|
+
* If set to `false`, then a `ReferenceError` will be thrown if the schema contains any circular references.
|
|
35
|
+
*
|
|
36
|
+
* If set to `"ignore"`, then circular references will simply be ignored. No error will be thrown, but the `$Refs.circular` property will still be set to `true`.
|
|
37
|
+
*/
|
|
38
|
+
circular?: boolean | "ignore";
|
|
39
|
+
/**
|
|
40
|
+
* A function, called for each path, which can return true to stop this path and all
|
|
41
|
+
* subpaths from being dereferenced further. This is useful in schemas where some
|
|
42
|
+
* subpaths contain literal $ref keys that should not be dereferenced.
|
|
43
|
+
*/
|
|
44
|
+
excludedPathMatcher?(path: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Callback invoked during circular reference detection.
|
|
47
|
+
*
|
|
48
|
+
* @argument {string} path - The path that is circular (ie. the `$ref` string)
|
|
49
|
+
*/
|
|
50
|
+
onCircular?(path: string): void;
|
|
51
|
+
/**
|
|
52
|
+
* Callback invoked during dereferencing.
|
|
53
|
+
*
|
|
54
|
+
* @argument {string} path - The path being dereferenced (ie. the `$ref` string)
|
|
55
|
+
* @argument {JSONSchemaObject} value - The JSON-Schema that the `$ref` resolved to
|
|
56
|
+
* @argument {JSONSchemaObject} parent - The parent of the dereferenced object
|
|
57
|
+
* @argument {string} parentPropName - The prop name of the parent object whose value was dereferenced
|
|
58
|
+
*/
|
|
59
|
+
onDereference?(path: string, value: JSONSchemaObject, parent?: JSONSchemaObject, parentPropName?: string): void;
|
|
60
|
+
/**
|
|
61
|
+
* An array of properties to preserve when dereferencing a `$ref` schema. Useful if you want to
|
|
62
|
+
* enforce non-standard dereferencing behavior like present in the OpenAPI 3.1 specification where
|
|
63
|
+
* `description` and `summary` properties are preserved when alongside a `$ref` pointer.
|
|
64
|
+
*
|
|
65
|
+
* If none supplied then no properties will be preserved and the object will be fully replaced
|
|
66
|
+
* with the dereferenced `$ref`.
|
|
67
|
+
*/
|
|
68
|
+
preservedProperties?: string[];
|
|
69
|
+
/**
|
|
70
|
+
* Whether a reference should resolve relative to its directory/path, or from the cwd
|
|
71
|
+
*
|
|
72
|
+
* Default: `relative`
|
|
73
|
+
*/
|
|
74
|
+
externalReferenceResolution?: "relative" | "root";
|
|
75
|
+
/**
|
|
76
|
+
* Whether duplicate keys should be merged when dereferencing objects.
|
|
77
|
+
*
|
|
78
|
+
* Default: `true`
|
|
79
|
+
*/
|
|
80
|
+
mergeKeys?: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* The maximum recursion depth for dereferencing nested schemas.
|
|
83
|
+
* If the schema nesting exceeds this depth, a RangeError will be thrown
|
|
84
|
+
* with a descriptive message instead of crashing with a stack overflow.
|
|
85
|
+
*
|
|
86
|
+
* Default: 500
|
|
87
|
+
*/
|
|
88
|
+
maxDepth?: number;
|
|
89
|
+
/**
|
|
90
|
+
* Whether to create independent clones of each `$ref` target value instead of
|
|
91
|
+
* reusing the same JS object reference. When `false` (the default), multiple
|
|
92
|
+
* `$ref` pointers that resolve to the same value will all share the same object
|
|
93
|
+
* in memory, so modifying one will affect all others. When `true`, each `$ref`
|
|
94
|
+
* replacement gets its own deep copy, preventing unintended side effects from
|
|
95
|
+
* post-dereference mutations.
|
|
96
|
+
*
|
|
97
|
+
* Note: circular references are never cloned — they always maintain reference
|
|
98
|
+
* equality to correctly represent the circular structure.
|
|
99
|
+
*
|
|
100
|
+
* Default: `false`
|
|
101
|
+
*/
|
|
102
|
+
cloneReferences?: boolean;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Options that determine how JSON schemas are parsed, resolved, and dereferenced.
|
|
106
|
+
*
|
|
107
|
+
* @param [options] - Overridden options
|
|
108
|
+
* @class
|
|
109
|
+
*/
|
|
110
|
+
interface $RefParserOptions<S extends object = JSONSchema> {
|
|
111
|
+
/**
|
|
112
|
+
* The `parse` options determine how different types of files will be parsed.
|
|
113
|
+
*
|
|
114
|
+
* JSON Schema `$Ref` Parser comes with built-in JSON, YAML, plain-text, and binary parsers, any of which you can configure or disable. You can also add your own custom parsers if you want.
|
|
115
|
+
*/
|
|
116
|
+
parse: {
|
|
117
|
+
json?: Plugin | boolean;
|
|
118
|
+
yaml?: Plugin | boolean;
|
|
119
|
+
binary?: Plugin | boolean;
|
|
120
|
+
text?: Plugin | boolean;
|
|
121
|
+
[key: string]: Plugin | boolean | undefined;
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* The `resolve` options control how JSON Schema $Ref Parser will resolve file paths and URLs, and how those files will be read/downloaded.
|
|
125
|
+
*
|
|
126
|
+
* JSON Schema `$Ref` Parser comes with built-in support for HTTP and HTTPS, as well as support for local files (when running in Node.js). You can configure or disable either of these built-in resolvers. You can also add your own custom resolvers if you want.
|
|
127
|
+
*/
|
|
128
|
+
resolve: {
|
|
129
|
+
/**
|
|
130
|
+
* Determines whether external $ref pointers will be resolved. If this option is disabled, then external `$ref` pointers will simply be ignored.
|
|
131
|
+
*/
|
|
132
|
+
external?: boolean;
|
|
133
|
+
file?: Partial<ResolverOptions<S>> | boolean;
|
|
134
|
+
http?: HTTPResolverOptions<S> | boolean;
|
|
135
|
+
} & {
|
|
136
|
+
[key: string]: Partial<ResolverOptions<S>> | HTTPResolverOptions<S> | boolean | undefined;
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* By default, JSON Schema $Ref Parser throws the first error it encounters. Setting `continueOnError` to `true`
|
|
140
|
+
* causes it to keep processing as much as possible and then throw a single error that contains all errors
|
|
141
|
+
* that were encountered.
|
|
142
|
+
*/
|
|
143
|
+
continueOnError: boolean;
|
|
144
|
+
/**
|
|
145
|
+
* The `bundle` options control how JSON Schema `$Ref` Parser will process `$ref` pointers within the JSON schema.
|
|
146
|
+
*/
|
|
147
|
+
bundle: BundleOptions;
|
|
148
|
+
/**
|
|
149
|
+
* The `dereference` options control how JSON Schema `$Ref` Parser will dereference `$ref` pointers within the JSON schema.
|
|
150
|
+
*/
|
|
151
|
+
dereference: DereferenceOptions;
|
|
152
|
+
/**
|
|
153
|
+
* Whether to clone the schema before dereferencing it.
|
|
154
|
+
* This is useful when you want to dereference the same schema multiple times, but you don't want to modify the original schema.
|
|
155
|
+
* Default: `true` due to mutating the input being the default behavior historically
|
|
156
|
+
*/
|
|
157
|
+
mutateInputSchema?: boolean;
|
|
158
|
+
/**
|
|
159
|
+
* The maximum amount of time (in milliseconds) that JSON Schema $Ref Parser will spend dereferencing a single schema.
|
|
160
|
+
* It will throw a timeout error if the operation takes longer than this.
|
|
161
|
+
*/
|
|
162
|
+
timeoutMs?: number;
|
|
163
|
+
}
|
|
164
|
+
type ParserOptions<S extends object = JSONSchema> = DeepPartial<$RefParserOptions<S>>;
|
|
165
|
+
//#endregion
|
|
166
|
+
export { ParserOptions };
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import json_default from "./parsers/json.js";
|
|
2
|
+
import yaml_default from "./parsers/yaml.js";
|
|
3
|
+
import text_default from "./parsers/text.js";
|
|
4
|
+
import binary_default from "./parsers/binary.js";
|
|
5
|
+
import file_default from "./resolvers/file.js";
|
|
6
|
+
import http_default from "./resolvers/http.js";
|
|
7
|
+
//#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/options.js
|
|
8
|
+
const getJsonSchemaRefParserDefaultOptions = () => {
|
|
9
|
+
return {
|
|
10
|
+
/**
|
|
11
|
+
* Determines how different types of files will be parsed.
|
|
12
|
+
*
|
|
13
|
+
* You can add additional parsers of your own, replace an existing one with
|
|
14
|
+
* your own implementation, or disable any parser by setting it to false.
|
|
15
|
+
*/
|
|
16
|
+
parse: {
|
|
17
|
+
json: { ...json_default },
|
|
18
|
+
yaml: { ...yaml_default },
|
|
19
|
+
text: { ...text_default },
|
|
20
|
+
binary: { ...binary_default }
|
|
21
|
+
},
|
|
22
|
+
/**
|
|
23
|
+
* Determines how JSON References will be resolved.
|
|
24
|
+
*
|
|
25
|
+
* You can add additional resolvers of your own, replace an existing one with
|
|
26
|
+
* your own implementation, or disable any resolver by setting it to false.
|
|
27
|
+
*/
|
|
28
|
+
resolve: {
|
|
29
|
+
file: { ...file_default },
|
|
30
|
+
http: { ...http_default },
|
|
31
|
+
/**
|
|
32
|
+
* Determines whether external $ref pointers will be resolved.
|
|
33
|
+
* If this option is disabled, then none of above resolvers will be called.
|
|
34
|
+
* Instead, external $ref pointers will simply be ignored.
|
|
35
|
+
*
|
|
36
|
+
* @type {boolean}
|
|
37
|
+
*/
|
|
38
|
+
external: true
|
|
39
|
+
},
|
|
40
|
+
/**
|
|
41
|
+
* By default, JSON Schema $Ref Parser throws the first error it encounters. Setting `continueOnError` to `true`
|
|
42
|
+
* causes it to keep processing as much as possible and then throw a single error that contains all errors
|
|
43
|
+
* that were encountered.
|
|
44
|
+
*/
|
|
45
|
+
continueOnError: false,
|
|
46
|
+
/**
|
|
47
|
+
* Determines the types of JSON references that are allowed.
|
|
48
|
+
*/
|
|
49
|
+
bundle: {
|
|
50
|
+
/**
|
|
51
|
+
* A function, called for each path, which can return true to stop this path and all
|
|
52
|
+
* subpaths from being processed further. This is useful in schemas where some
|
|
53
|
+
* subpaths contain literal $ref keys that should not be changed.
|
|
54
|
+
*
|
|
55
|
+
* @type {function}
|
|
56
|
+
*/
|
|
57
|
+
excludedPathMatcher: () => false },
|
|
58
|
+
/**
|
|
59
|
+
* Determines the types of JSON references that are allowed.
|
|
60
|
+
*/
|
|
61
|
+
dereference: {
|
|
62
|
+
/**
|
|
63
|
+
* Dereference circular (recursive) JSON references?
|
|
64
|
+
* If false, then a {@link ReferenceError} will be thrown if a circular reference is found.
|
|
65
|
+
* If "ignore", then circular references will not be dereferenced.
|
|
66
|
+
*
|
|
67
|
+
* @type {boolean|string}
|
|
68
|
+
*/
|
|
69
|
+
circular: true,
|
|
70
|
+
/**
|
|
71
|
+
* A function, called for each path, which can return true to stop this path and all
|
|
72
|
+
* subpaths from being dereferenced further. This is useful in schemas where some
|
|
73
|
+
* subpaths contain literal $ref keys that should not be dereferenced.
|
|
74
|
+
*
|
|
75
|
+
* @type {function}
|
|
76
|
+
*/
|
|
77
|
+
excludedPathMatcher: () => false,
|
|
78
|
+
referenceResolution: "relative",
|
|
79
|
+
mergeKeys: true
|
|
80
|
+
},
|
|
81
|
+
mutateInputSchema: true
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
const getNewOptions = (options) => {
|
|
85
|
+
const newOptions = getJsonSchemaRefParserDefaultOptions();
|
|
86
|
+
if (options) merge(newOptions, options);
|
|
87
|
+
return newOptions;
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Merges the properties of the source object into the target object.
|
|
91
|
+
*
|
|
92
|
+
* @param target - The object that we're populating
|
|
93
|
+
* @param source - The options that are being merged
|
|
94
|
+
* @returns
|
|
95
|
+
*/
|
|
96
|
+
function merge(target, source) {
|
|
97
|
+
if (isMergeable(source)) {
|
|
98
|
+
const keys = Object.keys(source).filter((key) => ![
|
|
99
|
+
"__proto__",
|
|
100
|
+
"constructor",
|
|
101
|
+
"prototype"
|
|
102
|
+
].includes(key));
|
|
103
|
+
for (let i = 0; i < keys.length; i++) {
|
|
104
|
+
const key = keys[i];
|
|
105
|
+
const sourceSetting = source[key];
|
|
106
|
+
const targetSetting = target[key];
|
|
107
|
+
if (isMergeable(sourceSetting)) target[key] = merge(targetSetting || {}, sourceSetting);
|
|
108
|
+
else if (sourceSetting !== void 0) target[key] = sourceSetting;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return target;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Determines whether the given value can be merged,
|
|
115
|
+
* or if it is a scalar value that should just override the target value.
|
|
116
|
+
*
|
|
117
|
+
* @param val
|
|
118
|
+
* @returns
|
|
119
|
+
*/
|
|
120
|
+
function isMergeable(val) {
|
|
121
|
+
return val && typeof val === "object" && !Array.isArray(val) && !(val instanceof RegExp) && !(val instanceof Date);
|
|
122
|
+
}
|
|
123
|
+
//#endregion
|
|
124
|
+
export { getJsonSchemaRefParserDefaultOptions, getNewOptions };
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { getExtension } from "./util/url.js";
|
|
2
|
+
import { ParserError, ResolverError, UnmatchedParserError, UnmatchedResolverError, isHandledError } from "./util/errors.js";
|
|
3
|
+
import { registerSchemaResources, usesDynamicIdScope } from "./util/schema-resources.js";
|
|
4
|
+
import { all, filter, run, sort } from "./util/plugins.js";
|
|
5
|
+
//#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/parse.js
|
|
6
|
+
/**
|
|
7
|
+
* Reads and parses the specified file path or URL.
|
|
8
|
+
*/
|
|
9
|
+
async function parse(target, $refs, options) {
|
|
10
|
+
let path = typeof target === "string" ? target : target.url;
|
|
11
|
+
const baseUrl = typeof target === "string" ? void 0 : target.baseUrl;
|
|
12
|
+
let reference = typeof target === "string" ? void 0 : target.reference;
|
|
13
|
+
const hashIndex = path.indexOf("#");
|
|
14
|
+
let hash = "";
|
|
15
|
+
if (hashIndex >= 0) {
|
|
16
|
+
hash = path.substring(hashIndex);
|
|
17
|
+
path = path.substring(0, hashIndex);
|
|
18
|
+
}
|
|
19
|
+
if (reference) {
|
|
20
|
+
const referenceHashIndex = reference.indexOf("#");
|
|
21
|
+
if (referenceHashIndex >= 0) reference = reference.substring(0, referenceHashIndex);
|
|
22
|
+
}
|
|
23
|
+
const $ref = $refs._add(path);
|
|
24
|
+
const file = {
|
|
25
|
+
url: path,
|
|
26
|
+
hash,
|
|
27
|
+
extension: getExtension(path),
|
|
28
|
+
...reference !== void 0 ? { reference } : {},
|
|
29
|
+
...baseUrl !== void 0 ? { baseUrl } : {}
|
|
30
|
+
};
|
|
31
|
+
try {
|
|
32
|
+
const resolver = await readFile(file, options, $refs);
|
|
33
|
+
$ref.pathType = resolver.plugin.name;
|
|
34
|
+
file.data = resolver.result;
|
|
35
|
+
const parser = await parseFile(file, options, $refs);
|
|
36
|
+
$ref.value = parser.result;
|
|
37
|
+
$ref.dynamicIdScope = usesDynamicIdScope($ref.value);
|
|
38
|
+
registerSchemaResources($refs, $ref.path, $ref.value, $ref.pathType, $ref.dynamicIdScope);
|
|
39
|
+
return parser.result;
|
|
40
|
+
} catch (err) {
|
|
41
|
+
if (isHandledError(err)) $ref.value = err;
|
|
42
|
+
throw err;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Reads the given file, using the configured resolver plugins
|
|
47
|
+
*
|
|
48
|
+
* @param file - An object containing information about the referenced file
|
|
49
|
+
* @param file.url - The full URL of the referenced file
|
|
50
|
+
* @param file.extension - The lowercased file extension (e.g. ".txt", ".html", etc.)
|
|
51
|
+
* @param options
|
|
52
|
+
* @param $refs
|
|
53
|
+
* @returns
|
|
54
|
+
* The promise resolves with the raw file contents and the resolver that was used.
|
|
55
|
+
*/
|
|
56
|
+
async function readFile(file, options, $refs) {
|
|
57
|
+
let resolvers = all(options.resolve);
|
|
58
|
+
resolvers = filter(resolvers, "canRead", file, void 0, $refs);
|
|
59
|
+
sort(resolvers);
|
|
60
|
+
try {
|
|
61
|
+
return await run(resolvers, "read", file, $refs);
|
|
62
|
+
} catch (err) {
|
|
63
|
+
if (!err && options.continueOnError) throw new UnmatchedResolverError(file.url);
|
|
64
|
+
else if (!err || !("error" in err)) throw new SyntaxError(`Unable to resolve $ref pointer "${file.url}"`, { cause: err });
|
|
65
|
+
else if (err.error instanceof ResolverError) throw err.error;
|
|
66
|
+
else throw new ResolverError(err, file.url);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Parses the given file's contents, using the configured parser plugins.
|
|
71
|
+
*
|
|
72
|
+
* @param file - An object containing information about the referenced file
|
|
73
|
+
* @param file.url - The full URL of the referenced file
|
|
74
|
+
* @param file.extension - The lowercased file extension (e.g. ".txt", ".html", etc.)
|
|
75
|
+
* @param file.data - The file contents. This will be whatever data type was returned by the resolver
|
|
76
|
+
* @param options
|
|
77
|
+
* @param $refs
|
|
78
|
+
*
|
|
79
|
+
* @returns
|
|
80
|
+
* The promise resolves with the parsed file contents and the parser that was used.
|
|
81
|
+
*/
|
|
82
|
+
async function parseFile(file, options, $refs) {
|
|
83
|
+
const allParsers = all(options.parse);
|
|
84
|
+
const filteredParsers = filter(allParsers, "canParse", file);
|
|
85
|
+
const parsers = filteredParsers.length > 0 ? filteredParsers : allParsers;
|
|
86
|
+
sort(parsers);
|
|
87
|
+
try {
|
|
88
|
+
const parser = await run(parsers, "parse", file, $refs);
|
|
89
|
+
if (!parser.plugin.allowEmpty && isEmpty(parser.result)) throw new SyntaxError(`Error parsing "${file.url}" as ${parser.plugin.name}. \nParsed value is empty`);
|
|
90
|
+
else return parser;
|
|
91
|
+
} catch (err) {
|
|
92
|
+
if (!err && options.continueOnError) throw new UnmatchedParserError(file.url);
|
|
93
|
+
else if (err && err.message && err.message.startsWith("Error parsing")) throw err;
|
|
94
|
+
else if (!err || !("error" in err)) throw new SyntaxError(`Unable to parse ${file.url}`, { cause: err });
|
|
95
|
+
else if (err.error instanceof ParserError) throw err.error;
|
|
96
|
+
else throw new ParserError(err.error.message, file.url);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Determines whether the parsed value is "empty".
|
|
101
|
+
*
|
|
102
|
+
* @param value
|
|
103
|
+
* @returns
|
|
104
|
+
*/
|
|
105
|
+
function isEmpty(value) {
|
|
106
|
+
return value === void 0 || typeof value === "object" && Object.keys(value).length === 0 || typeof value === "string" && value.trim().length === 0 || Buffer.isBuffer(value) && value.length === 0;
|
|
107
|
+
}
|
|
108
|
+
//#endregion
|
|
109
|
+
export { parse as default };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#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/parsers/binary.js
|
|
2
|
+
const BINARY_REGEXP = /\.(jpeg|jpg|gif|png|bmp|ico)$/i;
|
|
3
|
+
var binary_default = {
|
|
4
|
+
/**
|
|
5
|
+
* The order that this parser will run, in relation to other parsers.
|
|
6
|
+
*/
|
|
7
|
+
order: 400,
|
|
8
|
+
/**
|
|
9
|
+
* Whether to allow "empty" files (zero bytes).
|
|
10
|
+
*/
|
|
11
|
+
allowEmpty: true,
|
|
12
|
+
/**
|
|
13
|
+
* Determines whether this parser can parse a given file reference.
|
|
14
|
+
* Parsers that return true will be tried, in order, until one successfully parses the file.
|
|
15
|
+
* Parsers that return false will be skipped, UNLESS all parsers returned false, in which case
|
|
16
|
+
* every parser will be tried.
|
|
17
|
+
*/
|
|
18
|
+
canParse(file) {
|
|
19
|
+
return Buffer.isBuffer(file.data) && BINARY_REGEXP.test(file.url);
|
|
20
|
+
},
|
|
21
|
+
/**
|
|
22
|
+
* Parses the given data as a Buffer (byte array).
|
|
23
|
+
*/
|
|
24
|
+
parse(file) {
|
|
25
|
+
if (Buffer.isBuffer(file.data)) return file.data;
|
|
26
|
+
else return Buffer.from(file.data);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
//#endregion
|
|
30
|
+
export { binary_default as default };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ParserError } from "../util/errors.js";
|
|
2
|
+
//#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/parsers/json.js
|
|
3
|
+
var json_default = {
|
|
4
|
+
/**
|
|
5
|
+
* The order that this parser will run, in relation to other parsers.
|
|
6
|
+
*/
|
|
7
|
+
order: 100,
|
|
8
|
+
/**
|
|
9
|
+
* Whether to allow "empty" files. This includes zero-byte files, as well as empty JSON objects.
|
|
10
|
+
*/
|
|
11
|
+
allowEmpty: true,
|
|
12
|
+
/**
|
|
13
|
+
* Determines whether this parser can parse a given file reference.
|
|
14
|
+
* Parsers that match will be tried, in order, until one successfully parses the file.
|
|
15
|
+
* Parsers that don't match will be skipped, UNLESS none of the parsers match, in which case
|
|
16
|
+
* every parser will be tried.
|
|
17
|
+
*/
|
|
18
|
+
canParse: ".json",
|
|
19
|
+
/**
|
|
20
|
+
* Allow JSON files with byte order marks (BOM)
|
|
21
|
+
*/
|
|
22
|
+
allowBOM: true,
|
|
23
|
+
/**
|
|
24
|
+
* Parses the given file as JSON
|
|
25
|
+
*/
|
|
26
|
+
async parse(file) {
|
|
27
|
+
let data = file.data;
|
|
28
|
+
if (Buffer.isBuffer(data)) data = data.toString();
|
|
29
|
+
if (typeof data === "string") if (data.trim().length === 0) return;
|
|
30
|
+
else try {
|
|
31
|
+
return JSON.parse(data);
|
|
32
|
+
} catch (e) {
|
|
33
|
+
if (this.allowBOM) try {
|
|
34
|
+
const firstCurlyBrace = data.indexOf("{");
|
|
35
|
+
data = data.slice(firstCurlyBrace);
|
|
36
|
+
return JSON.parse(data);
|
|
37
|
+
} catch (e) {
|
|
38
|
+
throw new ParserError(e.message, file.url);
|
|
39
|
+
}
|
|
40
|
+
throw new ParserError(e.message, file.url);
|
|
41
|
+
}
|
|
42
|
+
else return data;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
//#endregion
|
|
46
|
+
export { json_default as default };
|