1d2a594f0a
* chore: upgrade TS 5.2 -> 5.7.3 * vite dts fix * lint fix * resolutions fix * ui comp build fix * precommit fix? * latest eslint version * autoloader fix * undo unnecessary viewer change * eslint fixes fe2 + trying disabled type linting * lint fixes
51 lines
1.5 KiB
TypeScript
51 lines
1.5 KiB
TypeScript
import type { Optional } from '@speckle/shared'
|
|
import { has, isObjectLike } from 'lodash-es'
|
|
|
|
type TempCookieValue = { expires?: Optional<string>; maxAge?: Optional<number> }
|
|
|
|
const isValidTempCookieValue = (cookie: unknown): cookie is TempCookieValue => {
|
|
if (!isObjectLike(cookie)) return false
|
|
return has(cookie, 'expires') || has(cookie, 'maxAge')
|
|
}
|
|
|
|
export default defineEventHandler((event) => {
|
|
const cookies = parseCookies(event)
|
|
for (const [key, val] of Object.entries(cookies)) {
|
|
if (key.startsWith('tmp-')) {
|
|
// Try reading in cookie settings
|
|
let tempCookieVal: Optional<TempCookieValue> = undefined
|
|
try {
|
|
const parsedVal = JSON.parse(val) as unknown
|
|
if (isValidTempCookieValue(parsedVal)) {
|
|
tempCookieVal = parsedVal
|
|
}
|
|
} catch {
|
|
deleteCookie(event, key)
|
|
continue
|
|
}
|
|
|
|
if (!tempCookieVal) {
|
|
deleteCookie(event, key)
|
|
continue
|
|
}
|
|
|
|
// Try finding cookie that we need to fix
|
|
const cookieName = key.replace('tmp-', '')
|
|
const cookieValue = cookies[cookieName]
|
|
if (!cookieValue) {
|
|
deleteCookie(event, key)
|
|
continue
|
|
}
|
|
|
|
// Create new cookie with the correct settings
|
|
setCookie(event, cookieName, cookieValue, {
|
|
maxAge: tempCookieVal.maxAge,
|
|
expires: tempCookieVal.expires ? new Date(tempCookieVal.expires) : undefined
|
|
})
|
|
deleteCookie(event, key)
|
|
}
|
|
}
|
|
|
|
return { status: 'ok' }
|
|
})
|