cloudflare-next-intl 0.8.33 → 0.8.35

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 CHANGED
@@ -609,7 +609,7 @@ Every query in the array is executed sequentially in a single transaction block/
609
609
 
610
610
  Either way, a failure on any statement rolls back every statement that ran before it in the transaction.
611
611
 
612
- Each result is the `{ rows, rowCount }` shape. Because the callback only builds queries, a later statement in a `.transaction()` callback cannot read an earlier one's result — build every statement from arguments/closures you already have. `await`ing a query directly inside `.transaction()` throws immediately to prevent running queries outside the transaction boundary.
612
+ Each result is the `{ rows, rowCount }` shape. Because the callback only builds queries, a later statement in a `.transaction()` callback cannot read an earlier one's result — build every statement from arguments/closures you already have. The handle passed into the callback is a fully working Drizzle query builder — chain `.insert()`/`.select()`/`.where()`/etc. freely — but it has no real connection behind it: `await`ing a query directly (instead of calling `.toSQL()` and returning it) throws once execution is actually attempted, not on the property access or chaining itself, to prevent running queries outside the transaction boundary.
613
613
 
614
614
  #### Supabase mode and REST translation
615
615
 
@@ -101,7 +101,7 @@ async function postgresDb(drizzleHandle, rawClient) {
101
101
  * interleave statements into this transaction.
102
102
  */
103
103
  async function runPostgresTransaction(rawClient, build) {
104
- const queries = await build(buildOnlyDb());
104
+ const queries = await callBuild(build);
105
105
  await rawClient.query('begin');
106
106
  try {
107
107
  const results = [];
@@ -126,14 +126,31 @@ async function runPostgresTransaction(rawClient, build) {
126
126
  * output) throws immediately here instead of hanging or silently running
127
127
  * outside the batch.
128
128
  */
129
- function buildOnlyDb() {
130
- const throwIfExecuted = () => {
129
+ async function buildOnlyDb() {
130
+ const { drizzle } = await import('drizzle-orm/pg-proxy');
131
+ return drizzle(() => {
131
132
  throw new Error('db: this Drizzle handle is for building statements only — call `.toSQL()` on each ' +
132
133
  'query and return the array, do not `await`/execute it directly. Awaiting a query ' +
133
134
  'inside a Supabase-mode db.transaction() callback runs it outside the batch, with no ' +
134
135
  'atomicity, which is exactly what `.transaction()` exists to prevent.');
135
- };
136
- return new Proxy({}, { get: () => throwIfExecuted });
136
+ });
137
+ }
138
+ /**
139
+ * Runs `build` against a fresh build-only handle, unwrapping pg-proxy's
140
+ * `Failed query: ...` wrapper (with the real message on `.cause`) so a
141
+ * caller who awaits a query instead of collecting `.toSQL()` sees the
142
+ * build-only guidance directly, not the wrapper's generic text.
143
+ */
144
+ async function callBuild(build) {
145
+ try {
146
+ return await build(await buildOnlyDb());
147
+ }
148
+ catch (error) {
149
+ const cause = error?.cause;
150
+ if (error instanceof Error && cause instanceof Error)
151
+ throw cause;
152
+ throw error;
153
+ }
137
154
  }
138
155
  /**
139
156
  * Runs a query as the **anonymous** role: no transaction, no role switch, no
@@ -299,7 +316,7 @@ async function runTransaction(supabase, bearerToken, build) {
299
316
  'unavailable while `db.supabase.rawSql` is `false`. Install cfni_exec.sql and drop ' +
300
317
  '`rawSql: false`, or use `db.connectionString` for a direct Postgres connection instead.');
301
318
  }
302
- const queries = await build(buildOnlyDb());
319
+ const queries = await callBuild(build);
303
320
  const batchQueries = queries.map((query) => ({ sql: query.sql, params: query.params }));
304
321
  return runTransactionBatch(supabase, bearerToken, batchQueries);
305
322
  }
@@ -300,7 +300,10 @@ export default async function updateSession(request, baseResponse, locale, rebui
300
300
  // put there itself) is still needed. Dropping Firebase's own
301
301
  // routing params keeps the landed URL clean and makes a second
302
302
  // forwarding pass impossible.
303
- if (fa.stripActionLinkQuery !== false) {
303
+ // `signIn` is the exception: `signInWithEmailLink` re-parses
304
+ // the landed URL and needs Firebase's own `mode`/`apiKey`
305
+ // intact, unlike the bare-`oobCode` reset/verify flows.
306
+ if (fa.stripActionLinkQuery !== false && mode !== 'signIn') {
304
307
  for (const key of ['mode', 'apiKey', 'lang', 'continueUrl']) {
305
308
  url.searchParams.delete(key);
306
309
  }
@@ -551,7 +551,9 @@ export interface FirebaseAuthRoutingConfig {
551
551
  * `mode`/`apiKey`/`lang`/`continueUrl` params, landing the user on a clean
552
552
  * `?oobCode=` URL. Defaults to `true`. Set `false` to keep the full query
553
553
  * when the destination page reads those params itself. Cross-origin
554
- * redirects always keep the full query.
554
+ * redirects always keep the full query, as do `mode=signIn` forwards —
555
+ * `signInWithEmailLink` re-parses the landed URL and rejects it without
556
+ * Firebase's own `mode`/`apiKey`.
555
557
  */
556
558
  stripActionLinkQuery?: boolean;
557
559
  /**
package/package.json CHANGED
@@ -1,285 +1,285 @@
1
1
  {
2
- "name": "cloudflare-next-intl",
3
- "version": "0.8.33",
4
- "description": "Optimized Next Intl Package Special for App Router and Cloudflare",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "sideEffects": false,
8
- "bin": {
9
- "cfni-db-codegen": "bin/db_codegen.mjs",
10
- "cfni-db-install-exec": "bin/db_install_exec.mjs"
11
- },
12
- "files": [
13
- "dist",
14
- "bin",
15
- "supabase",
16
- "LICENSE",
17
- "README.md",
18
- "llms.txt"
19
- ],
20
- "exports": {
21
- ".": {
22
- "types": "./dist/index.d.ts",
23
- "import": "./dist/index.js"
24
- },
25
- "./client": {
26
- "types": "./dist/src/client/index.d.ts",
27
- "import": "./dist/src/client/index.js"
28
- },
29
- "./server": {
30
- "types": "./dist/src/server/index.d.ts",
31
- "import": "./dist/src/server/index.js"
32
- },
33
- "./middleware": {
34
- "types": "./dist/src/config/middleware.d.ts",
35
- "import": "./dist/src/config/middleware.js"
36
- },
37
- "./setIntlConfig": {
38
- "types": "./dist/src/config/init_config.d.ts",
39
- "import": "./dist/src/config/init_config.js"
40
- },
41
- "./serverProvider": {
42
- "types": "./dist/src/server/components/server_provider.d.ts",
43
- "import": "./dist/src/server/components/server_provider.js"
44
- },
45
- "./serverProviderStatic": {
46
- "types": "./dist/src/server/components/server_provider_static.d.ts",
47
- "import": "./dist/src/server/components/server_provider_static.js"
48
- },
49
- "./Link": {
50
- "types": "./dist/src/server/components/link.d.ts",
51
- "import": "./dist/src/server/components/link.js"
52
- },
53
- "./IntlHelperScript": {
54
- "types": "./dist/src/server/components/helper_script.d.ts",
55
- "import": "./dist/src/server/components/helper_script.js"
56
- },
57
- "./LocaleLink": {
58
- "types": "./dist/src/client/components/locale_link.d.ts",
59
- "import": "./dist/src/client/components/locale_link.js"
60
- },
61
- "./usePathname": {
62
- "types": "./dist/src/client/hooks/use_path_name.d.ts",
63
- "import": "./dist/src/client/hooks/use_path_name.js"
64
- },
65
- "./metadata": {
66
- "types": "./dist/src/general/metadata.d.ts",
67
- "import": "./dist/src/general/metadata.js"
68
- },
69
- "./setCookieClient": {
70
- "types": "./dist/src/client/functions/set_cookie.d.ts",
71
- "import": "./dist/src/client/functions/set_cookie.js"
72
- },
73
- "./getCookieClient": {
74
- "types": "./dist/src/client/functions/get_cookie.d.ts",
75
- "import": "./dist/src/client/functions/get_cookie.js"
76
- },
77
- "./localeStaticParams": {
78
- "types": "./dist/src/server/functions/locale_static_params.d.ts",
79
- "import": "./dist/src/server/functions/locale_static_params.js"
80
- },
81
- "./use": {
82
- "react-server": {
83
- "types": "./dist/src/server/functions/use_functions.d.ts",
84
- "import": "./dist/src/server/functions/use_functions.js"
85
- },
86
- "default": {
87
- "types": "./dist/src/client/hooks/client_hooks.d.ts",
88
- "import": "./dist/src/client/hooks/client_hooks.js"
89
- }
90
- },
91
- "./ThemeSwitcher": {
92
- "types": "./dist/src/theme_switcher/components/theme_switcher.d.ts",
93
- "import": "./dist/src/theme_switcher/components/theme_switcher.js"
94
- },
95
- "./firebaseAuthClient": {
96
- "types": "./dist/src/firebase_auth/client/firebase_client.d.ts",
97
- "import": "./dist/src/firebase_auth/client/firebase_client.js"
98
- },
99
- "./firebaseAuthClientProvider": {
100
- "types": "./dist/src/firebase_auth/client/auth_user_provider.d.ts",
101
- "import": "./dist/src/firebase_auth/client/auth_user_provider.js"
102
- },
103
- "./firebaseAuthServerProvider": {
104
- "types": "./dist/src/firebase_auth/server/auth_user_server_provider.d.ts",
105
- "import": "./dist/src/firebase_auth/server/auth_user_server_provider.js"
106
- },
107
- "./useFirebaseAuthUser": {
108
- "react-server": {
109
- "types": "./dist/src/firebase_auth/server/use_auth_user_server.d.ts",
110
- "import": "./dist/src/firebase_auth/server/use_auth_user_server.js"
111
- },
112
- "default": {
113
- "types": "./dist/src/firebase_auth/client/use_auth_user.d.ts",
114
- "import": "./dist/src/firebase_auth/client/use_auth_user.js"
115
- }
116
- },
117
- "./getFirebaseAuthUser": {
118
- "types": "./dist/src/firebase_auth/server/use_auth_user_server.d.ts",
119
- "import": "./dist/src/firebase_auth/server/use_auth_user_server.js"
120
- },
121
- "./firebaseAuthActions": {
122
- "types": "./dist/src/firebase_auth/client/auth_actions.d.ts",
123
- "import": "./dist/src/firebase_auth/client/auth_actions.js"
124
- },
125
- "./firebaseAuthMiddleware": {
126
- "types": "./dist/src/firebase_auth/middleware/update_session.d.ts",
127
- "import": "./dist/src/firebase_auth/middleware/update_session.js"
128
- },
129
- "./cookieConsent": {
130
- "types": "./dist/src/cookie_consent/index.d.ts",
131
- "import": "./dist/src/cookie_consent/index.js"
132
- },
133
- "./CookieConsentProvider": {
134
- "types": "./dist/src/cookie_consent/client/cookie_consent_provider.d.ts",
135
- "import": "./dist/src/cookie_consent/client/cookie_consent_provider.js"
136
- },
137
- "./useCookieConsent": {
138
- "types": "./dist/src/cookie_consent/client/use_cookie_consent.d.ts",
139
- "import": "./dist/src/cookie_consent/client/use_cookie_consent.js"
140
- },
141
- "./CookieConsentDialog": {
142
- "types": "./dist/src/cookie_consent/client/components/cookie_consent_dialog.d.ts",
143
- "import": "./dist/src/cookie_consent/client/components/cookie_consent_dialog.js"
144
- },
145
- "./PrivacyPolicyUpdateDialog": {
146
- "types": "./dist/src/cookie_consent/client/components/privacy_policy_update_dialog.d.ts",
147
- "import": "./dist/src/cookie_consent/client/components/privacy_policy_update_dialog.js"
148
- },
149
- "./cookieConsentAnalytics": {
150
- "types": "./dist/src/cookie_consent/client/components/cookie_consent_analytics.d.ts",
151
- "import": "./dist/src/cookie_consent/client/components/cookie_consent_analytics.js"
152
- },
153
- "./errorHandling": {
154
- "types": "./dist/src/error_handling/index.d.ts",
155
- "import": "./dist/src/error_handling/index.js"
156
- },
157
- "./installConsoleErrorOverride": {
158
- "types": "./dist/src/error_handling/install_console_error_override.d.ts",
159
- "import": "./dist/src/error_handling/install_console_error_override.js"
160
- },
161
- "./installGlobalErrorOverride": {
162
- "types": "./dist/src/error_handling/install_global_error_override.d.ts",
163
- "import": "./dist/src/error_handling/install_global_error_override.js"
164
- },
165
- "./stringifyUnknown": {
166
- "types": "./dist/src/error_handling/stringify_unknown.d.ts",
167
- "import": "./dist/src/error_handling/stringify_unknown.js"
168
- },
169
- "./formatErrorMessage": {
170
- "types": "./dist/src/error_handling/format_error_message.d.ts",
171
- "import": "./dist/src/error_handling/format_error_message.js"
172
- },
173
- "./defaultIgnoredConsoleErrors": {
174
- "types": "./dist/src/error_handling/default_ignored_console_errors.d.ts",
175
- "import": "./dist/src/error_handling/default_ignored_console_errors.js"
176
- },
177
- "./createServerErrorAction": {
178
- "types": "./dist/src/error_handling/create_server_error_action.d.ts",
179
- "import": "./dist/src/error_handling/create_server_error_action.js"
180
- },
181
- "./db": {
182
- "types": "./dist/src/db/index.d.ts",
183
- "import": "./dist/src/db/index.js"
184
- },
185
- "./dbEslint": {
186
- "types": "./dist/src/db/eslint_config.d.ts",
187
- "import": "./dist/src/db/eslint_config.js"
188
- },
189
- "./dbHelpers": {
190
- "types": "./dist/src/db/helpers.d.ts",
191
- "import": "./dist/src/db/helpers.js"
192
- },
193
- "./dbTesting": {
194
- "types": "./dist/src/db/testing.d.ts",
195
- "import": "./dist/src/db/testing.js"
196
- },
197
- "./dbSchema": {
198
- "types": "./dist/src/db/schema.d.ts",
199
- "import": "./dist/src/db/schema.js"
200
- }
201
- },
202
- "scripts": {
203
- "test": "vitest run --coverage",
204
- "bench": "vitest bench --run",
205
- "build": "tsc"
206
- },
207
- "repository": {
208
- "type": "git",
209
- "url": "git+https://github.com/demian-ilnytskyi/cloudflare-next-intl.git"
210
- },
211
- "keywords": [
212
- "nextjs",
213
- "i18n",
214
- "internationalization",
215
- "localization",
216
- "multilingual",
217
- "translation",
218
- "language",
219
- "optimized",
220
- "performance",
221
- "bundle-size",
222
- "fast",
223
- "efficient",
224
- "app-router",
225
- "server-components",
226
- "ssr",
227
- "ssg",
228
- "tree-shaking",
229
- "dynamic-imports",
230
- "react",
231
- "next-intl",
232
- "messages",
233
- "formatting",
234
- "icu"
235
- ],
236
- "author": "Demian Ilnutskyi",
237
- "license": "MIT",
238
- "bugs": {
239
- "url": "https://github.com/demian-ilnytskyi/cloudflare-next-intl/issues"
240
- },
241
- "homepage": "https://github.com/demian-ilnytskyi/cloudflare-next-intl#readme",
242
- "dependencies": {
243
- "@microsoft/clarity": "^1.0.2",
244
- "@supabase/supabase-js": "^2.112.3",
245
- "drizzle-kit": "^0.31.10",
246
- "drizzle-orm": "^0.45.2",
247
- "embedded-postgres": "^18.4.0-beta.17",
248
- "firebase": "^12.17.0",
249
- "jose": "^6.2.8",
250
- "pg": "^8.23.0"
251
- },
252
- "peerDependencies": {
253
- "next": ">=12.0.0",
254
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0",
255
- "typescript": ">=5.0.0"
256
- },
257
- "peerDependenciesMeta": {
258
- "typescript": {
259
- "optional": true
260
- }
261
- },
262
- "devDependencies": {
263
- "@eslint/eslintrc": "^3",
264
- "@eslint/js": "^9.27.0",
265
- "@testing-library/dom": "^10.4.1",
266
- "@testing-library/jest-dom": "^7.0.0",
267
- "@testing-library/react": "^16.3.2",
268
- "@types/node": "^20.14.5",
269
- "@types/pg": "^8.23.1",
270
- "@types/react": "^19.0.0",
271
- "@types/react-dom": "^19.0.0",
272
- "@vitest/coverage-v8": "^3.2.7",
273
- "eslint": "^9.28.0",
274
- "eslint-config-next": "15.3.3",
275
- "eslint-config-prettier": "^10.1.2",
276
- "jsdom": "^29.1.1",
277
- "next": "^15.3.0",
278
- "react": "19.2.0",
279
- "react-dom": "19.2.0",
280
- "tsup": "^8.5.1",
281
- "typescript": "^5.5.3",
282
- "typescript-eslint": "^8.33.1",
283
- "vitest": "^3.0.8"
284
- }
2
+ "name": "cloudflare-next-intl",
3
+ "version": "0.8.35",
4
+ "description": "Optimized Next Intl Package Special for App Router and Cloudflare",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "sideEffects": false,
8
+ "bin": {
9
+ "cfni-db-codegen": "bin/db_codegen.mjs",
10
+ "cfni-db-install-exec": "bin/db_install_exec.mjs"
11
+ },
12
+ "files": [
13
+ "dist",
14
+ "bin",
15
+ "supabase",
16
+ "LICENSE",
17
+ "README.md",
18
+ "llms.txt"
19
+ ],
20
+ "exports": {
21
+ ".": {
22
+ "types": "./dist/index.d.ts",
23
+ "import": "./dist/index.js"
24
+ },
25
+ "./client": {
26
+ "types": "./dist/src/client/index.d.ts",
27
+ "import": "./dist/src/client/index.js"
28
+ },
29
+ "./server": {
30
+ "types": "./dist/src/server/index.d.ts",
31
+ "import": "./dist/src/server/index.js"
32
+ },
33
+ "./middleware": {
34
+ "types": "./dist/src/config/middleware.d.ts",
35
+ "import": "./dist/src/config/middleware.js"
36
+ },
37
+ "./setIntlConfig": {
38
+ "types": "./dist/src/config/init_config.d.ts",
39
+ "import": "./dist/src/config/init_config.js"
40
+ },
41
+ "./serverProvider": {
42
+ "types": "./dist/src/server/components/server_provider.d.ts",
43
+ "import": "./dist/src/server/components/server_provider.js"
44
+ },
45
+ "./serverProviderStatic": {
46
+ "types": "./dist/src/server/components/server_provider_static.d.ts",
47
+ "import": "./dist/src/server/components/server_provider_static.js"
48
+ },
49
+ "./Link": {
50
+ "types": "./dist/src/server/components/link.d.ts",
51
+ "import": "./dist/src/server/components/link.js"
52
+ },
53
+ "./IntlHelperScript": {
54
+ "types": "./dist/src/server/components/helper_script.d.ts",
55
+ "import": "./dist/src/server/components/helper_script.js"
56
+ },
57
+ "./LocaleLink": {
58
+ "types": "./dist/src/client/components/locale_link.d.ts",
59
+ "import": "./dist/src/client/components/locale_link.js"
60
+ },
61
+ "./usePathname": {
62
+ "types": "./dist/src/client/hooks/use_path_name.d.ts",
63
+ "import": "./dist/src/client/hooks/use_path_name.js"
64
+ },
65
+ "./metadata": {
66
+ "types": "./dist/src/general/metadata.d.ts",
67
+ "import": "./dist/src/general/metadata.js"
68
+ },
69
+ "./setCookieClient": {
70
+ "types": "./dist/src/client/functions/set_cookie.d.ts",
71
+ "import": "./dist/src/client/functions/set_cookie.js"
72
+ },
73
+ "./getCookieClient": {
74
+ "types": "./dist/src/client/functions/get_cookie.d.ts",
75
+ "import": "./dist/src/client/functions/get_cookie.js"
76
+ },
77
+ "./localeStaticParams": {
78
+ "types": "./dist/src/server/functions/locale_static_params.d.ts",
79
+ "import": "./dist/src/server/functions/locale_static_params.js"
80
+ },
81
+ "./use": {
82
+ "react-server": {
83
+ "types": "./dist/src/server/functions/use_functions.d.ts",
84
+ "import": "./dist/src/server/functions/use_functions.js"
85
+ },
86
+ "default": {
87
+ "types": "./dist/src/client/hooks/client_hooks.d.ts",
88
+ "import": "./dist/src/client/hooks/client_hooks.js"
89
+ }
90
+ },
91
+ "./ThemeSwitcher": {
92
+ "types": "./dist/src/theme_switcher/components/theme_switcher.d.ts",
93
+ "import": "./dist/src/theme_switcher/components/theme_switcher.js"
94
+ },
95
+ "./firebaseAuthClient": {
96
+ "types": "./dist/src/firebase_auth/client/firebase_client.d.ts",
97
+ "import": "./dist/src/firebase_auth/client/firebase_client.js"
98
+ },
99
+ "./firebaseAuthClientProvider": {
100
+ "types": "./dist/src/firebase_auth/client/auth_user_provider.d.ts",
101
+ "import": "./dist/src/firebase_auth/client/auth_user_provider.js"
102
+ },
103
+ "./firebaseAuthServerProvider": {
104
+ "types": "./dist/src/firebase_auth/server/auth_user_server_provider.d.ts",
105
+ "import": "./dist/src/firebase_auth/server/auth_user_server_provider.js"
106
+ },
107
+ "./useFirebaseAuthUser": {
108
+ "react-server": {
109
+ "types": "./dist/src/firebase_auth/server/use_auth_user_server.d.ts",
110
+ "import": "./dist/src/firebase_auth/server/use_auth_user_server.js"
111
+ },
112
+ "default": {
113
+ "types": "./dist/src/firebase_auth/client/use_auth_user.d.ts",
114
+ "import": "./dist/src/firebase_auth/client/use_auth_user.js"
115
+ }
116
+ },
117
+ "./getFirebaseAuthUser": {
118
+ "types": "./dist/src/firebase_auth/server/use_auth_user_server.d.ts",
119
+ "import": "./dist/src/firebase_auth/server/use_auth_user_server.js"
120
+ },
121
+ "./firebaseAuthActions": {
122
+ "types": "./dist/src/firebase_auth/client/auth_actions.d.ts",
123
+ "import": "./dist/src/firebase_auth/client/auth_actions.js"
124
+ },
125
+ "./firebaseAuthMiddleware": {
126
+ "types": "./dist/src/firebase_auth/middleware/update_session.d.ts",
127
+ "import": "./dist/src/firebase_auth/middleware/update_session.js"
128
+ },
129
+ "./cookieConsent": {
130
+ "types": "./dist/src/cookie_consent/index.d.ts",
131
+ "import": "./dist/src/cookie_consent/index.js"
132
+ },
133
+ "./CookieConsentProvider": {
134
+ "types": "./dist/src/cookie_consent/client/cookie_consent_provider.d.ts",
135
+ "import": "./dist/src/cookie_consent/client/cookie_consent_provider.js"
136
+ },
137
+ "./useCookieConsent": {
138
+ "types": "./dist/src/cookie_consent/client/use_cookie_consent.d.ts",
139
+ "import": "./dist/src/cookie_consent/client/use_cookie_consent.js"
140
+ },
141
+ "./CookieConsentDialog": {
142
+ "types": "./dist/src/cookie_consent/client/components/cookie_consent_dialog.d.ts",
143
+ "import": "./dist/src/cookie_consent/client/components/cookie_consent_dialog.js"
144
+ },
145
+ "./PrivacyPolicyUpdateDialog": {
146
+ "types": "./dist/src/cookie_consent/client/components/privacy_policy_update_dialog.d.ts",
147
+ "import": "./dist/src/cookie_consent/client/components/privacy_policy_update_dialog.js"
148
+ },
149
+ "./cookieConsentAnalytics": {
150
+ "types": "./dist/src/cookie_consent/client/components/cookie_consent_analytics.d.ts",
151
+ "import": "./dist/src/cookie_consent/client/components/cookie_consent_analytics.js"
152
+ },
153
+ "./errorHandling": {
154
+ "types": "./dist/src/error_handling/index.d.ts",
155
+ "import": "./dist/src/error_handling/index.js"
156
+ },
157
+ "./installConsoleErrorOverride": {
158
+ "types": "./dist/src/error_handling/install_console_error_override.d.ts",
159
+ "import": "./dist/src/error_handling/install_console_error_override.js"
160
+ },
161
+ "./installGlobalErrorOverride": {
162
+ "types": "./dist/src/error_handling/install_global_error_override.d.ts",
163
+ "import": "./dist/src/error_handling/install_global_error_override.js"
164
+ },
165
+ "./stringifyUnknown": {
166
+ "types": "./dist/src/error_handling/stringify_unknown.d.ts",
167
+ "import": "./dist/src/error_handling/stringify_unknown.js"
168
+ },
169
+ "./formatErrorMessage": {
170
+ "types": "./dist/src/error_handling/format_error_message.d.ts",
171
+ "import": "./dist/src/error_handling/format_error_message.js"
172
+ },
173
+ "./defaultIgnoredConsoleErrors": {
174
+ "types": "./dist/src/error_handling/default_ignored_console_errors.d.ts",
175
+ "import": "./dist/src/error_handling/default_ignored_console_errors.js"
176
+ },
177
+ "./createServerErrorAction": {
178
+ "types": "./dist/src/error_handling/create_server_error_action.d.ts",
179
+ "import": "./dist/src/error_handling/create_server_error_action.js"
180
+ },
181
+ "./db": {
182
+ "types": "./dist/src/db/index.d.ts",
183
+ "import": "./dist/src/db/index.js"
184
+ },
185
+ "./dbEslint": {
186
+ "types": "./dist/src/db/eslint_config.d.ts",
187
+ "import": "./dist/src/db/eslint_config.js"
188
+ },
189
+ "./dbHelpers": {
190
+ "types": "./dist/src/db/helpers.d.ts",
191
+ "import": "./dist/src/db/helpers.js"
192
+ },
193
+ "./dbTesting": {
194
+ "types": "./dist/src/db/testing.d.ts",
195
+ "import": "./dist/src/db/testing.js"
196
+ },
197
+ "./dbSchema": {
198
+ "types": "./dist/src/db/schema.d.ts",
199
+ "import": "./dist/src/db/schema.js"
200
+ }
201
+ },
202
+ "scripts": {
203
+ "test": "vitest run --coverage",
204
+ "bench": "vitest bench --run",
205
+ "build": "tsc"
206
+ },
207
+ "repository": {
208
+ "type": "git",
209
+ "url": "git+https://github.com/demian-ilnytskyi/cloudflare-next-intl.git"
210
+ },
211
+ "keywords": [
212
+ "nextjs",
213
+ "i18n",
214
+ "internationalization",
215
+ "localization",
216
+ "multilingual",
217
+ "translation",
218
+ "language",
219
+ "optimized",
220
+ "performance",
221
+ "bundle-size",
222
+ "fast",
223
+ "efficient",
224
+ "app-router",
225
+ "server-components",
226
+ "ssr",
227
+ "ssg",
228
+ "tree-shaking",
229
+ "dynamic-imports",
230
+ "react",
231
+ "next-intl",
232
+ "messages",
233
+ "formatting",
234
+ "icu"
235
+ ],
236
+ "author": "Demian Ilnutskyi",
237
+ "license": "MIT",
238
+ "bugs": {
239
+ "url": "https://github.com/demian-ilnytskyi/cloudflare-next-intl/issues"
240
+ },
241
+ "homepage": "https://github.com/demian-ilnytskyi/cloudflare-next-intl#readme",
242
+ "dependencies": {
243
+ "@microsoft/clarity": "^1.0.2",
244
+ "@supabase/supabase-js": "^2.112.3",
245
+ "drizzle-kit": "^0.31.10",
246
+ "drizzle-orm": "^0.45.2",
247
+ "embedded-postgres": "^18.4.0-beta.17",
248
+ "firebase": "^12.17.0",
249
+ "jose": "^6.2.8",
250
+ "pg": "^8.23.0"
251
+ },
252
+ "peerDependencies": {
253
+ "next": ">=12.0.0",
254
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0",
255
+ "typescript": ">=5.0.0"
256
+ },
257
+ "peerDependenciesMeta": {
258
+ "typescript": {
259
+ "optional": true
260
+ }
261
+ },
262
+ "devDependencies": {
263
+ "@eslint/eslintrc": "^3",
264
+ "@eslint/js": "^9.27.0",
265
+ "@testing-library/dom": "^10.4.1",
266
+ "@testing-library/jest-dom": "^7.0.0",
267
+ "@testing-library/react": "^16.3.2",
268
+ "@types/node": "^20.14.5",
269
+ "@types/pg": "^8.23.1",
270
+ "@types/react": "^19.0.0",
271
+ "@types/react-dom": "^19.0.0",
272
+ "@vitest/coverage-v8": "^3.2.7",
273
+ "eslint": "^9.28.0",
274
+ "eslint-config-next": "15.3.3",
275
+ "eslint-config-prettier": "^10.1.2",
276
+ "jsdom": "^29.1.1",
277
+ "next": "^15.3.0",
278
+ "react": "19.2.0",
279
+ "react-dom": "19.2.0",
280
+ "tsup": "^8.5.1",
281
+ "typescript": "^5.5.3",
282
+ "typescript-eslint": "^8.33.1",
283
+ "vitest": "^3.0.8"
284
+ }
285
285
  }