@opengis/fcore 0.0.1-beta.1 → 0.0.1-beta.10

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 (243) hide show
  1. package/dist/config.d.ts +2 -10
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +1 -1
  4. package/dist/context.js +1 -1
  5. package/dist/errors.js +1 -1
  6. package/dist/fastify.d.ts +5 -5
  7. package/dist/fastify.d.ts.map +1 -1
  8. package/dist/fastify.js +1 -1
  9. package/dist/fcore.js +1 -1
  10. package/dist/index.d.ts +1 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +1 -1
  13. package/dist/migrations/cli.js +1 -1
  14. package/dist/migrations/runner.js +1 -1
  15. package/dist/modules/auth/adduser-cli.d.ts +3 -0
  16. package/dist/modules/auth/adduser-cli.d.ts.map +1 -0
  17. package/dist/modules/auth/adduser-cli.js +2 -0
  18. package/dist/modules/auth/passwd-cli.d.ts +3 -0
  19. package/dist/modules/auth/passwd-cli.d.ts.map +1 -0
  20. package/dist/modules/auth/passwd-cli.js +2 -0
  21. package/dist/modules/auth/permission-cli.d.ts +3 -0
  22. package/dist/modules/auth/permission-cli.d.ts.map +1 -0
  23. package/dist/modules/auth/permission-cli.js +2 -0
  24. package/dist/modules/auth/route.d.ts.map +1 -1
  25. package/dist/modules/auth/route.js +1 -1
  26. package/dist/modules/auth/schema.d.ts +10 -1
  27. package/dist/modules/auth/schema.d.ts.map +1 -1
  28. package/dist/modules/auth/schema.js +1 -1
  29. package/dist/modules/auth/services/change-password.d.ts +9 -0
  30. package/dist/modules/auth/services/change-password.d.ts.map +1 -0
  31. package/dist/modules/auth/services/change-password.js +1 -0
  32. package/dist/modules/auth/services/get-current-user.d.ts +1 -0
  33. package/dist/modules/auth/services/get-current-user.d.ts.map +1 -1
  34. package/dist/modules/auth/services/get-current-user.js +1 -1
  35. package/dist/modules/auth/services/registration.d.ts +14 -0
  36. package/dist/modules/auth/services/registration.d.ts.map +1 -0
  37. package/dist/modules/auth/services/registration.js +1 -0
  38. package/dist/modules/auth/services/verify-two-factor.js +1 -1
  39. package/dist/modules/file/mime.d.ts +3 -0
  40. package/dist/modules/file/mime.d.ts.map +1 -0
  41. package/dist/modules/file/mime.js +1 -0
  42. package/dist/modules/file/route.d.ts.map +1 -1
  43. package/dist/modules/file/route.js +1 -1
  44. package/dist/modules/file/schema.d.ts +3 -0
  45. package/dist/modules/file/schema.d.ts.map +1 -1
  46. package/dist/modules/file/schema.js +1 -1
  47. package/dist/modules/file/services/get-file.js +1 -1
  48. package/dist/modules/file/services/resize-file.d.ts.map +1 -1
  49. package/dist/modules/file/services/resize-file.js +1 -1
  50. package/dist/modules/file/services/upload-file.d.ts +4 -6
  51. package/dist/modules/file/services/upload-file.d.ts.map +1 -1
  52. package/dist/modules/file/services/upload-file.js +1 -1
  53. package/dist/modules/resource/route.d.ts +0 -3
  54. package/dist/modules/resource/route.d.ts.map +1 -1
  55. package/dist/modules/resource/route.js +1 -1
  56. package/dist/modules/resource/schema.d.ts +3 -0
  57. package/dist/modules/resource/schema.d.ts.map +1 -1
  58. package/dist/modules/resource/schema.js +1 -1
  59. package/dist/modules/resource/services/add-note.js +1 -1
  60. package/dist/modules/resource/services/add-resource-file.js +1 -1
  61. package/dist/modules/resource/services/create-resource-relation.d.ts +8 -2
  62. package/dist/modules/resource/services/create-resource-relation.d.ts.map +1 -1
  63. package/dist/modules/resource/services/create-resource-relation.js +1 -1
  64. package/dist/modules/resource/services/create-resource.js +1 -1
  65. package/dist/modules/resource/services/delete-resource-relation.d.ts +8 -1
  66. package/dist/modules/resource/services/delete-resource-relation.d.ts.map +1 -1
  67. package/dist/modules/resource/services/delete-resource-relation.js +1 -1
  68. package/dist/modules/resource/services/delete-resource.js +1 -1
  69. package/dist/modules/resource/services/export-resource.d.ts.map +1 -1
  70. package/dist/modules/resource/services/export-resource.js +1 -1
  71. package/dist/modules/resource/services/get-resource.d.ts.map +1 -1
  72. package/dist/modules/resource/services/get-resource.js +1 -1
  73. package/dist/modules/resource/services/list-resource-relation.d.ts +9 -2
  74. package/dist/modules/resource/services/list-resource-relation.d.ts.map +1 -1
  75. package/dist/modules/resource/services/list-resource-relation.js +1 -1
  76. package/dist/modules/resource/services/list-resources.d.ts.map +1 -1
  77. package/dist/modules/resource/services/list-resources.js +1 -1
  78. package/dist/modules/resource/services/search-resource.d.ts.map +1 -1
  79. package/dist/modules/resource/services/search-resource.js +1 -1
  80. package/dist/modules/resource/services/suggest-resource.d.ts +10 -4
  81. package/dist/modules/resource/services/suggest-resource.d.ts.map +1 -1
  82. package/dist/modules/resource/services/suggest-resource.js +1 -1
  83. package/dist/modules/resource/services/update-resource-relation.d.ts +10 -0
  84. package/dist/modules/resource/services/update-resource-relation.d.ts.map +1 -0
  85. package/dist/modules/resource/services/update-resource-relation.js +1 -0
  86. package/dist/modules/resource/services/update-resource.js +1 -1
  87. package/dist/modules/resource/services/upload-resource-file.js +1 -1
  88. package/dist/modules/system/route.d.ts +2 -1
  89. package/dist/modules/system/route.d.ts.map +1 -1
  90. package/dist/modules/system/route.js +1 -1
  91. package/dist/modules/system/schema.d.ts +22 -1
  92. package/dist/modules/system/schema.d.ts.map +1 -1
  93. package/dist/modules/system/schema.js +1 -1
  94. package/dist/modules/system/services/check-system.d.ts.map +1 -1
  95. package/dist/modules/system/services/check-system.js +1 -1
  96. package/dist/modules/system/services/get-access.d.ts +14 -0
  97. package/dist/modules/system/services/get-access.d.ts.map +1 -0
  98. package/dist/modules/system/services/get-access.js +1 -0
  99. package/dist/modules/system/services/get-api-list.d.ts +4 -1
  100. package/dist/modules/system/services/get-api-list.d.ts.map +1 -1
  101. package/dist/modules/system/services/get-api-list.js +1 -1
  102. package/dist/modules/system/services/get-audit-log.d.ts.map +1 -1
  103. package/dist/modules/system/services/get-audit-log.js +1 -1
  104. package/dist/modules/system/services/get-dictionary.js +1 -1
  105. package/dist/modules/system/services/get-system-log.d.ts +9 -5
  106. package/dist/modules/system/services/get-system-log.d.ts.map +1 -1
  107. package/dist/modules/system/services/get-system-log.js +1 -1
  108. package/dist/modules/system/services/get-system-settings.d.ts.map +1 -1
  109. package/dist/modules/system/services/get-system-settings.js +1 -1
  110. package/dist/modules/system/services/list-dictionaries.js +1 -1
  111. package/dist/modules/system/services/set-access.d.ts +16 -0
  112. package/dist/modules/system/services/set-access.d.ts.map +1 -0
  113. package/dist/modules/system/services/set-access.js +1 -0
  114. package/dist/modules/system/services/update-dictionary.d.ts +13 -0
  115. package/dist/modules/system/services/update-dictionary.d.ts.map +1 -0
  116. package/dist/modules/system/services/update-dictionary.js +1 -0
  117. package/dist/modules/system/services/update-system-settings.d.ts.map +1 -1
  118. package/dist/modules/system/services/update-system-settings.js +1 -1
  119. package/dist/modules/utils/require-admin.js +1 -1
  120. package/dist/modules/utils/safe-user.js +1 -1
  121. package/dist/modules/utils/unsupported.js +1 -1
  122. package/dist/plugins/audit/audit.js +1 -1
  123. package/dist/plugins/audit/index.js +1 -1
  124. package/dist/plugins/audit/services/write-audit.js +1 -1
  125. package/dist/plugins/auth/get-user-permissions.d.ts +3 -0
  126. package/dist/plugins/auth/get-user-permissions.d.ts.map +1 -0
  127. package/dist/plugins/auth/get-user-permissions.js +1 -0
  128. package/dist/plugins/auth/index.d.ts +4 -0
  129. package/dist/plugins/auth/index.d.ts.map +1 -1
  130. package/dist/plugins/auth/index.js +1 -1
  131. package/dist/plugins/auth/verifyUser.d.ts +9 -0
  132. package/dist/plugins/auth/verifyUser.d.ts.map +1 -0
  133. package/dist/plugins/auth/verifyUser.js +1 -0
  134. package/dist/plugins/dictionary.d.ts +3 -0
  135. package/dist/plugins/dictionary.d.ts.map +1 -1
  136. package/dist/plugins/dictionary.js +1 -1
  137. package/dist/plugins/file.d.ts +3 -6
  138. package/dist/plugins/file.d.ts.map +1 -1
  139. package/dist/plugins/file.js +1 -1
  140. package/dist/plugins/index.d.ts +2 -0
  141. package/dist/plugins/index.d.ts.map +1 -1
  142. package/dist/plugins/index.js +1 -1
  143. package/dist/plugins/jwt.d.ts +4 -0
  144. package/dist/plugins/jwt.d.ts.map +1 -0
  145. package/dist/plugins/jwt.js +1 -0
  146. package/dist/plugins/logger/index.js +1 -1
  147. package/dist/plugins/logger/transport.d.ts +3 -0
  148. package/dist/plugins/logger/transport.d.ts.map +1 -0
  149. package/dist/plugins/logger/transport.js +1 -0
  150. package/dist/plugins/pg.d.ts +4 -2
  151. package/dist/plugins/pg.d.ts.map +1 -1
  152. package/dist/plugins/pg.js +1 -1
  153. package/dist/plugins/redis.js +1 -1
  154. package/dist/plugins/resource/index.js +1 -1
  155. package/dist/plugins/resource/resource.d.ts.map +1 -1
  156. package/dist/plugins/resource/resource.js +1 -1
  157. package/dist/plugins/resource/resource.registry.js +1 -1
  158. package/dist/plugins/resource/resource.types.d.ts +60 -6
  159. package/dist/plugins/resource/resource.types.d.ts.map +1 -1
  160. package/dist/plugins/resource/services/add-dictionary-lookup-data.d.ts +3 -0
  161. package/dist/plugins/resource/services/add-dictionary-lookup-data.d.ts.map +1 -0
  162. package/dist/plugins/resource/services/add-dictionary-lookup-data.js +1 -0
  163. package/dist/plugins/resource/services/add-file-token.d.ts +3 -0
  164. package/dist/plugins/resource/services/add-file-token.d.ts.map +1 -0
  165. package/dist/plugins/resource/services/add-file-token.js +1 -0
  166. package/dist/plugins/resource/services/add-table-lookup-data.d.ts +4 -0
  167. package/dist/plugins/resource/services/add-table-lookup-data.d.ts.map +1 -0
  168. package/dist/plugins/resource/services/add-table-lookup-data.js +1 -0
  169. package/dist/plugins/resource/services/create-relation.d.ts +16 -0
  170. package/dist/plugins/resource/services/create-relation.d.ts.map +1 -0
  171. package/dist/plugins/resource/services/create-relation.js +1 -0
  172. package/dist/plugins/resource/services/create.d.ts +5 -2
  173. package/dist/plugins/resource/services/create.d.ts.map +1 -1
  174. package/dist/plugins/resource/services/create.js +1 -1
  175. package/dist/plugins/resource/services/delete-relation.d.ts +18 -0
  176. package/dist/plugins/resource/services/delete-relation.d.ts.map +1 -0
  177. package/dist/plugins/resource/services/delete-relation.js +1 -0
  178. package/dist/plugins/resource/services/delete.d.ts +5 -2
  179. package/dist/plugins/resource/services/delete.d.ts.map +1 -1
  180. package/dist/plugins/resource/services/delete.js +1 -1
  181. package/dist/plugins/resource/services/find-one.d.ts +3 -2
  182. package/dist/plugins/resource/services/find-one.d.ts.map +1 -1
  183. package/dist/plugins/resource/services/find-one.js +1 -1
  184. package/dist/plugins/resource/services/find-relation.d.ts +13 -0
  185. package/dist/plugins/resource/services/find-relation.d.ts.map +1 -0
  186. package/dist/plugins/resource/services/find-relation.js +1 -0
  187. package/dist/plugins/resource/services/find.d.ts.map +1 -1
  188. package/dist/plugins/resource/services/find.js +1 -1
  189. package/dist/plugins/resource/services/update-relation.d.ts +14 -0
  190. package/dist/plugins/resource/services/update-relation.d.ts.map +1 -0
  191. package/dist/plugins/resource/services/update-relation.js +1 -0
  192. package/dist/plugins/resource/services/update.d.ts +5 -2
  193. package/dist/plugins/resource/services/update.d.ts.map +1 -1
  194. package/dist/plugins/resource/services/update.js +1 -1
  195. package/dist/plugins/resource/utils/auto-index.d.ts +4 -0
  196. package/dist/plugins/resource/utils/auto-index.d.ts.map +1 -0
  197. package/dist/plugins/resource/utils/auto-index.js +1 -0
  198. package/dist/plugins/resource/utils/fields.d.ts +8 -1
  199. package/dist/plugins/resource/utils/fields.d.ts.map +1 -1
  200. package/dist/plugins/resource/utils/fields.js +1 -1
  201. package/dist/plugins/resource/utils/filters.d.ts +3 -2
  202. package/dist/plugins/resource/utils/filters.d.ts.map +1 -1
  203. package/dist/plugins/resource/utils/filters.js +1 -1
  204. package/dist/plugins/resource/utils/permissions.d.ts.map +1 -1
  205. package/dist/plugins/resource/utils/permissions.js +1 -1
  206. package/dist/plugins/resource/utils/sort.d.ts.map +1 -1
  207. package/dist/plugins/resource/utils/sort.js +1 -1
  208. package/dist/plugins/resource/utils/sql.js +1 -1
  209. package/dist/shared/getIP.js +1 -1
  210. package/dist/type.d.ts +37 -0
  211. package/dist/type.d.ts.map +1 -0
  212. package/dist/type.js +1 -0
  213. package/migrations/20260903120000_core_schema.sql +22 -19
  214. package/migrations/20260905120000_add_user_foreign_keys.sql +43 -0
  215. package/migrations/20260907090000_core_schema.sql +32 -0
  216. package/package.json +13 -8
  217. package/dist/modules/auth/index.d.ts +0 -9
  218. package/dist/modules/auth/index.d.ts.map +0 -1
  219. package/dist/modules/auth/index.js +0 -1
  220. package/dist/modules/auth/services/login.d.ts +0 -10
  221. package/dist/modules/auth/services/login.d.ts.map +0 -1
  222. package/dist/modules/auth/services/login.js +0 -1
  223. package/dist/modules/auth/services/logout.d.ts +0 -9
  224. package/dist/modules/auth/services/logout.d.ts.map +0 -1
  225. package/dist/modules/auth/services/logout.js +0 -1
  226. package/dist/modules/auth/services/verifyPassword.d.ts +0 -11
  227. package/dist/modules/auth/services/verifyPassword.d.ts.map +0 -1
  228. package/dist/modules/auth/services/verifyPassword.js +0 -1
  229. package/dist/modules/file/index.d.ts +0 -8
  230. package/dist/modules/file/index.d.ts.map +0 -1
  231. package/dist/modules/file/index.js +0 -1
  232. package/dist/modules/resource/index.d.ts +0 -20
  233. package/dist/modules/resource/index.d.ts.map +0 -1
  234. package/dist/modules/resource/index.js +0 -1
  235. package/dist/modules/resource/services/list-children.d.ts +0 -6
  236. package/dist/modules/resource/services/list-children.d.ts.map +0 -1
  237. package/dist/modules/resource/services/list-children.js +0 -1
  238. package/dist/modules/system/index.d.ts +0 -13
  239. package/dist/modules/system/index.d.ts.map +0 -1
  240. package/dist/modules/system/index.js +0 -1
  241. package/dist/modules/utils/get-user-permissions.d.ts +0 -3
  242. package/dist/modules/utils/get-user-permissions.d.ts.map +0 -1
  243. package/dist/modules/utils/get-user-permissions.js +0 -1
