| 'use strict'; |
| const { |
| ObjectDefineProperties, |
| } = primordials; |
| const { ERR_INVALID_ARG_VALUE } = require('internal/errors').codes; |
| const { getOptionValue } = require('internal/options'); |
| const { emitExperimentalWarning } = require('internal/util'); |
| const { kConstructorKey, Storage } = internalBinding('webstorage'); |
| const { getValidatedPath } = require('internal/fs/utils'); |
| const kInMemoryPath = ':memory:'; |
| |
| emitExperimentalWarning('Web Storage'); |
| |
| module.exports = { Storage }; |
| |
| let lazyLocalStorage; |
| let lazySessionStorage; |
| |
| ObjectDefineProperties(module.exports, { |
| __proto__: null, |
| localStorage: { |
| __proto__: null, |
| configurable: true, |
| enumerable: true, |
| get() { |
| if (lazyLocalStorage === undefined) { |
| const location = getOptionValue('--localstorage-file'); |
| |
| if (location === '') { |
| throw new ERR_INVALID_ARG_VALUE('--localstorage-file', |
| location, |
| 'is an invalid localStorage location'); |
| } |
| |
| lazyLocalStorage = new Storage(kConstructorKey, getValidatedPath(location)); |
| } |
| |
| return lazyLocalStorage; |
| }, |
| }, |
| sessionStorage: { |
| __proto__: null, |
| configurable: true, |
| enumerable: true, |
| get() { |
| if (lazySessionStorage === undefined) { |
| lazySessionStorage = new Storage(kConstructorKey, kInMemoryPath); |
| } |
| |
| return lazySessionStorage; |
| }, |
| }, |
| }); |