UNPKG

@llamaindex/ui

Version:

A comprehensive UI component library built with React, TypeScript, and Tailwind CSS for LlamaIndex applications

184 lines (181 loc) 5.95 kB
import { __spreadValues, __spreadProps } from './chunk-FWCSY2DS.mjs'; import { z } from 'zod/v4'; function zodToJsonSchema(zodSchema, options = {}) { const jsonSchema = z.toJSONSchema(zodSchema, { reused: "inline" }); return modifyJsonSchema(jsonSchema, options); } function modifyJsonSchema(jsonSchema, { selectFields, firstFields = [], lastFields = [], hideFields = [], dereference = true }) { let jsonObjectSchema = jsonSchema; if (dereference) { jsonObjectSchema = derefLocalRefs(jsonObjectSchema); } const updatedProperties = __spreadValues({}, jsonObjectSchema.properties); const exclude = new Set(hideFields); const shiftedFields = new Set((firstFields || []).concat(lastFields || [])); const rawOrder = (firstFields || []).concat( (selectFields != null ? selectFields : Object.keys(updatedProperties)).filter( (x) => !shiftedFields.has(x) ) ).concat(lastFields || []); const orderedAndFiltered = rawOrder.filter((field) => { if (exclude.has(field)) { return false; } exclude.add(field); return true; }); const result = __spreadProps(__spreadValues({}, jsonObjectSchema), { properties: orderedAndFiltered.reduce( (acc, field) => { const key = String(field); if (updatedProperties[key] !== void 0) { acc[key] = updatedProperties[key]; } return acc; }, {} ) }); return result; } function isNullable(schema) { const { isNullable: isNullable2 } = extractFirstNotNullableSchema(schema); return isNullable2; } function isSimpleTypeSchema(schema) { return schema.type === "string" || schema.type === "number" || schema.type === "integer" || schema.type === "boolean" || schema.type === "null"; } function getSchemaType(schema) { var _a, _b, _c, _d; if (typeof schema !== "object" || schema === null) { return "unknown"; } if (schema.type === void 0 && "anyOf" in schema) { const unionSchema = schema; const nonNullSchema = (_a = unionSchema.anyOf) == null ? void 0 : _a.find( (subSchema) => subSchema.type !== "null" ); if (nonNullSchema) { return getSchemaType(nonNullSchema); } return ((_b = unionSchema.anyOf) == null ? void 0 : _b[0]) ? getSchemaType(unionSchema.anyOf[0]) : "unknown"; } if (schema.type === void 0 && "allOf" in schema) { const intersectSchema = schema; const nonNullSchema = (_c = intersectSchema.allOf) == null ? void 0 : _c.find( (subSchema) => subSchema.type !== "null" ); if (nonNullSchema) { return getSchemaType(nonNullSchema); } return ((_d = intersectSchema.allOf) == null ? void 0 : _d[0]) ? getSchemaType(intersectSchema.allOf[0]) : "unknown"; } if (!schema.type) { return "unknown"; } return schema.type; } function isArraySchema(schema) { return schema.type === "array"; } function extractFirstNotNullableSchema(schema) { var _a, _b, _c, _d, _e; if (schema.type === void 0 && schema.anyOf) { const anyNullable = (_b = (_a = schema.anyOf) == null ? void 0 : _a.some( (subSchema) => subSchema.type === "null" )) != null ? _b : false; if (anyNullable) { return { isNullable: true, schema: (_c = schema.anyOf) == null ? void 0 : _c.find( (subSchema) => subSchema.type !== "null" ) }; } return { isNullable: false, schema }; } if (schema.type === void 0 && schema.allOf) { const allNullable = (_e = (_d = schema.allOf) == null ? void 0 : _d.some( (subSchema) => subSchema.type === "null" )) != null ? _e : false; if (allNullable) { return { isNullable: true, schema: void 0 }; } return { isNullable: false, schema }; } const isNullType = schema.type === "null"; return { isNullable: isNullType, schema: isNullType ? void 0 : schema }; } function isObjectSchema(schema) { return schema.type === "object"; } function derefLocalRefs(schema) { const root = schema; const cache = /* @__PURE__ */ new Map(); function cloneAndDeref(node, trail = []) { if (node && typeof node === "object") { const key = node; if (cache.has(key)) return cache.get(key); if (!Array.isArray(node)) { const obj = node; const refValue = obj["$ref"]; if (typeof refValue === "string" && refValue.startsWith("#/")) { const target = resolvePointer(root, refValue); const rest = __spreadValues({}, obj); delete rest["$ref"]; const expanded = cloneAndDeref(target, trail.concat([refValue])); return cloneAndDeref( __spreadValues(__spreadValues({}, expanded), rest), trail ); } } const out = Array.isArray(node) ? [] : {}; cache.set(key, out); for (const [k, v] of Object.entries(node)) { out[k] = cloneAndDeref( v, trail.concat([k]) ); } return out; } return node; } return cloneAndDeref(schema); } function resolvePointer(obj, pointer) { const parts = pointer.slice(2).split("/").map(unescapeToken); let cur = obj; for (const p of parts) { if (cur == null || typeof cur !== "object") { throw new Error(`Pointer ${pointer} not found at "${p}"`); } if (Array.isArray(cur)) { const index = Number(p); if (!Number.isInteger(index) || index < 0 || index >= cur.length) { throw new Error(`Pointer ${pointer} not found at "${p}"`); } cur = cur[index]; } else { const objCur = cur; if (!(p in objCur)) { throw new Error(`Pointer ${pointer} not found at "${p}"`); } cur = objCur[p]; } } return cur; } function unescapeToken(t) { return t.replace(/~1/g, "/").replace(/~0/g, "~"); } export { derefLocalRefs, extractFirstNotNullableSchema, getSchemaType, isArraySchema, isNullable, isObjectSchema, isSimpleTypeSchema, modifyJsonSchema, zodToJsonSchema };