afformative 0.7.0-beta.1 → 0.7.0-beta.3

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
@@ -52,7 +52,7 @@ const dateFormatter = createFormatter<Date, ReactNode>({
52
52
  })
53
53
 
54
54
  dateFormatter.format(new Date()) // <time dateTime="2026-05-30T09:17:26.263Z">30/05/2026</time>
55
- dateFormatter.formatAsString(new Date()) // "30/05/2026"
55
+ dateFormatter.stringify(new Date()) // "30/05/2026"
56
56
  ```
57
57
 
58
58
  Consume formatters in your UI component library via a conventional `formatter` prop.
@@ -176,10 +176,13 @@ const useEnumFormatter = (enumType: string): Formatter<string, ReactNode> => {
176
176
 
177
177
  return useMemo(
178
178
  () =>
179
- createFormatter<string, ReactNode>(
180
- value => <FormattedMessage defaultMessage={value} id={enumTranslationKeys[value]} />,
181
- value => intl.formatMessage({ defaultMessage: value, id: enumTranslationKeys[value] }),
182
- ),
179
+ createFormatter<string, ReactNode>({
180
+ format: value => (
181
+ <FormattedMessage defaultMessage={value} id={enumTranslationKeys[value]} />
182
+ ),
183
+ stringify: value =>
184
+ intl.formatMessage({ defaultMessage: value, id: enumTranslationKeys[value] }),
185
+ }),
183
186
  [intl, enumTranslationKeys],
184
187
  )
185
188
  }
package/dist/index.cjs ADDED
@@ -0,0 +1,17 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ //#region src/createFormatter.ts
3
+ const createFormatter = (param) => {
4
+ const { format: formatParam, stringify: stringifyParam, compare: compareParam, ...rest } = param;
5
+ const format = (value, usageContext) => formatParam(value, usageContext ?? {});
6
+ const stringify = stringifyParam ? (value, usageContext) => stringifyParam(value, usageContext ?? {}) : (value, usageContext) => String(format(value, usageContext ?? {}));
7
+ return {
8
+ compare: compareParam ? (a, b, usageContext) => compareParam(a, b, usageContext ?? {}) : (a, b, usageContext) => stringify(a, usageContext ?? {}).localeCompare(stringify(b, usageContext ?? {})),
9
+ format,
10
+ stringify,
11
+ ...rest
12
+ };
13
+ };
14
+ //#endregion
15
+ exports.createFormatter = createFormatter;
16
+
17
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../src/createFormatter.ts"],"sourcesContent":["export interface FormatterFormatDefinition<TInput, TOutput, TUsageContext extends object = object> {\n (value: TInput, usageContext: Partial<TUsageContext>): TOutput\n}\n\nexport interface FormatterFormat<TInput, TOutput, TUsageContext extends object = object> {\n (value: TInput, usageContext?: Partial<TUsageContext>): TOutput\n}\n\nexport interface FormatterStringifyDefinition<TInput, TUsageContext extends object = object> {\n (value: TInput, usageContext: Partial<TUsageContext>): string\n}\n\nexport interface FormatterStringify<TInput, TUsageContext extends object = object> {\n (value: TInput, usageContext?: Partial<TUsageContext>): string\n}\n\nexport interface FormatterCompareDefinition<TInput, TUsageContext extends object = object> {\n (a: TInput, b: TInput, usageContext: Partial<TUsageContext>): number\n}\n\nexport interface FormatterCompare<TInput, TUsageContext extends object = object> {\n (a: TInput, b: TInput, usageContext?: Partial<TUsageContext>): number\n}\n\nexport interface Formatter<TInput, TOutput, TUsageContext extends object = object> {\n compare: FormatterCompare<TInput, TUsageContext>\n format: FormatterFormat<TInput, TOutput, TUsageContext>\n stringify: FormatterStringify<TInput, TUsageContext>\n name?: string\n}\n\nexport interface CreateFormatterParam<TInput, TOutput, TUsageContext extends object = object> {\n compare?: FormatterCompareDefinition<TInput, TUsageContext>\n format: FormatterFormatDefinition<TInput, TOutput, TUsageContext>\n stringify?: FormatterStringifyDefinition<TInput, TUsageContext>\n}\n\nexport const createFormatter = <TInput, TOutput, TUsageContext extends object = object>(\n param: CreateFormatterParam<TInput, TOutput, TUsageContext>,\n): Formatter<TInput, TOutput, TUsageContext> => {\n const { format: formatParam, stringify: stringifyParam, compare: compareParam, ...rest } = param\n\n const format: FormatterFormat<TInput, TOutput, TUsageContext> = (value, usageContext) =>\n formatParam(value, usageContext ?? {})\n\n const stringify: FormatterStringify<TInput, TUsageContext> = stringifyParam\n ? (value, usageContext) => stringifyParam(value, usageContext ?? {})\n : (value, usageContext) => String(format(value, usageContext ?? {}))\n\n const compare: FormatterCompare<TInput, TUsageContext> = compareParam\n ? (a, b, usageContext) => compareParam(a, b, usageContext ?? {})\n : (a, b, usageContext) =>\n stringify(a, usageContext ?? {}).localeCompare(stringify(b, usageContext ?? {}))\n\n return {\n compare,\n format,\n stringify,\n ...rest,\n }\n}\n"],"mappings":";;AAqCA,MAAa,mBACX,UAC8C;CAC9C,MAAM,EAAE,QAAQ,aAAa,WAAW,gBAAgB,SAAS,cAAc,GAAG,SAAS;CAE3F,MAAM,UAA2D,OAAO,iBACtE,YAAY,OAAO,gBAAgB,CAAC,CAAC;CAEvC,MAAM,YAAuD,kBACxD,OAAO,iBAAiB,eAAe,OAAO,gBAAgB,CAAC,CAAC,KAChE,OAAO,iBAAiB,OAAO,OAAO,OAAO,gBAAgB,CAAC,CAAC,CAAC;CAOrE,OAAO;EACL,SANuD,gBACpD,GAAG,GAAG,iBAAiB,aAAa,GAAG,GAAG,gBAAgB,CAAC,CAAC,KAC5D,GAAG,GAAG,iBACL,UAAU,GAAG,gBAAgB,CAAC,CAAC,EAAE,cAAc,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC;EAInF;EACA;EACA,GAAG;CACL;AACF"}
@@ -0,0 +1,34 @@
1
+ //#region src/createFormatter.d.ts
2
+ interface FormatterFormatDefinition<TInput, TOutput, TUsageContext extends object = object> {
3
+ (value: TInput, usageContext: Partial<TUsageContext>): TOutput;
4
+ }
5
+ interface FormatterFormat<TInput, TOutput, TUsageContext extends object = object> {
6
+ (value: TInput, usageContext?: Partial<TUsageContext>): TOutput;
7
+ }
8
+ interface FormatterStringifyDefinition<TInput, TUsageContext extends object = object> {
9
+ (value: TInput, usageContext: Partial<TUsageContext>): string;
10
+ }
11
+ interface FormatterStringify<TInput, TUsageContext extends object = object> {
12
+ (value: TInput, usageContext?: Partial<TUsageContext>): string;
13
+ }
14
+ interface FormatterCompareDefinition<TInput, TUsageContext extends object = object> {
15
+ (a: TInput, b: TInput, usageContext: Partial<TUsageContext>): number;
16
+ }
17
+ interface FormatterCompare<TInput, TUsageContext extends object = object> {
18
+ (a: TInput, b: TInput, usageContext?: Partial<TUsageContext>): number;
19
+ }
20
+ interface Formatter<TInput, TOutput, TUsageContext extends object = object> {
21
+ compare: FormatterCompare<TInput, TUsageContext>;
22
+ format: FormatterFormat<TInput, TOutput, TUsageContext>;
23
+ stringify: FormatterStringify<TInput, TUsageContext>;
24
+ name?: string;
25
+ }
26
+ interface CreateFormatterParam<TInput, TOutput, TUsageContext extends object = object> {
27
+ compare?: FormatterCompareDefinition<TInput, TUsageContext>;
28
+ format: FormatterFormatDefinition<TInput, TOutput, TUsageContext>;
29
+ stringify?: FormatterStringifyDefinition<TInput, TUsageContext>;
30
+ }
31
+ declare const createFormatter: <TInput, TOutput, TUsageContext extends object = object>(param: CreateFormatterParam<TInput, TOutput, TUsageContext>) => Formatter<TInput, TOutput, TUsageContext>;
32
+ //#endregion
33
+ export { CreateFormatterParam, Formatter, FormatterCompare, FormatterCompareDefinition, FormatterFormat, FormatterFormatDefinition, FormatterStringify, FormatterStringifyDefinition, createFormatter };
34
+ //# sourceMappingURL=index.d.cts.map
@@ -30,4 +30,5 @@ interface CreateFormatterParam<TInput, TOutput, TUsageContext extends object = o
30
30
  }
31
31
  declare const createFormatter: <TInput, TOutput, TUsageContext extends object = object>(param: CreateFormatterParam<TInput, TOutput, TUsageContext>) => Formatter<TInput, TOutput, TUsageContext>;
32
32
  //#endregion
33
- export { CreateFormatterParam, Formatter, FormatterCompare, FormatterCompareDefinition, FormatterFormat, FormatterFormatDefinition, FormatterStringify, FormatterStringifyDefinition, createFormatter };
33
+ export { CreateFormatterParam, Formatter, FormatterCompare, FormatterCompareDefinition, FormatterFormat, FormatterFormatDefinition, FormatterStringify, FormatterStringifyDefinition, createFormatter };
34
+ //# sourceMappingURL=index.d.ts.map
@@ -12,3 +12,5 @@ const createFormatter = (param) => {
12
12
  };
13
13
  //#endregion
14
14
  export { createFormatter };
15
+
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/createFormatter.ts"],"sourcesContent":["export interface FormatterFormatDefinition<TInput, TOutput, TUsageContext extends object = object> {\n (value: TInput, usageContext: Partial<TUsageContext>): TOutput\n}\n\nexport interface FormatterFormat<TInput, TOutput, TUsageContext extends object = object> {\n (value: TInput, usageContext?: Partial<TUsageContext>): TOutput\n}\n\nexport interface FormatterStringifyDefinition<TInput, TUsageContext extends object = object> {\n (value: TInput, usageContext: Partial<TUsageContext>): string\n}\n\nexport interface FormatterStringify<TInput, TUsageContext extends object = object> {\n (value: TInput, usageContext?: Partial<TUsageContext>): string\n}\n\nexport interface FormatterCompareDefinition<TInput, TUsageContext extends object = object> {\n (a: TInput, b: TInput, usageContext: Partial<TUsageContext>): number\n}\n\nexport interface FormatterCompare<TInput, TUsageContext extends object = object> {\n (a: TInput, b: TInput, usageContext?: Partial<TUsageContext>): number\n}\n\nexport interface Formatter<TInput, TOutput, TUsageContext extends object = object> {\n compare: FormatterCompare<TInput, TUsageContext>\n format: FormatterFormat<TInput, TOutput, TUsageContext>\n stringify: FormatterStringify<TInput, TUsageContext>\n name?: string\n}\n\nexport interface CreateFormatterParam<TInput, TOutput, TUsageContext extends object = object> {\n compare?: FormatterCompareDefinition<TInput, TUsageContext>\n format: FormatterFormatDefinition<TInput, TOutput, TUsageContext>\n stringify?: FormatterStringifyDefinition<TInput, TUsageContext>\n}\n\nexport const createFormatter = <TInput, TOutput, TUsageContext extends object = object>(\n param: CreateFormatterParam<TInput, TOutput, TUsageContext>,\n): Formatter<TInput, TOutput, TUsageContext> => {\n const { format: formatParam, stringify: stringifyParam, compare: compareParam, ...rest } = param\n\n const format: FormatterFormat<TInput, TOutput, TUsageContext> = (value, usageContext) =>\n formatParam(value, usageContext ?? {})\n\n const stringify: FormatterStringify<TInput, TUsageContext> = stringifyParam\n ? (value, usageContext) => stringifyParam(value, usageContext ?? {})\n : (value, usageContext) => String(format(value, usageContext ?? {}))\n\n const compare: FormatterCompare<TInput, TUsageContext> = compareParam\n ? (a, b, usageContext) => compareParam(a, b, usageContext ?? {})\n : (a, b, usageContext) =>\n stringify(a, usageContext ?? {}).localeCompare(stringify(b, usageContext ?? {}))\n\n return {\n compare,\n format,\n stringify,\n ...rest,\n }\n}\n"],"mappings":";AAqCA,MAAa,mBACX,UAC8C;CAC9C,MAAM,EAAE,QAAQ,aAAa,WAAW,gBAAgB,SAAS,cAAc,GAAG,SAAS;CAE3F,MAAM,UAA2D,OAAO,iBACtE,YAAY,OAAO,gBAAgB,CAAC,CAAC;CAEvC,MAAM,YAAuD,kBACxD,OAAO,iBAAiB,eAAe,OAAO,gBAAgB,CAAC,CAAC,KAChE,OAAO,iBAAiB,OAAO,OAAO,OAAO,gBAAgB,CAAC,CAAC,CAAC;CAOrE,OAAO;EACL,SANuD,gBACpD,GAAG,GAAG,iBAAiB,aAAa,GAAG,GAAG,gBAAgB,CAAC,CAAC,KAC5D,GAAG,GAAG,iBACL,UAAU,GAAG,gBAAgB,CAAC,CAAC,EAAE,cAAc,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC;EAInF;EACA;EACA,GAAG;CACL;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "afformative",
3
- "version": "0.7.0-beta.1",
3
+ "version": "0.7.0-beta.3",
4
4
  "description": "A standardized way to format values in your React components.",
5
5
  "keywords": [
6
6
  "react",
@@ -26,9 +26,15 @@
26
26
  "sideEffects": false,
27
27
  "type": "module",
28
28
  "exports": {
29
- ".": "./dist/index.mjs",
29
+ ".": {
30
+ "import": "./dist/index.js",
31
+ "require": "./dist/index.cjs"
32
+ },
30
33
  "./package.json": "./package.json"
31
34
  },
35
+ "main": "./dist/index.cjs",
36
+ "module": "./dist/index.js",
37
+ "types": "./dist/index.d.cts",
32
38
  "files": [
33
39
  "dist"
34
40
  ],