expressed-core 1.0.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 (561) hide show
  1. package/README-es.md +42 -0
  2. package/README-es.md.backup +44 -0
  3. package/README.md +41 -0
  4. package/README.md.backup +43 -0
  5. package/hooked/LICENSE +204 -0
  6. package/hooked/README.es.md +238 -0
  7. package/hooked/README.md +238 -0
  8. package/hooked/advanced-example.js +240 -0
  9. package/hooked/express-hooked.js +206 -0
  10. package/hooked/hooks.js +584 -0
  11. package/hooked/package.json +30 -0
  12. package/index.js +25 -0
  13. package/package.json +36 -0
  14. package/queued/LICENSE +201 -0
  15. package/queued/QueueSystem.js +451 -0
  16. package/queued/README.es.md +335 -0
  17. package/queued/README.md +335 -0
  18. package/queued/express-example.js +143 -0
  19. package/queued/express-integration.js +115 -0
  20. package/queued/package.json +33 -0
  21. package/router/ExpressRouter.js +247 -0
  22. package/router/ExpressRouterIntegration.js +129 -0
  23. package/router/LICENSE +201 -0
  24. package/router/README.es.md +142 -0
  25. package/router/README.md +142 -0
  26. package/router/RouteDirectoryLoader.js +299 -0
  27. package/router/RouteLoader.js +245 -0
  28. package/router/RouteMatcher.js +361 -0
  29. package/router/node_modules/.package-lock.json +876 -0
  30. package/router/node_modules/accepts/HISTORY.md +243 -0
  31. package/router/node_modules/accepts/LICENSE +23 -0
  32. package/router/node_modules/accepts/README.md +140 -0
  33. package/router/node_modules/accepts/index.js +238 -0
  34. package/router/node_modules/accepts/package.json +47 -0
  35. package/router/node_modules/array-flatten/LICENSE +21 -0
  36. package/router/node_modules/array-flatten/README.md +43 -0
  37. package/router/node_modules/array-flatten/array-flatten.js +64 -0
  38. package/router/node_modules/array-flatten/package.json +39 -0
  39. package/router/node_modules/body-parser/HISTORY.md +680 -0
  40. package/router/node_modules/body-parser/LICENSE +23 -0
  41. package/router/node_modules/body-parser/README.md +476 -0
  42. package/router/node_modules/body-parser/index.js +156 -0
  43. package/router/node_modules/body-parser/lib/read.js +205 -0
  44. package/router/node_modules/body-parser/lib/types/json.js +247 -0
  45. package/router/node_modules/body-parser/lib/types/raw.js +101 -0
  46. package/router/node_modules/body-parser/lib/types/text.js +121 -0
  47. package/router/node_modules/body-parser/lib/types/urlencoded.js +300 -0
  48. package/router/node_modules/body-parser/package.json +55 -0
  49. package/router/node_modules/bytes/History.md +97 -0
  50. package/router/node_modules/bytes/LICENSE +23 -0
  51. package/router/node_modules/bytes/Readme.md +152 -0
  52. package/router/node_modules/bytes/index.js +170 -0
  53. package/router/node_modules/bytes/package.json +42 -0
  54. package/router/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +12 -0
  55. package/router/node_modules/call-bind-apply-helpers/CHANGELOG.md +30 -0
  56. package/router/node_modules/call-bind-apply-helpers/LICENSE +21 -0
  57. package/router/node_modules/call-bind-apply-helpers/README.md +62 -0
  58. package/router/node_modules/call-bind-apply-helpers/actualApply.d.ts +1 -0
  59. package/router/node_modules/call-bind-apply-helpers/actualApply.js +10 -0
  60. package/router/node_modules/call-bind-apply-helpers/applyBind.d.ts +19 -0
  61. package/router/node_modules/call-bind-apply-helpers/applyBind.js +10 -0
  62. package/router/node_modules/call-bind-apply-helpers/functionApply.d.ts +1 -0
  63. package/router/node_modules/call-bind-apply-helpers/functionApply.js +4 -0
  64. package/router/node_modules/call-bind-apply-helpers/functionCall.d.ts +1 -0
  65. package/router/node_modules/call-bind-apply-helpers/functionCall.js +4 -0
  66. package/router/node_modules/call-bind-apply-helpers/index.d.ts +64 -0
  67. package/router/node_modules/call-bind-apply-helpers/index.js +15 -0
  68. package/router/node_modules/call-bind-apply-helpers/package.json +85 -0
  69. package/router/node_modules/call-bind-apply-helpers/reflectApply.d.ts +3 -0
  70. package/router/node_modules/call-bind-apply-helpers/reflectApply.js +4 -0
  71. package/router/node_modules/call-bind-apply-helpers/tsconfig.json +9 -0
  72. package/router/node_modules/call-bound/.github/FUNDING.yml +12 -0
  73. package/router/node_modules/call-bound/CHANGELOG.md +42 -0
  74. package/router/node_modules/call-bound/LICENSE +21 -0
  75. package/router/node_modules/call-bound/README.md +53 -0
  76. package/router/node_modules/call-bound/index.d.ts +94 -0
  77. package/router/node_modules/call-bound/index.js +19 -0
  78. package/router/node_modules/call-bound/package.json +99 -0
  79. package/router/node_modules/call-bound/tsconfig.json +10 -0
  80. package/router/node_modules/content-disposition/HISTORY.md +60 -0
  81. package/router/node_modules/content-disposition/LICENSE +22 -0
  82. package/router/node_modules/content-disposition/README.md +142 -0
  83. package/router/node_modules/content-disposition/index.js +458 -0
  84. package/router/node_modules/content-disposition/package.json +44 -0
  85. package/router/node_modules/content-type/HISTORY.md +29 -0
  86. package/router/node_modules/content-type/LICENSE +22 -0
  87. package/router/node_modules/content-type/README.md +94 -0
  88. package/router/node_modules/content-type/index.js +225 -0
  89. package/router/node_modules/content-type/package.json +42 -0
  90. package/router/node_modules/cookie/LICENSE +24 -0
  91. package/router/node_modules/cookie/README.md +317 -0
  92. package/router/node_modules/cookie/SECURITY.md +25 -0
  93. package/router/node_modules/cookie/index.js +335 -0
  94. package/router/node_modules/cookie/package.json +44 -0
  95. package/router/node_modules/cookie-signature/History.md +42 -0
  96. package/router/node_modules/cookie-signature/Readme.md +42 -0
  97. package/router/node_modules/cookie-signature/index.js +51 -0
  98. package/router/node_modules/cookie-signature/package.json +18 -0
  99. package/router/node_modules/debug/.coveralls.yml +1 -0
  100. package/router/node_modules/debug/CHANGELOG.md +362 -0
  101. package/router/node_modules/debug/LICENSE +19 -0
  102. package/router/node_modules/debug/Makefile +50 -0
  103. package/router/node_modules/debug/README.md +312 -0
  104. package/router/node_modules/debug/component.json +19 -0
  105. package/router/node_modules/debug/karma.conf.js +70 -0
  106. package/router/node_modules/debug/node.js +1 -0
  107. package/router/node_modules/debug/package.json +49 -0
  108. package/router/node_modules/debug/src/browser.js +185 -0
  109. package/router/node_modules/debug/src/debug.js +202 -0
  110. package/router/node_modules/debug/src/index.js +10 -0
  111. package/router/node_modules/debug/src/inspector-log.js +15 -0
  112. package/router/node_modules/debug/src/node.js +248 -0
  113. package/router/node_modules/depd/History.md +103 -0
  114. package/router/node_modules/depd/LICENSE +22 -0
  115. package/router/node_modules/depd/Readme.md +280 -0
  116. package/router/node_modules/depd/index.js +538 -0
  117. package/router/node_modules/depd/lib/browser/index.js +77 -0
  118. package/router/node_modules/depd/package.json +45 -0
  119. package/router/node_modules/destroy/LICENSE +23 -0
  120. package/router/node_modules/destroy/README.md +63 -0
  121. package/router/node_modules/destroy/index.js +209 -0
  122. package/router/node_modules/destroy/package.json +48 -0
  123. package/router/node_modules/dunder-proto/.github/FUNDING.yml +12 -0
  124. package/router/node_modules/dunder-proto/CHANGELOG.md +24 -0
  125. package/router/node_modules/dunder-proto/LICENSE +21 -0
  126. package/router/node_modules/dunder-proto/README.md +54 -0
  127. package/router/node_modules/dunder-proto/get.d.ts +5 -0
  128. package/router/node_modules/dunder-proto/get.js +30 -0
  129. package/router/node_modules/dunder-proto/package.json +76 -0
  130. package/router/node_modules/dunder-proto/set.d.ts +5 -0
  131. package/router/node_modules/dunder-proto/set.js +35 -0
  132. package/router/node_modules/dunder-proto/tsconfig.json +9 -0
  133. package/router/node_modules/ee-first/LICENSE +22 -0
  134. package/router/node_modules/ee-first/README.md +80 -0
  135. package/router/node_modules/ee-first/index.js +95 -0
  136. package/router/node_modules/ee-first/package.json +29 -0
  137. package/router/node_modules/encodeurl/LICENSE +22 -0
  138. package/router/node_modules/encodeurl/README.md +109 -0
  139. package/router/node_modules/encodeurl/index.js +60 -0
  140. package/router/node_modules/encodeurl/package.json +40 -0
  141. package/router/node_modules/es-define-property/.github/FUNDING.yml +12 -0
  142. package/router/node_modules/es-define-property/CHANGELOG.md +29 -0
  143. package/router/node_modules/es-define-property/LICENSE +21 -0
  144. package/router/node_modules/es-define-property/README.md +49 -0
  145. package/router/node_modules/es-define-property/index.d.ts +3 -0
  146. package/router/node_modules/es-define-property/index.js +14 -0
  147. package/router/node_modules/es-define-property/package.json +81 -0
  148. package/router/node_modules/es-define-property/tsconfig.json +10 -0
  149. package/router/node_modules/es-errors/.github/FUNDING.yml +12 -0
  150. package/router/node_modules/es-errors/CHANGELOG.md +40 -0
  151. package/router/node_modules/es-errors/LICENSE +21 -0
  152. package/router/node_modules/es-errors/README.md +55 -0
  153. package/router/node_modules/es-errors/eval.d.ts +3 -0
  154. package/router/node_modules/es-errors/eval.js +4 -0
  155. package/router/node_modules/es-errors/index.d.ts +3 -0
  156. package/router/node_modules/es-errors/index.js +4 -0
  157. package/router/node_modules/es-errors/package.json +80 -0
  158. package/router/node_modules/es-errors/range.d.ts +3 -0
  159. package/router/node_modules/es-errors/range.js +4 -0
  160. package/router/node_modules/es-errors/ref.d.ts +3 -0
  161. package/router/node_modules/es-errors/ref.js +4 -0
  162. package/router/node_modules/es-errors/syntax.d.ts +3 -0
  163. package/router/node_modules/es-errors/syntax.js +4 -0
  164. package/router/node_modules/es-errors/tsconfig.json +49 -0
  165. package/router/node_modules/es-errors/type.d.ts +3 -0
  166. package/router/node_modules/es-errors/type.js +4 -0
  167. package/router/node_modules/es-errors/uri.d.ts +3 -0
  168. package/router/node_modules/es-errors/uri.js +4 -0
  169. package/router/node_modules/es-object-atoms/.github/FUNDING.yml +12 -0
  170. package/router/node_modules/es-object-atoms/CHANGELOG.md +37 -0
  171. package/router/node_modules/es-object-atoms/LICENSE +21 -0
  172. package/router/node_modules/es-object-atoms/README.md +63 -0
  173. package/router/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +3 -0
  174. package/router/node_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
  175. package/router/node_modules/es-object-atoms/ToObject.d.ts +7 -0
  176. package/router/node_modules/es-object-atoms/ToObject.js +10 -0
  177. package/router/node_modules/es-object-atoms/index.d.ts +3 -0
  178. package/router/node_modules/es-object-atoms/index.js +4 -0
  179. package/router/node_modules/es-object-atoms/isObject.d.ts +3 -0
  180. package/router/node_modules/es-object-atoms/isObject.js +6 -0
  181. package/router/node_modules/es-object-atoms/package.json +80 -0
  182. package/router/node_modules/es-object-atoms/tsconfig.json +6 -0
  183. package/router/node_modules/escape-html/LICENSE +24 -0
  184. package/router/node_modules/escape-html/Readme.md +43 -0
  185. package/router/node_modules/escape-html/index.js +78 -0
  186. package/router/node_modules/escape-html/package.json +24 -0
  187. package/router/node_modules/etag/HISTORY.md +83 -0
  188. package/router/node_modules/etag/LICENSE +22 -0
  189. package/router/node_modules/etag/README.md +159 -0
  190. package/router/node_modules/etag/index.js +131 -0
  191. package/router/node_modules/etag/package.json +47 -0
  192. package/router/node_modules/express/History.md +3667 -0
  193. package/router/node_modules/express/LICENSE +24 -0
  194. package/router/node_modules/express/Readme.md +260 -0
  195. package/router/node_modules/express/index.js +11 -0
  196. package/router/node_modules/express/lib/application.js +661 -0
  197. package/router/node_modules/express/lib/express.js +116 -0
  198. package/router/node_modules/express/lib/middleware/init.js +43 -0
  199. package/router/node_modules/express/lib/middleware/query.js +47 -0
  200. package/router/node_modules/express/lib/request.js +525 -0
  201. package/router/node_modules/express/lib/response.js +1179 -0
  202. package/router/node_modules/express/lib/router/index.js +673 -0
  203. package/router/node_modules/express/lib/router/layer.js +181 -0
  204. package/router/node_modules/express/lib/router/route.js +230 -0
  205. package/router/node_modules/express/lib/utils.js +303 -0
  206. package/router/node_modules/express/lib/view.js +182 -0
  207. package/router/node_modules/express/package.json +102 -0
  208. package/router/node_modules/express-hooked/LICENSE +204 -0
  209. package/router/node_modules/express-hooked/README.es.md +123 -0
  210. package/router/node_modules/express-hooked/README.md +123 -0
  211. package/router/node_modules/express-hooked/express-hooked.js +206 -0
  212. package/router/node_modules/express-hooked/hooks.js +584 -0
  213. package/router/node_modules/express-hooked/package.json +30 -0
  214. package/router/node_modules/finalhandler/HISTORY.md +216 -0
  215. package/router/node_modules/finalhandler/LICENSE +22 -0
  216. package/router/node_modules/finalhandler/README.md +147 -0
  217. package/router/node_modules/finalhandler/SECURITY.md +25 -0
  218. package/router/node_modules/finalhandler/index.js +341 -0
  219. package/router/node_modules/finalhandler/package.json +47 -0
  220. package/router/node_modules/forwarded/HISTORY.md +21 -0
  221. package/router/node_modules/forwarded/LICENSE +22 -0
  222. package/router/node_modules/forwarded/README.md +57 -0
  223. package/router/node_modules/forwarded/index.js +90 -0
  224. package/router/node_modules/forwarded/package.json +45 -0
  225. package/router/node_modules/fresh/HISTORY.md +70 -0
  226. package/router/node_modules/fresh/LICENSE +23 -0
  227. package/router/node_modules/fresh/README.md +119 -0
  228. package/router/node_modules/fresh/index.js +137 -0
  229. package/router/node_modules/fresh/package.json +46 -0
  230. package/router/node_modules/function-bind/.github/FUNDING.yml +12 -0
  231. package/router/node_modules/function-bind/.github/SECURITY.md +3 -0
  232. package/router/node_modules/function-bind/CHANGELOG.md +136 -0
  233. package/router/node_modules/function-bind/LICENSE +20 -0
  234. package/router/node_modules/function-bind/README.md +46 -0
  235. package/router/node_modules/function-bind/implementation.js +84 -0
  236. package/router/node_modules/function-bind/index.js +5 -0
  237. package/router/node_modules/function-bind/package.json +87 -0
  238. package/router/node_modules/get-intrinsic/.github/FUNDING.yml +12 -0
  239. package/router/node_modules/get-intrinsic/CHANGELOG.md +186 -0
  240. package/router/node_modules/get-intrinsic/LICENSE +21 -0
  241. package/router/node_modules/get-intrinsic/README.md +71 -0
  242. package/router/node_modules/get-intrinsic/index.js +378 -0
  243. package/router/node_modules/get-intrinsic/package.json +97 -0
  244. package/router/node_modules/get-proto/.github/FUNDING.yml +12 -0
  245. package/router/node_modules/get-proto/CHANGELOG.md +21 -0
  246. package/router/node_modules/get-proto/LICENSE +21 -0
  247. package/router/node_modules/get-proto/Object.getPrototypeOf.d.ts +5 -0
  248. package/router/node_modules/get-proto/Object.getPrototypeOf.js +6 -0
  249. package/router/node_modules/get-proto/README.md +50 -0
  250. package/router/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +3 -0
  251. package/router/node_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
  252. package/router/node_modules/get-proto/index.d.ts +5 -0
  253. package/router/node_modules/get-proto/index.js +27 -0
  254. package/router/node_modules/get-proto/package.json +81 -0
  255. package/router/node_modules/get-proto/tsconfig.json +9 -0
  256. package/router/node_modules/gopd/.github/FUNDING.yml +12 -0
  257. package/router/node_modules/gopd/CHANGELOG.md +45 -0
  258. package/router/node_modules/gopd/LICENSE +21 -0
  259. package/router/node_modules/gopd/README.md +40 -0
  260. package/router/node_modules/gopd/gOPD.d.ts +1 -0
  261. package/router/node_modules/gopd/gOPD.js +4 -0
  262. package/router/node_modules/gopd/index.d.ts +5 -0
  263. package/router/node_modules/gopd/index.js +15 -0
  264. package/router/node_modules/gopd/package.json +77 -0
  265. package/router/node_modules/gopd/tsconfig.json +9 -0
  266. package/router/node_modules/has-symbols/.github/FUNDING.yml +12 -0
  267. package/router/node_modules/has-symbols/CHANGELOG.md +91 -0
  268. package/router/node_modules/has-symbols/LICENSE +21 -0
  269. package/router/node_modules/has-symbols/README.md +46 -0
  270. package/router/node_modules/has-symbols/index.d.ts +3 -0
  271. package/router/node_modules/has-symbols/index.js +14 -0
  272. package/router/node_modules/has-symbols/package.json +111 -0
  273. package/router/node_modules/has-symbols/shams.d.ts +3 -0
  274. package/router/node_modules/has-symbols/shams.js +45 -0
  275. package/router/node_modules/has-symbols/tsconfig.json +10 -0
  276. package/router/node_modules/hasown/.github/FUNDING.yml +12 -0
  277. package/router/node_modules/hasown/CHANGELOG.md +40 -0
  278. package/router/node_modules/hasown/LICENSE +21 -0
  279. package/router/node_modules/hasown/README.md +40 -0
  280. package/router/node_modules/hasown/index.d.ts +3 -0
  281. package/router/node_modules/hasown/index.js +8 -0
  282. package/router/node_modules/hasown/package.json +92 -0
  283. package/router/node_modules/hasown/tsconfig.json +6 -0
  284. package/router/node_modules/http-errors/HISTORY.md +186 -0
  285. package/router/node_modules/http-errors/LICENSE +23 -0
  286. package/router/node_modules/http-errors/README.md +169 -0
  287. package/router/node_modules/http-errors/index.js +290 -0
  288. package/router/node_modules/http-errors/package.json +54 -0
  289. package/router/node_modules/iconv-lite/Changelog.md +162 -0
  290. package/router/node_modules/iconv-lite/LICENSE +21 -0
  291. package/router/node_modules/iconv-lite/README.md +156 -0
  292. package/router/node_modules/iconv-lite/encodings/dbcs-codec.js +555 -0
  293. package/router/node_modules/iconv-lite/encodings/dbcs-data.js +176 -0
  294. package/router/node_modules/iconv-lite/encodings/index.js +22 -0
  295. package/router/node_modules/iconv-lite/encodings/internal.js +188 -0
  296. package/router/node_modules/iconv-lite/encodings/sbcs-codec.js +72 -0
  297. package/router/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
  298. package/router/node_modules/iconv-lite/encodings/sbcs-data.js +174 -0
  299. package/router/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
  300. package/router/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
  301. package/router/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
  302. package/router/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
  303. package/router/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
  304. package/router/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
  305. package/router/node_modules/iconv-lite/encodings/tables/gbk-added.json +55 -0
  306. package/router/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
  307. package/router/node_modules/iconv-lite/encodings/utf16.js +177 -0
  308. package/router/node_modules/iconv-lite/encodings/utf7.js +290 -0
  309. package/router/node_modules/iconv-lite/lib/bom-handling.js +52 -0
  310. package/router/node_modules/iconv-lite/lib/extend-node.js +217 -0
  311. package/router/node_modules/iconv-lite/lib/index.d.ts +24 -0
  312. package/router/node_modules/iconv-lite/lib/index.js +153 -0
  313. package/router/node_modules/iconv-lite/lib/streams.js +121 -0
  314. package/router/node_modules/iconv-lite/package.json +46 -0
  315. package/router/node_modules/inherits/LICENSE +16 -0
  316. package/router/node_modules/inherits/README.md +42 -0
  317. package/router/node_modules/inherits/inherits.js +9 -0
  318. package/router/node_modules/inherits/inherits_browser.js +27 -0
  319. package/router/node_modules/inherits/package.json +29 -0
  320. package/router/node_modules/ipaddr.js/LICENSE +19 -0
  321. package/router/node_modules/ipaddr.js/README.md +233 -0
  322. package/router/node_modules/ipaddr.js/ipaddr.min.js +1 -0
  323. package/router/node_modules/ipaddr.js/lib/ipaddr.js +673 -0
  324. package/router/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +68 -0
  325. package/router/node_modules/ipaddr.js/package.json +35 -0
  326. package/router/node_modules/math-intrinsics/.github/FUNDING.yml +12 -0
  327. package/router/node_modules/math-intrinsics/CHANGELOG.md +24 -0
  328. package/router/node_modules/math-intrinsics/LICENSE +21 -0
  329. package/router/node_modules/math-intrinsics/README.md +50 -0
  330. package/router/node_modules/math-intrinsics/abs.d.ts +1 -0
  331. package/router/node_modules/math-intrinsics/abs.js +4 -0
  332. package/router/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +3 -0
  333. package/router/node_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
  334. package/router/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +3 -0
  335. package/router/node_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
  336. package/router/node_modules/math-intrinsics/constants/maxValue.d.ts +3 -0
  337. package/router/node_modules/math-intrinsics/constants/maxValue.js +5 -0
  338. package/router/node_modules/math-intrinsics/floor.d.ts +1 -0
  339. package/router/node_modules/math-intrinsics/floor.js +4 -0
  340. package/router/node_modules/math-intrinsics/isFinite.d.ts +3 -0
  341. package/router/node_modules/math-intrinsics/isFinite.js +12 -0
  342. package/router/node_modules/math-intrinsics/isInteger.d.ts +3 -0
  343. package/router/node_modules/math-intrinsics/isInteger.js +16 -0
  344. package/router/node_modules/math-intrinsics/isNaN.d.ts +1 -0
  345. package/router/node_modules/math-intrinsics/isNaN.js +6 -0
  346. package/router/node_modules/math-intrinsics/isNegativeZero.d.ts +3 -0
  347. package/router/node_modules/math-intrinsics/isNegativeZero.js +6 -0
  348. package/router/node_modules/math-intrinsics/max.d.ts +1 -0
  349. package/router/node_modules/math-intrinsics/max.js +4 -0
  350. package/router/node_modules/math-intrinsics/min.d.ts +1 -0
  351. package/router/node_modules/math-intrinsics/min.js +4 -0
  352. package/router/node_modules/math-intrinsics/mod.d.ts +3 -0
  353. package/router/node_modules/math-intrinsics/mod.js +9 -0
  354. package/router/node_modules/math-intrinsics/package.json +86 -0
  355. package/router/node_modules/math-intrinsics/pow.d.ts +1 -0
  356. package/router/node_modules/math-intrinsics/pow.js +4 -0
  357. package/router/node_modules/math-intrinsics/round.d.ts +1 -0
  358. package/router/node_modules/math-intrinsics/round.js +4 -0
  359. package/router/node_modules/math-intrinsics/sign.d.ts +3 -0
  360. package/router/node_modules/math-intrinsics/sign.js +11 -0
  361. package/router/node_modules/math-intrinsics/tsconfig.json +3 -0
  362. package/router/node_modules/media-typer/HISTORY.md +22 -0
  363. package/router/node_modules/media-typer/LICENSE +22 -0
  364. package/router/node_modules/media-typer/README.md +81 -0
  365. package/router/node_modules/media-typer/index.js +270 -0
  366. package/router/node_modules/media-typer/package.json +26 -0
  367. package/router/node_modules/merge-descriptors/HISTORY.md +21 -0
  368. package/router/node_modules/merge-descriptors/LICENSE +23 -0
  369. package/router/node_modules/merge-descriptors/README.md +49 -0
  370. package/router/node_modules/merge-descriptors/index.js +60 -0
  371. package/router/node_modules/merge-descriptors/package.json +39 -0
  372. package/router/node_modules/methods/HISTORY.md +29 -0
  373. package/router/node_modules/methods/LICENSE +24 -0
  374. package/router/node_modules/methods/README.md +51 -0
  375. package/router/node_modules/methods/index.js +69 -0
  376. package/router/node_modules/methods/package.json +36 -0
  377. package/router/node_modules/mime/CHANGELOG.md +164 -0
  378. package/router/node_modules/mime/LICENSE +21 -0
  379. package/router/node_modules/mime/README.md +90 -0
  380. package/router/node_modules/mime/cli.js +8 -0
  381. package/router/node_modules/mime/mime.js +108 -0
  382. package/router/node_modules/mime/package.json +44 -0
  383. package/router/node_modules/mime/src/build.js +53 -0
  384. package/router/node_modules/mime/src/test.js +60 -0
  385. package/router/node_modules/mime/types.json +1 -0
  386. package/router/node_modules/mime-db/HISTORY.md +507 -0
  387. package/router/node_modules/mime-db/LICENSE +23 -0
  388. package/router/node_modules/mime-db/README.md +100 -0
  389. package/router/node_modules/mime-db/db.json +8519 -0
  390. package/router/node_modules/mime-db/index.js +12 -0
  391. package/router/node_modules/mime-db/package.json +60 -0
  392. package/router/node_modules/mime-types/HISTORY.md +397 -0
  393. package/router/node_modules/mime-types/LICENSE +23 -0
  394. package/router/node_modules/mime-types/README.md +113 -0
  395. package/router/node_modules/mime-types/index.js +188 -0
  396. package/router/node_modules/mime-types/package.json +44 -0
  397. package/router/node_modules/ms/index.js +152 -0
  398. package/router/node_modules/ms/license.md +21 -0
  399. package/router/node_modules/ms/package.json +37 -0
  400. package/router/node_modules/ms/readme.md +51 -0
  401. package/router/node_modules/negotiator/HISTORY.md +108 -0
  402. package/router/node_modules/negotiator/LICENSE +24 -0
  403. package/router/node_modules/negotiator/README.md +203 -0
  404. package/router/node_modules/negotiator/index.js +82 -0
  405. package/router/node_modules/negotiator/lib/charset.js +169 -0
  406. package/router/node_modules/negotiator/lib/encoding.js +184 -0
  407. package/router/node_modules/negotiator/lib/language.js +179 -0
  408. package/router/node_modules/negotiator/lib/mediaType.js +294 -0
  409. package/router/node_modules/negotiator/package.json +42 -0
  410. package/router/node_modules/object-inspect/.github/FUNDING.yml +12 -0
  411. package/router/node_modules/object-inspect/CHANGELOG.md +424 -0
  412. package/router/node_modules/object-inspect/LICENSE +21 -0
  413. package/router/node_modules/object-inspect/example/all.js +23 -0
  414. package/router/node_modules/object-inspect/example/circular.js +6 -0
  415. package/router/node_modules/object-inspect/example/fn.js +5 -0
  416. package/router/node_modules/object-inspect/example/inspect.js +10 -0
  417. package/router/node_modules/object-inspect/index.js +544 -0
  418. package/router/node_modules/object-inspect/package-support.json +20 -0
  419. package/router/node_modules/object-inspect/package.json +105 -0
  420. package/router/node_modules/object-inspect/readme.markdown +84 -0
  421. package/router/node_modules/object-inspect/test-core-js.js +26 -0
  422. package/router/node_modules/object-inspect/util.inspect.js +1 -0
  423. package/router/node_modules/on-finished/HISTORY.md +98 -0
  424. package/router/node_modules/on-finished/LICENSE +23 -0
  425. package/router/node_modules/on-finished/README.md +162 -0
  426. package/router/node_modules/on-finished/index.js +234 -0
  427. package/router/node_modules/on-finished/package.json +39 -0
  428. package/router/node_modules/parseurl/HISTORY.md +58 -0
  429. package/router/node_modules/parseurl/LICENSE +24 -0
  430. package/router/node_modules/parseurl/README.md +133 -0
  431. package/router/node_modules/parseurl/index.js +158 -0
  432. package/router/node_modules/parseurl/package.json +40 -0
  433. package/router/node_modules/path-to-regexp/LICENSE +21 -0
  434. package/router/node_modules/path-to-regexp/Readme.md +35 -0
  435. package/router/node_modules/path-to-regexp/index.js +156 -0
  436. package/router/node_modules/path-to-regexp/package.json +30 -0
  437. package/router/node_modules/proxy-addr/HISTORY.md +161 -0
  438. package/router/node_modules/proxy-addr/LICENSE +22 -0
  439. package/router/node_modules/proxy-addr/README.md +139 -0
  440. package/router/node_modules/proxy-addr/index.js +327 -0
  441. package/router/node_modules/proxy-addr/package.json +47 -0
  442. package/router/node_modules/qs/.github/FUNDING.yml +12 -0
  443. package/router/node_modules/qs/.github/SECURITY.md +11 -0
  444. package/router/node_modules/qs/.github/THREAT_MODEL.md +78 -0
  445. package/router/node_modules/qs/CHANGELOG.md +644 -0
  446. package/router/node_modules/qs/LICENSE.md +29 -0
  447. package/router/node_modules/qs/README.md +740 -0
  448. package/router/node_modules/qs/dist/qs.js +141 -0
  449. package/router/node_modules/qs/eslint.config.mjs +56 -0
  450. package/router/node_modules/qs/lib/formats.js +23 -0
  451. package/router/node_modules/qs/lib/index.js +11 -0
  452. package/router/node_modules/qs/lib/parse.js +371 -0
  453. package/router/node_modules/qs/lib/stringify.js +356 -0
  454. package/router/node_modules/qs/lib/utils.js +340 -0
  455. package/router/node_modules/qs/package.json +94 -0
  456. package/router/node_modules/range-parser/HISTORY.md +56 -0
  457. package/router/node_modules/range-parser/LICENSE +23 -0
  458. package/router/node_modules/range-parser/README.md +84 -0
  459. package/router/node_modules/range-parser/index.js +162 -0
  460. package/router/node_modules/range-parser/package.json +44 -0
  461. package/router/node_modules/raw-body/LICENSE +22 -0
  462. package/router/node_modules/raw-body/README.md +223 -0
  463. package/router/node_modules/raw-body/index.d.ts +87 -0
  464. package/router/node_modules/raw-body/index.js +336 -0
  465. package/router/node_modules/raw-body/package.json +47 -0
  466. package/router/node_modules/safe-buffer/LICENSE +21 -0
  467. package/router/node_modules/safe-buffer/README.md +584 -0
  468. package/router/node_modules/safe-buffer/index.d.ts +187 -0
  469. package/router/node_modules/safe-buffer/index.js +65 -0
  470. package/router/node_modules/safe-buffer/package.json +51 -0
  471. package/router/node_modules/safer-buffer/LICENSE +21 -0
  472. package/router/node_modules/safer-buffer/Porting-Buffer.md +268 -0
  473. package/router/node_modules/safer-buffer/Readme.md +156 -0
  474. package/router/node_modules/safer-buffer/dangerous.js +58 -0
  475. package/router/node_modules/safer-buffer/package.json +34 -0
  476. package/router/node_modules/safer-buffer/safer.js +77 -0
  477. package/router/node_modules/safer-buffer/tests.js +406 -0
  478. package/router/node_modules/send/HISTORY.md +538 -0
  479. package/router/node_modules/send/LICENSE +23 -0
  480. package/router/node_modules/send/README.md +327 -0
  481. package/router/node_modules/send/SECURITY.md +24 -0
  482. package/router/node_modules/send/index.js +1142 -0
  483. package/router/node_modules/send/node_modules/ms/index.js +162 -0
  484. package/router/node_modules/send/node_modules/ms/license.md +21 -0
  485. package/router/node_modules/send/node_modules/ms/package.json +38 -0
  486. package/router/node_modules/send/node_modules/ms/readme.md +59 -0
  487. package/router/node_modules/send/package.json +62 -0
  488. package/router/node_modules/serve-static/HISTORY.md +493 -0
  489. package/router/node_modules/serve-static/LICENSE +25 -0
  490. package/router/node_modules/serve-static/README.md +257 -0
  491. package/router/node_modules/serve-static/index.js +209 -0
  492. package/router/node_modules/serve-static/package.json +42 -0
  493. package/router/node_modules/setprototypeof/LICENSE +13 -0
  494. package/router/node_modules/setprototypeof/README.md +31 -0
  495. package/router/node_modules/setprototypeof/index.d.ts +2 -0
  496. package/router/node_modules/setprototypeof/index.js +17 -0
  497. package/router/node_modules/setprototypeof/package.json +38 -0
  498. package/router/node_modules/side-channel/.github/FUNDING.yml +12 -0
  499. package/router/node_modules/side-channel/CHANGELOG.md +110 -0
  500. package/router/node_modules/side-channel/LICENSE +21 -0
  501. package/router/node_modules/side-channel/README.md +61 -0
  502. package/router/node_modules/side-channel/index.d.ts +14 -0
  503. package/router/node_modules/side-channel/index.js +43 -0
  504. package/router/node_modules/side-channel/package.json +85 -0
  505. package/router/node_modules/side-channel/tsconfig.json +9 -0
  506. package/router/node_modules/side-channel-list/.github/FUNDING.yml +12 -0
  507. package/router/node_modules/side-channel-list/CHANGELOG.md +15 -0
  508. package/router/node_modules/side-channel-list/LICENSE +21 -0
  509. package/router/node_modules/side-channel-list/README.md +62 -0
  510. package/router/node_modules/side-channel-list/index.d.ts +13 -0
  511. package/router/node_modules/side-channel-list/index.js +113 -0
  512. package/router/node_modules/side-channel-list/list.d.ts +14 -0
  513. package/router/node_modules/side-channel-list/package.json +77 -0
  514. package/router/node_modules/side-channel-list/tsconfig.json +9 -0
  515. package/router/node_modules/side-channel-map/.github/FUNDING.yml +12 -0
  516. package/router/node_modules/side-channel-map/CHANGELOG.md +22 -0
  517. package/router/node_modules/side-channel-map/LICENSE +21 -0
  518. package/router/node_modules/side-channel-map/README.md +62 -0
  519. package/router/node_modules/side-channel-map/index.d.ts +15 -0
  520. package/router/node_modules/side-channel-map/index.js +68 -0
  521. package/router/node_modules/side-channel-map/package.json +80 -0
  522. package/router/node_modules/side-channel-map/tsconfig.json +9 -0
  523. package/router/node_modules/side-channel-weakmap/.github/FUNDING.yml +12 -0
  524. package/router/node_modules/side-channel-weakmap/CHANGELOG.md +28 -0
  525. package/router/node_modules/side-channel-weakmap/LICENSE +21 -0
  526. package/router/node_modules/side-channel-weakmap/README.md +62 -0
  527. package/router/node_modules/side-channel-weakmap/index.d.ts +15 -0
  528. package/router/node_modules/side-channel-weakmap/index.js +84 -0
  529. package/router/node_modules/side-channel-weakmap/package.json +87 -0
  530. package/router/node_modules/side-channel-weakmap/tsconfig.json +9 -0
  531. package/router/node_modules/statuses/HISTORY.md +87 -0
  532. package/router/node_modules/statuses/LICENSE +23 -0
  533. package/router/node_modules/statuses/README.md +139 -0
  534. package/router/node_modules/statuses/codes.json +65 -0
  535. package/router/node_modules/statuses/index.js +146 -0
  536. package/router/node_modules/statuses/package.json +49 -0
  537. package/router/node_modules/toidentifier/HISTORY.md +9 -0
  538. package/router/node_modules/toidentifier/LICENSE +21 -0
  539. package/router/node_modules/toidentifier/README.md +61 -0
  540. package/router/node_modules/toidentifier/index.js +32 -0
  541. package/router/node_modules/toidentifier/package.json +38 -0
  542. package/router/node_modules/type-is/HISTORY.md +259 -0
  543. package/router/node_modules/type-is/LICENSE +23 -0
  544. package/router/node_modules/type-is/README.md +170 -0
  545. package/router/node_modules/type-is/index.js +266 -0
  546. package/router/node_modules/type-is/package.json +45 -0
  547. package/router/node_modules/unpipe/HISTORY.md +4 -0
  548. package/router/node_modules/unpipe/LICENSE +22 -0
  549. package/router/node_modules/unpipe/README.md +43 -0
  550. package/router/node_modules/unpipe/index.js +69 -0
  551. package/router/node_modules/unpipe/package.json +27 -0
  552. package/router/node_modules/utils-merge/LICENSE +20 -0
  553. package/router/node_modules/utils-merge/README.md +34 -0
  554. package/router/node_modules/utils-merge/index.js +23 -0
  555. package/router/node_modules/utils-merge/package.json +40 -0
  556. package/router/node_modules/vary/HISTORY.md +39 -0
  557. package/router/node_modules/vary/LICENSE +22 -0
  558. package/router/node_modules/vary/README.md +101 -0
  559. package/router/node_modules/vary/index.js +149 -0
  560. package/router/node_modules/vary/package.json +43 -0
  561. package/router/package.json +36 -0
@@ -0,0 +1,584 @@
1
+ /**
2
+ * Sistema de Hooks y Filters (Versión independiente para Express)
3
+ * HOOKED LIB 2.0
4
+ * Versión 2.0.0
5
+ * Implementación independiente para el sistema de hooks en Express
6
+ *
7
+ * @author Benjamin Sanchez Cardenas
8
+ * @license Apache 2.0
9
+ */
10
+
11
+ class HookSystem {
12
+ constructor() {
13
+ // Almacenar acciones registradas
14
+ this.actions = new Map();
15
+ // Almacenar filtros registrados
16
+ this.filters = new Map();
17
+ // Almacenar namespaces
18
+ this.namespaces = new Map();
19
+ }
20
+
21
+ /**
22
+ * Extrae el namespace y el nombre del hook
23
+ * @private
24
+ */
25
+ _parseNamespaceAndHook(hookName) {
26
+ if (typeof hookName !== 'string' || hookName.trim() === '') {
27
+ throw new TypeError('hookName debe ser una cadena no vacía');
28
+ }
29
+
30
+ const parts = hookName.split('::');
31
+ if (parts.length === 1) {
32
+ return { namespace: null, hookName: parts[0] };
33
+ } else if (parts.length === 2) {
34
+ return { namespace: parts[0], hookName: parts[1] };
35
+ } else {
36
+ throw new Error('Formato de hook con namespace inválido. Use namespace::hookName');
37
+ }
38
+ }
39
+
40
+ /**
41
+ * Obtiene la colección de hooks (acciones o filtros) para un namespace
42
+ * @private
43
+ */
44
+ _getHooksCollection(collectionMap, namespace, hookName) {
45
+ if (namespace) {
46
+ if (!this.namespaces.has(namespace)) {
47
+ this.namespaces.set(namespace, { actions: new Map(), filters: new Map() });
48
+ }
49
+
50
+ const namespaceData = this.namespaces.get(namespace);
51
+ return namespaceData[collectionMap];
52
+ }
53
+ return collectionMap === 'actions' ? this.actions : this.filters;
54
+ }
55
+
56
+ /**
57
+ * Valida los parámetros comunes para addAction y addFilter
58
+ * @private
59
+ */
60
+ _validateCommonParams(hookName, callback, priority, acceptedArgs) {
61
+ if (typeof hookName !== 'string' || hookName.trim() === '') {
62
+ throw new TypeError('hookName debe ser una cadena no vacía');
63
+ }
64
+
65
+ if (typeof callback !== 'function') {
66
+ throw new TypeError('callback debe ser una función');
67
+ }
68
+
69
+ if (!Number.isInteger(priority) || priority < 0) {
70
+ throw new TypeError('priority debe ser un número entero no negativo');
71
+ }
72
+
73
+ if (!Number.isInteger(acceptedArgs) || acceptedArgs < 0) {
74
+ throw new TypeError('acceptedArgs debe ser un número entero no negativo');
75
+ }
76
+ }
77
+
78
+ /**
79
+ * Registra una acción
80
+ * @param {string} hookName - Nombre del hook (puede incluir namespace como namespace::nombre)
81
+ * @param {Function} callback - Función a ejecutar
82
+ * @param {number} priority - Prioridad (más bajo se ejecuta primero)
83
+ * @param {number} acceptedArgs - Número de argumentos aceptados
84
+ * @param {string} [identifier] - Identificador opcional para el callback
85
+ */
86
+ addAction(hookName, callback, priority = 10, acceptedArgs = 1, identifier = null) {
87
+ this._validateCommonParams(hookName, callback, priority, acceptedArgs);
88
+
89
+ if (identifier !== null && typeof identifier !== 'string') {
90
+ throw new TypeError('identifier debe ser una cadena o null');
91
+ }
92
+
93
+ const { namespace, hookName: cleanHookName } = this._parseNamespaceAndHook(hookName);
94
+ const collection = this._getHooksCollection('actions', namespace, cleanHookName);
95
+
96
+ if (!collection.has(cleanHookName)) {
97
+ collection.set(cleanHookName, []);
98
+ }
99
+
100
+ const hookList = collection.get(cleanHookName);
101
+
102
+ // Crear objeto hook con identificador opcional
103
+ const hookObject = {
104
+ callback,
105
+ priority,
106
+ acceptedArgs,
107
+ id: Date.now() + Math.random(),
108
+ identifier: identifier || null,
109
+ namespace: namespace
110
+ };
111
+
112
+ // Insertar en la posición correcta manteniendo el orden por prioridad
113
+ this._insertHookSorted(hookList, hookObject);
114
+ }
115
+
116
+ /**
117
+ * Registra un filtro
118
+ * @param {string} hookName - Nombre del hook (puede incluir namespace como namespace::nombre)
119
+ * @param {Function} callback - Función a ejecutar
120
+ * @param {number} priority - Prioridad (más bajo se ejecuta primero)
121
+ * @param {number} acceptedArgs - Número de argumentos aceptados
122
+ * @param {string} [identifier] - Identificador opcional para el callback
123
+ */
124
+ addFilter(hookName, callback, priority = 10, acceptedArgs = 1, identifier = null) {
125
+ this._validateCommonParams(hookName, callback, priority, acceptedArgs);
126
+
127
+ if (identifier !== null && typeof identifier !== 'string') {
128
+ throw new TypeError('identifier debe ser una cadena o null');
129
+ }
130
+
131
+ const { namespace, hookName: cleanHookName } = this._parseNamespaceAndHook(hookName);
132
+ const collection = this._getHooksCollection('filters', namespace, cleanHookName);
133
+
134
+ if (!collection.has(cleanHookName)) {
135
+ collection.set(cleanHookName, []);
136
+ }
137
+
138
+ const hookList = collection.get(cleanHookName);
139
+
140
+ // Crear objeto hook con identificador opcional
141
+ const hookObject = {
142
+ callback,
143
+ priority,
144
+ acceptedArgs,
145
+ id: Date.now() + Math.random(),
146
+ identifier: identifier || null,
147
+ namespace: namespace
148
+ };
149
+
150
+ // Insertar en la posición correcta manteniendo el orden por prioridad
151
+ this._insertHookSorted(hookList, hookObject);
152
+ }
153
+
154
+ /**
155
+ * Inserta un hook en la posición correcta según la prioridad
156
+ * @private
157
+ */
158
+ _insertHookSorted(hookList, hookObject) {
159
+ // Encontrar la posición correcta para mantener el orden por prioridad
160
+ let insertIndex = hookList.length;
161
+ for (let i = 0; i < hookList.length; i++) {
162
+ if (hookList[i].priority > hookObject.priority) {
163
+ insertIndex = i;
164
+ break;
165
+ }
166
+ }
167
+
168
+ // Insertar en la posición encontrada
169
+ hookList.splice(insertIndex, 0, hookObject);
170
+ }
171
+
172
+ /**
173
+ * Obtiene los hooks para un nombre específico (considerando namespaces)
174
+ * @private
175
+ */
176
+ _getHooks(hookName, type) {
177
+ if (typeof hookName !== 'string' || hookName.trim() === '') {
178
+ throw new TypeError('hookName debe ser una cadena no vacía');
179
+ }
180
+
181
+ const { namespace, hookName: cleanHookName } = this._parseNamespaceAndHook(hookName);
182
+
183
+ if (namespace) {
184
+ const namespaceData = this.namespaces.get(namespace);
185
+ if (!namespaceData) {
186
+ return null;
187
+ }
188
+ return namespaceData[type].get(cleanHookName);
189
+ }
190
+
191
+ // Buscar en el namespace global
192
+ return this[type].get(cleanHookName);
193
+ }
194
+
195
+ /**
196
+ * Ejecuta una acción
197
+ * @param {string} hookName - Nombre del hook (puede incluir namespace como namespace::nombre)
198
+ * @param {...any} args - Argumentos a pasar a los callbacks
199
+ */
200
+ doAction(hookName, ...args) {
201
+ const hooks = this._getHooks(hookName, 'actions');
202
+ if (!hooks || hooks.length === 0) {
203
+ return;
204
+ }
205
+
206
+ for (const hook of hooks) {
207
+ // Limitar argumentos según acceptedArgs
208
+ const callArgs = args.slice(0, hook.acceptedArgs);
209
+ try {
210
+ hook.callback(...callArgs);
211
+ } catch (error) {
212
+ console.error(`Error ejecutando callback en hook '${hookName}':`, error);
213
+ }
214
+ }
215
+ }
216
+
217
+ /**
218
+ * Ejecuta una acción de forma asíncrona
219
+ * @param {string} hookName - Nombre del hook (puede incluir namespace como namespace::nombre)
220
+ * @param {...any} args - Argumentos a pasar a los callbacks
221
+ * @returns {Promise<void>} - Promesa que se resuelve cuando todas las acciones se completan
222
+ */
223
+ async doActionAsync(hookName, ...args) {
224
+ const hooks = this._getHooks(hookName, 'actions');
225
+ if (!hooks || hooks.length === 0) {
226
+ return;
227
+ }
228
+
229
+ const promises = [];
230
+ for (const hook of hooks) {
231
+ // Limitar argumentos según acceptedArgs
232
+ const callArgs = args.slice(0, hook.acceptedArgs);
233
+ try {
234
+ const result = hook.callback(...callArgs);
235
+ // Si el callback retorna una promesa, agregarla al array de promesas
236
+ if (result instanceof Promise) {
237
+ promises.push(result);
238
+ }
239
+ } catch (error) {
240
+ console.error(`Error ejecutando callback en hook '${hookName}':`, error);
241
+ // Crear una promesa rechazada para manejar el error
242
+ promises.push(Promise.reject(error));
243
+ }
244
+ }
245
+
246
+ // Esperar a que todas las promesas se resuelvan
247
+ await Promise.allSettled(promises);
248
+ }
249
+
250
+ /**
251
+ * Aplica un filtro
252
+ * @param {string} hookName - Nombre del hook (puede incluir namespace como namespace::nombre)
253
+ * @param {any} value - Valor a filtrar
254
+ * @param {...any} additionalArgs - Argumentos adicionales
255
+ * @returns {any} - Valor filtrado
256
+ */
257
+ applyFilters(hookName, value, ...additionalArgs) {
258
+ const hooks = this._getHooks(hookName, 'filters');
259
+ if (!hooks || hooks.length === 0) {
260
+ return value;
261
+ }
262
+
263
+ let filteredValue = value;
264
+ for (const hook of hooks) {
265
+ // El primer argumento es el valor a filtrar, luego los adicionales
266
+ const callArgs = [filteredValue, ...additionalArgs.slice(0, hook.acceptedArgs - 1)];
267
+ try {
268
+ filteredValue = hook.callback(...callArgs);
269
+ } catch (error) {
270
+ console.error(`Error aplicando filtro en hook '${hookName}':`, error);
271
+ // Continuar con el valor anterior en caso de error
272
+ }
273
+ }
274
+
275
+ return filteredValue;
276
+ }
277
+
278
+ /**
279
+ * Aplica un filtro de forma asíncrona
280
+ * @param {string} hookName - Nombre del hook (puede incluir namespace como namespace::nombre)
281
+ * @param {any} value - Valor a filtrar
282
+ * @param {...any} additionalArgs - Argumentos adicionales
283
+ * @returns {Promise<any>} - Promesa que se resuelve con el valor filtrado
284
+ */
285
+ async applyFiltersAsync(hookName, value, ...additionalArgs) {
286
+ const hooks = this._getHooks(hookName, 'filters');
287
+ if (!hooks || hooks.length === 0) {
288
+ return value;
289
+ }
290
+
291
+ let filteredValue = value;
292
+ for (const hook of hooks) {
293
+ // El primer argumento es el valor a filtrar, luego los adicionales
294
+ const callArgs = [filteredValue, ...additionalArgs.slice(0, hook.acceptedArgs - 1)];
295
+ try {
296
+ // Si el callback retorna una promesa, esperar a que se resuelva
297
+ filteredValue = await Promise.resolve(hook.callback(...callArgs));
298
+ } catch (error) {
299
+ console.error(`Error aplicando filtro en hook '${hookName}':`, error);
300
+ // Continuar con el valor anterior en caso de error
301
+ }
302
+ }
303
+
304
+ return filteredValue;
305
+ }
306
+
307
+ /**
308
+ * Verifica si una acción tiene callbacks registrados
309
+ * @param {string} hookName - Nombre del hook (puede incluir namespace como namespace::nombre)
310
+ * @returns {boolean} - True si tiene callbacks registrados
311
+ */
312
+ hasAction(hookName) {
313
+ const hooks = this._getHooks(hookName, 'actions');
314
+ return !!hooks && hooks.length > 0;
315
+ }
316
+
317
+ /**
318
+ * Verifica si un filtro tiene callbacks registrados
319
+ * @param {string} hookName - Nombre del hook (puede incluir namespace como namespace::nombre)
320
+ * @returns {boolean} - True si tiene callbacks registrados
321
+ */
322
+ hasFilter(hookName) {
323
+ const hooks = this._getHooks(hookName, 'filters');
324
+ return !!hooks && hooks.length > 0;
325
+ }
326
+
327
+ /**
328
+ * Elimina una acción específica
329
+ * @param {string} hookName - Nombre del hook (puede incluir namespace como namespace::nombre)
330
+ * @param {Function|string} callbackOrIdentifier - Callback o identificador a eliminar
331
+ * @param {number} priority - Prioridad del callback (opcional si se usa identificador)
332
+ * @returns {boolean} - True si se eliminó correctamente
333
+ */
334
+ removeAction(hookName, callbackOrIdentifier, priority = 10) {
335
+ if (typeof hookName !== 'string' || hookName.trim() === '') {
336
+ throw new TypeError('hookName debe ser una cadena no vacía');
337
+ }
338
+
339
+ if (typeof callbackOrIdentifier !== 'function' && typeof callbackOrIdentifier !== 'string') {
340
+ throw new TypeError('callbackOrIdentifier debe ser una función o una cadena');
341
+ }
342
+
343
+ if (typeof callbackOrIdentifier === 'string' && arguments.length === 2) {
344
+ // Si se pasa un identificador y solo hay 2 argumentos, eliminar por identificador en todas las prioridades
345
+ return this._removeActionByIdentifier(hookName, callbackOrIdentifier);
346
+ }
347
+
348
+ if (!Number.isInteger(priority) || priority < 0) {
349
+ throw new TypeError('priority debe ser un número entero no negativo');
350
+ }
351
+
352
+ const { namespace, hookName: cleanHookName } = this._parseNamespaceAndHook(hookName);
353
+ const collection = this._getHooksCollection('actions', namespace, cleanHookName);
354
+
355
+ const hooks = collection.get(cleanHookName);
356
+ if (!hooks) {
357
+ return false;
358
+ }
359
+
360
+ const initialLength = hooks.length;
361
+
362
+ // Filtrar hooks basándose en función o identificador
363
+ const filteredHooks = hooks.filter(hook => {
364
+ if (typeof callbackOrIdentifier === 'function') {
365
+ return !(hook.callback === callbackOrIdentifier && hook.priority === priority);
366
+ } else {
367
+ return !(hook.identifier === callbackOrIdentifier && hook.priority === priority);
368
+ }
369
+ });
370
+
371
+ if (filteredHooks.length !== initialLength) {
372
+ if (filteredHooks.length === 0) {
373
+ collection.delete(cleanHookName);
374
+ } else {
375
+ collection.set(cleanHookName, filteredHooks);
376
+ }
377
+ return true;
378
+ }
379
+
380
+ return false;
381
+ }
382
+
383
+ /**
384
+ * Elimina un filtro específico
385
+ * @param {string} hookName - Nombre del hook (puede incluir namespace como namespace::nombre)
386
+ * @param {Function|string} callbackOrIdentifier - Callback o identificador a eliminar
387
+ * @param {number} priority - Prioridad del callback (opcional si se usa identificador)
388
+ * @returns {boolean} - True si se eliminó correctamente
389
+ */
390
+ removeFilter(hookName, callbackOrIdentifier, priority = 10) {
391
+ if (typeof hookName !== 'string' || hookName.trim() === '') {
392
+ throw new TypeError('hookName debe ser una cadena no vacía');
393
+ }
394
+
395
+ if (typeof callbackOrIdentifier !== 'function' && typeof callbackOrIdentifier !== 'string') {
396
+ throw new TypeError('callbackOrIdentifier debe ser una función o una cadena');
397
+ }
398
+
399
+ if (typeof callbackOrIdentifier === 'string' && arguments.length === 2) {
400
+ // Si se pasa un identificador y solo hay 2 argumentos, eliminar por identificador en todas las prioridades
401
+ return this._removeFilterByIdentifier(hookName, callbackOrIdentifier);
402
+ }
403
+
404
+ if (!Number.isInteger(priority) || priority < 0) {
405
+ throw new TypeError('priority debe ser un número entero no negativo');
406
+ }
407
+
408
+ const { namespace, hookName: cleanHookName } = this._parseNamespaceAndHook(hookName);
409
+ const collection = this._getHooksCollection('filters', namespace, cleanHookName);
410
+
411
+ const hooks = collection.get(cleanHookName);
412
+ if (!hooks) {
413
+ return false;
414
+ }
415
+
416
+ const initialLength = hooks.length;
417
+
418
+ // Filtrar hooks basándose en función o identificador
419
+ const filteredHooks = hooks.filter(hook => {
420
+ if (typeof callbackOrIdentifier === 'function') {
421
+ return !(hook.callback === callbackOrIdentifier && hook.priority === priority);
422
+ } else {
423
+ return !(hook.identifier === callbackOrIdentifier && hook.priority === priority);
424
+ }
425
+ });
426
+
427
+ if (filteredHooks.length !== initialLength) {
428
+ if (filteredHooks.length === 0) {
429
+ collection.delete(cleanHookName);
430
+ } else {
431
+ collection.set(cleanHookName, filteredHooks);
432
+ }
433
+ return true;
434
+ }
435
+
436
+ return false;
437
+ }
438
+
439
+ /**
440
+ * Elimina una acción por identificador en todas las prioridades
441
+ * @private
442
+ */
443
+ _removeActionByIdentifier(hookName, identifier) {
444
+ const { namespace, hookName: cleanHookName } = this._parseNamespaceAndHook(hookName);
445
+ const collection = this._getHooksCollection('actions', namespace, cleanHookName);
446
+
447
+ const hooks = collection.get(cleanHookName);
448
+ if (!hooks) {
449
+ return false;
450
+ }
451
+
452
+ const initialLength = hooks.length;
453
+
454
+ // Filtrar hooks basándose en identificador en todas las prioridades
455
+ const filteredHooks = hooks.filter(hook => hook.identifier !== identifier);
456
+
457
+ if (filteredHooks.length !== initialLength) {
458
+ if (filteredHooks.length === 0) {
459
+ collection.delete(cleanHookName);
460
+ } else {
461
+ collection.set(cleanHookName, filteredHooks);
462
+ }
463
+ return true;
464
+ }
465
+
466
+ return false;
467
+ }
468
+
469
+ /**
470
+ * Elimina un filtro por identificador en todas las prioridades
471
+ * @private
472
+ */
473
+ _removeFilterByIdentifier(hookName, identifier) {
474
+ const { namespace, hookName: cleanHookName } = this._parseNamespaceAndHook(hookName);
475
+ const collection = this._getHooksCollection('filters', namespace, cleanHookName);
476
+
477
+ const hooks = collection.get(cleanHookName);
478
+ if (!hooks) {
479
+ return false;
480
+ }
481
+
482
+ const initialLength = hooks.length;
483
+
484
+ // Filtrar hooks basándose en identificador en todas las prioridades
485
+ const filteredHooks = hooks.filter(hook => hook.identifier !== identifier);
486
+
487
+ if (filteredHooks.length !== initialLength) {
488
+ if (filteredHooks.length === 0) {
489
+ collection.delete(cleanHookName);
490
+ } else {
491
+ collection.set(cleanHookName, filteredHooks);
492
+ }
493
+ return true;
494
+ }
495
+
496
+ return false;
497
+ }
498
+
499
+ /**
500
+ * Elimina todas las acciones de un hook
501
+ * @param {string} hookName - Nombre del hook (puede incluir namespace como namespace::nombre)
502
+ * @returns {boolean} - True si se eliminaron correctamente
503
+ */
504
+ removeAllActions(hookName) {
505
+ if (hookName !== undefined && (typeof hookName !== 'string' || hookName.trim() === '')) {
506
+ throw new TypeError('hookName debe ser una cadena no vacía o undefined');
507
+ }
508
+
509
+ if (!hookName) {
510
+ this.actions.clear();
511
+ // Limpiar todos los namespaces también
512
+ for (const [namespace, data] of this.namespaces.entries()) {
513
+ data.actions.clear();
514
+ }
515
+ return true;
516
+ }
517
+
518
+ const { namespace, hookName: cleanHookName } = this._parseNamespaceAndHook(hookName);
519
+
520
+ if (namespace) {
521
+ const namespaceData = this.namespaces.get(namespace);
522
+ if (namespaceData) {
523
+ return namespaceData.actions.delete(cleanHookName);
524
+ }
525
+ return false;
526
+ }
527
+
528
+ return this.actions.delete(cleanHookName);
529
+ }
530
+
531
+ /**
532
+ * Elimina todos los filtros de un hook
533
+ * @param {string} hookName - Nombre del hook (puede incluir namespace como namespace::nombre)
534
+ * @returns {boolean} - True si se eliminaron correctamente
535
+ */
536
+ removeAllFilters(hookName) {
537
+ if (hookName !== undefined && (typeof hookName !== 'string' || hookName.trim() === '')) {
538
+ throw new TypeError('hookName debe ser una cadena no vacía o undefined');
539
+ }
540
+
541
+ if (!hookName) {
542
+ this.filters.clear();
543
+ // Limpiar todos los namespaces también
544
+ for (const [namespace, data] of this.namespaces.entries()) {
545
+ data.filters.clear();
546
+ }
547
+ return true;
548
+ }
549
+
550
+ const { namespace, hookName: cleanHookName } = this._parseNamespaceAndHook(hookName);
551
+
552
+ if (namespace) {
553
+ const namespaceData = this.namespaces.get(namespace);
554
+ if (namespaceData) {
555
+ return namespaceData.filters.delete(cleanHookName);
556
+ }
557
+ return false;
558
+ }
559
+
560
+ return this.filters.delete(cleanHookName);
561
+ }
562
+
563
+ /**
564
+ * Obtiene el número de callbacks registrados para una acción
565
+ * @param {string} hookName - Nombre del hook (puede incluir namespace como namespace::nombre)
566
+ * @returns {number} - Número de callbacks
567
+ */
568
+ actionsCount(hookName) {
569
+ const hooks = this._getHooks(hookName, 'actions');
570
+ return hooks ? hooks.length : 0;
571
+ }
572
+
573
+ /**
574
+ * Obtiene el número de callbacks registrados para un filtro
575
+ * @param {string} hookName - Nombre del hook (puede incluir namespace como namespace::nombre)
576
+ * @returns {number} - Número de callbacks
577
+ */
578
+ filtersCount(hookName) {
579
+ const hooks = this._getHooks(hookName, 'filters');
580
+ return hooks ? hooks.length : 0;
581
+ }
582
+ }
583
+
584
+ module.exports = HookSystem;
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "express-hooked",
3
+ "version": "1.0.0",
4
+ "description": "Hooks system for Express with support for filters and actions",
5
+ "main": "express-hooked.js",
6
+ "scripts": {
7
+ "test": "echo \"Error: no test specified\" && exit 1"
8
+ },
9
+ "keywords": [
10
+ "express",
11
+ "hooks",
12
+ "middleware",
13
+ "plugin",
14
+ "filters",
15
+ "actions"
16
+ ],
17
+ "author": "Benjamin Sanchez Cardenas",
18
+ "license": "Apache-2.0",
19
+ "peerDependencies": {
20
+ "express": "^4.18.0"
21
+ },
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "https://gitlab.com/bytedogssyndicate1/express-hooked.git"
25
+ },
26
+ "bugs": {
27
+ "url": "https://gitlab.com/bytedogssyndicate1/express-hooked/issues"
28
+ },
29
+ "homepage": "https://gitlab.com/bytedogssyndicate1/express-hooked#readme"
30
+ }