"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createTask = exports.runAction = void 0;
const runAction = async (options) => {
    if (options.input) {
        if (options.input instanceof Function) {
            const prev = await options.effects.action.getInput({
                // packageId: options.packageId,
                actionId: options.actionId,
            });
            const input = options.input(prev
                ? { spec: prev.spec, value: prev.value }
                : undefined);
            return options.effects.action.run({
                // packageId: options.packageId,
                actionId: options.actionId,
                input,
            });
        }
        else {
            return options.effects.action.run({
                // packageId: options.packageId,
                actionId: options.actionId,
                input: options.input,
            });
        }
    }
    else {
        return options.effects.action.run({
            //   packageId: options.packageId,
            actionId: options.actionId,
        });
    }
};
exports.runAction = runAction;
const _validate = {};
/** Recursively converts undefined values to null so they survive JSON serialization */
function undefinedToNull(obj) {
    if (obj === undefined)
        return null;
    if (obj === null || typeof obj !== 'object')
        return obj;
    if (Array.isArray(obj))
        return obj.map(undefinedToNull);
    const result = {};
    for (const [k, v] of Object.entries(obj)) {
        result[k] = undefinedToNull(v);
    }
    return result;
}
const createTask = (options) => {
    const request = options.options || {};
    const actionId = options.action.id;
    const input = 'input' in request && request.input
        ? { ...request.input, value: undefinedToNull(request.input.value) }
        : request.input;
    const req = {
        ...request,
        input,
        actionId,
        packageId: options.packageId,
        action: undefined,
        severity: options.severity,
        replayId: request.replayId || `${options.packageId}:${actionId}`,
    };
    delete req.action;
    return options.effects.action.createTask(req);
};
exports.createTask = createTask;
//# sourceMappingURL=index.js.map