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

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 (122) hide show
  1. package/LICENSE +3 -3
  2. package/README.md +71 -71
  3. package/dist/config.d.ts +1 -0
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +1 -1
  6. package/dist/context.js +1 -1
  7. package/dist/errors.js +1 -1
  8. package/dist/fastify.d.ts.map +1 -1
  9. package/dist/fastify.js +1 -1
  10. package/dist/fcore.d.ts.map +1 -1
  11. package/dist/fcore.js +1 -1
  12. package/dist/migrations/cli.js +1 -1
  13. package/dist/migrations/runner.js +1 -1
  14. package/dist/modules/auth/adduser-cli.js +1 -1
  15. package/dist/modules/auth/passwd-cli.js +1 -1
  16. package/dist/modules/auth/permission-cli.js +1 -1
  17. package/dist/modules/auth/route.js +1 -1
  18. package/dist/modules/auth/schema.js +1 -1
  19. package/dist/modules/auth/services/change-password.js +1 -1
  20. package/dist/modules/auth/services/get-current-user.js +1 -1
  21. package/dist/modules/auth/services/registration.js +1 -1
  22. package/dist/modules/auth/services/verify-two-factor.js +1 -1
  23. package/dist/modules/file/mime.js +1 -1
  24. package/dist/modules/file/route.js +1 -1
  25. package/dist/modules/file/schema.js +1 -1
  26. package/dist/modules/file/services/get-file.js +1 -1
  27. package/dist/modules/file/services/resize-file.js +1 -1
  28. package/dist/modules/file/services/upload-file.d.ts.map +1 -1
  29. package/dist/modules/file/services/upload-file.js +1 -1
  30. package/dist/modules/resource/route.d.ts.map +1 -1
  31. package/dist/modules/resource/route.js +1 -1
  32. package/dist/modules/resource/schema.d.ts +6 -0
  33. package/dist/modules/resource/schema.d.ts.map +1 -1
  34. package/dist/modules/resource/schema.js +1 -1
  35. package/dist/modules/resource/services/add-note.js +1 -1
  36. package/dist/modules/resource/services/add-resource-file.js +1 -1
  37. package/dist/modules/resource/services/create-resource-relation.js +1 -1
  38. package/dist/modules/resource/services/create-resource.js +1 -1
  39. package/dist/modules/resource/services/delete-resource-relation.js +1 -1
  40. package/dist/modules/resource/services/delete-resource.js +1 -1
  41. package/dist/modules/resource/services/export-resource.js +1 -1
  42. package/dist/modules/resource/services/get-resource.js +1 -1
  43. package/dist/modules/resource/services/list-resource-relation.js +1 -1
  44. package/dist/modules/resource/services/list-resources.d.ts.map +1 -1
  45. package/dist/modules/resource/services/list-resources.js +1 -1
  46. package/dist/modules/resource/services/search-resource.js +1 -1
  47. package/dist/modules/resource/services/suggest-resource.js +1 -1
  48. package/dist/modules/resource/services/update-resource-relation.js +1 -1
  49. package/dist/modules/resource/services/update-resource.js +1 -1
  50. package/dist/modules/resource/services/upload-resource-file.js +1 -1
  51. package/dist/modules/system/route.js +1 -1
  52. package/dist/modules/system/schema.js +1 -1
  53. package/dist/modules/system/services/check-system.js +1 -1
  54. package/dist/modules/system/services/get-access.js +1 -1
  55. package/dist/modules/system/services/get-api-list.js +1 -1
  56. package/dist/modules/system/services/get-audit-log.js +1 -1
  57. package/dist/modules/system/services/get-dictionary.js +1 -1
  58. package/dist/modules/system/services/get-system-log.js +1 -1
  59. package/dist/modules/system/services/get-system-settings.js +1 -1
  60. package/dist/modules/system/services/list-dictionaries.js +1 -1
  61. package/dist/modules/system/services/set-access.js +1 -1
  62. package/dist/modules/system/services/update-dictionary.js +1 -1
  63. package/dist/modules/system/services/update-system-settings.js +1 -1
  64. package/dist/modules/utils/require-admin.js +1 -1
  65. package/dist/modules/utils/safe-user.js +1 -1
  66. package/dist/modules/utils/unsupported.js +1 -1
  67. package/dist/plugins/audit/audit.js +1 -1
  68. package/dist/plugins/audit/services/write-audit.js +1 -1
  69. package/dist/plugins/auth/get-user-permissions.js +1 -1
  70. package/dist/plugins/auth/index.d.ts.map +1 -1
  71. package/dist/plugins/auth/index.js +1 -1
  72. package/dist/plugins/auth/verifyUser.js +1 -1
  73. package/dist/plugins/dictionary.js +1 -1
  74. package/dist/plugins/file.d.ts +7 -3
  75. package/dist/plugins/file.d.ts.map +1 -1
  76. package/dist/plugins/file.js +1 -1
  77. package/dist/plugins/jwt.js +1 -1
  78. package/dist/plugins/logger/index.js +1 -1
  79. package/dist/plugins/logger/transport.js +1 -1
  80. package/dist/plugins/pg.js +1 -1
  81. package/dist/plugins/redis.d.ts.map +1 -1
  82. package/dist/plugins/redis.js +1 -1
  83. package/dist/plugins/resource/resource.js +1 -1
  84. package/dist/plugins/resource/resource.registry.js +1 -1
  85. package/dist/plugins/resource/resource.types.d.ts +22 -0
  86. package/dist/plugins/resource/resource.types.d.ts.map +1 -1
  87. package/dist/plugins/resource/services/add-dictionary-lookup-data.js +1 -1
  88. package/dist/plugins/resource/services/add-file-token.js +1 -1
  89. package/dist/plugins/resource/services/add-table-lookup-data.js +1 -1
  90. package/dist/plugins/resource/services/create-relation.d.ts +1 -1
  91. package/dist/plugins/resource/services/create-relation.d.ts.map +1 -1
  92. package/dist/plugins/resource/services/create-relation.js +1 -1
  93. package/dist/plugins/resource/services/create.js +1 -1
  94. package/dist/plugins/resource/services/delete-relation.d.ts +1 -1
  95. package/dist/plugins/resource/services/delete-relation.d.ts.map +1 -1
  96. package/dist/plugins/resource/services/delete-relation.js +1 -1
  97. package/dist/plugins/resource/services/delete.js +1 -1
  98. package/dist/plugins/resource/services/find-one.d.ts.map +1 -1
  99. package/dist/plugins/resource/services/find-one.js +1 -1
  100. package/dist/plugins/resource/services/find-relation.d.ts.map +1 -1
  101. package/dist/plugins/resource/services/find-relation.js +1 -1
  102. package/dist/plugins/resource/services/find.d.ts.map +1 -1
  103. package/dist/plugins/resource/services/find.js +1 -1
  104. package/dist/plugins/resource/services/get-table-columns.js +1 -1
  105. package/dist/plugins/resource/services/update-relation.js +1 -1
  106. package/dist/plugins/resource/services/update.js +1 -1
  107. package/dist/plugins/resource/utils/auto-index.js +1 -1
  108. package/dist/plugins/resource/utils/fields.js +1 -1
  109. package/dist/plugins/resource/utils/filters.d.ts +2 -1
  110. package/dist/plugins/resource/utils/filters.d.ts.map +1 -1
  111. package/dist/plugins/resource/utils/filters.js +1 -1
  112. package/dist/plugins/resource/utils/permissions.js +1 -1
  113. package/dist/plugins/resource/utils/sort.js +1 -1
  114. package/dist/plugins/resource/utils/sql.js +1 -1
  115. package/dist/plugins/resource/utils/summary.d.ts +3 -0
  116. package/dist/plugins/resource/utils/summary.d.ts.map +1 -0
  117. package/dist/plugins/resource/utils/summary.js +1 -0
  118. package/dist/shared/getIP.js +1 -1
  119. package/migrations/20260903130000_move_notes_files_to_admin.sql +17 -17
  120. package/migrations/20260903140000_settings_nulls_not_distinct.sql +18 -18
  121. package/migrations/20260910170000_core_schema.sql +22 -0
  122. package/package.json +93 -93
