next-formatter 2.0.3 → 2.0.6

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.
@@ -1,10 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var react = require('react');
4
- var jsxRuntime = require('react/jsx-runtime');
5
-
6
- // src/client.tsx
7
-
8
3
  // src/core.ts
9
4
  var DEFAULT_RULES = {
10
5
  compactThreshold: 1e4,
@@ -199,15 +194,6 @@ function createFormatters(config = {}) {
199
194
  };
200
195
  return formatters;
201
196
  }
202
- var FormatterContext = react.createContext(null);
203
- function FormattersProvider({ config, children }) {
204
- const formatters = react.useMemo(
205
- () => createFormatters(config),
206
- // eslint-disable-next-line react-hooks/exhaustive-deps
207
- [config.locale, config.currency, config.fallback, JSON.stringify(config.rules)]
208
- );
209
- return /* @__PURE__ */ jsxRuntime.jsx(FormatterContext.Provider, { value: formatters, children });
210
- }
211
197
 
212
198
  // src/create.ts
213
199
  async function resolveLocale(resolver, defaultLocale) {
@@ -231,11 +217,8 @@ async function resolveCurrency(resolver, defaultCurrency) {
231
217
  if (resolved) return resolved;
232
218
  return defaultCurrency ?? "USD";
233
219
  }
234
- async function NextFormatterProvider({ config = {}, children }) {
235
- const locale = await resolveLocale(config.getLocale, config.locale);
236
- const currency = await resolveCurrency(config.getCurrency, config.currency);
237
- return /* @__PURE__ */ jsxRuntime.jsx(FormattersProvider, { config: { locale, currency, fallback: config.fallback, rules: config.rules }, children });
238
- }
220
+
221
+ // src/server.tsx
239
222
  async function getFormatter(config = {}) {
240
223
  const locale = await resolveLocale(config.getLocale, config.locale);
241
224
  const currency = await resolveCurrency(config.getCurrency, config.currency);
@@ -247,5 +230,4 @@ async function getFormatter(config = {}) {
247
230
  });
248
231
  }
249
232
 
250
- exports.NextFormatterProvider = NextFormatterProvider;
251
233
  exports.getFormatter = getFormatter;
@@ -1,8 +1,3 @@
1
- import { createContext, useMemo } from 'react';
2
- import { jsx } from 'react/jsx-runtime';
3
-
4
- // src/client.tsx
5
-
6
1
  // src/core.ts
7
2
  var DEFAULT_RULES = {
8
3
  compactThreshold: 1e4,
@@ -197,15 +192,6 @@ function createFormatters(config = {}) {
197
192
  };
198
193
  return formatters;
199
194
  }
200
- var FormatterContext = createContext(null);
201
- function FormattersProvider({ config, children }) {
202
- const formatters = useMemo(
203
- () => createFormatters(config),
204
- // eslint-disable-next-line react-hooks/exhaustive-deps
205
- [config.locale, config.currency, config.fallback, JSON.stringify(config.rules)]
206
- );
207
- return /* @__PURE__ */ jsx(FormatterContext.Provider, { value: formatters, children });
208
- }
209
195
 
210
196
  // src/create.ts
211
197
  async function resolveLocale(resolver, defaultLocale) {
@@ -229,11 +215,8 @@ async function resolveCurrency(resolver, defaultCurrency) {
229
215
  if (resolved) return resolved;
230
216
  return defaultCurrency ?? "USD";
231
217
  }
232
- async function NextFormatterProvider({ config = {}, children }) {
233
- const locale = await resolveLocale(config.getLocale, config.locale);
234
- const currency = await resolveCurrency(config.getCurrency, config.currency);
235
- return /* @__PURE__ */ jsx(FormattersProvider, { config: { locale, currency, fallback: config.fallback, rules: config.rules }, children });
236
- }
218
+
219
+ // src/server.tsx
237
220
  async function getFormatter(config = {}) {
238
221
  const locale = await resolveLocale(config.getLocale, config.locale);
239
222
  const currency = await resolveCurrency(config.getCurrency, config.currency);
@@ -245,4 +228,4 @@ async function getFormatter(config = {}) {
245
228
  });
246
229
  }
247
230
 
248
- export { NextFormatterProvider, getFormatter };
231
+ export { getFormatter };
@@ -4,17 +4,9 @@ interface FormattersProviderProps {
4
4
  config: FormatterConfig;
5
5
  }
