@opengis/fcore 0.0.1-beta.24 → 0.0.1-beta.26

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 (118) 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.js +1 -1
  9. package/dist/fcore.d.ts.map +1 -1
  10. package/dist/fcore.js +1 -1
  11. package/dist/migrations/cli.js +1 -1
  12. package/dist/migrations/runner.js +1 -1
  13. package/dist/modules/auth/adduser-cli.js +1 -1
  14. package/dist/modules/auth/passwd-cli.js +1 -1
  15. package/dist/modules/auth/permission-cli.js +1 -1
  16. package/dist/modules/auth/route.d.ts.map +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.d.ts +2 -0
  21. package/dist/modules/auth/services/get-current-user.d.ts.map +1 -1
  22. package/dist/modules/auth/services/get-current-user.js +1 -1
  23. package/dist/modules/auth/services/registration.js +1 -1
  24. package/dist/modules/auth/services/verify-two-factor.js +1 -1
  25. package/dist/modules/file/mime.js +1 -1
  26. package/dist/modules/file/route.js +1 -1
  27. package/dist/modules/file/schema.js +1 -1
  28. package/dist/modules/file/services/get-file.js +1 -1
  29. package/dist/modules/file/services/resize-file.js +1 -1
  30. package/dist/modules/file/services/upload-file.d.ts.map +1 -1
  31. package/dist/modules/file/services/upload-file.js +1 -1
  32. package/dist/modules/resource/route.d.ts.map +1 -1
  33. package/dist/modules/resource/route.js +1 -1
  34. package/dist/modules/resource/schema.d.ts +5 -0
  35. package/dist/modules/resource/schema.d.ts.map +1 -1
  36. package/dist/modules/resource/schema.js +1 -1
  37. package/dist/modules/resource/services/add-note.js +1 -1
  38. package/dist/modules/resource/services/add-resource-file.js +1 -1
  39. package/dist/modules/resource/services/create-resource-relation.js +1 -1
  40. package/dist/modules/resource/services/create-resource.js +1 -1
  41. package/dist/modules/resource/services/delete-resource-relation.js +1 -1
  42. package/dist/modules/resource/services/delete-resource.js +1 -1
  43. package/dist/modules/resource/services/export-resource.js +1 -1
  44. package/dist/modules/resource/services/get-resource.js +1 -1
  45. package/dist/modules/resource/services/list-resource-relation.js +1 -1
  46. package/dist/modules/resource/services/list-resources.js +1 -1
  47. package/dist/modules/resource/services/search-resource.js +1 -1
  48. package/dist/modules/resource/services/suggest-resource.js +1 -1
  49. package/dist/modules/resource/services/update-resource-relation.js +1 -1
  50. package/dist/modules/resource/services/update-resource.js +1 -1
  51. package/dist/modules/resource/services/upload-resource-file.js +1 -1
  52. package/dist/modules/system/route.js +1 -1
  53. package/dist/modules/system/schema.js +1 -1
  54. package/dist/modules/system/services/check-system.js +1 -1
  55. package/dist/modules/system/services/get-access.js +1 -1
  56. package/dist/modules/system/services/get-api-list.js +1 -1
  57. package/dist/modules/system/services/get-audit-log.js +1 -1
  58. package/dist/modules/system/services/get-dictionary.js +1 -1
  59. package/dist/modules/system/services/get-system-log.js +1 -1
  60. package/dist/modules/system/services/get-system-settings.js +1 -1
  61. package/dist/modules/system/services/list-dictionaries.js +1 -1
  62. package/dist/modules/system/services/set-access.js +1 -1
  63. package/dist/modules/system/services/update-dictionary.js +1 -1
  64. package/dist/modules/system/services/update-system-settings.js +1 -1
  65. package/dist/modules/utils/require-admin.js +1 -1
  66. package/dist/modules/utils/safe-user.js +1 -1
  67. package/dist/modules/utils/unsupported.js +1 -1
  68. package/dist/plugins/audit/audit.js +1 -1
  69. package/dist/plugins/audit/services/write-audit.js +1 -1
  70. package/dist/plugins/auth/get-user-permissions.js +1 -1
  71. package/dist/plugins/auth/index.d.ts.map +1 -1
  72. package/dist/plugins/auth/index.js +1 -1
  73. package/dist/plugins/auth/verifyUser.js +1 -1
  74. package/dist/plugins/dictionary.js +1 -1
  75. package/dist/plugins/file.d.ts +7 -3
  76. package/dist/plugins/file.d.ts.map +1 -1
  77. package/dist/plugins/file.js +1 -1
  78. package/dist/plugins/jwt.js +1 -1
  79. package/dist/plugins/logger/index.js +1 -1
  80. package/dist/plugins/logger/transport.js +1 -1
  81. package/dist/plugins/pg.js +1 -1
  82. package/dist/plugins/redis.d.ts.map +1 -1
  83. package/dist/plugins/redis.js +1 -1
  84. package/dist/plugins/resource/resource.d.ts +1 -1
  85. package/dist/plugins/resource/resource.d.ts.map +1 -1
  86. package/dist/plugins/resource/resource.js +1 -1
  87. package/dist/plugins/resource/resource.registry.d.ts +3 -2
  88. package/dist/plugins/resource/resource.registry.d.ts.map +1 -1
  89. package/dist/plugins/resource/resource.registry.js +1 -1
  90. package/dist/plugins/resource/resource.types.d.ts +5 -4
  91. package/dist/plugins/resource/resource.types.d.ts.map +1 -1
  92. package/dist/plugins/resource/services/add-dictionary-lookup-data.js +1 -1
  93. package/dist/plugins/resource/services/add-file-token.js +1 -1
  94. package/dist/plugins/resource/services/add-table-lookup-data.js +1 -1
  95. package/dist/plugins/resource/services/create-relation.js +1 -1
  96. package/dist/plugins/resource/services/create.js +1 -1
  97. package/dist/plugins/resource/services/delete-relation.js +1 -1
  98. package/dist/plugins/resource/services/delete.js +1 -1
  99. package/dist/plugins/resource/services/find-one.d.ts.map +1 -1
  100. package/dist/plugins/resource/services/find-one.js +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.map +1 -1
  110. package/dist/plugins/resource/utils/filters.js +1 -1
  111. package/dist/plugins/resource/utils/permissions.js +1 -1
  112. package/dist/plugins/resource/utils/sort.js +1 -1
  113. package/dist/plugins/resource/utils/sql.js +1 -1
  114. package/dist/plugins/resource/utils/summary.js +1 -1
  115. package/dist/shared/getIP.js +1 -1
  116. package/migrations/20260903130000_move_notes_files_to_admin.sql +17 -17
  117. package/migrations/20260903140000_settings_nulls_not_distinct.sql +18 -18
  118. package/package.json +93 -93
