@opengis/fcore 0.0.1-beta.4 → 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/LICENSE +3 -3
- package/README.md +71 -71
- package/dist/config.d.ts +2 -10
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/context.js +1 -1
- package/dist/errors.js +1 -1
- package/dist/fastify.d.ts.map +1 -1
- package/dist/fastify.js +1 -1
- package/dist/fcore.js +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.d.ts +3 -0
- package/dist/modules/auth/adduser-cli.d.ts.map +1 -0
- package/dist/modules/auth/adduser-cli.js +2 -0
- package/dist/modules/auth/passwd-cli.d.ts +3 -0
- package/dist/modules/auth/passwd-cli.d.ts.map +1 -0
- package/dist/modules/auth/passwd-cli.js +2 -0
- package/dist/modules/auth/permission-cli.d.ts +3 -0
- package/dist/modules/auth/permission-cli.d.ts.map +1 -0
- package/dist/modules/auth/permission-cli.js +2 -0
- package/dist/modules/auth/route.d.ts.map +1 -1
- package/dist/modules/auth/route.js +1 -1
- package/dist/modules/auth/schema.d.ts +7 -1
- package/dist/modules/auth/schema.d.ts.map +1 -1
- package/dist/modules/auth/schema.js +1 -1
- package/dist/modules/auth/services/change-password.d.ts +9 -0
- package/dist/modules/auth/services/change-password.d.ts.map +1 -0
- package/dist/modules/auth/services/change-password.js +1 -0
- package/dist/modules/auth/services/get-current-user.js +1 -1
- package/dist/modules/auth/services/registration.d.ts +14 -0
- package/dist/modules/auth/services/registration.d.ts.map +1 -0
- package/dist/modules/auth/services/registration.js +1 -0
- 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.d.ts.map +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.d.ts +8 -2
- package/dist/modules/resource/services/create-resource-relation.d.ts.map +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.d.ts +8 -1
- package/dist/modules/resource/services/delete-resource-relation.d.ts.map +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.d.ts +7 -2
- package/dist/modules/resource/services/list-resource-relation.d.ts.map +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.d.ts +3 -0
- package/dist/modules/resource/services/suggest-resource.d.ts.map +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.d.ts +2 -1
- package/dist/modules/system/route.d.ts.map +1 -1
- package/dist/modules/system/route.js +1 -1
- package/dist/modules/system/schema.d.ts +22 -1
- package/dist/modules/system/schema.d.ts.map +1 -1
- package/dist/modules/system/schema.js +1 -1
- package/dist/modules/system/services/check-system.d.ts.map +1 -1
- package/dist/modules/system/services/check-system.js +1 -1
- package/dist/modules/system/services/get-access.d.ts +14 -0
- package/dist/modules/system/services/get-access.d.ts.map +1 -0
- package/dist/modules/system/services/get-access.js +1 -0
- package/dist/modules/system/services/get-api-list.d.ts +4 -1
- package/dist/modules/system/services/get-api-list.d.ts.map +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.d.ts +9 -5
- package/dist/modules/system/services/get-system-log.d.ts.map +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.d.ts +16 -0
- package/dist/modules/system/services/set-access.d.ts.map +1 -0
- package/dist/modules/system/services/set-access.js +1 -0
- package/dist/modules/system/services/update-dictionary.d.ts +13 -0
- package/dist/modules/system/services/update-dictionary.d.ts.map +1 -0
- package/dist/modules/system/services/update-dictionary.js +1 -0
- 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.d.ts +3 -0
- package/dist/plugins/auth/get-user-permissions.d.ts.map +1 -0
- package/dist/plugins/auth/get-user-permissions.js +1 -0
- package/dist/plugins/auth/index.d.ts +4 -0
- package/dist/plugins/auth/index.d.ts.map +1 -1
- package/dist/plugins/auth/index.js +1 -1
- package/dist/plugins/auth/verifyUser.d.ts +9 -0
- package/dist/plugins/auth/verifyUser.d.ts.map +1 -0
- package/dist/plugins/auth/verifyUser.js +1 -0
- package/dist/plugins/dictionary.js +1 -1
- package/dist/plugins/file.js +1 -1
- package/dist/plugins/index.d.ts +1 -0
- package/dist/plugins/index.d.ts.map +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.d.ts.map +1 -1
- package/dist/plugins/resource/resource.js +1 -1
- package/dist/plugins/resource/resource.registry.js +1 -1
- package/dist/plugins/resource/resource.types.d.ts +23 -0
- package/dist/plugins/resource/resource.types.d.ts.map +1 -1
- package/dist/plugins/resource/services/create-relation.d.ts +13 -0
- package/dist/plugins/resource/services/create-relation.d.ts.map +1 -0
- package/dist/plugins/resource/services/create-relation.js +1 -0
- package/dist/plugins/resource/services/create.js +1 -1
- package/dist/plugins/resource/services/delete-relation.d.ts +15 -0
- package/dist/plugins/resource/services/delete-relation.d.ts.map +1 -0
- package/dist/plugins/resource/services/delete-relation.js +1 -0
- 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.d.ts +12 -0
- package/dist/plugins/resource/services/find-relation.d.ts.map +1 -0
- package/dist/plugins/resource/services/find-relation.js +1 -0
- 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/dist/type.d.ts +14 -0
- package/dist/type.d.ts.map +1 -1
- package/migrations/20260903120000_core_schema.sql +22 -19
- package/migrations/20260903130000_move_notes_files_to_admin.sql +17 -17
- package/migrations/20260903140000_settings_nulls_not_distinct.sql +18 -18
- package/migrations/20260905120000_add_user_foreign_keys.sql +43 -0
- package/package.json +10 -5
- package/dist/modules/auth/index.d.ts +0 -9
- package/dist/modules/auth/index.d.ts.map +0 -1
- package/dist/modules/auth/index.js +0 -1
- package/dist/modules/auth/services/login.d.ts +0 -10
- package/dist/modules/auth/services/login.d.ts.map +0 -1
- package/dist/modules/auth/services/login.js +0 -1
- package/dist/modules/auth/services/logout.d.ts +0 -9
- package/dist/modules/auth/services/logout.d.ts.map +0 -1
- package/dist/modules/auth/services/logout.js +0 -1
- package/dist/modules/auth/services/verifyPassword.d.ts +0 -11
- package/dist/modules/auth/services/verifyPassword.d.ts.map +0 -1
- package/dist/modules/auth/services/verifyPassword.js +0 -1
- package/dist/modules/file/index.d.ts +0 -8
- package/dist/modules/file/index.d.ts.map +0 -1
- package/dist/modules/file/index.js +0 -1
- package/dist/modules/resource/index.d.ts +0 -20
- package/dist/modules/resource/index.d.ts.map +0 -1
- package/dist/modules/resource/index.js +0 -1
- package/dist/modules/resource/services/list-children.d.ts +0 -6
- package/dist/modules/resource/services/list-children.d.ts.map +0 -1
- package/dist/modules/resource/services/list-children.js +0 -1
- package/dist/modules/system/index.d.ts +0 -13
- package/dist/modules/system/index.d.ts.map +0 -1
- package/dist/modules/system/index.js +0 -1
- package/dist/modules/utils/get-user-permissions.d.ts +0 -3
- package/dist/modules/utils/get-user-permissions.d.ts.map +0 -1
- package/dist/modules/utils/get-user-permissions.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-system.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/check-system.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAsB,WAAW,CAC/B,MAAM,EAAE;IACN,IAAI,EAAE,IAAI,CAAC;CACZ,EACD,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"check-system.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/check-system.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAsB,WAAW,CAC/B,MAAM,EAAE;IACN,IAAI,EAAE,IAAI,CAAC;CACZ,EACD,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,CAgBd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function T(r,u){r=r-0xfc;const G=H();let o=G[r];return o;}function H(){const w=['query','redis','status','fulfilled'];H=function(){return w;};return H();}import{requireAdmin}from'../../utils/require-admin.js';export async function checkSystem(r,u){const X=T;requireAdmin(r['user'],'system:check');const [G,o]=await Promise['allSettled']([u['pg'][X(0xfc)]('SELECT\x201'),u[X(0xfd)]['ping']()]);return{'status':G[X(0xfe)]===X(0xff)&&o['status']==='fulfilled'?'ok':'degraded','pg':G[X(0xfe)],'redis':o[X(0xfe)]};}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AppContext, User } from "../../../context.js";
|
|
2
|
+
export interface AccessRecord {
|
|
3
|
+
resource: string | null;
|
|
4
|
+
actions: string[] | null;
|
|
5
|
+
role: string | null;
|
|
6
|
+
}
|
|
7
|
+
export declare function getAccess(params: {
|
|
8
|
+
type: "user" | "role";
|
|
9
|
+
id: string;
|
|
10
|
+
user: User;
|
|
11
|
+
}, ctx: AppContext): Promise<{
|
|
12
|
+
access: AccessRecord[];
|
|
13
|
+
}>;
|
|
14
|
+
//# sourceMappingURL=get-access.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-access.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/get-access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAG5D,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,wBAAsB,SAAS,CAC3B,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,EACzD,GAAG,EAAE,UAAU,GAChB,OAAO,CAAC;IAAE,MAAM,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAoBrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{requireAdmin}from'../../utils/require-admin.js';function H(){const w=['system:access'];H=function(){return w;};return H();}function T(r,u){r=r-0x15e;const G=H();let o=G[r];return o;}export async function getAccess(r,u){const X=T;requireAdmin(r['user'],X(0x15e));const G=r['type']==='user'?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20ra.resource,\x20ra.actions,\x20ra.role_id\x20AS\x20role\x0a\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20admin.role_access\x20ra\x0a\x20\x20\x20\x20\x20\x20\x20\x20LEFT\x20JOIN\x20admin.user_roles\x20ur\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ON\x20ur.role_id\x20=\x20ra.role_id\x20AND\x20ur.user_uid\x20=\x20$1\x0a\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20ra.user_uid\x20=\x20$1\x20OR\x20ur.user_uid\x20=\x20$1\x0a\x20\x20\x20\x20\x20\x20':'\x0a\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20ra.resource,\x20ra.actions,\x20ra.role_id\x20AS\x20role\x0a\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20admin.role_access\x20ra\x0a\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20ra.role_id\x20=\x20$1\x0a\x20\x20\x20\x20\x20\x20',o=await u['pg']['query'](G,[r['id']]);return{'access':o['rows']};}
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
* Implements the get API list application service for the System module.
|
|
3
3
|
*/
|
|
4
4
|
import type { AppContext, User } from "../../../context.js";
|
|
5
|
+
import type { ApiRoute } from "../../../type.js";
|
|
5
6
|
export declare function getApiList(params: {
|
|
6
7
|
user: User;
|
|
7
|
-
|
|
8
|
+
apiRoutes: ReadonlyMap<string, ApiRoute>;
|
|
9
|
+
format?: "short" | "extended";
|
|
10
|
+
}, ctx: AppContext): Promise<ApiRoute[] | string[]>;
|
|
8
11
|
//# sourceMappingURL=get-api-list.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-api-list.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/get-api-list.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"get-api-list.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/get-api-list.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAiB,MAAM,kBAAkB,CAAC;AAEhE,wBAAsB,UAAU,CAC9B,MAAM,EAAE;IACN,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CAC/B,EACD,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,CAYhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
function T(r,u){r=r-0xa6;const G=H();let o=G[r];return o;}function H(){const p=['user','apiRoutes','sort','endpoint','format','short'];H=function(){return p;};return H();}import{requireAdmin}from'../../utils/require-admin.js';export async function getApiList(r,u){const q=T;requireAdmin(r[q(0xa6)],'system:list');const G=[...r[q(0xa7)]['values']()][q(0xa8)]((o,X)=>(o['endpoint']+'\x20'+o['method'])['localeCompare'](X[q(0xa9)]+'\x20'+X['method']));if(r[q(0xaa)]!==q(0xab))return G;return G['map'](({method:o,endpoint:X,access:w,permissions:a})=>o+'\x20'+X);}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function T(r,u){r=r-0x15f;const G=H();let o=G[r];return o;}import{requireAdmin}from'../../utils/require-admin.js';export async function getAuditLog(u,G){const a=T;requireAdmin(u[a(0x15f)],a(0x160));const o=Math['min'](Math['max'](u[a(0x161)]??0x32,0x1),0xc8),X=Math['max']((u['page']??0x1)-0x1,0x0)*o,w=await G['pg']['query']('SELECT\x20*\x20FROM\x20admin.audit_log\x20ORDER\x20BY\x20id\x20DESC\x20LIMIT\x20$1\x20OFFSET\x20$2',[o,X]);return{'rows':w[a(0x162)],'page':u['page']??0x1,'limit':o};}function H(){const q=['user','system:audit','limit','rows'];H=function(){return q;};return H();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export async function getDictionary(r,u){return u['dictionary']['get'](r['name']);}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import type { AppContext, User } from "../../../context.js";
|
|
2
|
+
export interface LogResult {
|
|
3
|
+
contentType: string;
|
|
4
|
+
body: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function getSystemLog(params: {
|
|
7
|
+
path?: string;
|
|
8
|
+
user: User;
|
|
9
|
+
}, ctx: AppContext): Promise<LogResult>;
|
|
6
10
|
//# sourceMappingURL=get-system-log.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-system-log.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/get-system-log.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-system-log.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/get-system-log.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAe5D,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,EACrC,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,SAAS,CAAC,CA2CpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
import r from'node:fs/promises';import u from'node:path';import{requireAdmin}from'../../utils/require-admin.js';import{NotFoundError,ValidationError}from'../../../errors.js';const LOGS_ROOT=u['resolve'](process['cwd'](),'logs'),TAIL_LINES=0x64;function T(r,u){r=r-0xfe;const G=H();let o=G[r];return o;}export async function getSystemLog(G,o){const c=T;requireAdmin(G['user'],'system:logs');const X=normalizePath(G['path']),w=u['resolve'](LOGS_ROOT,X);if(w!==LOGS_ROOT&&!w['startsWith'](LOGS_ROOT+u[c(0xfe)]))throw new ValidationError('Invalid\x20log\x20path');const a=await r[c(0xff)](w)['catch'](()=>null);if(!a)throw new NotFoundError('Log\x20path\x20not\x20found');if(a[c(0x100)]()){const p=await r[c(0x101)](w,{'withFileTypes':!![]}),F=await Promise['all'](p['map'](async E=>{const h=c,Y=await r['stat'](u[h(0x102)](w,E[h(0x103)]));return{'name':E['name'],'path':X?X+'/'+E['name']:E['name'],'type':E['isDirectory']()?'directory':'file','size':E['isDirectory']()?undefined:Y['size'],'modified':Y[h(0x104)]['toISOString']()};}));F['sort']((E,Y)=>E['name']['localeCompare'](Y[c(0x103)]));if(X){const E=X['split']('/')['slice'](0x0,-0x1)['join']('/');F['unshift']({'name':'..','path':E,'type':'directory'});}return{'contentType':'text/html;\x20charset=utf-8','body':renderDirectory(X,F)};}const q=await tailFile(w,TAIL_LINES);return{'contentType':'text/plain;\x20charset=utf-8','body':q['join']('\x0a')};}function renderDirectory(G,o){const P=T,X=o[P(0x105)](a=>{const q='?path='+encodeURIComponent(a['path']),p=a['type']==='directory'?a['name']+'/':a['name'];return'<li><a\x20href=\x22'+q+'\x22>'+escapeHtml(p)+'</a></li>';})[P(0x102)]('\x0a'),w=escapeHtml('logs/'+G);return'<!DOCTYPE\x20html>\x0a<html>\x0a<head><meta\x20charset=\x22utf-8\x22><title>'+w+'</title></head>\x0a<body>\x0a<h1>'+w+'</h1>\x0a<ul>\x0a'+X+'\x0a</ul>\x0a</body>\x0a</html>';}function escapeHtml(G){const l=T;return G[l(0x106)](/&/g,'&')[l(0x106)](/</g,'<')[l(0x106)](/>/g,'>')[l(0x106)](/"/g,'"');}function normalizePath(G){const Q=T,o=(G??'')['replace'](/\\/g,'/')[Q(0x106)](/^\/+|\/+$/g,'');if(o['split']('/')[Q(0x107)](X=>X==='..'))throw new ValidationError(Q(0x108));return o;}async function tailFile(G,o){const J=T,X=await r[J(0x109)](G,'r');try{const {size:w}=await X['stat'](),a=0x40*0x400;let q=w,p=Buffer['alloc'](0x0),F=0x0;while(q>0x0&&F<=o){const Y=Math['min'](a,q);q-=Y;const S=Buffer['alloc'](Y);await X['read'](S,0x0,Y,q),p=Buffer['concat']([S,p]),F+=countNewlines(S);}const E=p['toString']('utf8')['split']('\x0a')[J(0x10a)](I=>I['length']>0x0);return E['slice'](-o)['reverse']();}finally{await X['close']();}}function H(){const O=['sep','stat','isDirectory','readdir','join','name','mtime','map','replace','some','Invalid\x20log\x20path','open','filter'];H=function(){return O;};return H();}function countNewlines(G){let o=0x0;for(const X of G){if(X===0xa)o++;}return o;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{requireAdmin}from'../../utils/require-admin.js';function T(r,u){r=r-0x163;const G=H();let o=G[r];return o;}export async function getSystemSettings(r,u){const p=T;requireAdmin(r[p(0x163)],'system:settings');const G=await u['pg']['query']('\x0a\x20\x20\x20\x20\x20\x20SELECT\x20key,\x20value\x0a\x20\x20\x20\x20\x20\x20FROM\x20admin.settings\x0a\x20\x20\x20\x20\x20\x20WHERE\x20resource\x20=\x20\x27system\x27\x20AND\x20resource_id\x20IS\x20NULL\x0a\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20key\x0a\x20\x20\x20\x20');return G[p(0x164)][p(0x165)]((o,X)=>{const F=p,w=String(X['key'])[F(0x166)]('.');let a=o;for(const q of w['slice'](0x0,-0x1)){a[q]??={},a=a[q];}return a[w['at'](-0x1)]=X[F(0x167)],o;},{});}function H(){const E=['user','rows','reduce','split','value'];H=function(){return E;};return H();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export async function listDictionaries(r,u){return u['dictionary']['list']();}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { AppContext, User } from "../../../context.js";
|
|
2
|
+
import { type AccessRecord } from "./get-access.js";
|
|
3
|
+
type AccessInput = {
|
|
4
|
+
resource: string;
|
|
5
|
+
actions: string[];
|
|
6
|
+
};
|
|
7
|
+
export declare function setAccess(params: {
|
|
8
|
+
type: "user" | "role";
|
|
9
|
+
id: string;
|
|
10
|
+
access: AccessInput[];
|
|
11
|
+
user: User;
|
|
12
|
+
}, ctx: AppContext): Promise<{
|
|
13
|
+
access: AccessRecord[];
|
|
14
|
+
}>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=set-access.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-access.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/set-access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/D,KAAK,WAAW,GAAG;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF,wBAAsB,SAAS,CAC3B,MAAM,EAAE;IACJ,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,IAAI,EAAE,IAAI,CAAC;CACd,EACD,GAAG,EAAE,UAAU,GAChB,OAAO,CAAC;IAAE,MAAM,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CA8CrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{requireAdmin}from'../../utils/require-admin.js';function T(r,u){r=r-0x13d;const G=H();let o=G[r];return o;}import{getAccess}from'./get-access.js';export async function setAccess(r,u){const w=T;requireAdmin(r['user'],'system:access');const G=await u['pg']['connect']();try{await G['query']('BEGIN');r[w(0x13d)]===w(0x13e)?await G['query'](w(0x13f),[r['id']]):await G['query']('DELETE\x20FROM\x20admin.role_access\x20WHERE\x20role_id\x20=\x20$1\x20AND\x20user_uid\x20IS\x20NULL',[r['id']]);for(const o of r['access']){r['type']===w(0x13e)?await G['query']('INSERT\x20INTO\x20admin.role_access\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(\x20resource,\x20actions,\x20user_uid,\x20created_by,\x20updated_by)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20($1,\x20$2,\x20$3,\x20$4,\x20$5)',[o[w(0x140)],o[w(0x141)],r['id'],r[w(0x13e)]['id'],r[w(0x13e)]['id']]):await G['query']('INSERT\x20INTO\x20admin.role_access\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20(\x20resource,\x20actions,\x20role_id,\x20created_by,\x20updated_by)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20($1,\x20$2,\x20$3,\x20$4,\x20$5)',[o['resource'],o[w(0x141)],r['id'],r['user']['id'],r['user']['id']]);}await G['query']('COMMIT');}catch(X){await G['query']('ROLLBACK');throw X;}finally{G['release']();}return getAccess(r,u);}function H(){const a=['type','user','DELETE\x20FROM\x20admin.role_access\x20WHERE\x20user_uid\x20=\x20$1\x20AND\x20role_id\x20IS\x20NULL','resource','actions'];H=function(){return a;};return H();}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Implements the update dictionary application service for the System module.
|
|
3
|
+
*/
|
|
4
|
+
import type { AppContext, User } from "../../../context.js";
|
|
5
|
+
import type { DictionaryItem } from "../../../plugins/dictionary.js";
|
|
6
|
+
export declare function updateDictionary(params: {
|
|
7
|
+
name: string;
|
|
8
|
+
items: DictionaryItem[];
|
|
9
|
+
user: User;
|
|
10
|
+
}, ctx: AppContext): Promise<{
|
|
11
|
+
success: boolean;
|
|
12
|
+
}>;
|
|
13
|
+
//# sourceMappingURL=update-dictionary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-dictionary.d.ts","sourceRoot":"","sources":["../../../../src/modules/system/services/update-dictionary.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,wBAAsB,gBAAgB,CACpC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,cAAc,EAAE,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,EAC7D,GAAG,EAAE,UAAU,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAK/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function T(r,u){r=r-0xed;var G=H();var o=G[r];return o;}function H(){var o=['name'];H=function(){return o;};return H();}import{requireAdmin}from'../../utils/require-admin.js';export async function updateDictionary(r,u){var G=T;return requireAdmin(r['user'],'system:dictionaries'),await u['dictionary']['put'](r[G(0xed)],r['items']),{'success':!![]};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
import{requireAdmin}from'../../utils/require-admin.js';function T(r,u){r=r-0x183;const G=H();let o=G[r];return o;}import{ValidationError}from'../../../errors.js';function H(){const w=['system:settings','entries','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20admin.settings\x20(resource,\x20resource_id,\x20key,\x20value,\x20updated_by)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(\x27system\x27,\x20NULL,\x20$1,\x20$2::jsonb,\x20$3)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ON\x20CONFLICT\x20(resource,\x20resource_id,\x20key)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20DO\x20UPDATE\x20SET\x20value\x20=\x20EXCLUDED.value,\x20updated_by\x20=\x20EXCLUDED.updated_by,\x20updated_at\x20=\x20now()\x0a\x20\x20\x20\x20\x20\x20\x20\x20','user'];H=function(){return w;};return H();}export async function updateSystemSettings(r,u){const X=T;requireAdmin(r['user'],X(0x183));if(!Object['keys'](r['patch'])['length'])throw new ValidationError('Settings\x20patch\x20is\x20empty');for(const [G,o]of Object[X(0x184)](r['patch'])){if(!G['trim']()||G['includes']('..'))throw new ValidationError('Invalid\x20setting\x20key:\x20'+G);await u['pg']['query'](X(0x185),[G,JSON['stringify'](o),r[X(0x186)]['id']]);}return{'success':!![]};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function H(){var o=['type','admin'];H=function(){return o;};return H();}import{ForbiddenError}from'../../errors.js';function T(r,u){r=r-0xab;var G=H();var o=G[r];return o;}export function requireAdmin(r,u){var G=T;if(!r)throw new ForbiddenError('User\x20required');if(r[G(0xab)]!=='admin')throw new ForbiddenError('Admin\x20access\x20required');if(r['type']!==G(0xac)&&u&&!r['permissions']?.['includes'](u))throw new ForbiddenError('Missing\x20permission:\x20'+u);}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
function T(r,u){r=r-0x139;const G=H();let o=G[r];return o;}function H(){const w=['token','entries'];H=function(){return w;};return H();}export const safeUser=r=>{const X=T,u=['password','salt',X(0x139),'secret','credentials'];return Object['fromEntries'](Object[X(0x13a)](r)['filter'](([G])=>!u['some'](o=>G['toLowerCase']()['includes'](o))));};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{UnsupportedError}from'../../errors.js';export function unsupported(r){throw new UnsupportedError(r+'\x20requires\x20a\x20project/provider\x20implementation');}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{writeAudit}from'./services/write-audit.js';export function createAudit(r){const u=writeAudit(r);return{'write':u};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export*from'./audit.types.js';export*from'./audit.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const secretPattern=/password|token|secret|credential|salt/i;function clean(r){const F=T;if(Array['isArray'](r))return r[F(0xcf)](clean);if(r&&typeof r===F(0xd0))return Object[F(0xd1)](Object['entries'](r)['map'](([u,G])=>[u,secretPattern['test'](u)?'[REDACTED]':clean(G)]));return r;}function T(r,u){r=r-0xcf;const G=H();let o=G[r];return o;}function H(){const c=['map','object','fromEntries','query','then','rows','audit_log_data','admin.audit_log','Audit\x20tables\x20are\x20unavailable;\x20audit\x20writes\x20are\x20disabled','catch','logger','changes','oldValue','audit','empty\x20pg','\x0a\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20admin.audit_log\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20user_id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20module,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resource,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20resource_id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20fields,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20action,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20request_id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ip_address,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20metadata\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20($1,\x20$2,\x20$3,\x20$4,\x20$5,\x20$6,\x20$7,\x20$8,\x20$9)\x0a\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20id\x0a\x20\x20\x20\x20\x20\x20','userId','action','metadata','field'];H=function(){return c;};return H();}export function writeAudit(r){let u,G;async function o(){const E=T;if(!r['pg'])return![];if(u!==undefined)return u;return G??=r['pg'][E(0xd2)]('\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20table_name\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20information_schema.tables\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20table_schema\x20=\x20\x27admin\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20AND\x20table_name\x20IN\x20(\x27audit_log\x27,\x20\x27audit_log_data\x27)\x0a\x20\x20\x20\x20\x20\x20\x20\x20')[E(0xd3)](X=>{const Y=E,w=new Set(X[Y(0xd4)]['map'](a=>a['table_name']));return u=w['has']('audit_log')&&w['has'](Y(0xd5)),!u&&r['logger']['warn']({'expectedTables':[Y(0xd6),'admin.audit_log_data'],'foundTables':[...w]},Y(0xd7)),u;})[E(0xd8)](X=>{const S=E;return u=![],r[S(0xd9)]['warn']({'err':X},'Unable\x20to\x20check\x20audit\x20tables;\x20audit\x20writes\x20are\x20disabled'),![];}),G;}return async function X(w){const I=T;if(!await o())return r['logger']['info']({'auditFallback':!![],'event':clean({...w,'changes':w[I(0xda)]?.['map'](p=>({...p,'oldValue':clean(p[I(0xdb)]),'newValue':clean(p['newValue'])}))})},I(0xdc)),0x0;if(!r['pg'])throw new Error(I(0xdd));const a=await r['pg'][I(0xd2)](I(0xde),[w[I(0xdf)]??null,w['module'],w['resource'],w['resourceId']==null?null:String(w['resourceId']),w['fields']??null,w[I(0xe0)],w['requestId']??null,w['ipAddress']??null,clean(w[I(0xe1)]??{})]),q=a[I(0xd4)][0x0]['id'];for(const p of w['changes']??[]){if(secretPattern['test'](p['field']))continue;await r['pg']['query']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20admin.audit_log_data\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20audit_log_id,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20field,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20old_value,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20new_value\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20($1,\x20$2,\x20$3,\x20$4)\x0a\x20\x20\x20\x20\x20\x20\x20\x20',[q,p[I(0xe2)],JSON['stringify'](clean(p['oldValue'])),JSON['stringify'](clean(p['newValue']))]);}return q;};}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-user-permissions.d.ts","sourceRoot":"","sources":["../../../src/plugins/auth/get-user-permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,GACnC,OAAO,CAAC,MAAM,EAAE,CAAC,CAenB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function H(){const w=['query'];H=function(){return w;};return H();}function T(r,u){r=r-0x19d;const G=H();let o=G[r];return o;}export async function getUserPermissions(r,u){const X=T,G=await u['pg'][X(0x19d)]('\x0a\x20\x20\x20\x20\x20\x20SELECT\x20DISTINCT\x20ra.resource\x20||\x20\x27:\x27\x20||\x20action\x20AS\x20permission\x0a\x20\x20\x20\x20\x20\x20FROM\x20admin.role_access\x20ra\x0a\x20\x20\x20\x20\x20\x20LEFT\x20JOIN\x20admin.user_roles\x20ur\x20ON\x20ur.role_id\x20=\x20ra.role_id\x0a\x20\x20\x20\x20\x20\x20CROSS\x20JOIN\x20LATERAL\x20unnest(COALESCE(ra.actions,\x20\x27{}\x27::text[]))\x20AS\x20action\x0a\x20\x20\x20\x20\x20\x20WHERE\x20ra.user_uid\x20=\x20$1\x20OR\x20ur.user_uid\x20=\x20$1\x0a\x20\x20\x20\x20',[r]);return G['rows']['map'](o=>o['permission']);}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
export * from "./auth.types.js";
|
|
2
2
|
import { type FastifyInstance } from "fastify";
|
|
3
3
|
import { type ContextDependencies } from "../../context.js";
|
|
4
|
+
export * from "./verifyUser.js";
|
|
5
|
+
export * from "./get-user-permissions.js";
|
|
6
|
+
export declare function hashPassword(password: string): Promise<string>;
|
|
7
|
+
export declare function verifyPassword(password: string, stored: string): Promise<boolean>;
|
|
4
8
|
export declare function createSessionStore(app: FastifyInstance, ctx: ContextDependencies): Promise<void>;
|
|
5
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAUhC,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAO/C,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAI5D,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAE1C,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKpE;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAiBlB;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,mBAAmB,iBA6CzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export*from'./auth.types.js';import{randomBytes,scrypt as r,timingSafeEqual}from'node:crypto';import{promisify}from'node:util';const scrypt=promisify(r);import u from'@fastify/cookie';function T(r,u){r=r-0x76;const G=H();let o=G[r];return o;}function H(){const P=['scrypt$','toString','split','scrypt','hex','length','warn','cookieOptions','user'];H=function(){return P;};return H();}import G from'@fastify/session';import{Authenticator}from'@fastify/passport';import o from'fastify-session-redis-store';import{getUserPermissions}from'./get-user-permissions.js';const fastifyPassport=new Authenticator();export*from'./verifyUser.js';export*from'./get-user-permissions.js';export async function hashPassword(X){const S=T,w=randomBytes(0x10),a=await scrypt(X,w,0x40);return S(0x76)+w[S(0x77)]('hex')+'$'+a[S(0x77)]('hex');}export async function verifyPassword(X,w){const I=T,[a,q,p]=w[I(0x78)]('$');if(a!==I(0x79)||!q||!p)return![];const F=Buffer['from'](q,I(0x7a)),E=Buffer['from'](p,'hex'),Y=await scrypt(X,F,E[I(0x7b)]);return timingSafeEqual(Y,E);}export async function createSessionStore(X,w){const c=T,{config:a,redis:q}=w;if(!a||!q){console[c(0x7c)]('Missing\x20config\x20or\x20redis\x20-\x20skipping\x20session\x20store\x20creation');return;}if(process.env.NODE_ENV==='test'||process.env.VITEST)return;await X['register'](u,{'parseOptions':a['auth'][c(0x7d)]}),await X['register'](G,{'secret':a['auth']['secret'],'cookieName':a['auth']['cookieName'],'cookie':a['auth'][c(0x7d)],'store':new o({'prefix':a['auth']['cookieName']+':'+(a['pg']?.['database']||'db')+':','client':q})}),await X['register'](fastifyPassport['initialize']()),await X['register'](fastifyPassport['secureSession']()),fastifyPassport['registerUserSerializer'](async p=>({'user':p})),fastifyPassport['registerUserDeserializer'](async p=>{const h=c,F=p?.[h(0x7e)]||p;return F?.['id']&&(F['permissions']=await getUserPermissions(F['id'],w)),F;});}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ContextDependencies } from "../../context.js";
|
|
2
|
+
type params = {
|
|
3
|
+
user: string;
|
|
4
|
+
password: string;
|
|
5
|
+
ip?: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function verifyUser({ user, password, ip, }: params, { pg, logger }: Pick<ContextDependencies, "pg" | "logger">): Promise<import("./auth.types.js").AuthUser>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=verifyUser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifyUser.d.ts","sourceRoot":"","sources":["../../../src/plugins/auth/verifyUser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAQ,MAAM,kBAAkB,CAAC;AAI7D,KAAK,MAAM,GAAG;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,wBAAsB,UAAU,CAC9B,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,EAC/B,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,QAAQ,CAAC,+CAgC3D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{BadRequestError}from'../../errors.js';function H(){const Y=['user.login','password_hash','info','auth/warn'];H=function(){return Y;};return H();}import{verifyPassword}from'./index.js';function T(r,u){r=r-0x78;const G=H();let o=G[r];return o;}export async function verifyUser({user:r,password:u,ip:G},{pg:o,logger:X}){const E=T;if(!r||r==='')throw new BadRequestError('not\x20enough\x20params:\x20user');if(!u||u==='')throw new BadRequestError('not\x20enough\x20params:\x20password');X['metrics'](E(0x78));const w='select\x20uid\x20as\x20id,\x20user_type\x20as\x20type,\x20password_hash,\x20twofa\x20from\x20admin.users\x20where\x20$1\x20in\x20(login,email,phone)\x20and\x20enabled\x20limit\x201',a=await o['query'](w,[r])['then'](p=>p['rows']?.[0x0]);if(!a){const p='user\x20not\x20found';X['info']({'file':'auth/warn','error':p,'user':r,'ip':G});throw new BadRequestError(p);}const q=await verifyPassword(u,a[E(0x79)]);if(!q){const F='Wrong\x20password';X[E(0x7a)]({'file':E(0x7b),'error':F,'user':r,'ip':G});throw new BadRequestError(F);}return delete a['password_hash'],a;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(_0x1af561,_0x15288e){const _0x52c573=_0x374b,_0x58582d=_0x1af561();while(!![]){try{const _0x362c82=parseInt(_0x52c573(0xd8))/0x1*(-parseInt(_0x52c573(0xf3))/0x2)+-parseInt(_0x52c573(0x101))/0x3*(-parseInt(_0x52c573(0x132))/0x4)+parseInt(_0x52c573(0x13d))/0x5+parseInt(_0x52c573(0x12b))/0x6+-parseInt(_0x52c573(0x12d))/0x7*(parseInt(_0x52c573(0x116))/0x8)+parseInt(_0x52c573(0x11a))/0x9+-parseInt(_0x52c573(0x135))/0xa;if(_0x362c82===_0x15288e)break;else _0x58582d['push'](_0x58582d['shift']());}catch(_0x120ad5){_0x58582d['push'](_0x58582d['shift']());}}}(_0x2401,0x892cb));import{ConflictError,NotFoundError,ValidationError}from'../errors.js';const dictionaryName=/^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/;export function createDictionary({pg:_0x561a54,dictionaries:dictionaries=[]}){const _0xb891ab=_0x374b,_0x56cac8={'RZGTR':function(_0xdef1f9,_0x565f3a){return _0xdef1f9===_0x565f3a;},'NCQSi':function(_0x3f4ee3,_0x3bf17d){return _0x3f4ee3!==_0x3bf17d;},'LaZjl':_0xb891ab(0xf8),'nQlaG':_0xb891ab(0x142),'oPJjE':function(_0x5edc3c,_0x351f27){return _0x5edc3c===_0x351f27;},'PAZMV':_0xb891ab(0xdc),'sdjQi':_0xb891ab(0x13e),'ceYch':function(_0x59fda,_0x218d58){return _0x59fda(_0x218d58);},'MJMAs':_0xb891ab(0xe2),'YiQVT':_0xb891ab(0xed),'WNDpy':_0xb891ab(0x106),'vvEnH':_0xb891ab(0xe8),'wtCiI':function(_0x1b7c9e){return _0x1b7c9e();},'eLKzC':_0xb891ab(0xe9),'dsDzA':_0xb891ab(0x11e),'LOwvl':_0xb891ab(0x122),'uaDnv':function(_0x9f5e11,_0x529318){return _0x9f5e11!==_0x529318;},'XjpRh':_0xb891ab(0x136),'TyxwI':_0xb891ab(0xec),'Dvlbc':_0xb891ab(0x127),'eHrFa':function(_0x1d2e93,_0x561352){return _0x1d2e93(_0x561352);},'JHEqz':function(_0x1329db,_0x7ed506){return _0x1329db!==_0x7ed506;},'SdUCn':_0xb891ab(0x140),'ssjAw':_0xb891ab(0x111),'oSoon':_0xb891ab(0xfa),'tWpNy':_0xb891ab(0x114),'nFhuG':_0xb891ab(0x115),'sDFlF':_0xb891ab(0x10a),'dwOUR':function(_0x319e63,_0x8adbea){return _0x319e63(_0x8adbea);},'DwbOh':function(_0x3330b2,_0xf1a9db){return _0x3330b2(_0xf1a9db);},'ypYqZ':_0xb891ab(0x130),'dKLsP':function(_0xbac54b){return _0xbac54b();},'HUQrq':_0xb891ab(0xf4)},_0x398d15=new Map();let _0x1957fa,_0x51d102;async function _0x47b3fd(){const _0x15b354=_0xb891ab;if(_0x56cac8[_0x15b354(0x141)](_0x1957fa,undefined))return _0x1957fa;if(!_0x561a54){if(_0x56cac8[_0x15b354(0x12f)](_0x56cac8[_0x15b354(0x103)],_0x15b354(0x108)))throw new _0x30dc06(_0x15b354(0x12e)+_0x3bbdc6[_0x15b354(0xea)]);else throw new Error(_0x56cac8[_0x15b354(0x123)]);}return _0x51d102??=_0x561a54[_0x15b354(0xe7)](_0x15b354(0x10c))[_0x15b354(0x110)](_0x37cf8d=>{const _0x3bc136=_0x15b354,_0x5d0e65=_0x37cf8d[_0x3bc136(0x10b)][0x0]?.[_0x3bc136(0xd9)];_0x1957fa=_0x56cac8[_0x3bc136(0x12f)](_0x5d0e65,_0x3bc136(0x131))?_0x5d0e65:null;}),await _0x51d102,_0x1957fa;}function _0x36c77d(_0x351a1e){const _0x5d07d1=_0xb891ab,_0x5619b7={};_0x5619b7[_0x5d07d1(0xde)]=_0x5d07d1(0x142);const _0x1037bf=_0x5619b7;if(!dictionaryName[_0x5d07d1(0xf7)](_0x351a1e)){if(_0x56cac8[_0x5d07d1(0x102)](_0x56cac8[_0x5d07d1(0x11f)],_0x56cac8[_0x5d07d1(0x11f)]))throw new ValidationError(_0x5d07d1(0x118)+_0x351a1e);else throw new _0x286194(TWAxID[_0x5d07d1(0xde)]);}}function _0x276625(_0x5cf9cd){const _0x5117de=_0xb891ab;if(_0x56cac8[_0x5117de(0x12f)](_0x56cac8[_0x5117de(0xef)],_0x5117de(0x10e)))throw new _0x190341(_0x5117de(0x139)+_0x48ab78);else for(const _0x73a2b2 of Array[_0x5117de(0xe6)](_0x5cf9cd)?_0x5cf9cd:[_0x5cf9cd]){_0x56cac8[_0x5117de(0x11d)](_0x36c77d,_0x73a2b2[_0x5117de(0xea)]);if(!Array[_0x5117de(0xe6)](_0x73a2b2[_0x5117de(0xfe)]))throw new ValidationError(_0x5117de(0xe5)+_0x73a2b2[_0x5117de(0xea)]);if(_0x398d15[_0x5117de(0x113)](_0x73a2b2[_0x5117de(0xea)]))throw new ConflictError(_0x5117de(0x12e)+_0x73a2b2[_0x5117de(0xea)]);_0x398d15[_0x5117de(0xdb)](_0x73a2b2[_0x5117de(0xea)],{..._0x73a2b2,'source':_0x56cac8[_0x5117de(0x134)]});}}async function _0x5c18fb(_0x28e682){const _0x4851fc=_0xb891ab,_0xbd36ff={'WcPvG':function(_0x555f12,_0x15b0c0){return _0x555f12(_0x15b0c0);},'ehPWC':_0x56cac8[_0x4851fc(0x134)]};if(_0x56cac8[_0x4851fc(0x141)](_0x56cac8[_0x4851fc(0x12c)],_0x56cac8[_0x4851fc(0x12c)]))for(const _0x57a586 of _0x3423a7[_0x4851fc(0xe6)](_0x3fa13c)?_0x312a73:[_0x3617d3]){HpgMwZ[_0x4851fc(0x126)](_0x58077c,_0x57a586[_0x4851fc(0xea)]);if(!_0x1448d2[_0x4851fc(0xe6)](_0x57a586[_0x4851fc(0xfe)]))throw new _0x52df87(_0x4851fc(0xe5)+_0x57a586[_0x4851fc(0xea)]);if(_0x1a58bc[_0x4851fc(0x113)](_0x57a586[_0x4851fc(0xea)]))throw new _0xeba20b(_0x4851fc(0x12e)+_0x57a586[_0x4851fc(0xea)]);_0x1030fa[_0x4851fc(0xdb)](_0x57a586[_0x4851fc(0xea)],{..._0x57a586,'source':HpgMwZ[_0x4851fc(0xe0)]});}else{_0x36c77d(_0x28e682);const _0x51e560=_0x398d15[_0x4851fc(0xe3)](_0x28e682);if(_0x51e560){if(_0x56cac8[_0x4851fc(0xff)]!==_0x56cac8[_0x4851fc(0xff)])throw new _0x1c2dcd(_0x56cac8[_0x4851fc(0x13a)]);else return _0x51e560[_0x4851fc(0xfe)];}const _0x3591f9=await _0x56cac8[_0x4851fc(0xf5)](_0x47b3fd);if(!_0x3591f9)throw new NotFoundError(_0x56cac8[_0x4851fc(0x125)]);if(!_0x561a54){if(_0x56cac8[_0x4851fc(0x12f)](_0x56cac8[_0x4851fc(0xfd)],_0x56cac8[_0x4851fc(0xf2)]))!_0x455aff[_0x4851fc(0x113)](_0x51ec35[_0x4851fc(0xea)])&&_0x337740[_0x4851fc(0xeb)](_0x5f1d18);else throw new Error(_0x56cac8[_0x4851fc(0x123)]);}const _0x5ecd3e=await _0x561a54[_0x4851fc(0xe7)](_0x4851fc(0x105),[_0x28e682]);if(!_0x5ecd3e[_0x4851fc(0x10b)][_0x4851fc(0x119)]){if(_0x56cac8[_0x4851fc(0xdf)](_0x56cac8[_0x4851fc(0x128)],_0x56cac8[_0x4851fc(0x11b)]))throw new NotFoundError(_0x4851fc(0x139)+_0x28e682);else return _0x4b0af4;}const _0x10dac8=_0x5ecd3e[_0x4851fc(0x10b)];return _0x398d15[_0x4851fc(0xdb)](_0x28e682,{'code':_0x28e682,'name':_0x28e682,'items':_0x10dac8,'source':_0x56cac8[_0x4851fc(0x13f)]}),_0x10dac8;}}async function _0x43072d(_0x24f5a5,_0x2ff862){const _0x276fdf=_0xb891ab;_0x56cac8[_0x276fdf(0x13c)](_0x36c77d,_0x24f5a5);if(!Array[_0x276fdf(0xe6)](_0x2ff862))throw new ValidationError(_0x276fdf(0xed));const _0x3a4e4e=await _0x56cac8[_0x276fdf(0xf5)](_0x47b3fd);if(!_0x3a4e4e){if(_0x56cac8[_0x276fdf(0x13b)](_0x276fdf(0x129),_0x56cac8[_0x276fdf(0x10d)]))throw new NotFoundError(_0x276fdf(0xe9));else{if(!_0x437922[_0x276fdf(0xf7)](_0x4796c4))throw new _0x17340d(_0x276fdf(0x118)+_0x406dc3);}}if(!_0x561a54)throw new Error(_0x56cac8[_0x276fdf(0x123)]);const _0x1f7988=await _0x561a54[_0x276fdf(0xf9)]();try{await _0x1f7988[_0x276fdf(0xe7)](_0x56cac8[_0x276fdf(0x107)]);const _0x1984ac=await _0x1f7988[_0x276fdf(0xe7)](_0x276fdf(0xfc),[_0x24f5a5,_0x24f5a5,_0x56cac8[_0x276fdf(0xda)],_0x56cac8[_0x276fdf(0xe4)],!![]]),_0x142909=_0x1984ac[_0x276fdf(0x10b)][0x0]['id'];await _0x1f7988[_0x276fdf(0xe7)](_0x56cac8[_0x276fdf(0x143)],[_0x142909]);for(const _0x562e3b of _0x2ff862){await _0x1f7988[_0x276fdf(0xe7)](_0x276fdf(0x11c),[_0x142909,_0x562e3b[_0x276fdf(0xea)],_0x562e3b[_0x276fdf(0x100)],_0x562e3b[_0x276fdf(0x112)]??null]);}await _0x1f7988[_0x276fdf(0xe7)](_0x276fdf(0x109));}catch(_0x3af3dc){await _0x1f7988[_0x276fdf(0xe7)](_0x276fdf(0xdd));throw _0x3af3dc;}finally{if(_0x56cac8[_0x276fdf(0x12a)]!==_0x56cac8[_0x276fdf(0x12a)])throw new _0x3614fa(_0x276fdf(0xe9));else _0x1f7988[_0x276fdf(0x10f)]();}_0x56cac8[_0x276fdf(0x138)](_0x3f4696,_0x24f5a5);}function _0x3f4696(_0x3ad1a5){const _0x556fe8=_0xb891ab;return _0x56cac8[_0x556fe8(0x133)](_0x36c77d,_0x3ad1a5),_0x398d15[_0x556fe8(0x120)](_0x3ad1a5);}async function _0x4cf0a5(){const _0x255d98=_0xb891ab,_0x4e2290={};_0x4e2290[_0x255d98(0x121)]=_0x56cac8[_0x255d98(0x125)];const _0x19183f=_0x4e2290;if(_0x56cac8[_0x255d98(0x102)](_0x56cac8[_0x255d98(0xfb)],_0x56cac8[_0x255d98(0xfb)])){const _0x327065=[..._0x398d15[_0x255d98(0xf1)]()][_0x255d98(0xf6)](({code:_0x3ca3f3,name:_0x598539,source:_0x5f2811})=>({'code':_0x3ca3f3,'name':_0x598539??_0x3ca3f3,'source':_0x5f2811})),_0x141126=await _0x56cac8[_0x255d98(0x124)](_0x47b3fd);if(!_0x141126){if(_0x56cac8[_0x255d98(0x137)]!==_0x255d98(0xf4))throw new _0x547bbd(lpYOQV[_0x255d98(0x121)]);else return _0x327065;}if(!_0x561a54)throw new Error(_0x56cac8[_0x255d98(0x123)]);const _0x5d659b=await _0x561a54[_0x255d98(0xe7)](_0x255d98(0x104));for(const _0x32a1c2 of _0x5d659b[_0x255d98(0x10b)]){!_0x398d15[_0x255d98(0x113)](_0x32a1c2[_0x255d98(0xea)])&&_0x327065[_0x255d98(0xeb)](_0x32a1c2);}return _0x327065;}else throw new _0x18dffa(_0x255d98(0xe5)+_0x1af5ff[_0x255d98(0xea)]);}_0x276625(dictionaries);const _0x2b6dff={};return _0x2b6dff[_0xb891ab(0xe1)]=_0x276625,_0x2b6dff[_0xb891ab(0xe3)]=_0x5c18fb,_0x2b6dff[_0xb891ab(0x117)]=_0x43072d,_0x2b6dff[_0xb891ab(0xf0)]=_0x3f4696,_0x2b6dff[_0xb891ab(0xee)]=_0x4cf0a5,_0x2b6dff;}function _0x374b(_0x349a8a,_0x244179){_0x349a8a=_0x349a8a-0xd8;const _0x2401ae=_0x2401();let _0x374b1b=_0x2401ae[_0x349a8a];return _0x374b1b;}function _0x2401(){const _0xdb12da=['DwbOh','MJMAs','10079260izRjRf','UvLcB','HUQrq','dwOUR','Dictionary\x20not\x20found:\x20','YiQVT','JHEqz','eHrFa','3149755ngOuBl','bpTvj','Dvlbc','Arbsn','NCQSi','empty\x20pg','nFhuG','19SuNYQZ','table_name','oSoon','set','jQFRZ','ROLLBACK','dmevZ','uaDnv','ehPWC','register','static','get','tWpNy','Invalid\x20dictionary\x20items:\x20','isArray','query','usDVd','Dictionary\x20table\x20not\x20found','code','push','RxICd','Dictionary\x20items\x20must\x20be\x20an\x20array','list','sdjQi','clear','values','LOwvl','17702OzIeDH','jgXdB','wtCiI','map','test','euMth','connect','fcore','ypYqZ','\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','dsDzA','items','vvEnH','name','27ZLVlRg','oPJjE','LaZjl','\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','\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','EEYcM','ssjAw','cMwhG','COMMIT','HyLgp','rows','\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','SdUCn','hHCPF','release','then','BEGIN','parentId','has','custom','DELETE\x20FROM\x20admin.dictionary_items\x20WHERE\x20dictionary_id\x20=\x20$1','391232hXYGpQ','put','Invalid\x20dictionary\x20name:\x20','length','6770133XxnSPV','TyxwI','\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','ceYch','VYwtW','PAZMV','delete','dRXHs','PBJBO','nQlaG','dKLsP','eLKzC','WcPvG','database','XjpRh','OpEXG','sDFlF','3233106hrMzfo','WNDpy','35SqbvZH','Dictionary\x20already\x20registered:\x20','RZGTR','hzOlI','dictionaries','27308jQgCOo'];_0x2401=function(){return _0xdb12da;};return _0x2401();}
|
|
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
|
-
(function(_0x47934e,_0x2b2bb0){const _0x83ed4e=_0x5f14,_0x56b211=_0x47934e();while(!![]){try{const _0x6140bb=parseInt(_0x83ed4e(0x1b4))/0x1+parseInt(_0x83ed4e(0x1e6))/0x2*(-parseInt(_0x83ed4e(0x19f))/0x3)+-parseInt(_0x83ed4e(0x1bb))/0x4*(-parseInt(_0x83ed4e(0x19a))/0x5)+-parseInt(_0x83ed4e(0x190))/0x6*(-parseInt(_0x83ed4e(0x1b2))/0x7)+-parseInt(_0x83ed4e(0x1bf))/0x8*(parseInt(_0x83ed4e(0x1b1))/0x9)+-parseInt(_0x83ed4e(0x1e0))/0xa+parseInt(_0x83ed4e(0x18e))/0xb;if(_0x6140bb===_0x2b2bb0)break;else _0x56b211['push'](_0x56b211['shift']());}catch(_0x5a1dd5){_0x56b211['push'](_0x56b211['shift']());}}}(_0x210b,0x7e561));import{DeleteObjectCommand,GetObjectCommand,HeadObjectCommand,PutObjectCommand,S3Client}from'@aws-sdk/client-s3';import _0x144b1c from'node:crypto';import{ValidationError}from'../errors.js';function _0x210b(){const _0x59fae3=['uTDwt','EpuAg','iTnne','ljDRe','10507959ayJcGW','YsEme','1074XoCGEf','region','name','isInteger','BFODH','ssvaZ','concat','alloc','Fitlf','utf8','1266630hYzndy','RQSnh','LFBcR','transformToByteArray','tokenSecret','21627TrcCxy','Body','hFcvg','bucket','parse','TavdZ','wjXjb','credentials','JgriG','secretKey','us-east-1','endpoint','createHmac','Invalid\x20file\x20path','httpStatusCode','vgHig','faXDq','secretAccessKey','1026soMxYD','1085FvuCaI','NCGdo','802152eKRGpN','send','accessKeyId','NCjRs','WcTAv','length','OkiKX','8Bfznnu','from','FVAXw','RdiYb','67528zrHjOw','split','CtrGG','arOcd','tokenTtl','mIjIi','exp','TTkRA','yGibs','Invalid\x20file\x20token','ESHmY','hfGWK','aHECB','replace','stringify','fUOAV','LYBZn','now','iTRDE','vgoYk','fBFpt','DLGct','floor','WRltn','NotFound','toString','accessKey','KDTOD','timingSafeEqual','startsWith','folder','qLLHM','update','1416340HqAqrt','includes','digest','tNBGP','wAaiS','base64url','186xseOSi','utLiH','File\x20token\x20expired','forcePathStyle','push','MbWZU','$metadata','oDvCu','YJnLC','QPrwR','NAoUV','function','HsLKB','sha256','randomBytes','tEvMo','hex'];_0x210b=function(){return _0x59fae3;};return _0x210b();}import{UnauthorizedError}from'../errors.js';function keyFor(_0x31cace,_0x1ee115){const _0x515229=_0x5f14,_0x26df3e={};_0x26df3e[_0x515229(0x1de)]=function(_0x5ed57e,_0x34877b){return _0x5ed57e/_0x34877b;},_0x26df3e[_0x515229(0x18c)]=_0x515229(0x1e5),_0x26df3e[_0x515229(0x1d4)]=_0x515229(0x1f3),_0x26df3e[_0x515229(0x1ae)]=function(_0x31ab8d,_0x189518){return _0x31ab8d!==_0x189518;},_0x26df3e[_0x515229(0x195)]=_0x515229(0x1cf),_0x26df3e[_0x515229(0x1d6)]=function(_0x569dcc,_0x3c894c){return _0x569dcc??_0x3c894c;};const _0x1afa3f=_0x26df3e;if(!_0x1ee115||_0x1ee115[_0x515229(0x1dc)]('/')||_0x1ee115[_0x515229(0x1e1)]('..')){if(_0x1afa3f[_0x515229(0x1ae)](_0x1afa3f[_0x515229(0x195)],_0x1afa3f[_0x515229(0x195)])){const _0x291f1d={'p':_0x12c47b,'exp':_0x4f6778[_0x515229(0x1d5)](_0x1afa3f[_0x515229(0x1de)](_0x3a48ac[_0x515229(0x1d0)](),0x3e8))+_0x246325},_0x511638=_0x4586f6[_0x515229(0x1bc)](_0x24bccb[_0x515229(0x1cd)](_0x291f1d))[_0x515229(0x1d8)](_0x1afa3f[_0x515229(0x18c)]),_0x316bbf=_0x5099ad[_0x515229(0x1ab)](_0x1afa3f[_0x515229(0x1d4)],_0x3ecc3e)[_0x515229(0x1df)](_0x511638)[_0x515229(0x1e2)](_0x1afa3f[_0x515229(0x18c)]);return _0x511638+'.'+_0x316bbf;}else throw new ValidationError(_0x515229(0x1ac));}const _0x2f6385=_0x1ee115[_0x515229(0x1cc)](/\\/g,'/')[_0x515229(0x1cc)](/^\/+/,''),_0x4455df=_0x1afa3f[_0x515229(0x1d6)](_0x31cace,'')[_0x515229(0x1cc)](/^\/+|\/+$/g,'');return _0x4455df?_0x4455df+'/'+_0x2f6385:_0x2f6385;}function _0x5f14(_0x17ff46,_0x355064){_0x17ff46=_0x17ff46-0x187;const _0x210b94=_0x210b();let _0x5f14b5=_0x210b94[_0x17ff46];return _0x5f14b5;}async function bodyToBuffer(_0x4ebc31){const _0x52d5e5=_0x5f14,_0x1ba03c={};_0x1ba03c[_0x52d5e5(0x188)]=function(_0x4ae146,_0x2d7e87){return _0x4ae146===_0x2d7e87;},_0x1ba03c[_0x52d5e5(0x1c2)]=function(_0x228437,_0x5131a8){return _0x228437??_0x5131a8;},_0x1ba03c[_0x52d5e5(0x1c7)]=_0x52d5e5(0x1f2),_0x1ba03c[_0x52d5e5(0x1a7)]=_0x52d5e5(0x19b),_0x1ba03c[_0x52d5e5(0x1e4)]=function(_0x1f054e,_0x136e5c){return _0x1f054e===_0x136e5c;},_0x1ba03c[_0x52d5e5(0x1ba)]=function(_0x2ea647,_0x5222f1){return _0x2ea647===_0x5222f1;},_0x1ba03c[_0x52d5e5(0x1da)]=_0x52d5e5(0x1ca),_0x1ba03c[_0x52d5e5(0x1b7)]=_0x52d5e5(0x1eb);const _0x32c7be=_0x1ba03c;if(!_0x4ebc31){if(_0x32c7be[_0x52d5e5(0x188)](_0x32c7be[_0x52d5e5(0x1c7)],_0x32c7be[_0x52d5e5(0x1a7)])){const _0x4c8b5e=_0x19f6e2;if(_0x32c7be[_0x52d5e5(0x188)](_0x4c8b5e[_0x52d5e5(0x1ec)]?.[_0x52d5e5(0x1ad)],0x194)||_0x4c8b5e[_0x52d5e5(0x192)]===_0x52d5e5(0x1d7))return![];throw _0x552f83;}else return Buffer[_0x52d5e5(0x197)](0x0);}const _0x2e3787=_0x4ebc31;if(_0x32c7be[_0x52d5e5(0x1e4)](typeof _0x2e3787[_0x52d5e5(0x19d)],_0x52d5e5(0x1f1))){if(_0x32c7be[_0x52d5e5(0x1ba)](_0x32c7be[_0x52d5e5(0x1da)],_0x32c7be[_0x52d5e5(0x1da)]))return Buffer[_0x52d5e5(0x1bc)](await _0x2e3787[_0x52d5e5(0x19d)]());else{if(!_0x252815||_0x20cbb4[_0x52d5e5(0x1dc)]('/')||_0x28b4f8[_0x52d5e5(0x1e1)]('..'))throw new _0x3cee0a(_0x52d5e5(0x1ac));const _0x5adbbd=_0x34030d[_0x52d5e5(0x1cc)](/\\/g,'/')[_0x52d5e5(0x1cc)](/^\/+/,''),_0x3b2e77=fgcpNu[_0x52d5e5(0x1c2)](_0x1122be,'')[_0x52d5e5(0x1cc)](/^\/+|\/+$/g,'');return _0x3b2e77?_0x3b2e77+'/'+_0x5adbbd:_0x5adbbd;}}const _0x569fd0=[];for await(const _0x5bccbf of _0x4ebc31){_0x32c7be[_0x52d5e5(0x1ba)](_0x32c7be[_0x52d5e5(0x1b7)],_0x32c7be[_0x52d5e5(0x1b7)])?_0x569fd0[_0x52d5e5(0x1ea)](Buffer[_0x52d5e5(0x1bc)](_0x5bccbf)):_0x3380c3[_0x52d5e5(0x1ea)](_0x2c5aec[_0x52d5e5(0x1bc)](_0x3c4f66));}return Buffer[_0x52d5e5(0x196)](_0x569fd0);}export function createFileS3(_0xa1d608){const _0x129dd0=_0x5f14,_0xc872d6={'oDvCu':function(_0x5f4765,_0x26b514){return _0x5f4765!==_0x26b514;},'aHECB':_0x129dd0(0x1bd),'mIjIi':_0x129dd0(0x1e3),'TTkRA':function(_0x378a8b,_0x5e9d8a){return _0x378a8b(_0x5e9d8a);},'BFODH':function(_0x3448ed,_0xa9ccf1){return _0x3448ed(_0xa9ccf1);},'ESHmY':function(_0x3752c4,_0x53b464){return _0x3752c4(_0x53b464);},'faXDq':function(_0x557ceb,_0x35d012){return _0x557ceb===_0x35d012;},'fUOAV':function(_0x284b56,_0x844cb0){return _0x284b56+_0x844cb0;},'iTRDE':function(_0x38df49,_0x304ee0){return _0x38df49/_0x304ee0;},'hFcvg':_0x129dd0(0x1f3),'YsEme':_0x129dd0(0x1e5),'YJnLC':_0x129dd0(0x199),'WcTAv':_0x129dd0(0x1e8),'QPrwR':_0x129dd0(0x1d2),'NCGdo':_0x129dd0(0x1e7),'CtrGG':_0x129dd0(0x18a),'ljDRe':_0x129dd0(0x1be),'Fitlf':_0x129dd0(0x1c8),'wjXjb':function(_0x59ccf4,_0x29da33){return _0x59ccf4===_0x29da33;},'EpuAg':_0x129dd0(0x1a4)},_0x196bd2=_0xa1d608[_0x129dd0(0x19e)]??process.env.FILE_TOKEN_SECRET??_0x144b1c[_0x129dd0(0x187)](0x20)[_0x129dd0(0x1d8)](_0x129dd0(0x189)),_0x989345={};_0x989345[_0x129dd0(0x1aa)]=_0xa1d608[_0x129dd0(0x1aa)],_0x989345[_0x129dd0(0x191)]=_0xa1d608[_0x129dd0(0x191)]??_0x129dd0(0x1a9),_0x989345[_0x129dd0(0x1e9)]=_0xa1d608[_0x129dd0(0x1e9)]??!![],_0x989345[_0x129dd0(0x1a6)]=_0xa1d608[_0x129dd0(0x1b6)]||_0xa1d608[_0x129dd0(0x1d9)]?{'accessKeyId':_0xa1d608[_0x129dd0(0x1b6)]??_0xa1d608[_0x129dd0(0x1d9)],'secretAccessKey':_0xa1d608[_0x129dd0(0x1b0)]??_0xa1d608[_0x129dd0(0x1a8)]}:undefined;const _0x481d29=new S3Client(_0x989345),_0xeddaba=_0x4111d7=>keyFor(_0xa1d608[_0x129dd0(0x1dd)],_0x4111d7);return{async 'put'(_0x80079,_0x27ba71){const _0x4ec99c=_0x129dd0;if(_0xc872d6[_0x4ec99c(0x1ed)](_0xc872d6[_0x4ec99c(0x1cb)],_0xc872d6[_0x4ec99c(0x1c4)]))await _0x481d29[_0x4ec99c(0x1b5)](new PutObjectCommand({'Bucket':_0xa1d608[_0x4ec99c(0x1a2)],'Key':_0xc872d6[_0x4ec99c(0x1c6)](_0xeddaba,_0x80079),'Body':_0x27ba71}));else return![];},async 'get'(_0xb1f30d){const _0x3d2c55=_0x129dd0,_0x215144=await _0x481d29[_0x3d2c55(0x1b5)](new GetObjectCommand({'Bucket':_0xa1d608[_0x3d2c55(0x1a2)],'Key':_0xc872d6[_0x3d2c55(0x194)](_0xeddaba,_0xb1f30d)}));return _0xc872d6[_0x3d2c55(0x1c9)](bodyToBuffer,_0x215144[_0x3d2c55(0x1a0)]);},async 'exists'(_0x255949){const _0x3c13a9=_0x129dd0;try{return await _0x481d29[_0x3c13a9(0x1b5)](new HeadObjectCommand({'Bucket':_0xa1d608[_0x3c13a9(0x1a2)],'Key':_0xc872d6[_0x3c13a9(0x1c9)](_0xeddaba,_0x255949)})),!![];}catch(_0x20a4e4){const _0x1fa3b5=_0x20a4e4;if(_0xc872d6[_0x3c13a9(0x1af)](_0x1fa3b5[_0x3c13a9(0x1ec)]?.[_0x3c13a9(0x1ad)],0x194)||_0xc872d6[_0x3c13a9(0x1af)](_0x1fa3b5[_0x3c13a9(0x192)],_0x3c13a9(0x1d7)))return![];throw _0x20a4e4;}},async 'delete'(_0x42aa01){const _0x1ffb82=_0x129dd0;await _0x481d29[_0x1ffb82(0x1b5)](new DeleteObjectCommand({'Bucket':_0xa1d608[_0x1ffb82(0x1a2)],'Key':_0xc872d6[_0x1ffb82(0x1c9)](_0xeddaba,_0x42aa01)}));},'create'(_0x34a6f0,_0x5166e9=_0xa1d608[_0x129dd0(0x1c3)]??0xe10){const _0x37d438=_0x129dd0;if(_0xc872d6[_0x37d438(0x1af)](_0x37d438(0x1d3),_0x37d438(0x1d3))){const _0x11056c={'p':_0x34a6f0,'exp':_0xc872d6[_0x37d438(0x1ce)](Math[_0x37d438(0x1d5)](_0xc872d6[_0x37d438(0x1d1)](Date[_0x37d438(0x1d0)](),0x3e8)),_0x5166e9)},_0x2ef074=Buffer[_0x37d438(0x1bc)](JSON[_0x37d438(0x1cd)](_0x11056c))[_0x37d438(0x1d8)](_0x37d438(0x1e5)),_0xf39503=_0x144b1c[_0x37d438(0x1ab)](_0xc872d6[_0x37d438(0x1a1)],_0x196bd2)[_0x37d438(0x1df)](_0x2ef074)[_0x37d438(0x1e2)](_0x37d438(0x1e5));return _0x2ef074+'.'+_0xf39503;}else throw new _0x3bdbf1(_0x37d438(0x1ac));},'verify'(_0xa7c70a){const _0x3d6fed=_0x129dd0,_0x3749dd={};_0x3749dd[_0x3d6fed(0x1f0)]=_0x3d6fed(0x1c8),_0x3749dd[_0x3d6fed(0x19c)]=_0xc872d6[_0x3d6fed(0x1b8)];const _0x437b83=_0x3749dd;if(_0xc872d6[_0x3d6fed(0x1af)](_0xc872d6[_0x3d6fed(0x1ef)],_0xc872d6[_0x3d6fed(0x1b3)]))_0x1dcd58=_0x26eb4c[_0x3d6fed(0x1a3)](_0x57fe90[_0x3d6fed(0x1bc)](_0x15f390,_0xc872d6[_0x3d6fed(0x18f)])[_0x3d6fed(0x1d8)](_0xc872d6[_0x3d6fed(0x1ee)]));else{const [_0x25a1d0,_0xa8ea5f]=_0xa7c70a[_0x3d6fed(0x1c0)]('.');if(!_0x25a1d0||!_0xa8ea5f){if(_0xc872d6[_0x3d6fed(0x1c1)]!==_0x3d6fed(0x18a))throw new _0x15e055(_0x437b83[_0x3d6fed(0x1f0)]);else throw new UnauthorizedError(_0x3d6fed(0x1c8));}const _0x2df351=_0x144b1c[_0x3d6fed(0x1ab)](_0xc872d6[_0x3d6fed(0x1a1)],_0x196bd2)[_0x3d6fed(0x1df)](_0x25a1d0)[_0x3d6fed(0x1e2)](),_0x579789=Buffer[_0x3d6fed(0x1bc)](_0xa8ea5f,_0xc872d6[_0x3d6fed(0x18f)]);if(_0x2df351[_0x3d6fed(0x1b9)]!==_0x579789[_0x3d6fed(0x1b9)]||!_0x144b1c[_0x3d6fed(0x1db)](_0x2df351,_0x579789)){if(_0xc872d6[_0x3d6fed(0x18d)]!==_0xc872d6[_0x3d6fed(0x18d)])return _0x42e839[_0x3d6fed(0x197)](0x0);else throw new UnauthorizedError(_0xc872d6[_0x3d6fed(0x198)]);}let _0x422eed;try{_0x422eed=JSON[_0x3d6fed(0x1a3)](Buffer[_0x3d6fed(0x1bc)](_0x25a1d0,_0x3d6fed(0x1e5))[_0x3d6fed(0x1d8)](_0xc872d6[_0x3d6fed(0x1ee)]));}catch{if(_0xc872d6[_0x3d6fed(0x1a5)](_0xc872d6[_0x3d6fed(0x18b)],_0xc872d6[_0x3d6fed(0x18b)]))throw new UnauthorizedError(_0xc872d6[_0x3d6fed(0x198)]);else throw new _0x3d9f6f(_0x437b83[_0x3d6fed(0x19c)]);}if(!_0x422eed['p']||!Number[_0x3d6fed(0x193)](_0x422eed[_0x3d6fed(0x1c5)]))throw new UnauthorizedError(_0x3d6fed(0x1c8));if(_0x422eed[_0x3d6fed(0x1c5)]<Math[_0x3d6fed(0x1d5)](_0xc872d6[_0x3d6fed(0x1d1)](Date[_0x3d6fed(0x1d0)](),0x3e8)))throw new UnauthorizedError(_0xc872d6[_0x3d6fed(0x1b8)]);return _0x422eed;}}};}
|
|
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.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC"}
|
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
|
-
const
|
|
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');}}
|