@snups/rjsf-utils
Version:
Utility functions for @snups/rjsf-core
42 lines (41 loc) • 3.12 kB
TypeScript
import { GenericObjectType, RJSFSchema, StrictRJSFSchema } from './types.js';
/** Parses a JSONSchema and makes all references absolute with respect to
* the `baseURI` argument
* @param schema - The schema to be processed
* @param baseURI - The base URI to be used for resolving relative references
*/
export declare function makeAllReferencesAbsolute<S extends StrictRJSFSchema = RJSFSchema>(schema: S, baseURI: string): S;
/** Splits out the value at the `key` in `object` from the `object`, returning an array that contains in the first
* location, the `object` minus the `key: value` and in the second location the `value`.
*
* @param key - The key from the object to extract
* @param object - The object from which to extract the element
* @returns - An array with the first value being the object minus the `key` element and the second element being the
* value from `object[key]`
*/
export declare function splitKeyElementFromObject(key: string, object: GenericObjectType): any[];
/** Given the name of a `$ref` from within a schema, using the `rootSchema`, recursively look up and return the
* sub-schema using the path provided by that reference. If `#` is not the first character of the reference, the path
* does not exist in the schema, or the reference resolves circularly back to itself, then throw an Error.
* Otherwise return the sub-schema. Also deals with nested `$ref`s in the sub-schema.
*
* @param $ref - The ref string for which the schema definition is desired
* @param [rootSchema={}] - The root schema in which to search for the definition
* @param recurseList - List of $refs already resolved to prevent recursion
* @param [baseURI=rootSchema['$id']] - The base URI to be used for resolving relative references
* @returns - The sub-schema within the `rootSchema` which matches the `$ref` if it exists
* @throws - Error indicating that no schema for that reference could be resolved
*/
export declare function findSchemaDefinitionRecursive<S extends StrictRJSFSchema = RJSFSchema>($ref?: string, rootSchema?: S, recurseList?: string[], baseURI?: string | undefined): S;
/** Given the name of a `$ref` from within a schema, using the `rootSchema`, look up and return the sub-schema using the
* path provided by that reference. If `#` is not the first character of the reference, the path does not exist in
* the schema, or the reference resolves circularly back to itself, then throw an Error. Otherwise return the
* sub-schema. Also deals with nested `$ref`s in the sub-schema.
*
* @param $ref - The ref string for which the schema definition is desired
* @param [rootSchema={}] - The root schema in which to search for the definition
* @param [baseURI=rootSchema['$id']] - The base URI to be used for resolving relative references
* @returns - The sub-schema within the `rootSchema` which matches the `$ref` if it exists
* @throws - Error indicating that no schema for that reference could be resolved
*/
export default function findSchemaDefinition<S extends StrictRJSFSchema = RJSFSchema>($ref?: string, rootSchema?: S, baseURI?: string | undefined): S;