@opengis/fastify-table 2.0.106 → 2.0.108
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.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/script/adduser +15 -0
- package/dist/script/dump.js +176 -0
- package/dist/script/migrate.js +25 -0
- package/dist/server/plugins/auth/funcs/verifyPassword.d.ts.map +1 -1
- package/dist/server/plugins/auth/funcs/verifyPassword.js +3 -1
- package/dist/server/plugins/crud/funcs/dataInsert.js +2 -2
- package/dist/server/plugins/crud/funcs/dataUpdate.d.ts.map +1 -1
- package/dist/server/plugins/crud/funcs/dataUpdate.js +9 -6
- package/dist/server/plugins/crud/funcs/validateData.js +1 -1
- package/dist/server/plugins/file/providers/fs.js +2 -2
- package/dist/server/plugins/file/providers/s3/funcs/downloadFile.d.ts.map +1 -1
- package/dist/server/plugins/file/providers/s3/funcs/downloadFile.js +1 -2
- package/dist/server/plugins/file/providers/s3/funcs/fileExists.d.ts.map +1 -1
- package/dist/server/plugins/file/providers/s3/funcs/fileExists.js +1 -2
- package/dist/server/plugins/file/providers/s3/funcs/uploadFile.d.ts.map +1 -1
- package/dist/server/plugins/file/providers/s3/funcs/uploadFile.js +1 -2
- package/dist/server/plugins/file/providers/s3/index.js +4 -4
- package/dist/server/plugins/logger/getLogger.d.ts.map +1 -1
- package/dist/server/plugins/logger/getLogger.js +14 -11
- package/dist/server/plugins/logger/index.d.ts.map +1 -1
- package/dist/server/plugins/logger/index.js +5 -4
- package/dist/server/plugins/migration/exec.migrations.js +6 -6
- package/dist/server/plugins/pg/funcs/getMeta.d.ts.map +1 -1
- package/dist/server/plugins/pg/funcs/getMeta.js +3 -5
- package/dist/server/plugins/pg/funcs/getPG.d.ts.map +1 -1
- package/dist/server/plugins/pg/funcs/getPG.js +2 -1
- package/dist/server/plugins/pg/funcs/getPGAsync.js +2 -2
- package/dist/server/plugins/pg/funcs/init.d.ts +1 -1
- package/dist/server/plugins/pg/funcs/init.d.ts.map +1 -1
- package/dist/server/plugins/pg/funcs/init.js +43 -36
- package/dist/server/plugins/pg/funcs/pool.d.ts.map +1 -1
- package/dist/server/plugins/pg/funcs/pool.js +12 -18
- package/dist/server/plugins/pg/index.d.ts.map +1 -1
- package/dist/server/plugins/pg/index.js +3 -2
- package/dist/server/plugins/redis/funcs/getRedis.d.ts.map +1 -1
- package/dist/server/plugins/redis/funcs/getRedis.js +7 -5
- package/dist/server/plugins/redis/index.d.ts.map +1 -1
- package/dist/server/plugins/redis/index.js +4 -1
- package/dist/server/plugins/sqlite/index.d.ts.map +1 -1
- package/dist/server/plugins/sqlite/index.js +7 -3
- package/dist/server/plugins/table/funcs/getFilter.d.ts +1 -1
- package/dist/server/plugins/table/funcs/getFilter.d.ts.map +1 -1
- package/dist/server/plugins/table/funcs/getFilter.js +14 -1
- package/dist/server/plugins/table/funcs/getSelectMeta.d.ts.map +1 -1
- package/dist/server/plugins/table/funcs/getSelectMeta.js +2 -4
- package/dist/server/plugins/table/funcs/gisIRColumn.d.ts +2 -2
- package/dist/server/plugins/table/funcs/gisIRColumn.js +1 -1
- package/dist/server/plugins/upload/finishUpload.d.ts +9 -0
- package/dist/server/plugins/upload/finishUpload.d.ts.map +1 -0
- package/dist/server/plugins/upload/finishUpload.js +33 -0
- package/dist/server/plugins/upload/getUploadStatus.d.ts +5 -0
- package/dist/server/plugins/upload/getUploadStatus.d.ts.map +1 -0
- package/dist/server/plugins/upload/getUploadStatus.js +36 -0
- package/dist/server/plugins/upload/index.d.ts +6 -0
- package/dist/server/plugins/upload/index.d.ts.map +1 -0
- package/dist/server/plugins/upload/index.js +12 -0
- package/dist/server/plugins/upload/startUpload.d.ts +8 -0
- package/dist/server/plugins/upload/startUpload.d.ts.map +1 -0
- package/dist/server/plugins/upload/startUpload.js +53 -0
- package/dist/server/plugins/upload/uploadChunk.d.ts +9 -0
- package/dist/server/plugins/upload/uploadChunk.d.ts.map +1 -0
- package/dist/server/plugins/upload/uploadChunk.js +47 -0
- package/dist/server/plugins/util/funcs/unflattenObject.d.ts.map +1 -1
- package/dist/server/plugins/util/funcs/unflattenObject.js +5 -3
- package/dist/server/routes/access/controllers/access.group.d.ts +2 -2
- package/dist/server/routes/access/controllers/access.group.d.ts.map +1 -1
- package/dist/server/routes/access/controllers/access.group.js +0 -1
- package/dist/server/routes/access/controllers/access.group.post.d.ts +2 -2
- package/dist/server/routes/access/controllers/access.group.post.d.ts.map +1 -1
- package/dist/server/routes/access/controllers/access.group.post.js +0 -1
- package/dist/server/routes/auth/controllers/2factor/providers/totp.d.ts.map +1 -1
- package/dist/server/routes/auth/controllers/2factor/providers/totp.js +1 -1
- package/dist/server/routes/auth/controllers/core/registration.d.ts +1 -1
- package/dist/server/routes/auth/controllers/core/registration.d.ts.map +1 -1
- package/dist/server/routes/auth/controllers/core/registration.js +37 -9
- package/dist/server/routes/auth/controllers/core/updateUserInfo.js +1 -1
- package/dist/server/routes/auth/controllers/jwt/authorize.js +5 -5
- package/dist/server/routes/auth/controllers/jwt/token.d.ts.map +1 -1
- package/dist/server/routes/auth/controllers/jwt/token.js +10 -12
- package/dist/server/routes/cron/controllers/cronApi.d.ts +1 -1
- package/dist/server/routes/cron/controllers/cronApi.d.ts.map +1 -1
- package/dist/server/routes/cron/controllers/cronApi.js +5 -3
- package/dist/server/routes/crud/controllers/insert.d.ts +1 -4
- package/dist/server/routes/crud/controllers/insert.d.ts.map +1 -1
- package/dist/server/routes/crud/controllers/insert.js +24 -16
- package/dist/server/routes/crud/controllers/table.d.ts.map +1 -1
- package/dist/server/routes/crud/controllers/table.js +13 -6
- package/dist/server/routes/crud/controllers/update.d.ts.map +1 -1
- package/dist/server/routes/crud/controllers/update.js +23 -15
- package/dist/server/routes/file/controllers/delete.d.ts +1 -15
- package/dist/server/routes/file/controllers/delete.d.ts.map +1 -1
- package/dist/server/routes/file/controllers/delete.js +13 -20
- package/dist/server/routes/file/controllers/download.d.ts +2 -2
- package/dist/server/routes/file/controllers/download.d.ts.map +1 -1
- package/dist/server/routes/file/controllers/download.js +39 -30
- package/dist/server/routes/file/controllers/files.d.ts +2 -1
- package/dist/server/routes/file/controllers/files.d.ts.map +1 -1
- package/dist/server/routes/file/controllers/files.js +15 -11
- package/dist/server/routes/file/controllers/resize.d.ts +1 -2
- package/dist/server/routes/file/controllers/resize.d.ts.map +1 -1
- package/dist/server/routes/file/controllers/resize.js +17 -6
- package/dist/server/routes/file/controllers/upload.d.ts.map +1 -1
- package/dist/server/routes/file/controllers/upload.js +17 -16
- package/dist/server/routes/file/controllers/uploadImage.d.ts +11 -13
- package/dist/server/routes/file/controllers/uploadImage.d.ts.map +1 -1
- package/dist/server/routes/file/controllers/uploadImage.js +13 -15
- package/dist/server/routes/logger/controllers/logger.file.js +1 -1
- package/dist/server/routes/menu/controllers/interfaces.d.ts +1 -7
- package/dist/server/routes/menu/controllers/interfaces.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/card.d.ts +1 -1
- package/dist/server/routes/table/controllers/card.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/card.js +15 -9
- package/dist/server/routes/table/controllers/filter.d.ts +1 -1
- package/dist/server/routes/table/controllers/filter.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/filter.js +9 -2
- package/dist/server/routes/table/controllers/form.d.ts +1 -1
- package/dist/server/routes/table/controllers/form.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/form.js +8 -5
- package/dist/server/routes/table/controllers/search.d.ts +1 -1
- package/dist/server/routes/table/controllers/search.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/search.js +5 -6
- package/dist/server/routes/table/controllers/suggest.d.ts +1 -1
- package/dist/server/routes/table/controllers/suggest.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/suggest.js +30 -15
- package/dist/server/routes/table/functions/getData.d.ts +1 -1
- package/dist/server/routes/table/functions/getData.d.ts.map +1 -1
- package/dist/server/routes/table/functions/getData.js +60 -45
- package/dist/server/routes/upload/index.d.ts +2 -0
- package/dist/server/routes/upload/index.d.ts.map +1 -0
- package/dist/server/routes/upload/index.js +72 -0
- package/dist/server/types/core.d.ts +7 -1
- package/dist/server/types/core.d.ts.map +1 -1
- package/dist/utils.d.ts +5 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +5 -0
- package/package.json +3 -3
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/* eslint-disable no-console */
|
|
2
|
+
import config from "../../../../config.js";
|
|
2
3
|
import logger from "../../../plugins/logger/getLogger.js";
|
|
3
4
|
import autoIndex from "../../../plugins/pg/funcs/autoIndex.js";
|
|
4
5
|
import getSelect from "../../../plugins/table/funcs/getSelect.js";
|
|
@@ -7,6 +8,7 @@ import pgClients from "../../../plugins/pg/pgClients.js";
|
|
|
7
8
|
import { applyHook } from "../../../../utils.js";
|
|
8
9
|
import getTemplate from "../../../plugins/table/funcs/getTemplate.js";
|
|
9
10
|
import getMeta from "../../../plugins/pg/funcs/getMeta.js";
|
|
11
|
+
const { prefix = "/api" } = config;
|
|
10
12
|
export default async function filterAPI(req, reply, iscalled) {
|
|
11
13
|
const time = Date.now();
|
|
12
14
|
const { params, pg = pgClients.client, user = {}, query = {} } = req;
|
|
@@ -17,13 +19,13 @@ export default async function filterAPI(req, reply, iscalled) {
|
|
|
17
19
|
const loadTable = await getTemplate("table", params.table);
|
|
18
20
|
const { key, table, sql, query: tableQuery, form, extra, filterState, filterCustom, } = hookData || loadTable || {};
|
|
19
21
|
if (!table) {
|
|
20
|
-
return
|
|
22
|
+
return reply.status(404).send({ error: "table not found", code: 404 });
|
|
21
23
|
}
|
|
22
24
|
const { pk: pk1, view } = await getMeta({ pg, table });
|
|
23
25
|
// const pk = pg.pk?.[table] || pg.pk?.[table.replace(/"/g, "")];
|
|
24
26
|
const pk = !pk1 && view ? key : pk1;
|
|
25
27
|
if (!pk) {
|
|
26
|
-
return
|
|
28
|
+
return reply.status(404).send({ error: "table pk not found", code: 404 });
|
|
27
29
|
}
|
|
28
30
|
const sqlTable = sql
|
|
29
31
|
?.filter?.((el) => !el?.disabled && el?.sql?.replace)
|
|
@@ -73,6 +75,11 @@ export default async function filterAPI(req, reply, iscalled) {
|
|
|
73
75
|
title: el.title || el.ua,
|
|
74
76
|
extra: extraColumns.includes(el.id || el.name),
|
|
75
77
|
}));
|
|
78
|
+
(filters || [])
|
|
79
|
+
.filter((el) => el.data)
|
|
80
|
+
.forEach((el) => Object.assign(el, {
|
|
81
|
+
api: `${prefix}/suggest/${table}:${el.id}?sel=${el.data}`,
|
|
82
|
+
}));
|
|
76
83
|
await Promise.all(filters
|
|
77
84
|
.filter((el) => el.id &&
|
|
78
85
|
el.type !== "Autocomplete" &&
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export default function formFunction(req: any): Promise<
|
|
1
|
+
export default function formFunction(req: any, reply: any): Promise<any>;
|
|
2
2
|
//# sourceMappingURL=form.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/form.ts"],"names":[],"mappings":"AAiBA,wBAA8B,YAAY,CAAC,GAAG,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/form.ts"],"names":[],"mappings":"AAiBA,wBAA8B,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,gBAkD9D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { applyHook, getTemplate } from "../../../../utils.js";
|
|
1
|
+
import { applyHook, getTemplate, pgClients } from "../../../../utils.js";
|
|
2
2
|
const q = `select property_key as key, property_json as json, property_int as int,
|
|
3
3
|
property_text as text from admin.properties where 1=1`;
|
|
4
4
|
async function getSettings({ pg }) {
|
|
@@ -8,19 +8,22 @@ async function getSettings({ pg }) {
|
|
|
8
8
|
const data = rows.reduce((acc, curr) => Object.assign(acc, { [curr.key]: curr.json || curr.int || curr.text }), {});
|
|
9
9
|
return data;
|
|
10
10
|
}
|
|
11
|
-
export default async function formFunction(req) {
|
|
11
|
+
export default async function formFunction(req, reply) {
|
|
12
12
|
const time = Date.now();
|
|
13
|
-
const { pg, params, user } = req;
|
|
13
|
+
const { pg = pgClients.client, params, user } = req;
|
|
14
14
|
const hookData = (await applyHook("preForm", {
|
|
15
15
|
form: params?.name,
|
|
16
16
|
user,
|
|
17
17
|
}));
|
|
18
18
|
if (hookData?.message && hookData?.status) {
|
|
19
|
-
|
|
19
|
+
const response = hookData.status >= 400
|
|
20
|
+
? { error: hookData.message, code: hookData.status }
|
|
21
|
+
: hookData.message;
|
|
22
|
+
return reply.status(hookData.status).send(response);
|
|
20
23
|
}
|
|
21
24
|
const form = await getTemplate("form", hookData?.form || params?.name);
|
|
22
25
|
if (!form) {
|
|
23
|
-
return
|
|
26
|
+
return reply.status(404).send({ error: "form not found", code: 404 });
|
|
24
27
|
}
|
|
25
28
|
// replace settings
|
|
26
29
|
const arr = JSON.stringify(form).match(/{{settings.([^}]*)}}/g);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/search.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/search.ts"],"names":[],"mappings":"AAoIA,wBAA8B,MAAM,CAAC,EACnC,EAAqB,EACrB,KAAU,GACX,EAAE,GAAG;;;;;;GAmCL"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { getMeta, metaFormat, getTemplates, getTemplate, handlebarsSync, } from "../../../../utils.js";
|
|
1
|
+
import { getMeta, metaFormat, getTemplates, getTemplate, handlebarsSync, pgClients, } from "../../../../utils.js";
|
|
2
2
|
function sequence(tables, data, fn) {
|
|
3
3
|
return tables.reduce((promise, table) => promise.then(() => fn({
|
|
4
4
|
...data,
|
|
5
5
|
tableName: table.replace(".json", ""),
|
|
6
6
|
})), Promise.resolve());
|
|
7
7
|
}
|
|
8
|
-
async function getData({ pg, tableName, query = {}, maxLimit, res }) {
|
|
8
|
+
async function getData({ pg = pgClients.client, tableName, query = {}, maxLimit, res, }) {
|
|
9
9
|
const loadTable = await getTemplate("table", tableName);
|
|
10
10
|
if (!loadTable) {
|
|
11
|
-
return
|
|
11
|
+
return null;
|
|
12
12
|
}
|
|
13
13
|
const { table, columns, meta } = loadTable;
|
|
14
14
|
const { pk, view } = await getMeta({ pg, table });
|
|
15
15
|
if (!pk && !view) {
|
|
16
|
-
return
|
|
16
|
+
return null;
|
|
17
17
|
}
|
|
18
18
|
const cols = columns.map((el) => el.name || el).join(",");
|
|
19
19
|
const [orderColumn, orderDir] = (query.order || loadTable.order || "").split("-");
|
|
@@ -72,7 +72,7 @@ async function getData({ pg, tableName, query = {}, maxLimit, res }) {
|
|
|
72
72
|
});
|
|
73
73
|
return null;
|
|
74
74
|
}
|
|
75
|
-
export default async function search({ pg
|
|
75
|
+
export default async function search({ pg = pgClients.client, query = {}, }) {
|
|
76
76
|
const t1 = Date.now();
|
|
77
77
|
const tables = query.table
|
|
78
78
|
? [query.table]
|
|
@@ -86,7 +86,6 @@ export default async function search({ pg, funcs, query = {} }) {
|
|
|
86
86
|
const maxLimit = Math.min(100, query.limit || "16");
|
|
87
87
|
await sequence(tables, {
|
|
88
88
|
pg,
|
|
89
|
-
funcs,
|
|
90
89
|
query,
|
|
91
90
|
maxLimit,
|
|
92
91
|
res,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export default function suggest(req: any): Promise<any>;
|
|
1
|
+
export default function suggest(req: any, reply: any): Promise<any>;
|
|
2
2
|
//# sourceMappingURL=suggest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/suggest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/suggest.ts"],"names":[],"mappings":"AA+DA,wBAA8B,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,gBAmXzD"}
|
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { existsSync, readFileSync } from "node:fs";
|
|
3
3
|
import { config, getPG, getTemplate, getSelectMeta, getMeta, applyHook, getSelectVal, logger, getSelect, metaFormat, getColumnCLS, } from "../../../../utils.js";
|
|
4
|
-
const
|
|
5
|
-
const headers = {
|
|
6
|
-
"Access-Control-Allow-Origin": "*",
|
|
7
|
-
"Access-Control-Allow-Methods": "GET",
|
|
8
|
-
"Cache-Control": "no-cache",
|
|
9
|
-
};
|
|
4
|
+
const defaultLimit = 50;
|
|
10
5
|
async function getTableColumnMeta({ table, column, filtered, startsWith, key, pg, }) {
|
|
11
6
|
if (!table || !column) {
|
|
12
7
|
return null;
|
|
@@ -16,7 +11,7 @@ async function getTableColumnMeta({ table, column, filtered, startsWith, key, pg
|
|
|
16
11
|
const { arr } = (await getSelect(clsName, pg)) || {};
|
|
17
12
|
const original = filtered
|
|
18
13
|
? `with c(id,text) as (select ${column} as id, ${column} as text from ${loadTable?.table || table} group by ${column}) select id, text from c`
|
|
19
|
-
: `with c(id,text) as (select ${column} as id, ${column} as text, count(*) from ${loadTable?.table || table} group by ${column} limit ${
|
|
14
|
+
: `with c(id,text) as (select ${column} as id, ${column} as text, count(*) from ${loadTable?.table || table} group by ${column} limit ${defaultLimit}) select * from c`;
|
|
20
15
|
return {
|
|
21
16
|
arr,
|
|
22
17
|
original,
|
|
@@ -26,7 +21,7 @@ async function getTableColumnMeta({ table, column, filtered, startsWith, key, pg
|
|
|
26
21
|
pk: "id",
|
|
27
22
|
};
|
|
28
23
|
}
|
|
29
|
-
export default async function suggest(req) {
|
|
24
|
+
export default async function suggest(req, reply) {
|
|
30
25
|
const { params, query, pg: pg1, user } = req;
|
|
31
26
|
const lang = query.lang || "ua";
|
|
32
27
|
const time = Date.now();
|
|
@@ -42,8 +37,12 @@ export default async function suggest(req) {
|
|
|
42
37
|
? params.data.split(":")
|
|
43
38
|
: [query.token, query.column];
|
|
44
39
|
const selectName = query.sel || params.data;
|
|
45
|
-
if (!selectName)
|
|
46
|
-
return
|
|
40
|
+
if (!selectName) {
|
|
41
|
+
return reply.status(400).send({
|
|
42
|
+
error: "name is required",
|
|
43
|
+
code: 400,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
47
46
|
const { body: hookBody } = table || query.token
|
|
48
47
|
? (await applyHook("preSuggest", {
|
|
49
48
|
pg: pg1,
|
|
@@ -53,17 +52,26 @@ export default async function suggest(req) {
|
|
|
53
52
|
const body = await getTemplate("table", table || query.token);
|
|
54
53
|
const tableName = hookBody?.table || body?.table || table || query.token;
|
|
55
54
|
if (table && !pg1.pk?.[tableName]) {
|
|
56
|
-
return
|
|
55
|
+
return reply.status(400).send({
|
|
56
|
+
error: "param name is invalid: 1",
|
|
57
|
+
code: 400,
|
|
58
|
+
});
|
|
57
59
|
}
|
|
58
60
|
const tableMeta = await getMeta({ pg: pg1, table: tableName });
|
|
59
61
|
const columnExists = (hookBody?.columns ||
|
|
60
62
|
body?.columns ||
|
|
61
63
|
tableMeta?.columns)?.find((col) => col?.name === (column || query.column));
|
|
62
64
|
if (table && (!column || !columnExists)) {
|
|
63
|
-
return
|
|
65
|
+
return reply.status(400).send({
|
|
66
|
+
error: "param name is invalid: 2",
|
|
67
|
+
code: 400,
|
|
68
|
+
});
|
|
64
69
|
}
|
|
65
70
|
if (query.limit && query.limit < 0) {
|
|
66
|
-
return
|
|
71
|
+
return reply.status(400).send({
|
|
72
|
+
error: "param limit is invalid",
|
|
73
|
+
code: 400,
|
|
74
|
+
});
|
|
67
75
|
}
|
|
68
76
|
const meta = tableName && column
|
|
69
77
|
? await getTableColumnMeta({
|
|
@@ -83,11 +91,18 @@ export default async function suggest(req) {
|
|
|
83
91
|
pg: pg1,
|
|
84
92
|
});
|
|
85
93
|
if (meta?.minLength && query.key && query.key.length < meta?.minLength) {
|
|
86
|
-
return {
|
|
94
|
+
return reply.status(400).send({
|
|
95
|
+
error: `min length: ${meta.minLength}`,
|
|
96
|
+
code: 400,
|
|
97
|
+
});
|
|
87
98
|
}
|
|
99
|
+
const limit = meta?.limit || defaultLimit;
|
|
88
100
|
const pg = meta?.db ? getPG(meta.db) : pg1;
|
|
89
101
|
if (!meta) {
|
|
90
|
-
return
|
|
102
|
+
return reply.status(404).send({
|
|
103
|
+
error: "Not found query select",
|
|
104
|
+
code: 404,
|
|
105
|
+
});
|
|
91
106
|
}
|
|
92
107
|
if (query.meta) {
|
|
93
108
|
return meta;
|
|
@@ -17,5 +17,5 @@ export default function dataAPI({ pg, params, table, id, headers, query, user, c
|
|
|
17
17
|
filterList?: any[];
|
|
18
18
|
actions?: string[];
|
|
19
19
|
columns?: string[];
|
|
20
|
-
},
|
|
20
|
+
}, reply1?: FastifyReply, called?: any): Promise<any>;
|
|
21
21
|
//# sourceMappingURL=getData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getData.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/functions/getData.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"getData.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/functions/getData.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AA4EzD,wBAA8B,OAAO,CACnC,EACE,EAAqB,EACrB,MAAM,EACN,KAAK,EACL,EAAE,EACF,OAAY,EACZ,KAAU,EACV,IAAS,EACT,YAAY,EACZ,KAAY,EACZ,UAAU,EACV,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,YAAY,GACtB,EAAE;IACD,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,MAAM,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,EACD,MAAM,CAAC,EAAE,YAAY,EACrB,MAAM,CAAC,EAAE,GAAG,gBAk0Bb"}
|
|
@@ -22,6 +22,19 @@ const components = {
|
|
|
22
22
|
"vs-widget-file": "select 'vs-widget-file' as component, count(*) from crm.files where entity_id=$1 and file_status<>3",
|
|
23
23
|
"vs-widget-comments": "select 'vs-widget-comments' as component, count(*) from crm.communications where entity_id=$1",
|
|
24
24
|
};
|
|
25
|
+
const mockReply = {
|
|
26
|
+
response: {},
|
|
27
|
+
// redirect: (txt) => txt,
|
|
28
|
+
redirect: (txt) => Object.assign(mockReply.response, {
|
|
29
|
+
body: txt,
|
|
30
|
+
statusCode: mockReply.response.statusCode || 200,
|
|
31
|
+
}),
|
|
32
|
+
status: (statusCode) => {
|
|
33
|
+
Object.assign(mockReply.response, { status: statusCode });
|
|
34
|
+
return mockReply;
|
|
35
|
+
},
|
|
36
|
+
send: (txt) => Object.assign(mockReply.response, txt),
|
|
37
|
+
};
|
|
25
38
|
function getOrder(queryOrder, queryDesc, defaultOrder, columnList, iscalled = false) {
|
|
26
39
|
if (iscalled && queryOrder) {
|
|
27
40
|
return `order by ${queryOrder}`;
|
|
@@ -39,14 +52,17 @@ function getOrder(queryOrder, queryDesc, defaultOrder, columnList, iscalled = fa
|
|
|
39
52
|
const checkInline = {};
|
|
40
53
|
const maxLimit = 100;
|
|
41
54
|
const defaultLimit = 20;
|
|
42
|
-
export default async function dataAPI({ pg = pgClients.client, params, table, id, headers = {}, query = {}, user = {}, contextQuery, sufix = true, filterList, actions: actionsParam, columns: columnsParam, },
|
|
55
|
+
export default async function dataAPI({ pg = pgClients.client, params, table, id, headers = {}, query = {}, user = {}, contextQuery, sufix = true, filterList, actions: actionsParam, columns: columnsParam, }, reply1, called) {
|
|
43
56
|
const time = Date.now();
|
|
44
57
|
const timeArr = [Date.now()];
|
|
45
58
|
const { uid } = user;
|
|
59
|
+
const reply = reply1 || mockReply;
|
|
46
60
|
const checkQuery = (item) => user?.user_type === "superadmin" ? !item.includes("{{uid}}") : true;
|
|
47
61
|
const paramsTable = params?.table || table;
|
|
48
62
|
if (!paramsTable) {
|
|
49
|
-
return
|
|
63
|
+
return reply
|
|
64
|
+
.status(400)
|
|
65
|
+
.send({ error: "not enough params: table", code: 400 });
|
|
50
66
|
}
|
|
51
67
|
const hookData = (await applyHook("preData", {
|
|
52
68
|
pg,
|
|
@@ -55,7 +71,10 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
55
71
|
user,
|
|
56
72
|
}));
|
|
57
73
|
if (hookData?.message && hookData?.status) {
|
|
58
|
-
|
|
74
|
+
const response = hookData.status >= 400
|
|
75
|
+
? { error: hookData.message, code: hookData.status }
|
|
76
|
+
: hookData.message;
|
|
77
|
+
return reply.status(hookData.status).send(response);
|
|
59
78
|
}
|
|
60
79
|
/* from tableData START */
|
|
61
80
|
const tokenData1 = await getOpt(paramsTable, uid);
|
|
@@ -96,7 +115,7 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
96
115
|
else if (checkInline[paramsTable]) {
|
|
97
116
|
loadTable.sql = checkInline[paramsTable];
|
|
98
117
|
}
|
|
99
|
-
if (query
|
|
118
|
+
if (query?.sql === "0")
|
|
100
119
|
return loadTable;
|
|
101
120
|
if (!pg) {
|
|
102
121
|
return reply.status(500).send("empty pg");
|
|
@@ -121,17 +140,6 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
121
140
|
if (!actions.includes("view") && !config?.local && !called) {
|
|
122
141
|
return reply.status(403).send({ error: "access restricted", code: 403 });
|
|
123
142
|
}
|
|
124
|
-
/* const filters = ((body?.filter_list || [])
|
|
125
|
-
.concat(body?.filterInline || [])
|
|
126
|
-
.concat(body?.filterCustom || [])
|
|
127
|
-
.concat(body?.filterState || [])
|
|
128
|
-
.concat(body?.filterList || [])
|
|
129
|
-
.concat(body?.filters || [])
|
|
130
|
-
).filter(el => el.id || el.name); */
|
|
131
|
-
if (body?.filter_list || body?.filterList) {
|
|
132
|
-
// console.warn('invalid filters in template: filter_list / filterList');
|
|
133
|
-
// logger.file('crud/warning', { msg: 'invalid filters', template: templateName });
|
|
134
|
-
}
|
|
135
143
|
const { list: filters = [] } = objectId
|
|
136
144
|
? {}
|
|
137
145
|
: (await getFilter({
|
|
@@ -143,8 +151,11 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
143
151
|
const viewSql = await getTemplate("view", table1);
|
|
144
152
|
timeArr.push(Date.now());
|
|
145
153
|
if (tableMeta?.view) {
|
|
146
|
-
if (!loadTable?.key && !tokenData?.key)
|
|
147
|
-
return
|
|
154
|
+
if (!loadTable?.key && !tokenData?.key) {
|
|
155
|
+
return reply
|
|
156
|
+
.status(404)
|
|
157
|
+
.send({ error: `key not found: ${table1}`, code: 404 });
|
|
158
|
+
}
|
|
148
159
|
Object.assign(tableMeta, { pk: loadTable?.key || tokenData?.key });
|
|
149
160
|
}
|
|
150
161
|
const { pk, columns: dbColumns = [] } = (viewSql
|
|
@@ -160,7 +171,9 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
160
171
|
Object.assign(col, locales[`${table1 || paramsTable}.${col.name}`] || {});
|
|
161
172
|
});
|
|
162
173
|
if (!pk) {
|
|
163
|
-
return reply
|
|
174
|
+
return reply
|
|
175
|
+
.status(404)
|
|
176
|
+
.send({ error: `table not found: ${table1}`, code: 404 });
|
|
164
177
|
}
|
|
165
178
|
const columnList = dbColumns.map((el) => el.name || el).join(",");
|
|
166
179
|
const sqlTable = sql
|
|
@@ -200,57 +213,57 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
200
213
|
pg,
|
|
201
214
|
layer: paramsTable,
|
|
202
215
|
column: objectId,
|
|
203
|
-
sql: query
|
|
204
|
-
filter: query
|
|
205
|
-
search: query
|
|
206
|
-
state: query
|
|
207
|
-
custom: query
|
|
216
|
+
sql: query?.sql,
|
|
217
|
+
filter: query?.filter,
|
|
218
|
+
search: query?.search,
|
|
219
|
+
state: query?.state,
|
|
220
|
+
custom: query?.custom,
|
|
208
221
|
});
|
|
209
222
|
}
|
|
210
223
|
const isdefault = !objectId ? filters.find((el) => el.default) : null;
|
|
211
224
|
const checkFilter = [
|
|
212
|
-
query
|
|
213
|
-
query
|
|
214
|
-
query
|
|
215
|
-
query
|
|
225
|
+
query?.filter,
|
|
226
|
+
query?.search,
|
|
227
|
+
query?.state,
|
|
228
|
+
query?.custom,
|
|
216
229
|
isdefault,
|
|
217
230
|
].filter(Boolean).length;
|
|
218
231
|
const fData = checkFilter
|
|
219
232
|
? await getFilterSQL({
|
|
220
233
|
pg,
|
|
221
234
|
table: loadTable ? paramsTable : table1,
|
|
222
|
-
filter: query
|
|
223
|
-
search: query
|
|
224
|
-
state: query
|
|
225
|
-
custom: query
|
|
235
|
+
filter: query?.filter,
|
|
236
|
+
search: query?.search,
|
|
237
|
+
state: query?.state,
|
|
238
|
+
custom: query?.custom,
|
|
226
239
|
uid,
|
|
227
240
|
objectId,
|
|
228
241
|
filterList,
|
|
229
242
|
})
|
|
230
243
|
: {};
|
|
231
244
|
timeArr.push(Date.now());
|
|
232
|
-
const keyQuery = query
|
|
245
|
+
const keyQuery = query?.key && (loadTable?.key || tokenData?.key) && !objectId
|
|
233
246
|
? `${loadTable?.key || tokenData?.key}=$1`
|
|
234
247
|
: null;
|
|
235
248
|
const limit = (called
|
|
236
|
-
? query
|
|
237
|
-
: Math.min(maxLimit, +(query
|
|
238
|
-
const offset = query
|
|
239
|
-
? ` offset ${(query
|
|
249
|
+
? query?.limit || defaultLimit
|
|
250
|
+
: Math.min(maxLimit, +(query?.limit || defaultLimit))) || defaultLimit;
|
|
251
|
+
const offset = query?.page && query?.page > 0 && !objectId
|
|
252
|
+
? ` offset ${(query?.page - 1) * limit}`
|
|
240
253
|
: "";
|
|
241
|
-
const order = getOrder(query
|
|
254
|
+
const order = getOrder(query?.order, query?.desc, loadTable?.order, columnList, !!called);
|
|
242
255
|
if (config.trace)
|
|
243
256
|
console.log(order);
|
|
244
|
-
const search = loadTable?.meta?.search && query
|
|
257
|
+
const search = loadTable?.meta?.search && query?.search
|
|
245
258
|
? `(${loadTable?.meta?.search
|
|
246
259
|
?.split(",")
|
|
247
|
-
?.map((el) => `${el} ilike '%${query
|
|
260
|
+
?.map((el) => `${el} ilike '%${query?.search
|
|
248
261
|
.replace(/%/g, "\\%")
|
|
249
262
|
.replace(/'/g, "''")}%'`)
|
|
250
263
|
.join(" or ")})`
|
|
251
264
|
: null;
|
|
252
265
|
const queryBbox = query?.bbox
|
|
253
|
-
? query
|
|
266
|
+
? query?.bbox
|
|
254
267
|
.replace(/ /g, ",")
|
|
255
268
|
.split(",")
|
|
256
269
|
?.map((el) => el - 0)
|
|
@@ -289,7 +302,7 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
289
302
|
.filter(Boolean)
|
|
290
303
|
.filter((el) => checkQuery(el));
|
|
291
304
|
const q = `select ${pk ? `"${pk}" as id,` : ""}
|
|
292
|
-
${objectId || query
|
|
305
|
+
${objectId || query?.key
|
|
293
306
|
? "*"
|
|
294
307
|
: columnsParam || sqlColumns || cols || "*"}
|
|
295
308
|
${metaCols}
|
|
@@ -309,12 +322,12 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
309
322
|
${order} ${offset} limit ${limit}`.replace(/{{uid}}/g, uid);
|
|
310
323
|
if (config.trace)
|
|
311
324
|
console.log(q);
|
|
312
|
-
if (query
|
|
325
|
+
if (query?.sql === "1") {
|
|
313
326
|
return q;
|
|
314
327
|
}
|
|
315
328
|
const { rows = [] } = await pg
|
|
316
329
|
.query(q, (objectId ? [objectId] : null) ||
|
|
317
|
-
(query
|
|
330
|
+
(query?.key && loadTable.key ? [query?.key] : []))
|
|
318
331
|
.catch((err) => {
|
|
319
332
|
console.error(err.toString());
|
|
320
333
|
throw err;
|
|
@@ -322,7 +335,9 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
322
335
|
if (!rows.length &&
|
|
323
336
|
headers?.referer?.includes?.("/card/") &&
|
|
324
337
|
headers?.referer?.includes?.(templateName)) {
|
|
325
|
-
return reply
|
|
338
|
+
return reply
|
|
339
|
+
.status(403)
|
|
340
|
+
.send({ error: "access restricted: empty rows", code: 403 });
|
|
326
341
|
}
|
|
327
342
|
timeArr.push(Date.now());
|
|
328
343
|
if (uid &&
|
|
@@ -385,7 +400,7 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
385
400
|
.filter(Boolean)
|
|
386
401
|
.filter((el) => checkQuery(el))
|
|
387
402
|
.join(" and ") || "true"} `.replace(/{{uid}}/g, uid);
|
|
388
|
-
if (query
|
|
403
|
+
if (query?.sql === "2") {
|
|
389
404
|
return qCount;
|
|
390
405
|
}
|
|
391
406
|
const counts = keyQuery || objectId
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/upload/index.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,GAAG,EAAE,GAAG,QAmGtC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import config from "../../../config.js";
|
|
2
|
+
const { chunkSize = 1048576 } = config;
|
|
3
|
+
import { prefix } from "../../plugins/upload/index.js";
|
|
4
|
+
import startUpload from "../../plugins/upload/startUpload.js";
|
|
5
|
+
import uploadChunk from "../../plugins/upload/uploadChunk.js";
|
|
6
|
+
import getUploadStatus from "../../plugins/upload/getUploadStatus.js";
|
|
7
|
+
import finishUpload from "../../plugins/upload/finishUpload.js";
|
|
8
|
+
const policy = "L0"; // public
|
|
9
|
+
export default function plugin(app) {
|
|
10
|
+
app.post(`/${prefix}/start`, { config: { policy, description: "Init chunked upload" } }, async (req, reply) => {
|
|
11
|
+
const { fileName, size, subdir, id } = req.body || {};
|
|
12
|
+
if (!fileName || !size) {
|
|
13
|
+
return reply
|
|
14
|
+
.code(400)
|
|
15
|
+
.send({ error: "fileName and size required", code: 400 });
|
|
16
|
+
}
|
|
17
|
+
const result = await startUpload({ fileName, size, subdir, id });
|
|
18
|
+
return result;
|
|
19
|
+
});
|
|
20
|
+
// ! debug
|
|
21
|
+
// disable default parser for PATCH /upload/:id
|
|
22
|
+
// allows accept all content types (req.body = raw buffer)
|
|
23
|
+
// limit body size to 50MB by default, depends on upload chunk size
|
|
24
|
+
app.addContentTypeParser("*", { parseAs: "buffer", bodyLimit: chunkSize * 50 }, (req, body, done) => {
|
|
25
|
+
done(null, body);
|
|
26
|
+
});
|
|
27
|
+
// main - upload chunks one by one
|
|
28
|
+
app.patch(`/${prefix}/:id`, { config: { policy, description: "Upload chunk of data" } }, async (req, reply) => {
|
|
29
|
+
if (!req.headers["content-range"]) {
|
|
30
|
+
return reply
|
|
31
|
+
.status(411)
|
|
32
|
+
.send({ error: "Content-Range required", code: 411 });
|
|
33
|
+
}
|
|
34
|
+
const match = req.headers["content-range"].match(/bytes (\d+)-(\d+)\/(\d+)/);
|
|
35
|
+
if (!match) {
|
|
36
|
+
return { error: "Invalid Content-Range", code: 400 };
|
|
37
|
+
}
|
|
38
|
+
const offset = parseInt(match[1], 10);
|
|
39
|
+
const end = parseInt(match[2], 10);
|
|
40
|
+
const size = parseInt(match[3], 10);
|
|
41
|
+
const result = await uploadChunk({
|
|
42
|
+
id: req.params.id,
|
|
43
|
+
body: req.body,
|
|
44
|
+
offset,
|
|
45
|
+
end,
|
|
46
|
+
size,
|
|
47
|
+
});
|
|
48
|
+
if (result.code) {
|
|
49
|
+
return reply
|
|
50
|
+
.status(result.code)
|
|
51
|
+
.send({ error: result.error, code: result.code });
|
|
52
|
+
}
|
|
53
|
+
return result;
|
|
54
|
+
});
|
|
55
|
+
// check upload status
|
|
56
|
+
app.get(`/${prefix}/:id`, { config: { policy, description: "Check chunked upload status" } }, async (req) => {
|
|
57
|
+
const { id } = req.params;
|
|
58
|
+
const status = await getUploadStatus({ id });
|
|
59
|
+
return status;
|
|
60
|
+
});
|
|
61
|
+
// optional
|
|
62
|
+
app.post(`/${prefix}/:id/finish`, { config: { policy, description: "Finish chunked upload" } }, async (req, reply) => {
|
|
63
|
+
const { id } = req.params;
|
|
64
|
+
const result = await finishUpload({ id });
|
|
65
|
+
if (result.code) {
|
|
66
|
+
return reply
|
|
67
|
+
.status(result.code)
|
|
68
|
+
.send({ error: result.error, code: result.code });
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
@@ -4,8 +4,14 @@ import { Pool } from "pg";
|
|
|
4
4
|
declare let Database: any;
|
|
5
5
|
export interface ExtendedPG extends Pool {
|
|
6
6
|
readonly?: any;
|
|
7
|
+
connect: any;
|
|
8
|
+
query: any;
|
|
9
|
+
database: string;
|
|
10
|
+
host: string;
|
|
11
|
+
user: string;
|
|
12
|
+
password: string;
|
|
13
|
+
port: number;
|
|
7
14
|
init?: () => void;
|
|
8
|
-
connectionAttempt: number;
|
|
9
15
|
pk?: Record<string, string>;
|
|
10
16
|
pgType?: Record<any, string>;
|
|
11
17
|
tlist?: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../server/types/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAM1B,QAAA,IAAI,QAAQ,EAAE,GAAG,CAAC;AAUlB,MAAM,WAAW,UAAW,SAAQ,IAAI;IACtC,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../server/types/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAM1B,QAAA,IAAI,QAAQ,EAAE,GAAG,CAAC;AAUlB,MAAM,WAAW,UAAW,SAAQ,IAAI;IACtC,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,OAAO,EAAE,GAAG,CAAC;IACb,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC;CACjE;AAYD,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;IAC3D,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,OAAO,EAAE,eAAe,CAAC;IACzB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,YAAY,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;QAC7C,MAAM,EAAE,0BAA0B,CAAC;KACpC,CAAC;CACH;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY,CAAC,OAAO,QAAQ,CAAC;IACnE,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -80,6 +80,11 @@ export { default as getAdminAccess } from "./server/plugins/access/funcs/getAdmi
|
|
|
80
80
|
export { default as sendNotification } from "./server/plugins/auth/funcs/sendNotification.js";
|
|
81
81
|
export { default as addUserNotification } from "./server/plugins/notifications/addNotification.js";
|
|
82
82
|
export { addUserCls, editUserCls, deleteUserCls, getUserCls, } from "./server/plugins/usercls/index.js";
|
|
83
|
+
export { prefix as uploadChunkApiPrefix, fileDir as uploadChunkFileDir, uploadChunkDirectory, } from "./server/plugins/upload/index.js";
|
|
84
|
+
export { default as getUploadStatus } from "./server/plugins/upload/getUploadStatus.js";
|
|
85
|
+
export { default as startUpload } from "./server/plugins/upload/startUpload.js";
|
|
86
|
+
export { default as finishUpload } from "./server/plugins/upload/finishUpload.js";
|
|
87
|
+
export { default as uploadChunk } from "./server/plugins/upload/uploadChunk.js";
|
|
83
88
|
export { default as s3Client } from "./server/plugins/file/providers/s3/client.js";
|
|
84
89
|
declare const _default: null;
|
|
85
90
|
export default _default;
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"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"}
|