UNPKG

ddb-table

Version:

Strongly typed library for querying and modeling DynamoDB documents.

37 lines (36 loc) 6.01 kB
"use strict"; exports.__esModule = true; exports.default = void 0; class ProjectionExpression { constructor(names, init) { this.names = void 0; this.paths = void 0; this.names = names; this.paths = {}; if (!init) return; const parts = init.trim().split(/\s*,\s*/g); for (const part of parts) { this.paths[part] = 1; } } add(fields) { const iterateFields = (path, fields) => { Object.entries(fields).forEach(([key, value]) => { if (!value) return; const keyPath = [...path, key.match(/^\d+$/) ? Number(key) : key]; if (typeof value !== 'object') { this.paths[this.names.add(...keyPath)] = 1; return; } iterateFields(keyPath, value); }); }; iterateFields([], fields); return this; } serialize() { return Object.keys(this.paths).join(', ') || undefined; } } exports.default = ProjectionExpression; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQcm9qZWN0aW9uRXhwcmVzc2lvbiIsImNvbnN0cnVjdG9yIiwibmFtZXMiLCJpbml0IiwicGF0aHMiLCJwYXJ0cyIsInRyaW0iLCJzcGxpdCIsInBhcnQiLCJhZGQiLCJmaWVsZHMiLCJpdGVyYXRlRmllbGRzIiwicGF0aCIsIk9iamVjdCIsImVudHJpZXMiLCJmb3JFYWNoIiwia2V5IiwidmFsdWUiLCJrZXlQYXRoIiwibWF0Y2giLCJOdW1iZXIiLCJzZXJpYWxpemUiLCJrZXlzIiwiam9pbiIsInVuZGVmaW5lZCIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4cHJlc3Npb25zL1Byb2plY3Rpb25FeHByZXNzaW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeHByZXNzaW9uQXR0cmlidXRlTmFtZXMgZnJvbSAnLi9FeHByZXNzaW9uQXR0cmlidXRlTmFtZXMnO1xuXG5leHBvcnQgdHlwZSBQcm9qZWN0aW9uRmllbGRzPFQ+ID0ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICBbUCBpbiBrZXlvZiBUXT86IFtUW1BdXSBleHRlbmRzIFtvYmplY3RdXG4gICAgPyBQcm9qZWN0aW9uRmllbGRzPFRbUF0+IHwgdHJ1ZSB8IGZhbHNlIHwgMSB8IDBcbiAgICA6IHRydWUgfCBmYWxzZSB8IDEgfCAwO1xufTtcblxudHlwZSBQcm9qZWN0aW9uRmllbGRzS2V5czxULCBQIGV4dGVuZHMgUHJvamVjdGlvbkZpZWxkczxUPj4gPSBFeGNsdWRlPFxuICB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbiAgICBbSyBpbiBrZXlvZiBUXTogW1BbS11dIGV4dGVuZHMgW3RydWUgfCAxIHwgb2JqZWN0XSA/IEsgOiBuZXZlcjtcbiAgfVtrZXlvZiBUXSxcbiAgdW5kZWZpbmVkXG4+O1xuXG50eXBlIFByb2plY3Rpb25GaWVsZHNNYXliZUtleXM8VCwgUCBleHRlbmRzIFByb2plY3Rpb25GaWVsZHM8VD4+ID0gRXhjbHVkZTxcbiAge1xuICAgIFtLIGluIGtleW9mIFRdOiBbUFtLXV0gZXh0ZW5kcyBbYm9vbGVhbl1cbiAgICAgID8gW1BbS11dIGV4dGVuZHMgW2ZhbHNlXVxuICAgICAgICA/IG5ldmVyXG4gICAgICAgIDogS1xuICAgICAgOiBuZXZlcjtcbiAgfVtrZXlvZiBUXSxcbiAgdW5kZWZpbmVkXG4+O1xuXG5leHBvcnQgdHlwZSBJdGVtUHJvamVjdGlvbjxULCBQIGV4dGVuZHMgUHJvamVjdGlvbkZpZWxkczxUPj4gPSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXG4gIFtLIGluIFByb2plY3Rpb25GaWVsZHNLZXlzPFQsIFA+XTogW1BbS11dIGV4dGVuZHMgW29iamVjdF1cbiAgICA/IEl0ZW1Qcm9qZWN0aW9uPFRbS10sIFBbS10+XG4gICAgOiBUW0tdO1xufSAmIHsgW0sgaW4gUHJvamVjdGlvbkZpZWxkc01heWJlS2V5czxULCBQPl0/OiBUW0tdIH07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByb2plY3Rpb25FeHByZXNzaW9uPFQgZXh0ZW5kcyBLLCBLPiB7XG4gIHByaXZhdGUgbmFtZXM6IEV4cHJlc3Npb25BdHRyaWJ1dGVOYW1lczxUPjtcbiAgcHJpdmF0ZSBwYXRoczogeyBba2V5OiBzdHJpbmddOiAxIH07XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKG5hbWVzOiBFeHByZXNzaW9uQXR0cmlidXRlTmFtZXM8VD4sIGluaXQ/OiBzdHJpbmcpIHtcbiAgICB0aGlzLm5hbWVzID0gbmFtZXM7XG4gICAgdGhpcy5wYXRocyA9IHt9O1xuXG4gICAgaWYgKCFpbml0KSByZXR1cm47XG5cbiAgICBjb25zdCBwYXJ0cyA9IGluaXQudHJpbSgpLnNwbGl0KC9cXHMqLFxccyovZyk7XG4gICAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgICB0aGlzLnBhdGhzW3BhcnRdID0gMTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkPFAgZXh0ZW5kcyBQcm9qZWN0aW9uRmllbGRzPE9taXQ8VCwga2V5b2YgSz4+PihmaWVsZHM6IFApOiB0aGlzIHtcbiAgICBjb25zdCBpdGVyYXRlRmllbGRzID0gKFxuICAgICAgcGF0aDogKHN0cmluZyB8IG51bWJlcilbXSxcbiAgICAgIGZpZWxkczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgKTogdm9pZCA9PiB7XG4gICAgICBPYmplY3QuZW50cmllcyhmaWVsZHMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm47XG5cbiAgICAgICAgY29uc3Qga2V5UGF0aCA9IFsuLi5wYXRoLCBrZXkubWF0Y2goL15cXGQrJC8pID8gTnVtYmVyKGtleSkgOiBrZXldO1xuXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgdGhpcy5wYXRoc1t0aGlzLm5hbWVzLmFkZCguLi4oa2V5UGF0aCBhcyBba2V5b2YgVF0pKV0gPSAxO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZXJhdGVGaWVsZHMoa2V5UGF0aCwgdmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGl0ZXJhdGVGaWVsZHMoW10sIGZpZWxkcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgc2VyaWFsaXplKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMucGF0aHMpLmpvaW4oJywgJykgfHwgdW5kZWZpbmVkO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFtQ2UsTUFBTUEsb0JBQW9CLENBQWlCO0VBSWpEQyxXQUFXQSxDQUFDQyxLQUFrQyxFQUFFQyxJQUFhLEVBQUU7SUFBQSxLQUg5REQsS0FBSztJQUFBLEtBQ0xFLEtBQUs7SUFHWCxJQUFJLENBQUNGLEtBQUssR0FBR0EsS0FBSztJQUNsQixJQUFJLENBQUNFLEtBQUssR0FBRyxDQUFDLENBQUM7SUFFZixJQUFJLENBQUNELElBQUksRUFBRTtJQUVYLE1BQU1FLEtBQUssR0FBR0YsSUFBSSxDQUFDRyxJQUFJLEVBQUUsQ0FBQ0MsS0FBSyxDQUFDLFVBQVUsQ0FBQztJQUMzQyxLQUFLLE1BQU1DLElBQUksSUFBSUgsS0FBSyxFQUFFO01BQ3hCLElBQUksQ0FBQ0QsS0FBSyxDQUFDSSxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3RCO0VBQ0Y7RUFFT0MsR0FBR0EsQ0FBK0NDLE1BQVMsRUFBUTtJQUN4RSxNQUFNQyxhQUFhLEdBQUdBLENBQ3BCQyxJQUF5QixFQUN6QkYsTUFBK0IsS0FDdEI7TUFDVEcsTUFBTSxDQUFDQyxPQUFPLENBQUNKLE1BQU0sQ0FBQyxDQUFDSyxPQUFPLENBQUMsQ0FBQyxDQUFDQyxHQUFHLEVBQUVDLEtBQUssQ0FBQyxLQUFLO1FBQy9DLElBQUksQ0FBQ0EsS0FBSyxFQUFFO1FBRVosTUFBTUMsT0FBTyxHQUFHLENBQUMsR0FBR04sSUFBSSxFQUFFSSxHQUFHLENBQUNHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBR0MsTUFBTSxDQUFDSixHQUFHLENBQUMsR0FBR0EsR0FBRyxDQUFDO1FBRWpFLElBQUksT0FBT0MsS0FBSyxLQUFLLFFBQVEsRUFBRTtVQUM3QixJQUFJLENBQUNiLEtBQUssQ0FBQyxJQUFJLENBQUNGLEtBQUssQ0FBQ08sR0FBRyxDQUFDLEdBQUlTLE9BQXFCLENBQUMsQ0FBQyxHQUFHLENBQUM7VUFDekQ7UUFDRjtRQUVBUCxhQUFhLENBQUNPLE9BQU8sRUFBRUQsS0FBSyxDQUE0QjtNQUMxRCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUROLGFBQWEsQ0FBQyxFQUFFLEVBQUVELE1BQU0sQ0FBQztJQUN6QixPQUFPLElBQUk7RUFDYjtFQUVPVyxTQUFTQSxDQUFBLEVBQXVCO0lBQ3JDLE9BQU9SLE1BQU0sQ0FBQ1MsSUFBSSxDQUFDLElBQUksQ0FBQ2xCLEtBQUssQ0FBQyxDQUFDbUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJQyxTQUFTO0VBQ3hEO0FBQ0Y7QUFBQ0MsT0FBQSxDQUFBQyxPQUFBLEdBQUExQixvQkFBQSJ9