@moxon/api 6.0.0-pre

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.
Files changed (246) hide show
  1. package/.prettierignore +5 -0
  2. package/LICENSE +28 -0
  3. package/README.md +277 -0
  4. package/dist/app.d.ts +2 -0
  5. package/dist/app.js +55 -0
  6. package/dist/app.js.map +1 -0
  7. package/dist/config/env.d.ts +22 -0
  8. package/dist/config/env.js +36 -0
  9. package/dist/config/env.js.map +1 -0
  10. package/dist/config/plans.d.ts +26 -0
  11. package/dist/config/plans.js +44 -0
  12. package/dist/config/plans.js.map +1 -0
  13. package/dist/config/versions.d.ts +18 -0
  14. package/dist/config/versions.js +248 -0
  15. package/dist/config/versions.js.map +1 -0
  16. package/dist/constants.d.ts +48 -0
  17. package/dist/constants.js +75 -0
  18. package/dist/constants.js.map +1 -0
  19. package/dist/middleware/cors.d.ts +2 -0
  20. package/dist/middleware/cors.js +31 -0
  21. package/dist/middleware/cors.js.map +1 -0
  22. package/dist/middleware/error.d.ts +4 -0
  23. package/dist/middleware/error.js +8 -0
  24. package/dist/middleware/error.js.map +1 -0
  25. package/dist/middleware/json.d.ts +2 -0
  26. package/dist/middleware/json.js +8 -0
  27. package/dist/middleware/json.js.map +1 -0
  28. package/dist/middleware/logger.d.ts +26 -0
  29. package/dist/middleware/logger.js +65 -0
  30. package/dist/middleware/logger.js.map +1 -0
  31. package/dist/middleware/ratelimit.d.ts +2 -0
  32. package/dist/middleware/ratelimit.js +83 -0
  33. package/dist/middleware/ratelimit.js.map +1 -0
  34. package/dist/middleware/version.d.ts +3 -0
  35. package/dist/middleware/version.js +30 -0
  36. package/dist/middleware/version.js.map +1 -0
  37. package/dist/modules/v4/address.d.ts +20 -0
  38. package/dist/modules/v4/address.js +381 -0
  39. package/dist/modules/v4/address.js.map +1 -0
  40. package/dist/modules/v4/agent.d.ts +30 -0
  41. package/dist/modules/v4/agent.js +92 -0
  42. package/dist/modules/v4/agent.js.map +1 -0
  43. package/dist/modules/v4/algorithms.d.ts +90 -0
  44. package/dist/modules/v4/algorithms.js +279 -0
  45. package/dist/modules/v4/algorithms.js.map +1 -0
  46. package/dist/modules/v4/avatar.d.ts +23 -0
  47. package/dist/modules/v4/avatar.js +136 -0
  48. package/dist/modules/v4/avatar.js.map +1 -0
  49. package/dist/modules/v4/barcode.d.ts +27 -0
  50. package/dist/modules/v4/barcode.js +440 -0
  51. package/dist/modules/v4/barcode.js.map +1 -0
  52. package/dist/modules/v4/captcha.d.ts +22 -0
  53. package/dist/modules/v4/captcha.js +79 -0
  54. package/dist/modules/v4/captcha.js.map +1 -0
  55. package/dist/modules/v4/chat.d.ts +21 -0
  56. package/dist/modules/v4/chat.js +100 -0
  57. package/dist/modules/v4/chat.js.map +1 -0
  58. package/dist/modules/v4/color.d.ts +16 -0
  59. package/dist/modules/v4/color.js +59 -0
  60. package/dist/modules/v4/color.js.map +1 -0
  61. package/dist/modules/v4/convert.d.ts +15 -0
  62. package/dist/modules/v4/convert.js +116 -0
  63. package/dist/modules/v4/convert.js.map +1 -0
  64. package/dist/modules/v4/credit.d.ts +22 -0
  65. package/dist/modules/v4/credit.js +104 -0
  66. package/dist/modules/v4/credit.js.map +1 -0
  67. package/dist/modules/v4/cron.d.ts +17 -0
  68. package/dist/modules/v4/cron.js +202 -0
  69. package/dist/modules/v4/cron.js.map +1 -0
  70. package/dist/modules/v4/dice.d.ts +16 -0
  71. package/dist/modules/v4/dice.js +37 -0
  72. package/dist/modules/v4/dice.js.map +1 -0
  73. package/dist/modules/v4/domain.d.ts +6 -0
  74. package/dist/modules/v4/domain.js +83 -0
  75. package/dist/modules/v4/domain.js.map +1 -0
  76. package/dist/modules/v4/encode.d.ts +81 -0
  77. package/dist/modules/v4/encode.js +236 -0
  78. package/dist/modules/v4/encode.js.map +1 -0
  79. package/dist/modules/v4/geo.d.ts +30 -0
  80. package/dist/modules/v4/geo.js +51 -0
  81. package/dist/modules/v4/geo.js.map +1 -0
  82. package/dist/modules/v4/hash.d.ts +15 -0
  83. package/dist/modules/v4/hash.js +25 -0
  84. package/dist/modules/v4/hash.js.map +1 -0
  85. package/dist/modules/v4/hyperplanning.d.ts +19 -0
  86. package/dist/modules/v4/hyperplanning.js +80 -0
  87. package/dist/modules/v4/hyperplanning.js.map +1 -0
  88. package/dist/modules/v4/ip.d.ts +19 -0
  89. package/dist/modules/v4/ip.js +132 -0
  90. package/dist/modules/v4/ip.js.map +1 -0
  91. package/dist/modules/v4/levenshtein.d.ts +13 -0
  92. package/dist/modules/v4/levenshtein.js +37 -0
  93. package/dist/modules/v4/levenshtein.js.map +1 -0
  94. package/dist/modules/v4/palette.d.ts +19 -0
  95. package/dist/modules/v4/palette.js +56 -0
  96. package/dist/modules/v4/palette.js.map +1 -0
  97. package/dist/modules/v4/password.d.ts +25 -0
  98. package/dist/modules/v4/password.js +343 -0
  99. package/dist/modules/v4/password.js.map +1 -0
  100. package/dist/modules/v4/personal.d.ts +6 -0
  101. package/dist/modules/v4/personal.js +121 -0
  102. package/dist/modules/v4/personal.js.map +1 -0
  103. package/dist/modules/v4/placeholder.d.ts +30 -0
  104. package/dist/modules/v4/placeholder.js +160 -0
  105. package/dist/modules/v4/placeholder.js.map +1 -0
  106. package/dist/modules/v4/qrcode.d.ts +25 -0
  107. package/dist/modules/v4/qrcode.js +92 -0
  108. package/dist/modules/v4/qrcode.js.map +1 -0
  109. package/dist/modules/v4/regex.d.ts +23 -0
  110. package/dist/modules/v4/regex.js +48 -0
  111. package/dist/modules/v4/regex.js.map +1 -0
  112. package/dist/modules/v4/statistics.d.ts +20 -0
  113. package/dist/modules/v4/statistics.js +48 -0
  114. package/dist/modules/v4/statistics.js.map +1 -0
  115. package/dist/modules/v4/text.d.ts +43 -0
  116. package/dist/modules/v4/text.js +323 -0
  117. package/dist/modules/v4/text.js.map +1 -0
  118. package/dist/modules/v4/tic_tac_toe.d.ts +19 -0
  119. package/dist/modules/v4/tic_tac_toe.js +214 -0
  120. package/dist/modules/v4/tic_tac_toe.js.map +1 -0
  121. package/dist/modules/v4/time.d.ts +15 -0
  122. package/dist/modules/v4/time.js +124 -0
  123. package/dist/modules/v4/time.js.map +1 -0
  124. package/dist/modules/v4/token.d.ts +9 -0
  125. package/dist/modules/v4/token.js +45 -0
  126. package/dist/modules/v4/token.js.map +1 -0
  127. package/dist/modules/v4/username.d.ts +6 -0
  128. package/dist/modules/v4/username.js +92 -0
  129. package/dist/modules/v4/username.js.map +1 -0
  130. package/dist/modules/v4/validate.d.ts +34 -0
  131. package/dist/modules/v4/validate.js +75 -0
  132. package/dist/modules/v4/validate.js.map +1 -0
  133. package/dist/modules/v4.d.ts +32 -0
  134. package/dist/modules/v4.js +33 -0
  135. package/dist/modules/v4.js.map +1 -0
  136. package/dist/modules/v5/address.d.ts +5 -0
  137. package/dist/modules/v5/address.js +20 -0
  138. package/dist/modules/v5/address.js.map +1 -0
  139. package/dist/modules/v5/algorithms.d.ts +9 -0
  140. package/dist/modules/v5/algorithms.js +39 -0
  141. package/dist/modules/v5/algorithms.js.map +1 -0
  142. package/dist/modules/v5/asymmetric.d.ts +26 -0
  143. package/dist/modules/v5/asymmetric.js +74 -0
  144. package/dist/modules/v5/asymmetric.js.map +1 -0
  145. package/dist/modules/v5/barcode.d.ts +27 -0
  146. package/dist/modules/v5/barcode.js +424 -0
  147. package/dist/modules/v5/barcode.js.map +1 -0
  148. package/dist/modules/v5/base.d.ts +16 -0
  149. package/dist/modules/v5/base.js +41 -0
  150. package/dist/modules/v5/base.js.map +1 -0
  151. package/dist/modules/v5/captcha.d.ts +27 -0
  152. package/dist/modules/v5/captcha.js +136 -0
  153. package/dist/modules/v5/captcha.js.map +1 -0
  154. package/dist/modules/v5/case.d.ts +10 -0
  155. package/dist/modules/v5/case.js +57 -0
  156. package/dist/modules/v5/case.js.map +1 -0
  157. package/dist/modules/v5/chart.d.ts +53 -0
  158. package/dist/modules/v5/chart.js +385 -0
  159. package/dist/modules/v5/chart.js.map +1 -0
  160. package/dist/modules/v5/chat.d.ts +21 -0
  161. package/dist/modules/v5/chat.js +107 -0
  162. package/dist/modules/v5/chat.js.map +1 -0
  163. package/dist/modules/v5/csv.d.ts +29 -0
  164. package/dist/modules/v5/csv.js +143 -0
  165. package/dist/modules/v5/csv.js.map +1 -0
  166. package/dist/modules/v5/diff.d.ts +20 -0
  167. package/dist/modules/v5/diff.js +81 -0
  168. package/dist/modules/v5/diff.js.map +1 -0
  169. package/dist/modules/v5/evaluate.d.ts +14 -0
  170. package/dist/modules/v5/evaluate.js +284 -0
  171. package/dist/modules/v5/evaluate.js.map +1 -0
  172. package/dist/modules/v5/jwt.d.ts +11 -0
  173. package/dist/modules/v5/jwt.js +42 -0
  174. package/dist/modules/v5/jwt.js.map +1 -0
  175. package/dist/modules/v5/matrix.d.ts +77 -0
  176. package/dist/modules/v5/matrix.js +239 -0
  177. package/dist/modules/v5/matrix.js.map +1 -0
  178. package/dist/modules/v5/otp.d.ts +30 -0
  179. package/dist/modules/v5/otp.js +117 -0
  180. package/dist/modules/v5/otp.js.map +1 -0
  181. package/dist/modules/v5/pow.d.ts +29 -0
  182. package/dist/modules/v5/pow.js +49 -0
  183. package/dist/modules/v5/pow.js.map +1 -0
  184. package/dist/modules/v5/read.d.ts +20 -0
  185. package/dist/modules/v5/read.js +59 -0
  186. package/dist/modules/v5/read.js.map +1 -0
  187. package/dist/modules/v5/semver.d.ts +33 -0
  188. package/dist/modules/v5/semver.js +99 -0
  189. package/dist/modules/v5/semver.js.map +1 -0
  190. package/dist/modules/v5/symmetric.d.ts +15 -0
  191. package/dist/modules/v5/symmetric.js +88 -0
  192. package/dist/modules/v5/symmetric.js.map +1 -0
  193. package/dist/modules/v5/text.d.ts +5 -0
  194. package/dist/modules/v5/text.js +12 -0
  195. package/dist/modules/v5/text.js.map +1 -0
  196. package/dist/modules/v5/tic_tac_toe.d.ts +19 -0
  197. package/dist/modules/v5/tic_tac_toe.js +226 -0
  198. package/dist/modules/v5/tic_tac_toe.js.map +1 -0
  199. package/dist/modules/v5/url.d.ts +18 -0
  200. package/dist/modules/v5/url.js +51 -0
  201. package/dist/modules/v5/url.js.map +1 -0
  202. package/dist/modules/v5/uuid.d.ts +25 -0
  203. package/dist/modules/v5/uuid.js +40 -0
  204. package/dist/modules/v5/uuid.js.map +1 -0
  205. package/dist/modules/v5.d.ts +24 -0
  206. package/dist/modules/v5.js +25 -0
  207. package/dist/modules/v5.js.map +1 -0
  208. package/dist/modules/v6.d.ts +1 -0
  209. package/dist/modules/v6.js +2 -0
  210. package/dist/modules/v6.js.map +1 -0
  211. package/dist/routes/delete.d.ts +2 -0
  212. package/dist/routes/delete.js +73 -0
  213. package/dist/routes/delete.js.map +1 -0
  214. package/dist/routes/get.d.ts +2 -0
  215. package/dist/routes/get.js +857 -0
  216. package/dist/routes/get.js.map +1 -0
  217. package/dist/routes/index.d.ts +2 -0
  218. package/dist/routes/index.js +95 -0
  219. package/dist/routes/index.js.map +1 -0
  220. package/dist/routes/patch.d.ts +2 -0
  221. package/dist/routes/patch.js +45 -0
  222. package/dist/routes/patch.js.map +1 -0
  223. package/dist/routes/post.d.ts +2 -0
  224. package/dist/routes/post.js +604 -0
  225. package/dist/routes/post.js.map +1 -0
  226. package/dist/storage/index.d.ts +5 -0
  227. package/dist/storage/index.js +14 -0
  228. package/dist/storage/index.js.map +1 -0
  229. package/dist/types/storage.d.ts +52 -0
  230. package/dist/types/storage.js +2 -0
  231. package/dist/types/storage.js.map +1 -0
  232. package/dist/utils/challenge.d.ts +40 -0
  233. package/dist/utils/challenge.js +75 -0
  234. package/dist/utils/challenge.js.map +1 -0
  235. package/dist/utils/colors.d.ts +44 -0
  236. package/dist/utils/colors.js +93 -0
  237. package/dist/utils/colors.js.map +1 -0
  238. package/dist/utils/helpers.d.ts +55 -0
  239. package/dist/utils/helpers.js +82 -0
  240. package/dist/utils/helpers.js.map +1 -0
  241. package/dist/utils/response.d.ts +9 -0
  242. package/dist/utils/response.js +24 -0
  243. package/dist/utils/response.js.map +1 -0
  244. package/package.json +90 -0
  245. package/robots.txt +74 -0
  246. package/src/favicon.ico +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ratelimit.js","sourceRoot":"","sources":["../../src/middleware/ratelimit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { NextFunction, Request, Response } from 'express';
2
+ export declare function versionCheckMiddleware(req: Request, res: Response, next: NextFunction): void;
3
+ export declare function endpointCheckMiddleware(req: Request, res: Response, next: NextFunction): void;
@@ -0,0 +1,30 @@
1
+ import { versions } from '../config/versions.js';
2
+ import { error } from '../utils/response.js';
3
+ export function versionCheckMiddleware(req, res, next) {
4
+ const version = req.params.version;
5
+ const latest = Object.keys(versions).pop();
6
+ req.version = version;
7
+ req.latest = latest;
8
+ if (!versions[version]) {
9
+ error(res, 404, `Invalid API version (${version}).`);
10
+ return;
11
+ }
12
+ req.module = versions[version].modules;
13
+ if (!req.module) {
14
+ error(res, 404, `Module not found for version ${version}.`);
15
+ return;
16
+ }
17
+ next();
18
+ }
19
+ export function endpointCheckMiddleware(req, res, next) {
20
+ const version = req.params.version;
21
+ const endpoint = req.params.endpoint;
22
+ req.version = version;
23
+ req.endpoint = endpoint;
24
+ if (!endpoint) {
25
+ error(res, 404, `Endpoint '${endpoint}' does not exist in ${req.version}.`);
26
+ return;
27
+ }
28
+ next();
29
+ }
30
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/middleware/version.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7C,MAAM,UAAU,sBAAsB,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;IAClF,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,OAAiB,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAG,CAAC;IAE5C,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACtB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;IAEpB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,wBAAwB,OAAO,IAAI,CAAC,CAAC;QACrD,OAAO;IACX,CAAC;IAED,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAE,CAAC,OAAO,CAAC;IAExC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QACd,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,gCAAgC,OAAO,GAAG,CAAC,CAAC;QAC5D,OAAO;IACX,CAAC;IAED,IAAI,EAAE,CAAC;AACX,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;IACnF,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,OAAiB,CAAC;IAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAkB,CAAC;IAE/C,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACtB,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAExB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,aAAa,QAAQ,uBAAuB,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;QAC5E,OAAO;IACX,CAAC;IACD,IAAI,EAAE,CAAC;AACX,CAAC"}
@@ -0,0 +1,20 @@
1
+ export interface Address {
2
+ street: string;
3
+ city: string;
4
+ zip: string;
5
+ state: string;
6
+ country: string;
7
+ countryCode: string;
8
+ }
9
+ export interface AddressResult {
10
+ addresses: Address[];
11
+ }
12
+ /**
13
+ * Generates one or more fictional postal addresses for a given country.
14
+ *
15
+ * @param countryCode - Country code: "fr", "us", "uk", "de", or "es" (random if omitted)
16
+ * @param count - Number of addresses to generate (1–10)
17
+ * @returns Array of addresses with street, city, zip, state, country, and countryCode
18
+ * @throws Error if the country code is invalid or count is out of range
19
+ */
20
+ export default function address(countryCode?: string, count?: number): AddressResult;
@@ -0,0 +1,381 @@
1
+ import { MAX_ADDRESS_COUNT } from '../../constants.js';
2
+ import { random, randomNumber } from '../../utils/helpers.js';
3
+ function randomChar(chars) {
4
+ return chars[Math.floor(Math.random() * chars.length)];
5
+ }
6
+ const ALPHA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
7
+ const countries = {
8
+ fr: {
9
+ name: 'France',
10
+ streetTypes: ['Rue', 'Avenue', 'Boulevard', 'Allée', 'Impasse', 'Place', 'Chemin', 'Route', 'Voie', 'Passage'],
11
+ streetNames: [
12
+ 'de la Paix',
13
+ 'Victor Hugo',
14
+ 'Jean Jaurès',
15
+ 'de la République',
16
+ 'du Général de Gaulle',
17
+ 'de la Liberté',
18
+ 'des Fleurs',
19
+ 'du Moulin',
20
+ 'de la Forêt',
21
+ 'des Lilas',
22
+ 'du Château',
23
+ 'de la Mairie',
24
+ 'de la Gare',
25
+ 'du Commerce',
26
+ 'de la Fontaine',
27
+ 'de la Croix',
28
+ 'des Vignes',
29
+ 'du Marché',
30
+ "de l'Église",
31
+ 'des Acacias',
32
+ ],
33
+ cities: [
34
+ 'Paris',
35
+ 'Lyon',
36
+ 'Marseille',
37
+ 'Toulouse',
38
+ 'Nice',
39
+ 'Nantes',
40
+ 'Strasbourg',
41
+ 'Montpellier',
42
+ 'Bordeaux',
43
+ 'Lille',
44
+ 'Rennes',
45
+ 'Reims',
46
+ 'Le Havre',
47
+ 'Saint-Étienne',
48
+ 'Toulon',
49
+ 'Grenoble',
50
+ 'Dijon',
51
+ 'Angers',
52
+ 'Nîmes',
53
+ 'Villeurbanne',
54
+ ],
55
+ regions: [
56
+ 'Île-de-France',
57
+ 'Auvergne-Rhône-Alpes',
58
+ "Provence-Alpes-Côte d'Azur",
59
+ 'Occitanie',
60
+ 'Hauts-de-France',
61
+ 'Nouvelle-Aquitaine',
62
+ 'Grand Est',
63
+ 'Pays de la Loire',
64
+ 'Bretagne',
65
+ 'Normandie',
66
+ 'Bourgogne-Franche-Comté',
67
+ 'Centre-Val de Loire',
68
+ ],
69
+ zipFormat: () => String(randomNumber(10000, 99999)).padStart(5, '0'),
70
+ },
71
+ us: {
72
+ name: 'United States',
73
+ streetTypes: ['Street', 'Avenue', 'Boulevard', 'Drive', 'Road', 'Lane', 'Court', 'Way', 'Place', 'Circle'],
74
+ streetNames: [
75
+ 'Main',
76
+ 'Oak',
77
+ 'Maple',
78
+ 'Cedar',
79
+ 'Pine',
80
+ 'Elm',
81
+ 'Washington',
82
+ 'Lincoln',
83
+ 'Park',
84
+ 'Lake',
85
+ 'Hill',
86
+ 'River',
87
+ 'Sunset',
88
+ 'Forest',
89
+ 'Meadow',
90
+ 'Valley',
91
+ 'Highland',
92
+ 'Willow',
93
+ 'Spring',
94
+ 'Church',
95
+ ],
96
+ cities: [
97
+ 'New York',
98
+ 'Los Angeles',
99
+ 'Chicago',
100
+ 'Houston',
101
+ 'Phoenix',
102
+ 'Philadelphia',
103
+ 'San Antonio',
104
+ 'San Diego',
105
+ 'Dallas',
106
+ 'San Jose',
107
+ 'Austin',
108
+ 'Jacksonville',
109
+ 'Fort Worth',
110
+ 'Columbus',
111
+ 'Charlotte',
112
+ 'Indianapolis',
113
+ 'San Francisco',
114
+ 'Seattle',
115
+ 'Denver',
116
+ 'Nashville',
117
+ ],
118
+ regions: [
119
+ 'California',
120
+ 'Texas',
121
+ 'Florida',
122
+ 'New York',
123
+ 'Pennsylvania',
124
+ 'Illinois',
125
+ 'Ohio',
126
+ 'Georgia',
127
+ 'North Carolina',
128
+ 'Michigan',
129
+ 'New Jersey',
130
+ 'Virginia',
131
+ 'Washington',
132
+ 'Arizona',
133
+ 'Massachusetts',
134
+ 'Tennessee',
135
+ 'Indiana',
136
+ 'Colorado',
137
+ 'Missouri',
138
+ 'Maryland',
139
+ ],
140
+ zipFormat: () => String(randomNumber(10000, 99999)).padStart(5, '0'),
141
+ },
142
+ uk: {
143
+ name: 'United Kingdom',
144
+ streetTypes: ['Street', 'Road', 'Avenue', 'Lane', 'Close', 'Drive', 'Way', 'Court', 'Grove', 'Place'],
145
+ streetNames: [
146
+ 'High',
147
+ 'Church',
148
+ 'Station',
149
+ 'Park',
150
+ 'Manor',
151
+ 'Mill',
152
+ 'Victoria',
153
+ 'King',
154
+ 'Queen',
155
+ 'Albert',
156
+ 'George',
157
+ 'York',
158
+ 'Oxford',
159
+ 'Cambridge',
160
+ 'Windsor',
161
+ 'Richmond',
162
+ 'Elm',
163
+ 'Oak',
164
+ 'Ash',
165
+ 'Rose',
166
+ ],
167
+ cities: [
168
+ 'London',
169
+ 'Birmingham',
170
+ 'Manchester',
171
+ 'Glasgow',
172
+ 'Liverpool',
173
+ 'Bristol',
174
+ 'Sheffield',
175
+ 'Leeds',
176
+ 'Edinburgh',
177
+ 'Leicester',
178
+ 'Coventry',
179
+ 'Bradford',
180
+ 'Cardiff',
181
+ 'Belfast',
182
+ 'Nottingham',
183
+ 'Kingston upon Hull',
184
+ 'Newcastle',
185
+ 'Stoke-on-Trent',
186
+ 'Southampton',
187
+ 'Derby',
188
+ ],
189
+ regions: [
190
+ 'England',
191
+ 'Scotland',
192
+ 'Wales',
193
+ 'Northern Ireland',
194
+ 'Greater London',
195
+ 'South East',
196
+ 'North West',
197
+ 'East of England',
198
+ 'West Midlands',
199
+ 'South West',
200
+ 'Yorkshire',
201
+ 'East Midlands',
202
+ 'North East',
203
+ ],
204
+ zipFormat: () => `${randomChar(ALPHA)}${randomChar(ALPHA)}${randomNumber(1, 9)} ${randomNumber(1, 9)}${randomChar(ALPHA)}${randomChar(ALPHA)}`,
205
+ },
206
+ de: {
207
+ name: 'Germany',
208
+ streetTypes: ['Straße', 'Allee', 'Weg', 'Platz', 'Gasse', 'Ring', 'Damm', 'Ufer', 'Stieg', 'Pfad'],
209
+ streetNames: [
210
+ 'Haupt',
211
+ 'Bahnhof',
212
+ 'Schul',
213
+ 'Kirch',
214
+ 'Garten',
215
+ 'Berg',
216
+ 'Wald',
217
+ 'Wiesen',
218
+ 'Tal',
219
+ 'See',
220
+ 'Bismarck',
221
+ 'Goethe',
222
+ 'Schiller',
223
+ 'Kant',
224
+ 'Hegel',
225
+ 'Mozart',
226
+ 'Beethoven',
227
+ 'Bach',
228
+ 'Brahms',
229
+ 'Handel',
230
+ ],
231
+ cities: [
232
+ 'Berlin',
233
+ 'Hamburg',
234
+ 'Munich',
235
+ 'Cologne',
236
+ 'Frankfurt',
237
+ 'Stuttgart',
238
+ 'Düsseldorf',
239
+ 'Leipzig',
240
+ 'Dortmund',
241
+ 'Essen',
242
+ 'Bremen',
243
+ 'Dresden',
244
+ 'Hanover',
245
+ 'Nuremberg',
246
+ 'Duisburg',
247
+ 'Bochum',
248
+ 'Wuppertal',
249
+ 'Bielefeld',
250
+ 'Bonn',
251
+ 'Münster',
252
+ ],
253
+ regions: [
254
+ 'Bayern',
255
+ 'Nordrhein-Westfalen',
256
+ 'Baden-Württemberg',
257
+ 'Niedersachsen',
258
+ 'Hessen',
259
+ 'Sachsen',
260
+ 'Rheinland-Pfalz',
261
+ 'Berlin',
262
+ 'Schleswig-Holstein',
263
+ 'Brandenburg',
264
+ 'Sachsen-Anhalt',
265
+ 'Thüringen',
266
+ 'Hamburg',
267
+ 'Mecklenburg-Vorpommern',
268
+ 'Bremen',
269
+ 'Saarland',
270
+ ],
271
+ zipFormat: () => String(randomNumber(10000, 99999)).padStart(5, '0'),
272
+ },
273
+ es: {
274
+ name: 'Spain',
275
+ streetTypes: [
276
+ 'Calle',
277
+ 'Avenida',
278
+ 'Plaza',
279
+ 'Paseo',
280
+ 'Rambla',
281
+ 'Carretera',
282
+ 'Camino',
283
+ 'Vía',
284
+ 'Travesía',
285
+ 'Callejón',
286
+ ],
287
+ streetNames: [
288
+ 'Mayor',
289
+ 'Real',
290
+ 'Nueva',
291
+ 'del Sol',
292
+ 'de la Luna',
293
+ 'del Rey',
294
+ 'de la Reina',
295
+ 'del Mar',
296
+ 'de la Paz',
297
+ 'de la Victoria',
298
+ 'Cervantes',
299
+ 'Goya',
300
+ 'Velázquez',
301
+ 'Picasso',
302
+ 'Dalí',
303
+ 'de España',
304
+ 'de Colón',
305
+ 'de la Constitución',
306
+ 'del Prado',
307
+ 'de las Flores',
308
+ ],
309
+ cities: [
310
+ 'Madrid',
311
+ 'Barcelona',
312
+ 'Valencia',
313
+ 'Seville',
314
+ 'Zaragoza',
315
+ 'Málaga',
316
+ 'Murcia',
317
+ 'Palma',
318
+ 'Las Palmas',
319
+ 'Bilbao',
320
+ 'Alicante',
321
+ 'Córdoba',
322
+ 'Valladolid',
323
+ 'Vigo',
324
+ 'Gijón',
325
+ 'Hospitalet',
326
+ 'A Coruña',
327
+ 'Granada',
328
+ 'Vitoria',
329
+ 'Elche',
330
+ ],
331
+ regions: [
332
+ 'Andalucía',
333
+ 'Cataluña',
334
+ 'Madrid',
335
+ 'Comunidad Valenciana',
336
+ 'Galicia',
337
+ 'Castilla y León',
338
+ 'País Vasco',
339
+ 'Castilla-La Mancha',
340
+ 'Canarias',
341
+ 'Murcia',
342
+ 'Aragón',
343
+ 'Extremadura',
344
+ 'Asturias',
345
+ 'Navarra',
346
+ 'Cantabria',
347
+ 'La Rioja',
348
+ 'Baleares',
349
+ ],
350
+ zipFormat: () => String(randomNumber(10000, 52999)).padStart(5, '0'),
351
+ },
352
+ };
353
+ const COUNTRY_KEYS = Object.keys(countries);
354
+ /**
355
+ * Generates one or more fictional postal addresses for a given country.
356
+ *
357
+ * @param countryCode - Country code: "fr", "us", "uk", "de", or "es" (random if omitted)
358
+ * @param count - Number of addresses to generate (1–10)
359
+ * @returns Array of addresses with street, city, zip, state, country, and countryCode
360
+ * @throws Error if the country code is invalid or count is out of range
361
+ */
362
+ export default function address(countryCode, count = 1) {
363
+ if (count < 1 || count > MAX_ADDRESS_COUNT) {
364
+ throw new Error(`Count must be between 1 and ${MAX_ADDRESS_COUNT}`);
365
+ }
366
+ const code = (countryCode ?? random(COUNTRY_KEYS)).toLowerCase();
367
+ if (!countries[code]) {
368
+ throw new Error(`Unknown country code "${code}". Supported: ${COUNTRY_KEYS.join(', ')}`);
369
+ }
370
+ const data = countries[code];
371
+ const addresses = Array.from({ length: count }, () => ({
372
+ street: `${randomNumber(1, 200)} ${random(data.streetTypes)} ${random(data.streetNames)}`,
373
+ city: random(data.cities),
374
+ zip: data.zipFormat(),
375
+ state: random(data.regions),
376
+ country: data.name,
377
+ countryCode: code.toUpperCase(),
378
+ }));
379
+ return { addresses };
380
+ }
381
+ //# sourceMappingURL=address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/modules/v4/address.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ export interface UserAgentResult {
2
+ raw: string;
3
+ browser: {
4
+ name: string;
5
+ version: string;
6
+ major: string;
7
+ };
8
+ os: {
9
+ name: string;
10
+ version: string;
11
+ };
12
+ device: {
13
+ type: 'mobile' | 'tablet' | 'desktop';
14
+ vendor: string;
15
+ };
16
+ engine: {
17
+ name: string;
18
+ version: string;
19
+ };
20
+ bot: boolean;
21
+ }
22
+ /**
23
+ * Parses a User-Agent string and extracts browser, OS, device, engine
24
+ * and bot information.
25
+ *
26
+ * @param ua - The User-Agent string to parse
27
+ * @returns Structured breakdown of the User-Agent
28
+ * @throws Error if the User-Agent string is missing or too long
29
+ */
30
+ export default function agent(ua: string): UserAgentResult;
@@ -0,0 +1,92 @@
1
+ import { MAX_STRING_LENGTH } from '../../constants.js';
2
+ const WINDOWS_MAP = {
3
+ '10.0': 'Windows 10/11',
4
+ '6.3': 'Windows 8.1',
5
+ '6.2': 'Windows 8',
6
+ '6.1': 'Windows 7',
7
+ '6.0': 'Windows Vista',
8
+ '5.1': 'Windows XP',
9
+ };
10
+ /**
11
+ * Parses a User-Agent string and extracts browser, OS, device, engine
12
+ * and bot information.
13
+ *
14
+ * @param ua - The User-Agent string to parse
15
+ * @returns Structured breakdown of the User-Agent
16
+ * @throws Error if the User-Agent string is missing or too long
17
+ */
18
+ export default function agent(ua) {
19
+ if (!ua || typeof ua !== 'string')
20
+ throw new Error('A User-Agent string is required');
21
+ if (ua.length > MAX_STRING_LENGTH)
22
+ throw new Error(`User-Agent must be less than ${MAX_STRING_LENGTH} characters`);
23
+ const unknown = { name: 'unknown', version: 'unknown', major: 'unknown' };
24
+ const bot = /bot|crawl|spider|lighthouse|headless|prerender|slurp|bingpreview/i.test(ua);
25
+ // Browser — order matters: Edge/Opera before Chrome
26
+ let browser = { ...unknown };
27
+ const browserRules = [
28
+ [/Edg\/(\d+[\d.]*)/i, 'Edge'],
29
+ [/OPR\/(\d+[\d.]*)/i, 'Opera'],
30
+ [/SamsungBrowser\/(\d+[\d.]*)/i, 'Samsung Internet'],
31
+ [/Chrome\/(\d+[\d.]*)/i, 'Chrome'],
32
+ [/Firefox\/(\d+[\d.]*)/i, 'Firefox'],
33
+ [/Version\/([\d.]+).*Safari/i, 'Safari'],
34
+ [/MSIE ([\d.]+)/i, 'Internet Explorer'],
35
+ [/Trident\/.*rv:([\d.]+)/i, 'Internet Explorer'],
36
+ ];
37
+ for (const [re, name] of browserRules) {
38
+ const m = ua.match(re);
39
+ if (m) {
40
+ browser = { name, version: m[1], major: m[1].split('.')[0] };
41
+ break;
42
+ }
43
+ }
44
+ // OS
45
+ let os = { name: 'unknown', version: 'unknown' };
46
+ const osRules = [
47
+ [/iPhone OS ([\d_]+)/i, (m) => ({ name: 'iOS', version: m[1].replace(/_/g, '.') })],
48
+ [/iPad.*OS ([\d_]+)/i, (m) => ({ name: 'iPadOS', version: m[1].replace(/_/g, '.') })],
49
+ [/Android ([\d.]+)/i, (m) => ({ name: 'Android', version: m[1] })],
50
+ [/Windows NT ([\d.]+)/i, (m) => ({ name: WINDOWS_MAP[m[1]] ?? 'Windows', version: m[1] })],
51
+ [/Mac OS X ([\d_.]+)/i, (m) => ({ name: 'macOS', version: m[1].replace(/_/g, '.') })],
52
+ [/Linux/i, () => ({ name: 'Linux', version: 'unknown' })],
53
+ ];
54
+ for (const [re, build] of osRules) {
55
+ const m = ua.match(re);
56
+ if (m) {
57
+ os = build(m);
58
+ break;
59
+ }
60
+ }
61
+ // Device
62
+ const isMobile = /Mobi|Android|iPhone|iPod/i.test(ua) && !/iPad/i.test(ua);
63
+ const isTablet = /iPad/i.test(ua) || (/Android/i.test(ua) && !/Mobile/i.test(ua));
64
+ const deviceType = isMobile ? 'mobile' : isTablet ? 'tablet' : 'desktop';
65
+ let vendor = 'unknown';
66
+ if (/iPhone|iPad|Macintosh/i.test(ua))
67
+ vendor = 'Apple';
68
+ else if (/Samsung/i.test(ua))
69
+ vendor = 'Samsung';
70
+ else if (/Pixel|Nexus/i.test(ua))
71
+ vendor = 'Google';
72
+ else if (/Huawei/i.test(ua))
73
+ vendor = 'Huawei';
74
+ // Engine
75
+ let engine = { name: 'unknown', version: 'unknown' };
76
+ const engineRules = [
77
+ [/AppleWebKit\/([\d.]+)/i, 'WebKit'],
78
+ [/Gecko\/([\d.]+)/i, 'Gecko'],
79
+ [/Trident\/([\d.]+)/i, 'Trident'],
80
+ ];
81
+ for (const [re, name] of engineRules) {
82
+ const m = ua.match(re);
83
+ if (m) {
84
+ // Chrome and Edge use Blink, a WebKit fork
85
+ const engineName = name === 'WebKit' && /Chrome|Edg/i.test(ua) ? 'Blink' : name;
86
+ engine = { name: engineName, version: m[1] };
87
+ break;
88
+ }
89
+ }
90
+ return { raw: ua, browser, os, device: { type: deviceType, vendor }, engine, bot };
91
+ }
92
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/modules/v4/agent.ts"],"names":[],"mappings":"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"}