@opengis/fcore 0.0.1-beta.3 → 0.0.1-beta.5

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 (180) hide show
  1. package/LICENSE +3 -3
  2. package/README.md +71 -71
  3. package/dist/config.d.ts +2 -10
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +1 -1
  6. package/dist/context.js +1 -1
  7. package/dist/errors.js +1 -1
  8. package/dist/fastify.d.ts +4 -5
  9. package/dist/fastify.d.ts.map +1 -1
  10. package/dist/fastify.js +1 -1
  11. package/dist/fcore.js +1 -1
  12. package/dist/index.d.ts +0 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/migrations/cli.js +1 -1
  16. package/dist/migrations/runner.js +1 -1
  17. package/dist/modules/auth/adduser-cli.d.ts +3 -0
  18. package/dist/modules/auth/adduser-cli.d.ts.map +1 -0
  19. package/dist/modules/auth/adduser-cli.js +2 -0
  20. package/dist/modules/auth/passwd-cli.d.ts +3 -0
  21. package/dist/modules/auth/passwd-cli.d.ts.map +1 -0
  22. package/dist/modules/auth/passwd-cli.js +2 -0
  23. package/dist/modules/auth/permission-cli.d.ts +3 -0
  24. package/dist/modules/auth/permission-cli.d.ts.map +1 -0
  25. package/dist/modules/auth/permission-cli.js +2 -0
  26. package/dist/modules/auth/route.d.ts.map +1 -1
  27. package/dist/modules/auth/route.js +1 -1
  28. package/dist/modules/auth/schema.d.ts +7 -1
  29. package/dist/modules/auth/schema.d.ts.map +1 -1
  30. package/dist/modules/auth/schema.js +1 -1
  31. package/dist/modules/auth/services/change-password.d.ts +9 -0
  32. package/dist/modules/auth/services/change-password.d.ts.map +1 -0
  33. package/dist/modules/auth/services/change-password.js +1 -0
  34. package/dist/modules/auth/services/get-current-user.js +1 -1
  35. package/dist/modules/auth/services/registration.d.ts +14 -0
  36. package/dist/modules/auth/services/registration.d.ts.map +1 -0
  37. package/dist/modules/auth/services/registration.js +1 -0
  38. package/dist/modules/auth/services/verify-two-factor.js +1 -1
  39. package/dist/modules/file/route.js +1 -1
  40. package/dist/modules/file/schema.js +1 -1
  41. package/dist/modules/file/services/get-file.js +1 -1
  42. package/dist/modules/file/services/resize-file.js +1 -1
  43. package/dist/modules/file/services/upload-file.js +1 -1
  44. package/dist/modules/resource/route.d.ts.map +1 -1
  45. package/dist/modules/resource/route.js +1 -1
  46. package/dist/modules/resource/schema.js +1 -1
  47. package/dist/modules/resource/services/add-note.js +1 -1
  48. package/dist/modules/resource/services/add-resource-file.js +1 -1
  49. package/dist/modules/resource/services/create-resource-relation.d.ts +8 -2
  50. package/dist/modules/resource/services/create-resource-relation.d.ts.map +1 -1
  51. package/dist/modules/resource/services/create-resource-relation.js +1 -1
  52. package/dist/modules/resource/services/create-resource.js +1 -1
  53. package/dist/modules/resource/services/delete-resource-relation.d.ts +8 -1
  54. package/dist/modules/resource/services/delete-resource-relation.d.ts.map +1 -1
  55. package/dist/modules/resource/services/delete-resource-relation.js +1 -1
  56. package/dist/modules/resource/services/delete-resource.js +1 -1
  57. package/dist/modules/resource/services/export-resource.js +1 -1
  58. package/dist/modules/resource/services/get-resource.js +1 -1
  59. package/dist/modules/resource/services/list-resource-relation.d.ts +7 -2
  60. package/dist/modules/resource/services/list-resource-relation.d.ts.map +1 -1
  61. package/dist/modules/resource/services/list-resource-relation.js +1 -1
  62. package/dist/modules/resource/services/list-resources.js +1 -1
  63. package/dist/modules/resource/services/search-resource.js +1 -1
  64. package/dist/modules/resource/services/suggest-resource.d.ts +10 -4
  65. package/dist/modules/resource/services/suggest-resource.d.ts.map +1 -1
  66. package/dist/modules/resource/services/suggest-resource.js +1 -1
  67. package/dist/modules/resource/services/update-resource.js +1 -1
  68. package/dist/modules/resource/services/upload-resource-file.js +1 -1
  69. package/dist/modules/system/route.d.ts +2 -1
  70. package/dist/modules/system/route.d.ts.map +1 -1
  71. package/dist/modules/system/route.js +1 -1
  72. package/dist/modules/system/schema.d.ts +22 -1
  73. package/dist/modules/system/schema.d.ts.map +1 -1
  74. package/dist/modules/system/schema.js +1 -1
  75. package/dist/modules/system/services/check-system.d.ts.map +1 -1
  76. package/dist/modules/system/services/check-system.js +1 -1
  77. package/dist/modules/system/services/get-access.d.ts +14 -0
  78. package/dist/modules/system/services/get-access.d.ts.map +1 -0
  79. package/dist/modules/system/services/get-access.js +1 -0
  80. package/dist/modules/system/services/get-api-list.d.ts +4 -1
  81. package/dist/modules/system/services/get-api-list.d.ts.map +1 -1
  82. package/dist/modules/system/services/get-api-list.js +1 -1
  83. package/dist/modules/system/services/get-audit-log.js +1 -1
  84. package/dist/modules/system/services/get-dictionary.js +1 -1
  85. package/dist/modules/system/services/get-system-log.d.ts +9 -5
  86. package/dist/modules/system/services/get-system-log.d.ts.map +1 -1
  87. package/dist/modules/system/services/get-system-log.js +1 -1
  88. package/dist/modules/system/services/get-system-settings.js +1 -1
  89. package/dist/modules/system/services/list-dictionaries.js +1 -1
  90. package/dist/modules/system/services/set-access.d.ts +16 -0
  91. package/dist/modules/system/services/set-access.d.ts.map +1 -0
  92. package/dist/modules/system/services/set-access.js +1 -0
  93. package/dist/modules/system/services/update-dictionary.d.ts +13 -0
  94. package/dist/modules/system/services/update-dictionary.d.ts.map +1 -0
  95. package/dist/modules/system/services/update-dictionary.js +1 -0
  96. package/dist/modules/system/services/update-system-settings.js +1 -1
  97. package/dist/modules/utils/require-admin.js +1 -1
  98. package/dist/modules/utils/safe-user.js +1 -1
  99. package/dist/modules/utils/unsupported.js +1 -1
  100. package/dist/plugins/audit/audit.js +1 -1
  101. package/dist/plugins/audit/index.js +1 -1
  102. package/dist/plugins/audit/services/write-audit.js +1 -1
  103. package/dist/plugins/auth/get-user-permissions.d.ts +3 -0
  104. package/dist/plugins/auth/get-user-permissions.d.ts.map +1 -0
  105. package/dist/plugins/auth/get-user-permissions.js +1 -0
  106. package/dist/plugins/auth/index.d.ts +4 -0
  107. package/dist/plugins/auth/index.d.ts.map +1 -1
  108. package/dist/plugins/auth/index.js +1 -1
  109. package/dist/plugins/auth/verifyUser.d.ts +9 -0
  110. package/dist/plugins/auth/verifyUser.d.ts.map +1 -0
  111. package/dist/plugins/auth/verifyUser.js +1 -0
  112. package/dist/plugins/dictionary.js +1 -1
  113. package/dist/plugins/file.js +1 -1
  114. package/dist/plugins/index.d.ts +1 -0
  115. package/dist/plugins/index.d.ts.map +1 -1
  116. package/dist/plugins/index.js +1 -1
  117. package/dist/plugins/logger/index.js +1 -1
  118. package/dist/plugins/logger/transport.js +1 -1
  119. package/dist/plugins/pg.js +1 -1
  120. package/dist/plugins/redis.js +1 -1
  121. package/dist/plugins/resource/index.js +1 -1
  122. package/dist/plugins/resource/resource.d.ts.map +1 -1
  123. package/dist/plugins/resource/resource.js +1 -1
  124. package/dist/plugins/resource/resource.registry.js +1 -1
  125. package/dist/plugins/resource/resource.types.d.ts +23 -0
  126. package/dist/plugins/resource/resource.types.d.ts.map +1 -1
  127. package/dist/plugins/resource/services/create-relation.d.ts +13 -0
  128. package/dist/plugins/resource/services/create-relation.d.ts.map +1 -0
  129. package/dist/plugins/resource/services/create-relation.js +1 -0
  130. package/dist/plugins/resource/services/create.js +1 -1
  131. package/dist/plugins/resource/services/delete-relation.d.ts +15 -0
  132. package/dist/plugins/resource/services/delete-relation.d.ts.map +1 -0
  133. package/dist/plugins/resource/services/delete-relation.js +1 -0
  134. package/dist/plugins/resource/services/delete.js +1 -1
  135. package/dist/plugins/resource/services/find-one.js +1 -1
  136. package/dist/plugins/resource/services/find-relation.d.ts +12 -0
  137. package/dist/plugins/resource/services/find-relation.d.ts.map +1 -0
  138. package/dist/plugins/resource/services/find-relation.js +1 -0
  139. package/dist/plugins/resource/services/find.js +1 -1
  140. package/dist/plugins/resource/services/update.js +1 -1
  141. package/dist/plugins/resource/utils/fields.js +1 -1
  142. package/dist/plugins/resource/utils/filters.js +1 -1
  143. package/dist/plugins/resource/utils/permissions.js +1 -1
  144. package/dist/plugins/resource/utils/sort.js +1 -1
  145. package/dist/plugins/resource/utils/sql.js +1 -1
  146. package/dist/shared/getIP.js +1 -1
  147. package/dist/type.d.ts +14 -0
  148. package/dist/type.d.ts.map +1 -1
  149. package/migrations/20260903120000_core_schema.sql +22 -19
  150. package/migrations/20260903130000_move_notes_files_to_admin.sql +17 -17
  151. package/migrations/20260903140000_settings_nulls_not_distinct.sql +18 -18
  152. package/migrations/20260905120000_add_user_foreign_keys.sql +43 -0
  153. package/package.json +10 -6
  154. package/dist/modules/auth/index.d.ts +0 -9
  155. package/dist/modules/auth/index.d.ts.map +0 -1
  156. package/dist/modules/auth/index.js +0 -1
  157. package/dist/modules/auth/services/login.d.ts +0 -10
  158. package/dist/modules/auth/services/login.d.ts.map +0 -1
  159. package/dist/modules/auth/services/login.js +0 -1
  160. package/dist/modules/auth/services/logout.d.ts +0 -9
  161. package/dist/modules/auth/services/logout.d.ts.map +0 -1
  162. package/dist/modules/auth/services/logout.js +0 -1
  163. package/dist/modules/auth/services/verifyPassword.d.ts +0 -11
  164. package/dist/modules/auth/services/verifyPassword.d.ts.map +0 -1
  165. package/dist/modules/auth/services/verifyPassword.js +0 -1
  166. package/dist/modules/file/index.d.ts +0 -8
  167. package/dist/modules/file/index.d.ts.map +0 -1
  168. package/dist/modules/file/index.js +0 -1
  169. package/dist/modules/resource/index.d.ts +0 -20
  170. package/dist/modules/resource/index.d.ts.map +0 -1
  171. package/dist/modules/resource/index.js +0 -1
  172. package/dist/modules/resource/services/list-children.d.ts +0 -6
  173. package/dist/modules/resource/services/list-children.d.ts.map +0 -1
  174. package/dist/modules/resource/services/list-children.js +0 -1
  175. package/dist/modules/system/index.d.ts +0 -13
  176. package/dist/modules/system/index.d.ts.map +0 -1
  177. package/dist/modules/system/index.js +0 -1
  178. package/dist/modules/utils/get-user-permissions.d.ts +0 -3
  179. package/dist/modules/utils/get-user-permissions.d.ts.map +0 -1
  180. package/dist/modules/utils/get-user-permissions.js +0 -1
@@ -1 +1 @@
1
- (function(_0xaf9c61,_0x6c805e){const _0x2ea681=_0x1bab,_0x1404bb=_0xaf9c61();while(!![]){try{const _0x53c709=-parseInt(_0x2ea681(0x181))/0x1+-parseInt(_0x2ea681(0x17b))/0x2+parseInt(_0x2ea681(0x17e))/0x3+parseInt(_0x2ea681(0x16e))/0x4*(parseInt(_0x2ea681(0x16c))/0x5)+-parseInt(_0x2ea681(0x170))/0x6+parseInt(_0x2ea681(0x180))/0x7+-parseInt(_0x2ea681(0x17d))/0x8*(-parseInt(_0x2ea681(0x171))/0x9);if(_0x53c709===_0x6c805e)break;else _0x1404bb['push'](_0x1404bb['shift']());}catch(_0x4b7581){_0x1404bb['push'](_0x1404bb['shift']());}}}(_0x4d56,0x903ed));function _0x4d56(){const _0x341853=['725kfDkpH','slice','28900xCdTMO','SBLSx','1596090EEJemX','9WbTuSX','length','gQXJm','HLZsp','vCIzC','fields','\x20ORDER\x20BY\x20','sortable','Field\x20is\x20not\x20sortable:\x20','map','1027254QUXmrU','startsWith','5504584PMHIsD','2055456elAPbQ','join','560350MqruDh','1130429dtDcJE','sort','DESC','ASC'];_0x4d56=function(){return _0x341853;};return _0x4d56();}import{fieldColumn,qi}from'./sql.js';import{ValidationError}from'../../../errors.js';function _0x1bab(_0x25df85,_0x6eb39b){_0x25df85=_0x25df85-0x16b;const _0x4d56ed=_0x4d56();let _0x1babd0=_0x4d56ed[_0x25df85];return _0x1babd0;}export function buildSort(_0x358d05,_0x1a33e5){const _0x37c9f2=_0x1bab,_0x9f2ebf={'gQXJm':function(_0x3c6950,_0x199438){return _0x3c6950!==_0x199438;},'SBLSx':function(_0x2fcd33,_0x1d2c1c){return _0x2fcd33!==_0x1d2c1c;},'vCIzC':function(_0x21e272,_0x4220f9,_0x277406){return _0x21e272(_0x4220f9,_0x277406);},'HLZsp':_0x37c9f2(0x16b)};if(!_0x1a33e5?.[_0x37c9f2(0x172)])return'';const _0x31a236=_0x1a33e5[_0x37c9f2(0x17a)](_0x31e488=>{const _0x406b8b=_0x37c9f2,_0x3016ab=_0x31e488[_0x406b8b(0x17c)]('-'),_0x6b0f5c=_0x3016ab?_0x31e488[_0x406b8b(0x16d)](0x1):_0x31e488,_0x348d11=_0x358d05[_0x406b8b(0x176)][_0x6b0f5c];if(!_0x348d11||_0x9f2ebf[_0x406b8b(0x173)](_0x348d11[_0x406b8b(0x182)],!![])&&_0x9f2ebf[_0x406b8b(0x16f)](_0x348d11[_0x406b8b(0x178)],!![]))throw new ValidationError(_0x406b8b(0x179)+_0x6b0f5c);return qi(_0x9f2ebf[_0x406b8b(0x175)](fieldColumn,_0x358d05,_0x6b0f5c))+'\x20'+(_0x3016ab?_0x406b8b(0x183):_0x9f2ebf[_0x406b8b(0x174)]);});return _0x37c9f2(0x177)+_0x31a236[_0x37c9f2(0x17f)](',\x20');}
1
+ (function(_0x4c80b2,_0x1a770e){const _0x5a21c6=_0x2a1b,_0x3b15f9=_0x4c80b2();while(!![]){try{const _0x7d3625=-parseInt(_0x5a21c6(0xc9))/0x1+parseInt(_0x5a21c6(0xd4))/0x2+-parseInt(_0x5a21c6(0xcc))/0x3*(-parseInt(_0x5a21c6(0xca))/0x4)+parseInt(_0x5a21c6(0xc5))/0x5+parseInt(_0x5a21c6(0xd2))/0x6+parseInt(_0x5a21c6(0xcb))/0x7+-parseInt(_0x5a21c6(0xc3))/0x8;if(_0x7d3625===_0x1a770e)break;else _0x3b15f9['push'](_0x3b15f9['shift']());}catch(_0x17d9a3){_0x3b15f9['push'](_0x3b15f9['shift']());}}}(_0x30d4,0x1f03c));import{fieldColumn,qi}from'./sql.js';function _0x2a1b(_0x3c34d6,_0x280e13){_0x3c34d6=_0x3c34d6-0xc1;const _0x30d402=_0x30d4();let _0x2a1bef=_0x30d402[_0x3c34d6];return _0x2a1bef;}import{ValidationError}from'../../../errors.js';function _0x30d4(){const _0x4f81cf=['wuHaF','map','borep','USlfI','DESC','ASC','hxYVJ','startsWith','2836728OUkByk','join','311475XkfkwW','sortable','length','fields','199030dESbKv','4CUYNFy','1576624dlznrU','375303KkiGRw','Field\x20is\x20not\x20sortable:\x20','gVEXa','GNhtd','slice','sort','1467744dfloPV','\x20ORDER\x20BY\x20','46810awISbD'];_0x30d4=function(){return _0x4f81cf;};return _0x30d4();}export function buildSort(_0x508786,_0x6553f3){const _0x457e3d=_0x2a1b,_0x16b6c7={'wuHaF':function(_0x3749b6,_0x3a47d6){return _0x3749b6!==_0x3a47d6;},'borep':function(_0x77cd94,_0x5e7ef8){return _0x77cd94!==_0x5e7ef8;},'USlfI':function(_0x1cf25a,_0x4b38ab){return _0x1cf25a(_0x4b38ab);},'GNhtd':function(_0x1e8cf7,_0x3f944d,_0x32b78b){return _0x1e8cf7(_0x3f944d,_0x32b78b);},'gVEXa':_0x457e3d(0xd9),'hxYVJ':_0x457e3d(0xda)};if(!_0x6553f3?.[_0x457e3d(0xc7)])return'';const _0x39f8a1=_0x6553f3[_0x457e3d(0xd6)](_0x67ea50=>{const _0x4bc383=_0x457e3d,_0x281caf=_0x67ea50[_0x4bc383(0xc2)]('-'),_0x530f6b=_0x281caf?_0x67ea50[_0x4bc383(0xd0)](0x1):_0x67ea50,_0x5b3e23=_0x508786[_0x4bc383(0xc8)][_0x530f6b];if(!_0x5b3e23||_0x16b6c7[_0x4bc383(0xd5)](_0x5b3e23[_0x4bc383(0xd1)],!![])&&_0x16b6c7[_0x4bc383(0xd7)](_0x5b3e23[_0x4bc383(0xc6)],!![]))throw new ValidationError(_0x4bc383(0xcd)+_0x530f6b);return _0x16b6c7[_0x4bc383(0xd8)](qi,_0x16b6c7[_0x4bc383(0xcf)](fieldColumn,_0x508786,_0x530f6b))+'\x20'+(_0x281caf?_0x16b6c7[_0x4bc383(0xce)]:_0x16b6c7[_0x4bc383(0xc1)]);});return _0x457e3d(0xd3)+_0x39f8a1[_0x457e3d(0xc4)](',\x20');}
@@ -1 +1 @@
1
- const _0x143375=_0x479b;(function(_0x18e2bd,_0x472b69){const _0x1012ee=_0x479b,_0x147ac8=_0x18e2bd();while(!![]){try{const _0x310792=-parseInt(_0x1012ee(0x10d))/0x1*(parseInt(_0x1012ee(0x117))/0x2)+parseInt(_0x1012ee(0x11d))/0x3*(parseInt(_0x1012ee(0x124))/0x4)+-parseInt(_0x1012ee(0x109))/0x5*(parseInt(_0x1012ee(0x115))/0x6)+parseInt(_0x1012ee(0x116))/0x7*(-parseInt(_0x1012ee(0x123))/0x8)+parseInt(_0x1012ee(0x10a))/0x9+parseInt(_0x1012ee(0x100))/0xa*(parseInt(_0x1012ee(0x112))/0xb)+parseInt(_0x1012ee(0x102))/0xc;if(_0x310792===_0x472b69)break;else _0x147ac8['push'](_0x147ac8['shift']());}catch(_0x370374){_0x147ac8['push'](_0x147ac8['shift']());}}}(_0x3023,0x619b8));import{ValidationError}from'../../../errors.js';export const quoteIdentifier=_0x240bb3=>'\x22'+_0x240bb3[_0x143375(0x110)](/"/g,'\x22\x22')+'\x22';function _0x3023(){const _0x465192=['push','WFKaj','952DDwkmQ','4TzMxgG','NsUcr','iSAYK','unshift','250EZspFF','pdMdQ','10868244knzJMd','key','GadoL','dxXda','read','readable','WhNBw','2956365lTqCNy','6530238HWzEiM','map','filter','298731UCUZbd','entries','join','replace','Unknown\x20field:\x20','96140xmGhRi','Field\x20is\x20not\x20writable:\x20','jRYLX','6vhfXCs','23331GpgRmO','4qjUvxO','split','fields','writable','column','aeQxL','406179ehynEx','\x20AS\x20','write','DfPKC'];_0x3023=function(){return _0x465192;};return _0x3023();}export const quoteTable=_0x286f94=>_0x286f94[_0x143375(0x118)]('.')[_0x143375(0x10b)](quoteIdentifier)[_0x143375(0x10f)]('.');function _0x479b(_0x3dd4d9,_0x3b353d){_0x3dd4d9=_0x3dd4d9-0x100;const _0x3023ba=_0x3023();let _0x479bc5=_0x3023ba[_0x3dd4d9];return _0x479bc5;}export function fieldColumn(_0xd70f42,_0x1e3503){const _0x15ce32=_0x143375,_0x323f1d={'GadoL':function(_0x31c690,_0x4f21b1){return _0x31c690(_0x4f21b1);},'dxXda':function(_0x2523c9,_0x4ebd71){return _0x2523c9===_0x4ebd71;},'aeQxL':function(_0x1b5429,_0x305c36){return _0x1b5429!==_0x305c36;},'WFKaj':_0x15ce32(0x114),'NsUcr':_0x15ce32(0x108)};if(_0x323f1d[_0x15ce32(0x105)](_0x1e3503,_0xd70f42[_0x15ce32(0x103)]))return _0xd70f42[_0x15ce32(0x103)];const _0x1b8f5a=_0xd70f42[_0x15ce32(0x119)][_0x1e3503];if(!_0x1b8f5a){if(_0x323f1d[_0x15ce32(0x11c)](_0x323f1d[_0x15ce32(0x122)],_0x323f1d[_0x15ce32(0x125)]))throw new ValidationError(_0x15ce32(0x111)+_0x1e3503);else{const _0x3a5e55=_0x17b860[_0x15ce32(0x10e)](_0x2a127e[_0x15ce32(0x119)])[_0x15ce32(0x10c)](([,_0x51c9de])=>_0x51c9de[_0x15ce32(0x106)]!==![]&&_0x51c9de[_0x15ce32(0x107)]!==![])[_0x15ce32(0x10b)](([_0x486ca6,_0x44200b])=>_0x358ee3(_0x44200b[_0x15ce32(0x11b)]??_0x486ca6)+_0x15ce32(0x11e)+_0x5dcb4f(_0x486ca6));return!_0x5744ca[_0x15ce32(0x119)][_0x31ada3[_0x15ce32(0x103)]]&&_0x3a5e55[_0x15ce32(0x127)](_0x323f1d[_0x15ce32(0x104)](_0x3e7e61,_0x3509bf[_0x15ce32(0x103)])),_0x3a5e55;}}return _0x1b8f5a[_0x15ce32(0x11b)]??_0x1e3503;}export function readableFields(_0x2ded07){const _0x4a1ae0=_0x143375,_0x2bad85={'pdMdQ':function(_0x583fae,_0x4044c2){return _0x583fae(_0x4044c2);}},_0x7bfe07=Object[_0x4a1ae0(0x10e)](_0x2ded07[_0x4a1ae0(0x119)])[_0x4a1ae0(0x10c)](([,_0x33639d])=>_0x33639d[_0x4a1ae0(0x106)]!==![]&&_0x33639d[_0x4a1ae0(0x107)]!==![])[_0x4a1ae0(0x10b)](([_0x50bb84,_0x4abe7f])=>quoteIdentifier(_0x4abe7f[_0x4a1ae0(0x11b)]??_0x50bb84)+_0x4a1ae0(0x11e)+quoteIdentifier(_0x50bb84));return!_0x2ded07[_0x4a1ae0(0x119)][_0x2ded07[_0x4a1ae0(0x103)]]&&_0x7bfe07[_0x4a1ae0(0x127)](_0x2bad85[_0x4a1ae0(0x101)](quoteIdentifier,_0x2ded07[_0x4a1ae0(0x103)])),_0x7bfe07;}export function writableData(_0x249f8a,_0x51e682){const _0xcf856e=_0x143375,_0x1bd721={};_0x1bd721[_0xcf856e(0x120)]=function(_0x2345aa,_0x41c792){return _0x2345aa===_0x41c792;},_0x1bd721[_0xcf856e(0x126)]=function(_0x5a1a61,_0x4dcbe0){return _0x5a1a61===_0x4dcbe0;};const _0x676a04=_0x1bd721,_0x44087b=[];for(const [_0xcd42,_0x29af47]of Object[_0xcf856e(0x10e)](_0x51e682)){const _0x14b5a5=_0x249f8a[_0xcf856e(0x119)][_0xcd42];if(!_0x14b5a5||_0x676a04[_0xcf856e(0x120)](_0x14b5a5[_0xcf856e(0x11f)],![])||_0x676a04[_0xcf856e(0x126)](_0x14b5a5[_0xcf856e(0x11a)],![]))throw new ValidationError(_0xcf856e(0x113)+_0xcd42);_0x44087b[_0xcf856e(0x121)]([_0x14b5a5[_0xcf856e(0x11b)]??_0xcd42,_0x29af47]);}return _0x44087b;}export const qi=quoteIdentifier;export const qt=quoteTable;
1
+ const _0x2838d2=_0x3531;(function(_0x526798,_0xc7d034){const _0x493971=_0x3531,_0x7cb80b=_0x526798();while(!![]){try{const _0x513f42=parseInt(_0x493971(0x1ec))/0x1+parseInt(_0x493971(0x1fc))/0x2+parseInt(_0x493971(0x1e3))/0x3+-parseInt(_0x493971(0x1eb))/0x4*(parseInt(_0x493971(0x1ef))/0x5)+parseInt(_0x493971(0x1dc))/0x6+parseInt(_0x493971(0x1e6))/0x7+parseInt(_0x493971(0x1dd))/0x8*(-parseInt(_0x493971(0x1f8))/0x9);if(_0x513f42===_0xc7d034)break;else _0x7cb80b['push'](_0x7cb80b['shift']());}catch(_0x16d1a4){_0x7cb80b['push'](_0x7cb80b['shift']());}}}(_0x2080,0x3c7ef));import{ValidationError}from'../../../errors.js';export const quoteIdentifier=_0x44b8ca=>'\x22'+_0x44b8ca[_0x2838d2(0x1f1)](/"/g,'\x22\x22')+'\x22';function _0x2080(){const _0x6026a1=['rMJho','Unknown\x20field:\x20','DCnzE','key','vEiRj','343701oQlSBh','filter','write','PQJXL','652444FIdKRG','oHmLB','unshift','readable','WzPdz','WZfFj','1761528cwuAFE','168XFnIER','join','yYMLe','KcIBi','Field\x20is\x20not\x20writable:\x20','writable','996924ZtZyGr','entries','fields','496356xkszcH','GsiAR','\x20AS\x20','read','map','165708DsIAcG','358150pbEvak','CwusY','split','40iYEQcB','column','replace','push'];_0x2080=function(){return _0x6026a1;};return _0x2080();}export const quoteTable=_0x21a9f0=>_0x21a9f0[_0x2838d2(0x1ee)]('.')[_0x2838d2(0x1ea)](quoteIdentifier)[_0x2838d2(0x1de)]('.');export function fieldColumn(_0xde8a38,_0x594b01){const _0x6b236f=_0x2838d2,_0x5409cc={};_0x5409cc[_0x6b236f(0x1fd)]=function(_0x4a9808,_0x5bccd){return _0x4a9808===_0x5bccd;};const _0x32469b=_0x5409cc;if(_0x32469b[_0x6b236f(0x1fd)](_0x594b01,_0xde8a38[_0x6b236f(0x1f6)]))return _0xde8a38[_0x6b236f(0x1f6)];const _0xe5e81=_0xde8a38[_0x6b236f(0x1e5)][_0x594b01];if(!_0xe5e81)throw new ValidationError(_0x6b236f(0x1f4)+_0x594b01);return _0xe5e81[_0x6b236f(0x1f0)]??_0x594b01;}function _0x3531(_0xc47018,_0x551ece){_0xc47018=_0xc47018-0x1dc;const _0x20803a=_0x2080();let _0x35314d=_0x20803a[_0xc47018];return _0x35314d;}export function readableFields(_0x4bd0ab){const _0x9bd111=_0x2838d2,_0xde8ed6={};_0xde8ed6[_0x9bd111(0x1fb)]=function(_0x420edf,_0xe31b7b){return _0x420edf===_0xe31b7b;},_0xde8ed6[_0x9bd111(0x1e0)]=function(_0x5e78c3,_0x9216f3){return _0x5e78c3===_0x9216f3;},_0xde8ed6[_0x9bd111(0x1ed)]=_0x9bd111(0x1f5);const _0x4e1f10=_0xde8ed6,_0x1b4bb2=Object[_0x9bd111(0x1e4)](_0x4bd0ab[_0x9bd111(0x1e5)])[_0x9bd111(0x1f9)](([,_0x3183f0])=>_0x3183f0[_0x9bd111(0x1e9)]!==![]&&_0x3183f0[_0x9bd111(0x1ff)]!==![])[_0x9bd111(0x1ea)](([_0x475da1,_0xaa9072])=>quoteIdentifier(_0xaa9072[_0x9bd111(0x1f0)]??_0x475da1)+_0x9bd111(0x1e8)+quoteIdentifier(_0x475da1));if(!_0x4bd0ab[_0x9bd111(0x1e5)][_0x4bd0ab[_0x9bd111(0x1f6)]]){if(_0x4e1f10[_0x9bd111(0x1ed)]!==_0x4e1f10[_0x9bd111(0x1ed)]){const _0x1047b3=_0x52cfbc[_0x9bd111(0x1e5)][_0x85f1f1];if(!_0x1047b3||_0x4e1f10[_0x9bd111(0x1fb)](_0x1047b3[_0x9bd111(0x1fa)],![])||_0x4e1f10[_0x9bd111(0x1e0)](_0x1047b3[_0x9bd111(0x1e2)],![]))throw new _0x4b9f7e(_0x9bd111(0x1e1)+_0x5d2b21);_0x4bf34a[_0x9bd111(0x1f2)]([_0x1047b3[_0x9bd111(0x1f0)]??_0x3c185a,_0x46d947]);}else _0x1b4bb2[_0x9bd111(0x1fe)](quoteIdentifier(_0x4bd0ab[_0x9bd111(0x1f6)]));}return _0x1b4bb2;}export function writableData(_0xf6c7ec,_0x1eb168){const _0x2a4275=_0x2838d2,_0x1d01d8={'yYMLe':function(_0x1f99d9,_0x20542f){return _0x1f99d9(_0x20542f);},'rMJho':function(_0x38331f,_0x3e4d4a){return _0x38331f===_0x3e4d4a;},'GsiAR':_0x2a4275(0x1f7),'WzPdz':function(_0xf82900,_0x610b1){return _0xf82900===_0x610b1;}},_0x4b77ec=[];for(const [_0x2c3c85,_0x248896]of Object[_0x2a4275(0x1e4)](_0x1eb168)){if(_0x1d01d8[_0x2a4275(0x1f3)](_0x2a4275(0x201),_0x1d01d8[_0x2a4275(0x1e7)])){const _0x2830df=_0x49b4a9[_0x2a4275(0x1e4)](_0x5335a6[_0x2a4275(0x1e5)])[_0x2a4275(0x1f9)](([,_0x5dd8b8])=>_0x5dd8b8[_0x2a4275(0x1e9)]!==![]&&_0x5dd8b8[_0x2a4275(0x1ff)]!==![])[_0x2a4275(0x1ea)](([_0x4b8fa8,_0x5409b8])=>_0x3cca4c(_0x5409b8[_0x2a4275(0x1f0)]??_0x4b8fa8)+_0x2a4275(0x1e8)+_0x31d43d(_0x4b8fa8));return!_0x37bd54[_0x2a4275(0x1e5)][_0xd20d84[_0x2a4275(0x1f6)]]&&_0x2830df[_0x2a4275(0x1fe)](Mmakrz[_0x2a4275(0x1df)](_0x3a9117,_0x525489[_0x2a4275(0x1f6)])),_0x2830df;}else{const _0x115e07=_0xf6c7ec[_0x2a4275(0x1e5)][_0x2c3c85];if(!_0x115e07||_0x1d01d8[_0x2a4275(0x200)](_0x115e07[_0x2a4275(0x1fa)],![])||_0x1d01d8[_0x2a4275(0x200)](_0x115e07[_0x2a4275(0x1e2)],![]))throw new ValidationError(_0x2a4275(0x1e1)+_0x2c3c85);_0x4b77ec[_0x2a4275(0x1f2)]([_0x115e07[_0x2a4275(0x1f0)]??_0x2c3c85,_0x248896]);}}return _0x4b77ec;}export const qi=quoteIdentifier;export const qt=quoteTable;
@@ -1 +1 @@
1
- const _0x534946=_0x53ee;(function(_0x4219e5,_0x38b0f0){const _0x3f3f92=_0x53ee,_0x2726d7=_0x4219e5();while(!![]){try{const _0x59c324=parseInt(_0x3f3f92(0x75))/0x1*(-parseInt(_0x3f3f92(0x80))/0x2)+-parseInt(_0x3f3f92(0x7c))/0x3*(parseInt(_0x3f3f92(0x79))/0x4)+-parseInt(_0x3f3f92(0x7e))/0x5+parseInt(_0x3f3f92(0x71))/0x6+-parseInt(_0x3f3f92(0x7a))/0x7+-parseInt(_0x3f3f92(0x74))/0x8*(parseInt(_0x3f3f92(0x7d))/0x9)+parseInt(_0x3f3f92(0x7b))/0xa*(parseInt(_0x3f3f92(0x77))/0xb);if(_0x59c324===_0x38b0f0)break;else _0x2726d7['push'](_0x2726d7['shift']());}catch(_0x1c182c){_0x2726d7['push'](_0x2726d7['shift']());}}}(_0x5e2d,0x1c26d));const getIP=_0x48df65=>(_0x48df65[_0x534946(0x72)]?.[_0x534946(0x82)]||_0x48df65[_0x534946(0x72)]?.[_0x534946(0x76)]||_0x48df65['ip']||_0x48df65[_0x534946(0x73)]?.[_0x534946(0x78)]||'')[_0x534946(0x7f)](':')[_0x534946(0x81)]();export default getIP;function _0x53ee(_0x11fcc2,_0x2e9efa){_0x11fcc2=_0x11fcc2-0x71;const _0x5e2d9a=_0x5e2d();let _0x53eef7=_0x5e2d9a[_0x11fcc2];return _0x53eef7;}function _0x5e2d(){const _0x10143e=['x-real-ip','1248018hRMufi','headers','connection','692368FPkyFn','3781HOorjX','x-forwarded-for','22dCwDvn','remoteAddress','8CVutEn','1058743wpnPfu','2138440txlGek','12363eGQSTW','9IyxCjE','672240Xgdnlx','split','74AnqVab','pop'];_0x5e2d=function(){return _0x10143e;};return _0x5e2d();}
1
+ function _0x5b19(){const _0x3cb3ff=['remoteAddress','290463ykJHIB','2876502wFJwsO','2zWVUqg','pop','8yQdbFy','x-forwarded-for','429889dcFLGt','connection','654608RvttZg','2453245tMJkYI','2497900KPTXJs','headers','split','35SDhyeT','x-real-ip','553662ddrMcZ'];_0x5b19=function(){return _0x3cb3ff;};return _0x5b19();}const _0x1e0cd2=_0x3e9e;function _0x3e9e(_0x59a0ab,_0x1b3f34){_0x59a0ab=_0x59a0ab-0x74;const _0x5b19f5=_0x5b19();let _0x3e9e1e=_0x5b19f5[_0x59a0ab];return _0x3e9e1e;}(function(_0x1b99f0,_0x363513){const _0x391a78=_0x3e9e,_0x370e02=_0x1b99f0();while(!![]){try{const _0x3d57ad=-parseInt(_0x391a78(0x80))/0x1*(-parseInt(_0x391a78(0x7c))/0x2)+parseInt(_0x391a78(0x7a))/0x3*(parseInt(_0x391a78(0x7e))/0x4)+-parseInt(_0x391a78(0x83))/0x5+-parseInt(_0x391a78(0x7b))/0x6+-parseInt(_0x391a78(0x76))/0x7*(-parseInt(_0x391a78(0x82))/0x8)+-parseInt(_0x391a78(0x78))/0x9+parseInt(_0x391a78(0x84))/0xa;if(_0x3d57ad===_0x363513)break;else _0x370e02['push'](_0x370e02['shift']());}catch(_0x50fddb){_0x370e02['push'](_0x370e02['shift']());}}}(_0x5b19,0x3d3f3));const getIP=_0x28d53a=>(_0x28d53a[_0x1e0cd2(0x74)]?.[_0x1e0cd2(0x77)]||_0x28d53a[_0x1e0cd2(0x74)]?.[_0x1e0cd2(0x7f)]||_0x28d53a['ip']||_0x28d53a[_0x1e0cd2(0x81)]?.[_0x1e0cd2(0x79)]||'')[_0x1e0cd2(0x75)](':')[_0x1e0cd2(0x7d)]();export default getIP;
package/dist/type.d.ts CHANGED
@@ -19,5 +19,19 @@ type AccessMetadata = {
19
19
  };
20
20
  /** Повна схема Fastify і метадані маршруту API. */
21
21
  export type ApiRouteSchema = FastifySchema & AccessMetadata;
22
+ /** Короткий опис зареєстрованого HTTP API-маршруту. */
23
+ export interface ApiRouteShort {
24
+ method: string;
25
+ endpoint: string;
26
+ package: string;
27
+ }
28
+ /** Розширений опис маршруту з OpenAPI та access metadata. */
29
+ export interface ApiRoute extends ApiRouteShort {
30
+ tags: string[];
31
+ summary: string;
32
+ description: string;
33
+ access: RouteAccess;
34
+ permissions: RoutePermission[];
35
+ }
22
36
  export {};
23
37
  //# sourceMappingURL=type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,2CAA2C;AAC3C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AACtD,oFAAoF;AACpF,MAAM,MAAM,eAAe,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;AAGpD,KAAK,cAAc,GAAG;IACpB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,MAAM,EAAE,WAAW,CAAC;IACpB,2FAA2F;IAC3F,WAAW,EAAE,eAAe,EAAE,CAAC;CAChC,CAAC;AAEF,mDAAmD;AACnD,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,cAAc,CAAC"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,2CAA2C;AAC3C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AACtD,oFAAoF;AACpF,MAAM,MAAM,eAAe,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;AAGpD,KAAK,cAAc,GAAG;IACpB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,MAAM,EAAE,WAAW,CAAC;IACpB,2FAA2F;IAC3F,WAAW,EAAE,eAAe,EAAE,CAAC;CAChC,CAAC;AAEF,mDAAmD;AACnD,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,cAAc,CAAC;AAE5D,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,6DAA6D;AAC7D,MAAM,WAAW,QAAS,SAAQ,aAAa;IAC7C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,eAAe,EAAE,CAAC;CAChC"}
@@ -6,29 +6,29 @@ AS $$
6
6
  SELECT encode(gen_random_bytes(6), 'hex')::text
7
7
  $$;
8
8
 
9
+ DROP SCHEMA IF EXISTS admin CASCADE;
9
10
  CREATE SCHEMA IF NOT EXISTS admin;
10
11
 
11
12
 
12
13
  CREATE TABLE IF NOT EXISTS admin.users (
13
14
  uid text PRIMARY KEY DEFAULT next_id(),
14
15
  login text,
15
- password text NOT NULL DEFAULT '',
16
+ password_hash text,
16
17
  first_name text,
17
18
  middle_name text,
18
19
  last_name text,
19
20
  email text,
20
21
  phone text,
21
22
  avatar text,
23
+ twofa boolean NOT NULL DEFAULT false,
22
24
  enabled boolean DEFAULT true,
23
25
  user_personal_code text,
24
26
  last_activity_date timestamptz,
25
- user_type text NOT NULL DEFAULT 'regular',
26
- salt text,
27
+ user_type text NOT NULL DEFAULT 'regular',
27
28
  created_by text,
28
29
  updated_by text,
29
30
  created_at timestamp NOT NULL DEFAULT now(),
30
- updated_at timestamp NOT NULL DEFAULT now(),
31
- twofa boolean NOT NULL DEFAULT false,
31
+ updated_at timestamp NOT NULL DEFAULT now(),
32
32
  UNIQUE (user_personal_code)
33
33
  );
34
34
 
@@ -107,18 +107,19 @@ CREATE TABLE IF NOT EXISTS admin.user_roles (
107
107
 
108
108
  CREATE TABLE IF NOT EXISTS admin.role_access (
109
109
  access_id text PRIMARY KEY DEFAULT next_id(),
110
- route_id text NOT NULL,
110
+
111
111
  role_id text REFERENCES admin.roles(role_id),
112
- user_uid text,
112
+ user_uid text REFERENCES admin.users(uid),
113
113
  scope text,
114
114
  actions text[],
115
- resource_id text,
115
+ resource text,
116
116
 
117
- created_by text,
118
- updated_by text,
117
+ created_by text REFERENCES admin.users(uid) ,
118
+ updated_by text REFERENCES admin.users(uid) ,
119
119
  created_at timestamp NOT NULL DEFAULT now(),
120
120
  updated_at timestamp NOT NULL DEFAULT now(),
121
- UNIQUE (route_id, user_uid, role_id)
121
+ UNIQUE (resource, user_uid),
122
+ UNIQUE (resource, role_id)
122
123
  );
123
124
 
124
125
 
@@ -131,8 +132,8 @@ CREATE TABLE IF NOT EXISTS admin.dictionaries (
131
132
  source text NOT NULL DEFAULT 'git' CHECK (source IN ('git', 'custom')),
132
133
  editable boolean NOT NULL DEFAULT false,
133
134
  system boolean NOT NULL DEFAULT false,
134
- created_by text,
135
- updated_by text,
135
+ created_by text REFERENCES admin.users(uid) ,
136
+ updated_by text REFERENCES admin.users(uid) ,
136
137
  created_at timestamp NOT NULL DEFAULT now(),
137
138
  updated_at timestamp NOT NULL DEFAULT now()
138
139
  );
@@ -150,6 +151,8 @@ CREATE TABLE IF NOT EXISTS admin.dictionary_items (
150
151
  active boolean NOT NULL DEFAULT true,
151
152
  system boolean NOT NULL DEFAULT false,
152
153
  metadata jsonb,
154
+ created_by text REFERENCES admin.users(uid) ,
155
+ updated_by text REFERENCES admin.users(uid) ,
153
156
  created_at timestamp NOT NULL DEFAULT now(),
154
157
  updated_at timestamp NOT NULL DEFAULT now(),
155
158
  UNIQUE (dictionary_id, code)
@@ -161,9 +164,9 @@ CREATE TABLE IF NOT EXISTS admin.notes (
161
164
  resource text NOT NULL,
162
165
  resource_id text NOT NULL,
163
166
  body text NOT NULL,
164
- created_by text,
167
+ created_by text REFERENCES admin.users(uid) ,
165
168
  created_at timestamptz DEFAULT now(),
166
- updated_by text,
169
+ updated_by text REFERENCES admin.users(uid) ,
167
170
  updated_at timestamptz DEFAULT now()
168
171
  );
169
172
 
@@ -184,9 +187,9 @@ CREATE TABLE IF NOT EXISTS admin.files (
184
187
  file_path text,
185
188
  verified boolean DEFAULT false,
186
189
  resized boolean,
187
- created_by text,
190
+ created_by text REFERENCES admin.users(uid) ,
188
191
  created_at timestamptz DEFAULT now(),
189
- updated_by text,
192
+ updated_by text REFERENCES admin.users(uid) ,
190
193
  updated_at timestamptz default now()
191
194
  );
192
195
 
@@ -199,9 +202,9 @@ CREATE TABLE IF NOT EXISTS admin.settings (
199
202
  key text NOT NULL,
200
203
  value jsonb,
201
204
 
202
- updated_by text,
205
+ updated_by text REFERENCES admin.users(uid) ,
203
206
  updated_at timestamptz NOT NULL DEFAULT now(),
204
- created_by text,
207
+ created_by text REFERENCES admin.users(uid) ,
205
208
  created_at timestamptz NOT NULL DEFAULT now()
206
209
  );
207
210
 
@@ -1,18 +1,18 @@
1
- CREATE SCHEMA IF NOT EXISTS admin;
2
-
3
- DO $$
4
- BEGIN
5
- IF to_regclass('crm.notes') IS NOT NULL
6
- AND to_regclass('admin.notes') IS NULL THEN
7
- ALTER TABLE crm.notes SET SCHEMA admin;
8
- END IF;
9
-
10
- IF to_regclass('crm.files') IS NOT NULL
11
- AND to_regclass('admin.files') IS NULL THEN
12
- ALTER TABLE crm.files SET SCHEMA admin;
13
- END IF;
14
- END
15
- $$;
16
-
17
- ALTER INDEX IF EXISTS crm_notes_resource_idx RENAME TO admin_notes_resource_idx;
1
+ CREATE SCHEMA IF NOT EXISTS admin;
2
+
3
+ DO $$
4
+ BEGIN
5
+ IF to_regclass('crm.notes') IS NOT NULL
6
+ AND to_regclass('admin.notes') IS NULL THEN
7
+ ALTER TABLE crm.notes SET SCHEMA admin;
8
+ END IF;
9
+
10
+ IF to_regclass('crm.files') IS NOT NULL
11
+ AND to_regclass('admin.files') IS NULL THEN
12
+ ALTER TABLE crm.files SET SCHEMA admin;
13
+ END IF;
14
+ END
15
+ $$;
16
+
17
+ ALTER INDEX IF EXISTS crm_notes_resource_idx RENAME TO admin_notes_resource_idx;
18
18
  ALTER INDEX IF EXISTS crm_notes_uid_idx RENAME TO admin_notes_uid_idx;
@@ -1,19 +1,19 @@
1
- CREATE SCHEMA IF NOT EXISTS admin;
2
-
3
- CREATE TABLE IF NOT EXISTS admin.settings (
4
- id text PRIMARY KEY DEFAULT next_id(),
5
- resource text NOT NULL DEFAULT 'system',
6
- resource_id text,
7
- key text NOT NULL,
8
- value jsonb,
9
- updated_by text,
10
- updated_at timestamptz NOT NULL DEFAULT now(),
11
- created_by text,
12
- created_at timestamptz NOT NULL DEFAULT now()
13
- );
14
-
15
- DROP INDEX IF EXISTS settings_resource_key_uidx;
16
-
17
- CREATE UNIQUE INDEX settings_resource_key_uidx
18
- ON admin.settings (resource, resource_id, key)
1
+ CREATE SCHEMA IF NOT EXISTS admin;
2
+
3
+ CREATE TABLE IF NOT EXISTS admin.settings (
4
+ id text PRIMARY KEY DEFAULT next_id(),
5
+ resource text NOT NULL DEFAULT 'system',
6
+ resource_id text,
7
+ key text NOT NULL,
8
+ value jsonb,
9
+ updated_by text,
10
+ updated_at timestamptz NOT NULL DEFAULT now(),
11
+ created_by text,
12
+ created_at timestamptz NOT NULL DEFAULT now()
13
+ );
14
+
15
+ DROP INDEX IF EXISTS settings_resource_key_uidx;
16
+
17
+ CREATE UNIQUE INDEX settings_resource_key_uidx
18
+ ON admin.settings (resource, resource_id, key)
19
19
  NULLS NOT DISTINCT;
@@ -0,0 +1,43 @@
1
+ ALTER TABLE admin.users
2
+ ADD CONSTRAINT users_created_by_fkey
3
+ FOREIGN KEY (created_by) REFERENCES admin.users(uid) ON DELETE SET NULL,
4
+ ADD CONSTRAINT users_updated_by_fkey
5
+ FOREIGN KEY (updated_by) REFERENCES admin.users(uid) ON DELETE SET NULL;
6
+
7
+ ALTER TABLE admin.user_roles
8
+ ADD CONSTRAINT user_roles_created_by_fkey
9
+ FOREIGN KEY (created_by) REFERENCES admin.users(uid) ON DELETE SET NULL,
10
+ ADD CONSTRAINT user_roles_updated_by_fkey
11
+ FOREIGN KEY (updated_by) REFERENCES admin.users(uid) ON DELETE SET NULL;
12
+
13
+ ALTER TABLE admin.role_access
14
+ ADD CONSTRAINT role_access_user_uid_fkey
15
+ FOREIGN KEY (user_uid) REFERENCES admin.users(uid) ON DELETE CASCADE,
16
+ ADD CONSTRAINT role_access_created_by_fkey
17
+ FOREIGN KEY (created_by) REFERENCES admin.users(uid) ON DELETE SET NULL,
18
+ ADD CONSTRAINT role_access_updated_by_fkey
19
+ FOREIGN KEY (updated_by) REFERENCES admin.users(uid) ON DELETE SET NULL;
20
+
21
+ ALTER TABLE admin.dictionaries
22
+ ADD CONSTRAINT dictionaries_created_by_fkey
23
+ FOREIGN KEY (created_by) REFERENCES admin.users(uid) ON DELETE SET NULL,
24
+ ADD CONSTRAINT dictionaries_updated_by_fkey
25
+ FOREIGN KEY (updated_by) REFERENCES admin.users(uid) ON DELETE SET NULL;
26
+
27
+ ALTER TABLE admin.notes
28
+ ADD CONSTRAINT notes_created_by_fkey
29
+ FOREIGN KEY (created_by) REFERENCES admin.users(uid) ON DELETE SET NULL,
30
+ ADD CONSTRAINT notes_updated_by_fkey
31
+ FOREIGN KEY (updated_by) REFERENCES admin.users(uid) ON DELETE SET NULL;
32
+
33
+ ALTER TABLE admin.files
34
+ ADD CONSTRAINT files_created_by_fkey
35
+ FOREIGN KEY (created_by) REFERENCES admin.users(uid) ON DELETE SET NULL,
36
+ ADD CONSTRAINT files_updated_by_fkey
37
+ FOREIGN KEY (updated_by) REFERENCES admin.users(uid) ON DELETE SET NULL;
38
+
39
+ ALTER TABLE admin.settings
40
+ ADD CONSTRAINT settings_created_by_fkey
41
+ FOREIGN KEY (created_by) REFERENCES admin.users(uid) ON DELETE SET NULL,
42
+ ADD CONSTRAINT settings_updated_by_fkey
43
+ FOREIGN KEY (updated_by) REFERENCES admin.users(uid) ON DELETE SET NULL;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengis/fcore",
3
- "version": "0.0.1-beta.3",
3
+ "version": "0.0.1-beta.5",
4
4
  "description": "Reusable backend foundation for OpenGIS Node.js applications",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -26,7 +26,10 @@
26
26
  }
27
27
  },
28
28
  "bin": {
29
- "fcore-migrate": "./dist/migrations/cli.js"
29
+ "fcore-migrate": "./dist/migrations/cli.js",
30
+ "fcore-adduser": "./dist/modules/auth/adduser-cli.js",
31
+ "fcore-passwd": "./dist/modules/auth/passwd-cli.js",
32
+ "fcore-permission": "./dist/modules/auth/permission-cli.js"
30
33
  },
31
34
  "scripts": {
32
35
  "clean": "rm -rf dist",
@@ -34,9 +37,11 @@
34
37
  "typecheck": "tsc -p tsconfig.json --noEmit",
35
38
  "test": "node --test --import tsx test/**/*.test.ts",
36
39
  "test-env": "node --env-file=.env.test --test --import tsx test/**/env.test.ts",
37
- "dev": "tsx server.ts",
38
- "migrate": "node ./dist/migrations/cli.js",
39
- "migration": "node --import tsx src/migrations/cli.ts",
40
+ "dev": "bun ./server.ts",
41
+ "adduser": "node --import tsx ./src/modules/auth/adduser-cli.ts",
42
+ "passwd": "node --import tsx ./src/modules/auth/passwd-cli.ts",
43
+ "permission": "node --import tsx ./src/modules/auth/permission-cli.ts",
44
+ "migrate": "node --import tsx src/migrations/cli.ts",
40
45
  "migration-test": "node --env-file=.env.test --import tsx src/migrations/cli.ts",
41
46
  "prepublishOnly": "npm run build",
42
47
  "prepublishOnly1": "npm run build && npm test",
@@ -58,7 +63,6 @@
58
63
  "@fastify/session": "11.1.2",
59
64
  "apache-crypt": "1.2.6",
60
65
  "dotenv": "17.4.2",
61
- "fastify-plugin": "6.0.0",
62
66
  "fastify-session-redis-store": "7.1.2",
63
67
  "file-type": "22.0.2",
64
68
  "ioredis": "6.0.0",
@@ -1,9 +0,0 @@
1
- /**
2
- * Exports the public surface of this FCore module.
3
- */
4
- export * from './route.js';
5
- export * from './services/login.js';
6
- export * from './services/logout.js';
7
- export * from './services/get-current-user.js';
8
- export * from './services/verify-two-factor.js';
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC"}
@@ -1 +0,0 @@
1
- (function(_0x244924,_0x24cd5d){var _0x5d6e87=_0x49bf,_0x2b884f=_0x244924();while(!![]){try{var _0x251ad4=-parseInt(_0x5d6e87(0x157))/0x1+-parseInt(_0x5d6e87(0x155))/0x2*(parseInt(_0x5d6e87(0x154))/0x3)+parseInt(_0x5d6e87(0x152))/0x4*(parseInt(_0x5d6e87(0x153))/0x5)+-parseInt(_0x5d6e87(0x150))/0x6+parseInt(_0x5d6e87(0x14f))/0x7+-parseInt(_0x5d6e87(0x14e))/0x8*(-parseInt(_0x5d6e87(0x151))/0x9)+parseInt(_0x5d6e87(0x156))/0xa;if(_0x251ad4===_0x24cd5d)break;else _0x2b884f['push'](_0x2b884f['shift']());}catch(_0x24ad85){_0x2b884f['push'](_0x2b884f['shift']());}}}(_0x2b97,0xa8b45));export*from'./route.js';export*from'./services/login.js';function _0x49bf(_0x1d91bc,_0x3bdaef){_0x1d91bc=_0x1d91bc-0x14e;var _0x2b9783=_0x2b97();var _0x49bfa9=_0x2b9783[_0x1d91bc];return _0x49bfa9;}export*from'./services/logout.js';function _0x2b97(){var _0x12ba30=['15LYSmGK','1956057uXEsmE','2xhzcqf','7155410DLSgIe','1359085iceARM','8bcZIpb','8286978pQoleU','5703618oxdmaD','8207127SdPIDk','1121896Ytaldf'];_0x2b97=function(){return _0x12ba30;};return _0x2b97();}export*from'./services/get-current-user.js';export*from'./services/verify-two-factor.js';
@@ -1,10 +0,0 @@
1
- import { ContextDependencies } from "../../../context.js";
2
- export default function login({ ip, login, password }: {
3
- ip: string;
4
- login: string;
5
- password: string;
6
- }, { config, pg, logger, redis, }: Pick<ContextDependencies, "config" | "pg" | "logger" | "redis">): Promise<{
7
- user: any;
8
- redirectUrl: string;
9
- }>;
10
- //# sourceMappingURL=login.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../../src/modules/auth/services/login.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,wBAA8B,KAAK,CACjC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EACxE,EACE,MAAM,EACN,EAAE,EACF,MAAM,EACN,KAAK,GACN,EAAE,IAAI,CAAC,mBAAmB,EAAE,QAAQ,GAAG,IAAI,GAAG,QAAQ,GAAG,OAAO,CAAC;;;GAiCnE"}
@@ -1 +0,0 @@
1
- function _0xbcf0(_0x4cd40c,_0x2a871b){_0x4cd40c=_0x4cd40c-0x13b;const _0x26c7d1=_0x26c7();let _0xbcf045=_0x26c7d1[_0x4cd40c];return _0xbcf045;}(function(_0x464c39,_0x22a549){const _0x1f5725=_0xbcf0,_0x2d8c3b=_0x464c39();while(!![]){try{const _0x3fa2ee=-parseInt(_0x1f5725(0x14f))/0x1+-parseInt(_0x1f5725(0x141))/0x2+parseInt(_0x1f5725(0x148))/0x3+-parseInt(_0x1f5725(0x144))/0x4*(-parseInt(_0x1f5725(0x14d))/0x5)+-parseInt(_0x1f5725(0x13f))/0x6+-parseInt(_0x1f5725(0x156))/0x7*(parseInt(_0x1f5725(0x13d))/0x8)+parseInt(_0x1f5725(0x13e))/0x9;if(_0x3fa2ee===_0x22a549)break;else _0x2d8c3b['push'](_0x2d8c3b['shift']());}catch(_0x4d18c3){_0x2d8c3b['push'](_0x2d8c3b['shift']());}}}(_0x26c7,0x1c6fc));import _0x1b6e92 from'./verifyPassword.js';export default async function login({ip:_0x24073d,login:_0x28506a,password:_0x508ef3},{config:_0x1fd033,pg:_0x32332b,logger:_0x4c4b40,redis:_0x17c4a9}){const _0xcb7fc3=_0xbcf0,_0x1c1897={'KfsYq':_0xcb7fc3(0x140),'ZTWgv':function(_0x488cec,_0x8cae3e){return _0x488cec(_0x8cae3e);},'viQrh':_0xcb7fc3(0x14a),'XAPIo':_0xcb7fc3(0x14b)};if(!_0x32332b)throw Error(_0x1c1897[_0xcb7fc3(0x142)]);if(!_0x17c4a9)throw _0x1c1897[_0xcb7fc3(0x147)](Error,_0xcb7fc3(0x155));const _0x606c6e={};_0x606c6e[_0xcb7fc3(0x13c)]=_0x28506a,_0x606c6e[_0xcb7fc3(0x153)]=_0x508ef3,_0x606c6e['ip']=_0x24073d;const _0xf0762d={};_0xf0762d['pg']=_0x32332b,_0xf0762d[_0xcb7fc3(0x150)]=_0x4c4b40;const {user:_0x3cecd5}=await _0x1b6e92(_0x606c6e,_0xf0762d);if(!_0x3cecd5)throw new Error(_0x1c1897[_0xcb7fc3(0x14c)]);_0x4c4b40[_0xcb7fc3(0x157)](_0x1c1897[_0xcb7fc3(0x13b)]);const _0x5a14f0=_0x3cecd5[_0xcb7fc3(0x145)]?_0x1fd033[_0xcb7fc3(0x151)][_0xcb7fc3(0x14e)]?.[_0xcb7fc3(0x143)]?.[_0xcb7fc3(0x13c)]:_0x1fd033[_0xcb7fc3(0x151)][_0xcb7fc3(0x14e)]?.[_0xcb7fc3(0x149)][_0xcb7fc3(0x154)],_0x2ba48d={};return _0x2ba48d[_0xcb7fc3(0x152)]=_0x3cecd5,_0x2ba48d[_0xcb7fc3(0x146)]=_0x5a14f0||'/',_0x2ba48d;}function _0x26c7(){const _0xcf2036=['KfsYq','twoFactor','174448alTnUt','twofa','redirectUrl','ZTWgv','290535HHEWwL','base','empty\x20user','user.login','viQrh','5hHmBZw','link','60674IRExIg','logger','auth','user','password','afterLogin','empty\x20redis','894943EaSOuS','metrics','XAPIo','login','8GfyRrX','3140775MoGlRl','793302mGnydm','empty\x20pg','104432wHYqZG'];_0x26c7=function(){return _0xcf2036;};return _0x26c7();}
@@ -1,9 +0,0 @@
1
- /**
2
- * Implements the logout application service for its module.
3
- */
4
- import type { AppContext, User } from "../../../context.js";
5
- export default function logout(params: {
6
- sessionId?: string;
7
- user?: User;
8
- }, ctx: AppContext): Promise<void>;
9
- //# sourceMappingURL=logout.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../../../src/modules/auth/services/logout.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC5D,wBAA8B,MAAM,CAClC,MAAM,EAAE;IACN,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,IAAI,CAAC;CACb,EACD,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,IAAI,CAAC,CAQf"}
@@ -1 +0,0 @@
1
- (function(_0xef882f,_0xab500a){var _0x198747=_0x125c,_0x173ab2=_0xef882f();while(!![]){try{var _0x1cbe38=-parseInt(_0x198747(0xa8))/0x1+-parseInt(_0x198747(0xa4))/0x2+-parseInt(_0x198747(0xa1))/0x3+parseInt(_0x198747(0x9c))/0x4*(parseInt(_0x198747(0x9d))/0x5)+parseInt(_0x198747(0xa2))/0x6*(parseInt(_0x198747(0xa5))/0x7)+-parseInt(_0x198747(0x97))/0x8+parseInt(_0x198747(0x9e))/0x9;if(_0x1cbe38===_0xab500a)break;else _0x173ab2['push'](_0x173ab2['shift']());}catch(_0x4242e7){_0x173ab2['push'](_0x173ab2['shift']());}}}(_0x1b36,0x7ec0d));function _0x125c(_0x5bd2ca,_0xc9c09e){_0x5bd2ca=_0x5bd2ca-0x92;var _0x1b3643=_0x1b36();var _0x125c6a=_0x1b3643[_0x5bd2ca];return _0x125c6a;}export default async function logout(_0x1d7e2d,_0x11147b){var _0x147992=_0x125c,_0x45bfe9={};_0x45bfe9[_0x147992(0x92)]=_0x147992(0xa3),_0x45bfe9[_0x147992(0x99)]=_0x147992(0x96);var _0x59a8a7=_0x45bfe9,_0x33ad19={};_0x33ad19[_0x147992(0x93)]=_0x59a8a7[_0x147992(0x92)],_0x33ad19[_0x147992(0x98)]=_0x59a8a7[_0x147992(0x99)],_0x33ad19[_0x147992(0xa0)]=_0x1d7e2d[_0x147992(0x95)],_0x33ad19[_0x147992(0x9f)]=_0x147992(0x9b),_0x33ad19[_0x147992(0xa7)]=_0x1d7e2d[_0x147992(0xa6)]?.['id'],await _0x11147b[_0x147992(0x9a)]?.[_0x147992(0x94)]?.(_0x33ad19);}function _0x1b36(){var _0x2a0c19=['audit','logout','4mhTbzx','1610135hbUVOO','16574346VoPzxd','action','resourceId','344199UCGxob','2291862eMhDoB','auth','196696ltdxnB','7EUuJcn','user','userId','979678yuZJBY','RpJjK','module','write','sessionId','session','6669264ibebQn','resource','uixjF'];_0x1b36=function(){return _0x2a0c19;};return _0x1b36();}
@@ -1,11 +0,0 @@
1
- import { ContextDependencies } from "../../../context.js";
2
- export declare function hashPassword(password: string): string;
3
- export declare function verifyPasswordWithoutSalt(password: string, stored: string): boolean;
4
- export default function verifyPassword({ login, password, ip, }: {
5
- login: string;
6
- password: string;
7
- ip: string;
8
- }, { pg, logger }: Pick<ContextDependencies, "pg" | "logger">): Promise<{
9
- user: any;
10
- }>;
11
- //# sourceMappingURL=verifyPassword.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verifyPassword.d.ts","sourceRoot":"","sources":["../../../../src/modules/auth/services/verifyPassword.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAQ,MAAM,qBAAqB,CAAC;AAOhE,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIrD;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAST;AAED,wBAA8B,cAAc,CAC1C,EACE,KAAK,EACL,QAAQ,EACR,EAAE,GACH,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ,EACD,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,QAAQ,CAAC;;GAmE3D"}
@@ -1 +0,0 @@
1
- function _0x468e(_0x1c60ad,_0x7fb36f){_0x1c60ad=_0x1c60ad-0x73;const _0x58bb9e=_0x58bb();let _0x468ed6=_0x58bb9e[_0x1c60ad];return _0x468ed6;}(function(_0x466144,_0x1b6d46){const _0x2b56c5=_0x468e,_0xb3eff8=_0x466144();while(!![]){try{const _0x4f140e=parseInt(_0x2b56c5(0x7e))/0x1*(parseInt(_0x2b56c5(0x91))/0x2)+parseInt(_0x2b56c5(0xb2))/0x3*(parseInt(_0x2b56c5(0x9e))/0x4)+parseInt(_0x2b56c5(0x81))/0x5+-parseInt(_0x2b56c5(0x92))/0x6*(parseInt(_0x2b56c5(0x84))/0x7)+parseInt(_0x2b56c5(0xa4))/0x8*(parseInt(_0x2b56c5(0x88))/0x9)+parseInt(_0x2b56c5(0x7d))/0xa+parseInt(_0x2b56c5(0x9d))/0xb*(-parseInt(_0x2b56c5(0x80))/0xc);if(_0x4f140e===_0x1b6d46)break;else _0xb3eff8['push'](_0xb3eff8['shift']());}catch(_0x41552c){_0xb3eff8['push'](_0xb3eff8['shift']());}}}(_0x58bb,0xe0d49));import _0x1f0349 from'apache-crypt';function _0x58bb(){const _0x293322=['rows','huTui','HsiZN','11jnYHlu','4zgihbi','SELECT\x20public.crypt($1,\x20$2)','from','yssua','not\x20enough\x20params:\x20login','createHash','72lwunbW','JhCMO','auth/warn','hex','Wrong\x20password','DEuOw','uGwqo','scrypt$','nIGPd','file','empty\x20pg','toString','md5','digest','2150403AmLwKN','timingSafeEqual','not\x20enough\x20params:\x20password','SRqmX','lcWbf','wsxGn','UXKJw','error','user\x20not\x20found','kocTA','FrRgc','uEFRV','vXhaP','then','IXDQe','scryptSync','Bhiyn','user','salt','length','qrDhG','randomBytes','upQTM','3700650HvIPNO','1011NrbKSe','vQROW','28492428glwoJY','5748835TTAnFp','CqeSJ','FNUub','6813905eWyHyJ','zpTDk','jWpYc','eSVuu','1828845zuwtYq','login','info','split','query','IKdIY','password','scrypt','update','402WtaVwx','6RtrXia','crypt','HQBKp','fwdYa','ffXHm','oGUNn','select\x20uid\x20as\x20id,\x20user_type\x20as\x20type,\x20password,\x20salt\x20from\x20admin.users\x20where\x20$1\x20in\x20(login,email,phone)\x20and\x20enabled\x20limit\x201','password_new_hash_algorithm'];_0x58bb=function(){return _0x293322;};return _0x58bb();}import _0x595f8c from'node:crypto';import{BadRequestError}from'../../../errors.js';function md5(_0x3aa64d){const _0x44fc29=_0x468e,_0x528b2e={};_0x528b2e[_0x44fc29(0x74)]=_0x44fc29(0xa7);const _0x86f66f=_0x528b2e;return _0x595f8c[_0x44fc29(0xa3)](_0x44fc29(0xb0))[_0x44fc29(0x90)](_0x3aa64d)[_0x44fc29(0xb1)](_0x86f66f[_0x44fc29(0x74)]);}export function hashPassword(_0x1c4a3b){const _0x43e7b2=_0x468e,_0x253abe=_0x595f8c[_0x43e7b2(0x7b)](0x10)[_0x43e7b2(0xaf)](_0x43e7b2(0xa7)),_0x333c05=_0x595f8c[_0x43e7b2(0x75)](_0x1c4a3b,_0x253abe,0x40)[_0x43e7b2(0xaf)](_0x43e7b2(0xa7));return _0x43e7b2(0xab)+_0x253abe+'$'+_0x333c05;}export function verifyPasswordWithoutSalt(_0x5368c2,_0x5d628d){const _0x568535=_0x468e,_0x73dcda={};_0x73dcda[_0x568535(0xbd)]=function(_0x4ca428,_0x342fbe){return _0x4ca428!==_0x342fbe;},_0x73dcda[_0x568535(0xa9)]=_0x568535(0x8f),_0x73dcda[_0x568535(0x7f)]=_0x568535(0xa7),_0x73dcda[_0x568535(0xb8)]=function(_0x322b21,_0x525c8a){return _0x322b21===_0x525c8a;};const _0x394d7a=_0x73dcda,[_0x12e2d5,_0x1dc11c,_0x674695]=_0x5d628d[_0x568535(0x8b)]('$');if(_0x394d7a[_0x568535(0xbd)](_0x12e2d5,_0x394d7a[_0x568535(0xa9)])||!_0x1dc11c||!_0x674695)return![];const _0x10dfad=_0x595f8c[_0x568535(0x75)](_0x5368c2,_0x1dc11c,0x40),_0x40ff89=Buffer[_0x568535(0xa0)](_0x674695,_0x394d7a[_0x568535(0x7f)]);return _0x394d7a[_0x568535(0xb8)](_0x40ff89[_0x568535(0x79)],_0x10dfad[_0x568535(0x79)])&&_0x595f8c[_0x568535(0xb3)](_0x40ff89,_0x10dfad);}export default async function verifyPassword({login:_0x1ba15d,password:_0x4169b4,ip:_0x667cd7},{pg:_0x1994ce,logger:_0x28df38}){const _0x28f033=_0x468e,_0xa6e74b={'HQBKp':_0x28f033(0xa7),'lcWbf':_0x28f033(0xae),'zpTDk':_0x28f033(0xa2),'HsiZN':function(_0x48ea8f,_0x375f7a){return _0x48ea8f===_0x375f7a;},'FNUub':function(_0x487f0c,_0x641c13){return _0x487f0c===_0x641c13;},'oGUNn':_0x28f033(0x82),'qrDhG':_0x28f033(0x95),'eSVuu':_0x28f033(0x98),'upQTM':function(_0x3572e3,_0x3b1927){return _0x3572e3===_0x3b1927;},'nIGPd':_0x28f033(0x76),'huTui':_0x28f033(0xba),'yssua':function(_0x4fc836,_0x3e8780,_0x6c251b){return _0x4fc836(_0x3e8780,_0x6c251b);},'IKdIY':_0x28f033(0xa8),'wsxGn':_0x28f033(0xa6),'SRqmX':function(_0x376988,_0xee77df){return _0x376988===_0xee77df;},'FrRgc':function(_0x78b57d,_0x410aed){return _0x78b57d<_0x410aed;},'kocTA':function(_0x23057e,_0xb96d0a){return _0x23057e(_0xb96d0a);},'ffXHm':function(_0x4d0e77,_0x217824){return _0x4d0e77+_0x217824;},'JhCMO':function(_0x36730,_0x2f1525){return _0x36730===_0x2f1525;},'uGwqo':_0x28f033(0x86)};if(!_0x1994ce)throw new Error(_0xa6e74b[_0x28f033(0xb6)]);if(!_0x1ba15d||_0x1ba15d==='')throw new BadRequestError(_0xa6e74b[_0x28f033(0x85)]);if(!_0x4169b4||_0xa6e74b[_0x28f033(0x9c)](_0x4169b4,'')){if(_0xa6e74b[_0x28f033(0x83)](_0xa6e74b[_0x28f033(0x97)],_0xa6e74b[_0x28f033(0x7a)])){const _0x4e5e5a={..._0x1c8411};_0x4e5e5a[_0x28f033(0x8e)]=_0x326fb9,_0x4e5e5a[_0x28f033(0x78)]=_0x41e711;const _0x202f3e={};return _0x202f3e[_0x28f033(0x77)]=_0x4e5e5a,_0x202f3e;}else throw new BadRequestError(_0x28f033(0xb4));}const _0x1496d0=_0xa6e74b[_0x28f033(0x87)],_0x9a2e0a=await _0x1994ce[_0x28f033(0x8c)](_0x1496d0,[_0x1ba15d])[_0x28f033(0x73)](_0x407f53=>_0x407f53[_0x28f033(0x9a)]?.[0x0]);if(!_0x9a2e0a){if(_0xa6e74b[_0x28f033(0x7c)](_0x28f033(0x76),_0xa6e74b[_0x28f033(0xac)])){const _0x13d355=_0xa6e74b[_0x28f033(0x9b)],_0xde8bea={};_0xde8bea[_0x28f033(0xad)]=_0x28f033(0xa6),_0xde8bea[_0x28f033(0xb9)]=_0x13d355,_0xde8bea[_0x28f033(0x89)]=_0x1ba15d,_0xde8bea['ip']=_0x667cd7,_0x28df38[_0x28f033(0x8a)](_0xde8bea);throw new BadRequestError(_0x13d355);}else{const _0x3c45ab={..._0x3c2199};_0x3c45ab[_0x28f033(0x8e)]=_0x2869ef,_0x3c45ab[_0x28f033(0x78)]=_0x5577ef;const _0x3f4238={};return _0x3f4238[_0x28f033(0x77)]=_0x3c45ab,_0x3f4238;}}if(!_0x9a2e0a[_0x28f033(0x78)]){const _0x489871=_0xa6e74b[_0x28f033(0xa1)](verifyPasswordWithoutSalt,_0x4169b4,_0x9a2e0a[_0x28f033(0x8e)]);if(!_0x489871){const _0x3168c9=_0xa6e74b[_0x28f033(0x8d)],_0xf1eb16={};_0xf1eb16[_0x28f033(0xad)]=_0xa6e74b[_0x28f033(0xb7)],_0xf1eb16[_0x28f033(0xb9)]=_0x3168c9,_0xf1eb16[_0x28f033(0x89)]=_0x1ba15d,_0xf1eb16['ip']=_0x667cd7,_0x28df38[_0x28f033(0x8a)](_0xf1eb16);throw new BadRequestError(_0x3168c9);}const _0x54e793={..._0x9a2e0a};_0x54e793[_0x28f033(0x8e)]=undefined,_0x54e793[_0x28f033(0x78)]=undefined;const _0x58d915={};return _0x58d915[_0x28f033(0x77)]=_0x54e793,_0x58d915;}if(_0xa6e74b[_0x28f033(0x9c)](_0x9a2e0a[_0x28f033(0x99)],!![])){const _0x6f158c=await _0x1994ce[_0x28f033(0x8c)](_0x28f033(0x9f),[_0x4169b4,_0x9a2e0a[_0x28f033(0x78)]])[_0x28f033(0x73)](_0x10bf9e=>_0x10bf9e[_0x28f033(0x9a)]?.[0x0]?.[_0x28f033(0x93)]);if(_0xa6e74b[_0x28f033(0xb5)](_0x9a2e0a[_0x28f033(0x8e)],_0x6f158c)){const _0x207a77={..._0x9a2e0a};_0x207a77[_0x28f033(0x8e)]=undefined,_0x207a77[_0x28f033(0x78)]=undefined;const _0x40c81c={};return _0x40c81c[_0x28f033(0x77)]=_0x207a77,_0x40c81c;}const _0x9546f=_0xa6e74b[_0x28f033(0x8d)],_0x37153f={};_0x37153f[_0x28f033(0xad)]=_0x28f033(0xa6),_0x37153f[_0x28f033(0xb9)]=_0x9546f,_0x37153f[_0x28f033(0x89)]=_0x1ba15d,_0x37153f['ip']=_0x667cd7,_0x28df38[_0x28f033(0x8a)](_0x37153f);throw new BadRequestError(_0x9546f);}let _0x4afa7f='';for(let _0x204d3a=0x0;_0xa6e74b[_0x28f033(0xbc)](_0x204d3a,0xa);_0x204d3a+=0x1){_0x4afa7f=_0xa6e74b[_0x28f033(0xbb)](md5,_0xa6e74b[_0x28f033(0x96)](_0xa6e74b[_0x28f033(0x96)](_0x4169b4,_0x4afa7f),_0x9a2e0a[_0x28f033(0x78)]));}_0x4afa7f=_0x1f0349(_0x4afa7f,_0x9a2e0a[_0x28f033(0x78)]);if(_0xa6e74b[_0x28f033(0xa5)](_0x9a2e0a[_0x28f033(0x8e)],_0x4afa7f)){if(_0xa6e74b[_0x28f033(0x9c)](_0xa6e74b[_0x28f033(0xaa)],_0x28f033(0xbe)))return _0x1676f1[_0x28f033(0xa3)](_0x28f033(0xb0))[_0x28f033(0x90)](_0x4706c4)[_0x28f033(0xb1)](CBfRKy[_0x28f033(0x94)]);else{const _0x2e33fc={..._0x9a2e0a};_0x2e33fc[_0x28f033(0x8e)]=undefined,_0x2e33fc[_0x28f033(0x78)]=undefined;const _0x1201dc={};return _0x1201dc[_0x28f033(0x77)]=_0x2e33fc,_0x1201dc;}}const _0x3c2ee0=_0x28f033(0xa8),_0x22ad0d={};_0x22ad0d[_0x28f033(0xad)]=_0xa6e74b[_0x28f033(0xb7)],_0x22ad0d[_0x28f033(0xb9)]=_0x3c2ee0,_0x22ad0d[_0x28f033(0x89)]=_0x1ba15d,_0x22ad0d['ip']=_0x667cd7,_0x28df38[_0x28f033(0x8a)](_0x22ad0d);throw new BadRequestError(_0x3c2ee0);}
@@ -1,8 +0,0 @@
1
- /**
2
- * Exports the public surface of this FCore module.
3
- */
4
- export * from './route.js';
5
- export * from './services/upload-file.js';
6
- export * from './services/get-file.js';
7
- export * from './services/resize-file.js';
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/file/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC"}
@@ -1 +0,0 @@
1
- function _0x2bef(_0x5326e1,_0x20f0b5){_0x5326e1=_0x5326e1-0x133;var _0x3f0a08=_0x3f0a();var _0x2beff7=_0x3f0a08[_0x5326e1];return _0x2beff7;}(function(_0x4d7eae,_0x206b35){var _0x3a0141=_0x2bef,_0x17b127=_0x4d7eae();while(!![]){try{var _0x31d43d=parseInt(_0x3a0141(0x133))/0x1+-parseInt(_0x3a0141(0x138))/0x2+parseInt(_0x3a0141(0x139))/0x3*(-parseInt(_0x3a0141(0x13b))/0x4)+parseInt(_0x3a0141(0x135))/0x5*(-parseInt(_0x3a0141(0x137))/0x6)+-parseInt(_0x3a0141(0x136))/0x7+-parseInt(_0x3a0141(0x134))/0x8+parseInt(_0x3a0141(0x13a))/0x9;if(_0x31d43d===_0x206b35)break;else _0x17b127['push'](_0x17b127['shift']());}catch(_0xc4d3cb){_0x17b127['push'](_0x17b127['shift']());}}}(_0x3f0a,0xd5277));export*from'./route.js';export*from'./services/upload-file.js';function _0x3f0a(){var _0x494e52=['891682QBocTt','13182400SCOzHz','180fIKhdX','11782050Iocnfu','284556zHPqjC','3443818EvxLcP','2553081AiBDCZ','68333571VwLDwo','4ZDnCet'];_0x3f0a=function(){return _0x494e52;};return _0x3f0a();}export*from'./services/get-file.js';export*from'./services/resize-file.js';
@@ -1,20 +0,0 @@
1
- /**
2
- * Exports the public surface of this FCore module.
3
- */
4
- export * from './route.js';
5
- export * from './services/list-resources.js';
6
- export * from './services/get-resource.js';
7
- export * from './services/create-resource.js';
8
- export * from './services/update-resource.js';
9
- export * from './services/delete-resource.js';
10
- export * from './services/list-resource-relation.js';
11
- export * from './services/create-resource-relation.js';
12
- export * from './services/delete-resource-relation.js';
13
- export * from './services/list-children.js';
14
- export * from './services/search-resource.js';
15
- export * from './services/export-resource.js';
16
- export * from './services/suggest-resource.js';
17
- export * from './services/add-note.js';
18
- export * from './services/add-resource-file.js';
19
- export * from './services/upload-resource-file.js';
20
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/resource/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sCAAsC,CAAC;AACrD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC"}
@@ -1 +0,0 @@
1
- (function(_0x2c8481,_0x298303){var _0x10b584=_0x19bc,_0x1b0443=_0x2c8481();while(!![]){try{var _0x507383=-parseInt(_0x10b584(0x167))/0x1+-parseInt(_0x10b584(0x162))/0x2*(-parseInt(_0x10b584(0x166))/0x3)+parseInt(_0x10b584(0x164))/0x4+-parseInt(_0x10b584(0x165))/0x5*(parseInt(_0x10b584(0x16b))/0x6)+parseInt(_0x10b584(0x168))/0x7*(-parseInt(_0x10b584(0x169))/0x8)+-parseInt(_0x10b584(0x16a))/0x9+parseInt(_0x10b584(0x163))/0xa;if(_0x507383===_0x298303)break;else _0x1b0443['push'](_0x1b0443['shift']());}catch(_0x3c2b11){_0x1b0443['push'](_0x1b0443['shift']());}}}(_0x3f01,0x1ba0a));export*from'./route.js';export*from'./services/list-resources.js';export*from'./services/get-resource.js';export*from'./services/create-resource.js';function _0x19bc(_0x8dc0bb,_0x54b2c6){_0x8dc0bb=_0x8dc0bb-0x162;var _0x3f01a3=_0x3f01();var _0x19bc2d=_0x3f01a3[_0x8dc0bb];return _0x19bc2d;}export*from'./services/update-resource.js';export*from'./services/delete-resource.js';export*from'./services/list-resource-relation.js';export*from'./services/create-resource-relation.js';function _0x3f01(){var _0x3fa1c9=['1939005BVPXmH','32424jKlIso','21354FuTznT','3154760AktIFU','533824SYlVuv','65LdBtCH','57NWQKIr','81827qZfkHx','8617eFdKFV','1112vktXWj'];_0x3f01=function(){return _0x3fa1c9;};return _0x3f01();}export*from'./services/delete-resource-relation.js';export*from'./services/list-children.js';export*from'./services/search-resource.js';export*from'./services/export-resource.js';export*from'./services/suggest-resource.js';export*from'./services/add-note.js';export*from'./services/add-resource-file.js';export*from'./services/upload-resource-file.js';
@@ -1,6 +0,0 @@
1
- /**
2
- * Implements the list children application service for its module.
3
- */
4
- import type { AppContext } from '../../../context.js';
5
- export declare function listChildren(params: any, ctx: AppContext): Promise<never>;
6
- //# sourceMappingURL=list-children.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list-children.d.ts","sourceRoot":"","sources":["../../../../src/modules/resource/services/list-children.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 +0,0 @@
1
- function _0x7378(){var _0x12832b=['1224RrStXA','jebfV','1324DCJhtg','128GQgfsd','1534740etXlGJ','2280KMuQVf','27RmhCoX','16584eXuiQJ','135837iymkHz','96803jlLeUq','Generic\x20Resource\x20children','23248aEHzUp'];_0x7378=function(){return _0x12832b;};return _0x7378();}(function(_0x356cdc,_0x394cab){var _0x4a5219=_0xb90b,_0x37629f=_0x356cdc();while(!![]){try{var _0x273086=parseInt(_0x4a5219(0x1eb))/0x1*(parseInt(_0x4a5219(0x1e8))/0x2)+parseInt(_0x4a5219(0x1e4))/0x3+-parseInt(_0x4a5219(0x1ea))/0x4*(parseInt(_0x4a5219(0x1ed))/0x5)+parseInt(_0x4a5219(0x1ef))/0x6+-parseInt(_0x4a5219(0x1e5))/0x7+-parseInt(_0x4a5219(0x1e7))/0x8*(-parseInt(_0x4a5219(0x1ee))/0x9)+parseInt(_0x4a5219(0x1ec))/0xa;if(_0x273086===_0x394cab)break;else _0x37629f['push'](_0x37629f['shift']());}catch(_0x357ed5){_0x37629f['push'](_0x37629f['shift']());}}}(_0x7378,0x1e39e));import{unsupported}from'../../utils/unsupported.js';function _0xb90b(_0x23fa81,_0x3dc267){_0x23fa81=_0x23fa81-0x1e4;var _0x737821=_0x7378();var _0xb90b15=_0x737821[_0x23fa81];return _0xb90b15;}export async function listChildren(_0x23ba2a,_0x436223){var _0x5b06a7=_0xb90b,_0x352cd8={'jebfV':function(_0x85ae01,_0x37d93a){return _0x85ae01(_0x37d93a);}};return _0x352cd8[_0x5b06a7(0x1e9)](unsupported,_0x5b06a7(0x1e6));}
@@ -1,13 +0,0 @@
1
- /**
2
- * Exports the public surface of this FCore module.
3
- */
4
- export * from './route.js';
5
- export * from './services/get-system-settings.js';
6
- export * from './services/update-system-settings.js';
7
- export * from './services/get-system-log.js';
8
- export * from './services/get-audit-log.js';
9
- export * from './services/check-system.js';
10
- export * from './services/get-api-list.js';
11
- export * from './services/list-dictionaries.js';
12
- export * from './services/get-dictionary.js';
13
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/system/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC"}
@@ -1 +0,0 @@
1
- (function(_0x1733b8,_0x4a4599){var _0x2c97dd=_0x5cef,_0x58f9f7=_0x1733b8();while(!![]){try{var _0x2fe641=-parseInt(_0x2c97dd(0x1f4))/0x1+-parseInt(_0x2c97dd(0x1f8))/0x2+-parseInt(_0x2c97dd(0x1f7))/0x3*(parseInt(_0x2c97dd(0x1f5))/0x4)+parseInt(_0x2c97dd(0x1f2))/0x5*(parseInt(_0x2c97dd(0x1fa))/0x6)+-parseInt(_0x2c97dd(0x1f3))/0x7*(parseInt(_0x2c97dd(0x1f6))/0x8)+parseInt(_0x2c97dd(0x1f9))/0x9+parseInt(_0x2c97dd(0x1fb))/0xa;if(_0x2fe641===_0x4a4599)break;else _0x58f9f7['push'](_0x58f9f7['shift']());}catch(_0x238ec9){_0x58f9f7['push'](_0x58f9f7['shift']());}}}(_0x1feb,0x37fe4));function _0x5cef(_0xcff964,_0x2da425){_0xcff964=_0xcff964-0x1f2;var _0x1febb8=_0x1feb();var _0x5cef20=_0x1febb8[_0xcff964];return _0x5cef20;}export*from'./route.js';export*from'./services/get-system-settings.js';export*from'./services/update-system-settings.js';export*from'./services/get-system-log.js';export*from'./services/get-audit-log.js';export*from'./services/check-system.js';export*from'./services/get-api-list.js';export*from'./services/list-dictionaries.js';function _0x1feb(){var _0x589c3b=['297865QkwBSO','28XMFVkR','382521kKJudb','2812keNgCQ','478304FhzeOk','1374fmyhrz','24174ZwiDTK','3461031GHgGZU','42vJEsiB','3835120CBFIpQ'];_0x1feb=function(){return _0x589c3b;};return _0x1feb();}export*from'./services/get-dictionary.js';
@@ -1,3 +0,0 @@
1
- import type { AppContext } from "../../context.js";
2
- export declare function getUserPermissions(ctx: AppContext, userId: string): Promise<string[]>;
3
- //# sourceMappingURL=get-user-permissions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-user-permissions.d.ts","sourceRoot":"","sources":["../../../src/modules/utils/get-user-permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,EAAE,CAAC,CAcnB"}
@@ -1 +0,0 @@
1
- function _0x5977(){const _0x1e0443=['actions','1488706iYSAzC','query','1452ZKwSZk','200296HinmuT','98MPcpev','1TtBigU','3482347wMFbMA','\x0a\x20\x20\x20\x20\x20\x20SELECT\x20ra.actions\x0a\x20\x20\x20\x20\x20\x20FROM\x20admin.role_access\x20ra\x0a\x20\x20\x20\x20\x20\x20LEFT\x20JOIN\x20admin.user_roles\x20ur\x20ON\x20ur.role_id\x20=\x20ra.role_id\x0a\x20\x20\x20\x20\x20\x20WHERE\x20ra.user_uid\x20=\x20$1\x20OR\x20ur.user_uid\x20=\x20$1\x0a\x20\x20\x20\x20','4177344heCnRX','2202CumXAz','2328318XBrzPm','flatMap','6219mivzUf','1610YNBltL','10qTNgrZ','rows'];_0x5977=function(){return _0x1e0443;};return _0x5977();}function _0x2d41(_0x4719eb,_0x5ebfaf){_0x4719eb=_0x4719eb-0x88;const _0x5977bc=_0x5977();let _0x2d41df=_0x5977bc[_0x4719eb];return _0x2d41df;}(function(_0x4159fd,_0x4fd3d9){const _0x2b2b2d=_0x2d41,_0xd472f=_0x4159fd();while(!![]){try{const _0x42adfe=parseInt(_0x2b2b2d(0x95))/0x1*(parseInt(_0x2b2b2d(0x90))/0x2)+parseInt(_0x2b2b2d(0x8b))/0x3*(-parseInt(_0x2b2b2d(0x92))/0x4)+parseInt(_0x2b2b2d(0x8c))/0x5*(-parseInt(_0x2b2b2d(0x88))/0x6)+-parseInt(_0x2b2b2d(0x94))/0x7*(parseInt(_0x2b2b2d(0x93))/0x8)+parseInt(_0x2b2b2d(0x89))/0x9*(parseInt(_0x2b2b2d(0x8d))/0xa)+parseInt(_0x2b2b2d(0x96))/0xb+parseInt(_0x2b2b2d(0x98))/0xc;if(_0x42adfe===_0x4fd3d9)break;else _0xd472f['push'](_0xd472f['shift']());}catch(_0x59de62){_0xd472f['push'](_0xd472f['shift']());}}}(_0x5977,0x6d059));export async function getUserPermissions(_0x36bef4,_0x54ea7e){const _0x42f146=_0x2d41,_0x4de4c8=await _0x36bef4['pg'][_0x42f146(0x91)](_0x42f146(0x97),[_0x54ea7e]);return[...new Set(_0x4de4c8[_0x42f146(0x8e)][_0x42f146(0x8a)](_0x92c168=>_0x92c168[_0x42f146(0x8f)]??[]))];}