diff --git a/src/stores/data.mjs b/src/stores/data.mjs index 595cd85..4946080 100644 --- a/src/stores/data.mjs +++ b/src/stores/data.mjs @@ -6,8 +6,8 @@ import { getEmptyPreviewData, usePagePreviewStore } from './pagePreview.mjs'; function defineEndpointStore(id, endpoint, transform = null) { return defineStore(`data/${id}`, () => { const loadedData = shallowRef(null); - const preview = import.meta.env.DEV ? usePagePreviewStore() : null; - const data = import.meta.env.DEV + const preview = import.meta.env?.DEV ? usePagePreviewStore() : null; + const data = import.meta.env?.DEV ? computed(() => preview.mode === 'empty' ? getEmptyPreviewData(id) : loadedData.value) : loadedData; const isUpdating = ref(false); diff --git a/src/stores/data.node.test.mjs b/src/stores/data.node.test.mjs new file mode 100644 index 0000000..bb4b72e --- /dev/null +++ b/src/stores/data.node.test.mjs @@ -0,0 +1,20 @@ +import { execFileSync } from 'node:child_process'; +import { describe, expect, it } from 'vitest'; + +describe('data stores in Node', () => { + it('initializes shared stores without Vite', () => { + const script = ` + import { createPinia, setActivePinia } from 'pinia'; + import { useDataStore } from './src/stores/data.mjs'; + + setActivePinia(createPinia()); + useDataStore(); + `; + + expect(() => execFileSync(process.execPath, [ + '--input-type=module', + '--eval', + script, + ], { cwd: process.cwd(), stdio: 'pipe' })).not.toThrow(); + }); +}); diff --git a/src/stores/pagePreview.mjs b/src/stores/pagePreview.mjs index 70a43c6..937ab30 100644 --- a/src/stores/pagePreview.mjs +++ b/src/stores/pagePreview.mjs @@ -1,6 +1,6 @@ import { defineStore } from 'pinia'; -export const usePagePreviewStore = import.meta.env.DEV +export const usePagePreviewStore = import.meta.env?.DEV ? defineStore('debug/pagePreview', { state: () => ({ mode: 'live' }), })