@convo-lang/convo-lang
Version:
The language of AI
75 lines • 2.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.convoPipeScopeFunction = void 0;
const common_1 = require("@iyio/common");
const convo_lib_1 = require("./convo-lib");
const convo_types_1 = require("./convo-types");
const pipeValues = (values) => {
if (values.length < 2) {
return values[0];
}
let prev = values[0];
for (let i = 1; i < values.length; i++) {
const value = values[i];
if ((0, convo_types_1.isConvoPipeTarget)(value)) {
const result = value.convoPipeSink(prev);
if ((0, common_1.isPromise)(result)) {
return continuePipeValuesAsync(result, i + 1, values);
}
prev = result;
}
else if (value && (typeof prev === 'string') && (typeof value === 'object')) { // replace map
for (const e in value) {
prev = prev.split(e).join(value[e]?.toString() ?? '');
}
}
else {
prev = value;
}
}
return prev;
};
const continuePipeValuesAsync = async (firstPromise, index, values) => {
let prev = await firstPromise;
for (let i = index; i < values.length; i++) {
const value = values[i];
if ((0, convo_types_1.isConvoPipeTarget)(value)) {
prev = await value.convoPipeSink(prev);
}
else if (value && (typeof prev === 'string') && (typeof value === 'object')) { // replace map
for (const e in value) {
prev = prev.split(e).join(value[e]?.toString() ?? '');
}
}
else {
prev = value;
}
}
return prev;
};
const pipeValueAsync = async (values) => {
return pipeValues(await Promise.all(values));
};
exports.convoPipeScopeFunction = (0, convo_lib_1.createConvoScopeFunction)(scope => {
if (!scope.paramValues) {
return undefined;
}
if (scope.paramValues.length < 2) {
return scope.paramValues[0];
}
let hasPromises = false;
for (let i = 0; i < scope.paramValues?.length; i++) {
const value = scope.paramValues[i];
if ((0, common_1.isPromise)(value)) {
hasPromises = true;
break;
}
}
if (hasPromises) {
return pipeValueAsync(scope.paramValues);
}
else {
return pipeValues(scope.paramValues);
}
});
//# sourceMappingURL=convo-pipe.js.map