@nlighten/json-transform-core
Version:
Core types and utilities for handling JSON transformers
56 lines • 2.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const json_schema_utils_1 = require("@nlighten/json-schema-utils");
const getDefaultValues = (args) => {
const defaultValues = {};
if (Array.isArray(args)) {
for (let i = 0; i < args.length; i++) {
const arg = args[i];
if (arg.default !== undefined) {
defaultValues[arg.name] = arg.default;
}
}
}
return defaultValues;
};
function parseDefinitions(functions, custom) {
const result = structuredClone(functions);
const aliasedFunctions = {};
for (const f in functions) {
const func = result[f];
if (func.aliases) {
for (let i = 0; i < func.aliases.length; i++) {
const aliased = structuredClone(func);
aliased.aliasTo = f;
aliasedFunctions[func.aliases[i]] = aliased;
}
}
if (func.outputSchema) {
func.parsedOutputSchema = json_schema_utils_1.JSONSchemaUtils.parse(func.outputSchema);
}
func.defaultValues = getDefaultValues(func.arguments);
if (custom) {
func.custom = true;
}
if (Array.isArray(func.subfunctions)) {
for (let i = 0; i < func.subfunctions.length; i++) {
const schemaOverride = func.subfunctions[i].then.outputSchema ?? func.outputSchema;
func.subfunctions[i] = {
if: func.subfunctions[i].if,
then: {
outputSchema: func.outputSchema,
...func.subfunctions[i].then,
parsedOutputSchema: schemaOverride && json_schema_utils_1.JSONSchemaUtils.parse(schemaOverride),
defaultValues: getDefaultValues(func.subfunctions[i].then.arguments),
},
};
}
}
}
for (const f in aliasedFunctions) {
result[f] = aliasedFunctions[f];
}
return result;
}
exports.default = parseDefinitions;
//# sourceMappingURL=parseDefinitions.js.map