@@ -1 +1 @@
1
- function S(i,n){i=i-0x1e0;const x=v();let N=x[i];return N;}import{ConflictError,NotFoundError,ValidationError}from'../errors.js';const dictionaryName=/^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/;function v(){const g=['empty\x20pg','table_name','isArray','code','items','Invalid\x20dictionary\x20items:\x20','has','Dictionary\x20already\x20registered:\x20','\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','rows','set','database','Dictionary\x20not\x20found:\x20','Dictionary\x20table\x20not\x20found','query','custom','ROLLBACK','get'];v=function(){return g;};return v();}export function createDictionary({pg:i,dictionaries:dictionaries=[]}){const n=new Map(),x=new Map();let N,a;async function B(){const G=S;if(N!==undefined)return N;if(!i)throw new Error(G(0x1e0));return a??=i['query']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20table_name\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20information_schema.tables\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20table_schema\x20=\x20\x27admin\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20AND\x20table_name\x20=\x20\x27dictionaries\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20LIMIT\x201\x0a\x20\x20\x20\x20\x20\x20\x20\x20')['then'](t=>{const b=G,z=t['rows'][0x0]?.[b(0x1e1)];N=z==='dictionaries'?z:null;}),await a,N;}function q(t){if(!dictionaryName['test'](t))throw new ValidationError('Invalid\x20dictionary\x20name:\x20'+t);}function X(t){const T=S;for(const z of Array[T(0x1e2)](t)?t:[t]){q(z[T(0x1e3)]);if(!Array['isArray'](z[T(0x1e4)]))throw new ValidationError(T(0x1e5)+z[T(0x1e3)]);if(n[T(0x1e6)](z['code']))throw new ConflictError(T(0x1e7)+z['code']);n['set'](z['code'],{...z,'source':'static'});}}function f(t){return n['has'](t);}async function A(t){const o=S;q(t);const z=n['get'](t);if(z&&z['checked'])return z['items'];const J=await B();if(!J)throw new NotFoundError('Dictionary\x20table\x20not\x20found');const p=await i?.['query'](o(0x1e8),[t]);if(p?.[o(0x1e9)]?.['length']){const h=p?.['rows'];return n[o(0x1ea)](t,{'code':t,'name':t,'items':h,'source':o(0x1eb),'checked':!![]}),h;}if(!z?.['items'])throw new NotFoundError(o(0x1ec)+t);return z['checked']=!![],z[o(0x1e4)];}async function u(t,z){const k=S;q(t);if(!Array['isArray'](z))throw new ValidationError('Dictionary\x20items\x20must\x20be\x20an\x20array');const J=await B();if(!J)throw new NotFoundError(k(0x1ed));if(!i)throw new Error('empty\x20pg');const p=await i['connect']();try{await p['query']('BEGIN');const h=await p[k(0x1ee)]('\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',[t,t,'fcore',k(0x1ef),!![]]),O=h[k(0x1e9)][0x0]['id'];await p['query']('DELETE\x20FROM\x20admin.dictionary_items\x20WHERE\x20dictionary_id\x20=\x20$1',[O]);for(const m of z){await p['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',[O,m[k(0x1e3)],m['name'],m['parentId']??null]);}await p['query']('COMMIT');}catch(P){await p['query'](k(0x1f0));throw P;}finally{p['release']();}n['set'](t,{'items':z,'code':t,'source':'static','checked':!![]}),x[k(0x1ea)](t,(x['get'](t)??0x0)+0x1);}function V(t){const c=S;return q(t),x['set'](t,(x[c(0x1f1)](t)??0x0)+0x1),n['delete'](t);}function M(t){return x['get'](t)??0x0;}async function U(){const t=[...n['values']()]['map'](({code:p,name:h,source:O})=>({'code':p,'name':h??p,'source':O})),z=await B();if(!z)return t;if(!i)throw new Error('empty\x20pg');const J=await i['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 p of J['rows']){!n['has'](p['code'])&&t['push'](p);}return t;}return X(dictionaries),{'register':X,'get':A,'put':u,'clear':V,'revision':M,'list':U,'has':f};}
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,6 +1,3 @@
1
- /**
2
- * Implements the S3-compatible file storage adapter and its contracts.
3
- */
4
1
  import type { Readable } from "node:stream";
5
2
  export interface FileAdapter {
6
3
  put(path: string, body: Buffer | Readable): Promise<void>;
@@ -23,5 +20,12 @@ export interface FileS3Config {
23
20
  tokenSecret?: string;
24
21
  tokenTtl?: number;
25
22
  }
23
+ export interface FileLocalConfig {
24
+ storagePath: string;
25
+ folder?: string;
26
+ tokenSecret?: string;
27
+ tokenTtl?: number;
28
+ }
29
+ export declare function createFileLocal(config: FileLocalConfig): FileAdapter;
26
30
  export declare function createFileS3(config: FileS3Config): FileAdapter;
27
31
  //# sourceMappingURL=file.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/plugins/file.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,WAAW;IACxB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACjC;AAKD,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAgCD,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW,CAiF9D"}
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/plugins/file.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,WAAW;IACxB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACjC;AAKD,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAoCD,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW,CAiFpE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW,CAiF9D"}
@@ -1 +1 @@
1
- import{DeleteObjectCommand,GetObjectCommand,HeadObjectCommand,PutObjectCommand,S3Client}from'@aws-sdk/client-s3';import i from'node:crypto';import{ValidationError}from'../errors.js';import{UnauthorizedError}from'../errors.js';function S(i,n){i=i-0x9d;const x=v();let N=x[i];return N;}function v(){const p=['Invalid\x20file\x20path','replace','tokenSecret','randomBytes','us-east-1','accessKeyId','accessKey','secretAccessKey','secretKey','bucket','name','NotFound','tokenTtl','createHmac','base64url'];v=function(){return p;};return v();}function keyFor(n,x){const V=S;if(!x||x['startsWith']('/')||x['includes']('..'))throw new ValidationError(V(0x9d));const N=x['replace'](/\\/g,'/')[V(0x9e)](/^\/+/,''),a=(n??'')['replace'](/^\/+|\/+$/g,'');return a?a+'/'+N:N;}async function bodyToBuffer(n){if(!n)return Buffer['alloc'](0x0);const x=n;if(typeof x['transformToByteArray']==='function')return Buffer['from'](await x['transformToByteArray']());const N=[];for await(const a of n){N['push'](Buffer['from'](a));}return Buffer['concat'](N);}export function createFileS3(n){const M=S,x=n[M(0x9f)]??process.env.FILE_TOKEN_SECRET??i[M(0xa0)](0x20)['toString']('hex'),N=new S3Client({'endpoint':n['endpoint'],'region':n['region']??M(0xa1),'forcePathStyle':n['forcePathStyle']??!![],'credentials':n[M(0xa2)]||n[M(0xa3)]?{'accessKeyId':n['accessKeyId']??n['accessKey'],'secretAccessKey':n[M(0xa4)]??n[M(0xa5)]}:undefined}),a=B=>keyFor(n['folder'],B);return{async 'put'(B,q){const U=M;await N['send'](new PutObjectCommand({'Bucket':n[U(0xa6)],'Key':a(B),'Body':q}));},async 'get'(B){const t=M,q=await N['send'](new GetObjectCommand({'Bucket':n[t(0xa6)],'Key':a(B)}));return bodyToBuffer(q['Body']);},async 'exists'(B){const z=M;try{return await N['send'](new HeadObjectCommand({'Bucket':n['bucket'],'Key':a(B)})),!![];}catch(q){const X=q;if(X['$metadata']?.['httpStatusCode']===0x194||X[z(0xa7)]===z(0xa8))return![];throw q;}},async 'delete'(B){await N['send'](new DeleteObjectCommand({'Bucket':n['bucket'],'Key':a(B)}));},'create'(B,q=n[M(0xa9)]??0xe10){const X=Buffer['from'](B)['toString']('base64url'),f=i['createHmac']('sha256',x)['update'](X)['digest']('base64url');return X+'.'+f;},'verify'(B){const J=M,[q,X]=B['split']('.');if(!q||!X)throw new UnauthorizedError('Invalid\x20file\x20token');const f=i[J(0xaa)]('sha256',x)['update'](q)['digest'](),A=Buffer['from'](X,J(0xab));if(f['length']!==A['length']||!i['timingSafeEqual'](f,A))throw new UnauthorizedError('Invalid\x20file\x20token');const u=Buffer['from'](q,'base64url')['toString']('utf8');return u;}};}
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 +1 @@
1
- import{SignJWT,jwtVerify}from'jose';const secret=new TextEncoder()['encode'](process.env.AUTH_JWT_SECRET);function S(i,n){i=i-0xa7;const x=v();let N=x[i];return N;}export async function jwtSignToken(i){const B=S;if(!process.env.AUTH_JWT_SECRET)return;const {id:n,type:x,permissions:N}=i,a=await new SignJWT({'id':n,'type':x,'permissions':N})['setProtectedHeader']({'alg':'HS256'})['setIssuedAt']()[B(0xa7)]('1h')['sign'](secret);return a;}function v(){const q=['setExpirationTime'];v=function(){return q;};return v();}export async function jwtVerifyToken(i){const n=await jwtVerify(i,secret,{'algorithms':['HS256']})['catch'](x=>{console['log'](x['message']);});return n?.['payload'];}
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 +1 @@
1
- function S(i,n){i=i-0x124;const x=v();let N=x[i];return N;}import i from'pino';export function createLogger(){const X=S,n=i['transport']({'target':'./transport.js'}),x=i({'level':X(0x124),'timestamp':i['stdTimeFunctions'][X(0x125)],'base':{'service':'app'},'redact':{'paths':[X(0x126),'password','token','accessToken',X(0x127)],'censor':'[REDACTED]'}},n),N={};function a(B,q){if(B===undefined)return{...N};N[B]=(N[B]??0x0)+(q??0x1);}return Object[X(0x128)](x,{'close':async()=>n['end'](),'metrics':a,'file':()=>x[X(0x124)]['bind'](x)});}function v(){const f=['info','isoTime','req.headers.authorization','refreshToken','assign'];v=function(){return f;};return v();}
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 +1 @@
1
- function S(i,n){i=i-0x17c;const x=v();let N=x[i];return N;}const X=S;import i from'node:fs';function v(){const U=['info','error','toISOString','createWriteStream','.log','stream','end','values','clear','write'];v=function(){return U;};return v();}import n from'node:path';import x from'pino-abstract-transport';const LEVELS={0x1e:X(0x17c),0x28:'warn',0x32:'error',0x3c:X(0x17d)},streams=new Map();function getDate(){const f=X;return new Date()[f(0x17e)]()['slice'](0x0,0xa);}function createStream(N,a){const A=X,B=n['resolve']('logs',N);return i['mkdirSync'](B,{'recursive':!![]}),i[A(0x17f)](n['join'](B,a+A(0x180)),{'flags':'a'});}function getStream(N){const u=X,a=getDate(),B=streams['get'](N);if(B&&B['date']===a)return B[u(0x181)];B?.['stream'][u(0x182)]();const q=createStream(N,a);return streams['set'](N,{'date':a,'stream':q}),q;}function closeStreams(){const V=X;for(const {stream:N}of streams[V(0x183)]()){N['end']();}streams[V(0x184)]();}export default async function loggerTransport(){return x(writeLogs,{'close':async()=>{closeStreams();}});}async function writeLogs(N){const M=X;for await(const a of N){const B=LEVELS[a['level']];if(!B)continue;const q=getStream(a['file']||B);delete a['file'],q[M(0x185)](JSON['stringify'](a)+'\x0a');}}
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 +1 @@
1
- function v(){const t=['query','bind','sql','transaction','captureStackTrace','ROLLBACK','stack'];v=function(){return t;};return v();}import i from'pg';const {Pool}=i;function S(i,n){i=i-0x1e0;const x=v();let N=x[i];return N;}export function createDatabase(n){const V=S,x=new Pool(n),N=x[V(0x1e0)][V(0x1e1)](x);function a(B,q){const X=new Error();return Error['captureStackTrace']?.(X,a),N(B,q)['catch'](f=>{const M=S,A=f;A[M(0x1e2)]=B,A['callerStack']=X['stack'];throw A;});}return x['query']=a,x[V(0x1e3)]=async function(B){const U=V,q=new Error();Error[U(0x1e4)]?.(q,x['transaction']);const X=await x['connect']();try{await X['query']('BEGIN');const f=await B(X);return await X['query']('COMMIT'),f;}catch(A){await X[U(0x1e0)](U(0x1e5));const u=A;u['callerStack']=q[U(0x1e6)];throw u;}finally{X['release']();}},x;}
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 +1 @@
1
- {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../src/plugins/redis.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AACD,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW;IAG3C,GAAG,QAAQ,MAAM;IACjB,GAAG,QACI,MAAM,SACJ,MAAM,WACJ,MAAM,GAAG,MAAM,QAClB,MAAM;IAWd,GAAG,QAAQ,MAAM;IACjB,MAAM,QAAQ,MAAM;IACpB,KAAK;IACL,IAAI;IACJ,OAAO,QAAQ,MAAM,SAAS,MAAM,OAAO,MAAM;IAEjD,MAAM,QAAQ,MAAM,OAAO,MAAM;EAEpC;AACD,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC"}
1
+ {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../src/plugins/redis.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AACD,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW;IAI3C,GAAG,QAAQ,MAAM;IACjB,GAAG,QACI,MAAM,SACJ,MAAM,WACJ,MAAM,GAAG,MAAM,QAClB,MAAM;IAWd,GAAG,QAAQ,MAAM;IACjB,MAAM,QAAQ,MAAM;IACpB,KAAK;IACL,IAAI;IACJ,OAAO,QAAQ,MAAM,SAAS,MAAM,OAAO,MAAM;IAEjD,MAAM,QAAQ,MAAM,OAAO,MAAM;EAEpC;AACD,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC"}
@@ -1 +1 @@
1
- function v(){const X=['set'];v=function(){return X;};return v();}function S(i,n){i=i-0x1b9;const x=v();let N=x[i];return N;}import{Redis}from'ioredis';export function createRedis(i){const n=new Redis(i);return{'get':x=>n['get'](x),'set':(x,N,a,B)=>{const q=S;if(B)return n[q(0x1b9)](x,N,'EX',B);if(typeof a==='number')return n[q(0x1b9)](x,N,'EX',a);return n['set'](x,N);},'del':x=>n['del'](x),'delete':x=>n['del'](x),'close':()=>n['quit'](),'ping':()=>n['ping'](),'hincrby':(x,N,a)=>n['hincrby'](x,N,a),'incrby':(x,N)=>n['incrby'](x,N)};}
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 +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';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';function v(){const M=['has','list','bind'];v=function(){return M;};return v();}function S(i,n){i=i-0x1af;const x=v();let N=x[i];return N;}import{createUpdateRelation}from'./services/update-relation.js';export function createResource(i){const V=S,n=new ResourceRegistry(),x=createFind(i,n),N=createFindOne(i,n),a=createCreate(i,n),B=createUpdate(i,n),q=createRemove(i,n),X=createFindRelation(i,n),f=createCreateRelation(i,n),A=createUpdateRelation(i,n),u=createDeleteRelation(i,n);return{'register':n['register']['bind'](n),'has':n[V(0x1af)]['bind'](n),'get':n['get']['bind'](n),'list':n[V(0x1b0)][V(0x1b1)](n),'find':x,'findOne':N,'create':a,'update':B,'delete':q,'findRelation':X,'createRelation':f,'updateRelation':A,'deleteRelation':u};}
1
+ import{ResourceRegistry}from'./resource.registry.js';import{createFind}from'./services/find.js';import{createFindOne}from'./services/find-one.js';import{createCreate}from'./services/create.js';function 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 +1 @@
1
- import{ValidationError,ConflictError,NotFoundError}from'../../errors.js';const ident=/^[a-zA-Z0-9_-]*$/;function S(i,n){i=i-0x158;const x=v();let N=x[i];return N;}function v(){const A=['length','split','test','validate','resources','has','Resource\x20not\x20registered:\x20','values','table','name','entries'];v=function(){return A;};return v();}function validQualified(i){const N=S;return i['split']('.')[N(0x158)]<=0x2&&i[N(0x159)]('.')['every'](n=>ident[N(0x15a)](n));}export class ResourceRegistry{['resources']=new Map();['register'](i){const a=S;for(const n of Array['isArray'](i)?i:[i]){this[a(0x15b)](n);if(this['resources']['has'](n['name']))throw new ConflictError('Resource\x20already\x20registered:\x20'+n['name']);this[a(0x15c)]['set'](n['name'],n);}}['has'](i){const B=S;return this['resources'][B(0x15d)](i);}['get'](i){const q=S,n=this['resources']['get'](i);if(!n)throw new NotFoundError(q(0x15e)+i);return n;}['list'](){const X=S;return[...this[X(0x15c)][X(0x15f)]()];}['validate'](i){const f=S;if(i['version']!==0x1||!ident['test'](i['name'])||!validQualified(i[f(0x160)])||!ident['test'](i['key']))throw new ValidationError('Invalid\x20resource\x20contract:\x20'+i[f(0x161)]);for(const [n,x]of Object[f(0x162)](i['fields'])){if(!ident[f(0x15a)](n)||!ident[f(0x15a)](x['column']??n))throw new ValidationError('Invalid\x20resource\x20field:\x20'+n);}}}
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);}}}
@@ -8,6 +8,23 @@ 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';
12
+ export type ResourceSummaryItem = {
13
+ aggregate: 'count';
14
+ where?: string;
15
+ } | {
16
+ aggregate: 'countDistinct' | 'sum' | 'avg' | 'min' | 'max';
17
+ field: string;
18
+ where?: string;
19
+ } | {
20
+ sql: string;
21
+ };
22
+ interface ResourceScope {
23
+ where?: string;
24
+ fields?: string[];
25
+ sort?: string;
26
+ limit?: number;
27
+ }
11
28
  export type ResourceOperation = "read" | "create" | "update" | "delete";
12
29
  export interface ResourceJoinContract {
13
30
  scope?: "all" | "item";
@@ -70,18 +87,22 @@ export interface ResourceContract {
70
87
  relations?: Record<string, ResourceRelationContract>;
71
88
  joins?: ResourceJoinContract[];
72
89
  access?: "public" | "user" | "admin";
90
+ summary?: Record<string, ResourceSummaryItem>;
91
+ scopes?: Record<string, string | ResourceScope>;
73
92
  }
74
93
  export interface ResourceQuery {
75
94
  filter?: Record<string, unknown>;
76
95
  include?: string | string[];
77
96
  sort?: string[];
78
97
  search?: string;
98
+ scope?: string;
79
99
  limit?: number;
80
100
  offset?: number;
81
101
  fields?: string[];
82
102
  }
83
103
  export interface ResourceListResult<T = Record<string, unknown>> {
84
104
  rows: T[];
105
+ summary: Record<string, unknown>;
85
106
  limit: number;
86
107
  time: number;
87
108
  count: number | null;
@@ -160,4 +181,5 @@ export interface ResourcePlugin {
160
181
  success: boolean;
161
182
  }>;
162
183
  }
184
+ export {};
163
185
  //# sourceMappingURL=resource.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource.types.d.ts","sourceRoot":"","sources":["../../../src/plugins/resource/resource.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource.types.d.ts","sourceRoot":"","sources":["../../../src/plugins/resource/resource.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- const dictionaryIndexesCache=new WeakMap(),dictionaryRevisionsCache=new WeakMap();async function getDictionaryIndexes(i,n){const V=S,x=dictionaryIndexesCache['get'](n)??new Map(),N=dictionaryRevisionsCache['get'](n)??new Map();dictionaryIndexesCache[V(0x103)](n,x),dictionaryRevisionsCache['set'](n,N);const a=i['filter'](q=>N[V(0x104)](q)!==n['revision'](q));if(a['length']===0x0)return x;const B=await Promise['all'](a[V(0x105)](async q=>{const M=V;if(!n['has'](q))return[q,new Map()];const X=await n['get'](q),f=new Map();for(const A of X){const u=A['code']??A['id'];if(u==null)continue;f[M(0x103)](String(u),{'id':u,'text':A['name']??A['text'],...A['color']!==undefined?{'color':A['color']}:{},...A['icon']!==undefined?{'icon':A['icon']}:{}});}return[q,f];}));for(const [q,X]of B){x[V(0x103)](q,X),N[V(0x103)](q,n['revision'](q));}return x;}export async function addDictionaryLookupData(i,n,x){const U=S;if(!x||i['length']===0x0)return i;const N=Object['entries'](n)['flatMap'](([B,q])=>{const X=q['dictionary'];return X?[{'field':B,'dictionaryName':X}]:[];});if(N['length']===0x0)return i;const a=await getDictionaryIndexes([...new Set(N[U(0x105)](({dictionaryName:B})=>B))],x);for(const B of i){for(const {field:q,dictionaryName:X}of N){const f=B[q];B[q+'_data']=f==null?null:a[U(0x104)](X)?.[U(0x104)](String(f))??null;}}return i;}function S(i,n){i=i-0x103;const x=v();let N=x[i];return N;}function v(){const t=['set','get','map'];v=function(){return t;};return v();}
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 +1 @@
1
- function S(i,n){i=i-0x171;const x=v();let N=x[i];return N;}function v(){const f=['file','map','string'];v=function(){return f;};return v();}export function addFileToken(i,n,x){const X=S;if(!x||i['length']===0x0)return i;const N=Object['entries'](n)['filter'](([,a])=>a['type']===X(0x171))[X(0x172)](([a])=>a);for(const a of i){for(const B of N){const q=a[B];typeof q===X(0x173)&&q['length']>0x0&&(a[B]=x['create'](q));}}return i;}
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 +1 @@
1
- import{qi,qt}from'../utils/sql.js';const tableLookupCache=new WeakMap();export function clearTableLookupCache(i,n){const p=S,x=tableLookupCache['get'](n);if(!x)return;for(const N of x['keys']()){N[p(0x123)](i+':')&&x[p(0x124)](N);}}function v(){const m=['startsWith','delete','name','field','number','set','entries','query','text','\x20AS\x20text\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20','table','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20','value','rows','_data'];v=function(){return m;};return v();}function S(i,n){i=i-0x123;const x=v();let N=x[i];return N;}export async function addTableLookupData(i,n,x){const O=S;if(!x||i['length']===0x0)return i;const N=tableLookupCache['get'](x)??new Map();tableLookupCache['set'](x,N);const a=Object['entries'](n)['flatMap'](([B,q])=>{const h=S,{table:X,value:value='id',text:text=h(0x125)}=q['lookup']??{};return X?[{'field':B,'table':X,'value':value,'text':text}]:[];});for(const B of a){const q=new Map();for(const u of i){const V=u[B[O(0x126)]];(typeof V==='string'||typeof V===O(0x127))&&q['set'](String(V),V);}const X=B['table']+':'+B['value']+':'+B['text'],f=N['get'](X)??new Map();N[O(0x128)](X,f);const A=[...q[O(0x129)]()]['filter'](([M])=>!f['has'](M))['map'](([,M])=>M);if(A['length']>0x0){const M=await x[O(0x12a)]('SELECT\x20'+qi(B['value'])+'\x20AS\x20id,\x20'+qi(B[O(0x12b)])+O(0x12c)+qt(B[O(0x12d)])+O(0x12e)+qi(B[O(0x12f)])+'\x20=\x20ANY($1)',[A]);for(const U of M[O(0x130)]){f['set'](String(U['id']),U);}for(const t of A){!f['has'](String(t))&&f['set'](String(t),null);}}for(const z of i){const J=z[B['field']];z[B[O(0x126)]+O(0x131)]=J==null?null:f['get'](String(J))??null;}}return i;}
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;}
@@ -11,6 +11,6 @@ type CreateRelationParams = {
11
11
  data?: Record<string, unknown>;
12
12
  user?: ResourceUser;
13
13
  };
14
- export declare function createCreateRelation(deps: ResourceDependencies, registry: ResourceRegistry): ({ name, id, relation, data, user, }: CreateRelationParams, ctx?: AppContext) => Promise<any>;
14
+ export declare function createCreateRelation(deps: ResourceDependencies, registry: ResourceRegistry): ({ name, id, relation, data, user }: CreateRelationParams, ctx?: AppContext) => Promise<any>;
15
15
  export {};
16
16
  //# sourceMappingURL=create-relation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-relation.d.ts","sourceRoot":"","sources":["../../../../src/plugins/resource/services/create-relation.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAIhE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,EAAE,gBAAgB,yCAIgD,oBAAoB,QAAQ,UAAU,KAAG,OAAO,CAAC,GAAG,CAAC,CA+DhI"}
1
+ {"version":3,"file":"create-relation.d.ts","sourceRoot":"","sources":["../../../../src/plugins/resource/services/create-relation.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAIhE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,EAAE,gBAAgB,wCAKY,oBAAoB,QAClD,UAAU,KACf,OAAO,CAAC,GAAG,CAAC,CAyFhB"}
@@ -1 +1 @@
1
- function S(i,n){i=i-0x1a4;const x=v();let N=x[i];return N;}import{UnsupportedError}from'../../../errors.js';function v(){const p=['capabilities','Generic\x20Resource\x20relation\x20\x22','files','rows','\x22\x20requires\x20a\x20project/provider\x20implementation','resource','Relation\x20update\x20is\x20not\x20configured:\x20'];v=function(){return p;};return v();}import{createCreate}from'./create.js';export function createCreateRelation(i,n){const x=createCreate(i,n);return async function N({name:a,id:B,relation:q,data:X,user:f},A){const J=S,u=A?.['pg']??i['pg'],V=n['get'](a);if(['notes','files']['includes'](q)&&!V[J(0x1a4)]?.['includes'](q))throw new UnsupportedError(J(0x1a5)+q+'\x22\x20requires\x20a\x20capabilities\x20\x22'+q+'\x22');if(q==='notes'){const t=await u['query']('INSERT\x20INTO\x20admin.notes(resource,resource_id,body)\x20VALUES\x20($1,$2,$3)\x20RETURNING\x20*',[a,String(B),X?.['body']]);return t['rows'][0x0];}if(q===J(0x1a6)){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*',[a,String(B),X?.['filePath'],X?.['size']??null]);return z[J(0x1a7)][0x0];}const M=V['relations']?.[q];if(!M?.['foreignKey']||!M['resource']&&!M['table'])throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+q+J(0x1a8));if(!X)throw new UnsupportedError('No\x20data\x20provided\x20for\x20relation:\x20'+X);if(!M[J(0x1a9)])throw new UnsupportedError(J(0x1aa)+q);X[M['foreignKey']]=B;const U=await x({'name':M[J(0x1a9)],'data':X??{},'user':f});return U;};}
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 +1 @@
1
- function S(i,n){i=i-0x109;const x=v();let N=x[i];return N;}import{ValidationError}from'../../../errors.js';import{assertOperation}from'../utils/permissions.js';function v(){const h=['get','push','length','No\x20writable\x20fields','map','query','join','keys'];v=function(){return h;};return v();}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(i,n){return async function x({name:N,data:a,user:B},q){const p=S,X=n[p(0x109)](N);assertOperation(X,'create',B),validateInputData({'resource':X,'data':a});const f=writableData(X,a);X['fields']['created_at']&&f[p(0x10a)](['created_at',new Date()]);X['fields']['created_by']&&f['push'](['created_by',B?.['id']]);if(!f[p(0x10b)])throw new ValidationError(p(0x10c));const A=f[p(0x10d)](([z])=>qi(z)),u=f[p(0x10d)]((z,J)=>'$'+(J+0x1)),V=f['map'](([,z])=>z),M=q?.['pg']??i['pg'],U=await M[p(0x10e)]('INSERT\x20INTO\x20'+qt(X['table'])+'\x20('+A[p(0x10f)](',\x20')+')\x20'+('VALUES\x20('+u[p(0x10f)](',\x20')+')\x20')+'RETURNING\x20*',V),t=U['rows'][0x0];return clearTableLookupCache(X['table'],M),await(q?.['audit']??i['audit'])?.['write']({'userId':B?.['id'],'module':X['module'],'resource':X['name'],'resourceId':t[X['key']],'action':'create','fields':Object[p(0x110)](a)}),t;};}
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;};}
@@ -11,7 +11,7 @@ type DeleteRelationParams = {
11
11
  relationId: string | number;
12
12
  user?: ResourceUser;
13
13
  };
14
- export declare function createDeleteRelation(deps: ResourceDependencies, registry: ResourceRegistry): ({ name, id, relation, relationId, user, }: DeleteRelationParams, ctx?: AppContext) => Promise<{
14
+ export declare function createDeleteRelation(deps: ResourceDependencies, registry: ResourceRegistry): ({ name, id, relation, relationId, user }: DeleteRelationParams, ctx?: AppContext) => Promise<{
15
15
  success: boolean;
16
16
  }>;
17
17
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"delete-relation.d.ts","sourceRoot":"","sources":["../../../../src/plugins/resource/services/delete-relation.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB,CAAC;AACF,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,EAAE,gBAAgB,+CAIsD,oBAAoB,QAAQ,UAAU,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAqCvJ"}
1
+ {"version":3,"file":"delete-relation.d.ts","sourceRoot":"","sources":["../../../../src/plugins/resource/services/delete-relation.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB,CAAC;AACF,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,EAAE,gBAAgB,8CAKkB,oBAAoB,QACxD,UAAU,KACf,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAuDjC"}
@@ -1 +1 @@
1
- function v(){const z=['query','relations','resource','foreignKey','Generic\x20Resource\x20relation\x20\x22'];v=function(){return z;};return v();}import{UnsupportedError}from'../../../errors.js';function S(i,n){i=i-0x7a;const x=v();let N=x[i];return N;}import{createRemove}from'./delete.js';export function createDeleteRelation(i,n){const x=createRemove(i,n);return async function N({name:a,id:B,relation:q,relationId:X,user:f},A){const t=S,u=A?.['pg']??i['pg'],V=n['get'](a);if(['notes','files']['includes'](q)&&!V['capabilities']?.['includes'](q))throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+q+'\x22\x20requires\x20a\x20capabilities\x20\x22'+q+'\x22');if(q==='notes')return await u[t(0x7a)]('DELETE\x20FROM\x20admin.notes\x20WHERE\x20note_id\x20=\x20$1\x20AND\x20resource\x20=\x20$2\x20AND\x20resource_id\x20=\x20$3',[X,a,String(B)]),{'success':!![]};if(q==='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',[X,a,String(B)]),{'success':!![]};const M=V[t(0x7b)]?.[q];if(!M?.[t(0x7c)]||!M[t(0x7d)])throw new UnsupportedError(t(0x7e)+q+'\x22\x20requires\x20a\x20project/provider\x20implementation');const U=await x({'name':M['resource'],'id':X,'user':f,'where':{'column':M['foreignKey'],'value':B}},A);return{'success':U};};}
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 +1 @@
1
- function v(){const t=['delete','WHERE\x20','key','push','rowCount','name'];v=function(){return t;};return v();}import{assertOperation}from'../utils/permissions.js';function S(i,n){i=i-0x150;const x=v();let N=x[i];return N;}import{qt,qi}from'../utils/sql.js';import{clearTableLookupCache}from'./add-table-lookup-data.js';export function createRemove(i,n){return async function x({name:N,id:a,user:B,where:q},X){const U=S,f=n['get'](N);assertOperation(f,U(0x150),B);const A=X?.['pg']??i['pg'],u=[a];let V=U(0x151)+qi(f[U(0x152)])+'\x20=\x20$1';q&&(u[U(0x153)](q['value']),V+='\x20AND\x20'+qi(q['column'])+'\x20=\x20$'+u['length']);f['where']&&(V+='\x20AND\x20('+f['where']+')');const M=await A['query']('DELETE\x20FROM\x20'+qt(f['table'])+'\x20'+V,u);if((M['rowCount']??0x0)>0x0)clearTableLookupCache(f['table'],A);if((M[U(0x154)]??0x0)>0x0)await(X?.['audit']??i['audit'])?.['write']({'module':f['module'],'resource':f[U(0x155)],'resourceId':a,'action':U(0x150)});return(M[U(0x154)]??0x0)>0x0;};}
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 +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;AAMhE,wBAAgB,aAAa,CAC3B,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,EAAE,gBAAgB,gCAOvB;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,6CAyHF"}
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 +1 @@
1
- import{ValidationError}from'../../../errors.js';import{assertOperation}from'../utils/permissions.js';function v(){const k=['key','integer','Invalid\x20id:\x20','joins','join','query','SELECT\x20','=$1','\x20LIMIT\x201','rows','dictionary','include','split','table','find','targetKey','\x20=\x20$1\x20LIMIT\x201\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20)','junctionTargetKey','fields','now'];v=function(){return k;};return v();}import{qt,qi,readableFields}from'../utils/sql.js';function S(i,n){i=i-0xd3;const x=v();let N=x[i];return N;}import{addDictionaryLookupData}from'./add-dictionary-lookup-data.js';import{addTableLookupData}from'./add-table-lookup-data.js';import{addFileToken}from'./add-file-token.js';import{getTableColumns}from'./get-table-columns.js';export function createFindOne(i,n){return async function x({name:N,id:a,query:query={},user:B}){const o=S,q=Date['now'](),X=n['get'](N);assertOperation(X,'read',B);if(X['fields'][X[o(0xd3)]]?.['type']===o(0xd4)&&!Number['isInteger'](Number(a)))throw new ValidationError(o(0xd5)+a+'\x20name:'+N);const f=X[o(0xd6)]?.['map'](U=>U['sql']+'\x20')[o(0xd7)]('\x20')||'',A=X['where']?'\x20AND\x20('+X['where']+')':'',u=await i['pg'][o(0xd8)](o(0xd9)+readableFields(X)['join'](',\x20')+'\x20FROM\x20'+qt(X['table'])+'\x20t\x20'+f+'\x20WHERE\x20'+qi(X[o(0xd3)])+o(0xda)+A+o(0xdb),[a]),V=u[o(0xdc)][0x0];if(!V)return null;await addDictionaryLookupData([V],X['fields'],i[o(0xdd)]),await addTableLookupData([V],X['fields'],i['pg']),addFileToken([V],X['fields'],i['file']);const M=Array['isArray'](query[o(0xde)])?query['include']:query[o(0xde)]?.[o(0xdf)](',')??[];for(const U of M){const t=X['relations']?.[U];if(!t)throw new ValidationError('Unknown\x20relation:\x20'+U);const z=!!(t?.['junctionTable']&&t['junctionLocalKey']&&t['junctionForeignKey']);if(!t?.['foreignKey']&&!z||!t['resource']&&!t['table'])throw new ValidationError('Invalid\x20relation:\x20'+U);const J=t['resource']?n['get'](t['resource']):undefined,p=t[o(0xe0)]??J['table'],h=J?.['key']??'id',O=p?await getTableColumns(p,i):[],m=J?readableFields(J)['map'](b=>''+(O[o(0xe1)](T=>T['name']===b['split']('\x20')['shift']()?.['replace'](/\"/g,''))?'t.':'')+b)['join'](',\x20'):'t.*',P=t['foreignKey']?'SELECT\x20'+m+'\x20FROM\x20'+qt(p)+'\x20t\x20WHERE\x20'+(t[o(0xe2)]||qi(h))+'\x20=\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20'+qi(t['foreignKey'])+'\x20FROM\x20'+qt(X['table'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20'+qi(X['key'])+o(0xe3):'SELECT\x20'+m+'\x20FROM\x20'+qt(p)+'\x20t\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20JOIN\x20'+qt(t['junctionTable'])+'\x20j\x20ON\x20j.'+qi(t['junctionForeignKey'])+'\x20=\x20t.'+(t[o(0xe4)]||qi(h))+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20j.'+qi(t['junctionLocalKey'])+'\x20=\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20'+qi(X['key'])+'\x20FROM\x20'+qt(X[o(0xe0)])+'\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20'+qi(X[o(0xd3)])+'\x20=\x20$1\x20LIMIT\x201\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20)',G=(await i['pg']['query'](P,[a]))['rows'];J&&(await addDictionaryLookupData(G,J[o(0xe5)],i['dictionary']),await addTableLookupData(G,J['fields'],i['pg']),addFileToken(G,J['fields'],i['file'])),V[U]=G;}return V['time']=Date[o(0xe6)]()-q,V;};}
1
+ import{ValidationError}from'../../../errors.js';import{assertOperation}from'../utils/permissions.js';import{qt,qi,readableFields}from'../utils/sql.js';function f(){const E=['get','type','table','key','=$1','include','rows'];f=function(){return E;};return f();}import{addDictionaryLookupData}from'./add-dictionary-lookup-data.js';import{addTableLookupData}from'./add-table-lookup-data.js';import{addFileToken}from'./add-file-token.js';import{createFindRelation}from'./find-relation.js';function Y(w,y){w=w-0x1ba;const d=f();let Z=d[w];return Z;}export function createFindOne(w,y){return async function d({name:Z,id:M,query:query={},user:H}){const U=Y,Q=Date['now'](),s=y[U(0x1ba)](Z);assertOperation(s,'read',H);if(s['fields'][s['key']]?.[U(0x1bb)]==='integer'&&!Number['isInteger'](Number(M)))throw new ValidationError('Invalid\x20id:\x20'+M+'\x20name:'+Z);const j=s['joins']?.['map'](i=>i['sql']+'\x20')['join']('\x20')||'',n=s['where']?'\x20AND\x20('+s['where']+')':'',t=await w['pg']['query']('SELECT\x20'+readableFields(s)['join'](',\x20')+'\x20FROM\x20'+qt(s[U(0x1bc)])+'\x20t\x20'+j+'\x20WHERE\x20'+qi(s[U(0x1bd)])+U(0x1be)+n+'\x20LIMIT\x201',[M]),K=t['rows'][0x0];if(!K)return null;await addDictionaryLookupData([K],s['fields'],w['dictionary']),await addTableLookupData([K],s['fields'],w['pg']),addFileToken([K],s['fields'],w['file']);const T=Array['isArray'](query['include'])?query[U(0x1bf)]:query['include']?.['split'](',')??[],h=createFindRelation(w,y);for(const i of T){K[i]=await h({'name':Z,'id':M,'relation':i,'query':query,'user':H})['then'](G=>G[U(0x1c0)]??[]);}return K['time']=Date['now']()-Q,K;};}
@@ -1 +1 @@
1
- {"version":3,"file":"find-relation.d.ts","sourceRoot":"","sources":["../../../../src/plugins/resource/services/find-relation.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,YAAY,EACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAQhE,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,EAAE,gBAAgB,oCAOvB;IACD,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB,KAAG,OAAO,CAAC,GAAG,CAAC,CA6IjB"}
1
+ {"version":3,"file":"find-relation.d.ts","sourceRoot":"","sources":["../../../../src/plugins/resource/services/find-relation.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,YAAY,EACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAQhE,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,EAAE,gBAAgB,oCAOvB;IACD,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB,KAAG,OAAO,CAAC,GAAG,CAAC,CA+GjB"}
@@ -1 +1 @@
1
- import{UnsupportedError,ValidationError}from'../../../errors.js';import{qi,qt}from'../utils/sql.js';function S(i,n){i=i-0xc8;const x=v();let N=x[i];return N;}import{addDictionaryLookupData}from'./add-dictionary-lookup-data.js';function v(){const o=['limit','Invalid\x20pagination','get','files','notes','now','SELECT\x20*\x20FROM\x20admin.files\x20WHERE\x20resource\x20=\x20$1\x20AND\x20resource_id\x20=\x20$2\x20ORDER\x20BY\x20created_at\x20DESC','file','junctionLocalKey','localKey','resource','Generic\x20Resource\x20relation\x20\x22','table','key','fields','foreignKey','item','where','SELECT\x20','\x20t\x20','\x20j\x20ON\x20j.','\x20=\x20t.','\x20FROM\x20','\x20=\x20(select\x20','\x20where\x20','\x20LIMIT\x20$2\x20OFFSET\x20$3','rows','length'];v=function(){return o;};return v();}import{addTableLookupData}from'./add-table-lookup-data.js';import{addFileToken}from'./add-file-token.js';import{autoIndex}from'../utils/auto-index.js';export function createFindRelation(i,n){return async function x({name:N,id:a,relation:B,query:query={}}){const T=S,q=Date['now'](),X=Math['min'](Math['max'](query[T(0xc8)]??0x14,0x1),0xc8),f=Math['max'](query['offset']??0x0,0x0);if(!Number['isFinite'](X)||!Number['isFinite'](f))throw new ValidationError(T(0xc9));const A=n[T(0xca)](N),u=A['relations']?.[B];if(['notes',T(0xcb)]['includes'](B)&&!A['capabilities']?.['includes'](B))throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+B+'\x22\x20requires\x20a\x20capabilities\x20\x22'+B+'\x22');if(B===T(0xcc)){const P=await i['pg']['query']('SELECT\x20*\x20FROM\x20admin.notes\x20WHERE\x20resource\x20=\x20$1\x20AND\x20resource_id\x20=\x20$2\x20ORDER\x20BY\x20created_at\x20DESC',[N,String(a)]);return{'total':P['rows']['length'],'time':Date[T(0xcd)]()-q,'rows':P['rows']};}if(B==='files'){const G=await i['pg']['query'](T(0xce),[N,String(a)]);return addFileToken(G['rows'],{'file_path':{'type':T(0xcf)}},i[T(0xcf)]),{'total':G['rows']['length'],'time':Date['now']()-q,'rows':G['rows']};}const V=!!(u?.['junctionTable']&&u[T(0xd0)]&&u['junctionForeignKey']);if(!u||!V&&!u['foreignKey']&&!u[T(0xd1)]||!u[T(0xd2)]&&!u['table'])throw new UnsupportedError(T(0xd3)+B+'\x22\x20requires\x20a\x20project/provider\x20implementation');const M=u['resource']?n['get'](u[T(0xd2)]):undefined,U=u[T(0xd4)]??M[T(0xd4)],t=M?.[T(0xd5)]??'id',z=!V&&Object['keys'](M?.[T(0xd6)]??{})['filter'](b=>M?.[T(0xd6)][b]?.['read']&&M?.['fields'][b]?.['scope']!=='item')['map'](qi)['join'](',\x20'),J=u[T(0xd6)]?.['join'](',\x20')||z||'*';u['foreignKey']&&autoIndex(U,u[T(0xd7)],'btree',i['pg']);const p=M?.['joins']?.['filter'](b=>b['scope']!==T(0xd8))['map'](b=>b['sql']+'\x20')['join']('\x20')||'',h=u['where']?'\x20AND\x20('+u[T(0xd9)]+')':'',O=(V?T(0xda)+J+'\x20FROM\x20'+qt(U)+T(0xdb)+p+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20JOIN\x20'+qt(u['junctionTable'])+T(0xdc)+qi(u['junctionForeignKey'])+T(0xdd)+(u['junctionTargetKey']||qi(t))+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20j.'+qi(u['junctionLocalKey'])+'\x20=\x20$1'+h+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20LIMIT\x20$2\x20OFFSET\x20$3':'')||(u[T(0xd7)]?'SELECT\x20'+J+'\x20FROM\x20'+qt(U)+T(0xdb)+p+'\x20WHERE\x20t.'+qi(u[T(0xd7)])+'\x20=\x20$1'+h+'\x20LIMIT\x20$2\x20OFFSET\x20$3':T(0xda)+J+T(0xde)+qt(U)+T(0xdb)+p+'\x20WHERE\x20t.'+qi(u[T(0xd7)]||t)+T(0xdf)+qi(u[T(0xd1)])+T(0xde)+qt(A['table'])+T(0xe0)+qi(A['key'])+'\x20=\x20$1\x20limit\x201)'+h+T(0xe1)),m=await i['pg']['query'](O,[a,X,f]);return M&&(await addDictionaryLookupData(m['rows'],M['fields'],i['dictionary']),await addTableLookupData(m['rows'],M['fields'],i['pg']),addFileToken(m[T(0xe2)],M[T(0xd6)],i['file'])),{'limit':X,'offset':f,'total':m['rows'][T(0xe3)],'time':Date['now']()-q,'rows':m['rows']??null};};}
1
+ import{UnsupportedError,ValidationError}from'../../../errors.js';function f(){const r=['now','capabilities','Generic\x20Resource\x20relation\x20\x22','notes','length','rows','files','file','\x22\x20requires\x20a\x20project/provider\x20implementation','fields','scope','map','join','\x20j\x20ON\x20j.','junctionLocalKey','where\x20','\x20=\x20(SELECT\x20','key','where','joins','\x20FROM\x20','dictionary'];f=function(){return r;};return f();}import{qi,qt}from'../utils/sql.js';import{addDictionaryLookupData}from'./add-dictionary-lookup-data.js';import{addTableLookupData}from'./add-table-lookup-data.js';function Y(w,y){w=w-0x1a1;const d=f();let Z=d[w];return Z;}import{addFileToken}from'./add-file-token.js';import{autoIndex}from'../utils/auto-index.js';export function createFindRelation(w,y){return async function d({name:Z,id:M,relation:H,query:query={}}){const o=Y,Q=Date[o(0x1a1)](),s=Math['min'](Math['max'](query['limit']??0x14,0x1),0xc8),j=Math['max'](query['offset']??0x0,0x0);if(!Number['isFinite'](s)||!Number['isFinite'](j))throw new ValidationError('Invalid\x20pagination');const n=y['get'](Z),t=n['relations']?.[H];if(['notes','files']['includes'](H)&&!n[o(0x1a2)]?.['includes'](H))throw new UnsupportedError(o(0x1a3)+H+'\x22\x20requires\x20a\x20capabilities\x20\x22'+H+'\x22');if(H===o(0x1a4)){const A=await w['pg']['query']('SELECT\x20*\x20FROM\x20admin.notes\x20WHERE\x20resource\x20=\x20$1\x20AND\x20resource_id\x20=\x20$2\x20ORDER\x20BY\x20created_at\x20DESC',[Z,String(M)]);return{'total':A['rows'][o(0x1a5)],'time':Date['now']()-Q,'rows':A[o(0x1a6)]};}if(H===o(0x1a7)){const c=await w['pg']['query']('SELECT\x20*\x20FROM\x20admin.files\x20WHERE\x20resource\x20=\x20$1\x20AND\x20resource_id\x20=\x20$2\x20ORDER\x20BY\x20created_at\x20DESC',[Z,String(M)]);return addFileToken(c['rows'],{'file_path':{'type':o(0x1a8)}},w['file']),{'total':c['rows']['length'],'time':Date[o(0x1a1)]()-Q,'rows':c['rows']};}if(!t?.['resource'])throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+H+o(0x1a9));const K=y['get'](t['resource']),T=K?.['key']??'id',h=K?.['table'],i=Object['keys'](K?.[o(0x1aa)]??{})['filter'](x=>K?.['fields'][x]?.['read']&&K?.[o(0x1aa)][x]?.[o(0x1ab)]!=='item')[o(0x1ac)](qi)['join'](',\x20'),G=t['fields']?.[o(0x1ad)](',\x20')||i||'*';t['foreignKey']&&autoIndex(h,t['foreignKey'],'btree',w['pg']);const U=t['junctionTable']?'JOIN\x20'+qt(t['junctionTable'])+o(0x1ae)+qi(t['junctionForeignKey'])+'\x20=\x20t.'+(t['junctionTargetKey']||qi(T))+'\x20WHERE\x20'+qi(t[o(0x1af)])+'\x20=\x20$1\x20':o(0x1b0)+(t['foreignKey']||qi(T))+o(0x1b1)+qi(t['localKey']||n[o(0x1b2)])+'\x20FROM\x20'+qt(n['table'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20'+qi(n['key'])+'\x20=\x20$1\x20LIMIT\x201\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20)\x20'+(t['where']?'AND\x20('+t[o(0x1b3)]+')':''),E=K[o(0x1b4)]?.['map'](x=>x['sql']+'\x20')['join']('\x20')||'',e='SELECT\x20'+G+o(0x1b5)+qt(h)+'\x20t\x20'+E+'\x20'+U+'\x20LIMIT\x20$2\x20OFFSET\x20$3',l=await w['pg']['query'](e,[M,s,j]);return K&&(await addDictionaryLookupData(l['rows'],K['fields'],w[o(0x1b6)]),await addTableLookupData(l['rows'],K['fields'],w['pg']),addFileToken(l[o(0x1a6)],K[o(0x1aa)],w['file'])),{'limit':s,'offset':j,'total':l['rows']['length'],'time':Date['now']()-Q,'rows':l['rows']??null};};}
@@ -1 +1 @@
1
- {"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../../src/plugins/resource/services/find.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,YAAY,EACb,MAAM,sBAAsB,CAAC;AAK9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAMhE,wBAAgB,UAAU,CACxB,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,EAAE,gBAAgB,4BAMvB;IACD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB,KAAG,OAAO,CAAC,kBAAkB,CAAC,CA8DhC"}
1
+ {"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../../src/plugins/resource/services/find.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,YAAY,EACb,MAAM,sBAAsB,CAAC;AAK9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAOhE,wBAAgB,UAAU,CACxB,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,EAAE,gBAAgB,4BAMvB;IACD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB,KAAG,OAAO,CAAC,kBAAkB,CAAC,CAyEhC"}
@@ -1 +1 @@
1
- import{ValidationError}from'../../../errors.js';import{buildFilters}from'../utils/filters.js';import{assertOperation}from'../utils/permissions.js';function v(){const m=['filter','sql','\x20AND\x20','\x20WHERE\x20','where','text','values','search','item','map','join','all','table','OFFSET\x20$','\x20t\x20','query','fields','dictionary','rows'];v=function(){return m;};return v();}import{buildSort}from'../utils/sort.js';function S(i,n){i=i-0x173;const x=v();let N=x[i];return N;}import{qt,readableFields}from'../utils/sql.js';import{addDictionaryLookupData}from'./add-dictionary-lookup-data.js';import{addTableLookupData}from'./add-table-lookup-data.js';import{addFileToken}from'./add-file-token.js';import{autoIndex}from'../utils/auto-index.js';export function createFind(i,n){return async function x({name:N,query:query={},user:a}){const O=S,B=Date['now'](),q=n['get'](N);assertOperation(q,'read',a);const X=Math['min'](Math['max'](query['limit']??0x14,0x1),0xc8),f=Math['max'](query['offset']??0x0,0x0),A=buildFilters(q,query[O(0x173)],0x1,i['pg']);q['where']&&(A[O(0x174)]+=(A[O(0x174)]?O(0x175):O(0x176))+('('+q[O(0x177)]+')'));const u=buildSort(q,query['sort']);if(!Number['isFinite'](X)||!Number['isFinite'](f))throw new ValidationError('Invalid\x20pagination');const V=q['searchable']||Object['keys'](q['fields'])['filter'](h=>q['fields'][h]?.['searchable']);query['search']&&V['length']&&(V['map'](h=>autoIndex(q['table'],h,O(0x178),i['pg'])),A[O(0x179)]['push'](query[O(0x17a)]['toLowerCase']()+'%'),A['sql']+=(A['sql']?O(0x175):'\x20WHERE\x20')+('\x20('+V?.['map'](h=>'lower('+qt(h)+')\x20LIKE\x20$'+A['values']['length'])['join']('\x20OR\x20')+')'));const M=q['joins']?.['filter'](h=>h['scope']!==O(0x17b))[O(0x17c)](h=>h['sql']+'\x20')[O(0x17d)]('\x20')||'',U='SELECT\x20'+readableFields(q,O(0x17e))['join'](',\x20')+'\x20'+('FROM\x20'+qt(q[O(0x17f)])+'\x20t\x20')+(M+'\x20'+A[O(0x174)]+'\x20'+u+'\x20')+('LIMIT\x20$'+(A['values']['length']+0x1)+'\x20')+(O(0x180)+(A['values']['length']+0x2)),t='SELECT\x20COUNT(*)::int\x20AS\x20total\x20'+('FROM\x20'+qt(q[O(0x17f)])+O(0x181))+(M+'\x20'+A['sql']),[z,J]=await Promise[O(0x17e)]([i['pg']['query'](U,[...A[O(0x179)],X,f]),i['pg'][O(0x182)](t,A['values'])]),p=z['rows'];return await addDictionaryLookupData(p,q[O(0x183)],i[O(0x184)]),await addTableLookupData(p,q['fields'],i['pg']),addFileToken(p,q['fields'],i['file']),{'limit':X,'offset':f,'count':z['rowCount'],'total':J[O(0x185)][0x0]?.['total']??0x0,'time':Date['now']()-B,'rows':p};};}
1
+ import{ValidationError}from'../../../errors.js';import{buildFilters,buildIndex}from'../utils/filters.js';import{assertOperation}from'../utils/permissions.js';import{buildSort}from'../utils/sort.js';import{qt,readableFields}from'../utils/sql.js';import{addDictionaryLookupData}from'./add-dictionary-lookup-data.js';import{addTableLookupData}from'./add-table-lookup-data.js';import{addFileToken}from'./add-file-token.js';function Y(w,y){w=w-0x1a3;const d=f();let Z=d[w];return Z;}import{autoIndex}from'../utils/auto-index.js';import{buildSummary}from'../utils/summary.js';function f(){const c=['read','min','filter','sql','\x20WHERE\x20','where','Invalid\x20pagination','fields','map','table','push','toLowerCase','length','join','\x20OR\x20','scope','scopes','default','true','replace','NULL','all','query','values','then','rows','file'];f=function(){return c;};return f();}export function createFind(w,y){return async function d({name:Z,query:query={},user:M}){const A=Y,H=Date['now'](),Q=y['get'](Z);assertOperation(Q,A(0x1a3),M);const s=Math[A(0x1a4)](Math['max'](query['limit']??0x14,0x1),0xc8),j=Math['max'](query['offset']??0x0,0x0);buildIndex(Q,query['filter'],w['pg']);const n=buildFilters(Q,query[A(0x1a5)]);Q['where']&&(n[A(0x1a6)]+=(n[A(0x1a6)]?'\x20AND\x20':A(0x1a7))+('('+Q[A(0x1a8)]+')'));const t=buildSort(Q,query['sort']);if(!Number['isFinite'](s)||!Number['isFinite'](j))throw new ValidationError(A(0x1a9));const K=Q['searchable']||Object['keys'](Q['fields'])['filter'](l=>Q[A(0x1aa)][l]?.['searchable']);query['search']&&K['length']&&(K[A(0x1ab)](l=>autoIndex(Q[A(0x1ac)],l,'text',w['pg'])),n['values'][A(0x1ad)](query['search'][A(0x1ae)]()+'%'),n['sql']+=(n['sql']?'\x20AND\x20':'\x20WHERE\x20')+('\x20('+K?.['map'](l=>'lower('+qt(l)+')\x20LIKE\x20$'+n['values'][A(0x1af)])[A(0x1b0)](A(0x1b1))+')'));if(query['scope']&&Q['scopes']?.[query[A(0x1b2)]]===undefined)throw new ValidationError('Unknown\x20scope:\x20'+query[A(0x1b2)]);const T=query[A(0x1b2)]||(Q[A(0x1b3)]?.[A(0x1b4)]?'default':undefined);T&&(n['sql']+=(n['sql']?'\x20AND\x20':'\x20WHERE\x20')+('('+(Q['scopes']?.[T]||A(0x1b5))+')'));const h=Q['joins']?.[A(0x1a5)](l=>l['scope']!=='item')['map'](l=>l[A(0x1a6)]+'\x20')[A(0x1b0)]('\x20')||'',i='SELECT\x20'+readableFields(Q,'all')['join'](',\x20')+'\x20'+('FROM\x20'+qt(Q[A(0x1ac)])+'\x20t\x20')+(h+'\x20'+n[A(0x1a6)][A(0x1b6)](/:uid/g,'\x27'+(M?.['id']??A(0x1b7))+'\x27')+'\x20'+t+'\x20')+('LIMIT\x20$'+(n['values'][A(0x1af)]+0x1)+'\x20')+('OFFSET\x20$'+(n['values']['length']+0x2)),G=buildSummary(Q,query,M),[U,E]=await Promise[A(0x1b8)]([w['pg'][A(0x1b9)](i,[...n[A(0x1ba)],s,j]),w['pg'][A(0x1b9)](G,n['values'])[A(0x1bb)](l=>l['rows'][0x0]??{})]),e=U[A(0x1bc)];return await addDictionaryLookupData(e,Q['fields'],w['dictionary']),await addTableLookupData(e,Q['fields'],w['pg']),addFileToken(e,Q['fields'],w[A(0x1bd)]),{'time':Date['now']()-H,'limit':s,'offset':j,'count':U['rowCount'],'total':E?.['count']??0x0,'summary':E,'rows':e};};}
@@ -1 +1 @@
1
- function S(i,n){i=i-0x93;const x=v();let N=x[i];return N;}function v(){const B=['query','then'];v=function(){return B;};return v();}export async function getTableColumns(i,n){const a=S;if(!i)throw new Error('not\x20enough\x20params:\x20table');if(!n?.['pg'])return[];const x=await n['pg'][a(0x93)]('\x0a\x20\x20\x20\x20select\x0a\x20\x20\x20\x20\x20\x20\x20\x20attname\x20as\x20name,\x20pg_catalog.col_description(attrelid,attnum)\x20as\x20title\x0a\x20\x20\x20\x20from\x20pg_catalog.pg_attribute\x20where\x20attrelid=$1::regclass\x20and\x20attnum>0\x20and\x20NOT\x20attisdropped',[i])[a(0x94)](N=>N['rows']||[]);return x;}
1
+ function f(){const H=['not\x20enough\x20params:\x20table','rows'];f=function(){return H;};return f();}function Y(w,y){w=w-0x1c9;const d=f();let Z=d[w];return Z;}export async function getTableColumns(w,y){const M=Y;if(!w)throw new Error(M(0x1c9));if(!y?.['pg'])return[];const d=await y['pg']['query']('\x0a\x20\x20\x20\x20select\x0a\x20\x20\x20\x20\x20\x20\x20\x20attname\x20as\x20name,\x20pg_catalog.col_description(attrelid,attnum)\x20as\x20title\x0a\x20\x20\x20\x20from\x20pg_catalog.pg_attribute\x20where\x20attrelid=$1::regclass\x20and\x20attnum>0\x20and\x20NOT\x20attisdropped',[w])['then'](Z=>Z[M(0x1ca)]||[]);return d;}
@@ -1 +1 @@
1
- import{UnsupportedError,ValidationError}from'../../../errors.js';function S(i,n){i=i-0x177;const x=v();let N=x[i];return N;}import{createUpdate}from'./update.js';function v(){const t=['get','relations','foreignKey'];v=function(){return t;};return v();}export function createUpdateRelation(i,n){const x=createUpdate(i,n);return async function N({name:a,id:B,relation:q,relationId:X,data:f,user:A},u){const U=S,V=n[U(0x177)](a),M=V[U(0x178)]?.[q];if(!M?.['resource']||!M['foreignKey'])throw new UnsupportedError('Relation\x20update\x20is\x20not\x20configured:\x20'+q);if(Object['hasOwn'](f,M['foreignKey'])&&f[M[U(0x179)]]!==B)throw new ValidationError('Cannot\x20change\x20relation:\x20'+M['foreignKey']);return x({'name':M['resource'],'id':X,'data':f,'user':A,'where':{'column':M['foreignKey'],'value':B}},u);};}
1
+ function Y(w,y){w=w-0x70;const d=f();let Z=d[w];return Z;}import{UnsupportedError,ValidationError}from'../../../errors.js';import{createUpdate}from'./update.js';function f(){const i=['resource','Relation\x20update\x20is\x20not\x20configured:\x20'];f=function(){return i;};return f();}export function createUpdateRelation(w,y){const d=createUpdate(w,y);return async function Z({name:M,id:H,relation:Q,relationId:s,data:j,user:n},t){const h=Y,K=y['get'](M),T=K['relations']?.[Q];if(!T?.[h(0x70)]||!T['foreignKey'])throw new UnsupportedError(h(0x71)+Q);if(Object['hasOwn'](j,T['foreignKey'])&&j[T['foreignKey']]!==H)throw new ValidationError('Cannot\x20change\x20relation:\x20'+T['foreignKey']);return d({'name':T['resource'],'id':s,'data':j,'user':n,'where':{'column':T['foreignKey'],'value':H}},t);};}