@venizia/ignis-helpers 0.2.0-9 → 0.2.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 (754) hide show
  1. package/LICENSE.md +0 -1
  2. package/README.md +73 -151
  3. package/dist/cjs/common/constants/mime.d.ts +67 -0
  4. package/dist/cjs/common/constants/mime.d.ts.map +1 -1
  5. package/dist/cjs/common/constants/mime.js +138 -1
  6. package/dist/cjs/common/constants/mime.js.map +1 -1
  7. package/dist/cjs/common/redact.d.ts.map +1 -1
  8. package/dist/cjs/common/redact.js +46 -5
  9. package/dist/cjs/common/redact.js.map +1 -1
  10. package/dist/cjs/common/resolvers.d.ts +5 -8
  11. package/dist/cjs/common/resolvers.d.ts.map +1 -1
  12. package/dist/cjs/common/resolvers.js +13 -26
  13. package/dist/cjs/common/resolvers.js.map +1 -1
  14. package/dist/cjs/common/types/resolver.d.ts +1 -4
  15. package/dist/cjs/common/types/resolver.d.ts.map +1 -1
  16. package/dist/cjs/core.d.ts +18 -8
  17. package/dist/cjs/core.d.ts.map +1 -1
  18. package/dist/cjs/core.js +26 -10
  19. package/dist/cjs/core.js.map +1 -1
  20. package/dist/cjs/modules/base.d.ts +4 -1
  21. package/dist/cjs/modules/base.d.ts.map +1 -1
  22. package/dist/cjs/modules/base.js +15 -4
  23. package/dist/cjs/modules/base.js.map +1 -1
  24. package/dist/cjs/modules/cron/helper.d.ts.map +1 -1
  25. package/dist/cjs/modules/cron/helper.js +2 -5
  26. package/dist/cjs/modules/cron/helper.js.map +1 -1
  27. package/dist/cjs/modules/crypto/algorithms/aes-legacy.algorithm.js +3 -3
  28. package/dist/cjs/modules/crypto/algorithms/aes-legacy.algorithm.js.map +1 -1
  29. package/dist/cjs/modules/crypto/algorithms/aes.algorithm.js +5 -5
  30. package/dist/cjs/modules/crypto/algorithms/aes.algorithm.js.map +1 -1
  31. package/dist/cjs/modules/crypto/algorithms/hash.algorithm.d.ts +1 -4
  32. package/dist/cjs/modules/crypto/algorithms/hash.algorithm.d.ts.map +1 -1
  33. package/dist/cjs/modules/crypto/algorithms/hash.algorithm.js +1 -4
  34. package/dist/cjs/modules/crypto/algorithms/hash.algorithm.js.map +1 -1
  35. package/dist/cjs/modules/env/app-env.d.ts +11 -0
  36. package/dist/cjs/modules/env/app-env.d.ts.map +1 -1
  37. package/dist/cjs/modules/env/app-env.js +32 -6
  38. package/dist/cjs/modules/env/app-env.js.map +1 -1
  39. package/dist/cjs/modules/index.d.ts +1 -1
  40. package/dist/cjs/modules/index.d.ts.map +1 -1
  41. package/dist/cjs/modules/index.js +1 -1
  42. package/dist/cjs/modules/index.js.map +1 -1
  43. package/dist/cjs/modules/logger/base/base.d.ts.map +1 -1
  44. package/dist/cjs/modules/logger/base/base.js +3 -0
  45. package/dist/cjs/modules/logger/base/base.js.map +1 -1
  46. package/dist/cjs/modules/logger/factory.d.ts.map +1 -1
  47. package/dist/cjs/modules/logger/factory.js +2 -1
  48. package/dist/cjs/modules/logger/factory.js.map +1 -1
  49. package/dist/cjs/modules/logger/formatting/error-prettier.d.ts +6 -0
  50. package/dist/cjs/modules/logger/formatting/error-prettier.d.ts.map +1 -1
  51. package/dist/cjs/modules/logger/formatting/error-prettier.js +35 -1
  52. package/dist/cjs/modules/logger/formatting/error-prettier.js.map +1 -1
  53. package/dist/cjs/modules/logger/hf/logger.d.ts.map +1 -1
  54. package/dist/cjs/modules/logger/hf/logger.js +3 -0
  55. package/dist/cjs/modules/logger/hf/logger.js.map +1 -1
  56. package/dist/cjs/modules/logger/pino/destination.d.ts.map +1 -1
  57. package/dist/cjs/modules/logger/pino/destination.js +2 -1
  58. package/dist/cjs/modules/logger/pino/destination.js.map +1 -1
  59. package/dist/cjs/modules/logger/resolver.d.ts +1 -1
  60. package/dist/cjs/modules/logger/resolver.d.ts.map +1 -1
  61. package/dist/cjs/modules/logger/resolver.js +8 -1
  62. package/dist/cjs/modules/logger/resolver.js.map +1 -1
  63. package/dist/cjs/modules/logger/slot.d.ts +23 -0
  64. package/dist/cjs/modules/logger/slot.d.ts.map +1 -0
  65. package/dist/cjs/modules/logger/slot.js +124 -0
  66. package/dist/cjs/modules/logger/slot.js.map +1 -0
  67. package/dist/cjs/modules/logger/winston/common/constants.d.ts.map +1 -1
  68. package/dist/cjs/modules/logger/winston/common/constants.js +6 -5
  69. package/dist/cjs/modules/logger/winston/common/constants.js.map +1 -1
  70. package/dist/cjs/modules/network/http-request/base-network-request.helper.d.ts.map +1 -1
  71. package/dist/cjs/modules/network/http-request/base-network-request.helper.js +4 -6
  72. package/dist/cjs/modules/network/http-request/base-network-request.helper.js.map +1 -1
  73. package/dist/cjs/modules/network/http-request/fetcher/node-fetcher.d.ts.map +1 -1
  74. package/dist/cjs/modules/network/http-request/fetcher/node-fetcher.js +3 -3
  75. package/dist/cjs/modules/network/http-request/fetcher/node-fetcher.js.map +1 -1
  76. package/dist/cjs/modules/network/index.d.ts +1 -0
  77. package/dist/cjs/modules/network/index.d.ts.map +1 -1
  78. package/dist/cjs/modules/network/index.js +1 -0
  79. package/dist/cjs/modules/network/index.js.map +1 -1
  80. package/dist/cjs/modules/network/tcp-socket/base-tcp-client.helper.d.ts.map +1 -1
  81. package/dist/cjs/modules/network/tcp-socket/base-tcp-client.helper.js +2 -5
  82. package/dist/cjs/modules/network/tcp-socket/base-tcp-client.helper.js.map +1 -1
  83. package/dist/cjs/modules/network/tcp-socket/base-tcp-server.helper.d.ts +2 -3
  84. package/dist/cjs/modules/network/tcp-socket/base-tcp-server.helper.d.ts.map +1 -1
  85. package/dist/cjs/modules/network/tcp-socket/base-tcp-server.helper.js +5 -5
  86. package/dist/cjs/modules/network/tcp-socket/base-tcp-server.helper.js.map +1 -1
  87. package/dist/cjs/modules/network/utilities/index.d.ts +3 -0
  88. package/dist/cjs/modules/network/utilities/index.d.ts.map +1 -0
  89. package/dist/cjs/modules/network/utilities/index.js +19 -0
  90. package/dist/cjs/modules/network/utilities/index.js.map +1 -0
  91. package/dist/cjs/modules/network/utilities/query-string.d.ts +26 -0
  92. package/dist/cjs/modules/network/utilities/query-string.d.ts.map +1 -0
  93. package/dist/cjs/modules/network/utilities/query-string.js +49 -0
  94. package/dist/cjs/modules/network/utilities/query-string.js.map +1 -0
  95. package/dist/cjs/modules/network/utilities/url-safety/common/constants.d.ts +18 -0
  96. package/dist/cjs/modules/network/utilities/url-safety/common/constants.d.ts.map +1 -0
  97. package/dist/cjs/modules/network/utilities/url-safety/common/constants.js +23 -0
  98. package/dist/cjs/modules/network/utilities/url-safety/common/constants.js.map +1 -0
  99. package/dist/cjs/modules/network/utilities/url-safety/common/errors.d.ts +31 -0
  100. package/dist/cjs/modules/network/utilities/url-safety/common/errors.d.ts.map +1 -0
  101. package/dist/cjs/modules/network/utilities/url-safety/common/errors.js +30 -0
  102. package/dist/cjs/modules/network/utilities/url-safety/common/errors.js.map +1 -0
  103. package/dist/cjs/modules/network/utilities/url-safety/common/index.d.ts +4 -0
  104. package/dist/cjs/modules/network/utilities/url-safety/common/index.d.ts.map +1 -0
  105. package/dist/cjs/modules/network/utilities/url-safety/common/index.js +20 -0
  106. package/dist/cjs/modules/network/utilities/url-safety/common/index.js.map +1 -0
  107. package/dist/cjs/modules/network/utilities/url-safety/common/types.d.ts +24 -0
  108. package/dist/cjs/modules/network/utilities/url-safety/common/types.d.ts.map +1 -0
  109. package/dist/cjs/modules/network/utilities/url-safety/common/types.js +3 -0
  110. package/dist/cjs/modules/network/utilities/url-safety/common/types.js.map +1 -0
  111. package/dist/cjs/modules/network/utilities/url-safety/index.d.ts +4 -0
  112. package/dist/cjs/modules/network/utilities/url-safety/index.d.ts.map +1 -0
  113. package/dist/cjs/modules/network/utilities/url-safety/index.js +20 -0
  114. package/dist/cjs/modules/network/utilities/url-safety/index.js.map +1 -0
  115. package/dist/cjs/modules/network/utilities/url-safety/ingest.d.ts +52 -0
  116. package/dist/cjs/modules/network/utilities/url-safety/ingest.d.ts.map +1 -0
  117. package/dist/cjs/modules/network/utilities/url-safety/ingest.js +167 -0
  118. package/dist/cjs/modules/network/utilities/url-safety/ingest.js.map +1 -0
  119. package/dist/cjs/modules/network/utilities/url-safety/policy.d.ts +29 -0
  120. package/dist/cjs/modules/network/utilities/url-safety/policy.d.ts.map +1 -0
  121. package/dist/cjs/modules/network/utilities/url-safety/policy.js +114 -0
  122. package/dist/cjs/modules/network/utilities/url-safety/policy.js.map +1 -0
  123. package/dist/cjs/modules/queue/bullmq/helper.d.ts +25 -4
  124. package/dist/cjs/modules/queue/bullmq/helper.d.ts.map +1 -1
  125. package/dist/cjs/modules/queue/bullmq/helper.js +45 -14
  126. package/dist/cjs/modules/queue/bullmq/helper.js.map +1 -1
  127. package/dist/cjs/modules/queue/internal/sequential/helper.d.ts.map +1 -1
  128. package/dist/cjs/modules/queue/internal/sequential/helper.js +2 -5
  129. package/dist/cjs/modules/queue/internal/sequential/helper.js.map +1 -1
  130. package/dist/cjs/modules/queue/kafka/base.d.ts +8 -4
  131. package/dist/cjs/modules/queue/kafka/base.d.ts.map +1 -1
  132. package/dist/cjs/modules/queue/kafka/base.js +5 -1
  133. package/dist/cjs/modules/queue/kafka/base.js.map +1 -1
  134. package/dist/cjs/modules/queue/kafka/bundler/platformatic-require.plugin.d.ts +1 -1
  135. package/dist/cjs/modules/queue/kafka/bundler/platformatic-require.plugin.d.ts.map +1 -1
  136. package/dist/cjs/modules/queue/kafka/bundler/platformatic-require.plugin.js +1 -1
  137. package/dist/cjs/modules/queue/kafka/bundler/platformatic-require.plugin.js.map +1 -1
  138. package/dist/cjs/modules/queue/kafka/common/types/callbacks.d.ts +10 -0
  139. package/dist/cjs/modules/queue/kafka/common/types/callbacks.d.ts.map +1 -1
  140. package/dist/cjs/modules/queue/kafka/common/types/consumer.d.ts +5 -1
  141. package/dist/cjs/modules/queue/kafka/common/types/consumer.d.ts.map +1 -1
  142. package/dist/cjs/modules/queue/kafka/consumer.d.ts +64 -28
  143. package/dist/cjs/modules/queue/kafka/consumer.d.ts.map +1 -1
  144. package/dist/cjs/modules/queue/kafka/consumer.js +58 -24
  145. package/dist/cjs/modules/queue/kafka/consumer.js.map +1 -1
  146. package/dist/cjs/modules/queue/mqtt/helper.d.ts.map +1 -1
  147. package/dist/cjs/modules/queue/mqtt/helper.js +6 -5
  148. package/dist/cjs/modules/queue/mqtt/helper.js.map +1 -1
  149. package/dist/cjs/modules/redis/base/abstract.helper.d.ts.map +1 -1
  150. package/dist/cjs/modules/redis/base/abstract.helper.js +10 -5
  151. package/dist/cjs/modules/redis/base/abstract.helper.js.map +1 -1
  152. package/dist/cjs/modules/redis/cluster/cluster.helper.d.ts +3 -2
  153. package/dist/cjs/modules/redis/cluster/cluster.helper.d.ts.map +1 -1
  154. package/dist/cjs/modules/redis/cluster/cluster.helper.js +18 -4
  155. package/dist/cjs/modules/redis/cluster/cluster.helper.js.map +1 -1
  156. package/dist/cjs/modules/redis/common/constants.d.ts +4 -0
  157. package/dist/cjs/modules/redis/common/constants.d.ts.map +1 -1
  158. package/dist/cjs/modules/redis/common/constants.js +6 -1
  159. package/dist/cjs/modules/redis/common/constants.js.map +1 -1
  160. package/dist/cjs/modules/redis/common/types.d.ts +13 -3
  161. package/dist/cjs/modules/redis/common/types.d.ts.map +1 -1
  162. package/dist/cjs/modules/redis/sentinel/sentinel.helper.d.ts +1 -1
  163. package/dist/cjs/modules/redis/sentinel/sentinel.helper.d.ts.map +1 -1
  164. package/dist/cjs/modules/redis/sentinel/sentinel.helper.js +3 -2
  165. package/dist/cjs/modules/redis/sentinel/sentinel.helper.js.map +1 -1
  166. package/dist/cjs/modules/redis/single/single.helper.d.ts +1 -1
  167. package/dist/cjs/modules/redis/single/single.helper.d.ts.map +1 -1
  168. package/dist/cjs/modules/redis/single/single.helper.js +4 -5
  169. package/dist/cjs/modules/redis/single/single.helper.js.map +1 -1
  170. package/dist/cjs/modules/secrets/base/abstract.helper.d.ts.map +1 -1
  171. package/dist/cjs/modules/secrets/base/abstract.helper.js +2 -1
  172. package/dist/cjs/modules/secrets/base/abstract.helper.js.map +1 -1
  173. package/dist/cjs/modules/secrets/hashicorp/hashicorp.helper.d.ts.map +1 -1
  174. package/dist/cjs/modules/secrets/hashicorp/hashicorp.helper.js +2 -1
  175. package/dist/cjs/modules/secrets/hashicorp/hashicorp.helper.js.map +1 -1
  176. package/dist/cjs/modules/secrets/system-envs/system-envs.helper.d.ts.map +1 -1
  177. package/dist/cjs/modules/secrets/system-envs/system-envs.helper.js +2 -1
  178. package/dist/cjs/modules/secrets/system-envs/system-envs.helper.js.map +1 -1
  179. package/dist/cjs/modules/socket/socket-io/client/helper.d.ts +2 -1
  180. package/dist/cjs/modules/socket/socket-io/client/helper.d.ts.map +1 -1
  181. package/dist/cjs/modules/socket/socket-io/client/helper.js +10 -4
  182. package/dist/cjs/modules/socket/socket-io/client/helper.js.map +1 -1
  183. package/dist/cjs/modules/socket/socket-io/common/types/client.d.ts +2 -0
  184. package/dist/cjs/modules/socket/socket-io/common/types/client.d.ts.map +1 -1
  185. package/dist/cjs/modules/socket/socket-io/server/helper.d.ts +1 -0
  186. package/dist/cjs/modules/socket/socket-io/server/helper.d.ts.map +1 -1
  187. package/dist/cjs/modules/socket/socket-io/server/helper.js +17 -30
  188. package/dist/cjs/modules/socket/socket-io/server/helper.js.map +1 -1
  189. package/dist/cjs/modules/socket/websocket/server/helper.d.ts.map +1 -1
  190. package/dist/cjs/modules/socket/websocket/server/helper.js +2 -1
  191. package/dist/cjs/modules/socket/websocket/server/helper.js.map +1 -1
  192. package/dist/cjs/modules/storage/base.d.ts +98 -49
  193. package/dist/cjs/modules/storage/base.d.ts.map +1 -1
  194. package/dist/cjs/modules/storage/base.js +201 -93
  195. package/dist/cjs/modules/storage/base.js.map +1 -1
  196. package/dist/cjs/modules/storage/bun-s3/helper.d.ts +74 -29
  197. package/dist/cjs/modules/storage/bun-s3/helper.d.ts.map +1 -1
  198. package/dist/cjs/modules/storage/bun-s3/helper.js +321 -55
  199. package/dist/cjs/modules/storage/bun-s3/helper.js.map +1 -1
  200. package/dist/cjs/modules/storage/bun-s3/utility.d.ts +59 -0
  201. package/dist/cjs/modules/storage/bun-s3/utility.d.ts.map +1 -1
  202. package/dist/cjs/modules/storage/bun-s3/utility.js +218 -28
  203. package/dist/cjs/modules/storage/bun-s3/utility.js.map +1 -1
  204. package/dist/cjs/modules/storage/common/constants.d.ts +27 -0
  205. package/dist/cjs/modules/storage/common/constants.d.ts.map +1 -0
  206. package/dist/cjs/modules/storage/common/constants.js +35 -0
  207. package/dist/cjs/modules/storage/common/constants.js.map +1 -0
  208. package/dist/cjs/modules/storage/common/errors.d.ts +22 -0
  209. package/dist/cjs/modules/storage/common/errors.d.ts.map +1 -0
  210. package/dist/cjs/modules/storage/common/errors.js +25 -0
  211. package/dist/cjs/modules/storage/common/errors.js.map +1 -0
  212. package/dist/cjs/modules/storage/common/index.d.ts +3 -0
  213. package/dist/cjs/modules/storage/common/index.d.ts.map +1 -1
  214. package/dist/cjs/modules/storage/common/index.js +3 -0
  215. package/dist/cjs/modules/storage/common/index.js.map +1 -1
  216. package/dist/cjs/modules/storage/common/types.d.ts +118 -38
  217. package/dist/cjs/modules/storage/common/types.d.ts.map +1 -1
  218. package/dist/cjs/modules/storage/common/utility.d.ts +7 -0
  219. package/dist/cjs/modules/storage/common/utility.d.ts.map +1 -0
  220. package/dist/cjs/modules/storage/common/utility.js +27 -0
  221. package/dist/cjs/modules/storage/common/utility.js.map +1 -0
  222. package/dist/cjs/modules/storage/disk/helper.d.ts +26 -28
  223. package/dist/cjs/modules/storage/disk/helper.d.ts.map +1 -1
  224. package/dist/cjs/modules/storage/disk/helper.js +125 -86
  225. package/dist/cjs/modules/storage/disk/helper.js.map +1 -1
  226. package/dist/cjs/modules/storage/in-memory/helper.d.ts +10 -5
  227. package/dist/cjs/modules/storage/in-memory/helper.d.ts.map +1 -1
  228. package/dist/cjs/modules/storage/in-memory/helper.js +17 -10
  229. package/dist/cjs/modules/storage/in-memory/helper.js.map +1 -1
  230. package/dist/cjs/modules/storage/minio/helper.d.ts +22 -28
  231. package/dist/cjs/modules/storage/minio/helper.d.ts.map +1 -1
  232. package/dist/cjs/modules/storage/minio/helper.js +87 -33
  233. package/dist/cjs/modules/storage/minio/helper.js.map +1 -1
  234. package/dist/cjs/modules/temporal/adapters/dayjs.d.ts +21 -0
  235. package/dist/cjs/modules/temporal/adapters/dayjs.d.ts.map +1 -0
  236. package/dist/cjs/modules/temporal/adapters/dayjs.js +48 -0
  237. package/dist/cjs/modules/temporal/adapters/dayjs.js.map +1 -0
  238. package/dist/cjs/modules/temporal/adapters/guards.d.ts +4 -0
  239. package/dist/cjs/modules/temporal/adapters/guards.d.ts.map +1 -0
  240. package/dist/cjs/modules/temporal/adapters/guards.js +14 -0
  241. package/dist/cjs/modules/temporal/adapters/guards.js.map +1 -0
  242. package/dist/cjs/modules/temporal/adapters/index.d.ts +4 -0
  243. package/dist/cjs/modules/temporal/adapters/index.d.ts.map +1 -0
  244. package/dist/cjs/modules/temporal/adapters/index.js +20 -0
  245. package/dist/cjs/modules/temporal/adapters/index.js.map +1 -0
  246. package/dist/cjs/modules/temporal/adapters/luxon.d.ts +13 -0
  247. package/dist/cjs/modules/temporal/adapters/luxon.d.ts.map +1 -0
  248. package/dist/cjs/modules/temporal/adapters/luxon.js +26 -0
  249. package/dist/cjs/modules/temporal/adapters/luxon.js.map +1 -0
  250. package/dist/cjs/modules/temporal/adapters/native.d.ts +16 -0
  251. package/dist/cjs/modules/temporal/adapters/native.d.ts.map +1 -0
  252. package/dist/cjs/modules/temporal/adapters/native.js +38 -0
  253. package/dist/cjs/modules/temporal/adapters/native.js.map +1 -0
  254. package/dist/cjs/modules/temporal/calendar.d.ts +52 -0
  255. package/dist/cjs/modules/temporal/calendar.d.ts.map +1 -0
  256. package/dist/cjs/modules/temporal/calendar.js +151 -0
  257. package/dist/cjs/modules/temporal/calendar.js.map +1 -0
  258. package/dist/cjs/modules/temporal/common/constants.d.ts +20 -0
  259. package/dist/cjs/modules/temporal/common/constants.d.ts.map +1 -0
  260. package/dist/cjs/modules/temporal/common/constants.js +33 -0
  261. package/dist/cjs/modules/temporal/common/constants.js.map +1 -0
  262. package/dist/cjs/modules/temporal/common/index.d.ts +3 -0
  263. package/dist/cjs/modules/temporal/common/index.d.ts.map +1 -0
  264. package/dist/cjs/modules/temporal/common/index.js +19 -0
  265. package/dist/cjs/modules/temporal/common/index.js.map +1 -0
  266. package/dist/cjs/modules/temporal/common/types.d.ts +69 -0
  267. package/dist/cjs/modules/temporal/common/types.d.ts.map +1 -0
  268. package/dist/cjs/modules/temporal/common/types.js +3 -0
  269. package/dist/cjs/modules/temporal/common/types.js.map +1 -0
  270. package/dist/cjs/modules/temporal/helper.d.ts +120 -0
  271. package/dist/cjs/modules/temporal/helper.d.ts.map +1 -0
  272. package/dist/cjs/modules/temporal/helper.js +326 -0
  273. package/dist/cjs/modules/temporal/helper.js.map +1 -0
  274. package/dist/cjs/modules/temporal/index.d.ts +4 -0
  275. package/dist/cjs/modules/temporal/index.d.ts.map +1 -0
  276. package/dist/cjs/modules/temporal/index.js +20 -0
  277. package/dist/cjs/modules/temporal/index.js.map +1 -0
  278. package/dist/cjs/modules/temporal/pattern.d.ts +24 -0
  279. package/dist/cjs/modules/temporal/pattern.d.ts.map +1 -0
  280. package/dist/cjs/modules/temporal/pattern.js +133 -0
  281. package/dist/cjs/modules/temporal/pattern.js.map +1 -0
  282. package/dist/cjs/modules/temporal/tokens.d.ts +65 -0
  283. package/dist/cjs/modules/temporal/tokens.d.ts.map +1 -0
  284. package/dist/cjs/modules/temporal/tokens.js +113 -0
  285. package/dist/cjs/modules/temporal/tokens.js.map +1 -0
  286. package/dist/cjs/modules/uid/index.d.ts +1 -0
  287. package/dist/cjs/modules/uid/index.d.ts.map +1 -1
  288. package/dist/cjs/modules/uid/index.js +1 -0
  289. package/dist/cjs/modules/uid/index.js.map +1 -1
  290. package/dist/cjs/modules/uid/request-id.d.ts +5 -12
  291. package/dist/cjs/modules/uid/request-id.d.ts.map +1 -1
  292. package/dist/cjs/modules/uid/request-id.js +7 -44
  293. package/dist/cjs/modules/uid/request-id.js.map +1 -1
  294. package/dist/cjs/modules/uid/uuid/common/constants.d.ts +32 -0
  295. package/dist/cjs/modules/uid/uuid/common/constants.d.ts.map +1 -0
  296. package/dist/cjs/modules/uid/uuid/common/constants.js +36 -0
  297. package/dist/cjs/modules/uid/uuid/common/constants.js.map +1 -0
  298. package/dist/cjs/modules/uid/uuid/common/index.d.ts +3 -0
  299. package/dist/cjs/modules/uid/uuid/common/index.d.ts.map +1 -0
  300. package/dist/cjs/modules/uid/uuid/common/index.js +24 -0
  301. package/dist/cjs/modules/uid/uuid/common/index.js.map +1 -0
  302. package/dist/cjs/modules/uid/uuid/common/types.d.ts +6 -0
  303. package/dist/cjs/modules/uid/uuid/common/types.d.ts.map +1 -0
  304. package/dist/cjs/modules/uid/uuid/common/types.js +3 -0
  305. package/dist/cjs/modules/uid/uuid/common/types.js.map +1 -0
  306. package/dist/cjs/modules/uid/uuid/helper.d.ts +37 -0
  307. package/dist/cjs/modules/uid/uuid/helper.d.ts.map +1 -0
  308. package/dist/cjs/modules/uid/uuid/helper.js +49 -0
  309. package/dist/cjs/modules/uid/uuid/helper.js.map +1 -0
  310. package/dist/cjs/modules/uid/uuid/index.d.ts +6 -0
  311. package/dist/cjs/modules/uid/uuid/index.d.ts.map +1 -0
  312. package/dist/cjs/modules/uid/uuid/index.js +22 -0
  313. package/dist/cjs/modules/uid/uuid/index.js.map +1 -0
  314. package/dist/cjs/modules/uid/uuid/sha1.d.ts +19 -0
  315. package/dist/cjs/modules/uid/uuid/sha1.d.ts.map +1 -0
  316. package/dist/cjs/modules/uid/uuid/sha1.js +105 -0
  317. package/dist/cjs/modules/uid/uuid/sha1.js.map +1 -0
  318. package/dist/cjs/modules/uid/uuid/v4.d.ts +9 -0
  319. package/dist/cjs/modules/uid/uuid/v4.d.ts.map +1 -0
  320. package/dist/cjs/modules/uid/uuid/v4.js +54 -0
  321. package/dist/cjs/modules/uid/uuid/v4.js.map +1 -0
  322. package/dist/cjs/modules/uid/uuid/v5.d.ts +15 -0
  323. package/dist/cjs/modules/uid/uuid/v5.d.ts.map +1 -0
  324. package/dist/cjs/modules/uid/uuid/v5.js +90 -0
  325. package/dist/cjs/modules/uid/uuid/v5.js.map +1 -0
  326. package/dist/cjs/modules/uid/uuid/v7.d.ts +11 -0
  327. package/dist/cjs/modules/uid/uuid/v7.d.ts.map +1 -0
  328. package/dist/cjs/modules/uid/uuid/v7.js +95 -0
  329. package/dist/cjs/modules/uid/uuid/v7.js.map +1 -0
  330. package/dist/cjs/temporal.d.ts +2 -0
  331. package/dist/cjs/temporal.d.ts.map +1 -0
  332. package/dist/cjs/temporal.js +19 -0
  333. package/dist/cjs/temporal.js.map +1 -0
  334. package/dist/cjs/utilities/build-info.utility.d.ts +33 -0
  335. package/dist/cjs/utilities/build-info.utility.d.ts.map +1 -0
  336. package/dist/cjs/utilities/build-info.utility.js +28 -0
  337. package/dist/cjs/utilities/build-info.utility.js.map +1 -0
  338. package/dist/cjs/utilities/hr-time.utility.d.ts +6 -0
  339. package/dist/cjs/utilities/hr-time.utility.d.ts.map +1 -0
  340. package/dist/cjs/utilities/hr-time.utility.js +14 -0
  341. package/dist/cjs/utilities/hr-time.utility.js.map +1 -0
  342. package/dist/cjs/utilities/index.d.ts +3 -1
  343. package/dist/cjs/utilities/index.d.ts.map +1 -1
  344. package/dist/cjs/utilities/index.js +3 -1
  345. package/dist/cjs/utilities/index.js.map +1 -1
  346. package/dist/cjs/utilities/module.utility.d.ts +8 -2
  347. package/dist/cjs/utilities/module.utility.d.ts.map +1 -1
  348. package/dist/cjs/utilities/module.utility.js +25 -6
  349. package/dist/cjs/utilities/module.utility.js.map +1 -1
  350. package/dist/cjs/utilities/parse.utility.d.ts +29 -0
  351. package/dist/cjs/utilities/parse.utility.d.ts.map +1 -1
  352. package/dist/cjs/utilities/parse.utility.js +58 -10
  353. package/dist/cjs/utilities/parse.utility.js.map +1 -1
  354. package/dist/cjs/utilities/project-root.utility.d.ts +17 -0
  355. package/dist/cjs/utilities/project-root.utility.d.ts.map +1 -0
  356. package/dist/cjs/utilities/project-root.utility.js +23 -0
  357. package/dist/cjs/utilities/project-root.utility.js.map +1 -0
  358. package/dist/cjs/utilities/request.utility.d.ts +22 -1
  359. package/dist/cjs/utilities/request.utility.d.ts.map +1 -1
  360. package/dist/cjs/utilities/request.utility.js +44 -3
  361. package/dist/cjs/utilities/request.utility.js.map +1 -1
  362. package/dist/cjs/utilities/sleep.utility.d.ts +0 -1
  363. package/dist/cjs/utilities/sleep.utility.d.ts.map +1 -1
  364. package/dist/cjs/utilities/sleep.utility.js +0 -1
  365. package/dist/cjs/utilities/sleep.utility.js.map +1 -1
  366. package/dist/cjs/uuid.d.ts +2 -0
  367. package/dist/cjs/uuid.d.ts.map +1 -0
  368. package/dist/cjs/uuid.js +19 -0
  369. package/dist/cjs/uuid.js.map +1 -0
  370. package/dist/esm/common/constants/mime.d.ts +67 -0
  371. package/dist/esm/common/constants/mime.d.ts.map +1 -1
  372. package/dist/esm/common/constants/mime.js +134 -0
  373. package/dist/esm/common/constants/mime.js.map +1 -1
  374. package/dist/esm/common/redact.d.ts.map +1 -1
  375. package/dist/esm/common/redact.js +46 -5
  376. package/dist/esm/common/redact.js.map +1 -1
  377. package/dist/esm/common/resolvers.d.ts +5 -8
  378. package/dist/esm/common/resolvers.d.ts.map +1 -1
  379. package/dist/esm/common/resolvers.js +8 -25
  380. package/dist/esm/common/resolvers.js.map +1 -1
  381. package/dist/esm/common/types/resolver.d.ts +1 -4
  382. package/dist/esm/common/types/resolver.d.ts.map +1 -1
  383. package/dist/esm/core.d.ts +18 -8
  384. package/dist/esm/core.d.ts.map +1 -1
  385. package/dist/esm/core.js +19 -6
  386. package/dist/esm/core.js.map +1 -1
  387. package/dist/esm/modules/base.d.ts +4 -1
  388. package/dist/esm/modules/base.d.ts.map +1 -1
  389. package/dist/esm/modules/base.js +15 -4
  390. package/dist/esm/modules/base.js.map +1 -1
  391. package/dist/esm/modules/cron/helper.d.ts.map +1 -1
  392. package/dist/esm/modules/cron/helper.js +2 -2
  393. package/dist/esm/modules/cron/helper.js.map +1 -1
  394. package/dist/esm/modules/crypto/algorithms/aes-legacy.algorithm.js +3 -3
  395. package/dist/esm/modules/crypto/algorithms/aes-legacy.algorithm.js.map +1 -1
  396. package/dist/esm/modules/crypto/algorithms/aes.algorithm.js +5 -5
  397. package/dist/esm/modules/crypto/algorithms/aes.algorithm.js.map +1 -1
  398. package/dist/esm/modules/crypto/algorithms/hash.algorithm.d.ts +1 -4
  399. package/dist/esm/modules/crypto/algorithms/hash.algorithm.d.ts.map +1 -1
  400. package/dist/esm/modules/crypto/algorithms/hash.algorithm.js +1 -4
  401. package/dist/esm/modules/crypto/algorithms/hash.algorithm.js.map +1 -1
  402. package/dist/esm/modules/env/app-env.d.ts +11 -0
  403. package/dist/esm/modules/env/app-env.d.ts.map +1 -1
  404. package/dist/esm/modules/env/app-env.js +32 -6
  405. package/dist/esm/modules/env/app-env.js.map +1 -1
  406. package/dist/esm/modules/index.d.ts +1 -1
  407. package/dist/esm/modules/index.d.ts.map +1 -1
  408. package/dist/esm/modules/index.js +1 -1
  409. package/dist/esm/modules/index.js.map +1 -1
  410. package/dist/esm/modules/logger/base/base.d.ts.map +1 -1
  411. package/dist/esm/modules/logger/base/base.js +3 -0
  412. package/dist/esm/modules/logger/base/base.js.map +1 -1
  413. package/dist/esm/modules/logger/factory.d.ts.map +1 -1
  414. package/dist/esm/modules/logger/factory.js +2 -1
  415. package/dist/esm/modules/logger/factory.js.map +1 -1
  416. package/dist/esm/modules/logger/formatting/error-prettier.d.ts +6 -0
  417. package/dist/esm/modules/logger/formatting/error-prettier.d.ts.map +1 -1
  418. package/dist/esm/modules/logger/formatting/error-prettier.js +35 -1
  419. package/dist/esm/modules/logger/formatting/error-prettier.js.map +1 -1
  420. package/dist/esm/modules/logger/hf/logger.d.ts.map +1 -1
  421. package/dist/esm/modules/logger/hf/logger.js +4 -1
  422. package/dist/esm/modules/logger/hf/logger.js.map +1 -1
  423. package/dist/esm/modules/logger/pino/destination.d.ts.map +1 -1
  424. package/dist/esm/modules/logger/pino/destination.js +2 -1
  425. package/dist/esm/modules/logger/pino/destination.js.map +1 -1
  426. package/dist/esm/modules/logger/resolver.d.ts +1 -1
  427. package/dist/esm/modules/logger/resolver.d.ts.map +1 -1
  428. package/dist/esm/modules/logger/resolver.js +8 -1
  429. package/dist/esm/modules/logger/resolver.js.map +1 -1
  430. package/dist/esm/modules/logger/slot.d.ts +23 -0
  431. package/dist/esm/modules/logger/slot.d.ts.map +1 -0
  432. package/dist/esm/modules/logger/slot.js +119 -0
  433. package/dist/esm/modules/logger/slot.js.map +1 -0
  434. package/dist/esm/modules/logger/winston/common/constants.d.ts.map +1 -1
  435. package/dist/esm/modules/logger/winston/common/constants.js +6 -5
  436. package/dist/esm/modules/logger/winston/common/constants.js.map +1 -1
  437. package/dist/esm/modules/network/http-request/base-network-request.helper.d.ts.map +1 -1
  438. package/dist/esm/modules/network/http-request/base-network-request.helper.js +4 -3
  439. package/dist/esm/modules/network/http-request/base-network-request.helper.js.map +1 -1
  440. package/dist/esm/modules/network/http-request/fetcher/node-fetcher.d.ts.map +1 -1
  441. package/dist/esm/modules/network/http-request/fetcher/node-fetcher.js +3 -3
  442. package/dist/esm/modules/network/http-request/fetcher/node-fetcher.js.map +1 -1
  443. package/dist/esm/modules/network/index.d.ts +1 -0
  444. package/dist/esm/modules/network/index.d.ts.map +1 -1
  445. package/dist/esm/modules/network/index.js +1 -0
  446. package/dist/esm/modules/network/index.js.map +1 -1
  447. package/dist/esm/modules/network/tcp-socket/base-tcp-client.helper.d.ts.map +1 -1
  448. package/dist/esm/modules/network/tcp-socket/base-tcp-client.helper.js +2 -2
  449. package/dist/esm/modules/network/tcp-socket/base-tcp-client.helper.js.map +1 -1
  450. package/dist/esm/modules/network/tcp-socket/base-tcp-server.helper.d.ts +2 -3
  451. package/dist/esm/modules/network/tcp-socket/base-tcp-server.helper.d.ts.map +1 -1
  452. package/dist/esm/modules/network/tcp-socket/base-tcp-server.helper.js +5 -5
  453. package/dist/esm/modules/network/tcp-socket/base-tcp-server.helper.js.map +1 -1
  454. package/dist/esm/modules/network/utilities/index.d.ts +3 -0
  455. package/dist/esm/modules/network/utilities/index.d.ts.map +1 -0
  456. package/dist/esm/modules/network/utilities/index.js +3 -0
  457. package/dist/esm/modules/network/utilities/index.js.map +1 -0
  458. package/dist/esm/modules/network/utilities/query-string.d.ts +26 -0
  459. package/dist/esm/modules/network/utilities/query-string.d.ts.map +1 -0
  460. package/dist/esm/modules/network/utilities/query-string.js +44 -0
  461. package/dist/esm/modules/network/utilities/query-string.js.map +1 -0
  462. package/dist/esm/modules/network/utilities/url-safety/common/constants.d.ts +18 -0
  463. package/dist/esm/modules/network/utilities/url-safety/common/constants.d.ts.map +1 -0
  464. package/dist/esm/modules/network/utilities/url-safety/common/constants.js +18 -0
  465. package/dist/esm/modules/network/utilities/url-safety/common/constants.js.map +1 -0
  466. package/dist/esm/modules/network/utilities/url-safety/common/errors.d.ts +31 -0
  467. package/dist/esm/modules/network/utilities/url-safety/common/errors.d.ts.map +1 -0
  468. package/dist/esm/modules/network/utilities/url-safety/common/errors.js +26 -0
  469. package/dist/esm/modules/network/utilities/url-safety/common/errors.js.map +1 -0
  470. package/dist/esm/modules/network/utilities/url-safety/common/index.d.ts +4 -0
  471. package/dist/esm/modules/network/utilities/url-safety/common/index.d.ts.map +1 -0
  472. package/dist/esm/modules/network/utilities/url-safety/common/index.js +4 -0
  473. package/dist/esm/modules/network/utilities/url-safety/common/index.js.map +1 -0
  474. package/dist/esm/modules/network/utilities/url-safety/common/types.d.ts +24 -0
  475. package/dist/esm/modules/network/utilities/url-safety/common/types.d.ts.map +1 -0
  476. package/dist/esm/modules/network/utilities/url-safety/common/types.js +2 -0
  477. package/dist/esm/modules/network/utilities/url-safety/common/types.js.map +1 -0
  478. package/dist/esm/modules/network/utilities/url-safety/index.d.ts +4 -0
  479. package/dist/esm/modules/network/utilities/url-safety/index.d.ts.map +1 -0
  480. package/dist/esm/modules/network/utilities/url-safety/index.js +4 -0
  481. package/dist/esm/modules/network/utilities/url-safety/index.js.map +1 -0
  482. package/dist/esm/modules/network/utilities/url-safety/ingest.d.ts +52 -0
  483. package/dist/esm/modules/network/utilities/url-safety/ingest.d.ts.map +1 -0
  484. package/dist/esm/modules/network/utilities/url-safety/ingest.js +163 -0
  485. package/dist/esm/modules/network/utilities/url-safety/ingest.js.map +1 -0
  486. package/dist/esm/modules/network/utilities/url-safety/policy.d.ts +29 -0
  487. package/dist/esm/modules/network/utilities/url-safety/policy.d.ts.map +1 -0
  488. package/dist/esm/modules/network/utilities/url-safety/policy.js +109 -0
  489. package/dist/esm/modules/network/utilities/url-safety/policy.js.map +1 -0
  490. package/dist/esm/modules/queue/bullmq/helper.d.ts +25 -4
  491. package/dist/esm/modules/queue/bullmq/helper.d.ts.map +1 -1
  492. package/dist/esm/modules/queue/bullmq/helper.js +45 -14
  493. package/dist/esm/modules/queue/bullmq/helper.js.map +1 -1
  494. package/dist/esm/modules/queue/internal/sequential/helper.d.ts.map +1 -1
  495. package/dist/esm/modules/queue/internal/sequential/helper.js +2 -2
  496. package/dist/esm/modules/queue/internal/sequential/helper.js.map +1 -1
  497. package/dist/esm/modules/queue/kafka/base.d.ts +8 -4
  498. package/dist/esm/modules/queue/kafka/base.d.ts.map +1 -1
  499. package/dist/esm/modules/queue/kafka/base.js +5 -1
  500. package/dist/esm/modules/queue/kafka/base.js.map +1 -1
  501. package/dist/esm/modules/queue/kafka/bundler/platformatic-require.plugin.d.ts +1 -1
  502. package/dist/esm/modules/queue/kafka/bundler/platformatic-require.plugin.d.ts.map +1 -1
  503. package/dist/esm/modules/queue/kafka/bundler/platformatic-require.plugin.js +1 -1
  504. package/dist/esm/modules/queue/kafka/bundler/platformatic-require.plugin.js.map +1 -1
  505. package/dist/esm/modules/queue/kafka/common/types/callbacks.d.ts +10 -0
  506. package/dist/esm/modules/queue/kafka/common/types/callbacks.d.ts.map +1 -1
  507. package/dist/esm/modules/queue/kafka/common/types/consumer.d.ts +5 -1
  508. package/dist/esm/modules/queue/kafka/common/types/consumer.d.ts.map +1 -1
  509. package/dist/esm/modules/queue/kafka/consumer.d.ts +64 -28
  510. package/dist/esm/modules/queue/kafka/consumer.d.ts.map +1 -1
  511. package/dist/esm/modules/queue/kafka/consumer.js +57 -23
  512. package/dist/esm/modules/queue/kafka/consumer.js.map +1 -1
  513. package/dist/esm/modules/queue/mqtt/helper.d.ts.map +1 -1
  514. package/dist/esm/modules/queue/mqtt/helper.js +6 -5
  515. package/dist/esm/modules/queue/mqtt/helper.js.map +1 -1
  516. package/dist/esm/modules/redis/base/abstract.helper.d.ts.map +1 -1
  517. package/dist/esm/modules/redis/base/abstract.helper.js +11 -6
  518. package/dist/esm/modules/redis/base/abstract.helper.js.map +1 -1
  519. package/dist/esm/modules/redis/cluster/cluster.helper.d.ts +3 -2
  520. package/dist/esm/modules/redis/cluster/cluster.helper.d.ts.map +1 -1
  521. package/dist/esm/modules/redis/cluster/cluster.helper.js +18 -4
  522. package/dist/esm/modules/redis/cluster/cluster.helper.js.map +1 -1
  523. package/dist/esm/modules/redis/common/constants.d.ts +4 -0
  524. package/dist/esm/modules/redis/common/constants.d.ts.map +1 -1
  525. package/dist/esm/modules/redis/common/constants.js +4 -0
  526. package/dist/esm/modules/redis/common/constants.js.map +1 -1
  527. package/dist/esm/modules/redis/common/types.d.ts +13 -3
  528. package/dist/esm/modules/redis/common/types.d.ts.map +1 -1
  529. package/dist/esm/modules/redis/sentinel/sentinel.helper.d.ts +1 -1
  530. package/dist/esm/modules/redis/sentinel/sentinel.helper.d.ts.map +1 -1
  531. package/dist/esm/modules/redis/sentinel/sentinel.helper.js +3 -2
  532. package/dist/esm/modules/redis/sentinel/sentinel.helper.js.map +1 -1
  533. package/dist/esm/modules/redis/single/single.helper.d.ts +1 -1
  534. package/dist/esm/modules/redis/single/single.helper.d.ts.map +1 -1
  535. package/dist/esm/modules/redis/single/single.helper.js +4 -2
  536. package/dist/esm/modules/redis/single/single.helper.js.map +1 -1
  537. package/dist/esm/modules/secrets/base/abstract.helper.d.ts.map +1 -1
  538. package/dist/esm/modules/secrets/base/abstract.helper.js +2 -1
  539. package/dist/esm/modules/secrets/base/abstract.helper.js.map +1 -1
  540. package/dist/esm/modules/secrets/hashicorp/hashicorp.helper.d.ts.map +1 -1
  541. package/dist/esm/modules/secrets/hashicorp/hashicorp.helper.js +2 -1
  542. package/dist/esm/modules/secrets/hashicorp/hashicorp.helper.js.map +1 -1
  543. package/dist/esm/modules/secrets/system-envs/system-envs.helper.d.ts.map +1 -1
  544. package/dist/esm/modules/secrets/system-envs/system-envs.helper.js +2 -1
  545. package/dist/esm/modules/secrets/system-envs/system-envs.helper.js.map +1 -1
  546. package/dist/esm/modules/socket/socket-io/client/helper.d.ts +2 -1
  547. package/dist/esm/modules/socket/socket-io/client/helper.d.ts.map +1 -1
  548. package/dist/esm/modules/socket/socket-io/client/helper.js +9 -3
  549. package/dist/esm/modules/socket/socket-io/client/helper.js.map +1 -1
  550. package/dist/esm/modules/socket/socket-io/common/types/client.d.ts +2 -0
  551. package/dist/esm/modules/socket/socket-io/common/types/client.d.ts.map +1 -1
  552. package/dist/esm/modules/socket/socket-io/server/helper.d.ts +1 -0
  553. package/dist/esm/modules/socket/socket-io/server/helper.d.ts.map +1 -1
  554. package/dist/esm/modules/socket/socket-io/server/helper.js +17 -27
  555. package/dist/esm/modules/socket/socket-io/server/helper.js.map +1 -1
  556. package/dist/esm/modules/socket/websocket/server/helper.d.ts.map +1 -1
  557. package/dist/esm/modules/socket/websocket/server/helper.js +2 -1
  558. package/dist/esm/modules/socket/websocket/server/helper.js.map +1 -1
  559. package/dist/esm/modules/storage/base.d.ts +98 -49
  560. package/dist/esm/modules/storage/base.d.ts.map +1 -1
  561. package/dist/esm/modules/storage/base.js +202 -91
  562. package/dist/esm/modules/storage/base.js.map +1 -1
  563. package/dist/esm/modules/storage/bun-s3/helper.d.ts +74 -29
  564. package/dist/esm/modules/storage/bun-s3/helper.d.ts.map +1 -1
  565. package/dist/esm/modules/storage/bun-s3/helper.js +322 -56
  566. package/dist/esm/modules/storage/bun-s3/helper.js.map +1 -1
  567. package/dist/esm/modules/storage/bun-s3/utility.d.ts +59 -0
  568. package/dist/esm/modules/storage/bun-s3/utility.d.ts.map +1 -1
  569. package/dist/esm/modules/storage/bun-s3/utility.js +212 -28
  570. package/dist/esm/modules/storage/bun-s3/utility.js.map +1 -1
  571. package/dist/esm/modules/storage/common/constants.d.ts +27 -0
  572. package/dist/esm/modules/storage/common/constants.d.ts.map +1 -0
  573. package/dist/esm/modules/storage/common/constants.js +28 -0
  574. package/dist/esm/modules/storage/common/constants.js.map +1 -0
  575. package/dist/esm/modules/storage/common/errors.d.ts +22 -0
  576. package/dist/esm/modules/storage/common/errors.d.ts.map +1 -0
  577. package/dist/esm/modules/storage/common/errors.js +21 -0
  578. package/dist/esm/modules/storage/common/errors.js.map +1 -0
  579. package/dist/esm/modules/storage/common/index.d.ts +3 -0
  580. package/dist/esm/modules/storage/common/index.d.ts.map +1 -1
  581. package/dist/esm/modules/storage/common/index.js +3 -0
  582. package/dist/esm/modules/storage/common/index.js.map +1 -1
  583. package/dist/esm/modules/storage/common/types.d.ts +118 -38
  584. package/dist/esm/modules/storage/common/types.d.ts.map +1 -1
  585. package/dist/esm/modules/storage/common/utility.d.ts +7 -0
  586. package/dist/esm/modules/storage/common/utility.d.ts.map +1 -0
  587. package/dist/esm/modules/storage/common/utility.js +23 -0
  588. package/dist/esm/modules/storage/common/utility.js.map +1 -0
  589. package/dist/esm/modules/storage/disk/helper.d.ts +26 -28
  590. package/dist/esm/modules/storage/disk/helper.d.ts.map +1 -1
  591. package/dist/esm/modules/storage/disk/helper.js +125 -86
  592. package/dist/esm/modules/storage/disk/helper.js.map +1 -1
  593. package/dist/esm/modules/storage/in-memory/helper.d.ts +10 -5
  594. package/dist/esm/modules/storage/in-memory/helper.d.ts.map +1 -1
  595. package/dist/esm/modules/storage/in-memory/helper.js +17 -10
  596. package/dist/esm/modules/storage/in-memory/helper.js.map +1 -1
  597. package/dist/esm/modules/storage/minio/helper.d.ts +22 -28
  598. package/dist/esm/modules/storage/minio/helper.d.ts.map +1 -1
  599. package/dist/esm/modules/storage/minio/helper.js +87 -33
  600. package/dist/esm/modules/storage/minio/helper.js.map +1 -1
  601. package/dist/esm/modules/temporal/adapters/dayjs.d.ts +21 -0
  602. package/dist/esm/modules/temporal/adapters/dayjs.d.ts.map +1 -0
  603. package/dist/esm/modules/temporal/adapters/dayjs.js +44 -0
  604. package/dist/esm/modules/temporal/adapters/dayjs.js.map +1 -0
  605. package/dist/esm/modules/temporal/adapters/guards.d.ts +4 -0
  606. package/dist/esm/modules/temporal/adapters/guards.d.ts.map +1 -0
  607. package/dist/esm/modules/temporal/adapters/guards.js +10 -0
  608. package/dist/esm/modules/temporal/adapters/guards.js.map +1 -0
  609. package/dist/esm/modules/temporal/adapters/index.d.ts +4 -0
  610. package/dist/esm/modules/temporal/adapters/index.d.ts.map +1 -0
  611. package/dist/esm/modules/temporal/adapters/index.js +4 -0
  612. package/dist/esm/modules/temporal/adapters/index.js.map +1 -0
  613. package/dist/esm/modules/temporal/adapters/luxon.d.ts +13 -0
  614. package/dist/esm/modules/temporal/adapters/luxon.d.ts.map +1 -0
  615. package/dist/esm/modules/temporal/adapters/luxon.js +22 -0
  616. package/dist/esm/modules/temporal/adapters/luxon.js.map +1 -0
  617. package/dist/esm/modules/temporal/adapters/native.d.ts +16 -0
  618. package/dist/esm/modules/temporal/adapters/native.d.ts.map +1 -0
  619. package/dist/esm/modules/temporal/adapters/native.js +34 -0
  620. package/dist/esm/modules/temporal/adapters/native.js.map +1 -0
  621. package/dist/esm/modules/temporal/calendar.d.ts +52 -0
  622. package/dist/esm/modules/temporal/calendar.d.ts.map +1 -0
  623. package/dist/esm/modules/temporal/calendar.js +138 -0
  624. package/dist/esm/modules/temporal/calendar.js.map +1 -0
  625. package/dist/esm/modules/temporal/common/constants.d.ts +20 -0
  626. package/dist/esm/modules/temporal/common/constants.d.ts.map +1 -0
  627. package/dist/esm/modules/temporal/common/constants.js +29 -0
  628. package/dist/esm/modules/temporal/common/constants.js.map +1 -0
  629. package/dist/esm/modules/temporal/common/index.d.ts +3 -0
  630. package/dist/esm/modules/temporal/common/index.d.ts.map +1 -0
  631. package/dist/esm/modules/temporal/common/index.js +3 -0
  632. package/dist/esm/modules/temporal/common/index.js.map +1 -0
  633. package/dist/esm/modules/temporal/common/types.d.ts +69 -0
  634. package/dist/esm/modules/temporal/common/types.d.ts.map +1 -0
  635. package/dist/esm/modules/temporal/common/types.js +2 -0
  636. package/dist/esm/modules/temporal/common/types.js.map +1 -0
  637. package/dist/esm/modules/temporal/helper.d.ts +120 -0
  638. package/dist/esm/modules/temporal/helper.d.ts.map +1 -0
  639. package/dist/esm/modules/temporal/helper.js +322 -0
  640. package/dist/esm/modules/temporal/helper.js.map +1 -0
  641. package/dist/esm/modules/temporal/index.d.ts +4 -0
  642. package/dist/esm/modules/temporal/index.d.ts.map +1 -0
  643. package/dist/esm/modules/temporal/index.js +4 -0
  644. package/dist/esm/modules/temporal/index.js.map +1 -0
  645. package/dist/esm/modules/temporal/pattern.d.ts +24 -0
  646. package/dist/esm/modules/temporal/pattern.d.ts.map +1 -0
  647. package/dist/esm/modules/temporal/pattern.js +129 -0
  648. package/dist/esm/modules/temporal/pattern.js.map +1 -0
  649. package/dist/esm/modules/temporal/tokens.d.ts +65 -0
  650. package/dist/esm/modules/temporal/tokens.d.ts.map +1 -0
  651. package/dist/esm/modules/temporal/tokens.js +102 -0
  652. package/dist/esm/modules/temporal/tokens.js.map +1 -0
  653. package/dist/esm/modules/uid/index.d.ts +1 -0
  654. package/dist/esm/modules/uid/index.d.ts.map +1 -1
  655. package/dist/esm/modules/uid/index.js +1 -0
  656. package/dist/esm/modules/uid/index.js.map +1 -1
  657. package/dist/esm/modules/uid/request-id.d.ts +5 -12
  658. package/dist/esm/modules/uid/request-id.d.ts.map +1 -1
  659. package/dist/esm/modules/uid/request-id.js +7 -44
  660. package/dist/esm/modules/uid/request-id.js.map +1 -1
  661. package/dist/esm/modules/uid/uuid/common/constants.d.ts +32 -0
  662. package/dist/esm/modules/uid/uuid/common/constants.d.ts.map +1 -0
  663. package/dist/esm/modules/uid/uuid/common/constants.js +32 -0
  664. package/dist/esm/modules/uid/uuid/common/constants.js.map +1 -0
  665. package/dist/esm/modules/uid/uuid/common/index.d.ts +3 -0
  666. package/dist/esm/modules/uid/uuid/common/index.d.ts.map +1 -0
  667. package/dist/esm/modules/uid/uuid/common/index.js +5 -0
  668. package/dist/esm/modules/uid/uuid/common/index.js.map +1 -0
  669. package/dist/esm/modules/uid/uuid/common/types.d.ts +6 -0
  670. package/dist/esm/modules/uid/uuid/common/types.d.ts.map +1 -0
  671. package/dist/esm/modules/uid/uuid/common/types.js +2 -0
  672. package/dist/esm/modules/uid/uuid/common/types.js.map +1 -0
  673. package/dist/esm/modules/uid/uuid/helper.d.ts +37 -0
  674. package/dist/esm/modules/uid/uuid/helper.d.ts.map +1 -0
  675. package/dist/esm/modules/uid/uuid/helper.js +45 -0
  676. package/dist/esm/modules/uid/uuid/helper.js.map +1 -0
  677. package/dist/esm/modules/uid/uuid/index.d.ts +6 -0
  678. package/dist/esm/modules/uid/uuid/index.d.ts.map +1 -0
  679. package/dist/esm/modules/uid/uuid/index.js +6 -0
  680. package/dist/esm/modules/uid/uuid/index.js.map +1 -0
  681. package/dist/esm/modules/uid/uuid/sha1.d.ts +19 -0
  682. package/dist/esm/modules/uid/uuid/sha1.d.ts.map +1 -0
  683. package/dist/esm/modules/uid/uuid/sha1.js +101 -0
  684. package/dist/esm/modules/uid/uuid/sha1.js.map +1 -0
  685. package/dist/esm/modules/uid/uuid/v4.d.ts +9 -0
  686. package/dist/esm/modules/uid/uuid/v4.d.ts.map +1 -0
  687. package/dist/esm/modules/uid/uuid/v4.js +50 -0
  688. package/dist/esm/modules/uid/uuid/v4.js.map +1 -0
  689. package/dist/esm/modules/uid/uuid/v5.d.ts +15 -0
  690. package/dist/esm/modules/uid/uuid/v5.d.ts.map +1 -0
  691. package/dist/esm/modules/uid/uuid/v5.js +86 -0
  692. package/dist/esm/modules/uid/uuid/v5.js.map +1 -0
  693. package/dist/esm/modules/uid/uuid/v7.d.ts +11 -0
  694. package/dist/esm/modules/uid/uuid/v7.d.ts.map +1 -0
  695. package/dist/esm/modules/uid/uuid/v7.js +90 -0
  696. package/dist/esm/modules/uid/uuid/v7.js.map +1 -0
  697. package/dist/esm/package.json +6 -0
  698. package/dist/esm/temporal.d.ts +2 -0
  699. package/dist/esm/temporal.d.ts.map +1 -0
  700. package/dist/esm/temporal.js +3 -0
  701. package/dist/esm/temporal.js.map +1 -0
  702. package/dist/esm/utilities/build-info.utility.d.ts +33 -0
  703. package/dist/esm/utilities/build-info.utility.d.ts.map +1 -0
  704. package/dist/esm/utilities/build-info.utility.js +24 -0
  705. package/dist/esm/utilities/build-info.utility.js.map +1 -0
  706. package/dist/esm/utilities/hr-time.utility.d.ts +6 -0
  707. package/dist/esm/utilities/hr-time.utility.d.ts.map +1 -0
  708. package/dist/esm/utilities/hr-time.utility.js +10 -0
  709. package/dist/esm/utilities/hr-time.utility.js.map +1 -0
  710. package/dist/esm/utilities/index.d.ts +3 -1
  711. package/dist/esm/utilities/index.d.ts.map +1 -1
  712. package/dist/esm/utilities/index.js +3 -1
  713. package/dist/esm/utilities/index.js.map +1 -1
  714. package/dist/esm/utilities/module.utility.d.ts +8 -2
  715. package/dist/esm/utilities/module.utility.d.ts.map +1 -1
  716. package/dist/esm/utilities/module.utility.js +25 -6
  717. package/dist/esm/utilities/module.utility.js.map +1 -1
  718. package/dist/esm/utilities/parse.utility.d.ts +29 -0
  719. package/dist/esm/utilities/parse.utility.d.ts.map +1 -1
  720. package/dist/esm/utilities/parse.utility.js +56 -6
  721. package/dist/esm/utilities/parse.utility.js.map +1 -1
  722. package/dist/esm/utilities/project-root.utility.d.ts +17 -0
  723. package/dist/esm/utilities/project-root.utility.d.ts.map +1 -0
  724. package/dist/esm/utilities/project-root.utility.js +19 -0
  725. package/dist/esm/utilities/project-root.utility.js.map +1 -0
  726. package/dist/esm/utilities/request.utility.d.ts +22 -1
  727. package/dist/esm/utilities/request.utility.d.ts.map +1 -1
  728. package/dist/esm/utilities/request.utility.js +42 -2
  729. package/dist/esm/utilities/request.utility.js.map +1 -1
  730. package/dist/esm/utilities/sleep.utility.d.ts +0 -1
  731. package/dist/esm/utilities/sleep.utility.d.ts.map +1 -1
  732. package/dist/esm/utilities/sleep.utility.js +0 -1
  733. package/dist/esm/utilities/sleep.utility.js.map +1 -1
  734. package/dist/esm/uuid.d.ts +2 -0
  735. package/dist/esm/uuid.d.ts.map +1 -0
  736. package/dist/esm/uuid.js +3 -0
  737. package/dist/esm/uuid.js.map +1 -0
  738. package/package.json +35 -19
  739. package/dist/cjs/modules/error/schemas.d.ts +0 -16
  740. package/dist/cjs/modules/error/schemas.d.ts.map +0 -1
  741. package/dist/cjs/modules/error/schemas.js +0 -36
  742. package/dist/cjs/modules/error/schemas.js.map +0 -1
  743. package/dist/cjs/utilities/date.utility.d.ts +0 -19
  744. package/dist/cjs/utilities/date.utility.d.ts.map +0 -1
  745. package/dist/cjs/utilities/date.utility.js +0 -57
  746. package/dist/cjs/utilities/date.utility.js.map +0 -1
  747. package/dist/esm/modules/error/schemas.d.ts +0 -16
  748. package/dist/esm/modules/error/schemas.d.ts.map +0 -1
  749. package/dist/esm/modules/error/schemas.js +0 -33
  750. package/dist/esm/modules/error/schemas.js.map +0 -1
  751. package/dist/esm/utilities/date.utility.d.ts +0 -19
  752. package/dist/esm/utilities/date.utility.d.ts.map +0 -1
  753. package/dist/esm/utilities/date.utility.js +0 -46
  754. package/dist/esm/utilities/date.utility.js.map +0 -1
