osr-mono/packages/osr-cli-commons/lib/index.js
2025-01-29 17:48:22 +01:00

154 lines
12 KiB
JavaScript

"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseCustomUrl = exports.schemeHandlers = exports.handleFs = exports.types = exports.get_var_ex = exports.enumerateHelpStrings = exports.zodToJsonSchema2 = void 0;
exports.schemaFields = schemaFields;
const path = require("path");
const env = require("env-var");
const zod_1 = require("zod");
const read_1 = require("@plastichub/fs/read");
const exists_1 = require("@plastichub/fs/exists");
const osr_commons_1 = require("@plastichub/osr-commons");
const scheme_1 = require("./scheme");
const each_1 = require("./each");
const osr_commons_2 = require("@plastichub/osr-commons");
const zodToJsonSchema2 = (zodSchema) => {
const shape = zodSchema.shape;
const jsonSchema = {
$schema: "http://json-schema.org/draft-07/schema#",
type: "object",
properties: {},
required: []
};
for (const key in shape) {
const zodField = shape[key];
const fieldDef = zodField._def;
const innerType = fieldDef.innerType;
if (innerType === undefined) {
continue;
}
let propertySchema = {};
// Determine JSON Schema type based on Zod type
if (zodField instanceof zod_1.z.ZodString) {
propertySchema.type = "string";
}
else if (zodField instanceof zod_1.z.ZodNumber) {
propertySchema.type = "number";
}
else if (zodField instanceof zod_1.z.ZodBoolean) {
propertySchema.type = "boolean";
}
else if (zodField instanceof zod_1.z.ZodArray) {
propertySchema.type = "array";
propertySchema.items = (0, exports.zodToJsonSchema2)(zod_1.z.object({ item: zodField.element })).properties.item;
}
else if (zodField instanceof zod_1.z.ZodObject) {
propertySchema = (0, exports.zodToJsonSchema2)(zodField);
}
let type;
if (innerType._def.typeName === 'ZodString') {
type = 'string';
}
else if (innerType._def.typeName === 'ZodBoolean') {
type = 'boolean';
}
else if (innerType._def.typeName === 'ZodNumber') {
type = 'number';
}
let defaultValue = fieldDef.defaultValue;
defaultValue = defaultValue !== undefined ? defaultValue() : undefined;
if (type === 'boolean') {
defaultValue = defaultValue === 'true';
}
if (fieldDef.defaultValue !== undefined) {
propertySchema.default = defaultValue;
}
if (!zodField.isOptional()) {
jsonSchema.required.push(key);
}
jsonSchema.properties[key] = propertySchema;
}
// Remove "required" if there are no required properties
if (jsonSchema.required.length === 0) {
delete jsonSchema.required;
}
return jsonSchema;
};
exports.zodToJsonSchema2 = zodToJsonSchema2;
const enumerateHelpStrings = (schema, path = [], logger) => {
if (schema instanceof zod_1.ZodObject) {
for (const key in schema.shape) {
const nestedSchema = schema.shape[key];
(0, exports.enumerateHelpStrings)(nestedSchema, [...path, key], logger);
}
}
else {
const description = schema._def.description;
if (description) {
logger.debug(`\t ${path.join('.')}: ${description}`);
}
}
};
exports.enumerateHelpStrings = enumerateHelpStrings;
const get_var_ex = (key = '') => env.get(key).asString() || env.get(key.replace(/-/g, '_')).asString();
exports.get_var_ex = get_var_ex;
function schemaFields(schema) {
return Object.keys(schema.shape);
}
const types = () => (0, osr_commons_2.generate_interfaces)([(0, each_1.zodSchema)()], 'src/lib/types.ts');
exports.types = types;
/*
export const handleOsrAi = async (query: string, params: URLSearchParams): Promise<string | object> => {
query = decodeURIComponent(query)
const config = CONFIG_DEFAULT() as any
const options: IOptionsEx = {
model: params.get('model'),
query: decodeURIComponent(query),
logLevel: params.get('logLevel') || 'warn',
api_key: process.env.OPENAI_API_KEY || config.openai.key,
filters: params.get('filters')
}
let ret = await prompt(options)
return ret
}
*/
const handleFs = (path) => __awaiter(void 0, void 0, void 0, function* () {
return (0, read_1.sync)(path);
});
exports.handleFs = handleFs;
exports.schemeHandlers = {
// 'osr-ai': handleOsrAi,
'fs': exports.handleFs,
'default': exports.handleFs
};
const parseCustomUrl = (url) => __awaiter(void 0, void 0, void 0, function* () {
if (!url.includes('://')) {
const _path = path.resolve((0, osr_commons_1.resolve)(url));
if ((0, exists_1.sync)(_path) && (0, osr_commons_1.isFile)(_path)) {
return (0, read_1.sync)(_path, 'json');
}
}
const parsedUrl = new URL((0, scheme_1.escapeFirstUrlSegment)(url));
let scheme = parsedUrl.protocol.replace(':', '') || 'default';
const handler = exports.schemeHandlers[scheme];
let result = null;
if (handler) {
if (scheme === 'osr-ai') {
result = yield handler(parsedUrl.hostname, parsedUrl.searchParams);
}
else {
result = yield handler(parsedUrl.pathname);
}
}
return result || url;
});
exports.parseCustomUrl = parseCustomUrl;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQXVGQSxvQ0FFQztBQXpGRCw2QkFBNEI7QUFDNUIsK0JBQThCO0FBQzlCLDZCQUEyRDtBQUUzRCw4Q0FBa0Q7QUFDbEQsa0RBQXNEO0FBQ3RELHlEQUF5RDtBQUN6RCxxQ0FBZ0Q7QUFDaEQsaUNBQW1EO0FBQ25ELHlEQUE2RDtBQUN0RCxNQUFNLGdCQUFnQixHQUFHLENBQUMsU0FBeUIsRUFBRSxFQUFFO0lBQzFELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7SUFDOUIsTUFBTSxVQUFVLEdBQVE7UUFDcEIsT0FBTyxFQUFFLHlDQUF5QztRQUNsRCxJQUFJLEVBQUUsUUFBUTtRQUNkLFVBQVUsRUFBRSxFQUFFO1FBQ2QsUUFBUSxFQUFFLEVBQUU7S0FDZixDQUFBO0lBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN0QixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFlLENBQUE7UUFDekMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQTtRQUM5QixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFBO1FBQ3BDLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzFCLFNBQVE7UUFDWixDQUFDO1FBQ0QsSUFBSSxjQUFjLEdBQVEsRUFBRSxDQUFBO1FBRTVCLCtDQUErQztRQUMvQyxJQUFJLFFBQVEsWUFBWSxPQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEMsY0FBYyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDbkMsQ0FBQzthQUFNLElBQUksUUFBUSxZQUFZLE9BQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN6QyxjQUFjLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUNuQyxDQUFDO2FB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