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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/LICENSE +3 -3
  2. package/README.md +71 -71
  3. package/dist/config.d.ts +3 -10
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +1 -1
  6. package/dist/context.d.ts +4 -4
  7. package/dist/context.d.ts.map +1 -1
  8. package/dist/context.js +1 -1
  9. package/dist/errors.js +1 -1
  10. package/dist/fastify.d.ts +5 -5
  11. package/dist/fastify.d.ts.map +1 -1
  12. package/dist/fastify.js +1 -1
  13. package/dist/fcore.js +1 -1
  14. package/dist/index.d.ts +1 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +1 -1
  17. package/dist/migrations/cli.js +1 -1
  18. package/dist/migrations/runner.d.ts.map +1 -1
  19. package/dist/migrations/runner.js +1 -1
  20. package/dist/modules/auth/adduser-cli.d.ts +3 -0
  21. package/dist/modules/auth/adduser-cli.d.ts.map +1 -0
  22. package/dist/modules/auth/adduser-cli.js +2 -0
  23. package/dist/modules/auth/passwd-cli.d.ts +3 -0
  24. package/dist/modules/auth/passwd-cli.d.ts.map +1 -0
  25. package/dist/modules/auth/passwd-cli.js +2 -0
  26. package/dist/modules/auth/permission-cli.d.ts +3 -0
  27. package/dist/modules/auth/permission-cli.d.ts.map +1 -0
  28. package/dist/modules/auth/permission-cli.js +2 -0
  29. package/dist/modules/auth/route.d.ts.map +1 -1
  30. package/dist/modules/auth/route.js +1 -1
  31. package/dist/modules/auth/schema.d.ts +10 -1
  32. package/dist/modules/auth/schema.d.ts.map +1 -1
  33. package/dist/modules/auth/schema.js +1 -1
  34. package/dist/modules/auth/services/change-password.d.ts +9 -0
  35. package/dist/modules/auth/services/change-password.d.ts.map +1 -0
  36. package/dist/modules/auth/services/change-password.js +1 -0
  37. package/dist/modules/auth/services/get-current-user.d.ts +1 -0
  38. package/dist/modules/auth/services/get-current-user.d.ts.map +1 -1
  39. package/dist/modules/auth/services/get-current-user.js +1 -1
  40. package/dist/modules/auth/services/registration.d.ts +14 -0
  41. package/dist/modules/auth/services/registration.d.ts.map +1 -0
  42. package/dist/modules/auth/services/registration.js +1 -0
  43. package/dist/modules/auth/services/verify-two-factor.js +1 -1
  44. package/dist/modules/file/mime.d.ts +3 -0
  45. package/dist/modules/file/mime.d.ts.map +1 -0
  46. package/dist/modules/file/mime.js +1 -0
  47. package/dist/modules/file/route.d.ts.map +1 -1
  48. package/dist/modules/file/route.js +1 -1
  49. package/dist/modules/file/schema.d.ts +3 -0
  50. package/dist/modules/file/schema.d.ts.map +1 -1
  51. package/dist/modules/file/schema.js +1 -1
  52. package/dist/modules/file/services/get-file.js +1 -1
  53. package/dist/modules/file/services/resize-file.d.ts.map +1 -1
  54. package/dist/modules/file/services/resize-file.js +1 -1
  55. package/dist/modules/file/services/upload-file.d.ts +4 -6
  56. package/dist/modules/file/services/upload-file.d.ts.map +1 -1
  57. package/dist/modules/file/services/upload-file.js +1 -1
  58. package/dist/modules/resource/route.d.ts +0 -3
  59. package/dist/modules/resource/route.d.ts.map +1 -1
  60. package/dist/modules/resource/route.js +1 -1
  61. package/dist/modules/resource/schema.d.ts +3 -0
  62. package/dist/modules/resource/schema.d.ts.map +1 -1
  63. package/dist/modules/resource/schema.js +1 -1
  64. package/dist/modules/resource/services/add-note.d.ts.map +1 -1
  65. package/dist/modules/resource/services/add-note.js +1 -1
  66. package/dist/modules/resource/services/add-resource-file.d.ts.map +1 -1
  67. package/dist/modules/resource/services/add-resource-file.js +1 -1
  68. package/dist/modules/resource/services/create-resource-relation.d.ts +8 -2
  69. package/dist/modules/resource/services/create-resource-relation.d.ts.map +1 -1
  70. package/dist/modules/resource/services/create-resource-relation.js +1 -1
  71. package/dist/modules/resource/services/create-resource.js +1 -1
  72. package/dist/modules/resource/services/delete-resource-relation.d.ts +8 -1
  73. package/dist/modules/resource/services/delete-resource-relation.d.ts.map +1 -1
  74. package/dist/modules/resource/services/delete-resource-relation.js +1 -1
  75. package/dist/modules/resource/services/delete-resource.js +1 -1
  76. package/dist/modules/resource/services/export-resource.d.ts.map +1 -1
  77. package/dist/modules/resource/services/export-resource.js +1 -1
  78. package/dist/modules/resource/services/get-resource.d.ts.map +1 -1
  79. package/dist/modules/resource/services/get-resource.js +1 -1
  80. package/dist/modules/resource/services/list-resource-relation.d.ts +9 -2
  81. package/dist/modules/resource/services/list-resource-relation.d.ts.map +1 -1
  82. package/dist/modules/resource/services/list-resource-relation.js +1 -1
  83. package/dist/modules/resource/services/list-resources.d.ts.map +1 -1
  84. package/dist/modules/resource/services/list-resources.js +1 -1
  85. package/dist/modules/resource/services/search-resource.d.ts.map +1 -1
  86. package/dist/modules/resource/services/search-resource.js +1 -1
  87. package/dist/modules/resource/services/suggest-resource.d.ts +10 -4
  88. package/dist/modules/resource/services/suggest-resource.d.ts.map +1 -1
  89. package/dist/modules/resource/services/suggest-resource.js +1 -1
  90. package/dist/modules/resource/services/update-resource-relation.d.ts +10 -0
  91. package/dist/modules/resource/services/update-resource-relation.d.ts.map +1 -0
  92. package/dist/modules/resource/services/update-resource-relation.js +1 -0
  93. package/dist/modules/resource/services/update-resource.js +1 -1
  94. package/dist/modules/resource/services/upload-resource-file.d.ts.map +1 -1
  95. package/dist/modules/resource/services/upload-resource-file.js +1 -1
  96. package/dist/modules/system/route.d.ts +2 -1
  97. package/dist/modules/system/route.d.ts.map +1 -1
  98. package/dist/modules/system/route.js +1 -1
  99. package/dist/modules/system/schema.d.ts +22 -1
  100. package/dist/modules/system/schema.d.ts.map +1 -1
  101. package/dist/modules/system/schema.js +1 -1
  102. package/dist/modules/system/services/check-system.d.ts.map +1 -1
  103. package/dist/modules/system/services/check-system.js +1 -1
  104. package/dist/modules/system/services/get-access.d.ts +14 -0
  105. package/dist/modules/system/services/get-access.d.ts.map +1 -0
  106. package/dist/modules/system/services/get-access.js +1 -0
  107. package/dist/modules/system/services/get-api-list.d.ts +4 -1
  108. package/dist/modules/system/services/get-api-list.d.ts.map +1 -1
  109. package/dist/modules/system/services/get-api-list.js +1 -1
  110. package/dist/modules/system/services/get-audit-log.d.ts.map +1 -1
  111. package/dist/modules/system/services/get-audit-log.js +1 -1
  112. package/dist/modules/system/services/get-dictionary.js +1 -1
  113. package/dist/modules/system/services/get-system-log.d.ts +9 -5
  114. package/dist/modules/system/services/get-system-log.d.ts.map +1 -1
  115. package/dist/modules/system/services/get-system-log.js +1 -1
  116. package/dist/modules/system/services/get-system-settings.d.ts.map +1 -1
  117. package/dist/modules/system/services/get-system-settings.js +1 -1
  118. package/dist/modules/system/services/list-dictionaries.js +1 -1
  119. package/dist/modules/system/services/set-access.d.ts +16 -0
  120. package/dist/modules/system/services/set-access.d.ts.map +1 -0
  121. package/dist/modules/system/services/set-access.js +1 -0
  122. package/dist/modules/system/services/update-dictionary.d.ts +13 -0
  123. package/dist/modules/system/services/update-dictionary.d.ts.map +1 -0
  124. package/dist/modules/system/services/update-dictionary.js +1 -0
  125. package/dist/modules/system/services/update-system-settings.d.ts.map +1 -1
  126. package/dist/modules/system/services/update-system-settings.js +1 -1
  127. package/dist/modules/utils/require-admin.d.ts +1 -1
  128. package/dist/modules/utils/require-admin.d.ts.map +1 -1
  129. package/dist/modules/utils/require-admin.js +1 -1
  130. package/dist/modules/utils/safe-user.js +1 -1
  131. package/dist/modules/utils/unsupported.js +1 -1
  132. package/dist/plugins/audit/audit.d.ts +2 -2
  133. package/dist/plugins/audit/audit.d.ts.map +1 -1
  134. package/dist/plugins/audit/audit.js +1 -1
  135. package/dist/plugins/audit/index.js +1 -1
  136. package/dist/plugins/audit/services/write-audit.d.ts +2 -2
  137. package/dist/plugins/audit/services/write-audit.d.ts.map +1 -1
  138. package/dist/plugins/audit/services/write-audit.js +1 -1
  139. package/dist/plugins/auth/get-user-permissions.d.ts +3 -0
  140. package/dist/plugins/auth/get-user-permissions.d.ts.map +1 -0
  141. package/dist/plugins/auth/get-user-permissions.js +1 -0
  142. package/dist/plugins/auth/index.d.ts +4 -0
  143. package/dist/plugins/auth/index.d.ts.map +1 -1
  144. package/dist/plugins/auth/index.js +1 -1
  145. package/dist/plugins/auth/verifyUser.d.ts +9 -0
  146. package/dist/plugins/auth/verifyUser.d.ts.map +1 -0
  147. package/dist/plugins/auth/verifyUser.js +1 -0
  148. package/dist/plugins/dictionary.d.ts +3 -0
  149. package/dist/plugins/dictionary.d.ts.map +1 -1
  150. package/dist/plugins/dictionary.js +1 -1
  151. package/dist/plugins/file.d.ts +4 -7
  152. package/dist/plugins/file.d.ts.map +1 -1
  153. package/dist/plugins/file.js +1 -1
  154. package/dist/plugins/index.d.ts +2 -0
  155. package/dist/plugins/index.d.ts.map +1 -1
  156. package/dist/plugins/index.js +1 -1
  157. package/dist/plugins/jwt.d.ts +4 -0
  158. package/dist/plugins/jwt.d.ts.map +1 -0
  159. package/dist/plugins/jwt.js +1 -0
  160. package/dist/plugins/logger/index.d.ts +9 -4
  161. package/dist/plugins/logger/index.d.ts.map +1 -1
  162. package/dist/plugins/logger/index.js +1 -1
  163. package/dist/plugins/logger/transport.d.ts +3 -0
  164. package/dist/plugins/logger/transport.d.ts.map +1 -0
  165. package/dist/plugins/logger/transport.js +1 -0
  166. package/dist/plugins/pg.d.ts +4 -2
  167. package/dist/plugins/pg.d.ts.map +1 -1
  168. package/dist/plugins/pg.js +1 -1
  169. package/dist/plugins/redis.js +1 -1
  170. package/dist/plugins/resource/index.js +1 -1
  171. package/dist/plugins/resource/resource.d.ts.map +1 -1
  172. package/dist/plugins/resource/resource.js +1 -1
  173. package/dist/plugins/resource/resource.registry.js +1 -1
  174. package/dist/plugins/resource/resource.types.d.ts +62 -8
  175. package/dist/plugins/resource/resource.types.d.ts.map +1 -1
  176. package/dist/plugins/resource/services/add-dictionary-lookup-data.d.ts +3 -0
  177. package/dist/plugins/resource/services/add-dictionary-lookup-data.d.ts.map +1 -0
  178. package/dist/plugins/resource/services/add-dictionary-lookup-data.js +1 -0
  179. package/dist/plugins/resource/services/add-file-token.d.ts +3 -0
  180. package/dist/plugins/resource/services/add-file-token.d.ts.map +1 -0
  181. package/dist/plugins/resource/services/add-file-token.js +1 -0
  182. package/dist/plugins/resource/services/add-table-lookup-data.d.ts +4 -0
  183. package/dist/plugins/resource/services/add-table-lookup-data.d.ts.map +1 -0
  184. package/dist/plugins/resource/services/add-table-lookup-data.js +1 -0
  185. package/dist/plugins/resource/services/create-relation.d.ts +16 -0
  186. package/dist/plugins/resource/services/create-relation.d.ts.map +1 -0
  187. package/dist/plugins/resource/services/create-relation.js +1 -0
  188. package/dist/plugins/resource/services/create.d.ts +5 -2
  189. package/dist/plugins/resource/services/create.d.ts.map +1 -1
  190. package/dist/plugins/resource/services/create.js +1 -1
  191. package/dist/plugins/resource/services/delete-relation.d.ts +18 -0
  192. package/dist/plugins/resource/services/delete-relation.d.ts.map +1 -0
  193. package/dist/plugins/resource/services/delete-relation.js +1 -0
  194. package/dist/plugins/resource/services/delete.d.ts +5 -2
  195. package/dist/plugins/resource/services/delete.d.ts.map +1 -1
  196. package/dist/plugins/resource/services/delete.js +1 -1
  197. package/dist/plugins/resource/services/find-one.d.ts +3 -2
  198. package/dist/plugins/resource/services/find-one.d.ts.map +1 -1
  199. package/dist/plugins/resource/services/find-one.js +1 -1
  200. package/dist/plugins/resource/services/find-relation.d.ts +13 -0
  201. package/dist/plugins/resource/services/find-relation.d.ts.map +1 -0
  202. package/dist/plugins/resource/services/find-relation.js +1 -0
  203. package/dist/plugins/resource/services/find.d.ts.map +1 -1
  204. package/dist/plugins/resource/services/find.js +1 -1
  205. package/dist/plugins/resource/services/update-relation.d.ts +14 -0
  206. package/dist/plugins/resource/services/update-relation.d.ts.map +1 -0
  207. package/dist/plugins/resource/services/update-relation.js +1 -0
  208. package/dist/plugins/resource/services/update.d.ts +5 -2
  209. package/dist/plugins/resource/services/update.d.ts.map +1 -1
  210. package/dist/plugins/resource/services/update.js +1 -1
  211. package/dist/plugins/resource/utils/auto-index.d.ts +4 -0
  212. package/dist/plugins/resource/utils/auto-index.d.ts.map +1 -0
  213. package/dist/plugins/resource/utils/auto-index.js +1 -0
  214. package/dist/plugins/resource/utils/fields.d.ts +8 -1
  215. package/dist/plugins/resource/utils/fields.d.ts.map +1 -1
  216. package/dist/plugins/resource/utils/fields.js +1 -1
  217. package/dist/plugins/resource/utils/filters.d.ts +3 -2
  218. package/dist/plugins/resource/utils/filters.d.ts.map +1 -1
  219. package/dist/plugins/resource/utils/filters.js +1 -1
  220. package/dist/plugins/resource/utils/permissions.d.ts.map +1 -1
  221. package/dist/plugins/resource/utils/permissions.js +1 -1
  222. package/dist/plugins/resource/utils/sort.d.ts.map +1 -1
  223. package/dist/plugins/resource/utils/sort.js +1 -1
  224. package/dist/plugins/resource/utils/sql.js +1 -1
  225. package/dist/shared/getIP.js +1 -1
  226. package/dist/type.d.ts +37 -0
  227. package/dist/type.d.ts.map +1 -0
  228. package/dist/type.js +1 -0
  229. package/migrations/20260903120000_core_schema.sql +259 -0
  230. package/migrations/20260903130000_move_notes_files_to_admin.sql +18 -0
  231. package/migrations/20260903140000_settings_nulls_not_distinct.sql +19 -0
  232. package/migrations/20260905120000_add_user_foreign_keys.sql +43 -0
  233. package/migrations/20260907090000_core_schema.sql +32 -0
  234. package/package.json +93 -87
  235. package/dist/modules/auth/index.d.ts +0 -9
  236. package/dist/modules/auth/index.d.ts.map +0 -1
  237. package/dist/modules/auth/index.js +0 -1
  238. package/dist/modules/auth/services/login.d.ts +0 -10
  239. package/dist/modules/auth/services/login.d.ts.map +0 -1
  240. package/dist/modules/auth/services/login.js +0 -1
  241. package/dist/modules/auth/services/logout.d.ts +0 -9
  242. package/dist/modules/auth/services/logout.d.ts.map +0 -1
  243. package/dist/modules/auth/services/logout.js +0 -1
  244. package/dist/modules/auth/services/verifyPassword.d.ts +0 -11
  245. package/dist/modules/auth/services/verifyPassword.d.ts.map +0 -1
  246. package/dist/modules/auth/services/verifyPassword.js +0 -1
  247. package/dist/modules/file/index.d.ts +0 -8
  248. package/dist/modules/file/index.d.ts.map +0 -1
  249. package/dist/modules/file/index.js +0 -1
  250. package/dist/modules/resource/index.d.ts +0 -20
  251. package/dist/modules/resource/index.d.ts.map +0 -1
  252. package/dist/modules/resource/index.js +0 -1
  253. package/dist/modules/resource/services/list-children.d.ts +0 -6
  254. package/dist/modules/resource/services/list-children.d.ts.map +0 -1
  255. package/dist/modules/resource/services/list-children.js +0 -1
  256. package/dist/modules/system/index.d.ts +0 -13
  257. package/dist/modules/system/index.d.ts.map +0 -1
  258. package/dist/modules/system/index.js +0 -1
  259. package/dist/modules/utils/get-user-permissions.d.ts +0 -3
  260. package/dist/modules/utils/get-user-permissions.d.ts.map +0 -1
  261. package/dist/modules/utils/get-user-permissions.js +0 -1
  262. package/dist/plugins/logger/checkUserAccess.d.ts +0 -11
  263. package/dist/plugins/logger/checkUserAccess.d.ts.map +0 -1
  264. package/dist/plugins/logger/checkUserAccess.js +0 -1
  265. package/dist/plugins/logger/createFileStream.d.ts +0 -3
  266. package/dist/plugins/logger/createFileStream.d.ts.map +0 -1
  267. package/dist/plugins/logger/createFileStream.js +0 -1
  268. package/dist/plugins/logger/createLogger.d.ts +0 -9
  269. package/dist/plugins/logger/createLogger.d.ts.map +0 -1
  270. package/dist/plugins/logger/createLogger.js +0 -1
  271. package/dist/plugins/logger/errorStatus.d.ts +0 -2
  272. package/dist/plugins/logger/errorStatus.d.ts.map +0 -1
  273. package/dist/plugins/logger/errorStatus.js +0 -1
  274. package/dist/plugins/logger/getHooks.d.ts +0 -5
  275. package/dist/plugins/logger/getHooks.d.ts.map +0 -1
  276. package/dist/plugins/logger/getHooks.js +0 -1
  277. package/dist/plugins/logger/getRootDir.d.ts +0 -3
  278. package/dist/plugins/logger/getRootDir.d.ts.map +0 -1
  279. package/dist/plugins/logger/getRootDir.js +0 -1
  280. package/dist/plugins/logger/labels.d.ts +0 -3
  281. package/dist/plugins/logger/labels.d.ts.map +0 -1
  282. package/dist/plugins/logger/labels.js +0 -1
  283. package/dist/plugins/logger/serializers.d.ts +0 -14
  284. package/dist/plugins/logger/serializers.d.ts.map +0 -1
  285. package/dist/plugins/logger/serializers.js +0 -1
  286. package/dist/plugins/logger/timestampWithTimeZone.d.ts +0 -2
  287. package/dist/plugins/logger/timestampWithTimeZone.d.ts.map +0 -1
  288. package/dist/plugins/logger/timestampWithTimeZone.js +0 -1
@@ -0,0 +1,3 @@
1
+ import type { ContextDependencies } from "../../context.js";
2
+ export declare function getUserPermissions(userId: string, ctx: Pick<ContextDependencies, "pg">): Promise<string[]>;
3
+ //# sourceMappingURL=get-user-permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-user-permissions.d.ts","sourceRoot":"","sources":["../../../src/plugins/auth/get-user-permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,GACnC,OAAO,CAAC,MAAM,EAAE,CAAC,CAenB"}
@@ -0,0 +1 @@
1
+ function v(){const u=['query'];v=function(){return u;};return v();}function S(d,h){d=d-0x170;const p=v();let Z=p[d];return Z;}export async function getUserPermissions(d,h){const D=S,p=await h['pg'][D(0x170)]('\x0a\x20\x20\x20\x20\x20\x20SELECT\x20DISTINCT\x20ra.resource\x20||\x20\x27:\x27\x20||\x20action\x20AS\x20permission\x0a\x20\x20\x20\x20\x20\x20FROM\x20admin.role_access\x20ra\x0a\x20\x20\x20\x20\x20\x20LEFT\x20JOIN\x20admin.user_roles\x20ur\x20ON\x20ur.role_id\x20=\x20ra.role_id\x0a\x20\x20\x20\x20\x20\x20CROSS\x20JOIN\x20LATERAL\x20unnest(COALESCE(ra.actions,\x20\x27{}\x27::text[]))\x20AS\x20action\x0a\x20\x20\x20\x20\x20\x20WHERE\x20ra.user_uid\x20=\x20$1\x20OR\x20ur.user_uid\x20=\x20$1\x0a\x20\x20\x20\x20',[d]);return p['rows']['map'](Z=>Z['permission']);}
@@ -1,5 +1,9 @@
1
1
  export * from "./auth.types.js";
2
2
  import { type FastifyInstance } from "fastify";
3
3
  import { type ContextDependencies } from "../../context.js";
4
+ export * from "./verifyUser.js";
5
+ export * from "./get-user-permissions.js";
6
+ export declare function hashPassword(password: string): Promise<string>;
7
+ export declare function verifyPassword(password: string, stored: string): Promise<boolean>;
4
8
  export declare function createSessionStore(app: FastifyInstance, ctx: ContextDependencies): Promise<void>;
