🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

nuxt-typed-vuex

Package Overview
Dependencies
Maintainers
1
Versions
39
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nuxt-typed-vuex - npm Package Compare versions

Comparing version

to
0.1.2

7

CHANGELOG.md

@@ -5,2 +5,9 @@ # Changelog

### [0.1.2](https://github.com/danielroe/nuxt-typed-vuex/compare/v0.1.1...v0.1.2) (2019-10-04)
### Features
* add commit and dispatch options ([ef320e7](https://github.com/danielroe/nuxt-typed-vuex/commit/ef320e7))
### 0.1.1 (2019-10-04)

@@ -7,0 +14,0 @@

50

lib/utils.d.ts

@@ -1,3 +0,3 @@

import { Store, GetterTree, MutationTree, ActionTree } from 'vuex';
declare type MergedFunctionProcessor<T extends () => any> = Parameters<T>[1] extends undefined ? () => ReturnType<T> : (payload: Parameters<T>[1]) => ReturnType<T>;
import { Store, GetterTree, MutationTree, ActionTree, DispatchOptions, CommitOptions } from 'vuex';
declare type MergedFunctionProcessor<T extends () => any, O> = Parameters<T>[1] extends undefined ? (options?: O) => ReturnType<T> : (payload: Parameters<T>[1], options?: O) => ReturnType<T>;
declare type GettersTransformer<T extends Record<string, any>> = Readonly<{

@@ -7,6 +7,6 @@ [P in keyof T]: ReturnType<T[P]>;

declare type MutationsTransformer<T extends Record<string, any>> = {
[P in keyof T]: MergedFunctionProcessor<T[P]>;
[P in keyof T]: MergedFunctionProcessor<T[P], CommitOptions>;
};
declare type ActionTransformer<T extends Record<string, any>> = {
[P in keyof T]: MergedFunctionProcessor<T[P]>;
[P in keyof T]: MergedFunctionProcessor<T[P], DispatchOptions>;
};

@@ -16,3 +16,3 @@ declare type ModuleTransformer<T> = T extends NuxtModules ? {

} : {};
declare type BlankStore = {
interface BlankStore {
getters: {};

@@ -22,4 +22,4 @@ mutations: {};

modules: {};
};
declare type NuxtStore = {
}
interface NuxtStore {
state: () => unknown;

@@ -30,7 +30,7 @@ getters: Record<string, any>;

modules: NuxtModules;
};
}
declare type NuxtModules = Record<string, NuxtStore>;
declare type NuxtStoreInput<T extends () => any, G, M, A, S extends {
interface NuxtStoreInput<T extends () => any, G, M, A, S extends {
[key: string]: NuxtStore;
}> = {
}> {
state: T;

@@ -41,17 +41,27 @@ getters?: G;

modules?: S;
};
}
declare type MergedStoreType<T extends NuxtStore> = ReturnType<T['state']> & GettersTransformer<T['getters']> & MutationsTransformer<T['mutations']> & ActionTransformer<T['actions']> & ModuleTransformer<T['modules']>;
declare type StoreParameter<T extends () => any> = Parameters<T>[1] extends undefined ? [] : [Parameters<T>[1]];
declare type FunctionProcessor<M extends Record<string, () => any>> = <P extends keyof M>(mutation: P, ...args: StoreParameter<M[P]>) => ReturnType<M[P]>;
export declare type StoreType<T extends Required<NuxtStore>> = {
state: ReturnType<T['state']> & {
[P in keyof T['modules']]: ReturnType<T['modules'][P]['state']>;
};
declare type StoreParameter<T extends () => any> = Parameters<T>[1] extends undefined ? never : Parameters<T>[1];
interface Dispatch<T extends Record<string, () => any>> {
<P extends keyof T>(action: P, payload: StoreParameter<T[P]>, options?: DispatchOptions): ReturnType<T[P]>;
<P extends keyof T>(action: StoreParameter<T[P]> extends never ? P : never, options?: DispatchOptions): ReturnType<T[P]>;
}
interface Commit<T extends Record<string, () => any>> {
<P extends keyof T>(mutation: P, payload: StoreParameter<T[P]>, options?: DispatchOptions): ReturnType<T[P]>;
<P extends keyof T>(mutation: StoreParameter<T[P]> extends never ? P : never, options?: CommitOptions): ReturnType<T[P]>;
}
export declare type ActionContext<T extends Required<NuxtStore>> = {
state: ReturnType<T['state']>;
getters: {
[P in keyof T['getters']]: ReturnType<T['getters'][P]>;
};
commit: FunctionProcessor<T['mutations']>;
dispatch: FunctionProcessor<T['actions']>;
commit: Commit<T['mutations']>;
dispatch: Dispatch<T['actions']>;
rootState: any;
rootGetters: any;
};
export declare const getStoreType: <T extends () => any, G, M, A, S extends Record<string, NuxtStore>>(store: NuxtStoreInput<T, G, M, A, S>) => StoreType<NuxtStoreInput<T, G, M, A, S> & BlankStore> & Pick<Store<ReturnType<T>>, "app" | "state" | "replaceState" | "subscribe" | "subscribeAction" | "watch" | "registerModule" | "unregisterModule" | "hotUpdate" | "$router">;
export declare const getStoreType: <T extends () => any, G, M, A, S extends Record<string, NuxtStore>>(store: NuxtStoreInput<T, G, M, A, S>) => {
actionContext: ActionContext<NuxtStoreInput<T, G, M, A, S> & BlankStore>;
storeInstance: ActionContext<NuxtStoreInput<T, G, M, A, S> & BlankStore> & Pick<Store<ReturnType<T>>, "app" | "replaceState" | "subscribe" | "subscribeAction" | "watch" | "registerModule" | "unregisterModule" | "hotUpdate" | "$router">;
};
export declare const getAccessorType: <T extends () => any, G extends GetterTree<ReturnType<T>, ReturnType<T>>, M extends MutationTree<ReturnType<T>>, A extends ActionTree<ReturnType<T>, ReturnType<T>>, S extends Record<string, NuxtStore>>(store: NuxtStoreInput<T, G, M, A, S>) => MergedStoreType<NuxtStoreInput<T, G, M, A, S> & BlankStore>;

@@ -58,0 +68,0 @@ export declare const useAccessor: <T extends () => any, G extends GetterTree<ReturnType<T>, ReturnType<T>>, M extends MutationTree<ReturnType<T>>, A extends ActionTree<ReturnType<T>, ReturnType<T>>, S extends Record<string, NuxtStore>>(store: Store<ReturnType<T>>, input: Required<NuxtStoreInput<T, G, M, A, S>>) => MergedStoreType<NuxtStoreInput<T, G, M, A, S> & BlankStore>;

export const getStoreType = (store) => {
return {};
return {
actionContext: {},
storeInstance: {},
};
};

@@ -4,0 +7,0 @@ export const getAccessorType = (store) => {

2

package.json
{
"name": "nuxt-typed-vuex",
"version": "0.1.1",
"version": "0.1.2",
"description": "A typed store accessor for Nuxt.",

@@ -5,0 +5,0 @@ "repository": "danielroe/nuxt-typed-vuex",

@@ -39,5 +39,5 @@ # 🏦 Nuxt Typed Vuex

const storeType = getStoreType(store)
const { storeType, storeInstance } = getStoreType(store)
const store: storeType
const store: storeInstance
// You will now get type checking on getters, actions, state and mutations

@@ -131,4 +131,6 @@ store.commit('SAMPLE_MUTATION', 30)

4. Note that this does not support [object-style commits](https://vuex.vuejs.org/guide/mutations.html#object-style-commit).
## License
[MIT License](./LICENSE) - Copyright &copy; Daniel Roe

Sorry, the diff of this file is not supported yet