@opengis/fcore 0.0.1-beta.25 → 0.0.1-beta.27

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 (142) hide show
  1. package/dist/config.js +1 -1
  2. package/dist/context.js +1 -1
  3. package/dist/errors.js +1 -1
  4. package/dist/fastify.js +1 -1
  5. package/dist/fcore.js +1 -1
  6. package/dist/migrations/cli.js +1 -1
  7. package/dist/migrations/runner.js +1 -1
  8. package/dist/modules/auth/adduser-cli.js +1 -1
  9. package/dist/modules/auth/passwd-cli.js +1 -1
  10. package/dist/modules/auth/permission-cli.js +1 -1
  11. package/dist/modules/auth/route.d.ts.map +1 -1
  12. package/dist/modules/auth/route.js +1 -1
  13. package/dist/modules/auth/schema.js +1 -1
  14. package/dist/modules/auth/services/change-password.js +1 -1
  15. package/dist/modules/auth/services/get-current-user.d.ts +2 -0
  16. package/dist/modules/auth/services/get-current-user.d.ts.map +1 -1
  17. package/dist/modules/auth/services/get-current-user.js +1 -1
  18. package/dist/modules/auth/services/registration.js +1 -1
  19. package/dist/modules/auth/services/verify-two-factor.js +1 -1
  20. package/dist/modules/file/mime.js +1 -1
  21. package/dist/modules/file/route.js +1 -1
  22. package/dist/modules/file/schema.js +1 -1
  23. package/dist/modules/file/services/get-file.js +1 -1
  24. package/dist/modules/file/services/resize-file.js +1 -1
  25. package/dist/modules/file/services/upload-file.js +1 -1
  26. package/dist/modules/resource/route.d.ts.map +1 -1
  27. package/dist/modules/resource/route.js +1 -1
  28. package/dist/modules/resource/schema.d.ts +13 -0
  29. package/dist/modules/resource/schema.d.ts.map +1 -1
  30. package/dist/modules/resource/schema.js +1 -1
  31. package/dist/modules/resource/services/add-note.js +1 -1
  32. package/dist/modules/resource/services/add-resource-file.js +1 -1
  33. package/dist/modules/resource/services/create-resource-relation.js +1 -1
  34. package/dist/modules/resource/services/create-resource.js +1 -1
  35. package/dist/modules/resource/services/delete-resource-relation.js +1 -1
  36. package/dist/modules/resource/services/delete-resource.js +1 -1
  37. package/dist/modules/resource/services/export-resource.js +1 -1
  38. package/dist/modules/resource/services/generate-resource-code.d.ts +16 -0
  39. package/dist/modules/resource/services/generate-resource-code.d.ts.map +1 -0
  40. package/dist/modules/resource/services/generate-resource-code.js +1 -0
  41. package/dist/modules/resource/services/get-resource-schema.d.ts +6 -0
  42. package/dist/modules/resource/services/get-resource-schema.d.ts.map +1 -0
  43. package/dist/modules/resource/services/get-resource-schema.js +1 -0
  44. package/dist/modules/resource/services/get-resource.js +1 -1
  45. package/dist/modules/resource/services/list-resource-as-user.d.ts +8 -0
  46. package/dist/modules/resource/services/list-resource-as-user.d.ts.map +1 -0
  47. package/dist/modules/resource/services/list-resource-as-user.js +1 -0
  48. package/dist/modules/resource/services/list-resource-list.d.ts +20 -0
  49. package/dist/modules/resource/services/list-resource-list.d.ts.map +1 -0
  50. package/dist/modules/resource/services/list-resource-list.js +1 -0
  51. package/dist/modules/resource/services/list-resource-relation.js +1 -1
  52. package/dist/modules/resource/services/list-resources.d.ts.map +1 -1
  53. package/dist/modules/resource/services/list-resources.js +1 -1
  54. package/dist/modules/resource/services/search-resource.js +1 -1
  55. package/dist/modules/resource/services/suggest-resource.js +1 -1
  56. package/dist/modules/resource/services/update-resource-relation.js +1 -1
  57. package/dist/modules/resource/services/update-resource.js +1 -1
  58. package/dist/modules/resource/services/upload-resource-file.js +1 -1
  59. package/dist/modules/system/route.d.ts.map +1 -1
  60. package/dist/modules/system/route.js +1 -1
  61. package/dist/modules/system/schema.d.ts +22 -0
  62. package/dist/modules/system/schema.d.ts.map +1 -1
  63. package/dist/modules/system/schema.js +1 -1
  64. package/dist/modules/system/services/check-system.js +1 -1
  65. package/dist/modules/system/services/get-access.js +1 -1
  66. package/dist/modules/system/services/get-api-list.js +1 -1
  67. package/dist/modules/system/services/get-audit-log.js +1 -1
  68. package/dist/modules/system/services/get-dictionary.js +1 -1
  69. package/dist/modules/system/services/get-resource-access.d.ts +23 -0
  70. package/dist/modules/system/services/get-resource-access.d.ts.map +1 -0
  71. package/dist/modules/system/services/get-resource-access.js +1 -0
  72. package/dist/modules/system/services/get-resource-scopes.d.ts +16 -0
  73. package/dist/modules/system/services/get-resource-scopes.d.ts.map +1 -0
  74. package/dist/modules/system/services/get-resource-scopes.js +1 -0
  75. package/dist/modules/system/services/get-system-log.js +1 -1
  76. package/dist/modules/system/services/get-system-settings.js +1 -1
  77. package/dist/modules/system/services/list-dictionaries.js +1 -1
  78. package/dist/modules/system/services/set-access.d.ts +1 -0
  79. package/dist/modules/system/services/set-access.d.ts.map +1 -1
  80. package/dist/modules/system/services/set-access.js +1 -1
  81. package/dist/modules/system/services/set-resource-access.d.ts +18 -0
  82. package/dist/modules/system/services/set-resource-access.d.ts.map +1 -0
  83. package/dist/modules/system/services/set-resource-access.js +1 -0
  84. package/dist/modules/system/services/set-resource-scopes.d.ts +10 -0
  85. package/dist/modules/system/services/set-resource-scopes.d.ts.map +1 -0
  86. package/dist/modules/system/services/set-resource-scopes.js +1 -0
  87. package/dist/modules/system/services/update-dictionary.js +1 -1
  88. package/dist/modules/system/services/update-system-settings.js +1 -1
  89. package/dist/modules/utils/require-admin.js +1 -1
  90. package/dist/modules/utils/safe-user.js +1 -1
  91. package/dist/modules/utils/unsupported.js +1 -1
  92. package/dist/plugins/audit/audit.js +1 -1
  93. package/dist/plugins/audit/services/write-audit.js +1 -1
  94. package/dist/plugins/auth/get-user-permissions.js +1 -1
  95. package/dist/plugins/auth/index.js +1 -1
  96. package/dist/plugins/auth/verifyUser.js +1 -1
  97. package/dist/plugins/dictionary.js +1 -1
  98. package/dist/plugins/file.js +1 -1
  99. package/dist/plugins/jwt.js +1 -1
  100. package/dist/plugins/logger/index.js +1 -1
  101. package/dist/plugins/logger/transport.js +1 -1
  102. package/dist/plugins/pg.js +1 -1
  103. package/dist/plugins/redis.js +1 -1
  104. package/dist/plugins/resource/resource.d.ts +1 -1
  105. package/dist/plugins/resource/resource.d.ts.map +1 -1
  106. package/dist/plugins/resource/resource.js +1 -1
  107. package/dist/plugins/resource/resource.registry.d.ts +3 -2
  108. package/dist/plugins/resource/resource.registry.d.ts.map +1 -1
  109. package/dist/plugins/resource/resource.registry.js +1 -1
  110. package/dist/plugins/resource/resource.types.d.ts +23 -4
  111. package/dist/plugins/resource/resource.types.d.ts.map +1 -1
  112. package/dist/plugins/resource/services/add-dictionary-lookup-data.js +1 -1
  113. package/dist/plugins/resource/services/add-file-token.js +1 -1
  114. package/dist/plugins/resource/services/add-table-lookup-data.js +1 -1
  115. package/dist/plugins/resource/services/create-relation.js +1 -1
  116. package/dist/plugins/resource/services/create.js +1 -1
  117. package/dist/plugins/resource/services/delete-relation.js +1 -1
  118. package/dist/plugins/resource/services/delete.js +1 -1
  119. package/dist/plugins/resource/services/find-one.d.ts.map +1 -1
  120. package/dist/plugins/resource/services/find-one.js +1 -1
  121. package/dist/plugins/resource/services/find-relation.js +1 -1
  122. package/dist/plugins/resource/services/find.d.ts.map +1 -1
  123. package/dist/plugins/resource/services/find.js +1 -1
  124. package/dist/plugins/resource/services/get-table-columns.js +1 -1
  125. package/dist/plugins/resource/services/update-relation.js +1 -1
  126. package/dist/plugins/resource/services/update.js +1 -1
  127. package/dist/plugins/resource/utils/auto-index.js +1 -1
  128. package/dist/plugins/resource/utils/fields.js +1 -1
  129. package/dist/plugins/resource/utils/filters.js +1 -1
  130. package/dist/plugins/resource/utils/permissions.js +1 -1
  131. package/dist/plugins/resource/utils/scope.d.ts +10 -0
  132. package/dist/plugins/resource/utils/scope.d.ts.map +1 -0
  133. package/dist/plugins/resource/utils/scope.js +1 -0
  134. package/dist/plugins/resource/utils/sort.js +1 -1
  135. package/dist/plugins/resource/utils/sql.js +1 -1
  136. package/dist/plugins/resource/utils/summary.d.ts +5 -1
  137. package/dist/plugins/resource/utils/summary.d.ts.map +1 -1
  138. package/dist/plugins/resource/utils/summary.js +1 -1
  139. package/dist/shared/getIP.js +1 -1
  140. package/migrations/20260929120000_allow_user_only_role_scopes.sql +2 -0
  141. package/migrations/20260929_role_scope.sql +32 -0
  142. package/package.json +2 -2
@@ -1 +1 @@
1
- function f(){var Z=['name','items'];f=function(){return Z;};return f();}function Y(w,y){w=w-0xe7;var d=f();var Z=d[w];return Z;}export async function updateDictionary(w,y){var d=Y;return await y['dictionary']['put'](w[d(0xe7)],w[d(0xe8)]),{'success':!![]};}
1
+ export async function updateDictionary(h,n){var B=k;return await n['dictionary'][B(0x156)](h[B(0x157)],h[B(0x158)]),{'success':!![]};}function k(h,n){h=h-0x156;var B=Q();var G=B[h];return G;}function Q(){var G=['put','name','items'];Q=function(){return G;};return Q();}
@@ -1 +1 @@
1
- function Y(w,y){w=w-0xc4;const d=f();let Z=d[w];return Z;}import{ValidationError}from'../../../errors.js';function f(){const H=['patch','length','query','user'];f=function(){return H;};return f();}export async function updateSystemSettings(w,y){const M=Y;if(!Object['keys'](w[M(0xc4)])[M(0xc5)])throw new ValidationError('Settings\x20patch\x20is\x20empty');for(const [d,Z]of Object['entries'](w['patch'])){if(!d['trim']()||d['includes']('..'))throw new ValidationError('Invalid\x20setting\x20key:\x20'+d);await y['pg'][M(0xc6)]('\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',[d,JSON['stringify'](Z),w[M(0xc7)]['id']]);}return{'success':!![]};}
1
+ import{ValidationError}from'../../../errors.js';export async function updateSystemSettings(h,n){const f=k;if(!Object['keys'](h[f(0x1bb)])[f(0x1bc)])throw new ValidationError('Settings\x20patch\x20is\x20empty');for(const [B,G]of Object['entries'](h['patch'])){if(!B['trim']()||B['includes']('..'))throw new ValidationError(f(0x1bd)+B);await n['pg'][f(0x1be)]('\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',[B,JSON['stringify'](G),h['user']['id']]);}return{'success':!![]};}function k(h,n){h=h-0x1bb;const B=Q();let G=B[h];return G;}function Q(){const j=['patch','length','Invalid\x20setting\x20key:\x20','query'];Q=function(){return j;};return Q();}
@@ -1 +1 @@
1
- import{ForbiddenError}from'../../errors.js';function f(){var Z=['User\x20required','type','Admin\x20access\x20required','permissions'];f=function(){return Z;};return f();}function Y(w,y){w=w-0x6a;var d=f();var Z=d[w];return Z;}export function requireAdmin(w,y){var d=Y;if(!w)throw new ForbiddenError(d(0x6a));if(w[d(0x6b)]!=='admin')throw new ForbiddenError(d(0x6c));if(w['type']!=='admin'&&y&&!w[d(0x6d)]?.['includes'](y))throw new ForbiddenError('Missing\x20permission:\x20'+y);}
1
+ import{ForbiddenError}from'../../errors.js';function Q(){var G=['User\x20required','admin','permissions','includes'];Q=function(){return G;};return Q();}function k(h,n){h=h-0x10b;var B=Q();var G=B[h];return G;}export function requireAdmin(h,n){var B=k;if(!h)throw new ForbiddenError(B(0x10b));if(h['type']!=='admin')throw new ForbiddenError('Admin\x20access\x20required');if(h['type']!==B(0x10c)&&n&&!h[B(0x10d)]?.[B(0x10e)](n))throw new ForbiddenError('Missing\x20permission:\x20'+n);}
@@ -1 +1 @@
1
- function f(){const H=['password','secret','some'];f=function(){return H;};return f();}function Y(w,y){w=w-0xd2;const d=f();let Z=d[w];return Z;}export const safeUser=w=>{const M=Y,y=[M(0xd2),'salt',M(0xd3),'credentials'];return Object['fromEntries'](Object['entries'](w)['filter'](([d])=>!y[M(0xd4)](Z=>d['toLowerCase']()['includes'](Z))));};
1
+ export const safeUser=h=>{const f=k,n=['password','salt','secret',f(0x1c2)];return Object[f(0x1c3)](Object['entries'](h)['filter'](([B])=>!n[f(0x1c4)](G=>B[f(0x1c5)]()['includes'](G))));};function k(h,n){h=h-0x1c2;const B=Q();let G=B[h];return G;}function Q(){const j=['credentials','fromEntries','some','toLowerCase'];Q=function(){return j;};return Q();}
@@ -1 +1 @@
1
- import{UnsupportedError}from'../../errors.js';function f(){var d=['\x20requires\x20a\x20project/provider\x20implementation'];f=function(){return d;};return f();}function Y(w,y){w=w-0xbb;var d=f();var Z=d[w];return Z;}export function unsupported(w){var y=Y;throw new UnsupportedError(w+y(0xbb));}
1
+ import{UnsupportedError}from'../../errors.js';export function unsupported(h){throw new UnsupportedError(h+'\x20requires\x20a\x20project/provider\x20implementation');}
@@ -1 +1 @@
1
- import{writeAudit}from'./services/write-audit.js';export function createAudit(w){const y=writeAudit(w);return{'write':y};}
1
+ import{writeAudit}from'./services/write-audit.js';export function createAudit(h){const n=writeAudit(h);return{'write':n};}
@@ -1 +1 @@
1
- function f(){const i=['fromEntries','entries','query','then','map','audit_log_data','logger','warn','audit','module','ipAddress','metadata','\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'];f=function(){return i;};return f();}const secretPattern=/password|token|secret|credential|salt/i;function clean(w){const n=Y;if(Array['isArray'](w))return w['map'](clean);if(w&&typeof w==='object')return Object[n(0x1b9)](Object[n(0x1ba)](w)['map'](([y,d])=>[y,secretPattern['test'](y)?'[REDACTED]':clean(d)]));return w;}function Y(w,y){w=w-0x1b9;const d=f();let Z=d[w];return Z;}export function writeAudit(w){let y,d;async function Z(){const t=Y;if(!w['pg'])return![];if(y!==undefined)return y;return d??=w['pg'][t(0x1bb)]('\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')[t(0x1bc)](M=>{const K=t,H=new Set(M['rows'][K(0x1bd)](Q=>Q['table_name']));return y=H['has']('audit_log')&&H['has'](K(0x1be)),!y&&w[K(0x1bf)][K(0x1c0)]({'expectedTables':['admin.audit_log','admin.audit_log_data'],'foundTables':[...H]},'Audit\x20tables\x20are\x20unavailable;\x20audit\x20writes\x20are\x20disabled'),y;})['catch'](M=>{const T=t;return y=![],w[T(0x1bf)][T(0x1c0)]({'err':M},'Unable\x20to\x20check\x20audit\x20tables;\x20audit\x20writes\x20are\x20disabled'),![];}),d;}return async function M(H){const h=Y;if(!await Z())return w[h(0x1bf)]['info']({'auditFallback':!![],'event':clean({...H,'changes':H['changes']?.['map'](j=>({...j,'oldValue':clean(j['oldValue']),'newValue':clean(j['newValue'])}))})},h(0x1c1)),0x0;if(!w['pg'])throw new Error('empty\x20pg');const Q=await w['pg']['query']('\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',[H['userId']??null,H[h(0x1c2)],H['resource'],H['resourceId']==null?null:String(H['resourceId']),H['fields']??null,H['action'],H['requestId']??null,H[h(0x1c3)]??null,clean(H[h(0x1c4)]??{})]),s=Q['rows'][0x0]['id'];for(const j of H['changes']??[]){if(secretPattern['test'](j['field']))continue;await w['pg'][h(0x1bb)](h(0x1c5),[s,j['field'],JSON['stringify'](clean(j['oldValue'])),JSON['stringify'](clean(j['newValue']))]);}return s;};}
1
+ function k(h,n){h=h-0xfb;const B=Q();let G=B[h];return G;}function Q(){const p=['isArray','entries','[REDACTED]','query','then','rows','admin.audit_log','admin.audit_log_data','Unable\x20to\x20check\x20audit\x20tables;\x20audit\x20writes\x20are\x20disabled','changes','map','oldValue','newValue','resource','fields','metadata','test','field'];Q=function(){return p;};return Q();}const secretPattern=/password|token|secret|credential|salt/i;function clean(h){const P=k;if(Array[P(0xfb)](h))return h['map'](clean);if(h&&typeof h==='object')return Object['fromEntries'](Object[P(0xfc)](h)['map'](([n,B])=>[n,secretPattern['test'](n)?P(0xfd):clean(B)]));return h;}export function writeAudit(h){let n,B;async function G(){const u=k;if(!h['pg'])return![];if(n!==undefined)return n;return B??=h['pg'][u(0xfe)]('\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')[u(0xff)](f=>{const X=u,j=new Set(f[X(0x100)]['map'](Z=>Z['table_name']));return n=j['has']('audit_log')&&j['has']('audit_log_data'),!n&&h['logger']['warn']({'expectedTables':[X(0x101),X(0x102)],'foundTables':[...j]},'Audit\x20tables\x20are\x20unavailable;\x20audit\x20writes\x20are\x20disabled'),n;})['catch'](f=>{const H=u;return n=![],h['logger']['warn']({'err':f},H(0x103)),![];}),B;}return async function f(j){const i=k;if(!await G())return h['logger']['info']({'auditFallback':!![],'event':clean({...j,'changes':j[i(0x104)]?.[i(0x105)](b=>({...b,'oldValue':clean(b[i(0x106)]),'newValue':clean(b[i(0x107)])}))})},'audit'),0x0;if(!h['pg'])throw new Error('empty\x20pg');const Z=await h['pg']['query']('\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',[j['userId']??null,j['module'],j[i(0x108)],j['resourceId']==null?null:String(j['resourceId']),j[i(0x109)]??null,j['action'],j['requestId']??null,j['ipAddress']??null,clean(j[i(0x10a)]??{})]),e=Z['rows'][0x0]['id'];for(const b of j['changes']??[]){if(secretPattern[i(0x10b)](b['field']))continue;await h['pg']['query']('\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',[e,b[i(0x10c)],JSON['stringify'](clean(b['oldValue'])),JSON['stringify'](clean(b['newValue']))]);}return e;};}
@@ -1 +1 @@
1
- function Y(w,y){w=w-0x151;const d=f();let Z=d[w];return Z;}export async function getUserPermissions(w,y){const M=Y,d=await y['pg'][M(0x151)]('\x0a\x20\x20\x20\x20\x20\x20SELECT\x20DISTINCT\x20ra.resource\x20||\x20\x27:\x27\x20||\x20action\x20AS\x20permission\x0a\x20\x20\x20\x20\x20\x20FROM\x20admin.role_access\x20ra\x0a\x20\x20\x20\x20\x20\x20LEFT\x20JOIN\x20admin.user_roles\x20ur\x20ON\x20ur.role_id\x20=\x20ra.role_id\x0a\x20\x20\x20\x20\x20\x20CROSS\x20JOIN\x20LATERAL\x20unnest(COALESCE(ra.actions,\x20\x27{}\x27::text[]))\x20AS\x20action\x0a\x20\x20\x20\x20\x20\x20WHERE\x20ra.user_uid\x20=\x20$1\x20OR\x20ur.user_uid\x20=\x20$1\x0a\x20\x20\x20\x20',[w]);return d['rows']['map'](Z=>Z['permission']);}function f(){const H=['query'];f=function(){return H;};return f();}
1
+ function Q(){const j=['rows'];Q=function(){return j;};return Q();}function k(h,n){h=h-0x17c;const B=Q();let G=B[h];return G;}export async function getUserPermissions(h,n){const f=k,B=await n['pg']['query']('\x0a\x20\x20\x20\x20\x20\x20SELECT\x20DISTINCT\x20ra.resource\x20||\x20\x27:\x27\x20||\x20action\x20AS\x20permission\x0a\x20\x20\x20\x20\x20\x20FROM\x20admin.role_access\x20ra\x0a\x20\x20\x20\x20\x20\x20LEFT\x20JOIN\x20admin.user_roles\x20ur\x20ON\x20ur.role_id\x20=\x20ra.role_id\x0a\x20\x20\x20\x20\x20\x20CROSS\x20JOIN\x20LATERAL\x20unnest(COALESCE(ra.actions,\x20\x27{}\x27::text[]))\x20AS\x20action\x0a\x20\x20\x20\x20\x20\x20WHERE\x20ra.user_uid\x20=\x20$1\x20OR\x20ur.user_uid\x20=\x20$1\x0a\x20\x20\x20\x20',[h]);return B[f(0x17c)]['map'](G=>G['permission']);}
@@ -1 +1 @@
1
- const T=Y;export*from'./auth.types.js';import{randomBytes,scrypt as w,timingSafeEqual}from'node:crypto';import{mkdir,readFile,unlink,writeFile}from'node:fs/promises';import{join,resolve}from'node:path';function Y(w,y){w=w-0x75;const d=f();let Z=d[w];return Z;}import{promisify}from'node:util';const scrypt=promisify(w);import y from'@fastify/cookie';import d from'@fastify/session';import{Authenticator}from'@fastify/passport';import Z from'fastify-session-redis-store';import{getUserPermissions}from'./get-user-permissions.js';function f(){const e=['path','fileFor','code','stringify','from','warn','cookieOptions','host','auth','database'];f=function(){return e;};return f();}const fastifyPassport=new Authenticator();class FileSessionStore{[T(0x75)];constructor(M){const h=T;this[h(0x75)]=M,void mkdir(this[h(0x75)],{'recursive':!![]});}[T(0x76)](M){return join(this['path'],M+'.json');}async['get'](M,H){const i=T;try{const Q=await readFile(this[i(0x76)](M),'utf8');H(null,JSON['parse'](Q));}catch(s){const j=s;if(j[i(0x77)]==='ENOENT'){H(null,undefined);return;}H(j,undefined);}}async['set'](M,H,Q){const G=T;try{await mkdir(this['path'],{'recursive':!![]}),await writeFile(this['fileFor'](M),JSON[G(0x78)](H),'utf8'),Q();}catch(s){Q(s);}}async['destroy'](M,H){try{await unlink(this['fileFor'](M))['catch'](Q=>{if(Q['code']!=='ENOENT')throw Q;}),H();}catch(Q){H(Q);}}}export*from'./verifyUser.js';export*from'./get-user-permissions.js';export async function hashPassword(M){const H=randomBytes(0x10),Q=await scrypt(M,H,0x40);return'scrypt$'+H['toString']('hex')+'$'+Q['toString']('hex');}export async function verifyPassword(M,H){const U=T,[Q,s,j]=H?.['split']('$')||[];if(Q!=='scrypt'||!s||!j)return![];const n=Buffer['from'](s,'hex'),t=Buffer[U(0x79)](j,'hex'),K=await scrypt(M,n,t['length']);return timingSafeEqual(K,t);}export async function createSessionStore(M,H){const E=T,{config:Q,redis:s}=H;if(!Q){console[E(0x7a)]('Missing\x20config\x20-\x20skipping\x20session\x20store\x20creation');return;}if(process.env.NODE_ENV==='test'||process.env.VITEST)return;await M['register'](y,{'parseOptions':Q['auth'][E(0x7b)]});const j=Q['redis'][E(0x7c)]?new Z({'prefix':Q[E(0x7d)]['cookieName']+':'+(Q['pg']?.[E(0x7e)]||'db')+':','client':s}):new FileSessionStore(resolve(Q['storagePath']??'./storage','sessions'));await M['register'](d,{'secret':Q['auth']['secret'],'cookieName':Q['auth']['cookieName'],'cookie':Q['auth']['cookieOptions'],'store':j}),await M['register'](fastifyPassport['initialize']()),await M['register'](fastifyPassport['secureSession']()),fastifyPassport['registerUserSerializer'](async n=>({'user':n})),fastifyPassport['registerUserDeserializer'](async n=>{const t=n?.['user']||n;return t?.['id']&&(t['permissions']=await getUserPermissions(t['id'],H)),t;});}
1
+ const H=k;export*from'./auth.types.js';import{randomBytes,scrypt as h,timingSafeEqual}from'node:crypto';import{mkdir,readFile,unlink,writeFile}from'node:fs/promises';function Q(){const U=['get','code','set','stringify','destroy','catch','toString','hex','from','test','redis','host','database','./storage','register','secureSession','registerUserDeserializer'];Q=function(){return U;};return Q();}import{join,resolve}from'node:path';import{promisify}from'node:util';const scrypt=promisify(h);function k(h,n){h=h-0x102;const B=Q();let G=B[h];return G;}import n from'@fastify/cookie';import B from'@fastify/session';import{Authenticator}from'@fastify/passport';import G from'fastify-session-redis-store';import{getUserPermissions}from'./get-user-permissions.js';const fastifyPassport=new Authenticator();class FileSessionStore{['path'];constructor(f){this['path']=f,void mkdir(this['path'],{'recursive':!![]});}['fileFor'](f){return join(this['path'],f+'.json');}async[H(0x102)](f,j){const i=H;try{const Z=await readFile(this['fileFor'](f),'utf8');j(null,JSON['parse'](Z));}catch(e){const b=e;if(b[i(0x103)]==='ENOENT'){j(null,undefined);return;}j(b,undefined);}}async[H(0x104)](f,j,Z){const p=H;try{await mkdir(this['path'],{'recursive':!![]}),await writeFile(this['fileFor'](f),JSON[p(0x105)](j),'utf8'),Z();}catch(e){Z(e);}}async[H(0x106)](f,j){const z=H;try{await unlink(this['fileFor'](f))[z(0x107)](Z=>{if(Z['code']!=='ENOENT')throw Z;}),j();}catch(Z){j(Z);}}}export*from'./verifyUser.js';export*from'./get-user-permissions.js';export async function hashPassword(f){const t=H,j=randomBytes(0x10),Z=await scrypt(f,j,0x40);return'scrypt$'+j[t(0x108)](t(0x109))+'$'+Z['toString']('hex');}export async function verifyPassword(f,j){const m=H,[Z,e,b]=j?.['split']('$')||[];if(Z!=='scrypt'||!e||!b)return![];const P=Buffer[m(0x10a)](e,'hex'),u=Buffer[m(0x10a)](b,'hex'),X=await scrypt(f,P,u['length']);return timingSafeEqual(X,u);}export async function createSessionStore(f,j){const A=H,{config:Z,redis:e}=j;if(!Z){console['warn']('Missing\x20config\x20-\x20skipping\x20session\x20store\x20creation');return;}if(process.env.NODE_ENV===A(0x10b)||process.env.VITEST)return;await f['register'](n,{'parseOptions':Z['auth']['cookieOptions']});const b=Z[A(0x10c)][A(0x10d)]?new G({'prefix':Z['auth']['cookieName']+':'+(Z['pg']?.[A(0x10e)]||'db')+':','client':e}):new FileSessionStore(resolve(Z['storagePath']??A(0x10f),'sessions'));await f['register'](B,{'secret':Z['auth']['secret'],'cookieName':Z['auth']['cookieName'],'cookie':Z['auth']['cookieOptions'],'store':b}),await f['register'](fastifyPassport['initialize']()),await f[A(0x110)](fastifyPassport[A(0x111)]()),fastifyPassport['registerUserSerializer'](async P=>({'user':P})),fastifyPassport[A(0x112)](async P=>{const u=P?.['user']||P;return u?.['id']&&(u['permissions']=await getUserPermissions(u['id'],j)),u;});}
@@ -1 +1 @@
1
- function Y(w,y){w=w-0x77;const d=f();let Z=d[w];return Z;}import{BadRequestError}from'../../errors.js';function f(){const K=['not\x20enough\x20params:\x20user','not\x20enough\x20params:\x20password','metrics','then','info'];f=function(){return K;};return f();}import{verifyPassword}from'./index.js';export async function verifyUser({user:w,password:y,ip:d},{pg:Z,logger:M}){const t=Y;if(!w||w==='')throw new BadRequestError(t(0x77));if(!y||y==='')throw new BadRequestError(t(0x78));M[t(0x79)]('user.login');const H='select\x20uid\x20as\x20id,\x20user_type\x20as\x20type,\x20password_hash,\x20twofa\x20from\x20admin.users\x20where\x20$1\x20in\x20(login,email,phone)\x20and\x20enabled\x20limit\x201',Q=await Z['query'](H,[w])[t(0x7a)](j=>j['rows']?.[0x0]);if(!Q){const j='user\x20not\x20found';M[t(0x7b)]({'file':'auth/warn','error':j,'user':w,'ip':d});throw new BadRequestError(j);}const s=await verifyPassword(y,Q['password_hash']);if(!s){const n='Wrong\x20password';M['info']({'file':'auth/warn','error':n,'user':w,'ip':d});throw new BadRequestError(n);}return delete Q['password_hash'],Q;}
1
+ import{BadRequestError}from'../../errors.js';import{verifyPassword}from'./index.js';function Q(){const X=['metrics','rows','info'];Q=function(){return X;};return Q();}function k(h,n){h=h-0xe6;const B=Q();let G=B[h];return G;}export async function verifyUser({user:h,password:n,ip:B},{pg:G,logger:f}){const u=k;if(!h||h==='')throw new BadRequestError('not\x20enough\x20params:\x20user');if(!n||n==='')throw new BadRequestError('not\x20enough\x20params:\x20password');f[u(0xe6)]('user.login');const j='select\x20uid\x20as\x20id,\x20user_type\x20as\x20type,\x20password_hash,\x20twofa,\x20first_name,\x20middle_name,last_name,email,phone,avatar,last_activity_date\x20from\x20admin.users\x20where\x20$1\x20in\x20(login,email,phone)\x20and\x20enabled\x20limit\x201',Z=await G['query'](j,[h])['then'](b=>b[u(0xe7)]?.[0x0]);if(!Z){const b='user\x20not\x20found';f[u(0xe8)]({'file':'auth/warn','error':b,'user':h,'ip':B});throw new BadRequestError(b);}const e=await verifyPassword(n,Z['password_hash']);if(!e){const P='Wrong\x20password';f['info']({'file':'auth/warn','error':P,'user':h,'ip':B});throw new BadRequestError(P);}return G['query']('update\x20admin.users\x20set\x20last_activity_date\x20=\x20now()\x20where\x20uid\x20=\x20$1',[Z['id']]),delete Z['password_hash'],Z;}
@@ -1 +1 @@
1
- import{ConflictError,NotFoundError,ValidationError}from'../errors.js';function Y(w,y){w=w-0x1cc;const d=f();let Z=d[w];return Z;}function f(){const b=['query','table_name','Invalid\x20dictionary\x20name:\x20','code','items','Dictionary\x20already\x20registered:\x20','static','rows','isArray','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20admin.dictionaries\x20(code,\x20name,\x20module,\x20source,\x20editable)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20($1,\x20$2,\x20$3,\x20$4,\x20$5)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ON\x20CONFLICT\x20(code)\x20DO\x20UPDATE\x20SET\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20name\x20=\x20EXCLUDED.name,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20module\x20=\x20EXCLUDED.module,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20source\x20=\x20EXCLUDED.source,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20editable\x20=\x20EXCLUDED.editable,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updated_at\x20=\x20now()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20id\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','fcore','DELETE\x20FROM\x20admin.dictionary_items\x20WHERE\x20dictionary_id\x20=\x20$1','COMMIT','release','set','get','values','map'];f=function(){return b;};return f();}const dictionaryName=/^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/;export function createDictionary({pg:w,dictionaries:dictionaries=[]}){const y=new Map(),d=new Map();let Z,M;async function H(){const x=Y;if(Z!==undefined)return Z;if(!w)throw new Error('empty\x20pg');return M??=w[x(0x1cc)]('\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20table_name\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20information_schema.tables\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20table_schema\x20=\x20\x27admin\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20AND\x20table_name\x20=\x20\x27dictionaries\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20LIMIT\x201\x0a\x20\x20\x20\x20\x20\x20\x20\x20')['then'](i=>{const o=x,G=i['rows'][0x0]?.[o(0x1cd)];Z=G==='dictionaries'?G:null;}),await M,Z;}function Q(i){const r=Y;if(!dictionaryName['test'](i))throw new ValidationError(r(0x1ce)+i);}function s(i){const S=Y;for(const G of Array['isArray'](i)?i:[i]){Q(G[S(0x1cf)]);if(!Array['isArray'](G[S(0x1d0)]))throw new ValidationError('Invalid\x20dictionary\x20items:\x20'+G['code']);if(y['has'](G['code']))throw new ConflictError(S(0x1d1)+G[S(0x1cf)]);y['set'](G[S(0x1cf)],{...G,'source':S(0x1d2)});}}function j(i){return y['has'](i);}async function n(i){const D=Y;Q(i);const G=y['get'](i);if(G&&G['checked'])return G['items'];const U=await H();if(!U)throw new NotFoundError('Dictionary\x20table\x20not\x20found');const E=await w?.['query']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20di.code,\x20di.name\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20admin.dictionary_items\x20di\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20JOIN\x20admin.dictionaries\x20d\x20ON\x20d.id\x20=\x20di.dictionary_id\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20d.code\x20=\x20$1\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20di.name\x0a\x20\x20\x20\x20\x20\x20\x20\x20',[i]);if(E?.[D(0x1d3)]?.['length']){const e=E?.['rows'];return y['set'](i,{'code':i,'name':i,'items':e,'source':'database','checked':!![]}),e;}if(!G?.[D(0x1d0)])throw new NotFoundError('Dictionary\x20not\x20found:\x20'+i);return G['checked']=!![],G['items'];}async function t(i,G){const p=Y;Q(i);if(!Array[p(0x1d4)](G))throw new ValidationError('Dictionary\x20items\x20must\x20be\x20an\x20array');const U=await H();if(!U)throw new NotFoundError('Dictionary\x20table\x20not\x20found');if(!w)throw new Error('empty\x20pg');const E=await w['connect']();try{await E['query']('BEGIN');const e=await E[p(0x1cc)](p(0x1d5),[i,i,p(0x1d6),'custom',!![]]),l=e['rows'][0x0]['id'];await E['query'](p(0x1d7),[l]);for(const A of G){await E['query']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20admin.dictionary_items\x20(dictionary_id,\x20code,\x20name,\x20parent_id)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20($1,\x20$2,\x20$3,\x20$4)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',[l,A['code'],A['name'],A['parentId']??null]);}await E[p(0x1cc)](p(0x1d8));}catch(c){await E[p(0x1cc)]('ROLLBACK');throw c;}finally{E[p(0x1d9)]();}y['set'](i,{'items':G,'code':i,'source':'static','checked':!![]}),d['set'](i,(d['get'](i)??0x0)+0x1);}function K(i){const W=Y;return Q(i),d[W(0x1da)](i,(d['get'](i)??0x0)+0x1),y['delete'](i);}function T(i){const I=Y;return d[I(0x1db)](i)??0x0;}async function h(){const a=Y,i=[...y[a(0x1dc)]()][a(0x1dd)](({code:E,name:e,source:l})=>({'code':E,'name':e??E,'source':l})),G=await H();if(!G)return i;if(!w)throw new Error('empty\x20pg');const U=await w['query']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20code,\x20name,\x20\x27database\x27\x20AS\x20source\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20admin.dictionaries\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20name\x0a\x20\x20\x20\x20\x20\x20\x20\x20');for(const E of U[a(0x1d3)]){!y['has'](E['code'])&&i['push'](E);}return i;}return s(dictionaries),{'register':s,'get':n,'put':t,'clear':K,'revision':T,'list':h,'has':j};}
1
+ import{ConflictError,NotFoundError,ValidationError}from'../errors.js';function k(h,n){h=h-0x12f;const B=Q();let G=B[h];return G;}const dictionaryName=/^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/;function Q(){const r=['\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20table_name\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20information_schema.tables\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20table_schema\x20=\x20\x27admin\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20AND\x20table_name\x20=\x20\x27dictionaries\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20LIMIT\x201\x0a\x20\x20\x20\x20\x20\x20\x20\x20','test','isArray','code','set','static','checked','rows','items','Dictionary\x20items\x20must\x20be\x20an\x20array','empty\x20pg','query','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20admin.dictionaries\x20(code,\x20name,\x20module,\x20source,\x20editable)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20($1,\x20$2,\x20$3,\x20$4,\x20$5)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ON\x20CONFLICT\x20(code)\x20DO\x20UPDATE\x20SET\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20name\x20=\x20EXCLUDED.name,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20module\x20=\x20EXCLUDED.module,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20source\x20=\x20EXCLUDED.source,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20editable\x20=\x20EXCLUDED.editable,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20updated_at\x20=\x20now()\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20id\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','fcore','DELETE\x20FROM\x20admin.dictionary_items\x20WHERE\x20dictionary_id\x20=\x20$1','name'];Q=function(){return r;};return Q();}export function createDictionary({pg:h,dictionaries:dictionaries=[]}){const n=new Map(),B=new Map();let G,f;async function j(){const d=k;if(G!==undefined)return G;if(!h)throw new Error('empty\x20pg');return f??=h['query'](d(0x12f))['then'](p=>{const z=p['rows'][0x0]?.['table_name'];G=z==='dictionaries'?z:null;}),await f,G;}function Z(p){const W=k;if(!dictionaryName[W(0x130)](p))throw new ValidationError('Invalid\x20dictionary\x20name:\x20'+p);}function e(p){const V=k;for(const z of Array[V(0x131)](p)?p:[p]){Z(z[V(0x132)]);if(!Array[V(0x131)](z['items']))throw new ValidationError('Invalid\x20dictionary\x20items:\x20'+z['code']);if(n['has'](z[V(0x132)]))throw new ConflictError('Dictionary\x20already\x20registered:\x20'+z['code']);n[V(0x133)](z[V(0x132)],{...z,'source':V(0x134)});}}function b(p){return n['has'](p);}async function P(p){const q=k;Z(p);const z=n['get'](p);if(z&&z[q(0x135)])return z['items'];const t=await j();if(!t)throw new NotFoundError('Dictionary\x20table\x20not\x20found');const m=await h?.['query']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20di.code,\x20di.name\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20admin.dictionary_items\x20di\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20JOIN\x20admin.dictionaries\x20d\x20ON\x20d.id\x20=\x20di.dictionary_id\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20d.code\x20=\x20$1\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20di.name\x0a\x20\x20\x20\x20\x20\x20\x20\x20',[p]);if(m?.[q(0x136)]?.['length']){const A=m?.['rows'];return n['set'](p,{'code':p,'name':p,'items':A,'source':'database','checked':!![]}),A;}if(!z?.[q(0x137)])throw new NotFoundError('Dictionary\x20not\x20found:\x20'+p);return z[q(0x135)]=!![],z[q(0x137)];}async function u(p,z){const y=k;Z(p);if(!Array['isArray'](z))throw new ValidationError(y(0x138));const t=await j();if(!t)throw new NotFoundError('Dictionary\x20table\x20not\x20found');if(!h)throw new Error(y(0x139));const m=await h['connect']();try{await m[y(0x13a)]('BEGIN');const A=await m['query'](y(0x13b),[p,p,y(0x13c),'custom',!![]]),U=A['rows'][0x0]['id'];await m['query'](y(0x13d),[U]);for(const O of z){await m['query']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20admin.dictionary_items\x20(dictionary_id,\x20code,\x20name,\x20parent_id)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20($1,\x20$2,\x20$3,\x20$4)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',[U,O['code'],O[y(0x13e)],O['parentId']??null]);}await m[y(0x13a)]('COMMIT');}catch(T){await m[y(0x13a)]('ROLLBACK');throw T;}finally{m['release']();}n[y(0x133)](p,{'items':z,'code':p,'source':y(0x134),'checked':!![]}),B['set'](p,(B['get'](p)??0x0)+0x1);}function X(p){return Z(p),B['set'](p,(B['get'](p)??0x0)+0x1),n['delete'](p);}function H(p){return B['get'](p)??0x0;}async function i(){const Y=k,p=[...n['values']()]['map'](({code:m,name:A,source:U})=>({'code':m,'name':A??m,'source':U})),z=await j();if(!z)return p;if(!h)throw new Error(Y(0x139));const t=await h[Y(0x13a)]('\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20code,\x20name,\x20\x27database\x27\x20AS\x20source\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20admin.dictionaries\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20name\x0a\x20\x20\x20\x20\x20\x20\x20\x20');for(const m of t['rows']){!n['has'](m[Y(0x132)])&&p['push'](m);}return p;}return e(dictionaries),{'register':e,'get':P,'put':u,'clear':X,'revision':H,'list':i,'has':b};}
@@ -1 +1 @@
1
- function Y(w,y){w=w-0x16f;const d=f();let Z=d[w];return Z;}function f(){const F=['startsWith','Invalid\x20file\x20path','replace','alloc','transformToByteArray','function','from','toString','hex','files','isAbsolute','resolve','readFile','mkdir','createHmac','base64url','length','endpoint','us-east-1','send','bucket','Body','sha256','update','timingSafeEqual'];f=function(){return F;};return f();}import w from'node:fs/promises';import y from'node:path';import{DeleteObjectCommand,GetObjectCommand,HeadObjectCommand,PutObjectCommand,S3Client}from'@aws-sdk/client-s3';import d from'node:crypto';import{ValidationError}from'../errors.js';import{UnauthorizedError}from'../errors.js';function normalizeRelativePath(Z){const U=Y;if(!Z||Z[U(0x16f)]('/')||Z['includes']('..'))throw new ValidationError(U(0x170));return Z[U(0x171)](/\\/g,'/')['replace'](/^\/+/,'');}function keyFor(Z,M){return''+((Z??'')['replace'](/^\/+|\/+$/g,'')?(Z??'')['replace'](/^\/+|\/+$/g,'')+'/':'')+normalizeRelativePath(M);}async function bodyToBuffer(Z){const E=Y;if(!Z)return Buffer[E(0x172)](0x0);const M=Z;if(typeof M[E(0x173)]===E(0x174))return Buffer['from'](await M[E(0x173)]());const H=[];for await(const Q of Z){H['push'](Buffer[E(0x175)](Q));}return Buffer['concat'](H);}export function createFileLocal(Z){const e=Y,M=y['resolve'](Z['storagePath']||'./storage'),H=y['join'](M,'removed'),Q=Z['tokenSecret']??process.env.FILE_TOKEN_SECRET??d['randomBytes'](0x20)[e(0x176)](e(0x177)),s=t=>{const l=e,K=normalizeRelativePath(t),T=(Z['folder']??l(0x178))['replace'](/^\/+|\/+$/g,'');return T?y['join'](T,K):K;},j=t=>{const A=e,K=s(t),T=y['resolve'](M,K),h=y['relative'](M,T);if(h['startsWith']('..')||y[A(0x179)](h))throw new ValidationError('Invalid\x20file\x20path');return T;},n=t=>{const c=e,K=s(t),T=y[c(0x17a)](H,K),h=y['relative'](H,T);if(h[c(0x16f)]('..')||y['isAbsolute'](h))throw new ValidationError('Invalid\x20file\x20path');return T;};return{async 'put'(t,K){const T=j(t);await w['mkdir'](y['dirname'](T),{'recursive':!![]}),await w['writeFile'](T,K instanceof Buffer?K:await bodyToBuffer(K));},async 'get'(t){const x=e;return w[x(0x17b)](j(t));},async 'exists'(t){try{return await w['access'](j(t)),!![];}catch{return![];}},async 'delete'(t){const o=e,K=j(t),T=n(t);try{await w[o(0x17c)](y['dirname'](T),{'recursive':!![]}),await w['rename'](K,T);}catch(h){const i=h;if(i['code']!=='ENOENT')throw h;}},'create'(t,K=Z['tokenTtl']??0xe10){const r=e,T=Buffer['from'](t)['toString']('base64url'),h=d[r(0x17d)]('sha256',Q)['update'](T)['digest']('base64url');return T+'.'+h;},'verify'(t){const S=e,[K,T]=t['split']('.');if(!K||!T)throw new UnauthorizedError('Invalid\x20file\x20token');const h=d['createHmac']('sha256',Q)['update'](K)['digest'](),i=Buffer[S(0x175)](T,S(0x17e));if(h['length']!==i[S(0x17f)]||!d['timingSafeEqual'](h,i))throw new UnauthorizedError('Invalid\x20file\x20token');const G=Buffer[S(0x175)](K,'base64url')['toString']('utf8');return G;}};}export function createFileS3(Z){const D=Y,M=Z['tokenSecret']??process.env.FILE_TOKEN_SECRET??d['randomBytes'](0x20)['toString']('hex'),H=new S3Client({'endpoint':Z[D(0x180)],'region':Z['region']??D(0x181),'forcePathStyle':Z['forcePathStyle']??!![],'credentials':Z['accessKeyId']||Z['accessKey']?{'accessKeyId':Z['accessKeyId']??Z['accessKey'],'secretAccessKey':Z['secretAccessKey']??Z['secretKey']}:undefined}),Q=s=>keyFor(Z['folder'],s);return{async 'put'(s,j){const p=D;await H[p(0x182)](new PutObjectCommand({'Bucket':Z[p(0x183)],'Key':Q(s),'Body':j}));},async 'get'(s){const W=D,j=await H['send'](new GetObjectCommand({'Bucket':Z['bucket'],'Key':Q(s)}));return bodyToBuffer(j[W(0x184)]);},async 'exists'(s){const I=D;try{return await H['send'](new HeadObjectCommand({'Bucket':Z[I(0x183)],'Key':Q(s)})),!![];}catch(j){const n=j;if(n['$metadata']?.['httpStatusCode']===0x194||n['name']==='NotFound')return![];throw j;}},async 'delete'(s){const a=D;await H[a(0x182)](new DeleteObjectCommand({'Bucket':Z['bucket'],'Key':Q(s)}));},'create'(s,j=Z['tokenTtl']??0xe10){const b=D,n=Buffer[b(0x175)](s)['toString']('base64url'),t=d['createHmac'](b(0x185),M)[b(0x186)](n)['digest'](b(0x17e));return n+'.'+t;},'verify'(s){const C=D,[j,n]=s['split']('.');if(!j||!n)throw new UnauthorizedError('Invalid\x20file\x20token');const t=d['createHmac']('sha256',M)[C(0x186)](j)['digest'](),K=Buffer[C(0x175)](n,'base64url');if(t['length']!==K['length']||!d[C(0x187)](t,K))throw new UnauthorizedError('Invalid\x20file\x20token');const T=Buffer[C(0x175)](j,C(0x17e))[C(0x176)]('utf8');return T;}};}
1
+ import h from'node:fs/promises';import n from'node:path';import{DeleteObjectCommand,GetObjectCommand,HeadObjectCommand,PutObjectCommand,S3Client}from'@aws-sdk/client-s3';import B from'node:crypto';import{ValidationError}from'../errors.js';import{UnauthorizedError}from'../errors.js';function normalizeRelativePath(G){const t=k;if(!G||G['startsWith']('/')||G[t(0x7b)]('..'))throw new ValidationError('Invalid\x20file\x20path');return G[t(0x7c)](/\\/g,'/')[t(0x7c)](/^\/+/,'');}function Q(){const R=['includes','replace','storagePath','join','toString','relative','Invalid\x20file\x20path','readFile','mkdir','rename','tokenTtl','from','base64url','sha256','update','digest','length','timingSafeEqual','tokenSecret','region','us-east-1','forcePathStyle','secretKey','bucket','send','httpStatusCode','Invalid\x20file\x20token'];Q=function(){return R;};return Q();}function keyFor(G,f){const m=k;return''+((G??'')[m(0x7c)](/^\/+|\/+$/g,'')?(G??'')[m(0x7c)](/^\/+|\/+$/g,'')+'/':'')+normalizeRelativePath(f);}async function bodyToBuffer(G){if(!G)return Buffer['alloc'](0x0);const f=G;if(typeof f['transformToByteArray']==='function')return Buffer['from'](await f['transformToByteArray']());const j=[];for await(const Z of G){j['push'](Buffer['from'](Z));}return Buffer['concat'](j);}function k(h,n){h=h-0x7b;const B=Q();let G=B[h];return G;}export function createFileLocal(G){const A=k,f=n['resolve'](G[A(0x7d)]||'./storage'),j=n[A(0x7e)](f,'removed'),Z=G['tokenSecret']??process.env.FILE_TOKEN_SECRET??B['randomBytes'](0x20)[A(0x7f)]('hex'),e=u=>{const X=normalizeRelativePath(u),H=(G['folder']??'files')['replace'](/^\/+|\/+$/g,'');return H?n['join'](H,X):X;},b=u=>{const X=e(u),H=n['resolve'](f,X),i=n['relative'](f,H);if(i['startsWith']('..')||n['isAbsolute'](i))throw new ValidationError('Invalid\x20file\x20path');return H;},P=u=>{const U=A,X=e(u),H=n['resolve'](j,X),i=n[U(0x80)](j,H);if(i['startsWith']('..')||n['isAbsolute'](i))throw new ValidationError(U(0x81));return H;};return{async 'put'(u,X){const H=b(u);await h['mkdir'](n['dirname'](H),{'recursive':!![]}),await h['writeFile'](H,X instanceof Buffer?X:await bodyToBuffer(X));},async 'get'(u){const O=A;return h[O(0x82)](b(u));},async 'exists'(u){try{return await h['access'](b(u)),!![];}catch{return![];}},async 'delete'(u){const T=A,X=b(u),H=P(u);try{await h[T(0x83)](n['dirname'](H),{'recursive':!![]}),await h[T(0x84)](X,H);}catch(i){const p=i;if(p['code']!=='ENOENT')throw i;}},'create'(u,X=G[A(0x85)]??0xe10){const d=A,H=Buffer[d(0x86)](u)['toString'](d(0x87)),i=B['createHmac'](d(0x88),Z)[d(0x89)](H)[d(0x8a)]('base64url');return H+'.'+i;},'verify'(u){const W=A,[X,H]=u['split']('.');if(!X||!H)throw new UnauthorizedError('Invalid\x20file\x20token');const i=B['createHmac'](W(0x88),Z)['update'](X)['digest'](),p=Buffer['from'](H,W(0x87));if(i[W(0x8b)]!==p['length']||!B[W(0x8c)](i,p))throw new UnauthorizedError('Invalid\x20file\x20token');const z=Buffer[W(0x86)](X,W(0x87))['toString']('utf8');return z;}};}export function createFileS3(G){const V=k,f=G[V(0x8d)]??process.env.FILE_TOKEN_SECRET??B['randomBytes'](0x20)['toString']('hex'),j=new S3Client({'endpoint':G['endpoint'],'region':G[V(0x8e)]??V(0x8f),'forcePathStyle':G[V(0x90)]??!![],'credentials':G['accessKeyId']||G['accessKey']?{'accessKeyId':G['accessKeyId']??G['accessKey'],'secretAccessKey':G['secretAccessKey']??G[V(0x91)]}:undefined}),Z=e=>keyFor(G['folder'],e);return{async 'put'(e,b){const q=V;await j['send'](new PutObjectCommand({'Bucket':G[q(0x92)],'Key':Z(e),'Body':b}));},async 'get'(e){const y=V,b=await j[y(0x93)](new GetObjectCommand({'Bucket':G[y(0x92)],'Key':Z(e)}));return bodyToBuffer(b['Body']);},async 'exists'(e){const Y=V;try{return await j['send'](new HeadObjectCommand({'Bucket':G[Y(0x92)],'Key':Z(e)})),!![];}catch(b){const P=b;if(P['$metadata']?.[Y(0x94)]===0x194||P['name']==='NotFound')return![];throw b;}},async 'delete'(e){await j['send'](new DeleteObjectCommand({'Bucket':G['bucket'],'Key':Z(e)}));},'create'(e,b=G['tokenTtl']??0xe10){const r=V,P=Buffer[r(0x86)](e)['toString']('base64url'),u=B['createHmac'](r(0x88),f)['update'](P)['digest']('base64url');return P+'.'+u;},'verify'(e){const v=V,[b,P]=e['split']('.');if(!b||!P)throw new UnauthorizedError('Invalid\x20file\x20token');const u=B['createHmac']('sha256',f)[v(0x89)](b)['digest'](),X=Buffer['from'](P,'base64url');if(u['length']!==X['length']||!B['timingSafeEqual'](u,X))throw new UnauthorizedError(v(0x95));const H=Buffer['from'](b,v(0x87))['toString']('utf8');return H;}};}
@@ -1 +1 @@
1
- const H=Y;import{SignJWT,jwtVerify}from'jose';const secret=new TextEncoder()[H(0xa0)](process.env.AUTH_JWT_SECRET);function f(){const n=['encode','HS256','setIssuedAt','sign','catch','log','message','payload'];f=function(){return n;};return f();}function Y(w,y){w=w-0xa0;const d=f();let Z=d[w];return Z;}export async function jwtSignToken(w){const Q=H;if(!process.env.AUTH_JWT_SECRET)return;const {id:y,type:d,permissions:Z}=w,M=await new SignJWT({'id':y,'type':d,'permissions':Z})['setProtectedHeader']({'alg':Q(0xa1)})[Q(0xa2)]()['setExpirationTime']('1h')[Q(0xa3)](secret);return M;}export async function jwtVerifyToken(w){const s=H,y=await jwtVerify(w,secret,{'algorithms':[s(0xa1)]})[s(0xa4)](d=>{const j=s;console[j(0xa5)](d[j(0xa6)]);});return y?.[s(0xa7)];}
1
+ import{SignJWT,jwtVerify}from'jose';function k(h,n){h=h-0x120;const B=Q();let G=B[h];return G;}const secret=new TextEncoder()['encode'](process.env.AUTH_JWT_SECRET);function Q(){const e=['catch','log','message','payload'];Q=function(){return e;};return Q();}export async function jwtSignToken(h){if(!process.env.AUTH_JWT_SECRET)return;const {id:n,type:B,permissions:G}=h,f=await new SignJWT({'id':n,'type':B,'permissions':G})['setProtectedHeader']({'alg':'HS256'})['setIssuedAt']()['setExpirationTime']('1h')['sign'](secret);return f;}export async function jwtVerifyToken(h){const j=k,n=await jwtVerify(h,secret,{'algorithms':['HS256']})[j(0x120)](B=>{const Z=j;console[Z(0x121)](B[Z(0x122)]);});return n?.[j(0x123)];}
@@ -1 +1 @@
1
- import w from'pino';function f(){const j=['stdTimeFunctions','accessToken','refreshToken'];f=function(){return j;};return f();}function Y(w,y){w=w-0x192;const d=f();let Z=d[w];return Z;}export function createLogger(){const s=Y,y=w['transport']({'target':'./transport.js'}),d=w({'level':'info','timestamp':w[s(0x192)]['isoTime'],'base':{'service':'app'},'redact':{'paths':['req.headers.authorization','password','token',s(0x193),s(0x194)],'censor':'[REDACTED]'}},y),Z={};function M(H,Q){if(H===undefined)return{...Z};Z[H]=(Z[H]??0x0)+(Q??0x1);}return Object['assign'](d,{'close':async()=>y['end'](),'metrics':M,'file':()=>d['info']['bind'](d)});}
1
+ import h from'pino';export function createLogger(){const e=k,n=h['transport']({'target':'./transport.js'}),B=h({'level':'info','timestamp':h[e(0x1ef)][e(0x1f0)],'base':{'service':'app'},'redact':{'paths':['req.headers.authorization',e(0x1f1),'token','accessToken',e(0x1f2)],'censor':'[REDACTED]'}},n),G={};function f(j,Z){if(j===undefined)return{...G};G[j]=(G[j]??0x0)+(Z??0x1);}return Object[e(0x1f3)](B,{'close':async()=>n[e(0x1f4)](),'metrics':f,'file':()=>B[e(0x1f5)]['bind'](B)});}function k(h,n){h=h-0x1ef;const B=Q();let G=B[h];return G;}function Q(){const b=['stdTimeFunctions','isoTime','password','refreshToken','assign','end','info'];Q=function(){return b;};return Q();}
@@ -1 +1 @@
1
- function Y(w,y){w=w-0x14b;const d=f();let Z=d[w];return Z;}const s=Y;import w from'node:fs';import y from'node:path';import d from'pino-abstract-transport';function f(){const h=['error','slice','logs','createWriteStream','.log','stream','clear','file','write'];f=function(){return h;};return f();}const LEVELS={0x1e:'info',0x28:'warn',0x32:'error',0x3c:s(0x14b)},streams=new Map();function getDate(){const j=s;return new Date()['toISOString']()[j(0x14c)](0x0,0xa);}function createStream(Z,M){const n=s,H=y['resolve'](n(0x14d),Z);return w['mkdirSync'](H,{'recursive':!![]}),w[n(0x14e)](y['join'](H,M+n(0x14f)),{'flags':'a'});}function getStream(Z){const t=s,M=getDate(),H=streams['get'](Z);if(H&&H['date']===M)return H[t(0x150)];H?.['stream']['end']();const Q=createStream(Z,M);return streams['set'](Z,{'date':M,'stream':Q}),Q;}function closeStreams(){const K=s;for(const {stream:Z}of streams['values']()){Z['end']();}streams[K(0x151)]();}export default async function loggerTransport(){return d(writeLogs,{'close':async()=>{closeStreams();}});}async function writeLogs(Z){const T=s;for await(const M of Z){const H=LEVELS[M['level']];if(!H)continue;const Q=getStream(M[T(0x152)]||H);delete M[T(0x152)],Q[T(0x153)](JSON['stringify'](M)+'\x0a');}}
1
+ const e=k;import h from'node:fs';import n from'node:path';import B from'pino-abstract-transport';function Q(){const X=['info','warn','error','slice','createWriteStream','set'];Q=function(){return X;};return Q();}const LEVELS={0x1e:e(0x16a),0x28:e(0x16b),0x32:e(0x16c),0x3c:'error'},streams=new Map();function getDate(){const b=e;return new Date()['toISOString']()[b(0x16d)](0x0,0xa);}function createStream(G,f){const P=e,j=n['resolve']('logs',G);return h['mkdirSync'](j,{'recursive':!![]}),h[P(0x16e)](n['join'](j,f+'.log'),{'flags':'a'});}function getStream(G){const u=e,f=getDate(),j=streams['get'](G);if(j&&j['date']===f)return j['stream'];j?.['stream']['end']();const Z=createStream(G,f);return streams[u(0x16f)](G,{'date':f,'stream':Z}),Z;}function k(h,n){h=h-0x16a;const B=Q();let G=B[h];return G;}function closeStreams(){for(const {stream:G}of streams['values']()){G['end']();}streams['clear']();}export default async function loggerTransport(){return B(writeLogs,{'close':async()=>{closeStreams();}});}async function writeLogs(G){for await(const f of G){const j=LEVELS[f['level']];if(!j)continue;const Z=getStream(f['file']||j);delete f['file'],Z['write'](JSON['stringify'](f)+'\x0a');}}
@@ -1 +1 @@
1
- function Y(w,y){w=w-0xae;const d=f();let Z=d[w];return Z;}import w from'pg';const {Pool}=w;export function createDatabase(y){const K=Y,d=new Pool(y),Z=d['query'][K(0xae)](d);function M(H,Q){const s=new Error();return Error['captureStackTrace']?.(s,M),Z(H,Q)['catch'](j=>{const n=j;n['sql']=H,n['callerStack']=s['stack'];throw n;});}return d['query']=M,d['transaction']=async function(H){const T=K,Q=new Error();Error['captureStackTrace']?.(Q,d[T(0xaf)]);const s=await d['connect']();try{await s[T(0xb0)](T(0xb1));const j=await H(s);return await s[T(0xb0)](T(0xb2)),j;}catch(n){await s['query']('ROLLBACK');const t=n;t['callerStack']=Q[T(0xb3)];throw t;}finally{s['release']();}},d;}function f(){const h=['bind','transaction','query','BEGIN','COMMIT','stack'];f=function(){return h;};return f();}
1
+ import h from'pg';function k(h,n){h=h-0x8b;const B=Q();let G=B[h];return G;}const {Pool}=h;export function createDatabase(n){const H=k,B=new Pool(n),G=B['query']['bind'](B);function f(j,Z){const X=k,e=new Error();return Error['captureStackTrace']?.(e,f),G(j,Z)[X(0x8b)](b=>{const P=b;P['sql']=j,P['callerStack']=e['stack'];throw P;});}return B['query']=f,B[H(0x8c)]=async function(j){const i=H,Z=new Error();Error[i(0x8d)]?.(Z,B[i(0x8c)]);const e=await B[i(0x8e)]();try{await e['query']('BEGIN');const b=await j(e);return await e['query']('COMMIT'),b;}catch(P){await e['query'](i(0x8f));const u=P;u[i(0x90)]=Z['stack'];throw u;}finally{e[i(0x91)]();}},B;}function Q(){const p=['catch','transaction','captureStackTrace','connect','ROLLBACK','callerStack','release'];Q=function(){return p;};return Q();}
@@ -1 +1 @@
1
- function f(){const j=['Creating\x20Redis\x20client\x20with\x20config:','set','del','quit','ping','incrby'];f=function(){return j;};return f();}import{Redis}from'ioredis';function Y(w,y){w=w-0x14e;const d=f();let Z=d[w];return Z;}export function createRedis(w){const Q=Y;console['log'](Q(0x14e),w);const y=new Redis(w);return{'get':d=>y['get'](d),'set':(d,Z,M,H)=>{const s=Q;if(H)return y['set'](d,Z,'EX',H);if(typeof M==='number')return y[s(0x14f)](d,Z,'EX',M);return y['set'](d,Z);},'del':d=>y[Q(0x150)](d),'delete':d=>y['del'](d),'close':()=>y[Q(0x151)](),'ping':()=>y[Q(0x152)](),'hincrby':(d,Z,M)=>y['hincrby'](d,Z,M),'incrby':(d,Z)=>y[Q(0x153)](d,Z)};}
1
+ import{Redis}from'ioredis';export function createRedis(h){const Z=k;console[Z(0xcd)](Z(0xce),h);const n=new Redis(h);return{'get':B=>n[Z(0xcf)](B),'set':(B,G,f,j)=>{if(j)return n['set'](B,G,'EX',j);if(typeof f==='number')return n['set'](B,G,'EX',f);return n['set'](B,G);},'del':B=>n['del'](B),'delete':B=>n[Z(0xd0)](B),'close':()=>n['quit'](),'ping':()=>n['ping'](),'hincrby':(B,G,f)=>n['hincrby'](B,G,f),'incrby':(B,G)=>n['incrby'](B,G)};}function k(h,n){h=h-0xcd;const B=Q();let G=B[h];return G;}function Q(){const e=['log','Creating\x20Redis\x20client\x20with\x20config:','get','del'];Q=function(){return e;};return Q();}
@@ -1,3 +1,3 @@
1
- import type { ResourceDependencies, ResourcePlugin } from './resource.types.js';
1
+ import type { ResourceDependencies, ResourcePlugin } from "./resource.types.js";
2
2
  export declare function createResource(deps: ResourceDependencies): ResourcePlugin;
3
3
  //# sourceMappingURL=resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../../src/plugins/resource/resource.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAUhF,wBAAgB,cAAc,CAAC,IAAI,EAAE,oBAAoB,GAAG,cAAc,CA2BzE"}
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../../src/plugins/resource/resource.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAUhF,wBAAgB,cAAc,CAAC,IAAI,EAAE,oBAAoB,GAAG,cAAc,CA4BzE"}
@@ -1 +1 @@
1
- import{ResourceRegistry}from'./resource.registry.js';import{createFind}from'./services/find.js';import{createFindOne}from'./services/find-one.js';import{createCreate}from'./services/create.js';function f(){const T=['has','bind'];f=function(){return T;};return f();}import{createUpdate}from'./services/update.js';import{createRemove}from'./services/delete.js';import{createFindRelation}from'./services/find-relation.js';function Y(w,y){w=w-0x1eb;const d=f();let Z=d[w];return Z;}import{createCreateRelation}from'./services/create-relation.js';import{createDeleteRelation}from'./services/delete-relation.js';import{createUpdateRelation}from'./services/update-relation.js';export function createResource(w){const K=Y,y=new ResourceRegistry(),d=createFind(w,y),Z=createFindOne(w,y),M=createCreate(w,y),H=createUpdate(w,y),Q=createRemove(w,y),s=createFindRelation(w,y),j=createCreateRelation(w,y),n=createUpdateRelation(w,y),t=createDeleteRelation(w,y);return{'register':y['register']['bind'](y),'has':y[K(0x1eb)]['bind'](y),'get':y['get']['bind'](y),'list':y['list'][K(0x1ec)](y),'find':d,'findOne':Z,'create':M,'update':H,'delete':Q,'findRelation':s,'createRelation':j,'updateRelation':n,'deleteRelation':t};}
1
+ import{ResourceRegistry}from'./resource.registry.js';import{createFind}from'./services/find.js';function Q(){const H=['bind','has','get'];Q=function(){return H;};return Q();}import{createFindOne}from'./services/find-one.js';function k(h,n){h=h-0x1a5;const B=Q();let G=B[h];return G;}import{createCreate}from'./services/create.js';import{createUpdate}from'./services/update.js';import{createRemove}from'./services/delete.js';import{createFindRelation}from'./services/find-relation.js';import{createCreateRelation}from'./services/create-relation.js';import{createDeleteRelation}from'./services/delete-relation.js';import{createUpdateRelation}from'./services/update-relation.js';export function createResource(h){const X=k,n=new ResourceRegistry(),B=createFind(h,n),G=createFindOne(h,n),f=createCreate(h,n),j=createUpdate(h,n),Z=createRemove(h,n),e=createFindRelation(h,n),b=createCreateRelation(h,n),P=createUpdateRelation(h,n),u=createDeleteRelation(h,n);return{'register':n['register']['bind'](n),'unregister':n['unregister'][X(0x1a5)](n),'has':n[X(0x1a6)][X(0x1a5)](n),'get':n[X(0x1a7)][X(0x1a5)](n),'list':n['list']['bind'](n),'find':B,'findOne':G,'create':f,'update':j,'delete':Z,'findRelation':e,'createRelation':b,'updateRelation':P,'deleteRelation':u};}
@@ -1,7 +1,8 @@
1
- import type { ResourceContract } from './resource.types.js';
1
+ import type { ResourceContract } from "./resource.types.js";
2
2
  export declare class ResourceRegistry {
3
3
  private readonly resources;
4
- register(input: ResourceContract | ResourceContract[]): void;
4
+ unregister(name: string): void;
5
+ register(input: ResourceContract | ResourceContract[], overwrite?: boolean): void;
5
6
  has(name: string): boolean;
6
7
  get(name: string): ResourceContract;
7
8
  list(): ResourceContract[];
@@ -1 +1 @@
1
- {"version":3,"file":"resource.registry.d.ts","sourceRoot":"","sources":["../../../src/plugins/resource/resource.registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAK5D,qBAAa,gBAAgB;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuC;IAEjE,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,QAOpD;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,WAEf;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,oBAKf;IAED,IAAI,uBAEH;IAED,OAAO,CAAC,QAAQ;CAQnB"}
1
+ {"version":3,"file":"resource.registry.d.ts","sourceRoot":"","sources":["../../../src/plugins/resource/resource.registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAK5D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuC;IACjE,UAAU,CAAC,IAAI,EAAE,MAAM,QAEtB;IACD,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,EAAE,SAAS,UAAQ,QAUvE;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,WAEf;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,oBAIf;IAED,IAAI,uBAEH;IAED,OAAO,CAAC,QAAQ;CAajB"}
@@ -1 +1 @@
1
- function f(){const n=['test','register','isArray','validate','resources','name','has','Resource\x20not\x20registered:\x20','table'];f=function(){return n;};return f();}function Y(w,y){w=w-0x166;const d=f();let Z=d[w];return Z;}const M=Y;import{ValidationError,ConflictError,NotFoundError}from'../../errors.js';const ident=/^[a-zA-Z0-9_-]*$/;function validQualified(w){const Z=Y;return w['split']('.')['length']<=0x2&&w['split']('.')['every'](y=>ident[Z(0x166)](y));}export class ResourceRegistry{['resources']=new Map();[M(0x167)](w){const H=M;for(const y of Array[H(0x168)](w)?w:[w]){this[H(0x169)](y);if(this[H(0x16a)]['has'](y[H(0x16b)]))throw new ConflictError('Resource\x20already\x20registered:\x20'+y['name']);this['resources']['set'](y['name'],y);}}[M(0x16c)](w){return this['resources']['has'](w);}['get'](w){const Q=M,y=this[Q(0x16a)]['get'](w);if(!y)throw new NotFoundError(Q(0x16d)+w);return y;}['list'](){const s=M;return[...this[s(0x16a)]['values']()];}[M(0x169)](w){const j=M;if(w['version']!==0x1||!ident[j(0x166)](w[j(0x16b)])||!validQualified(w[j(0x16e)])||!ident['test'](w['key']))throw new ValidationError('Invalid\x20resource\x20contract:\x20'+w['name']);for(const [y,d]of Object['entries'](w['fields'])){if(!ident['test'](y)||!ident['test'](d['column']??y))throw new ValidationError('Invalid\x20resource\x20field:\x20'+y);}}}
1
+ function k(h,n){h=h-0x111;const B=Q();let G=B[h];return G;}function Q(){const u=['split','test','resources','register','name','set','get','values','table'];Q=function(){return u;};return Q();}const f=k;import{ValidationError,ConflictError,NotFoundError}from'../../errors.js';const ident=/^[a-zA-Z0-9_-]*$/;function validQualified(h){const G=k;return h[G(0x111)]('.')['length']<=0x2&&h['split']('.')['every'](n=>ident[G(0x112)](n));}export class ResourceRegistry{[f(0x113)]=new Map();['unregister'](h){const j=f;this[j(0x113)]['delete'](h);}[f(0x114)](h,n=![]){const Z=f;for(const B of Array['isArray'](h)?h:[h]){this['validate'](B);if(this['resources']['has'](B[Z(0x115)])&&!n)throw new ConflictError('Resource\x20already\x20registered:\x20'+B['name']);this['resources'][Z(0x116)](B[Z(0x115)],B);}}['has'](h){return this['resources']['has'](h);}['get'](h){const e=f,n=this[e(0x113)][e(0x117)](h);if(!n)throw new NotFoundError('Resource\x20not\x20registered:\x20'+h);return n;}['list'](){const b=f;return[...this['resources'][b(0x118)]()];}['validate'](h){const P=f;if(h['version']!==0x1||!ident['test'](h['name'])||!validQualified(h[P(0x119)])||!ident['test'](h['key']))throw new ValidationError('Invalid\x20resource\x20contract:\x20'+h['name']);for(const [n,B]of Object['entries'](h['fields'])){if(!ident['test'](n)||!ident['test'](B['column']??n))throw new ValidationError('Invalid\x20resource\x20field:\x20'+n);}}}
@@ -8,12 +8,12 @@ import type { DictionaryPlugin } from "../dictionary.js";
8
8
  import type { FileAdapter } from "../file.js";
9
9
  import { User } from "../../context.js";
10
10
  import type { AppContext } from "../../context.js";
11
- export type ResourceAggregate = 'count' | 'countDistinct' | 'sum' | 'avg' | 'min' | 'max';
11
+ export type ResourceAggregate = "count" | "countDistinct" | "sum" | "avg" | "min" | "max";
12
12
  export type ResourceSummaryItem = {
13
- aggregate: 'count';
13
+ aggregate: "count";
14
14
  where?: string;
15
15
  } | {
16
- aggregate: 'countDistinct' | 'sum' | 'avg' | 'min' | 'max';
16
+ aggregate: "countDistinct" | "sum" | "avg" | "min" | "max";
17
17
  field: string;
18
18
  where?: string;
19
19
  } | {
@@ -38,6 +38,7 @@ export interface ResourceFieldContract {
38
38
  readable?: boolean;
39
39
  writable?: boolean;
40
40
  required?: boolean;
41
+ code_template?: string;
41
42
  nullable?: boolean;
42
43
  filterable?: boolean;
43
44
  searchable?: boolean;
@@ -58,7 +59,9 @@ export interface ResourceFieldContract {
58
59
  maximum?: number;
59
60
  pattern?: string;
60
61
  }
62
+ export type ResourceRelationType = 'one' | 'many';
61
63
  export interface ResourceRelationContract {
64
+ type?: ResourceRelationType;
62
65
  resource?: string;
63
66
  table?: string;
64
67
  where?: string;
@@ -79,6 +82,7 @@ export interface ResourceContract {
79
82
  table: string;
80
83
  where?: string;
81
84
  key: string;
85
+ display?: string[] | string;
82
86
  operations: ResourceOperation[];
83
87
  searchable?: string[];
84
88
  capabilities?: string[];
@@ -90,6 +94,19 @@ export interface ResourceContract {
90
94
  summary?: Record<string, ResourceSummaryItem>;
91
95
  scopes?: Record<string, string | ResourceScope>;
92
96
  }
97
+ export interface ResourceVariableDto {
98
+ key: string;
99
+ path: string;
100
+ title?: string;
101
+ type: "string" | "number" | "boolean" | "object" | "array";
102
+ resource?: string;
103
+ variables?: ResourceVariableDto[];
104
+ }
105
+ export interface ResourceSchemaDto {
106
+ resource: string;
107
+ title?: string;
108
+ variables: ResourceVariableDto[];
109
+ }
93
110
  export interface ResourceQuery {
94
111
  filter?: Record<string, unknown>;
95
112
  include?: string | string[];
@@ -105,6 +122,7 @@ export interface ResourceListResult<T = Record<string, unknown>> {
105
122
  summary: Record<string, unknown>;
106
123
  limit: number;
107
124
  time: number;
125
+ fields?: Record<string, ResourceFieldContract>;
108
126
  count: number | null;
109
127
  total: number | null;
110
128
  offset: number;
@@ -118,7 +136,8 @@ export interface ResourceDependencies {
118
136
  file?: FileAdapter;
119
137
  }
120
138
  export interface ResourcePlugin {
121
- register(input: ResourceContract | ResourceContract[]): void;
139
+ register(input: ResourceContract | ResourceContract[], overwrite?: boolean): void;
140
+ unregister(name: string): void;
122
141
  has(name: string): boolean;
123
142
  get(name: string): ResourceContract;
124
143
  list(): ResourceContract[];
@@ -1 +1 @@
1
- {"version":3,"file":"resource.types.d.ts","sourceRoot":"","sources":["../../../src/plugins/resource/resource.types.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,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,MAAM,iBAAiB,GACzB,OAAO,GACP,eAAe,GACf,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,CAAC;AAEV,MAAM,MAAM,mBAAmB,GAC3B;IACA,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACC;IACA,SAAS,EAAE,eAAe,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACC;IACA,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEJ,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAE;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACxE,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;CACb;AACD,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EACH,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,MAAM,GACN,MAAM,GACN,MAAM,GACN,WAAW,GACX,MAAM,GACN,MAAM,GACN,UAAU,GACV,MAAM,CAAC;IACT,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AACD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IACrD,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC/B,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC;CACjD;AACD,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AACD,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC7D,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC;AAChC,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,eAAe,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AACD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,GAAG,IAAI,CAAC;IAC7D,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACpC,IAAI,IAAI,gBAAgB,EAAE,CAAC;IAE3B,IAAI,CAAC,MAAM,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,aAAa,CAAC;QACtB,IAAI,CAAC,EAAE,YAAY,CAAC;KACrB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAChC,OAAO,CAAC,MAAM,EAAE;QACd,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,aAAa,CAAC;QACtB,IAAI,CAAC,EAAE,YAAY,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5C,MAAM,CACJ,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,YAAY,CAAC;KACrB,EACD,GAAG,CAAC,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpC,MAAM,CACJ,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,YAAY,CAAC;KACrB,EACD,GAAG,CAAC,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpC,MAAM,CACJ,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,YAAY,CAAC;KACrB,EACD,GAAG,CAAC,EAAE,UAAU,GACf,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB,YAAY,CAAC,MAAM,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,aAAa,CAAC;QACtB,IAAI,CAAC,EAAE,YAAY,CAAC;KACrB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACjB,cAAc,CACZ,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,EAAE,YAAY,CAAC;KACrB,EACD,GAAG,CAAC,EAAE,UAAU,GACf,OAAO,CAAC,GAAG,CAAC,CAAC;IAChB,cAAc,CACZ,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,YAAY,CAAC;KACrB,EACD,GAAG,CAAC,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpC,cAAc,CACZ,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,YAAY,CAAC;KACrB,EACD,GAAG,CAAC,EAAE,UAAU,GACf,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAClC"}
1
+ {"version":3,"file":"resource.types.d.ts","sourceRoot":"","sources":["../../../src/plugins/resource/resource.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- function Y(w,y){w=w-0x18c;const d=f();let Z=d[w];return Z;}const dictionaryIndexesCache=new WeakMap(),dictionaryRevisionsCache=new WeakMap();async function getDictionaryIndexes(w,y){const K=Y,d=dictionaryIndexesCache[K(0x18c)](y)??new Map(),Z=dictionaryRevisionsCache['get'](y)??new Map();dictionaryIndexesCache['set'](y,d),dictionaryRevisionsCache['set'](y,Z);const M=w['filter'](Q=>Z['get'](Q)!==y['revision'](Q));if(M['length']===0x0)return d;const H=await Promise[K(0x18d)](M['map'](async Q=>{const T=K;if(!y['has'](Q))return[Q,new Map()];const s=await y['get'](Q),j=new Map();for(const n of s){const t=n['code']??n['id'];if(t==null)continue;j['set'](String(t),{'id':t,'text':n[T(0x18e)]??n['text'],...n['color']!==undefined?{'color':n['color']}:{},...n['icon']!==undefined?{'icon':n['icon']}:{}});}return[Q,j];}));for(const [Q,s]of H){d[K(0x18f)](Q,s),Z[K(0x18f)](Q,y['revision'](Q));}return d;}export async function addDictionaryLookupData(w,y,d){const h=Y;if(!d||w['length']===0x0)return w;const Z=Object['entries'](y)['flatMap'](([H,Q])=>{const s=Q['dictionary'];return s?[{'field':H,'dictionaryName':s}]:[];});if(Z['length']===0x0)return w;const M=await getDictionaryIndexes([...new Set(Z['map'](({dictionaryName:H})=>H))],d);for(const H of w){for(const {field:Q,dictionaryName:s}of Z){const j=H[Q];H[Q+'_data']=j==null?null:M[h(0x18c)](s)?.['get'](String(j))??null;}}return w;}function f(){const i=['get','all','name','set'];f=function(){return i;};return f();}
1
+ function Q(){const p=['get','set','length','all','code','color','icon','revision','map','_data'];Q=function(){return p;};return Q();}const dictionaryIndexesCache=new WeakMap(),dictionaryRevisionsCache=new WeakMap();function k(h,n){h=h-0x103;const B=Q();let G=B[h];return G;}async function getDictionaryIndexes(h,n){const X=k,B=dictionaryIndexesCache[X(0x103)](n)??new Map(),G=dictionaryRevisionsCache[X(0x103)](n)??new Map();dictionaryIndexesCache['set'](n,B),dictionaryRevisionsCache[X(0x104)](n,G);const f=h['filter'](Z=>G['get'](Z)!==n['revision'](Z));if(f[X(0x105)]===0x0)return B;const j=await Promise[X(0x106)](f['map'](async Z=>{const H=X;if(!n['has'](Z))return[Z,new Map()];const e=await n['get'](Z),b=new Map();for(const P of e){const u=P[H(0x107)]??P['id'];if(u==null)continue;b['set'](String(u),{'id':u,'text':P['name']??P['text'],...P['color']!==undefined?{'color':P[H(0x108)]}:{},...P['icon']!==undefined?{'icon':P[H(0x109)]}:{}});}return[Z,b];}));for(const [Z,e]of j){B['set'](Z,e),G['set'](Z,n[X(0x10a)](Z));}return B;}export async function addDictionaryLookupData(h,n,B){const i=k;if(!B||h[i(0x105)]===0x0)return h;const G=Object['entries'](n)['flatMap'](([j,Z])=>{const e=Z['dictionary'];return e?[{'field':j,'dictionaryName':e}]:[];});if(G['length']===0x0)return h;const f=await getDictionaryIndexes([...new Set(G[i(0x10b)](({dictionaryName:j})=>j))],B);for(const j of h){for(const {field:Z,dictionaryName:e}of G){const b=j[Z];j[Z+i(0x10c)]=b==null?null:f['get'](e)?.['get'](String(b))??null;}}return h;}
@@ -1 +1 @@
1
- function Y(w,y){w=w-0xf2;const d=f();let Z=d[w];return Z;}function f(){const j=['entries','filter','length'];f=function(){return j;};return f();}export function addFileToken(w,y,d){const s=Y;if(!d||w['length']===0x0)return w;const Z=Object[s(0xf2)](y)[s(0xf3)](([,M])=>M['type']==='file')['map'](([M])=>M);for(const M of w){for(const H of Z){const Q=M[H];typeof Q==='string'&&Q[s(0xf4)]>0x0&&(M[H]=d['create'](Q));}}return w;}
1
+ function Q(){const b=['string','length','create'];Q=function(){return b;};return Q();}function k(h,n){h=h-0x188;const B=Q();let G=B[h];return G;}export function addFileToken(h,n,B){const e=k;if(!B||h['length']===0x0)return h;const G=Object['entries'](n)['filter'](([,f])=>f['type']==='file')['map'](([f])=>f);for(const f of h){for(const j of G){const Z=f[j];typeof Z===e(0x188)&&Z[e(0x189)]>0x0&&(f[j]=B[e(0x18a)](Z));}}return h;}
@@ -1 +1 @@
1
- import{qi,qt}from'../utils/sql.js';const tableLookupCache=new WeakMap();export function clearTableLookupCache(w,y){const d=tableLookupCache['get'](y);if(!d)return;for(const Z of d['keys']()){Z['startsWith'](w+':')&&d['delete'](Z);}}function f(){const e=['flatMap','number','set','has','query','SELECT\x20','\x20AS\x20text\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20','\x20=\x20ANY($1)','field'];f=function(){return e;};return f();}function Y(w,y){w=w-0xc1;const d=f();let Z=d[w];return Z;}export async function addTableLookupData(w,y,d){const E=Y;if(!d||w['length']===0x0)return w;const Z=tableLookupCache['get'](d)??new Map();tableLookupCache['set'](d,Z);const M=Object['entries'](y)[E(0xc1)](([H,Q])=>{const {table:s,value:value='id',text:text='name'}=Q['lookup']??{};return s?[{'field':H,'table':s,'value':value,'text':text}]:[];});for(const H of M){const Q=new Map();for(const t of w){const K=t[H['field']];(typeof K==='string'||typeof K===E(0xc2))&&Q['set'](String(K),K);}const s=H['table']+':'+H['value']+':'+H['text'],j=Z['get'](s)??new Map();Z[E(0xc3)](s,j);const n=[...Q['entries']()]['filter'](([T])=>!j[E(0xc4)](T))['map'](([,T])=>T);if(n['length']>0x0){const T=await d[E(0xc5)](E(0xc6)+qi(H['value'])+'\x20AS\x20id,\x20'+qi(H['text'])+E(0xc7)+qt(H['table'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20'+qi(H['value'])+E(0xc8),[n]);for(const h of T['rows']){j['set'](String(h['id']),h);}for(const i of n){!j['has'](String(i))&&j['set'](String(i),null);}}for(const G of w){const U=G[H[E(0xc9)]];G[H['field']+'_data']=U==null?null:j['get'](String(U))??null;}}return w;}
1
+ import{qi,qt}from'../utils/sql.js';function k(h,n){h=h-0x19c;const B=Q();let G=B[h];return G;}const tableLookupCache=new WeakMap();export function clearTableLookupCache(h,n){const m=k,B=tableLookupCache[m(0x19c)](n);if(!B)return;for(const G of B[m(0x19d)]()){G['startsWith'](h+':')&&B['delete'](G);}}function Q(){const U=['get','keys','length','set','flatMap','field','table','text','filter','SELECT\x20','\x20AS\x20id,\x20','\x20=\x20ANY($1)','_data'];Q=function(){return U;};return Q();}export async function addTableLookupData(h,n,B){const A=k;if(!B||h[A(0x19e)]===0x0)return h;const G=tableLookupCache[A(0x19c)](B)??new Map();tableLookupCache[A(0x19f)](B,G);const f=Object['entries'](n)[A(0x1a0)](([j,Z])=>{const {table:e,value:value='id',text:text='name'}=Z['lookup']??{};return e?[{'field':j,'table':e,'value':value,'text':text}]:[];});for(const j of f){const Z=new Map();for(const u of h){const X=u[j[A(0x1a1)]];(typeof X==='string'||typeof X==='number')&&Z['set'](String(X),X);}const e=j[A(0x1a2)]+':'+j['value']+':'+j[A(0x1a3)],b=G[A(0x19c)](e)??new Map();G['set'](e,b);const P=[...Z['entries']()][A(0x1a4)](([H])=>!b['has'](H))['map'](([,H])=>H);if(P[A(0x19e)]>0x0){const H=await B['query'](A(0x1a5)+qi(j['value'])+A(0x1a6)+qi(j[A(0x1a3)])+'\x20AS\x20text\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20'+qt(j['table'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20'+qi(j['value'])+A(0x1a7),[P]);for(const i of H['rows']){b['set'](String(i['id']),i);}for(const p of P){!b['has'](String(p))&&b[A(0x19f)](String(p),null);}}for(const z of h){const t=z[j[A(0x1a1)]];z[j['field']+A(0x1a8)]=t==null?null:b['get'](String(t))??null;}}return h;}
@@ -1 +1 @@
1
- import{UnsupportedError}from'../../../errors.js';import{createCreate}from'./create.js';function f(){const e=['get','includes','rows','gallery','size','image/jpeg','Generic\x20Resource\x20relation\x20\x22'];f=function(){return e;};return f();}function Y(w,y){w=w-0x1a2;const d=f();let Z=d[w];return Z;}export function createCreateRelation(w,y){const d=createCreate(w,y);return async function Z({name:M,id:H,relation:Q,data:s,user:j},n){const E=Y,t=n?.['pg']??w['pg'],K=y[E(0x1a2)](M);if(['notes','files','gallery'][E(0x1a3)](Q)&&!K['capabilities']?.['includes'](Q))throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+Q+'\x22\x20requires\x20a\x20capabilities\x20\x22'+Q+'\x22');if(Q==='notes'){const i=await t['query']('INSERT\x20INTO\x20admin.notes(resource,resource_id,body)\x20VALUES\x20($1,$2,$3)\x20RETURNING\x20*',[M,String(H),s?.['body']]);return i['rows'][0x0];}if(Q==='files'){const G=await t['query']('INSERT\x20INTO\x20admin.files\x20(resource,\x20resource_id,\x20file_path,\x20size)\x0a\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\x20RETURNING\x20*',[M,String(H),s?.['filePath'],s?.['size']??null]);return G[E(0x1a4)][0x0];}if(Q===E(0x1a5)){const U=await t['query']('INSERT\x20INTO\x20admin.gallery\x20(resource,\x20resource_id,\x20file_path,\x20size,\x20mime_type)\x0a\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\x20RETURNING\x20*',[M,String(H),s?.['filePath'],s?.[E(0x1a6)]??null,s?.['mimeType']??E(0x1a7)]);return U['rows'][0x0];}const T=K['relations']?.[Q];if(!T?.['foreignKey']||!T['resource']&&!T['table'])throw new UnsupportedError(E(0x1a8)+Q+'\x22\x20requires\x20a\x20project/provider\x20implementation');if(!s)throw new UnsupportedError('No\x20data\x20provided\x20for\x20relation:\x20'+s);if(!T['resource'])throw new UnsupportedError('Relation\x20update\x20is\x20not\x20configured:\x20'+Q);s[T['foreignKey']]=H;const h=await d({'name':T['resource'],'data':s??{},'user':j});return h;};}
1
+ import{UnsupportedError}from'../../../errors.js';function k(h,n){h=h-0xed;const B=Q();let G=B[h];return G;}function Q(){const A=['get','gallery','Generic\x20Resource\x20relation\x20\x22','\x22\x20requires\x20a\x20capabilities\x20\x22','query','filePath','rows','INSERT\x20INTO\x20admin.gallery\x20(resource,\x20resource_id,\x20file_path,\x20size,\x20mime_type)\x0a\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\x20RETURNING\x20*','size','resource','Relation\x20update\x20is\x20not\x20configured:\x20'];Q=function(){return A;};return Q();}import{createCreate}from'./create.js';export function createCreateRelation(h,n){const B=createCreate(h,n);return async function G({name:f,id:j,relation:Z,data:e,user:b},P){const m=k,u=P?.['pg']??h['pg'],X=n[m(0xed)](f);if(['notes','files',m(0xee)]['includes'](Z)&&!X['capabilities']?.['includes'](Z))throw new UnsupportedError(m(0xef)+Z+m(0xf0)+Z+'\x22');if(Z==='notes'){const p=await u[m(0xf1)]('INSERT\x20INTO\x20admin.notes(resource,resource_id,body)\x20VALUES\x20($1,$2,$3)\x20RETURNING\x20*',[f,String(j),e?.['body']]);return p['rows'][0x0];}if(Z==='files'){const z=await u['query']('INSERT\x20INTO\x20admin.files\x20(resource,\x20resource_id,\x20file_path,\x20size)\x0a\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\x20RETURNING\x20*',[f,String(j),e?.[m(0xf2)],e?.['size']??null]);return z[m(0xf3)][0x0];}if(Z==='gallery'){const t=await u['query'](m(0xf4),[f,String(j),e?.['filePath'],e?.[m(0xf5)]??null,e?.['mimeType']??'image/jpeg']);return t['rows'][0x0];}const H=X['relations']?.[Z];if(!H?.['foreignKey']||!H['resource']&&!H['table'])throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+Z+'\x22\x20requires\x20a\x20project/provider\x20implementation');if(!e)throw new UnsupportedError('No\x20data\x20provided\x20for\x20relation:\x20'+e);if(!H[m(0xf6)])throw new UnsupportedError(m(0xf7)+Z);e[H['foreignKey']]=j;const i=await B({'name':H[m(0xf6)],'data':e??{},'user':b});return i;};}
@@ -1 +1 @@
1
- function f(){const e=['get','create','fields','created_at','created_by','push','No\x20writable\x20fields','VALUES\x20(','RETURNING\x20*','rows','table','audit','module','name','key'];f=function(){return e;};return f();}import{ValidationError}from'../../../errors.js';function Y(w,y){w=w-0x1af;const d=f();let Z=d[w];return Z;}import{assertOperation}from'../utils/permissions.js';import{qi,qt,writableData}from'../utils/sql.js';import{validateInputData}from'../utils/fields.js';import{clearTableLookupCache}from'./add-table-lookup-data.js';export function createCreate(w,y){return async function d({name:Z,data:M,user:H},Q){const E=Y,s=y[E(0x1af)](Z);assertOperation(s,E(0x1b0),H),validateInputData({'resource':s,'data':M});const j=writableData(s,M);s[E(0x1b1)][E(0x1b2)]&&j['push'](['created_at',new Date()]);s['fields'][E(0x1b3)]&&j[E(0x1b4)](['created_by',H?.['id']]);if(!j['length'])throw new ValidationError(E(0x1b5));const n=j['map'](([G])=>qi(G)),t=j['map']((G,U)=>'$'+(U+0x1)),K=j['map'](([,G])=>G),T=Q?.['pg']??w['pg'],h=await T['query']('INSERT\x20INTO\x20'+qt(s['table'])+'\x20('+n['join'](',\x20')+')\x20'+(E(0x1b6)+t['join'](',\x20')+')\x20')+E(0x1b7),K),i=h[E(0x1b8)][0x0];return clearTableLookupCache(s[E(0x1b9)],T),await(Q?.[E(0x1ba)]??w['audit'])?.['write']({'userId':H?.['id'],'module':s[E(0x1bb)],'resource':s[E(0x1bc)],'resourceId':i[s[E(0x1bd)]],'action':'create','fields':Object['keys'](M)}),i;};}
1
+ import{ValidationError}from'../../../errors.js';import{assertOperation}from'../utils/permissions.js';import{qi,qt,writableData}from'../utils/sql.js';import{validateInputData}from'../utils/fields.js';function Q(){const A=['get','create','length','No\x20writable\x20fields','query','write','module','key','keys'];Q=function(){return A;};return Q();}function k(h,n){h=h-0x17c;const B=Q();let G=B[h];return G;}import{clearTableLookupCache}from'./add-table-lookup-data.js';export function createCreate(h,n){return async function B({name:G,data:f,user:j},Z){const m=k,e=n[m(0x17c)](G);assertOperation(e,m(0x17d),j),validateInputData({'resource':e,'data':f});const b=writableData(e,f);e['fields']['created_at']&&b['push'](['created_at',new Date()]);e['fields']['created_by']&&b['push'](['created_by',j?.['id']]);if(!b[m(0x17e)])throw new ValidationError(m(0x17f));const P=b['map'](([z])=>qi(z)),u=b['map']((z,t)=>'$'+(t+0x1)),X=b['map'](([,z])=>z),H=Z?.['pg']??h['pg'],i=await H[m(0x180)]('INSERT\x20INTO\x20'+qt(e['table'])+'\x20('+P['join'](',\x20')+')\x20'+('VALUES\x20('+u['join'](',\x20')+')\x20')+'RETURNING\x20*',X),p=i['rows'][0x0];return clearTableLookupCache(e['table'],H),await(Z?.['audit']??h['audit'])?.[m(0x181)]({'userId':j?.['id'],'module':e[m(0x182)],'resource':e['name'],'resourceId':p[e[m(0x183)]],'action':m(0x17d),'fields':Object[m(0x184)](f)}),p;};}
@@ -1 +1 @@
1
- import{UnsupportedError}from'../../../errors.js';function Y(w,y){w=w-0x176;const d=f();let Z=d[w];return Z;}import{createRemove}from'./delete.js';export function createDeleteRelation(w,y){const d=createRemove(w,y);return async function Z({name:M,id:H,relation:Q,relationId:s,user:j},n){const i=Y,t=n?.['pg']??w['pg'],K=y['get'](M);if(['notes',i(0x176),'gallery']['includes'](Q)&&!K[i(0x177)]?.[i(0x178)](Q))throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+Q+'\x22\x20requires\x20a\x20capabilities\x20\x22'+Q+'\x22');if(Q==='notes')return await t['query']('DELETE\x20FROM\x20admin.notes\x20WHERE\x20note_id\x20=\x20$1\x20AND\x20resource\x20=\x20$2\x20AND\x20resource_id\x20=\x20$3',[s,M,String(H)]),{'success':!![]};if(Q==='files')return await t['query']('DELETE\x20FROM\x20admin.files\x20WHERE\x20file_id\x20=\x20$1\x20AND\x20resource\x20=\x20$2\x20AND\x20resource_id\x20=\x20$3',[s,M,String(H)]),{'success':!![]};if(Q==='gallery')return await t['query']('DELETE\x20FROM\x20admin.gallery\x20WHERE\x20id\x20=\x20$1\x20AND\x20resource\x20=\x20$2\x20AND\x20resource_id\x20=\x20$3',[s,M,String(H)]),{'success':!![]};const T=K['relations']?.[Q];if(!T?.['resource']||!T['foreignKey'])throw new UnsupportedError(i(0x179)+Q+'\x22\x20requires\x20a\x20project/provider\x20implementation');const h=await d({'name':T['resource'],'id':s,'user':j,'where':{'column':T['foreignKey'],'value':H}},n);return{'success':h};};}function f(){const G=['files','capabilities','includes','Generic\x20Resource\x20relation\x20\x22'];f=function(){return G;};return f();}
1
+ import{UnsupportedError}from'../../../errors.js';import{createRemove}from'./delete.js';function k(h,n){h=h-0x1a2;const B=Q();let G=B[h];return G;}export function createDeleteRelation(h,n){const B=createRemove(h,n);return async function G({name:f,id:j,relation:Z,relationId:e,user:b},P){const p=k,u=P?.['pg']??h['pg'],X=n['get'](f);if(['notes','files','gallery']['includes'](Z)&&!X['capabilities']?.['includes'](Z))throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+Z+p(0x1a2)+Z+'\x22');if(Z==='notes')return await u[p(0x1a3)](p(0x1a4),[e,f,String(j)]),{'success':!![]};if(Z==='files')return await u['query']('DELETE\x20FROM\x20admin.files\x20WHERE\x20file_id\x20=\x20$1\x20AND\x20resource\x20=\x20$2\x20AND\x20resource_id\x20=\x20$3',[e,f,String(j)]),{'success':!![]};if(Z==='gallery')return await u[p(0x1a3)](p(0x1a5),[e,f,String(j)]),{'success':!![]};const H=X['relations']?.[Z];if(!H?.[p(0x1a6)]||!H['foreignKey'])throw new UnsupportedError(p(0x1a7)+Z+'\x22\x20requires\x20a\x20project/provider\x20implementation');const i=await B({'name':H['resource'],'id':e,'user':b,'where':{'column':H['foreignKey'],'value':j}},P);return{'success':i};};}function Q(){const z=['\x22\x20requires\x20a\x20capabilities\x20\x22','query','DELETE\x20FROM\x20admin.notes\x20WHERE\x20note_id\x20=\x20$1\x20AND\x20resource\x20=\x20$2\x20AND\x20resource_id\x20=\x20$3','DELETE\x20FROM\x20admin.gallery\x20WHERE\x20id\x20=\x20$1\x20AND\x20resource\x20=\x20$2\x20AND\x20resource_id\x20=\x20$3','resource','Generic\x20Resource\x20relation\x20\x22'];Q=function(){return z;};return Q();}
@@ -1 +1 @@
1
- import{assertOperation}from'../utils/permissions.js';import{qt,qi}from'../utils/sql.js';function Y(w,y){w=w-0xd4;const d=f();let Z=d[w];return Z;}import{clearTableLookupCache}from'./add-table-lookup-data.js';function f(){const i=['get','WHERE\x20','key','where','\x20AND\x20(','query','table','audit','module','rowCount'];f=function(){return i;};return f();}export function createRemove(w,y){return async function d({name:Z,id:M,user:H,where:Q},s){const h=Y,j=y[h(0xd4)](Z);assertOperation(j,'delete',H);const n=s?.['pg']??w['pg'],t=[M];let K=h(0xd5)+qi(j[h(0xd6)])+'\x20=\x20$1';Q&&(t['push'](Q['value']),K+='\x20AND\x20'+qi(Q['column'])+'\x20=\x20$'+t['length']);j[h(0xd7)]&&(K+=h(0xd8)+j['where']+')');const T=await n[h(0xd9)]('DELETE\x20FROM\x20'+qt(j[h(0xda)])+'\x20'+K,t);if((T['rowCount']??0x0)>0x0)clearTableLookupCache(j['table'],n);if((T['rowCount']??0x0)>0x0)await(s?.[h(0xdb)]??w[h(0xdb)])?.['write']({'module':j[h(0xdc)],'resource':j['name'],'resourceId':M,'action':'delete'});return(T[h(0xdd)]??0x0)>0x0;};}
1
+ function k(h,n){h=h-0x11c;const B=Q();let G=B[h];return G;}function Q(){const p=['\x20=\x20$1','\x20=\x20$','where','rowCount','audit','name'];Q=function(){return p;};return Q();}import{assertOperation}from'../utils/permissions.js';import{qt,qi}from'../utils/sql.js';import{clearTableLookupCache}from'./add-table-lookup-data.js';export function createRemove(h,n){return async function B({name:G,id:f,user:j,where:Z},e){const i=k,b=n['get'](G);assertOperation(b,'delete',j);const P=e?.['pg']??h['pg'],u=[f];let X='WHERE\x20'+qi(b['key'])+i(0x11c);Z&&(u['push'](Z['value']),X+='\x20AND\x20'+qi(Z['column'])+i(0x11d)+u['length']);b[i(0x11e)]&&(X+='\x20AND\x20('+b['where']+')');const H=await P['query']('DELETE\x20FROM\x20'+qt(b['table'])+'\x20'+X,u);if((H[i(0x11f)]??0x0)>0x0)clearTableLookupCache(b['table'],P);if((H['rowCount']??0x0)>0x0)await(e?.[i(0x120)]??h['audit'])?.['write']({'module':b['module'],'resource':b[i(0x121)],'resourceId':f,'action':'delete'});return(H['rowCount']??0x0)>0x0;};}
@@ -1 +1 @@
1
- {"version":3,"file":"find-one.d.ts","sourceRoot":"","sources":["../../../../src/plugins/resource/services/find-one.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,YAAY,EACb,MAAM,sBAAsB,CAAC;AAK9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKhE,wBAAgB,aAAa,CAC3B,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,EAAE,gBAAgB,gCAQvB;IACD,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB,6CAgDF"}
1
+ {"version":3,"file":"find-one.d.ts","sourceRoot":"","sources":["../../../../src/plugins/resource/services/find-one.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,YAAY,EACb,MAAM,sBAAsB,CAAC;AAK9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKhE,wBAAgB,aAAa,CAC3B,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,EAAE,gBAAgB,gCAQvB;IACD,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB,6CAkDF"}