sort-key
Version:
Tiny library for generating and parsing DynamoDB sort keys.
39 lines (25 loc) • 3.7 kB
JavaScript
;
require("mocha");
var _chai = require("chai");
var _ = _interopRequireDefault(require("./"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
describe('SortKey', () => {
describe('README', () => {
it('Usage', () => {
const SK = _.default.generate('1532208', '2020-09-11T15:30:06.822Z');
_chai.assert.equal(SK, '1532208#2020-09-11T15:30:06.822Z');
const [order, item] = _.default.parse(SK);
_chai.assert.equal(order, '1532208');
_chai.assert.equal(item, '2020-09-11T15:30:06.822Z');
});
it('Supports escaping as well', () => {
const SK = _.default.generate('example.com', 'foo', 'https://example.com/foo/bar#top');
_chai.assert.equal(SK, 'example.com#foo#https://example.com/foo/bar\\#top');
const [domain, page, url] = _.default.parse(SK);
_chai.assert.equal(domain, 'example.com');
_chai.assert.equal(page, 'foo');
_chai.assert.equal(url, 'https://example.com/foo/bar#top');
});
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9SRUFETUUudGVzdC50cyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsIml0IiwiU0siLCJTb3J0S2V5IiwiZ2VuZXJhdGUiLCJhc3NlcnQiLCJlcXVhbCIsIm9yZGVyIiwiaXRlbSIsInBhcnNlIiwiZG9tYWluIiwicGFnZSIsInVybCJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7QUFDQTs7QUFDQTs7OztBQUVBQSxRQUFRLENBQUMsU0FBRCxFQUFZLE1BQU07QUFDeEJBLEVBQUFBLFFBQVEsQ0FBQyxRQUFELEVBQVcsTUFBTTtBQUN2QkMsSUFBQUEsRUFBRSxDQUFDLE9BQUQsRUFBVSxNQUFNO0FBQ2hCLFlBQU1DLEVBQUUsR0FBR0MsVUFBUUMsUUFBUixDQUFpQixTQUFqQixFQUE0QiwwQkFBNUIsQ0FBWDs7QUFDQUMsbUJBQU9DLEtBQVAsQ0FBYUosRUFBYixFQUFpQixrQ0FBakI7O0FBRUEsWUFBTSxDQUFDSyxLQUFELEVBQVFDLElBQVIsSUFBZ0JMLFVBQVFNLEtBQVIsQ0FBY1AsRUFBZCxDQUF0Qjs7QUFFQUcsbUJBQU9DLEtBQVAsQ0FBYUMsS0FBYixFQUFvQixTQUFwQjs7QUFDQUYsbUJBQU9DLEtBQVAsQ0FBYUUsSUFBYixFQUFtQiwwQkFBbkI7QUFDRCxLQVJDLENBQUY7QUFVQVAsSUFBQUEsRUFBRSxDQUFDLDJCQUFELEVBQThCLE1BQU07QUFDcEMsWUFBTUMsRUFBRSxHQUFHQyxVQUFRQyxRQUFSLENBQ1QsYUFEUyxFQUVULEtBRlMsRUFHVCxpQ0FIUyxDQUFYOztBQUtBQyxtQkFBT0MsS0FBUCxDQUFhSixFQUFiLEVBQWlCLG1EQUFqQjs7QUFFQSxZQUFNLENBQUNRLE1BQUQsRUFBU0MsSUFBVCxFQUFlQyxHQUFmLElBQXNCVCxVQUFRTSxLQUFSLENBQWNQLEVBQWQsQ0FBNUI7O0FBRUFHLG1CQUFPQyxLQUFQLENBQWFJLE1BQWIsRUFBcUIsYUFBckI7O0FBQ0FMLG1CQUFPQyxLQUFQLENBQWFLLElBQWIsRUFBbUIsS0FBbkI7O0FBQ0FOLG1CQUFPQyxLQUFQLENBQWFNLEdBQWIsRUFBa0IsaUNBQWxCO0FBQ0QsS0FiQyxDQUFGO0FBY0QsR0F6Qk8sQ0FBUjtBQTBCRCxDQTNCTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdtb2NoYSc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdjaGFpJztcbmltcG9ydCBTb3J0S2V5IGZyb20gJy4vJztcblxuZGVzY3JpYmUoJ1NvcnRLZXknLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdSRUFETUUnLCAoKSA9PiB7XG4gICAgaXQoJ1VzYWdlJywgKCkgPT4ge1xuICAgICAgY29uc3QgU0sgPSBTb3J0S2V5LmdlbmVyYXRlKCcxNTMyMjA4JywgJzIwMjAtMDktMTFUMTU6MzA6MDYuODIyWicpO1xuICAgICAgYXNzZXJ0LmVxdWFsKFNLLCAnMTUzMjIwOCMyMDIwLTA5LTExVDE1OjMwOjA2LjgyMlonKTtcblxuICAgICAgY29uc3QgW29yZGVyLCBpdGVtXSA9IFNvcnRLZXkucGFyc2UoU0spO1xuXG4gICAgICBhc3NlcnQuZXF1YWwob3JkZXIsICcxNTMyMjA4Jyk7XG4gICAgICBhc3NlcnQuZXF1YWwoaXRlbSwgJzIwMjAtMDktMTFUMTU6MzA6MDYuODIyWicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ1N1cHBvcnRzIGVzY2FwaW5nIGFzIHdlbGwnLCAoKSA9PiB7XG4gICAgICBjb25zdCBTSyA9IFNvcnRLZXkuZ2VuZXJhdGUoXG4gICAgICAgICdleGFtcGxlLmNvbScsXG4gICAgICAgICdmb28nLFxuICAgICAgICAnaHR0cHM6Ly9leGFtcGxlLmNvbS9mb28vYmFyI3RvcCcsXG4gICAgICApO1xuICAgICAgYXNzZXJ0LmVxdWFsKFNLLCAnZXhhbXBsZS5jb20jZm9vI2h0dHBzOi8vZXhhbXBsZS5jb20vZm9vL2JhclxcXFwjdG9wJyk7XG5cbiAgICAgIGNvbnN0IFtkb21haW4sIHBhZ2UsIHVybF0gPSBTb3J0S2V5LnBhcnNlKFNLKTtcblxuICAgICAgYXNzZXJ0LmVxdWFsKGRvbWFpbiwgJ2V4YW1wbGUuY29tJyk7XG4gICAgICBhc3NlcnQuZXF1YWwocGFnZSwgJ2ZvbycpO1xuICAgICAgYXNzZXJ0LmVxdWFsKHVybCwgJ2h0dHBzOi8vZXhhbXBsZS5jb20vZm9vL2JhciN0b3AnKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==