hola-server 1.0.11 → 3.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 (204) hide show
  1. package/README.md +382 -1
  2. package/dist/config/index.d.ts +46 -0
  3. package/dist/config/index.d.ts.map +1 -0
  4. package/dist/config/index.js +55 -0
  5. package/dist/config/index.js.map +1 -0
  6. package/dist/core/array.d.ts +27 -0
  7. package/dist/core/array.d.ts.map +1 -0
  8. package/dist/core/array.js +66 -0
  9. package/dist/core/array.js.map +1 -0
  10. package/dist/core/bash.d.ts +51 -0
  11. package/dist/core/bash.d.ts.map +1 -0
  12. package/dist/core/bash.js +161 -0
  13. package/dist/core/bash.js.map +1 -0
  14. package/dist/core/chart.d.ts +11 -0
  15. package/dist/core/chart.d.ts.map +1 -0
  16. package/dist/core/chart.js +35 -0
  17. package/dist/core/chart.js.map +1 -0
  18. package/dist/core/date.d.ts +11 -0
  19. package/dist/core/date.d.ts.map +1 -0
  20. package/dist/core/date.js +18 -0
  21. package/dist/core/date.js.map +1 -0
  22. package/dist/core/encrypt.d.ts +18 -0
  23. package/dist/core/encrypt.d.ts.map +1 -0
  24. package/dist/core/encrypt.js +50 -0
  25. package/dist/core/encrypt.js.map +1 -0
  26. package/dist/core/file.d.ts +22 -0
  27. package/dist/core/file.d.ts.map +1 -0
  28. package/dist/core/file.js +21 -0
  29. package/dist/core/file.js.map +1 -0
  30. package/dist/core/lhs.d.ts +17 -0
  31. package/dist/core/lhs.d.ts.map +1 -0
  32. package/dist/core/lhs.js +30 -0
  33. package/dist/core/lhs.js.map +1 -0
  34. package/dist/core/meta.d.ts +200 -0
  35. package/dist/core/meta.d.ts.map +1 -0
  36. package/dist/core/meta.js +336 -0
  37. package/dist/core/meta.js.map +1 -0
  38. package/dist/core/number.d.ts +37 -0
  39. package/dist/core/number.d.ts.map +1 -0
  40. package/dist/core/number.js +99 -0
  41. package/dist/core/number.js.map +1 -0
  42. package/dist/core/obj.d.ts +9 -0
  43. package/dist/core/obj.d.ts.map +1 -0
  44. package/dist/core/obj.js +15 -0
  45. package/dist/core/obj.js.map +1 -0
  46. package/dist/core/random.d.ts +7 -0
  47. package/dist/core/random.d.ts.map +1 -0
  48. package/dist/core/random.js +7 -0
  49. package/dist/core/random.js.map +1 -0
  50. package/dist/core/role.d.ts +42 -0
  51. package/dist/core/role.d.ts.map +1 -0
  52. package/dist/core/role.js +81 -0
  53. package/dist/core/role.js.map +1 -0
  54. package/dist/core/thread.d.ts +7 -0
  55. package/dist/core/thread.d.ts.map +1 -0
  56. package/dist/core/thread.js +7 -0
  57. package/dist/core/thread.js.map +1 -0
  58. package/dist/core/type.d.ts +46 -0
  59. package/dist/core/type.d.ts.map +1 -0
  60. package/dist/core/type.js +281 -0
  61. package/dist/core/type.js.map +1 -0
  62. package/dist/core/url.d.ts +20 -0
  63. package/dist/core/url.d.ts.map +1 -0
  64. package/dist/core/url.js +24 -0
  65. package/dist/core/url.js.map +1 -0
  66. package/dist/core/validate.d.ts +11 -0
  67. package/dist/core/validate.d.ts.map +1 -0
  68. package/dist/core/validate.js +19 -0
  69. package/dist/core/validate.js.map +1 -0
  70. package/dist/db/db.d.ts +72 -0
  71. package/dist/db/db.d.ts.map +1 -0
  72. package/dist/db/db.js +225 -0
  73. package/dist/db/db.js.map +1 -0
  74. package/dist/db/entity.d.ts +77 -0
  75. package/dist/db/entity.d.ts.map +1 -0
  76. package/dist/db/entity.js +671 -0
  77. package/dist/db/entity.js.map +1 -0
  78. package/dist/db/gridfs.d.ts +29 -0
  79. package/dist/db/gridfs.d.ts.map +1 -0
  80. package/dist/db/gridfs.js +125 -0
  81. package/dist/db/gridfs.js.map +1 -0
  82. package/dist/db/index.d.ts +8 -0
  83. package/dist/db/index.d.ts.map +1 -0
  84. package/dist/db/index.js +8 -0
  85. package/dist/db/index.js.map +1 -0
  86. package/dist/errors/auth.d.ts +15 -0
  87. package/dist/errors/auth.d.ts.map +1 -0
  88. package/dist/errors/auth.js +21 -0
  89. package/dist/errors/auth.js.map +1 -0
  90. package/dist/errors/http.d.ts +15 -0
  91. package/dist/errors/http.d.ts.map +1 -0
  92. package/dist/errors/http.js +21 -0
  93. package/dist/errors/http.js.map +1 -0
  94. package/dist/errors/index.d.ts +18 -0
  95. package/dist/errors/index.d.ts.map +1 -0
  96. package/dist/errors/index.js +18 -0
  97. package/dist/errors/index.js.map +1 -0
  98. package/dist/errors/validation.d.ts +11 -0
  99. package/dist/errors/validation.d.ts.map +1 -0
  100. package/dist/errors/validation.js +15 -0
  101. package/dist/errors/validation.js.map +1 -0
  102. package/dist/http/code.d.ts +21 -0
  103. package/dist/http/code.d.ts.map +1 -0
  104. package/dist/http/code.js +27 -0
  105. package/dist/http/code.js.map +1 -0
  106. package/dist/index.d.ts +57 -0
  107. package/dist/index.d.ts.map +1 -0
  108. package/dist/index.js +61 -0
  109. package/dist/index.js.map +1 -0
  110. package/dist/meta/index.d.ts +9 -0
  111. package/dist/meta/index.d.ts.map +1 -0
  112. package/dist/meta/index.js +11 -0
  113. package/dist/meta/index.js.map +1 -0
  114. package/dist/meta/router.d.ts +26 -0
  115. package/dist/meta/router.d.ts.map +1 -0
  116. package/dist/meta/router.js +258 -0
  117. package/dist/meta/router.js.map +1 -0
  118. package/dist/meta/schema.d.ts +41 -0
  119. package/dist/meta/schema.d.ts.map +1 -0
  120. package/dist/meta/schema.js +69 -0
  121. package/dist/meta/schema.js.map +1 -0
  122. package/dist/plugins/auth.d.ts +248 -0
  123. package/dist/plugins/auth.d.ts.map +1 -0
  124. package/dist/plugins/auth.js +121 -0
  125. package/dist/plugins/auth.js.map +1 -0
  126. package/dist/plugins/body.d.ts +47 -0
  127. package/dist/plugins/body.d.ts.map +1 -0
  128. package/dist/plugins/body.js +36 -0
  129. package/dist/plugins/body.js.map +1 -0
  130. package/dist/plugins/cors.d.ts +62 -0
  131. package/dist/plugins/cors.d.ts.map +1 -0
  132. package/dist/plugins/cors.js +17 -0
  133. package/dist/plugins/cors.js.map +1 -0
  134. package/dist/plugins/error.d.ts +51 -0
  135. package/dist/plugins/error.d.ts.map +1 -0
  136. package/dist/plugins/error.js +51 -0
  137. package/dist/plugins/error.js.map +1 -0
  138. package/dist/plugins/index.d.ts +9 -0
  139. package/dist/plugins/index.d.ts.map +1 -0
  140. package/dist/plugins/index.js +9 -0
  141. package/dist/plugins/index.js.map +1 -0
  142. package/dist/setting.d.ts +66 -0
  143. package/dist/setting.d.ts.map +1 -0
  144. package/dist/setting.js +27 -0
  145. package/dist/setting.js.map +1 -0
  146. package/dist/tool/gen_i18n.d.ts +10 -0
  147. package/dist/tool/gen_i18n.d.ts.map +1 -0
  148. package/dist/tool/gen_i18n.js +51 -0
  149. package/dist/tool/gen_i18n.js.map +1 -0
  150. package/dist/tool/vector_store.d.ts +72 -0
  151. package/dist/tool/vector_store.d.ts.map +1 -0
  152. package/dist/tool/vector_store.js +203 -0
  153. package/dist/tool/vector_store.js.map +1 -0
  154. package/package.json +38 -23
  155. package/core/array.js +0 -187
  156. package/core/bash.js +0 -345
  157. package/core/chart.js +0 -36
  158. package/core/cron.js +0 -10
  159. package/core/date.js +0 -55
  160. package/core/encrypt.js +0 -16
  161. package/core/file.js +0 -38
  162. package/core/lhs.js +0 -27
  163. package/core/meta.js +0 -359
  164. package/core/msg.js +0 -11
  165. package/core/number.js +0 -179
  166. package/core/obj.js +0 -22
  167. package/core/random.js +0 -9
  168. package/core/role.js +0 -116
  169. package/core/thread.js +0 -3
  170. package/core/type.js +0 -329
  171. package/core/url.js +0 -22
  172. package/core/validate.js +0 -32
  173. package/db/db.js +0 -376
  174. package/db/entity.js +0 -1252
  175. package/db/gridfs.js +0 -221
  176. package/http/code.js +0 -18
  177. package/http/context.js +0 -17
  178. package/http/cors.js +0 -15
  179. package/http/error.js +0 -21
  180. package/http/express.js +0 -75
  181. package/http/params.js +0 -57
  182. package/http/router.js +0 -72
  183. package/http/session.js +0 -50
  184. package/index.js +0 -36
  185. package/router/clone.js +0 -73
  186. package/router/create.js +0 -59
  187. package/router/delete.js +0 -53
  188. package/router/read.js +0 -177
  189. package/router/update.js +0 -107
  190. package/setting.js +0 -51
  191. package/test/core/date.js +0 -37
  192. package/test/core/encrypt.js +0 -14
  193. package/test/core/meta.js +0 -594
  194. package/test/core/number.js +0 -17
  195. package/test/crud/router.js +0 -99
  196. package/test/db/db.js +0 -72
  197. package/test/entity/create.js +0 -442
  198. package/test/entity/delete.js +0 -480
  199. package/test/entity/read.js +0 -285
  200. package/test/entity/update.js +0 -252
  201. package/test/router/role.js +0 -15
  202. package/test/router/user.js +0 -17
  203. package/tool/gen_i18n.js +0 -30
  204. package/tool/test.json +0 -25