@@ -1 +1 @@
1
- function W(){const P=['empty\x20pg','query','Invalid\x20dictionary\x20name:\x20','code','has','items','Dictionary\x20table\x20not\x20found','rows','database','checked','DELETE\x20FROM\x20admin.dictionary_items\x20WHERE\x20dictionary_id\x20=\x20$1','parentId','COMMIT','ROLLBACK','values'];W=function(){return P;};return W();}import{ConflictError,NotFoundError,ValidationError}from'../errors.js';const dictionaryName=/^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/;function n(s,J){s=s-0x19d;const N=W();let O=N[s];return O;}export function createDictionary({pg:s,dictionaries:dictionaries=[]}){const J=new Map(),N=new Map();let O,E;async function S(){const l=n;if(O!==undefined)return O;if(!s)throw new Error(l(0x19d));return E??=s[l(0x19e)]('\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'](o=>{const i=o['rows'][0x0]?.['table_name'];O=i==='dictionaries'?i:null;}),await E,O;}function T(o){const H=n;if(!dictionaryName['test'](o))throw new ValidationError(H(0x19f)+o);}function f(o){const U=n;for(const i of Array['isArray'](o)?o:[o]){T(i[U(0x1a0)]);if(!Array['isArray'](i['items']))throw new ValidationError('Invalid\x20dictionary\x20items:\x20'+i['code']);if(J['has'](i['code']))throw new ConflictError('Dictionary\x20already\x20registered:\x20'+i[U(0x1a0)]);J['set'](i['code'],{...i,'source':'static'});}}function a(o){const F=n;return J[F(0x1a1)](o);}async function g(o){const B=n;T(o);const i=J['get'](o);if(i&&i['checked'])return i[B(0x1a2)];const Q=await S();if(!Q)throw new NotFoundError(B(0x1a3));const u=await s?.['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',[o]);if(u?.[B(0x1a4)]?.['length']){const e=u?.['rows'];return J['set'](o,{'code':o,'name':o,'items':e,'source':B(0x1a5),'checked':!![]}),e;}if(!i?.['items'])throw new NotFoundError('Dictionary\x20not\x20found:\x20'+o);return i[B(0x1a6)]=!![],i[B(0x1a2)];}async function p(o,i){const k=n;T(o);if(!Array['isArray'](i))throw new ValidationError('Dictionary\x20items\x20must\x20be\x20an\x20array');const Q=await S();if(!Q)throw new NotFoundError('Dictionary\x20table\x20not\x20found');if(!s)throw new Error('empty\x20pg');const u=await s['connect']();try{await u['query']('BEGIN');const e=await u['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',[o,o,'fcore','custom',!![]]),x=e[k(0x1a4)][0x0]['id'];await u['query'](k(0x1a7),[x]);for(const G of i){await u[k(0x19e)]('\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',[x,G['code'],G['name'],G[k(0x1a8)]??null]);}await u['query'](k(0x1a9));}catch(L){await u['query'](k(0x1aa));throw L;}finally{u['release']();}J['set'](o,{'items':i,'code':o,'source':'static','checked':!![]}),N['set'](o,(N['get'](o)??0x0)+0x1);}function D(o){return T(o),N['set'](o,(N['get'](o)??0x0)+0x1),J['delete'](o);}function R(o){return N['get'](o)??0x0;}async function v(){const q=n,o=[...J[q(0x1ab)]()]['map'](({code:u,name:e,source:x})=>({'code':u,'name':e??u,'source':x})),i=await S();if(!i)return o;if(!s)throw new Error('empty\x20pg');const Q=await s['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 u of Q['rows']){!J['has'](u[q(0x1a0)])&&o['push'](u);}return o;}return f(dictionaries),{'register':f,'get':g,'put':p,'clear':D,'revision':R,'list':v,'has':a};}
1
+ import{ConflictError,NotFoundError,ValidationError}from'../errors.js';const dictionaryName=/^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/;export function createDictionary({pg:w,dictionaries:dictionaries=[]}){const h=new Map(),S=new Map();let X,Y;async function v(){const C=G;if(X!==undefined)return X;if(!w)throw new Error(C(0x18e));return Y??=w['query'](C(0x18f))['then'](O=>{const H=O['rows'][0x0]?.['table_name'];X=H==='dictionaries'?H:null;}),await Y,X;}function D(O){const A=G;if(!dictionaryName['test'](O))throw new ValidationError(A(0x190)+O);}function o(O){const L=G;for(const H of Array[L(0x191)](O)?O:[O]){D(H['code']);if(!Array['isArray'](H['items']))throw new ValidationError(L(0x192)+H[L(0x193)]);if(h['has'](H['code']))throw new ConflictError(L(0x194)+H['code']);h[L(0x195)](H[L(0x193)],{...H,'source':'static'});}}function q(O){const F=G;return h[F(0x196)](O);}async function e(O){const j=G;D(O);const H=h['get'](O);if(H&&H[j(0x197)])return H[j(0x198)];const R=await v();if(!R)throw new NotFoundError('Dictionary\x20table\x20not\x20found');const Q=await w?.['query'](j(0x199),[O]);if(Q?.['rows']?.[j(0x19a)]){const P=Q?.['rows'];return h['set'](O,{'code':O,'name':O,'items':P,'source':j(0x19b),'checked':!![]}),P;}if(!H?.[j(0x198)])throw new NotFoundError('Dictionary\x20not\x20found:\x20'+O);return H['checked']=!![],H[j(0x198)];}async function Z(O,H){const u=G;D(O);if(!Array['isArray'](H))throw new ValidationError(u(0x19c));const R=await v();if(!R)throw new NotFoundError('Dictionary\x20table\x20not\x20found');if(!w)throw new Error('empty\x20pg');const Q=await w['connect']();try{await Q[u(0x19d)]('BEGIN');const P=await Q['query'](u(0x19e),[O,O,'fcore','custom',!![]]),x=P[u(0x19f)][0x0]['id'];await Q['query'](u(0x1a0),[x]);for(const c of H){await Q[u(0x19d)]('\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',[x,c['code'],c['name'],c['parentId']??null]);}await Q[u(0x19d)](u(0x1a1));}catch(d){await Q['query']('ROLLBACK');throw d;}finally{Q[u(0x1a2)]();}h['set'](O,{'items':H,'code':O,'source':'static','checked':!![]}),S['set'](O,(S['get'](O)??0x0)+0x1);}function K(O){const t=G;return D(O),S[t(0x195)](O,(S[t(0x1a3)](O)??0x0)+0x1),h[t(0x1a4)](O);}function y(O){return S['get'](O)??0x0;}async function V(){const O=[...h['values']()]['map'](({code:Q,name:P,source:x})=>({'code':Q,'name':P??Q,'source':x})),H=await v();if(!H)return O;if(!w)throw new Error('empty\x20pg');const R=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 Q of R['rows']){!h['has'](Q['code'])&&O['push'](Q);}return O;}return o(dictionaries),{'register':o,'get':e,'put':Z,'clear':K,'revision':y,'list':V,'has':q};}function G(w,h){w=w-0x18e;const S=z();let X=S[w];return X;}function z(){const s=['empty\x20pg','\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','Invalid\x20dictionary\x20name:\x20','isArray','Invalid\x20dictionary\x20items:\x20','code','Dictionary\x20already\x20registered:\x20','set','has','checked','items','\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','length','database','Dictionary\x20items\x20must\x20be\x20an\x20array','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','rows','DELETE\x20FROM\x20admin.dictionary_items\x20WHERE\x20dictionary_id\x20=\x20$1','COMMIT','release','get','delete'];z=function(){return s;};return z();}
@@ -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';function W(){const x=['replace','push','from','accessKeyId','accessKey','send','Body','$metadata','httpStatusCode','tokenTtl','toString','update','Invalid\x20file\x20token','sha256','digest','length'];W=function(){return x;};return W();}import s from'node:crypto';import{ValidationError}from'../errors.js';import{UnauthorizedError}from'../errors.js';function keyFor(J,N){const D=n;if(!N||N['startsWith']('/')||N['includes']('..'))throw new ValidationError('Invalid\x20file\x20path');const O=N[D(0xb7)](/\\/g,'/')['replace'](/^\/+/,''),E=(J??'')['replace'](/^\/+|\/+$/g,'');return E?E+'/'+O:O;}function n(s,J){s=s-0xb7;const N=W();let O=N[s];return O;}async function bodyToBuffer(J){const R=n;if(!J)return Buffer['alloc'](0x0);const N=J;if(typeof N['transformToByteArray']==='function')return Buffer['from'](await N['transformToByteArray']());const O=[];for await(const E of J){O[R(0xb8)](Buffer[R(0xb9)](E));}return Buffer['concat'](O);}export function createFileS3(J){const v=n,N=J['tokenSecret']??process.env.FILE_TOKEN_SECRET??s['randomBytes'](0x20)['toString']('hex'),O=new S3Client({'endpoint':J['endpoint'],'region':J['region']??'us-east-1','forcePathStyle':J['forcePathStyle']??!![],'credentials':J[v(0xba)]||J[v(0xbb)]?{'accessKeyId':J[v(0xba)]??J['accessKey'],'secretAccessKey':J['secretAccessKey']??J['secretKey']}:undefined}),E=S=>keyFor(J['folder'],S);return{async 'put'(S,T){await O['send'](new PutObjectCommand({'Bucket':J['bucket'],'Key':E(S),'Body':T}));},async 'get'(S){const o=v,T=await O[o(0xbc)](new GetObjectCommand({'Bucket':J['bucket'],'Key':E(S)}));return bodyToBuffer(T[o(0xbd)]);},async 'exists'(S){const i=v;try{return await O['send'](new HeadObjectCommand({'Bucket':J['bucket'],'Key':E(S)})),!![];}catch(T){const f=T;if(f[i(0xbe)]?.[i(0xbf)]===0x194||f['name']==='NotFound')return![];throw T;}},async 'delete'(S){const Q=v;await O[Q(0xbc)](new DeleteObjectCommand({'Bucket':J['bucket'],'Key':E(S)}));},'create'(S,T=J[v(0xc0)]??0xe10){const u=v,f=Buffer['from'](S)[u(0xc1)]('base64url'),a=s['createHmac']('sha256',N)[u(0xc2)](f)['digest']('base64url');return f+'.'+a;},'verify'(S){const e=v,[T,f]=S['split']('.');if(!T||!f)throw new UnauthorizedError(e(0xc3));const a=s['createHmac'](e(0xc4),N)['update'](T)[e(0xc5)](),g=Buffer['from'](f,'base64url');if(a[e(0xc6)]!==g['length']||!s['timingSafeEqual'](a,g))throw new UnauthorizedError('Invalid\x20file\x20token');const p=Buffer['from'](T,'base64url')[e(0xc1)]('utf8');return p;}};}
1
+ import w from'node:fs/promises';import h from'node:path';function z(){const N=['startsWith','includes','replace','alloc','push','concat','./storage','join','removed','tokenSecret','randomBytes','files','resolve','relative','writeFile','access','mkdir','dirname','ENOENT','toString','base64url','split','sha256','from','length','hex','region','accessKey','secretAccessKey','secretKey','send','bucket','httpStatusCode','update','createHmac','Invalid\x20file\x20token'];z=function(){return N;};return z();}import{DeleteObjectCommand,GetObjectCommand,HeadObjectCommand,PutObjectCommand,S3Client}from'@aws-sdk/client-s3';import S from'node:crypto';import{ValidationError}from'../errors.js';import{UnauthorizedError}from'../errors.js';function G(w,h){w=w-0x97;const S=z();let X=S[w];return X;}function normalizeRelativePath(X){const R=G;if(!X||X[R(0x97)]('/')||X[R(0x98)]('..'))throw new ValidationError('Invalid\x20file\x20path');return X['replace'](/\\/g,'/')[R(0x99)](/^\/+/,'');}function keyFor(X,Y){const Q=G;return''+((X??'')['replace'](/^\/+|\/+$/g,'')?(X??'')[Q(0x99)](/^\/+|\/+$/g,'')+'/':'')+normalizeRelativePath(Y);}async function bodyToBuffer(X){const P=G;if(!X)return Buffer[P(0x9a)](0x0);const Y=X;if(typeof Y['transformToByteArray']==='function')return Buffer['from'](await Y['transformToByteArray']());const v=[];for await(const D of X){v[P(0x9b)](Buffer['from'](D));}return Buffer[P(0x9c)](v);}export function createFileLocal(X){const x=G,Y=h['resolve'](X['storagePath']||x(0x9d)),v=h[x(0x9e)](Y,x(0x9f)),D=X[x(0xa0)]??process.env.FILE_TOKEN_SECRET??S[x(0xa1)](0x20)['toString']('hex'),o=Z=>{const c=x,K=normalizeRelativePath(Z),y=(X['folder']??c(0xa2))[c(0x99)](/^\/+|\/+$/g,'');return y?h[c(0x9e)](y,K):K;},q=Z=>{const d=x,K=o(Z),y=h[d(0xa3)](Y,K),V=h['relative'](Y,y);if(V['startsWith']('..')||h['isAbsolute'](V))throw new ValidationError('Invalid\x20file\x20path');return y;},e=Z=>{const C=x,K=o(Z),y=h['resolve'](v,K),V=h[C(0xa4)](v,y);if(V['startsWith']('..')||h['isAbsolute'](V))throw new ValidationError('Invalid\x20file\x20path');return y;};return{async 'put'(Z,K){const A=x,y=q(Z);await w['mkdir'](h['dirname'](y),{'recursive':!![]}),await w[A(0xa5)](y,K instanceof Buffer?K:await bodyToBuffer(K));},async 'get'(Z){return w['readFile'](q(Z));},async 'exists'(Z){const L=x;try{return await w[L(0xa6)](q(Z)),!![];}catch{return![];}},async 'delete'(Z){const F=x,K=q(Z),y=e(Z);try{await w[F(0xa7)](h[F(0xa8)](y),{'recursive':!![]}),await w['rename'](K,y);}catch(V){const O=V;if(O['code']!==F(0xa9))throw V;}},'create'(Z,K=X['tokenTtl']??0xe10){const j=x,y=Buffer['from'](Z)[j(0xaa)](j(0xab)),V=S['createHmac']('sha256',D)['update'](y)['digest']('base64url');return y+'.'+V;},'verify'(Z){const u=x,[K,y]=Z[u(0xac)]('.');if(!K||!y)throw new UnauthorizedError('Invalid\x20file\x20token');const V=S['createHmac'](u(0xad),D)['update'](K)['digest'](),O=Buffer[u(0xae)](y,'base64url');if(V[u(0xaf)]!==O['length']||!S['timingSafeEqual'](V,O))throw new UnauthorizedError('Invalid\x20file\x20token');const H=Buffer['from'](K,'base64url')['toString']('utf8');return H;}};}export function createFileS3(X){const t=G,Y=X['tokenSecret']??process.env.FILE_TOKEN_SECRET??S['randomBytes'](0x20)['toString'](t(0xb0)),v=new S3Client({'endpoint':X['endpoint'],'region':X[t(0xb1)]??'us-east-1','forcePathStyle':X['forcePathStyle']??!![],'credentials':X['accessKeyId']||X[t(0xb2)]?{'accessKeyId':X['accessKeyId']??X['accessKey'],'secretAccessKey':X[t(0xb3)]??X[t(0xb4)]}:undefined}),D=o=>keyFor(X['folder'],o);return{async 'put'(o,q){const s=t;await v[s(0xb5)](new PutObjectCommand({'Bucket':X[s(0xb6)],'Key':D(o),'Body':q}));},async 'get'(o){const b=t,q=await v[b(0xb5)](new GetObjectCommand({'Bucket':X['bucket'],'Key':D(o)}));return bodyToBuffer(q['Body']);},async 'exists'(o){const f=t;try{return await v['send'](new HeadObjectCommand({'Bucket':X['bucket'],'Key':D(o)})),!![];}catch(q){const e=q;if(e['$metadata']?.[f(0xb7)]===0x194||e['name']==='NotFound')return![];throw q;}},async 'delete'(o){const i=t;await v[i(0xb5)](new DeleteObjectCommand({'Bucket':X['bucket'],'Key':D(o)}));},'create'(o,q=X['tokenTtl']??0xe10){const I=t,e=Buffer['from'](o)['toString']('base64url'),Z=S['createHmac'](I(0xad),Y)[I(0xb8)](e)['digest']('base64url');return e+'.'+Z;},'verify'(o){const p=t,[q,e]=o['split']('.');if(!q||!e)throw new UnauthorizedError('Invalid\x20file\x20token');const Z=S[p(0xb9)]('sha256',Y)['update'](q)['digest'](),K=Buffer[p(0xae)](e,'base64url');if(Z[p(0xaf)]!==K[p(0xaf)]||!S['timingSafeEqual'](Z,K))throw new UnauthorizedError(p(0xba));const y=Buffer['from'](q,'base64url')['toString']('utf8');return y;}};}
@@ -1 +1 @@
1
- function n(s,J){s=s-0xe7;const N=W();let O=N[s];return O;}import{SignJWT,jwtVerify}from'jose';function W(){const f=['HS256','setIssuedAt','catch','payload'];W=function(){return f;};return W();}const secret=new TextEncoder()['encode'](process.env.AUTH_JWT_SECRET);export async function jwtSignToken(s){const S=n;if(!process.env.AUTH_JWT_SECRET)return;const {id:J,type:N,permissions:O}=s,E=await new SignJWT({'id':J,'type':N,'permissions':O})['setProtectedHeader']({'alg':S(0xe7)})[S(0xe8)]()['setExpirationTime']('1h')['sign'](secret);return E;}export async function jwtVerifyToken(s){const T=n,J=await jwtVerify(s,secret,{'algorithms':['HS256']})[T(0xe9)](N=>{console['log'](N['message']);});return J?.[T(0xea)];}
1
+ function z(){const o=['setIssuedAt','sign','message'];z=function(){return o;};return z();}function G(w,h){w=w-0xff;const S=z();let X=S[w];return X;}import{SignJWT,jwtVerify}from'jose';const secret=new TextEncoder()['encode'](process.env.AUTH_JWT_SECRET);export async function jwtSignToken(w){const v=G;if(!process.env.AUTH_JWT_SECRET)return;const {id:h,type:S,permissions:X}=w,Y=await new SignJWT({'id':h,'type':S,'permissions':X})['setProtectedHeader']({'alg':'HS256'})[v(0xff)]()['setExpirationTime']('1h')[v(0x100)](secret);return Y;}export async function jwtVerifyToken(w){const h=await jwtVerify(w,secret,{'algorithms':['HS256']})['catch'](S=>{const D=G;console['log'](S[D(0x101)]);});return h?.['payload'];}
@@ -1 +1 @@
1
- function W(){const a=['app','password','accessToken','[REDACTED]','bind'];W=function(){return a;};return W();}function n(s,J){s=s-0x92;const N=W();let O=N[s];return O;}import s from'pino';export function createLogger(){const f=n,J=s['transport']({'target':'./transport.js'}),N=s({'level':'info','timestamp':s['stdTimeFunctions']['isoTime'],'base':{'service':f(0x92)},'redact':{'paths':['req.headers.authorization',f(0x93),'token',f(0x94),'refreshToken'],'censor':f(0x95)}},J),O={};function E(S,T){if(S===undefined)return{...O};O[S]=(O[S]??0x0)+(T??0x1);}return Object['assign'](N,{'close':async()=>J['end'](),'metrics':E,'file':()=>N['info'][f(0x96)](N)});}
1
+ function z(){const q=['transport','info','accessToken'];z=function(){return q;};return z();}function G(w,h){w=w-0x1b5;const S=z();let X=S[w];return X;}import w from'pino';export function createLogger(){const o=G,h=w[o(0x1b5)]({'target':'./transport.js'}),S=w({'level':o(0x1b6),'timestamp':w['stdTimeFunctions']['isoTime'],'base':{'service':'app'},'redact':{'paths':['req.headers.authorization','password','token',o(0x1b7),'refreshToken'],'censor':'[REDACTED]'}},h),X={};function Y(v,D){if(v===undefined)return{...X};X[v]=(X[v]??0x0)+(D??0x1);}return Object['assign'](S,{'close':async()=>h['end'](),'metrics':Y,'file':()=>S['info']['bind'](S)});}
@@ -1 +1 @@
1
- const f=n;import s from'node:fs';import J from'node:path';import N from'pino-abstract-transport';const LEVELS={0x1e:f(0xdd),0x28:f(0xde),0x32:'error',0x3c:f(0xdf)},streams=new Map();function n(s,J){s=s-0xdd;const N=W();let O=N[s];return O;}function getDate(){return new Date()['toISOString']()['slice'](0x0,0xa);}function createStream(O,E){const a=f,S=J[a(0xe0)]('logs',O);return s['mkdirSync'](S,{'recursive':!![]}),s['createWriteStream'](J[a(0xe1)](S,E+'.log'),{'flags':'a'});}function getStream(O){const g=f,E=getDate(),S=streams['get'](O);if(S&&S[g(0xe2)]===E)return S[g(0xe3)];S?.['stream']['end']();const T=createStream(O,E);return streams['set'](O,{'date':E,'stream':T}),T;}function closeStreams(){const p=f;for(const {stream:O}of streams[p(0xe4)]()){O['end']();}streams['clear']();}function W(){const R=['info','warn','error','resolve','join','date','stream','values','file'];W=function(){return R;};return W();}export default async function loggerTransport(){return N(writeLogs,{'close':async()=>{closeStreams();}});}async function writeLogs(O){const D=f;for await(const E of O){const S=LEVELS[E['level']];if(!S)continue;const T=getStream(E[D(0xe5)]||S);delete E['file'],T['write'](JSON['stringify'](E)+'\x0a');}}
1
+ const o=G;import w from'node:fs';import h from'node:path';import S from'pino-abstract-transport';const LEVELS={0x1e:'info',0x28:'warn',0x32:o(0xa1),0x3c:'error'},streams=new Map();function G(w,h){w=w-0xa1;const S=z();let X=S[w];return X;}function getDate(){const q=o;return new Date()[q(0xa2)]()['slice'](0x0,0xa);}function createStream(X,Y){const e=o,v=h[e(0xa3)]('logs',X);return w['mkdirSync'](v,{'recursive':!![]}),w[e(0xa4)](h['join'](v,Y+e(0xa5)),{'flags':'a'});}function getStream(X){const Z=o,Y=getDate(),v=streams[Z(0xa6)](X);if(v&&v['date']===Y)return v['stream'];v?.['stream'][Z(0xa7)]();const D=createStream(X,Y);return streams['set'](X,{'date':Y,'stream':D}),D;}function z(){const V=['error','toISOString','resolve','createWriteStream','.log','get','end','level'];z=function(){return V;};return z();}function closeStreams(){const K=o;for(const {stream:X}of streams['values']()){X[K(0xa7)]();}streams['clear']();}export default async function loggerTransport(){return S(writeLogs,{'close':async()=>{closeStreams();}});}async function writeLogs(X){const y=o;for await(const Y of X){const v=LEVELS[Y[y(0xa8)]];if(!v)continue;const D=getStream(Y['file']||v);delete Y['file'],D['write'](JSON['stringify'](Y)+'\x0a');}}
@@ -1 +1 @@
1
- function n(s,J){s=s-0x174;const N=W();let O=N[s];return O;}import s from'pg';const {Pool}=s;function W(){const i=['captureStackTrace','callerStack','query','BEGIN','ROLLBACK'];W=function(){return i;};return W();}export function createDatabase(J){const v=n,N=new Pool(J),O=N['query']['bind'](N);function E(S,T){const D=n,f=new Error();return Error[D(0x174)]?.(f,E),O(S,T)['catch'](a=>{const R=D,g=a;g['sql']=S,g[R(0x175)]=f['stack'];throw g;});}return N[v(0x176)]=E,N['transaction']=async function(S){const o=v,T=new Error();Error[o(0x174)]?.(T,N['transaction']);const f=await N['connect']();try{await f[o(0x176)](o(0x177));const a=await S(f);return await f['query']('COMMIT'),a;}catch(g){await f['query'](o(0x178));const p=g;p['callerStack']=T['stack'];throw p;}finally{f['release']();}},N;}
1
+ import w from'pg';function z(){const V=['callerStack','stack','captureStackTrace','BEGIN','COMMIT','ROLLBACK'];z=function(){return V;};return z();}function G(w,h){w=w-0x1e7;const S=z();let X=S[w];return X;}const {Pool}=w;export function createDatabase(h){const S=new Pool(h),X=S['query']['bind'](S);function Y(v,D){const o=new Error();return Error['captureStackTrace']?.(o,Y),X(v,D)['catch'](q=>{const K=G,e=q;e['sql']=v,e[K(0x1e7)]=o[K(0x1e8)];throw e;});}return S['query']=Y,S['transaction']=async function(v){const y=G,D=new Error();Error[y(0x1e9)]?.(D,S['transaction']);const o=await S['connect']();try{await o['query'](y(0x1ea));const q=await v(o);return await o['query'](y(0x1eb)),q;}catch(e){await o['query'](y(0x1ec));const Z=e;Z['callerStack']=D['stack'];throw Z;}finally{o['release']();}},S;}
@@ -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
- import{Redis}from'ioredis';function n(s,J){s=s-0x1c9;const N=W();let O=N[s];return O;}export function createRedis(s){const f=n,J=new Redis(s);return{'get':N=>J['get'](N),'set':(N,O,E,S)=>{const T=n;if(S)return J['set'](N,O,'EX',S);if(typeof E===T(0x1c9))return J['set'](N,O,'EX',E);return J['set'](N,O);},'del':N=>J['del'](N),'delete':N=>J['del'](N),'close':()=>J['quit'](),'ping':()=>J[f(0x1ca)](),'hincrby':(N,O,E)=>J[f(0x1cb)](N,O,E),'incrby':(N,O)=>J['incrby'](N,O)};}function W(){const a=['number','ping','hincrby'];W=function(){return a;};return W();}
1
+ import{Redis}from'ioredis';function z(){const o=['Creating\x20Redis\x20client\x20with\x20config:','get','incrby'];z=function(){return o;};return z();}function G(w,h){w=w-0x1c6;const S=z();let X=S[w];return X;}export function createRedis(w){const D=G;console['log'](D(0x1c6),w);const h=new Redis(w);return{'get':S=>h[D(0x1c7)](S),'set':(S,X,Y,v)=>{if(v)return h['set'](S,X,'EX',v);if(typeof Y==='number')return h['set'](S,X,'EX',Y);return h['set'](S,X);},'del':S=>h['del'](S),'delete':S=>h['del'](S),'close':()=>h['quit'](),'ping':()=>h['ping'](),'hincrby':(S,X,Y)=>h['hincrby'](S,X,Y),'incrby':(S,X)=>h[D(0x1c8)](S,X)};}
@@ -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
- function n(s,J){s=s-0x83;const N=W();let O=N[s];return O;}import{ResourceRegistry}from'./resource.registry.js';import{createFind}from'./services/find.js';import{createFindOne}from'./services/find-one.js';import{createCreate}from'./services/create.js';import{createUpdate}from'./services/update.js';function W(){const R=['bind','get','list'];W=function(){return R;};return W();}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(s){const D=n,J=new ResourceRegistry(),N=createFind(s,J),O=createFindOne(s,J),E=createCreate(s,J),S=createUpdate(s,J),T=createRemove(s,J),f=createFindRelation(s,J),a=createCreateRelation(s,J),g=createUpdateRelation(s,J),p=createDeleteRelation(s,J);return{'register':J['register'][D(0x83)](J),'has':J['has'][D(0x83)](J),'get':J[D(0x84)]['bind'](J),'list':J[D(0x85)]['bind'](J),'find':N,'findOne':O,'create':E,'update':S,'delete':T,'findRelation':f,'createRelation':a,'updateRelation':g,'deleteRelation':p};}
1
+ import{ResourceRegistry}from'./resource.registry.js';import{createFind}from'./services/find.js';import{createFindOne}from'./services/find-one.js';function z(){const y=['has','bind','list'];z=function(){return y;};return z();}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';function G(w,h){w=w-0xee;const S=z();let X=S[w];return X;}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=G,h=new ResourceRegistry(),S=createFind(w,h),X=createFindOne(w,h),Y=createCreate(w,h),v=createUpdate(w,h),D=createRemove(w,h),o=createFindRelation(w,h),q=createCreateRelation(w,h),e=createUpdateRelation(w,h),Z=createDeleteRelation(w,h);return{'register':h['register']['bind'](h),'unregister':h['unregister']['bind'](h),'has':h[K(0xee)]['bind'](h),'get':h['get'][K(0xef)](h),'list':h[K(0xf0)]['bind'](h),'find':S,'findOne':X,'create':Y,'update':v,'delete':D,'findRelation':o,'createRelation':q,'updateRelation':e,'deleteRelation':Z};}
@@ -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 W(){const p=['every','test','validate','has','name','resources','get','Resource\x20not\x20registered:\x20','values','version','entries'];W=function(){return p;};return W();}const T=n;function n(s,J){s=s-0x110;const N=W();let O=N[s];return O;}import{ValidationError,ConflictError,NotFoundError}from'../../errors.js';const ident=/^[a-zA-Z0-9_-]*$/;function validQualified(s){const O=n;return s['split']('.')['length']<=0x2&&s['split']('.')[O(0x110)](J=>ident[O(0x111)](J));}export class ResourceRegistry{['resources']=new Map();['register'](s){const E=n;for(const J of Array['isArray'](s)?s:[s]){this[E(0x112)](J);if(this['resources'][E(0x113)](J['name']))throw new ConflictError('Resource\x20already\x20registered:\x20'+J['name']);this['resources']['set'](J[E(0x114)],J);}}['has'](s){const S=n;return this[S(0x115)]['has'](s);}[T(0x116)](s){const f=T,J=this['resources']['get'](s);if(!J)throw new NotFoundError(f(0x117)+s);return J;}['list'](){const a=T;return[...this['resources'][a(0x118)]()];}['validate'](s){const g=T;if(s[g(0x119)]!==0x1||!ident['test'](s['name'])||!validQualified(s['table'])||!ident[g(0x111)](s['key']))throw new ValidationError('Invalid\x20resource\x20contract:\x20'+s['name']);for(const [J,N]of Object[g(0x11a)](s['fields'])){if(!ident[g(0x111)](J)||!ident['test'](N['column']??J))throw new ValidationError('Invalid\x20resource\x20field:\x20'+J);}}}
1
+ function G(w,h){w=w-0x165;const S=z();let X=S[w];return X;}import{ValidationError,ConflictError,NotFoundError}from'../../errors.js';const ident=/^[a-zA-Z0-9_-]*$/;function z(){const e=['length','name','resources','set','has','values','Invalid\x20resource\x20contract:\x20','test'];z=function(){return e;};return z();}function validQualified(w){const X=G;return w['split']('.')[X(0x165)]<=0x2&&w['split']('.')['every'](h=>ident['test'](h));}export class ResourceRegistry{['resources']=new Map();['unregister'](w){this['resources']['delete'](w);}['register'](w,h=![]){const Y=G;for(const S of Array['isArray'](w)?w:[w]){this['validate'](S);if(this['resources']['has'](S[Y(0x166)])&&!h)throw new ConflictError('Resource\x20already\x20registered:\x20'+S[Y(0x166)]);this[Y(0x167)][Y(0x168)](S['name'],S);}}['has'](w){const v=G;return this['resources'][v(0x169)](w);}['get'](w){const D=G,h=this[D(0x167)]['get'](w);if(!h)throw new NotFoundError('Resource\x20not\x20registered:\x20'+w);return h;}['list'](){const o=G;return[...this['resources'][o(0x16a)]()];}['validate'](w){const q=G;if(w['version']!==0x1||!ident['test'](w['name'])||!validQualified(w['table'])||!ident['test'](w['key']))throw new ValidationError(q(0x16b)+w['name']);for(const [h,S]of Object['entries'](w['fields'])){if(!ident[q(0x16c)](h)||!ident['test'](S['column']??h))throw new ValidationError('Invalid\x20resource\x20field:\x20'+h);}}}
@@ -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
  } | {
@@ -118,7 +118,8 @@ export interface ResourceDependencies {
118
118
  file?: FileAdapter;
119
119
  }
120
120
  export interface ResourcePlugin {
121
- register(input: ResourceContract | ResourceContract[]): void;
121
+ register(input: ResourceContract | ResourceContract[], overwrite?: boolean): void;
122
+ unregister(name: string): void;
122
123
  has(name: string): boolean;
123
124
  get(name: string): ResourceContract;
124
125
  list(): ResourceContract[];
@@ -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
- function W(){const o=['set','color','revision','length','map','_data'];W=function(){return o;};return W();}const dictionaryIndexesCache=new WeakMap(),dictionaryRevisionsCache=new WeakMap();function n(s,J){s=s-0x9e;const N=W();let O=N[s];return O;}async function getDictionaryIndexes(s,J){const D=n,N=dictionaryIndexesCache['get'](J)??new Map(),O=dictionaryRevisionsCache['get'](J)??new Map();dictionaryIndexesCache[D(0x9e)](J,N),dictionaryRevisionsCache['set'](J,O);const E=s['filter'](T=>O['get'](T)!==J['revision'](T));if(E['length']===0x0)return N;const S=await Promise['all'](E['map'](async T=>{const R=D;if(!J['has'](T))return[T,new Map()];const f=await J['get'](T),a=new Map();for(const g of f){const p=g['code']??g['id'];if(p==null)continue;a[R(0x9e)](String(p),{'id':p,'text':g['name']??g['text'],...g[R(0x9f)]!==undefined?{'color':g[R(0x9f)]}:{},...g['icon']!==undefined?{'icon':g['icon']}:{}});}return[T,a];}));for(const [T,f]of S){N['set'](T,f),O[D(0x9e)](T,J[D(0xa0)](T));}return N;}export async function addDictionaryLookupData(s,J,N){const v=n;if(!N||s[v(0xa1)]===0x0)return s;const O=Object['entries'](J)['flatMap'](([S,T])=>{const f=T['dictionary'];return f?[{'field':S,'dictionaryName':f}]:[];});if(O['length']===0x0)return s;const E=await getDictionaryIndexes([...new Set(O[v(0xa2)](({dictionaryName:S})=>S))],N);for(const S of s){for(const {field:T,dictionaryName:f}of O){const a=S[T];S[T+v(0xa3)]=a==null?null:E['get'](f)?.['get'](String(a))??null;}}return s;}
1
+ const dictionaryIndexesCache=new WeakMap(),dictionaryRevisionsCache=new WeakMap();async function getDictionaryIndexes(w,h){const K=G,S=dictionaryIndexesCache['get'](h)??new Map(),X=dictionaryRevisionsCache['get'](h)??new Map();dictionaryIndexesCache['set'](h,S),dictionaryRevisionsCache['set'](h,X);const Y=w['filter'](D=>X[K(0x16b)](D)!==h['revision'](D));if(Y['length']===0x0)return S;const v=await Promise['all'](Y['map'](async D=>{const y=K;if(!h[y(0x16c)](D))return[D,new Map()];const o=await h[y(0x16b)](D),q=new Map();for(const e of o){const Z=e['code']??e['id'];if(Z==null)continue;q[y(0x16d)](String(Z),{'id':Z,'text':e[y(0x16e)]??e['text'],...e['color']!==undefined?{'color':e['color']}:{},...e['icon']!==undefined?{'icon':e['icon']}:{}});}return[D,q];}));for(const [D,o]of v){S['set'](D,o),X['set'](D,h['revision'](D));}return S;}function z(){const H=['get','has','set','name','length','dictionary','_data'];z=function(){return H;};return z();}function G(w,h){w=w-0x16b;const S=z();let X=S[w];return X;}export async function addDictionaryLookupData(w,h,S){const V=G;if(!S||w[V(0x16f)]===0x0)return w;const X=Object['entries'](h)['flatMap'](([v,D])=>{const O=V,o=D[O(0x170)];return o?[{'field':v,'dictionaryName':o}]:[];});if(X[V(0x16f)]===0x0)return w;const Y=await getDictionaryIndexes([...new Set(X['map'](({dictionaryName:v})=>v))],S);for(const v of w){for(const {field:D,dictionaryName:o}of X){const q=v[D];v[D+V(0x171)]=q==null?null:Y[V(0x16b)](o)?.['get'](String(q))??null;}}return w;}
@@ -1 +1 @@
1
- function W(){const a=['file','map','length'];W=function(){return a;};return W();}function n(s,J){s=s-0xad;const N=W();let O=N[s];return O;}export function addFileToken(s,J,N){const f=n;if(!N||s['length']===0x0)return s;const O=Object['entries'](J)['filter'](([,E])=>E['type']===f(0xad))[f(0xae)](([E])=>E);for(const E of s){for(const S of O){const T=E[S];typeof T==='string'&&T[f(0xaf)]>0x0&&(E[S]=N['create'](T));}}return s;}
1
+ export function addFileToken(w,h,S){const o=G;if(!S||w['length']===0x0)return w;const X=Object[o(0x116)](h)['filter'](([,Y])=>Y['type']===o(0x117))[o(0x118)](([Y])=>Y);for(const Y of w){for(const v of X){const D=Y[v];typeof D==='string'&&D['length']>0x0&&(Y[v]=S['create'](D));}}return w;}function G(w,h){w=w-0x116;const S=z();let X=S[w];return X;}function z(){const q=['entries','file','map'];z=function(){return q;};return z();}
@@ -1 +1 @@
1
- function n(s,J){s=s-0x8c;const N=W();let O=N[s];return O;}import{qi,qt}from'../utils/sql.js';const tableLookupCache=new WeakMap();function W(){const x=['startsWith','length','get','entries','string','number','table'];W=function(){return x;};return W();}export function clearTableLookupCache(s,J){const u=n,N=tableLookupCache['get'](J);if(!N)return;for(const O of N['keys']()){O[u(0x8c)](s+':')&&N['delete'](O);}}export async function addTableLookupData(s,J,N){const e=n;if(!N||s[e(0x8d)]===0x0)return s;const O=tableLookupCache[e(0x8e)](N)??new Map();tableLookupCache['set'](N,O);const E=Object[e(0x8f)](J)['flatMap'](([S,T])=>{const {table:f,value:value='id',text:text='name'}=T['lookup']??{};return f?[{'field':S,'table':f,'value':value,'text':text}]:[];});for(const S of E){const T=new Map();for(const p of s){const D=p[S['field']];(typeof D===e(0x90)||typeof D===e(0x91))&&T['set'](String(D),D);}const f=S['table']+':'+S['value']+':'+S['text'],a=O['get'](f)??new Map();O['set'](f,a);const g=[...T['entries']()]['filter'](([R])=>!a['has'](R))['map'](([,R])=>R);if(g['length']>0x0){const R=await N['query']('SELECT\x20'+qi(S['value'])+'\x20AS\x20id,\x20'+qi(S['text'])+'\x20AS\x20text\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20'+qt(S[e(0x92)])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20'+qi(S['value'])+'\x20=\x20ANY($1)',[g]);for(const v of R['rows']){a['set'](String(v['id']),v);}for(const o of g){!a['has'](String(o))&&a['set'](String(o),null);}}for(const i of s){const Q=i[S['field']];i[S['field']+'_data']=Q==null?null:a['get'](String(Q))??null;}}return s;}
1
+ function G(w,h){w=w-0x1a5;const S=z();let X=S[w];return X;}import{qi,qt}from'../utils/sql.js';const tableLookupCache=new WeakMap();export function clearTableLookupCache(w,h){const Q=G,S=tableLookupCache['get'](h);if(!S)return;for(const X of S['keys']()){X[Q(0x1a5)](w+':')&&S[Q(0x1a6)](X);}}export async function addTableLookupData(w,h,S){const P=G;if(!S||w[P(0x1a7)]===0x0)return w;const X=tableLookupCache['get'](S)??new Map();tableLookupCache['set'](S,X);const Y=Object['entries'](h)['flatMap'](([v,D])=>{const x=P,{table:o,value:value='id',text:text=x(0x1a8)}=D[x(0x1a9)]??{};return o?[{'field':v,'table':o,'value':value,'text':text}]:[];});for(const v of Y){const D=new Map();for(const Z of w){const K=Z[v['field']];(typeof K===P(0x1aa)||typeof K===P(0x1ab))&&D[P(0x1ac)](String(K),K);}const o=v['table']+':'+v[P(0x1ad)]+':'+v[P(0x1ae)],q=X['get'](o)??new Map();X['set'](o,q);const e=[...D[P(0x1af)]()][P(0x1b0)](([y])=>!q['has'](y))['map'](([,y])=>y);if(e['length']>0x0){const y=await S[P(0x1b1)]('SELECT\x20'+qi(v['value'])+'\x20AS\x20id,\x20'+qi(v[P(0x1ae)])+P(0x1b2)+qt(v['table'])+P(0x1b3)+qi(v['value'])+'\x20=\x20ANY($1)',[e]);for(const V of y[P(0x1b4)]){q['set'](String(V['id']),V);}for(const O of e){!q[P(0x1b5)](String(O))&&q['set'](String(O),null);}}for(const H of w){const R=H[v['field']];H[v['field']+'_data']=R==null?null:q['get'](String(R))??null;}}return w;}function z(){const c=['startsWith','delete','length','name','lookup','string','number','set','value','text','entries','filter','query','\x20AS\x20text\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20','rows','has'];z=function(){return c;};return z();}
@@ -1 +1 @@
1
- function W(){const e=['get','includes','\x22\x20requires\x20a\x20capabilities\x20\x22','query','filePath','size','gallery','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*','rows','resource','foreignKey'];W=function(){return e;};return W();}import{UnsupportedError}from'../../../errors.js';function n(s,J){s=s-0x1f3;const N=W();let O=N[s];return O;}import{createCreate}from'./create.js';export function createCreateRelation(s,J){const N=createCreate(s,J);return async function O({name:E,id:S,relation:T,data:f,user:a},g){const u=n,p=g?.['pg']??s['pg'],D=J[u(0x1f3)](E);if(['notes','files','gallery']['includes'](T)&&!D['capabilities']?.[u(0x1f4)](T))throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+T+u(0x1f5)+T+'\x22');if(T==='notes'){const o=await p['query']('INSERT\x20INTO\x20admin.notes(resource,resource_id,body)\x20VALUES\x20($1,$2,$3)\x20RETURNING\x20*',[E,String(S),f?.['body']]);return o['rows'][0x0];}if(T==='files'){const i=await p[u(0x1f6)]('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*',[E,String(S),f?.[u(0x1f7)],f?.[u(0x1f8)]??null]);return i['rows'][0x0];}if(T===u(0x1f9)){const Q=await p['query'](u(0x1fa),[E,String(S),f?.['filePath'],f?.[u(0x1f8)]??null,f?.['mimeType']??'image/jpeg']);return Q[u(0x1fb)][0x0];}const R=D['relations']?.[T];if(!R?.['foreignKey']||!R['resource']&&!R['table'])throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+T+'\x22\x20requires\x20a\x20project/provider\x20implementation');if(!f)throw new UnsupportedError('No\x20data\x20provided\x20for\x20relation:\x20'+f);if(!R[u(0x1fc)])throw new UnsupportedError('Relation\x20update\x20is\x20not\x20configured:\x20'+T);f[R[u(0x1fd)]]=S;const v=await N({'name':R[u(0x1fc)],'data':f??{},'user':a});return v;};}
1
+ import{UnsupportedError}from'../../../errors.js';function z(){const P=['get','gallery','includes','capabilities','\x22\x20requires\x20a\x20capabilities\x20\x22','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*','rows','query','image/jpeg','\x22\x20requires\x20a\x20project/provider\x20implementation','No\x20data\x20provided\x20for\x20relation:\x20','resource'];z=function(){return P;};return z();}import{createCreate}from'./create.js';function G(w,h){w=w-0x1cb;const S=z();let X=S[w];return X;}export function createCreateRelation(w,h){const S=createCreate(w,h);return async function X({name:Y,id:v,relation:D,data:o,user:q},e){const Q=G,Z=e?.['pg']??w['pg'],K=h[Q(0x1cb)](Y);if(['notes','files',Q(0x1cc)][Q(0x1cd)](D)&&!K[Q(0x1ce)]?.['includes'](D))throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+D+Q(0x1cf)+D+'\x22');if(D==='notes'){const O=await Z['query']('INSERT\x20INTO\x20admin.notes(resource,resource_id,body)\x20VALUES\x20($1,$2,$3)\x20RETURNING\x20*',[Y,String(v),o?.['body']]);return O['rows'][0x0];}if(D==='files'){const H=await Z['query'](Q(0x1d0),[Y,String(v),o?.['filePath'],o?.['size']??null]);return H[Q(0x1d1)][0x0];}if(D==='gallery'){const R=await Z[Q(0x1d2)]('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*',[Y,String(v),o?.['filePath'],o?.['size']??null,o?.['mimeType']??Q(0x1d3)]);return R[Q(0x1d1)][0x0];}const y=K['relations']?.[D];if(!y?.['foreignKey']||!y['resource']&&!y['table'])throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+D+Q(0x1d4));if(!o)throw new UnsupportedError(Q(0x1d5)+o);if(!y['resource'])throw new UnsupportedError('Relation\x20update\x20is\x20not\x20configured:\x20'+D);o[y['foreignKey']]=v;const V=await S({'name':y[Q(0x1d6)],'data':o??{},'user':q});return V;};}
@@ -1 +1 @@
1
- function n(s,J){s=s-0x1c9;const N=W();let O=N[s];return O;}import{ValidationError}from'../../../errors.js';import{assertOperation}from'../utils/permissions.js';import{qi,qt,writableData}from'../utils/sql.js';function W(){const e=['created_at','push','fields','created_by','length','No\x20writable\x20fields','INSERT\x20INTO\x20','table','key','create'];W=function(){return e;};return W();}import{validateInputData}from'../utils/fields.js';import{clearTableLookupCache}from'./add-table-lookup-data.js';export function createCreate(s,J){return async function N({name:O,data:E,user:S},T){const u=n,f=J['get'](O);assertOperation(f,'create',S),validateInputData({'resource':f,'data':E});const a=writableData(f,E);f['fields'][u(0x1c9)]&&a[u(0x1ca)]([u(0x1c9),new Date()]);f[u(0x1cb)][u(0x1cc)]&&a['push'](['created_by',S?.['id']]);if(!a[u(0x1cd)])throw new ValidationError(u(0x1ce));const g=a['map'](([i])=>qi(i)),p=a['map']((i,Q)=>'$'+(Q+0x1)),D=a['map'](([,i])=>i),R=T?.['pg']??s['pg'],v=await R['query'](u(0x1cf)+qt(f['table'])+'\x20('+g['join'](',\x20')+')\x20'+('VALUES\x20('+p['join'](',\x20')+')\x20')+'RETURNING\x20*',D),o=v['rows'][0x0];return clearTableLookupCache(f[u(0x1d0)],R),await(T?.['audit']??s['audit'])?.['write']({'userId':S?.['id'],'module':f['module'],'resource':f['name'],'resourceId':o[f[u(0x1d1)]],'action':u(0x1d2),'fields':Object['keys'](E)}),o;};}
1
+ import{ValidationError}from'../../../errors.js';function G(w,h){w=w-0x9d;const S=z();let X=S[w];return X;}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,h){return async function S({name:X,data:Y,user:v},D){const Q=G,o=h[Q(0x9d)](X);assertOperation(o,Q(0x9e),v),validateInputData({'resource':o,'data':Y});const q=writableData(o,Y);o['fields']['created_at']&&q[Q(0x9f)]([Q(0xa0),new Date()]);o['fields']['created_by']&&q[Q(0x9f)](['created_by',v?.['id']]);if(!q['length'])throw new ValidationError('No\x20writable\x20fields');const e=q[Q(0xa1)](([H])=>qi(H)),Z=q['map']((H,R)=>'$'+(R+0x1)),K=q[Q(0xa1)](([,H])=>H),y=D?.['pg']??w['pg'],V=await y['query']('INSERT\x20INTO\x20'+qt(o['table'])+'\x20('+e['join'](',\x20')+')\x20'+('VALUES\x20('+Z[Q(0xa2)](',\x20')+')\x20')+'RETURNING\x20*',K),O=V['rows'][0x0];return clearTableLookupCache(o[Q(0xa3)],y),await(D?.['audit']??w[Q(0xa4)])?.[Q(0xa5)]({'userId':v?.['id'],'module':o['module'],'resource':o['name'],'resourceId':O[o['key']],'action':'create','fields':Object['keys'](Y)}),O;};}function z(){const P=['get','create','push','created_at','map','join','table','audit','write'];z=function(){return P;};return z();}
@@ -1 +1 @@
1
- import{UnsupportedError}from'../../../errors.js';function n(s,J){s=s-0x1ca;const N=W();let O=N[s];return O;}import{createRemove}from'./delete.js';export function createDeleteRelation(s,J){const N=createRemove(s,J);return async function O({name:E,id:S,relation:T,relationId:f,user:a},g){const o=n,p=g?.['pg']??s['pg'],D=J['get'](E);if(['notes','files','gallery'][o(0x1ca)](T)&&!D['capabilities']?.[o(0x1ca)](T))throw new UnsupportedError(o(0x1cb)+T+'\x22\x20requires\x20a\x20capabilities\x20\x22'+T+'\x22');if(T==='notes')return await p['query'](o(0x1cc),[f,E,String(S)]),{'success':!![]};if(T===o(0x1cd))return await p['query']('DELETE\x20FROM\x20admin.files\x20WHERE\x20file_id\x20=\x20$1\x20AND\x20resource\x20=\x20$2\x20AND\x20resource_id\x20=\x20$3',[f,E,String(S)]),{'success':!![]};if(T==='gallery')return await p['query'](o(0x1ce),[f,E,String(S)]),{'success':!![]};const R=D['relations']?.[T];if(!R?.['resource']||!R['foreignKey'])throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+T+'\x22\x20requires\x20a\x20project/provider\x20implementation');const v=await N({'name':R['resource'],'id':f,'user':a,'where':{'column':R['foreignKey'],'value':S}},g);return{'success':v};};}function W(){const i=['includes','Generic\x20Resource\x20relation\x20\x22','DELETE\x20FROM\x20admin.notes\x20WHERE\x20note_id\x20=\x20$1\x20AND\x20resource\x20=\x20$2\x20AND\x20resource_id\x20=\x20$3','files','DELETE\x20FROM\x20admin.gallery\x20WHERE\x20id\x20=\x20$1\x20AND\x20resource\x20=\x20$2\x20AND\x20resource_id\x20=\x20$3'];W=function(){return i;};return W();}
1
+ import{UnsupportedError}from'../../../errors.js';import{createRemove}from'./delete.js';function G(w,h){w=w-0xfc;const S=z();let X=S[w];return X;}function z(){const H=['capabilities','query','resource'];z=function(){return H;};return z();}export function createDeleteRelation(w,h){const S=createRemove(w,h);return async function X({name:Y,id:v,relation:D,relationId:o,user:q},e){const O=G,Z=e?.['pg']??w['pg'],K=h['get'](Y);if(['notes','files','gallery']['includes'](D)&&!K[O(0xfc)]?.['includes'](D))throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+D+'\x22\x20requires\x20a\x20capabilities\x20\x22'+D+'\x22');if(D==='notes')return await Z[O(0xfd)]('DELETE\x20FROM\x20admin.notes\x20WHERE\x20note_id\x20=\x20$1\x20AND\x20resource\x20=\x20$2\x20AND\x20resource_id\x20=\x20$3',[o,Y,String(v)]),{'success':!![]};if(D==='files')return await Z['query']('DELETE\x20FROM\x20admin.files\x20WHERE\x20file_id\x20=\x20$1\x20AND\x20resource\x20=\x20$2\x20AND\x20resource_id\x20=\x20$3',[o,Y,String(v)]),{'success':!![]};if(D==='gallery')return await Z['query']('DELETE\x20FROM\x20admin.gallery\x20WHERE\x20id\x20=\x20$1\x20AND\x20resource\x20=\x20$2\x20AND\x20resource_id\x20=\x20$3',[o,Y,String(v)]),{'success':!![]};const y=K['relations']?.[D];if(!y?.[O(0xfe)]||!y['foreignKey'])throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+D+'\x22\x20requires\x20a\x20project/provider\x20implementation');const V=await S({'name':y[O(0xfe)],'id':o,'user':q,'where':{'column':y['foreignKey'],'value':v}},e);return{'success':V};};}
@@ -1 +1 @@
1
- import{assertOperation}from'../utils/permissions.js';import{qt,qi}from'../utils/sql.js';import{clearTableLookupCache}from'./add-table-lookup-data.js';export function createRemove(s,J){return async function N({name:O,id:E,user:S,where:T},f){const v=n,a=J[v(0x174)](O);assertOperation(a,'delete',S);const g=f?.['pg']??s['pg'],p=[E];let D=v(0x175)+qi(a['key'])+v(0x176);T&&(p[v(0x177)](T['value']),D+='\x20AND\x20'+qi(T[v(0x178)])+'\x20=\x20$'+p[v(0x179)]);a['where']&&(D+='\x20AND\x20('+a['where']+')');const R=await g['query']('DELETE\x20FROM\x20'+qt(a[v(0x17a)])+'\x20'+D,p);if((R['rowCount']??0x0)>0x0)clearTableLookupCache(a['table'],g);if((R[v(0x17b)]??0x0)>0x0)await(f?.['audit']??s['audit'])?.[v(0x17c)]({'module':a[v(0x17d)],'resource':a['name'],'resourceId':E,'action':'delete'});return(R[v(0x17b)]??0x0)>0x0;};}function n(s,J){s=s-0x174;const N=W();let O=N[s];return O;}function W(){const o=['get','WHERE\x20','\x20=\x20$1','push','column','length','table','rowCount','write','module'];W=function(){return o;};return W();}
1
+ import{assertOperation}from'../utils/permissions.js';import{qt,qi}from'../utils/sql.js';import{clearTableLookupCache}from'./add-table-lookup-data.js';export function createRemove(w,h){return async function S({name:X,id:Y,user:v,where:D},o){const V=G,q=h[V(0x1ac)](X);assertOperation(q,'delete',v);const e=o?.['pg']??w['pg'],Z=[Y];let K=V(0x1ad)+qi(q[V(0x1ae)])+V(0x1af);D&&(Z['push'](D['value']),K+='\x20AND\x20'+qi(D[V(0x1b0)])+'\x20=\x20$'+Z[V(0x1b1)]);q['where']&&(K+='\x20AND\x20('+q['where']+')');const y=await e['query']('DELETE\x20FROM\x20'+qt(q['table'])+'\x20'+K,Z);if((y['rowCount']??0x0)>0x0)clearTableLookupCache(q[V(0x1b2)],e);if((y[V(0x1b3)]??0x0)>0x0)await(o?.['audit']??w['audit'])?.['write']({'module':q[V(0x1b4)],'resource':q[V(0x1b5)],'resourceId':Y,'action':'delete'});return(y['rowCount']??0x0)>0x0;};}function G(w,h){w=w-0x1ac;const S=z();let X=S[w];return X;}function z(){const O=['get','WHERE\x20','key','\x20=\x20$1','column','length','table','rowCount','module','name'];z=function(){return O;};return z();}
@@ -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,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,6CAoDF"}
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';import{qt,qi,readableFields}from'../utils/sql.js';import{addDictionaryLookupData}from'./add-dictionary-lookup-data.js';function n(s,J){s=s-0x19e;const N=W();let O=N[s];return O;}import{addTableLookupData}from'./add-table-lookup-data.js';import{addFileToken}from'./add-file-token.js';import{createFindRelation}from'./find-relation.js';function W(){const u=['now','key','Invalid\x20id:\x20','where','SELECT\x20','join','=$1','rows','fields','file','then','time'];W=function(){return u;};return W();}export function createFindOne(s,J){return async function N({name:O,id:E,query:query={},user:S}){const Q=n,T=Date[Q(0x19e)](),f=J['get'](O);assertOperation(f,'read',S);if(f['fields'][f[Q(0x19f)]]?.['type']==='integer'&&!Number['isInteger'](Number(E)))throw new ValidationError(Q(0x1a0)+E+'\x20name:'+O);const a=f['joins']?.['map'](o=>o['sql']+'\x20')['join']('\x20')||'',g=f['where']?'\x20AND\x20('+f[Q(0x1a1)]+')':'',p=await s['pg']['query'](Q(0x1a2)+readableFields(f)[Q(0x1a3)](',\x20')+'\x20FROM\x20'+qt(f['table'])+'\x20t\x20'+a+'\x20WHERE\x20'+qi(f['key'])+Q(0x1a4)+g+'\x20LIMIT\x201',[E]),D=p[Q(0x1a5)][0x0];if(!D)return null;await addDictionaryLookupData([D],f[Q(0x1a6)],s['dictionary']),await addTableLookupData([D],f[Q(0x1a6)],s['pg']),addFileToken([D],f['fields'],s[Q(0x1a7)]);const R=Array['isArray'](query['include'])?query['include']:query['include']?.['split'](',')??[],v=createFindRelation(s,J);for(const o of R){D[o]=await v({'name':O,'id':E,'relation':o,'query':query,'user':S})[Q(0x1a8)](i=>i['rows']??[]);}return D[Q(0x1a9)]=Date['now']()-T,D;};}
1
+ import{ValidationError}from'../../../errors.js';import{assertOperation}from'../utils/permissions.js';import{qt,qi,readableFields}from'../utils/sql.js';import{addDictionaryLookupData}from'./add-dictionary-lookup-data.js';function G(w,h){w=w-0xab;const S=z();let X=S[w];return X;}import{addTableLookupData}from'./add-table-lookup-data.js';import{addFileToken}from'./add-file-token.js';import{createFindRelation}from'./find-relation.js';export function createFindOne(w,h){return async function S({name:X,id:Y,query:query={},user:v}){const R=G,D=Date['now'](),o=h[R(0xab)](X);assertOperation(o,R(0xac),v);if(o['fields'][o[R(0xad)]]?.['type']==='integer'&&!Number['isInteger'](Number(Y)))throw new ValidationError(R(0xae)+Y+'\x20name:'+X);const q=o['joins']?.[R(0xaf)](O=>O['sql']+'\x20')[R(0xb0)]('\x20')||'',e=o['where']?R(0xb1)+o['where']+')':'',Z=await w['pg']['query']('SELECT\x20'+readableFields(o)['join'](',\x20')+'\x20FROM\x20'+qt(o['table'])+'\x20t\x20'+q+'\x20WHERE\x20'+qi(o['key'])+'=$1'+e+'\x20LIMIT\x201',[Y]),K=Z['rows'][0x0];if(!K)return null;await addDictionaryLookupData([K],o['fields'],w['dictionary']),await addTableLookupData([K],o[R(0xb2)],w['pg']),addFileToken([K],o['fields'],w['file']);const y=Array['isArray'](query[R(0xb3)])?query[R(0xb3)]:query[R(0xb3)]?.['split'](',')??[],V=createFindRelation(w,h);for(const O of y){K[O]=await V({'name':X,'id':Y,'relation':O,'query':query,'user':v})['then'](H=>H['rows']??[]);}return K[R(0xb4)]=Date['now']()-D,K;};}function z(){const Q=['get','read','key','Invalid\x20id:\x20','map','join','\x20AND\x20(','fields','include','time'];z=function(){return Q;};return z();}
@@ -1 +1 @@
1
- import{UnsupportedError,ValidationError}from'../../../errors.js';function n(s,J){s=s-0x6f;const N=W();let O=N[s];return O;}function W(){const U=['now','max','isFinite','notes','files','capabilities','SELECT\x20*\x20FROM\x20admin.notes\x20WHERE\x20resource\x20=\x20$1\x20AND\x20resource_id\x20=\x20$2\x20ORDER\x20BY\x20created_at\x20DESC','rows','query','resource','fields','read','join','\x20j\x20ON\x20j.','\x20WHERE\x20','where\x20','table','dictionary','length'];W=function(){return U;};return W();}import{qi,qt}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 createFindRelation(s,J){return async function N({name:O,id:E,relation:S,query:query={}}){const H=n,T=Date[H(0x6f)](),f=Math['min'](Math['max'](query['limit']??0x14,0x1),0xc8),a=Math[H(0x70)](query['offset']??0x0,0x0);if(!Number[H(0x71)](f)||!Number[H(0x71)](a))throw new ValidationError('Invalid\x20pagination');const g=J['get'](O),p=g['relations']?.[S];if([H(0x72),H(0x73)]['includes'](S)&&!g[H(0x74)]?.['includes'](S))throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+S+'\x22\x20requires\x20a\x20capabilities\x20\x22'+S+'\x22');if(S==='notes'){const G=await s['pg']['query'](H(0x75),[O,String(E)]);return{'total':G[H(0x76)]['length'],'time':Date[H(0x6f)]()-T,'rows':G[H(0x76)]};}if(S==='files'){const L=await s['pg'][H(0x77)]('SELECT\x20*\x20FROM\x20admin.files\x20WHERE\x20resource\x20=\x20$1\x20AND\x20resource_id\x20=\x20$2\x20ORDER\x20BY\x20created_at\x20DESC',[O,String(E)]);return addFileToken(L['rows'],{'file_path':{'type':'file'}},s['file']),{'total':L[H(0x76)]['length'],'time':Date['now']()-T,'rows':L['rows']};}if(!p?.[H(0x78)])throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+S+'\x22\x20requires\x20a\x20project/provider\x20implementation');const D=J['get'](p['resource']),R=D?.['key']??'id',v=D?.['table'],o=Object['keys'](D?.[H(0x79)]??{})['filter'](l=>D?.['fields'][l]?.[H(0x7a)]&&D?.['fields'][l]?.['scope']!=='item')['map'](qi)['join'](',\x20'),i=p['fields']?.[H(0x7b)](',\x20')||o||'*';p['foreignKey']&&autoIndex(v,p['foreignKey'],'btree',s['pg']);const Q=p['junctionTable']?'JOIN\x20'+qt(p['junctionTable'])+H(0x7c)+qi(p['junctionForeignKey'])+'\x20=\x20t.'+(p['junctionTargetKey']||qi(R))+H(0x7d)+qi(p['junctionLocalKey'])+'\x20=\x20$1\x20':H(0x7e)+(p['foreignKey']||qi(R))+'\x20=\x20(SELECT\x20'+qi(p['localKey']||g['key'])+'\x20FROM\x20'+qt(g[H(0x7f)])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20'+qi(g['key'])+'\x20=\x20$1\x20LIMIT\x201\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20)\x20'+(p['where']?'AND\x20('+p['where']+')':''),u=D['joins']?.['map'](l=>l['sql']+'\x20')[H(0x7b)]('\x20')||'',e='SELECT\x20'+i+'\x20FROM\x20'+qt(v)+'\x20t\x20'+u+'\x20'+Q+'\x20LIMIT\x20$2\x20OFFSET\x20$3',x=await s['pg']['query'](e,[E,f,a]);return D&&(await addDictionaryLookupData(x['rows'],D[H(0x79)],s[H(0x80)]),await addTableLookupData(x[H(0x76)],D['fields'],s['pg']),addFileToken(x[H(0x76)],D['fields'],s['file'])),{'limit':f,'offset':a,'total':x[H(0x76)][H(0x81)],'time':Date['now']()-T,'rows':x[H(0x76)]??null};};}
1
+ import{UnsupportedError,ValidationError}from'../../../errors.js';function z(){const L=['max','Invalid\x20pagination','get','notes','includes','query','SELECT\x20*\x20FROM\x20admin.notes\x20WHERE\x20resource\x20=\x20$1\x20AND\x20resource_id\x20=\x20$2\x20ORDER\x20BY\x20created_at\x20DESC','rows','now','file','length','Generic\x20Resource\x20relation\x20\x22','keys','map','join','btree','junctionTable','\x20=\x20$1\x20','where\x20','foreignKey','key','AND\x20(','joins','sql','SELECT\x20','\x20FROM\x20','\x20t\x20','\x20LIMIT\x20$2\x20OFFSET\x20$3','dictionary'];z=function(){return L;};return z();}import{qi,qt}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';function G(w,h){w=w-0x9e;const S=z();let X=S[w];return X;}export function createFindRelation(w,h){return async function S({name:X,id:Y,relation:v,query:query={}}){const A=G,D=Date['now'](),o=Math['min'](Math[A(0x9e)](query['limit']??0x14,0x1),0xc8),q=Math[A(0x9e)](query['offset']??0x0,0x0);if(!Number['isFinite'](o)||!Number['isFinite'](q))throw new ValidationError(A(0x9f));const e=h[A(0xa0)](X),Z=e['relations']?.[v];if([A(0xa1),'files']['includes'](v)&&!e['capabilities']?.[A(0xa2)](v))throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+v+'\x22\x20requires\x20a\x20capabilities\x20\x22'+v+'\x22');if(v==='notes'){const c=await w['pg'][A(0xa3)](A(0xa4),[X,String(Y)]);return{'total':c[A(0xa5)]['length'],'time':Date[A(0xa6)]()-D,'rows':c['rows']};}if(v==='files'){const d=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',[X,String(Y)]);return addFileToken(d[A(0xa5)],{'file_path':{'type':A(0xa7)}},w['file']),{'total':d['rows'][A(0xa8)],'time':Date['now']()-D,'rows':d['rows']};}if(!Z?.['resource'])throw new UnsupportedError(A(0xa9)+v+'\x22\x20requires\x20a\x20project/provider\x20implementation');const K=h['get'](Z['resource']),y=K?.['key']??'id',V=K?.['table'],O=Object[A(0xaa)](K?.['fields']??{})['filter'](C=>K?.['fields'][C]?.['read']&&K?.['fields'][C]?.['scope']!=='item')[A(0xab)](qi)[A(0xac)](',\x20'),H=Z['fields']?.['join'](',\x20')||O||'*';Z['foreignKey']&&autoIndex(V,Z['foreignKey'],A(0xad),w['pg']);const R=Z['junctionTable']?'JOIN\x20'+qt(Z[A(0xae)])+'\x20j\x20ON\x20j.'+qi(Z['junctionForeignKey'])+'\x20=\x20t.'+(Z['junctionTargetKey']||qi(y))+'\x20WHERE\x20'+qi(Z['junctionLocalKey'])+A(0xaf):A(0xb0)+(Z[A(0xb1)]||qi(y))+'\x20=\x20(SELECT\x20'+qi(Z['localKey']||e['key'])+'\x20FROM\x20'+qt(e['table'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20'+qi(e[A(0xb2)])+'\x20=\x20$1\x20LIMIT\x201\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20)\x20'+(Z['where']?A(0xb3)+Z['where']+')':''),Q=K[A(0xb4)]?.['map'](C=>C[A(0xb5)]+'\x20')[A(0xac)]('\x20')||'',P=A(0xb6)+H+A(0xb7)+qt(V)+A(0xb8)+Q+'\x20'+R+A(0xb9),x=await w['pg'][A(0xa3)](P,[Y,o,q]);return K&&(await addDictionaryLookupData(x['rows'],K['fields'],w[A(0xba)]),await addTableLookupData(x[A(0xa5)],K['fields'],w['pg']),addFileToken(x[A(0xa5)],K['fields'],w['file'])),{'limit':o,'offset':q,'total':x[A(0xa5)]['length'],'time':Date['now']()-D,'rows':x['rows']??null};};}
@@ -1 +1 @@
1
- {"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../../src/plugins/resource/services/find.ts"],"names":[],"mappings":"AAMA,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,CA0EhC"}
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,buildIndex}from'../utils/filters.js';import{assertOperation}from'../utils/permissions.js';function W(){const L=['now','get','read','max','filter','where','sql','sort','isFinite','Invalid\x20pagination','search','length','values','push','\x20WHERE\x20',')\x20LIKE\x20$','default','scopes','joins','map','join','FROM\x20','rows','rowCount','count'];W=function(){return L;};return W();}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';function n(s,J){s=s-0xd9;const N=W();let O=N[s];return O;}import{addFileToken}from'./add-file-token.js';import{autoIndex}from'../utils/auto-index.js';import{buildSummary}from'../utils/summary.js';export function createFind(s,J){return async function N({name:O,query:query={},user:E}){const G=n,S=Date[G(0xd9)](),T=J[G(0xda)](O);assertOperation(T,G(0xdb),E);const f=Math['min'](Math['max'](query['limit']??0x14,0x1),0xc8),a=Math[G(0xdc)](query['offset']??0x0,0x0);buildIndex(T,query[G(0xdd)],s['pg']);const g=buildFilters(T,query['filter']);T[G(0xde)]&&(g[G(0xdf)]+=(g['sql']?'\x20AND\x20':'\x20WHERE\x20')+('('+T['where']+')'));const p=buildSort(T,query[G(0xe0)]);if(!Number['isFinite'](f)||!Number[G(0xe1)](a))throw new ValidationError(G(0xe2));const D=T['searchable']||Object['keys'](T['fields'])['filter'](x=>T['fields'][x]?.['searchable']);query[G(0xe3)]&&D[G(0xe4)]&&(D['map'](x=>autoIndex(T['table'],x,'text',s['pg'])),g[G(0xe5)][G(0xe6)](query[G(0xe3)]['toLowerCase']()+'%'),g[G(0xdf)]+=(g[G(0xdf)]?'\x20AND\x20':G(0xe7))+('\x20('+D?.['map'](x=>'lower('+qt(x)+G(0xe8)+g['values']['length'])['join']('\x20OR\x20')+')'));if(query['scope']&&T['scopes']?.[query['scope']]===undefined)throw new ValidationError('Unknown\x20scope:\x20'+query['scope']);const R=query['scope']||(T['scopes']?.[G(0xe9)]?'default':undefined);R&&(g['sql']+=(g['sql']?'\x20AND\x20':'\x20WHERE\x20')+('('+(T[G(0xea)]?.[R]||'true')+')'));const v=T[G(0xeb)]?.['filter'](x=>x['scope']!=='item')[G(0xec)](x=>x[G(0xdf)]+'\x20')[G(0xed)]('\x20')||'',o='SELECT\x20'+readableFields(T,'all')[G(0xed)](',\x20')+'\x20'+(G(0xee)+qt(T['table'])+'\x20t\x20')+(v+'\x20'+g[G(0xdf)]['replace'](/:uid/g,'\x27'+(E?.['id']??'NULL')+'\x27')+'\x20'+p+'\x20')+('LIMIT\x20$'+(g['values']['length']+0x1)+'\x20')+('OFFSET\x20$'+(g[G(0xe5)][G(0xe4)]+0x2)),i=buildSummary(T,query,E),[Q,u]=await Promise['all']([s['pg']['query'](o,[...g[G(0xe5)],f,a]),s['pg']['query'](i,g[G(0xe5)])['then'](x=>x[G(0xef)][0x0]??{})]),e=Q[G(0xef)];return await addDictionaryLookupData(e,T['fields'],s['dictionary']),await addTableLookupData(e,T['fields'],s['pg']),addFileToken(e,T['fields'],s['file']),{'time':Date['now']()-S,'limit':f,'offset':a,'count':Q[G(0xf0)],'total':u?.[G(0xf1)]??0x0,'summary':u,'rows':e};};}
1
+ function G(w,h){w=w-0x1b9;const S=z();let X=S[w];return X;}import{ValidationError}from'../../../errors.js';import{buildFilters,buildIndex}from'../utils/filters.js';import{assertOperation}from'../utils/permissions.js';import{buildSort}from'../utils/sort.js';function z(){const d=['read','min','filter','sql','\x20WHERE\x20','where','isFinite','Invalid\x20pagination','keys','fields','searchable','search','map','table','scope','scopes','default','true','all','OFFSET\x20$','length','query','values'];z=function(){return d;};return z();}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';import{buildSummary}from'../utils/summary.js';export function createFind(w,h){return async function S({name:X,query:query={},user:Y}){const c=G,v=Date['now'](),D=h['get'](X);assertOperation(D,c(0x1b9),Y);const o=Math[c(0x1ba)](Math['max'](query['limit']??0x14,0x1),0xc8),q=Math['max'](query['offset']??0x0,0x0);buildIndex(D,query['filter'],w['pg']);const e=buildFilters(D,query[c(0x1bb)]);D['where']&&(e[c(0x1bc)]+=(e['sql']?'\x20AND\x20':c(0x1bd))+('('+D[c(0x1be)]+')'));const Z=buildSort(D,query['sort']);if(!Number[c(0x1bf)](o)||!Number['isFinite'](q))throw new ValidationError(c(0x1c0));const K=D['searchable']||Object[c(0x1c1)](D['fields'])[c(0x1bb)](x=>D[c(0x1c2)][x]?.[c(0x1c3)]);query[c(0x1c4)]&&K['length']&&(K[c(0x1c5)](x=>autoIndex(D[c(0x1c6)],x,'text',w['pg'])),e['values']['push'](query['search']['toLowerCase']()+'%'),e[c(0x1bc)]+=(e[c(0x1bc)]?'\x20AND\x20':c(0x1bd))+('\x20('+K?.['map'](x=>'lower('+qt(x)+')\x20LIKE\x20$'+e['values']['length'])['join']('\x20OR\x20')+')'));if(query['scope']&&D['scopes']?.[query['scope']]===undefined)throw new ValidationError('Unknown\x20scope:\x20'+query[c(0x1c7)]);const y=query['scope']||(D[c(0x1c8)]?.['default']?c(0x1c9):undefined);y&&(e[c(0x1bc)]+=(e['sql']?'\x20AND\x20':c(0x1bd))+('('+(D['scopes']?.[y]||c(0x1ca))+')'));const V=D['joins']?.['filter'](x=>x[c(0x1c7)]!=='item')['map'](x=>x['sql']+'\x20')['join']('\x20')||'',O='SELECT\x20'+readableFields(D,c(0x1cb))['join'](',\x20')+'\x20'+('FROM\x20'+qt(D[c(0x1c6)])+'\x20t\x20')+(V+'\x20'+e[c(0x1bc)]['replace'](/:uid/g,'\x27'+(Y?.['id']??'NULL')+'\x27')+'\x20'+Z+'\x20')+('LIMIT\x20$'+(e['values']['length']+0x1)+'\x20')+(c(0x1cc)+(e['values'][c(0x1cd)]+0x2)),H=buildSummary(D,query,Y),[R,Q]=await Promise[c(0x1cb)]([w['pg'][c(0x1ce)](O,[...e[c(0x1cf)],o,q]),w['pg']['query'](H,e[c(0x1cf)])['then'](x=>x['rows'][0x0]??{})]),P=R['rows'];return await addDictionaryLookupData(P,D['fields'],w['dictionary']),await addTableLookupData(P,D[c(0x1c2)],w['pg']),addFileToken(P,D['fields'],w['file']),{'time':Date['now']()-v,'limit':o,'offset':q,'count':R['rowCount'],'total':Q?.['count']??0x0,'summary':Q,'rows':P};};}
@@ -1 +1 @@
1
- export async function getTableColumns(s,J){if(!s)throw new Error('not\x20enough\x20params:\x20table');if(!J?.['pg'])return[];const N=await J['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',[s])['then'](O=>O['rows']||[]);return N;}
1
+ export async function getTableColumns(w,h){const Y=G;if(!w)throw new Error(Y(0x148));if(!h?.['pg'])return[];const S=await h['pg']['query'](Y(0x149),[w])['then'](X=>X['rows']||[]);return S;}function G(w,h){w=w-0x148;const S=z();let X=S[w];return X;}function z(){const v=['not\x20enough\x20params:\x20table','\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'];z=function(){return v;};return z();}
@@ -1 +1 @@
1
- import{UnsupportedError,ValidationError}from'../../../errors.js';import{createUpdate}from'./update.js';function W(){const o=['relations','hasOwn','resource','foreignKey'];W=function(){return o;};return W();}function n(s,J){s=s-0xbb;const N=W();let O=N[s];return O;}export function createUpdateRelation(s,J){const N=createUpdate(s,J);return async function O({name:E,id:S,relation:T,relationId:f,data:a,user:g},p){const v=n,D=J['get'](E),R=D[v(0xbb)]?.[T];if(!R?.['resource']||!R['foreignKey'])throw new UnsupportedError('Relation\x20update\x20is\x20not\x20configured:\x20'+T);if(Object[v(0xbc)](a,R['foreignKey'])&&a[R['foreignKey']]!==S)throw new ValidationError('Cannot\x20change\x20relation:\x20'+R['foreignKey']);return N({'name':R[v(0xbd)],'id':f,'data':a,'user':g,'where':{'column':R[v(0xbe)],'value':S}},p);};}
1
+ function z(){const O=['relations','resource','foreignKey','Cannot\x20change\x20relation:\x20'];z=function(){return O;};return z();}import{UnsupportedError,ValidationError}from'../../../errors.js';import{createUpdate}from'./update.js';function G(w,h){w=w-0x17a;const S=z();let X=S[w];return X;}export function createUpdateRelation(w,h){const S=createUpdate(w,h);return async function X({name:Y,id:v,relation:D,relationId:o,data:q,user:e},Z){const V=G,K=h['get'](Y),y=K[V(0x17a)]?.[D];if(!y?.[V(0x17b)]||!y['foreignKey'])throw new UnsupportedError('Relation\x20update\x20is\x20not\x20configured:\x20'+D);if(Object['hasOwn'](q,y['foreignKey'])&&q[y[V(0x17c)]]!==v)throw new ValidationError(V(0x17d)+y['foreignKey']);return S({'name':y['resource'],'id':o,'data':q,'user':e,'where':{'column':y[V(0x17c)],'value':v}},Z);};}
@@ -1 +1 @@
1
- import{NotFoundError,ValidationError}from'../../../errors.js';function W(){const G=['updated_at','updated_by','map','length','column','UPDATE\x20','RETURNING\x20','table','audit','module','name','update'];W=function(){return G;};return W();}function n(s,J){s=s-0xa1;const N=W();let O=N[s];return O;}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 createUpdate(s,J){return async function N({name:O,id:E,data:S,user:T,where:f},a){const x=n,g=J['get'](O);assertOperation(g,'update',T);const p=writableData(g,S);if(!p['length'])throw new ValidationError('No\x20writable\x20fields');const D=a?.['pg']??s['pg'];validateInputData({'resource':g,'data':S,'update':!![]});g['fields']['updated_at']&&p['push']([x(0xa1),new Date()]);g['fields'][x(0xa2)]&&p['push']([x(0xa2),T?.['id']]);delete S['user_type'];const R=p[x(0xa3)](([u],e)=>qi(u)+'\x20=\x20$'+(e+0x1)),v=[...p[x(0xa3)](([,u])=>u),E];let o='WHERE\x20'+qi(g['key'])+'\x20=\x20$'+v[x(0xa4)];f&&(v['push'](f['value']),o+='\x20AND\x20'+qi(f[x(0xa5)])+'\x20=\x20$'+v['length']);g['where']&&(o+='\x20AND\x20('+g['where']+')');const i=await D['query'](x(0xa6)+qt(g['table'])+'\x20'+('SET\x20'+R['join'](',\x20')+'\x20')+(o+'\x20')+(x(0xa7)+Object['keys'](S)['map'](qi)['join'](',\x20')),v),Q=i['rows'][0x0];if(!Q)throw new NotFoundError(O+':'+E);return clearTableLookupCache(g[x(0xa8)],D),await(a?.[x(0xa9)]??s['audit'])?.['write']({'userId':T?.['id'],'module':g[x(0xaa)],'resource':g[x(0xab)],'resourceId':E,'action':x(0xac),'fields':Object['keys'](S)}),Q;};}
1
+ import{NotFoundError,ValidationError}from'../../../errors.js';import{assertOperation}from'../utils/permissions.js';function z(){const c=['get','fields','updated_by','user_type','length','value','\x20AND\x20(','keys','rows','audit','write'];z=function(){return c;};return z();}import{qi,qt,writableData}from'../utils/sql.js';import{validateInputData}from'../utils/fields.js';function G(w,h){w=w-0x196;const S=z();let X=S[w];return X;}import{clearTableLookupCache}from'./add-table-lookup-data.js';export function createUpdate(w,h){return async function S({name:X,id:Y,data:v,user:D,where:o},q){const x=G,e=h[x(0x196)](X);assertOperation(e,'update',D);const Z=writableData(e,v);if(!Z['length'])throw new ValidationError('No\x20writable\x20fields');const K=q?.['pg']??w['pg'];validateInputData({'resource':e,'data':v,'update':!![]});e['fields']['updated_at']&&Z['push'](['updated_at',new Date()]);e[x(0x197)][x(0x198)]&&Z['push'](['updated_by',D?.['id']]);delete v[x(0x199)];const y=Z['map'](([Q],P)=>qi(Q)+'\x20=\x20$'+(P+0x1)),V=[...Z['map'](([,Q])=>Q),Y];let O='WHERE\x20'+qi(e['key'])+'\x20=\x20$'+V[x(0x19a)];o&&(V['push'](o[x(0x19b)]),O+='\x20AND\x20'+qi(o['column'])+'\x20=\x20$'+V['length']);e['where']&&(O+=x(0x19c)+e['where']+')');const H=await K['query']('UPDATE\x20'+qt(e['table'])+'\x20'+('SET\x20'+y['join'](',\x20')+'\x20')+(O+'\x20')+('RETURNING\x20'+Object[x(0x19d)](v)['map'](qi)['join'](',\x20')),V),R=H[x(0x19e)][0x0];if(!R)throw new NotFoundError(X+':'+Y);return clearTableLookupCache(e['table'],K),await(q?.['audit']??w[x(0x19f)])?.[x(0x1a0)]({'userId':D?.['id'],'module':e['module'],'resource':e['name'],'resourceId':Y,'action':'update','fields':Object['keys'](v)}),R;};}
@@ -1 +1 @@
1
- import{qi,qt}from'./sql.js';function W(){const p=['add','length','public','replace','query','SELECT\x201\x20FROM\x20pg_indexes\x20WHERE\x20schemaname\x20=\x20$1\x20AND\x20indexname\x20=\x20$2','CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20'];W=function(){return p;};return W();}const requestedIndexes=new WeakMap();function n(s,J){s=s-0x196;const N=W();let O=N[s];return O;}export function autoIndex(s,J,N='btree',O){const a=n,E=requestedIndexes['get'](O)??new Set();requestedIndexes['set'](O,E);const S=s+':'+J+':'+N;if(E['has'](S))return;E[a(0x196)](S),void ensureIndex(s,J,N,O)['catch'](()=>{E['delete'](S);});}async function ensureIndex(s,J,N,O){const g=n,E=s['split']('.'),S=E[g(0x197)]===0x2?E[0x0]:g(0x198),T=(s+'_'+J+'_'+N+'_idx')[g(0x199)](/[^A-Za-z0-9_]/g,'_'),f=await O[g(0x19a)](g(0x19b),[S,T]);if(f['rowCount'])return;if(N==='text'){await O['query']('CREATE\x20EXTENSION\x20IF\x20NOT\x20EXISTS\x20pg_trgm'),await O['query'](g(0x19c)+qi(T+'_l')+'\x20ON\x20'+qt(s)+'\x20USING\x20btree\x20(lower('+qi(J)+')\x20text_pattern_ops)'),await O['query']('CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20'+qi(T)+'\x20ON\x20'+qt(s)+'\x20USING\x20gin\x20(lower('+qi(J)+')\x20gin_trgm_ops)');return;}await O['query'](g(0x19c)+qi(T)+'\x20ON\x20'+qt(s)+'\x20USING\x20'+N+'\x20('+qi(J)+')');}
1
+ import{qi,qt}from'./sql.js';const requestedIndexes=new WeakMap();function G(w,h){w=w-0x1cc;const S=z();let X=S[w];return X;}function z(){const Z=['set','has','catch','length','_idx','query','SELECT\x201\x20FROM\x20pg_indexes\x20WHERE\x20schemaname\x20=\x20$1\x20AND\x20indexname\x20=\x20$2','CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20','\x20ON\x20','\x20USING\x20'];z=function(){return Z;};return z();}export function autoIndex(w,h,S='btree',X){const q=G,Y=requestedIndexes['get'](X)??new Set();requestedIndexes[q(0x1cc)](X,Y);const v=w+':'+h+':'+S;if(Y[q(0x1cd)](v))return;Y['add'](v),void ensureIndex(w,h,S,X)[q(0x1ce)](()=>{Y['delete'](v);});}async function ensureIndex(w,h,S,X){const e=G,Y=w['split']('.'),v=Y[e(0x1cf)]===0x2?Y[0x0]:'public',D=(w+'_'+h+'_'+S+e(0x1d0))['replace'](/[^A-Za-z0-9_]/g,'_'),o=await X[e(0x1d1)](e(0x1d2),[v,D]);if(o['rowCount'])return;if(S==='text'){await X[e(0x1d1)]('CREATE\x20EXTENSION\x20IF\x20NOT\x20EXISTS\x20pg_trgm'),await X[e(0x1d1)]('CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20'+qi(D+'_l')+'\x20ON\x20'+qt(w)+'\x20USING\x20btree\x20(lower('+qi(h)+')\x20text_pattern_ops)'),await X['query']('CREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20'+qi(D)+'\x20ON\x20'+qt(w)+'\x20USING\x20gin\x20(lower('+qi(h)+')\x20gin_trgm_ops)');return;}await X['query'](e(0x1d3)+qi(D)+e(0x1d4)+qt(w)+e(0x1d5)+S+'\x20('+qi(h)+')');}