dynamodb-toolbox
Version:
Lightweight and type-safe query builder for DynamoDB and TypeScript.
40 lines (39 loc) • 1.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.pipe = exports.SerializablePipe = exports.Pipe = void 0;
const utils_js_1 = require("./utils.js");
const composeLeft = (left, right) => arg => right(left(arg));
const composeRight = (left, right) => arg => left(right(arg));
const identity = arg => arg;
class Pipe {
constructor(transformers) {
this.transformerId = 'pipe';
this.transformers = transformers;
this.encode = this.transformers
.map(transformer => (arg) => transformer.encode(arg))
.reduce(composeLeft, identity);
this.decode = this.transformers
.map(transformer => (arg) => transformer.decode(arg))
.reduce(composeRight, identity);
}
pipe(transformer) {
return (0, exports.pipe)(...this.transformers, transformer);
}
}
exports.Pipe = Pipe;
class SerializablePipe extends Pipe {
constructor(transformers) {
super(transformers);
}
toJSON() {
return {
transformerId: this.transformerId,
transformers: this.transformers.map(transformer => transformer.toJSON())
};
}
}
exports.SerializablePipe = SerializablePipe;
const pipe = (...transformers) => (transformers.every(utils_js_1.isSerializableTransformer)
? new SerializablePipe(transformers)
: new Pipe(transformers));
exports.pipe = pipe;