From e92abd9f87f95d64db017868b457cae8bd10185e Mon Sep 17 00:00:00 2001 From: kazuya kawaguchi Date: Thu, 19 Oct 2023 20:19:51 +0900 Subject: [PATCH] feat: add locale utils for hono (#31) * feat: add locale utils for hono * chore: downgrade vitest * fix: typo * update * fix: add node options * fix --- .github/workflows/ci.yml | 5 + build.config.ts | 5 +- bun.lockb | Bin 141271 -> 282304 bytes package.json | 18 +- src/hono.test.ts | 373 +++++++++++++++++++++++++++++++++++++++ src/hono.ts | 272 ++++++++++++++++++++++++++++ tsconfig.json | 4 +- 7 files changed, 671 insertions(+), 6 deletions(-) create mode 100644 src/hono.test.ts create mode 100644 src/hono.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0959ee9..7ba3384 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -98,7 +98,12 @@ jobs: - name: Install dependencies run: bun install + # NOTE: avoid https://github.com/intlify/utils/actions/runs/6573605958/job/17857030689?pr=31#step:8:48 + # vitest-environment-miniflare tries to load dist/index.cjs and work with vitest... - name: Build codes + run: npm run build + + - name: Test run: npm test edge-release: diff --git a/build.config.ts b/build.config.ts index 5c44a48..60d2812 100644 --- a/build.config.ts +++ b/build.config.ts @@ -16,9 +16,12 @@ export default defineBuildConfig({ { input: './src/h3.ts', }, + { + input: './src/hono.ts', + }, { input: './src/node.ts', }, ], - externals: ['h3'], + externals: ['h3', 'hono'], }) diff --git a/bun.lockb b/bun.lockb index f407478307ce1e8cea66af3b46664d8176e51a53..659ada25573e7d2f0c17cd970a81ac208b202457 100755 GIT binary patch literal 282304 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

w_Mo2LA+-!_@)Ok|NhgM#z5}+ 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 Ezv$sPIRF3v delta 38075 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 diff --git a/package.json b/package.json index d7dd55d..825826c 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,12 @@ "require": "./dist/h3.cjs", "default": "./dist/h3.mjs" }, + "./hono": { + "types": "./dist/hono.d.ts", + "import": "./dist/hono.mjs", + "require": "./dist/hono.cjs", + "default": "./dist/hono.mjs" + }, "./node": { "types": "./dist/node.d.ts", "import": "./dist/node.mjs", @@ -68,7 +74,7 @@ "build": "unbuild", "test": "npm run test:typecheck && npm run test:unit", "test:unit": "vitest run", - "test:typecheck": "vitest typecheck --run", + "test:typecheck": "NODE_OPTIONS=--experimental-vm-modules vitest typecheck --run", "test:coverage": "npm test -- --reporter verbose --coverage", "play:browser": "npm run -w example-browser dev", "play:node": "npm run -w example-node dev", @@ -84,19 +90,23 @@ ] }, "devDependencies": { + "@cloudflare/workers-types": "^4.20231016.0", "@types/node": "^20.6.0", "@types/supertest": "^2.0.12", - "@vitest/coverage-v8": "^1.0.0-beta.1", - "bun-types": "latest", + "@vitest/coverage-v8": "^0.34.6", "bumpp": "^9.2.0", + "bun-types": "latest", "cookie-es": "^1.0.0", "gh-changelogen": "^0.2.8", "h3": "^1.8.1", + "hono": "^3.8.1", "lint-staged": "^15.0.0", + "miniflare": "^3.20231016.0", "supertest": "^6.3.3", "typescript": "^5.2.2", "unbuild": "^2.0.0", - "vitest": "^1.0.0-beta.1" + "vitest": "^0.34.6", + "vitest-environment-miniflare": "^2.14.1" }, "workspaces": [ "playground/*" diff --git a/src/hono.test.ts b/src/hono.test.ts new file mode 100644 index 0000000..c1cbe08 --- /dev/null +++ b/src/hono.test.ts @@ -0,0 +1,373 @@ +// @vitest-environment miniflare +import { describe, expect, test } from 'vitest' +import { parseAcceptLanguage } from './shared.ts' +import { + getCookieLocale, + getHeaderLanguage, + getHeaderLanguages, + getHeaderLocale, + getHeaderLocales, + getPathLocale, + getQueryLocale, + setCookieLocale, +} from './hono.ts' +import { DEFAULT_COOKIE_NAME, DEFAULT_LANG_TAG } from './constants.ts' +import { Hono } from 'hono' + +import type { Context } from 'hono' + +describe('getHeaderLanguages', () => { + test('basic', () => { + const mockContext = { + req: { + header: (_name) => 'en-US,en;q=0.9,ja;q=0.8', + }, + } as Context + expect(getHeaderLanguages(mockContext)).toEqual(['en-US', 'en', 'ja']) + }) + + test('any language', () => { + const mockContext = { + req: { + header: (_name) => '*', + }, + } as Context + expect(getHeaderLanguages(mockContext)).toEqual([]) + }) + + test('empty', () => { + const mockContext = { + req: { + header: (_name) => undefined, + }, + } as Context + expect(getHeaderLanguages(mockContext)).toEqual([]) + }) + + test('parse option', () => { + const mockContext = { + req: { + header: (_name) => 'en-US,en;q=0.9,ja;q=0.8', + }, + } as Context + expect(getHeaderLanguages(mockContext, { parser: parseAcceptLanguage })) + .toEqual(['en-US', 'en', 'ja']) + }) + + test('custom header', () => { + const mockContext = { + req: { + header: (_name) => 'en-US,en,ja', + }, + } as Context + expect( + getHeaderLanguages(mockContext, { + name: 'x-inlitfy-language', + parser: (header) => header.split(','), + }), + ).toEqual(['en-US', 'en', 'ja']) + }) +}) + +describe('getAcceptLanguage', () => { + test('basic', () => { + const mockContext = { + req: { + header: (_name) => 'en-US,en;q=0.9,ja;q=0.8', + }, + } as Context + expect(getHeaderLanguage(mockContext)).toEqual('en-US') + }) + + test('any language', () => { + const mockContext = { + req: { + header: (_name) => '*', + }, + } as Context + expect(getHeaderLanguage(mockContext)).toEqual('') + }) + + test('empty', () => { + const mockContext = { + req: { + header: (_name) => undefined, + }, + } as Context + expect(getHeaderLanguage(mockContext)).toEqual('') + }) + + test('custom header', () => { + const mockContext = { + req: { + header: (_name) => 'en-US,en,ja', + }, + } as Context + expect( + getHeaderLanguage(mockContext, { + name: 'x-inlitfy-language', + parser: (header) => header.split(','), + }), + ).toEqual('en-US') + }) +}) + +describe('getHeaderLocales', () => { + test('basic', () => { + const mockContext = { + req: { + header: (_name) => 'en-US,en;q=0.9,ja;q=0.8', + }, + } as Context + expect(getHeaderLocales(mockContext).map((locale) => locale.baseName)) + .toEqual(['en-US', 'en', 'ja']) + }) + + test('any language', () => { + const mockContext = { + req: { + header: (_name) => '*', + }, + } as Context + expect(getHeaderLocales(mockContext)).toEqual([]) + }) + + test('empty', () => { + const mockContext = { + req: { + header: (_name) => undefined, + }, + } as Context + expect(getHeaderLocales(mockContext)).toEqual([]) + }) + + test('custom header', () => { + const mockContext = { + req: { + header: (_name) => 'en-US,en,ja', + }, + } as Context + expect( + getHeaderLocales(mockContext, { + name: 'x-inlitfy-language', + parser: (header) => header.split(','), + }).map((locale) => locale.baseName), + ).toEqual(['en-US', 'en', 'ja']) + }) +}) + +describe('getHeaderLocale', () => { + test('basic', () => { + const mockContext = { + req: { + header: (_name) => 'en-US,en;q=0.9,ja;q=0.8', + }, + } as Context + const locale = getHeaderLocale(mockContext) + + expect(locale.baseName).toEqual('en-US') + expect(locale.language).toEqual('en') + expect(locale.region).toEqual('US') + }) + + test('accept-language is any language', () => { + const mockContext = { + req: { + header: (_name) => '*', + }, + } as Context + const locale = getHeaderLocale(mockContext) + + expect(locale.baseName).toEqual(DEFAULT_LANG_TAG) + }) + + test('specify default language', () => { + const mockContext = { + req: { + header: (_name) => '*', + }, + } as Context + const locale = getHeaderLocale(mockContext, { lang: 'ja-JP' }) + + expect(locale.baseName).toEqual('ja-JP') + }) + + test('RangeError', () => { + const mockContext = { + req: { + header: (_name) => 'x', + }, + } as Context + + expect(() => getHeaderLocale(mockContext, { lang: 'ja-JP' })).toThrowError( + RangeError, + ) + }) + + test('custom header', () => { + const mockContext = { + req: { + header: (_name) => 'en-US,en,ja', + }, + } as Context + expect( + getHeaderLocale(mockContext, { + name: 'x-inlitfy-language', + parser: (header) => header.split(','), + }).toString(), + ).toEqual('en-US') + }) +}) + +describe('getCookieLocale', () => { + test('basic', () => { + const mockContext = { + req: { + raw: { + headers: { + get: (_name) => `${DEFAULT_COOKIE_NAME}=ja-US`, + }, + }, + }, + } as Context + const locale = getCookieLocale(mockContext) + + expect(locale.baseName).toEqual('ja-US') + expect(locale.language).toEqual('ja') + expect(locale.region).toEqual('US') + }) + + test('cookie is empty', () => { + const mockContext = { + req: { + raw: { + headers: { + get: (_name) => '', + }, + }, + }, + } as Context + const locale = getCookieLocale(mockContext) + + expect(locale.baseName).toEqual(DEFAULT_LANG_TAG) + }) + + test('specify default language', () => { + const mockContext = { + req: { + raw: { + headers: { + get: (_name) => '', + }, + }, + }, + } as Context + const locale = getCookieLocale(mockContext, { lang: 'ja-JP' }) + + expect(locale.baseName).toEqual('ja-JP') + }) + + test('specify cookie name', () => { + const mockContext = { + req: { + raw: { + headers: { + get: (_name) => 'intlify_locale=fr-FR', + }, + }, + }, + } as Context + const locale = getCookieLocale(mockContext, { name: 'intlify_locale' }) + + expect(locale.baseName).toEqual('fr-FR') + }) + + test('RangeError', () => { + const mockContext = { + req: { + raw: { + headers: { + get: (_name) => 'intlify_locale=f', + }, + }, + }, + } as Context + + expect(() => getCookieLocale(mockContext, { name: 'intlify_locale' })) + .toThrowError(RangeError) + }) +}) + +describe('setCookieLocale', () => { + test('specify Locale instance', async () => { + const app = new Hono() + app.get('/', (c) => { + const locale = new Intl.Locale('ja-JP') + setCookieLocale(c, locale, { name: DEFAULT_COOKIE_NAME, path: '/' }) + return c.text(locale.toString()) + }) + const res = await app.request('http://localhost/') + expect(res.headers.getSetCookie()).toEqual([ + `${DEFAULT_COOKIE_NAME}=ja-JP; Path=/`, + ]) + }) + + test('specify language tag', async () => { + const app = new Hono() + app.get('/', (c) => { + setCookieLocale(c, 'ja-JP', { name: DEFAULT_COOKIE_NAME, path: '/' }) + return c.text('') + }) + const res = await app.request('http://localhost/') + expect(res.headers.getSetCookie()).toEqual([ + `${DEFAULT_COOKIE_NAME}=ja-JP; Path=/`, + ]) + }) + + test('specify cookie name', async () => { + const app = new Hono() + app.get('/', (c) => { + setCookieLocale(c, 'ja-JP', { name: 'intlify_locale', path: '/' }) + return c.text('') + }) + const res = await app.request('http://localhost/') + expect(res.headers.getSetCookie()).toEqual([ + `intlify_locale=ja-JP; Path=/`, + ]) + }) + + test('Syntax Error', () => { + const mockContext = { + req: { + raw: { + headers: { + get: (_name) => '', + }, + }, + }, + } as Context + + expect(() => setCookieLocale(mockContext, 'j')) + .toThrowError(/locale is invalid: j/) + }) +}) + +test('getPathLocale', async () => { + const app = new Hono() + app.get('*', (c) => { + return c.json({ locale: getPathLocale(c).toString() }) + }) + const res = await app.request('http://localhost/en/foo') + const result = await res.json() + expect(result).toEqual({ locale: 'en' }) +}) + +test('getQueryLocale', async () => { + const app = new Hono() + app.get('/', (c) => { + return c.json({ locale: getQueryLocale(c).toString() }) + }) + const res = await app.request('http://localhost/?locale=ja') + const result = await res.json() + expect(result).toEqual({ locale: 'ja' }) +}) diff --git a/src/hono.ts b/src/hono.ts new file mode 100644 index 0000000..b0bf396 --- /dev/null +++ b/src/hono.ts @@ -0,0 +1,272 @@ +import { + ACCEPT_LANGUAGE_HEADER, + DEFAULT_COOKIE_NAME, + DEFAULT_LANG_TAG, +} from './constants.ts' +import { + getHeaderLanguagesWithGetter, + getLocaleWithGetter, + getPathLocale as _getPathLocale, + getQueryLocale as _getQueryLocale, + mapToLocaleFromLanguageTag, + parseDefaultHeader, + validateLocale, +} from './http.ts' +import { pathLanguageParser } from './shared.ts' +import { getCookie, setCookie } from 'hono/cookie' + +import type { Context } from 'hono' +import type { HeaderOptions, PathOptions, QueryOptions } from './http.ts' + +type CookieOptions = Parameters[3] & { name?: string } + +/** + * get languages from header + * + * @description parse header string, default `accept-language` header + * + * @example + * example for Hono + * + * ```ts + * import { Hono } from 'hono' + * import { getHeaderLanguages } from '@intlify/utils/hono' + * + * const app = new Hono() + * app.use('/', c => { + * const langTags = getHeaderLanguages(c) + * // ... + * return c.text(`accepted languages: ${acceptLanguages.join(', ')}`) + * }) + * ``` + * + * @param {Context} context A {@link Context | Hono} context + * @param {HeaderOptions['name']} options.name A header name, which is as default `accept-language`. + * @param {HeaderOptions['parser']} options.parser A parser function, which is as default {@link parseDefaultHeader}. If you are specifying more than one in your own format, you need a parser. + * + * @returns {Array} An array of language tags, if you use `accept-language` header and `*` (any language) or empty string is detected, return an empty array. + */ +export function getHeaderLanguages(context: Context, { + name = ACCEPT_LANGUAGE_HEADER, + parser = parseDefaultHeader, +}: HeaderOptions = {}): string[] { + return getHeaderLanguagesWithGetter(() => context.req.header(name), { + name, + parser, + }) +} + +/** + * get language from header + * + * @description parse header string, default `accept-language`. if you use `accept-language`, this function retuns the **first language tag** of `accept-language` header. + * + * @example + * example for Hone: + * + * ```ts + * import { Hono } from 'hono' + * import { getHeaderLanguage } from '@intlify/utils/hono' + * + * const app = new Hono() + * app.use('/', c => { + * const langTag = getHeaderLanguage(c) + * // ... + * return c.text(`accepted language: ${langTag}`) + * }) + * ``` + * + * @param {Context} context A {@link Context | Hono} context + * @param {HeaderOptions['name']} options.name A header name, which is as default `accept-language`. + * @param {HeaderOptions['parser']} options.parser A parser function, which is as default {@link parseDefaultHeader}. If you are specifying more than one in your own format, you need a parser. + * + * @returns {string} A **first language tag** of header, if header is not exists, or `*` (any language), return empty string. + */ +export function getHeaderLanguage(context: Context, { + name = ACCEPT_LANGUAGE_HEADER, + parser = parseDefaultHeader, +}: HeaderOptions = {}): string { + return getHeaderLanguages(context, { name, parser })[0] || '' +} + +/** + * get locales from header + * + * @description wrap language tags with {@link Intl.Locale | locale}, languages tags will be parsed from `accept-language` header as default. + * + * @example + * example for Hono: + * + * ```ts + * import { Hono } from 'hono' + * import { getHeaderLocales } from '@intlify/utils/hono' + * + * const app = new Hono() + * app.use('/', c => { + * const locales = getHeaderLocales(c) + * // ... + * return c.text(`accepted locales: ${locales.map(locale => locale.toString()).join(', ')}`) + * }) + * ``` + * + * @param {Context} context A {@link Context | Hono} context + * @param {HeaderOptions['name']} options.name A header name, which is as default `accept-language`. + * @param {HeaderOptions['parser']} options.parser A parser function, which is as default {@link parseDefaultHeader}. If you are specifying more than one in your own format, you need a parser. + * + * @returns {Array} Some locales that wrapped from header, if you use `accept-language` header and `*` (any language) or empty string is detected, return an empty array. + */ +export function getHeaderLocales( + context: Context, + { + name = ACCEPT_LANGUAGE_HEADER, + parser = parseDefaultHeader, + }: HeaderOptions = {}, +): Intl.Locale[] { + return mapToLocaleFromLanguageTag(getHeaderLanguages, context, { + name, + parser, + }) +} + +/** + * get locale from header + * + * @description wrap language tag with {@link Intl.Locale | locale}, languages tags will be parsed from `accept-language` header as default. + * + * @example + * example for Hono: + * + * ```ts + * import { Hono } from 'hono' + * import { getHeaderLocale } from '@intlify/utils/hono' + * + * const app = new Hono() + * app.use('/', c => { + * const locale = getHeaderLocale(c) + * // ... + * return c.text(`accepted language: ${locale.toString()}`) + * }) + * ``` + * + * @param {Context} context A {@link Context | Hono} context + * @param {string} options.lang A default language tag, Optional. default value is `en-US`. You must specify the language tag with the {@link https://datatracker.ietf.org/doc/html/rfc4646#section-2.1 | BCP 47 syntax}. + * @param {HeaderOptions['name']} options.name A header name, which is as default `accept-language`. + * @param {HeaderOptions['parser']} options.parser A parser function, which is as default {@link parseDefaultHeader}. If you are specifying more than one in your own format, you need a parser. + * + * @throws {RangeError} Throws the {@link RangeError} if `lang` option or header are not a well-formed BCP 47 language tag. + * + * @returns {Intl.Locale} A first locale that resolved from header string. if you use `accept-language` header and `*` (any language) or empty string is detected, return `en-US`. + */ +export function getHeaderLocale( + context: Context, + { + lang = DEFAULT_LANG_TAG, + name = ACCEPT_LANGUAGE_HEADER, + parser = parseDefaultHeader, + }: HeaderOptions & { lang?: string } = {}, +): Intl.Locale { + return getLocaleWithGetter(() => + getHeaderLanguages(context, { name, parser })[0] || lang + ) +} + +/** + * get locale from cookie + * + * @example + * example for Hono: + * + * ```ts + * import { Hono } from 'hono' + * import { getCookieLocale } from '@intlify/utils/hono' + * + * const app = new Hono() + * app.use('/', c => { + * const locale = getCookieLocale(c) + * console.log(locale) // output `Intl.Locale` instance + * // ... + * }) + * ``` + * + * @param {Context} context A {@link Context | Hono} context + * @param {string} options.lang A default language tag, default is `en-US`. You must specify the language tag with the {@link https://datatracker.ietf.org/doc/html/rfc4646#section-2.1 | BCP 47 syntax}. + * @param {string} options.name A cookie name, default is `i18n_locale` + * + * @throws {RangeError} Throws a {@link RangeError} if `lang` option or cookie name value are not a well-formed BCP 47 language tag. + * + * @returns {Intl.Locale} The locale that resolved from cookie + */ +export function getCookieLocale( + context: Context, + { lang = DEFAULT_LANG_TAG, name = DEFAULT_COOKIE_NAME } = {}, +): Intl.Locale { + return getLocaleWithGetter(() => getCookie(context, name) || lang) +} + +/** + * set locale to the response `Set-Cookie` header. + * + * @example + * example for Hono: + * + * ```ts + * import { Hono } from 'hono' + * import { setCookieLocale } from '@intlify/utils/hono' + * + * const app = new Hono() + * app.use('/', c => { + * setCookieLocale(c, 'ja-JP') + * // ... + * }) + * ``` + * + * @param {Context} context A {@link Context | Hono} context + * @param {string | Intl.Locale} locale A locale value + * @param {CookieOptions} options A cookie options, `name` option is `i18n_locale` as default, and `path` option is `/` as default. + * + * @throws {SyntaxError} Throws the {@link SyntaxError} if `locale` is invalid. + */ +export function setCookieLocale( + context: Context, + locale: string | Intl.Locale, + options: CookieOptions = { name: DEFAULT_COOKIE_NAME }, +): void { + validateLocale(locale) + setCookie(context, options.name!, locale.toString(), options) +} + +/** + * get the locale from the path + * + * @param {Context} context A {@link Context | Hono} context + * @param {PathOptions['lang']} options.lang A language tag, which is as default `'en-US'`. optional + * @param {PathOptions['parser']} options.parser A path language parser, optional + * + * @throws {RangeError} Throws the {@link RangeError} if the language in the path, that is not a well-formed BCP 47 language tag. + * + * @returns {Intl.Locale} The locale that resolved from path + */ +export function getPathLocale( + context: Context, + { lang = DEFAULT_LANG_TAG, parser = pathLanguageParser }: PathOptions = {}, +): Intl.Locale { + return _getPathLocale(new URL(context.req.url), { lang, parser }) +} + +/** + * get the locale from the query + * + * @param {Context} context A {@link Context | Hono} context + * @param {QueryOptions['lang']} options.lang A language tag, which is as default `'en-US'`. optional + * @param {QueryOptions['name']} options.name A query param name, default `'locale'`. optional + * + * @throws {RangeError} Throws the {@link RangeError} if the language in the query, that is not a well-formed BCP 47 language tag. + * + * @returns {Intl.Locale} The locale that resolved from query + */ +export function getQueryLocale( + context: Context, + { lang = DEFAULT_LANG_TAG, name = 'locale' }: QueryOptions = {}, +): Intl.Locale { + return _getQueryLocale(new URL(context.req.url), { lang, name }) +} diff --git a/tsconfig.json b/tsconfig.json index c320591..827b86f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -39,7 +39,9 @@ // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ "types": [ - "vitest/importMeta" + "vitest/importMeta", + "@cloudflare/workers-types", + "vitest-environment-miniflare/globals" ], /* Specify type package names to be included without being referenced in a source file. */ // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */