📄 index.ts¶
📊 Analysis Summary¶
| Metric | Count |
|---|---|
| 🔧 Functions | 16 |
| 📦 Imports | 4 |
| 📊 Variables & Constants | 2 |
| 📑 Type Aliases | 1 |
📚 Table of Contents¶
🛠️ File Location:¶
📂 packages/integrations/useCookies/index.ts
📦 Imports¶
| Name | Source |
|---|---|
IncomingMessage |
node:http |
tryOnScopeDispose |
@vueuse/shared |
Cookie |
universal-cookie |
shallowRef |
vue |
Variables & Constants¶
| Name | Type | Kind | Value | Exported |
|---|---|---|---|---|
universalCookie |
any |
const | new Cookie(req ? req.headers.cookie : null) |
✗ |
watchingDependencies |
string[] |
const | autoUpdateDependencies ? [...dependencies || []] : dependencies |
✗ |
Functions¶
createCookies(req: IncomingMessage): (dependencies?: string[], { doNotParse, autoUpdateDependencies }?: { doNotParse?: boolean; autoUpdateDependencies?: boolean; }) => { get: <T = any>(...args: unknown[]) => any; getAll: <T = any>(...args: unknown[]) => any; set: (...args: unknown[]) => any; remove: (...args: unknown[]) => any; addChangeListener: (...a...¶
Code
export function createCookies(req?: IncomingMessage) {
const universalCookie = new Cookie(req ? req.headers.cookie : null)
return (
dependencies?: string[] | null,
{ doNotParse = false, autoUpdateDependencies = false } = {},
) => useCookies(dependencies, { doNotParse, autoUpdateDependencies }, universalCookie)
}
-
JSDoc:
/** * Creates a new {@link useCookies} function * @param req - incoming http request (for SSR) * @see https://github.com/reactivestack/cookies/tree/master/packages/universal-cookie universal-cookie * @description Creates universal-cookie instance using request (default is window.document.cookie) and returns {@link useCookies} function with provided universal-cookie instance */ -
Parameters:
req: IncomingMessage- Return Type:
(dependencies?: string[], { doNotParse, autoUpdateDependencies }?: { doNotParse?: boolean; autoUpdateDependencies?: boolean; }) => { get: <T = any>(...args: unknown[]) => any; getAll: <T = any>(...args: unknown[]) => any; set: (...args: unknown[]) => any; remove: (...args: unknown[]) => any; addChangeListener: (...a... - Calls:
useCookies
useCookies(dependencies: string[] | null, { doNotParse = false, autoUpdateDependencies = false }: any, cookies: any): { get: <T = any>(...args: unknown[]) => any; getAll: <T = any>(...args: unknown[]) => any; set: (...args: unknown[]) => any; remove: (...args: unknown[]) => any; addChangeListener: (...args: unknown[]) => any; removeChangeListener: (...args: unknown[]) => any; }¶
Code
export function useCookies(
dependencies?: string[] | null,
{ doNotParse = false, autoUpdateDependencies = false } = {},
cookies = new Cookie(),
) {
const watchingDependencies = autoUpdateDependencies ? [...dependencies || []] : dependencies
let previousCookies = cookies.getAll<RawCookies>({ doNotParse: true })
/**
* Adds reactivity to get/getAll methods
*/
const touches = shallowRef(0)
const onChange = () => {
const newCookies = cookies.getAll({ doNotParse: true })
if (
shouldUpdate(
watchingDependencies || null,
newCookies,
previousCookies,
)
) {
touches.value++
}
previousCookies = newCookies
}
cookies.addChangeListener(onChange)
tryOnScopeDispose(() => {
cookies.removeChangeListener(onChange)
})
return {
/**
* Reactive get cookie by name. If **autoUpdateDependencies = true** then it will update watching dependencies
*/
get: <T = any>(...args: Parameters<Cookie['get']>) => {
/**
* Auto update watching dependencies if needed
*/
if (autoUpdateDependencies && watchingDependencies && !watchingDependencies.includes(args[0]))
watchingDependencies.push(args[0])
// eslint-disable-next-line ts/no-unused-expressions
touches.value // adds reactivity to method
return cookies.get<T>(args[0], { doNotParse, ...args[1] })
},
/**
* Reactive get all cookies
*/
getAll: <T = any>(...args: Parameters<Cookie['getAll']>) => {
// eslint-disable-next-line ts/no-unused-expressions
touches.value // adds reactivity to method
return cookies.getAll<T>({ doNotParse, ...args[0] })
},
set: (...args: Parameters<Cookie['set']>) => cookies.set(...args),
remove: (...args: Parameters<Cookie['remove']>) => cookies.remove(...args),
addChangeListener: (...args: Parameters<Cookie['addChangeListener']>) => cookies.addChangeListener(...args),
removeChangeListener: (...args: Parameters<Cookie['removeChangeListener']>) => cookies.removeChangeListener(...args),
}
}
-
JSDoc:
/** * Reactive methods to work with cookies (use {@link createCookies} method instead if you are using SSR) * @param dependencies - array of watching cookie's names. Pass empty array if don't want to watch cookies changes. * @param options * @param options.doNotParse - don't try parse value as JSON * @param options.autoUpdateDependencies - automatically update watching dependencies * @param cookies - universal-cookie instance */ -
Parameters:
dependencies: string[] | null{ doNotParse = false, autoUpdateDependencies = false }: anycookies: any- Return Type:
{ get: <T = any>(...args: unknown[]) => any; getAll: <T = any>(...args: unknown[]) => any; set: (...args: unknown[]) => any; remove: (...args: unknown[]) => any; addChangeListener: (...args: unknown[]) => any; removeChangeListener: (...args: unknown[]) => any; } - Calls:
cookies.getAllshallowRef (from vue)shouldUpdatecookies.addChangeListenertryOnScopeDispose (from @vueuse/shared)cookies.removeChangeListenerwatchingDependencies.includeswatchingDependencies.pushcookies.getcookies.setcookies.remove- Internal Comments:
/** * Adds reactivity to get/getAll methods */ (x2) /** * Reactive get cookie by name. If **autoUpdateDependencies = true** then it will update watching dependencies */ (x2) /** * Auto update watching dependencies if needed */ // eslint-disable-next-line ts/no-unused-expressions (x6) /** * Reactive get all cookies */ (x2)
onChange(): void¶
Code
- Return Type:
void - Calls:
cookies.getAllshouldUpdate
get(args: Parameters<Cookie['get']>): any¶
Code
<T = any>(...args: Parameters<Cookie['get']>) => {
/**
* Auto update watching dependencies if needed
*/
if (autoUpdateDependencies && watchingDependencies && !watchingDependencies.includes(args[0]))
watchingDependencies.push(args[0])
// eslint-disable-next-line ts/no-unused-expressions
touches.value // adds reactivity to method
return cookies.get<T>(args[0], { doNotParse, ...args[1] })
}
- Parameters:
args: Parameters<Cookie['get']>- Return Type:
any - Calls:
watchingDependencies.includeswatchingDependencies.pushcookies.get- Internal Comments:
getAll(args: Parameters<Cookie['getAll']>): any¶
Code
- Parameters:
args: Parameters<Cookie['getAll']>- Return Type:
any - Calls:
cookies.getAll- Internal Comments:
set(args: Parameters<Cookie['set']>): any¶
- Parameters:
args: Parameters<Cookie['set']>- Return Type:
any - Calls:
cookies.set
remove(args: Parameters<Cookie['remove']>): any¶
- Parameters:
args: Parameters<Cookie['remove']>- Return Type:
any - Calls:
cookies.remove
addChangeListener(args: Parameters<Cookie['addChangeListener']>): any¶
- Parameters:
args: Parameters<Cookie['addChangeListener']>- Return Type:
any - Calls:
cookies.addChangeListener
removeChangeListener(args: Parameters<Cookie['removeChangeListener']>): any¶
- Parameters:
args: Parameters<Cookie['removeChangeListener']>- Return Type:
any - Calls:
cookies.removeChangeListener
get(args: Parameters<Cookie['get']>): any¶
Code
<T = any>(...args: Parameters<Cookie['get']>) => {
/**
* Auto update watching dependencies if needed
*/
if (autoUpdateDependencies && watchingDependencies && !watchingDependencies.includes(args[0]))
watchingDependencies.push(args[0])
// eslint-disable-next-line ts/no-unused-expressions
touches.value // adds reactivity to method
return cookies.get<T>(args[0], { doNotParse, ...args[1] })
}
- Parameters:
args: Parameters<Cookie['get']>- Return Type:
any - Calls:
watchingDependencies.includeswatchingDependencies.pushcookies.get- Internal Comments:
getAll(args: Parameters<Cookie['getAll']>): any¶
Code
- Parameters:
args: Parameters<Cookie['getAll']>- Return Type:
any - Calls:
cookies.getAll- Internal Comments:
set(args: Parameters<Cookie['set']>): any¶
- Parameters:
args: Parameters<Cookie['set']>- Return Type:
any - Calls:
cookies.set
remove(args: Parameters<Cookie['remove']>): any¶
- Parameters:
args: Parameters<Cookie['remove']>- Return Type:
any - Calls:
cookies.remove
addChangeListener(args: Parameters<Cookie['addChangeListener']>): any¶
- Parameters:
args: Parameters<Cookie['addChangeListener']>- Return Type:
any - Calls:
cookies.addChangeListener
removeChangeListener(args: Parameters<Cookie['removeChangeListener']>): any¶
- Parameters:
args: Parameters<Cookie['removeChangeListener']>- Return Type:
any - Calls:
cookies.removeChangeListener
shouldUpdate(dependencies: string[] | null, newCookies: RawCookies, oldCookies: RawCookies): boolean¶
Code
- Parameters:
dependencies: string[] | nullnewCookies: RawCookiesoldCookies: RawCookies- Return Type:
boolean