5
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAO/C,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAI5D,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,mBAAmB,iBAsCzB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAUhC,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAO/C,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAI5D,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAE1C,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKpE;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAalB;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,mBAAmB,iBA6CzB"}
@@ -1 +1 @@
1
- (function(n,a){const t=b,G=n();while(!![]){try{const j=-parseInt(t(0x132))/0x1*(parseInt(t(0x12e))/0x2)+-parseInt(t(0x13d))/0x3*(parseInt(t(0x12d))/0x4)+-parseInt(t(0x13a))/0x5*(parseInt(t(0x136))/0x6)+-parseInt(t(0x124))/0x7+-parseInt(t(0x13c))/0x8+parseInt(t(0x12c))/0x9*(-parseInt(t(0x137))/0xa)+parseInt(t(0x13b))/0xb;if(j===a)break;else G['push'](G['shift']());}catch(u){G['push'](G['shift']());}}}(I,0x664d4));export*from'./auth.types.js';import E from'@fastify/cookie';function I(){const A=['user','xTHQC','database','5985cFLITz','10840wZVlsm','14026fVvONx','initialize','secret','warn','66dWoSKs','secureSession','register','registerUserDeserializer','30iSsPcF','1110ixbyyu','Missing\x20config\x20or\x20redis\x20-\x20skipping\x20session\x20store\x20creation','test','452875MHcWEB','22824439bIAsVW','2096096UXcSBS','15neshHD','cookieName','xkjFy','parseOptions','2735677wEKQjM','auth','cookieOptions','Igknv','registerUserSerializer'];I=function(){return A;};return I();}import M from'@fastify/session';import{Authenticator}from'@fastify/passport';import X from'fastify-session-redis-store';function b(n,a){n=n-0x121;const E=I();let M=E[n];return M;}const fastifyPassport=new Authenticator();export async function createSessionStore(G,j){const B=b,u={};u[B(0x122)]=function(Z,H){return Z||H;},u[B(0x127)]=function(Z,H){return Z===H;},u[B(0x12a)]=B(0x139);const Y=u,{config:g,redis:e}=j;if(Y[B(0x122)](!g,!e)){console[B(0x131)](B(0x138));return;}if(Y[B(0x127)](process.env.NODE_ENV,Y[B(0x12a)])||process.env.VITEST)return;const h={};h[B(0x123)]=g[B(0x125)][B(0x126)],await G[B(0x134)](E,h),await G[B(0x134)](M,{'secret':g[B(0x125)][B(0x130)],'cookieName':g[B(0x125)][B(0x121)],'cookie':g[B(0x125)][B(0x126)],'store':new X({'prefix':g[B(0x125)][B(0x121)]+':'+(g['pg']?.[B(0x12b)]||'db')+':','client':e})}),await G[B(0x134)](fastifyPassport[B(0x12f)]()),await G[B(0x134)](fastifyPassport[B(0x133)]()),fastifyPassport[B(0x128)](async Z=>({'user':Z})),fastifyPassport[B(0x135)](async Z=>Z?.[B(0x129)]||Z);}
1
+ export*from'./auth.types.js';import{randomBytes,scrypt as d,timingSafeEqual}from'node:crypto';import{promisify}from'node:util';const scrypt=promisify(d);import h from'@fastify/cookie';import p from'@fastify/session';function S(d,h){d=d-0x97;const p=v();let Z=p[d];return Z;}import{Authenticator}from'@fastify/passport';import Z from'fastify-session-redis-store';import{getUserPermissions}from'./get-user-permissions.js';const fastifyPassport=new Authenticator();export*from'./verifyUser.js';export*from'./get-user-permissions.js';function v(){const g=['hex','split','scrypt','from','length','warn','cookieOptions','register','cookieName','auth','database'];v=function(){return g;};return v();}export async function hashPassword(D){const F=S,u=randomBytes(0x10),n=await scrypt(D,u,0x40);return'scrypt$'+u['toString'](F(0x97))+'$'+n['toString']('hex');}export async function verifyPassword(D,u){const B=S,[n,X,Y]=u?.[B(0x98)]('$')||[];if(n!==B(0x99)||!X||!Y)return![];const w=Buffer['from'](X,'hex'),y=Buffer[B(0x9a)](Y,B(0x97)),Q=await scrypt(D,w,y[B(0x9b)]);return timingSafeEqual(Q,y);}export async function createSessionStore(D,u){const K=S,{config:n,redis:X}=u;if(!n||!X){console[K(0x9c)]('Missing\x20config\x20or\x20redis\x20-\x20skipping\x20session\x20store\x20creation');return;}if(process.env.NODE_ENV==='test'||process.env.VITEST)return;await D['register'](h,{'parseOptions':n['auth'][K(0x9d)]}),await D[K(0x9e)](p,{'secret':n['auth']['secret'],'cookieName':n['auth'][K(0x9f)],'cookie':n['auth']['cookieOptions'],'store':new Z({'prefix':n[K(0xa0)]['cookieName']+':'+(n['pg']?.[K(0xa1)]||'db')+':','client':X})}),await D[K(0x9e)](fastifyPassport['initialize']()),await D['register'](fastifyPassport['secureSession']()),fastifyPassport['registerUserSerializer'](async Y=>({'user':Y})),fastifyPassport['registerUserDeserializer'](async Y=>{const w=Y?.['user']||Y;return w?.['id']&&(w['permissions']=await getUserPermissions(w['id'],u)),w;});}
@@ -0,0 +1,9 @@
1
+ import { ContextDependencies } from "../../context.js";
2
+ type params = {
3
+ user: string;
4
+ password: string;
5
+ ip?: string;
6
+ };
7
+ export declare function verifyUser({ user, password, ip, }: params, { pg, logger }: Pick<ContextDependencies, "pg" | "logger">): Promise<import("./auth.types.js").AuthUser>;
8
+ export {};
9
+ //# sourceMappingURL=verifyUser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifyUser.d.ts","sourceRoot":"","sources":["../../../src/plugins/auth/verifyUser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAQ,MAAM,kBAAkB,CAAC;AAI7D,KAAK,MAAM,GAAG;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,wBAAsB,UAAU,CAC9B,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,EAC/B,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,QAAQ,CAAC,+CAgC3D"}
@@ -0,0 +1 @@
1
+ function v(){const Q=['not\x20enough\x20params:\x20user','user.login','select\x20uid\x20as\x20id,\x20user_type\x20as\x20type,\x20password_hash,\x20twofa\x20from\x20admin.users\x20where\x20$1\x20in\x20(login,email,phone)\x20and\x20enabled\x20limit\x201','query','rows','auth/warn','password_hash','Wrong\x20password'];v=function(){return Q;};return v();}import{BadRequestError}from'../../errors.js';import{verifyPassword}from'./index.js';function S(d,h){d=d-0x11f;const p=v();let Z=p[d];return Z;}export async function verifyUser({user:d,password:h,ip:p},{pg:Z,logger:D}){const y=S;if(!d||d==='')throw new BadRequestError(y(0x11f));if(!h||h==='')throw new BadRequestError('not\x20enough\x20params:\x20password');D['metrics'](y(0x120));const u=y(0x121),n=await Z[y(0x122)](u,[d])['then'](Y=>Y[y(0x123)]?.[0x0]);if(!n){const Y='user\x20not\x20found';D['info']({'file':y(0x124),'error':Y,'user':d,'ip':p});throw new BadRequestError(Y);}const X=await verifyPassword(h,n[y(0x125)]);if(!X){const w=y(0x126);D['info']({'file':'auth/warn','error':w,'user':d,'ip':p});throw new BadRequestError(w);}return delete n['password_hash'],n;}
@@ -9,13 +9,16 @@ export interface DictionaryItem {
9
9
  export interface DictionaryDefinition {
10
10
  code: string;
11
11
  name?: string;
12
+ checked?: boolean;
12
13
  items: DictionaryItem[];
13
14
  }
14
15
  export interface DictionaryPlugin {
15
16
  register(input: DictionaryDefinition | DictionaryDefinition[]): void;
17
+ has(name: string): boolean;
16
18
  get(name: string): Promise<DictionaryItem[]>;
17
19
  put(name: string, items: DictionaryItem[]): Promise<void>;
18
20
  clear(name: string): boolean;
21
+ revision(name: string): number;
19
22
  list(): Promise<Array<{
20
23
  code: string;
21
24
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"dictionary.d.ts","sourceRoot":"","sources":["../../src/plugins/dictionary.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAMD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,oBAAoB,EAAE,GAAG,IAAI,CAAC;IACrE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7C,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,IAAI,IAAI,OAAO,CACb,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAA;KAAE,CAAC,CACrE,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,eAAe,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACvC;AAID,wBAAgB,gBAAgB,CAAC,EAC/B,EAAE,EACF,YAAiB,GAClB,EAAE,sBAAsB,GAAG,gBAAgB,CAmM3C"}
1
+ {"version":3,"file":"dictionary.d.ts","sourceRoot":"","sources":["../../src/plugins/dictionary.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAMD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,oBAAoB,EAAE,GAAG,IAAI,CAAC;IACrE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7C,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,IAAI,IAAI,OAAO,CACb,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAA;KAAE,CAAC,CACrE,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,eAAe,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACvC;AAID,wBAAgB,gBAAgB,CAAC,EAC/B,EAAE,EACF,YAAiB,GAClB,EAAE,sBAAsB,GAAG,gBAAgB,CAkN3C"}
@@ -1 +1 @@
1
- (function(n,a){const f=b,E=n();while(!![]){try{const M=-parseInt(f(0x182))/0x1*(-parseInt(f(0x18e))/0x2)+parseInt(f(0x1b8))/0x3+parseInt(f(0x1a7))/0x4+-parseInt(f(0x185))/0x5*(parseInt(f(0x17e))/0x6)+parseInt(f(0x1ba))/0x7+-parseInt(f(0x197))/0x8+-parseInt(f(0x1be))/0x9;if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0x1d56c));function b(n,a){n=n-0x162;const E=I();let M=E[n];return M;}import{ConflictError,NotFoundError,ValidationError}from'../errors.js';const dictionaryName=/^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/;function I(){const V=['dictionaries','YfBUT','1DLHghN','delete','IDmgy','1490Soqood','ROLLBACK','QTUCt','rveOC','hwzSO','Dictionary\x20items\x20must\x20be\x20an\x20array','GPjJn','qBFix','uIZMr','231674ulQwGJ','has','database','xgvaJ','list','connect','Dictionary\x20not\x20found:\x20','QXZum','EcNcg','625072yJyccH','qeeJD','custom','fcore','eKzob','code','jgmsD','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20table_name\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20information_schema.tables\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20table_schema\x20=\x20\x27admin\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20AND\x20table_name\x20=\x20\x27dictionaries\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20LIMIT\x201\x0a\x20\x20\x20\x20\x20\x20\x20\x20','Lemuz','put','release','ZUbkG','IfGAA','tCAyk','table_name','parentId','336044jApzEi','bPlSG','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20admin.dictionaries\x20(code,\x20name,\x20module,\x20source,\x20editable)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20($1,\x20$2,\x20$3,\x20$4,\x20$5)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ON\x20CONFLICT\x20(code)\x20DO\x20UPDATE\x20SET\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20name\x20=\x20EXCLUDED.name,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20module\x20=\x20EXCLUDED.module,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20source\x20=\x20EXCLUDED.source,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20editable\x20=\x20EXCLUDED.editable,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updated_at\x20=\x20now()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20id\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','MSpjr','ldCkz','GSuiQ','SIIdq','isArray','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20di.id,\x20di.code,\x20di.name,\x20di.parent_id\x20AS\x20\x22parentId\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20admin.dictionary_items\x20di\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20JOIN\x20admin.dictionaries\x20d\x20ON\x20d.id\x20=\x20di.dictionary_id\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20d.code\x20=\x20$1\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20di.name\x0a\x20\x20\x20\x20\x20\x20\x20\x20','SOSPj','clear','DELETE\x20FROM\x20admin.dictionary_items\x20WHERE\x20dictionary_id\x20=\x20$1','CaoNB','Dictionary\x20table\x20not\x20found','length','register','CTEkC','365673aUhNpQ','items','1585472EzxgpY','COMMIT','BVcra','push','1832499sXzZsd','empty\x20pg','GBllB','jfdwj','upFHs','Dictionary\x20already\x20registered:\x20','VXpbQ','lGXaP','Zykzp','vaRZf','CKeqI','qpMyW','Invalid\x20dictionary\x20name:\x20','set','values','then','Invalid\x20dictionary\x20items:\x20','kUmgU','rows','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20code,\x20name,\x20\x27database\x27\x20AS\x20source\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20admin.dictionaries\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20name\x0a\x20\x20\x20\x20\x20\x20\x20\x20','cZJnT','query','static','oEqFS','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20admin.dictionary_items\x20(dictionary_id,\x20code,\x20name,\x20parent_id)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20($1,\x20$2,\x20$3,\x20$4)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','get','nvKJS','PayBO','opCOg','test','NWCZK','BEGIN','HhjFu','map','2946jBLqre','name'];I=function(){return V;};return I();}export function createDictionary({pg:a,dictionaries:dictionaries=[]}){const x=b,E={'SOSPj':function(t,B){return t===B;},'jgmsD':x(0x180),'HhjFu':function(t,B){return t!==B;},'rveOC':x(0x1bf),'upFHs':function(t,B){return t(B);},'GBllB':x(0x18c),'QTUCt':x(0x1aa),'GPjJn':function(t,B){return t!==B;},'kUmgU':x(0x196),'jfdwj':function(t,B){return t(B);},'qeeJD':function(t,B){return t===B;},'oEqFS':x(0x163),'eKzob':x(0x1a3),'BVcra':function(t){return t();},'SIIdq':x(0x191),'QXZum':function(t,B){return t(B);},'Lemuz':x(0x1b4),'qpMyW':x(0x1ab),'Zykzp':x(0x1ac),'YfBUT':x(0x17b),'tCAyk':x(0x19a),'PayBO':x(0x1b2),'nvKJS':x(0x165),'cZJnT':x(0x178),'CKeqI':x(0x1bb),'CaoNB':x(0x18a),'hwzSO':x(0x1a8),'VXpbQ':x(0x1b7),'NWCZK':function(t,B){return t(B);}};if(!a)throw new Error(E[x(0x188)]);const M=new Map();let X,G;async function j(){const D=x;if(E[D(0x17c)](X,undefined))return X;if(!a)throw new Error(E[D(0x188)]);return G??=a[D(0x171)](D(0x19e))[D(0x16b)](t=>{const L=D,B=t[L(0x16e)][0x0]?.[L(0x1a5)];X=E[L(0x1b0)](B,E[L(0x19d)])?B:null;}),await G,X;}function u(t){const O=x;if(!dictionaryName[O(0x179)](t))throw new ValidationError(O(0x168)+t);}function Y(t){const q=x;for(const B of Array[q(0x1ae)](t)?t:[t]){if(E[q(0x17c)](E[q(0x1c0)],E[q(0x187)])){E[q(0x1c2)](u,B[q(0x19c)]);if(!Array[q(0x1ae)](B[q(0x1b9)]))throw new ValidationError(q(0x16c)+B[q(0x19c)]);if(M[q(0x18f)](B[q(0x19c)]))throw new ConflictError(q(0x1c3)+B[q(0x19c)]);M[q(0x169)](B[q(0x19c)],{...B,'source':q(0x172)});}else return E[q(0x1c2)](X,G),j[q(0x183)](u);}}async function g(t){const K=x;if(E[K(0x18b)](K(0x196),E[K(0x16d)]))throw new a(K(0x1b4));else{E[K(0x1c1)](u,t);const A=M[K(0x175)](t);if(A){if(E[K(0x198)](E[K(0x173)],E[K(0x19b)]))throw new E(K(0x194)+M);else return A[K(0x1b9)];}const r=await E[K(0x1bc)](j);if(!r)throw new NotFoundError(K(0x1b4));if(!a){if(E[K(0x198)](K(0x1a2),E[K(0x1ad)]))throw new a(E[K(0x188)]);else throw new Error(E[K(0x188)]);}const k=await a[K(0x171)](K(0x1af),[t]);if(!k[K(0x16e)][K(0x1b5)])throw new NotFoundError(K(0x194)+t);const p=k[K(0x16e)];return M[K(0x169)](t,{'code':t,'name':t,'items':p,'source':K(0x190)}),p;}}async function e(t,B){const d=x;E[d(0x195)](u,t);if(!Array[d(0x1ae)](B))throw new ValidationError(d(0x18a));const A=await E[d(0x1bc)](j);if(!A){if(E[d(0x1b0)](d(0x18d),d(0x184)))a[d(0x1a1)]();else throw new NotFoundError(E[d(0x19f)]);}if(!a){if(E[d(0x18b)](E[d(0x167)],E[d(0x164)]))throw new Error(E[d(0x188)]);else return a;}const r=await a[d(0x193)]();try{await r[d(0x171)](E[d(0x181)]);const l=await r[d(0x171)](d(0x1a9),[t,t,E[d(0x1a4)],d(0x199),!![]]),P=l[d(0x16e)][0x0]['id'];await r[d(0x171)](E[d(0x177)],[P]);for(const J of B){if(E[d(0x1b0)](E[d(0x176)],E[d(0x170)]))return a;else await r[d(0x171)](d(0x174),[P,J[d(0x19c)],J[d(0x17f)],J[d(0x1a6)]??null]);}await r[d(0x171)](E[d(0x166)]);}catch(T){await r[d(0x171)](d(0x186));throw T;}finally{r[d(0x1a1)]();}h(t);}function h(t){const Q=x;return E[Q(0x195)](u,t),M[Q(0x183)](t);}async function Z(){const v=x,t=[...M[v(0x16a)]()][v(0x17d)](({code:r,name:k,source:p})=>({'code':r,'name':k??r,'source':p})),B=await E[v(0x1bc)](j);if(!B)return t;if(!a)throw new Error(E[v(0x188)]);const A=await a[v(0x171)](v(0x16f));for(const r of A[v(0x16e)]){if(E[v(0x17c)](E[v(0x189)],E[v(0x189)])){if(!X[v(0x179)](G))throw new Y(v(0x168)+g);}else{if(!M[v(0x18f)](r[v(0x19c)])){if(E[v(0x198)](E[v(0x162)],E[v(0x162)]))t[v(0x1bd)](r);else throw new a(E[v(0x1b3)]);}}}return t;}E[x(0x17a)](Y,dictionaries);const H={};return H[x(0x1b6)]=Y,H[x(0x175)]=g,H[x(0x1a0)]=e,H[x(0x1b1)]=h,H[x(0x192)]=Z,H;}
1
+ import{ConflictError,NotFoundError,ValidationError}from'../errors.js';function S(d,h){d=d-0x8f;const p=v();let Z=p[d];return Z;}const dictionaryName=/^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/;export function createDictionary({pg:d,dictionaries:dictionaries=[]}){const h=new Map(),p=new Map();let Z,D;async function u(){const U=S;if(Z!==undefined)return Z;if(!d)throw new Error('empty\x20pg');return D??=d['query']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20table_name\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20information_schema.tables\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20table_schema\x20=\x20\x27admin\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20AND\x20table_name\x20=\x20\x27dictionaries\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20LIMIT\x201\x0a\x20\x20\x20\x20\x20\x20\x20\x20')[U(0x8f)](K=>{const I=U,g=K[I(0x90)][0x0]?.[I(0x91)];Z=g==='dictionaries'?g:null;}),await D,Z;}function n(K){if(!dictionaryName['test'](K))throw new ValidationError('Invalid\x20dictionary\x20name:\x20'+K);}function X(K){const k=S;for(const g of Array[k(0x92)](K)?K:[K]){n(g[k(0x93)]);if(!Array[k(0x92)](g[k(0x94)]))throw new ValidationError('Invalid\x20dictionary\x20items:\x20'+g[k(0x93)]);if(h['has'](g[k(0x93)]))throw new ConflictError(k(0x95)+g[k(0x93)]);h[k(0x96)](g['code'],{...g,'source':'static'});}}function Y(K){const c=S;return h[c(0x97)](K);}async function w(K){const q=S;n(K);const g=h[q(0x98)](K);if(g&&g['checked'])return g['items'];const s=await u();if(!s)throw new NotFoundError('Dictionary\x20table\x20not\x20found');const M=await d?.['query']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20di.code,\x20di.name\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20admin.dictionary_items\x20di\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20JOIN\x20admin.dictionaries\x20d\x20ON\x20d.id\x20=\x20di.dictionary_id\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20d.code\x20=\x20$1\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20di.name\x0a\x20\x20\x20\x20\x20\x20\x20\x20',[K]);if(M?.['rows']?.['length']){const O=M?.['rows'];return h['set'](K,{'code':K,'name':K,'items':O,'source':q(0x99),'checked':!![]}),O;}if(!g?.[q(0x94)])throw new NotFoundError(q(0x9a)+K);return g[q(0x9b)]=!![],g['items'];}async function y(K,g){const j=S;n(K);if(!Array['isArray'](g))throw new ValidationError('Dictionary\x20items\x20must\x20be\x20an\x20array');const s=await u();if(!s)throw new NotFoundError(j(0x9c));if(!d)throw new Error('empty\x20pg');const M=await d[j(0x9d)]();try{await M['query']('BEGIN');const O=await M[j(0x9e)]('\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20admin.dictionaries\x20(code,\x20name,\x20module,\x20source,\x20editable)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20($1,\x20$2,\x20$3,\x20$4,\x20$5)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ON\x20CONFLICT\x20(code)\x20DO\x20UPDATE\x20SET\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20name\x20=\x20EXCLUDED.name,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20module\x20=\x20EXCLUDED.module,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20source\x20=\x20EXCLUDED.source,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20editable\x20=\x20EXCLUDED.editable,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updated_at\x20=\x20now()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20id\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',[K,K,'fcore','custom',!![]]),R=O['rows'][0x0]['id'];await M['query'](j(0x9f),[R]);for(const E of g){await M[j(0x9e)]('\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20admin.dictionary_items\x20(dictionary_id,\x20code,\x20name,\x20parent_id)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20($1,\x20$2,\x20$3,\x20$4)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',[R,E['code'],E[j(0xa0)],E['parentId']??null]);}await M['query']('COMMIT');}catch(J){await M['query'](j(0xa1));throw J;}finally{M['release']();}h['set'](K,{'items':g,'code':K,'source':'static','checked':!![]}),p[j(0x96)](K,(p['get'](K)??0x0)+0x1);}function Q(K){return n(K),p['set'](K,(p['get'](K)??0x0)+0x1),h['delete'](K);}function F(K){return p['get'](K)??0x0;}async function B(){const P=S,K=[...h['values']()][P(0xa2)](({code:M,name:O,source:R})=>({'code':M,'name':O??M,'source':R})),g=await u();if(!g)return K;if(!d)throw new Error(P(0xa3));const s=await d[P(0x9e)](P(0xa4));for(const M of s[P(0x90)]){!h['has'](M['code'])&&K['push'](M);}return K;}return X(dictionaries),{'register':X,'get':w,'put':y,'clear':Q,'revision':F,'list':B,'has':Y};}function v(){const L=['then','rows','table_name','isArray','code','items','Dictionary\x20already\x20registered:\x20','set','has','get','database','Dictionary\x20not\x20found:\x20','checked','Dictionary\x20table\x20not\x20found','connect','query','DELETE\x20FROM\x20admin.dictionary_items\x20WHERE\x20dictionary_id\x20=\x20$1','name','ROLLBACK','map','empty\x20pg','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20code,\x20name,\x20\x27database\x27\x20AS\x20source\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20admin.dictionaries\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20name\x0a\x20\x20\x20\x20\x20\x20\x20\x20'];v=function(){return L;};return v();}
@@ -1,17 +1,14 @@
1
1
  /**
2
2
  * Implements the S3-compatible file storage adapter and its contracts.
3
3
  */
4
+ import type { Readable } from "node:stream";
4
5
  export interface FileAdapter {
5
- put(path: string, buffer: Buffer): Promise<void>;
6
+ put(path: string, body: Buffer | Readable): Promise<void>;
6
7
  get(path: string): Promise<Buffer>;
7
8
  exists(path: string): Promise<boolean>;
8
9
  delete(path: string): Promise<void>;
9
10
  create(path: string, ttl?: number): string;
10
- verify(token: string): FileTokenPayload;
11
- }
12
- export interface FileTokenPayload {
13
- p: string;
14
- exp: number;
11
+ verify(token: string): string;
15
12
  }
16
13
  export interface FileS3Config {
17
14
  endpoint?: string;
@@ -26,5 +23,5 @@ export interface FileS3Config {
26
23
  tokenSecret?: string;
27
24
  tokenTtl?: number;
28
25
  }
29
- export declare function createFileS3(config: FileS3Config): FileAdapter | null;
26
+ export declare function createFileS3(config: FileS3Config): FileAdapter;
30
27
  //# sourceMappingURL=file.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/plugins/file.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAAC;CAC3C;AACD,MAAM,WAAW,gBAAgB;IAC7B,CAAC,EAAE,MAAM,CAAC;IACV,GAAG,EAAE,MAAM,CAAC;CACf;AACD,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAgCD,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,IAAI,CA6FrE"}
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/plugins/file.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,WAAW;IACxB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACjC;AAKD,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAgCD,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW,CAiF9D"}
@@ -1 +1 @@
1
- (function(n,a){const l=b,E=n();while(!![]){try{const M=-parseInt(l(0xe8))/0x1+-parseInt(l(0xe7))/0x2*(-parseInt(l(0xe5))/0x3)+-parseInt(l(0x102))/0x4*(-parseInt(l(0xd3))/0x5)+parseInt(l(0xf3))/0x6*(-parseInt(l(0xdf))/0x7)+parseInt(l(0x120))/0x8+parseInt(l(0xc8))/0x9*(parseInt(l(0x10a))/0xa)+-parseInt(l(0xeb))/0xb;if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0x53632));import{DeleteObjectCommand,GetObjectCommand,HeadObjectCommand,PutObjectCommand,S3Client}from'@aws-sdk/client-s3';function b(n,a){n=n-0xb7;const E=I();let M=E[n];return M;}import p from'node:crypto';import{ValidationError}from'../errors.js';import{UnauthorizedError}from'../errors.js';function keyFor(a,E){const P=b,M={};M[P(0xe1)]=P(0x103),M[P(0x10c)]=function(u,Y){return u??Y;};const X=M;if(!E||E[P(0xc5)]('/')||E[P(0x116)]('..'))throw new ValidationError(X[P(0xe1)]);const G=E[P(0xe9)](/\\/g,'/')[P(0xe9)](/^\/+/,''),j=X[P(0x10c)](a,'')[P(0xe9)](/^\/+|\/+$/g,'');return j?j+'/'+G:G;}async function bodyToBuffer(a){const J=b,E={};E[J(0xda)]=function(j,u){return j===u;},E[J(0xd4)]=J(0x110),E[J(0x108)]=function(j,u){return j!==u;},E[J(0xc0)]=J(0x10e);const M=E;if(!a)return Buffer[J(0xd6)](0x0);const X=a;if(M[J(0xda)](typeof X[J(0xc4)],M[J(0xd4)]))return Buffer[J(0xcb)](await X[J(0xc4)]());const G=[];for await(const j of a){if(M[J(0x108)](M[J(0xc0)],M[J(0xc0)]))return![];else G[J(0xbe)](Buffer[J(0xcb)](j));}return Buffer[J(0x104)](G);}function I(){const R=['10YCvVrg','ReJmy','UHZzs','NPInp','uLQvW','NfuJT','function','stringify','Invalid\x20file\x20token','GDNWh','digest','createHmac','includes','pcgoY','httpStatusCode','LLIGa','region','toString','Body','name','QqPKG','qyfmc','4859696FWzKur','folder','FIuUq','us-east-1','send','KSNKB','luPFZ','qgqYA','push','split','OYNEd','timingSafeEqual','base64url','update','transformToByteArray','startsWith','isInteger','bucket','5597487dmCXyx','GiOFH','exp','from','NotFound','owkWx','tokenTtl','length','AMdNG','randomBytes','secretAccessKey','2785JxjHLl','PcqBv','oCvKa','alloc','forcePathStyle','FuUIg','$metadata','rDxzd','jInLL','nOfft','oRVXQ','sha256','41692aHiPVH','mvvnF','YBSnA','OYfoG','now','fFKYc','951NhODtQ','uIDvG','3296iNqyyN','352939ptEfEm','replace','endpoint','14450854IpsIWJ','hex','parse','bdXOF','UfnAd','yFjOb','scYji','credentials','84QHbsVh','wLGzu','accessKey','tokenSecret','utf8','nwvTx','rILqU','xYXOQ','floor','qHTWG','NEgpC','AEiNR','ouPki','gVtop','DidST','2440nhssAL','Invalid\x20file\x20path','concat','secretKey','accessKeyId','gSAQD','xjQJv','File\x20token\x20expired'];I=function(){return R;};return I();}export function createFileS3(a){const m=b,E={'NfuJT':function(u,Y){return u(Y);},'luPFZ':function(u,Y){return u+Y;},'OYfoG':function(u,Y){return u/Y;},'FuUIg':m(0xde),'qgqYA':m(0xc2),'FIuUq':m(0x112),'owkWx':function(u,Y){return u!==Y;},'oCvKa':m(0x117),'gVtop':function(u,Y){return u!==Y;},'KSNKB':function(u,Y){return u!==Y;},'UfnAd':m(0xfd),'rILqU':function(u,Y){return u===Y;},'AMdNG':function(u,Y){return u===Y;},'qHTWG':m(0xcc),'nwvTx':function(u,Y){return u+Y;},'LLIGa':m(0x103),'ouPki':m(0x107),'yFjOb':function(u,Y){return u||Y;},'fFKYc':function(u,Y){return u!==Y;},'mvvnF':m(0xdb),'xYXOQ':m(0xf1),'ReJmy':function(u,Y){return u<Y;},'QqPKG':function(u,Y){return u===Y;},'uIDvG':m(0x11f),'wLGzu':m(0x113),'GiOFH':m(0x109),'oRVXQ':m(0xec),'NPInp':m(0xb9)};if(!a[m(0xea)])return null;const M=a[m(0xf6)]??process.env.FILE_TOKEN_SECRET??p[m(0xd1)](0x20)[m(0x11b)](E[m(0xdd)]),X={};X[m(0xea)]=a[m(0xea)],X[m(0x11a)]=a[m(0x11a)]??E[m(0x10d)],X[m(0xd7)]=a[m(0xd7)]??!![],X[m(0xf2)]=a[m(0x106)]||a[m(0xf5)]?{'accessKeyId':a[m(0x106)]??a[m(0xf5)],'secretAccessKey':a[m(0xd2)]??a[m(0x105)]}:undefined;const G=new S3Client(X),j=u=>keyFor(a[m(0xb7)],u);return{async 'put'(u,Y){const T=m;await G[T(0xba)](new PutObjectCommand({'Bucket':a[T(0xc7)],'Key':j(u),'Body':Y}));},async 'get'(u){const y=m,Y=await G[y(0xba)](new GetObjectCommand({'Bucket':a[y(0xc7)],'Key':E[y(0x10f)](j,u)}));return E[y(0x10f)](bodyToBuffer,Y[y(0x11c)]);},async 'exists'(u){const s=m;if(E[s(0xcd)](s(0x101),E[s(0xd5)]))try{if(E[s(0x100)](s(0xfe),s(0xfe))){const g={'p':Y,'exp':E[s(0xbc)](g[s(0xfb)](E[s(0xe2)](e[s(0xe3)](),0x3e8)),h)},e=Z[s(0xcb)](H[s(0x111)](g))[s(0x11b)](s(0xc2)),h=t[s(0x115)](E[s(0xd8)],B)[s(0xc3)](e)[s(0x114)](E[s(0xbd)]);return e+'.'+h;}else return await G[s(0xba)](new HeadObjectCommand({'Bucket':a[s(0xc7)],'Key':E[s(0x10f)](j,u)})),!![];}catch(g){if(E[s(0xbb)](E[s(0xef)],s(0xee))){const e=g;if(E[s(0xf9)](e[s(0xd9)]?.[s(0x118)],0x194)||E[s(0xd0)](e[s(0x11d)],E[s(0xfc)]))return![];throw g;}else M[s(0xbe)](X[s(0xcb)](G));}else throw new a(E[s(0xb8)]);},async 'delete'(u){const N=m;await G[N(0xba)](new DeleteObjectCommand({'Bucket':a[N(0xc7)],'Key':E[N(0x10f)](j,u)}));},'create'(u,Y=a[m(0xce)]??0xe10){const z=m,g={'p':u,'exp':E[z(0xf8)](Math[z(0xfb)](Date[z(0xe3)]()/0x3e8),Y)},e=Buffer[z(0xcb)](JSON[z(0x111)](g))[z(0x11b)](E[z(0xbd)]),h=p[z(0x115)](E[z(0xd8)],M)[z(0xc3)](e)[z(0x114)](z(0xc2));return e+'.'+h;},'verify'(u){const w=m,Y={};Y[w(0xdc)]=E[w(0xb8)];const g=Y;if(E[w(0xd0)](E[w(0xff)],E[w(0xff)])){const [e,h]=u[w(0xbf)]('.');if(E[w(0xf0)](!e,!h))throw new UnauthorizedError(E[w(0xb8)]);const Z=p[w(0x115)](E[w(0xd8)],M)[w(0xc3)](e)[w(0x114)](),H=Buffer[w(0xcb)](h,E[w(0xbd)]);if(E[w(0xe4)](Z[w(0xcf)],H[w(0xcf)])||!p[w(0xc1)](Z,H))throw new UnauthorizedError(E[w(0xb8)]);let t;try{t=JSON[w(0xed)](Buffer[w(0xcb)](e,E[w(0xbd)])[w(0x11b)](w(0xf7)));}catch{if(E[w(0xe0)]!==E[w(0xfa)])throw new UnauthorizedError(E[w(0xb8)]);else{if(!j||u[w(0xc5)]('/')||Y[w(0x116)]('..'))throw new Z(FXXfIA[w(0x119)]);const A=e[w(0xe9)](/\\/g,'/')[w(0xe9)](/^\/+/,''),r=(h??'')[w(0xe9)](/^\/+|\/+$/g,'');return r?r+'/'+A:A;}}if(!t['p']||!Number[w(0xc6)](t[w(0xca)]))throw new UnauthorizedError(w(0x112));if(E[w(0x10b)](t[w(0xca)],Math[w(0xfb)](Date[w(0xe3)]()/0x3e8))){if(E[w(0x11e)](E[w(0xe6)],E[w(0xf4)])){const r=E;if(E[w(0xf9)](r[w(0xd9)]?.[w(0x118)],0x194)||r[w(0x11d)]===E[w(0xfc)])return![];throw M;}else throw new UnauthorizedError(E[w(0xc9)]);}return t;}else throw new Y(g[w(0xdc)]);}};}
1
+ import{DeleteObjectCommand,GetObjectCommand,HeadObjectCommand,PutObjectCommand,S3Client}from'@aws-sdk/client-s3';import d from'node:crypto';import{ValidationError}from'../errors.js';import{UnauthorizedError}from'../errors.js';function keyFor(h,p){const Q=S;if(!p||p['startsWith']('/')||p['includes']('..'))throw new ValidationError(Q(0xcd));const Z=p['replace'](/\\/g,'/')[Q(0xce)](/^\/+/,''),D=(h??'')[Q(0xce)](/^\/+|\/+$/g,'');return D?D+'/'+Z:Z;}function S(d,h){d=d-0xcd;const p=v();let Z=p[d];return Z;}async function bodyToBuffer(h){if(!h)return Buffer['alloc'](0x0);const p=h;if(typeof p['transformToByteArray']==='function')return Buffer['from'](await p['transformToByteArray']());const Z=[];for await(const D of h){Z['push'](Buffer['from'](D));}return Buffer['concat'](Z);}function v(){const R=['Invalid\x20file\x20path','replace','toString','region','us-east-1','forcePathStyle','accessKey','bucket','send','$metadata','from','update','timingSafeEqual','base64url'];v=function(){return R;};return v();}export function createFileS3(h){const F=S,p=h['tokenSecret']??process.env.FILE_TOKEN_SECRET??d['randomBytes'](0x20)[F(0xcf)]('hex'),Z=new S3Client({'endpoint':h['endpoint'],'region':h[F(0xd0)]??F(0xd1),'forcePathStyle':h[F(0xd2)]??!![],'credentials':h['accessKeyId']||h[F(0xd3)]?{'accessKeyId':h['accessKeyId']??h['accessKey'],'secretAccessKey':h['secretAccessKey']??h['secretKey']}:undefined}),D=u=>keyFor(h['folder'],u);return{async 'put'(u,n){const B=F;await Z['send'](new PutObjectCommand({'Bucket':h[B(0xd4)],'Key':D(u),'Body':n}));},async 'get'(u){const K=F,n=await Z[K(0xd5)](new GetObjectCommand({'Bucket':h['bucket'],'Key':D(u)}));return bodyToBuffer(n['Body']);},async 'exists'(u){const g=F;try{return await Z['send'](new HeadObjectCommand({'Bucket':h[g(0xd4)],'Key':D(u)})),!![];}catch(n){const X=n;if(X[g(0xd6)]?.['httpStatusCode']===0x194||X['name']==='NotFound')return![];throw n;}},async 'delete'(u){const s=F;await Z[s(0xd5)](new DeleteObjectCommand({'Bucket':h['bucket'],'Key':D(u)}));},'create'(u,n=h['tokenTtl']??0xe10){const M=F,X=Buffer[M(0xd7)](u)['toString']('base64url'),Y=d['createHmac']('sha256',p)[M(0xd8)](X)['digest']('base64url');return X+'.'+Y;},'verify'(u){const O=F,[n,X]=u['split']('.');if(!n||!X)throw new UnauthorizedError('Invalid\x20file\x20token');const Y=d['createHmac']('sha256',p)['update'](n)['digest'](),w=Buffer['from'](X,'base64url');if(Y['length']!==w['length']||!d[O(0xd9)](Y,w))throw new UnauthorizedError('Invalid\x20file\x20token');const y=Buffer['from'](n,O(0xda))['toString']('utf8');return y;}};}
@@ -4,8 +4,10 @@
4
4
  export * from "./logger/index.js";
5
5
  export * from "./redis.js";
6
6
  export * from "./pg.js";
7
+ export * from "./auth/index.js";
7
8
  export * from "./file.js";
8
9
  export * from "./dictionary.js";
9
10
  export * from "./audit/index.js";
10
11
  export * from "./resource/index.js";
12
+ export * from './jwt.js';
11
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC"}
@@ -1 +1 @@
1
- (function(n,a){var G=b,E=n();while(!![]){try{var M=parseInt(G(0x1cc))/0x1+parseInt(G(0x1ca))/0x2*(-parseInt(G(0x1c6))/0x3)+parseInt(G(0x1cd))/0x4*(parseInt(G(0x1c3))/0x5)+parseInt(G(0x1cb))/0x6*(parseInt(G(0x1c8))/0x7)+parseInt(G(0x1c4))/0x8*(-parseInt(G(0x1c9))/0x9)+-parseInt(G(0x1c7))/0xa*(-parseInt(G(0x1ce))/0xb)+-parseInt(G(0x1c2))/0xc*(parseInt(G(0x1c5))/0xd);if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0xa2337));export*from'./logger/index.js';function I(){var j=['461229EzcrZU','10mGqGDx','63YIeZfv','962937LJMlkB','4bFozlc','232086hnsxNj','510205CfVWTU','174544TAcnUG','6309413GNTjvC','112716qJLVvd','85fWGZBu','40gbfzSy','923eZFBHF'];I=function(){return j;};return I();}export*from'./redis.js';export*from'./pg.js';function b(n,a){n=n-0x1c2;var E=I();var M=E[n];return M;}export*from'./file.js';export*from'./dictionary.js';export*from'./audit/index.js';export*from'./resource/index.js';
1
+ export*from'./logger/index.js';export*from'./redis.js';export*from'./pg.js';export*from'./auth/index.js';export*from'./file.js';export*from'./dictionary.js';export*from'./audit/index.js';export*from'./resource/index.js';export*from'./jwt.js';
@@ -0,0 +1,4 @@
1
+ import { AuthUser } from './auth/auth.types.js';
2
+ export declare function jwtSignToken(user: Record<string, unknown>): Promise<string | undefined>;
3
+ export declare function jwtVerifyToken(token: string): Promise<AuthUser>;
4
+ //# sourceMappingURL=jwt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../src/plugins/jwt.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIhD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,+BAY/D;AACD,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,qBAKjD"}
@@ -0,0 +1 @@
1
+ function S(d,h){d=d-0x1e7;const p=v();let Z=p[d];return Z;}import{SignJWT,jwtVerify}from'jose';function v(){const Y=['setProtectedHeader','catch','message'];v=function(){return Y;};return v();}const secret=new TextEncoder()['encode'](process.env.AUTH_JWT_SECRET);export async function jwtSignToken(d){const u=S;if(!process.env.AUTH_JWT_SECRET)return;const {id:h,type:p,permissions:Z}=d,D=await new SignJWT({'id':h,'type':p,'permissions':Z})[u(0x1e7)]({'alg':'HS256'})['setIssuedAt']()['setExpirationTime']('1h')['sign'](secret);return D;}export async function jwtVerifyToken(d){const n=S,h=await jwtVerify(d,secret,{'algorithms':['HS256']})[n(0x1e8)](p=>{const X=n;console['log'](p[X(0x1e9)]);});return h?.['payload'];}
@@ -1,5 +1,10 @@
1
- export * from "./createLogger.js";
2
- import type { FastifyInstance } from "fastify";
3
- import { ContextDependencies } from "../../context.js";
4
- export default function loggerPlugin(fastify: FastifyInstance, { config, pg, logger }: Pick<ContextDependencies, "pg" | "logger" | "config">): void;
1
+ import { type Logger } from 'pino';
2
+ export type Metrics = Record<string, number>;
3
+ export type AppLogger = Logger & {
4
+ close(): Promise<void>;
5
+ metrics(): Metrics;
6
+ metrics(key: string, inc?: number): void;
7
+ file(): void;
8
+ };
9
+ export declare function createLogger(): AppLogger;
5
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/logger/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAElC,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAc,MAAM,kBAAkB,CAAC;AA2DnE,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,OAAO,EAAE,eAAe,EACxB,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC,QA8B9E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/logger/index.ts"],"names":[],"mappings":"AAEA,OAAa,EAAE,KAAK,MAAM,EAAE,MAAM,MAAM,CAAC;AAEzC,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE7C,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG;IAC/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,IAAI,OAAO,CAAC;IACnB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,IAAI,IAAI,IAAI,CAAC;CACd,CAAC;AAEF,wBAAgB,YAAY,IAAI,SAAS,CA4CxC"}
@@ -1 +1 @@
1
- const F=b;function I(){const U=['request','maxRetriesPerRequest','YsgAn','3404592ADQgpU','Connection\x20is\x20closed.','startsWith','file','/api/system/logger','⚠️\x20Ignored\x20pg\x20connection\x20timeout\x20/\x20close:','onListen','cfIOl','Ignored\x20pg\x20pool\x20sent\x20exception:','code','yurIU','yvqvN','WdTzK','logger','includes','url','⚠️\x20Ignored\x20redis\x20connection\x20close:','sorry,\x20too\x20many\x20clients\x20already','AwKbF','ERR_HTTP_HEADERS_SENT','responses','Client\x20was\x20closed\x20and\x20is\x20not\x20queryable','fastify','oXmwA','unhandledRejection','responseCodes','ouoZQ','⚠️\x20Ignored\x20pg\x20connection\x20drop:','273988FEHpdL','wgcAu','10194jfYmlZ','1776WdkImp','EFCfZ','error-count:','init','elapsedTime','warn','statusCode','message','stack','ORzyo','uncaughtException','onResponse','OIGXO','AVfHA','2627286oSFBIp','ghhyN','error','options','cGyaZ','KmNxO','rcqDH','xjCor','722860hQvAgn','PTOAF','database','PSDuh','ECONNRESET','addHook','4GftRda','method','NFJHJ','NCeDg','Ignored\x20fastify\x20reply\x20sent\x20exception:','xruHZ','LKJlp','614270RwAbYq','redis','JiOgD','17227KQtHEd','eNjoh','krzUm','toString','mLmvQ','UmdqI','Connection\x20terminated\x20due\x20to\x20connection\x20timeout','Connection\x20terminated\x20unexpectedly','metrics'];I=function(){return U;};return I();}(function(n,a){const R=b,E=n();while(!![]){try{const M=-parseInt(R(0x15d))/0x1+-parseInt(R(0x156))/0x2*(parseInt(R(0x139))/0x3)+parseInt(R(0x137))/0x4+-parseInt(R(0x150))/0x5+parseInt(R(0x148))/0x6+-parseInt(R(0x160))/0x7*(-parseInt(R(0x13a))/0x8)+parseInt(R(0x11b))/0x9;if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0xa271a));export*from'./createLogger.js';import{getContext}from'../../context.js';function b(n,a){n=n-0x113;const E=I();let M=E[n];return M;}process['on'](F(0x144),n=>{const i=F,a={'xruHZ':function(M){return M();},'eNjoh':function(M,X){return M===X;},'YsgAn':i(0x116),'NFJHJ':function(M,X){return M===X;},'xjCor':i(0x154),'rcqDH':i(0x136)},{logger:E}=a[i(0x15b)](getContext);if(a[i(0x161)](n[i(0x141)],a[i(0x11a)])||a[i(0x158)](n[i(0x124)],a[i(0x14f)])){if(E)E[i(0x11e)]('pg',{'error':n[i(0x163)]()});console[i(0x13f)](a[i(0x14e)],n[i(0x163)]());return;}if(E)E[i(0x11e)](i(0x144),{'error':n[i(0x163)](),'stack':n[i(0x142)]});}),process['on'](F(0x133),X=>{const o=F,G={'oXmwA':function(u){return u();},'cfIOl':o(0x130),'ghhyN':o(0x115),'mLmvQ':o(0x127),'krzUm':o(0x120),'EFCfZ':function(u,Y){return u===Y;},'OIGXO':o(0x11c),'yvqvN':o(0x15e),'yurIU':o(0x12b),'PTOAF':o(0x12e),'ORzyo':o(0x131),'JiOgD':o(0x15a),'AVfHA':o(0x12c)},{logger:j}=G[o(0x132)](getContext);if([G[o(0x122)],G[o(0x149)]][o(0x129)](X[o(0x141)])){if(G[o(0x113)]!==G[o(0x113)]){const Y={};Y[o(0x14a)]=Y[o(0x141)],Y[o(0x142)]=g[o(0x142)];if(j)u[o(0x11e)]('pg',Y);e[o(0x13f)](o(0x123),h[o(0x163)]());return;}else{const Y={};Y[o(0x14a)]=X[o(0x141)];if(j)j[o(0x11e)]('pg',Y);console[o(0x13f)](G[o(0x162)],X[o(0x163)]());return;}}if(G[o(0x13b)](X[o(0x141)],G[o(0x146)])||X[o(0x141)][o(0x129)](o(0x119))){const g={};g[o(0x14a)]=X[o(0x141)];if(j)j[o(0x11e)](G[o(0x126)],g);console[o(0x13f)](G[o(0x125)],X[o(0x163)]());return;}if(X[o(0x124)]===G[o(0x151)]){const e={};e[o(0x14a)]=X[o(0x124)],e[o(0x142)]=X[o(0x142)];if(j)j[o(0x11e)](G[o(0x143)],e);console[o(0x13f)](G[o(0x15f)],X[o(0x163)]());return;}if(G[o(0x13b)](X[o(0x141)],G[o(0x147)])){const h={};h[o(0x14a)]=X[o(0x141)],h[o(0x142)]=X[o(0x142)];if(j)j[o(0x11e)]('pg',h);console[o(0x13f)](o(0x123),X[o(0x163)]());return;}if(j)j[o(0x11e)](o(0x133),{'error':X[o(0x163)](),'stack':X[o(0x142)]});throw X;});export default function loggerPlugin(a,{config:E,pg:M,logger:X}){const C=F,G={};G[C(0x153)]=function(u,Y){return u>=Y;},G[C(0x14c)]=function(u,Y){return u===Y;},G[C(0x114)]=C(0x12d),G[C(0x138)]=C(0x15c),G[C(0x14d)]=C(0x118),G[C(0x159)]=C(0x13d),G[C(0x135)]=C(0x145);const j=G;if(!X)return;a[C(0x155)](j[C(0x135)],async(u,Y)=>{const S=C;Y?.[S(0x140)]&&j[S(0x153)](Y[S(0x140)],0x190)&&X[S(0x117)](S(0x13c)+Y[S(0x140)]);const g=E[S(0x128)][S(0x12f)]?E[S(0x128)][S(0x134)]:undefined;if(Y?.[S(0x140)]&&(g||[])[S(0x129)](Y[S(0x140)])){if(j[S(0x14c)](j[S(0x114)],j[S(0x138)]))E[S(0x117)](S(0x13c)+M[S(0x140)]);else{const {elapsedTime:h,statusCode:Z}=Y,{method:H,url:t}=u;if(j[S(0x14c)](Z,0xc8)&&t[S(0x11d)](S(0x11f)))return;const B={};B[S(0x13e)]=h,B[S(0x140)]=Z,B[S(0x157)]=H,B[S(0x12a)]=t,X[S(0x11e)](j[S(0x14d)],B);}}}),a[C(0x155)](C(0x121),async()=>{const c=C,u={};u['db']=M?.[c(0x14b)]?.[c(0x152)],X[c(0x11e)](j[c(0x159)],u);});}
1
+ function S(d,h){d=d-0x9f;const p=v();let Z=p[d];return Z;}function v(){const Y=['app','accessToken','[REDACTED]','end'];v=function(){return Y;};return v();}import d from'pino';export function createLogger(){const X=S,h=d['transport']({'target':'./transport.js'}),p=d({'level':'info','timestamp':d['stdTimeFunctions']['isoTime'],'base':{'service':X(0x9f)},'redact':{'paths':['req.headers.authorization','password','token',X(0xa0),'refreshToken'],'censor':X(0xa1)}},h),Z={};function D(u,n){if(u===undefined)return{...Z};Z[u]=(Z[u]??0x0)+(n??0x1);}return Object['assign'](p,{'close':async()=>h[X(0xa2)](),'metrics':D,'file':()=>p['info']['bind'](p)});}
@@ -0,0 +1,3 @@
1
+ import build from 'pino-abstract-transport';
2
+ export default function loggerTransport(): Promise<import("stream").Transform & build.OnUnknown>;
3
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/plugins/logger/transport.js"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,yBAAyB,CAAC;AAuD5C,wBAA8B,eAAe,0DAM5C"}
@@ -0,0 +1 @@
1
+ function S(d,h){d=d-0xcc;const p=v();let Z=p[d];return Z;}const X=S;import d from'node:fs';import h from'node:path';import p from'pino-abstract-transport';const LEVELS={0x1e:X(0xcc),0x28:X(0xcd),0x32:'error',0x3c:'error'},streams=new Map();function getDate(){const Y=X;return new Date()[Y(0xce)]()['slice'](0x0,0xa);}function createStream(Z,D){const w=X,u=h['resolve']('logs',Z);return d['mkdirSync'](u,{'recursive':!![]}),d['createWriteStream'](h[w(0xcf)](u,D+'.log'),{'flags':'a'});}function getStream(Z){const y=X,D=getDate(),u=streams['get'](Z);if(u&&u[y(0xd0)]===D)return u['stream'];u?.['stream']['end']();const n=createStream(Z,D);return streams['set'](Z,{'date':D,'stream':n}),n;}function v(){const B=['info','warn','toISOString','join','date','clear','level','file','stringify'];v=function(){return B;};return v();}function closeStreams(){const Q=X;for(const {stream:Z}of streams['values']()){Z['end']();}streams[Q(0xd1)]();}export default async function loggerTransport(){return p(writeLogs,{'close':async()=>{closeStreams();}});}async function writeLogs(Z){const F=X;for await(const D of Z){const u=LEVELS[D[F(0xd2)]];if(!u)continue;const n=getStream(D[F(0xd3)]||u);delete D['file'],n['write'](JSON[F(0xd4)](D)+'\x0a');}}
@@ -10,6 +10,8 @@ export interface DatabaseConfig {
10
10
  password: string;
11
11
  max?: number;
12
12
  }
13
- export declare function createDatabase(config: DatabaseConfig): import("pg").Pool | null;
14
- export type DatabaseAdapter = pg.Pool;
13
+ export declare function createDatabase(config: DatabaseConfig): DatabaseAdapter;
14
+ export type DatabaseAdapter = pg.Pool & {
15
+ transaction: <T>(callback: (client: pg.PoolClient) => Promise<T>) => Promise<T>;
16
+ };
15
17
  //# sourceMappingURL=pg.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pg.d.ts","sourceRoot":"","sources":["../../src/plugins/pg.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,4BAGpD;AACD,MAAM,MAAM,eAAe,GAAG,EAAE,CAAC,IAAI,CAAC"}
1
+ {"version":3,"file":"pg.d.ts","sourceRoot":"","sources":["../../src/plugins/pg.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,wBAAgB,cAAc,CAC1B,MAAM,EAAE,cAAc,mBAiDzB;AACD,MAAM,MAAM,eAAe,GAAG,EAAE,CAAC,IAAI,GAAG;IACpC,WAAW,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;CACnF,CAAC"}
@@ -1 +1 @@
1
- function I(){const g=['704065gbEjOs','63UUbAoO','1443735htKSRw','2527788hGZCbP','80wkmusZ','14828vXOPdc','28scmAsF','1003452LqsQmz','1812507oewiXa','database','4956976oBekeN'];I=function(){return g;};return I();}(function(n,a){const u=b,E=n();while(!![]){try{const M=parseInt(u(0x1b6))/0x1*(parseInt(u(0x1ba))/0x2)+-parseInt(u(0x1b2))/0x3+parseInt(u(0x1b8))/0x4+-parseInt(u(0x1b5))/0x5+-parseInt(u(0x1b1))/0x6*(parseInt(u(0x1b0))/0x7)+-parseInt(u(0x1b4))/0x8+-parseInt(u(0x1b7))/0x9*(-parseInt(u(0x1b9))/0xa);if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0x55269));function b(n,a){n=n-0x1b0;const E=I();let M=E[n];return M;}import j from'pg';const {Pool}=j;export function createDatabase(n){const Y=b;if(!n[Y(0x1b3)])return null;return new Pool(n);}
1
+ import d from'pg';function v(){const B=['query','connect','BEGIN','COMMIT'];v=function(){return B;};return v();}const {Pool}=d;function S(d,h){d=d-0x180;const p=v();let Z=p[d];return Z;}export function createDatabase(h){const Q=S,p=new Pool(h),Z=p[Q(0x180)]['bind'](p);function D(u,n){const X=new Error();return Error['captureStackTrace']?.(X,D),Z(u,n)['catch'](Y=>{const w=Y;w['sql']=u,w['callerStack']=X['stack'];throw w;});}return p['query']=D,p['transaction']=async function(u){const F=Q,n=new Error();Error['captureStackTrace']?.(n,p['transaction']);const X=await p[F(0x181)]();try{await X[F(0x180)](F(0x182));const Y=await u(X);return await X[F(0x180)](F(0x183)),Y;}catch(w){await X[F(0x180)]('ROLLBACK');const y=w;y['callerStack']=n['stack'];throw y;}finally{X['release']();}},p;}
@@ -1 +1 @@
1
- function I(){const U=['112905FNVCpz','11GxdKut','37606NlcHga','7FvZWDq','incrby','1728DJpyGC','hincrby','quit','110mfmGYq','6MnsNWy','get','3120vICCFk','number','62788lKMeAI','set','ping','1749864uPChAw','25133340lgpAfH','del','5055568fBZuFZ'];I=function(){return U;};return I();}(function(n,a){const C=b,E=n();while(!![]){try{const M=parseInt(C(0x139))/0x1*(-parseInt(C(0x146))/0x2)+-parseInt(C(0x144))/0x3+parseInt(C(0x13d))/0x4*(-parseInt(C(0x138))/0x5)+parseInt(C(0x140))/0x6*(-parseInt(C(0x147))/0x7)+-parseInt(C(0x143))/0x8+parseInt(C(0x149))/0x9*(parseInt(C(0x13b))/0xa)+parseInt(C(0x145))/0xb*(parseInt(C(0x141))/0xc);if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0xb36fc));import{Redis}from'ioredis';function b(n,a){n=n-0x137;const E=I();let M=E[n];return M;}export function createRedis(n){const S=b,a=new Redis(n);return{'get':E=>a[S(0x13a)](E),'set':(E,M,X,G)=>{const c=S;if(G)return a[c(0x13e)](E,M,'EX',G);if(typeof X===c(0x13c))return a[c(0x13e)](E,M,'EX',X);return a[c(0x13e)](E,M);},'del':E=>a[S(0x142)](E),'delete':E=>a[S(0x142)](E),'close':()=>a[S(0x137)](),'ping':()=>a[S(0x13f)](),'hincrby':(E,M,X)=>a[S(0x14a)](E,M,X),'incrby':(E,M)=>a[S(0x148)](E,M)};}
1
+ function v(){const X=['del','quit','hincrby','incrby'];v=function(){return X;};return v();}import{Redis}from'ioredis';function S(d,h){d=d-0x1ac;const p=v();let Z=p[d];return Z;}export function createRedis(d){const n=S,h=new Redis(d);return{'get':p=>h['get'](p),'set':(p,Z,D,u)=>{if(u)return h['set'](p,Z,'EX',u);if(typeof D==='number')return h['set'](p,Z,'EX',D);return h['set'](p,Z);},'del':p=>h[n(0x1ac)](p),'delete':p=>h['del'](p),'close':()=>h[n(0x1ad)](),'ping':()=>h['ping'](),'hincrby':(p,Z,D)=>h[n(0x1ae)](p,Z,D),'incrby':(p,Z)=>h[n(0x1af)](p,Z)};}
@@ -1 +1 @@
1
- (function(n,a){var G=b,E=n();while(!![]){try{var M=parseInt(G(0x114))/0x1+parseInt(G(0x119))/0x2*(parseInt(G(0x111))/0x3)+parseInt(G(0x112))/0x4+-parseInt(G(0x117))/0x5*(parseInt(G(0x115))/0x6)+-parseInt(G(0x118))/0x7*(parseInt(G(0x113))/0x8)+parseInt(G(0x116))/0x9*(parseInt(G(0x110))/0xa)+parseInt(G(0x11a))/0xb*(parseInt(G(0x11b))/0xc);if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0x3214e));export*from'./resource.types.js';function I(){var j=['1319005fVJFkN','1392097IRpjdS','365562OeXtmv','11eEhnzD','2465976aqOXGz','15720UgdiLm','3oibMjo','374920NWpXQw','8TdULkP','121345Ecrxcp','6nhOhWj','369GpHymC'];I=function(){return j;};return I();}export*from'./resource.registry.js';function b(n,a){n=n-0x110;var E=I();var M=E[n];return M;}export*from'./resource.js';
1
+ export*from'./resource.types.js';export*from'./resource.registry.js';export*from'./resource.js';
@@ -1 +1 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../../src/plugins/resource/resource.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAMhF,wBAAgB,cAAc,CAAC,IAAI,EAAE,oBAAoB,GAAG,cAAc,CAmBzE"}
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../../src/plugins/resource/resource.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAUhF,wBAAgB,cAAc,CAAC,IAAI,EAAE,oBAAoB,GAAG,cAAc,CA2BzE"}
@@ -1 +1 @@
1
- function I(){const R=['784226xghOOF','11320309msDVwy','register','30qxsHMp','bind','88oePCBv','has','884568gatyyo','list','470100nEhqKU','272DHzOgR','70XGAEKa','uisvl','get','247583tfYYnI','114462KaJCfd','13302ZYbZje'];I=function(){return R;};return I();}(function(n,a){const z=b,E=n();while(!![]){try{const M=parseInt(z(0x75))/0x1+-parseInt(z(0x6e))/0x2+parseInt(z(0x6d))/0x3*(-parseInt(z(0x78))/0x4)+parseInt(z(0x71))/0x5*(-parseInt(z(0x77))/0x6)+parseInt(z(0x7c))/0x7*(-parseInt(z(0x73))/0x8)+parseInt(z(0x7d))/0x9*(parseInt(z(0x79))/0xa)+parseInt(z(0x6f))/0xb;if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0x6dd89));import{ResourceRegistry}from'./resource.registry.js';import{createFind}from'./services/find.js';import{createFindOne}from'./services/find-one.js';import{createCreate}from'./services/create.js';import{createUpdate}from'./services/update.js';function b(n,a){n=n-0x6d;const E=I();let M=E[n];return M;}import{createRemove}from'./services/delete.js';export function createResource(n){const w=b,a={'uisvl':function(Y,g,e){return Y(g,e);}},E=new ResourceRegistry(),M=a[w(0x7a)](createFind,n,E),X=a[w(0x7a)](createFindOne,n,E),G=a[w(0x7a)](createCreate,n,E),j=a[w(0x7a)](createUpdate,n,E),u=createRemove(n,E);return{'register':E[w(0x70)][w(0x72)](E),'has':E[w(0x74)][w(0x72)](E),'get':E[w(0x7b)][w(0x72)](E),'list':E[w(0x76)][w(0x72)](E),'find':M,'findOne':X,'create':G,'update':j,'delete':u};}
1
+ import{ResourceRegistry}from'./resource.registry.js';import{createFind}from'./services/find.js';import{createFindOne}from'./services/find-one.js';import{createCreate}from'./services/create.js';function v(){const F=['has'];v=function(){return F;};return v();}import{createUpdate}from'./services/update.js';import{createRemove}from'./services/delete.js';import{createFindRelation}from'./services/find-relation.js';function S(d,h){d=d-0x14a;const p=v();let Z=p[d];return Z;}import{createCreateRelation}from'./services/create-relation.js';import{createDeleteRelation}from'./services/delete-relation.js';import{createUpdateRelation}from'./services/update-relation.js';export function createResource(d){const Q=S,h=new ResourceRegistry(),p=createFind(d,h),Z=createFindOne(d,h),D=createCreate(d,h),u=createUpdate(d,h),n=createRemove(d,h),X=createFindRelation(d,h),Y=createCreateRelation(d,h),w=createUpdateRelation(d,h),y=createDeleteRelation(d,h);return{'register':h['register']['bind'](h),'has':h[Q(0x14a)]['bind'](h),'get':h['get']['bind'](h),'list':h['list']['bind'](h),'find':p,'findOne':Z,'create':D,'update':u,'delete':n,'findRelation':X,'createRelation':Y,'updateRelation':w,'deleteRelation':y};}
@@ -1 +1 @@
1
- const x=b;(function(n,a){const W=b,E=n();while(!![]){try{const M=-parseInt(W(0xb5))/0x1*(-parseInt(W(0xa6))/0x2)+parseInt(W(0xa0))/0x3+-parseInt(W(0xa5))/0x4*(-parseInt(W(0xaa))/0x5)+parseInt(W(0xa7))/0x6+-parseInt(W(0xbe))/0x7+parseInt(W(0xa8))/0x8*(-parseInt(W(0xa9))/0x9)+-parseInt(W(0xaf))/0xa*(parseInt(W(0xc1))/0xb);if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0xf2987));function I(){const d=['Invalid\x20resource\x20contract:\x20','42927iReLSS','values','length','ljcFq','Invalid\x20resource\x20field:\x20','register','Resource\x20already\x20registered:\x20','every','isArray','1039640ZRJnDe','get','entries','74228oZQJZy','name','key','3091155DGejjB','test','split','Resource\x20not\x20registered:\x20','fields','124UPJyGy','4IXNzcp','8876028FIjEXV','14682704PbsIKB','9zSeudP','193300zOjpQU','version','table','column','resources','1210QPpybQ','list','set','validate','has'];I=function(){return d;};return I();}import{ValidationError,ConflictError,NotFoundError}from'../../errors.js';const ident=/^[a-zA-Z_][a-zA-Z0-9_]*$/;function b(n,a){n=n-0xa0;const E=I();let M=E[n];return M;}function validQualified(n){const f=b;return n[f(0xa2)]('.')[f(0xb7)]<=0x2&&n[f(0xa2)]('.')[f(0xbc)](a=>ident[f(0xa1)](a));}export class ResourceRegistry{[x(0xae)]=new Map();[x(0xba)](n){const D=x;for(const a of Array[D(0xbd)](n)?n:[n]){this[D(0xb2)](a);if(this[D(0xae)][D(0xb3)](a[D(0xc2)]))throw new ConflictError(D(0xbb)+a[D(0xc2)]);this[D(0xae)][D(0xb1)](a[D(0xc2)],a);}}[x(0xb3)](n){const L=x;return this[L(0xae)][L(0xb3)](n);}[x(0xbf)](n){const O=x,a=this[O(0xae)][O(0xbf)](n);if(!a)throw new NotFoundError(O(0xa3)+n);return a;}[x(0xb0)](){const q=x;return[...this[q(0xae)][q(0xb6)]()];}[x(0xb2)](a){const K=x,E={};E[K(0xb8)]=function(X,G){return X!==G;};const M=E;if(M[K(0xb8)](a[K(0xab)],0x1)||!ident[K(0xa1)](a[K(0xc2)])||!validQualified(a[K(0xac)])||!ident[K(0xa1)](a[K(0xc3)]))throw new ValidationError(K(0xb4)+a[K(0xc2)]);for(const [X,G]of Object[K(0xc0)](a[K(0xa4)])){if(!ident[K(0xa1)](X)||!ident[K(0xa1)](G[K(0xad)]??X))throw new ValidationError(K(0xb9)+X);}}}
1
+ function v(){const Y=['split','has','get','Resource\x20not\x20registered:\x20','validate','version','key','column'];v=function(){return Y;};return v();}const n=S;import{ValidationError,ConflictError,NotFoundError}from'../../errors.js';const ident=/^[a-zA-Z0-9_-]*$/;function validQualified(d){const Z=S;return d['split']('.')['length']<=0x2&&d[Z(0x94)]('.')['every'](h=>ident['test'](h));}function S(d,h){d=d-0x94;const p=v();let Z=p[d];return Z;}export class ResourceRegistry{['resources']=new Map();['register'](d){const D=S;for(const h of Array['isArray'](d)?d:[d]){this['validate'](h);if(this['resources'][D(0x95)](h['name']))throw new ConflictError('Resource\x20already\x20registered:\x20'+h['name']);this['resources']['set'](h['name'],h);}}['has'](d){return this['resources']['has'](d);}['get'](d){const u=S,h=this['resources'][u(0x96)](d);if(!h)throw new NotFoundError(u(0x97)+d);return h;}['list'](){return[...this['resources']['values']()];}[n(0x98)](d){const X=n;if(d[X(0x99)]!==0x1||!ident['test'](d['name'])||!validQualified(d['table'])||!ident['test'](d[X(0x9a)]))throw new ValidationError('Invalid\x20resource\x20contract:\x20'+d['name']);for(const [h,p]of Object['entries'](d['fields'])){if(!ident['test'](h)||!ident['test'](p[X(0x9b)]??h))throw new ValidationError('Invalid\x20resource\x20field:\x20'+h);}}}
@@ -2,13 +2,16 @@
2
2
  * Implements the generic Resource registry and CRUD infrastructure.
3
3
  */
4
4
  import type { DatabaseAdapter } from "../pg.js";
5
- import type { ExtendedLogger } from "../logger/index.js";
5
+ import type { AppLogger } from "../logger/index.js";
6
6
  import type { AuditPlugin } from "../audit/index.js";
7
+ import type { DictionaryPlugin } from "../dictionary.js";
8
+ import type { FileAdapter } from "../file.js";
7
9
  import { User } from "../../context.js";
10
+ import type { AppContext } from "../../context.js";
8
11
  export type ResourceOperation = "read" | "create" | "update" | "delete";
9
12
  export interface ResourceFieldContract {
10
13
  column?: string;
11
- type?: "string" | "number" | "integer" | "boolean" | "date" | "json";
14
+ type?: "string" | "number" | "integer" | "boolean" | "date" | "json" | "text" | "timestamp" | "uuid" | "file" | "geometry" | "geom";
12
15
  read?: boolean;
13
16
  write?: boolean;
14
17
  readable?: boolean;
@@ -21,15 +24,28 @@ export interface ResourceFieldContract {
21
24
  filter?: boolean;
22
25
  sort?: boolean;
23
26
  search?: boolean;
27
+ dictionary?: string;
24
28
  lookup?: {
25
- dictionary: string;
29
+ table: string;
30
+ value: string;
31
+ text: string;
32
+ fields?: string[];
26
33
  };
34
+ enum?: string[] | number[];
35
+ minLength?: number;
36
+ maxLength?: number;
37
+ minimum?: number;
38
+ maximum?: number;
39
+ pattern?: string;
27
40
  }
28
41
  export interface ResourceRelationContract {
29
42
  resource?: string;
30
43
  table?: string;
31
44
  sourceField?: string;
45
+ foreignKey?: string;
32
46
  targetField?: string;
47
+ type?: "one" | "many";
48
+ fields?: string[];
33
49
  }
34
50
  export interface ResourceContract {
35
51
  version: 1;
@@ -39,6 +55,7 @@ export interface ResourceContract {
39
55
  table: string;
40
56
  key: string;
41
57
  operations: ResourceOperation[];
58
+ capabilities?: string[];
42
59
  permission?: string;
43
60
  fields: Record<string, ResourceFieldContract>;
44
61
  relations?: Record<string, ResourceRelationContract>;
@@ -46,6 +63,7 @@ export interface ResourceContract {
46
63
  }
47
64
  export interface ResourceQuery {
48
65
  filter?: Record<string, unknown>;
66
+ include?: string | string[];
49
67
  sort?: string[];
50
68
  search?: string;
51
69
  limit?: number;
@@ -55,13 +73,17 @@ export interface ResourceQuery {
55
73
  export interface ResourceListResult<T = Record<string, unknown>> {
56
74
  rows: T[];
57
75
  limit: number;
76
+ time: number;
77
+ total: number | null;
58
78
  offset: number;
59
79
  }
60
80
  export type ResourceUser = User;
61
81
  export interface ResourceDependencies {
62
- pg: DatabaseAdapter | null;
63
- logger?: ExtendedLogger;
82
+ pg: DatabaseAdapter;
83
+ logger?: AppLogger;
64
84
  audit?: AuditPlugin;
85
+ dictionary?: DictionaryPlugin;
86
+ file?: FileAdapter;
65
87
  }
66
88
  export interface ResourcePlugin {
67
89
  register(input: ResourceContract | ResourceContract[]): void;
@@ -76,23 +98,55 @@ export interface ResourcePlugin {
76
98
  findOne(params: {
77
99
  name: string;
78
100
  id: string | number;
101
+ query?: ResourceQuery;
79
102
  user?: ResourceUser;
80
103
  }): Promise<Record<string, unknown> | null>;
81
104
  create(params: {
82
105
  name: string;
83
106
  data: Record<string, unknown>;
84
107
  user?: ResourceUser;
85
- }): Promise<Record<string, unknown>>;
108
+ }, ctx?: AppContext): Promise<Record<string, unknown>>;
86
109
  update(params: {
87
110
  name: string;
88
111
  id: string | number;
89
112
  data: Record<string, unknown>;
90
113
  user?: ResourceUser;
91
- }): Promise<Record<string, unknown>>;
114
+ }, ctx?: AppContext): Promise<Record<string, unknown>>;
92
115
  delete(params: {
93
116
  name: string;
94
117
  id: string | number;
95
118
  user?: ResourceUser;
96
- }): Promise<boolean>;
119
+ }, ctx?: AppContext): Promise<boolean>;
120
+ findRelation(params: {
121
+ name: string;
122
+ id: string | number;
123
+ relation: string;
124
+ query?: ResourceQuery;
125
+ user?: ResourceUser;
126
+ }): Promise<any>;
127
+ createRelation(params: {
128
+ name: string;
129
+ id: string | number;
130
+ relation: string;
131
+ data?: Record<string, unknown>;
132
+ user?: ResourceUser;
133
+ }, ctx?: AppContext): Promise<any>;
134
+ updateRelation(params: {
135
+ name: string;
136
+ id: string | number;
137
+ relation: string;
138
+ relationId: string;
139
+ data: Record<string, unknown>;
140
+ user?: ResourceUser;
141
+ }, ctx?: AppContext): Promise<Record<string, unknown>>;
142
+ deleteRelation(params: {
143
+ name: string;
144
+ id: string | number;
145
+ relation: string;
146
+ relationId: string;
147
+ user?: ResourceUser;
148
+ }, ctx?: AppContext): Promise<{
149
+ success: boolean;
150
+ }>;
97
151
  }
98
152
  //# sourceMappingURL=resource.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource.types.d.ts","sourceRoot":"","sources":["../../../src/plugins/resource/resource.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource.types.d.ts","sourceRoot":"","sources":["../../../src/plugins/resource/resource.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ResourceContract, ResourceDependencies } from "../resource.types.js";
2
+ export declare function addDictionaryLookupData(rows: Record<string, unknown>[], fields: ResourceContract["fields"], dictionary: ResourceDependencies["dictionary"]): Promise<Record<string, unknown>[]>;
3
+ //# sourceMappingURL=add-dictionary-lookup-data.d.ts.map