UNPKG

dynamodb-toolbox

Version:

Lightweight and type-safe query builder for DynamoDB and TypeScript.

40 lines (39 loc) 1.41 kB
"use strict"; 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;