@bquery/bquery 1.7.0 → 1.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +760 -716
- package/dist/{a11y-C5QOVvRn.js → a11y-DVBCy09c.js} +3 -3
- package/dist/a11y-DVBCy09c.js.map +1 -0
- package/dist/a11y.es.mjs +1 -1
- package/dist/component/library.d.ts.map +1 -1
- package/dist/{component-CuuTijA6.js → component-L3-JfOFz.js} +5 -5
- package/dist/component-L3-JfOFz.js.map +1 -0
- package/dist/component.es.mjs +1 -1
- package/dist/{config-BW35FKuA.js → config-DhT9auRm.js} +1 -1
- package/dist/{config-BW35FKuA.js.map → config-DhT9auRm.js.map} +1 -1
- package/dist/{constraints-3lV9yyBw.js → constraints-D5RHQLmP.js} +1 -1
- package/dist/constraints-D5RHQLmP.js.map +1 -0
- package/dist/core/collection.d.ts +86 -0
- package/dist/core/collection.d.ts.map +1 -1
- package/dist/core/element.d.ts +28 -0
- package/dist/core/element.d.ts.map +1 -1
- package/dist/core/shared.d.ts +6 -0
- package/dist/core/shared.d.ts.map +1 -1
- package/dist/core-DdtZHzsS.js +168 -0
- package/dist/core-DdtZHzsS.js.map +1 -0
- package/dist/{core-Cjl7GUu8.js → core-EMYSLzaT.js} +289 -259
- package/dist/core-EMYSLzaT.js.map +1 -0
- package/dist/core.es.mjs +48 -47
- package/dist/{custom-directives-7wAShnnd.js → custom-directives-Dr4C5lVV.js} +1 -1
- package/dist/custom-directives-Dr4C5lVV.js.map +1 -0
- package/dist/{devtools-D2fQLhDN.js → devtools-BhB2iDPT.js} +2 -2
- package/dist/devtools-BhB2iDPT.js.map +1 -0
- package/dist/devtools.es.mjs +1 -1
- package/dist/{dnd-B8EgyzaI.js → dnd-NwZBYh4l.js} +1 -1
- package/dist/dnd-NwZBYh4l.js.map +1 -0
- package/dist/dnd.es.mjs +1 -1
- package/dist/{env-NeVmr4Gf.js → env-CTdvLaH2.js} +1 -1
- package/dist/env-CTdvLaH2.js.map +1 -0
- package/dist/forms/create-form.d.ts.map +1 -1
- package/dist/forms/index.d.ts +3 -2
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/types.d.ts +46 -0
- package/dist/forms/types.d.ts.map +1 -1
- package/dist/forms/use-field.d.ts +34 -0
- package/dist/forms/use-field.d.ts.map +1 -0
- package/dist/forms/validators.d.ts +25 -0
- package/dist/forms/validators.d.ts.map +1 -1
- package/dist/forms-UcRHsYxC.js +227 -0
- package/dist/forms-UcRHsYxC.js.map +1 -0
- package/dist/forms.es.mjs +14 -12
- package/dist/full.d.ts +17 -26
- package/dist/full.d.ts.map +1 -1
- package/dist/full.es.mjs +206 -181
- package/dist/full.iife.js +33 -33
- package/dist/full.iife.js.map +1 -1
- package/dist/full.umd.js +33 -33
- package/dist/full.umd.js.map +1 -1
- package/dist/function-Cybd57JV.js +33 -0
- package/dist/function-Cybd57JV.js.map +1 -0
- package/dist/{i18n-BnnhTFOS.js → i18n-kuF6Ekj6.js} +3 -3
- package/dist/i18n-kuF6Ekj6.js.map +1 -0
- package/dist/i18n.es.mjs +1 -1
- package/dist/index.es.mjs +251 -228
- package/dist/media/breakpoints.d.ts.map +1 -1
- package/dist/media/types.d.ts +2 -2
- package/dist/media/types.d.ts.map +1 -1
- package/dist/{media-Di2Ta22s.js → media-i-fB5WxI.js} +3 -3
- package/dist/media-i-fB5WxI.js.map +1 -0
- package/dist/media.es.mjs +1 -1
- package/dist/{motion-qPj_TYGv.js → motion-BJsAuULb.js} +2 -2
- package/dist/motion-BJsAuULb.js.map +1 -0
- package/dist/motion.es.mjs +1 -1
- package/dist/{mount-SM07RUa6.js → mount-B4Y8bk8Z.js} +5 -5
- package/dist/mount-B4Y8bk8Z.js.map +1 -0
- package/dist/{platform-CPbCprb6.js → platform-Dw2gE3zI.js} +3 -3
- package/dist/{platform-CPbCprb6.js.map → platform-Dw2gE3zI.js.map} +1 -1
- package/dist/platform.es.mjs +2 -2
- package/dist/plugin/registry.d.ts.map +1 -1
- package/dist/{plugin-cPoOHFLY.js → plugin-C2WuC8SF.js} +20 -18
- package/dist/plugin-C2WuC8SF.js.map +1 -0
- package/dist/plugin.es.mjs +1 -1
- package/dist/reactive/async-data.d.ts +28 -3
- package/dist/reactive/async-data.d.ts.map +1 -1
- package/dist/reactive/computed.d.ts +3 -0
- package/dist/reactive/computed.d.ts.map +1 -1
- package/dist/reactive/effect.d.ts +3 -0
- package/dist/reactive/effect.d.ts.map +1 -1
- package/dist/reactive/http.d.ts +194 -0
- package/dist/reactive/http.d.ts.map +1 -0
- package/dist/reactive/index.d.ts +2 -2
- package/dist/reactive/index.d.ts.map +1 -1
- package/dist/reactive/pagination.d.ts +126 -0
- package/dist/reactive/pagination.d.ts.map +1 -0
- package/dist/reactive/polling.d.ts +55 -0
- package/dist/reactive/polling.d.ts.map +1 -0
- package/dist/reactive/readonly.d.ts +20 -1
- package/dist/reactive/readonly.d.ts.map +1 -1
- package/dist/reactive/rest.d.ts +293 -0
- package/dist/reactive/rest.d.ts.map +1 -0
- package/dist/reactive/scope.d.ts +140 -0
- package/dist/reactive/scope.d.ts.map +1 -0
- package/dist/reactive/signal.d.ts +16 -2
- package/dist/reactive/signal.d.ts.map +1 -1
- package/dist/reactive/to-value.d.ts +57 -0
- package/dist/reactive/to-value.d.ts.map +1 -0
- package/dist/reactive/websocket.d.ts +285 -0
- package/dist/reactive/websocket.d.ts.map +1 -0
- package/dist/reactive-DwkhUJfP.js +1148 -0
- package/dist/reactive-DwkhUJfP.js.map +1 -0
- package/dist/reactive.es.mjs +38 -19
- package/dist/{registry-CWf368tT.js → registry-B08iilIh.js} +1 -1
- package/dist/{registry-CWf368tT.js.map → registry-B08iilIh.js.map} +1 -1
- package/dist/router/constraints.d.ts.map +1 -1
- package/dist/router/index.d.ts +1 -1
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/router.d.ts.map +1 -1
- package/dist/router/state.d.ts +25 -2
- package/dist/router/state.d.ts.map +1 -1
- package/dist/router-CQikC9Ed.js +492 -0
- package/dist/router-CQikC9Ed.js.map +1 -0
- package/dist/router.es.mjs +9 -8
- package/dist/ssr/hydrate.d.ts.map +1 -1
- package/dist/{ssr-B2qd_WBB.js → ssr-_dAcGdzu.js} +4 -4
- package/dist/ssr-_dAcGdzu.js.map +1 -0
- package/dist/ssr.es.mjs +1 -1
- package/dist/store/persisted.d.ts.map +1 -1
- package/dist/{store-DWpyH6p5.js → store-Cb3gPRve.js} +7 -7
- package/dist/store-Cb3gPRve.js.map +1 -0
- package/dist/store.es.mjs +2 -2
- package/dist/storybook.es.mjs.map +1 -1
- package/dist/{testing-CsqjNUyy.js → testing-C5Sjfsna.js} +8 -8
- package/dist/testing-C5Sjfsna.js.map +1 -0
- package/dist/testing.es.mjs +1 -1
- package/dist/{type-guards-Do9DWgNp.js → type-guards-BMX2c0LP.js} +1 -1
- package/dist/{type-guards-Do9DWgNp.js.map → type-guards-BMX2c0LP.js.map} +1 -1
- package/dist/untrack-D0fnO5k2.js +36 -0
- package/dist/untrack-D0fnO5k2.js.map +1 -0
- package/dist/view/custom-directives.d.ts.map +1 -1
- package/dist/view.es.mjs +4 -4
- package/package.json +178 -177
- package/src/a11y/announce.ts +131 -131
- package/src/a11y/audit.ts +314 -314
- package/src/a11y/index.ts +68 -68
- package/src/a11y/media-preferences.ts +255 -255
- package/src/a11y/roving-tab-index.ts +164 -164
- package/src/a11y/skip-link.ts +255 -255
- package/src/a11y/trap-focus.ts +184 -184
- package/src/a11y/types.ts +183 -183
- package/src/component/component.ts +599 -599
- package/src/component/html.ts +153 -153
- package/src/component/index.ts +52 -52
- package/src/component/library.ts +540 -542
- package/src/component/scope.ts +212 -212
- package/src/component/types.ts +310 -310
- package/src/core/collection.ts +876 -707
- package/src/core/element.ts +1015 -981
- package/src/core/env.ts +60 -60
- package/src/core/index.ts +49 -49
- package/src/core/shared.ts +77 -62
- package/src/core/utils/index.ts +148 -148
- package/src/devtools/devtools.ts +410 -410
- package/src/devtools/index.ts +48 -48
- package/src/devtools/types.ts +104 -104
- package/src/dnd/draggable.ts +296 -296
- package/src/dnd/droppable.ts +228 -228
- package/src/dnd/index.ts +62 -62
- package/src/dnd/sortable.ts +307 -307
- package/src/dnd/types.ts +293 -293
- package/src/forms/create-form.ts +320 -278
- package/src/forms/index.ts +70 -65
- package/src/forms/types.ts +203 -154
- package/src/forms/use-field.ts +231 -0
- package/src/forms/validators.ts +294 -265
- package/src/full.ts +554 -480
- package/src/i18n/formatting.ts +67 -67
- package/src/i18n/i18n.ts +200 -200
- package/src/i18n/index.ts +67 -67
- package/src/i18n/translate.ts +182 -182
- package/src/i18n/types.ts +171 -171
- package/src/index.ts +108 -108
- package/src/media/battery.ts +116 -116
- package/src/media/breakpoints.ts +129 -131
- package/src/media/clipboard.ts +80 -80
- package/src/media/device-sensors.ts +158 -158
- package/src/media/geolocation.ts +119 -119
- package/src/media/index.ts +76 -76
- package/src/media/media-query.ts +92 -92
- package/src/media/network.ts +115 -115
- package/src/media/types.ts +177 -177
- package/src/media/viewport.ts +84 -84
- package/src/motion/index.ts +57 -57
- package/src/motion/morph.ts +151 -151
- package/src/motion/parallax.ts +120 -120
- package/src/motion/reduced-motion.ts +66 -66
- package/src/motion/types.ts +271 -271
- package/src/motion/typewriter.ts +164 -164
- package/src/plugin/index.ts +37 -37
- package/src/plugin/registry.ts +284 -269
- package/src/plugin/types.ts +137 -137
- package/src/reactive/async-data.ts +250 -29
- package/src/reactive/computed.ts +144 -130
- package/src/reactive/effect.ts +29 -6
- package/src/reactive/http.ts +790 -0
- package/src/reactive/index.ts +60 -0
- package/src/reactive/pagination.ts +317 -0
- package/src/reactive/polling.ts +179 -0
- package/src/reactive/readonly.ts +52 -8
- package/src/reactive/rest.ts +859 -0
- package/src/reactive/scope.ts +276 -0
- package/src/reactive/signal.ts +61 -1
- package/src/reactive/to-value.ts +71 -0
- package/src/reactive/websocket.ts +849 -0
- package/src/router/bq-link.ts +279 -279
- package/src/router/constraints.ts +204 -201
- package/src/router/index.ts +49 -49
- package/src/router/match.ts +312 -312
- package/src/router/path-pattern.ts +52 -52
- package/src/router/query.ts +38 -38
- package/src/router/router.ts +421 -402
- package/src/router/state.ts +51 -3
- package/src/router/types.ts +139 -139
- package/src/router/use-route.ts +68 -68
- package/src/router/utils.ts +157 -157
- package/src/security/index.ts +12 -12
- package/src/ssr/hydrate.ts +84 -82
- package/src/ssr/index.ts +70 -70
- package/src/ssr/render.ts +508 -508
- package/src/ssr/serialize.ts +296 -296
- package/src/ssr/types.ts +81 -81
- package/src/store/create-store.ts +467 -467
- package/src/store/index.ts +27 -27
- package/src/store/persisted.ts +245 -249
- package/src/store/types.ts +247 -247
- package/src/store/utils.ts +135 -135
- package/src/storybook/index.ts +480 -480
- package/src/testing/index.ts +42 -42
- package/src/testing/testing.ts +593 -593
- package/src/testing/types.ts +170 -170
- package/src/view/custom-directives.ts +28 -30
- package/src/view/evaluate.ts +292 -292
- package/src/view/process.ts +108 -108
- package/dist/a11y-C5QOVvRn.js.map +0 -1
- package/dist/component-CuuTijA6.js.map +0 -1
- package/dist/constraints-3lV9yyBw.js.map +0 -1
- package/dist/core-Cjl7GUu8.js.map +0 -1
- package/dist/core-DnlyjbF2.js +0 -112
- package/dist/core-DnlyjbF2.js.map +0 -1
- package/dist/custom-directives-7wAShnnd.js.map +0 -1
- package/dist/devtools-D2fQLhDN.js.map +0 -1
- package/dist/dnd-B8EgyzaI.js.map +0 -1
- package/dist/env-NeVmr4Gf.js.map +0 -1
- package/dist/forms-C3yovgH9.js +0 -141
- package/dist/forms-C3yovgH9.js.map +0 -1
- package/dist/i18n-BnnhTFOS.js.map +0 -1
- package/dist/media-Di2Ta22s.js.map +0 -1
- package/dist/motion-qPj_TYGv.js.map +0 -1
- package/dist/mount-SM07RUa6.js.map +0 -1
- package/dist/plugin-cPoOHFLY.js.map +0 -1
- package/dist/reactive-Cfv0RK6x.js +0 -233
- package/dist/reactive-Cfv0RK6x.js.map +0 -1
- package/dist/router-BrthaP_z.js +0 -473
- package/dist/router-BrthaP_z.js.map +0 -1
- package/dist/ssr-B2qd_WBB.js.map +0 -1
- package/dist/store-DWpyH6p5.js.map +0 -1
- package/dist/testing-CsqjNUyy.js.map +0 -1
- package/dist/untrack-DJVQQ2WM.js +0 -33
- package/dist/untrack-DJVQQ2WM.js.map +0 -1
package/src/i18n/types.ts
CHANGED
|
@@ -1,171 +1,171 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type definitions for the i18n module.
|
|
3
|
-
* @module bquery/i18n
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import type { ReadonlySignal, Signal } from '../reactive/index';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* A nested record of translation messages.
|
|
10
|
-
* Values can be strings or nested objects for namespacing.
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```ts
|
|
14
|
-
* const messages: LocaleMessages = {
|
|
15
|
-
* greeting: 'Hello',
|
|
16
|
-
* user: {
|
|
17
|
-
* name: 'Name',
|
|
18
|
-
* welcome: 'Welcome, {name}!',
|
|
19
|
-
* },
|
|
20
|
-
* items: '{count} item | {count} items',
|
|
21
|
-
* };
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
export type LocaleMessages = {
|
|
25
|
-
[key: string]: string | LocaleMessages;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Record of locale codes to their messages.
|
|
30
|
-
*/
|
|
31
|
-
export type Messages = {
|
|
32
|
-
[locale: string]: LocaleMessages;
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Interpolation parameters for translation strings.
|
|
37
|
-
* Values are converted to strings during interpolation.
|
|
38
|
-
*/
|
|
39
|
-
export type TranslateParams = Record<string, string | number>;
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Configuration for creating an i18n instance.
|
|
43
|
-
*/
|
|
44
|
-
export type I18nConfig = {
|
|
45
|
-
/** The initial locale code (e.g. 'en', 'de', 'fr') */
|
|
46
|
-
locale: string;
|
|
47
|
-
/** Pre-loaded message dictionaries keyed by locale */
|
|
48
|
-
messages: Messages;
|
|
49
|
-
/** Fallback locale when a key is missing in the current locale */
|
|
50
|
-
fallbackLocale?: string;
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* A lazy-loader function that returns a promise resolving to locale messages.
|
|
55
|
-
*/
|
|
56
|
-
export type LocaleLoader = () => Promise<LocaleMessages | { default: LocaleMessages }>;
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Options for number formatting via `Intl.NumberFormat`.
|
|
60
|
-
*/
|
|
61
|
-
export type NumberFormatOptions = Intl.NumberFormatOptions & {
|
|
62
|
-
/** Override the locale for this specific formatting call */
|
|
63
|
-
locale?: string;
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Options for date formatting via `Intl.DateTimeFormat`.
|
|
68
|
-
*/
|
|
69
|
-
export type DateFormatOptions = Intl.DateTimeFormatOptions & {
|
|
70
|
-
/** Override the locale for this specific formatting call */
|
|
71
|
-
locale?: string;
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* The public i18n instance returned by `createI18n()`.
|
|
76
|
-
*/
|
|
77
|
-
export type I18nInstance = {
|
|
78
|
-
/**
|
|
79
|
-
* Reactive signal holding the current locale code.
|
|
80
|
-
* Setting `.value` switches the locale and reactively updates
|
|
81
|
-
* all computed translations.
|
|
82
|
-
*/
|
|
83
|
-
$locale: Signal<string>;
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Translate a key path with optional interpolation and pluralization.
|
|
87
|
-
*
|
|
88
|
-
* @param key - Dot-delimited key path (e.g. 'user.welcome')
|
|
89
|
-
* @param params - Interpolation values (e.g. `{ name: 'Ada' }`)
|
|
90
|
-
* @returns The translated string, or the key itself if not found
|
|
91
|
-
*
|
|
92
|
-
* @example
|
|
93
|
-
* ```ts
|
|
94
|
-
* i18n.t('greeting'); // 'Hello'
|
|
95
|
-
* i18n.t('user.welcome', { name: 'Ada' }); // 'Welcome, Ada!'
|
|
96
|
-
* i18n.t('items', { count: 3 }); // '3 items'
|
|
97
|
-
* ```
|
|
98
|
-
*/
|
|
99
|
-
t: (key: string, params?: TranslateParams) => string;
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Reactive translation — returns a ReadonlySignal that updates
|
|
103
|
-
* when the locale changes.
|
|
104
|
-
*
|
|
105
|
-
* @param key - Dot-delimited key path
|
|
106
|
-
* @param params - Interpolation values
|
|
107
|
-
* @returns A reactive signal containing the translated string
|
|
108
|
-
*/
|
|
109
|
-
tc: (key: string, params?: TranslateParams) => ReadonlySignal<string>;
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Register a lazy-loader for a locale's messages.
|
|
113
|
-
* The loader is invoked when the locale is first needed.
|
|
114
|
-
*
|
|
115
|
-
* @param locale - Locale code
|
|
116
|
-
* @param loader - Async function returning messages
|
|
117
|
-
*
|
|
118
|
-
* @example
|
|
119
|
-
* ```ts
|
|
120
|
-
* i18n.loadLocale('de', () => import('./locales/de.json'));
|
|
121
|
-
* ```
|
|
122
|
-
*/
|
|
123
|
-
loadLocale: (locale: string, loader: LocaleLoader) => void;
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Ensure a locale's messages are loaded (triggers lazy-loader if registered).
|
|
127
|
-
*
|
|
128
|
-
* @param locale - Locale code to load
|
|
129
|
-
* @returns A promise that resolves when the locale is ready
|
|
130
|
-
*/
|
|
131
|
-
ensureLocale: (locale: string) => Promise<void>;
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Format a number according to the current locale using `Intl.NumberFormat`.
|
|
135
|
-
*
|
|
136
|
-
* @param value - Number to format
|
|
137
|
-
* @param options - Intl.NumberFormat options
|
|
138
|
-
* @returns The formatted number string
|
|
139
|
-
*/
|
|
140
|
-
n: (value: number, options?: NumberFormatOptions) => string;
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* Format a date according to the current locale using `Intl.DateTimeFormat`.
|
|
144
|
-
*
|
|
145
|
-
* @param value - Date to format
|
|
146
|
-
* @param options - Intl.DateTimeFormat options
|
|
147
|
-
* @returns The formatted date string
|
|
148
|
-
*/
|
|
149
|
-
d: (value: Date | number, options?: DateFormatOptions) => string;
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Get all currently loaded messages for a locale.
|
|
153
|
-
*
|
|
154
|
-
* @param locale - Locale code
|
|
155
|
-
* @returns The messages object, or undefined if not loaded
|
|
156
|
-
*/
|
|
157
|
-
getMessages: (locale: string) => LocaleMessages | undefined;
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Merge additional messages into an existing locale.
|
|
161
|
-
*
|
|
162
|
-
* @param locale - Locale code
|
|
163
|
-
* @param messages - Messages to merge (deep merge)
|
|
164
|
-
*/
|
|
165
|
-
mergeMessages: (locale: string, messages: LocaleMessages) => void;
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* List all available locale codes (loaded or registered for lazy-loading).
|
|
169
|
-
*/
|
|
170
|
-
availableLocales: () => string[];
|
|
171
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for the i18n module.
|
|
3
|
+
* @module bquery/i18n
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { ReadonlySignal, Signal } from '../reactive/index';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* A nested record of translation messages.
|
|
10
|
+
* Values can be strings or nested objects for namespacing.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* const messages: LocaleMessages = {
|
|
15
|
+
* greeting: 'Hello',
|
|
16
|
+
* user: {
|
|
17
|
+
* name: 'Name',
|
|
18
|
+
* welcome: 'Welcome, {name}!',
|
|
19
|
+
* },
|
|
20
|
+
* items: '{count} item | {count} items',
|
|
21
|
+
* };
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export type LocaleMessages = {
|
|
25
|
+
[key: string]: string | LocaleMessages;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Record of locale codes to their messages.
|
|
30
|
+
*/
|
|
31
|
+
export type Messages = {
|
|
32
|
+
[locale: string]: LocaleMessages;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Interpolation parameters for translation strings.
|
|
37
|
+
* Values are converted to strings during interpolation.
|
|
38
|
+
*/
|
|
39
|
+
export type TranslateParams = Record<string, string | number>;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Configuration for creating an i18n instance.
|
|
43
|
+
*/
|
|
44
|
+
export type I18nConfig = {
|
|
45
|
+
/** The initial locale code (e.g. 'en', 'de', 'fr') */
|
|
46
|
+
locale: string;
|
|
47
|
+
/** Pre-loaded message dictionaries keyed by locale */
|
|
48
|
+
messages: Messages;
|
|
49
|
+
/** Fallback locale when a key is missing in the current locale */
|
|
50
|
+
fallbackLocale?: string;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* A lazy-loader function that returns a promise resolving to locale messages.
|
|
55
|
+
*/
|
|
56
|
+
export type LocaleLoader = () => Promise<LocaleMessages | { default: LocaleMessages }>;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Options for number formatting via `Intl.NumberFormat`.
|
|
60
|
+
*/
|
|
61
|
+
export type NumberFormatOptions = Intl.NumberFormatOptions & {
|
|
62
|
+
/** Override the locale for this specific formatting call */
|
|
63
|
+
locale?: string;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Options for date formatting via `Intl.DateTimeFormat`.
|
|
68
|
+
*/
|
|
69
|
+
export type DateFormatOptions = Intl.DateTimeFormatOptions & {
|
|
70
|
+
/** Override the locale for this specific formatting call */
|
|
71
|
+
locale?: string;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* The public i18n instance returned by `createI18n()`.
|
|
76
|
+
*/
|
|
77
|
+
export type I18nInstance = {
|
|
78
|
+
/**
|
|
79
|
+
* Reactive signal holding the current locale code.
|
|
80
|
+
* Setting `.value` switches the locale and reactively updates
|
|
81
|
+
* all computed translations.
|
|
82
|
+
*/
|
|
83
|
+
$locale: Signal<string>;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Translate a key path with optional interpolation and pluralization.
|
|
87
|
+
*
|
|
88
|
+
* @param key - Dot-delimited key path (e.g. 'user.welcome')
|
|
89
|
+
* @param params - Interpolation values (e.g. `{ name: 'Ada' }`)
|
|
90
|
+
* @returns The translated string, or the key itself if not found
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```ts
|
|
94
|
+
* i18n.t('greeting'); // 'Hello'
|
|
95
|
+
* i18n.t('user.welcome', { name: 'Ada' }); // 'Welcome, Ada!'
|
|
96
|
+
* i18n.t('items', { count: 3 }); // '3 items'
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
t: (key: string, params?: TranslateParams) => string;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Reactive translation — returns a ReadonlySignal that updates
|
|
103
|
+
* when the locale changes.
|
|
104
|
+
*
|
|
105
|
+
* @param key - Dot-delimited key path
|
|
106
|
+
* @param params - Interpolation values
|
|
107
|
+
* @returns A reactive signal containing the translated string
|
|
108
|
+
*/
|
|
109
|
+
tc: (key: string, params?: TranslateParams) => ReadonlySignal<string>;
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Register a lazy-loader for a locale's messages.
|
|
113
|
+
* The loader is invoked when the locale is first needed.
|
|
114
|
+
*
|
|
115
|
+
* @param locale - Locale code
|
|
116
|
+
* @param loader - Async function returning messages
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```ts
|
|
120
|
+
* i18n.loadLocale('de', () => import('./locales/de.json'));
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
loadLocale: (locale: string, loader: LocaleLoader) => void;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Ensure a locale's messages are loaded (triggers lazy-loader if registered).
|
|
127
|
+
*
|
|
128
|
+
* @param locale - Locale code to load
|
|
129
|
+
* @returns A promise that resolves when the locale is ready
|
|
130
|
+
*/
|
|
131
|
+
ensureLocale: (locale: string) => Promise<void>;
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Format a number according to the current locale using `Intl.NumberFormat`.
|
|
135
|
+
*
|
|
136
|
+
* @param value - Number to format
|
|
137
|
+
* @param options - Intl.NumberFormat options
|
|
138
|
+
* @returns The formatted number string
|
|
139
|
+
*/
|
|
140
|
+
n: (value: number, options?: NumberFormatOptions) => string;
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Format a date according to the current locale using `Intl.DateTimeFormat`.
|
|
144
|
+
*
|
|
145
|
+
* @param value - Date to format
|
|
146
|
+
* @param options - Intl.DateTimeFormat options
|
|
147
|
+
* @returns The formatted date string
|
|
148
|
+
*/
|
|
149
|
+
d: (value: Date | number, options?: DateFormatOptions) => string;
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Get all currently loaded messages for a locale.
|
|
153
|
+
*
|
|
154
|
+
* @param locale - Locale code
|
|
155
|
+
* @returns The messages object, or undefined if not loaded
|
|
156
|
+
*/
|
|
157
|
+
getMessages: (locale: string) => LocaleMessages | undefined;
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Merge additional messages into an existing locale.
|
|
161
|
+
*
|
|
162
|
+
* @param locale - Locale code
|
|
163
|
+
* @param messages - Messages to merge (deep merge)
|
|
164
|
+
*/
|
|
165
|
+
mergeMessages: (locale: string, messages: LocaleMessages) => void;
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* List all available locale codes (loaded or registered for lazy-loading).
|
|
169
|
+
*/
|
|
170
|
+
availableLocales: () => string[];
|
|
171
|
+
};
|
package/src/index.ts
CHANGED
|
@@ -1,108 +1,108 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* bQuery.js — The jQuery for the Modern Web Platform
|
|
3
|
-
*
|
|
4
|
-
* A zero-build, TypeScript-first library that bridges vanilla JavaScript
|
|
5
|
-
* and build-step frameworks with modern features.
|
|
6
|
-
*
|
|
7
|
-
* @module bquery
|
|
8
|
-
* @see https://github.com/bquery/bquery
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
// Core module: selectors, DOM ops, events, utils
|
|
12
|
-
export * from './core/index';
|
|
13
|
-
|
|
14
|
-
// Reactive module: signals, computed, effects, binding
|
|
15
|
-
export * from './reactive/index';
|
|
16
|
-
|
|
17
|
-
// Component module: Web Components helper
|
|
18
|
-
export * from './component/index';
|
|
19
|
-
|
|
20
|
-
// Motion module: view transitions, FLIP, springs
|
|
21
|
-
export * from './motion/index';
|
|
22
|
-
|
|
23
|
-
// Security module: sanitizer, CSP, Trusted Types
|
|
24
|
-
export * from './security/index';
|
|
25
|
-
|
|
26
|
-
// Platform module: storage, buckets, notifications, cache
|
|
27
|
-
export * from './platform/index';
|
|
28
|
-
|
|
29
|
-
// Router module: SPA routing, navigation guards
|
|
30
|
-
export * from './router/index';
|
|
31
|
-
|
|
32
|
-
// Store module: state management with signals
|
|
33
|
-
export * from './store/index';
|
|
34
|
-
|
|
35
|
-
// View module: declarative DOM bindings
|
|
36
|
-
export * from './view/index';
|
|
37
|
-
|
|
38
|
-
// Forms module: reactive form handling and validation
|
|
39
|
-
export * from './forms/index';
|
|
40
|
-
|
|
41
|
-
// i18n module: internationalization, translations, formatting
|
|
42
|
-
export * from './i18n/index';
|
|
43
|
-
|
|
44
|
-
// a11y module: accessibility utilities
|
|
45
|
-
// Note: prefersReducedMotion is not re-exported here to avoid naming conflict
|
|
46
|
-
// with the motion module's prefersReducedMotion(). Use @bquery/bquery/a11y for
|
|
47
|
-
// the reactive signal version.
|
|
48
|
-
export {
|
|
49
|
-
announceToScreenReader,
|
|
50
|
-
auditA11y,
|
|
51
|
-
clearAnnouncements,
|
|
52
|
-
getFocusableElements,
|
|
53
|
-
prefersColorScheme,
|
|
54
|
-
prefersContrast,
|
|
55
|
-
releaseFocus,
|
|
56
|
-
rovingTabIndex,
|
|
57
|
-
skipLink,
|
|
58
|
-
trapFocus,
|
|
59
|
-
} from './a11y/index';
|
|
60
|
-
export type {
|
|
61
|
-
AnnouncePriority,
|
|
62
|
-
AuditFinding,
|
|
63
|
-
AuditResult,
|
|
64
|
-
AuditSeverity,
|
|
65
|
-
ColorScheme,
|
|
66
|
-
ContrastPreference,
|
|
67
|
-
FocusTrapHandle,
|
|
68
|
-
RovingTabIndexHandle,
|
|
69
|
-
RovingTabIndexOptions,
|
|
70
|
-
SkipLinkHandle,
|
|
71
|
-
SkipLinkOptions,
|
|
72
|
-
TrapFocusOptions,
|
|
73
|
-
} from './a11y/index';
|
|
74
|
-
|
|
75
|
-
// DnD module: drag-and-drop, drop zones, sortable lists
|
|
76
|
-
export * from './dnd/index';
|
|
77
|
-
|
|
78
|
-
// Media module: reactive browser and device API signals
|
|
79
|
-
export * from './media/index';
|
|
80
|
-
|
|
81
|
-
// Plugin module: global plugin registration system
|
|
82
|
-
export * from './plugin/index';
|
|
83
|
-
|
|
84
|
-
// DevTools module: runtime debugging utilities
|
|
85
|
-
export * from './devtools/index';
|
|
86
|
-
|
|
87
|
-
// Testing module: test helpers for signals, components, router, and events
|
|
88
|
-
export {
|
|
89
|
-
renderComponent,
|
|
90
|
-
flushEffects,
|
|
91
|
-
mockSignal,
|
|
92
|
-
mockRouter,
|
|
93
|
-
fireEvent,
|
|
94
|
-
waitFor,
|
|
95
|
-
} from './testing/index';
|
|
96
|
-
export type {
|
|
97
|
-
FireEventOptions,
|
|
98
|
-
MockRouter,
|
|
99
|
-
MockRouterOptions,
|
|
100
|
-
MockSignal,
|
|
101
|
-
RenderComponentOptions,
|
|
102
|
-
RenderResult,
|
|
103
|
-
TestRoute,
|
|
104
|
-
WaitForOptions,
|
|
105
|
-
} from './testing/index';
|
|
106
|
-
|
|
107
|
-
// SSR module: server-side rendering, hydration, store state serialization
|
|
108
|
-
export * from './ssr/index';
|
|
1
|
+
/**
|
|
2
|
+
* bQuery.js — The jQuery for the Modern Web Platform
|
|
3
|
+
*
|
|
4
|
+
* A zero-build, TypeScript-first library that bridges vanilla JavaScript
|
|
5
|
+
* and build-step frameworks with modern features.
|
|
6
|
+
*
|
|
7
|
+
* @module bquery
|
|
8
|
+
* @see https://github.com/bquery/bquery
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
// Core module: selectors, DOM ops, events, utils
|
|
12
|
+
export * from './core/index';
|
|
13
|
+
|
|
14
|
+
// Reactive module: signals, computed, effects, binding
|
|
15
|
+
export * from './reactive/index';
|
|
16
|
+
|
|
17
|
+
// Component module: Web Components helper
|
|
18
|
+
export * from './component/index';
|
|
19
|
+
|
|
20
|
+
// Motion module: view transitions, FLIP, springs
|
|
21
|
+
export * from './motion/index';
|
|
22
|
+
|
|
23
|
+
// Security module: sanitizer, CSP, Trusted Types
|
|
24
|
+
export * from './security/index';
|
|
25
|
+
|
|
26
|
+
// Platform module: storage, buckets, notifications, cache
|
|
27
|
+
export * from './platform/index';
|
|
28
|
+
|
|
29
|
+
// Router module: SPA routing, navigation guards
|
|
30
|
+
export * from './router/index';
|
|
31
|
+
|
|
32
|
+
// Store module: state management with signals
|
|
33
|
+
export * from './store/index';
|
|
34
|
+
|
|
35
|
+
// View module: declarative DOM bindings
|
|
36
|
+
export * from './view/index';
|
|
37
|
+
|
|
38
|
+
// Forms module: reactive form handling and validation
|
|
39
|
+
export * from './forms/index';
|
|
40
|
+
|
|
41
|
+
// i18n module: internationalization, translations, formatting
|
|
42
|
+
export * from './i18n/index';
|
|
43
|
+
|
|
44
|
+
// a11y module: accessibility utilities
|
|
45
|
+
// Note: prefersReducedMotion is not re-exported here to avoid naming conflict
|
|
46
|
+
// with the motion module's prefersReducedMotion(). Use @bquery/bquery/a11y for
|
|
47
|
+
// the reactive signal version.
|
|
48
|
+
export {
|
|
49
|
+
announceToScreenReader,
|
|
50
|
+
auditA11y,
|
|
51
|
+
clearAnnouncements,
|
|
52
|
+
getFocusableElements,
|
|
53
|
+
prefersColorScheme,
|
|
54
|
+
prefersContrast,
|
|
55
|
+
releaseFocus,
|
|
56
|
+
rovingTabIndex,
|
|
57
|
+
skipLink,
|
|
58
|
+
trapFocus,
|
|
59
|
+
} from './a11y/index';
|
|
60
|
+
export type {
|
|
61
|
+
AnnouncePriority,
|
|
62
|
+
AuditFinding,
|
|
63
|
+
AuditResult,
|
|
64
|
+
AuditSeverity,
|
|
65
|
+
ColorScheme,
|
|
66
|
+
ContrastPreference,
|
|
67
|
+
FocusTrapHandle,
|
|
68
|
+
RovingTabIndexHandle,
|
|
69
|
+
RovingTabIndexOptions,
|
|
70
|
+
SkipLinkHandle,
|
|
71
|
+
SkipLinkOptions,
|
|
72
|
+
TrapFocusOptions,
|
|
73
|
+
} from './a11y/index';
|
|
74
|
+
|
|
75
|
+
// DnD module: drag-and-drop, drop zones, sortable lists
|
|
76
|
+
export * from './dnd/index';
|
|
77
|
+
|
|
78
|
+
// Media module: reactive browser and device API signals
|
|
79
|
+
export * from './media/index';
|
|
80
|
+
|
|
81
|
+
// Plugin module: global plugin registration system
|
|
82
|
+
export * from './plugin/index';
|
|
83
|
+
|
|
84
|
+
// DevTools module: runtime debugging utilities
|
|
85
|
+
export * from './devtools/index';
|
|
86
|
+
|
|
87
|
+
// Testing module: test helpers for signals, components, router, and events
|
|
88
|
+
export {
|
|
89
|
+
renderComponent,
|
|
90
|
+
flushEffects,
|
|
91
|
+
mockSignal,
|
|
92
|
+
mockRouter,
|
|
93
|
+
fireEvent,
|
|
94
|
+
waitFor,
|
|
95
|
+
} from './testing/index';
|
|
96
|
+
export type {
|
|
97
|
+
FireEventOptions,
|
|
98
|
+
MockRouter,
|
|
99
|
+
MockRouterOptions,
|
|
100
|
+
MockSignal,
|
|
101
|
+
RenderComponentOptions,
|
|
102
|
+
RenderResult,
|
|
103
|
+
TestRoute,
|
|
104
|
+
WaitForOptions,
|
|
105
|
+
} from './testing/index';
|
|
106
|
+
|
|
107
|
+
// SSR module: server-side rendering, hydration, store state serialization
|
|
108
|
+
export * from './ssr/index';
|