rr-table
Version:
Responsive and customizable React Table
193 lines (187 loc) • 21.9 kB
JavaScript
"use strict";
var _index = _interopRequireDefault(require("./index"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
describe('selectItems', function () {
var data = {
name: 'Anne',
surname: 'bella',
info: {
age: 35,
color: 'blue'
},
company: {
job: 'singer'
},
pets: ['dog', 'cat']
};
it('should return [data] when data is a string', function () {
var items = (0, _index.default)({
data: 'hello'
});
expect(items).toEqual(['hello']);
});
it('should return an array of only the strings from the data when there is no keys', function () {
var expected = ['Anne', 'bella'];
var items = (0, _index.default)({
data: data
});
expect(items).toEqual(expected);
});
it('should return an array of values of the listed keys', function () {
var keys = ['name', 'surname', 'info.age', 'company.job', 'pets[0]'];
var expected = ['Anne', 'bella', 35, 'singer', 'dog'];
var items = (0, _index.default)({
data: data,
keys: keys
});
expect(items).toEqual(expected);
});
it('should return an array of values of the listed keys - one cell should accept an array of string', function () {
var keys = ['name', 'surname', 'info.age', 'company.job', 'pets'];
var separator = ', ';
var expected = ['Anne', 'bella', 35, 'singer', 'dog, cat'];
var items = (0, _index.default)({
data: data,
keys: keys,
separator: separator
});
expect(items).toEqual(expected);
});
it('should return an array of values of the listed keys - one cell should accept an array of numbers', function () {
var dataWithNumbers = {
name: 'Anne',
surname: 'bella',
info: {
age: 35
},
company: {
job: 'singer'
},
ca: [50000, 120000]
};
var keys = ['name', 'surname', 'info.age', 'company.job', 'ca'];
var expected = ['Anne', 'bella', 35, 'singer', '50000 - 120000'];
var items = (0, _index.default)({
data: dataWithNumbers,
keys: keys
});
expect(items).toEqual(expected);
});
it('should return an array of values of the listed keys - one cell should accept an array of numbers in keys', function () {
var dataWithNumbers = {
name: 'Anne',
surname: 'bella',
info: {
age: 35
},
company: {
job: 'singer'
},
ca: {
min: 30000,
max: 200000
}
};
var keys = ['name', 'surname', 'info.age', 'company.job', ['ca.min', 'ca.max']];
var expected = ['Anne', 'bella', 35, 'singer', '30000 - 200000'];
var items = (0, _index.default)({
data: dataWithNumbers,
keys: keys
});
expect(items).toEqual(expected);
});
it('should return an array of values of the listed keys - when key is an object it should display the "display" key and if it is undefined display the replacement', function () {
var keys = ['name', 'surname', 'info.age', 'company.job', {
display: 'color',
replaceBy: 'info.color'
}, 'pets'];
var separator = ', ';
var expected = ['Anne', 'bella', 35, 'singer', 'blue', 'dog, cat'];
var items = (0, _index.default)({
data: data,
keys: keys,
separator: separator
});
expect(items).toEqual(expected);
});
it('should return an array of values of the listed keys - when key is an object it should display the "display" key and if it is undefined display the first replacement in the list that is not undefined', function () {
var keys = ['name', 'surname', 'info.age', 'company.job', {
display: 'color',
replaceBy: ['company.color', 'info.color']
}, 'pets'];
var separator = ', ';
var expected = ['Anne', 'bella', 35, 'singer', 'blue', 'dog, cat'];
var items = (0, _index.default)({
data: data,
keys: keys,
separator: separator
});
expect(items).toEqual(expected);
});
it('should normalize the text when the key is an object and has a "normalize" key', function () {
var normalizeFunc = function normalizeFunc(text) {
return text.toUpperCase();
};
var keys = [{
display: 'name',
normalize: normalizeFunc
}, 'surname', 'info.age', 'company.job', {
display: 'color',
replaceBy: ['company.color', 'info.color']
}, 'pets'];
var separator = ', ';
var expected = ['ANNE', 'bella', 35, 'singer', 'blue', 'dog, cat'];
var items = (0, _index.default)({
data: data,
keys: keys,
separator: separator
});
expect(items).toEqual(expected);
});
it('should normalize the text when the key is an object and has a "normalize" key and display is an array', function () {
var normalizeFunc = function normalizeFunc(text) {
return text.toUpperCase();
};
var keys = [{
display: 'name',
normalize: normalizeFunc
}, 'surname', 'info.age', 'company.job', {
display: 'color',
replaceBy: ['company.color', 'info.color']
}, {
display: ['pets[0]', 'pets[1]'],
normalize: normalizeFunc
}];
var separator = ', ';
var expected = ['ANNE', 'bella', 35, 'singer', 'blue', 'DOG, CAT'];
var items = (0, _index.default)({
data: data,
keys: keys,
separator: separator
});
expect(items).toEqual(expected);
});
it('should return the right value when key is a function', function () {
var normalizeFunc = function normalizeFunc(text) {
return text.toUpperCase();
};
var keys = [{
display: 'name',
normalize: normalizeFunc
}, 'surname', 'info.age', 'company.job', {
display: 'color',
replaceBy: ['company.color', 'info.color']
}, function (d) {
return d.pets.join(', ').toUpperCase();
}];
var separator = ', ';
var expected = ['ANNE', 'bella', 35, 'singer', 'blue', 'DOG, CAT'];
var items = (0, _index.default)({
data: data,
keys: keys,
separator: separator
});
expect(items).toEqual(expected);
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9zZWxlY3RJdGVtcy9zZWxlY3RJdGVtcy50ZXN0LmpzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiZGF0YSIsIm5hbWUiLCJzdXJuYW1lIiwiaW5mbyIsImFnZSIsImNvbG9yIiwiY29tcGFueSIsImpvYiIsInBldHMiLCJpdCIsIml0ZW1zIiwiZXhwZWN0IiwidG9FcXVhbCIsImV4cGVjdGVkIiwia2V5cyIsInNlcGFyYXRvciIsImRhdGFXaXRoTnVtYmVycyIsImNhIiwibWluIiwibWF4IiwiZGlzcGxheSIsInJlcGxhY2VCeSIsIm5vcm1hbGl6ZUZ1bmMiLCJ0ZXh0IiwidG9VcHBlckNhc2UiLCJub3JtYWxpemUiLCJkIiwiam9pbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7OztBQUVBQSxRQUFRLENBQUMsYUFBRCxFQUFnQixZQUFNO0FBQzVCLE1BQU1DLElBQUksR0FBRztBQUNYQyxJQUFBQSxJQUFJLEVBQUUsTUFESztBQUVYQyxJQUFBQSxPQUFPLEVBQUUsT0FGRTtBQUdYQyxJQUFBQSxJQUFJLEVBQUU7QUFBRUMsTUFBQUEsR0FBRyxFQUFFLEVBQVA7QUFBV0MsTUFBQUEsS0FBSyxFQUFFO0FBQWxCLEtBSEs7QUFJWEMsSUFBQUEsT0FBTyxFQUFFO0FBQUVDLE1BQUFBLEdBQUcsRUFBRTtBQUFQLEtBSkU7QUFLWEMsSUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBRCxFQUFRLEtBQVI7QUFMSyxHQUFiO0FBUUFDLEVBQUFBLEVBQUUsQ0FBQyw0Q0FBRCxFQUErQyxZQUFNO0FBQ3JELFFBQU1DLEtBQUssR0FBRyxvQkFBWTtBQUFFVixNQUFBQSxJQUFJLEVBQUU7QUFBUixLQUFaLENBQWQ7QUFDQVcsSUFBQUEsTUFBTSxDQUFDRCxLQUFELENBQU4sQ0FBY0UsT0FBZCxDQUFzQixDQUFDLE9BQUQsQ0FBdEI7QUFDRCxHQUhDLENBQUY7QUFLQUgsRUFBQUEsRUFBRSxDQUFDLGdGQUFELEVBQW1GLFlBQU07QUFDekYsUUFBTUks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T0FBZCxDQUFzQkMsUUFBdEI7QUFDRCxHQWRDLENBQUY7QUFlRCxDQTdJTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNlbGVjdEl0ZW1zIGZyb20gJy4vaW5kZXgnO1xuXG5kZXNjcmliZSgnc2VsZWN0SXRlbXMnLCAoKSA9PiB7XG4gIGNvbnN0IGRhdGEgPSB7XG4gICAgbmFtZTogJ0FubmUnLFxuICAgIHN1cm5hbWU6ICdiZWxsYScsXG4gICAgaW5mbzogeyBhZ2U6IDM1LCBjb2xvcjogJ2JsdWUnIH0sXG4gICAgY29tcGFueTogeyBqb2I6ICdzaW5nZXInIH0sXG4gICAgcGV0czogWydkb2cnLCAnY2F0J10sXG4gIH07XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gW2RhdGFdIHdoZW4gZGF0YSBpcyBhIHN0cmluZycsICgpID0+IHtcbiAgICBjb25zdCBpdGVtcyA9IHNlbGVjdEl0ZW1zKHsgZGF0YTogJ2hlbGxvJyB9KTtcbiAgICBleHBlY3QoaXRlbXMpLnRvRXF1YWwoWydoZWxsbyddKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gYXJyYXkgb2Ygb25seSB0aGUgc3RyaW5ncyBmcm9tIHRoZSBkYXRhIHdoZW4gdGhlcmUgaXMgbm8ga2V5cycsICgpID0+IHtcbiAgICBjb25zdCBleHBlY3RlZCA9IFsnQW5uZScsICdiZWxsYSddO1xuICAgIGNvbnN0IGl0ZW1zID0gc2VsZWN0SXRlbXMoeyBkYXRhIH0pO1xuICAgIGV4cGVjdChpdGVtcykudG9FcXVhbChleHBlY3RlZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGFuIGFycmF5IG9mIHZhbHVlcyBvZiB0aGUgbGlzdGVkIGtleXMnLCAoKSA9PiB7XG4gICAgY29uc3Qga2V5cyA9IFsnbmFtZScsICdzdXJuYW1lJywgJ2luZm8uYWdlJywgJ2NvbXBhbnkuam9iJywgJ3BldHNbMF0nXTtcbiAgICBjb25zdCBleHBlY3RlZCA9IFsnQW5uZScsICdiZWxsYScsIDM1LCAnc2luZ2VyJywgJ2RvZyddO1xuICAgIGNvbnN0IGl0ZW1zID0gc2VsZWN0SXRlbXMoeyBkYXRhLCBrZXlzIH0pO1xuICAgIGV4cGVjdChpdGVtcykudG9FcXVhbChleHBlY3RlZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGFuIGFycmF5IG9mIHZhbHVlcyBvZiB0aGUgbGlzdGVkIGtleXMgLSBvbmUgY2VsbCBzaG91bGQgYWNjZXB0IGFuIGFycmF5IG9mIHN0cmluZycsICgpID0+IHtcbiAgICBjb25zdCBrZXlzID0gWyduYW1lJywgJ3N1cm5hbWUnLCAnaW5mby5hZ2UnLCAnY29tcGFueS5qb2InLCAncGV0cyddO1xuICAgIGNvbnN0IHNlcGFyYXRvciA9ICcsICc7XG4gICAgY29uc3QgZXhwZWN0ZWQgPSBbJ0FubmUnLCAnYmVsbGEnLCAzNSwgJ3NpbmdlcicsICdkb2csIGNhdCddO1xuICAgIGNvbnN0IGl0ZW1zID0gc2VsZWN0SXRlbXMoeyBkYXRhLCBrZXlzLCBzZXBhcmF0b3IgfSk7XG4gICAgZXhwZWN0KGl0ZW1zKS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gYXJyYXkgb2YgdmFsdWVzIG9mIHRoZSBsaXN0ZWQga2V5cyAtIG9uZSBjZWxsIHNob3VsZCBhY2NlcHQgYW4gYXJyYXkgb2YgbnVtYmVycycsICgpID0+IHtcbiAgICBjb25zdCBkYXRhV2l0aE51bWJlcnMgPSB7XG4gICAgICBuYW1lOiAnQW5uZScsXG4gICAgICBzdXJuYW1lOiAnYmVsbGEnLFxuICAgICAgaW5mbzogeyBhZ2U6IDM1IH0sXG4gICAgICBjb21wYW55OiB7IGpvYjogJ3NpbmdlcicgfSxcbiAgICAgIGNhOiBbNTAwMDAsIDEyMDAwMF0sXG4gICAgfTtcblxuICAgIGNvbnN0IGtleXMgPSBbJ25hbWUnLCAnc3VybmFtZScsICdpbmZvLmFnZScsICdjb21wYW55LmpvYicsICdjYSddO1xuICAgIGNvbnN0IGV4cGVjdGVkID0gWydBbm5lJywgJ2JlbGxhJywgMzUsICdzaW5nZXInLCAnNTAwMDAgLSAxMjAwMDAnXTtcbiAgICBjb25zdCBpdGVtcyA9IHNlbGVjdEl0ZW1zKHsgZGF0YTogZGF0YVdpdGhOdW1iZXJzLCBrZXlzIH0pO1xuICAgIGV4cGVjdChpdGVtcykudG9FcXVhbChleHBlY3RlZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGFuIGFycmF5IG9mIHZhbHVlcyBvZiB0aGUgbGlzdGVkIGtleXMgLSBvbmUgY2VsbCBzaG91bGQgYWNjZXB0IGFuIGFycmF5IG9mIG51bWJlcnMgaW4ga2V5cycsICgpID0+IHtcbiAgICBjb25zdCBkYXRhV2l0aE51bWJlcnMgPSB7XG4gICAgICBuYW1lOiAnQW5uZScsXG4gICAgICBzdXJuYW1lOiAnYmVsbGEnLFxuICAgICAgaW5mbzogeyBhZ2U6IDM1IH0sXG4gICAgICBjb21wYW55OiB7IGpvYjogJ3NpbmdlcicgfSxcbiAgICAgIGNhOiB7IG1pbjogMzAwMDAsIG1heDogMjAwMDAwIH0sXG4gICAgfTtcbiAgICBjb25zdCBrZXlzID0gWyduYW1lJywgJ3N1cm5hbWUnLCAnaW5mby5hZ2UnLCAnY29tcGFueS5qb2InLCBbJ2NhLm1pbicsICdjYS5tYXgnXV07XG4gICAgY29uc3QgZXhwZWN0ZWQgPSBbJ0FubmUnLCAnYmVsbGEnLCAzNSwgJ3NpbmdlcicsICczMDAwMCAtIDIwMDAwMCddO1xuICAgIGNvbnN0IGl0ZW1zID0gc2VsZWN0SXRlbXMoeyBkYXRhOiBkYXRhV2l0aE51bWJlcnMsIGtleXMgfSk7XG4gICAgZXhwZWN0KGl0ZW1zKS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gYXJyYXkgb2YgdmFsdWVzIG9mIHRoZSBsaXN0ZWQga2V5cyAtIHdoZW4ga2V5IGlzIGFuIG9iamVjdCBpdCBzaG91bGQgZGlzcGxheSB0aGUgXCJkaXNwbGF5XCIga2V5IGFuZCBpZiBpdCBpcyB1bmRlZmluZWQgZGlzcGxheSB0aGUgcmVwbGFjZW1lbnQnLCAoKSA9PiB7XG4gICAgY29uc3Qga2V5cyA9IFtcbiAgICAgICduYW1lJyxcbiAgICAgICdzdXJuYW1lJyxcbiAgICAgICdpbmZvLmFnZScsXG4gICAgICAnY29tcGFueS5qb2InLFxuICAgICAgeyBkaXNwbGF5OiAnY29sb3InLCByZXBsYWNlQnk6ICdpbmZvLmNvbG9yJyB9LFxuICAgICAgJ3BldHMnLFxuICAgIF07XG4gICAgY29uc3Qgc2VwYXJhdG9yID0gJywgJztcbiAgICBjb25zdCBleHBlY3RlZCA9IFsnQW5uZScsICdiZWxsYScsIDM1LCAnc2luZ2VyJywgJ2JsdWUnLCAnZG9nLCBjYXQnXTtcbiAgICBjb25zdCBpdGVtcyA9IHNlbGVjdEl0ZW1zKHsgZGF0YSwga2V5cywgc2VwYXJhdG9yIH0pO1xuICAgIGV4cGVjdChpdGVtcykudG9FcXVhbChleHBlY3RlZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGFuIGFycmF5IG9mIHZhbHVlcyBvZiB0aGUgbGlzdGVkIGtleXMgLSB3aGVuIGtleSBpcyBhbiBvYmplY3QgaXQgc2hvdWxkIGRpc3BsYXkgdGhlIFwiZGlzcGxheVwiIGtleSBhbmQgaWYgaXQgaXMgdW5kZWZpbmVkIGRpc3BsYXkgdGhlIGZpcnN0IHJlcGxhY2VtZW50IGluIHRoZSBsaXN0IHRoYXQgaXMgbm90IHVuZGVmaW5lZCcsICgpID0+IHtcbiAgICBjb25zdCBrZXlzID0gW1xuICAgICAgJ25hbWUnLFxuICAgICAgJ3N1cm5hbWUnLFxuICAgICAgJ2luZm8uYWdlJyxcbiAgICAgICdjb21wYW55LmpvYicsXG4gICAgICB7IGRpc3BsYXk6ICdjb2xvcicsIHJlcGxhY2VCeTogWydjb21wYW55LmNvbG9yJywgJ2luZm8uY29sb3InXSB9LFxuICAgICAgJ3BldHMnLFxuICAgIF07XG4gICAgY29uc3Qgc2VwYXJhdG9yID0gJywgJztcbiAgICBjb25zdCBleHBlY3RlZCA9IFsnQW5uZScsICdiZWxsYScsIDM1LCAnc2luZ2VyJywgJ2JsdWUnLCAnZG9nLCBjYXQnXTtcbiAgICBjb25zdCBpdGVtcyA9IHNlbGVjdEl0ZW1zKHsgZGF0YSwga2V5cywgc2VwYXJhdG9yIH0pO1xuICAgIGV4cGVjdChpdGVtcykudG9FcXVhbChleHBlY3RlZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm9ybWFsaXplIHRoZSB0ZXh0IHdoZW4gdGhlIGtleSBpcyBhbiBvYmplY3QgYW5kIGhhcyBhIFwibm9ybWFsaXplXCIga2V5JywgKCkgPT4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZUZ1bmMgPSB0ZXh0ID0+IHRleHQudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBrZXlzID0gW1xuICAgICAgeyBkaXNwbGF5OiAnbmFtZScsIG5vcm1hbGl6ZTogbm9ybWFsaXplRnVuYyB9LFxuICAgICAgJ3N1cm5hbWUnLFxuICAgICAgJ2luZm8uYWdlJyxcbiAgICAgICdjb21wYW55LmpvYicsXG4gICAgICB7IGRpc3BsYXk6ICdjb2xvcicsIHJlcGxhY2VCeTogWydjb21wYW55LmNvbG9yJywgJ2luZm8uY29sb3InXSB9LFxuICAgICAgJ3BldHMnLFxuICAgIF07XG4gICAgY29uc3Qgc2VwYXJhdG9yID0gJywgJztcbiAgICBjb25zdCBleHBlY3RlZCA9IFsnQU5ORScsICdiZWxsYScsIDM1LCAnc2luZ2VyJywgJ2JsdWUnLCAnZG9nLCBjYXQnXTtcbiAgICBjb25zdCBpdGVtcyA9IHNlbGVjdEl0ZW1zKHsgZGF0YSwga2V5cywgc2VwYXJhdG9yIH0pO1xuICAgIGV4cGVjdChpdGVtcykudG9FcXVhbChleHBlY3RlZCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm9ybWFsaXplIHRoZSB0ZXh0IHdoZW4gdGhlIGtleSBpcyBhbiBvYmplY3QgYW5kIGhhcyBhIFwibm9ybWFsaXplXCIga2V5IGFuZCBkaXNwbGF5IGlzIGFuIGFycmF5JywgKCkgPT4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZUZ1bmMgPSB0ZXh0ID0+IHRleHQudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBrZXlzID0gW1xuICAgICAgeyBkaXNwbGF5OiAnbmFtZScsIG5vcm1hbGl6ZTogbm9ybWFsaXplRnVuYyB9LFxuICAgICAgJ3N1cm5hbWUnLFxuICAgICAgJ2luZm8uYWdlJyxcbiAgICAgICdjb21wYW55LmpvYicsXG4gICAgICB7IGRpc3BsYXk6ICdjb2xvcicsIHJlcGxhY2VCeTogWydjb21wYW55LmNvbG9yJywgJ2luZm8uY29sb3InXSB9LFxuICAgICAgeyBkaXNwbGF5OiBbJ3BldHNbMF0nLCAncGV0c1sxXSddLCBub3JtYWxpemU6IG5vcm1hbGl6ZUZ1bmMgfSxcbiAgICBdO1xuICAgIGNvbnN0IHNlcGFyYXRvciA9ICcsICc7XG4gICAgY29uc3QgZXhwZWN0ZWQgPSBbJ0FOTkUnLCAnYmVsbGEnLCAzNSwgJ3NpbmdlcicsICdibHVlJywgJ0RPRywgQ0FUJ107XG4gICAgY29uc3QgaXRlbXMgPSBzZWxlY3RJdGVtcyh7IGRhdGEsIGtleXMsIHNlcGFyYXRvciB9KTtcbiAgICBleHBlY3QoaXRlbXMpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiB0aGUgcmlnaHQgdmFsdWUgd2hlbiBrZXkgaXMgYSBmdW5jdGlvbicsICgpID0+IHtcbiAgICBjb25zdCBub3JtYWxpemVGdW5jID0gdGV4dCA9PiB0ZXh0LnRvVXBwZXJDYXNlKCk7XG4gICAgY29uc3Qga2V5cyA9IFtcbiAgICAgIHsgZGlzcGxheTogJ25hbWUnLCBub3JtYWxpemU6IG5vcm1hbGl6ZUZ1bmMgfSxcbiAgICAgICdzdXJuYW1lJyxcbiAgICAgICdpbmZvLmFnZScsXG4gICAgICAnY29tcGFueS5qb2InLFxuICAgICAgeyBkaXNwbGF5OiAnY29sb3InLCByZXBsYWNlQnk6IFsnY29tcGFueS5jb2xvcicsICdpbmZvLmNvbG9yJ10gfSxcbiAgICAgIGQgPT4gZC5wZXRzLmpvaW4oJywgJykudG9VcHBlckNhc2UoKSxcbiAgICBdO1xuICAgIGNvbnN0IHNlcGFyYXRvciA9ICcsICc7XG4gICAgY29uc3QgZXhwZWN0ZWQgPSBbJ0FOTkUnLCAnYmVsbGEnLCAzNSwgJ3NpbmdlcicsICdibHVlJywgJ0RPRywgQ0FUJ107XG4gICAgY29uc3QgaXRlbXMgPSBzZWxlY3RJdGVtcyh7IGRhdGEsIGtleXMsIHNlcGFyYXRvciB9KTtcbiAgICBleHBlY3QoaXRlbXMpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICB9KTtcbn0pO1xuIl19