https://github.com/js2me/storage-sync-accessor-decorator
https://github.com/js2me/storage-sync-accessor-decorator
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/js2me/storage-sync-accessor-decorator
- Owner: js2me
- License: mit
- Created: 2024-07-19T08:53:01.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2024-12-30T19:27:31.000Z (over 1 year ago)
- Last Synced: 2025-10-30T04:46:07.675Z (8 months ago)
- Language: TypeScript
- Size: 97.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://www.npmjs.com/package/storage-sync-accessor-decorator)
[](https://github.com/js2me/storage-sync-accessor-decorator/blob/master/LICENSE)
# storage-sync-accessor-decorator
Works only for property assignment cases
## Usage
```ts
import { observable } from "mobx";
import { createStorageSyncDecorator } from "storage-sync-accessor-decorator";
const storageSync = createStorageSyncDecorator({
get: ({ key, fallback }) => {
return JSON.parse(localStorage.getItem(key) || '')
},
set: ({ key,value }) => {
localStorage.setItem(key, JSON.stringify(value))
}
})
class SomeModel {
@storageSync({ key: 'foo', fallback: 10 })
accessor foo!: number;
@storageSync({ fallback: 10 }) // key will be 'bar'
accessor bar!: number
@storageSync({ fallback: '100' })
@observable
accessor baz!: number
}
```
## other cases
```ts
import { createStorage, GetFromStorageConfig } from 'yammies/storage';
export const storage = createStorage({
prefix: 'my-prefix',
});
interface StorageSyncDecoratorConfig
extends Omit, 'key' | 'prefix'> {
/**
* Ключ хранилища, если не указан, то будет использовано имя свойства
*/
key?: GetFromStorageConfig['key'];
}
export const storageSync = createStorageSyncDecorator<
StorageSyncDecoratorConfig
>({
get: storage.get,
set: storage.set,
});
```