# @logosdx/storage

## 2.0.4

### Patch Changes

- Updated dependencies [c419f53]
- Updated dependencies [e907e59]
  - @logosdx/utils@7.1.0
  - @logosdx/observer@2.5.3

## 2.0.3

### Patch Changes

- Updated dependencies [154b5b1]
  - @logosdx/utils@7.0.1
  - @logosdx/observer@2.5.2

## 2.0.2

### Patch Changes

- Updated dependencies [789a406]
  - @logosdx/utils@7.0.0
  - @logosdx/observer@2.5.1

## 2.0.1

### Patch Changes

- Updated dependencies [5b872ff]
  - @logosdx/observer@2.5.0

## 2.0.0

### Major Changes

- 2f9c85c: ## Breaking Changes

  ### Driver-based async architecture

  `StorageAdapter` has been rewritten from the ground up. It no longer extends `EventTarget` and all operations are now `async`. You must provide a `StorageDriver` via the new config object.

  **Before:**

      const storage = new StorageAdapter(localStorage, 'app');

  **After:**

      const storage = new StorageAdapter({
          driver: new LocalStorageDriver(),
          prefix: 'app',
      });

  ### All methods are now async

  Every read and write operation returns a `Promise`. Synchronous usage no longer works.

  ### Event system replaced

  `StorageEventNames` enum and `StorageEvent` class have been removed. Events now use `@logosdx/observer` with plain string literals and deliver a `StorageEventPayload` object.

  | Before                 | After           |
  | ---------------------- | --------------- |
  | `storage-before-set`   | `before-set`    |
  | `storage-after-set`    | `after-set`     |
  | `storage-before-unset` | `before-remove` |
  | `storage-after-unset`  | `after-remove`  |
  | `storage-reset`        | `clear`         |

  `on()` now returns a cleanup function.

  ### `wrap()` renamed to `scope()`

  **Before:**

      const theme = storage.wrap('theme');

  **After:**

      const theme = storage.scope('theme');

  ## Added

  - `feat(storage):` `FileSystemDriver` — JSON file persistence for Node.js
  - `feat(storage):` `IndexedDBDriver` — structured browser storage via IndexedDB
  - `feat(storage):` `WebStorageDriver` base class with `LocalStorageDriver` and `SessionStorageDriver` subclasses
  - `feat(storage):` `structured` config option — disables JSON serialization for drivers that natively handle objects
  - `feat(storage):` `scope(key)` — scoped accessor replacing `wrap()`

### Patch Changes

- Updated dependencies [2f9c85c]
- Updated dependencies [879cea2]
  - @logosdx/observer@2.4.0
  - @logosdx/utils@6.1.0

## 2.0.0-beta.1

### Major Changes

- 2f9c85c: ## Breaking Changes

  ### Driver-based async architecture

  `StorageAdapter` has been rewritten from the ground up. It no longer extends `EventTarget` and all operations are now `async`. You must provide a `StorageDriver` via the new config object.

  **Before:**

      const storage = new StorageAdapter(localStorage, 'app');

  **After:**

      const storage = new StorageAdapter({
          driver: new LocalStorageDriver(),
          prefix: 'app',
      });

  ### All methods are now async

  Every read and write operation returns a `Promise`. Synchronous usage no longer works.

  ### Event system replaced

  `StorageEventNames` enum and `StorageEvent` class have been removed. Events now use `@logosdx/observer` with plain string literals and deliver a `StorageEventPayload` object.

  | Before                 | After           |
  | ---------------------- | --------------- |
  | `storage-before-set`   | `before-set`    |
  | `storage-after-set`    | `after-set`     |
  | `storage-before-unset` | `before-remove` |
  | `storage-after-unset`  | `after-remove`  |
  | `storage-reset`        | `clear`         |

  `on()` now returns a cleanup function.

  ### `wrap()` renamed to `scope()`

  **Before:**

      const theme = storage.wrap('theme');

  **After:**

      const theme = storage.scope('theme');

  ## Added

  - `feat(storage):` `FileSystemDriver` — JSON file persistence for Node.js
  - `feat(storage):` `IndexedDBDriver` — structured browser storage via IndexedDB
  - `feat(storage):` `WebStorageDriver` base class with `LocalStorageDriver` and `SessionStorageDriver` subclasses
  - `feat(storage):` `structured` config option — disables JSON serialization for drivers that natively handle objects
  - `feat(storage):` `scope(key)` — scoped accessor replacing `wrap()`

### Patch Changes

- Updated dependencies [2f9c85c]
- Updated dependencies [879cea2]
  - @logosdx/observer@2.4.0-beta.2
  - @logosdx/utils@6.1.0-beta.1

## 1.0.22-beta.0

### Patch Changes

- Updated dependencies [11e8233]
  - @logosdx/utils@6.1.0-beta.0

## 1.0.21

### Patch Changes

- Updated dependencies [5380675]
  - @logosdx/utils@6.0.0

## 1.0.20

### Patch Changes

- Updated dependencies [ea81582]
  - @logosdx/utils@5.1.0

## 1.0.19

### Patch Changes

- Updated dependencies [582644e]
- Updated dependencies [e4e4f43]
  - @logosdx/utils@5.0.0

## 1.0.18

### Patch Changes

- Updated dependencies [567ed1f]
- Updated dependencies [204dd76]
  - @logosdx/utils@4.0.0

## 1.0.17

### Patch Changes

- Updated dependencies [e6b07d8]
  - @logosdx/utils@3.0.1

## 1.0.16

### Patch Changes

- Updated dependencies [96fe247]
  - @logosdx/utils@3.0.0

## 1.0.15

### Patch Changes

- Updated dependencies [6416ac4]
  - @logosdx/utils@2.5.0

## 1.0.14

### Patch Changes

- Updated dependencies [8fda604]
  - @logosdx/utils@2.4.0

## 1.0.13

### Patch Changes

- Updated dependencies [9edb1c4]
- Updated dependencies [6560f02]
  - @logosdx/utils@2.3.0

## 1.0.12

### Patch Changes

- Updated dependencies [0cf6edd]
- Updated dependencies [0cf6edd]
- Updated dependencies [0cf6edd]
  - @logosdx/utils@2.2.0

## 1.0.11

### Patch Changes

- Updated dependencies [9e6afcd]
  - @logosdx/utils@2.1.2

## 1.0.10

### Patch Changes

- Updated dependencies [2c6c8cc]
  - @logosdx/utils@2.1.1

## 1.0.9

### Patch Changes

- Updated dependencies [755e80d]
  - @logosdx/utils@2.1.0

## 1.0.8

### Patch Changes

- Updated dependencies [cbd0e23]
  - @logosdx/utils@2.0.3

## 1.0.7

### Patch Changes

- eecc5d4: Export type so they aren't compiled into ESM files
- Updated dependencies [eecc5d4]
  - @logosdx/utils@2.0.2

## 1.0.6

### Patch Changes

- 43b3457: ### Fixed

  - Export bug from utils.
  - Better naming for options

- Updated dependencies [43b3457]
  - @logosdx/utils@2.0.1

## 1.0.5

### Patch Changes

- Updated dependencies [68b2d8b]
  - @logosdx/utils@2.0.0

## 1.0.4

### Patch Changes

- 062ceab: Missed update

## 1.0.3

### Patch Changes

- a84138b: Force release due to bad build
- Updated dependencies [1dcc2d1]
- Updated dependencies [a84138b]
  - @logosdx/utils@1.1.0

## 1.0.2

### Patch Changes

- 0704421: publish .d.ts files
- Updated dependencies [0704421]
  - @logosdx/utils@1.0.2

## 1.0.0

### Major Changes

- b051504: Re-release as LogosDX

### Patch Changes

- Updated dependencies [b051504]
  - @logosdx/utils@1.0.0
