UNPKG

ngx-webstorage-service

Version:
84 lines 10.1 kB
/** Transcoder that encodes values as JSON strings. */ export class JsonStorageTranscoder { encode(value) { return JSON.stringify(value); } decode(value) { try { return JSON.parse(value); } catch (error) { return undefined; } } } /** Transcoder that encodes/decodes strings **as is**, i.e. values are not modified in any way. */ export class StringStorageTranscoder { encode(value) { return value; } decode(value) { return value; } } /** Transcoder that encodes/decodes `boolean` values. */ export class BooleanStorageTranscoder { encode(value) { return value.toString(); } decode(value) { if (value === 'true') { return true; } if (value === 'false') { return false; } return undefined; } } /** Transcoder that encodes/decodes `number` values. */ export class NumberStorageTranscoder { encode(value) { return value.toString(); } decode(value) { const parsedNumber = Number(value); return Number.isFinite(parsedNumber) ? parsedNumber : undefined; } } /** Transcoder that encodes/decodes `Date` values to ISO strings. */ export class DateIsoStorageTranscoder { encode(value) { return value.toISOString(); } decode(value) { const timestamp = Date.parse(value); return isNaN(timestamp) ? undefined : new Date(timestamp); } } /** Transcoder that encodes/decodes `Date` values to epoch timestamps. */ export class DateEpochStorageTranscoder { encode(value) { return value.valueOf().toString(); } decode(value) { const timestamp = parseInt(value, 10); return isNaN(timestamp) ? undefined : new Date(timestamp); } } /** A set of storage transcoders. */ export const StorageTranscoders = { /** Transcoder that encodes values as JSON strings. */ JSON: new JsonStorageTranscoder(), /** Transcoder that encodes/decodes strings **as is**, i.e. values are not modified in any way. */ STRING: new StringStorageTranscoder(), /** Transcoder that encodes/decodes `boolean` values. */ BOOLEAN: new BooleanStorageTranscoder(), /** Transcoder that encodes/decodes `number` values. */ NUMBER: new NumberStorageTranscoder(), /** Transcoder that encodes/decodes `Date` values into ISO strings. */ DATE_ISO_STRING: new DateIsoStorageTranscoder(), /** Transcoder that encodes/decodes `Date` values into epoch timestamps. */ DATE_EPOCH_TIME: new DateEpochStorageTranscoder(), }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS10cmFuc2NvZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9zcmMvc3RvcmFnZS10cmFuc2NvZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxzREFBc0Q7QUFDdEQsTUFBTSxPQUFPLHFCQUFxQjtJQUV2QixNQUFNLENBQUMsS0FBVTtRQUNwQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFhO1FBQ3ZCLElBQUk7WUFDQSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUI7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNaLE9BQU8sU0FBUyxDQUFDO1NBQ3BCO0lBQ0wsQ0FBQztDQUVKO0FBRUQsa0dBQWtHO0FBQ2xHLE1BQU0sT0FBTyx1QkFBdUI7SUFDekIsTUFBTSxDQUFDLEtBQWE7UUFDdkIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFhO1FBQ3ZCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSjtBQUVELHdEQUF3RDtBQUN4RCxNQUFNLE9BQU8sd0JBQXdCO0lBQzFCLE1BQU0sQ0FBQyxLQUFjO1FBQ3hCLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBYTtRQUN2QixJQUFJLEtBQUssS0FBSyxNQUFNLEVBQUU7WUFDbEIsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELElBQUksS0FBSyxLQUFLLE9BQU8sRUFBRTtZQUNuQixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7Q0FDSjtBQUVELHVEQUF1RDtBQUN2RCxNQUFNLE9BQU8sdUJBQXVCO0lBQ3pCLE1BQU0sQ0FBQyxLQUFhO1FBQ3ZCLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBYTtRQUN2QixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkMsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNwRSxDQUFDO0NBQ0o7QUFFRCxvRUFBb0U7QUFDcEUsTUFBTSxPQUFPLHdCQUF3QjtJQUMxQixNQUFNLENBQUMsS0FBVztRQUNyQixPQUFPLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQWE7UUFDdkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwQyxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5RCxDQUFDO0NBQ0o7QUFFRCx5RUFBeUU7QUFDekUsTUFBTSxPQUFPLDBCQUEwQjtJQUM1QixNQUFNLENBQUMsS0FBVztRQUNyQixPQUFPLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQWE7UUFDdkIsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV0QyxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5RCxDQUFDO0NBQ0o7QUFFRCxvQ0FBb0M7QUFDcEMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDOUIsc0RBQXNEO0lBQ3RELElBQUksRUFBRSxJQUFJLHFCQUFxQixFQUE0QjtJQUUzRCxrR0FBa0c7SUFDbEcsTUFBTSxFQUFFLElBQUksdUJBQXVCLEVBQStCO0lBRWxFLHdEQUF3RDtJQUN4RCxPQUFPLEVBQUUsSUFBSSx3QkFBd0IsRUFBZ0M7SUFFckUsdURBQXVEO0lBQ3ZELE1BQU0sRUFBRSxJQUFJLHVCQUF1QixFQUErQjtJQUVsRSxzRUFBc0U7SUFDdEUsZUFBZSxFQUFFLElBQUksd0JBQXdCLEVBQTZCO0lBRTFFLDJFQUEyRTtJQUMzRSxlQUFlLEVBQUUsSUFBSSwwQkFBMEIsRUFBNkI7Q0FDL0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0b3JhZ2VUcmFuc2NvZGVyIH0gZnJvbSAnLi9zdG9yYWdlLXRyYW5zY29kZXInO1xuXG4vKiogVHJhbnNjb2RlciB0aGF0IGVuY29kZXMgdmFsdWVzIGFzIEpTT04gc3RyaW5ncy4gKi9cbmV4cG9ydCBjbGFzcyBKc29uU3RvcmFnZVRyYW5zY29kZXIgaW1wbGVtZW50cyBTdG9yYWdlVHJhbnNjb2Rlcjxhbnk+IHtcblxuICAgIHB1YmxpYyBlbmNvZGUodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlY29kZSh2YWx1ZTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHZhbHVlKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuLyoqIFRyYW5zY29kZXIgdGhhdCBlbmNvZGVzL2RlY29kZXMgc3RyaW5ncyAqKmFzIGlzKiosIGkuZS4gdmFsdWVzIGFyZSBub3QgbW9kaWZpZWQgaW4gYW55IHdheS4gKi9cbmV4cG9ydCBjbGFzcyBTdHJpbmdTdG9yYWdlVHJhbnNjb2RlciBpbXBsZW1lbnRzIFN0b3JhZ2VUcmFuc2NvZGVyPHN0cmluZz4ge1xuICAgIHB1YmxpYyBlbmNvZGUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVjb2RlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxufVxuXG4vKiogVHJhbnNjb2RlciB0aGF0IGVuY29kZXMvZGVjb2RlcyBgYm9vbGVhbmAgdmFsdWVzLiAqL1xuZXhwb3J0IGNsYXNzIEJvb2xlYW5TdG9yYWdlVHJhbnNjb2RlciBpbXBsZW1lbnRzIFN0b3JhZ2VUcmFuc2NvZGVyPGJvb2xlYW4+IHtcbiAgICBwdWJsaWMgZW5jb2RlKHZhbHVlOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlY29kZSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJ3RydWUnKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09ICdmYWxzZScpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufVxuXG4vKiogVHJhbnNjb2RlciB0aGF0IGVuY29kZXMvZGVjb2RlcyBgbnVtYmVyYCB2YWx1ZXMuICovXG5leHBvcnQgY2xhc3MgTnVtYmVyU3RvcmFnZVRyYW5zY29kZXIgaW1wbGVtZW50cyBTdG9yYWdlVHJhbnNjb2RlcjxudW1iZXI+IHtcbiAgICBwdWJsaWMgZW5jb2RlKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVjb2RlKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBwYXJzZWROdW1iZXIgPSBOdW1iZXIodmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUocGFyc2VkTnVtYmVyKSA/IHBhcnNlZE51bWJlciA6IHVuZGVmaW5lZDtcbiAgICB9XG59XG5cbi8qKiBUcmFuc2NvZGVyIHRoYXQgZW5jb2Rlcy9kZWNvZGVzIGBEYXRlYCB2YWx1ZXMgdG8gSVNPIHN0cmluZ3MuICovXG5leHBvcnQgY2xhc3MgRGF0ZUlzb1N0b3JhZ2VUcmFuc2NvZGVyIGltcGxlbWVudHMgU3RvcmFnZVRyYW5zY29kZXI8RGF0ZT4ge1xuICAgIHB1YmxpYyBlbmNvZGUodmFsdWU6IERhdGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWUudG9JU09TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVjb2RlKHZhbHVlOiBzdHJpbmcpOiBEYXRlIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5wYXJzZSh2YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIGlzTmFOKHRpbWVzdGFtcCkgPyB1bmRlZmluZWQgOiBuZXcgRGF0ZSh0aW1lc3RhbXApO1xuICAgIH1cbn1cblxuLyoqIFRyYW5zY29kZXIgdGhhdCBlbmNvZGVzL2RlY29kZXMgYERhdGVgIHZhbHVlcyB0byBlcG9jaCB0aW1lc3RhbXBzLiAqL1xuZXhwb3J0IGNsYXNzIERhdGVFcG9jaFN0b3JhZ2VUcmFuc2NvZGVyIGltcGxlbWVudHMgU3RvcmFnZVRyYW5zY29kZXI8RGF0ZT4ge1xuICAgIHB1YmxpYyBlbmNvZGUodmFsdWU6IERhdGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWUudmFsdWVPZigpLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlY29kZSh2YWx1ZTogc3RyaW5nKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG5cbiAgICAgICAgcmV0dXJuIGlzTmFOKHRpbWVzdGFtcCkgPyB1bmRlZmluZWQgOiBuZXcgRGF0ZSh0aW1lc3RhbXApO1xuICAgIH1cbn1cblxuLyoqIEEgc2V0IG9mIHN0b3JhZ2UgdHJhbnNjb2RlcnMuICovXG5leHBvcnQgY29uc3QgU3RvcmFnZVRyYW5zY29kZXJzID0ge1xuICAgIC8qKiBUcmFuc2NvZGVyIHRoYXQgZW5jb2RlcyB2YWx1ZXMgYXMgSlNPTiBzdHJpbmdzLiAqL1xuICAgIEpTT046IG5ldyBKc29uU3RvcmFnZVRyYW5zY29kZXIoKSBhcyBTdG9yYWdlVHJhbnNjb2Rlcjxhbnk+LFxuXG4gICAgLyoqIFRyYW5zY29kZXIgdGhhdCBlbmNvZGVzL2RlY29kZXMgc3RyaW5ncyAqKmFzIGlzKiosIGkuZS4gdmFsdWVzIGFyZSBub3QgbW9kaWZpZWQgaW4gYW55IHdheS4gKi9cbiAgICBTVFJJTkc6IG5ldyBTdHJpbmdTdG9yYWdlVHJhbnNjb2RlcigpIGFzIFN0b3JhZ2VUcmFuc2NvZGVyPHN0cmluZz4sXG5cbiAgICAvKiogVHJhbnNjb2RlciB0aGF0IGVuY29kZXMvZGVjb2RlcyBgYm9vbGVhbmAgdmFsdWVzLiAqL1xuICAgIEJPT0xFQU46IG5ldyBCb29sZWFuU3RvcmFnZVRyYW5zY29kZXIoKSBhcyBTdG9yYWdlVHJhbnNjb2Rlcjxib29sZWFuPixcblxuICAgIC8qKiBUcmFuc2NvZGVyIHRoYXQgZW5jb2Rlcy9kZWNvZGVzIGBudW1iZXJgIHZhbHVlcy4gKi9cbiAgICBOVU1CRVI6IG5ldyBOdW1iZXJTdG9yYWdlVHJhbnNjb2RlcigpIGFzIFN0b3JhZ2VUcmFuc2NvZGVyPG51bWJlcj4sXG5cbiAgICAvKiogVHJhbnNjb2RlciB0aGF0IGVuY29kZXMvZGVjb2RlcyBgRGF0ZWAgdmFsdWVzIGludG8gSVNPIHN0cmluZ3MuICovXG4gICAgREFURV9JU09fU1RSSU5HOiBuZXcgRGF0ZUlzb1N0b3JhZ2VUcmFuc2NvZGVyKCkgYXMgU3RvcmFnZVRyYW5zY29kZXI8RGF0ZT4sXG5cbiAgICAvKiogVHJhbnNjb2RlciB0aGF0IGVuY29kZXMvZGVjb2RlcyBgRGF0ZWAgdmFsdWVzIGludG8gZXBvY2ggdGltZXN0YW1wcy4gKi9cbiAgICBEQVRFX0VQT0NIX1RJTUU6IG5ldyBEYXRlRXBvY2hTdG9yYWdlVHJhbnNjb2RlcigpIGFzIFN0b3JhZ2VUcmFuc2NvZGVyPERhdGU+LFxufTtcbiJdfQ==