@opengis/fcore 0.0.1-beta.2 → 0.0.1-beta.21

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 (248) hide show
  1. package/LICENSE +3 -3
  2. package/README.md +71 -71
  3. package/dist/config.d.ts +2 -10
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +1 -1
  6. package/dist/context.js +1 -1
  7. package/dist/errors.js +1 -1
  8. package/dist/fastify.d.ts +2 -5
  9. package/dist/fastify.d.ts.map +1 -1
  10. package/dist/fastify.js +1 -1
  11. package/dist/fcore.js +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 +23 -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 +15 -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 +17 -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/audit.types.d.ts +1 -1
  124. package/dist/plugins/audit/audit.types.d.ts.map +1 -1
  125. package/dist/plugins/audit/index.js +1 -1
  126. package/dist/plugins/audit/services/write-audit.js +1 -1
  127. package/dist/plugins/auth/get-user-permissions.d.ts +3 -0
  128. package/dist/plugins/auth/get-user-permissions.d.ts.map +1 -0
  129. package/dist/plugins/auth/get-user-permissions.js +1 -0
  130. package/dist/plugins/auth/index.d.ts +4 -0
  131. package/dist/plugins/auth/index.d.ts.map +1 -1
  132. package/dist/plugins/auth/index.js +1 -1
  133. package/dist/plugins/auth/verifyUser.d.ts +9 -0
  134. package/dist/plugins/auth/verifyUser.d.ts.map +1 -0
  135. package/dist/plugins/auth/verifyUser.js +1 -0
  136. package/dist/plugins/dictionary.d.ts +3 -0
  137. package/dist/plugins/dictionary.d.ts.map +1 -1
  138. package/dist/plugins/dictionary.js +1 -1
  139. package/dist/plugins/file.d.ts +3 -6
  140. package/dist/plugins/file.d.ts.map +1 -1
  141. package/dist/plugins/file.js +1 -1
  142. package/dist/plugins/index.d.ts +2 -0
  143. package/dist/plugins/index.d.ts.map +1 -1
  144. package/dist/plugins/index.js +1 -1
  145. package/dist/plugins/jwt.d.ts +4 -0
  146. package/dist/plugins/jwt.d.ts.map +1 -0
  147. package/dist/plugins/jwt.js +1 -0
  148. package/dist/plugins/logger/index.js +1 -1
  149. package/dist/plugins/logger/transport.js +1 -1
  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 +73 -15
  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 +9 -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 +9 -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 +1 -1
  207. package/dist/plugins/resource/utils/sort.d.ts.map +1 -1
  208. package/dist/plugins/resource/utils/sort.js +1 -1
  209. package/dist/plugins/resource/utils/sql.d.ts +1 -1
  210. package/dist/plugins/resource/utils/sql.d.ts.map +1 -1
  211. package/dist/plugins/resource/utils/sql.js +1 -1
  212. package/dist/shared/getIP.js +1 -1
  213. package/dist/type.d.ts +14 -0
  214. package/dist/type.d.ts.map +1 -1
  215. package/migrations/20260903120000_core_schema.sql +27 -21
  216. package/migrations/20260903130000_move_notes_files_to_admin.sql +17 -17
  217. package/migrations/20260903130001_add_file_fields.sql +5 -0
  218. package/migrations/20260903140000_settings_nulls_not_distinct.sql +18 -18
  219. package/migrations/20260905120000_add_user_foreign_keys.sql +43 -0
  220. package/migrations/20260907090000_core_schema.sql +32 -0
  221. package/package.json +93 -88
  222. package/dist/modules/auth/index.d.ts +0 -9
  223. package/dist/modules/auth/index.d.ts.map +0 -1
  224. package/dist/modules/auth/index.js +0 -1
  225. package/dist/modules/auth/services/login.d.ts +0 -10
  226. package/dist/modules/auth/services/login.d.ts.map +0 -1
  227. package/dist/modules/auth/services/login.js +0 -1
  228. package/dist/modules/auth/services/logout.d.ts +0 -9
  229. package/dist/modules/auth/services/logout.d.ts.map +0 -1
  230. package/dist/modules/auth/services/logout.js +0 -1
  231. package/dist/modules/auth/services/verifyPassword.d.ts +0 -11
  232. package/dist/modules/auth/services/verifyPassword.d.ts.map +0 -1
  233. package/dist/modules/auth/services/verifyPassword.js +0 -1
  234. package/dist/modules/file/index.d.ts +0 -8
  235. package/dist/modules/file/index.d.ts.map +0 -1
  236. package/dist/modules/file/index.js +0 -1
  237. package/dist/modules/resource/index.d.ts +0 -20
  238. package/dist/modules/resource/index.d.ts.map +0 -1
  239. package/dist/modules/resource/index.js +0 -1
  240. package/dist/modules/resource/services/list-children.d.ts +0 -6
  241. package/dist/modules/resource/services/list-children.d.ts.map +0 -1
  242. package/dist/modules/resource/services/list-children.js +0 -1
  243. package/dist/modules/system/index.d.ts +0 -13
  244. package/dist/modules/system/index.d.ts.map +0 -1
  245. package/dist/modules/system/index.js +0 -1
  246. package/dist/modules/utils/get-user-permissions.d.ts +0 -3
  247. package/dist/modules/utils/get-user-permissions.d.ts.map +0 -1
  248. package/dist/modules/utils/get-user-permissions.js +0 -1
package/LICENSE CHANGED
@@ -1,3 +1,3 @@
1
- Copyright (c) OpenGIS. All rights reserved.
2
-
3
- Proprietary and confidential.
1
+ Copyright (c) OpenGIS. All rights reserved.
2
+
3
+ Proprietary and confidential.
package/README.md CHANGED
@@ -1,72 +1,72 @@
1
- # @opengis/fcore
2
-
3
- Reusable backend foundation for OpenGIS Node.js applications: config, typed application context, PostgreSQL, Redis, S3 file storage, audit, trusted Resource CRUD, Core modules, Fastify integration and SQL migration runner.
4
-
5
- ## Install
6
-
7
- ```bash
8
- npm install @opengis/fcore
9
- ```
10
-
11
- ## Bootstrap
12
-
13
- ```ts
14
- import { createFCore } from '@opengis/fcore';
15
- import resources from './resources/index.js';
16
-
17
- export const ctx = await createFCore({ resources });
18
- ```
19
-
20
- ```ts
21
- import Fastify from 'fastify';
22
- import fcoreFastify from '@opengis/fcore/fastify';
23
- import { ctx } from './app.js';
24
-
25
- const app = Fastify();
26
- await app.register(fcoreFastify, { ctx });
27
- await app.listen({ port: ctx.config.port });
28
- ```
29
-
30
- ## Resource
31
-
32
- All dynamic table/column identifiers come from registered `ResourceContract` metadata. Values are SQL parameters.
33
-
34
- ## Migrations
35
-
36
- Project SQL files stay in `./migrations`. Build the package/application, then run `fcore-migrate` or import `runMigrations()`.
37
-
38
- ## Module service convention
39
-
40
- Module services are plain async functions with the canonical `service(params, ctx)` signature. `ctx` is passed explicitly from `fastify.ts` to each module `route.ts`; there is no `service.ts` or `createService()` factory.
41
-
42
- ## Structure
43
-
44
- ```bash
45
- @opengis/fcore
46
- ├── src/
47
- │ ├── plugins/
48
- │ │ ├── logger/
49
- │ │ ├── redis/
50
- │ │ ├── pg/
51
- │ │ ├── file/
52
- │ │ ├── audit/
53
- │ │ └── resource/
54
- │ ├── modules/
55
- │ │ ├── auth/
56
- │ │ ├── access/
57
- │ │ ├── resource/
58
- │ │ ├── file/
59
- │ │ ├── template/
60
- │ │ └── system/
61
- │ ├── migrations/
62
- │ ├── config.ts # loadConfig
63
- │ ├── context.ts # createContext, set, get
64
- │ ├── errors.ts # standard Errors
65
- │ ├── fastify.ts # fastify Plugins
66
- │ ├── fcore.ts # createFcore
67
- │ └── index.ts # export type, methods, etc
68
- ├── test/
69
- ├── engineering/
70
- ├── package.json
71
- └── tsconfig.json
1
+ # @opengis/fcore
2
+
3
+ Reusable backend foundation for OpenGIS Node.js applications: config, typed application context, PostgreSQL, Redis, S3 file storage, audit, trusted Resource CRUD, Core modules, Fastify integration and SQL migration runner.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install @opengis/fcore
9
+ ```
10
+
11
+ ## Bootstrap
12
+
13
+ ```ts
14
+ import { createFCore } from '@opengis/fcore';
15
+ import resources from './resources/index.js';
16
+
17
+ export const ctx = await createFCore({ resources });
18
+ ```
19
+
20
+ ```ts
21
+ import Fastify from 'fastify';
22
+ import fcoreFastify from '@opengis/fcore/fastify';
23
+ import { ctx } from './app.js';
24
+
25
+ const app = Fastify();
26
+ await app.register(fcoreFastify, { ctx });
27
+ await app.listen({ port: ctx.config.port });
28
+ ```
29
+
30
+ ## Resource
31
+
32
+ All dynamic table/column identifiers come from registered `ResourceContract` metadata. Values are SQL parameters.
33
+
34
+ ## Migrations
35
+
36
+ Project SQL files stay in `./migrations`. Build the package/application, then run `fcore-migrate` or import `runMigrations()`.
37
+
38
+ ## Module service convention
39
+
40
+ Module services are plain async functions with the canonical `service(params, ctx)` signature. `ctx` is passed explicitly from `fastify.ts` to each module `route.ts`; there is no `service.ts` or `createService()` factory.
41
+
42
+ ## Structure
43
+
44
+ ```bash
45
+ @opengis/fcore
46
+ ├── src/
47
+ │ ├── plugins/
48
+ │ │ ├── logger/
49
+ │ │ ├── redis/
50
+ │ │ ├── pg/
51
+ │ │ ├── file/
52
+ │ │ ├── audit/
53
+ │ │ └── resource/
54
+ │ ├── modules/
55
+ │ │ ├── auth/
56
+ │ │ ├── access/
57
+ │ │ ├── resource/
58
+ │ │ ├── file/
59
+ │ │ ├── template/
60
+ │ │ └── system/
61
+ │ ├── migrations/
62
+ │ ├── config.ts # loadConfig
63
+ │ ├── context.ts # createContext, set, get
64
+ │ ├── errors.ts # standard Errors
65
+ │ ├── fastify.ts # fastify Plugins
66
+ │ ├── fcore.ts # createFcore
67
+ │ └── index.ts # export type, methods, etc
68
+ ├── test/
69
+ ├── engineering/
70
+ ├── package.json
71
+ └── tsconfig.json
72
72
  ```
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(_0x475fb2,_0x9ba96e){const _0x54da58=_0x1201,_0x5e6b4d=_0x475fb2();while(!![]){try{const _0x498738=parseInt(_0x54da58(0x145))/0x1+parseInt(_0x54da58(0x13f))/0x2*(parseInt(_0x54da58(0x138))/0x3)+parseInt(_0x54da58(0x139))/0x4*(parseInt(_0x54da58(0x144))/0x5)+parseInt(_0x54da58(0x134))/0x6*(-parseInt(_0x54da58(0x149))/0x7)+parseInt(_0x54da58(0x125))/0x8*(parseInt(_0x54da58(0x129))/0x9)+-parseInt(_0x54da58(0x12a))/0xa+-parseInt(_0x54da58(0x11b))/0xb*(parseInt(_0x54da58(0x14f))/0xc);if(_0x498738===_0x9ba96e)break;else _0x5e6b4d['push'](_0x5e6b4d['shift']());}catch(_0x1126f6){_0x5e6b4d['push'](_0x5e6b4d['shift']());}}}(_0x1ec8,0x888cc));import'dotenv/config';const DEFAULT_LOG_RESPONSE_STATUS_CODES=[0x193,0x199,0x19d,0x19f,0x1ad];function required(_0x422ff7){const _0x1a6c7b=_0x1201,_0x59af5d=process.env[_0x422ff7];if(!_0x59af5d)throw new Error(_0x1a6c7b(0x147)+_0x422ff7);return _0x59af5d;}function _0x1ec8(){const _0x459dca=['/2factor','1397RaSwNu','cicAS','/log','path','Qhscc','KiUuk','vocpQ','x5y30KBsEKCENT04tu6549Vxx3No1ztJ2q2K8r79S59420RaZ5','password','PYJsA','463768cfiQmG','session_user_auth','/login','./storage','63pjiFQX','4618930NmVQtb','KCbnE','development','true','info','iclBE','IAGfH','CvDoj','Ch7QR4e73Jg0wx0xOjm','XatTd','1245576sAfLUg','fmUoR','DtlLW','secure','129GvzXQd','18988Exirxb','localhost','parse','phmFe','VDmnu','none','47822Ypdkqm','strict','lax','bdlzM','httpOnly','570IVaGUq','555604zznjFo','EeZNK','Missing\x20environment\x20variable:\x20','auth','35oqpaYa','sameSite','0ua4b1Tz21m47z13U3EO0uN9e0WE7hqRFbcZ72cbdWqZBzemf9cAU865xan1s81TdNpUKKfF','split','potZI','cwd','44556JvTAEX','FLRVP','vXRoW','map','redis','WcTWA','false','kxCJk','us-east-1','BprjW','logger','includes'];_0x1ec8=function(){return _0x459dca;};return _0x1ec8();}export function loadConfig(_0xda1334={}){const _0x5eaf3f=_0x1201,_0x2b4f33={'PYJsA':_0x5eaf3f(0x12c),'CvDoj':function(_0x292b85,_0x4b3756){return _0x292b85===_0x4b3756;},'iclBE':_0x5eaf3f(0x12d),'KiUuk':function(_0x30be48,_0x515e92){return _0x30be48(_0x515e92);},'kxCJk':_0x5eaf3f(0x155),'Qhscc':_0x5eaf3f(0x128),'phmFe':_0x5eaf3f(0x123),'vXRoW':_0x5eaf3f(0x12e),'vocpQ':_0x5eaf3f(0x13a),'bdlzM':function(_0x3eefb3,_0x1676b6){return _0x3eefb3(_0x1676b6);},'VDmnu':_0x5eaf3f(0x157),'potZI':function(_0x1acf41,_0x5b9de8){return _0x1acf41!==_0x5b9de8;},'EeZNK':_0x5eaf3f(0x132),'DtlLW':_0x5eaf3f(0x122),'cicAS':_0x5eaf3f(0x126),'IAGfH':_0x5eaf3f(0x14b),'BprjW':function(_0x55a053,_0x9269d8){return _0x55a053(_0x9269d8);},'WcTWA':function(_0x39fc00,_0x58a4bc){return _0x39fc00(_0x58a4bc);},'FLRVP':_0x5eaf3f(0x141),'fmUoR':_0x5eaf3f(0x140),'KCbnE':_0x5eaf3f(0x13e),'XatTd':function(_0x186a20,_0x56da87){return _0x186a20(_0x56da87);}},_0x1ea45c={};_0x1ea45c[_0x5eaf3f(0x11e)]='/',_0x1ea45c[_0x5eaf3f(0x143)]=!![],_0x1ea45c[_0x5eaf3f(0x137)]=![],_0x1ea45c[_0x5eaf3f(0x14a)]=!![];const _0x16463a={'env':process.env.NODE_ENV??_0x2b4f33[_0x5eaf3f(0x124)],'debug':_0x2b4f33[_0x5eaf3f(0x131)](process.env.DEBUG,_0x2b4f33[_0x5eaf3f(0x12f)]),'port':_0x2b4f33[_0x5eaf3f(0x120)](Number,process.env.PORT??0xbb8),'maxFileSize':+(process.env.MAX_FILE_SIZE||0x200),'rateLimit':{'disabled':process.env.RATE_LIMIT===_0x2b4f33[_0x5eaf3f(0x156)],'max':+(process.env.RATE_LIMIT_MAX||0x64),'timeWindow':+(process.env.RATE_LIMIT_TIME_WINDOW||0xea60)},'storagePath':process.env.STORAGE_PATH??_0x2b4f33[_0x5eaf3f(0x11f)],'redactionList':(process.env.REDACTION_LIST||_0x2b4f33[_0x5eaf3f(0x13c)])[_0x5eaf3f(0x14c)](','),'logger':{'level':process.env.LOG_LEVEL??_0x2b4f33[_0x5eaf3f(0x151)],'responses':_0x2b4f33[_0x5eaf3f(0x131)](process.env.LOG_RESPONSES,_0x2b4f33[_0x5eaf3f(0x12f)])?!![]:![],'responseCodes':process.env.LOG_RESPONSE_STATUS_CODES?process.env.LOG_RESPONSE_STATUS_CODES[_0x5eaf3f(0x14c)](',')[_0x5eaf3f(0x152)](_0x8b8831=>_0x8b8831-0x0):DEFAULT_LOG_RESPONSE_STATUS_CODES,'directory':process.env.LOG_DIRECTORY||process[_0x5eaf3f(0x14e)]()+_0x5eaf3f(0x11d)},'pg':{'host':process.env.PG_HOST??_0x2b4f33[_0x5eaf3f(0x121)],'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':_0x2b4f33[_0x5eaf3f(0x142)](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??_0x2b4f33[_0x5eaf3f(0x13d)],'bucket':process.env.S3_BUCKET??'','accessKey':process.env.S3_ACCESS_KEY,'secretKey':process.env.S3_SECRET_KEY,'folder':process.env.S3_FOLDER,'forcePathStyle':_0x2b4f33[_0x5eaf3f(0x14d)](process.env.S3_FORCE_PATH_STYLE,_0x2b4f33[_0x5eaf3f(0x156)]),'tokenSecret':process.env.FILE_TOKEN_SECRET,'tokenTtl':_0x2b4f33[_0x5eaf3f(0x120)](Number,process.env.FILE_TOKEN_TTL??0xe10)},'auth':{'accessToken':process.env.AUTH_ACCESS_TOKEN||_0x2b4f33[_0x5eaf3f(0x146)],'user':process.env.AUTH_USER?JSON[_0x5eaf3f(0x13b)](process.env.AUTH_USER):undefined,'sessionTimeout':+(process.env.AUTH_SESSION_TIMEOUT||0x258),'secret':process.env.AUTH_SECRET??_0x2b4f33[_0x5eaf3f(0x136)],'cookieName':process.env.AUTH_COOKIE_NAME??_0x2b4f33[_0x5eaf3f(0x11c)],'jwtSecret':process.env.AUTH_JWT_SECRET??_0x2b4f33[_0x5eaf3f(0x130)],'link':{'base':{'login':process.env.AUTH_BASE_LINK_LOGIN??_0x5eaf3f(0x127),'afterLogin':process.env.AUTH_BASE_LINK_LOGIN??'/'},'twoFactor':{'login':process.env.AUTH_TWOFACTOR_LINK_LOGIN??_0x5eaf3f(0x11a),'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':_0x2b4f33[_0x5eaf3f(0x117)](Boolean,process.env.AUTH_COOKIE_OPTIONS_HTTP_ONLY||_0x2b4f33[_0x5eaf3f(0x12f)]),'secure':_0x2b4f33[_0x5eaf3f(0x154)](Boolean,process.env.AUTH_COOKIE_OPTIONS_SECURE||_0x2b4f33[_0x5eaf3f(0x12f)]),'sameSite':process.env.AUTH_COOKIE_OPTIONS_SAME_SITE&&[_0x2b4f33[_0x5eaf3f(0x150)],_0x2b4f33[_0x5eaf3f(0x135)],_0x2b4f33[_0x5eaf3f(0x12b)]][_0x5eaf3f(0x119)](process.env.AUTH_COOKIE_OPTIONS_SAME_SITE)?process.env.AUTH_COOKIE_OPTIONS_SAME_SITE:_0x2b4f33[_0x5eaf3f(0x133)](Boolean,process.env.AUTH_COOKIE_OPTIONS_SAME_SITE||_0x5eaf3f(0x12d))}:_0x1ea45c}},_0x235cfd={..._0x16463a,..._0xda1334};return _0x235cfd[_0x5eaf3f(0x118)]={..._0x16463a[_0x5eaf3f(0x118)],..._0xda1334[_0x5eaf3f(0x118)]},_0x235cfd['pg']={..._0x16463a['pg'],..._0xda1334['pg']},_0x235cfd[_0x5eaf3f(0x153)]={..._0x16463a[_0x5eaf3f(0x153)],..._0xda1334[_0x5eaf3f(0x153)]},_0x235cfd['s3']={..._0x16463a['s3'],..._0xda1334['s3']},_0x235cfd[_0x5eaf3f(0x148)]={..._0x16463a[_0x5eaf3f(0x148)],..._0xda1334[_0x5eaf3f(0x148)]},_0x235cfd;}function _0x1201(_0x4fd18e,_0x164254){_0x4fd18e=_0x4fd18e-0x117;const _0x1ec850=_0x1ec8();let _0x12011f=_0x1ec850[_0x4fd18e];return _0x12011f;}export{required as requireEnv};
1
+ import'dotenv/config';function r(n,k){n=n-0x1b3;const Z=g();let K=Z[n];return K;}function g(){const d=['false','password','split','map','us-east-1','session_user_auth','0ua4b1Tz21m47z13U3EO0uN9e0WE7hqRFbcZ72cbdWqZBzemf9cAU865xan1s81TdNpUKKfF','true','logger'];g=function(){return d;};return g();}const DEFAULT_LOG_RESPONSE_STATUS_CODES=[0x193,0x199,0x19d,0x19f,0x1ad];function required(n){const k=process.env[n];if(!k)throw new Error('Missing\x20environment\x20variable:\x20'+n);return k;}export function loadConfig(n={}){const K=r,k={'env':process.env.NODE_ENV??'development','debug':process.env.DEBUG==='true','port':Number(process.env.PORT??0xbb8),'maxFileSize':+(process.env.MAX_FILE_SIZE||0x200),'rateLimit':{'disabled':process.env.RATE_LIMIT===K(0x1b3),'max':+(process.env.RATE_LIMIT_MAX||0x64),'timeWindow':+(process.env.RATE_LIMIT_TIME_WINDOW||0xea60)},'storagePath':process.env.STORAGE_PATH??'./storage','redactionList':(process.env.REDACTION_LIST||K(0x1b4))[K(0x1b5)](','),'logger':{'level':process.env.LOG_LEVEL??'info','responses':process.env.LOG_RESPONSES==='true'?!![]:![],'responseCodes':process.env.LOG_RESPONSE_STATUS_CODES?process.env.LOG_RESPONSE_STATUS_CODES['split'](',')[K(0x1b6)](Z=>Z-0x0):DEFAULT_LOG_RESPONSE_STATUS_CODES,'directory':process.env.LOG_DIRECTORY||process['cwd']()+'/log'},'pg':{'host':process.env.PG_HOST??'localhost','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??K(0x1b7),'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??K(0x1b8),'jwtSecret':process.env.AUTH_JWT_SECRET??K(0x1b9),'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','strict','none']['includes'](process.env.AUTH_COOKIE_OPTIONS_SAME_SITE)?process.env.AUTH_COOKIE_OPTIONS_SAME_SITE:Boolean(process.env.AUTH_COOKIE_OPTIONS_SAME_SITE||K(0x1ba))}:{'path':'/','httpOnly':!![],'secure':![],'sameSite':!![]}}};return{...k,...n,'logger':{...k[K(0x1bb)],...n['logger']},'pg':{...k['pg'],...n['pg']},'redis':{...k['redis'],...n['redis']},'s3':{...k['s3'],...n['s3']},'auth':{...k['auth'],...n['auth']}};}export{required as requireEnv};
package/dist/context.js CHANGED
@@ -1 +1 @@
1
- function _0x5928(_0x57f451,_0x34fd5a){_0x57f451=_0x57f451-0x16f;const _0x5143d3=_0x5143();let _0x592874=_0x5143d3[_0x57f451];return _0x592874;}(function(_0x33548c,_0x20513b){const _0x49adba=_0x5928,_0x6b034b=_0x33548c();while(!![]){try{const _0x21fcc9=-parseInt(_0x49adba(0x17c))/0x1*(parseInt(_0x49adba(0x176))/0x2)+-parseInt(_0x49adba(0x177))/0x3+parseInt(_0x49adba(0x172))/0x4+-parseInt(_0x49adba(0x178))/0x5+-parseInt(_0x49adba(0x17f))/0x6+-parseInt(_0x49adba(0x174))/0x7*(-parseInt(_0x49adba(0x173))/0x8)+-parseInt(_0x49adba(0x17d))/0x9*(-parseInt(_0x49adba(0x17b))/0xa);if(_0x21fcc9===_0x20513b)break;else _0x6b034b['push'](_0x6b034b['shift']());}catch(_0x372bb8){_0x6b034b['push'](_0x6b034b['shift']());}}}(_0x5143,0x91e53));let defaultContext;function _0x5143(){const _0x4a614e=['redis','795180InfbGl','1184MyFRvu','17990mRAfxi','PSoBR','2JhyBNE','523179GdTbrh','1629480EccYpf','end','allSettled','130USuBLD','391863QYtsBL','1092609IslDeK','Application\x20context\x20is\x20not\x20initialized','4005774RTTFHU','close','logger'];_0x5143=function(){return _0x4a614e;};return _0x5143();}export function setContext(_0x356c5d){defaultContext=_0x356c5d;}export function getContext(){const _0x693f83=_0x5928,_0x26f1ff={};_0x26f1ff[_0x693f83(0x175)]=_0x693f83(0x17e);const _0x304459=_0x26f1ff;if(!defaultContext)throw new Error(_0x304459[_0x693f83(0x175)]);return defaultContext;}export function createContext(_0x1a3d39){return{..._0x1a3d39,async 'close'(){const _0x731fa0=_0x5928;await Promise[_0x731fa0(0x17a)]([_0x1a3d39[_0x731fa0(0x171)]?.[_0x731fa0(0x16f)](),_0x1a3d39['pg']?.[_0x731fa0(0x179)]()]),await _0x1a3d39[_0x731fa0(0x170)][_0x731fa0(0x16f)]();}};}
1
+ let defaultContext;function g(){const K=['Application\x20context\x20is\x20not\x20initialized','end','logger'];g=function(){return K;};return g();}export function setContext(n){defaultContext=n;}export function getContext(){const k=r;if(!defaultContext)throw new Error(k(0x1e3));return defaultContext;}function r(n,k){n=n-0x1e3;const Z=g();let K=Z[n];return K;}export function createContext(n){return{...n,async 'close'(){const Z=r;await Promise['allSettled']([n['redis']?.['close'](),n['pg']?.[Z(0x1e4)]()]),await n[Z(0x1e5)]['close']();}};}
package/dist/errors.js CHANGED
@@ -1 +1 @@
1
- var _0x2f7421=_0x4a8c;(function(_0x57f71c,_0x2bd798){var _0x17dbc0=_0x4a8c,_0x371676=_0x57f71c();while(!![]){try{var _0x9267cc=parseInt(_0x17dbc0(0x9d))/0x1+parseInt(_0x17dbc0(0x84))/0x2+-parseInt(_0x17dbc0(0x87))/0x3+parseInt(_0x17dbc0(0x97))/0x4+-parseInt(_0x17dbc0(0x9b))/0x5+-parseInt(_0x17dbc0(0x83))/0x6*(parseInt(_0x17dbc0(0x7f))/0x7)+parseInt(_0x17dbc0(0x9c))/0x8*(parseInt(_0x17dbc0(0x89))/0x9);if(_0x9267cc===_0x2bd798)break;else _0x371676['push'](_0x371676['shift']());}catch(_0x17cf09){_0x371676['push'](_0x371676['shift']());}}}(_0x3a89,0x56e47));export class FCoreError extends Error{[_0x2f7421(0x85)];[_0x2f7421(0x98)];[_0x2f7421(0x94)];constructor(_0x112297,_0x16382f,_0x40a601=0x1f4,_0x1276e7){var _0x431a03=_0x2f7421,_0x5e5788={};_0x5e5788[_0x431a03(0x96)]=_0x431a03(0x91);var _0x15f927=_0x5e5788,_0x3ddcd2=_0x15f927[_0x431a03(0x96)][_0x431a03(0x7d)]('|'),_0x42f737=0x0;while(!![]){switch(_0x3ddcd2[_0x42f737++]){case'0':this[_0x431a03(0x94)]=_0x1276e7;continue;case'1':super(_0x16382f);continue;case'2':this[_0x431a03(0x95)]=new.target.name;continue;case'3':this[_0x431a03(0x98)]=_0x40a601;continue;case'4':this[_0x431a03(0x85)]=_0x112297;continue;}break;}}}export class BadRequestError extends FCoreError{constructor(_0x51e497,_0xfa7d2b){var _0x4aca0=_0x2f7421;super(_0x4aca0(0x93),_0x51e497,0x190,_0xfa7d2b);}}export class UnauthorizedError extends FCoreError{constructor(_0x54378c=_0x2f7421(0x86)){var _0x55bcbb=_0x2f7421,_0x570296={};_0x570296[_0x55bcbb(0x92)]=_0x55bcbb(0x7e);var _0x46e39=_0x570296;super(_0x46e39[_0x55bcbb(0x92)],_0x54378c,0x191);}}export class ForbiddenError extends FCoreError{constructor(_0x3d467d=_0x2f7421(0x8b)){var _0x20aef3=_0x2f7421,_0x129520={};_0x129520[_0x20aef3(0x88)]=_0x20aef3(0x9a);var _0x4759f1=_0x129520;super(_0x4759f1[_0x20aef3(0x88)],_0x3d467d,0x193);}}function _0x4a8c(_0x2d16ae,_0x5aafda){_0x2d16ae=_0x2d16ae-0x7d;var _0x3a8932=_0x3a89();var _0x4a8c1c=_0x3a8932[_0x2d16ae];return _0x4a8c1c;}function _0x3a89(){var _0x5b690a=['gqyQs','BAD_REQUEST_ERROR','details','name','bCYWH','571772FwvQeR','statusCode','ufOMZ','FORBIDDEN','654255pnUjYY','8NEBROA','205190znprwR','split','UNAUTHORIZED','431263WAikQb','Operation\x20is\x20not\x20configured','UNSUPPORTED','VALIDATION_ERROR','48aHzFjp','806082FogWGx','code','Authentication\x20required','656133vymDcK','OpKAO','4024539MYxnfu','wYxLC','Access\x20denied','Not\x20found','CONFLICT','Conflict','NOT_FOUND','GnjvP','1|4|3|0|2'];_0x3a89=function(){return _0x5b690a;};return _0x3a89();}export class NotFoundError extends FCoreError{constructor(_0x37b873=_0x2f7421(0x8c)){var _0x156c66=_0x2f7421,_0x45fc4d={};_0x45fc4d[_0x156c66(0x8a)]=_0x156c66(0x8f);var _0x15faef=_0x45fc4d;super(_0x15faef[_0x156c66(0x8a)],_0x37b873,0x194);}}export class ConflictError extends FCoreError{constructor(_0x4eb0e0=_0x2f7421(0x8e)){var _0x2a96ee=_0x2f7421;super(_0x2a96ee(0x8d),_0x4eb0e0,0x199);}}export class ValidationError extends FCoreError{constructor(_0x4ed02e,_0x201008){var _0x41e577=_0x2f7421,_0x1e2caa={};_0x1e2caa[_0x41e577(0x99)]=_0x41e577(0x82);var _0x54d3ce=_0x1e2caa;super(_0x54d3ce[_0x41e577(0x99)],_0x4ed02e,0x1a6,_0x201008);}}export class UnsupportedError extends FCoreError{constructor(_0x1d20c6=_0x2f7421(0x80)){var _0x562254=_0x2f7421,_0x1141d4={};_0x1141d4[_0x562254(0x90)]=_0x562254(0x81);var _0x8daa0b=_0x1141d4;super(_0x8daa0b[_0x562254(0x90)],_0x1d20c6,0x1f5);}}
1
+ var J=r;export class FCoreError extends Error{['code'];['statusCode'];['details'];constructor(n,k,Z=0x1f4,K){var d=r;super(k),this['code']=n,this['statusCode']=Z,this[d(0x1b8)]=K,this['name']=new.target.name;}}function r(n,k){n=n-0x1b8;var Z=g();var K=Z[n];return K;}export class BadRequestError extends FCoreError{constructor(n,k){super('BAD_REQUEST_ERROR',n,0x190,k);}}export class UnauthorizedError extends FCoreError{constructor(n='Authentication\x20required'){super('UNAUTHORIZED',n,0x191);}}export class ForbiddenError extends FCoreError{constructor(n=J(0x1b9)){super('FORBIDDEN',n,0x193);}}export class NotFoundError extends FCoreError{constructor(n=J(0x1ba)){super('NOT_FOUND',n,0x194);}}export class ConflictError extends FCoreError{constructor(n='Conflict'){super('CONFLICT',n,0x199);}}function g(){var l=['details','Access\x20denied','Not\x20found','Operation\x20is\x20not\x20configured','UNSUPPORTED'];g=function(){return l;};return g();}export class ValidationError extends FCoreError{constructor(n,k){super('VALIDATION_ERROR',n,0x1a6,k);}}export class UnsupportedError extends FCoreError{constructor(n=J(0x1bb)){var B=J;super(B(0x1bc),n,0x1f5);}}
package/dist/fastify.d.ts CHANGED
@@ -1,8 +1,5 @@
1
1
  import { type FastifyPluginAsync } from "fastify";
