@better-intl/next 0.1.2 → 0.2.0

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/dist/rsc.cjs ADDED
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ var core = require('@better-intl/core');
4
+ var react = require('react');
5
+
6
+ // src/rsc.ts
7
+ var getRequestIntl = react.cache(
8
+ () => ({
9
+ locale: "",
10
+ messages: {}
11
+ })
12
+ );
13
+ function setRequestIntl(locale, messages) {
14
+ const intl = getRequestIntl();
15
+ intl.locale = locale;
16
+ intl.messages = messages;
17
+ }
18
+ function rsc() {
19
+ const { messages } = getRequestIntl();
20
+ return (id, values, defaultMessage) => {
21
+ const message = messages[id] ?? defaultMessage ?? id;
22
+ return values ? core.interpolate(message, values) : message;
23
+ };
24
+ }
25
+ function getRequestLocale() {
26
+ return getRequestIntl().locale;
27
+ }
28
+
29
+ exports.getRequestLocale = getRequestLocale;
30
+ exports.rsc = rsc;
31
+ exports.setRequestIntl = setRequestIntl;
32
+ //# sourceMappingURL=rsc.cjs.map
33
+ //# sourceMappingURL=rsc.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/rsc.ts"],"names":["cache","interpolate"],"mappings":";;;;;;AAoCA,IAAM,cAAA,GAAiBA,WAAA;AAAA,EACrB,OAAoB;AAAA,IAClB,MAAA,EAAQ,EAAA;AAAA,IACR,UAAU;AAAC,GACb;AACF,CAAA;AAOO,SAAS,cAAA,CAAe,QAAgB,QAAA,EAA0B;AACvE,EAAA,MAAM,OAAO,cAAA,EAAe;AAC5B,EAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,EAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAClB;AAQO,SAAS,GAAA,GAIJ;AACV,EAAA,MAAM,EAAE,QAAA,EAAS,GAAI,cAAA,EAAe;AAEpC,EAAA,OAAO,CACL,EAAA,EACA,MAAA,EACA,cAAA,KACW;AACX,IAAA,MAAM,OAAA,GAAU,QAAA,CAAS,EAAE,CAAA,IAAK,cAAA,IAAkB,EAAA;AAClD,IAAA,OAAO,MAAA,GAASC,gBAAA,CAAY,OAAA,EAAS,MAAM,CAAA,GAAI,OAAA;AAAA,EACjD,CAAA;AACF;AAKO,SAAS,gBAAA,GAA2B;AACzC,EAAA,OAAO,gBAAe,CAAE,MAAA;AAC1B","file":"rsc.cjs","sourcesContent":["/**\n * React Server Component support for better-intl.\n *\n * Uses React.cache() to store locale/messages per request.\n * Call setRequestIntl() once in your layout, then rsc() in any server component.\n *\n * @example\n * // app/[locale]/layout.tsx\n * import { setRequestIntl } from \"@better-intl/next/rsc\";\n *\n * export default async function Layout({ params, children }) {\n * const { locale } = await params;\n * const messages = (await import(`../../locales/${locale}.json`)).default;\n * setRequestIntl(locale, messages);\n * return <>{children}</>;\n * }\n *\n * @example\n * // app/[locale]/page.tsx — no imports needed, Babel handles it\n * export default function Page() {\n * return <h1>Hello world</h1>;\n * }\n */\n\nimport {\n type InterpolationValues,\n interpolate,\n type Messages,\n} from \"@better-intl/core\";\nimport { cache } from \"react\";\n\ninterface RequestIntl {\n locale: string;\n messages: Messages;\n}\n\nconst getRequestIntl = cache(\n (): RequestIntl => ({\n locale: \"\",\n messages: {},\n }),\n);\n\n/**\n * Set the locale and messages for the current request.\n * Call this once in your root layout — all server components\n * rendered in the same request will have access.\n */\nexport function setRequestIntl(locale: string, messages: Messages): void {\n const intl = getRequestIntl();\n intl.locale = locale;\n intl.messages = messages;\n}\n\n/**\n * Get a synchronous t() function for server components.\n * Reads from the request-scoped cache set by setRequestIntl().\n *\n * The Babel plugin injects this automatically in server components.\n */\nexport function rsc(): (\n id: string,\n values?: InterpolationValues,\n defaultMessage?: string,\n) => string {\n const { messages } = getRequestIntl();\n\n return (\n id: string,\n values?: InterpolationValues,\n defaultMessage?: string,\n ): string => {\n const message = messages[id] ?? defaultMessage ?? id;\n return values ? interpolate(message, values) : message;\n };\n}\n\n/**\n * Get the current request locale.\n */\nexport function getRequestLocale(): string {\n return getRequestIntl().locale;\n}\n"]}
package/dist/rsc.d.cts ADDED
@@ -0,0 +1,45 @@
1
+ import { InterpolationValues, Messages } from '@better-intl/core';
2
+
3
+ /**
4
+ * React Server Component support for better-intl.
5
+ *
6
+ * Uses React.cache() to store locale/messages per request.
7
+ * Call setRequestIntl() once in your layout, then rsc() in any server component.
8
+ *
9
+ * @example
10
+ * // app/[locale]/layout.tsx
11
+ * import { setRequestIntl } from "@better-intl/next/rsc";
12
+ *
13
+ * export default async function Layout({ params, children }) {
14
+ * const { locale } = await params;
15
+ * const messages = (await import(`../../locales/${locale}.json`)).default;
16
+ * setRequestIntl(locale, messages);
17
+ * return <>{children}</>;
18
+ * }
19
+ *
20
+ * @example
21
+ * // app/[locale]/page.tsx — no imports needed, Babel handles it
22
+ * export default function Page() {
23
+ * return <h1>Hello world</h1>;
24
+ * }
25
+ */
26
+
27
+ /**
28
+ * Set the locale and messages for the current request.
29
+ * Call this once in your root layout — all server components
30
+ * rendered in the same request will have access.
31
+ */
32
+ declare function setRequestIntl(locale: string, messages: Messages): void;
33
+ /**
34
+ * Get a synchronous t() function for server components.
35
+ * Reads from the request-scoped cache set by setRequestIntl().
36
+ *
37
+ * The Babel plugin injects this automatically in server components.
38
+ */
39
+ declare function rsc(): (id: string, values?: InterpolationValues, defaultMessage?: string) => string;
40
+ /**
41
+ * Get the current request locale.
42
+ */
43
+ declare function getRequestLocale(): string;
44
+
45
+ export { getRequestLocale, rsc, setRequestIntl };
package/dist/rsc.d.ts ADDED
@@ -0,0 +1,45 @@
1
+ import { InterpolationValues, Messages } from '@better-intl/core';
2
+
3
+ /**
4
+ * React Server Component support for better-intl.
5
+ *
6
+ * Uses React.cache() to store locale/messages per request.
7
+ * Call setRequestIntl() once in your layout, then rsc() in any server component.
8
+ *
9
+ * @example
10
+ * // app/[locale]/layout.tsx
11
+ * import { setRequestIntl } from "@better-intl/next/rsc";
12
+ *
13
+ * export default async function Layout({ params, children }) {
14
+ * const { locale } = await params;
15
+ * const messages = (await import(`../../locales/${locale}.json`)).default;
16
+ * setRequestIntl(locale, messages);
17
+ * return <>{children}</>;
18
+ * }
19
+ *
20
+ * @example
21
+ * // app/[locale]/page.tsx — no imports needed, Babel handles it
22
+ * export default function Page() {
23
+ * return <h1>Hello world</h1>;
24
+ * }
25
+ */
26
+
27
+ /**
28
+ * Set the locale and messages for the current request.
29
+ * Call this once in your root layout — all server components
30
+ * rendered in the same request will have access.
31
+ */
32
+ declare function setRequestIntl(locale: string, messages: Messages): void;
33
+ /**
34
+ * Get a synchronous t() function for server components.
35
+ * Reads from the request-scoped cache set by setRequestIntl().
36
+ *
37
+ * The Babel plugin injects this automatically in server components.
38
+ */
39
+ declare function rsc(): (id: string, values?: InterpolationValues, defaultMessage?: string) => string;
40
+ /**
41
+ * Get the current request locale.
42
+ */
43
+ declare function getRequestLocale(): string;
44
+
45
+ export { getRequestLocale, rsc, setRequestIntl };
package/dist/rsc.js ADDED
@@ -0,0 +1,29 @@
1
+ import { interpolate } from '@better-intl/core';
2
+ import { cache } from 'react';
3
+
4
+ // src/rsc.ts
5
+ var getRequestIntl = cache(
6
+ () => ({
7
+ locale: "",
8
+ messages: {}
9
+ })
10
+ );
11
+ function setRequestIntl(locale, messages) {
12
+ const intl = getRequestIntl();
13
+ intl.locale = locale;
14
+ intl.messages = messages;
15
+ }
16
+ function rsc() {
17
+ const { messages } = getRequestIntl();
18
+ return (id, values, defaultMessage) => {
19
+ const message = messages[id] ?? defaultMessage ?? id;
20
+ return values ? interpolate(message, values) : message;
21
+ };
22
+ }
23
+ function getRequestLocale() {
24
+ return getRequestIntl().locale;
25
+ }
26
+
27
+ export { getRequestLocale, rsc, setRequestIntl };
28
+ //# sourceMappingURL=rsc.js.map
29
+ //# sourceMappingURL=rsc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/rsc.ts"],"names":[],"mappings":";;;;AAoCA,IAAM,cAAA,GAAiB,KAAA;AAAA,EACrB,OAAoB;AAAA,IAClB,MAAA,EAAQ,EAAA;AAAA,IACR,UAAU;AAAC,GACb;AACF,CAAA;AAOO,SAAS,cAAA,CAAe,QAAgB,QAAA,EAA0B;AACvE,EAAA,MAAM,OAAO,cAAA,EAAe;AAC5B,EAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,EAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAClB;AAQO,SAAS,GAAA,GAIJ;AACV,EAAA,MAAM,EAAE,QAAA,EAAS,GAAI,cAAA,EAAe;AAEpC,EAAA,OAAO,CACL,EAAA,EACA,MAAA,EACA,cAAA,KACW;AACX,IAAA,MAAM,OAAA,GAAU,QAAA,CAAS,EAAE,CAAA,IAAK,cAAA,IAAkB,EAAA;AAClD,IAAA,OAAO,MAAA,GAAS,WAAA,CAAY,OAAA,EAAS,MAAM,CAAA,GAAI,OAAA;AAAA,EACjD,CAAA;AACF;AAKO,SAAS,gBAAA,GAA2B;AACzC,EAAA,OAAO,gBAAe,CAAE,MAAA;AAC1B","file":"rsc.js","sourcesContent":["/**\n * React Server Component support for better-intl.\n *\n * Uses React.cache() to store locale/messages per request.\n * Call setRequestIntl() once in your layout, then rsc() in any server component.\n *\n * @example\n * // app/[locale]/layout.tsx\n * import { setRequestIntl } from \"@better-intl/next/rsc\";\n *\n * export default async function Layout({ params, children }) {\n * const { locale } = await params;\n * const messages = (await import(`../../locales/${locale}.json`)).default;\n * setRequestIntl(locale, messages);\n * return <>{children}</>;\n * }\n *\n * @example\n * // app/[locale]/page.tsx — no imports needed, Babel handles it\n * export default function Page() {\n * return <h1>Hello world</h1>;\n * }\n */\n\nimport {\n type InterpolationValues,\n interpolate,\n type Messages,\n} from \"@better-intl/core\";\nimport { cache } from \"react\";\n\ninterface RequestIntl {\n locale: string;\n messages: Messages;\n}\n\nconst getRequestIntl = cache(\n (): RequestIntl => ({\n locale: \"\",\n messages: {},\n }),\n);\n\n/**\n * Set the locale and messages for the current request.\n * Call this once in your root layout — all server components\n * rendered in the same request will have access.\n */\nexport function setRequestIntl(locale: string, messages: Messages): void {\n const intl = getRequestIntl();\n intl.locale = locale;\n intl.messages = messages;\n}\n\n/**\n * Get a synchronous t() function for server components.\n * Reads from the request-scoped cache set by setRequestIntl().\n *\n * The Babel plugin injects this automatically in server components.\n */\nexport function rsc(): (\n id: string,\n values?: InterpolationValues,\n defaultMessage?: string,\n) => string {\n const { messages } = getRequestIntl();\n\n return (\n id: string,\n values?: InterpolationValues,\n defaultMessage?: string,\n ): string => {\n const message = messages[id] ?? defaultMessage ?? id;\n return values ? interpolate(message, values) : message;\n };\n}\n\n/**\n * Get the current request locale.\n */\nexport function getRequestLocale(): string {\n return getRequestIntl().locale;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@better-intl/next",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "description": "Next.js App Router integration for better-intl",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -26,6 +26,11 @@
26
26
  "import": "./dist/server.js",
27
27
  "require": "./dist/server.cjs",
28
28
  "types": "./dist/server.d.ts"
29
+ },
30
+ "./rsc": {
31
+ "import": "./dist/rsc.js",
32
+ "require": "./dist/rsc.cjs",
33
+ "types": "./dist/rsc.d.ts"
29
34
  }
30
35
  },
31
36
  "files": [