Skip to content

Commit bd7ec22

Browse files
authored
feat!: support resource schema type definition for @intlfy/core-base (@intlify/core) (#1594)
1 parent 6a9947d commit bd7ec22

File tree

13 files changed

+383
-71
lines changed

13 files changed

+383
-71
lines changed

packages/core-base/src/context.ts

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,9 @@ import type {
4646
SchemaParams,
4747
LocaleParams,
4848
PickupLocales,
49-
FallbackLocales
49+
FallbackLocales,
50+
IsEmptyObject,
51+
RemoveIndexSignature
5052
} from './types'
5153
import type { LocaleFallbacker } from './fallbacker'
5254

@@ -91,6 +93,37 @@ export type LocaleMessages<
9193
Message = string // eslint-disable-line @typescript-eslint/no-unused-vars
9294
> = LocaleRecord<UnionToTuple<Locales>, Schema>
9395

96+
/**
97+
* The type definition of Locale Message for `@intlify/core-base` package
98+
*
99+
* @remarks
100+
* The typealias is used to strictly define the type of the Locale message.
101+
*
102+
* @example
103+
* ```ts
104+
* // type.d.ts (`.d.ts` file at your app)
105+
* import { DefineCoreLocaleMessage } from '@intlify/core-base'
106+
*
107+
* declare module '@intlify/core-base' {
108+
* export interface DefineCoreLocaleMessage {
109+
* title: string
110+
* menu: {
111+
* login: string
112+
* }
113+
* }
114+
* }
115+
* ```
116+
*
117+
* @VueI18nGeneral
118+
*/
119+
export interface DefineCoreLocaleMessage extends LocaleMessage<string> {} // eslint-disable-line @typescript-eslint/no-empty-interface
120+
121+
export type DefaultCoreLocaleMessageSchema<
122+
Schema = RemoveIndexSignature<{
123+
[K in keyof DefineCoreLocaleMessage]: DefineCoreLocaleMessage[K]
124+
}>
125+
> = IsEmptyObject<Schema> extends true ? LocaleMessage<string> : Schema
126+
94127
export type CoreMissingHandler<Message = string> = (
95128
context: CoreContext<Message>,
96129
locale: Locale,
@@ -155,7 +188,7 @@ export interface CoreOptions<
155188
datetime?: unknown
156189
number?: unknown
157190
} = {
158-
message: LocaleMessage<Message>,
191+
message: DefaultCoreLocaleMessageSchema,
159192
datetime: DateTimeFormat,
160193
number: NumberFormat
161194
},
@@ -181,7 +214,7 @@ export interface CoreOptions<
181214
: Locales extends string
182215
? Locales
183216
: Locale,
184-
MessageSchema = Schema extends { message: infer M } ? M : LocaleMessage<Message>,
217+
MessageSchema = Schema extends { message: infer M } ? M : DefaultCoreLocaleMessageSchema,
185218
DateTimeSchema = Schema extends { datetime: infer D } ? D : DateTimeFormat,
186219
NumberSchema = Schema extends { number: infer N } ? N : NumberFormat,
187220
_Messages extends LocaleMessages<

0 commit comments

Comments
 (0)