god-gerard 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 (963) hide show
  1. package/backend/change.js +80 -0
  2. package/backend/node_modules/.bin/bcrypt +16 -0
  3. package/backend/node_modules/.bin/bcrypt.cmd +17 -0
  4. package/backend/node_modules/.bin/bcrypt.ps1 +28 -0
  5. package/backend/node_modules/.package-lock.json +991 -0
  6. package/backend/node_modules/@types/node/LICENSE +21 -0
  7. package/backend/node_modules/@types/node/README.md +15 -0
  8. package/backend/node_modules/@types/node/assert/strict.d.ts +59 -0
  9. package/backend/node_modules/@types/node/assert.d.ts +950 -0
  10. package/backend/node_modules/@types/node/async_hooks.d.ts +711 -0
  11. package/backend/node_modules/@types/node/buffer.buffer.d.ts +466 -0
  12. package/backend/node_modules/@types/node/buffer.d.ts +1765 -0
  13. package/backend/node_modules/@types/node/child_process.d.ts +1366 -0
  14. package/backend/node_modules/@types/node/cluster.d.ts +432 -0
  15. package/backend/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
  16. package/backend/node_modules/@types/node/console.d.ts +93 -0
  17. package/backend/node_modules/@types/node/constants.d.ts +14 -0
  18. package/backend/node_modules/@types/node/crypto.d.ts +4058 -0
  19. package/backend/node_modules/@types/node/dgram.d.ts +537 -0
  20. package/backend/node_modules/@types/node/diagnostics_channel.d.ts +552 -0
  21. package/backend/node_modules/@types/node/dns/promises.d.ts +497 -0
  22. package/backend/node_modules/@types/node/dns.d.ts +876 -0
  23. package/backend/node_modules/@types/node/domain.d.ts +150 -0
  24. package/backend/node_modules/@types/node/events.d.ts +1008 -0
  25. package/backend/node_modules/@types/node/fs/promises.d.ts +1468 -0
  26. package/backend/node_modules/@types/node/fs.d.ts +4780 -0
  27. package/backend/node_modules/@types/node/globals.d.ts +150 -0
  28. package/backend/node_modules/@types/node/globals.typedarray.d.ts +101 -0
  29. package/backend/node_modules/@types/node/http.d.ts +2147 -0
  30. package/backend/node_modules/@types/node/http2.d.ts +2485 -0
  31. package/backend/node_modules/@types/node/https.d.ts +400 -0
  32. package/backend/node_modules/@types/node/index.d.ts +117 -0
  33. package/backend/node_modules/@types/node/inspector/promises.d.ts +35 -0
  34. package/backend/node_modules/@types/node/inspector.d.ts +264 -0
  35. package/backend/node_modules/@types/node/inspector.generated.d.ts +4406 -0
  36. package/backend/node_modules/@types/node/module.d.ts +755 -0
  37. package/backend/node_modules/@types/node/net.d.ts +970 -0
  38. package/backend/node_modules/@types/node/os.d.ts +498 -0
  39. package/backend/node_modules/@types/node/package.json +155 -0
  40. package/backend/node_modules/@types/node/path/posix.d.ts +8 -0
  41. package/backend/node_modules/@types/node/path/win32.d.ts +8 -0
  42. package/backend/node_modules/@types/node/path.d.ts +178 -0
  43. package/backend/node_modules/@types/node/perf_hooks.d.ts +612 -0
  44. package/backend/node_modules/@types/node/process.d.ts +2204 -0
  45. package/backend/node_modules/@types/node/punycode.d.ts +89 -0
  46. package/backend/node_modules/@types/node/querystring.d.ts +139 -0
  47. package/backend/node_modules/@types/node/quic.d.ts +897 -0
  48. package/backend/node_modules/@types/node/readline/promises.d.ts +158 -0
  49. package/backend/node_modules/@types/node/readline.d.ts +507 -0
  50. package/backend/node_modules/@types/node/repl.d.ts +420 -0
  51. package/backend/node_modules/@types/node/sea.d.ts +47 -0
  52. package/backend/node_modules/@types/node/sqlite.d.ts +1068 -0
  53. package/backend/node_modules/@types/node/stream/consumers.d.ts +114 -0
  54. package/backend/node_modules/@types/node/stream/iter.d.ts +301 -0
  55. package/backend/node_modules/@types/node/stream/promises.d.ts +211 -0
  56. package/backend/node_modules/@types/node/stream/web.d.ts +300 -0
  57. package/backend/node_modules/@types/node/stream.d.ts +1774 -0
  58. package/backend/node_modules/@types/node/string_decoder.d.ts +27 -0
  59. package/backend/node_modules/@types/node/test/reporters.d.ts +59 -0
  60. package/backend/node_modules/@types/node/test.d.ts +2279 -0
  61. package/backend/node_modules/@types/node/timers/promises.d.ts +93 -0
  62. package/backend/node_modules/@types/node/timers.d.ts +149 -0
  63. package/backend/node_modules/@types/node/tls.d.ts +1193 -0
  64. package/backend/node_modules/@types/node/trace_events.d.ts +103 -0
  65. package/backend/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
  66. package/backend/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
  67. package/backend/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
  68. package/backend/node_modules/@types/node/ts5.6/index.d.ts +119 -0
  69. package/backend/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
  70. package/backend/node_modules/@types/node/ts5.7/index.d.ts +119 -0
  71. package/backend/node_modules/@types/node/tty.d.ts +225 -0
  72. package/backend/node_modules/@types/node/url.d.ts +556 -0
  73. package/backend/node_modules/@types/node/util/types.d.ts +558 -0
  74. package/backend/node_modules/@types/node/util.d.ts +1677 -0
  75. package/backend/node_modules/@types/node/v8.d.ts +980 -0
  76. package/backend/node_modules/@types/node/vm.d.ts +1136 -0
  77. package/backend/node_modules/@types/node/wasi.d.ts +131 -0
  78. package/backend/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
  79. package/backend/node_modules/@types/node/web-globals/blob.d.ts +23 -0
  80. package/backend/node_modules/@types/node/web-globals/console.d.ts +9 -0
  81. package/backend/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
  82. package/backend/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  83. package/backend/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
  84. package/backend/node_modules/@types/node/web-globals/events.d.ts +106 -0
  85. package/backend/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
  86. package/backend/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
  87. package/backend/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
  88. package/backend/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
  89. package/backend/node_modules/@types/node/web-globals/performance.d.ts +45 -0
  90. package/backend/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  91. package/backend/node_modules/@types/node/web-globals/streams.d.ts +115 -0
  92. package/backend/node_modules/@types/node/web-globals/timers.d.ts +44 -0
  93. package/backend/node_modules/@types/node/web-globals/url.d.ts +24 -0
  94. package/backend/node_modules/@types/node/worker_threads.d.ts +671 -0
  95. package/backend/node_modules/@types/node/zlib/iter.d.ts +131 -0
  96. package/backend/node_modules/@types/node/zlib.d.ts +589 -0
  97. package/backend/node_modules/accepts/HISTORY.md +250 -0
  98. package/backend/node_modules/accepts/LICENSE +23 -0
  99. package/backend/node_modules/accepts/README.md +140 -0
  100. package/backend/node_modules/accepts/index.js +238 -0
  101. package/backend/node_modules/accepts/package.json +47 -0
  102. package/backend/node_modules/aws-ssl-profiles/LICENSE +19 -0
  103. package/backend/node_modules/aws-ssl-profiles/README.md +146 -0
  104. package/backend/node_modules/aws-ssl-profiles/lib/@types/profiles.d.ts +4 -0
  105. package/backend/node_modules/aws-ssl-profiles/lib/@types/profiles.js +2 -0
  106. package/backend/node_modules/aws-ssl-profiles/lib/index.d.ts +8 -0
  107. package/backend/node_modules/aws-ssl-profiles/lib/index.js +13 -0
  108. package/backend/node_modules/aws-ssl-profiles/lib/profiles/ca/defaults.d.ts +9 -0
  109. package/backend/node_modules/aws-ssl-profiles/lib/profiles/ca/defaults.js +2888 -0
  110. package/backend/node_modules/aws-ssl-profiles/lib/profiles/ca/proxies.d.ts +8 -0
  111. package/backend/node_modules/aws-ssl-profiles/lib/profiles/ca/proxies.js +111 -0
  112. package/backend/node_modules/aws-ssl-profiles/package.json +52 -0
  113. package/backend/node_modules/bcryptjs/LICENSE +27 -0
  114. package/backend/node_modules/bcryptjs/README.md +201 -0
  115. package/backend/node_modules/bcryptjs/bin/bcrypt +23 -0
  116. package/backend/node_modules/bcryptjs/index.d.ts +3 -0
  117. package/backend/node_modules/bcryptjs/index.js +1159 -0
  118. package/backend/node_modules/bcryptjs/package.json +76 -0
  119. package/backend/node_modules/bcryptjs/types.d.ts +157 -0
  120. package/backend/node_modules/bcryptjs/umd/index.d.ts +3 -0
  121. package/backend/node_modules/bcryptjs/umd/index.js +1220 -0
  122. package/backend/node_modules/bcryptjs/umd/package.json +3 -0
  123. package/backend/node_modules/bcryptjs/umd/types.d.ts +157 -0
  124. package/backend/node_modules/body-parser/LICENSE +23 -0
  125. package/backend/node_modules/body-parser/README.md +494 -0
  126. package/backend/node_modules/body-parser/index.js +71 -0
  127. package/backend/node_modules/body-parser/lib/read.js +247 -0
  128. package/backend/node_modules/body-parser/lib/types/json.js +158 -0
  129. package/backend/node_modules/body-parser/lib/types/raw.js +42 -0
  130. package/backend/node_modules/body-parser/lib/types/text.js +36 -0
  131. package/backend/node_modules/body-parser/lib/types/urlencoded.js +142 -0
  132. package/backend/node_modules/body-parser/lib/utils.js +98 -0
  133. package/backend/node_modules/body-parser/package.json +52 -0
  134. package/backend/node_modules/bytes/History.md +97 -0
  135. package/backend/node_modules/bytes/LICENSE +23 -0
  136. package/backend/node_modules/bytes/Readme.md +152 -0
  137. package/backend/node_modules/bytes/index.js +170 -0
  138. package/backend/node_modules/bytes/package.json +42 -0
  139. package/backend/node_modules/call-bind-apply-helpers/.eslintrc +17 -0
  140. package/backend/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +12 -0
  141. package/backend/node_modules/call-bind-apply-helpers/.nycrc +9 -0
  142. package/backend/node_modules/call-bind-apply-helpers/CHANGELOG.md +30 -0
  143. package/backend/node_modules/call-bind-apply-helpers/LICENSE +21 -0
  144. package/backend/node_modules/call-bind-apply-helpers/README.md +62 -0
  145. package/backend/node_modules/call-bind-apply-helpers/actualApply.d.ts +1 -0
  146. package/backend/node_modules/call-bind-apply-helpers/actualApply.js +10 -0
  147. package/backend/node_modules/call-bind-apply-helpers/applyBind.d.ts +19 -0
  148. package/backend/node_modules/call-bind-apply-helpers/applyBind.js +10 -0
  149. package/backend/node_modules/call-bind-apply-helpers/functionApply.d.ts +1 -0
  150. package/backend/node_modules/call-bind-apply-helpers/functionApply.js +4 -0
  151. package/backend/node_modules/call-bind-apply-helpers/functionCall.d.ts +1 -0
  152. package/backend/node_modules/call-bind-apply-helpers/functionCall.js +4 -0
  153. package/backend/node_modules/call-bind-apply-helpers/index.d.ts +64 -0
  154. package/backend/node_modules/call-bind-apply-helpers/index.js +15 -0
  155. package/backend/node_modules/call-bind-apply-helpers/package.json +85 -0
  156. package/backend/node_modules/call-bind-apply-helpers/reflectApply.d.ts +3 -0
  157. package/backend/node_modules/call-bind-apply-helpers/reflectApply.js +4 -0
  158. package/backend/node_modules/call-bind-apply-helpers/test/index.js +63 -0
  159. package/backend/node_modules/call-bind-apply-helpers/tsconfig.json +9 -0
  160. package/backend/node_modules/call-bound/.eslintrc +13 -0
  161. package/backend/node_modules/call-bound/.github/FUNDING.yml +12 -0
  162. package/backend/node_modules/call-bound/.nycrc +9 -0
  163. package/backend/node_modules/call-bound/CHANGELOG.md +42 -0
  164. package/backend/node_modules/call-bound/LICENSE +21 -0
  165. package/backend/node_modules/call-bound/README.md +53 -0
  166. package/backend/node_modules/call-bound/index.d.ts +94 -0
  167. package/backend/node_modules/call-bound/index.js +19 -0
  168. package/backend/node_modules/call-bound/package.json +99 -0
  169. package/backend/node_modules/call-bound/test/index.js +61 -0
  170. package/backend/node_modules/call-bound/tsconfig.json +10 -0
  171. package/backend/node_modules/content-disposition/LICENSE +22 -0
  172. package/backend/node_modules/content-disposition/README.md +141 -0
  173. package/backend/node_modules/content-disposition/index.js +536 -0
  174. package/backend/node_modules/content-disposition/package.json +40 -0
  175. package/backend/node_modules/content-type/HISTORY.md +29 -0
  176. package/backend/node_modules/content-type/LICENSE +22 -0
  177. package/backend/node_modules/content-type/README.md +94 -0
  178. package/backend/node_modules/content-type/index.js +225 -0
  179. package/backend/node_modules/content-type/package.json +42 -0
  180. package/backend/node_modules/cookie/LICENSE +24 -0
  181. package/backend/node_modules/cookie/README.md +317 -0
  182. package/backend/node_modules/cookie/SECURITY.md +25 -0
  183. package/backend/node_modules/cookie/index.js +335 -0
  184. package/backend/node_modules/cookie/package.json +44 -0
  185. package/backend/node_modules/cookie-signature/History.md +70 -0
  186. package/backend/node_modules/cookie-signature/LICENSE +22 -0
  187. package/backend/node_modules/cookie-signature/Readme.md +23 -0
  188. package/backend/node_modules/cookie-signature/index.js +47 -0
  189. package/backend/node_modules/cookie-signature/package.json +24 -0
  190. package/backend/node_modules/cors/LICENSE +22 -0
  191. package/backend/node_modules/cors/README.md +277 -0
  192. package/backend/node_modules/cors/lib/index.js +238 -0
  193. package/backend/node_modules/cors/package.json +42 -0
  194. package/backend/node_modules/debug/LICENSE +20 -0
  195. package/backend/node_modules/debug/README.md +481 -0
  196. package/backend/node_modules/debug/package.json +64 -0
  197. package/backend/node_modules/debug/src/browser.js +272 -0
  198. package/backend/node_modules/debug/src/common.js +292 -0
  199. package/backend/node_modules/debug/src/index.js +10 -0
  200. package/backend/node_modules/debug/src/node.js +263 -0
  201. package/backend/node_modules/denque/CHANGELOG.md +29 -0
  202. package/backend/node_modules/denque/LICENSE +201 -0
  203. package/backend/node_modules/denque/README.md +77 -0
  204. package/backend/node_modules/denque/index.d.ts +47 -0
  205. package/backend/node_modules/denque/index.js +481 -0
  206. package/backend/node_modules/denque/package.json +58 -0
  207. package/backend/node_modules/depd/History.md +103 -0
  208. package/backend/node_modules/depd/LICENSE +22 -0
  209. package/backend/node_modules/depd/Readme.md +280 -0
  210. package/backend/node_modules/depd/index.js +538 -0
  211. package/backend/node_modules/depd/lib/browser/index.js +77 -0
  212. package/backend/node_modules/depd/package.json +45 -0
  213. package/backend/node_modules/dunder-proto/.eslintrc +5 -0
  214. package/backend/node_modules/dunder-proto/.github/FUNDING.yml +12 -0
  215. package/backend/node_modules/dunder-proto/.nycrc +13 -0
  216. package/backend/node_modules/dunder-proto/CHANGELOG.md +24 -0
  217. package/backend/node_modules/dunder-proto/LICENSE +21 -0
  218. package/backend/node_modules/dunder-proto/README.md +54 -0
  219. package/backend/node_modules/dunder-proto/get.d.ts +5 -0
  220. package/backend/node_modules/dunder-proto/get.js +30 -0
  221. package/backend/node_modules/dunder-proto/package.json +76 -0
  222. package/backend/node_modules/dunder-proto/set.d.ts +5 -0
  223. package/backend/node_modules/dunder-proto/set.js +35 -0
  224. package/backend/node_modules/dunder-proto/test/get.js +34 -0
  225. package/backend/node_modules/dunder-proto/test/index.js +4 -0
  226. package/backend/node_modules/dunder-proto/test/set.js +50 -0
  227. package/backend/node_modules/dunder-proto/tsconfig.json +9 -0
  228. package/backend/node_modules/ee-first/LICENSE +22 -0
  229. package/backend/node_modules/ee-first/README.md +80 -0
  230. package/backend/node_modules/ee-first/index.js +95 -0
  231. package/backend/node_modules/ee-first/package.json +29 -0
  232. package/backend/node_modules/encodeurl/LICENSE +22 -0
  233. package/backend/node_modules/encodeurl/README.md +109 -0
  234. package/backend/node_modules/encodeurl/index.js +60 -0
  235. package/backend/node_modules/encodeurl/package.json +40 -0
  236. package/backend/node_modules/es-define-property/.eslintrc +13 -0
  237. package/backend/node_modules/es-define-property/.github/FUNDING.yml +12 -0
  238. package/backend/node_modules/es-define-property/.nycrc +9 -0
  239. package/backend/node_modules/es-define-property/CHANGELOG.md +29 -0
  240. package/backend/node_modules/es-define-property/LICENSE +21 -0
  241. package/backend/node_modules/es-define-property/README.md +49 -0
  242. package/backend/node_modules/es-define-property/index.d.ts +3 -0
  243. package/backend/node_modules/es-define-property/index.js +14 -0
  244. package/backend/node_modules/es-define-property/package.json +81 -0
  245. package/backend/node_modules/es-define-property/test/index.js +56 -0
  246. package/backend/node_modules/es-define-property/tsconfig.json +10 -0
  247. package/backend/node_modules/es-errors/.eslintrc +5 -0
  248. package/backend/node_modules/es-errors/.github/FUNDING.yml +12 -0
  249. package/backend/node_modules/es-errors/CHANGELOG.md +40 -0
  250. package/backend/node_modules/es-errors/LICENSE +21 -0
  251. package/backend/node_modules/es-errors/README.md +55 -0
  252. package/backend/node_modules/es-errors/eval.d.ts +3 -0
  253. package/backend/node_modules/es-errors/eval.js +4 -0
  254. package/backend/node_modules/es-errors/index.d.ts +3 -0
  255. package/backend/node_modules/es-errors/index.js +4 -0
  256. package/backend/node_modules/es-errors/package.json +80 -0
  257. package/backend/node_modules/es-errors/range.d.ts +3 -0
  258. package/backend/node_modules/es-errors/range.js +4 -0
  259. package/backend/node_modules/es-errors/ref.d.ts +3 -0
  260. package/backend/node_modules/es-errors/ref.js +4 -0
  261. package/backend/node_modules/es-errors/syntax.d.ts +3 -0
  262. package/backend/node_modules/es-errors/syntax.js +4 -0
  263. package/backend/node_modules/es-errors/test/index.js +19 -0
  264. package/backend/node_modules/es-errors/tsconfig.json +49 -0
  265. package/backend/node_modules/es-errors/type.d.ts +3 -0
  266. package/backend/node_modules/es-errors/type.js +4 -0
  267. package/backend/node_modules/es-errors/uri.d.ts +3 -0
  268. package/backend/node_modules/es-errors/uri.js +4 -0
  269. package/backend/node_modules/es-object-atoms/.eslintrc +16 -0
  270. package/backend/node_modules/es-object-atoms/.github/FUNDING.yml +12 -0
  271. package/backend/node_modules/es-object-atoms/CHANGELOG.md +44 -0
  272. package/backend/node_modules/es-object-atoms/LICENSE +21 -0
  273. package/backend/node_modules/es-object-atoms/README.md +63 -0
  274. package/backend/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +3 -0
  275. package/backend/node_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
  276. package/backend/node_modules/es-object-atoms/ToObject.d.ts +7 -0
  277. package/backend/node_modules/es-object-atoms/ToObject.js +10 -0
  278. package/backend/node_modules/es-object-atoms/index.d.ts +3 -0
  279. package/backend/node_modules/es-object-atoms/index.js +4 -0
  280. package/backend/node_modules/es-object-atoms/isObject.d.ts +3 -0
  281. package/backend/node_modules/es-object-atoms/isObject.js +6 -0
  282. package/backend/node_modules/es-object-atoms/package.json +79 -0
  283. package/backend/node_modules/es-object-atoms/test/index.js +38 -0
  284. package/backend/node_modules/es-object-atoms/tsconfig.json +7 -0
  285. package/backend/node_modules/escape-html/LICENSE +24 -0
  286. package/backend/node_modules/escape-html/Readme.md +43 -0
  287. package/backend/node_modules/escape-html/index.js +78 -0
  288. package/backend/node_modules/escape-html/package.json +24 -0
  289. package/backend/node_modules/etag/HISTORY.md +83 -0
  290. package/backend/node_modules/etag/LICENSE +22 -0
  291. package/backend/node_modules/etag/README.md +159 -0
  292. package/backend/node_modules/etag/index.js +131 -0
  293. package/backend/node_modules/etag/package.json +47 -0
  294. package/backend/node_modules/express/LICENSE +24 -0
  295. package/backend/node_modules/express/Readme.md +276 -0
  296. package/backend/node_modules/express/index.js +11 -0
  297. package/backend/node_modules/express/lib/application.js +631 -0
  298. package/backend/node_modules/express/lib/express.js +81 -0
  299. package/backend/node_modules/express/lib/request.js +514 -0
  300. package/backend/node_modules/express/lib/response.js +1053 -0
  301. package/backend/node_modules/express/lib/utils.js +271 -0
  302. package/backend/node_modules/express/lib/view.js +205 -0
  303. package/backend/node_modules/express/package.json +99 -0
  304. package/backend/node_modules/finalhandler/HISTORY.md +239 -0
  305. package/backend/node_modules/finalhandler/LICENSE +22 -0
  306. package/backend/node_modules/finalhandler/README.md +150 -0
  307. package/backend/node_modules/finalhandler/index.js +293 -0
  308. package/backend/node_modules/finalhandler/package.json +47 -0
  309. package/backend/node_modules/forwarded/HISTORY.md +21 -0
  310. package/backend/node_modules/forwarded/LICENSE +22 -0
  311. package/backend/node_modules/forwarded/README.md +57 -0
  312. package/backend/node_modules/forwarded/index.js +90 -0
  313. package/backend/node_modules/forwarded/package.json +45 -0
  314. package/backend/node_modules/fresh/HISTORY.md +80 -0
  315. package/backend/node_modules/fresh/LICENSE +23 -0
  316. package/backend/node_modules/fresh/README.md +117 -0
  317. package/backend/node_modules/fresh/index.js +136 -0
  318. package/backend/node_modules/fresh/package.json +46 -0
  319. package/backend/node_modules/function-bind/.eslintrc +21 -0
  320. package/backend/node_modules/function-bind/.github/FUNDING.yml +12 -0
  321. package/backend/node_modules/function-bind/.github/SECURITY.md +3 -0
  322. package/backend/node_modules/function-bind/.nycrc +13 -0
  323. package/backend/node_modules/function-bind/CHANGELOG.md +136 -0
  324. package/backend/node_modules/function-bind/LICENSE +20 -0
  325. package/backend/node_modules/function-bind/README.md +46 -0
  326. package/backend/node_modules/function-bind/implementation.js +84 -0
  327. package/backend/node_modules/function-bind/index.js +5 -0
  328. package/backend/node_modules/function-bind/package.json +87 -0
  329. package/backend/node_modules/function-bind/test/.eslintrc +9 -0
  330. package/backend/node_modules/function-bind/test/index.js +252 -0
  331. package/backend/node_modules/generate-function/.travis.yml +3 -0
  332. package/backend/node_modules/generate-function/LICENSE +21 -0
  333. package/backend/node_modules/generate-function/README.md +89 -0
  334. package/backend/node_modules/generate-function/example.js +27 -0
  335. package/backend/node_modules/generate-function/index.js +181 -0
  336. package/backend/node_modules/generate-function/package.json +32 -0
  337. package/backend/node_modules/generate-function/test.js +49 -0
  338. package/backend/node_modules/get-intrinsic/.eslintrc +42 -0
  339. package/backend/node_modules/get-intrinsic/.github/FUNDING.yml +12 -0
  340. package/backend/node_modules/get-intrinsic/.nycrc +9 -0
  341. package/backend/node_modules/get-intrinsic/CHANGELOG.md +186 -0
  342. package/backend/node_modules/get-intrinsic/LICENSE +21 -0
  343. package/backend/node_modules/get-intrinsic/README.md +71 -0
  344. package/backend/node_modules/get-intrinsic/index.js +378 -0
  345. package/backend/node_modules/get-intrinsic/package.json +97 -0
  346. package/backend/node_modules/get-intrinsic/test/GetIntrinsic.js +274 -0
  347. package/backend/node_modules/get-proto/.eslintrc +10 -0
  348. package/backend/node_modules/get-proto/.github/FUNDING.yml +12 -0
  349. package/backend/node_modules/get-proto/.nycrc +9 -0
  350. package/backend/node_modules/get-proto/CHANGELOG.md +21 -0
  351. package/backend/node_modules/get-proto/LICENSE +21 -0
  352. package/backend/node_modules/get-proto/Object.getPrototypeOf.d.ts +5 -0
  353. package/backend/node_modules/get-proto/Object.getPrototypeOf.js +6 -0
  354. package/backend/node_modules/get-proto/README.md +50 -0
  355. package/backend/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +3 -0
  356. package/backend/node_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
  357. package/backend/node_modules/get-proto/index.d.ts +5 -0
  358. package/backend/node_modules/get-proto/index.js +27 -0
  359. package/backend/node_modules/get-proto/package.json +81 -0
  360. package/backend/node_modules/get-proto/test/index.js +68 -0
  361. package/backend/node_modules/get-proto/tsconfig.json +9 -0
  362. package/backend/node_modules/gopd/.eslintrc +16 -0
  363. package/backend/node_modules/gopd/.github/FUNDING.yml +12 -0
  364. package/backend/node_modules/gopd/CHANGELOG.md +45 -0
  365. package/backend/node_modules/gopd/LICENSE +21 -0
  366. package/backend/node_modules/gopd/README.md +40 -0
  367. package/backend/node_modules/gopd/gOPD.d.ts +1 -0
  368. package/backend/node_modules/gopd/gOPD.js +4 -0
  369. package/backend/node_modules/gopd/index.d.ts +5 -0
  370. package/backend/node_modules/gopd/index.js +15 -0
  371. package/backend/node_modules/gopd/package.json +77 -0
  372. package/backend/node_modules/gopd/test/index.js +36 -0
  373. package/backend/node_modules/gopd/tsconfig.json +9 -0
  374. package/backend/node_modules/has-symbols/.eslintrc +11 -0
  375. package/backend/node_modules/has-symbols/.github/FUNDING.yml +12 -0
  376. package/backend/node_modules/has-symbols/.nycrc +9 -0
  377. package/backend/node_modules/has-symbols/CHANGELOG.md +91 -0
  378. package/backend/node_modules/has-symbols/LICENSE +21 -0
  379. package/backend/node_modules/has-symbols/README.md +46 -0
  380. package/backend/node_modules/has-symbols/index.d.ts +3 -0
  381. package/backend/node_modules/has-symbols/index.js +14 -0
  382. package/backend/node_modules/has-symbols/package.json +111 -0
  383. package/backend/node_modules/has-symbols/shams.d.ts +3 -0
  384. package/backend/node_modules/has-symbols/shams.js +45 -0
  385. package/backend/node_modules/has-symbols/test/index.js +22 -0
  386. package/backend/node_modules/has-symbols/test/shams/core-js.js +29 -0
  387. package/backend/node_modules/has-symbols/test/shams/get-own-property-symbols.js +29 -0
  388. package/backend/node_modules/has-symbols/test/tests.js +58 -0
  389. package/backend/node_modules/has-symbols/tsconfig.json +10 -0
  390. package/backend/node_modules/hasown/.github/FUNDING.yml +12 -0
  391. package/backend/node_modules/hasown/.nycrc +13 -0
  392. package/backend/node_modules/hasown/CHANGELOG.md +58 -0
  393. package/backend/node_modules/hasown/LICENSE +21 -0
  394. package/backend/node_modules/hasown/README.md +40 -0
  395. package/backend/node_modules/hasown/eslint.config.mjs +6 -0
  396. package/backend/node_modules/hasown/index.d.ts +3 -0
  397. package/backend/node_modules/hasown/index.js +8 -0
  398. package/backend/node_modules/hasown/package.json +91 -0
  399. package/backend/node_modules/hasown/tsconfig.json +6 -0
  400. package/backend/node_modules/http-errors/HISTORY.md +186 -0
  401. package/backend/node_modules/http-errors/LICENSE +23 -0
  402. package/backend/node_modules/http-errors/README.md +169 -0
  403. package/backend/node_modules/http-errors/index.js +290 -0
  404. package/backend/node_modules/http-errors/package.json +54 -0
  405. package/backend/node_modules/iconv-lite/LICENSE +21 -0
  406. package/backend/node_modules/iconv-lite/README.md +138 -0
  407. package/backend/node_modules/iconv-lite/encodings/dbcs-codec.js +532 -0
  408. package/backend/node_modules/iconv-lite/encodings/dbcs-data.js +185 -0
  409. package/backend/node_modules/iconv-lite/encodings/index.js +23 -0
  410. package/backend/node_modules/iconv-lite/encodings/internal.js +218 -0
  411. package/backend/node_modules/iconv-lite/encodings/sbcs-codec.js +75 -0
  412. package/backend/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
  413. package/backend/node_modules/iconv-lite/encodings/sbcs-data.js +178 -0
  414. package/backend/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
  415. package/backend/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
  416. package/backend/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
  417. package/backend/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
  418. package/backend/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
  419. package/backend/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
  420. package/backend/node_modules/iconv-lite/encodings/tables/gbk-added.json +56 -0
  421. package/backend/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
  422. package/backend/node_modules/iconv-lite/encodings/utf16.js +187 -0
  423. package/backend/node_modules/iconv-lite/encodings/utf32.js +307 -0
  424. package/backend/node_modules/iconv-lite/encodings/utf7.js +283 -0
  425. package/backend/node_modules/iconv-lite/lib/bom-handling.js +48 -0
  426. package/backend/node_modules/iconv-lite/lib/helpers/merge-exports.js +13 -0
  427. package/backend/node_modules/iconv-lite/lib/index.d.ts +129 -0
  428. package/backend/node_modules/iconv-lite/lib/index.js +182 -0
  429. package/backend/node_modules/iconv-lite/lib/streams.js +105 -0
  430. package/backend/node_modules/iconv-lite/package.json +70 -0
  431. package/backend/node_modules/iconv-lite/types/encodings.d.ts +423 -0
  432. package/backend/node_modules/inherits/LICENSE +16 -0
  433. package/backend/node_modules/inherits/README.md +42 -0
  434. package/backend/node_modules/inherits/inherits.js +9 -0
  435. package/backend/node_modules/inherits/inherits_browser.js +27 -0
  436. package/backend/node_modules/inherits/package.json +29 -0
  437. package/backend/node_modules/ipaddr.js/LICENSE +19 -0
  438. package/backend/node_modules/ipaddr.js/README.md +233 -0
  439. package/backend/node_modules/ipaddr.js/ipaddr.min.js +1 -0
  440. package/backend/node_modules/ipaddr.js/lib/ipaddr.js +673 -0
  441. package/backend/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +68 -0
  442. package/backend/node_modules/ipaddr.js/package.json +35 -0
  443. package/backend/node_modules/is-promise/LICENSE +19 -0
  444. package/backend/node_modules/is-promise/index.d.ts +2 -0
  445. package/backend/node_modules/is-promise/index.js +6 -0
  446. package/backend/node_modules/is-promise/index.mjs +3 -0
  447. package/backend/node_modules/is-promise/package.json +30 -0
  448. package/backend/node_modules/is-promise/readme.md +33 -0
  449. package/backend/node_modules/is-property/LICENSE +22 -0
  450. package/backend/node_modules/is-property/README.md +28 -0
  451. package/backend/node_modules/is-property/is-property.js +5 -0
  452. package/backend/node_modules/is-property/package.json +36 -0
  453. package/backend/node_modules/long/LICENSE +202 -0
  454. package/backend/node_modules/long/README.md +286 -0
  455. package/backend/node_modules/long/index.d.ts +2 -0
  456. package/backend/node_modules/long/index.js +1581 -0
  457. package/backend/node_modules/long/package.json +58 -0
  458. package/backend/node_modules/long/types.d.ts +474 -0
  459. package/backend/node_modules/long/umd/index.d.ts +3 -0
  460. package/backend/node_modules/long/umd/index.js +1622 -0
  461. package/backend/node_modules/long/umd/package.json +3 -0
  462. package/backend/node_modules/long/umd/types.d.ts +474 -0
  463. package/backend/node_modules/lru.min/LICENSE +21 -0
  464. package/backend/node_modules/lru.min/README.md +392 -0
  465. package/backend/node_modules/lru.min/browser/lru.min.js +1 -0
  466. package/backend/node_modules/lru.min/lib/index.d.ts +38 -0
  467. package/backend/node_modules/lru.min/lib/index.js +248 -0
  468. package/backend/node_modules/lru.min/lib/index.mjs +227 -0
  469. package/backend/node_modules/lru.min/package.json +87 -0
  470. package/backend/node_modules/math-intrinsics/.eslintrc +16 -0
  471. package/backend/node_modules/math-intrinsics/.github/FUNDING.yml +12 -0
  472. package/backend/node_modules/math-intrinsics/CHANGELOG.md +24 -0
  473. package/backend/node_modules/math-intrinsics/LICENSE +21 -0
  474. package/backend/node_modules/math-intrinsics/README.md +50 -0
  475. package/backend/node_modules/math-intrinsics/abs.d.ts +1 -0
  476. package/backend/node_modules/math-intrinsics/abs.js +4 -0
  477. package/backend/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +3 -0
  478. package/backend/node_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
  479. package/backend/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +3 -0
  480. package/backend/node_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
  481. package/backend/node_modules/math-intrinsics/constants/maxValue.d.ts +3 -0
  482. package/backend/node_modules/math-intrinsics/constants/maxValue.js +5 -0
  483. package/backend/node_modules/math-intrinsics/floor.d.ts +1 -0
  484. package/backend/node_modules/math-intrinsics/floor.js +4 -0
  485. package/backend/node_modules/math-intrinsics/isFinite.d.ts +3 -0
  486. package/backend/node_modules/math-intrinsics/isFinite.js +12 -0
  487. package/backend/node_modules/math-intrinsics/isInteger.d.ts +3 -0
  488. package/backend/node_modules/math-intrinsics/isInteger.js +16 -0
  489. package/backend/node_modules/math-intrinsics/isNaN.d.ts +1 -0
  490. package/backend/node_modules/math-intrinsics/isNaN.js +6 -0
  491. package/backend/node_modules/math-intrinsics/isNegativeZero.d.ts +3 -0
  492. package/backend/node_modules/math-intrinsics/isNegativeZero.js +6 -0
  493. package/backend/node_modules/math-intrinsics/max.d.ts +1 -0
  494. package/backend/node_modules/math-intrinsics/max.js +4 -0
  495. package/backend/node_modules/math-intrinsics/min.d.ts +1 -0
  496. package/backend/node_modules/math-intrinsics/min.js +4 -0
  497. package/backend/node_modules/math-intrinsics/mod.d.ts +3 -0
  498. package/backend/node_modules/math-intrinsics/mod.js +9 -0
  499. package/backend/node_modules/math-intrinsics/package.json +86 -0
  500. package/backend/node_modules/math-intrinsics/pow.d.ts +1 -0
  501. package/backend/node_modules/math-intrinsics/pow.js +4 -0
  502. package/backend/node_modules/math-intrinsics/round.d.ts +1 -0
  503. package/backend/node_modules/math-intrinsics/round.js +4 -0
  504. package/backend/node_modules/math-intrinsics/sign.d.ts +3 -0
  505. package/backend/node_modules/math-intrinsics/sign.js +11 -0
  506. package/backend/node_modules/math-intrinsics/test/index.js +192 -0
  507. package/backend/node_modules/math-intrinsics/tsconfig.json +3 -0
  508. package/backend/node_modules/media-typer/HISTORY.md +50 -0
  509. package/backend/node_modules/media-typer/LICENSE +22 -0
  510. package/backend/node_modules/media-typer/README.md +93 -0
  511. package/backend/node_modules/media-typer/index.js +143 -0
  512. package/backend/node_modules/media-typer/package.json +33 -0
  513. package/backend/node_modules/merge-descriptors/index.d.ts +11 -0
  514. package/backend/node_modules/merge-descriptors/index.js +26 -0
  515. package/backend/node_modules/merge-descriptors/license +11 -0
  516. package/backend/node_modules/merge-descriptors/package.json +50 -0
  517. package/backend/node_modules/merge-descriptors/readme.md +55 -0
  518. package/backend/node_modules/mime-db/HISTORY.md +541 -0
  519. package/backend/node_modules/mime-db/LICENSE +23 -0
  520. package/backend/node_modules/mime-db/README.md +109 -0
  521. package/backend/node_modules/mime-db/db.json +9342 -0
  522. package/backend/node_modules/mime-db/index.js +12 -0
  523. package/backend/node_modules/mime-db/package.json +56 -0
  524. package/backend/node_modules/mime-types/HISTORY.md +428 -0
  525. package/backend/node_modules/mime-types/LICENSE +23 -0
  526. package/backend/node_modules/mime-types/README.md +126 -0
  527. package/backend/node_modules/mime-types/index.js +211 -0
  528. package/backend/node_modules/mime-types/mimeScore.js +57 -0
  529. package/backend/node_modules/mime-types/package.json +49 -0
  530. package/backend/node_modules/ms/index.js +162 -0
  531. package/backend/node_modules/ms/license.md +21 -0
  532. package/backend/node_modules/ms/package.json +38 -0
  533. package/backend/node_modules/ms/readme.md +59 -0
  534. package/backend/node_modules/mysql2/License +19 -0
  535. package/backend/node_modules/mysql2/README.md +114 -0
  536. package/backend/node_modules/mysql2/index.d.ts +1 -0
  537. package/backend/node_modules/mysql2/index.js +77 -0
  538. package/backend/node_modules/mysql2/lib/auth_41.js +95 -0
  539. package/backend/node_modules/mysql2/lib/auth_plugins/caching_sha2_password.js +115 -0
  540. package/backend/node_modules/mysql2/lib/auth_plugins/caching_sha2_password.md +18 -0
  541. package/backend/node_modules/mysql2/lib/auth_plugins/index.js +8 -0
  542. package/backend/node_modules/mysql2/lib/auth_plugins/mysql_clear_password.js +17 -0
  543. package/backend/node_modules/mysql2/lib/auth_plugins/mysql_native_password.js +34 -0
  544. package/backend/node_modules/mysql2/lib/auth_plugins/sha256_password.js +74 -0
  545. package/backend/node_modules/mysql2/lib/base/connection.js +1139 -0
  546. package/backend/node_modules/mysql2/lib/base/pool.js +347 -0
  547. package/backend/node_modules/mysql2/lib/commands/auth_switch.js +151 -0
  548. package/backend/node_modules/mysql2/lib/commands/binlog_dump.js +109 -0
  549. package/backend/node_modules/mysql2/lib/commands/change_user.js +68 -0
  550. package/backend/node_modules/mysql2/lib/commands/client_handshake.js +386 -0
  551. package/backend/node_modules/mysql2/lib/commands/close_statement.js +18 -0
  552. package/backend/node_modules/mysql2/lib/commands/command.js +54 -0
  553. package/backend/node_modules/mysql2/lib/commands/execute.js +116 -0
  554. package/backend/node_modules/mysql2/lib/commands/index.js +29 -0
  555. package/backend/node_modules/mysql2/lib/commands/ping.js +36 -0
  556. package/backend/node_modules/mysql2/lib/commands/prepare.js +143 -0
  557. package/backend/node_modules/mysql2/lib/commands/query.js +365 -0
  558. package/backend/node_modules/mysql2/lib/commands/quit.js +29 -0
  559. package/backend/node_modules/mysql2/lib/commands/register_slave.js +27 -0
  560. package/backend/node_modules/mysql2/lib/commands/reset_connection.js +29 -0
  561. package/backend/node_modules/mysql2/lib/commands/server_handshake.js +205 -0
  562. package/backend/node_modules/mysql2/lib/compressed_protocol.js +153 -0
  563. package/backend/node_modules/mysql2/lib/connection.js +12 -0
  564. package/backend/node_modules/mysql2/lib/connection_config.js +300 -0
  565. package/backend/node_modules/mysql2/lib/constants/charset_encodings.js +317 -0
  566. package/backend/node_modules/mysql2/lib/constants/charsets.js +317 -0
  567. package/backend/node_modules/mysql2/lib/constants/client.js +39 -0
  568. package/backend/node_modules/mysql2/lib/constants/commands.js +37 -0
  569. package/backend/node_modules/mysql2/lib/constants/cursor.js +9 -0
  570. package/backend/node_modules/mysql2/lib/constants/encoding_charset.js +50 -0
  571. package/backend/node_modules/mysql2/lib/constants/errors.js +3973 -0
  572. package/backend/node_modules/mysql2/lib/constants/field_flags.js +20 -0
  573. package/backend/node_modules/mysql2/lib/constants/server_status.js +44 -0
  574. package/backend/node_modules/mysql2/lib/constants/session_track.js +11 -0
  575. package/backend/node_modules/mysql2/lib/constants/ssl_profiles.js +11 -0
  576. package/backend/node_modules/mysql2/lib/constants/types.js +64 -0
  577. package/backend/node_modules/mysql2/lib/create_connection.js +10 -0
  578. package/backend/node_modules/mysql2/lib/create_pool.js +10 -0
  579. package/backend/node_modules/mysql2/lib/create_pool_cluster.js +9 -0
  580. package/backend/node_modules/mysql2/lib/helpers.js +83 -0
  581. package/backend/node_modules/mysql2/lib/packet_parser.js +195 -0
  582. package/backend/node_modules/mysql2/lib/packets/auth_next_factor.js +35 -0
  583. package/backend/node_modules/mysql2/lib/packets/auth_switch_request.js +38 -0
  584. package/backend/node_modules/mysql2/lib/packets/auth_switch_request_more_data.js +33 -0
  585. package/backend/node_modules/mysql2/lib/packets/auth_switch_response.js +30 -0
  586. package/backend/node_modules/mysql2/lib/packets/binary_row.js +95 -0
  587. package/backend/node_modules/mysql2/lib/packets/binlog_dump.js +33 -0
  588. package/backend/node_modules/mysql2/lib/packets/binlog_query_statusvars.js +115 -0
  589. package/backend/node_modules/mysql2/lib/packets/change_user.js +97 -0
  590. package/backend/node_modules/mysql2/lib/packets/close_statement.js +21 -0
  591. package/backend/node_modules/mysql2/lib/packets/column_definition.js +291 -0
  592. package/backend/node_modules/mysql2/lib/packets/encode_parameter.js +69 -0
  593. package/backend/node_modules/mysql2/lib/packets/execute.js +177 -0
  594. package/backend/node_modules/mysql2/lib/packets/handshake.js +112 -0
  595. package/backend/node_modules/mysql2/lib/packets/handshake_response.js +173 -0
  596. package/backend/node_modules/mysql2/lib/packets/index.js +154 -0
  597. package/backend/node_modules/mysql2/lib/packets/packet.js +978 -0
  598. package/backend/node_modules/mysql2/lib/packets/prepare_statement.js +27 -0
  599. package/backend/node_modules/mysql2/lib/packets/prepared_statement_header.js +16 -0
  600. package/backend/node_modules/mysql2/lib/packets/query.js +102 -0
  601. package/backend/node_modules/mysql2/lib/packets/register_slave.js +46 -0
  602. package/backend/node_modules/mysql2/lib/packets/reset_connection.js +17 -0
  603. package/backend/node_modules/mysql2/lib/packets/resultset_header.js +124 -0
  604. package/backend/node_modules/mysql2/lib/packets/ssl_request.js +25 -0
  605. package/backend/node_modules/mysql2/lib/packets/text_row.js +47 -0
  606. package/backend/node_modules/mysql2/lib/parsers/binary_parser.js +235 -0
  607. package/backend/node_modules/mysql2/lib/parsers/parser_cache.js +68 -0
  608. package/backend/node_modules/mysql2/lib/parsers/static_binary_parser.js +213 -0
  609. package/backend/node_modules/mysql2/lib/parsers/static_text_parser.js +152 -0
  610. package/backend/node_modules/mysql2/lib/parsers/string.js +50 -0
  611. package/backend/node_modules/mysql2/lib/parsers/text_parser.js +214 -0
  612. package/backend/node_modules/mysql2/lib/pool.js +12 -0
  613. package/backend/node_modules/mysql2/lib/pool_cluster.js +375 -0
  614. package/backend/node_modules/mysql2/lib/pool_config.js +34 -0
  615. package/backend/node_modules/mysql2/lib/pool_connection.js +81 -0
  616. package/backend/node_modules/mysql2/lib/promise/capture_local_err.js +25 -0
  617. package/backend/node_modules/mysql2/lib/promise/connection.js +237 -0
  618. package/backend/node_modules/mysql2/lib/promise/inherit_events.js +27 -0
  619. package/backend/node_modules/mysql2/lib/promise/make_done_cb.js +16 -0
  620. package/backend/node_modules/mysql2/lib/promise/pool.js +118 -0
  621. package/backend/node_modules/mysql2/lib/promise/pool_cluster.js +59 -0
  622. package/backend/node_modules/mysql2/lib/promise/pool_connection.js +19 -0
  623. package/backend/node_modules/mysql2/lib/promise/prepared_statement_info.js +35 -0
  624. package/backend/node_modules/mysql2/lib/results_stream.js +38 -0
  625. package/backend/node_modules/mysql2/lib/server.js +37 -0
  626. package/backend/node_modules/mysql2/lib/tracing.js +81 -0
  627. package/backend/node_modules/mysql2/package.json +95 -0
  628. package/backend/node_modules/mysql2/promise.d.ts +141 -0
  629. package/backend/node_modules/mysql2/promise.js +209 -0
  630. package/backend/node_modules/mysql2/typings/mysql/LICENSE.txt +15 -0
  631. package/backend/node_modules/mysql2/typings/mysql/index.d.ts +93 -0
  632. package/backend/node_modules/mysql2/typings/mysql/info.txt +1 -0
  633. package/backend/node_modules/mysql2/typings/mysql/lib/Auth.d.ts +30 -0
  634. package/backend/node_modules/mysql2/typings/mysql/lib/Connection.d.ts +456 -0
  635. package/backend/node_modules/mysql2/typings/mysql/lib/Pool.d.ts +78 -0
  636. package/backend/node_modules/mysql2/typings/mysql/lib/PoolCluster.d.ts +92 -0
  637. package/backend/node_modules/mysql2/typings/mysql/lib/PoolConnection.d.ts +11 -0
  638. package/backend/node_modules/mysql2/typings/mysql/lib/Server.d.ts +11 -0
  639. package/backend/node_modules/mysql2/typings/mysql/lib/Tracing.d.ts +71 -0
  640. package/backend/node_modules/mysql2/typings/mysql/lib/constants/CharsetToEncoding.d.ts +8 -0
  641. package/backend/node_modules/mysql2/typings/mysql/lib/constants/Charsets.d.ts +326 -0
  642. package/backend/node_modules/mysql2/typings/mysql/lib/constants/Types.d.ts +70 -0
  643. package/backend/node_modules/mysql2/typings/mysql/lib/constants/index.d.ts +5 -0
  644. package/backend/node_modules/mysql2/typings/mysql/lib/parsers/ParserCache.d.ts +4 -0
  645. package/backend/node_modules/mysql2/typings/mysql/lib/parsers/index.d.ts +18 -0
  646. package/backend/node_modules/mysql2/typings/mysql/lib/parsers/typeCast.d.ts +54 -0
  647. package/backend/node_modules/mysql2/typings/mysql/lib/protocol/packets/Field.d.ts +10 -0
  648. package/backend/node_modules/mysql2/typings/mysql/lib/protocol/packets/FieldPacket.d.ts +27 -0
  649. package/backend/node_modules/mysql2/typings/mysql/lib/protocol/packets/OkPacket.d.ts +23 -0
  650. package/backend/node_modules/mysql2/typings/mysql/lib/protocol/packets/ProcedurePacket.d.ts +13 -0
  651. package/backend/node_modules/mysql2/typings/mysql/lib/protocol/packets/ResultSetHeader.d.ts +18 -0
  652. package/backend/node_modules/mysql2/typings/mysql/lib/protocol/packets/RowDataPacket.d.ts +9 -0
  653. package/backend/node_modules/mysql2/typings/mysql/lib/protocol/packets/index.d.ts +28 -0
  654. package/backend/node_modules/mysql2/typings/mysql/lib/protocol/packets/params/ErrorPacketParams.d.ts +6 -0
  655. package/backend/node_modules/mysql2/typings/mysql/lib/protocol/packets/params/OkPacketParams.d.ts +9 -0
  656. package/backend/node_modules/mysql2/typings/mysql/lib/protocol/sequences/ExecutableBase.d.ts +41 -0
  657. package/backend/node_modules/mysql2/typings/mysql/lib/protocol/sequences/Prepare.d.ts +65 -0
  658. package/backend/node_modules/mysql2/typings/mysql/lib/protocol/sequences/Query.d.ts +235 -0
  659. package/backend/node_modules/mysql2/typings/mysql/lib/protocol/sequences/QueryableBase.d.ts +41 -0
  660. package/backend/node_modules/mysql2/typings/mysql/lib/protocol/sequences/Sequence.d.ts +5 -0
  661. package/backend/node_modules/mysql2/typings/mysql/lib/protocol/sequences/promise/ExecutableBase.d.ts +17 -0
  662. package/backend/node_modules/mysql2/typings/mysql/lib/protocol/sequences/promise/QueryableBase.d.ts +18 -0
  663. package/backend/node_modules/named-placeholders/LICENSE +21 -0
  664. package/backend/node_modules/named-placeholders/README.md +27 -0
  665. package/backend/node_modules/named-placeholders/index.js +179 -0
  666. package/backend/node_modules/named-placeholders/package.json +36 -0
  667. package/backend/node_modules/negotiator/HISTORY.md +114 -0
  668. package/backend/node_modules/negotiator/LICENSE +24 -0
  669. package/backend/node_modules/negotiator/README.md +212 -0
  670. package/backend/node_modules/negotiator/index.js +83 -0
  671. package/backend/node_modules/negotiator/lib/charset.js +169 -0
  672. package/backend/node_modules/negotiator/lib/encoding.js +205 -0
  673. package/backend/node_modules/negotiator/lib/language.js +179 -0
  674. package/backend/node_modules/negotiator/lib/mediaType.js +294 -0
  675. package/backend/node_modules/negotiator/package.json +43 -0
  676. package/backend/node_modules/object-assign/index.js +90 -0
  677. package/backend/node_modules/object-assign/license +21 -0
  678. package/backend/node_modules/object-assign/package.json +42 -0
  679. package/backend/node_modules/object-assign/readme.md +61 -0
  680. package/backend/node_modules/object-inspect/.eslintrc +53 -0
  681. package/backend/node_modules/object-inspect/.github/FUNDING.yml +12 -0
  682. package/backend/node_modules/object-inspect/.nycrc +13 -0
  683. package/backend/node_modules/object-inspect/CHANGELOG.md +424 -0
  684. package/backend/node_modules/object-inspect/LICENSE +21 -0
  685. package/backend/node_modules/object-inspect/example/all.js +23 -0
  686. package/backend/node_modules/object-inspect/example/circular.js +6 -0
  687. package/backend/node_modules/object-inspect/example/fn.js +5 -0
  688. package/backend/node_modules/object-inspect/example/inspect.js +10 -0
  689. package/backend/node_modules/object-inspect/index.js +544 -0
  690. package/backend/node_modules/object-inspect/package-support.json +20 -0
  691. package/backend/node_modules/object-inspect/package.json +105 -0
  692. package/backend/node_modules/object-inspect/readme.markdown +84 -0
  693. package/backend/node_modules/object-inspect/test/bigint.js +58 -0
  694. package/backend/node_modules/object-inspect/test/browser/dom.js +15 -0
  695. package/backend/node_modules/object-inspect/test/circular.js +16 -0
  696. package/backend/node_modules/object-inspect/test/deep.js +12 -0
  697. package/backend/node_modules/object-inspect/test/element.js +53 -0
  698. package/backend/node_modules/object-inspect/test/err.js +48 -0
  699. package/backend/node_modules/object-inspect/test/fakes.js +29 -0
  700. package/backend/node_modules/object-inspect/test/fn.js +76 -0
  701. package/backend/node_modules/object-inspect/test/global.js +17 -0
  702. package/backend/node_modules/object-inspect/test/has.js +15 -0
  703. package/backend/node_modules/object-inspect/test/holes.js +15 -0
  704. package/backend/node_modules/object-inspect/test/indent-option.js +271 -0
  705. package/backend/node_modules/object-inspect/test/inspect.js +139 -0
  706. package/backend/node_modules/object-inspect/test/lowbyte.js +12 -0
  707. package/backend/node_modules/object-inspect/test/number.js +58 -0
  708. package/backend/node_modules/object-inspect/test/quoteStyle.js +26 -0
  709. package/backend/node_modules/object-inspect/test/toStringTag.js +40 -0
  710. package/backend/node_modules/object-inspect/test/undef.js +12 -0
  711. package/backend/node_modules/object-inspect/test/values.js +261 -0
  712. package/backend/node_modules/object-inspect/test-core-js.js +26 -0
  713. package/backend/node_modules/object-inspect/util.inspect.js +1 -0
  714. package/backend/node_modules/on-finished/HISTORY.md +98 -0
  715. package/backend/node_modules/on-finished/LICENSE +23 -0
  716. package/backend/node_modules/on-finished/README.md +162 -0
  717. package/backend/node_modules/on-finished/index.js +234 -0
  718. package/backend/node_modules/on-finished/package.json +39 -0
  719. package/backend/node_modules/once/LICENSE +15 -0
  720. package/backend/node_modules/once/README.md +79 -0
  721. package/backend/node_modules/once/once.js +42 -0
  722. package/backend/node_modules/once/package.json +33 -0
  723. package/backend/node_modules/parseurl/HISTORY.md +58 -0
  724. package/backend/node_modules/parseurl/LICENSE +24 -0
  725. package/backend/node_modules/parseurl/README.md +133 -0
  726. package/backend/node_modules/parseurl/index.js +158 -0
  727. package/backend/node_modules/parseurl/package.json +40 -0
  728. package/backend/node_modules/path-to-regexp/LICENSE +21 -0
  729. package/backend/node_modules/path-to-regexp/Readme.md +224 -0
  730. package/backend/node_modules/path-to-regexp/dist/index.d.ts +147 -0
  731. package/backend/node_modules/path-to-regexp/dist/index.js +431 -0
  732. package/backend/node_modules/path-to-regexp/dist/index.js.map +1 -0
  733. package/backend/node_modules/path-to-regexp/package.json +64 -0
  734. package/backend/node_modules/proxy-addr/HISTORY.md +161 -0
  735. package/backend/node_modules/proxy-addr/LICENSE +22 -0
  736. package/backend/node_modules/proxy-addr/README.md +139 -0
  737. package/backend/node_modules/proxy-addr/index.js +327 -0
  738. package/backend/node_modules/proxy-addr/package.json +47 -0
  739. package/backend/node_modules/qs/.editorconfig +46 -0
  740. package/backend/node_modules/qs/.github/FUNDING.yml +12 -0
  741. package/backend/node_modules/qs/.github/SECURITY.md +11 -0
  742. package/backend/node_modules/qs/.github/THREAT_MODEL.md +78 -0
  743. package/backend/node_modules/qs/.nycrc +13 -0
  744. package/backend/node_modules/qs/CHANGELOG.md +822 -0
  745. package/backend/node_modules/qs/LICENSE.md +29 -0
  746. package/backend/node_modules/qs/README.md +758 -0
  747. package/backend/node_modules/qs/dist/qs.js +141 -0
  748. package/backend/node_modules/qs/eslint.config.mjs +57 -0
  749. package/backend/node_modules/qs/lib/formats.js +23 -0
  750. package/backend/node_modules/qs/lib/index.js +11 -0
  751. package/backend/node_modules/qs/lib/parse.js +403 -0
  752. package/backend/node_modules/qs/lib/stringify.js +363 -0
  753. package/backend/node_modules/qs/lib/utils.js +342 -0
  754. package/backend/node_modules/qs/package.json +94 -0
  755. package/backend/node_modules/qs/test/empty-keys-cases.js +267 -0
  756. package/backend/node_modules/qs/test/parse.js +1703 -0
  757. package/backend/node_modules/qs/test/stringify.js +1448 -0
  758. package/backend/node_modules/qs/test/utils.js +432 -0
  759. package/backend/node_modules/range-parser/HISTORY.md +56 -0
  760. package/backend/node_modules/range-parser/LICENSE +23 -0
  761. package/backend/node_modules/range-parser/README.md +84 -0
  762. package/backend/node_modules/range-parser/index.js +162 -0
  763. package/backend/node_modules/range-parser/package.json +44 -0
  764. package/backend/node_modules/raw-body/LICENSE +22 -0
  765. package/backend/node_modules/raw-body/README.md +223 -0
  766. package/backend/node_modules/raw-body/index.d.ts +85 -0
  767. package/backend/node_modules/raw-body/index.js +336 -0
  768. package/backend/node_modules/raw-body/package.json +46 -0
  769. package/backend/node_modules/router/HISTORY.md +228 -0
  770. package/backend/node_modules/router/LICENSE +23 -0
  771. package/backend/node_modules/router/README.md +416 -0
  772. package/backend/node_modules/router/index.js +748 -0
  773. package/backend/node_modules/router/lib/layer.js +247 -0
  774. package/backend/node_modules/router/lib/route.js +242 -0
  775. package/backend/node_modules/router/package.json +44 -0
  776. package/backend/node_modules/safer-buffer/LICENSE +21 -0
  777. package/backend/node_modules/safer-buffer/Porting-Buffer.md +268 -0
  778. package/backend/node_modules/safer-buffer/Readme.md +156 -0
  779. package/backend/node_modules/safer-buffer/dangerous.js +58 -0
  780. package/backend/node_modules/safer-buffer/package.json +34 -0
  781. package/backend/node_modules/safer-buffer/safer.js +77 -0
  782. package/backend/node_modules/safer-buffer/tests.js +406 -0
  783. package/backend/node_modules/send/LICENSE +23 -0
  784. package/backend/node_modules/send/README.md +317 -0
  785. package/backend/node_modules/send/index.js +997 -0
  786. package/backend/node_modules/send/package.json +63 -0
  787. package/backend/node_modules/serve-static/LICENSE +25 -0
  788. package/backend/node_modules/serve-static/README.md +253 -0
  789. package/backend/node_modules/serve-static/index.js +208 -0
  790. package/backend/node_modules/serve-static/package.json +44 -0
  791. package/backend/node_modules/setprototypeof/LICENSE +13 -0
  792. package/backend/node_modules/setprototypeof/README.md +31 -0
  793. package/backend/node_modules/setprototypeof/index.d.ts +2 -0
  794. package/backend/node_modules/setprototypeof/index.js +17 -0
  795. package/backend/node_modules/setprototypeof/package.json +38 -0
  796. package/backend/node_modules/setprototypeof/test/index.js +24 -0
  797. package/backend/node_modules/side-channel/.editorconfig +9 -0
  798. package/backend/node_modules/side-channel/.eslintrc +12 -0
  799. package/backend/node_modules/side-channel/.github/FUNDING.yml +12 -0
  800. package/backend/node_modules/side-channel/.nycrc +13 -0
  801. package/backend/node_modules/side-channel/CHANGELOG.md +110 -0
  802. package/backend/node_modules/side-channel/LICENSE +21 -0
  803. package/backend/node_modules/side-channel/README.md +61 -0
  804. package/backend/node_modules/side-channel/index.d.ts +14 -0
  805. package/backend/node_modules/side-channel/index.js +43 -0
  806. package/backend/node_modules/side-channel/package.json +85 -0
  807. package/backend/node_modules/side-channel/test/index.js +104 -0
  808. package/backend/node_modules/side-channel/tsconfig.json +9 -0
  809. package/backend/node_modules/side-channel-list/.editorconfig +9 -0
  810. package/backend/node_modules/side-channel-list/.eslintrc +11 -0
  811. package/backend/node_modules/side-channel-list/.github/FUNDING.yml +12 -0
  812. package/backend/node_modules/side-channel-list/.nycrc +13 -0
  813. package/backend/node_modules/side-channel-list/CHANGELOG.md +36 -0
  814. package/backend/node_modules/side-channel-list/LICENSE +21 -0
  815. package/backend/node_modules/side-channel-list/README.md +62 -0
  816. package/backend/node_modules/side-channel-list/index.d.ts +13 -0
  817. package/backend/node_modules/side-channel-list/index.js +111 -0
  818. package/backend/node_modules/side-channel-list/list.d.ts +14 -0
  819. package/backend/node_modules/side-channel-list/package.json +77 -0
  820. package/backend/node_modules/side-channel-list/test/index.js +154 -0
  821. package/backend/node_modules/side-channel-list/tsconfig.json +9 -0
  822. package/backend/node_modules/side-channel-map/.editorconfig +9 -0
  823. package/backend/node_modules/side-channel-map/.eslintrc +11 -0
  824. package/backend/node_modules/side-channel-map/.github/FUNDING.yml +12 -0
  825. package/backend/node_modules/side-channel-map/.nycrc +13 -0
  826. package/backend/node_modules/side-channel-map/CHANGELOG.md +22 -0
  827. package/backend/node_modules/side-channel-map/LICENSE +21 -0
  828. package/backend/node_modules/side-channel-map/README.md +62 -0
  829. package/backend/node_modules/side-channel-map/index.d.ts +15 -0
  830. package/backend/node_modules/side-channel-map/index.js +68 -0
  831. package/backend/node_modules/side-channel-map/package.json +80 -0
  832. package/backend/node_modules/side-channel-map/test/index.js +114 -0
  833. package/backend/node_modules/side-channel-map/tsconfig.json +9 -0
  834. package/backend/node_modules/side-channel-weakmap/.editorconfig +9 -0
  835. package/backend/node_modules/side-channel-weakmap/.eslintrc +12 -0
  836. package/backend/node_modules/side-channel-weakmap/.github/FUNDING.yml +12 -0
  837. package/backend/node_modules/side-channel-weakmap/.nycrc +13 -0
  838. package/backend/node_modules/side-channel-weakmap/CHANGELOG.md +28 -0
  839. package/backend/node_modules/side-channel-weakmap/LICENSE +21 -0
  840. package/backend/node_modules/side-channel-weakmap/README.md +62 -0
  841. package/backend/node_modules/side-channel-weakmap/index.d.ts +15 -0
  842. package/backend/node_modules/side-channel-weakmap/index.js +84 -0
  843. package/backend/node_modules/side-channel-weakmap/package.json +87 -0
  844. package/backend/node_modules/side-channel-weakmap/test/index.js +114 -0
  845. package/backend/node_modules/side-channel-weakmap/tsconfig.json +9 -0
  846. package/backend/node_modules/sql-escaper/LICENSE +21 -0
  847. package/backend/node_modules/sql-escaper/README.md +424 -0
  848. package/backend/node_modules/sql-escaper/lib/index.d.ts +15 -0
  849. package/backend/node_modules/sql-escaper/lib/index.js +398 -0
  850. package/backend/node_modules/sql-escaper/lib/index.mjs +305 -0
  851. package/backend/node_modules/sql-escaper/lib/types.d.ts +5 -0
  852. package/backend/node_modules/sql-escaper/lib/types.js +2 -0
  853. package/backend/node_modules/sql-escaper/package.json +81 -0
  854. package/backend/node_modules/statuses/HISTORY.md +87 -0
  855. package/backend/node_modules/statuses/LICENSE +23 -0
  856. package/backend/node_modules/statuses/README.md +139 -0
  857. package/backend/node_modules/statuses/codes.json +65 -0
  858. package/backend/node_modules/statuses/index.js +146 -0
  859. package/backend/node_modules/statuses/package.json +49 -0
  860. package/backend/node_modules/toidentifier/HISTORY.md +9 -0
  861. package/backend/node_modules/toidentifier/LICENSE +21 -0
  862. package/backend/node_modules/toidentifier/README.md +61 -0
  863. package/backend/node_modules/toidentifier/index.js +32 -0
  864. package/backend/node_modules/toidentifier/package.json +38 -0
  865. package/backend/node_modules/type-is/HISTORY.md +292 -0
  866. package/backend/node_modules/type-is/LICENSE +23 -0
  867. package/backend/node_modules/type-is/README.md +198 -0
  868. package/backend/node_modules/type-is/index.js +240 -0
  869. package/backend/node_modules/type-is/node_modules/content-type/LICENSE +22 -0
  870. package/backend/node_modules/type-is/node_modules/content-type/README.md +69 -0
  871. package/backend/node_modules/type-is/node_modules/content-type/dist/index.d.ts +26 -0
  872. package/backend/node_modules/type-is/node_modules/content-type/dist/index.js +170 -0
  873. package/backend/node_modules/type-is/node_modules/content-type/dist/index.js.map +1 -0
  874. package/backend/node_modules/type-is/node_modules/content-type/package.json +52 -0
  875. package/backend/node_modules/type-is/package.json +51 -0
  876. package/backend/node_modules/undici-types/LICENSE +21 -0
  877. package/backend/node_modules/undici-types/README.md +6 -0
  878. package/backend/node_modules/undici-types/agent.d.ts +32 -0
  879. package/backend/node_modules/undici-types/api.d.ts +43 -0
  880. package/backend/node_modules/undici-types/balanced-pool.d.ts +30 -0
  881. package/backend/node_modules/undici-types/cache-interceptor.d.ts +179 -0
  882. package/backend/node_modules/undici-types/cache.d.ts +36 -0
  883. package/backend/node_modules/undici-types/client-stats.d.ts +15 -0
  884. package/backend/node_modules/undici-types/client.d.ts +123 -0
  885. package/backend/node_modules/undici-types/connector.d.ts +36 -0
  886. package/backend/node_modules/undici-types/content-type.d.ts +21 -0
  887. package/backend/node_modules/undici-types/cookies.d.ts +30 -0
  888. package/backend/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
  889. package/backend/node_modules/undici-types/dispatcher.d.ts +279 -0
  890. package/backend/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
  891. package/backend/node_modules/undici-types/errors.d.ts +177 -0
  892. package/backend/node_modules/undici-types/eventsource.d.ts +66 -0
  893. package/backend/node_modules/undici-types/fetch.d.ts +211 -0
  894. package/backend/node_modules/undici-types/formdata.d.ts +108 -0
  895. package/backend/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  896. package/backend/node_modules/undici-types/global-origin.d.ts +7 -0
  897. package/backend/node_modules/undici-types/h2c-client.d.ts +73 -0
  898. package/backend/node_modules/undici-types/handlers.d.ts +15 -0
  899. package/backend/node_modules/undici-types/header.d.ts +160 -0
  900. package/backend/node_modules/undici-types/index.d.ts +91 -0
  901. package/backend/node_modules/undici-types/interceptors.d.ts +80 -0
  902. package/backend/node_modules/undici-types/mock-agent.d.ts +68 -0
  903. package/backend/node_modules/undici-types/mock-call-history.d.ts +111 -0
  904. package/backend/node_modules/undici-types/mock-client.d.ts +27 -0
  905. package/backend/node_modules/undici-types/mock-errors.d.ts +12 -0
  906. package/backend/node_modules/undici-types/mock-interceptor.d.ts +94 -0
  907. package/backend/node_modules/undici-types/mock-pool.d.ts +27 -0
  908. package/backend/node_modules/undici-types/package.json +55 -0
  909. package/backend/node_modules/undici-types/patch.d.ts +29 -0
  910. package/backend/node_modules/undici-types/pool-stats.d.ts +19 -0
  911. package/backend/node_modules/undici-types/pool.d.ts +41 -0
  912. package/backend/node_modules/undici-types/proxy-agent.d.ts +29 -0
  913. package/backend/node_modules/undici-types/readable.d.ts +68 -0
  914. package/backend/node_modules/undici-types/retry-agent.d.ts +8 -0
  915. package/backend/node_modules/undici-types/retry-handler.d.ts +125 -0
  916. package/backend/node_modules/undici-types/round-robin-pool.d.ts +41 -0
  917. package/backend/node_modules/undici-types/snapshot-agent.d.ts +109 -0
  918. package/backend/node_modules/undici-types/socks5-proxy-agent.d.ts +25 -0
  919. package/backend/node_modules/undici-types/util.d.ts +18 -0
  920. package/backend/node_modules/undici-types/utility.d.ts +7 -0
  921. package/backend/node_modules/undici-types/webidl.d.ts +347 -0
  922. package/backend/node_modules/undici-types/websocket.d.ts +188 -0
  923. package/backend/node_modules/unpipe/HISTORY.md +4 -0
  924. package/backend/node_modules/unpipe/LICENSE +22 -0
  925. package/backend/node_modules/unpipe/README.md +43 -0
  926. package/backend/node_modules/unpipe/index.js +69 -0
  927. package/backend/node_modules/unpipe/package.json +27 -0
  928. package/backend/node_modules/vary/HISTORY.md +39 -0
  929. package/backend/node_modules/vary/LICENSE +22 -0
  930. package/backend/node_modules/vary/README.md +101 -0
  931. package/backend/node_modules/vary/index.js +149 -0
  932. package/backend/node_modules/vary/package.json +43 -0
  933. package/backend/node_modules/wrappy/LICENSE +15 -0
  934. package/backend/node_modules/wrappy/README.md +36 -0
  935. package/backend/node_modules/wrappy/package.json +29 -0
  936. package/backend/node_modules/wrappy/wrappy.js +33 -0
  937. package/backend/package-lock.json +1002 -0
  938. package/backend/package.json +19 -0
  939. package/backend/server.js +276 -0
  940. package/frontend/README.md +16 -0
  941. package/frontend/eslint.config.js +21 -0
  942. package/frontend/index.html +13 -0
  943. package/frontend/package-lock.json +3052 -0
  944. package/frontend/package.json +32 -0
  945. package/frontend/public/favicon.svg +1 -0
  946. package/frontend/public/icons.svg +24 -0
  947. package/frontend/src/App.css +184 -0
  948. package/frontend/src/App.jsx +77 -0
  949. package/frontend/src/assets/hero.png +0 -0
  950. package/frontend/src/assets/react.svg +1 -0
  951. package/frontend/src/assets/vite.svg +1 -0
  952. package/frontend/src/change.js +67 -0
  953. package/frontend/src/components/BillModal.jsx +32 -0
  954. package/frontend/src/components/Navbar.jsx +67 -0
  955. package/frontend/src/index.css +1 -0
  956. package/frontend/src/main.jsx +10 -0
  957. package/frontend/src/pages/Dashboard.jsx +121 -0
  958. package/frontend/src/pages/DynamicPage.jsx +358 -0
  959. package/frontend/src/pages/Login.jsx +103 -0
  960. package/frontend/src/pages/Register.jsx +128 -0
  961. package/frontend/src/pages/Reports.jsx +359 -0
  962. package/frontend/vite.config.js +7 -0
  963. package/package.json +13 -0