@@ -0,0 +1,248 @@
1
+ /**
2
+ * JWT authentication plugin for Elysia.
3
+ * @module plugins/auth
4
+ */
5
+ import { Elysia } from 'elysia';
6
+ export interface AuthConfig {
7
+ /** JWT secret key. Required. */
8
+ secret: string;
9
+ /** Access token expiry. Default: '15m' */
10
+ accessExpiry?: string;
11
+ /** Refresh token expiry. Default: '7d' */
12
+ refreshExpiry?: string;
13
+ /** URL patterns to exclude from auth. Supports regex. */
14
+ excludeUrls?: (string | RegExp)[];
15
+ }
16
+ export interface JwtPayload {
17
+ sub: string;
18
+ role?: string;
19
+ groups?: string[];
20
+ iat?: number;
21
+ exp?: number;
22
+ }
23
+ /**
24
+ * Create JWT authentication plugin.
25
+ * Provides access + refresh token flow with hybrid delivery (cookies + header).
26
+ * @param config Authentication configuration
27
+ */
28
+ export declare const holaAuth: (config: AuthConfig) => Elysia<"", {
29
+ decorator: {
30
+ accessJwt: {
31
+ sign(signValue: Omit<{
32
+ [x: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | {
33
+ [key: string]: string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined;
34
+ } | null | undefined)[] | {
35
+ [key: string]: string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
36
+ } | null | undefined)[] | {
37
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
38
+ } | null | undefined)[] | {
39
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
40
+ } | null | undefined)[] | {
41
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
42
+ } | null | undefined)[] | {
43
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
44
+ } | null | undefined)[] | {
45
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
46
+ } | null | undefined)[] | {
47
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
48
+ } | null | undefined)[] | {
49
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
50
+ } | null | undefined)[] | {
51
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
52
+ } | null | undefined)[] | {
53
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
54
+ } | null | undefined)[] | {
55
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
56
+ } | null | undefined;
57
+ }, "nbf" | "exp" | "iat"> & import("@elysiajs/jwt").JWTPayloadInput): Promise<string>;
58
+ verify(jwt?: string, options?: import("jose").JWTVerifyOptions): Promise<false | ({
59
+ [x: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | {
60
+ [key: string]: string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined;
61
+ } | null | undefined)[] | {
62
+ [key: string]: string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
63
+ } | null | undefined)[] | {
64
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
65
+ } | null | undefined)[] | {
66
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
67
+ } | null | undefined)[] | {
68
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
69
+ } | null | undefined)[] | {
70
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
71
+ } | null | undefined)[] | {
72
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
73
+ } | null | undefined)[] | {
74
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
75
+ } | null | undefined)[] | {
76
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
77
+ } | null | undefined)[] | {
78
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
79
+ } | null | undefined)[] | {
80
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
81
+ } | null | undefined)[] | {
82
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
83
+ } | null | undefined;
84
+ } & Omit<import("@elysiajs/jwt").JWTPayloadSpec, never>)>;
85
+ };
86
+ } & {
87
+ refreshJwt: {
88
+ sign(signValue: Omit<{
89
+ [x: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | {
90
+ [key: string]: string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined;
91
+ } | null | undefined)[] | {
92
+ [key: string]: string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
93
+ } | null | undefined)[] | {
94
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
95
+ } | null | undefined)[] | {
96
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
97
+ } | null | undefined)[] | {
98
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
99
+ } | null | undefined)[] | {
100
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
101
+ } | null | undefined)[] | {
102
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
103
+ } | null | undefined)[] | {
104
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
105
+ } | null | undefined)[] | {
106
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
107
+ } | null | undefined)[] | {
108
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
109
+ } | null | undefined)[] | {
110
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
111
+ } | null | undefined)[] | {
112
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
113
+ } | null | undefined;
114
+ }, "nbf" | "exp" | "iat"> & import("@elysiajs/jwt").JWTPayloadInput): Promise<string>;
115
+ verify(jwt?: string, options?: import("jose").JWTVerifyOptions): Promise<false | ({
116
+ [x: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | {
117
+ [key: string]: string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined;
118
+ } | null | undefined)[] | {
119
+ [key: string]: string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
120
+ } | null | undefined)[] | {
121
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
122
+ } | null | undefined)[] | {
123
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
124
+ } | null | undefined)[] | {
125
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
126
+ } | null | undefined)[] | {
127
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
128
+ } | null | undefined)[] | {
129
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
130
+ } | null | undefined)[] | {
131
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
132
+ } | null | undefined)[] | {
133
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
134
+ } | null | undefined)[] | {
135
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
136
+ } | null | undefined)[] | {
137
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
138
+ } | null | undefined)[] | {
139
+ [key: string]: string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | (string | number | boolean | /*elided*/ any | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined)[] | /*elided*/ any | null | undefined;
140
+ } | null | undefined;
141
+ } & Omit<import("@elysiajs/jwt").JWTPayloadSpec, never>)>;
142
+ };
143
+ };
144
+ store: {};
145
+ derive: {
146
+ readonly user: JwtPayload | null;
147
+ readonly getUser: () => JwtPayload | null;
148
+ };
149
+ resolve: {};
150
+ }, {
151
+ typebox: {};
152
+ error: {};
153
+ } & {
154
+ typebox: {};
155
+ error: {};
156
+ }, {
157
+ schema: {};
158
+ standaloneSchema: {};
159
+ macro: {};
160
+ macroFn: {};
161
+ parser: {};
162
+ response: {};
163
+ }, {}, {
164
+ derive: {};
165
+ resolve: {};
166
+ schema: {};
167
+ standaloneSchema: {};
168
+ response: {};
169
+ }, {
170
+ derive: {};
171
+ resolve: {};
172
+ schema: {};
173
+ standaloneSchema: {};
174
+ response: {};
175
+ } & {
176
+ derive: {};
177
+ resolve: {};
178
+ schema: {};
179
+ standaloneSchema: {};
180
+ response: {};
181
+ }>;
182
+ /**
183
+ * Create auth routes plugin for login/refresh/logout.
184
+ * Must be used after holaAuth plugin.
185
+ */
186
+ export declare const holaAuthRoutes: () => Elysia<"/auth", {
187
+ decorator: {};
188
+ store: {};
189
+ derive: {};
190
+ resolve: {};
191
+ }, {
192
+ typebox: {};
193
+ error: {};
194
+ }, {
195
+ schema: {};
196
+ standaloneSchema: {};
197
+ macro: {};
198
+ macroFn: {};
199
+ parser: {};
200
+ response: {};
201
+ }, {
202
+ auth: {
203
+ refresh: {
204
+ post: {
205
+ body: unknown;
206
+ params: {};
207
+ query: unknown;
208
+ headers: unknown;
209
+ response: {
210
+ 200: {
211
+ code: number;
212
+ access_token: any;
213
+ expires_in: number;
214
+ };
215
+ };
216
+ };
217
+ };
218
+ };
219
+ } & {
220
+ auth: {
221
+ logout: {
222
+ post: {
223
+ body: unknown;
224
+ params: {};
225
+ query: unknown;
226
+ headers: unknown;
227
+ response: {
228
+ 200: {
229
+ code: number;
230
+ };
231
+ };
232
+ };
233
+ };
234
+ };
235
+ }, {
236
+ derive: {};
237
+ resolve: {};
238
+ schema: {};
239
+ standaloneSchema: {};
240
+ response: {};
241
+ }, {
242
+ derive: {};
243
+ resolve: {};
244
+ schema: {};
245
+ standaloneSchema: {};
246
+ response: {};
247
+ }>;
248
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/plugins/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,MAAM,WAAW,UAAU;IACvB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,WAAW,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,UAAU;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAaD;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,QAAQ,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8CjC,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkDjB,CAAC"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * JWT authentication plugin for Elysia.
3
+ * @module plugins/auth
4
+ */
5
+ import { Elysia } from 'elysia';
6
+ import { jwt } from '@elysiajs/jwt';
7
+ import { AuthError, TokenExpiredError } from '../errors/index.js';
8
+ /** Check if URL should be excluded from auth. */
9
+ const is_excluded = (path, patterns) => {
10
+ if (!patterns?.length)
11
+ return false;
12
+ return patterns.some(pattern => {
13
+ if (typeof pattern === 'string') {
14
+ return new RegExp(pattern, 'i').test(path);
15
+ }
16
+ return pattern.test(path);
17
+ });
18
+ };
19
+ /**
20
+ * Create JWT authentication plugin.
21
+ * Provides access + refresh token flow with hybrid delivery (cookies + header).
22
+ * @param config Authentication configuration
23
+ */
24
+ export const holaAuth = (config) => new Elysia({ name: 'hola-auth' })
25
+ .use(jwt({
26
+ name: 'accessJwt',
27
+ secret: config.secret,
28
+ exp: config.accessExpiry ?? '15m'
29
+ }))
30
+ .use(jwt({
31
+ name: 'refreshJwt',
32
+ secret: config.secret,
33
+ exp: config.refreshExpiry ?? '7d'
34
+ }))
35
+ .derive({ as: 'global' }, async (ctx) => {
36
+ const { headers, cookie, accessJwt } = ctx;
37
+ // Hybrid: check Authorization header first, then cookie
38
+ const auth_header = headers.authorization;
39
+ const token = auth_header?.startsWith('Bearer ')
40
+ ? auth_header.slice(7)
41
+ : cookie?.access_token?.value;
42
+ let user = null;
43
+ if (token) {
44
+ try {
45
+ const payload = await accessJwt.verify(token);
46
+ if (payload) {
47
+ user = payload;
48
+ }
49
+ }
50
+ catch {
51
+ // Token invalid or expired
52
+ }
53
+ }
54
+ return {
55
+ user,
56
+ getUser: () => user
57
+ };
58
+ })
59
+ .onBeforeHandle({ as: 'global' }, (ctx) => {
60
+ const { user, path, set } = ctx;
61
+ // Skip auth for excluded URLs
62
+ if (is_excluded(path, config.excludeUrls))
63
+ return;
64
+ if (!user) {
65
+ set.status = 401;
66
+ throw new AuthError('authentication required');
67
+ }
68
+ });
69
+ /**
70
+ * Create auth routes plugin for login/refresh/logout.
71
+ * Must be used after holaAuth plugin.
72
+ */
73
+ export const holaAuthRoutes = () => new Elysia({ name: 'hola-auth-routes', prefix: '/auth' })
74
+ .post('/refresh', async (ctx) => {
75
+ const { body, cookie, refreshJwt, accessJwt, headers, set } = ctx;
76
+ const token = body?.refresh_token ?? cookie?.refresh_token?.value;
77
+ if (!token) {
78
+ set.status = 401;
79
+ throw new AuthError('refresh token required');
80
+ }
81
+ let payload = null;
82
+ try {
83
+ payload = await refreshJwt.verify(token);
84
+ }
85
+ catch {
86
+ throw new TokenExpiredError();
87
+ }
88
+ if (!payload) {
89
+ throw new TokenExpiredError();
90
+ }
91
+ const new_access = await accessJwt.sign({
92
+ sub: payload.sub,
93
+ role: payload.role,
94
+ groups: payload.groups
95
+ });
96
+ // Set cookie for browser clients
97
+ const is_browser = headers['user-agent']?.includes('Mozilla');
98
+ if (is_browser && cookie?.access_token) {
99
+ cookie.access_token.set({
100
+ value: new_access,
101
+ httpOnly: true,
102
+ secure: process.env.NODE_ENV === 'production',
103
+ sameSite: 'strict',
104
+ path: '/'
105
+ });
106
+ }
107
+ return {
108
+ code: 0,
109
+ access_token: new_access,
110
+ expires_in: 900 // 15 minutes default
111
+ };
112
+ })
113
+ .post('/logout', (ctx) => {
114
+ const { cookie } = ctx;
115
+ if (cookie?.access_token)
116
+ cookie.access_token.remove();
117
+ if (cookie?.refresh_token)
118
+ cookie.refresh_token.remove();
119
+ return { code: 0 };
120
+ });
121
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/plugins/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Body limit plugin for Elysia.
3
+ * @module plugins/body
4
+ */
5
+ import { Elysia } from 'elysia';
6
+ export interface BodyConfig {
7
+ /** Max request body size. e.g., '10mb', '1gb', or bytes as number. Default: '10mb' */
8
+ limit?: string | number;
9
+ }
10
+ /**
11
+ * Create body limit plugin.
12
+ * @param config Body configuration
13
+ */
14
+ export declare const holaBody: (config?: BodyConfig) => Elysia<"", {
15
+ decorator: {};
16
+ store: {};
17
+ derive: {};
18
+ resolve: {};
19
+ }, {
20
+ typebox: {};
21
+ error: {};
22
+ }, {
23
+ schema: {};
24
+ standaloneSchema: {};
25
+ macro: {};
26
+ macroFn: {};
27
+ parser: {};
28
+ response: {};
29
+ }, {}, {
30
+ derive: {};
31
+ resolve: {};
32
+ schema: {};
33
+ standaloneSchema: {};
34
+ response: {};
35
+ }, {
36
+ derive: {};
37
+ resolve: {};
38
+ schema: {};
39
+ standaloneSchema: {};
40
+ response: {
41
+ 200: {
42
+ code: string;
43
+ err: string;
44
+ };
45
+ };
46
+ }>;
47
+ //# sourceMappingURL=body.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../../src/plugins/body.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,WAAW,UAAU;IACvB,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B;AAgBD;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,SAAQ,UAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW/C,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Body limit plugin for Elysia.
3
+ * @module plugins/body
4
+ */
5
+ import { Elysia } from 'elysia';
6
+ /** Parse size string to bytes. */
7
+ const parse_size = (size) => {
8
+ if (typeof size === 'number')
9
+ return size;
10
+ const match = size.match(/^(\d+)(kb|mb|gb)?$/i);
11
+ if (!match)
12
+ return 10 * 1024 * 1024; // 10mb default
13
+ const [, num, unit] = match;
14
+ const multipliers = {
15
+ kb: 1024,
16
+ mb: 1024 * 1024,
17
+ gb: 1024 * 1024 * 1024
18
+ };
19
+ return parseInt(num) * (multipliers[unit?.toLowerCase() ?? 'b'] ?? 1);
20
+ };
21
+ /**
22
+ * Create body limit plugin.
23
+ * @param config Body configuration
24
+ */
25
+ export const holaBody = (config = {}) => {
26
+ const max_size = parse_size(config.limit ?? '10mb');
27
+ return new Elysia({ name: 'hola-body' })
28
+ .onBeforeHandle(({ request, set }) => {
29
+ const content_length = request.headers.get('content-length');
30
+ if (content_length && parseInt(content_length) > max_size) {
31
+ set.status = 413;
32
+ return { code: 'PAYLOAD_TOO_LARGE', err: 'request body too large' };
33
+ }
34
+ });
35
+ };
36
+ //# sourceMappingURL=body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"body.js","sourceRoot":"","sources":["../../src/plugins/body.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAOhC,kCAAkC;AAClC,MAAM,UAAU,GAAG,CAAC,IAAqB,EAAU,EAAE;IACjD,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,eAAe;IACpD,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;IAC5B,MAAM,WAAW,GAA2B;QACxC,EAAE,EAAE,IAAI;QACR,EAAE,EAAE,IAAI,GAAG,IAAI;QACf,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI;KACzB,CAAC;IACF,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,SAAqB,EAAE,EAAE,EAAE;IAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;IAEpD,OAAO,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;SACnC,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE;QACjC,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC7D,IAAI,cAAc,IAAI,QAAQ,CAAC,cAAc,CAAC,GAAG,QAAQ,EAAE,CAAC;YACxD,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;YACjB,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,wBAAwB,EAAE,CAAC;QACxE,CAAC;IACL,CAAC,CAAC,CAAC;AACX,CAAC,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * CORS plugin for Elysia.
3
+ * @module plugins/cors
4
+ */
5
+ import { Elysia } from 'elysia';
6
+ export interface CorsConfig {
7
+ /** Allowed origins. Use `true` for all origins. */
8
+ origin: string[] | true;
9
+ /** Allowed HTTP methods. Default: ['GET', 'POST', 'PUT', 'DELETE'] */
10
+ methods?: string[];
11
+ /** Allow credentials (cookies). Default: true */
12
+ credentials?: boolean;
13
+ }
14
+ /**
15
+ * Create CORS plugin with configuration.
16
+ * @param config CORS configuration
17
+ */
18
+ export declare const holaCors: (config: CorsConfig) => Elysia<"", {
19
+ decorator: {};
20
+ store: {};
21
+ derive: {};
22
+ resolve: {};
23
+ }, {
24
+ typebox: {};
25
+ error: {};
26
+ } & {
27
+ typebox: {};
28
+ error: {};
29
+ }, {
30
+ schema: {};
31
+ standaloneSchema: {};
32
+ macro: {};
33
+ macroFn: {};
34
+ parser: {};
35
+ response: {};
36
+ } & {
37
+ schema: {};
38
+ standaloneSchema: {};
39
+ macro: {};
40
+ macroFn: {};
41
+ parser: {};
42
+ response: {};
43
+ }, {}, {
44
+ derive: {};
45
+ resolve: {};
46
+ schema: {};
47
+ standaloneSchema: {};
48
+ response: {};
49
+ }, {
50
+ derive: {};
51
+ resolve: {};
52
+ schema: {};
53
+ standaloneSchema: {};
54
+ response: {};
55
+ } & {
56
+ derive: {};
57
+ resolve: {};
58
+ schema: {};
59
+ standaloneSchema: {};
60
+ response: {};
61
+ }>;
62
+ //# sourceMappingURL=cors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cors.d.ts","sourceRoot":"","sources":["../../src/plugins/cors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,MAAM,WAAW,UAAU;IACvB,mDAAmD;IACnD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,iDAAiD;IACjD,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,QAAQ,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMhC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * CORS plugin for Elysia.
3
+ * @module plugins/cors
4
+ */
5
+ import { Elysia } from 'elysia';
6
+ import { cors } from '@elysiajs/cors';
7
+ /**
8
+ * Create CORS plugin with configuration.
9
+ * @param config CORS configuration
10
+ */
11
+ export const holaCors = (config) => new Elysia({ name: 'hola-cors' })
12
+ .use(cors({
13
+ origin: config.origin,
14
+ methods: config.methods ?? ['GET', 'POST', 'PUT', 'DELETE'],
15
+ credentials: config.credentials ?? true
16
+ }));
17
+ //# sourceMappingURL=cors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../src/plugins/cors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAWtC;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAkB,EAAE,EAAE,CAC3C,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;KAC5B,GAAG,CAAC,IAAI,CAAC;IACN,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;IAC3D,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI;CAC1C,CAAC,CAAC,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Error handling plugin for Elysia.
3
+ * @module plugins/error
4
+ */
5
+ import { Elysia } from 'elysia';
6
+ import { AuthError, TokenExpiredError, ValidationError, NotFoundError, NoRightsError } from '../errors/index.js';
7
+ /**
8
+ * Create error handling plugin.
9
+ * Maps custom error classes to HTTP status codes and { code, err } response format.
10
+ */
11
+ export declare const holaError: () => Elysia<"", {
12
+ decorator: {};
13
+ store: {};
14
+ derive: {};
15
+ resolve: {};
16
+ }, {
17
+ typebox: {};
18
+ error: {
19
+ readonly AUTH: AuthError;
20
+ readonly TOKEN_EXPIRED: TokenExpiredError;
21
+ readonly VALIDATION: ValidationError;
22
+ readonly NOT_FOUND: NotFoundError;
23
+ readonly NO_RIGHTS: NoRightsError;
24
+ };
25
+ }, {
26
+ schema: {};
27
+ standaloneSchema: {};
28
+ macro: {};
29
+ macroFn: {};
30
+ parser: {};
31
+ response: {};
32
+ }, {}, {
33
+ derive: {};
34
+ resolve: {};
35
+ schema: {};
36
+ standaloneSchema: {};
37
+ response: {};
38
+ }, {
39
+ derive: {};
40
+ resolve: {};
41
+ schema: {};
42
+ standaloneSchema: {};
43
+ response: {
44
+ 200: {
45
+ code: string | number;
46
+ err: string;
47
+ fields?: string[];
48
+ };
49
+ };
50
+ }>;
51
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/plugins/error.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOjH;;;GAGG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAmCc,MAAM,GAAG,MAAM;iBAAO,MAAM;qBAAW,MAAM,EAAE;;;EAWzE,CAAC"}