@@ -0,0 +1,18 @@
1
+ import { TConstValue } from '../../../../../common/types';
2
+ /** The only schemes a guarded fetch will speak. `file:` and `gopher:` are the classic SSRF pivots. */
3
+ export declare class UrlSchemes {
4
+ static readonly HTTP = "http:";
5
+ static readonly HTTPS = "https:";
6
+ static readonly SCHEME_SET: Set<string>;
7
+ static isValid(value: string): boolean;
8
+ }
9
+ export type TUrlScheme = TConstValue<typeof UrlSchemes>;
10
+ /** Safe by default: https only, no private address, three hops, ten seconds. */
11
+ export declare class UrlSafetyDefaults {
12
+ static readonly ALLOWED_SCHEMES: string[];
13
+ static readonly ALLOW_PRIVATE_ADDRESS = false;
14
+ static readonly MAX_REDIRECTS = 3;
15
+ static readonly TIMEOUT_MILLISECONDS = 10000;
16
+ static readonly MAX_BYTES: number;
17
+ }
18
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/network/utilities/url-safety/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,sGAAsG;AACtG,qBAAa,UAAU;IACrB,MAAM,CAAC,QAAQ,CAAC,IAAI,WAAW;IAC/B,MAAM,CAAC,QAAQ,CAAC,KAAK,YAAY;IAEjC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAA4C;IAEtE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AACD,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,UAAU,CAAC,CAAC;AAExD,gFAAgF;AAChF,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,CAAsB;IAC/D,MAAM,CAAC,QAAQ,CAAC,qBAAqB,SAAS;IAC9C,MAAM,CAAC,QAAQ,CAAC,aAAa,KAAK;IAClC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,SAAU;IAC9C,MAAM,CAAC,QAAQ,CAAC,SAAS,SAAoB;CAC9C"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UrlSafetyDefaults = exports.UrlSchemes = void 0;
4
+ /** The only schemes a guarded fetch will speak. `file:` and `gopher:` are the classic SSRF pivots. */
5
+ class UrlSchemes {
6
+ static { this.HTTP = 'http:'; }
7
+ static { this.HTTPS = 'https:'; }
8
+ static { this.SCHEME_SET = new Set([this.HTTP, this.HTTPS]); }
9
+ static isValid(value) {
10
+ return this.SCHEME_SET.has(value);
11
+ }
12
+ }
13
+ exports.UrlSchemes = UrlSchemes;
14
+ /** Safe by default: https only, no private address, three hops, ten seconds. */
15
+ class UrlSafetyDefaults {
16
+ static { this.ALLOWED_SCHEMES = [UrlSchemes.HTTPS]; }
17
+ static { this.ALLOW_PRIVATE_ADDRESS = false; }
18
+ static { this.MAX_REDIRECTS = 3; }
19
+ static { this.TIMEOUT_MILLISECONDS = 10_000; }
20
+ static { this.MAX_BYTES = 10 * 1024 * 1024; }
21
+ }
22
+ exports.UrlSafetyDefaults = UrlSafetyDefaults;
23
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../../src/modules/network/utilities/url-safety/common/constants.ts"],"names":[],"mappings":";;;AAEA,sGAAsG;AACtG,MAAa,UAAU;aACL,SAAI,GAAG,OAAO,CAAC;aACf,UAAK,GAAG,QAAQ,CAAC;aAEjB,eAAU,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAEtE,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;;AARH,gCASC;AAGD,gFAAgF;AAChF,MAAa,iBAAiB;aACZ,oBAAe,GAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;aAC/C,0BAAqB,GAAG,KAAK,CAAC;aAC9B,kBAAa,GAAG,CAAC,CAAC;aAClB,yBAAoB,GAAG,MAAM,CAAC;aAC9B,cAAS,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;;AAL/C,8CAMC"}
@@ -0,0 +1,31 @@
1
+ import type { TRegisterErrors } from '@venizia/ignis-inversion';
2
+ /**
3
+ * A url the policy refuses is refused forever - the same url will never be allowed. A caller that
4
+ * retries on failure has to tell that apart from a host that timed out, or it retries a rejection
5
+ * and turns the guard into a repeat scanner.
6
+ */
7
+ export declare const UrlSafetyErrors: {
8
+ readonly URL_REFUSED: {
9
+ readonly message: {
10
+ readonly text: "Url refused by the safety policy";
11
+ readonly code: "core.url_safety.url_refused";
12
+ };
13
+ readonly statusCode: 400;
14
+ readonly category: "business";
15
+ };
16
+ };
17
+ declare module '@venizia/ignis-inversion' {
18
+ interface IErrorKeyRegistry extends TRegisterErrors<typeof UrlSafetyErrors> {
19
+ }
20
+ }
21
+ /**
22
+ * True when the url will never be allowed, whatever happens next: a bad scheme, a non-public
23
+ * address, a host outside the allow-list, a malformed url, or too many hops. Retrying any of those
24
+ * repeats the same rejection - drop the work instead.
25
+ *
26
+ * A timeout, a DNS failure or a 5xx answers `false`: those are worth another attempt.
27
+ */
28
+ export declare const isUrlRefusedError: (opts: {
29
+ error: unknown;
30
+ }) => boolean;
31
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/network/utilities/url-safety/common/errors.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGlF;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;CAMyB,CAAC;AAEtD,OAAO,QAAQ,0BAA0B,CAAC;IACxC,UAAU,iBAAkB,SAAQ,eAAe,CAAC,OAAO,eAAe,CAAC;KAAG;CAC/E;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,KAAG,OAG5D,CAAC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isUrlRefusedError = exports.UrlSafetyErrors = void 0;
4
+ const constants_1 = require("../../../../../common/constants");
5
+ const ignis_inversion_1 = require("@venizia/ignis-inversion");
6
+ /**
7
+ * A url the policy refuses is refused forever - the same url will never be allowed. A caller that
8
+ * retries on failure has to tell that apart from a host that timed out, or it retries a rejection
9
+ * and turns the guard into a repeat scanner.
10
+ */
11
+ exports.UrlSafetyErrors = {
12
+ URL_REFUSED: {
13
+ message: { text: 'Url refused by the safety policy', code: 'core.url_safety.url_refused' },
14
+ statusCode: constants_1.HTTP.ResultCodes.RS_4.BadRequest,
15
+ category: ignis_inversion_1.ErrorScopes.BUSINESS,
16
+ },
17
+ };
18
+ /**
19
+ * True when the url will never be allowed, whatever happens next: a bad scheme, a non-public
20
+ * address, a host outside the allow-list, a malformed url, or too many hops. Retrying any of those
21
+ * repeats the same rejection - drop the work instead.
22
+ *
23
+ * A timeout, a DNS failure or a 5xx answers `false`: those are worth another attempt.
24
+ */
25
+ const isUrlRefusedError = (opts) => {
26
+ const source = opts.error;
27
+ return source?.normalized?.code === exports.UrlSafetyErrors.URL_REFUSED.message.code;
28
+ };
29
+ exports.isUrlRefusedError = isUrlRefusedError;
30
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../../../src/modules/network/utilities/url-safety/common/errors.ts"],"names":[],"mappings":";;;AAAA,kDAA0C;AAE1C,8DAAuD;AAEvD;;;;GAIG;AACU,QAAA,eAAe,GAAG;IAC7B,WAAW,EAAE;QACX,OAAO,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,IAAI,EAAE,6BAA6B,EAAE;QAC1F,UAAU,EAAE,gBAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU;QAC5C,QAAQ,EAAE,6BAAW,CAAC,QAAQ;KAC/B;CACkD,CAAC;AAMtD;;;;;;GAMG;AACI,MAAM,iBAAiB,GAAG,CAAC,IAAwB,EAAW,EAAE;IACrE,MAAM,MAAM,GAAG,IAAI,CAAC,KAA2C,CAAC;IAChE,OAAO,MAAM,EAAE,UAAU,EAAE,IAAI,KAAK,uBAAe,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;AAC/E,CAAC,CAAC;AAHW,QAAA,iBAAiB,qBAG5B"}
@@ -0,0 +1,4 @@
1
+ export * from './constants';
2
+ export * from './errors';
3
+ export * from './types';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/network/utilities/url-safety/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./constants"), exports);
18
+ __exportStar(require("./errors"), exports);
19
+ __exportStar(require("./types"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/modules/network/utilities/url-safety/common/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB"}
@@ -0,0 +1,24 @@
1
+ import type { IDuration } from '../../../../../common/constants/duration';
2
+ /**
3
+ * What a caller will accept from an untrusted url. Every field is per call: an app that must reach
4
+ * plain `http` says so at the call site rather than weakening a build-time constant for everyone.
5
+ */
6
+ export interface IUrlSafetyPolicy {
7
+ /** Defaults to `['https:']`. */
8
+ allowedSchemes?: string[];
9
+ /**
10
+ * Defaults to `false`. Turning it on in a path that takes urls from user input re-opens the
11
+ * server-side request forgery this guard exists to close - a request can then be steered at
12
+ * `169.254.169.254` and the cloud credentials behind it.
13
+ */
14
+ allowPrivateAddress?: boolean;
15
+ /** When set, nothing outside the list passes, whatever it resolves to. */
16
+ allowedHosts?: string[];
17
+ /** Defaults to 3. Each hop is re-checked, so a public host cannot bounce into a private one. */
18
+ maxRedirects?: number;
19
+ /** Defaults to 10 seconds. A slow host holds a worker slot for exactly this long. */
20
+ timeout?: IDuration;
21
+ /** Defaults to 10 MB. The read stops and cancels the moment the body crosses it. */
22
+ maxBytes?: number;
23
+ }
24
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/network/utilities/url-safety/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,gGAAgG;IAChG,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,qFAAqF;IACrF,OAAO,CAAC,EAAE,SAAS,CAAC;IAEpB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../src/modules/network/utilities/url-safety/common/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export * from './common';
2
+ export * from './policy';
3
+ export * from './ingest';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network/utilities/url-safety/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./common"), exports);
18
+ __exportStar(require("./policy"), exports);
19
+ __exportStar(require("./ingest"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/modules/network/utilities/url-safety/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB"}
@@ -0,0 +1,52 @@
1
+ import type { IUrlSafetyPolicy } from './common/types';
2
+ /** Fetching an untrusted url without letting it reach inside the network. */
3
+ export declare class UrlIngest {
4
+ /**
5
+ * Rejects when ANY resolved address is non-public. Checking only the first walks straight into a
6
+ * host that publishes one public A record beside an internal one.
7
+ *
8
+ * A rebinding window remains: the address can change between this check and the connect. Closing
9
+ * it means connecting to the resolved address and setting `Host` by hand, which no fetch API
10
+ * exposes.
11
+ */
12
+ static assertPublicHost(opts: {
13
+ hostname: string;
14
+ policy?: IUrlSafetyPolicy;
15
+ }): Promise<void>;
16
+ /** Both halves, in the order they must run: shape first, then the network. */
17
+ static assertReachableUrl(opts: {
18
+ url: string;
19
+ policy?: IUrlSafetyPolicy;
20
+ }): Promise<URL>;
21
+ private static readTimeoutMilliseconds;
22
+ /**
23
+ * A GET that an untrusted url cannot steer inside the network. Redirects are followed by hand so
24
+ * every hop is re-checked - `redirect: 'follow'` would land on an internal host with no second
25
+ * look.
26
+ *
27
+ * The body is returned unread: the caller decides whether to stream it onward or cap it with
28
+ * {@link UrlIngest.readCappedBody}. Nothing is buffered here.
29
+ */
30
+ static fetchGuarded(opts: {
31
+ url: string;
32
+ policy?: IUrlSafetyPolicy;
33
+ headers?: Record<string, string>;
34
+ }): Promise<Response>;
35
+ /**
36
+ * Enforces `maxBytes` on a stream nothing reads into this process - the shape a caller wants when
37
+ * the body is piped onward rather than held. Without it a `maxBytes` policy is inert on that path.
38
+ */
39
+ static capStream(opts: {
40
+ source: ReadableStream<Uint8Array>;
41
+ policy?: IUrlSafetyPolicy;
42
+ }): ReadableStream<Uint8Array>;
43
+ /**
44
+ * Reads a body that must not exceed `maxBytes`, cancelling the moment it does. `content-length` is
45
+ * checked first because it is free, and counted anyway because it may be absent or lie.
46
+ */
47
+ static readCappedBody(opts: {
48
+ response: Response;
49
+ policy?: IUrlSafetyPolicy;
50
+ }): Promise<Buffer>;
51
+ }
52
+ //# sourceMappingURL=ingest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network/utilities/url-safety/ingest.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,6EAA6E;AAC7E,qBAAa,SAAS;IACpB;;;;;;;OAOG;WACU,gBAAgB,CAAC,IAAI,EAAE;QAClC,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,gBAAgB,CAAC;KAC3B,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BjB,8EAA8E;WACjE,kBAAkB,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAM/F,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAMtC;;;;;;;OAOG;WACU,YAAY,CAAC,IAAI,EAAE;QAC9B,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,gBAAgB,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgDrB;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE;QACrB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;QACnC,MAAM,CAAC,EAAE,gBAAgB,CAAC;KAC3B,GAAG,cAAc,CAAC,UAAU,CAAC;IA0B9B;;;OAGG;WACU,cAAc,CAAC,IAAI,EAAE;QAChC,QAAQ,EAAE,QAAQ,CAAC;QACnB,MAAM,CAAC,EAAE,gBAAgB,CAAC;KAC3B,GAAG,OAAO,CAAC,MAAM,CAAC;CA2CpB"}
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ // The half `policy.ts` cannot do: resolving a hostname needs `node:dns`, so nothing here may be
3
+ // re-exported from the `./core` subpath.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.UrlIngest = void 0;
6
+ const duration_1 = require("../../../../common/constants/duration");
7
+ const error_1 = require("../../../error");
8
+ const promises_1 = require("node:dns/promises");
9
+ const constants_1 = require("./common/constants");
10
+ const errors_1 = require("./common/errors");
11
+ const policy_1 = require("./policy");
12
+ /** Fetching an untrusted url without letting it reach inside the network. */
13
+ class UrlIngest {
14
+ /**
15
+ * Rejects when ANY resolved address is non-public. Checking only the first walks straight into a
16
+ * host that publishes one public A record beside an internal one.
17
+ *
18
+ * A rebinding window remains: the address can change between this check and the connect. Closing
19
+ * it means connecting to the resolved address and setting `Host` by hand, which no fetch API
20
+ * exposes.
21
+ */
22
+ static async assertPublicHost(opts) {
23
+ const { hostname, policy } = opts;
24
+ if (policy?.allowPrivateAddress ?? constants_1.UrlSafetyDefaults.ALLOW_PRIVATE_ADDRESS) {
25
+ return;
26
+ }
27
+ // `URL.hostname` keeps the brackets on an IPv6 literal; `lookup` does not accept them, and the
28
+ // ENOTFOUND that follows reads as a transient DNS failure rather than the refusal it should be.
29
+ const address = policy_1.UrlPolicy.readHostAddress({ hostname });
30
+ const addresses = await (0, promises_1.lookup)(address, { all: true });
31
+ if (!addresses.length) {
32
+ throw (0, error_1.getError)({
33
+ error: errors_1.UrlSafetyErrors.URL_REFUSED,
34
+ message: `[assertPublicHost] Host resolves to nothing | host: ${hostname}`,
35
+ });
36
+ }
37
+ const offender = addresses.find(entry => policy_1.UrlPolicy.isNonPublicAddress({ address: entry.address }));
38
+ if (offender) {
39
+ throw (0, error_1.getError)({
40
+ error: errors_1.UrlSafetyErrors.URL_REFUSED,
41
+ message: `[assertPublicHost] Host resolves to a non-public address | host: ${hostname} | address: ${offender.address}`,
42
+ });
43
+ }
44
+ }
45
+ /** Both halves, in the order they must run: shape first, then the network. */
46
+ static async assertReachableUrl(opts) {
47
+ const parsed = policy_1.UrlPolicy.assertSafeUrl(opts);
48
+ await UrlIngest.assertPublicHost({ hostname: parsed.hostname, policy: opts.policy });
49
+ return parsed;
50
+ }
51
+ static readTimeoutMilliseconds(opts) {
52
+ const { timeout } = opts.policy ?? {};
53
+ const milliseconds = timeout ? duration_1.DurationMultipliers.toMilliseconds(timeout) : null;
54
+ return milliseconds ?? constants_1.UrlSafetyDefaults.TIMEOUT_MILLISECONDS;
55
+ }
56
+ /**
57
+ * A GET that an untrusted url cannot steer inside the network. Redirects are followed by hand so
58
+ * every hop is re-checked - `redirect: 'follow'` would land on an internal host with no second
59
+ * look.
60
+ *
61
+ * The body is returned unread: the caller decides whether to stream it onward or cap it with
62
+ * {@link UrlIngest.readCappedBody}. Nothing is buffered here.
63
+ */
64
+ static async fetchGuarded(opts) {
65
+ const { url, policy, headers } = opts;
66
+ const maxRedirects = policy?.maxRedirects ?? constants_1.UrlSafetyDefaults.MAX_REDIRECTS;
67
+ const timeoutMilliseconds = UrlIngest.readTimeoutMilliseconds({ policy });
68
+ let target = await UrlIngest.assertReachableUrl({ url, policy });
69
+ for (let hop = 0; hop <= maxRedirects; hop += 1) {
70
+ const response = await fetch(target, {
71
+ redirect: 'manual',
72
+ signal: AbortSignal.timeout(timeoutMilliseconds),
73
+ ...(headers ? { headers } : {}),
74
+ });
75
+ if (response.status < 300 || response.status > 399) {
76
+ if (!response.ok) {
77
+ // Cancelled, or the socket stays open on every 4xx and 5xx.
78
+ await response.body?.cancel();
79
+ throw (0, error_1.getError)({
80
+ message: `[fetchGuarded] Request failed | status: ${response.status} | url: ${url}`,
81
+ });
82
+ }
83
+ return response;
84
+ }
85
+ const location = response.headers.get('location');
86
+ await response.body?.cancel();
87
+ if (!location) {
88
+ throw (0, error_1.getError)({
89
+ error: errors_1.UrlSafetyErrors.URL_REFUSED,
90
+ message: `[fetchGuarded] Redirect carried no location | url: ${url}`,
91
+ });
92
+ }
93
+ target = await UrlIngest.assertReachableUrl({
94
+ url: new URL(location, target).toString(),
95
+ policy,
96
+ });
97
+ }
98
+ throw (0, error_1.getError)({
99
+ error: errors_1.UrlSafetyErrors.URL_REFUSED,
100
+ message: `[fetchGuarded] Too many redirects | max: ${maxRedirects} | url: ${url}`,
101
+ });
102
+ }
103
+ /**
104
+ * Enforces `maxBytes` on a stream nothing reads into this process - the shape a caller wants when
105
+ * the body is piped onward rather than held. Without it a `maxBytes` policy is inert on that path.
106
+ */
107
+ static capStream(opts) {
108
+ const { source } = opts;
109
+ const maxBytes = opts.policy?.maxBytes ?? constants_1.UrlSafetyDefaults.MAX_BYTES;
110
+ let received = 0;
111
+ return source.pipeThrough(new TransformStream({
112
+ transform(chunk, controller) {
113
+ received += chunk.byteLength;
114
+ if (received > maxBytes) {
115
+ controller.error((0, error_1.getError)({
116
+ error: errors_1.UrlSafetyErrors.URL_REFUSED,
117
+ message: `[capStream] Body exceeds the cap | received: ${received} | max: ${maxBytes}`,
118
+ }));
119
+ return;
120
+ }
121
+ controller.enqueue(chunk);
122
+ },
123
+ }));
124
+ }
125
+ /**
126
+ * Reads a body that must not exceed `maxBytes`, cancelling the moment it does. `content-length` is
127
+ * checked first because it is free, and counted anyway because it may be absent or lie.
128
+ */
129
+ static async readCappedBody(opts) {
130
+ const { response, policy } = opts;
131
+ const maxBytes = policy?.maxBytes ?? constants_1.UrlSafetyDefaults.MAX_BYTES;
132
+ const declaredLength = Number(response.headers.get('content-length') ?? 0);
133
+ if (declaredLength > maxBytes) {
134
+ await response.body?.cancel();
135
+ // The same fact as the streaming branch below, so the same verdict: a caller must not retry an
136
+ // oversized body when the server sends `content-length` and drop it when the server omits one.
137
+ throw (0, error_1.getError)({
138
+ error: errors_1.UrlSafetyErrors.URL_REFUSED,
139
+ message: `[readCappedBody] Body exceeds the cap | declared: ${declaredLength} | max: ${maxBytes}`,
140
+ });
141
+ }
142
+ const reader = response.body?.getReader();
143
+ if (!reader) {
144
+ throw (0, error_1.getError)({ message: '[readCappedBody] Response carried no body' });
145
+ }
146
+ const chunks = [];
147
+ let received = 0;
148
+ for (;;) {
149
+ const { done, value } = await reader.read();
150
+ if (done) {
151
+ break;
152
+ }
153
+ received += value.length;
154
+ if (received > maxBytes) {
155
+ await reader.cancel();
156
+ throw (0, error_1.getError)({
157
+ error: errors_1.UrlSafetyErrors.URL_REFUSED,
158
+ message: `[readCappedBody] Body exceeds the cap | received: ${received} | max: ${maxBytes}`,
159
+ });
160
+ }
161
+ chunks.push(value);
162
+ }
163
+ return Buffer.concat(chunks);
164
+ }
165
+ }
166
+ exports.UrlIngest = UrlIngest;
167
+ //# sourceMappingURL=ingest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../../../../../src/modules/network/utilities/url-safety/ingest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { UrlSafetyDefaults, UrlSchemes } from './common/constants';
2
+ import type { IUrlSafetyPolicy } from './common/types';
3
+ /** Everything about a url that can be decided without touching the network. */
4
+ export declare class UrlPolicy {
5
+ /** A dotted-quad that is not routable on the public internet. An unparseable input counts as non-public. */
6
+ private static isNonPublicIPv4;
7
+ /**
8
+ * An address that must never be reached with an untrusted url. Anything unrecognised answers
9
+ * `true`: a guard that fails open on a string it cannot parse is not a guard.
10
+ */
11
+ static isNonPublicAddress(opts: {
12
+ address: string;
13
+ }): boolean;
14
+ /** A bracketed IPv6 literal arrives as `[::1]`; the brackets are not part of the address. */
15
+ static readHostAddress(opts: {
16
+ hostname: string;
17
+ }): string;
18
+ /**
19
+ * A hostname that RESOLVES to a private address passes here on purpose - `UrlIngest` catches that,
20
+ * and this half runs where `node:dns` does not exist.
21
+ */
22
+ static assertSafeUrl(opts: {
23
+ url: string;
24
+ policy?: IUrlSafetyPolicy;
25
+ }): URL;
26
+ }
27
+ export { UrlSafetyDefaults, UrlSchemes };
28
+ export type { IUrlSafetyPolicy };
29
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/network/utilities/url-safety/policy.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,+EAA+E;AAC/E,qBAAa,SAAS;IACpB,4GAA4G;IAC5G,OAAO,CAAC,MAAM,CAAC,eAAe;IA0B9B;;;OAGG;IACH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;IAoC7D,6FAA6F;IAC7F,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAK1D;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;KAAE,GAAG,GAAG;CA0C5E;AAED,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AACzC,YAAY,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ // The browser-pure half of the guard: a url and a literal address are decided with string and
3
+ // number work alone. Resolving a hostname needs `node:dns` and lives in `ingest.ts`, which this
4
+ // file must never import - `policy.ts` is re-exported from the `./core` subpath and is gated by
5
+ // `make purity`.
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.UrlSchemes = exports.UrlSafetyDefaults = exports.UrlPolicy = void 0;
8
+ const error_1 = require("../../../error");
9
+ const constants_1 = require("./common/constants");
10
+ Object.defineProperty(exports, "UrlSafetyDefaults", { enumerable: true, get: function () { return constants_1.UrlSafetyDefaults; } });
11
+ Object.defineProperty(exports, "UrlSchemes", { enumerable: true, get: function () { return constants_1.UrlSchemes; } });
12
+ const errors_1 = require("./common/errors");
13
+ /** Everything about a url that can be decided without touching the network. */
14
+ class UrlPolicy {
15
+ /** A dotted-quad that is not routable on the public internet. An unparseable input counts as non-public. */
16
+ static isNonPublicIPv4(opts) {
17
+ const parts = opts.address.split('.').map(Number);
18
+ if (parts.length !== 4 ||
19
+ parts.some(part => !Number.isInteger(part) || part < 0 || part > 255)) {
20
+ return true;
21
+ }
22
+ const [first, second] = parts;
23
+ return (first === 0 || // this host
24
+ first === 10 || // private
25
+ first === 127 || // loopback
26
+ (first === 100 && second >= 64 && second <= 127) || // carrier-grade NAT
27
+ (first === 169 && second === 254) || // link-local, and the cloud metadata address
28
+ (first === 172 && second >= 16 && second <= 31) || // private
29
+ (first === 192 && second === 0) || // IETF protocol assignments
30
+ (first === 192 && second === 168) || // private
31
+ (first === 198 && (second === 18 || second === 19)) || // benchmarking
32
+ first >= 224 // multicast and reserved
33
+ );
34
+ }
35
+ /**
36
+ * An address that must never be reached with an untrusted url. Anything unrecognised answers
37
+ * `true`: a guard that fails open on a string it cannot parse is not a guard.
38
+ */
39
+ static isNonPublicAddress(opts) {
40
+ const normalized = opts.address.toLowerCase().split('%')[0];
41
+ if (!normalized.includes(':')) {
42
+ return UrlPolicy.isNonPublicIPv4({ address: normalized });
43
+ }
44
+ // An IPv4 address wearing an IPv6 coat walks past every naive v6 check. Both spellings must be
45
+ // unwrapped: `new URL` rewrites `::ffff:169.254.169.254` into the hex form `::ffff:a9fe:a9fe`,
46
+ // so a dotted-quad-only check is green on a value the parser never actually produces.
47
+ const dottedMapped = /^::ffff:(\d+\.\d+\.\d+\.\d+)$/.exec(normalized)?.[1];
48
+ if (dottedMapped) {
49
+ return UrlPolicy.isNonPublicIPv4({ address: dottedMapped });
50
+ }
51
+ const hexMapped = /^::ffff:([\da-f]{1,4}):([\da-f]{1,4})$/.exec(normalized);
52
+ if (hexMapped) {
53
+ const high = Number.parseInt(hexMapped[1], 16);
54
+ const low = Number.parseInt(hexMapped[2], 16);
55
+ const dotted = [high >> 8, high & 0xff, low >> 8, low & 0xff].join('.');
56
+ return UrlPolicy.isNonPublicIPv4({ address: dotted });
57
+ }
58
+ return (normalized === '::' ||
59
+ normalized === '::1' ||
60
+ normalized.startsWith('fc') || // unique local
61
+ normalized.startsWith('fd') ||
62
+ normalized.startsWith('fe8') || // link-local
63
+ normalized.startsWith('fe9') ||
64
+ normalized.startsWith('fea') ||
65
+ normalized.startsWith('feb'));
66
+ }
67
+ /** A bracketed IPv6 literal arrives as `[::1]`; the brackets are not part of the address. */
68
+ static readHostAddress(opts) {
69
+ const { hostname } = opts;
70
+ return hostname.startsWith('[') && hostname.endsWith(']') ? hostname.slice(1, -1) : hostname;
71
+ }
72
+ /**
73
+ * A hostname that RESOLVES to a private address passes here on purpose - `UrlIngest` catches that,
74
+ * and this half runs where `node:dns` does not exist.
75
+ */
76
+ static assertSafeUrl(opts) {
77
+ const { url, policy } = opts;
78
+ const allowedSchemes = policy?.allowedSchemes ?? constants_1.UrlSafetyDefaults.ALLOWED_SCHEMES;
79
+ const allowPrivateAddress = policy?.allowPrivateAddress ?? constants_1.UrlSafetyDefaults.ALLOW_PRIVATE_ADDRESS;
80
+ let parsed;
81
+ try {
82
+ parsed = new URL(url);
83
+ }
84
+ catch {
85
+ throw (0, error_1.getError)({
86
+ error: errors_1.UrlSafetyErrors.URL_REFUSED,
87
+ message: `[assertSafeUrl] Malformed url | url: ${url}`,
88
+ });
89
+ }
90
+ if (!allowedSchemes.includes(parsed.protocol)) {
91
+ throw (0, error_1.getError)({
92
+ error: errors_1.UrlSafetyErrors.URL_REFUSED,
93
+ message: `[assertSafeUrl] Disallowed scheme | scheme: ${parsed.protocol} | allowed: ${allowedSchemes.join(', ')}`,
94
+ });
95
+ }
96
+ if (policy?.allowedHosts && !policy.allowedHosts.includes(parsed.hostname)) {
97
+ throw (0, error_1.getError)({
98
+ error: errors_1.UrlSafetyErrors.URL_REFUSED,
99
+ message: `[assertSafeUrl] Host is not in the allow-list | host: ${parsed.hostname}`,
100
+ });
101
+ }
102
+ const address = UrlPolicy.readHostAddress({ hostname: parsed.hostname });
103
+ const isLiteralAddress = /^[\d.]+$/.test(address) || address.includes(':');
104
+ if (!allowPrivateAddress && isLiteralAddress && UrlPolicy.isNonPublicAddress({ address })) {
105
+ throw (0, error_1.getError)({
106
+ error: errors_1.UrlSafetyErrors.URL_REFUSED,
107
+ message: `[assertSafeUrl] Url points at a non-public address | address: ${address}`,
108
+ });
109
+ }
110
+ return parsed;
111
+ }
112
+ }
113
+ exports.UrlPolicy = UrlPolicy;
114
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../../../../src/modules/network/utilities/url-safety/policy.ts"],"names":[],"mappings":"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"}