UNPKG

@convo-lang/convo-lang

Version:
75 lines 2.43 kB
"use strict"; 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