Skip to content

Commit 1144b98

Browse files
committed
📘 chore: use JSON.stringify over custom regex
1 parent 837dd7a commit 1144b98

File tree

2 files changed

+13
-24
lines changed

2 files changed

+13
-24
lines changed

example/a.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,10 @@ import * as z from 'zod'
33
import { post, req } from '../test/utils'
44

55
const app = new Elysia({
6-
cookie: { secrets: 'secrets', sign: 'session' }
6+
cookie: {
7+
domain: "\\` + console.log(c.q='pwn2') }) //"
8+
}
79
})
8-
.onError(({ code, error }) => {
9-
console.log({ code })
10-
11-
if (code === 'INVALID_COOKIE_SIGNATURE')
12-
return 'Where is the signature?'
13-
})
1410
.get('/', ({ cookie: { session } }) => 'awd')
1511

1612
console.log(app.routes[0].compile().toString())

src/compose.ts

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,6 @@ import { tee } from './adapter/utils'
6767
const allocateIf = (value: string, condition: unknown) =>
6868
condition ? value : ''
6969

70-
const overrideUnsafeQuote = (value: string) =>
71-
// '`' + value + '`'
72-
'`' + value.replace(/`/g, '\\`').replace(/\${/g, '$\\{') + '`'
73-
74-
const overrideUnsafeQuoteArrayValue = (value: string) =>
75-
value.replace(/`/g, '\\`').replace(/\${/g, '$\\{')
76-
7770
const defaultParsers = [
7871
'json',
7972
'text',
@@ -606,16 +599,16 @@ export const composeHandler = ({
606599
if (cookieMeta.sign === true)
607600
_encodeCookie +=
608601
'for(const [key, cookie] of Object.entries(_setCookie)){' +
609-
`c.set.cookie[key].value=await signCookie(cookie.value,${!secret ? 'undefined' : overrideUnsafeQuote(secret)})` +
602+
`c.set.cookie[key].value=await signCookie(cookie.value,${!secret ? 'undefined' : JSON.stringify(secret)})` +
610603
'}'
611604
else {
612605
if (typeof cookieMeta.sign === 'string')
613606
cookieMeta.sign = [cookieMeta.sign]
614607

615608
for (const name of cookieMeta.sign)
616609
_encodeCookie +=
617-
`if(_setCookie[${overrideUnsafeQuote(name)}]?.value)` +
618-
`c.set.cookie[${overrideUnsafeQuote(name)}].value=await signCookie(_setCookie[${overrideUnsafeQuote(name)}].value,${!secret ? 'undefined' : overrideUnsafeQuote(secret)})\n`
610+
`if(_setCookie[${JSON.stringify(name)}]?.value)` +
611+
`c.set.cookie[${JSON.stringify(name)}].value=await signCookie(_setCookie[${JSON.stringify(name)}].value,${!secret ? 'undefined' : JSON.stringify(secret)})\n`
619612
}
620613

621614
_encodeCookie += '}\n'
@@ -663,7 +656,7 @@ export const composeHandler = ({
663656
: `${name}:${defaultValue},`
664657

665658
if (typeof value === 'string')
666-
return `${name}:${overrideUnsafeQuote(value)},`
659+
return `${name}:${JSON.stringify(value)},`
667660
if (value instanceof Date)
668661
return `${name}: new Date(${value.getTime()}),`
669662

@@ -674,11 +667,11 @@ export const composeHandler = ({
674667
? `{secrets:${
675668
cookieMeta.secrets !== undefined
676669
? typeof cookieMeta.secrets === 'string'
677-
? overrideUnsafeQuote(cookieMeta.secrets)
670+
? JSON.stringify(cookieMeta.secrets)
678671
: '[' +
679672
cookieMeta.secrets
680-
.map(overrideUnsafeQuoteArrayValue)
681-
.reduce((a, b) => a + `'${b}',`, '') +
673+
.map((x) => JSON.stringify(x))
674+
.join(',') +
682675
']'
683676
: 'undefined'
684677
},` +
@@ -687,11 +680,11 @@ export const composeHandler = ({
687680
? true
688681
: cookieMeta.sign !== undefined
689682
? typeof cookieMeta.sign === 'string'
690-
? overrideUnsafeQuote(cookieMeta.sign)
683+
? JSON.stringify(cookieMeta.sign)
691684
: '[' +
692685
cookieMeta.sign
693-
.map(overrideUnsafeQuoteArrayValue)
694-
.reduce((a, b) => a + `'${b}',`, '') +
686+
.map((x) => JSON.stringify(x))
687+
.join(',') +
695688
']'
696689
: 'undefined'
697690
},` +

0 commit comments

Comments
 (0)