2.2.1 • Published 3 months ago

pinia-plugin-store v2.2.1

Weekly downloads
-
License
MIT
Repository
github
Last release
3 months ago

pinia-plugin-store

pinia tools plugin

npm version Alt Alt

install

npm i pinia-plugin-store

API

propertytypedescriptiondefault
stores(string Ι StoreOptions)[]pinia store keys(specify the store that needs to be persiste)undefined
storagestoragepersistent strategylocalStorage
encrypt(value: string) => stringpersistent encryptionundefined
decrypt(value: string) => stringpersistent decryptionundefined

Example

theme.ts
import { defineStore } from 'pinia';

export const useThemeStore = defineStore({
  id: 'theme_store',
  state: () => ({
    theme: 'dark',
  }),
  actions: {
    setTheme(theme: string) {
      this.theme = theme;
    },
  },
});
store.ts (Example 1)
simple configuration
import { createPinia } from 'pinia';
import { storePlugin } from 'pinia-plugin-store';

const store = createPinia();

const plugin = storePlugin({
  stores: ['theme_store'],
});

store.use(plugin);

export default store;
store.ts (Example 2)
specify a storage alone
import { createPinia } from 'pinia';
import { storePlugin } from 'pinia-plugin-store';

const store = createPinia();

const plugin = storePlugin({
  stores: [{ name: 'theme_store', storage: sessionStorage }, 'user_store'],
  storage: localStorage,
});
store.use(plugin);

export default store;
store.ts (Example 3)
encryption
import { createPinia } from 'pinia';
import { storePlugin } from 'pinia-plugin-store';
import Utf8 from 'crypto-js/enc-utf8';
import Base64 from 'crypto-js/enc-base64';

const store = createPinia();

function encrypt(value: string): string {
  return Base64.stringify(Utf8.parse(value));
}

function decrypt(value: string): string {
  return Base64.parse(value).toString(Utf8);
}

const plugin = storePlugin({
  stores: [{ name: 'theme_store' }],
  encrypt,
  decrypt,
});

store.use(plugin);

export default store;
store.ts (Example 4)
disable encryption
import { createPinia } from 'pinia';
import { storePlugin } from 'pinia-plugin-store';
import Utf8 from 'crypto-js/enc-utf8';
import Base64 from 'crypto-js/enc-base64';

const store = createPinia();

function encrypt(value: string): string {
  return Base64.stringify(Utf8.parse(value));
}

function decrypt(value: string): string {
  return Base64.parse(value).toString(Utf8);
}

const plugin = storePlugin({
  stores: [{ name: 'theme_store', ciphertext: false }],
  storage: localStorage,
  encrypt,
  decrypt,
});

store.use(plugin);

export default store;
main.ts
import { createApp } from 'vue';
import store from './store';
import App from './App.vue';

const app = createApp(App);
app.use(store);
app.mount('#app');
2.2.1

3 months ago

2.2.0

6 months ago

2.1.37

6 months ago

2.1.19

12 months ago

2.1.21

10 months ago

2.1.20

12 months ago

2.1.36

8 months ago

2.1.34

9 months ago

2.1.35

9 months ago

2.1.32

10 months ago

2.1.33

10 months ago

2.1.30

10 months ago

2.1.31

10 months ago

2.1.18

12 months ago

2.1.17

1 year ago

2.1.16

1 year ago

2.1.14

1 year ago

2.1.15

1 year ago

2.1.12

2 years ago

2.1.13

1 year ago

2.1.10

2 years ago

2.1.11

2 years ago

2.1.2

2 years ago

2.1.1

2 years ago

2.1.4

2 years ago

2.1.3

2 years ago

2.1.6

2 years ago

2.1.5

2 years ago

2.1.8

2 years ago

2.1.7

2 years ago

2.1.9

2 years ago

2.0.7

2 years ago

2.0.6

2 years ago

2.1.0

2 years ago

2.0.5

2 years ago

2.0.4

2 years ago

2.0.3

2 years ago

2.0.2

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago