@voyantjs/utils 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.
Files changed (191) hide show
  1. package/LICENSE +109 -0
  2. package/README.md +42 -0
  3. package/dist/accounting-countries.d.ts +12 -0
  4. package/dist/accounting-countries.d.ts.map +1 -0
  5. package/dist/accounting-countries.js +307 -0
  6. package/dist/accounting-countries.js.map +1 -0
  7. package/dist/accounting-regions.d.ts +103 -0
  8. package/dist/accounting-regions.d.ts.map +1 -0
  9. package/dist/accounting-regions.js +38 -0
  10. package/dist/accounting-regions.js.map +1 -0
  11. package/dist/airlines.d.ts +960 -0
  12. package/dist/airlines.d.ts.map +1 -0
  13. package/dist/airlines.js +989 -0
  14. package/dist/airlines.js.map +1 -0
  15. package/dist/analytics/api-key-events.d.ts +89 -0
  16. package/dist/analytics/api-key-events.d.ts.map +1 -0
  17. package/dist/analytics/api-key-events.js +99 -0
  18. package/dist/analytics/api-key-events.js.map +1 -0
  19. package/dist/api-keys-client.d.ts +40 -0
  20. package/dist/api-keys-client.d.ts.map +1 -0
  21. package/dist/api-keys-client.js +63 -0
  22. package/dist/api-keys-client.js.map +1 -0
  23. package/dist/api-keys.d.ts +48 -0
  24. package/dist/api-keys.d.ts.map +1 -0
  25. package/dist/api-keys.js +108 -0
  26. package/dist/api-keys.js.map +1 -0
  27. package/dist/cache.d.ts +123 -0
  28. package/dist/cache.d.ts.map +1 -0
  29. package/dist/cache.js +182 -0
  30. package/dist/cache.js.map +1 -0
  31. package/dist/checkout-signature.d.ts +15 -0
  32. package/dist/checkout-signature.d.ts.map +1 -0
  33. package/dist/checkout-signature.js +64 -0
  34. package/dist/checkout-signature.js.map +1 -0
  35. package/dist/conditions.d.ts +36 -0
  36. package/dist/conditions.d.ts.map +1 -0
  37. package/dist/conditions.js +396 -0
  38. package/dist/conditions.js.map +1 -0
  39. package/dist/countries.d.ts +5 -0
  40. package/dist/countries.d.ts.map +1 -0
  41. package/dist/countries.js +251 -0
  42. package/dist/countries.js.map +1 -0
  43. package/dist/currencies.d.ts +1011 -0
  44. package/dist/currencies.d.ts.map +1 -0
  45. package/dist/currencies.js +1011 -0
  46. package/dist/currencies.js.map +1 -0
  47. package/dist/email/send.d.ts +20 -0
  48. package/dist/email/send.d.ts.map +1 -0
  49. package/dist/email/send.js +53 -0
  50. package/dist/email/send.js.map +1 -0
  51. package/dist/form-runtime.d.ts +38 -0
  52. package/dist/form-runtime.d.ts.map +1 -0
  53. package/dist/form-runtime.js +174 -0
  54. package/dist/form-runtime.js.map +1 -0
  55. package/dist/gcs/storage.d.ts +23 -0
  56. package/dist/gcs/storage.d.ts.map +1 -0
  57. package/dist/gcs/storage.js +25 -0
  58. package/dist/gcs/storage.js.map +1 -0
  59. package/dist/geo.d.ts +85 -0
  60. package/dist/geo.d.ts.map +1 -0
  61. package/dist/geo.js +141 -0
  62. package/dist/geo.js.map +1 -0
  63. package/dist/geographic-regions.d.ts +66 -0
  64. package/dist/geographic-regions.d.ts.map +1 -0
  65. package/dist/geographic-regions.js +326 -0
  66. package/dist/geographic-regions.js.map +1 -0
  67. package/dist/index.d.ts +9 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +9 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/kms-aws.d.ts +26 -0
  72. package/dist/kms-aws.d.ts.map +1 -0
  73. package/dist/kms-aws.js +133 -0
  74. package/dist/kms-aws.js.map +1 -0
  75. package/dist/kms-crypto.d.ts +20 -0
  76. package/dist/kms-crypto.d.ts.map +1 -0
  77. package/dist/kms-crypto.js +108 -0
  78. package/dist/kms-crypto.js.map +1 -0
  79. package/dist/kms-env.d.ts +13 -0
  80. package/dist/kms-env.d.ts.map +1 -0
  81. package/dist/kms-env.js +13 -0
  82. package/dist/kms-env.js.map +1 -0
  83. package/dist/kms-gcp.d.ts +32 -0
  84. package/dist/kms-gcp.d.ts.map +1 -0
  85. package/dist/kms-gcp.js +116 -0
  86. package/dist/kms-gcp.js.map +1 -0
  87. package/dist/kms-local.d.ts +13 -0
  88. package/dist/kms-local.d.ts.map +1 -0
  89. package/dist/kms-local.js +13 -0
  90. package/dist/kms-local.js.map +1 -0
  91. package/dist/kms-symmetric.d.ts +14 -0
  92. package/dist/kms-symmetric.d.ts.map +1 -0
  93. package/dist/kms-symmetric.js +67 -0
  94. package/dist/kms-symmetric.js.map +1 -0
  95. package/dist/kms.d.ts +66 -0
  96. package/dist/kms.d.ts.map +1 -0
  97. package/dist/kms.js +169 -0
  98. package/dist/kms.js.map +1 -0
  99. package/dist/kv-codecs.d.ts +6 -0
  100. package/dist/kv-codecs.d.ts.map +1 -0
  101. package/dist/kv-codecs.js +4 -0
  102. package/dist/kv-codecs.js.map +1 -0
  103. package/dist/kv.d.ts +10 -0
  104. package/dist/kv.d.ts.map +1 -0
  105. package/dist/kv.js +18 -0
  106. package/dist/kv.js.map +1 -0
  107. package/dist/languages.d.ts +187 -0
  108. package/dist/languages.d.ts.map +1 -0
  109. package/dist/languages.js +187 -0
  110. package/dist/languages.js.map +1 -0
  111. package/dist/localized-countries-regions.d.ts +15 -0
  112. package/dist/localized-countries-regions.d.ts.map +1 -0
  113. package/dist/localized-countries-regions.js +674 -0
  114. package/dist/localized-countries-regions.js.map +1 -0
  115. package/dist/localized-regions.d.ts +33 -0
  116. package/dist/localized-regions.d.ts.map +1 -0
  117. package/dist/localized-regions.js +63 -0
  118. package/dist/localized-regions.js.map +1 -0
  119. package/dist/price/resolve.d.ts +91 -0
  120. package/dist/price/resolve.d.ts.map +1 -0
  121. package/dist/price/resolve.js +227 -0
  122. package/dist/price/resolve.js.map +1 -0
  123. package/dist/rate-limits.d.ts +39 -0
  124. package/dist/rate-limits.d.ts.map +1 -0
  125. package/dist/rate-limits.js +86 -0
  126. package/dist/rate-limits.js.map +1 -0
  127. package/dist/redis.d.ts +13 -0
  128. package/dist/redis.d.ts.map +1 -0
  129. package/dist/redis.js +16 -0
  130. package/dist/redis.js.map +1 -0
  131. package/dist/region-only.d.ts +11 -0
  132. package/dist/region-only.d.ts.map +1 -0
  133. package/dist/region-only.js +49 -0
  134. package/dist/region-only.js.map +1 -0
  135. package/dist/region.d.ts +11 -0
  136. package/dist/region.d.ts.map +1 -0
  137. package/dist/region.js +47 -0
  138. package/dist/region.js.map +1 -0
  139. package/dist/romania-bucharest-sectors.d.ts +6 -0
  140. package/dist/romania-bucharest-sectors.d.ts.map +1 -0
  141. package/dist/romania-bucharest-sectors.js +27 -0
  142. package/dist/romania-bucharest-sectors.js.map +1 -0
  143. package/dist/romania-counties.d.ts +6 -0
  144. package/dist/romania-counties.d.ts.map +1 -0
  145. package/dist/romania-counties.js +171 -0
  146. package/dist/romania-counties.js.map +1 -0
  147. package/dist/session-claims.d.ts +40 -0
  148. package/dist/session-claims.d.ts.map +1 -0
  149. package/dist/session-claims.js +184 -0
  150. package/dist/session-claims.js.map +1 -0
  151. package/dist/sms/provider.d.ts +28 -0
  152. package/dist/sms/provider.d.ts.map +1 -0
  153. package/dist/sms/provider.js +50 -0
  154. package/dist/sms/provider.js.map +1 -0
  155. package/dist/sms/segments.d.ts +3 -0
  156. package/dist/sms/segments.d.ts.map +1 -0
  157. package/dist/sms/segments.js +33 -0
  158. package/dist/sms/segments.js.map +1 -0
  159. package/dist/temporal.d.ts +2 -0
  160. package/dist/temporal.d.ts.map +1 -0
  161. package/dist/temporal.js +6 -0
  162. package/dist/temporal.js.map +1 -0
  163. package/dist/timezones.d.ts +9 -0
  164. package/dist/timezones.d.ts.map +1 -0
  165. package/dist/timezones.js +1217 -0
  166. package/dist/timezones.js.map +1 -0
  167. package/dist/twilio/client.d.ts +13 -0
  168. package/dist/twilio/client.d.ts.map +1 -0
  169. package/dist/twilio/client.js +26 -0
  170. package/dist/twilio/client.js.map +1 -0
  171. package/dist/usage/index.d.ts +34 -0
  172. package/dist/usage/index.d.ts.map +1 -0
  173. package/dist/usage/index.js +18 -0
  174. package/dist/usage/index.js.map +1 -0
  175. package/dist/usage/policy.d.ts +27 -0
  176. package/dist/usage/policy.d.ts.map +1 -0
  177. package/dist/usage/policy.js +17 -0
  178. package/dist/usage/policy.js.map +1 -0
  179. package/dist/validation/log.d.ts +10 -0
  180. package/dist/validation/log.d.ts.map +1 -0
  181. package/dist/validation/log.js +37 -0
  182. package/dist/validation/log.js.map +1 -0
  183. package/dist/with-timeout.d.ts +2 -0
  184. package/dist/with-timeout.d.ts.map +1 -0
  185. package/dist/with-timeout.js +15 -0
  186. package/dist/with-timeout.js.map +1 -0
  187. package/dist/zod-form-builder.d.ts +45 -0
  188. package/dist/zod-form-builder.d.ts.map +1 -0
  189. package/dist/zod-form-builder.js +216 -0
  190. package/dist/zod-form-builder.js.map +1 -0
  191. package/package.json +92 -0
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Rate Limit Utilities
3
+ *
4
+ * Maps subscription plans to API rate limits
5
+ */
6
+ /**
7
+ * Default rate limits by plan tier
8
+ *
9
+ * These limits apply to API key authentication
10
+ * Based on subscription tier or plan key
11
+ */
12
+ export const RATE_LIMITS_BY_PLAN = {
13
+ // Free/Starter tier
14
+ free: {
15
+ rps: 5,
16
+ rpm: 300,
17
+ burst: 10,
18
+ },
19
+ starter: {
20
+ rps: 5,
21
+ rpm: 300,
22
+ burst: 10,
23
+ },
24
+ // Professional tier
25
+ professional: {
26
+ rps: 50,
27
+ rpm: 3000,
28
+ burst: 100,
29
+ },
30
+ pro: {
31
+ rps: 50,
32
+ rpm: 3000,
33
+ burst: 100,
34
+ },
35
+ // Business tier
36
+ business: {
37
+ rps: 100,
38
+ rpm: 6000,
39
+ burst: 200,
40
+ },
41
+ // Enterprise tier
42
+ enterprise: {
43
+ rps: 500,
44
+ rpm: 30000,
45
+ burst: 1000,
46
+ },
47
+ // Default fallback
48
+ default: {
49
+ rps: 5,
50
+ rpm: 300,
51
+ burst: 10,
52
+ },
53
+ };
54
+ /**
55
+ * Get rate limits for a given plan key
56
+ *
57
+ * @param planKey - The plan key (e.g., "starter", "professional", "enterprise")
58
+ * @returns Rate limit configuration
59
+ */
60
+ export function getRateLimitsForPlan(planKey) {
61
+ if (!planKey)
62
+ return RATE_LIMITS_BY_PLAN.default;
63
+ const normalized = planKey.toLowerCase().trim();
64
+ return RATE_LIMITS_BY_PLAN[normalized] || RATE_LIMITS_BY_PLAN.default;
65
+ }
66
+ /**
67
+ * Check if a plan has enterprise-level access
68
+ *
69
+ * @param planKey - The plan key
70
+ * @returns True if enterprise plan
71
+ */
72
+ export function isEnterprisePlan(planKey) {
73
+ if (!planKey)
74
+ return false;
75
+ return planKey.toLowerCase().includes("enterprise");
76
+ }
77
+ /**
78
+ * Get human-readable rate limit description
79
+ *
80
+ * @param limits - Rate limit configuration
81
+ * @returns Formatted string
82
+ */
83
+ export function describeRateLimits(limits) {
84
+ return `${limits.rpm} requests/minute, ${limits.rps} requests/second`;
85
+ }
86
+ //# sourceMappingURL=rate-limits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limits.js","sourceRoot":"","sources":["../src/rate-limits.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAoC;IAClE,oBAAoB;IACpB,IAAI,EAAE;QACJ,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,GAAG;QACR,KAAK,EAAE,EAAE;KACV;IACD,OAAO,EAAE;QACP,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,GAAG;QACR,KAAK,EAAE,EAAE;KACV;IAED,oBAAoB;IACpB,YAAY,EAAE;QACZ,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,GAAG;KACX;IACD,GAAG,EAAE;QACH,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,GAAG;KACX;IAED,gBAAgB;IAChB,QAAQ,EAAE;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,GAAG;KACX;IAED,kBAAkB;IAClB,UAAU,EAAE;QACV,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,KAAK;QACV,KAAK,EAAE,IAAI;KACZ;IAED,mBAAmB;IACnB,OAAO,EAAE;QACP,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,GAAG;QACR,KAAK,EAAE,EAAE;KACV;CACF,CAAA;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAkC;IACrE,IAAI,CAAC,OAAO;QAAE,OAAO,mBAAmB,CAAC,OAAQ,CAAA;IAEjD,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;IAC/C,OAAO,mBAAmB,CAAC,UAAU,CAAC,IAAI,mBAAmB,CAAC,OAAQ,CAAA;AACxE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAkC;IACjE,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAA;IAC1B,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;AACrD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAuB;IACxD,OAAO,GAAG,MAAM,CAAC,GAAG,qBAAqB,MAAM,CAAC,GAAG,kBAAkB,CAAA;AACvE,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Redis Utility (DEPRECATED)
3
+ *
4
+ * Upstash Redis has been removed to reduce costs.
5
+ * Use Cloudflare KV instead via the cache.ts module.
6
+ *
7
+ * @deprecated Use @pxmstudio/voyant-utils/cache with Cloudflare KV instead
8
+ */
9
+ /**
10
+ * @deprecated Use Cloudflare KV instead
11
+ */
12
+ export declare function getRedis(): null;
13
+ //# sourceMappingURL=redis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../src/redis.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CAG/B"}
package/dist/redis.js ADDED
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Redis Utility (DEPRECATED)
3
+ *
4
+ * Upstash Redis has been removed to reduce costs.
5
+ * Use Cloudflare KV instead via the cache.ts module.
6
+ *
7
+ * @deprecated Use @pxmstudio/voyant-utils/cache with Cloudflare KV instead
8
+ */
9
+ /**
10
+ * @deprecated Use Cloudflare KV instead
11
+ */
12
+ export function getRedis() {
13
+ console.warn("[redis] Upstash Redis has been removed. Use Cloudflare KV instead.");
14
+ return null;
15
+ }
16
+ //# sourceMappingURL=redis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis.js","sourceRoot":"","sources":["../src/redis.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAA;IAClF,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1,11 @@
1
+ export type Region = "US" | "EU";
2
+ export declare function normalizeRegion(input?: string | null): Region;
3
+ export declare function resolveRegion(opts?: {
4
+ forceRegion?: string | null;
5
+ organizationRegion?: string | null;
6
+ headerRegion?: string | null;
7
+ cookieRegion?: string | null;
8
+ geoCountry?: string | null;
9
+ defaultRegion?: string | null;
10
+ }): Region;
11
+ //# sourceMappingURL=region-only.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"region-only.d.ts","sourceRoot":"","sources":["../src/region-only.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;AAEhC,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAE7D;AAED,wBAAgB,aAAa,CAC3B,IAAI,GAAE;IACJ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB,GACL,MAAM,CAqCR"}
@@ -0,0 +1,49 @@
1
+ // Region utilities that can be safely imported in Edge Runtime (middleware)
2
+ // This file excludes any dependencies that are not compatible with Edge Runtime
3
+ export function normalizeRegion(input) {
4
+ return input && input.toUpperCase() === "EU" ? "EU" : "US";
5
+ }
6
+ export function resolveRegion(opts = {}) {
7
+ if (opts.forceRegion)
8
+ return normalizeRegion(opts.forceRegion);
9
+ if (opts.organizationRegion)
10
+ return normalizeRegion(opts.organizationRegion);
11
+ if (opts.headerRegion)
12
+ return normalizeRegion(opts.headerRegion);
13
+ if (opts.cookieRegion)
14
+ return normalizeRegion(opts.cookieRegion);
15
+ const EU_COUNTRIES = new Set([
16
+ "DE",
17
+ "FR",
18
+ "ES",
19
+ "IT",
20
+ "NL",
21
+ "SE",
22
+ "NO",
23
+ "DK",
24
+ "FI",
25
+ "IE",
26
+ "PL",
27
+ "RO",
28
+ "BG",
29
+ "HU",
30
+ "CZ",
31
+ "AT",
32
+ "BE",
33
+ "PT",
34
+ "GR",
35
+ "HR",
36
+ "SK",
37
+ "SI",
38
+ "EE",
39
+ "LV",
40
+ "LT",
41
+ "LU",
42
+ "MT",
43
+ "CY",
44
+ ]);
45
+ if (opts.geoCountry && EU_COUNTRIES.has(String(opts.geoCountry).toUpperCase()))
46
+ return "EU";
47
+ return normalizeRegion(opts.defaultRegion || process.env.DEFAULT_REGION || "US");
48
+ }
49
+ //# sourceMappingURL=region-only.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"region-only.js","sourceRoot":"","sources":["../src/region-only.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,gFAAgF;AAIhF,MAAM,UAAU,eAAe,CAAC,KAAqB;IACnD,OAAO,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;AAC5D,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,OAOI,EAAE;IAEN,IAAI,IAAI,CAAC,WAAW;QAAE,OAAO,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAC9D,IAAI,IAAI,CAAC,kBAAkB;QAAE,OAAO,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAC5E,IAAI,IAAI,CAAC,YAAY;QAAE,OAAO,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IAChE,IAAI,IAAI,CAAC,YAAY;QAAE,OAAO,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IAChE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;QAC3B,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;KACL,CAAC,CAAA;IACF,IAAI,IAAI,CAAC,UAAU,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QAAE,OAAO,IAAI,CAAA;IAC3F,OAAO,eAAe,CAAC,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,CAAA;AAClF,CAAC"}
@@ -0,0 +1,11 @@
1
+ export type Region = "US" | "EU";
2
+ export declare function normalizeRegion(input?: string | null): Region;
3
+ export declare function resolveRegion(opts?: {
4
+ forceRegion?: string | null;
5
+ organizationRegion?: string | null;
6
+ headerRegion?: string | null;
7
+ cookieRegion?: string | null;
8
+ geoCountry?: string | null;
9
+ defaultRegion?: string | null;
10
+ }): Region;
11
+ //# sourceMappingURL=region.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"region.d.ts","sourceRoot":"","sources":["../src/region.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;AAEhC,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAE7D;AAED,wBAAgB,aAAa,CAC3B,IAAI,GAAE;IACJ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB,GACL,MAAM,CAqCR"}
package/dist/region.js ADDED
@@ -0,0 +1,47 @@
1
+ export function normalizeRegion(input) {
2
+ return input && input.toUpperCase() === "EU" ? "EU" : "US";
3
+ }
4
+ export function resolveRegion(opts = {}) {
5
+ if (opts.forceRegion)
6
+ return normalizeRegion(opts.forceRegion);
7
+ if (opts.organizationRegion)
8
+ return normalizeRegion(opts.organizationRegion);
9
+ if (opts.headerRegion)
10
+ return normalizeRegion(opts.headerRegion);
11
+ if (opts.cookieRegion)
12
+ return normalizeRegion(opts.cookieRegion);
13
+ const EU_COUNTRIES = new Set([
14
+ "DE",
15
+ "FR",
16
+ "ES",
17
+ "IT",
18
+ "NL",
19
+ "SE",
20
+ "NO",
21
+ "DK",
22
+ "FI",
23
+ "IE",
24
+ "PL",
25
+ "RO",
26
+ "BG",
27
+ "HU",
28
+ "CZ",
29
+ "AT",
30
+ "BE",
31
+ "PT",
32
+ "GR",
33
+ "HR",
34
+ "SK",
35
+ "SI",
36
+ "EE",
37
+ "LV",
38
+ "LT",
39
+ "LU",
40
+ "MT",
41
+ "CY",
42
+ ]);
43
+ if (opts.geoCountry && EU_COUNTRIES.has(String(opts.geoCountry).toUpperCase()))
44
+ return "EU";
45
+ return normalizeRegion(opts.defaultRegion || process.env.DEFAULT_REGION || "US");
46
+ }
47
+ //# sourceMappingURL=region.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"region.js","sourceRoot":"","sources":["../src/region.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,KAAqB;IACnD,OAAO,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;AAC5D,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,OAOI,EAAE;IAEN,IAAI,IAAI,CAAC,WAAW;QAAE,OAAO,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAC9D,IAAI,IAAI,CAAC,kBAAkB;QAAE,OAAO,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAC5E,IAAI,IAAI,CAAC,YAAY;QAAE,OAAO,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IAChE,IAAI,IAAI,CAAC,YAAY;QAAE,OAAO,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IAChE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;QAC3B,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;KACL,CAAC,CAAA;IACF,IAAI,IAAI,CAAC,UAAU,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QAAE,OAAO,IAAI,CAAA;IAC3F,OAAO,eAAe,CAAC,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,CAAA;AAClF,CAAC"}
@@ -0,0 +1,6 @@
1
+ export type City = {
2
+ name: string;
3
+ value: string;
4
+ };
5
+ export declare const bucharestSectors: City[];
6
+ //# sourceMappingURL=romania-bucharest-sectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"romania-bucharest-sectors.d.ts","sourceRoot":"","sources":["../src/romania-bucharest-sectors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,IAAI,EAyBlC,CAAC"}
@@ -0,0 +1,27 @@
1
+ export const bucharestSectors = [
2
+ {
3
+ name: "Sector 1",
4
+ value: "Sector 1",
5
+ },
6
+ {
7
+ name: "Sector 2",
8
+ value: "Sector 2",
9
+ },
10
+ {
11
+ name: "Sector 3",
12
+ value: "Sector 3",
13
+ },
14
+ {
15
+ name: "Sector 4",
16
+ value: "Sector 4",
17
+ },
18
+ {
19
+ name: "Sector 5",
20
+ value: "Sector 5",
21
+ },
22
+ {
23
+ name: "Sector 6",
24
+ value: "Sector 6",
25
+ },
26
+ ];
27
+ //# sourceMappingURL=romania-bucharest-sectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"romania-bucharest-sectors.js","sourceRoot":"","sources":["../src/romania-bucharest-sectors.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,gBAAgB,GAAW;IACtC;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,UAAU;KAClB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,UAAU;KAClB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,UAAU;KAClB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,UAAU;KAClB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,UAAU;KAClB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,UAAU;KAClB;CACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ export type County = {
2
+ name: string;
3
+ code: string;
4
+ };
5
+ export declare const counties: County[];
6
+ //# sourceMappingURL=romania-counties.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"romania-counties.d.ts","sourceRoot":"","sources":["../src/romania-counties.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,MAAM,EAyK5B,CAAC"}
@@ -0,0 +1,171 @@
1
+ export const counties = [
2
+ {
3
+ name: "Alba",
4
+ code: "RO-AB",
5
+ },
6
+ {
7
+ name: "Arad",
8
+ code: "RO-AR",
9
+ },
10
+ {
11
+ name: "Argeș",
12
+ code: "RO-AG",
13
+ },
14
+ {
15
+ name: "Bacău",
16
+ code: "RO-BC",
17
+ },
18
+ {
19
+ name: "Bihor",
20
+ code: "RO-BH",
21
+ },
22
+ {
23
+ name: "Bistrița-Năsăud",
24
+ code: "RO-BN",
25
+ },
26
+ {
27
+ name: "Botoșani",
28
+ code: "RO-BT",
29
+ },
30
+ {
31
+ name: "Brașov",
32
+ code: "RO-BV",
33
+ },
34
+ {
35
+ name: "Brăila",
36
+ code: "RO-BR",
37
+ },
38
+ {
39
+ name: "București",
40
+ code: "RO-B",
41
+ },
42
+ {
43
+ name: "Buzău",
44
+ code: "RO-BZ",
45
+ },
46
+ {
47
+ name: "Caraș-Severin",
48
+ code: "RO-CS",
49
+ },
50
+ {
51
+ name: "Cluj",
52
+ code: "RO-CJ",
53
+ },
54
+ {
55
+ name: "Constanța",
56
+ code: "RO-CT",
57
+ },
58
+ {
59
+ name: "Covasna",
60
+ code: "RO-CV",
61
+ },
62
+ {
63
+ name: "Călărași",
64
+ code: "RO-CL",
65
+ },
66
+ {
67
+ name: "Dolj",
68
+ code: "RO-DJ",
69
+ },
70
+ {
71
+ name: "Dâmbovița",
72
+ code: "RO-DB",
73
+ },
74
+ {
75
+ name: "Galați",
76
+ code: "RO-GL",
77
+ },
78
+ {
79
+ name: "Giurgiu",
80
+ code: "RO-GR",
81
+ },
82
+ {
83
+ name: "Gorj",
84
+ code: "RO-GJ",
85
+ },
86
+ {
87
+ name: "Harghita",
88
+ code: "RO-HR",
89
+ },
90
+ {
91
+ name: "Hunedoara",
92
+ code: "RO-HD",
93
+ },
94
+ {
95
+ name: "Ialomița",
96
+ code: "RO-IL",
97
+ },
98
+ {
99
+ name: "Iași",
100
+ code: "RO-IS",
101
+ },
102
+ {
103
+ name: "Ilfov",
104
+ code: "RO-IF*", // TODO: Check if this is correct
105
+ },
106
+ {
107
+ name: "Maramureș",
108
+ code: "RO-MM",
109
+ },
110
+ {
111
+ name: "Mehedinți",
112
+ code: "RO-MH",
113
+ },
114
+ {
115
+ name: "Mureș",
116
+ code: "RO-MS",
117
+ },
118
+ {
119
+ name: "Neamț",
120
+ code: "RO-NT",
121
+ },
122
+ {
123
+ name: "Olt",
124
+ code: "RO-OT",
125
+ },
126
+ {
127
+ name: "Prahova",
128
+ code: "RO-PH",
129
+ },
130
+ {
131
+ name: "Satu Mare",
132
+ code: "RO-SM",
133
+ },
134
+ {
135
+ name: "Sibiu",
136
+ code: "RO-SB",
137
+ },
138
+ {
139
+ name: "Suceava",
140
+ code: "RO-SV",
141
+ },
142
+ {
143
+ name: "Sălaj",
144
+ code: "RO-SJ",
145
+ },
146
+ {
147
+ name: "Teleorman",
148
+ code: "RO-TR",
149
+ },
150
+ {
151
+ name: "Timiș",
152
+ code: "RO-TM",
153
+ },
154
+ {
155
+ name: "Tulcea",
156
+ code: "RO-TL",
157
+ },
158
+ {
159
+ name: "Vaslui",
160
+ code: "RO-VS",
161
+ },
162
+ {
163
+ name: "Vrancea",
164
+ code: "RO-VN",
165
+ },
166
+ {
167
+ name: "Vâlcea",
168
+ code: "RO-VL",
169
+ },
170
+ ];
171
+ //# sourceMappingURL=romania-counties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"romania-counties.js","sourceRoot":"","sources":["../src/romania-counties.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Session Claims Cookie Utilities
3
+ *
4
+ * Implements signed session claims to reduce API calls in middleware.
5
+ * Claims contain minimal session info (userId, sessionId hash) that can be
6
+ * verified locally without database lookup.
7
+ *
8
+ * Security:
9
+ * - HMAC-SHA256 signing prevents tampering
10
+ * - 5-minute expiration ensures quick revocation
11
+ * - HttpOnly, Secure, SameSite cookies
12
+ *
13
+ * Compatible with both Node.js (middleware) and Cloudflare Workers (API)
14
+ */
15
+ export interface SessionClaims {
16
+ userId: string;
17
+ sessionId: string;
18
+ iat: number;
19
+ exp: number;
20
+ }
21
+ /**
22
+ * Sign session claims and return as JWT-like token
23
+ *
24
+ * Format: base64url(header).base64url(payload).base64url(signature)
25
+ *
26
+ * @param userId - User ID from verified session
27
+ * @param sessionId - Full session ID (will be hashed)
28
+ * @param secret - HMAC secret for signing
29
+ * @returns Signed token string
30
+ */
31
+ export declare function signSessionClaims(userId: string, sessionId: string, secret: string): Promise<string>;
32
+ /**
33
+ * Verify and decode session claims token
34
+ *
35
+ * @param token - Signed token from cookie
36
+ * @param secret - HMAC secret for verification
37
+ * @returns Decoded claims if valid, null if invalid/expired
38
+ */
39
+ export declare function verifySessionClaims(token: string, secret: string): Promise<SessionClaims | null>;
40
+ //# sourceMappingURL=session-claims.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-claims.d.ts","sourceRoot":"","sources":["../src/session-claims.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAwBH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;CACZ;AA6BD;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAmDjB;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAmE/B"}