call-ai
Version:
Lightweight library for making AI API calls with streaming support
50 lines • 1.85 kB
JavaScript
import { URI } from "@adviser/cement";
export function recursivelyAddAdditionalProperties(schema) {
const result = { ...schema };
if (result.type === "object") {
if (result.additionalProperties === undefined) {
result.additionalProperties = false;
}
if (result.properties) {
result.properties = { ...result.properties };
if (result.required === undefined) {
result.required = Object.keys(result.properties);
}
Object.keys(result.properties).forEach((key) => {
const prop = result.properties[key];
if (prop && typeof prop === "object") {
const oprop = prop;
result.properties[key] = recursivelyAddAdditionalProperties(oprop);
if (oprop.type === "object" && oprop.properties) {
oprop.required = Object.keys(oprop.properties);
}
}
});
}
}
if (result.type === "array" && result.items && typeof result.items === "object") {
result.items = recursivelyAddAdditionalProperties(result.items);
if (result.items.type === "object" && result.items.properties) {
result.items.required = Object.keys(result.items.properties);
}
}
return result;
}
export function entriesHeaders(headers) {
const entries = [];
headers.forEach((value, key) => {
entries.push([key, value]);
});
return entries;
}
export function callAiFetch(options) {
return options.mock?.fetch || globalThis.fetch;
}
export function joinUrlParts(baseUrl, path) {
if (!baseUrl)
return path;
if (!path)
return baseUrl;
return URI.from(baseUrl).build().resolve(path).toString();
}
//# sourceMappingURL=utils.js.map