package/dist/config.d.ts CHANGED
@@ -55,16 +55,8 @@ export interface FCoreConfig {
55
55
  sessionTimeout: number;
56
56
  cookieName: string;
57
57
  jwtSecret: string;
58
- link?: {
59
- base: {
60
- login: string;
61
- afterLogin?: string;
62
- };
63
- twoFactor?: {
64
- login: string;
65
- afterLogin?: string;
66
- };
67
- };
58
+ redirect?: string;
59
+ twoFactorRedirect?: string;
68
60
  cookieOptions: {
69
61
  domain?: string;
70
62
  path?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,KAAK,qBAAqB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAIvD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE;QACT,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;QACZ,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE;QACN,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;IACF,EAAE,EAAE;QACF,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,CAAC;IACF,EAAE,EAAE;QACF,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,IAAI,EAAE;QACJ,IAAI,EAAE,IAAI,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE;YACL,IAAI,EAAE;gBACJ,KAAK,EAAE,MAAM,CAAC;gBACd,UAAU,CAAC,EAAE,MAAM,CAAC;aACrB,CAAC;YACF,SAAS,CAAC,EAAE;gBACV,KAAK,EAAE,MAAM,CAAC;gBACd,UAAU,CAAC,EAAE,MAAM,CAAC;aACrB,CAAC;SACH,CAAC;QACF,aAAa,EAAE;YACb,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,QAAQ,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAC;SAC5C,CAAC;KACH,CAAC;CACH;AAED,iBAAS,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAItC;AAED,wBAAgB,UAAU,CAAC,SAAS,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,WAAW,CAsG5E;AACD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,KAAK,qBAAqB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAIvD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE;QACT,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;QACZ,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE;QACN,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;IACF,EAAE,EAAE;QACF,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,CAAC;IACF,EAAE,EAAE;QACF,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,IAAI,EAAE;QACJ,IAAI,EAAE,IAAI,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,aAAa,EAAE;YACb,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,MAAM,CAAC,EAAE,OAAO,CAAC;YACjB,QAAQ,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAC;SAC5C,CAAC;KACH,CAAC;CACH;AAED,iBAAS,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAItC;AAED,wBAAgB,UAAU,CAAC,SAAS,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,WAAW,CAgG5E;AACD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,CAAC"}
package/dist/config.js CHANGED
@@ -1 +1 @@
1
- (function(D,L){const pc=p,s=D();while(!![]){try{const X=parseInt(pc(0x1d4))/0x1*(-parseInt(pc(0x1df))/0x2)+parseInt(pc(0x1d5))/0x3+-parseInt(pc(0x1bd))/0x4+parseInt(pc(0x1b5))/0x5*(-parseInt(pc(0x1ad))/0x6)+-parseInt(pc(0x1aa))/0x7*(parseInt(pc(0x1ca))/0x8)+-parseInt(pc(0x1ae))/0x9*(-parseInt(pc(0x1c4))/0xa)+-parseInt(pc(0x1b7))/0xb*(-parseInt(pc(0x1c2))/0xc);if(X===L)break;else s['push'](s['shift']());}catch(M){s['push'](s['shift']());}}}(m,0x8d03c));function p(D,L){D=D-0x1a9;const s=m();let X=s[D];return X;}function m(){const pV=['HPtrG','XlCGa','path','localhost','1465kxPtMR','Mqeud','1075019FenPyn','strict','jLojK','ezvij','redis','xvSMb','3945372RoeIEu','us-east-1','XdkxQ','BDqKd','none','156USObRG','info','570JbsEnI','true','parse','cwd','Missing\x20environment\x20variable:\x20','EYIMx','200lgWeTM','DmIRh','/2factor','lrPxb','MhsvH','./storage','0ua4b1Tz21m47z13U3EO0uN9e0WE7hqRFbcZ72cbdWqZBzemf9cAU865xan1s81TdNpUKKfF','KQjae','ngxAT','wqBQg','69LojUHq','2871711noydrs','development','session_user_auth','map','includes','secure','/log','pQyXc','password','LGPXG','7220dPexUa','cvnPP','UyDAk','oFeCJ','sameSite','gFxXd','WDduh','/login','httpOnly','split','jxPEt','auth','x5y30KBsEKCENT04tu6549Vxx3No1ztJ2q2K8r79S59420RaZ5','xVUDo','Ch7QR4e73Jg0wx0xOjm','141771jTvpbL','logger','lax','17454WobbyT','149049yGjbOV','AwVEN','false'];m=function(){return pV;};return m();}import'dotenv/config';const DEFAULT_LOG_RESPONSE_STATUS_CODES=[0x193,0x199,0x19d,0x19f,0x1ad];function required(D){const pH=p,L=process.env[D];if(!L)throw new Error(pH(0x1c8)+D);return L;}export function loadConfig(s={}){const pA=p,X={'oFeCJ':pA(0x1d6),'KQjae':function(r,i){return r===i;},'XlCGa':pA(0x1c5),'jLojK':function(r,i){return r(i);},'lrPxb':pA(0x1b0),'wqBQg':pA(0x1cf),'AwVEN':pA(0x1dd),'xvSMb':function(r,i){return r===i;},'pQyXc':pA(0x1b4),'HPtrG':function(r,i){return r(i);},'MhsvH':function(r,i){return r(i);},'LGPXG':pA(0x1be),'DmIRh':function(r,i){return r!==i;},'jxPEt':function(r,i){return r(i);},'BDqKd':pA(0x1a9),'ezvij':pA(0x1eb),'xVUDo':pA(0x1d7),'EYIMx':pA(0x1d0),'XdkxQ':pA(0x1e6),'gFxXd':pA(0x1cc),'Mqeud':function(r,i){return r(i);},'UyDAk':function(r,i){return r(i);},'ngxAT':pA(0x1b8),'WDduh':pA(0x1c1),'cvnPP':function(r,i){return r(i);}},M={};M[pA(0x1b3)]='/',M[pA(0x1e7)]=!![],M[pA(0x1da)]=![],M[pA(0x1e3)]=!![];const u={'env':process.env.NODE_ENV??X[pA(0x1e2)],'debug':X[pA(0x1d1)](process.env.DEBUG,X[pA(0x1b2)]),'port':X[pA(0x1b9)](Number,process.env.PORT??0xbb8),'maxFileSize':+(process.env.MAX_FILE_SIZE||0x200),'rateLimit':{'disabled':X[pA(0x1d1)](process.env.RATE_LIMIT,X[pA(0x1cd)]),'max':+(process.env.RATE_LIMIT_MAX||0x64),'timeWindow':+(process.env.RATE_LIMIT_TIME_WINDOW||0xea60)},'storagePath':process.env.STORAGE_PATH??X[pA(0x1d3)],'redactionList':(process.env.REDACTION_LIST||X[pA(0x1af)])[pA(0x1e8)](','),'logger':{'level':process.env.LOG_LEVEL??pA(0x1c3),'responses':X[pA(0x1bc)](process.env.LOG_RESPONSES,pA(0x1c5))?!![]:![],'responseCodes':process.env.LOG_RESPONSE_STATUS_CODES?process.env.LOG_RESPONSE_STATUS_CODES[pA(0x1e8)](',')[pA(0x1d8)](r=>r-0x0):DEFAULT_LOG_RESPONSE_STATUS_CODES,'directory':process.env.LOG_DIRECTORY||process[pA(0x1c7)]()+pA(0x1db)},'pg':{'host':process.env.PG_HOST??X[pA(0x1dc)],'port':X[pA(0x1b1)](Number,process.env.PG_PORT??0x1538),'database':process.env.PG_DATABASE??'','user':process.env.PG_USER??'','password':process.env.PG_PASSWORD??''},'redis':{'host':process.env.REDIS_HOST??'','port':Number(process.env.REDIS_PORT??0x18eb),'password':process.env.REDIS_PASSWORD,'lazyConnect':!![],'db':process.env.REDIS_DB?X[pA(0x1ce)](Number,process.env.REDIS_DB):undefined},'s3':{'endpoint':process.env.S3_ENDPOINT,'region':process.env.S3_REGION??X[pA(0x1de)],'bucket':process.env.S3_BUCKET??'','accessKey':process.env.S3_ACCESS_KEY,'secretKey':process.env.S3_SECRET_KEY,'folder':process.env.S3_FOLDER,'forcePathStyle':X[pA(0x1cb)](process.env.S3_FORCE_PATH_STYLE,X[pA(0x1cd)]),'tokenSecret':process.env.FILE_TOKEN_SECRET,'tokenTtl':X[pA(0x1e9)](Number,process.env.FILE_TOKEN_TTL??0xe10)},'auth':{'accessToken':process.env.AUTH_ACCESS_TOKEN||X[pA(0x1c0)],'user':process.env.AUTH_USER?JSON[pA(0x1c6)](process.env.AUTH_USER):undefined,'sessionTimeout':+(process.env.AUTH_SESSION_TIMEOUT||0x258),'secret':process.env.AUTH_SECRET??X[pA(0x1ba)],'cookieName':process.env.AUTH_COOKIE_NAME??X[pA(0x1ec)],'jwtSecret':process.env.AUTH_JWT_SECRET??X[pA(0x1c9)],'link':{'base':{'login':process.env.AUTH_BASE_LINK_LOGIN??X[pA(0x1bf)],'afterLogin':process.env.AUTH_BASE_LINK_LOGIN??'/'},'twoFactor':{'login':process.env.AUTH_TWOFACTOR_LINK_LOGIN??X[pA(0x1e4)],'afterLogin':process.env.AUTH_TWOFACTOR_LINK_LOGIN??'/'}},'cookieOptions':process.env.AUTH_COOKIE_OPTIONS_DOMAIN?{'domain':process.env.AUTH_COOKIE_OPTIONS_DOMAIN,'path':process.env.AUTH_COOKIE_OPTIONS_PATH||'/','httpOnly':X[pA(0x1b6)](Boolean,process.env.AUTH_COOKIE_OPTIONS_HTTP_ONLY||X[pA(0x1b2)]),'secure':X[pA(0x1e1)](Boolean,process.env.AUTH_COOKIE_OPTIONS_SECURE||X[pA(0x1b2)]),'sameSite':process.env.AUTH_COOKIE_OPTIONS_SAME_SITE&&[pA(0x1ac),X[pA(0x1d2)],X[pA(0x1e5)]][pA(0x1d9)](process.env.AUTH_COOKIE_OPTIONS_SAME_SITE)?process.env.AUTH_COOKIE_OPTIONS_SAME_SITE:X[pA(0x1e0)](Boolean,process.env.AUTH_COOKIE_OPTIONS_SAME_SITE||X[pA(0x1b2)])}:M}},o={...u,...s};return o[pA(0x1ab)]={...u[pA(0x1ab)],...s[pA(0x1ab)]},o['pg']={...u['pg'],...s['pg']},o[pA(0x1bb)]={...u[pA(0x1bb)],...s[pA(0x1bb)]},o['s3']={...u['s3'],...s['s3']},o[pA(0x1ea)]={...u[pA(0x1ea)],...s[pA(0x1ea)]},o;}export{required as requireEnv};
1
+ import'dotenv/config';const DEFAULT_LOG_RESPONSE_STATUS_CODES=[0x193,0x199,0x19d,0x19f,0x1ad];function required(d){const h=process.env[d];if(!h)throw new Error('Missing\x20environment\x20variable:\x20'+d);return h;}export function loadConfig(d={}){const Z=S,h={'env':process.env.NODE_ENV??'development','debug':process.env.DEBUG===Z(0xfb),'port':Number(process.env.PORT??0xbb8),'maxFileSize':+(process.env.MAX_FILE_SIZE||0x200),'rateLimit':{'disabled':process.env.RATE_LIMIT==='false','max':+(process.env.RATE_LIMIT_MAX||0x64),'timeWindow':+(process.env.RATE_LIMIT_TIME_WINDOW||0xea60)},'storagePath':process.env.STORAGE_PATH??Z(0xfc),'redactionList':(process.env.REDACTION_LIST||'password')['split'](','),'logger':{'level':process.env.LOG_LEVEL??Z(0xfd),'responses':process.env.LOG_RESPONSES===Z(0xfb)?!![]:![],'responseCodes':process.env.LOG_RESPONSE_STATUS_CODES?process.env.LOG_RESPONSE_STATUS_CODES['split'](',')[Z(0xfe)](p=>p-0x0):DEFAULT_LOG_RESPONSE_STATUS_CODES,'directory':process.env.LOG_DIRECTORY||process['cwd']()+Z(0xff)},'pg':{'host':process.env.PG_HOST??Z(0x100),'port':Number(process.env.PG_PORT??0x1538),'database':process.env.PG_DATABASE??'','user':process.env.PG_USER??'','password':process.env.PG_PASSWORD??''},'redis':{'host':process.env.REDIS_HOST??'','port':Number(process.env.REDIS_PORT??0x18eb),'password':process.env.REDIS_PASSWORD,'lazyConnect':!![],'db':process.env.REDIS_DB?Number(process.env.REDIS_DB):undefined},'s3':{'endpoint':process.env.S3_ENDPOINT,'region':process.env.S3_REGION??'us-east-1','bucket':process.env.S3_BUCKET??'','accessKey':process.env.S3_ACCESS_KEY,'secretKey':process.env.S3_SECRET_KEY,'folder':process.env.S3_FOLDER,'forcePathStyle':process.env.S3_FORCE_PATH_STYLE!=='false','tokenSecret':process.env.FILE_TOKEN_SECRET,'tokenTtl':Number(process.env.FILE_TOKEN_TTL??0xe10)},'auth':{'accessToken':process.env.AUTH_ACCESS_TOKEN||'Ch7QR4e73Jg0wx0xOjm','user':process.env.AUTH_USER?JSON['parse'](process.env.AUTH_USER):undefined,'sessionTimeout':+(process.env.AUTH_SESSION_TIMEOUT||0x258),'secret':process.env.AUTH_SECRET??'x5y30KBsEKCENT04tu6549Vxx3No1ztJ2q2K8r79S59420RaZ5','cookieName':process.env.AUTH_COOKIE_NAME??'session_user_auth','jwtSecret':process.env.AUTH_JWT_SECRET??Z(0x101),'redirect':process.env.AUTH_REDIRECT??'/','twoFactorRedirect':process.env.AUTH_TWOFACTOR_REDIRECT??'/','cookieOptions':process.env.AUTH_COOKIE_OPTIONS_DOMAIN?{'domain':process.env.AUTH_COOKIE_OPTIONS_DOMAIN,'path':process.env.AUTH_COOKIE_OPTIONS_PATH||'/','httpOnly':Boolean(process.env.AUTH_COOKIE_OPTIONS_HTTP_ONLY||'true'),'secure':Boolean(process.env.AUTH_COOKIE_OPTIONS_SECURE||'true'),'sameSite':process.env.AUTH_COOKIE_OPTIONS_SAME_SITE&&['lax',Z(0x102),'none']['includes'](process.env.AUTH_COOKIE_OPTIONS_SAME_SITE)?process.env.AUTH_COOKIE_OPTIONS_SAME_SITE:Boolean(process.env.AUTH_COOKIE_OPTIONS_SAME_SITE||'true')}:{'path':'/','httpOnly':!![],'secure':![],'sameSite':!![]}}};return{...h,...d,'logger':{...h['logger'],...d['logger']},'pg':{...h['pg'],...d['pg']},'redis':{...h['redis'],...d[Z(0x103)]},'s3':{...h['s3'],...d['s3']},'auth':{...h[Z(0x104)],...d['auth']}};}function S(d,h){d=d-0xfb;const p=v();let Z=p[d];return Z;}function v(){const D=['true','./storage','info','map','/log','localhost','0ua4b1Tz21m47z13U3EO0uN9e0WE7hqRFbcZ72cbdWqZBzemf9cAU865xan1s81TdNpUKKfF','strict','redis','auth'];v=function(){return D;};return v();}export{required as requireEnv};
package/dist/context.js CHANGED
@@ -1 +1 @@
1
- (function(D,L){const r=p,s=D();while(!![]){try{const X=-parseInt(r(0x150))/0x1+-parseInt(r(0x14c))/0x2+-parseInt(r(0x154))/0x3+-parseInt(r(0x153))/0x4*(-parseInt(r(0x14d))/0x5)+parseInt(r(0x147))/0x6*(-parseInt(r(0x14f))/0x7)+parseInt(r(0x148))/0x8*(-parseInt(r(0x14e))/0x9)+parseInt(r(0x156))/0xa;if(X===L)break;else s['push'](s['shift']());}catch(M){s['push'](s['shift']());}}}(m,0x6a798));let defaultContext;export function setContext(D){defaultContext=D;}function m(){const R=['271170MlhqCh','43456cavTRW','XbxDy','Application\x20context\x20is\x20not\x20initialized','logger','712634rdmfQt','8430cNqnuP','1116FaDzzH','119uWUTUb','251735qQRjgX','end','close','2044YjlKOF','1124397sUVcQe','redis','19993080CfssFQ','allSettled'];m=function(){return R;};return m();}export function getContext(){const i=p,L={};L[i(0x149)]=i(0x14a);const s=L;if(!defaultContext)throw new Error(s[i(0x149)]);return defaultContext;}function p(D,L){D=D-0x147;const s=m();let X=s[D];return X;}export function createContext(D){return{...D,async 'close'(){const q=p;await Promise[q(0x157)]([D[q(0x155)]?.[q(0x152)](),D['pg']?.[q(0x151)]()]),await D[q(0x14b)][q(0x152)]();}};}
1
+ let defaultContext;function S(d,h){d=d-0xee;const p=v();let Z=p[d];return Z;}export function setContext(d){defaultContext=d;}export function getContext(){if(!defaultContext)throw new Error('Application\x20context\x20is\x20not\x20initialized');return defaultContext;}function v(){const p=['allSettled','close','logger'];v=function(){return p;};return v();}export function createContext(d){return{...d,async 'close'(){const h=S;await Promise[h(0xee)]([d['redis']?.[h(0xef)](),d['pg']?.['end']()]),await d[h(0xf0)][h(0xef)]();}};}
package/dist/errors.js CHANGED
@@ -1 +1 @@
1
- var R=p;function m(){var t=['Authentication\x20required','84504RkMxtS','1804136hkbQms','3585WgAFCS','statusCode','427166zsmisL','125410qiVbqT','FORBIDDEN','Conflict','IeCqx','split','356uFyfvc','details','6VhfKhX','UaShV','NOT_FOUND','CONFLICT','551175StKnyt','UNAUTHORIZED','name','Operation\x20is\x20not\x20configured','306HSxIOT','3|4|0|1|2','134773NjhdpS','Not\x20found','OwOyy','code','BAD_REQUEST_ERROR','cuxCZ','VALIDATION_ERROR','ljjTb','Access\x20denied','UNSUPPORTED'];m=function(){return t;};return m();}(function(D,L){var q=p,s=D();while(!![]){try{var X=-parseInt(q(0x12e))/0x1+parseInt(q(0x13d))/0x2+parseInt(q(0x128))/0x3+-parseInt(q(0x122))/0x4*(-parseInt(q(0x13b))/0x5)+parseInt(q(0x124))/0x6*(-parseInt(q(0x139))/0x7)+parseInt(q(0x13a))/0x8+-parseInt(q(0x12c))/0x9*(parseInt(q(0x11d))/0xa);if(X===L)break;else s['push'](s['shift']());}catch(M){s['push'](s['shift']());}}}(m,0x1baf7));export class FCoreError extends Error{[R(0x131)];[R(0x13c)];[R(0x123)];constructor(L,s,X=0x1f4,M){var B=R,u={};u[B(0x120)]=B(0x12d);var o=u,r=o[B(0x120)][B(0x121)]('|'),i=0x0;while(!![]){switch(r[i++]){case'0':this[B(0x13c)]=X;continue;case'1':this[B(0x123)]=M;continue;case'2':this[B(0x12a)]=new.target.name;continue;case'3':super(s);continue;case'4':this[B(0x131)]=L;continue;}break;}}}export class BadRequestError extends FCoreError{constructor(L,s){var O=R,X={};X[O(0x125)]=O(0x132);var M=X;super(M[O(0x125)],L,0x190,s);}}export class UnauthorizedError extends FCoreError{constructor(L=R(0x138)){var h=R,s={};s[h(0x135)]=h(0x129);var X=s;super(X[h(0x135)],L,0x191);}}export class ForbiddenError extends FCoreError{constructor(D=R(0x136)){var g=R;super(g(0x11e),D,0x193);}}export class NotFoundError extends FCoreError{constructor(D=R(0x12f)){var J=R;super(J(0x126),D,0x194);}}export class ConflictError extends FCoreError{constructor(L=R(0x11f)){var S=R,s={};s[S(0x133)]=S(0x127);var X=s;super(X[S(0x133)],L,0x199);}}export class ValidationError extends FCoreError{constructor(L,s){var z=R,X={};X[z(0x130)]=z(0x134);var M=X;super(M[z(0x130)],L,0x1a6,s);}}function p(D,L){D=D-0x11d;var s=m();var X=s[D];return X;}export class UnsupportedError extends FCoreError{constructor(D=R(0x12b)){var l=R;super(l(0x137),D,0x1f5);}}
1
+ function S(d,h){d=d-0x8f;var p=v();var Z=p[d];return Z;}function v(){var X=['details','name','Authentication\x20required','CONFLICT'];v=function(){return X;};return v();}var D=S;export class FCoreError extends Error{['code'];['statusCode'];[D(0x8f)];constructor(d,h,p=0x1f4,Z){var u=D;super(h),this['code']=d,this['statusCode']=p,this['details']=Z,this[u(0x90)]=new.target.name;}}export class BadRequestError extends FCoreError{constructor(d,h){super('BAD_REQUEST_ERROR',d,0x190,h);}}export class UnauthorizedError extends FCoreError{constructor(d=D(0x91)){super('UNAUTHORIZED',d,0x191);}}export class ForbiddenError extends FCoreError{constructor(d='Access\x20denied'){super('FORBIDDEN',d,0x193);}}export class NotFoundError extends FCoreError{constructor(d='Not\x20found'){super('NOT_FOUND',d,0x194);}}export class ConflictError extends FCoreError{constructor(d='Conflict'){var n=D;super(n(0x92),d,0x199);}}export class ValidationError extends FCoreError{constructor(d,h){super('VALIDATION_ERROR',d,0x1a6,h);}}export class UnsupportedError extends FCoreError{constructor(d='Operation\x20is\x20not\x20configured'){super('UNSUPPORTED',d,0x1f5);}}
package/dist/fastify.d.ts CHANGED
@@ -1,8 +1,8 @@
1
+ /**
2
+ * Integrates FCore modules with Fastify without coupling infrastructure plugins to HTTP.
3
+ */
1
4
  import { type FastifyPluginAsync } from "fastify";
2
5
  import type { AppContext } from "./context.js";
3
- export interface FCoreFastifyOptions {
4
- ctx: AppContext;
5
- }
6
- declare const _default: FastifyPluginAsync<FCoreFastifyOptions>;
7
- export default _default;
6
+ export type FCoreApiModule = "auth" | "resource" | "file" | "system";
7
+ export default function fcoreFastify(ctx: AppContext, modules?: readonly FCoreApiModule[]): FastifyPluginAsync;
8
8
  //# sourceMappingURL=fastify.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fastify.d.ts","sourceRoot":"","sources":["../src/fastify.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAkB/C,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,UAAU,CAAC;CACjB"}
1
+ {"version":3,"file":"fastify.d.ts","sourceRoot":"","sources":["../src/fastify.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAY/C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAarE,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,GAAG,EAAE,UAAU,EACf,OAAO,CAAC,EAAE,SAAS,cAAc,EAAE,GAClC,kBAAkB,CAgIpB"}
package/dist/fastify.js CHANGED
@@ -1 +1 @@
1
- const j=p;(function(D,L){const T=p,s=D();while(!![]){try{const X=parseInt(T(0x1ed))/0x1+-parseInt(T(0x1d5))/0x2*(-parseInt(T(0x1d2))/0x3)+-parseInt(T(0x1be))/0x4*(-parseInt(T(0x1db))/0x5)+-parseInt(T(0x1e6))/0x6+parseInt(T(0x1ce))/0x7*(-parseInt(T(0x1c6))/0x8)+parseInt(T(0x1c5))/0x9+-parseInt(T(0x1e0))/0xa*(parseInt(T(0x1cb))/0xb);if(X===L)break;else s['push'](s['shift']());}catch(M){s['push'](s['shift']());}}}(m,0x2eaf3));import d from'fastify-plugin';import{FCoreError}from'./errors.js';import{authRoutes}from'./modules/auth/index.js';function m(){const e=['toString','433367FJgLRa','FST_ERR_VALIDATION','eXGFC','1743MCggDz','⚠️\x20rate\x20limit\x20is\x20disabled','mefDP','setErrorHandler','75QTWGEx','jsLke','max','2702VrpkSL','code','gkUwK','ctx','statusCode','logger','279865TbMfLH','application/x-www-form-urlencoded','timeWindow','rateLimit','iQkWo','110kXoQVw','maxFileSize','XYLAD','reduce','XXWAK','OuzCp','577170PiiasI','user','addContentTypeParser','preHandler','split','@fastify/rate-limit','NMMxR','170648GdmPsx','disabled','buffer','register','iMTFd','rrGVs','message','error','xkRSF','kcMMh','details','NyWDP','test','name','url','kcLzc','Internal\x20server\x20error','@opengis/fcore','INTERNAL_ERROR','yBvJs','guPMe','20WewSIL','raw','log','decorate','send','@fastify/multipart','true','2166534NvrKhu','136XvaNHf','tmIeD','nVzaJ','ZHHoe'];m=function(){return e;};return m();}import{fileRoutes}from'./modules/file/index.js';import{resourceRoutes}from'./modules/resource/index.js';function p(D,L){D=D-0x1ae;const s=m();let X=s[D];return X;}import{systemRoutes}from'./modules/system/index.js';import{createSessionStore}from'./plugins/auth/index.js';function urlencodedContentParser(D,L,s){const K=p,X={'eXGFC':function(u,o){return u(o);},'XXWAK':function(u,o,r){return u(o,r);}},M=X[K(0x1cd)](decodeURIComponent,L[K(0x1ca)]())[K(0x1ea)]('&')[K(0x1e3)]((u,o)=>{const C=K,[r,i]=o[C(0x1ea)]('='),q={...u};return q[r]=i,q;},{});X[K(0x1e4)](s,null,M);}const plugin=async(D,{ctx:L})=>{const k=p,s={'rrGVs':function(M,u){return M instanceof u;},'guPMe':function(M,u){return M===u;},'xkRSF':k(0x1cc),'ZHHoe':function(M,u){return M===u;},'iMTFd':k(0x1c4),'gkUwK':k(0x1b9),'kcMMh':k(0x1cf),'nVzaJ':k(0x1d8),'NyWDP':function(M,u){return M(u);},'tmIeD':k(0x1dc),'yBvJs':k(0x1ef),'jsLke':k(0x1e5),'XYLAD':k(0x1eb),'NMMxR':k(0x1e9),'iQkWo':k(0x1c3),'kcLzc':function(M,u){return M*u;},'mefDP':function(M,u){return M*u;}};D[k(0x1c1)](s[k(0x1c8)],L);const {config:X}=L;await createSessionStore(D,L),D[k(0x1d1)]((M,u,o)=>{const G=k;if(s[G(0x1ae)](M,FCoreError)||s[G(0x1bd)](M[G(0x1d6)],s[G(0x1b1)]))return o[G(0x1d6)](M[G(0x1d9)])[G(0x1c2)]({'error':M[G(0x1d6)],'message':M[G(0x1af)],'details':M[G(0x1b3)]});L[G(0x1da)][G(0x1b0)](M);(s[G(0x1c9)](process.env.trace,s[G(0x1f1)])||process.env.NODE_ENV===G(0x1b5)||process.env.VITEST)&&console[G(0x1b0)](M);const r={};return r[G(0x1b0)]=G(0x1bb),r[G(0x1af)]=s[G(0x1d7)],o[G(0x1d6)](0x1f4)[G(0x1c2)](r);}),await D[k(0x1f0)](s[k(0x1b4)](authRoutes,L)),await D[k(0x1f0)](resourceRoutes(L)),await D[k(0x1f0)](fileRoutes(L)),await D[k(0x1f0)](systemRoutes(L)),D[k(0x1e8)](s[k(0x1c7)],{'parseAs':s[k(0x1bc)]},urlencodedContentParser),!X[k(0x1de)]?.[k(0x1ee)]?s[k(0x1c9)](k(0x1e5),s[k(0x1d3)])?D[k(0x1f0)](import(s[k(0x1e2)]),{'max':X[k(0x1de)]?.[k(0x1d4)]||0x64,'timeWindow':X[k(0x1de)]?.[k(0x1dd)]||0xea60,'hook':s[k(0x1ec)],'global':!![],'keyGenerator':M=>(M[k(0x1e7)]?.['id']||M['ip'])+'-'+M[k(0x1bf)][k(0x1b7)][k(0x1ea)]('?')[0x0]}):L[k(0x1c0)](s[k(0x1b2)]):console[k(0x1c0)](s[k(0x1b2)]),D[k(0x1f0)](import(s[k(0x1df)]),{'limits':{'fileSize':s[k(0x1b8)](s[k(0x1d0)](X[k(0x1e1)],0x400),0x400)}});},Q={};Q[j(0x1b6)]=j(0x1ba);export default d(plugin,Q);
1
+ import{FCoreError}from'./errors.js';function v(){const M=['split','reduce','ctx','onRoute','isArray','package','set','addHook','routeOptions','raw','headers','slice','user','access','User\x20required','length','permissions','includes','Missing\x20permission:\x20','setErrorHandler','send','code','test','INTERNAL_ERROR','Internal\x20server\x20error','auth','addContentTypeParser','application/x-www-form-urlencoded','disabled','rateLimit','preHandler'];v=function(){return M;};return v();}import{authRoutes}from'./modules/auth/route.js';function S(d,h){d=d-0x14a;const p=v();let Z=p[d];return Z;}import{fileRoutes}from'./modules/file/route.js';import{resourceRoutes}from'./modules/resource/route.js';import{systemRoutes}from'./modules/system/route.js';import{createSessionStore}from'./plugins/auth/index.js';import{ForbiddenError}from'./errors.js';import{jwtVerifyToken}from'./plugins/jwt.js';function urlencodedContentParser(d,h,p){const F=S,Z=decodeURIComponent(h['toString']())[F(0x14a)]('&')[F(0x14b)]((D,u)=>{const [n,X]=u['split']('=');return{...D,[n]:X};},{});p(null,Z);}export default function fcoreFastify(d,h){return async p=>{const B=S;p['decorate'](B(0x14c),d);const {config:Z}=d,D=new Map();p['addHook'](B(0x14d),n=>{const K=B;if(n['url']['startsWith']('/api/')){const X=n['schema'],Y=Array[K(0x14e)](n['method'])?n['method']:[n['method']];for(const w of Y){if(w==='HEAD')continue;const y={'method':w,'endpoint':n['url'],'package':X?.[K(0x14f)]??'fcore','tags':X?.['tags']??[],'summary':X?.['summary']??'','description':X?.['description']??'','access':X?.['access']??'public','permissions':X?.['permissions']??[]};D[K(0x150)](w+'\x20'+n['url'],y);}}}),p[B(0x151)]('preHandler',async n=>{const g=B,X=D['get'](n['method']+'\x20'+n[g(0x152)]['url']),Y=n[g(0x153)][g(0x154)]?.['authorization'],w=Y?.['startsWith']('Bearer\x20')?Y[g(0x155)](0x7):null,y=n[g(0x156)]??(w?await jwtVerifyToken(w):null);!n['user']&&w&&process.env.AUTH_JWT_SECRET&&(n['user']=await jwtVerifyToken(w));if(!X?.[g(0x157)])throw new Error('Route\x20access\x20not\x20defined');if(X['access']==='public')return!![];if(!y)throw new ForbiddenError(g(0x158));if(X['access']==='user'&&!X['permissions']?.[g(0x159)])return!![];if(y['type']=='admin')return!![];if(X['access']==='admin')throw new ForbiddenError('Admin\x20access\x20required');for(const Q of X[g(0x15a)]){if(!y[g(0x15a)]?.[g(0x15b)](Q))throw new ForbiddenError(g(0x15c)+Q);}return!![];}),await createSessionStore(p,d),await p['register'](import('@fastify/multipart'),{'limits':{'fileSize':Z['maxFileSize']*0x400*0x400}}),p[B(0x15d)]((n,X,Y)=>{const s=B;if(n instanceof FCoreError||n['code']==='FST_ERR_VALIDATION')return Y['code'](n['statusCode'])[s(0x15e)]({'error':n[s(0x15f)],'message':n['message'],'details':n['details']});return d['logger']['error'](n),(Z['debug']||process.env.NODE_ENV===s(0x160)||process.env.VITEST)&&console['error'](n),Y['code'](0x1f4)['send']({'error':s(0x161),'message':s(0x162)});});const u=n=>!h||h['includes'](n);if(u(B(0x163)))await p['register'](authRoutes(d));if(u('resource'))await p['register'](resourceRoutes(d));if(u('file'))await p['register'](fileRoutes(d));if(u('system'))await p['register'](systemRoutes(d,D));p[B(0x164)](B(0x165),{'parseAs':'buffer'},urlencodedContentParser),!Z['rateLimit']?.[B(0x166)]?p['register'](import('@fastify/rate-limit'),{'max':Z[B(0x167)]?.['max']||0x64,'timeWindow':Z['rateLimit']?.['timeWindow']||0xea60,'hook':B(0x168),'global':!![],'keyGenerator':n=>(n[B(0x156)]?.['id']||n['ip'])+'-'+n[B(0x153)]['url']['split']('?')[0x0]}):console['log']('⚠️\x20rate\x20limit\x20is\x20disabled');};};
package/dist/fcore.js CHANGED
@@ -1 +1 @@
1
- function p(D,L){D=D-0x139;const s=m();let X=s[D];return X;}(function(D,L){const f=p,s=D();while(!![]){try{const X=-parseInt(f(0x13a))/0x1*(-parseInt(f(0x149))/0x2)+parseInt(f(0x15e))/0x3*(-parseInt(f(0x14b))/0x4)+parseInt(f(0x15c))/0x5*(-parseInt(f(0x13b))/0x6)+parseInt(f(0x14e))/0x7*(-parseInt(f(0x146))/0x8)+parseInt(f(0x15b))/0x9+-parseInt(f(0x159))/0xa*(parseInt(f(0x155))/0xb)+-parseInt(f(0x148))/0xc*(-parseInt(f(0x14f))/0xd);if(X===L)break;else s['push'](s['shift']());}catch(M){s['push'](s['shift']());}}}(m,0xa64e6));import{loadConfig}from'./config.js';function m(){const d=['forcePathStyle','15932BfmuCU','config','eOmUZ','25144zSPbHA','29580213KnFSUx','BiHeJ','logger','audit','folder','endpoint','291841XNIAaX','accessKey','region','length','460cyYsnQ','dictionary','2460483nKNOxz','553610sSIUeF','bucket','681OnaQwf','eRTXr','2785uzLOty','30gDQrPQ','resource','tokenTtl','register','secretKey','resources','dictionaries','redis','file','tokenSecret','ttllh','744XYBhDc','EcMdh','12wtuOWx','822jgPcaT'];m=function(){return d;};return m();}import{createContext,setContext}from'./context.js';import{createAudit,createDatabase,createDictionary,createFileS3,createLogger,createRedis,createResource}from'./plugins/index.js';export async function createFCore(u={}){const Q=p,o={'EcMdh':function(E,c){return E(c);},'eOmUZ':function(E,c){return E(c);},'ttllh':function(E){return E();},'BiHeJ':function(E,c){return E(c);},'eRTXr':function(E,c){return E(c);}},r=o[Q(0x147)](loadConfig,u[Q(0x14c)]),i=o[Q(0x14d)](createRedis,r[Q(0x142)]),q=o[Q(0x145)](createLogger),R=o[Q(0x147)](createDatabase,r['pg']),B={};B[Q(0x154)]=r['s3'][Q(0x154)],B[Q(0x157)]=r['s3'][Q(0x157)],B[Q(0x15d)]=r['s3'][Q(0x15d)],B[Q(0x156)]=r['s3'][Q(0x156)],B[Q(0x13f)]=r['s3'][Q(0x13f)],B[Q(0x153)]=r['s3'][Q(0x153)],B[Q(0x14a)]=r['s3'][Q(0x14a)],B[Q(0x144)]=r['s3'][Q(0x144)],B[Q(0x13d)]=r['s3'][Q(0x13d)];const O=o[Q(0x150)](createFileS3,B),h={};h['pg']=R,h[Q(0x151)]=q;const g=o[Q(0x139)](createAudit,h),J={};J['pg']=R,J[Q(0x141)]=u[Q(0x141)];const S=o[Q(0x14d)](createDictionary,J),z={};z['pg']=R,z[Q(0x151)]=q,z[Q(0x152)]=g;const l=o[Q(0x14d)](createResource,z);u[Q(0x140)]?.[Q(0x158)]&&l[Q(0x13e)](u[Q(0x140)]);const t={};t[Q(0x14c)]=r,t[Q(0x151)]=q,t[Q(0x142)]=i,t['pg']=R,t[Q(0x143)]=O,t[Q(0x13c)]=l,t[Q(0x152)]=g,t[Q(0x15a)]=S;const y=o[Q(0x139)](createContext,t);return o[Q(0x150)](setContext,y),y;}
1
+ import{loadConfig}from'./config.js';function S(d,h){d=d-0x1d9;const p=v();let Z=p[d];return Z;}import{createContext,setContext}from'./context.js';import{createAudit,createDatabase,createDictionary,createFileS3,createLogger,createRedis,createResource}from'./plugins/index.js';function v(){const Q=['config','redis','region','accessKey','folder','forcePathStyle'];v=function(){return Q;};return v();}export async function createFCore(d={}){const y=S,h=loadConfig(d[y(0x1d9)]),p=createRedis(h[y(0x1da)]),Z=createLogger(),D=createDatabase(h['pg']),u=createFileS3({'endpoint':h['s3']['endpoint'],'region':h['s3'][y(0x1db)],'bucket':h['s3']['bucket'],'accessKey':h['s3'][y(0x1dc)],'secretKey':h['s3']['secretKey'],'folder':h['s3'][y(0x1dd)],'forcePathStyle':h['s3'][y(0x1de)],'tokenSecret':h['s3']['tokenSecret'],'tokenTtl':h['s3']['tokenTtl']}),n=createAudit({'pg':D,'logger':Z}),X=createDictionary({'pg':D,'dictionaries':d['dictionaries']}),Y=createResource({'pg':D,'logger':Z,'audit':n,'dictionary':X,'file':u});d['resources']?.['length']&&Y['register'](d['resources']);const w=createContext({'config':h,'logger':Z,'redis':p,'pg':D,'file':u,'resource':Y,'audit':n,'dictionary':X});return setContext(w),w;}
package/dist/index.d.ts CHANGED
@@ -7,4 +7,5 @@ export * from './context.js';
7
7
  export * from './plugins/index.js';
8
8
  export * from './fcore.js';
9
9
  export * from './migrations/runner.js';
10
+ export * from './type.js';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- (function(D,L){var u=p,s=D();while(!![]){try{var X=parseInt(u(0x18f))/0x1+-parseInt(u(0x191))/0x2+parseInt(u(0x18d))/0x3*(-parseInt(u(0x196))/0x4)+-parseInt(u(0x193))/0x5*(parseInt(u(0x18e))/0x6)+parseInt(u(0x192))/0x7*(parseInt(u(0x190))/0x8)+-parseInt(u(0x18c))/0x9*(parseInt(u(0x194))/0xa)+parseInt(u(0x195))/0xb*(parseInt(u(0x18b))/0xc);if(X===L)break;else s['push'](s['shift']());}catch(M){s['push'](s['shift']());}}}(m,0x60e21));export*from'./errors.js';function p(D,L){D=D-0x18b;var s=m();var X=s[D];return X;}export*from'./config.js';export*from'./context.js';export*from'./plugins/index.js';export*from'./fcore.js';export*from'./migrations/runner.js';function m(){var o=['743896zawzKF','7CwMMuJ','102995uOMpZp','7601270ZYtAtm','11FmjrbA','4wTJpkG','22139484uioXFu','9ZZOiEW','1419291ENSueE','132OXNGGW','361008BpCArm','1993744oxFSqe'];m=function(){return o;};return m();}
1
+ export*from'./errors.js';export*from'./config.js';export*from'./context.js';export*from'./plugins/index.js';export*from'./fcore.js';export*from'./migrations/runner.js';export*from'./type.js';
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- const R=p;(function(D,L){const q=p,s=D();while(!![]){try{const X=-parseInt(q(0xa0))/0x1+parseInt(q(0xb3))/0x2*(-parseInt(q(0xb1))/0x3)+parseInt(q(0xad))/0x4*(parseInt(q(0xa9))/0x5)+-parseInt(q(0xac))/0x6+-parseInt(q(0xa6))/0x7+-parseInt(q(0xb0))/0x8*(-parseInt(q(0xa1))/0x9)+-parseInt(q(0xa2))/0xa*(-parseInt(q(0xa8))/0xb);if(X===L)break;else s['push'](s['shift']());}catch(M){s['push'](s['shift']());}}}(m,0xb3827));import{runMigrations}from'./runner.js';import{loadConfig}from'../config.js';function p(D,L){D=D-0x9f;const s=m();let X=s[D];return X;}function m(){const B=['status','6913698vunfkV','3237816lFgcyV','error','database','472aOctMV','191358NvrjnW','exitCode','6ggEgkA','OK\x20\x20','1426410HgEQmy','184347UbwpFB','1575820kzKmuV','Loaded\x20configuration:','SKIP','file','5031439VpJhGn','log','154SIYQBh','5PabQLY','run'];m=function(){return B;};return m();}try{const config=loadConfig();console[R(0xa7)](R(0xa3),config['pg']);const o={};o[R(0xaf)]=config['pg'];for(const r of await runMigrations(o))console[R(0xa7)]((r[R(0xab)]===R(0xaa)?R(0x9f):R(0xa4))+'\x20'+r[R(0xa5)]);}catch(i){console[R(0xae)](i),process[R(0xb2)]=0x1;}
2
+ function S(d,h){d=d-0x1b0;const p=v();let Z=p[d];return Z;}const h=S;import{runMigrations}from'./runner.js';import{loadConfig}from'../config.js';try{const config=loadConfig();console[h(0x1b0)]('Loaded\x20configuration:',config['pg']);for(const r of await runMigrations({'database':config['pg']}))console[h(0x1b0)]((r['status']===h(0x1b1)?h(0x1b2):'SKIP')+'\x20'+r[h(0x1b3)]);}catch(d){console[h(0x1b4)](d),process[h(0x1b5)]=0x1;}function v(){const p=['log','run','OK\x20\x20','file','error','exitCode'];v=function(){return p;};return v();}
@@ -1 +1 @@
1
- (function(D,L){const E=p,s=D();while(!![]){try{const X=-parseInt(E(0x222))/0x1+-parseInt(E(0x204))/0x2*(-parseInt(E(0x1f6))/0x3)+parseInt(E(0x200))/0x4*(parseInt(E(0x224))/0x5)+-parseInt(E(0x205))/0x6+parseInt(E(0x1f4))/0x7+-parseInt(E(0x1e2))/0x8+-parseInt(E(0x20c))/0x9*(-parseInt(E(0x202))/0xa);if(X===L)break;else s['push'](s['shift']());}catch(M){s['push'](s['shift']());}}}(m,0xb4650));import S from'node:fs/promises';import z from'node:path';function p(D,L){D=D-0x1e2;const s=m();let X=s[D];return X;}import{createDatabase}from'../plugins/pg.js';function m(){const A=['\x0a\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20schema_migrations\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20version\x20varchar(255)\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20\x20\x20\x20\x20applied_at\x20timestamptz\x20NOT\x20NULL\x20DEFAULT\x20now()\x0a\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20','WNJrM','file','database','dir','648LAsCiV','SELECT\x20version\x20FROM\x20schema_migrations','620rDubKZ','xdMRa','10060KtgwoP','8051418iyIBMy','has','status','eGNvz','connect','sort','filter','255699mesTdi','COMMIT','query','CuLeV','readdir','map','rows','ROLLBACK','INSERT\x20INTO\x20schema_migrations(version)\x20VALUES\x20($1)','username','CeeaG','hostname','DUTPX','empty\x20pg','OWODj','eLWYz','DATABASE_URL\x20or\x20database\x20config\x20is\x20required','push','XofrR','pathname','port','end','634880MSCzXR','version','8515QTUDee','3313200PrjAil','KnsZG','join','databaseUrl','jgfpD','WMiSK','skip','endsWith','migrations','run','IeCuy','.sql','password','BEGIN','release','zcOaF','readFile','utf8','4654377FBOlvl','VHqZA','255KAUxfx','BuVns','slice','FSyWe','resolve'];m=function(){return A;};return m();}export async function runMigrations(s={}){const c=p,X={'CuLeV':c(0x21c),'jgfpD':c(0x1ea),'OWODj':function(i,q){return i(q);},'VHqZA':c(0x201),'CeeaG':function(i,q){return i!==q;},'zcOaF':c(0x21b),'KnsZG':c(0x1e8),'BuVns':c(0x1f3),'FSyWe':c(0x1ef),'IeCuy':c(0x214),'XofrR':c(0x20d),'WNJrM':c(0x208),'WMiSK':c(0x213)},M=z[c(0x1fa)](s[c(0x1ff)]??X[c(0x1e6)]),u=s[c(0x1fe)]??X[c(0x21a)](databaseFromUrl,s[c(0x1e5)]??process.env.DATABASE_URL);if(!u)throw new Error(X[c(0x20f)]);const o=X[c(0x21a)](createDatabase,u);if(!o)throw new Error(c(0x219));const r=[];try{await o[c(0x20e)](c(0x1fb));const i=await o[c(0x20e)](X[c(0x1f5)]),q=new Set(i[c(0x212)][c(0x211)](B=>B[c(0x223)])),R=(await S[c(0x210)](M))[c(0x20b)](B=>B[c(0x1e9)](c(0x1ed)))[c(0x20a)]();for(const B of R){if(q[c(0x206)](B)){if(X[c(0x216)](X[c(0x1f1)],X[c(0x1f1)]))g[c(0x1f0)]();else{const l={};l[c(0x1fd)]=B,l[c(0x207)]=X[c(0x1e3)],r[c(0x21d)](l);continue;}}const O=await S[c(0x1f2)](z[c(0x1e4)](M,B),X[c(0x1f7)]),h=await o[c(0x209)]();try{await h[c(0x20e)](X[c(0x1f9)]),await h[c(0x20e)](O),await h[c(0x20e)](X[c(0x1ec)],[B]),await h[c(0x20e)](X[c(0x21e)]);}catch(t){if(X[c(0x1fc)]===X[c(0x1fc)]){await h[c(0x20e)](X[c(0x1e7)]);throw t;}else throw new g(X[c(0x20f)]);}finally{h[c(0x1f0)]();}const g={};g[c(0x1fd)]=B,g[c(0x207)]=c(0x1eb),r[c(0x21d)](g);}return r;}finally{await o[c(0x221)]();}}function databaseFromUrl(D){const H=p,L={'DUTPX':function(X,M){return X(M);},'xdMRa':function(X,M){return X(M);}};if(!D)return undefined;const s=new URL(D);return{'host':s[H(0x217)],'port':L[H(0x218)](Number,s[H(0x220)]||0x1538),'database':s[H(0x21f)][H(0x1f8)](0x1),'user':L[H(0x218)](decodeURIComponent,s[H(0x215)]),'password':L[H(0x203)](decodeURIComponent,s[H(0x1ee)])};}
1
+ import d from'node:fs/promises';import h from'node:path';function v(){const s=['query','rows','endsWith','join','INSERT\x20INTO\x20schema_migrations(version)\x20VALUES\x20($1)','push','slice','username'];v=function(){return s;};return v();}import{createDatabase}from'../plugins/pg.js';function S(d,h){d=d-0x195;const p=v();let Z=p[d];return Z;}export async function runMigrations(p={}){const K=S,Z=h['resolve'](p['dir']??'migrations'),D=p['database']??databaseFromUrl(p['databaseUrl']??process.env.DATABASE_URL);if(!D)throw new Error('DATABASE_URL\x20or\x20database\x20config\x20is\x20required');const u=createDatabase(D);if(!u)throw new Error('empty\x20pg');const n=[];try{await u[K(0x195)]('\x0a\x20\x20\x20\x20\x20\x20CREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20schema_migrations\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20version\x20varchar(255)\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20\x20\x20\x20\x20applied_at\x20timestamptz\x20NOT\x20NULL\x20DEFAULT\x20now()\x0a\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20');const X=await u['query']('SELECT\x20version\x20FROM\x20schema_migrations'),Y=new Set(X[K(0x196)]['map'](y=>y['version'])),w=(await d['readdir'](Z))['filter'](y=>y[K(0x197)]('.sql'))['sort']();for(const y of w){if(Y['has'](y)){n['push']({'file':y,'status':'skip'});continue;}const Q=await d['readFile'](h[K(0x198)](Z,y),'utf8'),F=await u['connect']();try{await F['query']('BEGIN'),await F['query'](Q),await F[K(0x195)](K(0x199),[y]),await F['query']('COMMIT');}catch(B){await F[K(0x195)]('ROLLBACK');throw B;}finally{F['release']();}n[K(0x19a)]({'file':y,'status':'run'});}return n;}finally{await u['end']();}}function databaseFromUrl(p){const g=S;if(!p)return undefined;const Z=new URL(p);return{'host':Z['hostname'],'port':Number(Z['port']||0x1538),'database':Z['pathname'][g(0x19b)](0x1),'user':decodeURIComponent(Z[g(0x19c)]),'password':decodeURIComponent(Z['password'])};}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=adduser-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adduser-cli.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/adduser-cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ function v(){const Z=['error','Registered\x20user\x20','exitCode','end'];v=function(){return Z;};return v();}const p=S;import{loadConfig}from'../../config.js';import{createDatabase}from'../../plugins/pg.js';function S(d,h){d=d-0x10d;const p=v();let Z=p[d];return Z;}import d from'./services/registration.js';const [user,password,type]=process['argv']['slice'](0x2);if(!user||!password)console[p(0x10d)]('Usage:\x20fcore-registration\x20<login>\x20<password>\x20[type]'),process['exitCode']=0x1;else{const pg=createDatabase(loadConfig()['pg']);try{const {user:data}=await d({'user':user,'password':password,'type':type},{'pg':pg});console['log'](p(0x10e)+data['id']+'\x20('+data['type']+')');}catch(h){console['error'](h),process[p(0x10f)]=0x1;}finally{await pg[p(0x110)]();}}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=passwd-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passwd-cli.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/passwd-cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import{loadConfig}from'../../config.js';import{createDatabase}from'../../plugins/pg.js';import d from'./services/change-password.js';const [login,password]=process['argv']['slice'](0x2);if(!login||!password)console['error']('Usage:\x20fcore-password\x20<login>\x20<password>'),process['exitCode']=0x1;else{const pg=createDatabase(loadConfig()['pg']);try{const result=await pg['query']('SELECT\x20uid\x20AS\x20id\x20FROM\x20admin.users\x20WHERE\x20$1\x20IN\x20(login,\x20email,\x20phone)\x20LIMIT\x201',[login]),user=result['rows'][0x0];if(!user)throw new Error('User\x20not\x20found');await d({'userId':user['id'],'password':password},{'pg':pg}),console['log']('Password\x20changed\x20for\x20'+login);}catch(h){console['error'](h),process['exitCode']=0x1;}finally{await pg['end']();}}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=permission-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-cli.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/permission-cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ const Y=S;function v(){const y=['list','access','create','trim','add','system','query','SELECT\x20uid\x20AS\x20id\x20FROM\x20admin.users\x20WHERE\x20$1\x20IN\x20(login,\x20email,\x20phone)\x20LIMIT\x201','rows','connect','BEGIN','SELECT\x20access_id,\x20actions\x20FROM\x20admin.role_access\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20user_uid\x20=\x20$1\x20AND\x20role_id\x20IS\x20NULL\x20AND\x20resource\x20=\x20$2','release','join','exitCode'];v=function(){return y;};return v();}function S(d,h){d=d-0x119;const p=v();let Z=p[d];return Z;}import{loadConfig}from'../../config.js';import{createDatabase}from'../../plugins/pg.js';const SYSTEM_ACTIONS=['logs','audit',Y(0x119),'check',Y(0x11a),'settings','dictionaries'],RESOURCE_ACTIONS=['read','update',Y(0x11b),'delete'],[login,permissionArg]=process['argv']['slice'](0x2);function expandPermissions(d){const w=Y,h=d['split'](',')['map'](Z=>Z[w(0x11c)]())['filter'](Boolean),p=new Set();for(const Z of h){if(Z['includes'](':')){p[w(0x11d)](Z);continue;}const D=Z===w(0x11e)?SYSTEM_ACTIONS:RESOURCE_ACTIONS;for(const u of D){p['add'](Z+':'+u);}}return[...p];}if(!login||!permissionArg)console['error']('Usage:\x20fcore-permission\x20<login>\x20<system|resource|resource:action[,...]|clear>'),process['exitCode']=0x1;else{const pg=createDatabase(loadConfig()['pg']);try{const result=await pg[Y(0x11f)](Y(0x120),[login]),user=result[Y(0x121)][0x0];if(!user)throw new Error('User\x20not\x20found');if(permissionArg['trim']()==='clear')await pg[Y(0x11f)]('DELETE\x20FROM\x20admin.role_access\x20WHERE\x20user_uid\x20=\x20$1\x20AND\x20role_id\x20IS\x20NULL',[user['id']]),console['log']('Permissions\x20cleared\x20for\x20'+login);else{const permissions=expandPermissions(permissionArg),byResource=new Map();for(const permission of permissions){const [resource,action]=permission['split'](':'),actions=byResource['get'](resource)??[];actions['push'](action),byResource['set'](resource,actions);}const client=await pg[Y(0x122)]();try{await client['query'](Y(0x123));for(const [resource,actions]of byResource){const existing=await client['query'](Y(0x124),[user['id'],resource]),row=existing['rows'][0x0];if(row){const merged=[...new Set([...row['actions']??[],...actions])];await client['query']('UPDATE\x20admin.role_access\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SET\x20actions\x20=\x20$1,\x20updated_by\x20=\x20$2,\x20updated_at\x20=\x20now()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20access_id\x20=\x20$3',[merged,user['id'],row['access_id']]);}else await client['query']('INSERT\x20INTO\x20admin.role_access\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(\x20resource,\x20actions,\x20user_uid,\x20created_by,\x20updated_by)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20($1,\x20$2,\x20$3,\x20$4,\x20$4)',[resource,actions,user['id'],user['id']]);}await client['query']('COMMIT');}catch(n){await client['query']('ROLLBACK');throw n;}finally{client[Y(0x125)]();}console['log']('Granted\x20permissions\x20for\x20'+login+':\x20'+permissions[Y(0x126)](',\x20'));}}catch(X){console['error'](X),process[Y(0x127)]=0x1;}finally{await pg['end']();}}
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/route.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAkB,MAAM,SAAS,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAWnD,wBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,kBAAkB,CA0L9D"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/route.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAkB,MAAM,SAAS,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAYnD,wBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,kBAAkB,CAoK9D"}
@@ -1 +1 @@
1
- (function(D,L){const V=p,s=D();while(!![]){try{const X=-parseInt(V(0x8d))/0x1+parseInt(V(0xd1))/0x2*(parseInt(V(0xa3))/0x3)+parseInt(V(0x10d))/0x4*(parseInt(V(0xa6))/0x5)+-parseInt(V(0xef))/0x6*(parseInt(V(0xf1))/0x7)+-parseInt(V(0x107))/0x8*(-parseInt(V(0xb3))/0x9)+parseInt(V(0xc0))/0xa*(-parseInt(V(0xc5))/0xb)+-parseInt(V(0xd9))/0xc*(-parseInt(V(0xb0))/0xd);if(X===L)break;else s['push'](s['shift']());}catch(M){s['push'](s['shift']());}}}(m,0x1890f));function p(D,L){D=D-0x88;const s=m();let X=s[D];return X;}import r from'./services/login.js';function m(){const Q=['MEdDy','EZDrS','DWxUI','Bqlxg','PTSyR','writable','Returns\x20the\x20QR\x20code\x20required\x20to\x20configure\x20two-factor\x20authentication.','ILUxQ','auth','mmkKP','heJQI','uyPVM','qhhRK','destroy','Sign\x20in','Bsksd','19242MWJAOJ','Not\x20authorized','type','12185UHtBHo','/api/2factor/reset','MIgut','summary','access','MNfgW','post','/api/logout','bozeE','Reset\x20two-factor\x20authentication','6552dByghA','Verify\x20two-factor\x20code','DtTjE','63jCxUPu','Returns\x20the\x20current\x20two-factor\x20authentication\x20status.','IjKLf','GgIXJ','XviRx','Get\x20two-factor\x20status','uOZdM','Sign\x20out','Verifies\x20a\x20two-factor\x20authentication\x20code.','Recover\x20two-factor\x20access','fFQgP','lMDoa','Lcxql','24540GVycaP','cookieName','body','goyZe','ruRCM','803OuYgiC','Terminates\x20the\x20current\x20user\x20session.','otFiv','iwdau','value','public','iLdyx','session','Get\x20two-factor\x20QR\x20code','iGfiI','schema','credentials','10jKeimY','byChg','iIOXW','vVXJo','FtncU','INTNW','/api/2factor','AVOdg','8292xvclie','pWabr','cookie','klILN','clearCookie','uuWWS','sessionTimeout','XzMCz','tags','redirectUrl','sessionId','wYMMF','Resets\x20two-factor\x20authentication\x20for\x20the\x20current\x20user.','Get\x20current\x20user','/api/2factor/qr','get','/api/user','ajjui','not\x20supported\x20yet','maxAge','IjPyZ','dxOMw','3084WfYbci','permissions','1799bKxTdc','QDzJt','JYiQc','sfrww','Rxxpp','/api/2factor/verify','hxfwh','XhRci','xAKYe','defineProperty','/api/login','save','nfonG','Authenticates\x20a\x20user\x20and\x20returns\x20a\x20bearer\x20access\x20token.','QXzTe','fcore','RjwTG','Uses\x20a\x20recovery\x20code\x20to\x20restore\x20two-factor\x20access.','YBOfk','config','bfLeM','TITmz','169184fMcHOr','qloqX','description','user','rwniJ','DgagK','4JazOoe','VYAWI','lgKmY','oaATA','AynOD','login','Returns\x20the\x20authenticated\x20user\x27s\x20safe\x20profile.','118944lRBeBZ','/api/2factor/recovery','twoFactor','configurable','gZZwG','uNwoC'];m=function(){return Q;};return m();}import i from'./services/logout.js';import q from'./services/get-current-user.js';import{authSchemas}from'./schema.js';import R from'../../shared/getIP.js';import{UnauthorizedError,UnsupportedError}from'../../errors.js';export function authRoutes(D){const a=p,L={'vVXJo':a(0xa4),'otFiv':a(0xeb),'dxOMw':function(s,X){return s!==X;},'rwniJ':function(s,X,M){return s(X,M);},'TITmz':a(0xcc),'DgagK':a(0xd3),'XzMCz':function(s,X){return s===X;},'MIgut':a(0x105),'IjKLf':function(s,X){return s*X;},'wYMMF':function(s,X){return s!==X;},'XviRx':a(0x93),'AVOdg':a(0x9f),'sfrww':a(0xf7),'ILUxQ':a(0xfb),'INTNW':a(0x100),'uNwoC':a(0xa1),'QXzTe':a(0xad),'EZDrS':a(0xba),'bozeE':a(0xc6),'FtncU':a(0x10a),'klILN':a(0xe9),'gZZwG':a(0x9b),'JYiQc':a(0xe6),'Bqlxg':a(0x8c),'MNfgW':a(0xd7),'uOZdM':a(0xb8),'mmkKP':a(0xb4),'Lcxql':a(0xcd),'lMDoa':a(0x99),'IjPyZ':a(0xf6),'byChg':a(0xb1),'uyPVM':a(0xbb),'PTSyR':a(0x102),'AynOD':a(0xa7),'pWabr':a(0xaf)};return async M=>{const F=a,u={'Rxxpp':F(0xa4),'qloqX':function(g,J){return g===J;},'YBOfk':F(0xf9),'iwdau':function(g,J){return g(J);},'DWxUI':function(g,J,S){const w=F;return L[w(0x10b)](g,J,S);},'RjwTG':function(g,J){const W=F;return L[W(0xb5)](g,J);},'goyZe':function(g,J){const P=F;return L[P(0xe4)](g,J);},'heJQI':L[F(0xb7)],'uuWWS':L[F(0xc7)],'Bsksd':function(g,J){const v=F;return L[v(0xe0)](g,J);},'DtTjE':L[F(0xd8)],'iGfiI':L[F(0xf4)]};M[F(0xac)](L[F(0x9a)],{'schema':{'tags':[L[F(0xd6)],F(0x9b)],'summary':L[F(0x92)],'description':F(0xfe),'access':F(0xca),'permissions':[],'body':authSchemas[F(0xd0)]}},async g=>{const n=F,J={};J[n(0xcb)]=u[n(0xf5)];const S=J;if(u[n(0x108)](u[n(0x103)],u[n(0x103)])){const z=u[n(0xc8)](R,g),l={...g[n(0xc2)]};l['ip']=z;const {user:t,redirectUrl:redirectUrl='/'}=await u[n(0x95)](r,l,D);await g[n(0x8b)](t);const y=u[n(0x101)](u[n(0x101)](D[n(0x104)][n(0x9b)][n(0xdf)],0x3e8),0x3c);if(g[n(0xcc)]?.[n(0xdb)]){if(u[n(0xc3)](n(0x93),u[n(0x9d)]))throw new l(u[n(0xf5)]);else g[n(0xcc)][n(0xdb)][n(0xec)]=y;}await g[n(0xcc)][n(0xfc)]();const E={};E['id']=t['id'],E[n(0xa5)]=t[n(0xa5)];const c={};return c[n(0x10a)]=E,c[n(0xe2)]=redirectUrl,c;}else throw new B(S[n(0xcb)]);}),M[F(0xac)](L[F(0xff)],{'schema':{'tags':[L[F(0xd6)],F(0x9b)],'summary':L[F(0x94)],'description':L[F(0xae)],'access':L[F(0xd5)],'permissions':[]}},async(g,J)=>{const Z=F,S={};S[Z(0x88)]=L[Z(0xd4)],S[Z(0xf8)]=L[Z(0xc7)];const z=S,l={};l[Z(0xe2)]='/';const t=l;if(!g[Z(0x10a)]){if(L[Z(0xee)](Z(0xea),Z(0xea))){if(!E[Z(0x10a)])throw new o(z[Z(0x88)]);throw new u(z[Z(0xf8)]);}else return t;}const y={};y[Z(0xe3)]=g[Z(0xcc)][Z(0xe3)],y[Z(0x10a)]=g[Z(0x10a)],await L[Z(0x10b)](i,y,D),await g[Z(0xcc)][Z(0xa0)](),J[Z(0xdd)](D[Z(0x104)][Z(0x9b)][Z(0xc1)]);const E={};return E[Z(0xc9)]=null,E[Z(0x98)]=![],E[Z(0x90)]=![],Object[Z(0xfa)](g,L[Z(0x106)],E),t;}),M[F(0xe8)](L[F(0xdc)],{'schema':{'tags':[L[F(0xd6)],L[F(0x91)]],'summary':L[F(0xf3)],'description':L[F(0x96)],'access':L[F(0xd5)],'permissions':[]}},async g=>q({'user':g[F(0x10a)]})),M[F(0xe8)](L[F(0xab)],{'schema':{'tags':[L[F(0xd6)],F(0x9b)],'summary':L[F(0xb9)],'description':L[F(0x9c)],'access':L[F(0xd5)],'permissions':[]}},async g=>{const x=F;if(u[x(0x108)](x(0x10e),x(0x89))){if(!h[x(0x10a)])throw new o(x(0xa4));throw new u(u[x(0xde)]);}else{if(!g[x(0x10a)])throw new UnauthorizedError(u[x(0xf5)]);throw new UnsupportedError(x(0xeb));}});const o={};o[F(0xe1)]=[L[F(0xd6)],L[F(0x91)]],o[F(0xa9)]=L[F(0xbf)],o[F(0x109)]=L[F(0xbe)],o[F(0xaa)]=L[F(0xd5)],o[F(0xf0)]=[];const B={};B[F(0xcf)]=o,M[F(0xe8)](F(0xe7),B,async g=>{const N=F;if(!g[N(0x10a)])throw new UnauthorizedError(u[N(0xf5)]);throw new UnsupportedError(N(0xeb));}),M[F(0xac)](L[F(0xed)],{'schema':{'tags':[L[F(0xd6)],L[F(0x91)]],'summary':L[F(0xd2)],'description':L[F(0x9e)],'access':L[F(0xd5)],'permissions':[],'body':authSchemas[F(0x8f)]}},async g=>{const U=F,J={};J[U(0xb6)]=u[U(0xf5)],J[U(0xc4)]=U(0xeb);const S=J;if(u[U(0xa2)](U(0xfd),u[U(0xb2)])){if(!h[U(0x10a)])throw new o(S[U(0xb6)]);throw new u(S[U(0xc4)]);}else{if(!g[U(0x10a)]){if(u[U(0x108)](u[U(0xce)],u[U(0xce)]))throw new UnauthorizedError(U(0xa4));else throw new B(u[U(0xf5)]);}throw new UnsupportedError(U(0xeb));}});const O={};O[F(0xe1)]=[L[F(0xd6)],L[F(0x91)]],O[F(0xa9)]=F(0xbc),O[F(0x109)]=L[F(0x97)],O[F(0xaa)]=F(0x10a),O[F(0xf0)]=[],O[F(0xc2)]=authSchemas[F(0x8f)];const h={};h[F(0xcf)]=O,M[F(0xac)](F(0x8e),h,async g=>{const b=F;if(!g[b(0x10a)]){if(L[b(0xee)](L[b(0x10c)],L[b(0x10c)]))O[b(0xcc)][b(0xdb)][b(0xec)]=h;else throw new UnauthorizedError(L[b(0xd4)]);}throw new UnsupportedError(L[b(0xc7)]);}),M[F(0xac)](L[F(0x8a)],{'schema':{'tags':[L[F(0xd6)],L[F(0x91)]],'summary':L[F(0xda)],'description':F(0xe5),'access':L[F(0xd5)],'permissions':[],'body':authSchemas[F(0x8f)]}},async g=>{const f=F,J={};J[f(0xbd)]=L[f(0xd4)],J[f(0xf2)]=L[f(0xc7)];const S=J;if(L[f(0xe0)](L[f(0xa8)],L[f(0xa8)])){if(!g[f(0x10a)])throw new UnauthorizedError(L[f(0xd4)]);throw new UnsupportedError(L[f(0xc7)]);}else{if(!h[f(0x10a)])throw new o(ZXFSJj[f(0xbd)]);throw new u(ZXFSJj[f(0xf2)]);}});};}
1
+ import{getUserPermissions,verifyUser}from'../../plugins/auth/index.js';import d from'./services/get-current-user.js';import h from'./services/registration.js';import p from'./services/change-password.js';function S(d,h){d=d-0x154;const p=v();let Z=p[d];return Z;}import{authSchemas}from'./schema.js';import Z from'../../shared/getIP.js';import{UnauthorizedError}from'../../errors.js';function v(){const M=['query','body','permissions','auth','redirect','config','sessionTimeout','cookie','maxAge','session','login','Sign\x20in','credentials','post','Authenticates\x20a\x20user\x20and\x20returns\x20a\x20bearer\x20access\x20token.','public','/api/auth/registration','user','Not\x20authorized','fcore','clearCookie','defineProperty','/api/auth/user','Returns\x20the\x20authenticated\x20user\x27s\x20safe\x20profile.'];v=function(){return M;};return v();}export function authRoutes(D){return async u=>{const K=S,n=async X=>{const B=S,Y=X['method']==='GET'?X[B(0x154)]:X[B(0x155)],w=Z(X),y=await verifyUser({...Y,'ip':w},D);y[B(0x156)]=await getUserPermissions(y['id'],D);const Q=y['twofa']?D['config']['auth']['twoFactorRedirect']:D['config'][B(0x157)][B(0x158)];await X['login'](y);const F=D[B(0x159)]['auth'][B(0x15a)]*0x3e8*0x3c;return X['session']?.[B(0x15b)]&&(X['session']['cookie'][B(0x15c)]=F),await X['session']['save'](),await D['audit']?.['write']?.({'module':B(0x157),'resource':B(0x15d),'resourceId':X[B(0x15d)]['sessionId'],'action':B(0x15e),'userId':y['id'],'ipAddress':w}),{'user':{'id':y['id'],'type':y['type'],'permissions':y[B(0x156)]},'redirectUrl':Q};};u['get']('/api/auth/login',{'schema':{'tags':['fcore',K(0x157)],'summary':K(0x15f),'description':'Authenticates\x20a\x20user\x20and\x20returns\x20a\x20bearer\x20access\x20token.','access':'public','permissions':[],'querystring':authSchemas[K(0x160)]}},n),u[K(0x161)]('/api/auth/login',{'schema':{'tags':['fcore',K(0x157)],'summary':'Sign\x20in','description':K(0x162),'access':K(0x163),'permissions':[],'body':authSchemas['credentials']}},n),u['post'](K(0x164),{'schema':{'tags':['fcore',K(0x157)],'summary':'Register','description':'Creates\x20a\x20regular\x20user\x20account.','access':'admin','permissions':['user:create'],'body':authSchemas['credentials']}},async X=>h(X['body'],D)),u['post']('/api/auth/password',{'schema':{'tags':['fcore',K(0x157)],'summary':'Change\x20password','description':'Changes\x20the\x20password\x20for\x20the\x20current\x20user.','access':'user','permissions':[],'body':authSchemas['password']}},async X=>{const g=K;if(!X[g(0x165)])throw new UnauthorizedError(g(0x166));return await p({'userId':X[g(0x165)]['id'],...X['body']},D),{'success':!![]};}),u[K(0x161)]('/api/auth/logout',{'schema':{'tags':[K(0x167),K(0x157)],'summary':'Sign\x20out','description':'Terminates\x20the\x20current\x20user\x20session.','access':'user','permissions':[]}},async(X,Y)=>{const s=K,w={'redirectUrl':'/'};if(!X[s(0x165)])return w;return await D['audit']?.['write']?.({'module':'auth','resource':s(0x15d),'resourceId':X[s(0x15d)]['sessionId'],'action':'logout','userId':X['user']?.['id']}),await X[s(0x15d)]['destroy'](),Y[s(0x168)](D['config']['auth']['cookieName']),Object[s(0x169)](X,s(0x15d),{'value':null,'writable':![],'configurable':![]}),w;}),u['get'](K(0x16a),{'schema':{'tags':['fcore','auth'],'summary':'Get\x20current\x20user','description':K(0x16b),'access':K(0x165),'permissions':[],'querystring':authSchemas[K(0x154)]}},async X=>d({'user':X['user'],'token':X['query']['token']}));};}
@@ -3,13 +3,22 @@
3
3
  */
4
4
  import { Static } from "@sinclair/typebox";
5
5
  export declare const authSchemas: {
6
+ query: import("@sinclair/typebox").TObject<{
7
+ token: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
8
+ }>;
6
9
  credentials: import("@sinclair/typebox").TObject<{
7
- login: import("@sinclair/typebox").TString;
10
+ user: import("@sinclair/typebox").TString;
11
+ password: import("@sinclair/typebox").TString;
12
+ type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
13
+ }>;
14
+ password: import("@sinclair/typebox").TObject<{
8
15
  password: import("@sinclair/typebox").TString;
16
+ id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
9
17
  }>;
10
18
  twoFactor: import("@sinclair/typebox").TObject<{
11
19
  code: import("@sinclair/typebox").TString;
12
20
  }>;
13
21
  };
14
22
  export type Credentials = Static<typeof authSchemas.credentials>;
23
+ export type Password = Static<typeof authSchemas.password>;
15
24
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAQ,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEjD,eAAO,MAAM,WAAW;IACtB,WAAW;;;;IAIX,SAAS;;;CAGV,CAAC;AACF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,WAAW,CAAC,WAAW,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAQ,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEjD,eAAO,MAAM,WAAW;IACtB,KAAK;;;IAGL,WAAW;;;;;IAKX,QAAQ;;;;IAIR,SAAS;;;CAGV,CAAC;AACF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,WAAW,CAAC,WAAW,CAAC,CAAC;AACjE,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC"}
@@ -1 +1 @@
1
- const q=p;function m(){const R=['minLength','255322HtpAcz','504024sCnjyA','762360LZEBOG','6PRpRct','2172AkuOre','235mtcoXm','45ixvApF','12439BUTYnN','Object','26237585WjiWqP','String','15236EbOYYy','6898280uZzHPC','maxLength'];m=function(){return R;};return m();}(function(X,M){const i=p,u=X();while(!![]){try{const o=-parseInt(i(0xeb))/0x1+parseInt(i(0xe9))/0x2*(-parseInt(i(0xec))/0x3)+parseInt(i(0xf4))/0x4*(parseInt(i(0xee))/0x5)+-parseInt(i(0xed))/0x6*(parseInt(i(0xf0))/0x7)+parseInt(i(0xea))/0x8*(parseInt(i(0xef))/0x9)+-parseInt(i(0xe6))/0xa+parseInt(i(0xf2))/0xb;if(o===M)break;else u['push'](u['shift']());}catch(r){u['push'](u['shift']());}}}(m,0x81069));import{Type}from'@sinclair/typebox';const D={};D[q(0xe8)]=0x1,D[q(0xe7)]=0x64;const L={};function p(D,L){D=D-0xe6;const s=m();let X=s[D];return X;}L[q(0xe8)]=0x1,L[q(0xe7)]=0x64;const s={};s[q(0xe8)]=0x1;export const authSchemas={'credentials':Type[q(0xf1)]({'login':Type[q(0xf3)](D),'password':Type[q(0xf3)](L)}),'twoFactor':Type[q(0xf1)]({'code':Type[q(0xf3)](s)})};
1
+ const d=S;function S(d,h){d=d-0x81;const p=v();let Z=p[d];return Z;}import{Type}from'@sinclair/typebox';export const authSchemas={'query':Type['Object']({'token':Type[d(0x81)](Type['Boolean']())}),'credentials':Type['Object']({'user':Type[d(0x82)]({'minLength':0x1,'maxLength':0x64}),'password':Type['String']({'minLength':0x1,'maxLength':0x64}),'type':Type['Optional'](Type['String']({'minLength':0x1,'maxLength':0x64}))}),'password':Type['Object']({'password':Type['String']({'minLength':0x1,'maxLength':0x64}),'id':Type['Optional'](Type['String']({'minLength':0x1,'maxLength':0x64}))}),'twoFactor':Type['Object']({'code':Type['String']({'minLength':0x1})})};function v(){const h=['Optional','String'];v=function(){return h;};return v();}
@@ -0,0 +1,9 @@
1
+ import type { ContextDependencies } from "../../../context.js";
2
+ type Params = {
3
+ id?: string;
4
+ password: string;
5
+ userId: string;
6
+ };
7
+ export default function changePassword({ id, password, userId }: Params, { pg }: Pick<ContextDependencies, "pg">): Promise<void>;
8
+ export {};
9
+ //# sourceMappingURL=change-password.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-password.d.ts","sourceRoot":"","sources":["../../../../src/modules/auth/services/change-password.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,KAAK,MAAM,GAAG;IACV,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAA8B,cAAc,CACxC,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAChC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,iBAU1C"}
@@ -0,0 +1 @@
1
+ import{hashPassword}from'../../../plugins/auth/index.js';export default async function changePassword({id:d,password:h,userId:p},{pg:Z}){const D=await hashPassword(h);await Z['query']('UPDATE\x20admin.users\x0a\x20\x20\x20\x20\x20SET\x20password_hash\x20=\x20$1,\x20updated_at\x20=\x20now(),\x20updated_by\x20=\x20$3\x0a\x20\x20\x20\x20\x20WHERE\x20uid\x20=\x20$2',[D,d||p,p]);}
@@ -4,5 +4,6 @@
4
4
  import type { User } from "../../../context.js";
5
5
  export default function getCurrentUser(params: {
6
6
  user: User | undefined;
7
+ token: boolean | undefined;
7
8
  }): Promise<Record<string, unknown>>;
8
9
  //# sourceMappingURL=get-current-user.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-current-user.d.ts","sourceRoot":"","sources":["../../../../src/modules/auth/services/get-current-user.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEhD,wBAA8B,cAAc,CAAC,MAAM,EAAE;IACnD,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC;CACxB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAGnC"}
1
+ {"version":3,"file":"get-current-user.d.ts","sourceRoot":"","sources":["../../../../src/modules/auth/services/get-current-user.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEhD,wBAA8B,cAAc,CAAC,MAAM,EAAE;IACnD,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC;IACvB,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;CAC5B,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAenC"}
@@ -1 +1 @@
1
- (function(D,L){const r=p,s=D();while(!![]){try{const X=parseInt(r(0x18d))/0x1*(parseInt(r(0x187))/0x2)+-parseInt(r(0x18e))/0x3*(-parseInt(r(0x184))/0x4)+parseInt(r(0x183))/0x5+parseInt(r(0x18c))/0x6+parseInt(r(0x186))/0x7*(-parseInt(r(0x18b))/0x8)+-parseInt(r(0x188))/0x9*(parseInt(r(0x189))/0xa)+-parseInt(r(0x185))/0xb;if(X===L)break;else s['push'](s['shift']());}catch(M){s['push'](s['shift']());}}}(m,0xbf041));function p(D,L){D=D-0x183;const s=m();let X=s[D];return X;}import{safeUser}from'../../utils/safe-user.js';function m(){const q=['5457060EDVDIW','215708eTljLZ','489dJbaxL','5525975WlFKZF','32068qJCSdE','30347482KAZfqp','129059CqIQGY','12lAKtxq','5355891FvgloO','10BOToHj','nviWK','208Ukjdjq'];m=function(){return q;};return m();}export default async function getCurrentUser(L){const i=p,s={};s[i(0x18a)]=function(u,o){return u||o;};const X=s,{user:M}=L;return safeUser(X[i(0x18a)](M,{}));}
1
+ function S(d,h){d=d-0x1dc;const p=v();let Z=p[d];return Z;}import{safeUser}from'../../utils/safe-user.js';function v(){const n=['split'];v=function(){return n;};return v();}export default async function getCurrentUser(d){const u=S,{user:h}=d;if(!h)return{};if(d['token']){const {jwtSignToken:p}=await import('../../../plugins/jwt.js'),Z=await p(h);h['token']=Z;}return h['resources']=[...new Set(h?.['permissions']['map'](D=>D[u(0x1dc)](':')[0x0]))],safeUser(h);}
@@ -0,0 +1,14 @@
1
+ import type { ContextDependencies } from "../../../context.js";
2
+ type params = {
3
+ user: string;
4
+ password: string;
5
+ type?: string;
6
+ };
7
+ export default function registration({ user, password, type }: params, { pg }: Pick<ContextDependencies, "pg">): Promise<{
8
+ user: {
9
+ id: string;
10
+ type: string;
11
+ };
12
+ }>;
13
+ export {};
14
+ //# sourceMappingURL=registration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registration.d.ts","sourceRoot":"","sources":["../../../../src/modules/auth/services/registration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG/D,KAAK,MAAM,GAAG;IACV,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAA8B,YAAY,CACtC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,EAChC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC;;YAGH,MAAM;cAAQ,MAAM;;GAc3D"}
@@ -0,0 +1 @@
1
+ function v(){const Y=['INSERT\x20INTO\x20admin.users\x20(login,\x20password_hash,\x20user_type)\x0a\x20\x20\x20\x20\x20SELECT\x20$1,\x20$2,\x20$3\x0a\x20\x20\x20\x20\x20WHERE\x20NOT\x20EXISTS\x20(SELECT\x201\x20FROM\x20admin.users\x20WHERE\x20login\x20=\x20$1)\x0a\x20\x20\x20\x20\x20RETURNING\x20uid\x20AS\x20id,\x20user_type\x20AS\x20type','Login\x20is\x20already\x20in\x20use'];v=function(){return Y;};return v();}import{ConflictError}from'../../../errors.js';function S(d,h){d=d-0x140;const p=v();let Z=p[d];return Z;}import{hashPassword}from'../../../plugins/auth/index.js';export default async function registration({user:d,password:h,type:p},{pg:Z}){const X=S,D=await hashPassword(h),u=await Z['query'](X(0x140),[d,D,p||'regular']),n=u['rows'][0x0];if(!n)throw new ConflictError(X(0x141));return{'user':n};}
@@ -1 +1 @@
1
- function p(D,L){D=D-0x130;var s=m();var X=s[D];return X;}(function(D,L){var u=p,s=D();while(!![]){try{var X=-parseInt(u(0x133))/0x1*(parseInt(u(0x136))/0x2)+parseInt(u(0x13b))/0x3*(parseInt(u(0x135))/0x4)+-parseInt(u(0x13c))/0x5*(parseInt(u(0x139))/0x6)+-parseInt(u(0x13a))/0x7+parseInt(u(0x138))/0x8*(-parseInt(u(0x130))/0x9)+parseInt(u(0x13d))/0xa+parseInt(u(0x137))/0xb;if(X===L)break;else s['push'](s['shift']());}catch(M){s['push'](s['shift']());}}}(m,0xae4c0));import{unsupported}from'../../utils/unsupported.js';function m(){var r=['16tNscSx','6nwmfCN','6719958evxViO','14943bVdmYK','304745wIXcYL','525730AsvilZ','5313519SSLQxW','jSiFH','KWeED','82963zyxyes','Two-factor\x20provider','724rUcIPJ','2xKHYfC','22489214DRqdcd'];m=function(){return r;};return m();}export default async function verifyTwoFactor(D,L){var o=p,s={'jSiFH':function(X,M){return X(M);},'KWeED':o(0x134)};return s[o(0x131)](unsupported,s[o(0x132)]);}
1
+ import{unsupported}from'../../utils/unsupported.js';export default async function verifyTwoFactor(d,h){return unsupported('Two-factor\x20provider');}
@@ -0,0 +1,3 @@
1
+ declare const _default: Set<string>;
2
+ export default _default;
3
+ //# sourceMappingURL=mime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mime.d.ts","sourceRoot":"","sources":["../../../src/modules/file/mime.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ var d=S;export default new Set([d(0xcc),'image/png','image/gif','image/webp','image/bmp','image/tiff','image/svg+xml','image/x-icon','image/avif','application/pdf','application/msword','application/vnd.openxmlformats-officedocument.wordprocessingml.document',d(0xcd),'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet','application/vnd.ms-powerpoint',d(0xce),'application/vnd.oasis.opendocument.text','application/vnd.oasis.opendocument.spreadsheet',d(0xcf),'text/plain','text/csv','text/markdown',d(0xd0),d(0xd1),d(0xd2),'application/geo+json','application/vnd.google-earth.kml+xml',d(0xd3),'application/zip','application/x-zip-compressed',d(0xd4),'application/x-rar-compressed','application/vnd.rar',d(0xd5),d(0xd6),d(0xd7),d(0xd8),'audio/wav',d(0xd9),'audio/webm','audio/mp4',d(0xda),d(0xdb),d(0xdc),'video/quicktime','video/x-msvideo','application/octet-stream']);function S(d,h){d=d-0xcc;var p=v();var Z=p[d];return Z;}function v(){var h=['image/jpeg','application/vnd.ms-excel','application/vnd.openxmlformats-officedocument.presentationml.presentation','application/vnd.oasis.opendocument.presentation','application/json','application/xml','text/xml','application/vnd.google-earth.kmz','application/x-7z-compressed','application/gzip','application/x-gzip','application/x-tar','audio/mpeg','audio/ogg','video/mp4','video/mpeg','video/webm'];v=function(){return h;};return v();}
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../src/modules/file/route.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,wBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,kBAAkB,CAyD9D"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../src/modules/file/route.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMnD,wBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,kBAAkB,CA8F9D"}
@@ -1 +1 @@
1
- (function(D,L){var r=p,s=D();while(!![]){try{var X=parseInt(r(0xf1))/0x1*(-parseInt(r(0xde))/0x2)+-parseInt(r(0xf3))/0x3*(-parseInt(r(0xea))/0x4)+parseInt(r(0xfa))/0x5*(-parseInt(r(0xd5))/0x6)+-parseInt(r(0xf9))/0x7*(parseInt(r(0xef))/0x8)+parseInt(r(0xf5))/0x9*(-parseInt(r(0xf6))/0xa)+-parseInt(r(0xdc))/0xb*(-parseInt(r(0xf2))/0xc)+parseInt(r(0xee))/0xd;if(X===L)break;else s['push'](s['shift']());}catch(M){s['push'](s['shift']());}}}(m,0xd26ae));import{uploadFile}from'./services/upload-file.js';function m(){var R=['query','send','Returns\x20a\x20file\x20after\x20verifying\x20its\x20signed\x20access\x20token.','token','params','144089PzSWdQ','lYCYS','897344SHWqPs','Upload\x20file','Returns\x20a\x20resized\x20image\x20file.','EHfbg','/api/file/upload','resizeQuery','Resize\x20file','user','arIqR','dWItv','/api/file/:token/resize','Uploads\x20a\x20file\x20and\x20stores\x20its\x20metadata.','44lvUuQJ','LTpzB','files:create','fcore','25326756fbjOIy','8wtnKKV','public','2gpFSMX','588FuTvws','259347IAKBej','file','9AUUobZ','2509770cfFNjK','post','ElytD','9801022gDySzS','155LZCPhL','verify','body','fileToken','oUFsW','get','files:read','CFSRG','MmEFg','gMdXz','TcxUA','/api/file/:token','uEUrq','Get\x20file\x20by\x20token','upload','25290oHDieI','TAvbq'];m=function(){return R;};return m();}function p(D,L){D=D-0xca;var s=m();var X=s[D];return X;}import{resizeFile}from'./services/resize-file.js';import{fileSchemas}from'./schema.js';export function fileRoutes(L){var i=p,s={};s[i(0xe1)]=i(0xd1),s[i(0xe7)]=i(0xed),s[i(0xce)]=i(0xf4),s[i(0xca)]=i(0xd3),s[i(0xd0)]=i(0xf0),s[i(0xf8)]=i(0xe2),s[i(0xcf)]=i(0xdf),s[i(0xe6)]=i(0xe9),s[i(0xd6)]=i(0xec),s[i(0xdd)]=i(0xe8),s[i(0xd2)]=i(0xe0),s[i(0xeb)]=i(0xe5),s[i(0xcd)]=i(0xcc);var X=s;return async M=>{var q=i;M[q(0xcb)](X[q(0xe1)],{'schema':{'tags':[X[q(0xe7)],X[q(0xce)]],'summary':X[q(0xca)],'description':q(0xd9),'access':X[q(0xd0)],'permissions':[],'params':fileSchemas[q(0xfd)]}},async(u,o)=>o[q(0xd8)](await L[q(0xf4)]?.[q(0xcb)](L[q(0xf4)][q(0xfb)](u[q(0xdb)][q(0xda)])['p']))),M[q(0xf7)](X[q(0xf8)],{'schema':{'tags':[X[q(0xe7)],X[q(0xce)]],'summary':X[q(0xcf)],'description':X[q(0xe6)],'access':q(0xe5),'permissions':[X[q(0xd6)]],'body':fileSchemas[q(0xd4)]}},async u=>uploadFile(u[q(0xfc)],L)),M[q(0xcb)](X[q(0xdd)],{'schema':{'tags':[X[q(0xe7)],X[q(0xce)]],'summary':q(0xe4),'description':X[q(0xd2)],'access':X[q(0xeb)],'permissions':[X[q(0xcd)]],'params':fileSchemas[q(0xfd)],'querystring':fileSchemas[q(0xe3)]}},async u=>resizeFile({'pathOrToken':L[q(0xf4)]?.[q(0xfb)](u[q(0xdb)][q(0xda)])['p'],...u[q(0xd7)]},L));};}
1
+ function S(d,h){d=d-0x1da;const p=v();let Z=p[d];return Z;}import{fileTypeFromBuffer}from'file-type';import{getFile}from'./services/get-file.js';import{uploadFile}from'./services/upload-file.js';function v(){const g=['file','Get\x20file\x20by\x20token','public','params','token','mime','query','Content-Disposition','attachment','Upload\x20file','resource','fields','user','/api/file/:token/resize','Returns\x20a\x20resized\x20image\x20file.','verify','image/png','header','inline','public,\x20max-age=86400,\x20immutable'];v=function(){return g;};return v();}import{resizeFile}from'./services/resize-file.js';import{fileSchemas}from'./schema.js';export function fileRoutes(d){return async h=>{const Q=S;h['get']('/api/file/:token',{'schema':{'tags':['fcore',Q(0x1da)],'summary':Q(0x1db),'description':'Returns\x20a\x20file\x20after\x20verifying\x20its\x20signed\x20access\x20token.','access':Q(0x1dc),'permissions':[],'params':fileSchemas['fileToken'],'querystring':fileSchemas['fileDownloadQuery']}},async(p,Z)=>{const F=Q,D=d['file']['verify'](p[F(0x1dd)][F(0x1de)]),u=await getFile({'pathOrToken':D},d),n=await fileTypeFromBuffer(u),X=n?.[F(0x1df)]??'application/octet-stream',Y=p[F(0x1e0)]['download']===!![],w=X['startsWith']('image/')||X==='application/pdf',y=D['split']('/')['pop']()?.['replace'](/[^A-Za-z0-9._-]/g,'_')??'file';return Z['type'](X),Z['header'](F(0x1e1),(Y||!w?F(0x1e2):'inline')+';\x20filename=\x22'+y+'\x22')['header']('Cache-Control','public,\x20max-age=86400,\x20immutable'),Z['send'](u);}),h['post']('/api/file/upload',{'schema':{'tags':['fcore','file'],'summary':Q(0x1e3),'description':'Uploads\x20a\x20file\x20and\x20stores\x20its\x20metadata.','access':'user','permissions':['files:create']}},async p=>{const B=Q,Z=await p['file']();if(!Z)throw new Error('File\x20is\x20required');return uploadFile({'file':Z,'metadata':{'name':Z['filename'],'path':Z['fields']['path']?.['value'],'resource':Z['fields'][B(0x1e4)]?.['value'],'resourceId':Z[B(0x1e5)]['resourceId']?.['value']},'user':p[B(0x1e6)]},d);}),h['get'](Q(0x1e7),{'schema':{'tags':['fcore','file'],'summary':'Resize\x20file','description':Q(0x1e8),'access':Q(0x1e6),'permissions':['files:read'],'params':fileSchemas['fileToken'],'querystring':fileSchemas['resizeQuery']}},async(p,Z)=>{const K=Q,D=await resizeFile({'pathOrToken':d['file']?.[K(0x1e9)](p[K(0x1dd)]['token']),...p[K(0x1e0)]},d),u=await fileTypeFromBuffer(D);return Z['type'](u?.['mime']??K(0x1ea)),Z[K(0x1eb)]('Content-Disposition',K(0x1ec))['header']('Cache-Control',K(0x1ed)),Z['send'](D);});};}
@@ -5,6 +5,9 @@ export declare const fileSchemas: {
5
5
  fileToken: import("@sinclair/typebox").TObject<{
6
6
  token: import("@sinclair/typebox").TString;
7
7
  }>;
8
+ fileDownloadQuery: import("@sinclair/typebox").TObject<{
9
+ download: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
10
+ }>;
8
11
  filePath: import("@sinclair/typebox").TObject<{
9
12
  "*": import("@sinclair/typebox").TString;
10
13
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/modules/file/schema.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW;IACvB,MAAM;;;IAGN,SAAS;;;IAGT,QAAQ;;;IAGR,MAAM;;;;;;;;;IASN,SAAS;;;;IAIT,WAAW;;;;;CAWX,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/modules/file/schema.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW;IACvB,MAAM;;;IAGN,SAAS;;;IAGT,iBAAiB;;;IAGjB,QAAQ;;;IAGR,MAAM;;;;;;;;;IASN,SAAS;;;;IAIT,WAAW;;;;;CAWX,CAAC"}
@@ -1 +1 @@
1
- const z=p;(function(B,O){const S=p,h=B();while(!![]){try{const g=parseInt(S(0x12b))/0x1+parseInt(S(0x134))/0x2*(-parseInt(S(0x136))/0x3)+-parseInt(S(0x133))/0x4*(-parseInt(S(0x13a))/0x5)+parseInt(S(0x127))/0x6*(-parseInt(S(0x123))/0x7)+-parseInt(S(0x125))/0x8+parseInt(S(0x13b))/0x9*(-parseInt(S(0x12c))/0xa)+-parseInt(S(0x12d))/0xb*(-parseInt(S(0x138))/0xc);if(g===O)break;else h['push'](h['shift']());}catch(J){h['push'](h['shift']());}}}(m,0x4e183));import{Type}from'@sinclair/typebox';const D={};D[z(0x12f)]=0x1,D[z(0x126)]=0x80;const L={};L[z(0x12f)]=0x1,L[z(0x126)]=0x800;const s={};s[z(0x12f)]=0x1,s[z(0x126)]=0x400;const X={};X[z(0x12f)]=0x1;const M={};M[z(0x12f)]=0x1;const u={};u[z(0x12f)]=0x1;const o={};function p(D,L){D=D-0x121;const s=m();let X=s[D];return X;}o[z(0x12f)]=0x1;const r={};r[z(0x12f)]=0x1;const i={};i[z(0x12f)]=0x1;function m(){const l=['69633VHybnD','outside','Any','32816uwuVfn','inside','2068040dvIfmg','maxLength','762dDuyAd','Literal','contain','Integer','606132eoQUWw','270GziVdm','939257qAxogJ','String','minLength','Union','fill','minimum','4GfsWlt','2358BKNSFa','Object','939JxLAcf','Optional','108NPLYDs','cover','1885335szufau'];m=function(){return l;};return m();}const q={};q[z(0x132)]=0x1;const R={};R[z(0x132)]=0x1;export const fileSchemas={'fileId':Type[z(0x135)]({'id':Type[z(0x12e)](D)}),'fileToken':Type[z(0x135)]({'token':Type[z(0x12e)](L)}),'filePath':Type[z(0x135)]({'*':Type[z(0x12e)](s)}),'upload':Type[z(0x135)]({'file':Type[z(0x122)](),'metadata':Type[z(0x135)]({'name':Type[z(0x137)](Type[z(0x12e)](X)),'path':Type[z(0x137)](Type[z(0x12e)](M)),'entityType':Type[z(0x137)](Type[z(0x12e)](u)),'entityId':Type[z(0x137)](Type[z(0x12e)](o))})}),'filePatch':Type[z(0x135)]({'entityType':Type[z(0x137)](Type[z(0x12e)](r)),'entityId':Type[z(0x137)](Type[z(0x12e)](i))}),'resizeQuery':Type[z(0x135)]({'width':Type[z(0x137)](Type[z(0x12a)](q)),'height':Type[z(0x137)](Type[z(0x12a)](R)),'fit':Type[z(0x137)](Type[z(0x130)]([Type[z(0x128)](z(0x139)),Type[z(0x128)](z(0x129)),Type[z(0x128)](z(0x131)),Type[z(0x128)](z(0x124)),Type[z(0x128)](z(0x121))]))})};
1
+ const d=S;import{Type}from'@sinclair/typebox';function S(d,h){d=d-0x17e;const p=v();let Z=p[d];return Z;}export const fileSchemas={'fileId':Type['Object']({'id':Type['String']({'minLength':0x1,'maxLength':0x80})}),'fileToken':Type['Object']({'token':Type['String']({'minLength':0x1,'maxLength':0x800})}),'fileDownloadQuery':Type[d(0x17e)]({'download':Type['Optional'](Type['Boolean']())}),'filePath':Type['Object']({'*':Type['String']({'minLength':0x1,'maxLength':0x400})}),'upload':Type['Object']({'file':Type[d(0x17f)](),'metadata':Type['Object']({'name':Type['Optional'](Type['String']({'minLength':0x1})),'path':Type['Optional'](Type['String']({'minLength':0x1})),'entityType':Type['Optional'](Type[d(0x180)]({'minLength':0x1})),'entityId':Type['Optional'](Type['String']({'minLength':0x1}))})}),'filePatch':Type['Object']({'entityType':Type['Optional'](Type['String']({'minLength':0x1})),'entityId':Type[d(0x181)](Type['String']({'minLength':0x1}))}),'resizeQuery':Type[d(0x17e)]({'width':Type['Optional'](Type[d(0x182)]({'minimum':0x1,'default':0xc8})),'height':Type[d(0x181)](Type['Integer']({'minimum':0x1})),'fit':Type['Optional'](Type['Union']([Type['Literal']('cover'),Type['Literal']('contain'),Type[d(0x183)](d(0x184)),Type['Literal']('inside'),Type['Literal'](d(0x185))]))})};function v(){const h=['Object','Any','String','Optional','Integer','Literal','fill','outside'];v=function(){return h;};return v();}
@@ -1 +1 @@
1
- (function(D,L){var u=p,s=D();while(!![]){try{var X=parseInt(u(0x1d0))/0x1+-parseInt(u(0x1cc))/0x2*(-parseInt(u(0x1d5))/0x3)+parseInt(u(0x1c6))/0x4+-parseInt(u(0x1cd))/0x5+-parseInt(u(0x1d3))/0x6*(-parseInt(u(0x1cb))/0x7)+-parseInt(u(0x1c7))/0x8+parseInt(u(0x1ce))/0x9*(parseInt(u(0x1d4))/0xa);if(X===L)break;else s['push'](s['shift']());}catch(M){s['push'](s['shift']());}}}(m,0x4d5a6));function m(){var r=['42gGPxBu','10ioqyZQ','13977ngQzJQ','get','342564KeoSMW','1477960SaKLda','File\x20not\x20found','file','empty\x20file','167951AALtMt','8xCTuav','2448985HDJyBz','6170589DckLzR','exists','33531LaOCKm','jiAXf','pathOrToken'];m=function(){return r;};return m();}function p(D,L){D=D-0x1c5;var s=m();var X=s[D];return X;}import{NotFoundError}from'../../../errors.js';export async function getFile(L,s){var o=p,X={};X[o(0x1d1)]=o(0x1ca);var M=X;if(!s[o(0x1c9)])throw new Error(M[o(0x1d1)]);if(!await s[o(0x1c9)][o(0x1cf)](L[o(0x1d2)]))throw new NotFoundError(o(0x1c8));return s[o(0x1c9)][o(0x1c5)](L[o(0x1d2)]);}
1
+ function v(){var Z=['File\x20not\x20found','pathOrToken','file'];v=function(){return Z;};return v();}function S(d,h){d=d-0x1de;var p=v();var Z=p[d];return Z;}import{NotFoundError}from'../../../errors.js';export async function getFile(d,h){var p=S;if(!h['file'])throw new Error('empty\x20file');if(!await h['file']['exists'](d['pathOrToken']))throw new NotFoundError(p(0x1de)+d[p(0x1df)]);return h[p(0x1e0)]['get'](d['pathOrToken']);}
@@ -1 +1 @@
1
- {"version":3,"file":"resize-file.d.ts","sourceRoot":"","sources":["../../../../src/modules/file/services/resize-file.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;CAC3D;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,MAAM,CAAC,CAwBjB"}
1
+ {"version":3,"file":"resize-file.d.ts","sourceRoot":"","sources":["../../../../src/modules/file/services/resize-file.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAQtD,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;CAC3D;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,MAAM,CAAC,CAuCjB"}