@eusilvio/cep-lookup-react 0.1.0 → 0.3.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/README.md +10 -11
- package/dist/CepProvider.d.ts +7 -7
- package/dist/CepProvider.d.ts.map +1 -1
- package/dist/index.cjs +1 -0
- package/dist/index.mjs +1 -0
- package/dist/useBulkCepLookup.d.ts +3 -3
- package/dist/useBulkCepLookup.d.ts.map +1 -1
- package/dist/useCepLookup.d.ts +4 -3
- package/dist/useCepLookup.d.ts.map +1 -1
- package/package.json +19 -17
- package/dist/index.js +0 -1
package/README.md
CHANGED
|
@@ -72,24 +72,23 @@ A React component that provides the `CepLookup` instance to its children.
|
|
|
72
72
|
|
|
73
73
|
It accepts all options from `CepLookupOptions` as props:
|
|
74
74
|
|
|
75
|
-
- `providers` (optional): `Provider[]` - An array of CEP providers.
|
|
76
|
-
- `cache` (optional): `Cache` - A cache instance
|
|
75
|
+
- `providers` (optional): `Provider[]` - An array of CEP providers.
|
|
76
|
+
- `cache` (optional): `Cache` - A cache instance. Defaults to a persistent `InMemoryCache`.
|
|
77
77
|
- `rateLimit` (optional): `RateLimitOptions` - Options for rate limiting.
|
|
78
|
-
- `
|
|
78
|
+
- `mapper` (optional): `(address: Address) => T` - A function to transform the address object globally.
|
|
79
|
+
- `onSuccess` (optional): `(event) => void` - Callback triggered on successful lookups.
|
|
80
|
+
- `onFailure` (optional): `(event) => void` - Callback triggered on lookup failures.
|
|
81
|
+
- `onCacheHit` (optional): `(event) => void` - Callback triggered on cache hits.
|
|
79
82
|
|
|
80
|
-
### `useCepLookup(cep: string,
|
|
83
|
+
### `useCepLookup<T = Address>(cep: string, delay?: number)`
|
|
81
84
|
|
|
82
|
-
A React hook that performs the CEP lookup.
|
|
85
|
+
A React hook that performs the CEP lookup with built-in race condition protection.
|
|
83
86
|
|
|
84
87
|
**Parameters**
|
|
85
88
|
|
|
86
89
|
- `cep`: `string` - The CEP to look up.
|
|
87
|
-
- `
|
|
90
|
+
- `delay` (optional): `number` - The debounce delay in milliseconds. Defaults to `500`.
|
|
88
91
|
|
|
89
92
|
**Returns**
|
|
90
93
|
|
|
91
|
-
An object with
|
|
92
|
-
|
|
93
|
-
- `address`: `Address | null` - The found address object, or `null` if not found or not yet loaded.
|
|
94
|
-
- `loading`: `boolean` - `true` when a lookup is in progress.
|
|
95
|
-
- `error`: `Error | null` - An `Error` object if the lookup fails, otherwise `null`.
|
|
94
|
+
An object with `address` (typed as `T`), `loading`, and `error`.
|
package/dist/CepProvider.d.ts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
2
|
import { Address, CepLookup, CepLookupOptions, EventMap } from "@eusilvio/cep-lookup";
|
|
3
|
-
export interface CepContextValue {
|
|
3
|
+
export interface CepContextValue<T = Address> {
|
|
4
4
|
instance: CepLookup;
|
|
5
|
-
mapper?: (address: Address) =>
|
|
5
|
+
mapper?: (address: Address) => T;
|
|
6
6
|
options: CepLookupOptions;
|
|
7
7
|
}
|
|
8
|
-
interface CepProviderProps extends Partial<CepLookupOptions> {
|
|
8
|
+
interface CepProviderProps<T = Address> extends Partial<CepLookupOptions> {
|
|
9
9
|
children: ReactNode;
|
|
10
|
-
mapper?: (address: Address) =>
|
|
10
|
+
mapper?: (address: Address) => T;
|
|
11
11
|
onSuccess?: (event: EventMap['success']) => void;
|
|
12
12
|
onFailure?: (event: EventMap['failure']) => void;
|
|
13
13
|
onCacheHit?: (event: EventMap['cache:hit']) => void;
|
|
14
14
|
}
|
|
15
|
-
export declare const CepProvider:
|
|
16
|
-
export declare const useCepLookupInstance: () => CepContextValue
|
|
15
|
+
export declare const CepProvider: <T>({ children, mapper, onSuccess, onFailure, onCacheHit, ...options }: CepProviderProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export declare const useCepLookupInstance: () => CepContextValue<any>;
|
|
17
17
|
export {};
|
|
18
18
|
//# sourceMappingURL=CepProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CepProvider.d.ts","sourceRoot":"","sources":["../src/CepProvider.tsx"],"names":[],"mappings":"AAKA,
|
|
1
|
+
{"version":3,"file":"CepProvider.d.ts","sourceRoot":"","sources":["../src/CepProvider.tsx"],"names":[],"mappings":"AAKA,OAAc,EAEZ,SAAS,EAIV,MAAM,OAAO,CAAC;AACf,OAAO,EACL,OAAO,EACP,SAAS,EACT,gBAAgB,EAEhB,QAAQ,EACT,MAAM,sBAAsB,CAAC;AAU9B,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,CAAC,CAAC;IACjC,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAQD,UAAU,gBAAgB,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,OAAO,CAAC,gBAAgB,CAAC;IACvE,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,CAAC,CAAC;IAEjC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IACjD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IACjD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;CACrD;AAED,eAAO,MAAM,WAAW,GAAI,CAAC,EAAG,oEAO7B,gBAAgB,CAAC,CAAC,CAAC,4CAkDrB,CAAC;AAEF,eAAO,MAAM,oBAAoB,4BAOhC,CAAC"}
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var T=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var M=(e,r)=>{for(var n in r)T(e,n,{get:r[n],enumerable:!0})},B=(e,r,n,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of b(r))!I.call(e,o)&&o!==n&&T(e,o,{get:()=>r[o],enumerable:!(t=A(r,o))||t.enumerable});return e};var O=e=>B(T({},"__esModule",{value:!0}),e);var D={};M(D,{CepProvider:()=>N,useBulkCepLookup:()=>j,useCepLookup:()=>V,useCepLookupInstance:()=>L});module.exports=O(D);var f=require("react");var k=require("@eusilvio/cep-lookup/providers"),l=require("react"),h=require("@eusilvio/cep-lookup"),R=require("react/jsx-runtime"),y=[k.viaCepProvider,k.brasilApiProvider,k.apicepProvider],E=new h.InMemoryCache,g=new h.CepLookup({providers:y,cache:E}),P=(0,l.createContext)({instance:g,options:{providers:y,cache:E}}),N=({children:e,mapper:r,onSuccess:n,onFailure:t,onCacheHit:o,...s})=>{let u=(0,l.useMemo)(()=>Object.keys(s).length?new h.CepLookup({providers:y,cache:E,...s}):g,[s]);(0,l.useEffect)(()=>(n&&u.on("success",n),t&&u.on("failure",t),o&&u.on("cache:hit",o),()=>{n&&u.off("success",n),t&&u.off("failure",t),o&&u.off("cache:hit",o)}),[u,n,t,o]);let p=(0,l.useMemo)(()=>({instance:u,mapper:r,options:{providers:y,cache:E,...s}}),[u,r,s]);return(0,R.jsx)(P.Provider,{value:p,children:e})},L=()=>{let e=(0,l.useContext)(P);if(!e)throw new Error("useCepLookupInstance must be used within a CepProvider");return e};var V=(e,r=500)=>{let[n,t]=(0,f.useState)(null),[o,s]=(0,f.useState)(null),[u,p]=(0,f.useState)(!1),{instance:v,mapper:d}=L(),i=(0,f.useRef)(null);return(0,f.useEffect)(()=>{let m=e.replace(/\D/g,"");return i.current&&clearTimeout(i.current),m.length===8?(p(!0),s(null),i.current=setTimeout(async()=>{try{let c=await v.lookup(m);t(d?d(c):c),s(null)}catch(c){s(c instanceof Error?c:new Error(String(c))),t(null)}finally{p(!1)}},r)):(t(null),s(null),p(!1)),()=>{i.current&&clearTimeout(i.current)}},[e,r,v,d]),{address:n,error:o,loading:u}};var a=require("react");var j=(e,r)=>{let[n,t]=(0,a.useState)([]),[o,s]=(0,a.useState)(!1),[u,p]=(0,a.useState)(null),{instance:v,mapper:d}=L(),i=(0,a.useRef)([]),m=(0,a.useCallback)(async()=>{if(!e||e.length===0){t([]),s(!1),p(null);return}let c=e.map(C=>C.replace(/\D/g,""));if(c.join(",")!==i.current.join(",")){i.current=c,s(!0),p(null);try{let w=(await v.lookupCeps(c,r?.concurrency)).map(x=>({...x,data:x.data&&d?d(x.data):x.data}));t(w)}catch(C){p(C instanceof Error?C:new Error(String(C))),t([])}finally{s(!1)}}},[e,r?.concurrency,v,d]);return(0,a.useEffect)(()=>{m()},[m]),{results:n,loading:o,error:u,refresh:m}};
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useEffect as O,useState as h,useRef as N}from"react";import{apicepProvider as P,brasilApiProvider as R,viaCepProvider as w}from"@eusilvio/cep-lookup/providers";import{createContext as A,useContext as b,useEffect as I,useMemo as x}from"react";import{CepLookup as y,InMemoryCache as M}from"@eusilvio/cep-lookup";import{jsx as B}from"react/jsx-runtime";var C=[w,R,P],k=new M,E=new y({providers:C,cache:k}),T=A({instance:E,options:{providers:C,cache:k}}),X=({children:o,mapper:a,onSuccess:s,onFailure:r,onCacheHit:u,...e})=>{let t=x(()=>Object.keys(e).length?new y({providers:C,cache:k,...e}):E,[e]);I(()=>(s&&t.on("success",s),r&&t.on("failure",r),u&&t.on("cache:hit",u),()=>{s&&t.off("success",s),r&&t.off("failure",r),u&&t.off("cache:hit",u)}),[t,s,r,u]);let c=x(()=>({instance:t,mapper:a,options:{providers:C,cache:k,...e}}),[t,a,e]);return B(T.Provider,{value:c,children:o})},v=()=>{let o=b(T);if(!o)throw new Error("useCepLookupInstance must be used within a CepProvider");return o};var F=(o,a=500)=>{let[s,r]=h(null),[u,e]=h(null),[t,c]=h(!1),{instance:d,mapper:l}=v(),p=N(null);return O(()=>{let i=o.replace(/\D/g,"");return p.current&&clearTimeout(p.current),i.length===8?(c(!0),e(null),p.current=setTimeout(async()=>{try{let n=await d.lookup(i);r(l?l(n):n),e(null)}catch(n){e(n instanceof Error?n:new Error(String(n))),r(null)}finally{c(!1)}},a)):(r(null),e(null),c(!1)),()=>{p.current&&clearTimeout(p.current)}},[o,a,d,l]),{address:s,error:u,loading:t}};import{useState as L,useEffect as V,useCallback as j,useRef as D}from"react";var te=(o,a)=>{let[s,r]=L([]),[u,e]=L(!1),[t,c]=L(null),{instance:d,mapper:l}=v(),p=D([]),i=j(async()=>{if(!o||o.length===0){r([]),e(!1),c(null);return}let n=o.map(f=>f.replace(/\D/g,""));if(n.join(",")!==p.current.join(",")){p.current=n,e(!0),c(null);try{let g=(await d.lookupCeps(n,a?.concurrency)).map(m=>({...m,data:m.data&&l?l(m.data):m.data}));r(g)}catch(f){c(f instanceof Error?f:new Error(String(f))),r([])}finally{e(!1)}}},[o,a?.concurrency,d,l]);return V(()=>{i()},[i]),{results:s,loading:u,error:t,refresh:i}};export{X as CepProvider,te as useBulkCepLookup,F as useCepLookup,v as useCepLookupInstance};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BulkCepResult } from '@eusilvio/cep-lookup';
|
|
2
|
-
export declare const useBulkCepLookup: (ceps: string[], options?: {
|
|
2
|
+
export declare const useBulkCepLookup: <T = any>(ceps: string[], options?: {
|
|
3
3
|
concurrency?: number;
|
|
4
4
|
}) => {
|
|
5
5
|
results: BulkCepResult[];
|
|
6
6
|
loading: boolean;
|
|
7
|
-
error: Error;
|
|
8
|
-
|
|
7
|
+
error: Error | null;
|
|
8
|
+
refresh: () => Promise<void>;
|
|
9
9
|
};
|
|
10
10
|
//# sourceMappingURL=useBulkCepLookup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBulkCepLookup.d.ts","sourceRoot":"","sources":["../src/useBulkCepLookup.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"useBulkCepLookup.d.ts","sourceRoot":"","sources":["../src/useBulkCepLookup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,eAAO,MAAM,gBAAgB,GAAI,CAAC,GAAG,GAAG,EACtC,MAAM,MAAM,EAAE,EACd,UAAU;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;CAgDnC,CAAC"}
|
package/dist/useCepLookup.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { Address } from "@eusilvio/cep-lookup";
|
|
2
|
+
export declare const useCepLookup: <T = Address>(cep: string, delay?: number) => {
|
|
3
|
+
address: T | null;
|
|
4
|
+
error: Error | null;
|
|
4
5
|
loading: boolean;
|
|
5
6
|
};
|
|
6
7
|
//# sourceMappingURL=useCepLookup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCepLookup.d.ts","sourceRoot":"","sources":["../src/useCepLookup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useCepLookup.d.ts","sourceRoot":"","sources":["../src/useCepLookup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,eAAO,MAAM,YAAY,GAAI,CAAC,GAAG,OAAO,EAAE,KAAK,MAAM,EAAE,cAAW;;;;CAmDjE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,47 +1,49 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eusilvio/cep-lookup-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "React hook for cep-lookup.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
|
-
"scripts": {
|
|
8
|
-
"clean": "rm -rf dist && rm tsconfig.tsbuildinfo",
|
|
9
|
-
"build": "npm run clean && tsc --build && esbuild src/index.ts --bundle --platform=neutral --format=cjs --outdir=dist --minify --external:react --external:@eusilvio/cep-lookup",
|
|
10
|
-
"test": "jest"
|
|
11
|
-
},
|
|
12
7
|
"exports": {
|
|
13
8
|
".": {
|
|
14
|
-
"
|
|
15
|
-
"import": "./dist/index.
|
|
16
|
-
"
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.mjs",
|
|
11
|
+
"require": "./dist/index.cjs"
|
|
17
12
|
}
|
|
18
13
|
},
|
|
19
14
|
"peerDependencies": {
|
|
20
|
-
"@eusilvio/cep-lookup": "^2.0
|
|
15
|
+
"@eusilvio/cep-lookup": "^2.3.0",
|
|
21
16
|
"react": ">=16.8.0",
|
|
22
17
|
"react-dom": ">=16.8.0"
|
|
23
18
|
},
|
|
24
19
|
"files": [
|
|
25
20
|
"dist"
|
|
26
21
|
],
|
|
22
|
+
"scripts": {
|
|
23
|
+
"clean": "rm -rf dist tsconfig.tsbuildinfo",
|
|
24
|
+
"build": "npm run clean && tsc --build && esbuild src/index.ts --bundle --platform=neutral --format=cjs --outdir=dist --out-extension:.js=.cjs --minify --external:react --external:@eusilvio/cep-lookup && esbuild src/index.ts --bundle --platform=neutral --format=esm --outdir=dist --out-extension:.js=.mjs --minify --external:react --external:@eusilvio/cep-lookup",
|
|
25
|
+
"test": "jest --passWithNoTests"
|
|
26
|
+
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
29
|
+
"@testing-library/react": "^15.0.7",
|
|
30
|
+
"@types/jest": "^30.0.0",
|
|
28
31
|
"@types/react": "^18.3.3",
|
|
29
32
|
"@types/react-dom": "^18.3.0",
|
|
33
|
+
"esbuild": "^0.27.2",
|
|
30
34
|
"jest": "^30.1.3",
|
|
31
|
-
"ts-jest": "^29.4.4",
|
|
32
|
-
"@types/jest": "^30.0.0",
|
|
33
35
|
"jest-environment-jsdom": "^29.7.0",
|
|
34
|
-
"
|
|
35
|
-
"@testing-library/jest-dom": "^6.9.1",
|
|
36
|
-
"esbuild": "^0.20.2"
|
|
36
|
+
"ts-jest": "^29.4.4"
|
|
37
37
|
},
|
|
38
38
|
"license": "MIT",
|
|
39
39
|
"publishConfig": {
|
|
40
|
-
"access": "public"
|
|
40
|
+
"access": "public",
|
|
41
|
+
"registry": "https://registry.npmjs.org/"
|
|
41
42
|
},
|
|
42
43
|
"repository": {
|
|
43
44
|
"type": "git",
|
|
44
|
-
"url": "
|
|
45
|
+
"url": "https://github.com/eusilvio/cep-lookup.git",
|
|
46
|
+
"directory": "packages/cep-lookup-react"
|
|
45
47
|
},
|
|
46
48
|
"bugs": {
|
|
47
49
|
"url": "https://github.com/eusilvio/cep-lookup/issues"
|
package/dist/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var x=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var M=(e,t)=>{for(var o in t)x(e,o,{get:t[o],enumerable:!0})},O=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of I(t))!A.call(e,n)&&n!==o&&x(e,n,{get:()=>t[n],enumerable:!(r=b(t,n))||r.enumerable});return e};var B=e=>O(x({},"__esModule",{value:!0}),e);var F={};M(F,{CepProvider:()=>N,useBulkCepLookup:()=>D,useCepLookup:()=>V,useCepLookupInstance:()=>L});module.exports=B(F);var f=require("react");var v=require("@eusilvio/cep-lookup/providers"),p=require("react"),d=require("@eusilvio/cep-lookup"),w=require("react/jsx-runtime"),y=[v.viaCepProvider,v.brasilApiProvider,v.apicepProvider],P=new d.CepLookup({providers:y,cache:new d.InMemoryCache}),g=(0,p.createContext)({instance:P,options:{providers:y,cache:new d.InMemoryCache}}),N=({children:e,mapper:t,onSuccess:o,onFailure:r,onCacheHit:n,...s})=>{let a=(0,p.useMemo)(()=>Object.keys(s).length?new d.CepLookup({providers:y,cache:new d.InMemoryCache,...s}):P,[s]);(0,p.useEffect)(()=>(o&&a.on("success",o),r&&a.on("failure",r),n&&a.on("cache:hit",n),()=>{o&&a.off("success",o),r&&a.off("failure",r),n&&a.off("cache:hit",n)}),[a,o,r,n]);let c=(0,p.useMemo)(()=>({instance:a,mapper:t,options:{providers:y,cache:new d.InMemoryCache,...s}}),[a,t,s]);return(0,w.jsx)(g.Provider,{value:c,children:e})},L=()=>{let e=(0,p.useContext)(g);if(!e)throw new Error("useCepLookupInstance must be used within a CepProvider");return e};function T(e,t){let o;return(...r)=>new Promise(n=>{o&&clearTimeout(o),o=setTimeout(()=>n(e(...r)),t)})}var V=(e,t=500)=>{let[o,r]=(0,f.useState)(null),[n,s]=(0,f.useState)(null),[a,c]=(0,f.useState)(!1),{instance:h,mapper:C}=L(),u=(0,f.useCallback)(T(async i=>{c(!0),s(null);try{let l=await h.lookup(i);r(C?C(l):l)}catch(l){s(l),r(null)}finally{c(!1)}},t),[t,h,C]);return(0,f.useEffect)(()=>{let i=e.replace(/\D/g,"");i.length===8?u(i):(r(null),s(null))},[e,u]),{address:o,error:n,loading:a}};var m=require("react"),E=require("@eusilvio/cep-lookup");var D=(e,t)=>{let[o,r]=(0,m.useState)([]),[n,s]=(0,m.useState)(!1),[a,c]=(0,m.useState)(null),{instance:h,mapper:C,options:u}=L(),i=(0,m.useCallback)(async()=>{if(!e||e.length===0){r([]),s(!1),c(null);return}s(!0),c(null);try{let l=e.map(k=>k.replace(/\D/g,"")),R=(await(0,E.lookupCeps)({ceps:l,providers:u.providers,cache:u.cache,fetcher:u.fetcher,rateLimit:u.rateLimit,concurrency:t?.concurrency})).map(k=>({...k,data:k.data&&C?C(k.data):k.data}));r(R)}catch(l){c(l),r([])}finally{s(!1)}},[e,t,h,C,u]);return(0,m.useEffect)(()=>{i()},[i]),{results:o,loading:n,error:a,performBulkLookup:i}};
|