6
6
  /**
7
- * Low-level client provider. Accepts a pre-resolved config object with plain
7
+ * Client provider. Accepts a pre-resolved config object with plain
8
8
  * string `locale` and `currency` values — no async resolvers.
9
9
  *
10
- * Prefer `<NextFormatterProvider>` in your root layout when you need dynamic
11
- * config resolution (e.g. locale/currency from session, cookies, or headers).
12
- * `NextFormatterProvider` resolves async config server-side and passes the
13
- * result to this provider internally.
14
- *
15
- * Use `<FormattersProvider>` directly only when you already have resolved
16
- * values, e.g. in Storybook, tests, or non-Next.js React apps.
17
- *
18
10
  * @example
19
11
  * // layout.tsx
20
12
  * import { FormattersProvider } from "next-formatter/client";
@@ -47,4 +39,3 @@ export declare function FormattersProvider({ config, children }: PropsWithChildr
47
39
  */
48
40
  export declare function useFormatter(): Formatter;
49
41
  export {};
50
- //# sourceMappingURL=client.d.ts.map
@@ -96,4 +96,3 @@ export declare function createFormatters(config?: FormatterConfig): {
96
96
  relativeTime(value: DateInput, now?: number): string;
97
97
  };
98
98
  export type Formatter = ReturnType<typeof createFormatters>;
99
- //# sourceMappingURL=core.d.ts.map
@@ -43,4 +43,3 @@ export type NextFormatterConfig = {
43
43
  };
44
44
  export declare function resolveLocale(resolver: (() => string | undefined | Promise<string | undefined>) | undefined, defaultLocale: string | undefined): Promise<string>;
45
45
  export declare function resolveCurrency(resolver: (() => string | undefined | Promise<string | undefined>) | undefined, defaultCurrency: string | undefined): Promise<string>;
46
- //# sourceMappingURL=create.d.ts.map
@@ -1,3 +1,2 @@
1
1
  export type { FormatterConfig, Formatter, FormatterRules, NumericInput, DateInput, NumberOptions, CurrencyOptions, PercentageOptions, DateOptions, DateTimeOptions } from "./core";
2
2
  export type { NextFormatterConfig } from "./create";
3
- //# sourceMappingURL=index.d.ts.map
@@ -1,61 +1,5 @@
1
- import { type PropsWithChildren } from "react";
2
1
  import { type Formatter } from "./core";
3
2
  import { type NextFormatterConfig } from "./create";
4
- /**
5
- * Root provider for Next.js App Router. Place in `app/layout.tsx`.
6
- *
7
- * Async Server Component — resolves locale and currency server-side per request,
8
- * then passes the resolved config to the client-side context. Zero client bundle cost.
9
- *
10
- * Resolution order for locale:
11
- * 1. `getLocale()` resolver (session, db, cookie)
12
- * 2. `locale` static value
13
- * 3. `accept-language` request header
14
- * 4. `"en-US"` default
15
- *
16
- * Resolution order for currency:
17
- * 1. `getCurrency()` resolver (session, db, cookie)
18
- * 2. `currency` static value
19
- * 3. `"USD"` default
20
- *
21
- * @example
22
- * // Zero config — locale auto-detected from accept-language header
23
- * <NextFormatterProvider>{children}</NextFormatterProvider>
24
- *
25
- * @example
26
- * // Static locale and currency
27
- * <NextFormatterProvider config={{ locale: "de-DE", currency: "EUR" }}>
28
- * {children}
29
- * </NextFormatterProvider>
30
- *
31
- * @example
32
- * // Dynamic locale and currency from session
33
- * <NextFormatterProvider
34
- * config={{
35
- * getLocale: async () => (await auth())?.user?.locale,
36
- * getCurrency: async () => (await auth())?.user?.currency,
37
- * fallback: "N/A",
38
- * rules: {
39
- * compactThreshold: 50_000,
40
- * currencyDisplay: "symbol",
41
- * dateFormat: { year: "numeric", month: "long", day: "2-digit" },
42
- * },
43
- * }}
44
- * >
45
- * {children}
46
- * </NextFormatterProvider>
47
- *
48
- * @example
49
- * // Recommended — define config once in lib/formatter.ts, import everywhere
50
- * import { formatterConfig } from "@/lib/formatter";
51
- *
52
- * <NextFormatterProvider config={formatterConfig}>
53
- * {children}
54
- * </NextFormatterProvider>
55
- */
56
- export declare function NextFormatterProvider({ config, children }: PropsWithChildren<{
57
- config?: NextFormatterConfig;
58
- }>): Promise<import("react/jsx-runtime").JSX.Element>;
59
3
  /**
60
4
  * Use in Server Components or Server Actions.
61
5
  * Locale is auto-detected from request headers — pass config only to override.
@@ -91,4 +35,3 @@ export declare function NextFormatterProvider({ config, children }: PropsWithChi
91
35
  * const fmt = await getFormatter(formatterConfig);
92
36
  */