2
2
  import type { AppContext } from "./context.js";
3
- export interface FCoreFastifyOptions {
4
- ctx: AppContext;
5
- }
6
- declare const _default: FastifyPluginAsync<FCoreFastifyOptions>;
7
- export default _default;
3
+ export type FCoreApiModule = "auth" | "resource" | "file" | "system";
4
+ export default function fcoreFastify(ctx: AppContext, modules?: readonly FCoreApiModule[]): FastifyPluginAsync;
8
5
  //# 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":"AAKA,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;AAYrE,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,GAAG,EAAE,UAAU,EACf,OAAO,CAAC,EAAE,SAAS,cAAc,EAAE,GAClC,kBAAkB,CA8IpB"}
package/dist/fastify.js CHANGED
@@ -1 +1 @@
1
- const _0x551422=_0xb687;(function(_0x4b560b,_0x3a95ac){const _0x21463a=_0xb687,_0xc6111=_0x4b560b();while(!![]){try{const _0x3f442c=-parseInt(_0x21463a(0xbd))/0x1*(parseInt(_0x21463a(0xc4))/0x2)+-parseInt(_0x21463a(0xca))/0x3+parseInt(_0x21463a(0xc1))/0x4*(-parseInt(_0x21463a(0x8d))/0x5)+-parseInt(_0x21463a(0xb2))/0x6*(parseInt(_0x21463a(0x93))/0x7)+parseInt(_0x21463a(0xbc))/0x8*(-parseInt(_0x21463a(0xc0))/0x9)+-parseInt(_0x21463a(0xa2))/0xa*(parseInt(_0x21463a(0x98))/0xb)+parseInt(_0x21463a(0xb8))/0xc;if(_0x3f442c===_0x3a95ac)break;else _0xc6111['push'](_0xc6111['shift']());}catch(_0x29c964){_0xc6111['push'](_0xc6111['shift']());}}}(_0x5575,0xa8448));import _0x214a30 from'fastify-plugin';import{FCoreError}from'./errors.js';import{authRoutes}from'./modules/auth/index.js';import{fileRoutes}from'./modules/file/index.js';import{resourceRoutes}from'./modules/resource/index.js';import{systemRoutes}from'./modules/system/index.js';import{createSessionStore}from'./plugins/auth/index.js';function urlencodedContentParser(_0x123ec3,_0x22b377,_0xee7430){const _0xb5627f=_0xb687,_0x41368e={'BZkse':function(_0x16990c,_0xe123f2){return _0x16990c(_0xe123f2);},'aITXG':function(_0x5e7a25,_0x39a99f,_0x42af77){return _0x5e7a25(_0x39a99f,_0x42af77);}},_0x15b9d5=_0x41368e[_0xb5627f(0xa4)](decodeURIComponent,_0x22b377[_0xb5627f(0xae)]())[_0xb5627f(0xb4)]('&')[_0xb5627f(0xd0)]((_0x4d1ef5,_0x59fc1f)=>{const _0x20244e=_0xb5627f,[_0xb5cf5e,_0x35edb6]=_0x59fc1f[_0x20244e(0xb4)]('='),_0x513b58={..._0x4d1ef5};return _0x513b58[_0xb5cf5e]=_0x35edb6,_0x513b58;},{});_0x41368e[_0xb5627f(0x94)](_0xee7430,null,_0x15b9d5);}function _0x5575(){const _0x137811=['@fastify/multipart','name','@opengis/fcore','Internal\x20server\x20error','mwtIv','cBaze','KUzYA','WcRIi','decorate','LCqDp','user','IDQcH','128385lyQIra','INTERNAL_ERROR','HcSVs','eUnXd','Huqie','setErrorHandler','1524173JtdLUP','aITXG','HVjRz','mNCBr','VuPHZ','13675750LSBsZv','preHandler','application/x-www-form-urlencoded','ZCrXc','rFTDW','statusCode','ZCxIn','KZobD','BiKmu','buffer','10dWiiuP','eMJrN','BZkse','AEcKF','url','ZIbTV','QtNhD','log','send','DSMfm','timeWindow','pwqfL','toString','⚠️\x20rate\x20limit\x20is\x20disabled','max','FST_ERR_VALIDATION','6hHFCpL','@fastify/rate-limit','split','maxFileSize','ctx','CQphq','53907660RYCWZC','addContentTypeParser','code','rateLimit','8cSPQct','12898CHypBI','IJUMt','message','10335087sVkIYP','100yzGYkf','test','true','66FzEyGI','disabled','GwREx','details','register','PYZjN','378570pdbqkb','mHJkd','logger','RYWGH','IdZXe','raw','reduce','error'];_0x5575=function(){return _0x137811;};return _0x5575();}function _0xb687(_0x354e3c,_0x157159){_0x354e3c=_0x354e3c-0x82;const _0x55756e=_0x5575();let _0xb6870a=_0x55756e[_0x354e3c];return _0xb6870a;}const plugin=async(_0x3bbdcb,{ctx:_0x378511})=>{const _0x32658d=_0xb687,_0x4838b6={'PYZjN':_0x32658d(0xaf),'Huqie':function(_0x24f16d,_0x21d47a){return _0x24f16d===_0x21d47a;},'ZCrXc':_0x32658d(0xc6),'RYWGH':function(_0x4e9274,_0x5392f4){return _0x4e9274 instanceof _0x5392f4;},'pwqfL':function(_0xfe5635,_0x5c2a2a){return _0xfe5635===_0x5c2a2a;},'BiKmu':_0x32658d(0xb1),'mHJkd':_0x32658d(0xa7),'QtNhD':_0x32658d(0xc3),'KUzYA':_0x32658d(0xc2),'VuPHZ':_0x32658d(0x8e),'IJUMt':_0x32658d(0x84),'KZobD':function(_0x43362c,_0x54b81c){return _0x43362c instanceof _0x54b81c;},'mwtIv':function(_0x4b23e0,_0x4f05b1){return _0x4b23e0===_0x4f05b1;},'eMJrN':function(_0x54eaee,_0x11a55d){return _0x54eaee===_0x11a55d;},'HVjRz':_0x32658d(0xb6),'HcSVs':function(_0x4c2930,_0x4a146a){return _0x4c2930(_0x4a146a);},'cBaze':function(_0x32440b,_0x351363){return _0x32440b(_0x351363);},'mNCBr':_0x32658d(0x9a),'LCqDp':_0x32658d(0xa1),'WcRIi':_0x32658d(0xb3),'CQphq':_0x32658d(0x99),'eUnXd':function(_0x4a1ef7,_0x4ed1c1){return _0x4a1ef7===_0x4ed1c1;},'DSMfm':_0x32658d(0x9c),'ZCxIn':_0x32658d(0xd2),'IdZXe':function(_0x1cd9d6,_0x2d5633){return _0x1cd9d6*_0x2d5633;},'AEcKF':function(_0x29df32,_0x3e52d7){return _0x29df32*_0x3e52d7;}};_0x3bbdcb[_0x32658d(0x89)](_0x4838b6[_0x32658d(0x95)],_0x378511);const {config:_0x3e1155}=_0x378511;await createSessionStore(_0x3bbdcb,_0x378511),_0x3bbdcb[_0x32658d(0x92)]((_0x341af7,_0x313e38,_0x4b05dd)=>{const _0x3b484e=_0x32658d,_0x149bfb={};_0x149bfb[_0x3b484e(0x8c)]=_0x4838b6[_0x3b484e(0xc9)];const _0x5bb9c1=_0x149bfb;if(_0x4838b6[_0x3b484e(0x91)](_0x3b484e(0xc6),_0x4838b6[_0x3b484e(0x9b)])){if(_0x4838b6[_0x3b484e(0xcd)](_0x341af7,FCoreError)||_0x4838b6[_0x3b484e(0xad)](_0x341af7[_0x3b484e(0xba)],_0x4838b6[_0x3b484e(0xa0)])){if(_0x4838b6[_0x3b484e(0xcb)]!==_0x3b484e(0xa7)){const _0x2de1b9={};return _0x2de1b9[_0x3b484e(0xd1)]=_0x2b0654[_0x3b484e(0xba)],_0x2de1b9[_0x3b484e(0xbf)]=_0x554a98[_0x3b484e(0xbf)],_0x2de1b9[_0x3b484e(0xc7)]=_0x351cb7[_0x3b484e(0xc7)],_0x285016[_0x3b484e(0xba)](_0x30d4aa[_0x3b484e(0x9d)])[_0x3b484e(0xaa)](_0x2de1b9);}else return _0x4b05dd[_0x3b484e(0xba)](_0x341af7[_0x3b484e(0x9d)])[_0x3b484e(0xaa)]({'error':_0x341af7[_0x3b484e(0xba)],'message':_0x341af7[_0x3b484e(0xbf)],'details':_0x341af7[_0x3b484e(0xc7)]});}_0x378511[_0x3b484e(0xcc)][_0x3b484e(0xd1)](_0x341af7);(_0x4838b6[_0x3b484e(0xad)](process.env.trace,_0x4838b6[_0x3b484e(0xa8)])||_0x4838b6[_0x3b484e(0xad)](process.env.NODE_ENV,_0x4838b6[_0x3b484e(0x87)])||process.env.VITEST)&&console[_0x3b484e(0xd1)](_0x341af7);const _0x74787e={};return _0x74787e[_0x3b484e(0xd1)]=_0x4838b6[_0x3b484e(0x97)],_0x74787e[_0x3b484e(0xbf)]=_0x4838b6[_0x3b484e(0xbe)],_0x4b05dd[_0x3b484e(0xba)](0x1f4)[_0x3b484e(0xaa)](_0x74787e);}else _0x4791e6[_0x3b484e(0xa9)](_0x5bb9c1[_0x3b484e(0x8c)]);}),await _0x3bbdcb[_0x32658d(0xc8)](_0x4838b6[_0x32658d(0x8f)](authRoutes,_0x378511)),await _0x3bbdcb[_0x32658d(0xc8)](_0x4838b6[_0x32658d(0x8f)](resourceRoutes,_0x378511)),await _0x3bbdcb[_0x32658d(0xc8)](_0x4838b6[_0x32658d(0x8f)](fileRoutes,_0x378511)),await _0x3bbdcb[_0x32658d(0xc8)](_0x4838b6[_0x32658d(0x86)](systemRoutes,_0x378511)),_0x3bbdcb[_0x32658d(0xb9)](_0x4838b6[_0x32658d(0x96)],{'parseAs':_0x4838b6[_0x32658d(0x8a)]},urlencodedContentParser);if(!_0x3e1155[_0x32658d(0xbb)]?.[_0x32658d(0xc5)])_0x3bbdcb[_0x32658d(0xc8)](import(_0x4838b6[_0x32658d(0x88)]),{'max':_0x3e1155[_0x32658d(0xbb)]?.[_0x32658d(0xb0)]||0x64,'timeWindow':_0x3e1155[_0x32658d(0xbb)]?.[_0x32658d(0xac)]||0xea60,'hook':_0x4838b6[_0x32658d(0xb7)],'global':!![],'keyGenerator':_0x5896be=>(_0x5896be[_0x32658d(0x8b)]?.['id']||_0x5896be['ip'])+'-'+_0x5896be[_0x32658d(0xcf)][_0x32658d(0xa6)][_0x32658d(0xb4)]('?')[0x0]});else{if(_0x4838b6[_0x32658d(0x90)](_0x4838b6[_0x32658d(0xab)],_0x4838b6[_0x32658d(0xab)]))console[_0x32658d(0xa9)](_0x32658d(0xaf));else{if(_0x4838b6[_0x32658d(0x9f)](_0x33195e,_0x1caee0)||_0x4838b6[_0x32658d(0x85)](_0x4625c8[_0x32658d(0xba)],_0x4838b6[_0x32658d(0xa0)])){const _0x84e78f={};return _0x84e78f[_0x32658d(0xd1)]=_0x3229c1[_0x32658d(0xba)],_0x84e78f[_0x32658d(0xbf)]=_0x1e5107[_0x32658d(0xbf)],_0x84e78f[_0x32658d(0xc7)]=_0x275cc8[_0x32658d(0xc7)],_0x1715ed[_0x32658d(0xba)](_0x3bb743[_0x32658d(0x9d)])[_0x32658d(0xaa)](_0x84e78f);}_0x17f5d5[_0x32658d(0xcc)][_0x32658d(0xd1)](_0x35ff85);(_0x4838b6[_0x32658d(0xa3)](_0x76d7e.env.trace,_0x32658d(0xc3))||_0x554c1b.env.NODE_ENV===_0x32658d(0xc2)||_0x282589.env.VITEST)&&_0x28dc9e[_0x32658d(0xd1)](_0x2b431a);const _0x192b02={};return _0x192b02[_0x32658d(0xd1)]=_0x4838b6[_0x32658d(0x97)],_0x192b02[_0x32658d(0xbf)]=_0x32658d(0x84),_0x54b788[_0x32658d(0xba)](0x1f4)[_0x32658d(0xaa)](_0x192b02);}}_0x3bbdcb[_0x32658d(0xc8)](import(_0x4838b6[_0x32658d(0x9e)]),{'limits':{'fileSize':_0x4838b6[_0x32658d(0xce)](_0x4838b6[_0x32658d(0xa5)](_0x3e1155[_0x32658d(0xb5)],0x400),0x400)}});},_0x30a82c={};_0x30a82c[_0x551422(0x82)]=_0x551422(0x83);export default _0x214a30(plugin,_0x30a82c);
1
+ import n from'fastify-plugin';import{FCoreError}from'./errors.js';import{authRoutes}from'./modules/auth/route.js';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';function r(n,k){n=n-0xc0;const Z=g();let K=Z[n];return K;}import{ForbiddenError}from'./errors.js';import{jwtVerifyToken}from'./plugins/jwt.js';function urlencodedContentParser(k,Z,K){const d=decodeURIComponent(Z['toString']())['split']('&')['reduce']((J,B)=>{const [l,f]=B['split']('=');return{...J,[l]:f};},{});K(null,d);}export default function fcoreFastify(k,Z){return n(async K=>{const O=r;K['decorate']('ctx',k);const {config:d}=k,J=new Map();K[O(0xc0)]('onRoute',l=>{const m=O,f=l['schema'],R=Array['isArray'](l['method'])?l['method']:[l['method']];for(const Q of R){if(Q==='HEAD')continue;const a={'method':Q,'endpoint':l['url'],'package':f?.['package']??m(0xc1),'tags':f?.['tags']??[],'summary':f?.['summary']??'','description':f?.['description']??'','access':f?.[m(0xc2)]??m(0xc3),'permissions':f?.['permissions']??[]};J['set'](Q+'\x20'+l['url'],a);}}),K['addHook']('preHandler',async l=>{const p=O;if(l['routeOptions']['url']==='*')return!![];const f=J['get'](l[p(0xc4)]+'\x20'+l['routeOptions']['url']),R=!l['user']&&process[p(0xc5)]==='win32'&&k['config']?.[p(0xc6)]?.['user']?k['config']?.['auth']?.['user']:null,Q=l['raw']['headers']?.['authorization'],a=Q?.['startsWith']('Bearer\x20')?Q['slice'](0x7):null,H=l['user']??(a?await jwtVerifyToken(a):R);!l['user']&&a&&process.env.AUTH_JWT_SECRET&&(l['user']=await jwtVerifyToken(a));if(!f?.['access'])throw new Error(p(0xc7));if(f['access']===p(0xc3))return!![];if(!H)throw new ForbiddenError(p(0xc8));if(f['access']==='user'&&!f['permissions']?.['length'])return!![];if(H['type']=='admin')return!![];if(f[p(0xc2)]==='admin')throw new ForbiddenError('Admin\x20access\x20required');for(const A of f[p(0xc9)]){const I=A?.[p(0xca)]('$resource',l['params']['resource']??'');if(!H['permissions']?.['includes'](I))throw new ForbiddenError('Missing\x20permission:\x20'+I);}return!![];}),await createSessionStore(K,k),await K['register'](import('@fastify/multipart'),{'limits':{'fileSize':d['maxFileSize']*0x400*0x400}}),K[O(0xcb)]((l,f,R)=>{const C=O;if(l instanceof FCoreError||l['code']===C(0xcc)||l[C(0xcd)]<0x1f4)return l[C(0xcd)]<0x1f4&&k['logger']['warn'](l),R['code'](l['statusCode'])['send']({'error':l[C(0xce)],'message':l[C(0xcf)],'details':l[C(0xd0)]});return k['logger']['error'](l),(d['debug']||process.env.NODE_ENV==='test'||process.env.VITEST)&&console['error'](l),R[C(0xce)](0x1f4)['send']({'error':'INTERNAL_ERROR','message':C(0xd1)});});const B=l=>!Z||Z[O(0xd2)](l);if(B('auth'))await K['register'](authRoutes(k));if(B('resource'))await K['register'](resourceRoutes(k));if(B('file'))await K[O(0xd3)](fileRoutes(k));if(B('system'))await K['register'](systemRoutes(k,J));K[O(0xd4)]('application/x-www-form-urlencoded',{'parseAs':'buffer'},urlencodedContentParser),!d['rateLimit']?.[O(0xd5)]?K['register'](import(O(0xd6)),{'max':d['rateLimit']?.['max']||0x64,'timeWindow':d[O(0xd7)]?.['timeWindow']||0xea60,'hook':O(0xd8),'global':!![],'keyGenerator':l=>(l['user']?.['id']||l['ip'])+'-'+l['raw']['url'][O(0xd9)]('?')[0x0]}):console['log']('⚠️\x20rate\x20limit\x20is\x20disabled');});}function g(){const T=['addHook','fcore','access','public','method','platform','auth','Route\x20access\x20not\x20defined','User\x20required','permissions','replace','setErrorHandler','FST_ERR_VALIDATION','statusCode','code','message','details','Internal\x20server\x20error','includes','register','addContentTypeParser','disabled','@fastify/rate-limit','rateLimit','preHandler','split'];g=function(){return T;};return g();}
package/dist/fcore.js CHANGED
@@ -1 +1 @@
1
- (function(_0x7855cb,_0x3fd0fe){const _0x119525=_0x259e,_0x2fe959=_0x7855cb();while(!![]){try{const _0x1d9a7f=-parseInt(_0x119525(0x199))/0x1+-parseInt(_0x119525(0x194))/0x2+parseInt(_0x119525(0x193))/0x3+parseInt(_0x119525(0x1a1))/0x4+-parseInt(_0x119525(0x195))/0x5+parseInt(_0x119525(0x1a2))/0x6+parseInt(_0x119525(0x18e))/0x7*(parseInt(_0x119525(0x198))/0x8);if(_0x1d9a7f===_0x3fd0fe)break;else _0x2fe959['push'](_0x2fe959['shift']());}catch(_0x416f7c){_0x2fe959['push'](_0x2fe959['shift']());}}}(_0x28db,0x232dd));import{loadConfig}from'./config.js';import{createContext,setContext}from'./context.js';import{createAudit,createDatabase,createDictionary,createFileS3,createLogger,createRedis,createResource}from'./plugins/index.js';function _0x259e(_0x4fbbdc,_0x4e031a){_0x4fbbdc=_0x4fbbdc-0x18a;const _0x28db78=_0x28db();let _0x259e3f=_0x28db78[_0x4fbbdc];return _0x259e3f;}export async function createFCore(_0x5bfa6b={}){const _0x44e9ca=_0x259e,_0x55afdc={'DNyvU':function(_0x524437,_0x54f115){return _0x524437(_0x54f115);},'AHaMD':function(_0xc0389b,_0x5376b3){return _0xc0389b(_0x5376b3);},'aCTUV':function(_0x1bd1f6){return _0x1bd1f6();},'aHxTE':function(_0x148877,_0x1cdffc){return _0x148877(_0x1cdffc);},'sizhj':function(_0x150c90,_0x39f9f8){return _0x150c90(_0x39f9f8);}},_0xfb04e7=_0x55afdc[_0x44e9ca(0x1aa)](loadConfig,_0x5bfa6b[_0x44e9ca(0x19d)]),_0x1ec8a0=_0x55afdc[_0x44e9ca(0x1a8)](createRedis,_0xfb04e7[_0x44e9ca(0x1a9)]),_0x396758=_0x55afdc[_0x44e9ca(0x18f)](createLogger),_0x479b3c=createDatabase(_0xfb04e7['pg']),_0x2783df={};_0x2783df[_0x44e9ca(0x18b)]=_0xfb04e7['s3'][_0x44e9ca(0x18b)],_0x2783df[_0x44e9ca(0x192)]=_0xfb04e7['s3'][_0x44e9ca(0x192)],_0x2783df[_0x44e9ca(0x18d)]=_0xfb04e7['s3'][_0x44e9ca(0x18d)],_0x2783df[_0x44e9ca(0x1a6)]=_0xfb04e7['s3'][_0x44e9ca(0x1a6)],_0x2783df[_0x44e9ca(0x19a)]=_0xfb04e7['s3'][_0x44e9ca(0x19a)],_0x2783df[_0x44e9ca(0x19c)]=_0xfb04e7['s3'][_0x44e9ca(0x19c)],_0x2783df[_0x44e9ca(0x18a)]=_0xfb04e7['s3'][_0x44e9ca(0x18a)],_0x2783df[_0x44e9ca(0x19b)]=_0xfb04e7['s3'][_0x44e9ca(0x19b)],_0x2783df[_0x44e9ca(0x1a3)]=_0xfb04e7['s3'][_0x44e9ca(0x1a3)];const _0x5d5de3=_0x55afdc[_0x44e9ca(0x1aa)](createFileS3,_0x2783df),_0xa135fe={};_0xa135fe['pg']=_0x479b3c,_0xa135fe[_0x44e9ca(0x19f)]=_0x396758;const _0x579928=createAudit(_0xa135fe),_0x2ce43a={};_0x2ce43a['pg']=_0x479b3c,_0x2ce43a[_0x44e9ca(0x190)]=_0x5bfa6b[_0x44e9ca(0x190)];const _0x3a5dea=_0x55afdc[_0x44e9ca(0x196)](createDictionary,_0x2ce43a),_0x51ca2e={};_0x51ca2e['pg']=_0x479b3c,_0x51ca2e[_0x44e9ca(0x19f)]=_0x396758,_0x51ca2e[_0x44e9ca(0x197)]=_0x579928;const _0x3410b6=createResource(_0x51ca2e);_0x5bfa6b[_0x44e9ca(0x19e)]?.[_0x44e9ca(0x1a5)]&&_0x3410b6[_0x44e9ca(0x1a4)](_0x5bfa6b[_0x44e9ca(0x19e)]);const _0x34a520={};_0x34a520[_0x44e9ca(0x19d)]=_0xfb04e7,_0x34a520[_0x44e9ca(0x19f)]=_0x396758,_0x34a520[_0x44e9ca(0x1a9)]=_0x1ec8a0,_0x34a520['pg']=_0x479b3c,_0x34a520[_0x44e9ca(0x191)]=_0x5d5de3,_0x34a520[_0x44e9ca(0x1a0)]=_0x3410b6,_0x34a520[_0x44e9ca(0x197)]=_0x579928,_0x34a520[_0x44e9ca(0x1a7)]=_0x3a5dea;const _0xbb7251=createContext(_0x34a520);return _0x55afdc[_0x44e9ca(0x18c)](setContext,_0xbb7251),_0xbb7251;}function _0x28db(){const _0x36862a=['AHaMD','redis','DNyvU','forcePathStyle','endpoint','sizhj','bucket','182qThntr','aCTUV','dictionaries','file','region','74847xWfWza','390050GjUSCK','967310xBOLGD','aHxTE','audit','163456pPaktN','281224FheCQt','secretKey','tokenSecret','folder','config','resources','logger','resource','371668RkpfuQ','988236bXGeVt','tokenTtl','register','length','accessKey','dictionary'];_0x28db=function(){return _0x36862a;};return _0x28db();}
1
+ import{loadConfig}from'./config.js';import{createContext,setContext}from'./context.js';function g(){const a=['accessKey','secretKey','tokenSecret','tokenTtl','resources'];g=function(){return a;};return g();}import{createAudit,createDatabase,createDictionary,createFileS3,createLogger,createRedis,createResource}from'./plugins/index.js';function r(n,k){n=n-0x1d7;const Z=g();let K=Z[n];return K;}export async function createFCore(n={}){const Q=r,k=loadConfig(n['config']),Z=createRedis(k['redis']),K=createLogger(),d=createDatabase(k['pg']),J=createFileS3({'endpoint':k['s3']['endpoint'],'region':k['s3']['region'],'bucket':k['s3']['bucket'],'accessKey':k['s3'][Q(0x1d7)],'secretKey':k['s3'][Q(0x1d8)],'folder':k['s3']['folder'],'forcePathStyle':k['s3']['forcePathStyle'],'tokenSecret':k['s3'][Q(0x1d9)],'tokenTtl':k['s3'][Q(0x1da)]}),B=createAudit({'pg':d,'logger':K}),l=createDictionary({'pg':d,'dictionaries':n['dictionaries']}),f=createResource({'pg':d,'logger':K,'audit':B,'dictionary':l,'file':J});n['resources']?.['length']&&f['register'](n[Q(0x1db)]);const R=createContext({'config':k,'logger':K,'redis':Z,'pg':d,'file':J,'resource':f,'audit':B,'dictionary':l});return setContext(R),R;}
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- (function(_0xd126ff,_0x3d34df){var _0x2620aa=_0x2c00,_0x51bdfa=_0xd126ff();while(!![]){try{var _0x5e3747=-parseInt(_0x2620aa(0xce))/0x1+-parseInt(_0x2620aa(0xcd))/0x2+parseInt(_0x2620aa(0xd0))/0x3+parseInt(_0x2620aa(0xd2))/0x4+-parseInt(_0x2620aa(0xd1))/0x5*(-parseInt(_0x2620aa(0xcf))/0x6)+-parseInt(_0x2620aa(0xd3))/0x7*(parseInt(_0x2620aa(0xcb))/0x8)+-parseInt(_0x2620aa(0xcc))/0x9;if(_0x5e3747===_0x3d34df)break;else _0x51bdfa['push'](_0x51bdfa['shift']());}catch(_0x534f34){_0x51bdfa['push'](_0x51bdfa['shift']());}}}(_0x5973,0xc117b));export*from'./errors.js';function _0x2c00(_0x3997d3,_0x415887){_0x3997d3=_0x3997d3-0xcb;var _0x5973ed=_0x5973();var _0x2c0037=_0x5973ed[_0x3997d3];return _0x2c0037;}export*from'./config.js';export*from'./context.js';export*from'./plugins/index.js';export*from'./fcore.js';export*from'./migrations/runner.js';function _0x5973(){var _0x6b8239=['554386HSOdkE','1410226anWrIP','771036hpqdyB','3855639MnNGBm','50IwFNqn','6117536mJkCWA','21868SZqTom','56LXIIbB','14395167IpsEEU'];_0x5973=function(){return _0x6b8239;};return _0x5973();}export*from'./type.js';
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 _0x4be6d8=_0x3721;function _0x3721(_0x2b6154,_0x364f52){_0x2b6154=_0x2b6154-0x14d;const _0x260168=_0x2601();let _0x3721c2=_0x260168[_0x2b6154];return _0x3721c2;}(function(_0xec2cf0,_0x2cbac9){const _0x2c500b=_0x3721,_0x21f288=_0xec2cf0();while(!![]){try{const _0x416f8e=-parseInt(_0x2c500b(0x153))/0x1+-parseInt(_0x2c500b(0x14d))/0x2+parseInt(_0x2c500b(0x15b))/0x3*(-parseInt(_0x2c500b(0x15f))/0x4)+-parseInt(_0x2c500b(0x161))/0x5+-parseInt(_0x2c500b(0x155))/0x6*(-parseInt(_0x2c500b(0x157))/0x7)+-parseInt(_0x2c500b(0x154))/0x8*(parseInt(_0x2c500b(0x151))/0x9)+-parseInt(_0x2c500b(0x15a))/0xa*(-parseInt(_0x2c500b(0x15c))/0xb);if(_0x416f8e===_0x2cbac9)break;else _0x21f288['push'](_0x21f288['shift']());}catch(_0x5b3e1f){_0x21f288['push'](_0x21f288['shift']());}}}(_0x2601,0xf40e6));import{runMigrations}from'./runner.js';import{loadConfig}from'../config.js';function _0x2601(){const _0x1aeaa6=['SKIP','288NtKyVJ','exitCode','546785imsmJU','457200HUPQyI','18JyblEp','file','3525466iqhRkC','database','OK\x20\x20','610yvKhwO','3lfyuBP','591998brEpyE','Loaded\x20configuration:','error','360284yqJsiX','log','1875860ItEQrF','1906660OkGKgn','status','run'];_0x2601=function(){return _0x1aeaa6;};return _0x2601();}try{const config=loadConfig();console[_0x4be6d8(0x160)](_0x4be6d8(0x15d),config['pg']);const _0x3926b6={};_0x3926b6[_0x4be6d8(0x158)]=config['pg'];for(const r of await runMigrations(_0x3926b6))console[_0x4be6d8(0x160)]((r[_0x4be6d8(0x14e)]===_0x4be6d8(0x14f)?_0x4be6d8(0x159):_0x4be6d8(0x150))+'\x20'+r[_0x4be6d8(0x156)]);}catch(_0x230461){console[_0x4be6d8(0x15e)](_0x230461),process[_0x4be6d8(0x152)]=0x1;}
2
+ const R=n;import{runMigrations}from'./runner.js';import{loadConfig}from'../config.js';function g(){const Q=['--fcore','startsWith','****','log','run'];g=function(){return Q;};return g();}import k from'node:path';function n(r,k){r=r-0x14f;const Z=g();let K=Z[r];return K;}import{fileURLToPath}from'node:url';const packageMigrations=fileURLToPath(new URL('../../migrations',import.meta.url));function migrationDirectory(Z){const f=n,K=Z['indexOf']('--dir');if(K>=0x0){const J=Z[K+0x1];if(!J)throw new Error('--dir\x20requires\x20a\x20folder\x20path');return k['resolve'](J);}if(Z['includes'](f(0x14f)))return packageMigrations;const d=Z['find'](B=>!B[f(0x150)]('--'));return k['resolve'](d??'migrations');}try{const config=loadConfig(),dir=migrationDirectory(process['argv']['slice'](0x2));console['log']('Loaded\x20configuration:',{...config['pg'],'user':R(0x151),'password':R(0x151)}),console['log']('Using\x20migration\x20directory:',dir,process['argv']['slice'](0x2));for(const r of await runMigrations({'database':config['pg'],'dir':dir}))console[R(0x152)]((r['status']===R(0x153)?'OK\x20\x20':'SKIP')+'\x20'+r['file']);}catch(l){console['error'](l),process['exitCode']=0x1;}
@@ -1 +1 @@
1
- (function(_0x1eb83f,_0x1f8a18){const _0x1c7a3a=_0x3c9d,_0x24becc=_0x1eb83f();while(!![]){try{const _0x1b4045=-parseInt(_0x1c7a3a(0x154))/0x1+-parseInt(_0x1c7a3a(0x150))/0x2*(parseInt(_0x1c7a3a(0x146))/0x3)+parseInt(_0x1c7a3a(0x139))/0x4+parseInt(_0x1c7a3a(0x13e))/0x5+-parseInt(_0x1c7a3a(0x177))/0x6+-parseInt(_0x1c7a3a(0x14a))/0x7*(-parseInt(_0x1c7a3a(0x160))/0x8)+-parseInt(_0x1c7a3a(0x145))/0x9;if(_0x1b4045===_0x1f8a18)break;else _0x24becc['push'](_0x24becc['shift']());}catch(_0xc7f0d4){_0x24becc['push'](_0x24becc['shift']());}}}(_0x1491,0xc56b3));function _0x1491(){const _0x3452c4=['10761096buWLdJ','utf8','lSzNa','EthiX','vuZDG','sbxmt','QEKrg','\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','hostname','INSERT\x20INTO\x20schema_migrations(version)\x20VALUES\x20($1)','zZoBH','OMrCq','password','empty\x20pg','TmcEX','status','map','COMMIT','slice','FTVEU','RiBUX','file','username','5300226WZwqrK','AjTSI','query','endsWith','MTMJP','SELECT\x20version\x20FROM\x20schema_migrations','GPXeD','fJpOL','dir','end','TUsWE','version','eCPKL','hLhlb','pathname','4666492dvlptV','fHHrg','connect','NVOdI','rAWEB','7456625zIlvkN','databaseUrl','DATABASE_URL\x20or\x20database\x20config\x20is\x20required','release','filter','skip','rows','7569369hutFcA','2625YYebOQ','BEGIN','join','skbTH','7SXHPZi','.sql','ROLLBACK','xQQHx','jwAGQ','migrations','982nlWyfi','hfytl','readdir','sort','1040421sqQayn','push','has','run','drMGq','resolve','tIPTq','database','vrQua','readFile','qaPyV','port'];_0x1491=function(){return _0x3452c4;};return _0x1491();}import _0x18184c from'node:fs/promises';import _0xe7e38e from'node:path';import{createDatabase}from'../plugins/pg.js';export async function runMigrations(_0x16af57={}){const _0x317fdd=_0x3c9d,_0xe972b7={'hfytl':_0x317fdd(0x140),'vrQua':_0x317fdd(0x14f),'MTMJP':function(_0x5f4389,_0x5f2a7a){return _0x5f4389(_0x5f2a7a);},'rAWEB':function(_0x3d1952,_0x1dd56c){return _0x3d1952!==_0x1dd56c;},'lSzNa':_0x317fdd(0x15e),'TmcEX':_0x317fdd(0x158),'TUsWE':_0x317fdd(0x16d),'OMrCq':_0x317fdd(0x17c),'eCPKL':_0x317fdd(0x166),'AjTSI':_0x317fdd(0x14e),'NVOdI':_0x317fdd(0x143),'RiBUX':_0x317fdd(0x147),'zZoBH':_0x317fdd(0x169),'EthiX':_0x317fdd(0x171),'tIPTq':_0x317fdd(0x149),'FTVEU':_0x317fdd(0x164),'sbxmt':_0x317fdd(0x14c)},_0x3fb74d=_0xe7e38e[_0x317fdd(0x159)](_0x16af57[_0x317fdd(0x132)]??_0xe972b7[_0x317fdd(0x15c)]),_0x4809bf=_0x16af57[_0x317fdd(0x15b)]??_0xe972b7[_0x317fdd(0x17b)](databaseFromUrl,_0x16af57[_0x317fdd(0x13f)]??process.env.DATABASE_URL);if(!_0x4809bf)throw new Error(_0xe972b7[_0x317fdd(0x151)]);const _0x1a9642=_0xe972b7[_0x317fdd(0x17b)](createDatabase,_0x4809bf);if(!_0x1a9642){if(_0xe972b7[_0x317fdd(0x13d)](_0xe972b7[_0x317fdd(0x162)],_0xe972b7[_0x317fdd(0x16e)]))throw new Error(_0xe972b7[_0x317fdd(0x134)]);else throw new _0x1cff0e(_0xe972b7[_0x317fdd(0x151)]);}const _0x35e6f7=[];try{await _0x1a9642[_0x317fdd(0x179)](_0x317fdd(0x167));const _0x1c82b3=await _0x1a9642[_0x317fdd(0x179)](_0xe972b7[_0x317fdd(0x16b)]),_0x4d6e6c=new Set(_0x1c82b3[_0x317fdd(0x144)][_0x317fdd(0x170)](_0xfb6a2b=>_0xfb6a2b[_0x317fdd(0x135)])),_0x188265=(await _0x18184c[_0x317fdd(0x152)](_0x3fb74d))[_0x317fdd(0x142)](_0x3760fa=>_0x3760fa[_0x317fdd(0x17a)](_0x317fdd(0x14b)))[_0x317fdd(0x153)]();for(const _0x390b0e of _0x188265){if(_0xe972b7[_0x317fdd(0x136)]===_0xe972b7[_0x317fdd(0x178)])return _0x390551;else{if(_0x4d6e6c[_0x317fdd(0x156)](_0x390b0e)){const _0xe78cd7={};_0xe78cd7[_0x317fdd(0x175)]=_0x390b0e,_0xe78cd7[_0x317fdd(0x16f)]=_0xe972b7[_0x317fdd(0x13c)],_0x35e6f7[_0x317fdd(0x155)](_0xe78cd7);continue;}const _0x6da40c=await _0x18184c[_0x317fdd(0x15d)](_0xe7e38e[_0x317fdd(0x148)](_0x3fb74d,_0x390b0e),_0x317fdd(0x161)),_0x39a8b7=await _0x1a9642[_0x317fdd(0x13b)]();try{await _0x39a8b7[_0x317fdd(0x179)](_0xe972b7[_0x317fdd(0x174)]),await _0x39a8b7[_0x317fdd(0x179)](_0x6da40c),await _0x39a8b7[_0x317fdd(0x179)](_0xe972b7[_0x317fdd(0x16a)],[_0x390b0e]),await _0x39a8b7[_0x317fdd(0x179)](_0xe972b7[_0x317fdd(0x163)]);}catch(_0x5ece1f){if(_0xe972b7[_0x317fdd(0x15a)]===_0xe972b7[_0x317fdd(0x173)])_0x1e2d81[_0x317fdd(0x141)]();else{await _0x39a8b7[_0x317fdd(0x179)](_0xe972b7[_0x317fdd(0x165)]);throw _0x5ece1f;}}finally{_0x39a8b7[_0x317fdd(0x141)]();}const _0x59bddc={};_0x59bddc[_0x317fdd(0x175)]=_0x390b0e,_0x59bddc[_0x317fdd(0x16f)]=_0x317fdd(0x157),_0x35e6f7[_0x317fdd(0x155)](_0x59bddc);}}return _0x35e6f7;}finally{await _0x1a9642[_0x317fdd(0x133)]();}}function _0x3c9d(_0x12ddfb,_0x1aff5e){_0x12ddfb=_0x12ddfb-0x131;const _0x14913f=_0x1491();let _0x3c9d4a=_0x14913f[_0x12ddfb];return _0x3c9d4a;}function databaseFromUrl(_0x400095){const _0x50cf8b=_0x3c9d,_0x2ddaa4={'xQQHx':_0x50cf8b(0x16d),'GPXeD':function(_0x56e357,_0x423269){return _0x56e357!==_0x423269;},'hLhlb':_0x50cf8b(0x131),'fHHrg':function(_0x3b8314,_0x3df3e7){return _0x3b8314(_0x3df3e7);}};if(!_0x400095){if(_0x2ddaa4[_0x50cf8b(0x17d)](_0x2ddaa4[_0x50cf8b(0x137)],_0x2ddaa4[_0x50cf8b(0x137)]))throw new _0x1ed101(LKITyc[_0x50cf8b(0x14d)]);else return undefined;}const _0x2a2919=new URL(_0x400095);return{'host':_0x2a2919[_0x50cf8b(0x168)],'port':_0x2ddaa4[_0x50cf8b(0x13a)](Number,_0x2a2919[_0x50cf8b(0x15f)]||0x1538),'database':_0x2a2919[_0x50cf8b(0x138)][_0x50cf8b(0x172)](0x1),'user':_0x2ddaa4[_0x50cf8b(0x13a)](decodeURIComponent,_0x2a2919[_0x50cf8b(0x176)]),'password':_0x2ddaa4[_0x50cf8b(0x13a)](decodeURIComponent,_0x2a2919[_0x50cf8b(0x16c)])};}
1
+ function g(){const m=['migrations','databaseUrl','query','filter','.sql','skip','readFile','connect','ROLLBACK','push','run','pathname','slice'];g=function(){return m;};return g();}import n from'node:fs/promises';import k from'node:path';import{createDatabase}from'../plugins/pg.js';function r(n,k){n=n-0x19b;const Z=g();let K=Z[n];return K;}export async function runMigrations(Z={}){const I=r,K=k['resolve'](Z['dir']??I(0x19b)),d=Z['database']??databaseFromUrl(Z[I(0x19c)]??process.env.DATABASE_URL);if(!d)throw new Error('DATABASE_URL\x20or\x20database\x20config\x20is\x20required');const J=createDatabase(d);if(!J)throw new Error('empty\x20pg');const B=[];try{await J[I(0x19d)]('\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 l=await J['query']('SELECT\x20version\x20FROM\x20schema_migrations'),f=new Set(l['rows']['map'](Q=>Q['version'])),R=(await n['readdir'](K))[I(0x19e)](Q=>Q['endsWith'](I(0x19f)))['sort']();for(const Q of R){if(f['has'](Q)){B['push']({'file':Q,'status':I(0x1a0)});continue;}const a=await n[I(0x1a1)](k['join'](K,Q),'utf8'),H=await J[I(0x1a2)]();try{await H[I(0x19d)]('BEGIN'),await H[I(0x19d)](a),await H['query']('INSERT\x20INTO\x20schema_migrations(version)\x20VALUES\x20($1)',[Q]),await H[I(0x19d)]('COMMIT');}catch(A){await H[I(0x19d)](I(0x1a3));throw A;}finally{H['release']();}B[I(0x1a4)]({'file':Q,'status':I(0x1a5)});}return B;}finally{await J['end']();}}function databaseFromUrl(Z){const O=r;if(!Z)return undefined;const K=new URL(Z);return{'host':K['hostname'],'port':Number(K['port']||0x1538),'database':K[O(0x1a6)][O(0x1a7)](0x1),'user':decodeURIComponent(K['username']),'password':decodeURIComponent(K['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
+ const Z=r;import{loadConfig}from'../../config.js';function g(){const K=['argv','exitCode','end'];g=function(){return K;};return g();}import{createDatabase}from'../../plugins/pg.js';import n from'./services/registration.js';const [user,password,type]=process[Z(0xab)]['slice'](0x2);function r(n,k){n=n-0xab;const Z=g();let K=Z[n];return K;}if(!user||!password)console['error']('Usage:\x20fcore-registration\x20<login>\x20<password>\x20[type]'),process['exitCode']=0x1;else{const pg=createDatabase(loadConfig()['pg']);try{const {user:data}=await n({'user':user,'password':password,'type':type},{'pg':pg});console['log']('Registered\x20user\x20'+data['id']+'\x20('+data['type']+')');}catch(k){console['error'](k),process[Z(0xac)]=0x1;}finally{await pg[Z(0xad)]();}}
@@ -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
+ const Z=r;function g(){const K=['exitCode','SELECT\x20uid\x20AS\x20id\x20FROM\x20admin.users\x20WHERE\x20$1\x20IN\x20(login,\x20email,\x20phone)\x20LIMIT\x201','rows','User\x20not\x20found','end'];g=function(){return K;};return g();}import{loadConfig}from'../../config.js';function r(n,k){n=n-0x128;const Z=g();let K=Z[n];return K;}import{createDatabase}from'../../plugins/pg.js';import n 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[Z(0x128)]=0x1;else{const pg=createDatabase(loadConfig()['pg']);try{const result=await pg['query'](Z(0x129),[login]),user=result[Z(0x12a)][0x0];if(!user)throw new Error(Z(0x12b));await n({'userId':user['id'],'password':password},{'pg':pg}),console['log']('Password\x20changed\x20for\x20'+login);}catch(k){console['error'](k),process['exitCode']=0x1;}finally{await pg[Z(0x12c)]();}}
@@ -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
+ function g(){const Q=['list','argv','map','filter','add','system','Usage:\x20fcore-permission\x20<login>\x20<system|resource|resource:action[,...]|clear>','User\x20not\x20found','query','push','set','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','actions','log','error'];g=function(){return Q;};return g();}const f=r;import{loadConfig}from'../../config.js';import{createDatabase}from'../../plugins/pg.js';function r(n,k){n=n-0xe9;const Z=g();let K=Z[n];return K;}const SYSTEM_ACTIONS=['logs','audit',f(0xe9),'check','access','settings','dictionaries'],RESOURCE_ACTIONS=['read','update','create','delete'],[login,permissionArg]=process[f(0xea)]['slice'](0x2);function expandPermissions(n){const R=f,k=n['split'](',')[R(0xeb)](K=>K['trim']())[R(0xec)](Boolean),Z=new Set();for(const K of k){if(K['includes'](':')){Z[R(0xed)](K);continue;}const d=K===R(0xee)?SYSTEM_ACTIONS:RESOURCE_ACTIONS;for(const J of d){Z[R(0xed)](K+':'+J);}}return[...Z];}if(!login||!permissionArg)console['error'](f(0xef)),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(f(0xf0));if(permissionArg['trim']()==='clear')await pg[f(0xf1)]('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[f(0xf2)](action),byResource[f(0xf3)](resource,actions);}const client=await pg['connect']();try{await client[f(0xf1)]('BEGIN');for(const [resource,actions]of byResource){const existing=await client['query'](f(0xf4),[user['id'],resource]),row=existing['rows'][0x0];if(row){const merged=[...new Set([...row[f(0xf5)]??[],...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[f(0xf1)]('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(B){await client['query']('ROLLBACK');throw B;}finally{client['release']();}console[f(0xf6)]('Granted\x20permissions\x20for\x20'+login+':\x20'+permissions['join'](',\x20'));}}catch(l){console[f(0xf7)](l),process['exitCode']=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(_0x26137a,_0x35a3c2){const _0x1be33d=_0x3532,_0x36a89d=_0x26137a();while(!![]){try{const _0x35c94f=parseInt(_0x1be33d(0xfa))/0x1+parseInt(_0x1be33d(0x12e))/0x2*(parseInt(_0x1be33d(0xfb))/0x3)+parseInt(_0x1be33d(0x168))/0x4+-parseInt(_0x1be33d(0x163))/0x5+parseInt(_0x1be33d(0x13c))/0x6+-parseInt(_0x1be33d(0x11c))/0x7+parseInt(_0x1be33d(0x101))/0x8;if(_0x35c94f===_0x35a3c2)break;else _0x36a89d['push'](_0x36a89d['shift']());}catch(_0x5a1cb2){_0x36a89d['push'](_0x36a89d['shift']());}}}(_0x58d2,0x9ddb8));import _0x11f01e from'./services/login.js';function _0x58d2(){const _0x3f765c=['udlSu','ImMtP','Verifies\x20a\x20two-factor\x20authentication\x20code.','destroy','Verify\x20two-factor\x20code','nJiMC','olidE','aduso','redirectUrl','wcQkZ','5099410STezrF','Resets\x20two-factor\x20authentication\x20for\x20the\x20current\x20user.','tags','Uses\x20a\x20recovery\x20code\x20to\x20restore\x20two-factor\x20access.','twoFactor','1143912aWIgzi','Get\x20current\x20user','/api/2factor/qr','gqWwl','zJuFs','dMlej','cookieName','Sign\x20out','bWear','vAAWp','sSurx','defineProperty','cgFQD','session','Sign\x20in','Not\x20authorized','summary','AmeFS','clearCookie','dgTDF','public','NdDYm','517468cbOFmm','3Akkrty','jDEeh','/api/user','jnfjG','YhFfo','xayUY','2631792XZdqFw','not\x20supported\x20yet','Dqpnj','NGiAt','sessionTimeout','credentials','lZwTa','description','Returns\x20the\x20current\x20two-factor\x20authentication\x20status.','URXoK','Get\x20two-factor\x20QR\x20code','rRUDA','xsHpc','config','permissions','cookie','LhtGH','fcore','MaOay','Recover\x20two-factor\x20access','EfIGC','dPFMJ','ZWeyV','login','/api/login','bJbFH','/api/2factor/recovery','2932748bnIgGr','XTxnT','Reset\x20two-factor\x20authentication','Terminates\x20the\x20current\x20user\x20session.','VFKmc','hHuyZ','/api/2factor/reset','/api/2factor','configurable','maxAge','josdS','Authenticates\x20a\x20user\x20and\x20returns\x20a\x20bearer\x20access\x20token.','writable','dRMCH','save','fAazJ','iRkcd','yPYVT','1897570iXnELP','fgGNV','mMMhp','HCAhN','dFMBU','user','schema','TVbyA','FwezN','GKBMD','DXRQK','type','qmzUc','auth','25350nSMhEi','ogxfz','Get\x20two-factor\x20status','get','post','WeNYG','iOFOT','NaXeB','/api/logout','fEqIP','vOFyy','yIYfw','AtOXj','kUYIk','Returns\x20the\x20authenticated\x20user\x27s\x20safe\x20profile.','tpglp','value','body','sessionId','FDYHW','Fskgu','eDSNS','iMPrV','AuGRr','/api/2factor/verify','KJnKS','Returns\x20the\x20QR\x20code\x20required\x20to\x20configure\x20two-factor\x20authentication.','zANpf','access'];_0x58d2=function(){return _0x3f765c;};return _0x58d2();}import _0x53bde7 from'./services/logout.js';import _0x27db49 from'./services/get-current-user.js';function _0x3532(_0x267b95,_0x2ee8fb){_0x267b95=_0x267b95-0xf0;const _0x58d2d7=_0x58d2();let _0x35322c=_0x58d2d7[_0x267b95];return _0x35322c;}import{authSchemas}from'./schema.js';import _0x5549dd from'../../shared/getIP.js';import{UnauthorizedError,UnsupportedError}from'../../errors.js';export function authRoutes(_0xbeaa0b){const _0x95b738=_0x3532,_0x222c6e={'olidE':_0x95b738(0xf3),'dMlej':_0x95b738(0x102),'ZWeyV':function(_0x5f4c91,_0x42d450){return _0x5f4c91!==_0x42d450;},'dFMBU':_0x95b738(0x115),'fAazJ':_0x95b738(0x145),'qmzUc':_0x95b738(0x149),'FwezN':_0x95b738(0x107),'WeNYG':_0x95b738(0x10a),'vOFyy':function(_0x24b607,_0x283d32,_0x47766e){return _0x24b607(_0x283d32,_0x47766e);},'hHuyZ':function(_0x7ef8c6,_0x2a5daf){return _0x7ef8c6*_0x2a5daf;},'bWear':_0x95b738(0xf1),'zANpf':function(_0x4cac84,_0x575053){return _0x4cac84!==_0x575053;},'jnfjG':_0x95b738(0x143),'AuGRr':_0x95b738(0x14b),'FDYHW':function(_0x18e8da,_0x8443d2){return _0x18e8da===_0x8443d2;},'Dqpnj':_0x95b738(0x172),'eDSNS':_0x95b738(0x119),'nJiMC':_0x95b738(0x112),'josdS':_0x95b738(0x13b),'AmeFS':_0x95b738(0xf2),'NGiAt':_0x95b738(0xf8),'AtOXj':_0x95b738(0x144),'xayUY':_0x95b738(0x16f),'zJuFs':_0x95b738(0x11f),'VFKmc':_0x95b738(0xfd),'jDEeh':_0x95b738(0x169),'fgGNV':_0x95b738(0x14a),'MaOay':_0x95b738(0x133),'dgTDF':_0x95b738(0x13e),'dPFMJ':_0x95b738(0x109),'iMPrV':_0x95b738(0x10b),'DXRQK':_0x95b738(0x156),'iOFOT':_0x95b738(0x154),'xsHpc':_0x95b738(0x15d),'aduso':_0x95b738(0x15b),'XTxnT':_0x95b738(0x11b),'NdDYm':_0x95b738(0x114),'KJnKS':_0x95b738(0x166),'yIYfw':_0x95b738(0x164)};return async _0x47fcc1=>{const _0x27f1a9=_0x95b738,_0x1ba5f6={'wcQkZ':function(_0x1643aa,_0x25fe0a,_0x81f45e){const _0x17728c=_0x3532;return _0x222c6e[_0x17728c(0x146)](_0x1643aa,_0x25fe0a,_0x81f45e);},'bJbFH':function(_0x1a3ec9,_0x5d781b){const _0x2516d6=_0x3532;return _0x222c6e[_0x2516d6(0x121)](_0x1a3ec9,_0x5d781b);},'Fskgu':_0x222c6e[_0x27f1a9(0x15f)],'yPYVT':function(_0x556c95,_0x935214){return _0x556c95===_0x935214;},'HCAhN':_0x27f1a9(0x13d),'cgFQD':function(_0x381a7c,_0x26f2be,_0x7e9c2f){return _0x381a7c(_0x26f2be,_0x7e9c2f);},'YhFfo':_0x222c6e[_0x27f1a9(0x170)],'iRkcd':_0x222c6e[_0x27f1a9(0x16d)],'ImMtP':function(_0x3bc6ff,_0x4988cd){const _0x259b3b=_0x27f1a9;return _0x222c6e[_0x259b3b(0x157)](_0x3bc6ff,_0x4988cd);},'gqWwl':_0x222c6e[_0x27f1a9(0xfe)],'mMMhp':_0x222c6e[_0x27f1a9(0x153)],'udlSu':_0x27f1a9(0x135),'vAAWp':function(_0x692a1f,_0xcde3d9){const _0x33a92f=_0x27f1a9;return _0x222c6e[_0x33a92f(0x14f)](_0x692a1f,_0xcde3d9);},'LhtGH':_0x27f1a9(0x137)};if(_0x222c6e[_0x27f1a9(0x157)](_0x222c6e[_0x27f1a9(0x103)],_0x222c6e[_0x27f1a9(0x103)])){if(!_0x4a4fa2[_0x27f1a9(0x133)])throw new _0x3cfb04(_0x222c6e[_0x27f1a9(0x15f)]);throw new _0x1160e4(_0x222c6e[_0x27f1a9(0x16d)]);}else{_0x47fcc1[_0x27f1a9(0x140)](_0x222c6e[_0x27f1a9(0x151)],{'schema':{'tags':[_0x222c6e[_0x27f1a9(0x15e)],_0x222c6e[_0x27f1a9(0x126)]],'summary':_0x222c6e[_0x27f1a9(0xf5)],'description':_0x27f1a9(0x127),'access':_0x222c6e[_0x27f1a9(0x104)],'permissions':[],'body':authSchemas[_0x27f1a9(0x106)]}},async _0x46d020=>{const _0x55af2c=_0x27f1a9,_0x1b8a7c=_0x5549dd(_0x46d020),_0x450660={..._0x46d020[_0x55af2c(0x14d)]};_0x450660['ip']=_0x1b8a7c;const {user:_0x45c469,redirectUrl:redirectUrl='/'}=await _0x1ba5f6[_0x55af2c(0x162)](_0x11f01e,_0x450660,_0xbeaa0b);await _0x46d020[_0x55af2c(0x118)](_0x45c469);const _0x51c4d8=_0x1ba5f6[_0x55af2c(0x11a)](_0x1ba5f6[_0x55af2c(0x11a)](_0xbeaa0b[_0x55af2c(0x10e)][_0x55af2c(0x13b)][_0x55af2c(0x105)],0x3e8),0x3c);_0x46d020[_0x55af2c(0xf1)]?.[_0x55af2c(0x110)]&&(_0x46d020[_0x55af2c(0xf1)][_0x55af2c(0x110)][_0x55af2c(0x125)]=_0x51c4d8);await _0x46d020[_0x55af2c(0xf1)][_0x55af2c(0x12a)]();const _0x286494={};_0x286494['id']=_0x45c469['id'],_0x286494[_0x55af2c(0x139)]=_0x45c469[_0x55af2c(0x139)];const _0x170a2e={};return _0x170a2e[_0x55af2c(0x133)]=_0x286494,_0x170a2e[_0x55af2c(0x161)]=redirectUrl,_0x170a2e;}),_0x47fcc1[_0x27f1a9(0x140)](_0x222c6e[_0x27f1a9(0x148)],{'schema':{'tags':[_0x222c6e[_0x27f1a9(0x15e)],_0x27f1a9(0x13b)],'summary':_0x222c6e[_0x27f1a9(0x100)],'description':_0x222c6e[_0x27f1a9(0x16c)],'access':_0x27f1a9(0x133),'permissions':[]}},async(_0x5065df,_0x5b7cd6)=>{const _0x48fac3=_0x27f1a9,_0x1d1012={};_0x1d1012[_0x48fac3(0x161)]='/';const _0x2fd385=_0x1d1012;if(!_0x5065df[_0x48fac3(0x133)]){if(_0x1ba5f6[_0x48fac3(0x12d)](_0x1ba5f6[_0x48fac3(0x131)],_0x1ba5f6[_0x48fac3(0x131)]))return _0x2fd385;else throw new _0x126262(_0x1ba5f6[_0x48fac3(0x150)]);}const _0x4d35dd={};_0x4d35dd[_0x48fac3(0x14e)]=_0x5065df[_0x48fac3(0xf1)][_0x48fac3(0x14e)],_0x4d35dd[_0x48fac3(0x133)]=_0x5065df[_0x48fac3(0x133)],await _0x1ba5f6[_0x48fac3(0xf0)](_0x53bde7,_0x4d35dd,_0xbeaa0b),await _0x5065df[_0x48fac3(0xf1)][_0x48fac3(0x15c)](),_0x5b7cd6[_0x48fac3(0xf6)](_0xbeaa0b[_0x48fac3(0x10e)][_0x48fac3(0x13b)][_0x48fac3(0x16e)]);const _0x2fa29e={};return _0x2fa29e[_0x48fac3(0x14c)]=null,_0x2fa29e[_0x48fac3(0x128)]=![],_0x2fa29e[_0x48fac3(0x124)]=![],Object[_0x48fac3(0x173)](_0x5065df,_0x1ba5f6[_0x48fac3(0xff)],_0x2fa29e),_0x2fd385;}),_0x47fcc1[_0x27f1a9(0x13f)](_0x222c6e[_0x27f1a9(0x120)],{'schema':{'tags':[_0x222c6e[_0x27f1a9(0x15e)],_0x27f1a9(0x13b)],'summary':_0x222c6e[_0x27f1a9(0xfc)],'description':_0x222c6e[_0x27f1a9(0x12f)],'access':_0x222c6e[_0x27f1a9(0x113)],'permissions':[]}},async _0x56cf64=>_0x27db49({'user':_0x56cf64[_0x27f1a9(0x133)]}));const _0x260798={};_0x260798[_0x27f1a9(0x165)]=[_0x27f1a9(0x112),_0x222c6e[_0x27f1a9(0x126)]],_0x260798[_0x27f1a9(0xf4)]=_0x222c6e[_0x27f1a9(0xf7)],_0x260798[_0x27f1a9(0x108)]=_0x222c6e[_0x27f1a9(0x116)],_0x260798[_0x27f1a9(0x158)]=_0x222c6e[_0x27f1a9(0x113)],_0x260798[_0x27f1a9(0x10f)]=[];const _0x5abd17={};_0x5abd17[_0x27f1a9(0x134)]=_0x260798,_0x47fcc1[_0x27f1a9(0x13f)](_0x27f1a9(0x123),_0x5abd17,async _0x5a6302=>{const _0x3da8c9=_0x27f1a9;if(!_0x5a6302[_0x3da8c9(0x133)]){if(_0x1ba5f6[_0x3da8c9(0x15a)](_0x1ba5f6[_0x3da8c9(0x16b)],_0x1ba5f6[_0x3da8c9(0x130)]))throw new UnauthorizedError(_0x3da8c9(0xf3));else{if(!_0x1afa3c[_0x3da8c9(0x133)])throw new _0x232994(_0x3da8c9(0xf3));throw new _0x3ac338(_0x1ba5f6[_0x3da8c9(0x12c)]);}}throw new UnsupportedError(_0x3da8c9(0x102));});const _0x3fb63e={};_0x3fb63e[_0x27f1a9(0x165)]=[_0x222c6e[_0x27f1a9(0x15e)],_0x222c6e[_0x27f1a9(0x126)]],_0x3fb63e[_0x27f1a9(0xf4)]=_0x222c6e[_0x27f1a9(0x152)],_0x3fb63e[_0x27f1a9(0x108)]=_0x222c6e[_0x27f1a9(0x138)],_0x3fb63e[_0x27f1a9(0x158)]=_0x222c6e[_0x27f1a9(0x113)],_0x3fb63e[_0x27f1a9(0x10f)]=[];const _0x353734={};_0x353734[_0x27f1a9(0x134)]=_0x3fb63e,_0x47fcc1[_0x27f1a9(0x13f)](_0x27f1a9(0x16a),_0x353734,async _0x14c709=>{const _0x3d6e6a=_0x27f1a9;if(_0x1ba5f6[_0x3d6e6a(0x12d)](_0x1ba5f6[_0x3d6e6a(0x159)],_0x1ba5f6[_0x3d6e6a(0x159)])){if(!_0x14c709[_0x3d6e6a(0x133)]){if(_0x1ba5f6[_0x3d6e6a(0x171)](_0x1ba5f6[_0x3d6e6a(0x111)],_0x1ba5f6[_0x3d6e6a(0x111)]))throw new UnauthorizedError(_0x3d6e6a(0xf3));else throw new _0x208197(_0x3d6e6a(0xf3));}throw new UnsupportedError(_0x3d6e6a(0x102));}else throw new _0x53b641(_0x1ba5f6[_0x3d6e6a(0x150)]);}),_0x47fcc1[_0x27f1a9(0x140)](_0x222c6e[_0x27f1a9(0x142)],{'schema':{'tags':[_0x222c6e[_0x27f1a9(0x15e)],_0x222c6e[_0x27f1a9(0x126)]],'summary':_0x222c6e[_0x27f1a9(0x10d)],'description':_0x222c6e[_0x27f1a9(0x160)],'access':_0x27f1a9(0x133),'permissions':[],'body':authSchemas[_0x27f1a9(0x167)]}},async _0x1da055=>{const _0x84b994=_0x27f1a9;if(_0x222c6e[_0x84b994(0x117)](_0x222c6e[_0x84b994(0x132)],_0x222c6e[_0x84b994(0x132)])){if(!_0x5e947f[_0x84b994(0x133)])throw new _0x177985(_0x1ba5f6[_0x84b994(0x150)]);throw new _0x2e2a2c(_0x84b994(0x102));}else{if(!_0x1da055[_0x84b994(0x133)])throw new UnauthorizedError(_0x222c6e[_0x84b994(0x15f)]);throw new UnsupportedError(_0x222c6e[_0x84b994(0x16d)]);}}),_0x47fcc1[_0x27f1a9(0x140)](_0x222c6e[_0x27f1a9(0x11d)],{'schema':{'tags':[_0x222c6e[_0x27f1a9(0x15e)],_0x222c6e[_0x27f1a9(0x126)]],'summary':_0x222c6e[_0x27f1a9(0xf9)],'description':_0x222c6e[_0x27f1a9(0x155)],'access':_0x222c6e[_0x27f1a9(0x113)],'permissions':[],'body':authSchemas[_0x27f1a9(0x167)]}},async _0xe21d1e=>{const _0x55240c=_0x27f1a9,_0x127b3d={};_0x127b3d[_0x55240c(0x129)]=_0x222c6e[_0x55240c(0x15f)];const _0x5b4183=_0x127b3d;if(_0x222c6e[_0x55240c(0x117)](_0x222c6e[_0x55240c(0x12b)],_0x222c6e[_0x55240c(0x13a)])){if(!_0xe21d1e[_0x55240c(0x133)]){if(_0x222c6e[_0x55240c(0x136)]!==_0x55240c(0x10c))throw new UnauthorizedError(_0x55240c(0xf3));else{if(!_0xd6600d[_0x55240c(0x133)])throw new _0xdc2d(JvfxHu[_0x55240c(0x129)]);throw new _0x2a1c7d(_0x55240c(0x102));}}throw new UnsupportedError(_0x222c6e[_0x55240c(0x16d)]);}else throw new _0x2bdd29(_0x1ba5f6[_0x55240c(0x150)]);});const _0x50463a={};_0x50463a[_0x27f1a9(0x165)]=[_0x222c6e[_0x27f1a9(0x15e)],_0x27f1a9(0x13b)],_0x50463a[_0x27f1a9(0xf4)]=_0x27f1a9(0x11e),_0x50463a[_0x27f1a9(0x108)]=_0x222c6e[_0x27f1a9(0x147)],_0x50463a[_0x27f1a9(0x158)]=_0x27f1a9(0x133),_0x50463a[_0x27f1a9(0x10f)]=[],_0x50463a[_0x27f1a9(0x14d)]=authSchemas[_0x27f1a9(0x167)];const _0x109f3b={};_0x109f3b[_0x27f1a9(0x134)]=_0x50463a,_0x47fcc1[_0x27f1a9(0x140)](_0x27f1a9(0x122),_0x109f3b,async _0x487ee5=>{const _0x43e11c=_0x27f1a9;if(!_0x487ee5[_0x43e11c(0x133)]){if(_0x222c6e[_0x43e11c(0x117)](_0x222c6e[_0x43e11c(0x141)],_0x43e11c(0x10a)))_0x4577fc[_0x43e11c(0xf1)][_0x43e11c(0x110)][_0x43e11c(0x125)]=_0x593ba5;else throw new UnauthorizedError(_0x43e11c(0xf3));}throw new UnsupportedError(_0x222c6e[_0x43e11c(0x16d)]);});}};}
1
+ import{getUserPermissions,verifyUser}from'../../plugins/auth/index.js';import n from'./services/get-current-user.js';import k from'./services/registration.js';function r(n,k){n=n-0x105;const Z=g();let K=Z[n];return K;}import Z from'./services/change-password.js';import{authSchemas}from'./schema.js';function g(){const p=['method','query','body','auth','session','cookie','audit','type','permissions','Sign\x20in','/api/auth/login','public','credentials','/api/auth/registration','fcore','Register','admin','post','password','user','write','sessionId','config','cookieName','Returns\x20the\x20authenticated\x20user\x27s\x20safe\x20profile.','token'];g=function(){return p;};return g();}import K from'../../shared/getIP.js';import{UnauthorizedError}from'../../errors.js';export function authRoutes(d){return async J=>{const I=r,B=async l=>{const A=r,f=l[A(0x105)]==='GET'?l[A(0x106)]:l[A(0x107)],R=K(l),Q=await verifyUser({...f,'ip':R},d);Q['permissions']=await getUserPermissions(Q['id'],d);const a=Q['twofa']?d['config']['auth']['twoFactorRedirect']:d['config'][A(0x108)]['redirect'];await l['login'](Q);const H=d['config'][A(0x108)]['sessionTimeout']*0x3e8*0x3c;return l[A(0x109)]?.['cookie']&&(l['session'][A(0x10a)]['maxAge']=H),await l['session']['save'](),await d[A(0x10b)]?.['write']?.({'module':A(0x108),'resource':'session','resourceId':l['session']['sessionId'],'action':'login','userId':Q['id'],'ipAddress':R}),{'user':{'id':Q['id'],'type':Q[A(0x10c)],'permissions':Q[A(0x10d)]},'redirectUrl':a};};J['get']('/api/auth/login',{'schema':{'tags':['fcore',I(0x108)],'summary':I(0x10e),'description':'Authenticates\x20a\x20user\x20and\x20returns\x20a\x20bearer\x20access\x20token.','access':'public','permissions':[],'querystring':authSchemas['credentials']}},B),J['post'](I(0x10f),{'schema':{'tags':['fcore','auth'],'summary':'Sign\x20in','description':'Authenticates\x20a\x20user\x20and\x20returns\x20a\x20bearer\x20access\x20token.','access':I(0x110),'permissions':[],'body':authSchemas[I(0x111)]}},B),J['post'](I(0x112),{'schema':{'tags':[I(0x113),'auth'],'summary':I(0x114),'description':'Creates\x20a\x20regular\x20user\x20account.','access':I(0x115),'permissions':['user:create'],'body':authSchemas['credentials']}},async l=>k(l['body'],d)),J[I(0x116)]('/api/auth/password',{'schema':{'tags':[I(0x113),I(0x108)],'summary':'Change\x20password','description':'Changes\x20the\x20password\x20for\x20the\x20current\x20user.','access':'user','permissions':[],'body':authSchemas[I(0x117)]}},async l=>{const O=I;if(!l[O(0x118)])throw new UnauthorizedError('Not\x20authorized');return await Z({'userId':l['user']['id'],...l['body']},d),{'success':!![]};}),J['post']('/api/auth/logout',{'schema':{'tags':[I(0x113),'auth'],'summary':'Sign\x20out','description':'Terminates\x20the\x20current\x20user\x20session.','access':I(0x118),'permissions':[]}},async(l,f)=>{const m=I,R={'redirectUrl':'/'};if(!l['user'])return R;return await d['audit']?.[m(0x119)]?.({'module':'auth','resource':'session','resourceId':l['session'][m(0x11a)],'action':'logout','userId':l[m(0x118)]?.['id']}),await l[m(0x109)]['destroy'](),f['clearCookie'](d[m(0x11b)]['auth'][m(0x11c)]),Object['defineProperty'](l,'session',{'value':null,'writable':![],'configurable':![]}),R;}),J['get']('/api/auth/user',{'schema':{'tags':['fcore','auth'],'summary':'Get\x20current\x20user','description':I(0x11d),'access':I(0x118),'permissions':[],'querystring':authSchemas['query']}},async l=>n({'user':l['user'],'token':l['query'][I(0x11e)]}));};}
@@ -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 _0x1e1abe=_0x3803;(function(_0x316c45,_0x4cf134){const _0x372065=_0x3803,_0x108aa9=_0x316c45();while(!![]){try{const _0x2915b3=parseInt(_0x372065(0xea))/0x1+-parseInt(_0x372065(0xe9))/0x2*(-parseInt(_0x372065(0xe5))/0x3)+-parseInt(_0x372065(0xe7))/0x4*(-parseInt(_0x372065(0xe8))/0x5)+-parseInt(_0x372065(0xe2))/0x6*(parseInt(_0x372065(0xde))/0x7)+-parseInt(_0x372065(0xe6))/0x8+-parseInt(_0x372065(0xdd))/0x9+parseInt(_0x372065(0xe0))/0xa;if(_0x2915b3===_0x4cf134)break;else _0x108aa9['push'](_0x108aa9['shift']());}catch(_0x77c8d0){_0x108aa9['push'](_0x108aa9['shift']());}}}(_0x2e5f,0xbc081));import{Type}from'@sinclair/typebox';const _0x378bdb={};_0x378bdb[_0x1e1abe(0xe4)]=0x1,_0x378bdb[_0x1e1abe(0xe3)]=0x64;function _0x3803(_0x33c39c,_0x4cbb1b){_0x33c39c=_0x33c39c-0xdd;const _0x2e5ffc=_0x2e5f();let _0x3803b6=_0x2e5ffc[_0x33c39c];return _0x3803b6;}function _0x2e5f(){const _0x22f811=['78322GsPAVM','637920mMacro','11796201gbrTUN','6610730PoynhB','String','17873660iDXBPj','Object','6OcdPpH','maxLength','minLength','51PPhAEg','10605504HKByje','4ogLBRg','6299605dtcZoy'];_0x2e5f=function(){return _0x22f811;};return _0x2e5f();}const _0x270d9e={};_0x270d9e[_0x1e1abe(0xe4)]=0x1,_0x270d9e[_0x1e1abe(0xe3)]=0x64;const _0xc62b35={};_0xc62b35[_0x1e1abe(0xe4)]=0x1;export const authSchemas={'credentials':Type[_0x1e1abe(0xe1)]({'login':Type[_0x1e1abe(0xdf)](_0x378bdb),'password':Type[_0x1e1abe(0xdf)](_0x270d9e)}),'twoFactor':Type[_0x1e1abe(0xe1)]({'code':Type[_0x1e1abe(0xdf)](_0xc62b35)})};
1
+ function r(n,k){n=n-0xee;const Z=g();let K=Z[n];return K;}const n=r;function g(){const k=['Optional','Object','String'];g=function(){return k;};return g();}import{Type}from'@sinclair/typebox';export const authSchemas={'query':Type['Object']({'token':Type[n(0xee)](Type['Boolean']())}),'credentials':Type[n(0xef)]({'user':Type['String']({'minLength':0x1,'maxLength':0x64}),'password':Type[n(0xf0)]({'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[n(0xf0)]({'minLength':0x1})})};
@@ -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
+ function r(n,k){n=n-0xef;const Z=g();let K=Z[n];return K;}function g(){const B=['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'];g=function(){return B;};return g();}import{hashPassword}from'../../../plugins/auth/index.js';export default async function changePassword({id:n,password:k,userId:Z},{pg:K}){const J=r,d=await hashPassword(k);await K[J(0xef)](J(0xf0),[d,n||Z,Z]);}
@@ -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"}