@barchart/common-node-js
Version:
Common classes, utilities, and functions for building Node.js servers
60 lines (46 loc) • 1.19 kB
JavaScript
const array = require('@barchart/common-js/lang/array'),
assert = require('@barchart/common-js/lang/assert');
const AttributeSerializer = require('./AttributeSerializer'),
DataType = require('./../../definitions/DataType');
module.exports = (() => {
'use strict';
/**
* Converts a string set into (and back from) the representation used
* on a DynamoDB record.
*
* @public
* @extends {AttributeSerializer}
*/
class StringSetSerializer extends AttributeSerializer {
constructor() {
super();
}
serialize(items) {
assert.argumentIsArray(items, 'items', String);
if (items.length !== array.unique(items).length) {
throw new Error('Could not serialize set of strings. Items must be unique.');
}
const wrapper = { };
wrapper[DataType.STRING_SET.code] = items;
return wrapper;
}
deserialize(wrapper) {
return wrapper[DataType.STRING_SET.code];
}
/**
* A singleton.
*
* @public
* @static
* @returns {StringSetSerializer}
*/
static get INSTANCE() {
return instance;
}
toString() {
return '[StringSetSerializer]';
}
}
const instance = new StringSetSerializer();
return StringSetSerializer;
})();