diff --git a/packages/phrases/package.json b/packages/phrases/package.json index 6b9ce00e7..509ef5241 100644 --- a/packages/phrases/package.json +++ b/packages/phrases/package.json @@ -24,6 +24,9 @@ "bugs": { "url": "https://github.com/logto-io/logto/issues" }, + "dependencies": { + "@silverhand/essentials": "^1.1.4" + }, "devDependencies": { "@silverhand/eslint-config": "^0.4.0", "@silverhand/ts-config": "^0.4.0", diff --git a/packages/phrases/src/index.ts b/packages/phrases/src/index.ts index a9b1308bd..27faba2dd 100644 --- a/packages/phrases/src/index.ts +++ b/packages/phrases/src/index.ts @@ -1,8 +1,10 @@ +import { NormalizeKeyPaths } from '@silverhand/essentials'; + import en from './locales/en'; import zhCN from './locales/zh-cn'; -import { Normalize, Resource } from './types'; +import { Resource } from './types'; -export type LogtoErrorCode = Normalize; +export type LogtoErrorCode = NormalizeKeyPaths; export type LogtoErrorI18nKey = `errors:${LogtoErrorCode}`; export type Languages = keyof Resource; diff --git a/packages/phrases/src/types.ts b/packages/phrases/src/types.ts index f6718f4c5..347f4f55a 100644 --- a/packages/phrases/src/types.ts +++ b/packages/phrases/src/types.ts @@ -9,21 +9,4 @@ export interface ResourceLanguage { [namespace: string]: ResourceKey; } -export type ResourceKey = - | string - | { - [key: string]: any; - }; - -/* Copied from react-i18next/ts4.1/index.d.ts */ -// Normalize single namespace -type AppendKeys = `${K1 & string}.${K2 & string}`; -type AppendKeys2 = `${K1 & string}.${Exclude & string}`; -type Normalize2 = K extends keyof T - ? T[K] extends Record - ? T[K] extends readonly any[] - ? AppendKeys2 | AppendKeys2> - : AppendKeys | AppendKeys> - : never - : never; -export type Normalize = keyof T | Normalize2; +export type ResourceKey = string | { [key: string]: any }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0ad5c10f9..e87d6a054 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -126,11 +126,14 @@ importers: packages/phrases: specifiers: '@silverhand/eslint-config': ^0.4.0 + '@silverhand/essentials': ^1.1.4 '@silverhand/ts-config': ^0.4.0 eslint: ^8.1.0 lint-staged: ^11.1.1 prettier: ^2.3.2 typescript: ^4.3.5 + dependencies: + '@silverhand/essentials': 1.1.4 devDependencies: '@silverhand/eslint-config': 0.4.0_1462fc7e3c7b4386daba890f6c2395d0 '@silverhand/ts-config': 0.4.0_typescript@4.5.3 @@ -3142,6 +3145,14 @@ packages: lodash.orderby: 4.6.0 lodash.pick: 4.4.0 + /@silverhand/essentials/1.1.4: + resolution: {integrity: sha512-5pHjIz42CjILcqGWhmfP7/RCbmlWIWmj0H3RMJDGW3QKZyNkWawG6gKwtEQ75N0MoZOzXjNE4HD4DK3moPa5sg==} + engines: {node: '>=14.15.0', pnpm: '>=6'} + dependencies: + lodash.orderby: 4.6.0 + lodash.pick: 4.4.0 + dev: false + /@silverhand/ts-config-react/0.4.0_typescript@4.5.3: resolution: {integrity: sha512-8D/VFFFGDrOf4zspfkvasXViOpwC+S/VrJx/rHD7Ztbn8+HPeHQRZeykXI2Tgg/G8cBkmlhW9ufrtCBYElJd+g==} engines: {node: '>=14.15.0'}