"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ListAppend = void 0;
const index_js_1 = require("../model/index.js");
class ListAppend extends index_js_1.Pipe {
    async apply(inputSet, ctx) {
        const pipeline = this.pipeline;
        const scope = await this.createDocument();
        const otherSet = await pipeline.selectAll([scope], ctx);
        return inputSet.concat(otherSet);
    }
}
ListAppend.$type = 'List.append';
ListAppend.$help = `
Concatenates the input set with the output set of inner pipeline.
The input set comes before the inner pipeline's results.

The inner pipeline is executed only once (as opposed to other pipelines
which are executed per each element in input set), with #document element as its input set.
A typical usage is to have a Use Definition pipe inside of it,
so that multiple definitions can be concatenated together.

### Use For

- concatenating elements from multiple definitions or other sources

### See Also

- List.prepend: for similar functionality with different order of elements
`;
__decorate([
    index_js_1.params.Pipeline({ label: 'Appended set' }),
    __metadata("design:type", index_js_1.Pipeline)
], ListAppend.prototype, "pipeline", void 0);
exports.ListAppend = ListAppend;
//# sourceMappingURL=List.append.js.map