@@ -0,0 +1,121 @@
1
+ import React, { useState, useEffect } from "react";
2
+ import axios from "axios";
3
+ import { Link } from "react-router-dom";
4
+
5
+ export default function Dashboard() {
6
+ const [stats, setStats] = useState({
7
+ totalProducts: 0,
8
+ totalSuppliers: 0,
9
+ totalStockVolume: 0,
10
+ totalRevenue: 0
11
+ });
12
+
13
+ useEffect(() => {
14
+ const fetchDashboardStats = async () => {
15
+ try {
16
+ const res = await axios.get("http://localhost:5000/api/data/all");
17
+
18
+ // Destructure using your true database table names
19
+ const { Products = [], Suppliers = [], SalesOrder = [] } = res.data || {};
20
+
21
+ // 1. Calculate cumulative operational metrics safely
22
+ const stockVolume = Products.reduce((sum, item) => sum + Number(item.CurrentStock || 0), 0);
23
+
24
+ // 2. Sum up total financial values recorded from incoming customer shipments
25
+ const revenueSum = SalesOrder.reduce((sum, order) => sum + Number(order.TotalCostAmount || 0), 0);
26
+
27
+ setStats({
28
+ totalProducts: Products.length,
29
+ totalSuppliers: Suppliers.length,
30
+ totalStockVolume: stockVolume,
31
+ totalRevenue: revenueSum
32
+ });
33
+ } catch (err) {
34
+ console.error("Dashboard metrics loading error:", err);
35
+ }
36
+ };
37
+ fetchDashboardStats();
38
+ }, []);
39
+
40
+ return (
41
+ <div className="max-w-7xl mx-auto p-4 sm:p-6 lg:p-8 flex flex-col gap-6 bg-slate-50/50 min-h-screen">
42
+
43
+ {/* Top Banner Heading */}
44
+ <div className="bg-white rounded-2xl border border-slate-100 shadow-sm p-6">
45
+ <span className="text-[10px] font-bold uppercase tracking-wider text-indigo-600 bg-indigo-50 px-2.5 py-1 rounded-full">
46
+ Core System Pipeline Overview
47
+ </span>
48
+ <h2 className="text-3xl font-black text-slate-900 tracking-tight mt-2">
49
+ Stock Management Dashboard
50
+ </h2>
51
+ <p className="text-slate-500 text-sm mt-1">
52
+ Real-time dynamic inventory pipeline tracking metrics and sales evaluations.
53
+ </p>
54
+ </div>
55
+
56
+ {/* Dynamic Grid Matrix Display Cards */}
57
+ <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6">
58
+
59
+ {/* Card 1: Total Catalog Items */}
60
+ <div className="bg-white p-6 rounded-2xl shadow-sm border border-slate-100 border-l-4 border-blue-600 flex flex-col justify-between">
61
+ <div>
62
+ <div className="text-xs font-bold text-slate-400 uppercase tracking-wider">Cataloged Items</div>
63
+ <div className="text-3xl font-black text-slate-900 mt-2 font-mono">
64
+ {stats.totalProducts}
65
+ </div>
66
+ </div>
67
+ <p className="text-[11px] text-slate-400 mt-4 font-medium">Distinct inventory products listed.</p>
68
+ </div>
69
+
70
+ {/* Card 2: Registered Supply Operations */}
71
+ <div className="bg-white p-6 rounded-2xl shadow-sm border border-slate-100 border-l-4 border-indigo-500 flex flex-col justify-between">
72
+ <div>
73
+ <div className="text-xs font-bold text-slate-400 uppercase tracking-wider">Active Suppliers</div>
74
+ <div className="text-3xl font-black text-slate-900 mt-2 font-mono">
75
+ {stats.totalSuppliers}
76
+ </div>
77
+ </div>
78
+ <p className="text-[11px] text-slate-400 mt-4 font-medium">Verified supplier corporate channels.</p>
79
+ </div>
80
+
81
+ {/* Card 3: Total Cumulative Physical Volume */}
82
+ <div className="bg-white p-6 rounded-2xl shadow-sm border border-slate-100 border-l-4 border-amber-500 flex flex-col justify-between">
83
+ <div>
84
+ <div className="text-xs font-bold text-slate-400 uppercase tracking-wider">Warehouse Volume</div>
85
+ <div className="text-3xl font-black text-slate-900 mt-2 font-mono">
86
+ {stats.totalStockVolume.toLocaleString()}
87
+ </div>
88
+ </div>
89
+ <p className="text-[11px] text-slate-400 mt-4 font-medium">Total units currently inside stockroom.</p>
90
+ </div>
91
+
92
+ {/* Card 4: Accumulated Gross Sales Earnings */}
93
+ <div className="bg-white p-6 rounded-2xl shadow-sm border border-slate-100 border-l-4 border-emerald-600 flex flex-col justify-between">
94
+ <div>
95
+ <div className="text-xs font-bold text-slate-400 uppercase tracking-wider">Total Revenue Generated</div>
96
+ <div className="text-2xl font-black text-emerald-600 mt-2.5 font-mono">
97
+ {stats.totalRevenue.toLocaleString()} Rwf
98
+ </div>
99
+ </div>
100
+ <p className="text-[11px] text-slate-400 mt-4 font-medium">Settled cash flow sales transactions total.</p>
101
+ </div>
102
+
103
+ </div>
104
+
105
+ {/* Navigation Shortcut Row Control */}
106
+ <div className="bg-white rounded-2xl border border-slate-100 shadow-sm p-6 flex flex-wrap items-center gap-4">
107
+ <span className="text-xs font-bold text-slate-500 uppercase tracking-wider mr-2">Quick Management Pipelines:</span>
108
+ <Link to="/Products" className="text-xs bg-slate-900 text-white hover:bg-indigo-600 font-bold px-4 py-2 rounded-xl transition-all shadow-sm">
109
+ + View Inventory Items
110
+ </Link>
111
+ <Link to="/StockInbound" className="text-xs bg-slate-100 text-slate-700 hover:bg-slate-200 font-bold px-4 py-2 rounded-xl transition-all">
112
+ + Log Stock Shipments
113
+ </Link>
114
+ <Link to="/SalesOrder" className="text-xs bg-slate-100 text-slate-700 hover:bg-slate-200 font-bold px-4 py-2 rounded-xl transition-all">
115
+ + Create Sales Orders
116
+ </Link>
117
+ </div>
118
+
119
+ </div>
120
+ );
121
+ }
@@ -0,0 +1,358 @@
1
+ import React, { useState, useEffect } from "react";
2
+ import axios from "axios";
3
+ import { frontendConfig } from "../change"; // Points to your updated frontendConfig layout
4
+
5
+ export default function DynamicPage({ moduleName }) {
6
+ const meta = frontendConfig.structures[moduleName];
7
+ const [records, setRecords] = useState([]);
8
+ const [allData, setAllData] = useState({});
9
+ const [formData, setFormData] = useState({});
10
+ const [editingId, setEditingId] = useState(null);
11
+
12
+ // Live stock evaluation helpers
13
+ const [activeAvailableStock, setActiveAvailableStock] = useState(null);
14
+
15
+ // --- BUSINESS RULES SCHEMA ISOLATION ---
16
+ const isSalesOrderModule = moduleName === "SalesOrder";
17
+ const isStockInboundModule = moduleName === "StockInbound";
18
+
19
+ const fetchState = async () => {
20
+ try {
21
+ const res = await axios.get(`http://localhost:5000/api/data/${moduleName}`);
22
+ setRecords(Array.isArray(res.data) ? res.data : []);
23
+
24
+ const dataRes = await axios.get("http://localhost:5000/api/data/all");
25
+ setAllData(dataRes.data || {});
26
+
27
+ // If a product or batch is currently active in the form, refresh its live badge value too
28
+ if (formData.ProductCode || formData.ProductID) {
29
+ const targetProd = formData.ProductCode || formData.ProductID;
30
+ const freshProduct = dataRes.data["Products"]?.find(p => String(p.ProductCode || "").trim() === String(targetProd || "").trim());
31
+ if (freshProduct) setActiveAvailableStock(Number(freshProduct.CurrentStock || 0));
32
+ }
33
+ } catch (err) {
34
+ console.error("Stock management database synchronization failure:", err);
35
+ }
36
+ };
37
+
38
+ useEffect(() => {
39
+ setFormData({});
40
+ setEditingId(null);
41
+ setActiveAvailableStock(null);
42
+ fetchState();
43
+ }, [moduleName]);
44
+
45
+ // --- AUTOMATED INVENTORY CALCULATION & STOCK TRACKER ENGINE ---
46
+ const handleInputChange = (key, value) => {
47
+ let updatedForm = { ...formData, [key]: value };
48
+
49
+ // A. Operational parameters for Sales Orders (Tracks via Batch Numbers)
50
+ if (isSalesOrderModule && (key === "BatchNumber" || key === "QuantitySold")) {
51
+ const targetBatch = String(updatedForm["BatchNumber"] || "").trim();
52
+ const targetQty = Number(updatedForm["QuantitySold"] || 0);
53
+
54
+ if (!targetBatch) {
55
+ updatedForm["TotalCostAmount"] = "";
56
+ setActiveAvailableStock(null);
57
+ } else {
58
+ const activeBatch = allData["StockInbound"]?.find((batch) => {
59
+ const currentBatchStr = String(batch.BatchNumber || "").trim();
60
+ return targetBatch === currentBatchStr || targetBatch.includes(`Batch #${currentBatchStr} `) || targetBatch.startsWith(`Batch #${currentBatchStr}—`);
61
+ });
62
+
63
+ if (activeBatch) {
64
+ const activeProduct = allData["Products"]?.find(
65
+ (prod) => String(prod.ProductCode || "").trim() === String(activeBatch.ProductCode || "").trim()
66
+ );
67
+
68
+ if (activeProduct) {
69
+ setActiveAvailableStock(Number(activeProduct.CurrentStock || 0));
70
+ updatedForm["TotalCostAmount"] = Number(activeProduct.UnitPrice || 0) * targetQty;
71
+ } else {
72
+ setActiveAvailableStock(null);
73
+ }
74
+ } else {
75
+ setActiveAvailableStock(null);
76
+ }
77
+ }
78
+ }
79
+
80
+ // B. Operational parameters for Stock Inbound
81
+ if (isStockInboundModule && (key === "ProductCode" || key === "ProductID" || key === "product_id")) {
82
+ const targetProductCode = String(value || "").trim();
83
+ if (!targetProductCode) {
84
+ setActiveAvailableStock(null);
85
+ } else {
86
+ const activeProduct = allData["Products"]?.find((prod) => {
87
+ const currentProdStr = String(prod.ProductCode || "").trim();
88
+ return targetProductCode === currentProdStr || targetProductCode.includes(currentProdStr);
89
+ });
90
+ if (activeProduct) {
91
+ setActiveAvailableStock(Number(activeProduct.CurrentStock || 0));
92
+ } else {
93
+ setActiveAvailableStock(null);
94
+ }
95
+ }
96
+ }
97
+
98
+ setFormData(updatedForm);
99
+ };
100
+
101
+ const handleSubmit = async (e) => {
102
+ e.preventDefault();
103
+ try {
104
+ if (editingId) {
105
+ await axios.put(`http://localhost:5000/api/data/${moduleName}/${meta.pk}/${editingId}`, formData);
106
+ } else {
107
+ if (isSalesOrderModule) {
108
+ const targetBatch = String(formData.BatchNumber || "").trim();
109
+ const activeBatch = allData["StockInbound"]?.find((b) => {
110
+ const currentBatchStr = String(b.BatchNumber || "").trim();
111
+ return targetBatch === currentBatchStr || targetBatch.includes(`Batch #${currentBatchStr} `);
112
+ });
113
+ const activeProduct = allData["Products"]?.find(p => String(p.ProductCode || "").trim() === String(activeBatch?.ProductCode || "").trim());
114
+
115
+ if (activeProduct && Number(formData.QuantitySold) > Number(activeProduct.CurrentStock || 0)) {
116
+ alert(`Aborted: Outbound request exceeds warehouse availability! (${activeProduct.CurrentStock} units left in stock)`);
117
+ return;
118
+ }
119
+ }
120
+ await axios.post(`http://localhost:5000/api/data/${moduleName}`, formData);
121
+ }
122
+ setFormData({});
123
+ setEditingId(null);
124
+ setActiveAvailableStock(null);
125
+ await fetchState(); // ✅ Pulls the updated auto-calculated stock values instantly
126
+ } catch (err) {
127
+ alert("Action operation failed: " + (err.response?.data?.error || err.message));
128
+ }
129
+ };
130
+
131
+ const handleEdit = (row) => {
132
+ setEditingId(row[meta.pk]);
133
+ setFormData({ ...row });
134
+
135
+ if (isSalesOrderModule && row.BatchNumber) {
136
+ const targetBatch = String(row.BatchNumber || "").trim();
137
+ const activeBatch = allData["StockInbound"]?.find(b => {
138
+ const currentBatchStr = String(b.BatchNumber || "").trim();
139
+ return targetBatch === currentBatchStr || targetBatch.includes(`Batch #${currentBatchStr} `);
140
+ });
141
+ const activeProduct = allData["Products"]?.find(p => String(p.ProductCode || "").trim() === String(activeBatch?.ProductCode || "").trim());
142
+ if (activeProduct) setActiveAvailableStock(Number(activeProduct.CurrentStock || 0));
143
+ }
144
+
145
+ if (isStockInboundModule && (row.ProductCode || row.ProductID)) {
146
+ const targetProd = String(row.ProductCode || row.ProductID || "").trim();
147
+ const activeProduct = allData["Products"]?.find(p => {
148
+ const currentProdStr = String(p.ProductCode || "").trim();
149
+ return targetProd === currentProdStr || targetProd.includes(currentProdStr);
150
+ });
151
+ if (activeProduct) setActiveAvailableStock(Number(activeProduct.CurrentStock || 0));
152
+ }
153
+ };
154
+
155
+ const handleDelete = async (id) => {
156
+ if (!window.confirm("Confirm permanent removal of this stock registry transaction entry?")) return;
157
+ try {
158
+ await axios.delete(`http://localhost:5000/api/data/${moduleName}/${meta.pk}/${id}`);
159
+ fetchState();
160
+ } catch (err) {
161
+ alert(err.response?.data?.error || err.message);
162
+ }
163
+ };
164
+
165
+ const renderDropdownOptionLabel = (field, relItem) => {
166
+ if (field.relation === "StockInbound") {
167
+ const associatedProduct = allData["Products"]?.find((p) => String(p.ProductCode || "").trim() === String(relItem.ProductCode || "").trim()) || {};
168
+ return `Batch #${relItem.BatchNumber} — ${associatedProduct.ProductName || "Unknown Product"} (In Stock: ${associatedProduct.CurrentStock || 0})`;
169
+ }
170
+ if (field.relation === "Products") {
171
+ return `${relItem.ProductCode} - ${relItem.ProductName} (Stock: ${relItem.CurrentStock || 0})`;
172
+ }
173
+ if (field.relation === "Suppliers") {
174
+ return `${relItem.SupplierCode} - ${relItem.SupplierName}`;
175
+ }
176
+ return relItem[field.displayField] || relItem[field.valueField];
177
+ };
178
+
179
+ return (
180
+ <div className="mx-auto max-w-7xl p-4 sm:p-6 lg:p-8 flex flex-col gap-6 bg-slate-50/50 min-h-screen">
181
+
182
+ {/* Top Section: Action Registration Input Controls */}
183
+ <div className="bg-white rounded-2xl border border-slate-100 shadow-sm p-6 relative">
184
+ <div className="flex flex-col md:flex-row md:items-center justify-between gap-4 mb-6 border-b border-slate-100 pb-4">
185
+ <div>
186
+ <span className="text-[10px] font-bold uppercase tracking-wider text-indigo-600 bg-indigo-50 px-2.5 py-1 rounded-full">
187
+ Dynamic Stock Management Engine
188
+ </span>
189
+ <h3 className="text-xl font-black text-slate-900 tracking-tight mt-2">
190
+ {editingId ? "Modify Transaction Parameters" : `Log Record Entry: ${moduleName}`}
191
+ </h3>
192
+ </div>
193
+
194
+ {/* LIVE TOTAL STOCK BADGE INDICATOR */}
195
+ {(isSalesOrderModule || isStockInboundModule) && activeAvailableStock !== null && (
196
+ <div className="flex items-center gap-2 bg-slate-900 text-white rounded-xl px-4 py-2 text-xs shadow-sm">
197
+ <span className="text-slate-400 font-bold uppercase tracking-wider text-[10px]">Current Total Stock:</span>
198
+ <span className={`font-mono font-black text-sm ${activeAvailableStock <= 5 ? "text-rose-400" : "text-emerald-400"}`}>
199
+ {activeAvailableStock} Units
200
+ </span>
201
+ </div>
202
+ )}
203
+ </div>
204
+
205
+ <form onSubmit={handleSubmit} className="flex flex-wrap items-end gap-4">
206
+ {meta.fields.map((field) => (
207
+ <div key={field.key} className="flex-1 min-w-[220px] space-y-1.5">
208
+ <label className="block text-xs font-bold tracking-wide text-slate-700 uppercase">
209
+ {field.label}
210
+ </label>
211
+
212
+ {field.type === "select" ? (
213
+ <div className="relative">
214
+ <select
215
+ required
216
+ value={formData[field.key] || ""}
217
+ className="w-full rounded-xl border border-slate-200 bg-white px-3.5 py-2.5 text-sm text-slate-900 shadow-sm focus:border-indigo-500 focus:outline-none appearance-none font-medium"
218
+ onChange={(e) => handleInputChange(field.key, e.target.value)}
219
+ >
220
+ <option value="" className="text-slate-400">-- Choose Configuration Option --</option>
221
+ {allData[field.relation]?.map((relItem) => {
222
+ const optionValue = relItem[field.valueField];
223
+ return (
224
+ <option key={relItem[field.valueField]} value={optionValue}>
225
+ {renderDropdownOptionLabel(field, relItem)}
226
+ </option>
227
+ );
228
+ })}
229
+ </select>
230
+ <div className="pointer-events-none absolute inset-y-0 right-0 flex items-center px-3.5 text-slate-400">
231
+ <svg className="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M19 9l-7 7-7-7" /></svg>
232
+ </div>
233
+ </div>
234
+ ) : (
235
+ <div className="relative">
236
+ <input
237
+ type={field.type}
238
+ required
239
+ disabled={isSalesOrderModule && field.key === "TotalCostAmount"}
240
+ value={formData[field.key] || ""}
241
+ className={`w-full rounded-xl border border-slate-200 px-3.5 py-2.5 text-sm text-slate-900 shadow-sm focus:border-indigo-500 focus:outline-none font-medium ${
242
+ isSalesOrderModule && field.key === "TotalCostAmount"
243
+ ? "bg-slate-50 font-mono font-bold text-emerald-600 cursor-not-allowed border-dashed"
244
+ : "bg-white"
245
+ } ${
246
+ isSalesOrderModule && field.key === "QuantitySold" && activeAvailableStock !== null && Number(formData.QuantitySold) > activeAvailableStock
247
+ ? "border-rose-500 text-rose-600 bg-rose-50/30"
248
+ : ""
249
+ }`}
250
+ onChange={(e) => handleInputChange(field.key, e.target.value)}
251
+ placeholder={field.type === "number" ? "0" : `Provide ${field.label.toLowerCase()}...`}
252
+ />
253
+
254
+ {isSalesOrderModule && field.key === "QuantitySold" && activeAvailableStock !== null && Number(formData.QuantitySold) > activeAvailableStock && (
255
+ <span className="text-[10px] text-rose-600 font-bold block mt-1 absolute left-1">
256
+ ⚠️ Order exceeds available stock!
257
+ </span>
258
+ )}
259
+ </div>
260
+ )}
261
+ </div>
262
+ ))}
263
+
264
+ <div className="w-full sm:w-auto">
265
+ <button
266
+ type="submit"
267
+ className="w-full inline-flex justify-center items-center rounded-xl bg-slate-950 px-6 py-2.5 h-[46px] text-sm font-bold text-white shadow-md hover:bg-indigo-600 transition-all whitespace-nowrap"
268
+ >
269
+ {editingId ? "Apply Modifications" : "Save Log Entry"}
270
+ </button>
271
+ </div>
272
+ </form>
273
+ </div>
274
+
275
+ {/* Bottom Section: Dynamic Matrix Records Log Table */}
276
+ <div className="bg-white rounded-2xl border border-slate-100 shadow-sm overflow-hidden">
277
+ <div className="p-6 border-b border-slate-100 bg-slate-900 text-white flex justify-between items-center">
278
+ <div>
279
+ <h3 className="font-black tracking-tight text-base">{meta.title || `${moduleName} Management Matrix`}</h3>
280
+ <p className="text-slate-400 text-[11px] mt-0.5">Live warehouse stock index tracker pipeline.</p>
281
+ </div>
282
+ <span className="text-xs bg-slate-800 text-slate-300 font-mono font-bold px-2 py-1 rounded-md">
283
+ Records: {records.length}
284
+ </span>
285
+ </div>
286
+
287
+ <div className="overflow-x-auto">
288
+ <table className="w-full text-sm text-left border-collapse">
289
+ <thead>
290
+ <tr className="bg-slate-50 border-b border-slate-100 text-slate-500 text-[11px] font-bold uppercase tracking-wider">
291
+ <th className="p-4">{meta.pk}</th>
292
+ {meta.fields.filter((f) => f.key !== meta.pk).map((f) => (
293
+ <th key={`th-${f.key}`} className="p-4">{f.label.replace(/\(.*?\)/g, "")}</th>
294
+ ))}
295
+ {(isStockInboundModule || isSalesOrderModule) && <th key="th-actions-header" className="p-4 text-center">Actions</th>}
296
+ </tr>
297
+ </thead>
298
+ <tbody className="divide-y divide-slate-100">
299
+ {records.length === 0 ? (
300
+ <tr>
301
+ <td colSpan={meta.fields.length + 2} className="p-12 text-center text-slate-400 font-medium">
302
+ No active transaction entries found in this stock inventory module registry.
303
+ </td>
304
+ </tr>
305
+ ) : (
306
+ records.map((row, rowIndex) => {
307
+ const rowUniqueId = row[meta.pk] || `row-${rowIndex}`;
308
+
309
+ return (
310
+ <tr key={rowUniqueId} className="hover:bg-slate-50/50 transition-colors font-medium text-slate-700">
311
+ <td className="p-4 text-slate-900 font-black font-mono bg-slate-50/30">{row[meta.pk]}</td>
312
+ {meta.fields.filter((f) => f.key !== meta.pk).map((f, colIndex) => (
313
+ <td key={`cell-${rowUniqueId}-${f.key || colIndex}`} className="p-4">
314
+ {f.type === "date" ? (
315
+ <span className="font-mono text-xs">
316
+ {row[f.key] ? new Date(row[f.key]).toLocaleDateString("en-GB") : "N/A"}
317
+ </span>
318
+ ) : f.key === "UnitPrice" || f.key === "TotalCostAmount" || f.key === "TotalCost" ? (
319
+ <span className="font-bold text-emerald-600 font-mono">{Number(row[f.key] || 0).toLocaleString()} Rwf</span>
320
+ ) : f.key === "CurrentStock" || f.key === "QuantitySold" || f.key === "QuantityReceived" ? (
321
+ <span className="font-black font-mono text-slate-900">{row[f.key]}</span>
322
+ ) : (
323
+ row[f.key]
324
+ )}
325
+ </td>
326
+ ))}
327
+
328
+ {(isStockInboundModule || isSalesOrderModule) && (
329
+ <td className="p-4 text-center whitespace-nowrap">
330
+ <div className="inline-flex rounded-lg shadow-sm bg-white border border-slate-100 p-1 gap-1">
331
+ <button
332
+ onClick={() => handleEdit(row)}
333
+ className="rounded-md p-1.5 text-indigo-600 hover:bg-indigo-50 transition-colors text-xs font-bold"
334
+ >
335
+ Modify
336
+ </button>
337
+ <div className="w-px bg-slate-100 h-5 my-auto" />
338
+ <button
339
+ onClick={() => handleDelete(row[meta.pk])}
340
+ className="rounded-md p-1.5 text-rose-600 hover:bg-rose-50 transition-colors text-xs font-bold"
341
+ >
342
+ Delete
343
+ </button>
344
+ </div>
345
+ </td>
346
+ )}
347
+ </tr>
348
+ );
349
+ })
350
+ )}
351
+ </tbody>
352
+ </table>
353
+ </div>
354
+ </div>
355
+
356
+ </div>
357
+ );
358
+ }
@@ -0,0 +1,103 @@
1
+ import React, { useState } from "react";
2
+ import axios from "axios";
3
+ import { useNavigate, Link } from "react-router-dom";
4
+ import { frontendConfig } from "../change";
5
+
6
+ // ✅ ADDED: Accept onLoginSuccess prop from App.jsx routing engine
7
+ export default function Login({ onLoginSuccess }) {
8
+ const [username, setUsername] = useState("");
9
+ const [password, setPassword] = useState("");
10
+ const [error, setError] = useState("");
11
+ const navigate = useNavigate();
12
+
13
+ const handleLogin = async (e) => {
14
+ e.preventDefault();
15
+ setError("");
16
+ try {
17
+ const res = await axios.post("http://localhost:5000/api/auth/login", { username, password });
18
+
19
+ if (res.data.success) {
20
+ // ✅ SECURE HOOKS: Establish critical parameters expected by the new route guard matrix
21
+ localStorage.setItem("isAuthenticated", "true");
22
+ localStorage.setItem("username", res.data.username);
23
+
24
+ // ✅ STATE SYNCHRONIZATION: Instantly triggers navbar generation before redirecting
25
+ if (onLoginSuccess) {
26
+ onLoginSuccess();
27
+ }
28
+
29
+ // Push the user through to their overview deck
30
+ navigate("/dashboard");
31
+ }
32
+ } catch (err) {
33
+ setError(err.response?.data?.error || "Connection failure to auth server.");
34
+ }
35
+ };
36
+
37
+ return (
38
+ <div className="min-h-[80vh] flex items-center justify-center p-4">
39
+ <div className="bg-white p-8 rounded-2xl shadow-sm border border-slate-100 max-w-md w-full border-t-4 border-indigo-600">
40
+
41
+ <h2 className="text-3xl font-black text-center text-slate-900 mb-2 tracking-tight">
42
+ {frontendConfig.appName || "SchoolFees Hub"}
43
+ </h2>
44
+
45
+ {/* Updated text contextual reference alignment */}
46
+ <p className="text-center text-sm text-slate-500 mb-6 font-medium">
47
+ Sign in to manage academic collection records
48
+ </p>
49
+
50
+ {error && (
51
+ <div className="bg-rose-50 text-rose-600 text-xs font-bold p-3 rounded-xl mb-4 border border-rose-100">
52
+ ⚠️ {error}
53
+ </div>
54
+ )}
55
+
56
+ <form onSubmit={handleLogin} className="space-y-4">
57
+ <div className="space-y-1">
58
+ <label className="block text-xs font-bold text-slate-700 uppercase tracking-wide">
59
+ Username
60
+ </label>
61
+ <input
62
+ type="text"
63
+ required
64
+ value={username}
65
+ onChange={(e) => setUsername(e.target.value)}
66
+ placeholder="Enter your system username..."
67
+ className="w-full border border-slate-200 p-2.5 rounded-xl focus:outline-none focus:border-indigo-500 text-slate-800 text-sm font-medium transition-colors"
68
+ />
69
+ </div>
70
+
71
+ <div className="space-y-1">
72
+ <label className="block text-xs font-bold text-slate-700 uppercase tracking-wide">
73
+ Password
74
+ </label>
75
+ <input
76
+ type="password"
77
+ required
78
+ value={password}
79
+ onChange={(e) => setPassword(e.target.value)}
80
+ placeholder="••••••••"
81
+ className="w-full border border-slate-200 p-2.5 rounded-xl focus:outline-none focus:border-indigo-500 text-slate-800 text-sm font-medium transition-colors"
82
+ />
83
+ </div>
84
+
85
+ <button
86
+ type="submit"
87
+ className="w-full bg-slate-950 text-white py-3 rounded-xl font-bold hover:bg-indigo-600 transition-all text-sm mt-2 shadow-sm"
88
+ >
89
+ Authenticate Profile
90
+ </button>
91
+ </form>
92
+
93
+ <div className="text-center mt-6 text-xs text-slate-400 font-bold uppercase tracking-wider border-t border-slate-100 pt-4">
94
+ New operator terminal?{" "}
95
+ <Link to="/register" className="text-indigo-600 hover:text-indigo-700 font-black tracking-normal normal-case ml-1">
96
+ Create account profile →
97
+ </Link>
98
+ </div>
99
+
100
+ </div>
101
+ </div>
102
+ );
103
+ }