@opengis/fcore 0.0.1-beta.5 → 0.0.1-beta.6
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.
- package/dist/config.js +1 -1
- package/dist/context.js +1 -1
- package/dist/errors.js +1 -1
- package/dist/fastify.js +1 -1
- package/dist/fcore.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/migrations/cli.js +1 -1
- package/dist/migrations/runner.js +1 -1
- package/dist/modules/auth/adduser-cli.js +1 -1
- package/dist/modules/auth/passwd-cli.js +1 -1
- package/dist/modules/auth/permission-cli.js +1 -1
- package/dist/modules/auth/route.js +1 -1
- package/dist/modules/auth/schema.js +1 -1
- package/dist/modules/auth/services/change-password.js +1 -1
- package/dist/modules/auth/services/get-current-user.js +1 -1
- package/dist/modules/auth/services/registration.js +1 -1
- package/dist/modules/auth/services/verify-two-factor.js +1 -1
- package/dist/modules/file/route.js +1 -1
- package/dist/modules/file/schema.js +1 -1
- package/dist/modules/file/services/get-file.js +1 -1
- package/dist/modules/file/services/resize-file.js +1 -1
- package/dist/modules/file/services/upload-file.js +1 -1
- package/dist/modules/resource/route.js +1 -1
- package/dist/modules/resource/schema.js +1 -1
- package/dist/modules/resource/services/add-note.js +1 -1
- package/dist/modules/resource/services/add-resource-file.js +1 -1
- package/dist/modules/resource/services/create-resource-relation.js +1 -1
- package/dist/modules/resource/services/create-resource.js +1 -1
- package/dist/modules/resource/services/delete-resource-relation.js +1 -1
- package/dist/modules/resource/services/delete-resource.js +1 -1
- package/dist/modules/resource/services/export-resource.js +1 -1
- package/dist/modules/resource/services/get-resource.js +1 -1
- package/dist/modules/resource/services/list-resource-relation.js +1 -1
- package/dist/modules/resource/services/list-resources.js +1 -1
- package/dist/modules/resource/services/search-resource.js +1 -1
- package/dist/modules/resource/services/suggest-resource.js +1 -1
- package/dist/modules/resource/services/update-resource.js +1 -1
- package/dist/modules/resource/services/upload-resource-file.js +1 -1
- package/dist/modules/system/route.js +1 -1
- package/dist/modules/system/schema.js +1 -1
- package/dist/modules/system/services/check-system.js +1 -1
- package/dist/modules/system/services/get-access.js +1 -1
- package/dist/modules/system/services/get-api-list.js +1 -1
- package/dist/modules/system/services/get-audit-log.js +1 -1
- package/dist/modules/system/services/get-dictionary.js +1 -1
- package/dist/modules/system/services/get-system-log.js +1 -1
- package/dist/modules/system/services/get-system-settings.js +1 -1
- package/dist/modules/system/services/list-dictionaries.js +1 -1
- package/dist/modules/system/services/set-access.js +1 -1
- package/dist/modules/system/services/update-dictionary.js +1 -1
- package/dist/modules/system/services/update-system-settings.js +1 -1
- package/dist/modules/utils/require-admin.js +1 -1
- package/dist/modules/utils/safe-user.js +1 -1
- package/dist/modules/utils/unsupported.js +1 -1
- package/dist/plugins/audit/audit.js +1 -1
- package/dist/plugins/audit/index.js +1 -1
- package/dist/plugins/audit/services/write-audit.js +1 -1
- package/dist/plugins/auth/get-user-permissions.js +1 -1
- package/dist/plugins/auth/index.js +1 -1
- package/dist/plugins/auth/verifyUser.js +1 -1
- package/dist/plugins/dictionary.js +1 -1
- package/dist/plugins/file.js +1 -1
- package/dist/plugins/index.js +1 -1
- package/dist/plugins/logger/index.js +1 -1
- package/dist/plugins/logger/transport.js +1 -1
- package/dist/plugins/pg.js +1 -1
- package/dist/plugins/redis.js +1 -1
- package/dist/plugins/resource/index.js +1 -1
- package/dist/plugins/resource/resource.js +1 -1
- package/dist/plugins/resource/resource.registry.js +1 -1
- package/dist/plugins/resource/services/create-relation.js +1 -1
- package/dist/plugins/resource/services/create.js +1 -1
- package/dist/plugins/resource/services/delete-relation.js +1 -1
- package/dist/plugins/resource/services/delete.js +1 -1
- package/dist/plugins/resource/services/find-one.js +1 -1
- package/dist/plugins/resource/services/find-relation.js +1 -1
- package/dist/plugins/resource/services/find.js +1 -1
- package/dist/plugins/resource/services/update.js +1 -1
- package/dist/plugins/resource/utils/fields.js +1 -1
- package/dist/plugins/resource/utils/filters.js +1 -1
- package/dist/plugins/resource/utils/permissions.js +1 -1
- package/dist/plugins/resource/utils/sort.js +1 -1
- package/dist/plugins/resource/utils/sql.js +1 -1
- package/dist/shared/getIP.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(_0x29bbe5,_0x40888b){const _0x674b6c=_0x4266,_0x282d18=_0x29bbe5();while(!![]){try{const _0x1b293b=-parseInt(_0x674b6c(0x155))/0x1+-parseInt(_0x674b6c(0x179))/0x2+-parseInt(_0x674b6c(0x18a))/0x3+parseInt(_0x674b6c(0x189))/0x4+parseInt(_0x674b6c(0x14b))/0x5*(-parseInt(_0x674b6c(0x1ba))/0x6)+-parseInt(_0x674b6c(0x170))/0x7+parseInt(_0x674b6c(0x14f))/0x8;if(_0x1b293b===_0x40888b)break;else _0x282d18['push'](_0x282d18['shift']());}catch(_0xb41cab){_0x282d18['push'](_0x282d18['shift']());}}}(_0x2ef7,0xdc261));import{ConflictError,NotFoundError,ValidationError}from'../errors.js';function _0x2ef7(){const _0x2e4a22=['rkcUN','sNmXU','NQIeF','NgOcH','values','test','xYujU','viADQ','source','connect','iWbJO','ZCXuP','YzsIj','IiClm','has','Invalid\x20dictionary\x20name:\x20','DkSfQ','Dictionary\x20items\x20must\x20be\x20an\x20array','OKFBv','xgDBv','6JHUwWZ','Dictionary\x20not\x20found:\x20','DRSUO','NPuWH','rpKbz','TOfzb','DyEBT','rows','parentId','sjnLr','\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','put','Dictionary\x20already\x20registered:\x20','xAqqR','xszQr','DBApu','Dictionary\x20table\x20not\x20found','wVpLr','3517550NFdTGg','twXXd','DELETE\x20FROM\x20admin.dictionary_items\x20WHERE\x20dictionary_id\x20=\x20$1','mIlrf','47221952hlIKNZ','CTjlh','yQKOX','eWGda','code','GvdfO','1298398kBUvya','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20di.id,\x20di.code,\x20di.name,\x20di.parent_id\x20AS\x20\x22parentId\x22\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','dictionaries','zekBw','LLIBa','hzoqD','ROLLBACK','zvNvb','map','eRVxK','IrWfY','XiKzh','Invalid\x20dictionary\x20items:\x20','gLWJX','COMMIT','vqamN','\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','PquLL','delete','rWiPp','nJPND','then','\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','empty\x20pg','ucGkO','ZmimF','LXDoJ','4545275LElLcM','opDxk','hKmmY','list','SEYVY','wTGtu','QWpav','mFAbi','PXoOa','2575082cRXUIu','table_name','query','fcore','HOklT','ZfRgp','AnEQD','DzqQS','JmmpW','oWKaC','jPLow','custom','ZoYAg','ZpcTl','BEGIN','get','1739628tkPgkh','4491444iBFBLg','static','ebmBs','TyGwy','hJAim','release','push','YAtsM','register','lbkBk','items','QBWVC','\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','QsZdi','isArray','clear','xqODo','UniMA','set','WncPX','eqdnd','database','jChAu','KdcNT','gOnmG','length','name','dkwOU'];_0x2ef7=function(){return _0x2e4a22;};return _0x2ef7();}function _0x4266(_0x3fbeef,_0x14169f){_0x3fbeef=_0x3fbeef-0x147;const _0x2ef7b7=_0x2ef7();let _0x426668=_0x2ef7b7[_0x3fbeef];return _0x426668;}const dictionaryName=/^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/;export function createDictionary({pg:_0x46918f,dictionaries:dictionaries=[]}){const _0x25cf0c=_0x4266,_0x33c57e={'IrWfY':_0x25cf0c(0x16c),'HOklT':function(_0x1e3dda,_0x2ee71b){return _0x1e3dda===_0x2ee71b;},'QWpav':function(_0x546ba0,_0x402ded){return _0x546ba0===_0x402ded;},'UniMA':_0x25cf0c(0x16e),'rkcUN':function(_0x519a7f,_0x33a6f6){return _0x519a7f===_0x33a6f6;},'hzoqD':_0x25cf0c(0x157),'xqODo':function(_0x38ee94,_0x4fea47){return _0x38ee94!==_0x4fea47;},'YzsIj':_0x25cf0c(0x154),'JmmpW':function(_0x2d2075,_0xc4ffd2){return _0x2d2075!==_0xc4ffd2;},'lbkBk':_0x25cf0c(0x150),'xAqqR':_0x25cf0c(0x149),'zvNvb':function(_0x18efd2,_0x45bba9){return _0x18efd2===_0x45bba9;},'LXDoJ':_0x25cf0c(0x15e),'rWiPp':_0x25cf0c(0x174),'sjnLr':_0x25cf0c(0x1c0),'QsZdi':function(_0x6b740e,_0x4a3e69){return _0x6b740e!==_0x4a3e69;},'OKFBv':_0x25cf0c(0x186),'IiClm':_0x25cf0c(0x16d),'PquLL':function(_0x209efb,_0x3c495e){return _0x209efb!==_0x3c495e;},'viADQ':_0x25cf0c(0x1a8),'jChAu':_0x25cf0c(0x183),'mIlrf':_0x25cf0c(0x19e),'opDxk':_0x25cf0c(0x1ac),'mFAbi':function(_0x2f6cf0){return _0x2f6cf0();},'YAtsM':_0x25cf0c(0x172),'ZfRgp':_0x25cf0c(0x19f),'dkwOU':_0x25cf0c(0x1b7),'WncPX':function(_0x22c786,_0x48efb3){return _0x22c786(_0x48efb3);},'iWbJO':function(_0x5f2d89,_0x48ab53){return _0x5f2d89!==_0x48ab53;},'TyGwy':_0x25cf0c(0x1bc),'gOnmG':_0x25cf0c(0x178),'DzqQS':function(_0x439e0e){return _0x439e0e();},'ZCXuP':_0x25cf0c(0x187),'KdcNT':_0x25cf0c(0x17c),'gLWJX':_0x25cf0c(0x14d),'TOfzb':function(_0x49b051,_0x242fbb){return _0x49b051===_0x242fbb;},'NgOcH':_0x25cf0c(0x148),'eWGda':_0x25cf0c(0x15b),'NPuWH':function(_0x40b09e,_0x35b45a){return _0x40b09e===_0x35b45a;},'twXXd':_0x25cf0c(0x158),'sNmXU':function(_0xfb3afa,_0x3e115f){return _0xfb3afa(_0x3e115f);},'nJPND':function(_0x2fdf4a,_0x5cc0f3){return _0x2fdf4a(_0x5cc0f3);},'ebmBs':_0x25cf0c(0x18b),'oWKaC':function(_0x53dc18){return _0x53dc18();},'QBWVC':function(_0x3f92fc,_0x4a6542){return _0x3f92fc===_0x4a6542;},'LLIBa':_0x25cf0c(0x164),'xszQr':_0x25cf0c(0x151)},_0x2a6dcc=new Map();let _0x2b431e,_0x49c23c;async function _0x2e6e89(){const _0x402c4f=_0x25cf0c;if(_0x33c57e[_0x402c4f(0x19a)](_0x33c57e[_0x402c4f(0x1b2)],_0x33c57e[_0x402c4f(0x1b2)]))return _0x4d205a[_0x402c4f(0x194)];else{if(_0x33c57e[_0x402c4f(0x19a)](_0x2b431e,undefined)){if(_0x33c57e[_0x402c4f(0x181)](_0x33c57e[_0x402c4f(0x193)],_0x402c4f(0x1be)))return _0x2b431e;else throw new _0x5c9044(_0x33c57e[_0x402c4f(0x15f)]);}if(!_0x46918f)throw new Error(_0x33c57e[_0x402c4f(0x15f)]);return _0x49c23c??=_0x46918f[_0x402c4f(0x17b)](_0x402c4f(0x1c4))[_0x402c4f(0x16a)](_0x2f73cb=>{const _0x1fc919=_0x402c4f,_0x2b0f8e={'hJAim':function(_0x2fa94a,_0x387756){const _0x5adf82=_0x4266;return _0x33c57e[_0x5adf82(0x17d)](_0x2fa94a,_0x387756);}};if(_0x33c57e[_0x1fc919(0x176)](_0x33c57e[_0x1fc919(0x19b)],_0x33c57e[_0x1fc919(0x19b)])){const _0x120d2a=_0x2f73cb[_0x1fc919(0x1c1)][0x0]?.[_0x1fc919(0x17a)];_0x2b431e=_0x33c57e[_0x1fc919(0x1a6)](_0x120d2a,_0x33c57e[_0x1fc919(0x15a)])?_0x120d2a:null;}else{const _0x2caade=_0x56400c[_0x1fc919(0x1c1)][0x0]?.[_0x1fc919(0x17a)];_0x3f8ecf=_0x2b0f8e[_0x1fc919(0x18e)](_0x2caade,_0x1fc919(0x157))?_0x2caade:null;}}),await _0x49c23c,_0x2b431e;}}function _0x173d99(_0x225064){const _0x48de7f=_0x25cf0c;if(_0x33c57e[_0x48de7f(0x15c)](_0x48de7f(0x175),_0x33c57e[_0x48de7f(0x16f)]))throw new _0x147c8f(_0x33c57e[_0x48de7f(0x1c7)]);else{if(!dictionaryName[_0x48de7f(0x1ab)](_0x225064)){if(_0x33c57e[_0x48de7f(0x15c)](_0x33c57e[_0x48de7f(0x168)],_0x33c57e[_0x48de7f(0x1c3)]))throw new _0x2c4f5c(_0x48de7f(0x1b5)+_0x3724e1);else throw new ValidationError(_0x48de7f(0x1b5)+_0x225064);}}}function _0x524d2e(_0x2c8162){const _0x5dee2e=_0x25cf0c,_0x514677={};_0x514677[_0x5dee2e(0x1b9)]=_0x5dee2e(0x16c);const _0x3ae7c4=_0x514677;if(_0x33c57e[_0x5dee2e(0x197)](_0x33c57e[_0x5dee2e(0x1b8)],_0x33c57e[_0x5dee2e(0x1b3)]))for(const _0x507dcd of Array[_0x5dee2e(0x198)](_0x2c8162)?_0x2c8162:[_0x2c8162]){if(_0x33c57e[_0x5dee2e(0x166)](_0x33c57e[_0x5dee2e(0x1ad)],_0x33c57e[_0x5dee2e(0x1ad)]))_0x9a5b33[_0x5dee2e(0x190)](_0x1c9eed);else{_0x173d99(_0x507dcd[_0x5dee2e(0x153)]);if(!Array[_0x5dee2e(0x198)](_0x507dcd[_0x5dee2e(0x194)])){if(_0x33c57e[_0x5dee2e(0x1a0)]===_0x33c57e[_0x5dee2e(0x1a0)])throw new ValidationError(_0x5dee2e(0x161)+_0x507dcd[_0x5dee2e(0x153)]);else throw new _0x38c07c(_0x5dee2e(0x149));}if(_0x2a6dcc[_0x5dee2e(0x1b4)](_0x507dcd[_0x5dee2e(0x153)])){if(_0x33c57e[_0x5dee2e(0x14e)]!==_0x5dee2e(0x160))throw new ConflictError(_0x5dee2e(0x1c6)+_0x507dcd[_0x5dee2e(0x153)]);else throw new _0x34ef03(_0x3ae7c4[_0x5dee2e(0x1b9)]);}_0x2a6dcc[_0x5dee2e(0x19c)](_0x507dcd[_0x5dee2e(0x153)],{..._0x507dcd,'source':_0x5dee2e(0x18b)});}}else{if(!_0x471c55[_0x5dee2e(0x1ab)](_0x23d10d))throw new _0x1b74fa(_0x5dee2e(0x1b5)+_0x51cb95);}}async function _0xaba5e5(_0x123e5f){const _0x1c61ef=_0x25cf0c;if(_0x33c57e[_0x1c61ef(0x166)](_0x1c61ef(0x17f),_0x33c57e[_0x1c61ef(0x171)])){_0x173d99(_0x123e5f);const _0x7e8a29=_0x2a6dcc[_0x1c61ef(0x188)](_0x123e5f);if(_0x7e8a29)return _0x7e8a29[_0x1c61ef(0x194)];const _0x1eadd3=await _0x33c57e[_0x1c61ef(0x177)](_0x2e6e89);if(!_0x1eadd3)throw new NotFoundError(_0x33c57e[_0x1c61ef(0x1c7)]);if(!_0x46918f)throw new Error(_0x33c57e[_0x1c61ef(0x15f)]);const _0x190273=await _0x46918f[_0x1c61ef(0x17b)](_0x1c61ef(0x156),[_0x123e5f]);if(!_0x190273[_0x1c61ef(0x1c1)][_0x1c61ef(0x1a3)]){if(_0x33c57e[_0x1c61ef(0x176)](_0x33c57e[_0x1c61ef(0x191)],_0x33c57e[_0x1c61ef(0x191)]))throw new NotFoundError(_0x1c61ef(0x1bb)+_0x123e5f);else throw new _0x2e1623(_0x1c61ef(0x1bb)+_0x51e956);}const _0x23fc52=_0x190273[_0x1c61ef(0x1c1)];return _0x2a6dcc[_0x1c61ef(0x19c)](_0x123e5f,{'code':_0x123e5f,'name':_0x123e5f,'items':_0x23fc52,'source':_0x33c57e[_0x1c61ef(0x17e)]}),_0x23fc52;}else _0x2622a0[_0x1c61ef(0x18f)]();}async function _0x2227ef(_0x3a7445,_0xed1bcc){const _0x1ea0c9=_0x25cf0c,_0x2d8973={};_0x2d8973[_0x1ea0c9(0x185)]=_0x33c57e[_0x1ea0c9(0x1a5)];const _0x59dd29=_0x2d8973;if(_0x33c57e[_0x1ea0c9(0x166)](_0x1ea0c9(0x1b6),_0x1ea0c9(0x1b6)))return _0x572bea;else{_0x33c57e[_0x1ea0c9(0x19d)](_0x173d99,_0x3a7445);if(!Array[_0x1ea0c9(0x198)](_0xed1bcc)){if(_0x33c57e[_0x1ea0c9(0x1b0)](_0x33c57e[_0x1ea0c9(0x18d)],_0x33c57e[_0x1ea0c9(0x1a2)]))throw new ValidationError(_0x33c57e[_0x1ea0c9(0x1a5)]);else throw new _0x575bb5(_0x59dd29[_0x1ea0c9(0x185)]);}const _0x35e157=await _0x33c57e[_0x1ea0c9(0x180)](_0x2e6e89);if(!_0x35e157)throw new NotFoundError(_0x33c57e[_0x1ea0c9(0x1c7)]);if(!_0x46918f)throw new Error(_0x33c57e[_0x1ea0c9(0x15f)]);const _0x4f2e34=await _0x46918f[_0x1ea0c9(0x1af)]();try{await _0x4f2e34[_0x1ea0c9(0x17b)](_0x33c57e[_0x1ea0c9(0x1b1)]);const _0x3726d2=await _0x4f2e34[_0x1ea0c9(0x17b)](_0x1ea0c9(0x16b),[_0x3a7445,_0x3a7445,_0x33c57e[_0x1ea0c9(0x1a1)],_0x1ea0c9(0x184),!![]]),_0x18b124=_0x3726d2[_0x1ea0c9(0x1c1)][0x0]['id'];await _0x4f2e34[_0x1ea0c9(0x17b)](_0x33c57e[_0x1ea0c9(0x162)],[_0x18b124]);for(const _0x4a6bb7 of _0xed1bcc){await _0x4f2e34[_0x1ea0c9(0x17b)](_0x1ea0c9(0x165),[_0x18b124,_0x4a6bb7[_0x1ea0c9(0x153)],_0x4a6bb7[_0x1ea0c9(0x1a4)],_0x4a6bb7[_0x1ea0c9(0x1c2)]??null]);}await _0x4f2e34[_0x1ea0c9(0x17b)](_0x1ea0c9(0x163));}catch(_0x1a714a){if(_0x33c57e[_0x1ea0c9(0x1bf)](_0x1ea0c9(0x14a),_0x33c57e[_0x1ea0c9(0x1a9)]))throw new _0x438b9a(_0x1ea0c9(0x161)+_0x22f7d9[_0x1ea0c9(0x153)]);else{await _0x4f2e34[_0x1ea0c9(0x17b)](_0x33c57e[_0x1ea0c9(0x152)]);throw _0x1a714a;}}finally{if(_0x33c57e[_0x1ea0c9(0x1bd)](_0x1ea0c9(0x158),_0x33c57e[_0x1ea0c9(0x14c)]))_0x4f2e34[_0x1ea0c9(0x18f)]();else throw new _0x1ce61b(_0x1ea0c9(0x16c));}_0x33c57e[_0x1ea0c9(0x19d)](_0x4a5858,_0x3a7445);}}function _0x4a5858(_0x5938e1){const _0x3bdafb=_0x25cf0c;return _0x33c57e[_0x3bdafb(0x1a7)](_0x173d99,_0x5938e1),_0x2a6dcc[_0x3bdafb(0x167)](_0x5938e1);}async function _0x3aa563(){const _0x4938c8=_0x25cf0c,_0x598a84=[..._0x2a6dcc[_0x4938c8(0x1aa)]()][_0x4938c8(0x15d)](({code:_0x2089c6,name:_0x500cb5,source:_0x1ae24b})=>({'code':_0x2089c6,'name':_0x500cb5??_0x2089c6,'source':_0x1ae24b})),_0x40fc0f=await _0x33c57e[_0x4938c8(0x182)](_0x2e6e89);if(!_0x40fc0f)return _0x598a84;if(!_0x46918f)throw new Error(_0x33c57e[_0x4938c8(0x15f)]);const _0x322f9f=await _0x46918f[_0x4938c8(0x17b)](_0x4938c8(0x196));for(const _0x5d068e of _0x322f9f[_0x4938c8(0x1c1)]){if(_0x33c57e[_0x4938c8(0x195)](_0x33c57e[_0x4938c8(0x159)],_0x33c57e[_0x4938c8(0x147)])){_0x33c57e[_0x4938c8(0x169)](_0x4fd6df,_0x1213ee[_0x4938c8(0x153)]);if(!_0x28dbcc[_0x4938c8(0x198)](_0x483535[_0x4938c8(0x194)]))throw new _0x4c8a7b(_0x4938c8(0x161)+_0x17ee2e[_0x4938c8(0x153)]);if(_0x46a5cb[_0x4938c8(0x1b4)](_0x49fcb3[_0x4938c8(0x153)]))throw new _0x435cf1(_0x4938c8(0x1c6)+_0x20cc90[_0x4938c8(0x153)]);const _0x441eda={..._0x3543c3};_0x441eda[_0x4938c8(0x1ae)]=_0x33c57e[_0x4938c8(0x18c)],_0x4177b7[_0x4938c8(0x19c)](_0x36b6b1[_0x4938c8(0x153)],_0x441eda);}else!_0x2a6dcc[_0x4938c8(0x1b4)](_0x5d068e[_0x4938c8(0x153)])&&_0x598a84[_0x4938c8(0x190)](_0x5d068e);}return _0x598a84;}_0x524d2e(dictionaries);const _0x284d31={};return _0x284d31[_0x25cf0c(0x192)]=_0x524d2e,_0x284d31[_0x25cf0c(0x188)]=_0xaba5e5,_0x284d31[_0x25cf0c(0x1c5)]=_0x2227ef,_0x284d31[_0x25cf0c(0x199)]=_0x4a5858,_0x284d31[_0x25cf0c(0x173)]=_0x3aa563,_0x284d31;}
|
|
1
|
+
function T(r,u){r=r-0x136;const G=H();let o=G[r];return o;}import{ConflictError,NotFoundError,ValidationError}from'../errors.js';const dictionaryName=/^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/;export function createDictionary({pg:r,dictionaries:dictionaries=[]}){const u=new Map();let G,o;async function X(){if(G!==undefined)return G;if(!r)throw new Error('empty\x20pg');return o??=r['query']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20table_name\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20information_schema.tables\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20table_schema\x20=\x20\x27admin\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20AND\x20table_name\x20=\x20\x27dictionaries\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20LIMIT\x201\x0a\x20\x20\x20\x20\x20\x20\x20\x20')['then'](Y=>{const S=Y['rows'][0x0]?.['table_name'];G=S==='dictionaries'?S:null;}),await o,G;}function w(Y){if(!dictionaryName['test'](Y))throw new ValidationError('Invalid\x20dictionary\x20name:\x20'+Y);}function a(Y){const J=T;for(const S of Array['isArray'](Y)?Y:[Y]){w(S[J(0x136)]);if(!Array['isArray'](S[J(0x137)]))throw new ValidationError(J(0x138)+S['code']);if(u['has'](S['code']))throw new ConflictError(J(0x139)+S['code']);u['set'](S['code'],{...S,'source':'static'});}}async function q(Y){const O=T;w(Y);const S=u['get'](Y);if(S)return S[O(0x137)];const I=await X();if(!I)throw new NotFoundError(O(0x13a));if(!r)throw new Error('empty\x20pg');const c=await r[O(0x13b)](O(0x13c),[Y]);if(!c['rows']['length'])throw new NotFoundError('Dictionary\x20not\x20found:\x20'+Y);const h=c[O(0x13d)];return u['set'](Y,{'code':Y,'name':Y,'items':h,'source':'database'}),h;}async function p(Y,S){const j=T;w(Y);if(!Array['isArray'](S))throw new ValidationError(j(0x13e));const I=await X();if(!I)throw new NotFoundError(j(0x13a));if(!r)throw new Error('empty\x20pg');const c=await r['connect']();try{await c['query']('BEGIN');const h=await c[j(0x13b)]('\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',[Y,Y,'fcore',j(0x13f),!![]]),P=h['rows'][0x0]['id'];await c[j(0x13b)]('DELETE\x20FROM\x20admin.dictionary_items\x20WHERE\x20dictionary_id\x20=\x20$1',[P]);for(const l of S){await c[j(0x13b)]('\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',[P,l['code'],l['name'],l[j(0x140)]??null]);}await c['query']('COMMIT');}catch(Q){await c[j(0x13b)]('ROLLBACK');throw Q;}finally{c[j(0x141)]();}F(Y);}function F(Y){return w(Y),u['delete'](Y);}async function E(){const Y=[...u['values']()]['map'](({code:c,name:h,source:P})=>({'code':c,'name':h??c,'source':P})),S=await X();if(!S)return Y;if(!r)throw new Error('empty\x20pg');const I=await r['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 c of I['rows']){!u['has'](c['code'])&&Y['push'](c);}return Y;}return a(dictionaries),{'register':a,'get':q,'put':p,'clear':F,'list':E};}function H(){const B=['code','items','Invalid\x20dictionary\x20items:\x20','Dictionary\x20already\x20registered:\x20','Dictionary\x20table\x20not\x20found','query','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20di.id,\x20di.code,\x20di.name,\x20di.parent_id\x20AS\x20\x22parentId\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20admin.dictionary_items\x20di\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20JOIN\x20admin.dictionaries\x20d\x20ON\x20d.id\x20=\x20di.dictionary_id\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20d.code\x20=\x20$1\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20di.name\x0a\x20\x20\x20\x20\x20\x20\x20\x20','rows','Dictionary\x20items\x20must\x20be\x20an\x20array','custom','parentId','release'];H=function(){return B;};return H();}
|
package/dist/plugins/file.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{DeleteObjectCommand,GetObjectCommand,HeadObjectCommand,PutObjectCommand,S3Client}from'@aws-sdk/client-s3';function H(){const Q=['alloc','function','transformToByteArray','push','concat','tokenSecret','randomBytes','accessKey','send','bucket','Body','$metadata','name','toString','createHmac','sha256','update','digest','length','from','isInteger','exp'];H=function(){return Q;};return H();}import r from'node:crypto';import{ValidationError}from'../errors.js';function T(r,u){r=r-0x198;const G=H();let o=G[r];return o;}import{UnauthorizedError}from'../errors.js';function keyFor(u,G){if(!G||G['startsWith']('/')||G['includes']('..'))throw new ValidationError('Invalid\x20file\x20path');const o=G['replace'](/\\/g,'/')['replace'](/^\/+/,''),X=(u??'')['replace'](/^\/+|\/+$/g,'');return X?X+'/'+o:o;}async function bodyToBuffer(u){const Y=T;if(!u)return Buffer[Y(0x198)](0x0);const G=u;if(typeof G['transformToByteArray']===Y(0x199))return Buffer['from'](await G[Y(0x19a)]());const o=[];for await(const X of u){o[Y(0x19b)](Buffer['from'](X));}return Buffer[Y(0x19c)](o);}export function createFileS3(u){const S=T,G=u[S(0x19d)]??process.env.FILE_TOKEN_SECRET??r[S(0x19e)](0x20)['toString']('hex'),o=new S3Client({'endpoint':u['endpoint'],'region':u['region']??'us-east-1','forcePathStyle':u['forcePathStyle']??!![],'credentials':u['accessKeyId']||u[S(0x19f)]?{'accessKeyId':u['accessKeyId']??u['accessKey'],'secretAccessKey':u['secretAccessKey']??u['secretKey']}:undefined}),X=w=>keyFor(u['folder'],w);return{async 'put'(w,a){const I=S;await o[I(0x1a0)](new PutObjectCommand({'Bucket':u['bucket'],'Key':X(w),'Body':a}));},async 'get'(w){const c=S,a=await o[c(0x1a0)](new GetObjectCommand({'Bucket':u[c(0x1a1)],'Key':X(w)}));return bodyToBuffer(a[c(0x1a2)]);},async 'exists'(w){const h=S;try{return await o['send'](new HeadObjectCommand({'Bucket':u[h(0x1a1)],'Key':X(w)})),!![];}catch(a){const q=a;if(q[h(0x1a3)]?.['httpStatusCode']===0x194||q[h(0x1a4)]==='NotFound')return![];throw a;}},async 'delete'(w){await o['send'](new DeleteObjectCommand({'Bucket':u['bucket'],'Key':X(w)}));},'create'(w,a=u['tokenTtl']??0xe10){const P=S,q={'p':w,'exp':Math['floor'](Date['now']()/0x3e8)+a},p=Buffer['from'](JSON['stringify'](q))[P(0x1a5)]('base64url'),F=r[P(0x1a6)](P(0x1a7),G)[P(0x1a8)](p)['digest']('base64url');return p+'.'+F;},'verify'(w){const l=S,[a,q]=w['split']('.');if(!a||!q)throw new UnauthorizedError('Invalid\x20file\x20token');const p=r['createHmac']('sha256',G)['update'](a)[l(0x1a9)](),F=Buffer['from'](q,'base64url');if(p['length']!==F[l(0x1aa)]||!r['timingSafeEqual'](p,F))throw new UnauthorizedError('Invalid\x20file\x20token');let E;try{E=JSON['parse'](Buffer[l(0x1ab)](a,'base64url')['toString']('utf8'));}catch{throw new UnauthorizedError('Invalid\x20file\x20token');}if(!E['p']||!Number[l(0x1ac)](E['exp']))throw new UnauthorizedError('Invalid\x20file\x20token');if(E[l(0x1ad)]<Math['floor'](Date['now']()/0x3e8))throw new UnauthorizedError('File\x20token\x20expired');return E;}};}
|
package/dist/plugins/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export*from'./logger/index.js';export*from'./redis.js';export*from'./pg.js';export*from'./auth/index.js';export*from'./file.js';export*from'./dictionary.js';export*from'./audit/index.js';export*from'./resource/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
import r from'pino';function H(){const p=['refreshToken','end'];H=function(){return p;};return H();}function T(r,u){r=r-0xe1;const G=H();let o=G[r];return o;}export function createLogger(){const q=T,u=r['transport']({'target':'./transport.js'}),G=r({'level':'info','timestamp':r['stdTimeFunctions']['isoTime'],'base':{'service':'app'},'redact':{'paths':['req.headers.authorization','password','token','accessToken',q(0xe1)],'censor':'[REDACTED]'}},u),o={};function X(w,a){if(w===undefined)return{...o};o[w]=(o[w]??0x0)+(a??0x1);}return Object['assign'](G,{'close':async()=>u[q(0xe2)](),'metrics':X,'file':()=>G['info']['bind'](G)});}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const q=T;function T(r,u){r=r-0xad;const G=H();let o=G[r];return o;}import r from'node:fs';import u from'node:path';import G from'pino-abstract-transport';function H(){const S=['info','toISOString','mkdirSync','stream','end','set'];H=function(){return S;};return H();}const LEVELS={0x1e:q(0xad),0x28:'warn',0x32:'error',0x3c:'error'},streams=new Map();function getDate(){const p=q;return new Date()[p(0xae)]()['slice'](0x0,0xa);}function createStream(o,X){const F=q,w=u['resolve']('logs',o);return r[F(0xaf)](w,{'recursive':!![]}),r['createWriteStream'](u['join'](w,X+'.log'),{'flags':'a'});}function getStream(o){const E=q,X=getDate(),w=streams['get'](o);if(w&&w['date']===X)return w[E(0xb0)];w?.[E(0xb0)][E(0xb1)]();const a=createStream(o,X);return streams[E(0xb2)](o,{'date':X,'stream':a}),a;}function closeStreams(){const Y=q;for(const {stream:o}of streams['values']()){o[Y(0xb1)]();}streams['clear']();}export default async function loggerTransport(){return G(writeLogs,{'close':async()=>{closeStreams();}});}async function writeLogs(o){for await(const X of o){const w=LEVELS[X['level']];if(!w)continue;const a=getStream(X['file']||w);console['log'](X),delete X['file'],a['write'](JSON['stringify'](X)+'\x0a');}}
|
package/dist/plugins/pg.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import r from'pg';const {Pool}=r;export function createDatabase(u){return new Pool(u);}
|
package/dist/plugins/redis.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
function T(r,u){r=r-0x138;const G=H();let o=G[r];return o;}import{Redis}from'ioredis';function H(){const p=['get','number','del'];H=function(){return p;};return H();}export function createRedis(r){const a=T,u=new Redis(r);return{'get':G=>u[a(0x138)](G),'set':(G,o,X,w)=>{const q=a;if(w)return u['set'](G,o,'EX',w);if(typeof X===q(0x139))return u['set'](G,o,'EX',X);return u['set'](G,o);},'del':G=>u[a(0x13a)](G),'delete':G=>u['del'](G),'close':()=>u['quit'](),'ping':()=>u['ping'](),'hincrby':(G,o,X)=>u['hincrby'](G,o,X),'incrby':(G,o)=>u['incrby'](G,o)};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export*from'./resource.types.js';export*from'./resource.registry.js';export*from'./resource.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{ResourceRegistry}from'./resource.registry.js';import{createFind}from'./services/find.js';import{createFindOne}from'./services/find-one.js';import{createCreate}from'./services/create.js';import{createUpdate}from'./services/update.js';import{createRemove}from'./services/delete.js';import{createFindRelation}from'./services/find-relation.js';function H(){const Y=['register','has','bind'];H=function(){return Y;};return H();}import{createCreateRelation}from'./services/create-relation.js';function T(r,u){r=r-0x91;const G=H();let o=G[r];return o;}import{createDeleteRelation}from'./services/delete-relation.js';export function createResource(r){const E=T,u=new ResourceRegistry(),G=createFind(r,u),o=createFindOne(r,u),X=createCreate(r,u),w=createUpdate(r,u),a=createRemove(r,u),q=createFindRelation(r,u),p=createCreateRelation(r,u),F=createDeleteRelation(r,u);return{'register':u[E(0x91)]['bind'](u),'has':u[E(0x92)][E(0x93)](u),'get':u['get'][E(0x93)](u),'list':u['list'][E(0x93)](u),'find':G,'findOne':o,'create':X,'update':w,'delete':a,'findRelation':q,'createRelation':p,'deleteRelation':F};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
function H(){const p=['length','validate','name','resources','has','get','Resource\x20not\x20registered:\x20','test','Invalid\x20resource\x20contract:\x20','fields','Invalid\x20resource\x20field:\x20'];H=function(){return p;};return H();}function T(r,u){r=r-0x1ca;const G=H();let o=G[r];return o;}import{ValidationError,ConflictError,NotFoundError}from'../../errors.js';const ident=/^[a-zA-Z0-9_-]*$/;function validQualified(r){const o=T;return r['split']('.')[o(0x1ca)]<=0x2&&r['split']('.')['every'](u=>ident['test'](u));}export class ResourceRegistry{['resources']=new Map();['register'](r){const X=T;for(const u of Array['isArray'](r)?r:[r]){this[X(0x1cb)](u);if(this['resources']['has'](u['name']))throw new ConflictError('Resource\x20already\x20registered:\x20'+u[X(0x1cc)]);this[X(0x1cd)]['set'](u['name'],u);}}['has'](r){const w=T;return this['resources'][w(0x1ce)](r);}['get'](r){const a=T,u=this[a(0x1cd)][a(0x1cf)](r);if(!u)throw new NotFoundError(a(0x1d0)+r);return u;}['list'](){return[...this['resources']['values']()];}['validate'](r){const q=T;if(r['version']!==0x1||!ident[q(0x1d1)](r['name'])||!validQualified(r['table'])||!ident['test'](r['key']))throw new ValidationError(q(0x1d2)+r[q(0x1cc)]);for(const [u,G]of Object['entries'](r[q(0x1d3)])){if(!ident['test'](u)||!ident[q(0x1d1)](G['column']??u))throw new ValidationError(q(0x1d4)+u);}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{UnsupportedError,ValidationError}from'../../../errors.js';import{qi,qt}from'../utils/sql.js';function T(r,u){r=r-0x1f2;const G=H();let o=G[r];return o;}import{createCreate}from'./create.js';export function createCreateRelation(r,u){const G=createCreate(r,u);return async function o({name:X,id:w,relation:a,data:q,user:p}){const L=T;if(!r['pg'])throw new Error('empty\x20pg');if(a==='notes'){const I=await r['pg']['query']('INSERT\x20INTO\x20admin.notes(resource,resource_id,body)\x20VALUES\x20($1,$2,$3)\x20RETURNING\x20*',[X,String(w),q?.['body']]);return I['rows'][0x0];}if(a===L(0x1f2)){const c=await r['pg']['query']('INSERT\x20INTO\x20admin.files\x20(resource,\x20resource_id,\x20file_path,\x20size)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20($1,\x20$2,\x20$3,\x20$4)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20*',[X,String(w),q?.[L(0x1f3)],q?.[L(0x1f4)]??null]);return c[L(0x1f5)][0x0];}const F=u[L(0x1f6)](X),E=F['relations']?.[a];if(!E?.[L(0x1f7)]||!E['resource']&&!E['table'])throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+a+'\x22\x20requires\x20a\x20project/provider\x20implementation');let Y,S;if(E[L(0x1f8)])Y=await G({'name':E['resource'],'data':q??{},'user':p}),S=Y[u['get'](E['resource'])['key']];else{const h=E[L(0x1f9)];if(!h?.[L(0x1fa)])throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+a+L(0x1fb));const P=Object['entries'](q??{})[L(0x1fc)](([j])=>h['includes'](j));if(!P['length'])throw new ValidationError(L(0x1fd));const l=P['map'](([j])=>qi(j)),Q=P['map']((j,B)=>'$'+(B+0x1)),J=P[L(0x1fe)](([,j])=>j),O=await r['pg']['query']('INSERT\x20INTO\x20'+qt(E['table'])+'\x20('+l['join'](',\x20')+L(0x1ff)+Q['join'](',\x20')+')\x20RETURNING\x20*',J);Y=O['rows'][0x0],S=Y['id'];}return await r['pg']['query']('UPDATE\x20'+qt(F['table'])+L(0x200)+qi(E[L(0x1f7)])+'\x20=\x20$1\x20WHERE\x20'+qi(F['key'])+L(0x201),[S,w]),Y;};}function H(){const b=['files','filePath','size','rows','get','foreignKey','resource','fields','length','\x22\x20requires\x20a\x20project/provider\x20implementation','filter','No\x20writable\x20fields','map',')\x20VALUES\x20(','\x20SET\x20','\x20=\x20$2'];H=function(){return b;};return H();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{ValidationError}from'../../../errors.js';import{assertOperation}from'../utils/permissions.js';function H(){const P=['map','query','INSERT\x20INTO\x20','VALUES\x20(','audit','keys'];H=function(){return P;};return H();}import{qi,qt,readableFields,writableData}from'../utils/sql.js';function T(r,u){r=r-0x1e0;const G=H();let o=G[r];return o;}import{validateInputData}from'../utils/fields.js';export function createCreate(r,u){return async function G({name:o,data:X,user:w}){const h=T,a=u['get'](o);assertOperation(a,'create',w),validateInputData({'resource':a,'data':X});const q=writableData(a,X);if(!q['length'])throw new ValidationError('No\x20writable\x20fields');const p=q[h(0x1e0)](([I])=>qi(I)),F=q[h(0x1e0)]((I,c)=>'$'+(c+0x1)),E=q['map'](([,I])=>I);if(!r['pg'])throw new Error('empty\x20pg');const Y=await r['pg'][h(0x1e1)](h(0x1e2)+qt(a['table'])+'\x20('+p['join'](',\x20')+')\x20'+(h(0x1e3)+F['join'](',\x20')+')\x20')+('RETURNING\x20'+readableFields(a)['join'](',\x20')),E),S=Y['rows'][0x0];return await r[h(0x1e4)]?.['write']({'userId':w?.['id'],'module':a['module'],'resource':a['name'],'resourceId':S[a['key']],'action':'create','fields':Object[h(0x1e5)](X)}),S;};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function T(r,u){r=r-0x9c;var G=H();var o=G[r];return o;}import{UnsupportedError}from'../../../errors.js';function H(){var p=['empty\x20pg','query','DELETE\x20FROM\x20admin.notes\x20WHERE\x20note_id\x20=\x20$1\x20AND\x20resource\x20=\x20$2\x20AND\x20resource_id\x20=\x20$3','DELETE\x20FROM\x20admin.files\x20WHERE\x20file_id\x20=\x20$1\x20AND\x20resource\x20=\x20$2\x20AND\x20resource_id\x20=\x20$3'];H=function(){return p;};return H();}export function createDeleteRelation(r,u){return async function G({name:o,id:X,relation:w,relationId:a}){var q=T;if(!r['pg'])throw new Error(q(0x9c));if(w==='notes')return await r['pg'][q(0x9d)](q(0x9e),[a,o,String(X)]),{'success':!![]};if(w==='files')return await r['pg']['query'](q(0x9f),[a,o,String(X)]),{'success':!![]};throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+w+'\x22\x20requires\x20a\x20project/provider\x20implementation');};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{assertOperation}from'../utils/permissions.js';function T(r,u){r=r-0xf1;const G=H();let o=G[r];return o;}function H(){const F=['get','DELETE\x20FROM\x20','table','key','rowCount'];H=function(){return F;};return H();}import{qt,qi}from'../utils/sql.js';export function createRemove(r,u){return async function G({name:o,id:X,user:w}){const p=T,a=u[p(0xf1)](o);assertOperation(a,'delete',w);if(!r['pg'])throw new Error('empty\x20pg');const q=await r['pg']['query'](p(0xf2)+qt(a[p(0xf3)])+'\x20WHERE\x20'+qi(a[p(0xf4)])+'=$1',[X]);if((q[p(0xf5)]??0x0)>0x0)await r['audit']?.['write']({'module':a['module'],'resource':a['name'],'resourceId':X,'action':'delete'});return(q['rowCount']??0x0)>0x0;};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{assertOperation}from'../utils/permissions.js';function T(r,u){r=r-0xaf;const G=H();let o=G[r];return o;}function H(){const F=['get','key','=$1\x20LIMIT\x201'];H=function(){return F;};return H();}import{qt,qi,readableFields}from'../utils/sql.js';export function createFindOne(r,u){return async function G({name:o,id:X,user:w}){const p=T,a=u[p(0xaf)](o);assertOperation(a,'read',w);if(!r['pg'])throw new Error('empty\x20pg');const q=await r['pg']['query']('SELECT\x20'+readableFields(a)['join'](',\x20')+'\x20FROM\x20'+qt(a['table'])+'\x20WHERE\x20'+qi(a[p(0xb0)])+p(0xb1),[X]);return q['rows'][0x0]??null;};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{UnsupportedError}from'../../../errors.js';import{qi,qt}from'../utils/sql.js';function T(r,u){r=r-0x16a;const G=H();let o=G[r];return o;}function H(){const Q=['notes','SELECT\x20*\x20FROM\x20admin.files\x20WHERE\x20resource\x20=\x20$1\x20AND\x20resource_id\x20=\x20$2\x20ORDER\x20BY\x20created_at\x20DESC','get','\x20FROM\x20','resource','table','key','SELECT\x20'];H=function(){return Q;};return H();}export function createFindRelation(r,u){return async function G({name:o,id:X,relation:w}){const l=T;if(!r['pg'])throw new Error('empty\x20pg');if(w===l(0x16a)){const h=await r['pg']['query']('SELECT\x20*\x20FROM\x20admin.notes\x20WHERE\x20resource\x20=\x20$1\x20AND\x20resource_id\x20=\x20$2\x20ORDER\x20BY\x20created_at\x20DESC',[o,String(X)]);return h['rows'];}if(w==='files'){const P=await r['pg']['query'](l(0x16b),[o,String(X)]);return P['rows'];}const a=u[l(0x16c)](o),q=a['relations']?.[w];if(!q?.['foreignKey']||!q['resource']&&!q['table'])throw new UnsupportedError('Generic\x20Resource\x20relation\x20\x22'+w+'\x22\x20requires\x20a\x20project/provider\x20implementation');const p=await r['pg']['query']('SELECT\x20'+qi(q['foreignKey'])+l(0x16d)+qt(a['table'])+'\x20WHERE\x20'+qi(a['key'])+'\x20=\x20$1\x20LIMIT\x201',[X]),F=p['rows'][0x0]?.[q['foreignKey']];if(F==null)return null;const E=q[l(0x16e)]?u[l(0x16c)](q[l(0x16e)]):undefined,Y=q['table']??E[l(0x16f)],S=E?.[l(0x170)]??'id',I=q['fields']?.['length']?q['fields']['map'](qi)['join'](',\x20'):'*',c=await r['pg']['query'](l(0x171)+I+'\x20FROM\x20'+qt(Y)+'\x20WHERE\x20'+qi(S)+'\x20=\x20$1\x20LIMIT\x201',[F]);return{'rows':c['rows']??null};};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function H(){const c=['get','max','limit','sort','isFinite','LIMIT\x20$','values','empty\x20pg','rows'];H=function(){return c;};return H();}import{ValidationError}from'../../../errors.js';function T(r,u){r=r-0xbd;const G=H();let o=G[r];return o;}import{buildFilters}from'../utils/filters.js';import{assertOperation}from'../utils/permissions.js';import{buildSort}from'../utils/sort.js';import{qt,readableFields}from'../utils/sql.js';export function createFind(r,u){return async function G({name:o,query:query={},user:X}){const I=T,w=Date['now'](),a=u[I(0xbd)](o);assertOperation(a,'read',X);const q=Math['min'](Math[I(0xbe)](query[I(0xbf)]??0x14,0x1),0xc8),p=Math['max'](query['offset']??0x0,0x0),F=buildFilters(a,query['filter']),E=buildSort(a,query[I(0xc0)]);if(!Number[I(0xc1)](q)||!Number['isFinite'](p))throw new ValidationError('Invalid\x20pagination');const Y='SELECT\x20'+readableFields(a)['join'](',\x20')+'\x20'+('FROM\x20'+qt(a['table']))+(''+F['sql']+E+'\x20')+(I(0xc2)+(F['values']['length']+0x1)+'\x20')+('OFFSET\x20$'+(F[I(0xc3)]['length']+0x2));if(!r['pg'])throw new Error(I(0xc4));const S=await r['pg']['query'](Y,[...F['values'],q,p]);return{'limit':q,'offset':p,'total':S['rowCount'],'time':Date['now']()-w,'rows':S[I(0xc5)]};};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{NotFoundError,ValidationError}from'../../../errors.js';import{assertOperation}from'../utils/permissions.js';import{qi,qt,readableFields,writableData}from'../utils/sql.js';function T(r,u){r=r-0x9e;const G=H();let o=G[r];return o;}import{validateInputData}from'../utils/fields.js';export function createUpdate(r,u){return async function G({name:o,id:X,data:w,user:a}){const h=T,q=u['get'](o);assertOperation(q,h(0x9e),a);const p=writableData(q,w);if(!p['length'])throw new ValidationError(h(0x9f));if(!r['pg'])throw new Error('empty\x20pg');validateInputData({'resource':q,'data':w,'update':!![]});const F=p['map'](([I],c)=>qi(I)+h(0xa0)+(c+0x1)),E=[...p[h(0xa1)](([,I])=>I),X],Y=await r['pg'][h(0xa2)]('UPDATE\x20'+qt(q['table'])+'\x20'+(h(0xa3)+F[h(0xa4)](',\x20')+'\x20')+('WHERE\x20'+qi(q[h(0xa5)])+h(0xa0)+(p['length']+0x1)+'\x20')+('RETURNING\x20'+readableFields(q)['join'](',\x20')),E),S=Y[h(0xa6)][0x0];if(!S)throw new NotFoundError(o+':'+X);return await r['audit']?.['write']({'userId':a?.['id'],'module':q[h(0xa7)],'resource':q[h(0xa8)],'resourceId':X,'action':'update','fields':Object[h(0xa9)](w)}),S;};}function H(){const P=['update','No\x20writable\x20fields','\x20=\x20$','map','query','SET\x20','join','key','rows','module','name','keys'];H=function(){return P;};return H();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function H(){const w=['string','maxLength','minimum','\x20should\x20be\x20>=\x20','number','maximum','enum'];H=function(){return w;};return H();}function T(r,u){r=r-0xfd;const G=H();let o=G[r];return o;}import{ValidationError}from'../../../errors.js';export{readableFields,writableData,fieldColumn}from'./sql.js';const validateInputData=({resource:r,data:u,update:update=![]})=>{const X=T;for(const [G,o]of Object['entries'](r['fields'])){if(o['required']&&o['writable']!==![]&&(u[G]===undefined||u[G]===null)&&!update)throw new ValidationError('Required\x20field:\x20'+G);if(o['required']&&o['writable']!==![]&&Object['hasOwn'](u,G)&&(u[G]===undefined||u[G]===null)&&update)throw new ValidationError('Required\x20field:\x20'+G);if(o['minLength']&&typeof u[G]===X(0xfd)&&u[G]['length']<o['minLength'])throw new ValidationError('minLength\x20not\x20met:\x20'+G);if(o[X(0xfe)]&&typeof u[G]==='string'&&u[G]['length']>o['maxLength'])throw new ValidationError('maxLength\x20exceeded:\x20'+G);if(o[X(0xff)]&&typeof u[G]==='number'&&u[G]<o[X(0xff)])throw new ValidationError(G+X(0x100)+o['minimum']);if(o['maximum']&&typeof u[G]===X(0x101)&&u[G]>o[X(0x102)])throw new ValidationError(G+'\x20should\x20be\x20<=\x20'+o['maximum']);if(o['enum']&&u[G]&&!o[X(0x103)]['includes'](u[G]))throw new ValidationError(G+'\x20should\x20be\x20one\x20of\x20('+o['enum']['join'](',\x20')+')');if(o['pattern']&&typeof u[G]===X(0xfd)&&!new RegExp(o['pattern'])['test'](u[G]))throw new ValidationError(G+'\x20should\x20match\x20regular\x20expression\x20('+o['pattern']+')');}};export{validateInputData};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{fieldColumn,qi}from'./sql.js';function T(r,u){r=r-0x1cf;const G=H();let o=G[r];return o;}import{ValidationError}from'../../../errors.js';function H(){const F=['length'];H=function(){return F;};return H();}export function buildFilters(r,u,G=0x1){const p=T,o=[],X=[];for(const [w,a]of Object['entries'](u??{})){const q=r['fields'][w];if(!q||q['filter']!==!![]&&q['filterable']!==!![])throw new ValidationError('Field\x20is\x20not\x20filterable:\x20'+w);X['push'](a),o['push'](qi(fieldColumn(r,w))+'\x20=\x20$'+(G+X[p(0x1cf)]-0x1));}return{'sql':o[p(0x1cf)]?'\x20WHERE\x20'+o['join']('\x20AND\x20'):'','values':X};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{ForbiddenError}from'../../../errors.js';function T(r,u){r=r-0x160;const G=H();let o=G[r];return o;}function H(){const a=['Authentication\x20required','type'];H=function(){return a;};return H();}import{getContext}from'../../../index.js';export function assertOperation(r,u,G){const w=T,o=getContext()['config'];if(o['debug'])return;if(!r['operations']['includes'](u))throw new ForbiddenError(r['name']+'.'+u+'\x20is\x20disabled');if(r['access']!=='public'&&G===undefined)throw new ForbiddenError(w(0x160));if(r['access']==='admin'&&G?.[w(0x161)]!=='admin')throw new ForbiddenError('Admin\x20access\x20required');if(G?.['type']!=='admin'){const X=(r['permission']??r['name'])+':'+u;if(!G?.['permissions']?.['includes'](X))throw new ForbiddenError('Missing\x20permission:\x20'+X);}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{fieldColumn,qi}from'./sql.js';function H(){const F=['Field\x20is\x20not\x20sortable:\x20','\x20ORDER\x20BY\x20'];H=function(){return F;};return H();}function T(r,u){r=r-0xa5;const G=H();let o=G[r];return o;}import{ValidationError}from'../../../errors.js';export function buildSort(r,u){const p=T;if(!u?.['length'])return'';const G=u['map'](o=>{const q=T,X=o['startsWith']('-'),w=X?o['slice'](0x1):o,a=r['fields'][w];if(!a||a['sort']!==!![]&&a['sortable']!==!![])throw new ValidationError(q(0xa5)+w);return qi(fieldColumn(r,w))+'\x20'+(X?'DESC':'ASC');});return p(0xa6)+G['join'](',\x20');}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a=T;import{ValidationError}from'../../../errors.js';export const quoteIdentifier=r=>'\x22'+r['replace'](/"/g,'\x22\x22')+'\x22';export const quoteTable=r=>r['split']('.')['map'](quoteIdentifier)[a(0x14f)]('.');export function fieldColumn(r,u){const q=a;if(u===r['key'])return r['key'];const G=r['fields'][u];if(!G)throw new ValidationError(q(0x150)+u);return G['column']??u;}export function readableFields(r){const p=a,u=Object['entries'](r['fields'])[p(0x151)](([,G])=>G['read']!==![]&&G['readable']!==![])['map'](([G,o])=>quoteIdentifier(o['column']??G)+'\x20AS\x20'+quoteIdentifier(G));return!r['fields'][r['key']]&&u[p(0x152)](quoteIdentifier(r[p(0x153)])),u;}function T(r,u){r=r-0x14f;const G=H();let o=G[r];return o;}export function writableData(r,u){const F=a,G=[];for(const [o,X]of Object['entries'](u)){const w=r[F(0x154)][o];if(!w||w[F(0x155)]===![]||w['writable']===![])throw new ValidationError('Field\x20is\x20not\x20writable:\x20'+o);G[F(0x156)]([w[F(0x157)]??o,X]);}return G;}export const qi=quoteIdentifier;function H(){const E=['join','Unknown\x20field:\x20','filter','unshift','key','fields','write','push','column'];H=function(){return E;};return H();}export const qt=quoteTable;
|
package/dist/shared/getIP.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function T(r,u){r=r-0x1f3;const G=H();let o=G[r];return o;}const u=T,getIP=r=>(r['headers']?.['x-real-ip']||r['headers']?.['x-forwarded-for']||r['ip']||r['connection']?.[u(0x1f3)]||'')[u(0x1f4)](':')['pop']();function H(){const G=['remoteAddress','split'];H=function(){return G;};return H();}export default getIP;
|