@shware/http 1.2.0 → 1.2.2

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 (208) hide show
  1. package/README.md +1 -3
  2. package/dist/__tests__/index.test.cjs +27 -0
  3. package/dist/__tests__/index.test.cjs.map +1 -0
  4. package/dist/__tests__/index.test.d.cts +2 -0
  5. package/dist/__tests__/index.test.d.ts +2 -0
  6. package/dist/__tests__/index.test.mjs +25 -0
  7. package/dist/__tests__/index.test.mjs.map +1 -0
  8. package/dist/cache/index.cjs +32 -0
  9. package/dist/cache/index.cjs.map +1 -0
  10. package/dist/cache/index.d.cts +9 -0
  11. package/dist/cache/index.d.ts +9 -0
  12. package/dist/cache/index.mjs +7 -0
  13. package/dist/cache/index.mjs.map +1 -0
  14. package/dist/error/detail.cjs +93 -0
  15. package/dist/error/detail.cjs.map +1 -0
  16. package/dist/error/detail.d.cts +99 -0
  17. package/dist/error/detail.d.ts +99 -0
  18. package/dist/error/detail.mjs +67 -0
  19. package/dist/error/detail.mjs.map +1 -0
  20. package/dist/error/i18n/en-us.cjs +31 -0
  21. package/dist/error/i18n/en-us.cjs.map +1 -0
  22. package/dist/error/i18n/en-us.d.cts +3 -0
  23. package/dist/error/i18n/en-us.d.ts +3 -0
  24. package/dist/error/i18n/en-us.mjs +6 -0
  25. package/dist/error/i18n/en-us.mjs.map +1 -0
  26. package/dist/error/index.cjs +63 -0
  27. package/dist/error/index.cjs.map +1 -0
  28. package/dist/error/index.d.cts +19 -0
  29. package/dist/error/index.d.ts +19 -0
  30. package/dist/error/index.mjs +35 -0
  31. package/dist/error/index.mjs.map +1 -0
  32. package/dist/error/parse.cjs +52 -0
  33. package/dist/error/parse.cjs.map +1 -0
  34. package/dist/error/parse.d.cts +16 -0
  35. package/dist/error/parse.d.ts +16 -0
  36. package/dist/error/parse.mjs +27 -0
  37. package/dist/error/parse.mjs.map +1 -0
  38. package/dist/error/reason.cjs +19 -0
  39. package/dist/error/reason.cjs.map +1 -0
  40. package/dist/error/reason.d.cts +66 -0
  41. package/dist/error/reason.d.ts +66 -0
  42. package/dist/error/reason.mjs +1 -0
  43. package/dist/error/reason.mjs.map +1 -0
  44. package/dist/error/status.cjs +263 -0
  45. package/dist/error/status.cjs.map +1 -0
  46. package/dist/error/status.d.cts +69 -0
  47. package/dist/error/status.d.ts +69 -0
  48. package/dist/error/status.mjs +234 -0
  49. package/dist/error/status.mjs.map +1 -0
  50. package/dist/google-one-tap/index.cjs +51 -0
  51. package/dist/google-one-tap/index.cjs.map +1 -0
  52. package/dist/google-one-tap/index.d.cts +17 -0
  53. package/dist/google-one-tap/index.d.ts +17 -0
  54. package/dist/google-one-tap/index.mjs +26 -0
  55. package/dist/google-one-tap/index.mjs.map +1 -0
  56. package/dist/google-one-tap/types.cjs +19 -0
  57. package/dist/google-one-tap/types.cjs.map +1 -0
  58. package/dist/google-one-tap/types.d.cts +155 -0
  59. package/dist/google-one-tap/types.d.ts +155 -0
  60. package/dist/google-one-tap/types.mjs +1 -0
  61. package/dist/google-one-tap/types.mjs.map +1 -0
  62. package/dist/hono/__tests__/authorizer.test.cjs +483 -0
  63. package/dist/hono/__tests__/authorizer.test.cjs.map +1 -0
  64. package/dist/hono/__tests__/authorizer.test.d.cts +2 -0
  65. package/dist/hono/__tests__/authorizer.test.d.ts +2 -0
  66. package/dist/hono/__tests__/authorizer.test.mjs +481 -0
  67. package/dist/hono/__tests__/authorizer.test.mjs.map +1 -0
  68. package/dist/hono/__tests__/csrf.test.cjs +162 -0
  69. package/dist/hono/__tests__/csrf.test.cjs.map +1 -0
  70. package/dist/hono/__tests__/csrf.test.d.cts +2 -0
  71. package/dist/hono/__tests__/csrf.test.d.ts +2 -0
  72. package/dist/hono/__tests__/csrf.test.mjs +160 -0
  73. package/dist/hono/__tests__/csrf.test.mjs.map +1 -0
  74. package/dist/hono/authorizer.cjs +67 -0
  75. package/dist/hono/authorizer.cjs.map +1 -0
  76. package/dist/hono/authorizer.d.cts +18 -0
  77. package/dist/hono/authorizer.d.ts +18 -0
  78. package/dist/hono/authorizer.mjs +42 -0
  79. package/dist/hono/authorizer.mjs.map +1 -0
  80. package/dist/hono/csrf.cjs +95 -0
  81. package/dist/hono/csrf.cjs.map +1 -0
  82. package/dist/hono/csrf.d.cts +65 -0
  83. package/dist/hono/csrf.d.ts +65 -0
  84. package/dist/hono/csrf.mjs +70 -0
  85. package/dist/hono/csrf.mjs.map +1 -0
  86. package/dist/hono/geolocation.cjs +75 -0
  87. package/dist/hono/geolocation.cjs.map +1 -0
  88. package/dist/hono/geolocation.d.cts +17 -0
  89. package/dist/hono/geolocation.d.ts +17 -0
  90. package/dist/hono/geolocation.mjs +50 -0
  91. package/dist/hono/geolocation.mjs.map +1 -0
  92. package/dist/hono/handler.cjs +68 -0
  93. package/dist/hono/handler.cjs.map +1 -0
  94. package/dist/hono/handler.d.cts +13 -0
  95. package/dist/hono/handler.d.ts +13 -0
  96. package/dist/hono/handler.mjs +42 -0
  97. package/dist/hono/handler.mjs.map +1 -0
  98. package/dist/hono/index.cjs +45 -0
  99. package/dist/hono/index.cjs.map +1 -0
  100. package/dist/hono/index.d.cts +12 -0
  101. package/dist/hono/index.d.ts +12 -0
  102. package/dist/hono/index.mjs +15 -0
  103. package/dist/hono/index.mjs.map +1 -0
  104. package/dist/hono/validator.cjs +64 -0
  105. package/dist/hono/validator.cjs.map +1 -0
  106. package/dist/hono/validator.d.cts +28 -0
  107. package/dist/hono/validator.d.ts +28 -0
  108. package/dist/hono/validator.mjs +38 -0
  109. package/dist/hono/validator.mjs.map +1 -0
  110. package/dist/index-BnPgRQDl.d.cts +129 -0
  111. package/dist/index-BnPgRQDl.d.ts +129 -0
  112. package/dist/index.cjs +91 -0
  113. package/dist/index.cjs.map +1 -0
  114. package/dist/index.d.cts +18 -0
  115. package/dist/index.d.ts +18 -0
  116. package/dist/index.mjs +46 -0
  117. package/dist/index.mjs.map +1 -0
  118. package/dist/iso/iso_3601_1.cjs +292 -0
  119. package/dist/iso/iso_3601_1.cjs.map +1 -0
  120. package/dist/iso/iso_3601_1.d.cts +9 -0
  121. package/dist/iso/iso_3601_1.d.ts +9 -0
  122. package/dist/iso/iso_3601_1.mjs +267 -0
  123. package/dist/iso/iso_3601_1.mjs.map +1 -0
  124. package/dist/max-length/index.cjs +94 -0
  125. package/dist/max-length/index.cjs.map +1 -0
  126. package/dist/max-length/index.d.cts +1 -0
  127. package/dist/max-length/index.d.ts +1 -0
  128. package/dist/max-length/index.mjs +48 -0
  129. package/dist/max-length/index.mjs.map +1 -0
  130. package/dist/message.cjs +32 -0
  131. package/dist/message.cjs.map +1 -0
  132. package/dist/message.d.cts +3 -0
  133. package/dist/message.d.ts +3 -0
  134. package/dist/message.mjs +7 -0
  135. package/dist/message.mjs.map +1 -0
  136. package/dist/polyfills/index.cjs +7 -0
  137. package/dist/polyfills/index.cjs.map +1 -0
  138. package/dist/polyfills/index.d.cts +2 -0
  139. package/dist/polyfills/index.d.ts +2 -0
  140. package/dist/polyfills/index.mjs +5 -0
  141. package/dist/polyfills/index.mjs.map +1 -0
  142. package/dist/response.cjs +73 -0
  143. package/dist/response.cjs.map +1 -0
  144. package/dist/response.d.cts +65 -0
  145. package/dist/response.d.ts +65 -0
  146. package/dist/response.mjs +44 -0
  147. package/dist/response.mjs.map +1 -0
  148. package/dist/snowflake.cjs +75 -0
  149. package/dist/snowflake.cjs.map +1 -0
  150. package/dist/snowflake.d.cts +29 -0
  151. package/dist/snowflake.d.ts +29 -0
  152. package/dist/snowflake.mjs +49 -0
  153. package/dist/snowflake.mjs.map +1 -0
  154. package/dist/utils/__tests__/ip.test.cjs +38 -0
  155. package/dist/utils/__tests__/ip.test.cjs.map +1 -0
  156. package/dist/utils/__tests__/ip.test.d.cts +2 -0
  157. package/dist/utils/__tests__/ip.test.d.ts +2 -0
  158. package/dist/utils/__tests__/ip.test.mjs +36 -0
  159. package/dist/utils/__tests__/ip.test.mjs.map +1 -0
  160. package/dist/utils/invariant.cjs +37 -0
  161. package/dist/utils/invariant.cjs.map +1 -0
  162. package/dist/utils/invariant.d.cts +3 -0
  163. package/dist/utils/invariant.d.ts +3 -0
  164. package/dist/utils/invariant.mjs +12 -0
  165. package/dist/utils/invariant.mjs.map +1 -0
  166. package/dist/utils/ip.cjs +53 -0
  167. package/dist/utils/ip.cjs.map +1 -0
  168. package/dist/utils/ip.d.cts +3 -0
  169. package/dist/utils/ip.d.ts +3 -0
  170. package/dist/utils/ip.mjs +28 -0
  171. package/dist/utils/ip.mjs.map +1 -0
  172. package/dist/utils/promise.cjs +47 -0
  173. package/dist/utils/promise.cjs.map +1 -0
  174. package/dist/utils/promise.d.cts +3 -0
  175. package/dist/utils/promise.d.ts +3 -0
  176. package/dist/utils/promise.mjs +22 -0
  177. package/dist/utils/promise.mjs.map +1 -0
  178. package/dist/utils/string.cjs +33 -0
  179. package/dist/utils/string.cjs.map +1 -0
  180. package/dist/utils/string.d.cts +6 -0
  181. package/dist/utils/string.d.ts +6 -0
  182. package/dist/utils/string.mjs +8 -0
  183. package/dist/utils/string.mjs.map +1 -0
  184. package/dist/utils/timing.cjs +74 -0
  185. package/dist/utils/timing.cjs.map +1 -0
  186. package/dist/utils/timing.d.cts +13 -0
  187. package/dist/utils/timing.d.ts +13 -0
  188. package/dist/utils/timing.mjs +49 -0
  189. package/dist/utils/timing.mjs.map +1 -0
  190. package/dist/utils/token-bucket.cjs +73 -0
  191. package/dist/utils/token-bucket.cjs.map +1 -0
  192. package/dist/utils/token-bucket.d.cts +20 -0
  193. package/dist/utils/token-bucket.d.ts +20 -0
  194. package/dist/utils/token-bucket.mjs +48 -0
  195. package/dist/utils/token-bucket.mjs.map +1 -0
  196. package/dist/vaild.cjs +51 -0
  197. package/dist/vaild.cjs.map +1 -0
  198. package/dist/vaild.d.cts +13 -0
  199. package/dist/vaild.d.ts +13 -0
  200. package/dist/vaild.mjs +26 -0
  201. package/dist/vaild.mjs.map +1 -0
  202. package/dist/webhook/index.cjs +77 -0
  203. package/dist/webhook/index.cjs.map +1 -0
  204. package/dist/webhook/index.d.cts +10 -0
  205. package/dist/webhook/index.d.ts +10 -0
  206. package/dist/webhook/index.mjs +52 -0
  207. package/dist/webhook/index.mjs.map +1 -0
  208. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/invariant.ts"],"sourcesContent":["const prefix = 'Invariant failed';\n\nexport function invariant(\n condition: unknown,\n message?: string | (() => string)\n): asserts condition {\n if (condition) return;\n const provided: string | undefined = typeof message === 'function' ? message() : message;\n const value: string = provided ? `${prefix}: ${provided}` : prefix;\n throw new Error(value);\n}\n"],"mappings":";AAAA,IAAM,SAAS;AAER,SAAS,UACd,WACA,SACmB;AACnB,MAAI,UAAW;AACf,QAAM,WAA+B,OAAO,YAAY,aAAa,QAAQ,IAAI;AACjF,QAAM,QAAgB,WAAW,GAAG,MAAM,KAAK,QAAQ,KAAK;AAC5D,QAAM,IAAI,MAAM,KAAK;AACvB;","names":[]}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/utils/ip.ts
