@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
@@ -1 +1 @@
1
- (function(n,a){const h=b,E=n();while(!![]){try{const M=-parseInt(h(0x1fb))/0x1+parseInt(h(0x1ed))/0x2*(parseInt(h(0x1ef))/0x3)+-parseInt(h(0x1ec))/0x4+parseInt(h(0x1f4))/0x5+-parseInt(h(0x1f7))/0x6+-parseInt(h(0x1f0))/0x7+parseInt(h(0x1e9))/0x8*(parseInt(h(0x1fd))/0x9);if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0xdb3c0));function b(n,a){n=n-0x1e4;const E=I();let M=E[n];return M;}import{ValidationError}from'../../../errors.js';function I(){const H=['Field\x20has\x20no\x20lookup\x20dictionary:\x20','9AveJow','cEROg','ZKULe','limit','dictionary','slice','code','fields','32959648iOUgeQ','toLowerCase','filter','5814640ESllkb','4QlBYxI','search','1428099FSinJZ','8835246WbMYev','lookup','includes','field','3440620qvAeMG','resource','name','5454396GAVTXH','min','max','get','1237258OZrbzm'];I=function(){return H;};return I();}export async function suggestResource(n,a){const Z=b,E={'ZKULe':function(g,e){return g(e);},'cEROg':function(g,e){return g(e);}},M=a[Z(0x1f5)][Z(0x1fa)](n[Z(0x1f5)]),X=M[Z(0x1e8)][n[Z(0x1f3)]],G=X?.[Z(0x1f1)]?.[Z(0x1e5)];if(!G)throw new ValidationError(Z(0x1fc)+n[Z(0x1f3)]);const j=await a[Z(0x1e5)][Z(0x1fa)](G),u=E[Z(0x1ff)](String,n[Z(0x1ee)]??n['q']??'')[Z(0x1ea)](),Y=Math[Z(0x1f8)](Math[Z(0x1f9)](E[Z(0x1fe)](Number,n[Z(0x1e4)]??0x14),0x1),0xc8);return j[Z(0x1eb)](g=>!u||g[Z(0x1e7)][Z(0x1ea)]()[Z(0x1f2)](u)||g[Z(0x1f6)][Z(0x1ea)]()[Z(0x1f2)](u))[Z(0x1e6)](0x0,Y);}
1
+ import{ValidationError}from'../../../errors.js';import{autoIndex}from'../../../plugins/resource/utils/auto-index.js';function S(d,h){d=d-0x93;const p=v();let Z=p[d];return Z;}function v(){const s=['toLowerCase','fields','dictionary','name','SELECT\x20','\x20as\x20id,\x20','field','get','slice','now'];v=function(){return s;};return v();}export async function suggestResource(d,h){const g=S,p=h['resource']['get'](d['resource']),Z=String(d['search']??d['q']??'')[g(0x93)](),D=Math['min'](Math['max'](Number(d['limit']??0x14),0x1),0xc8),u=Date['now'](),n=p[g(0x94)][d['field']],X=n?.[g(0x95)],Y=n?.['lookup']?.['table'];if(Y){const Q=n['lookup']?.['text']??g(0x96),F=n['lookup']?.['value']??'id';autoIndex(Y,Q,'text',h['pg']);const B=await h['pg']['query'](g(0x97)+F+g(0x98)+Q+'\x20as\x20text\x20FROM\x20'+Y+'\x20WHERE\x20lower('+Q+')\x20~\x20$1\x20LIMIT\x20$2',[''+Z[g(0x93)](),D])['then'](K=>K['rows']);return{'limit':D,'count':B['length'],'search':Z,'time':Date['now']()-u,'data':B};}if(!X)throw new ValidationError('Field\x20has\x20no\x20lookup\x20dictionary:\x20'+d[g(0x99)]);const w=await h[g(0x95)][g(0x9a)](X),y=w['filter'](K=>!Z||K['code']['startsWith'](Z)||K[g(0x96)]['startsWith'](Z))[g(0x9b)](0x0,D)['map'](K=>({'id':K['code']||K['id'],'text':K['name']||K['text']}));return{'search':Z,'limit':D,'count':y['length'],'time':Date[g(0x9c)]()-u,'data':y};}
@@ -0,0 +1,10 @@
1
+ import type { AppContext, User } from "../../../context.js";
2
+ export declare function updateResourceRelation(params: {
3
+ resource: string;
4
+ id: string;
5
+ relation: string;
6
+ relationId: string;
7
+ data: Record<string, unknown>;
8
+ user?: User;
9
+ }, ctx: AppContext): Promise<Record<string, unknown>>;
10
+ //# sourceMappingURL=update-resource-relation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-resource-relation.d.ts","sourceRoot":"","sources":["../../../../src/modules/resource/services/update-resource-relation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAsB,sBAAsB,CACxC,MAAM,EAAE;IACJ,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE,IAAI,CAAC;CACf,EACD,GAAG,EAAE,UAAU,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAUlC"}
@@ -0,0 +1 @@
1
+ function S(d,h){d=d-0x15d;const p=v();let Z=p[d];return Z;}export async function updateResourceRelation(d,h){const Y=S,{resource:p,id:Z,relation:D,relationId:u,data:n,user:X}=d;return h[Y(0x15d)]['updateRelation']({'name':p,'id':Z,'relation':D,'relationId':u,'data':n,'user':X});}function v(){const w=['resource'];v=function(){return w;};return v();}
@@ -1 +1 @@
1
- (function(n,a){var e=b,E=n();while(!![]){try{var M=-parseInt(e(0xea))/0x1*(parseInt(e(0xe5))/0x2)+-parseInt(e(0xef))/0x3+-parseInt(e(0xe9))/0x4*(-parseInt(e(0xdf))/0x5)+-parseInt(e(0xe6))/0x6+-parseInt(e(0xe2))/0x7*(-parseInt(e(0xe1))/0x8)+-parseInt(e(0xe3))/0x9+parseInt(e(0xee))/0xa*(parseInt(e(0xeb))/0xb);if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0x69f63));export async function updateResource(a,E){var h=b,M={};return M[h(0xec)]=a[h(0xed)],M['id']=a['id'],M[h(0xe0)]=a[h(0xe4)],M[h(0xe8)]=a[h(0xe8)],E[h(0xed)][h(0xe7)](M);}function b(n,a){n=n-0xdf;var E=I();var M=E[n];return M;}function I(){var Z=['104EvTtdb','253141EdkdDz','1156464RHHNgD','patch','600302ZwIagB','4504254YbgwCq','update','user','11044RWZjTh','1GZALWS','16763153VPWYZN','name','resource','10cGjRmX','2533545kTNMkC','840YhwXHW','data'];I=function(){return Z;};return I();}
1
+ export async function updateResource(d,h){return h['resource']['update']({'name':d['resource'],'id':d['id'],'data':d['patch'],'user':d['user']});}
@@ -1 +1 @@
1
- {"version":3,"file":"upload-resource-file.d.ts","sourceRoot":"","sources":["../../../../src/modules/resource/services/upload-resource-file.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAO5D,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,wBAAwB,EAChC,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,CAkDd"}
1
+ {"version":3,"file":"upload-resource-file.d.ts","sourceRoot":"","sources":["../../../../src/modules/resource/services/upload-resource-file.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAO5D,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,wBAAwB,EAChC,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,CA2Cd"}
@@ -1 +1 @@
1
- function b(n,a){n=n-0x6e;const E=I();let M=E[n];return M;}function I(){const t=['exists','PmwCb','File\x20is\x20required','sPIZT','mIQxf','CqvzX','4035170cnrOvo','ToyyL','eKpck','CmyJH','jaeNj','771659DNSofL',':update','DDzSD','type','resource','permissions','access','18FyNkWj','includes','JJBbV','2744739TxtMZq','file','empty\x20pg','AFeXH','File\x20name\x20is\x20required','CYkhC','put','permission','FFBES','47290WftdPQ','8zamQmi','length','SYyMq','Uploaded\x20file\x20not\x20found','PzmZx','cLWMe','MCjQn','Bcskj','replace','files/','\x0a\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20admin.files\x20(resource,\x20resource_id,\x20file_path,\x20size)\x0a\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20($1,\x20$2,\x20$3,\x20$4)\x0a\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20*\x0a\x20\x20\x20\x20','EtOnu','Missing\x20permission:\x20','user','7206540UrjdIM','rows','fileName','get','200738SfnxhI','pduzU','enQoB','isBuffer','bQbZo','LShkl','Admin\x20access\x20required','11982ehjuXB','empty\x20file','admin','160PWrAlg','name','query','seAhY','VEnRk','92hzVOSL'];I=function(){return t;};return I();}(function(n,a){const Z=b,E=n();while(!![]){try{const M=parseInt(Z(0x8d))/0x1+-parseInt(Z(0x97))/0x2*(-parseInt(Z(0x94))/0x3)+-parseInt(Z(0x9c))/0x4*(-parseInt(Z(0x7a))/0x5)+parseInt(Z(0x6e))/0x6*(parseInt(Z(0xa8))/0x7)+-parseInt(Z(0x7b))/0x8*(-parseInt(Z(0x71))/0x9)+-parseInt(Z(0xa3))/0xa+-parseInt(Z(0x89))/0xb;if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0x4cdc1));import{ForbiddenError,NotFoundError,ValidationError}from'../../../errors.js';export async function uploadResourceFile(n,a){const H=b,E={'ToyyL':H(0x7e),'JJBbV':H(0x73),'CYkhC':H(0x93),'eKpck':function(u,Y){return u!==Y;},'sPIZT':H(0xa6),'CqvzX':H(0x96),'SYyMq':function(u,Y){return u!==Y;},'jaeNj':H(0x8e),'bQbZo':function(u,Y){return u===Y;},'mIQxf':function(u,Y){return u===Y;},'enQoB':H(0x81),'cLWMe':H(0x86),'PmwCb':H(0x82),'PzmZx':H(0x75),'VEnRk':H(0x95),'seAhY':function(u,Y){return u(Y);},'DDzSD':function(u,Y){return u(Y);}},M=a[H(0xac)][H(0x8c)](n[H(0xac)]);if(M[H(0xae)]===H(0x96)&&E[H(0xa5)](n[H(0x88)]?.[H(0xab)],H(0x96))){if(E[H(0xa0)]===E[H(0xa0)])throw new ForbiddenError(H(0x93));else throw new a(E[H(0xa4)]);}if(E[H(0xa5)](n[H(0x88)]?.[H(0xab)],E[H(0xa2)])&&!n[H(0x88)]?.[H(0xad)]?.[H(0x6f)]((M[H(0x78)]??M[H(0x98)])+H(0xa9))){if(E[H(0x7d)](E[H(0xa7)],H(0x79)))throw new ForbiddenError(H(0x87)+(M[H(0x78)]??M[H(0x98)])+H(0xa9));else throw new a(E[H(0x70)]);}if(!Buffer[H(0x90)](n[H(0x72)])||E[H(0x91)](n[H(0x72)][H(0x7c)],0x0)){if(E[H(0xa1)](E[H(0x8f)],E[H(0x80)]))throw new a(H(0x75));else throw new ValidationError(H(0x9f));}const X=n[H(0x8b)][H(0x83)](/[^A-Za-z0-9._-]/g,'_');if(!X){if(E[H(0x7d)](E[H(0x9e)],E[H(0x9e)]))throw new a(E[H(0x76)]);else throw new ValidationError(E[H(0x7f)]);}if(!a['pg'])throw new Error(E[H(0x70)]);if(!a[H(0x72)])throw new Error(E[H(0x9b)]);const G=H(0x84)+n[H(0xac)]+'/'+E[H(0x9a)](String,n['id'])+'/'+X;await a[H(0x72)][H(0x77)](G,n[H(0x72)]);if(!await a[H(0x72)][H(0x9d)](G)){if(H(0x92)!==H(0x74))throw new NotFoundError(E[H(0xa4)]);else throw new M(H(0x87)+(X[H(0x78)]??G[H(0x98)])+H(0xa9));}const j=await a['pg'][H(0x99)](H(0x85),[n[H(0xac)],E[H(0xaa)](String,n['id']),G,n[H(0x72)][H(0x7c)]]);return j[H(0x8a)][0x0];}
1
+ function S(d,h){d=d-0x111;const p=v();let Z=p[d];return Z;}import{ForbiddenError,NotFoundError,ValidationError}from'../../../errors.js';export async function uploadResourceFile(d,h){const n=S,p=h['resource'][n(0x111)](d['resource']);if(p['access']==='admin'&&d['user']?.[n(0x112)]!==n(0x113))throw new ForbiddenError(n(0x114));if(d['user']?.['type']!=='admin'&&!d['user']?.['permissions']?.['includes']((p['permission']??p['name'])+':update'))throw new ForbiddenError(n(0x115)+(p['permission']??p['name'])+':update');if(!Buffer['isBuffer'](d['file'])||d['file']['length']===0x0)throw new ValidationError('File\x20is\x20required');const Z=d['fileName']['replace'](/[^A-Za-z0-9._-]/g,'_');if(!Z)throw new ValidationError('File\x20name\x20is\x20required');const D='files/'+d[n(0x116)]+'/'+String(d['id'])+'/'+Z;await h['file']['put'](D,d[n(0x117)]);if(!await h['file']['exists'](D))throw new NotFoundError('Uploaded\x20file\x20not\x20found');const u=await h['pg']['query'](n(0x118),[d[n(0x116)],String(d['id']),D,d['file']['length']]);return u['rows'][0x0];}function v(){const X=['get','type','admin','Admin\x20access\x20required','Missing\x20permission:\x20','resource','file','\x0a\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20admin.files\x20(resource,\x20resource_id,\x20file_path,\x20size)\x0a\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20($1,\x20$2,\x20$3,\x20$4)\x0a\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20*\x0a\x20\x20\x20\x20'];v=function(){return X;};return v();}
@@ -3,5 +3,6 @@
3
3
  */
4
4
  import type { FastifyPluginAsync } from "fastify";
5
5
  import type { AppContext } from "../../context.js";
6
- export declare function systemRoutes(ctx: AppContext): FastifyPluginAsync;
6
+ import type { ApiRoute } from "../../type.js";
7
+ export declare function systemRoutes(ctx: AppContext, apiRoutes?: ReadonlyMap<string, ApiRoute>): FastifyPluginAsync;
7
8
  //# sourceMappingURL=route.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../src/modules/system/route.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAYnD,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,kBAAkB,CAkHhE"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../src/modules/system/route.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAanD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,wBAAgB,YAAY,CAC1B,GAAG,EAAE,UAAU,EACf,SAAS,GAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAa,GACnD,kBAAkB,CA8JpB"}
@@ -1 +1 @@
1
- const Iy=b;(function(n,a){const IT=b,E=n();while(!![]){try{const M=parseInt(IT(0x151))/0x1+parseInt(IT(0x143))/0x2+parseInt(IT(0x164))/0x3+-parseInt(IT(0x16f))/0x4*(-parseInt(IT(0x186))/0x5)+parseInt(IT(0x159))/0x6*(parseInt(IT(0x163))/0x7)+-parseInt(IT(0x160))/0x8+-parseInt(IT(0x15a))/0x9;if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0x4e2cb));import{getSystemSettings}from'./services/get-system-settings.js';import{updateSystemSettings}from'./services/update-system-settings.js';import{getAuditLog}from'./services/get-audit-log.js';import{checkSystem}from'./services/check-system.js';import{getApiList}from'./services/get-api-list.js';function I(){const Iz=['body','Returns\x20the\x20system\x20audit\x20log\x20entries.','926084hLRyfw','EGZEe','Get\x20system\x20log','Lfjut','WYpZT','ppWqR','YuBtk','GoULe','params','Get\x20audit\x20log','split','post','Get\x20platform\x20dictionary','dictionaryName','518858SOvrzp','Returns\x20all\x20available\x20dictionaries\x20registered\x20by\x20the\x20platform.','system:settings:update','ewMsS','settings','SZkwi','WjPUY','XRGUf','6CJQtOx','13445460TylSzy','4|2|7|5|0|6|3|1','Returns\x20the\x20list\x20of\x20registered\x20platform\x20APIs.','system:api:read','Get\x20system\x20settings','system:check','781448CYOffy','/api/system/api-list','/api/system/audit/','2694727qNliRJ','1633158xFGAHF','tags','Updates\x20system\x20settings\x20using\x20flat\x20dot-notation\x20keys.','Update\x20system\x20settings','sTdHX','RAepx','/api/dictionaries/:name','query','permissions','jZMul','schema','2308KPJaUi','Returns\x20system\x20settings\x20as\x20nested\x20JSON.','HuYvX','user','AlWDL','aYVlF','fcore','ULcdu','/api/system/settings','HnQyi','/api/system/logger/*','system:settings:read','Checks\x20the\x20availability\x20of\x20system\x20dependencies.','Returns\x20a\x20registered\x20platform\x20dictionary\x20by\x20name.','List\x20APIs','List\x20platform\x20dictionaries','Check\x20system\x20health','get','piSut','BAXbN','system','yISov','logger','5hUFbgj','access','zTXMi','CsHTx','evAYT','/api/system/check','zxQpA','audit:read','system:logs:read','EDdNJ','description','summary','Returns\x20system\x20logger\x20entries\x20for\x20the\x20requested\x20path.','/api/dictionaries','admin'];I=function(){return Iz;};return I();}import{getSystemLog}from'./services/get-system-log.js';import{listDictionaries}from'./services/list-dictionaries.js';function b(n,a){n=n-0x143;const E=I();let M=E[n];return M;}import{getDictionary}from'./services/get-dictionary.js';import{systemSchemas}from'./schema.js';const u=n=>n[Iy(0x172)];export function systemRoutes(a){const Is=Iy,E={};E[Is(0x173)]=Is(0x15b),E[Is(0x182)]=Is(0x179),E[Is(0x157)]=Is(0x175),E[Is(0x168)]=Is(0x192),E[Is(0x189)]=Is(0x194),E[Is(0x178)]=Is(0x18e),E[Is(0x16d)]=Is(0x161),E[Is(0x154)]=Is(0x183),E[Is(0x156)]=Is(0x17d),E[Is(0x14a)]=Is(0x15c),E[Is(0x148)]=Is(0x14f),E[Is(0x176)]=Is(0x17c),E[Is(0x188)]=Is(0x18b),E[Is(0x18a)]=Is(0x17b),E[Is(0x171)]=Is(0x15f),E[Is(0x158)]=Is(0x193),E[Is(0x146)]=Is(0x17e),E[Is(0x174)]=Is(0x152),E[Is(0x18c)]=Is(0x177),E[Is(0x149)]=Is(0x153),E[Is(0x147)]=Is(0x162),E[Is(0x144)]=Is(0x14c),E[Is(0x169)]=Is(0x196),E[Is(0x184)]=Is(0x18d),E[Is(0x181)]=Is(0x15e),E[Is(0x18f)]=Is(0x17a);const M=E;return async G=>{const IN=Is,j=M[IN(0x173)][IN(0x14d)]('|');let Y=0x0;while(!![]){switch(j[Y++]){case'0':G[IN(0x180)](M[IN(0x182)],{'schema':{'tags':[M[IN(0x157)],IN(0x183)],'summary':IN(0x145),'description':M[IN(0x168)],'access':M[IN(0x189)],'permissions':[M[IN(0x178)]],'params':systemSchemas[IN(0x185)]}},async H=>getSystemLog({...H[IN(0x16b)],...H[IN(0x14b)],'user':u(H)},a));continue;case'1':G[IN(0x180)](M[IN(0x16d)],{'schema':{'tags':[M[IN(0x157)],M[IN(0x154)]],'summary':M[IN(0x156)],'description':M[IN(0x14a)],'access':M[IN(0x189)],'permissions':[IN(0x15d)]}},async H=>getApiList({'user':u(H)},a));continue;case'2':const g={};g[IN(0x165)]=[IN(0x175),M[IN(0x154)]],g[IN(0x191)]=M[IN(0x148)],g[IN(0x190)]=M[IN(0x176)],g[IN(0x187)]=M[IN(0x189)],g[IN(0x16c)]=[],g[IN(0x14b)]=systemSchemas[IN(0x150)];const e={};e[IN(0x16e)]=g,G[IN(0x180)](IN(0x16a),e,async H=>getDictionary({...H[IN(0x14b)],'user':u(H)},a));continue;case'3':G[IN(0x180)](M[IN(0x188)],{'schema':{'tags':[M[IN(0x157)],M[IN(0x154)]],'summary':IN(0x17f),'description':M[IN(0x18a)],'access':M[IN(0x189)],'permissions':[M[IN(0x171)]]}},async H=>checkSystem({'user':u(H)},a));continue;case'4':G[IN(0x180)](M[IN(0x158)],{'schema':{'tags':[M[IN(0x157)],IN(0x183)],'summary':M[IN(0x146)],'description':M[IN(0x174)],'access':IN(0x194),'permissions':[]}},async H=>listDictionaries({'user':u(H)},a));continue;case'5':G[IN(0x14e)](M[IN(0x18c)],{'schema':{'tags':[M[IN(0x157)],M[IN(0x154)]],'summary':IN(0x167),'description':IN(0x166),'access':IN(0x194),'permissions':[M[IN(0x149)]],'body':systemSchemas[IN(0x155)]}},async H=>updateSystemSettings({...H[IN(0x14b)],'patch':H[IN(0x195)],'user':u(H)},a));continue;case'6':G[IN(0x180)](M[IN(0x147)],{'schema':{'tags':[M[IN(0x157)],IN(0x183)],'summary':M[IN(0x144)],'description':M[IN(0x169)],'access':M[IN(0x189)],'permissions':[M[IN(0x184)]]}},async H=>getAuditLog({...H[IN(0x16b)],'user':u(H)},a));continue;case'7':const h={};h[IN(0x165)]=[IN(0x175),M[IN(0x154)]],h[IN(0x191)]=M[IN(0x181)],h[IN(0x190)]=IN(0x170),h[IN(0x187)]=M[IN(0x189)],h[IN(0x16c)]=[M[IN(0x18f)]];const Z={};Z[IN(0x16e)]=h,G[IN(0x180)](IN(0x177),Z,async H=>getSystemSettings({...H[IN(0x14b)],'user':u(H)},a));continue;}break;}};}
1
+ const w=S;function v(){const Q=['user','Get\x20platform\x20dictionary','/api/dictionary/:name','system:dictionaries','Returns\x20direct\x20and\x20role-based\x20access\x20rules\x20for\x20a\x20user\x20or\x20role.','/api/access/:type/:id','system','accessTarget','params','body','admin','system:settings','/api/system/settings','Update\x20system\x20settings','get','fcore','Returns\x20system\x20logger\x20entries\x20for\x20the\x20requested\x20path.','logger','system:audit','Check\x20system\x20health','Checks\x20the\x20availability\x20of\x20system\x20dependencies.','/api/system/list','apiListQuery'];v=function(){return Q;};return v();}import{getSystemSettings}from'./services/get-system-settings.js';function S(d,h){d=d-0x141;const p=v();let Z=p[d];return Z;}import{updateSystemSettings}from'./services/update-system-settings.js';import{getAuditLog}from'./services/get-audit-log.js';import{checkSystem}from'./services/check-system.js';import{getApiList}from'./services/get-api-list.js';import{getSystemLog}from'./services/get-system-log.js';import{getDictionary}from'./services/get-dictionary.js';import{updateDictionary}from'./services/update-dictionary.js';import{getAccess}from'./services/get-access.js';import{setAccess}from'./services/set-access.js';import{systemSchemas}from'./schema.js';const u=d=>d[w(0x141)];export function systemRoutes(d,h=new Map()){return async p=>{const y=S;p['get']('/api/dictionary/:name',{'schema':{'tags':['fcore','system'],'summary':y(0x142),'description':'Returns\x20a\x20registered\x20platform\x20dictionary\x20by\x20name.','access':'user','permissions':['system:dictionaries'],'params':systemSchemas['dictionaryName']}},async D=>({'items':await getDictionary({...D['params'],'user':u(D)},d)})),p['post'](y(0x143),{'schema':{'tags':['fcore','system'],'summary':'Update\x20platform\x20dictionary','description':'Replaces\x20the\x20items\x20of\x20a\x20registered\x20platform\x20dictionary.','access':'user','permissions':[y(0x144)],'params':systemSchemas['dictionaryName'],'body':systemSchemas['dictionaryItems']}},async D=>updateDictionary({...D['params'],...D['body'],'user':u(D)},d));const Z=async D=>getAccess({...D['params'],'user':u(D)},d);p['get']('/api/access/:type/:id',{'schema':{'tags':['fcore','system'],'summary':'Get\x20access\x20rules','description':y(0x145),'access':'admin','permissions':['system:access'],'params':systemSchemas['accessTarget']}},Z),p['post'](y(0x146),{'schema':{'tags':['fcore',y(0x147)],'summary':'Set\x20access\x20rules','description':'Replaces\x20direct\x20access\x20rules\x20for\x20a\x20user\x20or\x20role.','access':'admin','permissions':['system:access'],'params':systemSchemas[y(0x148)],'body':systemSchemas['access']}},async D=>setAccess({...D[y(0x149)],...D[y(0x14a)],'user':u(D)},d)),p['get']('/api/system/settings',{'schema':{'tags':['fcore','system'],'summary':'Get\x20system\x20settings','description':'Returns\x20system\x20settings\x20as\x20nested\x20JSON.','access':y(0x14b),'permissions':[y(0x14c)]}},async D=>getSystemSettings({...D[y(0x149)],'user':u(D)},d)),p['post'](y(0x14d),{'schema':{'tags':['fcore','system'],'summary':y(0x14e),'description':'Updates\x20system\x20settings\x20using\x20flat\x20dot-notation\x20keys.','access':y(0x14b),'permissions':['system:settings'],'body':systemSchemas['settings']}},async D=>updateSystemSettings({...D[y(0x149)],'patch':D['body'],'user':u(D)},d)),p[y(0x14f)]('/api/system/logger',{'schema':{'tags':[y(0x150),'system'],'summary':'Get\x20system\x20log','description':y(0x151),'access':y(0x141),'permissions':['system:logs'],'querystring':systemSchemas[y(0x152)]}},async(D,n)=>{const {contentType:X,body:Y}=await getSystemLog({...D['query'],'user':u(D)},d);return n['type'](X)['send'](Y);}),p['get']('/api/system/audit',{'schema':{'tags':['fcore',y(0x147)],'summary':'Get\x20audit\x20log','description':'Returns\x20the\x20system\x20audit\x20log\x20entries.','access':'user','permissions':[y(0x153)]}},async D=>getAuditLog({...D['query'],'user':u(D)},d)),p['get']('/api/system/check',{'schema':{'tags':['fcore','system'],'summary':y(0x154),'description':y(0x155),'access':'user','permissions':['system:check']}},async D=>checkSystem({'user':u(D)},d)),p[y(0x14f)](y(0x156),{'schema':{'tags':[y(0x150),'system'],'summary':'List\x20APIs','description':'Returns\x20the\x20list\x20of\x20registered\x20platform\x20APIs.','access':'admin','permissions':[],'querystring':systemSchemas[y(0x157)]}},async D=>getApiList({'user':u(D),'apiRoutes':h,...D['query']},d));};}
@@ -3,12 +3,33 @@ export declare const systemSchemas: {
3
3
  dictionaryName: import("@sinclair/typebox").TObject<{
4
4
  name: import("@sinclair/typebox").TString;
5
5
  }>;
6
+ dictionaryItems: import("@sinclair/typebox").TObject<{
7
+ items: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
8
+ id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber]>>;
9
+ code: import("@sinclair/typebox").TString;
10
+ name: import("@sinclair/typebox").TString;
11
+ parentId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNull]>>;
12
+ }>>;
13
+ }>;
14
+ accessTarget: import("@sinclair/typebox").TObject<{
15
+ type: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"user">, import("@sinclair/typebox").TLiteral<"role">]>;
16
+ id: import("@sinclair/typebox").TString;
17
+ }>;
18
+ access: import("@sinclair/typebox").TObject<{
19
+ access: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
20
+ resource: import("@sinclair/typebox").TString;
21
+ actions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
22
+ }>>;
23
+ }>;
24
+ apiListQuery: import("@sinclair/typebox").TObject<{
25
+ format: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"short">, import("@sinclair/typebox").TLiteral<"extended">]>>;
26
+ }>;
6
27
  settingsEntity: import("@sinclair/typebox").TObject<{
7
28
  entity: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
8
29
  }>;
9
30
  settings: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>;
10
31
  logger: import("@sinclair/typebox").TObject<{
11
- "*": import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
32
+ path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
12
33
  }>;
13
34
  };
14
35
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/modules/system/schema.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,UAAU,qCAIrB,CAAC;AAEH,eAAO,MAAM,aAAa;IACxB,cAAc;;;IAGd,cAAc;;;IACd,QAAQ;IACR,MAAM;;;CACP,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/modules/system/schema.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,UAAU,qCAIrB,CAAC;AAEH,eAAO,MAAM,aAAa;IACxB,cAAc;;;IAGd,eAAe;;;;;;;;IAef,YAAY;;;;IAIZ,MAAM;;;;;;IAQN,YAAY;;;IAGZ,cAAc;;;IACd,QAAQ;IACR,MAAM;;;CAKP,CAAC"}
@@ -1 +1 @@
1
- const e=b;(function(X,G){const g=b,j=X();while(!![]){try{const u=parseInt(g(0x1ec))/0x1+-parseInt(g(0x1ea))/0x2+-parseInt(g(0x1fa))/0x3*(parseInt(g(0x1fb))/0x4)+-parseInt(g(0x1ed))/0x5+parseInt(g(0x1f3))/0x6+parseInt(g(0x1f1))/0x7*(-parseInt(g(0x1f8))/0x8)+-parseInt(g(0x1f7))/0x9*(-parseInt(g(0x1f6))/0xa);if(u===G)break;else j['push'](j['shift']());}catch(Y){j['push'](j['shift']());}}}(I,0xbc64f));import{Type}from'@sinclair/typebox';function b(n,a){n=n-0x1e8;const E=I();let M=E[n];return M;}const n={};n[e(0x1e9)]=0x1,n[e(0x1eb)]=0x80,n[e(0x1f5)]=e(0x1e8);export const identifier=Type[e(0x1f9)](n);const a={};a[e(0x1f2)]=identifier;const E={};E[e(0x1e9)]=0x1;const M={};function I(){const h=['71520XxAvAR','152TyfhGg','^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$','minLength','765974TljGlL','maxLength','323064DovxPP','4313930vHCWXf','Object','Record','Unknown','11697qHGKEi','name','1560870qnKghy','Optional','pattern','2515910jgvksI','135ISrnLC','6864ldkHaj','String'];I=function(){return h;};return I();}M[e(0x1e9)]=0x1;export const systemSchemas={'dictionaryName':Type[e(0x1ee)](a),'settingsEntity':Type[e(0x1ee)]({'entity':Type[e(0x1f4)](identifier)}),'settings':Type[e(0x1ef)](Type[e(0x1f9)](E),Type[e(0x1f0)]()),'logger':Type[e(0x1ee)]({'*':Type[e(0x1f4)](Type[e(0x1f9)](M))})};
1
+ const d=S;import{Type}from'@sinclair/typebox';export const identifier=Type[d(0x1aa)]({'minLength':0x1,'maxLength':0x80,'pattern':d(0x1ab)});function S(d,h){d=d-0x1aa;const p=v();let Z=p[d];return Z;}export const systemSchemas={'dictionaryName':Type['Object']({'name':identifier}),'dictionaryItems':Type['Object']({'items':Type['Array'](Type['Object']({'id':Type['Optional'](Type[d(0x1ac)]([Type['String'](),Type['Number']()])),'code':Type['String']({'minLength':0x1}),'name':Type['String']({'minLength':0x1}),'parentId':Type['Optional'](Type[d(0x1ac)]([Type['String'](),Type['Number'](),Type[d(0x1ad)]()]))},{'additionalProperties':!![]}))}),'accessTarget':Type[d(0x1ae)]({'type':Type['Union']([Type['Literal']('user'),Type['Literal']('role')]),'id':identifier}),'access':Type['Object']({'access':Type[d(0x1af)](Type['Object']({'resource':Type[d(0x1aa)]({'minLength':0x1,'maxLength':0x80}),'actions':Type[d(0x1af)](Type['String']({'minLength':0x1,'maxLength':0x80}),{'minItems':0x1})}))}),'apiListQuery':Type['Object']({'format':Type[d(0x1b0)](Type['Union']([Type['Literal'](d(0x1b1)),Type['Literal']('extended')]))}),'settingsEntity':Type['Object']({'entity':Type[d(0x1b0)](identifier)}),'settings':Type['Record'](Type['String']({'minLength':0x1}),Type[d(0x1b2)]()),'logger':Type['Object']({'path':Type[d(0x1b0)](Type['String']({'maxLength':0x100,'pattern':d(0x1b3)}))})};function v(){const h=['String','^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$','Union','Null','Object','Array','Optional','short','Unknown','^[A-Za-z0-9_.\x5c-/]*$'];v=function(){return h;};return v();}
@@ -1 +1 @@
1
- {"version":3,"file":"check-system.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/check-system.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAsB,WAAW,CAC/B,MAAM,EAAE;IACN,IAAI,EAAE,IAAI,CAAC;CACZ,EACD,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,CAed"}
1
+ {"version":3,"file":"check-system.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/check-system.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAsB,WAAW,CAC/B,MAAM,EAAE;IACN,IAAI,EAAE,IAAI,CAAC;CACZ,EACD,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,CAcd"}
@@ -1 +1 @@
1
- function b(n,a){n=n-0xe5;const E=I();let M=E[n];return M;}(function(n,a){const e=b,E=n();while(!![]){try{const M=-parseInt(e(0xfc))/0x1+-parseInt(e(0xec))/0x2*(-parseInt(e(0xef))/0x3)+parseInt(e(0xf9))/0x4+-parseInt(e(0xf3))/0x5+-parseInt(e(0xeb))/0x6+parseInt(e(0xee))/0x7+parseInt(e(0xf7))/0x8;if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0xcd699));import{requireAdmin}from'../../utils/require-admin.js';function I(){const Z=['5141712wrXsyE','2bqSNKt','degraded','9199960GuJECs','2845083kxDWFg','redis','query','DZgfK','8383560QZDYwd','FnPQp','status','qmnLO','8129504dGsMMt','urqfz','5653292WygZHj','SELECT\x201','ping','1317119ZwpxnY','eWmyR','permissions','allSettled','system:check','fulfilled','user'];I=function(){return Z;};return I();}export async function checkSystem(a,E){const h=b,M={};M[h(0xf6)]=h(0xe8),M[h(0xf2)]=h(0xfa),M[h(0xe5)]=h(0xe9),M[h(0xf8)]=function(Y,g){return Y===g;},M[h(0xf4)]=h(0xed);const X=M,G=a;requireAdmin(a[h(0xea)],X[h(0xf6)],G?.[h(0xe6)]);const [j,u]=await Promise[h(0xe7)]([E['pg']?.[h(0xf1)](X[h(0xf2)]),E[h(0xf0)][h(0xfb)]()]);return{'status':j[h(0xf5)]===X[h(0xe5)]&&X[h(0xf8)](u[h(0xf5)],X[h(0xe5)])?'ok':X[h(0xf4)],'pg':j[h(0xf5)],'redis':u[h(0xf5)]};}
1
+ function S(d,h){d=d-0xd4;const p=v();let Z=p[d];return Z;}export async function checkSystem(d,h){const D=S,[p,Z]=await Promise['allSettled']([h['pg']['query']('SELECT\x201'),h['redis'][D(0xd4)]()]);return{'status':p[D(0xd5)]===D(0xd6)&&Z['status']==='fulfilled'?'ok':'degraded','pg':p['status'],'redis':Z['status']};}function v(){const u=['ping','status','fulfilled'];v=function(){return u;};return v();}
@@ -0,0 +1,14 @@
1
+ import type { AppContext, User } from "../../../context.js";
2
+ export interface AccessRecord {
3
+ resource: string | null;
4
+ actions: string[] | null;
5
+ role: string | null;
6
+ }
7
+ export declare function getAccess(params: {
8
+ type: "user" | "role";
9
+ id: string;
10
+ user: User;
11
+ }, ctx: AppContext): Promise<{
12
+ access: AccessRecord[];
13
+ }>;
14
+ //# sourceMappingURL=get-access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-access.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/get-access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE5D,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,EACzD,GAAG,EAAE,UAAU,GACd,OAAO,CAAC;IAAE,MAAM,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAkBrC"}
@@ -0,0 +1 @@
1
+ export async function getAccess(d,h){const p=d['type']==='user'?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20ra.resource,\x20ra.actions,\x20ra.role_id\x20AS\x20role\x0a\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20admin.role_access\x20ra\x0a\x20\x20\x20\x20\x20\x20\x20\x20LEFT\x20JOIN\x20admin.user_roles\x20ur\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ON\x20ur.role_id\x20=\x20ra.role_id\x20AND\x20ur.user_uid\x20=\x20$1\x0a\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20ra.user_uid\x20=\x20$1\x20OR\x20ur.user_uid\x20=\x20$1\x0a\x20\x20\x20\x20\x20\x20':'\x0a\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20ra.resource,\x20ra.actions,\x20ra.role_id\x20AS\x20role\x0a\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20admin.role_access\x20ra\x0a\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20ra.role_id\x20=\x20$1\x0a\x20\x20\x20\x20\x20\x20',Z=await h['pg']['query'](p,[d['id']]);return{'access':Z['rows']};}
@@ -2,7 +2,10 @@
2
2
  * Implements the get API list application service for the System module.
3
3
  */
4
4
  import type { AppContext, User } from "../../../context.js";
5
+ import type { ApiRoute } from "../../../type.js";
5
6
  export declare function getApiList(params: {
6
7
  user: User;
7
- }, ctx: AppContext): Promise<string[]>;
8
+ apiRoutes: ReadonlyMap<string, ApiRoute>;
9
+ format?: "short" | "extended";
10
+ }, ctx: AppContext): Promise<ApiRoute[] | string[]>;
8
11
  //# sourceMappingURL=get-api-list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-api-list.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/get-api-list.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAsB,UAAU,CAC9B,MAAM,EAAE;IACN,IAAI,EAAE,IAAI,CAAC;CACZ,EACD,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,MAAM,EAAE,CAAC,CAcnB"}
1
+ {"version":3,"file":"get-api-list.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/get-api-list.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAiB,MAAM,kBAAkB,CAAC;AAEhE,wBAAsB,UAAU,CAC9B,MAAM,EAAE;IACN,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CAC/B,EACD,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,CAWhC"}
@@ -1 +1 @@
1
- function b(n,a){n=n-0x172;const E=I();let M=E[n];return M;}(function(n,a){const Y=b,E=n();while(!![]){try{const M=parseInt(Y(0x172))/0x1+parseInt(Y(0x187))/0x2+-parseInt(Y(0x17a))/0x3+parseInt(Y(0x17d))/0x4+parseInt(Y(0x18c))/0x5+parseInt(Y(0x180))/0x6+-parseInt(Y(0x182))/0x7;if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0xb1fc8));import{requireAdmin}from'../../utils/require-admin.js';function I(){const e=['system:api:read','4288180MIocwT','aGAMr','lsJXt','6394998PQOOJe','lVkYI','24761611QUUOBK','DtENA','/api/resource/:resource/:id','user','/api/logout','2327374MXrRQM','permissions','gmBGm','/files/*','/api/dictionaries','1819505NqndSW','/api/templates','752961ULJibx','/api/resource/:resource','nBHPO','LRZQr','/api/system/check','wnaXV','/api/login','CbKet','456066uJfgoX','/api/user'];I=function(){return e;};return I();}export async function getApiList(n,a){const g=b,E={'DtENA':function(X,G,j,u){return X(G,j,u);},'aGAMr':g(0x17c),'LRZQr':g(0x178),'lVkYI':g(0x186),'nBHPO':g(0x184),'gmBGm':g(0x18b),'lsJXt':g(0x18a),'CbKet':g(0x18d),'wnaXV':g(0x176)},M=n;return E[g(0x183)](requireAdmin,n[g(0x185)],E[g(0x17e)],M?.[g(0x188)]),[E[g(0x175)],E[g(0x181)],g(0x17b),g(0x173),E[g(0x174)],E[g(0x189)],E[g(0x17f)],E[g(0x179)],E[g(0x177)]];}
1
+ function S(d,h){d=d-0x1d1;const p=v();let Z=p[d];return Z;}export async function getApiList(d,h){const X=S,p=[...d['apiRoutes']['values']()][X(0x1d1)]((Z,D)=>(Z['endpoint']+'\x20'+Z[X(0x1d2)])['localeCompare'](D[X(0x1d3)]+'\x20'+D['method']));if(d['format']!==X(0x1d4))return p;return p['map'](({method:Z,endpoint:D,access:u,permissions:n})=>Z+'\x20'+D);}function v(){const Y=['sort','method','endpoint','short'];v=function(){return Y;};return v();}
@@ -1 +1 @@
1
- {"version":3,"file":"get-audit-log.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/get-audit-log.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAsB,WAAW,CAC/B,MAAM,EAAE;IACN,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EACD,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,CAmBd"}
1
+ {"version":3,"file":"get-audit-log.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/get-audit-log.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAsB,WAAW,CAC/B,MAAM,EAAE;IACN,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EACD,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,CAcd"}
@@ -1 +1 @@
1
- (function(n,a){const H=b,E=n();while(!![]){try{const M=-parseInt(H(0xa1))/0x1*(parseInt(H(0xa9))/0x2)+-parseInt(H(0xa5))/0x3+parseInt(H(0xae))/0x4+parseInt(H(0xa0))/0x5+parseInt(H(0xad))/0x6*(-parseInt(H(0xa4))/0x7)+-parseInt(H(0x9f))/0x8+parseInt(H(0xa6))/0x9;if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0x42c08));import{requireAdmin}from'../../utils/require-admin.js';function b(n,a){n=n-0x96;const E=I();let M=E[n];return M;}export async function getAuditLog(a,E){const t=b,M={'dmQpQ':function(g,e,h,Z){return g(e,h,Z);},'ETtso':t(0x9b),'AaZnN':function(g,e){return g-e;},'TwsQH':t(0xa7),'kcXtf':t(0xab)},X=a;M[t(0xa2)](requireAdmin,a[t(0x97)],M[t(0x98)],X?.[t(0x96)]);const G=Math[t(0x9e)](Math[t(0xa3)](a[t(0xaa)]??0x32,0x1),0xc8),j=Math[t(0xa3)](M[t(0x99)](a[t(0x9c)]??0x1,0x1),0x0)*G;if(!E['pg'])throw new Error(M[t(0x9a)]);const u=await E['pg'][t(0xac)](M[t(0x9d)],[G,j]),Y={};return Y[t(0xa8)]=u[t(0xa8)],Y[t(0x9c)]=a[t(0x9c)]??0x1,Y[t(0xaa)]=G,Y;}function I(){const B=['3999328hDmQQC','2147830iwadGi','188350yAYOOE','dmQpQ','max','915439VjIDBj','1011660wtzhlZ','6129396gSzYjh','empty\x20pg','rows','4CVtiIL','limit','SELECT\x20*\x20FROM\x20admin.audit_log\x20ORDER\x20BY\x20id\x20DESC\x20LIMIT\x20$1\x20OFFSET\x20$2','query','6eYsHjA','2029676cwezMv','permissions','user','ETtso','AaZnN','TwsQH','audit:read','page','kcXtf','min'];I=function(){return B;};return I();}
1
+ export async function getAuditLog(d,h){const u=S,p=Math['min'](Math['max'](d['limit']??0x32,0x1),0xc8),Z=Math['max']((d['page']??0x1)-0x1,0x0)*p,D=await h['pg'][u(0x122)]('SELECT\x20*\x20FROM\x20admin.audit_log\x20ORDER\x20BY\x20id\x20DESC\x20LIMIT\x20$1\x20OFFSET\x20$2',[p,Z]);return{'rows':D['rows'],'page':d[u(0x123)]??0x1,'limit':p};}function S(d,h){d=d-0x122;const p=v();let Z=p[d];return Z;}function v(){const n=['query','page'];v=function(){return n;};return v();}
@@ -1 +1 @@
1
- function I(){var u=['840120ZzfzNJ','725214tXnggJ','2246208cutiEd','92LdlZuH','get','dictionary','1673544ocgYaO','40280hydjxn','name','18JTZEyX','93STOCrN','6756ZMepdF','1204830UVtcPQ'];I=function(){return u;};return I();}(function(n,a){var G=b,E=n();while(!![]){try{var M=parseInt(G(0x76))/0x1*(-parseInt(G(0x77))/0x2)+parseInt(G(0x79))/0x3+-parseInt(G(0x7c))/0x4*(-parseInt(G(0x80))/0x5)+-parseInt(G(0x7b))/0x6+-parseInt(G(0x7a))/0x7+-parseInt(G(0x7f))/0x8*(-parseInt(G(0x82))/0x9)+parseInt(G(0x78))/0xa;if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0x33c69));function b(n,a){n=n-0x76;var E=I();var M=E[n];return M;}export async function getDictionary(n,a){var j=b;return a[j(0x7e)][j(0x7d)](n[j(0x81)]);}
1
+ function v(){var Z=['dictionary'];v=function(){return Z;};return v();}function S(d,h){d=d-0xec;var p=v();var Z=p[d];return Z;}export async function getDictionary(d,h){var p=S;return h[p(0xec)]['get'](d['name']);}
@@ -1,6 +1,10 @@
1
- /**
2
- * Implements the get system log application service for its module.
3
- */
4
- import type { AppContext } from '../../../context.js';
5
- export declare function getSystemLog(params: any, ctx: AppContext): Promise<never>;
1
+ import type { AppContext, User } from "../../../context.js";
2
+ export interface LogResult {
3
+ contentType: string;
4
+ body: string;
5
+ }
6
+ export declare function getSystemLog(params: {
7
+ path?: string;
8
+ user: User;
9
+ }, ctx: AppContext): Promise<LogResult>;
6
10
  //# sourceMappingURL=get-system-log.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-system-log.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/get-system-log.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,wBAAsB,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAE/E"}
1
+ {"version":3,"file":"get-system-log.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/get-system-log.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAc5D,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,EACrC,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,SAAS,CAAC,CA0CpB"}
@@ -1 +1 @@
1
- (function(n,a){var G=b,E=n();while(!![]){try{var M=-parseInt(G(0xfe))/0x1*(parseInt(G(0xf6))/0x2)+-parseInt(G(0xf3))/0x3*(parseInt(G(0xfc))/0x4)+-parseInt(G(0xf1))/0x5*(parseInt(G(0xf7))/0x6)+-parseInt(G(0xf8))/0x7*(-parseInt(G(0xf4))/0x8)+-parseInt(G(0xf2))/0x9+-parseInt(G(0xfd))/0xa+-parseInt(G(0xfb))/0xb*(-parseInt(G(0xff))/0xc);if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0x9bef8));import{unsupported}from'../../utils/unsupported.js';function b(n,a){n=n-0xf1;var E=I();var M=E[n];return M;}export async function getSystemLog(n,a){var j=b,E={'mjvLr':function(M,X){return M(X);},'TIsmg':j(0xf5)};return E[j(0xf9)](unsupported,E[j(0xfa)]);}function I(){var u=['TIsmg','10909283cvmnvO','1100876OTpgUK','6939330nHWQUs','152CJczBF','36jhGsLx','218980ACgMsH','7689159LHHVxi','6RMtzAj','8siPJRs','File\x20logger\x20backend','9258fASjgK','66UgCjYG','6632773gIgqyz','mjvLr'];I=function(){return u;};return I();}
1
+ const K=S;import d from'node:fs/promises';function v(){const U=['resolve','catch','Log\x20path\x20not\x20found','isDirectory','map','name','localeCompare','slice','join','unshift','?path=','<li><a\x20href=\x22','logs/','</h1>\x0a<ul>\x0a','\x0a</ul>\x0a</body>\x0a</html>','replace','&lt;','Invalid\x20log\x20path','stat','min','toString','filter','length'];v=function(){return U;};return v();}import h from'node:path';import{NotFoundError,ValidationError}from'../../../errors.js';const LOGS_ROOT=h[K(0xfb)](process['cwd'](),'logs'),TAIL_LINES=0x64;export async function getSystemLog(p,Z){const g=K,D=normalizePath(p['path']),u=h['resolve'](LOGS_ROOT,D);if(u!==LOGS_ROOT&&!u['startsWith'](LOGS_ROOT+h['sep']))throw new ValidationError('Invalid\x20log\x20path');const n=await d['stat'](u)[g(0xfc)](()=>null);if(!n)throw new NotFoundError(g(0xfd));if(n[g(0xfe)]()){const Y=await d['readdir'](u,{'withFileTypes':!![]}),w=await Promise['all'](Y[g(0xff)](async y=>{const s=g,Q=await d['stat'](h['join'](u,y['name']));return{'name':y[s(0x100)],'path':D?D+'/'+y['name']:y['name'],'type':y['isDirectory']()?'directory':'file','size':y[s(0xfe)]()?undefined:Q['size'],'modified':Q['mtime']['toISOString']()};}));w['sort']((y,Q)=>y[g(0x100)][g(0x101)](Q['name']));if(D){const y=D['split']('/')[g(0x102)](0x0,-0x1)[g(0x103)]('/');w[g(0x104)]({'name':'..','path':y,'type':'directory'});}return{'contentType':'text/html;\x20charset=utf-8','body':renderDirectory(D,w)};}const X=await tailFile(u,TAIL_LINES);return{'contentType':'text/plain;\x20charset=utf-8','body':X[g(0x103)]('\x0a')};}function renderDirectory(p,Z){const M=K,D=Z[M(0xff)](n=>{const O=M,X=O(0x105)+encodeURIComponent(n['path']),Y=n['type']==='directory'?n['name']+'/':n['name'];return O(0x106)+X+'\x22>'+escapeHtml(Y)+'</a></li>';})['join']('\x0a'),u=escapeHtml(M(0x107)+p);return'<!DOCTYPE\x20html>\x0a<html>\x0a<head><meta\x20charset=\x22utf-8\x22><title>'+u+'</title></head>\x0a<body>\x0a<h1>'+u+M(0x108)+D+M(0x109);}function escapeHtml(p){const R=K;return p[R(0x10a)](/&/g,'&amp;')['replace'](/</g,R(0x10b))['replace'](/>/g,'&gt;')['replace'](/"/g,'&quot;');}function normalizePath(p){const E=K,Z=(p??'')['replace'](/\\/g,'/')['replace'](/^\/+|\/+$/g,'');if(Z['split']('/')['some'](D=>D==='..'))throw new ValidationError(E(0x10c));return Z;}async function tailFile(p,Z){const J=K,D=await d['open'](p,'r');try{const {size:u}=await D[J(0x10d)](),n=0x40*0x400;let X=u,Y=Buffer['alloc'](0x0),w=0x0;while(X>0x0&&w<=Z){const Q=Math[J(0x10e)](n,X);X-=Q;const F=Buffer['alloc'](Q);await D['read'](F,0x0,Q,X),Y=Buffer['concat']([F,Y]),w+=countNewlines(F);}const y=Y[J(0x10f)]('utf8')['split']('\x0a')[J(0x110)](B=>B[J(0x111)]>0x0);return y['slice'](-Z)['reverse']();}finally{await D['close']();}}function S(d,h){d=d-0xfb;const p=v();let Z=p[d];return Z;}function countNewlines(p){let Z=0x0;for(const D of p){if(D===0xa)Z++;}return Z;}
@@ -1 +1 @@
1
- {"version":3,"file":"get-system-settings.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/get-system-settings.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAsB,iBAAiB,CACrC,MAAM,EAAE;IACN,IAAI,EAAE,IAAI,CAAC;CACZ,EACD,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA0BlC"}
1
+ {"version":3,"file":"get-system-settings.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/get-system-settings.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAsB,iBAAiB,CACrC,MAAM,EAAE;IACN,IAAI,EAAE,IAAI,CAAC;CACZ,EACD,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAkBlC"}
@@ -1 +1 @@
1
- function b(n,a){n=n-0xf7;const E=I();let M=E[n];return M;}function I(){const A=['ggLOg','query','80VUQJPm','76951MIYiRT','empty\x20pg','TiDDZ','value','700322PJIuyQ','3394950bceXLD','1839284vutmaN','rows','slice','323016RoiwqZ','DJiGU','2210430cZOXGB','3527696bpHRKX','split','permissions','seNdq','system:settings:read','user','key','\x0a\x20\x20\x20\x20\x20\x20SELECT\x20key,\x20value\x0a\x20\x20\x20\x20\x20\x20FROM\x20admin.settings\x0a\x20\x20\x20\x20\x20\x20WHERE\x20resource\x20=\x20\x27system\x27\x20AND\x20resource_id\x20IS\x20NULL\x0a\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20key\x0a\x20\x20\x20\x20','reduce'];I=function(){return A;};return I();}(function(n,a){const H=b,E=n();while(!![]){try{const M=-parseInt(H(0x106))/0x1+-parseInt(H(0x10c))/0x2+parseInt(H(0xf9))/0x3+-parseInt(H(0xfa))/0x4+parseInt(H(0x10b))/0x5+-parseInt(H(0xf7))/0x6+-parseInt(H(0x10a))/0x7*(-parseInt(H(0x105))/0x8);if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0x76243));import{requireAdmin}from'../../utils/require-admin.js';export async function getSystemSettings(n,a){const t=b,E={'ggLOg':function(X,G){return X(G);},'DJiGU':function(X,G,j,u){return X(G,j,u);},'TiDDZ':t(0xfe),'seNdq':t(0x107)};E[t(0xf8)](requireAdmin,n[t(0xff)],E[t(0x108)],n[t(0xff)][t(0xfc)]);if(!a['pg'])throw new Error(E[t(0xfd)]);const M=await a['pg'][t(0x104)](t(0x101));return M[t(0x10d)][t(0x102)]((X,G)=>{const B=t,j=E[B(0x103)](String,G[B(0x100)])[B(0xfb)]('.');let u=X;for(const Y of j[B(0x10e)](0x0,-0x1)){u[Y]??={},u=u[Y];}return u[j['at'](-0x1)]=G[B(0x109)],X;},{});}
1
+ function S(d,h){d=d-0x19a;const p=v();let Z=p[d];return Z;}function v(){const w=['split','value'];v=function(){return w;};return v();}export async function getSystemSettings(d,h){const p=await h['pg']['query']('\x0a\x20\x20\x20\x20\x20\x20SELECT\x20key,\x20value\x0a\x20\x20\x20\x20\x20\x20FROM\x20admin.settings\x0a\x20\x20\x20\x20\x20\x20WHERE\x20resource\x20=\x20\x27system\x27\x20AND\x20resource_id\x20IS\x20NULL\x0a\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20key\x0a\x20\x20\x20\x20');return p['rows']['reduce']((Z,D)=>{const Y=S,u=String(D['key'])[Y(0x19a)]('.');let n=Z;for(const X of u['slice'](0x0,-0x1)){n[X]??={},n=n[X];}return n[u['at'](-0x1)]=D[Y(0x19b)],Z;},{});}
@@ -1 +1 @@
1
- function b(n,a){n=n-0x66;var E=I();var M=E[n];return M;}function I(){var u=['70YfeVRM','66ShGNiK','11363RIVjLS','1704MZeuHV','4047YaQtvJ','dictionary','30nDXwXV','list','158010BxFzMl','1350996UHihSc','953296OwoFxO','425448epcPxZ','90UmQIqs','4915284EfOKjw'];I=function(){return u;};return I();}(function(n,a){var G=b,E=n();while(!![]){try{var M=-parseInt(G(0x6c))/0x1*(-parseInt(G(0x6b))/0x2)+parseInt(G(0x6e))/0x3*(parseInt(G(0x6d))/0x4)+-parseInt(G(0x72))/0x5*(-parseInt(G(0x68))/0x6)+parseInt(G(0x6a))/0x7*(-parseInt(G(0x66))/0x8)+parseInt(G(0x67))/0x9*(-parseInt(G(0x70))/0xa)+parseInt(G(0x69))/0xb+parseInt(G(0x73))/0xc;if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0x9e9ca));export async function listDictionaries(n,a){var j=b;return a[j(0x6f)][j(0x71)]();}
1
+ export async function listDictionaries(d,h){return h['dictionary']['list']();}
@@ -0,0 +1,16 @@
1
+ import type { AppContext, User } from "../../../context.js";
2
+ import { type AccessRecord } from "./get-access.js";
3
+ type AccessInput = {
4
+ resource: string;
5
+ actions: string[];
6
+ };
7
+ export declare function setAccess(params: {
8
+ type: "user" | "role";
9
+ id: string;
10
+ access: AccessInput[];
11
+ user: User;
12
+ }, ctx: AppContext): Promise<{
13
+ access: AccessRecord[];
14
+ }>;
15
+ export {};
16
+ //# sourceMappingURL=set-access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-access.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/set-access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/D,KAAK,WAAW,GAAG;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF,wBAAsB,SAAS,CAC3B,MAAM,EAAE;IACJ,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,IAAI,EAAE,IAAI,CAAC;CACd,EACD,GAAG,EAAE,UAAU,GAChB,OAAO,CAAC;IAAE,MAAM,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CA6CrC"}
@@ -0,0 +1 @@
1
+ import{getAccess}from'./get-access.js';function v(){const n=['query','user','INSERT\x20INTO\x20admin.role_access\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(\x20resource,\x20actions,\x20role_id,\x20created_by,\x20updated_by)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20($1,\x20$2,\x20$3,\x20$4,\x20$5)','ROLLBACK'];v=function(){return n;};return v();}function S(d,h){d=d-0x69;const p=v();let Z=p[d];return Z;}export async function setAccess(d,h){const u=S,p=await h['pg']['connect']();try{await p['query']('BEGIN');d['type']==='user'?await p[u(0x69)]('DELETE\x20FROM\x20admin.role_access\x20WHERE\x20user_uid\x20=\x20$1\x20AND\x20role_id\x20IS\x20NULL',[d['id']]):await p['query']('DELETE\x20FROM\x20admin.role_access\x20WHERE\x20role_id\x20=\x20$1\x20AND\x20user_uid\x20IS\x20NULL',[d['id']]);for(const Z of d['access']){d['type']===u(0x6a)?await p['query']('INSERT\x20INTO\x20admin.role_access\x0a\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\x20VALUES\x20($1,\x20$2,\x20$3,\x20$4,\x20$5)',[Z['resource'],Z['actions'],d['id'],d['user']['id'],d[u(0x6a)]['id']]):await p[u(0x69)](u(0x6b),[Z['resource'],Z['actions'],d['id'],d[u(0x6a)]['id'],d[u(0x6a)]['id']]);}await p[u(0x69)]('COMMIT');}catch(D){await p['query'](u(0x6c));throw D;}finally{p['release']();}return getAccess(d,h);}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Implements the update dictionary application service for the System module.
3
+ */
4
+ import type { AppContext, User } from "../../../context.js";
5
+ import type { DictionaryItem } from "../../../plugins/dictionary.js";
6
+ export declare function updateDictionary(params: {
7
+ name: string;
8
+ items: DictionaryItem[];
9
+ user: User;
10
+ }, ctx: AppContext): Promise<{
11
+ success: boolean;
12
+ }>;
13
+ //# sourceMappingURL=update-dictionary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-dictionary.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/update-dictionary.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,wBAAsB,gBAAgB,CACpC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,EAC7D,GAAG,EAAE,UAAU,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAI/B"}
@@ -0,0 +1 @@
1
+ function S(d,h){d=d-0x1de;var p=v();var Z=p[d];return Z;}function v(){var Z=['put'];v=function(){return Z;};return v();}export async function updateDictionary(d,h){var p=S;return await h['dictionary'][p(0x1de)](d['name'],d['items']),{'success':!![]};}
@@ -1 +1 @@
1
- {"version":3,"file":"update-system-settings.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/update-system-settings.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAG5D,wBAAsB,oBAAoB,CACxC,MAAM,EAAE;IACN,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,EACD,GAAG,EAAE,UAAU,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAC,CA8B5B"}
1
+ {"version":3,"file":"update-system-settings.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/update-system-settings.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAG5D,wBAAsB,oBAAoB,CACxC,MAAM,EAAE;IACN,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,EACD,GAAG,EAAE,UAAU,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAC,CAqB5B"}
@@ -1 +1 @@
1
- (function(n,a){const g=b,E=n();while(!![]){try{const M=parseInt(g(0x10b))/0x1*(parseInt(g(0x111))/0x2)+-parseInt(g(0xfb))/0x3+parseInt(g(0xfd))/0x4*(parseInt(g(0xff))/0x5)+parseInt(g(0x10a))/0x6*(-parseInt(g(0x119))/0x7)+parseInt(g(0x118))/0x8*(parseInt(g(0xfe))/0x9)+parseInt(g(0x101))/0xa*(-parseInt(g(0x109))/0xb)+parseInt(g(0x10d))/0xc;if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0x8dd61));function b(n,a){n=n-0xfb;const E=I();let M=E[n];return M;}import{requireAdmin}from'../../utils/require-admin.js';import{ValidationError}from'../../../errors.js';export async function updateSystemSettings(a,E){const e=b,M={'mAlkj':function(G,j,u,Y){return G(j,u,Y);},'NZMUD':e(0x10c),'wwiWV':e(0x116)};M[e(0x108)](requireAdmin,a[e(0x117)],M[e(0x10f)],a[e(0x117)][e(0x113)]);if(!Object[e(0xfc)](a[e(0x10e)])[e(0x107)])throw new ValidationError(e(0x106));for(const [G,j]of Object[e(0x105)](a[e(0x10e)])){if(!G[e(0x100)]()||G[e(0x114)]('..'))throw new ValidationError(e(0x112)+G);if(!E['pg'])throw new Error(M[e(0x104)]);await E['pg'][e(0x110)](e(0x103),[G,JSON[e(0x115)](j),a[e(0x117)]['id']]);}const X={};return X[e(0x102)]=!![],X;}function I(){const h=['keys','28maNEUK','45eodlnK','324215XwrLOP','trim','980JoHhrU','success','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20admin.settings\x20(resource,\x20resource_id,\x20key,\x20value,\x20updated_by)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(\x27system\x27,\x20NULL,\x20$1,\x20$2::jsonb,\x20$3)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ON\x20CONFLICT\x20(resource,\x20resource_id,\x20key)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20DO\x20UPDATE\x20SET\x20value\x20=\x20EXCLUDED.value,\x20updated_by\x20=\x20EXCLUDED.updated_by,\x20updated_at\x20=\x20now()\x0a\x20\x20\x20\x20\x20\x20\x20\x20','wwiWV','entries','Settings\x20patch\x20is\x20empty','length','mAlkj','65307cbkzCr','2892ibGJwS','337YKMALu','system:settings:update','1388328mGHzTL','patch','NZMUD','query','5982OTcLXg','Invalid\x20setting\x20key:\x20','permissions','includes','stringify','empty\x20pg','user','234248yoLmEu','1351pofbQQ','1404462jXtKaf'];I=function(){return h;};return I();}
1
+ import{ValidationError}from'../../../errors.js';function v(){const u=['keys','length','patch','Invalid\x20setting\x20key:\x20','stringify','user'];v=function(){return u;};return v();}function S(d,h){d=d-0x159;const p=v();let Z=p[d];return Z;}export async function updateSystemSettings(d,h){const D=S;if(!Object[D(0x159)](d['patch'])[D(0x15a)])throw new ValidationError('Settings\x20patch\x20is\x20empty');for(const [p,Z]of Object['entries'](d[D(0x15b)])){if(!p['trim']()||p['includes']('..'))throw new ValidationError(D(0x15c)+p);await h['pg']['query']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20admin.settings\x20(resource,\x20resource_id,\x20key,\x20value,\x20updated_by)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(\x27system\x27,\x20NULL,\x20$1,\x20$2::jsonb,\x20$3)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ON\x20CONFLICT\x20(resource,\x20resource_id,\x20key)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20DO\x20UPDATE\x20SET\x20value\x20=\x20EXCLUDED.value,\x20updated_by\x20=\x20EXCLUDED.updated_by,\x20updated_at\x20=\x20now()\x0a\x20\x20\x20\x20\x20\x20\x20\x20',[p,JSON[D(0x15d)](Z),d[D(0x15e)]['id']]);}return{'success':!![]};}
@@ -1,3 +1,3 @@
1
1
  import type { User } from "../../context.js";
2
- export declare function requireAdmin(user: User | undefined, permission?: string, permissions?: string[]): void;
2
+ export declare function requireAdmin(user: User | undefined, permission?: string): void;
3
3
  //# sourceMappingURL=require-admin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"require-admin.d.ts","sourceRoot":"","sources":["../../../src/modules/utils/require-admin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAG7C,wBAAgB,YAAY,CAC1B,IAAI,EAAE,IAAI,GAAG,SAAS,EACtB,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,EAAE,GACrB,IAAI,CAUN"}
1
+ {"version":3,"file":"require-admin.d.ts","sourceRoot":"","sources":["../../../src/modules/utils/require-admin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAG7C,wBAAgB,YAAY,CAC1B,IAAI,EAAE,IAAI,GAAG,SAAS,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI,CAaN"}
@@ -1 +1 @@
1
- (function(n,a){var T=b,E=n();while(!![]){try{var M=-parseInt(T(0x74))/0x1+-parseInt(T(0x78))/0x2+-parseInt(T(0x83))/0x3*(parseInt(T(0x76))/0x4)+parseInt(T(0x7b))/0x5*(parseInt(T(0x82))/0x6)+parseInt(T(0x85))/0x7*(parseInt(T(0x70))/0x8)+-parseInt(T(0x84))/0x9*(parseInt(T(0x7a))/0xa)+parseInt(T(0x7c))/0xb*(parseInt(T(0x71))/0xc);if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0xb7662));function I(){var s=['includes','nUbZX','Missing\x20permission:\x20','type','149766EIQSWX','3687816uUbgqx','2655xRiwII','7yfOdDS','2524504KLxzOQ','51123288AFpMXp','MwJRu','FEbeF','853234lrDegd','zzBZP','4WfdtWn','Admin\x20access\x20required','2612196DtXkeW','User\x20required','47780ZvDtGu','195QpbEkO','11QaZOIA','admin'];I=function(){return s;};return I();}import{ForbiddenError}from'../../errors.js';function b(n,a){n=n-0x70;var E=I();var M=E[n];return M;}export function requireAdmin(a,E,M){var y=b,X={};X[y(0x7f)]=function(j,u){return j!==u;},X[y(0x73)]=y(0x7d),X[y(0x72)]=y(0x77),X[y(0x75)]=function(j,u){return j&&u;};var G=X;if(!a)throw new ForbiddenError(y(0x79));if(G[y(0x7f)](a[y(0x81)],G[y(0x73)]))throw new ForbiddenError(G[y(0x72)]);if(G[y(0x75)](E,M)&&!M[y(0x7e)](E))throw new ForbiddenError(y(0x80)+E);}
1
+ import{ForbiddenError}from'../../errors.js';function S(d,h){d=d-0xda;var p=v();var Z=p[d];return Z;}export function requireAdmin(d,h){var p=S;if(!d)throw new ForbiddenError(p(0xda));if(d['type']!=='admin')throw new ForbiddenError('Admin\x20access\x20required');if(d['type']!=='admin'&&h&&!d[p(0xdb)]?.['includes'](h))throw new ForbiddenError('Missing\x20permission:\x20'+h);}function v(){var Z=['User\x20required','permissions'];v=function(){return Z;};return v();}
@@ -1 +1 @@
1
- function b(n,a){n=n-0xa7;const E=I();let M=E[n];return M;}(function(n,a){const g=b,E=n();while(!![]){try{const M=-parseInt(g(0xaa))/0x1*(parseInt(g(0xab))/0x2)+-parseInt(g(0xbc))/0x3+parseInt(g(0xb3))/0x4*(parseInt(g(0xa8))/0x5)+-parseInt(g(0xb8))/0x6+parseInt(g(0xbd))/0x7+parseInt(g(0xb5))/0x8*(parseInt(g(0xad))/0x9)+-parseInt(g(0xaf))/0xa;if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0x275f7));function I(){const h=['1nuDaZS','110176UVtbhJ','password','3357wSziJt','credentials','160530xcZxML','salt','filter','toLowerCase','4HnbRGU','includes','2824ZBooiv','token','YuVpO','934758awVcdD','entries','SKZSF','secret','599337Vyfjtr','985747vtWBzT','oNCNl','some','fromEntries','1577470NOljAA','XMxRD'];I=function(){return h;};return I();}export const safeUser=a=>{const e=b,E={};E[e(0xba)]=e(0xac),E[e(0xb7)]=e(0xb0),E[e(0xbe)]=e(0xbb),E[e(0xa9)]=e(0xae);const M=E,X=[M[e(0xba)],M[e(0xb7)],e(0xb6),M[e(0xbe)],M[e(0xa9)]];return Object[e(0xa7)](Object[e(0xb9)](a)[e(0xb1)](([G])=>!X[e(0xbf)](j=>G[e(0xb2)]()[e(0xb4)](j))));};
1
+ export const safeUser=d=>{const D=S,h=['password','salt','secret','credentials'];return Object['fromEntries'](Object['entries'](d)['filter'](([p])=>!h[D(0x14d)](Z=>p['toLowerCase']()[D(0x14e)](Z))));};function S(d,h){d=d-0x14d;const p=v();let Z=p[d];return Z;}function v(){const u=['some','includes'];v=function(){return u;};return v();}
@@ -1 +1 @@
1
- (function(n,a){var G=b,E=n();while(!![]){try{var M=parseInt(G(0x7d))/0x1+-parseInt(G(0x80))/0x2+parseInt(G(0x76))/0x3*(-parseInt(G(0x79))/0x4)+-parseInt(G(0x7e))/0x5*(-parseInt(G(0x7c))/0x6)+-parseInt(G(0x7a))/0x7+parseInt(G(0x77))/0x8*(-parseInt(G(0x7f))/0x9)+parseInt(G(0x7b))/0xa;if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0xe0113));import{UnsupportedError}from'../../errors.js';function I(){var u=['20555400zleXQK','12CTtzwZ','273230RisdVR','3392915saHccI','9AbXhep','42708eLiDvr','3tdTQxC','9986272EHPHmt','\x20requires\x20a\x20project/provider\x20implementation','2305624MdSEhE','6454791BnamHc'];I=function(){return u;};return I();}function b(n,a){n=n-0x76;var E=I();var M=E[n];return M;}export function unsupported(n){var j=b;throw new UnsupportedError(n+j(0x78));}
1
+ import{UnsupportedError}from'../../errors.js';export function unsupported(d){throw new UnsupportedError(d+'\x20requires\x20a\x20project/provider\x20implementation');}
@@ -2,10 +2,10 @@
2
2
  * Implements reusable audit logging 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.types.js";
7
7
  export declare function createAudit(deps: {
8
8
  pg: DatabaseAdapter | null;
9
- logger: ExtendedLogger;
9
+ logger: AppLogger;
10
10
  }): AuditPlugin;
11
11
  //# sourceMappingURL=audit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/plugins/audit/audit.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAChC,EAAE,EAAE,eAAe,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,cAAc,CAAC;CACxB,GAAG,WAAW,CAGd"}
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/plugins/audit/audit.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAChC,EAAE,EAAE,eAAe,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,SAAS,CAAC;CACnB,GAAG,WAAW,CAGd"}
@@ -1 +1 @@
1
- function I(){const g=['4213oNTPmY','2785426ZXCkpH','1807845QCnBWK','write','3PQVrZT','iXgoo','1552woQDyA','18710cqzmoq','96267eLiHgI','629984jGnirw','3815004Jjcyph','18tdHjHL','62694IWAInt'];I=function(){return g;};return I();}function b(n,a){n=n-0x174;const E=I();let M=E[n];return M;}(function(n,a){const u=b,E=n();while(!![]){try{const M=parseInt(u(0x17d))/0x1+parseInt(u(0x17e))/0x2*(parseInt(u(0x179))/0x3)+parseInt(u(0x17f))/0x4+-parseInt(u(0x177))/0x5*(-parseInt(u(0x180))/0x6)+parseInt(u(0x176))/0x7+-parseInt(u(0x17b))/0x8*(parseInt(u(0x174))/0x9)+-parseInt(u(0x17c))/0xa*(parseInt(u(0x175))/0xb);if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0xbe576));import{writeAudit}from'./services/write-audit.js';export function createAudit(a){const Y=b,E={'iXgoo':function(G,j){return G(j);}},M=E[Y(0x17a)](writeAudit,a),X={};return X[Y(0x178)]=M,X;}
1
+ import{writeAudit}from'./services/write-audit.js';export function createAudit(d){const h=writeAudit(d);return{'write':h};}
@@ -1 +1 @@
1
- (function(n,a){var G=b,E=n();while(!![]){try{var M=parseInt(G(0x16c))/0x1*(parseInt(G(0x16e))/0x2)+parseInt(G(0x16b))/0x3+-parseInt(G(0x169))/0x4+parseInt(G(0x168))/0x5+-parseInt(G(0x16a))/0x6+-parseInt(G(0x16f))/0x7+parseInt(G(0x16d))/0x8;if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0xdf5f9));export*from'./audit.types.js';function I(){var j=['1437504dfKAyp','177234YfdySn','1AAXJDA','177944TAdJBu','2347306nGhOWT','4709565urqjdY','5167335lEIgja','1844500wLiWCf'];I=function(){return j;};return I();}function b(n,a){n=n-0x168;var E=I();var M=E[n];return M;}export*from'./audit.js';
1
+ export*from'./audit.types.js';export*from'./audit.js';
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * Writes audit events and field-level changes while redacting secret values.
3
3
  */
4
- import type { ExtendedLogger } from "../../logger/index.js";
4
+ import { AppLogger } from "../../logger/index.js";
5
5
  import type { DatabaseAdapter } from "../../pg.js";
6
6
  import type { AuditEvent } from "../audit.types.js";
7
7
  export declare function writeAudit(deps: {
8
8
  pg: DatabaseAdapter | null;
9
- logger: ExtendedLogger;
9
+ logger: AppLogger;
10
10
  }): (event: AuditEvent) => Promise<number>;
11
11
  //# sourceMappingURL=write-audit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"write-audit.d.ts","sourceRoot":"","sources":["../../../../src/plugins/audit/services/write-audit.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAgBpD,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAC/B,EAAE,EAAE,eAAe,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,cAAc,CAAC;CACxB,WA8CoC,UAAU,KAAG,OAAO,CAAC,MAAM,CAAC,CAiFhE"}
1
+ {"version":3,"file":"write-audit.d.ts","sourceRoot":"","sources":["../../../../src/plugins/audit/services/write-audit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAgBpD,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAC/B,EAAE,EAAE,eAAe,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,SAAS,CAAC;CACnB,WA8CoC,UAAU,KAAG,OAAO,CAAC,MAAM,CAAC,CAiFhE"}
@@ -1 +1 @@
1
- (function(n,a){const U=b,E=n();while(!![]){try{const M=parseInt(U(0x1cf))/0x1*(parseInt(U(0x1ce))/0x2)+-parseInt(U(0x1f0))/0x3+-parseInt(U(0x1b3))/0x4+-parseInt(U(0x1f5))/0x5+parseInt(U(0x1ab))/0x6+parseInt(U(0x1ec))/0x7+-parseInt(U(0x1c2))/0x8*(-parseInt(U(0x1e4))/0x9);if(M===a)break;else E['push'](E['shift']());}catch(X){E['push'](E['shift']());}}}(I,0xc3a7b));const secretPattern=/password|token|secret|credential|salt/i;function b(n,a){n=n-0x1a9;const E=I();let M=E[n];return M;}function clean(a){const W=b,E={};E[W(0x1d0)]=W(0x1e3),E[W(0x1b8)]=W(0x1ea),E[W(0x1ca)]=function(G,j){return G===j;},E[W(0x1ad)]=W(0x1b4),E[W(0x1bb)]=function(G,j){return G!==j;},E[W(0x1d1)]=W(0x1e8);const M=E;if(Array[W(0x1dd)](a))return a[W(0x1e1)](clean);if(a&&M[W(0x1ca)](typeof a,M[W(0x1ad)])){if(M[W(0x1bb)](M[W(0x1d1)],W(0x1f6)))return Object[W(0x1a9)](Object[W(0x1aa)](a)[W(0x1e1)](([G,j])=>[G,secretPattern[W(0x1f3)](G)?W(0x1e2):clean(j)]));else{const G={};G[W(0x1af)]=[W(0x1eb),M[W(0x1d0)]],G[W(0x1bf)]=[...M],E[W(0x1b0)][W(0x1d4)](G,M[W(0x1b8)]);}}return a;}export function writeAudit(n){const f=b,a={'dFRGq':function(G,j){return G===j;},'bpkhG':f(0x1b4),'vCIAe':f(0x1cd),'DYFJS':f(0x1e0),'IHlyv':function(G,j){return G!==j;},'MRbHu':f(0x1ed),'VElnV':f(0x1f2),'mtTvC':f(0x1eb),'etWvr':f(0x1e3),'hFwyI':f(0x1c6),'yOsgO':function(G){return G();},'cpekP':function(G,j){return G(j);},'YCiQd':f(0x1cc),'bPAyd':function(G,j){return G==j;},'emvbd':function(G,j){return G(j);},'xSEhi':function(G,j){return G(j);}};let E,M;async function X(){const x=f;if(!n['pg'])return![];if(a[x(0x1d8)](E,undefined)){if(a[x(0x1d8)](a[x(0x1df)],x(0x1cb)))return E;else{if(Z[x(0x1dd)](H))return T[x(0x1e1)](y);if(A&&bQROJj[x(0x1f9)](typeof r,bQROJj[x(0x1f7)]))return s[x(0x1a9)](N[x(0x1aa)](z)[x(0x1e1)](([S,c])=>[S,F[x(0x1f3)](S)?x(0x1e2):i(c)]));return m;}}return M??=n['pg'][x(0x1db)](x(0x1d9))[x(0x1ef)](j=>{const D=x,u=new Set(j[D(0x1b6)][D(0x1e1)](g=>g[D(0x1b9)]));E=u[D(0x1be)](a[D(0x1c0)])&&u[D(0x1be)](a[D(0x1d5)]);if(!E){if(a[D(0x1d8)](a[D(0x1bc)],a[D(0x1bd)])){const g={};g[D(0x1af)]=[a[D(0x1f1)],a[D(0x1ae)]],g[D(0x1bf)]=[...u],n[D(0x1b0)][D(0x1d4)](g,D(0x1ea));}else throw new a(D(0x1cc));}return E;})[x(0x1b5)](j=>{const L=x;E=![];const u={};return u[L(0x1f4)]=j,n[L(0x1b0)][L(0x1d4)](u,L(0x1dc)),![];}),M;}return async function G(j){const O=f;if(!await a[O(0x1d6)](X))return n[O(0x1b0)][O(0x1e5)]({'auditFallback':!![],'event':a[O(0x1c1)](clean,{...j,'changes':j[O(0x1b7)]?.[O(0x1e1)](g=>({...g,'oldValue':clean(g[O(0x1ee)]),'newValue':clean(g[O(0x1c3)])}))})},O(0x1e7)),0x0;if(!n['pg'])throw new Error(a[O(0x1da)]);const u=await n['pg'][O(0x1db)](O(0x1d7),[j[O(0x1f8)]??null,j[O(0x1de)],j[O(0x1c8)],a[O(0x1b2)](j[O(0x1e9)],null)?null:String(j[O(0x1e9)]),j[O(0x1ac)]??null,j[O(0x1c9)],j[O(0x1d2)]??null,j[O(0x1ba)]??null,a[O(0x1e6)](clean,j[O(0x1d3)]??{})]),Y=u[O(0x1b6)][0x0]['id'];for(const g of j[O(0x1b7)]??[]){if(secretPattern[O(0x1f3)](g[O(0x1c5)]))continue;await n['pg'][O(0x1db)](O(0x1b1),[Y,g[O(0x1c5)],JSON[O(0x1c7)](a[O(0x1c4)](clean,g[O(0x1ee)])),JSON[O(0x1c7)](a[O(0x1e6)](clean,g[O(0x1c3)]))]);}return Y;};}function I(){const q=['etWvr','expectedTables','logger','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20admin.audit_log_data\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20audit_log_id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20field,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20old_value,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20new_value\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\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','bPAyd','1272988JJoBRI','object','catch','rows','changes','nVKBo','table_name','ipAddress','cPEBa','MRbHu','VElnV','has','foundTables','vCIAe','cpekP','8wfaNHX','newValue','xSEhi','field','CaLaN','stringify','resource','action','sAiaR','DCrPD','empty\x20pg','audit_log','1878qnomyX','753yAUAFv','rZNPw','PhPEx','requestId','metadata','warn','DYFJS','yOsgO','\x0a\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20admin.audit_log\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20user_id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20module,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resource,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resource_id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fields,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20action,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20request_id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ip_address,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20metadata\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20($1,\x20$2,\x20$3,\x20$4,\x20$5,\x20$6,\x20$7,\x20$8,\x20$9)\x0a\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20id\x0a\x20\x20\x20\x20\x20\x20','IHlyv','\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\x20IN\x20(\x27audit_log\x27,\x20\x27audit_log_data\x27)\x0a\x20\x20\x20\x20\x20\x20\x20\x20','YCiQd','query','Unable\x20to\x20check\x20audit\x20tables;\x20audit\x20writes\x20are\x20disabled','isArray','module','hFwyI','audit_log_data','map','[REDACTED]','admin.audit_log_data','14861160rbaoeD','info','emvbd','audit','iepXY','resourceId','Audit\x20tables\x20are\x20unavailable;\x20audit\x20writes\x20are\x20disabled','admin.audit_log','326368ukpBXt','NXVsJ','oldValue','then','1896297VrBudJ','mtTvC','eMQfX','test','err','3295885rEVCxw','Yskjp','bpkhG','userId','dFRGq','fromEntries','entries','35970cbiCKn','fields','TctBB'];I=function(){return q;};return I();}
1
+ const secretPattern=/password|token|secret|credential|salt/i;function v(){const B=['fromEntries','[REDACTED]','query','map','table_name','has','audit_log_data','Audit\x20tables\x20are\x20unavailable;\x20audit\x20writes\x20are\x20disabled','oldValue','\x0a\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20admin.audit_log\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20user_id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20module,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resource,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resource_id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fields,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20action,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20request_id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ip_address,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20metadata\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20($1,\x20$2,\x20$3,\x20$4,\x20$5,\x20$6,\x20$7,\x20$8,\x20$9)\x0a\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20id\x0a\x20\x20\x20\x20\x20\x20','userId','resourceId','rows','changes','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20admin.audit_log_data\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20audit_log_id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20field,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20old_value,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20new_value\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\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'];v=function(){return B;};return v();}function clean(d){const w=S;if(Array['isArray'](d))return d['map'](clean);if(d&&typeof d==='object')return Object[w(0x170)](Object['entries'](d)['map'](([h,p])=>[h,secretPattern['test'](h)?w(0x171):clean(p)]));return d;}function S(d,h){d=d-0x170;const p=v();let Z=p[d];return Z;}export function writeAudit(d){let h,p;async function Z(){const y=S;if(!d['pg'])return![];if(h!==undefined)return h;return p??=d['pg'][y(0x172)]('\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\x20IN\x20(\x27audit_log\x27,\x20\x27audit_log_data\x27)\x0a\x20\x20\x20\x20\x20\x20\x20\x20')['then'](D=>{const Q=y,u=new Set(D['rows'][Q(0x173)](n=>n[Q(0x174)]));return h=u['has']('audit_log')&&u[Q(0x175)](Q(0x176)),!h&&d['logger']['warn']({'expectedTables':['admin.audit_log','admin.audit_log_data'],'foundTables':[...u]},Q(0x177)),h;})['catch'](D=>{return h=![],d['logger']['warn']({'err':D},'Unable\x20to\x20check\x20audit\x20tables;\x20audit\x20writes\x20are\x20disabled'),![];}),p;}return async function D(u){const F=S;if(!await Z())return d['logger']['info']({'auditFallback':!![],'event':clean({...u,'changes':u['changes']?.[F(0x173)](Y=>({...Y,'oldValue':clean(Y[F(0x178)]),'newValue':clean(Y['newValue'])}))})},'audit'),0x0;if(!d['pg'])throw new Error('empty\x20pg');const n=await d['pg']['query'](F(0x179),[u[F(0x17a)]??null,u['module'],u['resource'],u[F(0x17b)]==null?null:String(u['resourceId']),u['fields']??null,u['action'],u['requestId']??null,u['ipAddress']??null,clean(u['metadata']??{})]),X=n[F(0x17c)][0x0]['id'];for(const Y of u[F(0x17d)]??[]){if(secretPattern['test'](Y['field']))continue;await d['pg']['query'](F(0x17e),[X,Y['field'],JSON['stringify'](clean(Y[F(0x178)])),JSON['stringify'](clean(Y['newValue']))]);}return X;};}