Spaces:
Runtime error
Runtime error
import { getContext } from 'svelte'; | |
import { browser } from './env.js'; | |
import '../env.js'; | |
// TODO remove this (for 1.0? after 1.0?) | |
let warned = false; | |
function stores() { | |
if (!warned) { | |
console.error('stores() is deprecated; use getStores() instead'); | |
warned = true; | |
} | |
return getStores(); | |
} | |
/** | |
* @type {import('$app/stores').getStores} | |
*/ | |
const getStores = () => { | |
const stores = getContext('__svelte__'); | |
return { | |
page: { | |
subscribe: stores.page.subscribe | |
}, | |
navigating: { | |
subscribe: stores.navigating.subscribe | |
}, | |
// TODO remove this (for 1.0? after 1.0?) | |
// @ts-expect-error - deprecated, not part of type definitions, but still callable | |
get preloading() { | |
console.error('stores.preloading is deprecated; use stores.navigating instead'); | |
return { | |
subscribe: stores.navigating.subscribe | |
}; | |
}, | |
session: stores.session, | |
updated: stores.updated | |
}; | |
}; | |
/** @type {typeof import('$app/stores').page} */ | |
const page = { | |
/** @param {(value: any) => void} fn */ | |
subscribe(fn) { | |
const store = getStores().page; | |
return store.subscribe(fn); | |
} | |
}; | |
/** @type {typeof import('$app/stores').navigating} */ | |
const navigating = { | |
subscribe(fn) { | |
const store = getStores().navigating; | |
return store.subscribe(fn); | |
} | |
}; | |
/** @param {string} verb */ | |
const throw_error = (verb) => { | |
throw new Error( | |
browser | |
? `Cannot ${verb} session store before subscribing` | |
: `Can only ${verb} session store in browser` | |
); | |
}; | |
/** @type {typeof import('$app/stores').session} */ | |
const session = { | |
subscribe(fn) { | |
const store = getStores().session; | |
if (browser) { | |
session.set = store.set; | |
session.update = store.update; | |
} | |
return store.subscribe(fn); | |
}, | |
set: () => throw_error('set'), | |
update: () => throw_error('update') | |
}; | |
/** @type {typeof import('$app/stores').updated} */ | |
const updated = { | |
subscribe(fn) { | |
const store = getStores().updated; | |
if (browser) { | |
updated.check = store.check; | |
} | |
return store.subscribe(fn); | |
}, | |
check: () => throw_error('check') | |
}; | |
export { getStores, navigating, page, session, stores, updated }; | |