Skip to content

Commit 0ca1e44

Browse files
fix(location): Pad en_US ZIP codes left to 5 characters if needed (#2278)
* fix(location): Pad en_US ZIP codes left to 5 characters if needed * fix NJ and RI * fix PR * updated postcode_by_state to use string patterns --------- Co-authored-by: DivisionByZero <leyla.jaehnig@gmx.de>
1 parent 7f0daf3 commit 0ca1e44

File tree

4 files changed

+64
-212
lines changed

4 files changed

+64
-212
lines changed

src/definitions/location.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ export type LocationDefinition = LocaleEntry<{
77
/**
88
* Postcodes patterns by state
99
*/
10-
postcode_by_state: { [state: string]: { min: number; max: number } };
10+
postcode_by_state: {
11+
[state: string]: string;
12+
};
1113

1214
/**
1315
* Postcodes patterns.
Lines changed: 52 additions & 208 deletions
Original file line numberDiff line numberDiff line change
@@ -1,210 +1,54 @@
11
export default {
2-
AK: {
3-
min: 99501,
4-
max: 99950,
5-
},
6-
AL: {
7-
min: 35004,
8-
max: 36925,
9-
},
10-
AR: {
11-
min: 71601,
12-
max: 72959,
13-
},
14-
AZ: {
15-
min: 85001,
16-
max: 86556,
17-
},
18-
CA: {
19-
min: 90001,
20-
max: 96162,
21-
},
22-
CO: {
23-
min: 80001,
24-
max: 81658,
25-
},
26-
CT: {
27-
min: 6001,
28-
max: 6389,
29-
},
30-
DC: {
31-
min: 20001,
32-
max: 20039,
33-
},
34-
DE: {
35-
min: 19701,
36-
max: 19980,
37-
},
38-
FL: {
39-
min: 32004,
40-
max: 34997,
41-
},
42-
GA: {
43-
min: 30001,
44-
max: 31999,
45-
},
46-
HI: {
47-
min: 96701,
48-
max: 96898,
49-
},
50-
IA: {
51-
min: 50001,
52-
max: 52809,
53-
},
54-
ID: {
55-
min: 83201,
56-
max: 83876,
57-
},
58-
IL: {
59-
min: 60001,
60-
max: 62999,
61-
},
62-
IN: {
63-
min: 46001,
64-
max: 47997,
65-
},
66-
KS: {
67-
min: 66002,
68-
max: 67954,
69-
},
70-
KY: {
71-
min: 40003,
72-
max: 42788,
73-
},
74-
LA: {
75-
min: 70001,
76-
max: 71232,
77-
},
78-
MA: {
79-
min: 1001,
80-
max: 2791,
81-
},
82-
MD: {
83-
min: 20899,
84-
max: 20908,
85-
},
86-
ME: {
87-
min: 3901,
88-
max: 4992,
89-
},
90-
MI: {
91-
min: 48001,
92-
max: 49971,
93-
},
94-
MN: {
95-
min: 55001,
96-
max: 56763,
97-
},
98-
MO: {
99-
min: 63001,
100-
max: 65899,
101-
},
102-
MS: {
103-
min: 38601,
104-
max: 39776,
105-
},
106-
MT: {
107-
min: 59001,
108-
max: 59937,
109-
},
110-
NC: {
111-
min: 27006,
112-
max: 28909,
113-
},
114-
ND: {
115-
min: 58001,
116-
max: 58856,
117-
},
118-
NE: {
119-
min: 68001,
120-
max: 68118,
121-
},
122-
NH: {
123-
min: 3031,
124-
max: 3897,
125-
},
126-
NJ: {
127-
min: 7001,
128-
max: 8989,
129-
},
130-
NM: {
131-
min: 87001,
132-
max: 88441,
133-
},
134-
NV: {
135-
min: 88901,
136-
max: 89883,
137-
},
138-
NY: {
139-
min: 6390,
140-
max: 6390,
141-
},
142-
OH: {
143-
min: 43001,
144-
max: 45999,
145-
},
146-
OK: {
147-
min: 73001,
148-
max: 73199,
149-
},
150-
OR: {
151-
min: 97001,
152-
max: 97920,
153-
},
154-
PA: {
155-
min: 15001,
156-
max: 19640,
157-
},
158-
PR: {
159-
min: 0,
160-
max: 0,
161-
},
162-
RI: {
163-
min: 2801,
164-
max: 2940,
165-
},
166-
SC: {
167-
min: 29001,
168-
max: 29948,
169-
},
170-
SD: {
171-
min: 57001,
172-
max: 57799,
173-
},
174-
TN: {
175-
min: 37010,
176-
max: 38589,
177-
},
178-
TX: {
179-
min: 75503,
180-
max: 79999,
181-
},
182-
UT: {
183-
min: 84001,
184-
max: 84784,
185-
},
186-
VA: {
187-
min: 20040,
188-
max: 20041,
189-
},
190-
VT: {
191-
min: 5001,
192-
max: 5495,
193-
},
194-
WA: {
195-
min: 98001,
196-
max: 99403,
197-
},
198-
WI: {
199-
min: 53001,
200-
max: 54990,
201-
},
202-
WV: {
203-
min: 24701,
204-
max: 26886,
205-
},
206-
WY: {
207-
min: 82001,
208-
max: 83128,
209-
},
2+
AK: '{{number.int({"min": 99501,"max": 99950})}}',
3+
AL: '{{number.int({"min": 35004,"max": 36925})}}',
4+
AR: '{{number.int({"min": 71601,"max": 72959})}}',
5+
AZ: '{{number.int({"min": 85001,"max": 86556})}}',
6+
CA: '{{number.int({"min": 90001,"max": 96162})}}',
7+
CO: '{{number.int({"min": 80001,"max": 81658})}}',
8+
CT: '0{{number.int({"min": 6001,"max": 6389})}}',
9+
DC: '{{number.int({"min": 20001,"max": 20039})}}',
10+
DE: '{{number.int({"min": 19701,"max": 19980})}}',
11+
FL: '{{number.int({"min": 32004,"max": 34997})}}',
12+
GA: '{{number.int({"min": 30001,"max": 31999})}}',
13+
HI: '{{number.int({"min": 96701,"max": 96898})}}',
14+
IA: '{{number.int({"min": 50001,"max": 52809})}}',
15+
ID: '{{number.int({"min": 83201,"max": 83876})}}',
16+
IL: '{{number.int({"min": 60001,"max": 62999})}}',
17+
IN: '{{number.int({"min": 46001,"max": 47997})}}',
18+
KS: '{{number.int({"min": 66002,"max": 67954})}}',
19+
KY: '{{number.int({"min": 40003,"max": 42788})}}',
20+
LA: '{{number.int({"min": 70001,"max": 71232})}}',
21+
MA: '0{{number.int({"min": 1001,"max": 2791})}}',
22+
MD: '{{number.int({"min": 20899,"max": 20908})}}',
23+
ME: '0{{number.int({"min": 3901,"max": 4992})}}',
24+
MI: '{{number.int({"min": 48001,"max": 49971})}}',
25+
MN: '{{number.int({"min": 55001,"max": 56763})}}',
26+
MO: '{{number.int({"min": 63001,"max": 65899})}}',
27+
MS: '{{number.int({"min": 38601,"max": 39776})}}',
28+
MT: '{{number.int({"min": 59001,"max": 59937})}}',
29+
NC: '{{number.int({"min": 27006,"max": 28909})}}',
30+
ND: '{{number.int({"min": 58001,"max": 58856})}}',
31+
NE: '{{number.int({"min": 68001,"max": 68118})}}',
32+
NH: '0{{number.int({"min": 3031,"max": 3897})}}',
33+
NJ: '0{{number.int({"min": 7001,"max": 8989})}}',
34+
NM: '{{number.int({"min": 87001,"max": 88441})}}',
35+
NV: '{{number.int({"min": 88901,"max": 89883})}}',
36+
NY: '0{{number.int({"min": 6390,"max": 6390})}}',
37+
OH: '{{number.int({"min": 43001,"max": 45999})}}',
38+
OK: '{{number.int({"min": 73001,"max": 73199})}}',
39+
OR: '{{number.int({"min": 97001,"max": 97920})}}',
40+
PA: '{{number.int({"min": 15001,"max": 19640})}}',
41+
PR: '00{{number.int({"min": 601,"max": 988})}}',
42+
RI: '0{{number.int({"min": 2801,"max": 2940})}}',
43+
SC: '{{number.int({"min": 29001,"max": 29948})}}',
44+
SD: '{{number.int({"min": 57001,"max": 57799})}}',
45+
TN: '{{number.int({"min": 37010,"max": 38589})}}',
46+
TX: '{{number.int({"min": 75503,"max": 79999})}}',
47+
UT: '{{number.int({"min": 84001,"max": 84784})}}',
48+
VA: '{{number.int({"min": 20040,"max": 20041})}}',
49+
VT: '0{{number.int({"min": 5001,"max": 5495})}}',
50+
WA: '{{number.int({"min": 98001,"max": 99403})}}',
51+
WI: '{{number.int({"min": 53001,"max": 54990})}}',
52+
WV: '{{number.int({"min": 24701,"max": 26886})}}',
53+
WY: '{{number.int({"min": 82001,"max": 83128})}}',
21054
};

src/modules/location/index.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,11 @@ export class LocationModule {
6565
const { state } = options;
6666

6767
if (state) {
68-
const zipRange = this.faker.definitions.location.postcode_by_state[state];
68+
const zipPattern: string =
69+
this.faker.definitions.location.postcode_by_state[state];
6970

70-
if (zipRange) {
71-
return String(this.faker.number.int(zipRange));
71+
if (zipPattern) {
72+
return this.faker.helpers.fake(zipPattern);
7273
}
7374

7475
throw new FakerError(`No zip code definition found for state "${state}"`);

test/modules/location.spec.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,11 @@ describe('location', () => {
192192
expect(zipCode1).toBeLessThanOrEqual(upper);
193193
});
194194

195+
it('should return a zip code with length 5 for ZIP codes that start with 0', () => {
196+
const zipCode = fakerEN_US.location.zipCode({ state: 'NH' });
197+
expect(zipCode.length).toBe(5);
198+
});
199+
195200
it('should throw when definitions.location.postcode_by_state not set', () => {
196201
expect(() => faker.location.zipCode({ state: 'XX' })).toThrow(
197202
new FakerError(

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy