plevinjs 0.1.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 +283 -0
- package/dist/address.d.ts +28 -0
- package/dist/address.d.ts.map +1 -0
- package/dist/address.js +242 -0
- package/dist/address.js.map +1 -0
- package/dist/countries.d.ts +3 -0
- package/dist/countries.d.ts.map +1 -0
- package/dist/countries.js +255 -0
- package/dist/countries.js.map +1 -0
- package/dist/derive.d.ts +13 -0
- package/dist/derive.d.ts.map +1 -0
- package/dist/derive.js +124 -0
- package/dist/derive.js.map +1 -0
- package/dist/extra.d.ts +9 -0
- package/dist/extra.d.ts.map +1 -0
- package/dist/extra.js +217 -0
- package/dist/extra.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +282 -0
- package/dist/index.js.map +1 -0
- package/dist/models.d.ts +148 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +3 -0
- package/dist/models.js.map +1 -0
- package/dist/node.d.ts +6 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +12 -0
- package/dist/node.js.map +1 -0
- package/dist/reader.d.ts +85 -0
- package/dist/reader.d.ts.map +1 -0
- package/dist/reader.js +461 -0
- package/dist/reader.js.map +1 -0
- package/dist/zones.d.ts +3 -0
- package/dist/zones.d.ts.map +1 -0
- package/dist/zones.js +373 -0
- package/dist/zones.js.map +1 -0
- package/dist/zstd.d.ts +31 -0
- package/dist/zstd.d.ts.map +1 -0
- package/dist/zstd.js +574 -0
- package/dist/zstd.js.map +1 -0
- package/package.json +68 -0
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
/** ISO 3166 as one string: code, iso3, numeric, name and any official or common name. */
|
|
2
|
+
export const COUNTRIES = `
|
|
3
|
+
ADAND020Andorra|Principality of Andorra|
|
|
4
|
+
AEARE784United Arab Emirates
|
|
5
|
+
AFAFG004Afghanistan|Islamic Republic of Afghanistan|
|
|
6
|
+
AGATG028Antigua and Barbuda
|
|
7
|
+
AIAIA660Anguilla
|
|
8
|
+
ALALB008Albania|Republic of Albania|
|
|
9
|
+
AMARM051Armenia|Republic of Armenia|
|
|
10
|
+
AOAGO024Angola|Republic of Angola|
|
|
11
|
+
AQATA010Antarctica
|
|
12
|
+
ARARG032Argentina|Argentine Republic|
|
|
13
|
+
ASASM016American Samoa
|
|
14
|
+
ATAUT040Austria|Republic of Austria|
|
|
15
|
+
AUAUS036Australia
|
|
16
|
+
AWABW533Aruba
|
|
17
|
+
AXALA248Åland Islands
|
|
18
|
+
AZAZE031Azerbaijan|Republic of Azerbaijan|
|
|
19
|
+
BABIH070Bosnia and Herzegovina|Republic of Bosnia and Herzegovina|
|
|
20
|
+
BBBRB052Barbados
|
|
21
|
+
BDBGD050Bangladesh|People's Republic of Bangladesh|
|
|
22
|
+
BEBEL056Belgium|Kingdom of Belgium|
|
|
23
|
+
BFBFA854Burkina Faso
|
|
24
|
+
BGBGR100Bulgaria|Republic of Bulgaria|
|
|
25
|
+
BHBHR048Bahrain|Kingdom of Bahrain|
|
|
26
|
+
BIBDI108Burundi|Republic of Burundi|
|
|
27
|
+
BJBEN204Benin|Republic of Benin|
|
|
28
|
+
BLBLM652Saint Barthélemy
|
|
29
|
+
BMBMU060Bermuda
|
|
30
|
+
BNBRN096Brunei Darussalam
|
|
31
|
+
BOBOL068Bolivia, Plurinational State of|Plurinational State of Bolivia|Bolivia
|
|
32
|
+
BQBES535Bonaire, Sint Eustatius and Saba|Bonaire, Sint Eustatius and Saba|
|
|
33
|
+
BRBRA076Brazil|Federative Republic of Brazil|
|
|
34
|
+
BSBHS044Bahamas|Commonwealth of the Bahamas|
|
|
35
|
+
BTBTN064Bhutan|Kingdom of Bhutan|
|
|
36
|
+
BVBVT074Bouvet Island
|
|
37
|
+
BWBWA072Botswana|Republic of Botswana|
|
|
38
|
+
BYBLR112Belarus|Republic of Belarus|
|
|
39
|
+
BZBLZ084Belize
|
|
40
|
+
CACAN124Canada
|
|
41
|
+
CCCCK166Cocos (Keeling) Islands
|
|
42
|
+
CDCOD180Congo, The Democratic Republic of the
|
|
43
|
+
CFCAF140Central African Republic
|
|
44
|
+
CGCOG178Congo|Republic of the Congo|
|
|
45
|
+
CHCHE756Switzerland|Swiss Confederation|
|
|
46
|
+
CICIV384Côte d'Ivoire|Republic of Côte d'Ivoire|
|
|
47
|
+
CKCOK184Cook Islands
|
|
48
|
+
CLCHL152Chile|Republic of Chile|
|
|
49
|
+
CMCMR120Cameroon|Republic of Cameroon|
|
|
50
|
+
CNCHN156China|People's Republic of China|
|
|
51
|
+
COCOL170Colombia|Republic of Colombia|
|
|
52
|
+
CRCRI188Costa Rica|Republic of Costa Rica|
|
|
53
|
+
CUCUB192Cuba|Republic of Cuba|
|
|
54
|
+
CVCPV132Cabo Verde|Republic of Cabo Verde|
|
|
55
|
+
CWCUW531Curaçao|Curaçao|
|
|
56
|
+
CXCXR162Christmas Island
|
|
57
|
+
CYCYP196Cyprus|Republic of Cyprus|
|
|
58
|
+
CZCZE203Czechia|Czech Republic|
|
|
59
|
+
DEDEU276Germany|Federal Republic of Germany|
|
|
60
|
+
DJDJI262Djibouti|Republic of Djibouti|
|
|
61
|
+
DKDNK208Denmark|Kingdom of Denmark|
|
|
62
|
+
DMDMA212Dominica|Commonwealth of Dominica|
|
|
63
|
+
DODOM214Dominican Republic
|
|
64
|
+
DZDZA012Algeria|People's Democratic Republic of Algeria|
|
|
65
|
+
ECECU218Ecuador|Republic of Ecuador|
|
|
66
|
+
EEEST233Estonia|Republic of Estonia|
|
|
67
|
+
EGEGY818Egypt|Arab Republic of Egypt|
|
|
68
|
+
EHESH732Western Sahara
|
|
69
|
+
ERERI232Eritrea|the State of Eritrea|
|
|
70
|
+
ESESP724Spain|Kingdom of Spain|
|
|
71
|
+
ETETH231Ethiopia|Federal Democratic Republic of Ethiopia|
|
|
72
|
+
FIFIN246Finland|Republic of Finland|
|
|
73
|
+
FJFJI242Fiji|Republic of Fiji|
|
|
74
|
+
FKFLK238Falkland Islands (Malvinas)
|
|
75
|
+
FMFSM583Micronesia, Federated States of|Federated States of Micronesia|
|
|
76
|
+
FOFRO234Faroe Islands
|
|
77
|
+
FRFRA250France|French Republic|
|
|
78
|
+
GAGAB266Gabon|Gabonese Republic|
|
|
79
|
+
GBGBR826United Kingdom|United Kingdom of Great Britain and Northern Ireland|
|
|
80
|
+
GDGRD308Grenada
|
|
81
|
+
GEGEO268Georgia
|
|
82
|
+
GFGUF254French Guiana
|
|
83
|
+
GGGGY831Guernsey
|
|
84
|
+
GHGHA288Ghana|Republic of Ghana|
|
|
85
|
+
GIGIB292Gibraltar
|
|
86
|
+
GLGRL304Greenland
|
|
87
|
+
GMGMB270Gambia|Republic of the Gambia|
|
|
88
|
+
GNGIN324Guinea|Republic of Guinea|
|
|
89
|
+
GPGLP312Guadeloupe
|
|
90
|
+
GQGNQ226Equatorial Guinea|Republic of Equatorial Guinea|
|
|
91
|
+
GRGRC300Greece|Hellenic Republic|
|
|
92
|
+
GSSGS239South Georgia and the South Sandwich Islands
|
|
93
|
+
GTGTM320Guatemala|Republic of Guatemala|
|
|
94
|
+
GUGUM316Guam
|
|
95
|
+
GWGNB624Guinea-Bissau|Republic of Guinea-Bissau|
|
|
96
|
+
GYGUY328Guyana|Republic of Guyana|
|
|
97
|
+
HKHKG344Hong Kong|Hong Kong Special Administrative Region of China|
|
|
98
|
+
HMHMD334Heard Island and McDonald Islands
|
|
99
|
+
HNHND340Honduras|Republic of Honduras|
|
|
100
|
+
HRHRV191Croatia|Republic of Croatia|
|
|
101
|
+
HTHTI332Haiti|Republic of Haiti|
|
|
102
|
+
HUHUN348Hungary|Hungary|
|
|
103
|
+
IDIDN360Indonesia|Republic of Indonesia|
|
|
104
|
+
IEIRL372Ireland
|
|
105
|
+
ILISR376Israel|State of Israel|
|
|
106
|
+
IMIMN833Isle of Man
|
|
107
|
+
ININD356India|Republic of India|
|
|
108
|
+
IOIOT086British Indian Ocean Territory
|
|
109
|
+
IQIRQ368Iraq|Republic of Iraq|
|
|
110
|
+
IRIRN364Iran, Islamic Republic of|Islamic Republic of Iran|Iran
|
|
111
|
+
ISISL352Iceland|Republic of Iceland|
|
|
112
|
+
ITITA380Italy|Italian Republic|
|
|
113
|
+
JEJEY832Jersey
|
|
114
|
+
JMJAM388Jamaica
|
|
115
|
+
JOJOR400Jordan|Hashemite Kingdom of Jordan|
|
|
116
|
+
JPJPN392Japan
|
|
117
|
+
KEKEN404Kenya|Republic of Kenya|
|
|
118
|
+
KGKGZ417Kyrgyzstan|Kyrgyz Republic|
|
|
119
|
+
KHKHM116Cambodia|Kingdom of Cambodia|
|
|
120
|
+
KIKIR296Kiribati|Republic of Kiribati|
|
|
121
|
+
KMCOM174Comoros|Union of the Comoros|
|
|
122
|
+
KNKNA659Saint Kitts and Nevis
|
|
123
|
+
KPPRK408Korea, Democratic People's Republic of|Democratic People's Republic of Korea|North Korea
|
|
124
|
+
KRKOR410Korea, Republic of||South Korea
|
|
125
|
+
KWKWT414Kuwait|State of Kuwait|
|
|
126
|
+
KYCYM136Cayman Islands
|
|
127
|
+
KZKAZ398Kazakhstan|Republic of Kazakhstan|
|
|
128
|
+
LALAO418Lao People's Democratic Republic||Laos
|
|
129
|
+
LBLBN422Lebanon|Lebanese Republic|
|
|
130
|
+
LCLCA662Saint Lucia
|
|
131
|
+
LILIE438Liechtenstein|Principality of Liechtenstein|
|
|
132
|
+
LKLKA144Sri Lanka|Democratic Socialist Republic of Sri Lanka|
|
|
133
|
+
LRLBR430Liberia|Republic of Liberia|
|
|
134
|
+
LSLSO426Lesotho|Kingdom of Lesotho|
|
|
135
|
+
LTLTU440Lithuania|Republic of Lithuania|
|
|
136
|
+
LULUX442Luxembourg|Grand Duchy of Luxembourg|
|
|
137
|
+
LVLVA428Latvia|Republic of Latvia|
|
|
138
|
+
LYLBY434Libya|Libya|
|
|
139
|
+
MAMAR504Morocco|Kingdom of Morocco|
|
|
140
|
+
MCMCO492Monaco|Principality of Monaco|
|
|
141
|
+
MDMDA498Moldova, Republic of|Republic of Moldova|Moldova
|
|
142
|
+
MEMNE499Montenegro|Montenegro|
|
|
143
|
+
MFMAF663Saint Martin (French part)
|
|
144
|
+
MGMDG450Madagascar|Republic of Madagascar|
|
|
145
|
+
MHMHL584Marshall Islands|Republic of the Marshall Islands|
|
|
146
|
+
MKMKD807North Macedonia|Republic of North Macedonia|
|
|
147
|
+
MLMLI466Mali|Republic of Mali|
|
|
148
|
+
MMMMR104Myanmar|Republic of Myanmar|
|
|
149
|
+
MNMNG496Mongolia
|
|
150
|
+
MOMAC446Macao|Macao Special Administrative Region of China|
|
|
151
|
+
MPMNP580Northern Mariana Islands|Commonwealth of the Northern Mariana Islands|
|
|
152
|
+
MQMTQ474Martinique
|
|
153
|
+
MRMRT478Mauritania|Islamic Republic of Mauritania|
|
|
154
|
+
MSMSR500Montserrat
|
|
155
|
+
MTMLT470Malta|Republic of Malta|
|
|
156
|
+
MUMUS480Mauritius|Republic of Mauritius|
|
|
157
|
+
MVMDV462Maldives|Republic of Maldives|
|
|
158
|
+
MWMWI454Malawi|Republic of Malawi|
|
|
159
|
+
MXMEX484Mexico|United Mexican States|
|
|
160
|
+
MYMYS458Malaysia
|
|
161
|
+
MZMOZ508Mozambique|Republic of Mozambique|
|
|
162
|
+
NANAM516Namibia|Republic of Namibia|
|
|
163
|
+
NCNCL540New Caledonia
|
|
164
|
+
NENER562Niger|Republic of the Niger|
|
|
165
|
+
NFNFK574Norfolk Island
|
|
166
|
+
NGNGA566Nigeria|Federal Republic of Nigeria|
|
|
167
|
+
NINIC558Nicaragua|Republic of Nicaragua|
|
|
168
|
+
NLNLD528Netherlands|Kingdom of the Netherlands|
|
|
169
|
+
NONOR578Norway|Kingdom of Norway|
|
|
170
|
+
NPNPL524Nepal|Federal Democratic Republic of Nepal|
|
|
171
|
+
NRNRU520Nauru|Republic of Nauru|
|
|
172
|
+
NUNIU570Niue|Niue|
|
|
173
|
+
NZNZL554New Zealand
|
|
174
|
+
OMOMN512Oman|Sultanate of Oman|
|
|
175
|
+
PAPAN591Panama|Republic of Panama|
|
|
176
|
+
PEPER604Peru|Republic of Peru|
|
|
177
|
+
PFPYF258French Polynesia
|
|
178
|
+
PGPNG598Papua New Guinea|Independent State of Papua New Guinea|
|
|
179
|
+
PHPHL608Philippines|Republic of the Philippines|
|
|
180
|
+
PKPAK586Pakistan|Islamic Republic of Pakistan|
|
|
181
|
+
PLPOL616Poland|Republic of Poland|
|
|
182
|
+
PMSPM666Saint Pierre and Miquelon
|
|
183
|
+
PNPCN612Pitcairn
|
|
184
|
+
PRPRI630Puerto Rico
|
|
185
|
+
PSPSE275Palestine, State of|the State of Palestine|
|
|
186
|
+
PTPRT620Portugal|Portuguese Republic|
|
|
187
|
+
PWPLW585Palau|Republic of Palau|
|
|
188
|
+
PYPRY600Paraguay|Republic of Paraguay|
|
|
189
|
+
QAQAT634Qatar|State of Qatar|
|
|
190
|
+
REREU638Réunion
|
|
191
|
+
ROROU642Romania
|
|
192
|
+
RSSRB688Serbia|Republic of Serbia|
|
|
193
|
+
RURUS643Russian Federation
|
|
194
|
+
RWRWA646Rwanda|Rwandese Republic|
|
|
195
|
+
SASAU682Saudi Arabia|Kingdom of Saudi Arabia|
|
|
196
|
+
SBSLB090Solomon Islands
|
|
197
|
+
SCSYC690Seychelles|Republic of Seychelles|
|
|
198
|
+
SDSDN729Sudan|Republic of the Sudan|
|
|
199
|
+
SESWE752Sweden|Kingdom of Sweden|
|
|
200
|
+
SGSGP702Singapore|Republic of Singapore|
|
|
201
|
+
SHSHN654Saint Helena, Ascension and Tristan da Cunha
|
|
202
|
+
SISVN705Slovenia|Republic of Slovenia|
|
|
203
|
+
SJSJM744Svalbard and Jan Mayen
|
|
204
|
+
SKSVK703Slovakia|Slovak Republic|
|
|
205
|
+
SLSLE694Sierra Leone|Republic of Sierra Leone|
|
|
206
|
+
SMSMR674San Marino|Republic of San Marino|
|
|
207
|
+
SNSEN686Senegal|Republic of Senegal|
|
|
208
|
+
SOSOM706Somalia|Federal Republic of Somalia|
|
|
209
|
+
SRSUR740Suriname|Republic of Suriname|
|
|
210
|
+
SSSSD728South Sudan|Republic of South Sudan|
|
|
211
|
+
STSTP678Sao Tome and Principe|Democratic Republic of Sao Tome and Principe|
|
|
212
|
+
SVSLV222El Salvador|Republic of El Salvador|
|
|
213
|
+
SXSXM534Sint Maarten (Dutch part)|Sint Maarten (Dutch part)|
|
|
214
|
+
SYSYR760Syrian Arab Republic||Syria
|
|
215
|
+
SZSWZ748Eswatini|Kingdom of Eswatini|
|
|
216
|
+
TCTCA796Turks and Caicos Islands
|
|
217
|
+
TDTCD148Chad|Republic of Chad|
|
|
218
|
+
TFATF260French Southern Territories
|
|
219
|
+
TGTGO768Togo|Togolese Republic|
|
|
220
|
+
THTHA764Thailand|Kingdom of Thailand|
|
|
221
|
+
TJTJK762Tajikistan|Republic of Tajikistan|
|
|
222
|
+
TKTKL772Tokelau
|
|
223
|
+
TLTLS626Timor-Leste|Democratic Republic of Timor-Leste|
|
|
224
|
+
TMTKM795Turkmenistan
|
|
225
|
+
TNTUN788Tunisia|Republic of Tunisia|
|
|
226
|
+
TOTON776Tonga|Kingdom of Tonga|
|
|
227
|
+
TRTUR792Türkiye|Republic of Türkiye|
|
|
228
|
+
TTTTO780Trinidad and Tobago|Republic of Trinidad and Tobago|
|
|
229
|
+
TVTUV798Tuvalu
|
|
230
|
+
TWTWN158Taiwan, Province of China|Taiwan, Province of China|Taiwan
|
|
231
|
+
TZTZA834Tanzania, United Republic of|United Republic of Tanzania|Tanzania
|
|
232
|
+
UAUKR804Ukraine
|
|
233
|
+
UGUGA800Uganda|Republic of Uganda|
|
|
234
|
+
UMUMI581United States Minor Outlying Islands
|
|
235
|
+
USUSA840United States|United States of America|
|
|
236
|
+
UYURY858Uruguay|Eastern Republic of Uruguay|
|
|
237
|
+
UZUZB860Uzbekistan|Republic of Uzbekistan|
|
|
238
|
+
VAVAT336Holy See (Vatican City State)
|
|
239
|
+
VCVCT670Saint Vincent and the Grenadines
|
|
240
|
+
VEVEN862Venezuela, Bolivarian Republic of|Bolivarian Republic of Venezuela|Venezuela
|
|
241
|
+
VGVGB092Virgin Islands, British|British Virgin Islands|
|
|
242
|
+
VIVIR850Virgin Islands, U.S.|Virgin Islands of the United States|
|
|
243
|
+
VNVNM704Viet Nam|Socialist Republic of Viet Nam|Vietnam
|
|
244
|
+
VUVUT548Vanuatu|Republic of Vanuatu|
|
|
245
|
+
WFWLF876Wallis and Futuna
|
|
246
|
+
WSWSM882Samoa|Independent State of Samoa|
|
|
247
|
+
YEYEM887Yemen|Republic of Yemen|
|
|
248
|
+
YTMYT175Mayotte
|
|
249
|
+
ZAZAF710South Africa|Republic of South Africa|
|
|
250
|
+
ZMZMB894Zambia|Republic of Zambia|
|
|
251
|
+
ZWZWE716Zimbabwe|Republic of Zimbabwe|
|
|
252
|
+
`
|
|
253
|
+
.trim()
|
|
254
|
+
.split("\n");
|
|
255
|
+
//# sourceMappingURL=countries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"countries.js","sourceRoot":"","sources":["../src/countries.ts"],"names":[],"mappings":"AAAA,yFAAyF;AAEzF,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0PxB;KACE,IAAI,EAAE;KACN,KAAK,CAAC,IAAI,CAAC,CAAC"}
|
package/dist/derive.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** The answers the file does not store, read off the ones it does. */
|
|
2
|
+
export declare const SERVERS: Set<string>;
|
|
3
|
+
export declare const ACCESS: Set<string>;
|
|
4
|
+
export declare const PROXIES: Set<string>;
|
|
5
|
+
/** The name a network goes by: its handle where the company only spells it out. */
|
|
6
|
+
export declare const brand: (handle: string, company: string) => string;
|
|
7
|
+
/** The bare host the website names, else the one the abuse mailbox does. */
|
|
8
|
+
export declare const domain: (website: string, mailbox: string) => string;
|
|
9
|
+
/** A public proxy on an access network is someone's home line, resold. */
|
|
10
|
+
export declare const service: (named: string, userType: string) => [string, string];
|
|
11
|
+
/** The city type already says which capital it is, so nothing stores it twice. */
|
|
12
|
+
export declare const capital: (cityType: string) => string;
|
|
13
|
+
//# sourceMappingURL=derive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../src/derive.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAmCtE,eAAO,MAAM,OAAO,aAAyC,CAAC;AAC9D,eAAO,MAAM,MAAM,aAAuC,CAAC;AAC3D,eAAO,MAAM,OAAO,aAAiD,CAAC;AAwFtE,mFAAmF;AACnF,eAAO,MAAM,KAAK,WAAY,MAAM,WAAW,MAAM,KAAG,MACtB,CAAC;AAanC,4EAA4E;AAC5E,eAAO,MAAM,MAAM,YAAa,MAAM,WAAW,MAAM,KAAG,MACtB,CAAC;AAErC,0EAA0E;AAC1E,eAAO,MAAM,OAAO,UAAW,MAAM,YAAY,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,CAGxD,CAAC;AAElB,kFAAkF;AAClF,eAAO,MAAM,OAAO,aAAc,MAAM,KAAG,MAAkC,CAAC"}
|
package/dist/derive.js
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/** The answers the file does not store, read off the ones it does. */
|
|
2
|
+
const words = (text) => new Set(text.split(" "));
|
|
3
|
+
const FORMS = words("inc incorporated llc ltd ltda limited gmbh mbh ag kgaa ohg ev eg sa sab saa" +
|
|
4
|
+
" sau sal saog sac sas sarl srl spa nv bv cv asa aps oyj kft zrt nyrt doo" +
|
|
5
|
+
" sro ooo zao pao pjsc jsc ojsc llp plc pte pteltd pty corp corporation" +
|
|
6
|
+
" company holding holdings group uab sia tov oao pt sdn bhd coltd coltda" +
|
|
7
|
+
" eireli ead ood eood sti ltdsti spzoo");
|
|
8
|
+
const TAILS = words("de me epp co as ab ad dd bt lc lp se sl slu sp z oo zoo oy ao esp kg network" +
|
|
9
|
+
" networks net telecom telecoms telecommunication telecommunications" +
|
|
10
|
+
" telecomunicaciones comunicaciones communication communications hosting" +
|
|
11
|
+
" solutions services service technologies technology tech systems system" +
|
|
12
|
+
" data datacenter datacentre cloud internet online isp international global" +
|
|
13
|
+
" enterprises enterprise backbone provider providers of and");
|
|
14
|
+
const LEAD = words("the llc ltd gmbh sarl ooo zao pao ao oao jsc ojsc pjsc uab sia tov pt pp ps" +
|
|
15
|
+
" ip spolka");
|
|
16
|
+
const TAIL = new Set([...FORMS, ...TAILS, ""]);
|
|
17
|
+
const TLDS = [".com", ".net", ".org", ".io"];
|
|
18
|
+
const TRADING = /^.*\b(?:trading as|d\/b\/a|dba)\b\s*/i;
|
|
19
|
+
const ALIAS = /\(.*?\)|,.*|\s+-\s+.*/g;
|
|
20
|
+
const BARE = /[^0-9a-z]/g;
|
|
21
|
+
const NUMBERED = /^AS\d+$/i;
|
|
22
|
+
const HANDLE_TAIL = /-(AS|AP|US|UK|DE|FR|IN|CN|JP|EU|NET|COM|ORG)$/;
|
|
23
|
+
const NETWORK_TAIL = /(NET|COM|TEL|WEB|LINE)$/;
|
|
24
|
+
const AUTHORITY = /[/?#]/;
|
|
25
|
+
const QUOTES = /^["']+|["']+$/g;
|
|
26
|
+
export const SERVERS = new Set(["hosting", "cdn", "content"]);
|
|
27
|
+
export const ACCESS = new Set(["residential", "cellular"]);
|
|
28
|
+
export const PROXIES = new Set(["public_proxy", "residential_proxy"]);
|
|
29
|
+
const CAPITALS = {
|
|
30
|
+
"national capital": "country",
|
|
31
|
+
"regional capital": "region",
|
|
32
|
+
"district capital": "district",
|
|
33
|
+
};
|
|
34
|
+
const NAMES = 1 << 13;
|
|
35
|
+
const kept = (build) => {
|
|
36
|
+
const held = new Map();
|
|
37
|
+
return (key) => {
|
|
38
|
+
const found = held.get(key);
|
|
39
|
+
if (found !== undefined)
|
|
40
|
+
return found;
|
|
41
|
+
if (held.size >= NAMES)
|
|
42
|
+
held.clear();
|
|
43
|
+
const built = build(key);
|
|
44
|
+
held.set(key, built);
|
|
45
|
+
return built;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
const LETTERS = /^\p{L}+$/u;
|
|
49
|
+
const split = (key) => {
|
|
50
|
+
const at = key.indexOf("\n");
|
|
51
|
+
return [key.slice(0, at), key.slice(at + 1)];
|
|
52
|
+
};
|
|
53
|
+
const shouts = (word) => word.length > 4 &&
|
|
54
|
+
LETTERS.test(word) &&
|
|
55
|
+
word === word.toUpperCase() &&
|
|
56
|
+
word !== word.toLowerCase();
|
|
57
|
+
const titled = (word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
|
|
58
|
+
/** Shouted words stop shouting, `GOOGLE` reading as `Google` and `IBM` as `IBM`. */
|
|
59
|
+
const cased = (text) => text
|
|
60
|
+
.split(" ")
|
|
61
|
+
.map((word) => (shouts(word) ? titled(word) : word))
|
|
62
|
+
.join(" ");
|
|
63
|
+
/** Aliases, legal forms and the words every network shares, all stripped. */
|
|
64
|
+
const fromCompany = (company) => {
|
|
65
|
+
const held = company.replace(TRADING, "").replace(ALIAS, "");
|
|
66
|
+
const tokens = held
|
|
67
|
+
.split(/\s+/)
|
|
68
|
+
.map((word) => word.replace(QUOTES, ""))
|
|
69
|
+
.filter(Boolean);
|
|
70
|
+
while (tokens.length > 1 &&
|
|
71
|
+
TAIL.has(tokens[tokens.length - 1].toLowerCase().replace(BARE, ""))) {
|
|
72
|
+
tokens.pop();
|
|
73
|
+
}
|
|
74
|
+
while (tokens.length && LEAD.has(tokens[0].toLowerCase().replace(BARE, ""))) {
|
|
75
|
+
tokens.shift();
|
|
76
|
+
}
|
|
77
|
+
const name = tokens.join(" ");
|
|
78
|
+
const tld = TLDS.find((held) => name.toLowerCase().endsWith(held));
|
|
79
|
+
return cased(tld ? name.slice(0, name.length - tld.length) : name);
|
|
80
|
+
};
|
|
81
|
+
/** The first word of a registry handle, its country and network tails gone. */
|
|
82
|
+
const fromHandle = (handle) => {
|
|
83
|
+
const first = handle.split(/\s+/)[0] ?? "";
|
|
84
|
+
let head = first.replace(HANDLE_TAIL, "");
|
|
85
|
+
if (NUMBERED.test(head))
|
|
86
|
+
return "";
|
|
87
|
+
if (head.length > 4 && head === head.toUpperCase()) {
|
|
88
|
+
head = head.replace(NETWORK_TAIL, "");
|
|
89
|
+
}
|
|
90
|
+
return cased(head);
|
|
91
|
+
};
|
|
92
|
+
const branded = kept((key) => {
|
|
93
|
+
const [handle, company] = split(key);
|
|
94
|
+
const legal = fromCompany(company);
|
|
95
|
+
const short = fromHandle(handle);
|
|
96
|
+
if (!legal || !short)
|
|
97
|
+
return legal || short;
|
|
98
|
+
if (legal.toLowerCase() === short.toLowerCase()) {
|
|
99
|
+
return short === short.toUpperCase() ? legal : short;
|
|
100
|
+
}
|
|
101
|
+
return legal.toLowerCase().startsWith(`${short.toLowerCase()} `) ? short : legal;
|
|
102
|
+
});
|
|
103
|
+
/** The name a network goes by: its handle where the company only spells it out. */
|
|
104
|
+
export const brand = (handle, company) => branded(`${handle}\n${company}`);
|
|
105
|
+
const domained = kept((key) => {
|
|
106
|
+
const [website, mailbox] = split(key);
|
|
107
|
+
const authority = (website.split("//").pop() ?? "").split(AUTHORITY)[0];
|
|
108
|
+
const host = (authority.split("@").pop() ?? "").split(":")[0];
|
|
109
|
+
const box = (mailbox.split("@")[1] ?? "").toLowerCase();
|
|
110
|
+
const site = (host || box).toLowerCase().replace(/^www\./, "");
|
|
111
|
+
const top = site.split(".").pop() ?? "";
|
|
112
|
+
if (top.length > 2 && box.split(".")[0] === top && site !== box)
|
|
113
|
+
return box;
|
|
114
|
+
return site;
|
|
115
|
+
});
|
|
116
|
+
/** The bare host the website names, else the one the abuse mailbox does. */
|
|
117
|
+
export const domain = (website, mailbox) => domained(`${website}\n${mailbox}`);
|
|
118
|
+
/** A public proxy on an access network is someone's home line, resold. */
|
|
119
|
+
export const service = (named, userType) => named === "public_proxy" && ACCESS.has(userType)
|
|
120
|
+
? ["residential_proxy", "inferred"]
|
|
121
|
+
: [named, ""];
|
|
122
|
+
/** The city type already says which capital it is, so nothing stores it twice. */
|
|
123
|
+
export const capital = (cityType) => CAPITALS[cityType] ?? "";
|
|
124
|
+
//# sourceMappingURL=derive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derive.js","sourceRoot":"","sources":["../src/derive.ts"],"names":[],"mappings":"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"}
|
package/dist/extra.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** What a country code and a timezone name imply, read with no data to install. */
|
|
2
|
+
import type { Country, Time } from "./models.ts";
|
|
3
|
+
/** Regional indicator symbols, which spell any ISO country code as a flag. */
|
|
4
|
+
export declare const flag: (code: string) => string;
|
|
5
|
+
/** Everything a country code implies, held for every code ever asked about. */
|
|
6
|
+
export declare const country: (code: string) => Country | null;
|
|
7
|
+
/** One zone read at one moment, defaulting to now. */
|
|
8
|
+
export declare const clock: (name: string, moment?: Date | null) => Time | null;
|
|
9
|
+
//# sourceMappingURL=extra.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extra.d.ts","sourceRoot":"","sources":["../src/extra.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAGnF,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAgCjD,8EAA8E;AAC9E,eAAO,MAAM,IAAI,SAAU,MAAM,KAAG,MAKnC,CAAC;AAIF,+EAA+E;AAC/E,eAAO,MAAM,OAAO,SAAU,MAAM,KAAG,OAAO,GAAG,IAkBhD,CAAC;AAmLF,sDAAsD;AACtD,eAAO,MAAM,KAAK,SAAU,MAAM,WAAW,IAAI,GAAG,IAAI,KAAG,IAAI,GAAG,IAWjE,CAAC"}
|
package/dist/extra.js
ADDED
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/** What a country code and a timezone name imply, read with no data to install. */
|
|
2
|
+
import { COUNTRIES } from "./countries.js";
|
|
3
|
+
import { ZONES } from "./zones.js";
|
|
4
|
+
const EU_MEMBERS = new Set(("AT BE BG HR CY CZ DK EE FI FR DE GR HU IE IT LV LT LU MT NL PL PT RO SK SI" +
|
|
5
|
+
" ES SE").split(" "));
|
|
6
|
+
const LEFT_DRIVING = new Set(("AG AI AU BB BD BM BN BS BT BW CC CK CX CY DM FJ FK GB GD GG GY HK ID IE IM" +
|
|
7
|
+
" IN JE JM JP KE KI KN KY LC LK LS MO MS MT MU MV MW MY MZ NA NF NP NR NU" +
|
|
8
|
+
" NZ PG PK PN SB SC SG SH SR SZ TC TH TL TO TT TV TZ UG VC VG WS ZA ZM ZW").split(" "));
|
|
9
|
+
const DAY = 86400000;
|
|
10
|
+
const WEEK = 7 * DAY;
|
|
11
|
+
const WINDOW = 400 * DAY;
|
|
12
|
+
const MINUTE = 60000;
|
|
13
|
+
const NAMED = new Map(COUNTRIES.map((row) => {
|
|
14
|
+
const [name, official = "", common = ""] = row.slice(8).split("|");
|
|
15
|
+
return [row.slice(0, 2), [name, official, common, row.slice(2, 5)]];
|
|
16
|
+
}));
|
|
17
|
+
const NUMBERS = new Map(COUNTRIES.map((row) => [row.slice(0, 2), row.slice(5, 8)]));
|
|
18
|
+
const text = (value) => value || null;
|
|
19
|
+
/** Regional indicator symbols, which spell any ISO country code as a flag. */
|
|
20
|
+
export const flag = (code) => {
|
|
21
|
+
if (code.length !== 2 || !/^[a-zA-Z]{2}$/.test(code))
|
|
22
|
+
return "";
|
|
23
|
+
return [...code.toUpperCase()]
|
|
24
|
+
.map((letter) => String.fromCodePoint(0x1f1e6 + letter.charCodeAt(0) - 65))
|
|
25
|
+
.join("");
|
|
26
|
+
};
|
|
27
|
+
const countries = new Map();
|
|
28
|
+
/** Everything a country code implies, held for every code ever asked about. */
|
|
29
|
+
export const country = (code) => {
|
|
30
|
+
if (!code)
|
|
31
|
+
return null;
|
|
32
|
+
const found = countries.get(code);
|
|
33
|
+
if (found !== undefined)
|
|
34
|
+
return found;
|
|
35
|
+
const named = NAMED.get(code);
|
|
36
|
+
const built = {
|
|
37
|
+
code,
|
|
38
|
+
name: named ? named[0] : null,
|
|
39
|
+
official: named ? text(named[1]) : null,
|
|
40
|
+
common: named ? text(named[2]) : null,
|
|
41
|
+
iso3: named ? named[3] : null,
|
|
42
|
+
numeric: NUMBERS.get(code) ?? null,
|
|
43
|
+
flag: flag(code) || null,
|
|
44
|
+
european_union: EU_MEMBERS.has(code),
|
|
45
|
+
driving_side: LEFT_DRIVING.has(code) ? "left" : "right",
|
|
46
|
+
};
|
|
47
|
+
countries.set(code, built);
|
|
48
|
+
return built;
|
|
49
|
+
};
|
|
50
|
+
const ABBREVIATIONS = new Map(ZONES.map((row) => {
|
|
51
|
+
const [name, standard, summer = standard] = row.split("|");
|
|
52
|
+
return [name, [standard, summer]];
|
|
53
|
+
}));
|
|
54
|
+
const FORMATS = new Map();
|
|
55
|
+
const format = (name) => {
|
|
56
|
+
const found = FORMATS.get(name);
|
|
57
|
+
if (found !== undefined)
|
|
58
|
+
return found;
|
|
59
|
+
let built = null;
|
|
60
|
+
try {
|
|
61
|
+
built = new Intl.DateTimeFormat("en-US", {
|
|
62
|
+
timeZone: name,
|
|
63
|
+
hour12: false,
|
|
64
|
+
era: "short",
|
|
65
|
+
year: "numeric",
|
|
66
|
+
month: "2-digit",
|
|
67
|
+
day: "2-digit",
|
|
68
|
+
hour: "2-digit",
|
|
69
|
+
minute: "2-digit",
|
|
70
|
+
second: "2-digit",
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
built = null;
|
|
75
|
+
}
|
|
76
|
+
FORMATS.set(name, built);
|
|
77
|
+
return built;
|
|
78
|
+
};
|
|
79
|
+
/** A zone read at an instant: the wall clock it shows, as if that clock were UTC. */
|
|
80
|
+
const wallAt = (held, instant) => {
|
|
81
|
+
const parts = {};
|
|
82
|
+
for (const part of held.formatToParts(instant))
|
|
83
|
+
parts[part.type] = part.value;
|
|
84
|
+
const year = Number(parts.year) * (parts.era === "BC" ? -1 : 1);
|
|
85
|
+
const hour = parts.hour === "24" ? 0 : Number(parts.hour);
|
|
86
|
+
return Date.UTC(year, Number(parts.month) - 1, Number(parts.day), hour, Number(parts.minute), Number(parts.second));
|
|
87
|
+
};
|
|
88
|
+
const offsetAt = (held, instant) => Math.round((wallAt(held, instant) - instant) / MINUTE);
|
|
89
|
+
/** The offset a wall clock reading falls under, ambiguous readings taking the first. */
|
|
90
|
+
const offsetOf = (held, wall) => {
|
|
91
|
+
const before = offsetAt(held, wall - DAY);
|
|
92
|
+
const after = offsetAt(held, wall + DAY);
|
|
93
|
+
if (before === after)
|
|
94
|
+
return before;
|
|
95
|
+
const settled = [before, after].filter((offset) => offsetAt(held, wall - offset * MINUTE) === offset);
|
|
96
|
+
return settled.length ? Math.max(...settled) : Math.min(before, after);
|
|
97
|
+
};
|
|
98
|
+
const utcOffset = (minutes) => {
|
|
99
|
+
const held = Math.abs(minutes);
|
|
100
|
+
const hours = String(Math.floor(held / 60)).padStart(2, "0");
|
|
101
|
+
return `${minutes < 0 ? "-" : "+"}${hours}:${String(held % 60).padStart(2, "0")}`;
|
|
102
|
+
};
|
|
103
|
+
const stamp = (held, wall) => {
|
|
104
|
+
const clocked = new Date(wall).toISOString().slice(0, 19);
|
|
105
|
+
return clocked + utcOffset(offsetOf(held, wall));
|
|
106
|
+
};
|
|
107
|
+
/** The change between two probes, to the minute the zone records it on. */
|
|
108
|
+
const change = (held, low, high, before) => {
|
|
109
|
+
while (high - low > 1000) {
|
|
110
|
+
const middle = low + Math.floor((high - low) / 2);
|
|
111
|
+
if (offsetOf(held, middle) === before)
|
|
112
|
+
low = middle;
|
|
113
|
+
else
|
|
114
|
+
high = middle;
|
|
115
|
+
}
|
|
116
|
+
return Math.floor((high + 30000) / MINUTE) * MINUTE;
|
|
117
|
+
};
|
|
118
|
+
/** Every offset change within 400 days either side of a day. */
|
|
119
|
+
const changes = (held, noon) => {
|
|
120
|
+
const end = noon + WINDOW;
|
|
121
|
+
const found = [];
|
|
122
|
+
let probe = noon - WINDOW;
|
|
123
|
+
let previous = offsetOf(held, probe);
|
|
124
|
+
while (probe < end) {
|
|
125
|
+
const following = probe + WEEK;
|
|
126
|
+
const current = offsetOf(held, following);
|
|
127
|
+
if (current !== previous)
|
|
128
|
+
found.push(change(held, probe, following, previous));
|
|
129
|
+
previous = current;
|
|
130
|
+
probe = following;
|
|
131
|
+
}
|
|
132
|
+
return found;
|
|
133
|
+
};
|
|
134
|
+
const DAYLIGHTS = new Map();
|
|
135
|
+
/** The zone's standard offset, then the daylight period around that day. */
|
|
136
|
+
const daylight = (name, held, wall) => {
|
|
137
|
+
const noon = Math.floor(wall / DAY) * DAY + DAY / 2;
|
|
138
|
+
const key = `${name}@${noon}`;
|
|
139
|
+
const found = DAYLIGHTS.get(key);
|
|
140
|
+
if (found !== undefined)
|
|
141
|
+
return found;
|
|
142
|
+
if (DAYLIGHTS.size > 2048)
|
|
143
|
+
DAYLIGHTS.clear();
|
|
144
|
+
const moments = changes(held, noon);
|
|
145
|
+
const offsets = [
|
|
146
|
+
offsetOf(held, noon - WINDOW),
|
|
147
|
+
...moments.map((moment) => offsetOf(held, moment)),
|
|
148
|
+
];
|
|
149
|
+
const standard = Math.min(...offsets);
|
|
150
|
+
const summer = Math.max(...offsets);
|
|
151
|
+
let built = [standard, null, null];
|
|
152
|
+
for (let index = 0; standard !== summer && index + 1 < moments.length; index += 1) {
|
|
153
|
+
const [start, end] = [moments[index], moments[index + 1]];
|
|
154
|
+
if (offsetOf(held, start) === summer && end >= noon) {
|
|
155
|
+
built = [standard, start, end];
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
DAYLIGHTS.set(key, built);
|
|
160
|
+
return built;
|
|
161
|
+
};
|
|
162
|
+
/** What the zone calls itself: its listed abbreviation, else its bare offset. */
|
|
163
|
+
const abbreviation = (name, offset, daylight) => {
|
|
164
|
+
const named = ABBREVIATIONS.get(name);
|
|
165
|
+
if (named)
|
|
166
|
+
return daylight ? named[1] : named[0];
|
|
167
|
+
const held = Math.abs(offset);
|
|
168
|
+
const hours = String(Math.floor(held / 60)).padStart(2, "0");
|
|
169
|
+
const minutes = held % 60;
|
|
170
|
+
return (`${offset < 0 ? "-" : "+"}${hours}` +
|
|
171
|
+
(minutes ? String(minutes).padStart(2, "0") : ""));
|
|
172
|
+
};
|
|
173
|
+
const read = (name, instant) => {
|
|
174
|
+
const held = format(name);
|
|
175
|
+
if (held === null) {
|
|
176
|
+
return {
|
|
177
|
+
timezone: name,
|
|
178
|
+
abbreviation: null,
|
|
179
|
+
local: null,
|
|
180
|
+
utc_offset: null,
|
|
181
|
+
is_dst: false,
|
|
182
|
+
dst_start: null,
|
|
183
|
+
dst_end: null,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
const wall = wallAt(held, instant);
|
|
187
|
+
const offset = Math.round((wall - instant) / MINUTE);
|
|
188
|
+
const [standard, start, end] = daylight(name, held, wall);
|
|
189
|
+
return {
|
|
190
|
+
timezone: name,
|
|
191
|
+
abbreviation: abbreviation(name, offset, offset !== standard),
|
|
192
|
+
local: new Date(wall).toISOString().slice(0, 19) + utcOffset(offset),
|
|
193
|
+
utc_offset: utcOffset(offset),
|
|
194
|
+
is_dst: offset !== standard,
|
|
195
|
+
dst_start: start === null ? null : stamp(held, start),
|
|
196
|
+
dst_end: end === null ? null : stamp(held, end),
|
|
197
|
+
};
|
|
198
|
+
};
|
|
199
|
+
const SECONDS = new Map();
|
|
200
|
+
/** One zone read at one moment, defaulting to now. */
|
|
201
|
+
export const clock = (name, moment) => {
|
|
202
|
+
if (!name)
|
|
203
|
+
return null;
|
|
204
|
+
if (moment)
|
|
205
|
+
return read(name, moment.getTime());
|
|
206
|
+
const second = Math.floor(Date.now() / 1000);
|
|
207
|
+
const key = `${name}@${second}`;
|
|
208
|
+
const found = SECONDS.get(key);
|
|
209
|
+
if (found !== undefined)
|
|
210
|
+
return found;
|
|
211
|
+
if (SECONDS.size > 1024)
|
|
212
|
+
SECONDS.clear();
|
|
213
|
+
const built = read(name, second * 1000);
|
|
214
|
+
SECONDS.set(key, built);
|
|
215
|
+
return built;
|
|
216
|
+
};
|
|
217
|
+
//# sourceMappingURL=extra.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extra.js","sourceRoot":"","sources":["../src/extra.ts"],"names":[],"mappings":"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"}
|