Skip to content

Commit 21e7678

Browse files
committed
refactor: use internal base64 utils
1 parent 4a1c1d7 commit 21e7678

3 files changed

Lines changed: 9 additions & 10 deletions

File tree

src/base64.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@
55
* @copyright Boring Node
66
*/
77

8-
export function base64UrlEncode(
9-
data: ArrayBuffer | SharedArrayBuffer | Uint8Array | Buffer
10-
): string {
11-
const buffer = Buffer.from(data as any)
8+
export function base64UrlEncode(data: Uint8Array | Buffer | string): string {
9+
const buffer = Buffer.from(data)
1210

1311
return buffer.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '')
1412
}

src/message_verifier.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
*/
77

88
import { createHash } from 'node:crypto'
9-
import { base64, MessageBuilder, RuntimeException } from '@poppinss/utils'
9+
import { MessageBuilder, RuntimeException } from '@poppinss/utils'
10+
import { base64UrlEncode, base64UrlDecode } from './base64.ts'
1011
import { Hmac } from './hmac.ts'
1112

1213
/**
@@ -52,7 +53,7 @@ export class MessageVerifier {
5253
throw new RuntimeException(`Cannot sign "${payload}" value`)
5354
}
5455

55-
const encoded = base64.urlEncode(new MessageBuilder().build(payload, expiresIn, purpose))
56+
const encoded = base64UrlEncode(new MessageBuilder().build(payload, expiresIn, purpose))
5657
return `${encoded}${this.#separator}${new Hmac(this.#cryptoKey).generate(encoded)}`
5758
}
5859

@@ -75,7 +76,7 @@ export class MessageVerifier {
7576
/**
7677
* Ensure value can be decoded
7778
*/
78-
const decoded = base64.urlDecode(encoded, undefined, false)
79+
const decoded = base64UrlDecode(encoded, 'utf8')
7980
if (!decoded) {
8081
return null
8182
}

tests/message_verifier.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
*/
77

88
import { test } from '@japa/runner'
9-
import { base64 } from '@poppinss/utils'
109
import { MessageVerifier } from '../src/message_verifier.js'
10+
import { base64UrlDecode } from '../src/base64.ts'
1111

1212
const SECRET = 'averylongradom32charactersstring'
1313

@@ -23,15 +23,15 @@ test.group('MessageVerifier', () => {
2323
const messageVerifier = new MessageVerifier(SECRET)
2424
const signed = messageVerifier.sign({ username: 'virk' })
2525

26-
assert.equal(base64.urlDecode(signed.split('.')[0]), '{"message":{"username":"virk"}}')
26+
assert.equal(base64UrlDecode(signed.split('.')[0], 'utf8'), '{"message":{"username":"virk"}}')
2727
})
2828

2929
test('sign an object with purpose', ({ assert }) => {
3030
const messageVerifier = new MessageVerifier(SECRET)
3131
const signed = messageVerifier.sign({ username: 'virk' }, undefined, 'login')
3232

3333
assert.equal(
34-
base64.urlDecode(signed.split('.')[0]),
34+
base64UrlDecode(signed.split('.')[0], 'utf8'),
3535
'{"message":{"username":"virk"},"purpose":"login"}'
3636
)
3737
})

0 commit comments

Comments
 (0)