Skip to content

Commit c4bf761

Browse files
committed
feat(devtools): add getters to devtools
1 parent f1210cf commit c4bf761

File tree

3 files changed

+20
-1
lines changed

3 files changed

+20
-1
lines changed

src/devtools.ts

+9-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
setupDevtoolsPlugin,
55
} from '@vue/devtools-api'
66
import { App } from 'vue'
7-
import { GenericStore } from './types'
7+
import { GenericStore, GettersTree, StateTree } from './types'
88

99
function formatDisplay(display: string) {
1010
return {
@@ -167,6 +167,14 @@ function formatStoreForInspectorState(
167167
const fields: CustomInspectorState[string] = [
168168
{ editable: false, key: 'id', value: formatDisplay(store.$id) },
169169
{ editable: true, key: 'state', value: store.$state },
170+
{
171+
editable: false,
172+
key: 'getters',
173+
value: (store._getters || []).reduce((getters, key) => {
174+
getters[key] = store[key]
175+
return getters
176+
}, {} as GettersTree<StateTree>),
177+
},
170178
]
171179

172180
return fields

src/store.ts

+4
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,10 @@ function buildStoreToUse<
267267
// created.
268268
Object.defineProperty(store, '$state', descriptor)
269269

270+
if (IS_CLIENT && __BROWSER__ && __DEV__) {
271+
store._getters = Object.keys(getters)
272+
}
273+
270274
// apply all plugins
271275
pinia._p.forEach((extender) => {
272276
assign(store, extender({ store, app: pinia._a, pinia, options }))

src/types.ts

+7
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,13 @@ export interface StoreWithState<Id extends string, S extends StateTree> {
6464
*/
6565
_p: Pinia
6666

67+
/**
68+
* Used by devtools plugin to retrieve getters. Removed in production
69+
*
70+
* @internal
71+
*/
72+
_getters?: string[]
73+
6774
/**
6875
* Applies a state patch to current state. Allows passing nested values
6976
*

0 commit comments

Comments
 (0)