21
+ var ip_exports = {};
22
+ __export(ip_exports, {
23
+ extractIpAddress: () => extractIpAddress
24
+ });
25
+ module.exports = __toCommonJS(ip_exports);
26
+ var import_net = require("net");
27
+ function extractIpAddress(ip) {
28
+ if (!ip) return null;
29
+ if ((0, import_net.isIPv4)(ip) || (0, import_net.isIPv6)(ip)) return ip;
30
+ if (ip.includes(".") && ip.includes(":")) {
31
+ const [address] = ip.split(":");
32
+ if ((0, import_net.isIPv4)(address)) return address;
33
+ }
34
+ if (!ip.includes("[") && !ip.includes("]") && !ip.includes(".") && ip.includes(":")) {
35
+ const parts = ip.split(":");
36
+ parts.pop();
37
+ const address = parts.join(":");
38
+ if ((0, import_net.isIPv6)(address)) return address;
39
+ }
40
+ try {
41
+ const url = new URL(`https://${ip}`);
42
+ const hostname = url.hostname.replace("[", "").replace("]", "");
43
+ if ((0, import_net.isIPv4)(hostname) || (0, import_net.isIPv6)(hostname)) return hostname;
44
+ return null;
45
+ } catch (_) {
46
+ return null;
47
+ }
48
+ }
49
+ // Annotate the CommonJS export names for ESM import in node:
50
+ 0 && (module.exports = {
51
+ extractIpAddress
52
+ });
53
+ //# sourceMappingURL=ip.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/ip.ts"],"sourcesContent":["import { isIPv4, isIPv6 } from 'net';\n\nexport function extractIpAddress(ip: string | undefined | null): string | null {\n if (!ip) return null;\n if (isIPv4(ip) || isIPv6(ip)) return ip;\n if (ip.includes('.') && ip.includes(':')) {\n const [address] = ip.split(':');\n if (isIPv4(address)) return address;\n }\n if (!ip.includes('[') && !ip.includes(']') && !ip.includes('.') && ip.includes(':')) {\n const parts = ip.split(':');\n parts.pop();\n const address = parts.join(':');\n if (isIPv6(address)) return address;\n }\n\n try {\n const url = new URL(`https://${ip}`);\n const hostname = url.hostname.replace('[', '').replace(']', '');\n if (isIPv4(hostname) || isIPv6(hostname)) return hostname;\n return null;\n } catch (_) {\n return null;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAA+B;AAExB,SAAS,iBAAiB,IAA8C;AAC7E,MAAI,CAAC,GAAI,QAAO;AAChB,UAAI,mBAAO,EAAE,SAAK,mBAAO,EAAE,EAAG,QAAO;AACrC,MAAI,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,GAAG;AACxC,UAAM,CAAC,OAAO,IAAI,GAAG,MAAM,GAAG;AAC9B,YAAI,mBAAO,OAAO,EAAG,QAAO;AAAA,EAC9B;AACA,MAAI,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,GAAG;AACnF,UAAM,QAAQ,GAAG,MAAM,GAAG;AAC1B,UAAM,IAAI;AACV,UAAM,UAAU,MAAM,KAAK,GAAG;AAC9B,YAAI,mBAAO,OAAO,EAAG,QAAO;AAAA,EAC9B;AAEA,MAAI;AACF,UAAM,MAAM,IAAI,IAAI,WAAW,EAAE,EAAE;AACnC,UAAM,WAAW,IAAI,SAAS,QAAQ,KAAK,EAAE,EAAE,QAAQ,KAAK,EAAE;AAC9D,YAAI,mBAAO,QAAQ,SAAK,mBAAO,QAAQ,EAAG,QAAO;AACjD,WAAO;AAAA,EACT,SAAS,GAAG;AACV,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -0,0 +1,3 @@
1
+ declare function extractIpAddress(ip: string | undefined | null): string | null;
2
+
3
+ export { extractIpAddress };
@@ -0,0 +1,3 @@
1
+ declare function extractIpAddress(ip: string | undefined | null): string | null;
2
+
3
+ export { extractIpAddress };
@@ -0,0 +1,28 @@
1
+ // src/utils/ip.ts
2
+ import { isIPv4, isIPv6 } from "net";
3
+ function extractIpAddress(ip) {
4
+ if (!ip) return null;
5
+ if (isIPv4(ip) || isIPv6(ip)) return ip;
6
+ if (ip.includes(".") && ip.includes(":")) {
7
+ const [address] = ip.split(":");
8
+ if (isIPv4(address)) return address;
9
+ }
10
+ if (!ip.includes("[") && !ip.includes("]") && !ip.includes(".") && ip.includes(":")) {
11
+ const parts = ip.split(":");
12
+ parts.pop();
13
+ const address = parts.join(":");
14
+ if (isIPv6(address)) return address;
15
+ }
16
+ try {
17
+ const url = new URL(`https://${ip}`);
18
+ const hostname = url.hostname.replace("[", "").replace("]", "");
19
+ if (isIPv4(hostname) || isIPv6(hostname)) return hostname;
20
+ return null;
21
+ } catch (_) {
22
+ return null;
23
+ }
24
+ }
25
+ export {
26
+ extractIpAddress
27
+ };
28
+ //# sourceMappingURL=ip.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/ip.ts"],"sourcesContent":["import { isIPv4, isIPv6 } from 'net';\n\nexport function extractIpAddress(ip: string | undefined | null): string | null {\n if (!ip) return null;\n if (isIPv4(ip) || isIPv6(ip)) return ip;\n if (ip.includes('.') && ip.includes(':')) {\n const [address] = ip.split(':');\n if (isIPv4(address)) return address;\n }\n if (!ip.includes('[') && !ip.includes(']') && !ip.includes('.') && ip.includes(':')) {\n const parts = ip.split(':');\n parts.pop();\n const address = parts.join(':');\n if (isIPv6(address)) return address;\n }\n\n try {\n const url = new URL(`https://${ip}`);\n const hostname = url.hostname.replace('[', '').replace(']', '');\n if (isIPv4(hostname) || isIPv6(hostname)) return hostname;\n return null;\n } catch (_) {\n return null;\n }\n}\n"],"mappings":";AAAA,SAAS,QAAQ,cAAc;AAExB,SAAS,iBAAiB,IAA8C;AAC7E,MAAI,CAAC,GAAI,QAAO;AAChB,MAAI,OAAO,EAAE,KAAK,OAAO,EAAE,EAAG,QAAO;AACrC,MAAI,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,GAAG;AACxC,UAAM,CAAC,OAAO,IAAI,GAAG,MAAM,GAAG;AAC9B,QAAI,OAAO,OAAO,EAAG,QAAO;AAAA,EAC9B;AACA,MAAI,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,GAAG;AACnF,UAAM,QAAQ,GAAG,MAAM,GAAG;AAC1B,UAAM,IAAI;AACV,UAAM,UAAU,MAAM,KAAK,GAAG;AAC9B,QAAI,OAAO,OAAO,EAAG,QAAO;AAAA,EAC9B;AAEA,MAAI;AACF,UAAM,MAAM,IAAI,IAAI,WAAW,EAAE,EAAE;AACnC,UAAM,WAAW,IAAI,SAAS,QAAQ,KAAK,EAAE,EAAE,QAAQ,KAAK,EAAE;AAC9D,QAAI,OAAO,QAAQ,KAAK,OAAO,QAAQ,EAAG,QAAO;AACjD,WAAO;AAAA,EACT,SAAS,GAAG;AACV,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/utils/promise.ts
21
+ var promise_exports = {};
22
+ __export(promise_exports, {
23
+ once: () => once
24
+ });
25
+ module.exports = __toCommonJS(promise_exports);
26
+ function once(fn) {
27
+ let cache = null;
28
+ let promise = null;
29
+ return async (...args) => {
30
+ if (cache) return cache;
31
+ if (!promise) {
32
+ promise = fn(...args).then((result) => {
33
+ cache = result;
34
+ return result;
35
+ }).catch((error) => {
36
+ promise = null;
37
+ throw error;
38
+ });
39
+ }
40
+ return promise;
41
+ };
42
+ }
43
+ // Annotate the CommonJS export names for ESM import in node:
44
+ 0 && (module.exports = {
45
+ once
46
+ });
47
+ //# sourceMappingURL=promise.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/promise.ts"],"sourcesContent":["export function once<A extends unknown[], T>(fn: (...args: A) => Promise<T>) {\n let cache: T | null = null;\n let promise: Promise<T> | null = null;\n\n return async (...args: A) => {\n if (cache) return cache;\n if (!promise) {\n promise = fn(...args)\n .then((result) => {\n cache = result;\n return result;\n })\n .catch((error) => {\n promise = null;\n throw error;\n });\n }\n\n return promise;\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,SAAS,KAA6B,IAAgC;AAC3E,MAAI,QAAkB;AACtB,MAAI,UAA6B;AAEjC,SAAO,UAAU,SAAY;AAC3B,QAAI,MAAO,QAAO;AAClB,QAAI,CAAC,SAAS;AACZ,gBAAU,GAAG,GAAG,IAAI,EACjB,KAAK,CAAC,WAAW;AAChB,gBAAQ;AACR,eAAO;AAAA,MACT,CAAC,EACA,MAAM,CAAC,UAAU;AAChB,kBAAU;AACV,cAAM;AAAA,MACR,CAAC;AAAA,IACL;AAEA,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -0,0 +1,3 @@
1
+ declare function once<A extends unknown[], T>(fn: (...args: A) => Promise<T>): (...args: A) => Promise<T>;
2
+
3
+ export { once };
@@ -0,0 +1,3 @@
1
+ declare function once<A extends unknown[], T>(fn: (...args: A) => Promise<T>): (...args: A) => Promise<T>;
2
+
3
+ export { once };
@@ -0,0 +1,22 @@
1
+ // src/utils/promise.ts
2
+ function once(fn) {
3
+ let cache = null;
4
+ let promise = null;
5
+ return async (...args) => {
6
+ if (cache) return cache;
7
+ if (!promise) {
8
+ promise = fn(...args).then((result) => {
9
+ cache = result;
10
+ return result;
11
+ }).catch((error) => {
12
+ promise = null;
13
+ throw error;
14
+ });
15
+ }
16
+ return promise;
17
+ };
18
+ }
19
+ export {
20
+ once
21
+ };
22
+ //# sourceMappingURL=promise.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/promise.ts"],"sourcesContent":["export function once<A extends unknown[], T>(fn: (...args: A) => Promise<T>) {\n let cache: T | null = null;\n let promise: Promise<T> | null = null;\n\n return async (...args: A) => {\n if (cache) return cache;\n if (!promise) {\n promise = fn(...args)\n .then((result) => {\n cache = result;\n return result;\n })\n .catch((error) => {\n promise = null;\n throw error;\n });\n }\n\n return promise;\n };\n}\n"],"mappings":";AAAO,SAAS,KAA6B,IAAgC;AAC3E,MAAI,QAAkB;AACtB,MAAI,UAA6B;AAEjC,SAAO,UAAU,SAAY;AAC3B,QAAI,MAAO,QAAO;AAClB,QAAI,CAAC,SAAS;AACZ,gBAAU,GAAG,GAAG,IAAI,EACjB,KAAK,CAAC,WAAW;AAChB,gBAAQ;AACR,eAAO;AAAA,MACT,CAAC,EACA,MAAM,CAAC,UAAU;AAChB,kBAAU;AACV,cAAM;AAAA,MACR,CAAC;AAAA,IACL;AAEA,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/utils/string.ts
21
+ var string_exports = {};
22
+ __export(string_exports, {
23
+ hasText: () => hasText
24
+ });
25
+ module.exports = __toCommonJS(string_exports);
26
+ function hasText(str) {
27
+ return typeof str === "string" && str.trim().length !== 0;
28
+ }
29
+ // Annotate the CommonJS export names for ESM import in node:
30
+ 0 && (module.exports = {
31
+ hasText
32
+ });
33
+ //# sourceMappingURL=string.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/string.ts"],"sourcesContent":["/**\n * Check whether the given String contains actual text.\n * */\nexport function hasText(str: string | null | undefined): str is string {\n return typeof str === 'string' && str.trim().length !== 0;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,SAAS,QAAQ,KAA+C;AACrE,SAAO,OAAO,QAAQ,YAAY,IAAI,KAAK,EAAE,WAAW;AAC1D;","names":[]}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Check whether the given String contains actual text.
3
+ * */
4
+ declare function hasText(str: string | null | undefined): str is string;
5
+
6
+ export { hasText };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Check whether the given String contains actual text.
3
+ * */
4
+ declare function hasText(str: string | null | undefined): str is string;
5
+
6
+ export { hasText };
@@ -0,0 +1,8 @@
1
+ // src/utils/string.ts
2
+ function hasText(str) {
3
+ return typeof str === "string" && str.trim().length !== 0;
4
+ }
5
+ export {
6
+ hasText
7
+ };
8
+ //# sourceMappingURL=string.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/string.ts"],"sourcesContent":["/**\n * Check whether the given String contains actual text.\n * */\nexport function hasText(str: string | null | undefined): str is string {\n return typeof str === 'string' && str.trim().length !== 0;\n}\n"],"mappings":";AAGO,SAAS,QAAQ,KAA+C;AACrE,SAAO,OAAO,QAAQ,YAAY,IAAI,KAAK,EAAE,WAAW;AAC1D;","names":[]}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/utils/timing.ts
21
+ var timing_exports = {};
22
+ __export(timing_exports, {
23
+ timing: () => timing
24
+ });
25
+ module.exports = __toCommonJS(timing_exports);
26
+ function timing(options = { enabled: true }) {
27
+ const { enabled = true, crossOrigin } = options;
28
+ let start = performance.now();
29
+ const headers = [];
30
+ const timers = /* @__PURE__ */ new Map();
31
+ return {
32
+ startTime: (name, description) => {
33
+ timers.set(name, { description, start: performance.now() });
34
+ },
35
+ endTime: (name, precision) => {
36
+ const timer = timers.get(name);
37
+ if (!timer) {
38
+ console.warn(`timing: ${name} not found`);
39
+ return;
40
+ }
41
+ const { start: start2, description } = timer;
42
+ const dur = (performance.now() - start2).toFixed(precision ?? 1);
43
+ timers.delete(name);
44
+ const metric = description ? `${name};dur=${dur};desc="${description}"` : `${name};dur=${dur}`;
45
+ headers.push(metric);
46
+ },
47
+ mark: (name, description, precision) => {
48
+ const dur = (performance.now() - start).toFixed(precision ?? 1);
49
+ const metric = description ? `${name};dur=${dur};desc="${description}"` : `${name};dur=${dur}`;
50
+ headers.push(metric);
51
+ start = performance.now();
52
+ },
53
+ setMetric: (name, value, description, precision) => {
54
+ if (typeof value === "number") {
55
+ const dur = value.toFixed(precision ?? 1);
56
+ const metric = description ? `${name};dur=${dur};desc="${description}"` : `${name};dur=${dur}`;
57
+ headers.push(metric);
58
+ } else {
59
+ const metric = value ? `${name};desc="${value}"` : `${name}`;
60
+ headers.push(metric);
61
+ }
62
+ },
63
+ setTiming: (response) => {
64
+ if (!enabled) return;
65
+ response.headers.append("Server-Timing", headers.join(","));
66
+ response.headers.append("Timing-Allow-Origin", crossOrigin ?? "*");
67
+ }
68
+ };
69
+ }
70
+ // Annotate the CommonJS export names for ESM import in node:
71
+ 0 && (module.exports = {
72
+ timing
73
+ });
74
+ //# sourceMappingURL=timing.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/timing.ts"],"sourcesContent":["interface Timer {\n description?: string;\n start: number;\n}\n\nexport interface Options {\n enabled: boolean;\n crossOrigin?: string;\n}\n\nexport function timing(options: Options = { enabled: true }) {\n const { enabled = true, crossOrigin } = options;\n let start = performance.now();\n const headers: string[] = [];\n const timers = new Map<string, Timer>();\n\n return {\n startTime: (name: Lowercase<string>, description?: string) => {\n timers.set(name, { description, start: performance.now() });\n },\n endTime: (name: Lowercase<string>, precision?: number) => {\n const timer = timers.get(name);\n if (!timer) {\n console.warn(`timing: ${name} not found`);\n return;\n }\n const { start, description } = timer;\n const dur = (performance.now() - start).toFixed(precision ?? 1);\n timers.delete(name);\n const metric = description\n ? `${name};dur=${dur};desc=\"${description}\"`\n : `${name};dur=${dur}`;\n headers.push(metric);\n },\n mark: (name: Lowercase<string>, description?: string, precision?: number) => {\n const dur = (performance.now() - start).toFixed(precision ?? 1);\n const metric = description\n ? `${name};dur=${dur};desc=\"${description}\"`\n : `${name};dur=${dur}`;\n headers.push(metric);\n start = performance.now();\n },\n setMetric: (\n name: Lowercase<string>,\n value: number | string | undefined,\n description?: string,\n precision?: number\n ) => {\n if (typeof value === 'number') {\n const dur = value.toFixed(precision ?? 1);\n const metric = description\n ? `${name};dur=${dur};desc=\"${description}\"`\n : `${name};dur=${dur}`;\n headers.push(metric);\n } else {\n const metric = value ? `${name};desc=\"${value}\"` : `${name}`;\n headers.push(metric);\n }\n },\n setTiming: (response: Response) => {\n if (!enabled) return;\n response.headers.append('Server-Timing', headers.join(','));\n response.headers.append('Timing-Allow-Origin', crossOrigin ?? '*');\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAUO,SAAS,OAAO,UAAmB,EAAE,SAAS,KAAK,GAAG;AAC3D,QAAM,EAAE,UAAU,MAAM,YAAY,IAAI;AACxC,MAAI,QAAQ,YAAY,IAAI;AAC5B,QAAM,UAAoB,CAAC;AAC3B,QAAM,SAAS,oBAAI,IAAmB;AAEtC,SAAO;AAAA,IACL,WAAW,CAAC,MAAyB,gBAAyB;AAC5D,aAAO,IAAI,MAAM,EAAE,aAAa,OAAO,YAAY,IAAI,EAAE,CAAC;AAAA,IAC5D;AAAA,IACA,SAAS,CAAC,MAAyB,cAAuB;AACxD,YAAM,QAAQ,OAAO,IAAI,IAAI;AAC7B,UAAI,CAAC,OAAO;AACV,gBAAQ,KAAK,WAAW,IAAI,YAAY;AACxC;AAAA,MACF;AACA,YAAM,EAAE,OAAAA,QAAO,YAAY,IAAI;AAC/B,YAAM,OAAO,YAAY,IAAI,IAAIA,QAAO,QAAQ,aAAa,CAAC;AAC9D,aAAO,OAAO,IAAI;AAClB,YAAM,SAAS,cACX,GAAG,IAAI,QAAQ,GAAG,UAAU,WAAW,MACvC,GAAG,IAAI,QAAQ,GAAG;AACtB,cAAQ,KAAK,MAAM;AAAA,IACrB;AAAA,IACA,MAAM,CAAC,MAAyB,aAAsB,cAAuB;AAC3E,YAAM,OAAO,YAAY,IAAI,IAAI,OAAO,QAAQ,aAAa,CAAC;AAC9D,YAAM,SAAS,cACX,GAAG,IAAI,QAAQ,GAAG,UAAU,WAAW,MACvC,GAAG,IAAI,QAAQ,GAAG;AACtB,cAAQ,KAAK,MAAM;AACnB,cAAQ,YAAY,IAAI;AAAA,IAC1B;AAAA,IACA,WAAW,CACT,MACA,OACA,aACA,cACG;AACH,UAAI,OAAO,UAAU,UAAU;AAC7B,cAAM,MAAM,MAAM,QAAQ,aAAa,CAAC;AACxC,cAAM,SAAS,cACX,GAAG,IAAI,QAAQ,GAAG,UAAU,WAAW,MACvC,GAAG,IAAI,QAAQ,GAAG;AACtB,gBAAQ,KAAK,MAAM;AAAA,MACrB,OAAO;AACL,cAAM,SAAS,QAAQ,GAAG,IAAI,UAAU,KAAK,MAAM,GAAG,IAAI;AAC1D,gBAAQ,KAAK,MAAM;AAAA,MACrB;AAAA,IACF;AAAA,IACA,WAAW,CAAC,aAAuB;AACjC,UAAI,CAAC,QAAS;AACd,eAAS,QAAQ,OAAO,iBAAiB,QAAQ,KAAK,GAAG,CAAC;AAC1D,eAAS,QAAQ,OAAO,uBAAuB,eAAe,GAAG;AAAA,IACnE;AAAA,EACF;AACF;","names":["start"]}
@@ -0,0 +1,13 @@
1
+ interface Options {
2
+ enabled: boolean;
3
+ crossOrigin?: string;
4
+ }
5
+ declare function timing(options?: Options): {
6
+ startTime: (name: Lowercase<string>, description?: string) => void;
7
+ endTime: (name: Lowercase<string>, precision?: number) => void;
8
+ mark: (name: Lowercase<string>, description?: string, precision?: number) => void;
9
+ setMetric: (name: Lowercase<string>, value: number | string | undefined, description?: string, precision?: number) => void;
10
+ setTiming: (response: Response) => void;
11
+ };
12
+
13
+ export { type Options, timing };
@@ -0,0 +1,13 @@
1
+ interface Options {
2
+ enabled: boolean;
3
+ crossOrigin?: string;
4
+ }
5
+ declare function timing(options?: Options): {
6
+ startTime: (name: Lowercase<string>, description?: string) => void;
7
+ endTime: (name: Lowercase<string>, precision?: number) => void;
8
+ mark: (name: Lowercase<string>, description?: string, precision?: number) => void;
9
+ setMetric: (name: Lowercase<string>, value: number | string | undefined, description?: string, precision?: number) => void;
10
+ setTiming: (response: Response) => void;
11
+ };
12
+
13
+ export { type Options, timing };
@@ -0,0 +1,49 @@
1
+ // src/utils/timing.ts
2
+ function timing(options = { enabled: true }) {
3
+ const { enabled = true, crossOrigin } = options;
4
+ let start = performance.now();
5
+ const headers = [];
6
+ const timers = /* @__PURE__ */ new Map();
7
+ return {
8
+ startTime: (name, description) => {
9
+ timers.set(name, { description, start: performance.now() });
10
+ },
11
+ endTime: (name, precision) => {
12
+ const timer = timers.get(name);
13
+ if (!timer) {
14
+ console.warn(`timing: ${name} not found`);
15
+ return;
16
+ }
17
+ const { start: start2, description } = timer;
18
+ const dur = (performance.now() - start2).toFixed(precision ?? 1);
19
+ timers.delete(name);
20
+ const metric = description ? `${name};dur=${dur};desc="${description}"` : `${name};dur=${dur}`;
21
+ headers.push(metric);
22
+ },
23
+ mark: (name, description, precision) => {
24
+ const dur = (performance.now() - start).toFixed(precision ?? 1);
25
+ const metric = description ? `${name};dur=${dur};desc="${description}"` : `${name};dur=${dur}`;
26
+ headers.push(metric);
27
+ start = performance.now();
28
+ },
29
+ setMetric: (name, value, description, precision) => {
30
+ if (typeof value === "number") {
31
+ const dur = value.toFixed(precision ?? 1);
32
+ const metric = description ? `${name};dur=${dur};desc="${description}"` : `${name};dur=${dur}`;
33
+ headers.push(metric);
34
+ } else {
35
+ const metric = value ? `${name};desc="${value}"` : `${name}`;
36
+ headers.push(metric);
37
+ }
38
+ },
39
+ setTiming: (response) => {
40
+ if (!enabled) return;
41
+ response.headers.append("Server-Timing", headers.join(","));
42
+ response.headers.append("Timing-Allow-Origin", crossOrigin ?? "*");
43
+ }
44
+ };
45
+ }
46
+ export {
47
+ timing
48
+ };
49
+ //# sourceMappingURL=timing.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/timing.ts"],"sourcesContent":["interface Timer {\n description?: string;\n start: number;\n}\n\nexport interface Options {\n enabled: boolean;\n crossOrigin?: string;\n}\n\nexport function timing(options: Options = { enabled: true }) {\n const { enabled = true, crossOrigin } = options;\n let start = performance.now();\n const headers: string[] = [];\n const timers = new Map<string, Timer>();\n\n return {\n startTime: (name: Lowercase<string>, description?: string) => {\n timers.set(name, { description, start: performance.now() });\n },\n endTime: (name: Lowercase<string>, precision?: number) => {\n const timer = timers.get(name);\n if (!timer) {\n console.warn(`timing: ${name} not found`);\n return;\n }\n const { start, description } = timer;\n const dur = (performance.now() - start).toFixed(precision ?? 1);\n timers.delete(name);\n const metric = description\n ? `${name};dur=${dur};desc=\"${description}\"`\n : `${name};dur=${dur}`;\n headers.push(metric);\n },\n mark: (name: Lowercase<string>, description?: string, precision?: number) => {\n const dur = (performance.now() - start).toFixed(precision ?? 1);\n const metric = description\n ? `${name};dur=${dur};desc=\"${description}\"`\n : `${name};dur=${dur}`;\n headers.push(metric);\n start = performance.now();\n },\n setMetric: (\n name: Lowercase<string>,\n value: number | string | undefined,\n description?: string,\n precision?: number\n ) => {\n if (typeof value === 'number') {\n const dur = value.toFixed(precision ?? 1);\n const metric = description\n ? `${name};dur=${dur};desc=\"${description}\"`\n : `${name};dur=${dur}`;\n headers.push(metric);\n } else {\n const metric = value ? `${name};desc=\"${value}\"` : `${name}`;\n headers.push(metric);\n }\n },\n setTiming: (response: Response) => {\n if (!enabled) return;\n response.headers.append('Server-Timing', headers.join(','));\n response.headers.append('Timing-Allow-Origin', crossOrigin ?? '*');\n },\n };\n}\n"],"mappings":";AAUO,SAAS,OAAO,UAAmB,EAAE,SAAS,KAAK,GAAG;AAC3D,QAAM,EAAE,UAAU,MAAM,YAAY,IAAI;AACxC,MAAI,QAAQ,YAAY,IAAI;AAC5B,QAAM,UAAoB,CAAC;AAC3B,QAAM,SAAS,oBAAI,IAAmB;AAEtC,SAAO;AAAA,IACL,WAAW,CAAC,MAAyB,gBAAyB;AAC5D,aAAO,IAAI,MAAM,EAAE,aAAa,OAAO,YAAY,IAAI,EAAE,CAAC;AAAA,IAC5D;AAAA,IACA,SAAS,CAAC,MAAyB,cAAuB;AACxD,YAAM,QAAQ,OAAO,IAAI,IAAI;AAC7B,UAAI,CAAC,OAAO;AACV,gBAAQ,KAAK,WAAW,IAAI,YAAY;AACxC;AAAA,MACF;AACA,YAAM,EAAE,OAAAA,QAAO,YAAY,IAAI;AAC/B,YAAM,OAAO,YAAY,IAAI,IAAIA,QAAO,QAAQ,aAAa,CAAC;AAC9D,aAAO,OAAO,IAAI;AAClB,YAAM,SAAS,cACX,GAAG,IAAI,QAAQ,GAAG,UAAU,WAAW,MACvC,GAAG,IAAI,QAAQ,GAAG;AACtB,cAAQ,KAAK,MAAM;AAAA,IACrB;AAAA,IACA,MAAM,CAAC,MAAyB,aAAsB,cAAuB;AAC3E,YAAM,OAAO,YAAY,IAAI,IAAI,OAAO,QAAQ,aAAa,CAAC;AAC9D,YAAM,SAAS,cACX,GAAG,IAAI,QAAQ,GAAG,UAAU,WAAW,MACvC,GAAG,IAAI,QAAQ,GAAG;AACtB,cAAQ,KAAK,MAAM;AACnB,cAAQ,YAAY,IAAI;AAAA,IAC1B;AAAA,IACA,WAAW,CACT,MACA,OACA,aACA,cACG;AACH,UAAI,OAAO,UAAU,UAAU;AAC7B,cAAM,MAAM,MAAM,QAAQ,aAAa,CAAC;AACxC,cAAM,SAAS,cACX,GAAG,IAAI,QAAQ,GAAG,UAAU,WAAW,MACvC,GAAG,IAAI,QAAQ,GAAG;AACtB,gBAAQ,KAAK,MAAM;AAAA,MACrB,OAAO;AACL,cAAM,SAAS,QAAQ,GAAG,IAAI,UAAU,KAAK,MAAM,GAAG,IAAI;AAC1D,gBAAQ,KAAK,MAAM;AAAA,MACrB;AAAA,IACF;AAAA,IACA,WAAW,CAAC,aAAuB;AACjC,UAAI,CAAC,QAAS;AACd,eAAS,QAAQ,OAAO,iBAAiB,QAAQ,KAAK,GAAG,CAAC;AAC1D,eAAS,QAAQ,OAAO,uBAAuB,eAAe,GAAG;AAAA,IACnE;AAAA,EACF;AACF;","names":["start"]}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/utils/token-bucket.ts
21
+ var token_bucket_exports = {};
22
+ __export(token_bucket_exports, {
23
+ TokenBucket: () => TokenBucket
24
+ });
25
+ module.exports = __toCommonJS(token_bucket_exports);
26
+ var INTERVAL_MAP = {
27
+ second: 1e3,
28
+ minute: 60 * 1e3,
29
+ hour: 60 * 60 * 1e3,
30
+ day: 24 * 60 * 60 * 1e3
31
+ };
32
+ var TokenBucket = class {
33
+ rate;
34
+ capacity;
35
+ requested;
36
+ timer;
37
+ tokens;
38
+ constructor({ rate, capacity, requested, interval = "second" }) {
39
+ if (rate <= 0) throw new Error("rate must be greater than 0");
40
+ if (capacity <= 0) throw new Error("capacity must be greater than 0");
41
+ if (requested <= 0) throw new Error("requested must be greater than 0");
42
+ if (requested > capacity) throw new Error("requested must be less than or equal to capacity");
43
+ this.rate = rate;
44
+ this.capacity = capacity;
45
+ this.requested = requested;
46
+ this.tokens = capacity;
47
+ this.timer = setInterval(() => {
48
+ if (this.tokens < this.capacity) {
49
+ const tokens = this.tokens + this.rate;
50
+ this.tokens = Math.min(tokens, this.capacity);
51
+ }
52
+ }, INTERVAL_MAP[interval]);
53
+ }
54
+ wait(ms) {
55
+ return new Promise((resolve) => setTimeout(resolve, ms));
56
+ }
57
+ async removeTokens() {
58
+ while (this.tokens < this.requested) {
59
+ const ms = Math.ceil(1e3 * (this.requested - this.tokens) / this.rate);
60
+ await this.wait(ms);
61
+ }
62
+ this.tokens -= this.requested;
63
+ return this.tokens;
64
+ }
65
+ destroy() {
66
+ clearInterval(this.timer);
67
+ }
68
+ };
69
+ // Annotate the CommonJS export names for ESM import in node:
70
+ 0 && (module.exports = {
71
+ TokenBucket
72
+ });
73
+ //# sourceMappingURL=token-bucket.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/token-bucket.ts"],"sourcesContent":["type Interval = 'second' | 'minute' | 'hour' | 'day';\n\nconst INTERVAL_MAP: Record<Interval, number> = {\n second: 1000,\n minute: 60 * 1000,\n hour: 60 * 60 * 1000,\n day: 24 * 60 * 60 * 1000,\n};\n\nexport interface TokenBucketOptions {\n rate: number;\n capacity: number;\n requested: number;\n interval?: Interval;\n}\n\nexport class TokenBucket {\n readonly rate: number;\n readonly capacity: number;\n readonly requested: number;\n private readonly timer: number | NodeJS.Timeout;\n private tokens: number;\n\n constructor({ rate, capacity, requested, interval = 'second' }: TokenBucketOptions) {\n if (rate <= 0) throw new Error('rate must be greater than 0');\n if (capacity <= 0) throw new Error('capacity must be greater than 0');\n if (requested <= 0) throw new Error('requested must be greater than 0');\n if (requested > capacity) throw new Error('requested must be less than or equal to capacity');\n\n this.rate = rate;\n this.capacity = capacity;\n this.requested = requested;\n this.tokens = capacity;\n this.timer = setInterval(() => {\n if (this.tokens < this.capacity) {\n const tokens = this.tokens + this.rate;\n this.tokens = Math.min(tokens, this.capacity);\n }\n }, INTERVAL_MAP[interval]);\n }\n\n private wait(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n async removeTokens(): Promise<number> {\n while (this.tokens < this.requested) {\n const ms = Math.ceil((1000 * (this.requested - this.tokens)) / this.rate);\n await this.wait(ms);\n }\n this.tokens -= this.requested;\n return this.tokens;\n }\n\n destroy() {\n clearInterval(this.timer);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,IAAM,eAAyC;AAAA,EAC7C,QAAQ;AAAA,EACR,QAAQ,KAAK;AAAA,EACb,MAAM,KAAK,KAAK;AAAA,EAChB,KAAK,KAAK,KAAK,KAAK;AACtB;AASO,IAAM,cAAN,MAAkB;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACQ;AAAA,EACT;AAAA,EAER,YAAY,EAAE,MAAM,UAAU,WAAW,WAAW,SAAS,GAAuB;AAClF,QAAI,QAAQ,EAAG,OAAM,IAAI,MAAM,6BAA6B;AAC5D,QAAI,YAAY,EAAG,OAAM,IAAI,MAAM,iCAAiC;AACpE,QAAI,aAAa,EAAG,OAAM,IAAI,MAAM,kCAAkC;AACtE,QAAI,YAAY,SAAU,OAAM,IAAI,MAAM,kDAAkD;AAE5F,SAAK,OAAO;AACZ,SAAK,WAAW;AAChB,SAAK,YAAY;AACjB,SAAK,SAAS;AACd,SAAK,QAAQ,YAAY,MAAM;AAC7B,UAAI,KAAK,SAAS,KAAK,UAAU;AAC/B,cAAM,SAAS,KAAK,SAAS,KAAK;AAClC,aAAK,SAAS,KAAK,IAAI,QAAQ,KAAK,QAAQ;AAAA,MAC9C;AAAA,IACF,GAAG,aAAa,QAAQ,CAAC;AAAA,EAC3B;AAAA,EAEQ,KAAK,IAA2B;AACtC,WAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AAAA,EACzD;AAAA,EAEA,MAAM,eAAgC;AACpC,WAAO,KAAK,SAAS,KAAK,WAAW;AACnC,YAAM,KAAK,KAAK,KAAM,OAAQ,KAAK,YAAY,KAAK,UAAW,KAAK,IAAI;AACxE,YAAM,KAAK,KAAK,EAAE;AAAA,IACpB;AACA,SAAK,UAAU,KAAK;AACpB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,UAAU;AACR,kBAAc,KAAK,KAAK;AAAA,EAC1B;AACF;","names":[]}
@@ -0,0 +1,20 @@
1
+ type Interval = 'second' | 'minute' | 'hour' | 'day';
2
+ interface TokenBucketOptions {
3
+ rate: number;
4
+ capacity: number;
5
+ requested: number;
6
+ interval?: Interval;
7
+ }
8
+ declare class TokenBucket {
9
+ readonly rate: number;
10
+ readonly capacity: number;
11
+ readonly requested: number;
12
+ private readonly timer;
13
+ private tokens;
14
+ constructor({ rate, capacity, requested, interval }: TokenBucketOptions);
15
+ private wait;
16
+ removeTokens(): Promise<number>;
17
+ destroy(): void;
18
+ }
19
+
20
+ export { TokenBucket, type TokenBucketOptions };
@@ -0,0 +1,20 @@
1
+ type Interval = 'second' | 'minute' | 'hour' | 'day';
2
+ interface TokenBucketOptions {
3
+ rate: number;
4
+ capacity: number;
5
+ requested: number;
6
+ interval?: Interval;
7
+ }
8
+ declare class TokenBucket {
9
+ readonly rate: number;
10
+ readonly capacity: number;
11
+ readonly requested: number;
12
+ private readonly timer;
13
+ private tokens;
14
+ constructor({ rate, capacity, requested, interval }: TokenBucketOptions);
15
+ private wait;
16
+ removeTokens(): Promise<number>;
17
+ destroy(): void;
18
+ }
19
+
20
+ export { TokenBucket, type TokenBucketOptions };
@@ -0,0 +1,48 @@
1
+ // src/utils/token-bucket.ts
2
+ var INTERVAL_MAP = {
3
+ second: 1e3,
4
+ minute: 60 * 1e3,
5
+ hour: 60 * 60 * 1e3,
6
+ day: 24 * 60 * 60 * 1e3
7
+ };
8
+ var TokenBucket = class {
9
+ rate;
10
+ capacity;
11
+ requested;
12
+ timer;
13
+ tokens;
14
+ constructor({ rate, capacity, requested, interval = "second" }) {
15
+ if (rate <= 0) throw new Error("rate must be greater than 0");
16
+ if (capacity <= 0) throw new Error("capacity must be greater than 0");
17
+ if (requested <= 0) throw new Error("requested must be greater than 0");
18
+ if (requested > capacity) throw new Error("requested must be less than or equal to capacity");
19
+ this.rate = rate;
20
+ this.capacity = capacity;
21
+ this.requested = requested;
22
+ this.tokens = capacity;
23
+ this.timer = setInterval(() => {
24
+ if (this.tokens < this.capacity) {
25
+ const tokens = this.tokens + this.rate;
26
+ this.tokens = Math.min(tokens, this.capacity);
27
+ }
28
+ }, INTERVAL_MAP[interval]);
29
+ }
30
+ wait(ms) {
31
+ return new Promise((resolve) => setTimeout(resolve, ms));
32
+ }
33
+ async removeTokens() {
34
+ while (this.tokens < this.requested) {
35
+ const ms = Math.ceil(1e3 * (this.requested - this.tokens) / this.rate);
36
+ await this.wait(ms);
37
+ }
38
+ this.tokens -= this.requested;
39
+ return this.tokens;
40
+ }
41
+ destroy() {
42
+ clearInterval(this.timer);
43
+ }
44
+ };
45
+ export {
46
+ TokenBucket
47
+ };
48
+ //# sourceMappingURL=token-bucket.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/token-bucket.ts"],"sourcesContent":["type Interval = 'second' | 'minute' | 'hour' | 'day';\n\nconst INTERVAL_MAP: Record<Interval, number> = {\n second: 1000,\n minute: 60 * 1000,\n hour: 60 * 60 * 1000,\n day: 24 * 60 * 60 * 1000,\n};\n\nexport interface TokenBucketOptions {\n rate: number;\n capacity: number;\n requested: number;\n interval?: Interval;\n}\n\nexport class TokenBucket {\n readonly rate: number;\n readonly capacity: number;\n readonly requested: number;\n private readonly timer: number | NodeJS.Timeout;\n private tokens: number;\n\n constructor({ rate, capacity, requested, interval = 'second' }: TokenBucketOptions) {\n if (rate <= 0) throw new Error('rate must be greater than 0');\n if (capacity <= 0) throw new Error('capacity must be greater than 0');\n if (requested <= 0) throw new Error('requested must be greater than 0');\n if (requested > capacity) throw new Error('requested must be less than or equal to capacity');\n\n this.rate = rate;\n this.capacity = capacity;\n this.requested = requested;\n this.tokens = capacity;\n this.timer = setInterval(() => {\n if (this.tokens < this.capacity) {\n const tokens = this.tokens + this.rate;\n this.tokens = Math.min(tokens, this.capacity);\n }\n }, INTERVAL_MAP[interval]);\n }\n\n private wait(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n async removeTokens(): Promise<number> {\n while (this.tokens < this.requested) {\n const ms = Math.ceil((1000 * (this.requested - this.tokens)) / this.rate);\n await this.wait(ms);\n }\n this.tokens -= this.requested;\n return this.tokens;\n }\n\n destroy() {\n clearInterval(this.timer);\n }\n}\n"],"mappings":";AAEA,IAAM,eAAyC;AAAA,EAC7C,QAAQ;AAAA,EACR,QAAQ,KAAK;AAAA,EACb,MAAM,KAAK,KAAK;AAAA,EAChB,KAAK,KAAK,KAAK,KAAK;AACtB;AASO,IAAM,cAAN,MAAkB;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACQ;AAAA,EACT;AAAA,EAER,YAAY,EAAE,MAAM,UAAU,WAAW,WAAW,SAAS,GAAuB;AAClF,QAAI,QAAQ,EAAG,OAAM,IAAI,MAAM,6BAA6B;AAC5D,QAAI,YAAY,EAAG,OAAM,IAAI,MAAM,iCAAiC;AACpE,QAAI,aAAa,EAAG,OAAM,IAAI,MAAM,kCAAkC;AACtE,QAAI,YAAY,SAAU,OAAM,IAAI,MAAM,kDAAkD;AAE5F,SAAK,OAAO;AACZ,SAAK,WAAW;AAChB,SAAK,YAAY;AACjB,SAAK,SAAS;AACd,SAAK,QAAQ,YAAY,MAAM;AAC7B,UAAI,KAAK,SAAS,KAAK,UAAU;AAC/B,cAAM,SAAS,KAAK,SAAS,KAAK;AAClC,aAAK,SAAS,KAAK,IAAI,QAAQ,KAAK,QAAQ;AAAA,MAC9C;AAAA,IACF,GAAG,aAAa,QAAQ,CAAC;AAAA,EAC3B;AAAA,EAEQ,KAAK,IAA2B;AACtC,WAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AAAA,EACzD;AAAA,EAEA,MAAM,eAAgC;AACpC,WAAO,KAAK,SAAS,KAAK,WAAW;AACnC,YAAM,KAAK,KAAK,KAAM,OAAQ,KAAK,YAAY,KAAK,UAAW,KAAK,IAAI;AACxE,YAAM,KAAK,KAAK,EAAE;AAAA,IACpB;AACA,SAAK,UAAU,KAAK;AACpB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,UAAU;AACR,kBAAc,KAAK,KAAK;AAAA,EAC1B;AACF;","names":[]}