93
37
  export declare function getFormatter(config?: NextFormatterConfig): Promise<Formatter>;
94
- //# sourceMappingURL=server.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next-formatter",
3
- "version": "2.0.3",
3
+ "version": "2.0.6",
4
4
  "description": "A universal formatter for numbers, currency, dates, and relative time — built for Next.js App Router, supporting server components, client components, and Node.js backends.",
5
5
  "author": "gauravgorade",
6
6
  "license": "MIT",
@@ -86,18 +86,5 @@
86
86
  "tsup": "^8.0.0",
87
87
  "typescript": "^5.0.0",
88
88
  "vitest": "^3.0.0"
89
- },
90
- "peerDependencies": {
91
- "next": ">=14.0.0",
92
- "react": ">=18.3.0",
93
- "@types/react": ">=18.3.0"
94
- },
95
- "peerDependenciesMeta": {
96
- "next": {
97
- "optional": true
98
- },
99
- "@types/react": {
100
- "optional": true
101
- }
102
89
  }
103
90
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAsC,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AACnF,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,QAAQ,CAAC;AAIhF,UAAU,uBAAuB;IAC/B,MAAM,EAAE,eAAe,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,uBAAuB,CAAC,2CAQlG;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAWxC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/core.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAC9D,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;AAIlE,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,IAAI,CAAC,mBAAmB,EACtB,UAAU,GACV,uBAAuB,GACvB,uBAAuB,GACvB,0BAA0B,GAC1B,0BAA0B,GAC1B,sBAAsB,GACtB,aAAa,GACb,aAAa,CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,QAAQ,GAAG,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC;IAC9D,YAAY,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,IAAI,CAAC,mBAAmB,EACxB,uBAAuB,GAAG,uBAAuB,GAAG,0BAA0B,GAAG,0BAA0B,GAAG,aAAa,CAC5H,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC;AACrD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC;AAIzD,MAAM,MAAM,cAAc,GAAG;IAC3B,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,8DAA8D;IAC9D,eAAe,CAAC,EAAE,QAAQ,GAAG,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC;IAC9D,kCAAkC;IAClC,UAAU,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC;IACxC,sCAAsC;IACtC,cAAc,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC;IAC5C,qEAAqE;IACrE,YAAY,CAAC,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB,CAAC;AAuBF,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,eAAoB;IA4EzD;;;;;;OAMG;kBACW,YAAY,YAAW,aAAa,GAAQ,MAAM;IAkBhE;;;;;;;OAOG;oBACa,YAAY,YAAW,eAAe,GAAQ,MAAM;IAsBpE;;;;;;;;;OASG;sBACe,YAAY,YAAW,iBAAiB,GAAQ,MAAM;IAuBxE;;;;;OAKG;oBACa,YAAY,GAAG,MAAM;IAQrC;;;;;OAKG;gBACS,SAAS,YAAW,WAAW,GAAQ,MAAM;oBASzC,SAAS,YAAW,eAAe,GAAQ,MAAM;IAQjE;;;;;;;OAOG;wBACiB,SAAS,QAAO,MAAM,GAAgB,MAAM;EAsBnE;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,QAAQ,CAAC;AAEnF,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;AAE3C,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,cAAc,CAAC;IAEvB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEnE;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACtE,CAAC;AAIF,wBAAsB,aAAa,CACjC,QAAQ,EAAE,CAAC,MAAM,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,EAC9E,aAAa,EAAE,MAAM,GAAG,SAAS,GAChC,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,CAAC,MAAM,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,EAC9E,eAAe,EAAE,MAAM,GAAG,SAAS,GAClC,OAAO,CAAC,MAAM,CAAC,CAIjB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACnL,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE/C,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EAAkC,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,wBAAsB,qBAAqB,CAAC,EAAE,MAAW,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC;IAAE,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAAE,CAAC,oDAKzH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,YAAY,CAAC,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,SAAS,CAAC,CAUvF"}