@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.
Files changed (139) hide show
  1. package/dist/config.d.ts.map +1 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +5 -0
  4. package/dist/script/adduser +15 -0
  5. package/dist/script/dump.js +176 -0
  6. package/dist/script/migrate.js +25 -0
  7. package/dist/server/plugins/auth/funcs/verifyPassword.d.ts.map +1 -1
  8. package/dist/server/plugins/auth/funcs/verifyPassword.js +3 -1
  9. package/dist/server/plugins/crud/funcs/dataInsert.js +2 -2
  10. package/dist/server/plugins/crud/funcs/dataUpdate.d.ts.map +1 -1
  11. package/dist/server/plugins/crud/funcs/dataUpdate.js +9 -6
  12. package/dist/server/plugins/crud/funcs/validateData.js +1 -1
  13. package/dist/server/plugins/file/providers/fs.js +2 -2
  14. package/dist/server/plugins/file/providers/s3/funcs/downloadFile.d.ts.map +1 -1
  15. package/dist/server/plugins/file/providers/s3/funcs/downloadFile.js +1 -2
  16. package/dist/server/plugins/file/providers/s3/funcs/fileExists.d.ts.map +1 -1
  17. package/dist/server/plugins/file/providers/s3/funcs/fileExists.js +1 -2
  18. package/dist/server/plugins/file/providers/s3/funcs/uploadFile.d.ts.map +1 -1
  19. package/dist/server/plugins/file/providers/s3/funcs/uploadFile.js +1 -2
  20. package/dist/server/plugins/file/providers/s3/index.js +4 -4
  21. package/dist/server/plugins/logger/getLogger.d.ts.map +1 -1
  22. package/dist/server/plugins/logger/getLogger.js +14 -11
  23. package/dist/server/plugins/logger/index.d.ts.map +1 -1
  24. package/dist/server/plugins/logger/index.js +5 -4
  25. package/dist/server/plugins/migration/exec.migrations.js +6 -6
  26. package/dist/server/plugins/pg/funcs/getMeta.d.ts.map +1 -1
  27. package/dist/server/plugins/pg/funcs/getMeta.js +3 -5
  28. package/dist/server/plugins/pg/funcs/getPG.d.ts.map +1 -1
  29. package/dist/server/plugins/pg/funcs/getPG.js +2 -1
  30. package/dist/server/plugins/pg/funcs/getPGAsync.js +2 -2
  31. package/dist/server/plugins/pg/funcs/init.d.ts +1 -1
  32. package/dist/server/plugins/pg/funcs/init.d.ts.map +1 -1
  33. package/dist/server/plugins/pg/funcs/init.js +43 -36
  34. package/dist/server/plugins/pg/funcs/pool.d.ts.map +1 -1
  35. package/dist/server/plugins/pg/funcs/pool.js +12 -18
  36. package/dist/server/plugins/pg/index.d.ts.map +1 -1
  37. package/dist/server/plugins/pg/index.js +3 -2
  38. package/dist/server/plugins/redis/funcs/getRedis.d.ts.map +1 -1
  39. package/dist/server/plugins/redis/funcs/getRedis.js +7 -5
  40. package/dist/server/plugins/redis/index.d.ts.map +1 -1
  41. package/dist/server/plugins/redis/index.js +4 -1
  42. package/dist/server/plugins/sqlite/index.d.ts.map +1 -1
  43. package/dist/server/plugins/sqlite/index.js +7 -3
  44. package/dist/server/plugins/table/funcs/getFilter.d.ts +1 -1
  45. package/dist/server/plugins/table/funcs/getFilter.d.ts.map +1 -1
  46. package/dist/server/plugins/table/funcs/getFilter.js +14 -1
  47. package/dist/server/plugins/table/funcs/getSelectMeta.d.ts.map +1 -1
  48. package/dist/server/plugins/table/funcs/getSelectMeta.js +2 -4
  49. package/dist/server/plugins/table/funcs/gisIRColumn.d.ts +2 -2
  50. package/dist/server/plugins/table/funcs/gisIRColumn.js +1 -1
  51. package/dist/server/plugins/upload/finishUpload.d.ts +9 -0
  52. package/dist/server/plugins/upload/finishUpload.d.ts.map +1 -0
  53. package/dist/server/plugins/upload/finishUpload.js +33 -0
  54. package/dist/server/plugins/upload/getUploadStatus.d.ts +5 -0
  55. package/dist/server/plugins/upload/getUploadStatus.d.ts.map +1 -0
  56. package/dist/server/plugins/upload/getUploadStatus.js +36 -0
  57. package/dist/server/plugins/upload/index.d.ts +6 -0
  58. package/dist/server/plugins/upload/index.d.ts.map +1 -0
  59. package/dist/server/plugins/upload/index.js +12 -0
  60. package/dist/server/plugins/upload/startUpload.d.ts +8 -0
  61. package/dist/server/plugins/upload/startUpload.d.ts.map +1 -0
  62. package/dist/server/plugins/upload/startUpload.js +53 -0
  63. package/dist/server/plugins/upload/uploadChunk.d.ts +9 -0
  64. package/dist/server/plugins/upload/uploadChunk.d.ts.map +1 -0
  65. package/dist/server/plugins/upload/uploadChunk.js +47 -0
  66. package/dist/server/plugins/util/funcs/unflattenObject.d.ts.map +1 -1
  67. package/dist/server/plugins/util/funcs/unflattenObject.js +5 -3
  68. package/dist/server/routes/access/controllers/access.group.d.ts +2 -2
  69. package/dist/server/routes/access/controllers/access.group.d.ts.map +1 -1
  70. package/dist/server/routes/access/controllers/access.group.js +0 -1
  71. package/dist/server/routes/access/controllers/access.group.post.d.ts +2 -2
  72. package/dist/server/routes/access/controllers/access.group.post.d.ts.map +1 -1
  73. package/dist/server/routes/access/controllers/access.group.post.js +0 -1
  74. package/dist/server/routes/auth/controllers/2factor/providers/totp.d.ts.map +1 -1
  75. package/dist/server/routes/auth/controllers/2factor/providers/totp.js +1 -1
  76. package/dist/server/routes/auth/controllers/core/registration.d.ts +1 -1
  77. package/dist/server/routes/auth/controllers/core/registration.d.ts.map +1 -1
  78. package/dist/server/routes/auth/controllers/core/registration.js +37 -9
  79. package/dist/server/routes/auth/controllers/core/updateUserInfo.js +1 -1
  80. package/dist/server/routes/auth/controllers/jwt/authorize.js +5 -5
  81. package/dist/server/routes/auth/controllers/jwt/token.d.ts.map +1 -1
  82. package/dist/server/routes/auth/controllers/jwt/token.js +10 -12
  83. package/dist/server/routes/cron/controllers/cronApi.d.ts +1 -1
  84. package/dist/server/routes/cron/controllers/cronApi.d.ts.map +1 -1
  85. package/dist/server/routes/cron/controllers/cronApi.js +5 -3
  86. package/dist/server/routes/crud/controllers/insert.d.ts +1 -4
  87. package/dist/server/routes/crud/controllers/insert.d.ts.map +1 -1
  88. package/dist/server/routes/crud/controllers/insert.js +24 -16
  89. package/dist/server/routes/crud/controllers/table.d.ts.map +1 -1
  90. package/dist/server/routes/crud/controllers/table.js +13 -6
  91. package/dist/server/routes/crud/controllers/update.d.ts.map +1 -1
  92. package/dist/server/routes/crud/controllers/update.js +23 -15
  93. package/dist/server/routes/file/controllers/delete.d.ts +1 -15
  94. package/dist/server/routes/file/controllers/delete.d.ts.map +1 -1
  95. package/dist/server/routes/file/controllers/delete.js +13 -20
  96. package/dist/server/routes/file/controllers/download.d.ts +2 -2
  97. package/dist/server/routes/file/controllers/download.d.ts.map +1 -1
  98. package/dist/server/routes/file/controllers/download.js +39 -30
  99. package/dist/server/routes/file/controllers/files.d.ts +2 -1
  100. package/dist/server/routes/file/controllers/files.d.ts.map +1 -1
  101. package/dist/server/routes/file/controllers/files.js +15 -11
  102. package/dist/server/routes/file/controllers/resize.d.ts +1 -2
  103. package/dist/server/routes/file/controllers/resize.d.ts.map +1 -1
  104. package/dist/server/routes/file/controllers/resize.js +17 -6
  105. package/dist/server/routes/file/controllers/upload.d.ts.map +1 -1
  106. package/dist/server/routes/file/controllers/upload.js +17 -16
  107. package/dist/server/routes/file/controllers/uploadImage.d.ts +11 -13
  108. package/dist/server/routes/file/controllers/uploadImage.d.ts.map +1 -1
  109. package/dist/server/routes/file/controllers/uploadImage.js +13 -15
  110. package/dist/server/routes/logger/controllers/logger.file.js +1 -1
  111. package/dist/server/routes/menu/controllers/interfaces.d.ts +1 -7
  112. package/dist/server/routes/menu/controllers/interfaces.d.ts.map +1 -1
  113. package/dist/server/routes/table/controllers/card.d.ts +1 -1
  114. package/dist/server/routes/table/controllers/card.d.ts.map +1 -1
  115. package/dist/server/routes/table/controllers/card.js +15 -9
  116. package/dist/server/routes/table/controllers/filter.d.ts +1 -1
  117. package/dist/server/routes/table/controllers/filter.d.ts.map +1 -1
  118. package/dist/server/routes/table/controllers/filter.js +9 -2
  119. package/dist/server/routes/table/controllers/form.d.ts +1 -1
  120. package/dist/server/routes/table/controllers/form.d.ts.map +1 -1
  121. package/dist/server/routes/table/controllers/form.js +8 -5
  122. package/dist/server/routes/table/controllers/search.d.ts +1 -1
  123. package/dist/server/routes/table/controllers/search.d.ts.map +1 -1
  124. package/dist/server/routes/table/controllers/search.js +5 -6
  125. package/dist/server/routes/table/controllers/suggest.d.ts +1 -1
  126. package/dist/server/routes/table/controllers/suggest.d.ts.map +1 -1
  127. package/dist/server/routes/table/controllers/suggest.js +30 -15
  128. package/dist/server/routes/table/functions/getData.d.ts +1 -1
  129. package/dist/server/routes/table/functions/getData.d.ts.map +1 -1
  130. package/dist/server/routes/table/functions/getData.js +60 -45
  131. package/dist/server/routes/upload/index.d.ts +2 -0
  132. package/dist/server/routes/upload/index.d.ts.map +1 -0
  133. package/dist/server/routes/upload/index.js +72 -0
  134. package/dist/server/types/core.d.ts +7 -1
  135. package/dist/server/types/core.d.ts.map +1 -1
  136. package/dist/utils.d.ts +5 -0
  137. package/dist/utils.d.ts.map +1 -1
  138. package/dist/utils.js +5 -0
  139. 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 { status: 404, message: "not found" };
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 { status: 404, message: "table not found" };
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,eA6ClD"}
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
- return { message: hookData?.message, status: hookData?.status };
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 { status: 404, message: "not found" };
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,4 +1,4 @@
1
- export default function search({ pg, funcs, query }: any): Promise<string | {
1
+ export default function search({ pg, query, }: any): Promise<string | {
2
2
  time: number;
3
3
  total: number;
4
4
  filtered: number;
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/search.ts"],"names":[],"mappings":"AA6HA,wBAA8B,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE,GAAG;;;;;;GAoClE"}
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 { message: "not found", status: 404 };
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 { message: "table not found", status: 404 };
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, funcs, query = {} }) {
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":"AAoEA,wBAA8B,OAAO,CAAC,GAAG,EAAE,GAAG,gBA6V7C"}
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 limit = 50;
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 ${limit}) select * from c`;
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 { status: 400, message: "name is required" };
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 { status: 400, message: "param name is invalid: 1" };
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 { status: 400, message: "param name is invalid: 2" };
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 { status: 400, message: "param limit is invalid" };
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 { message: `min length: ${meta.minLength}` };
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 { headers, status: 404, message: "Not found query select " };
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
- }, reply: FastifyReply, called?: any): Promise<any>;
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;AA4DzD,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,KAAK,EAAE,YAAY,EACnB,MAAM,CAAC,EAAE,GAAG,gBAi0Bb"}
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, }, reply, called) {
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 { message: "not enough params: table", status: 400 };
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
- return { message: hookData?.message, status: hookData?.status };
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.sql === "0")
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 { message: `key not found: ${table1}`, status: 404 };
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.status(404).send(`table not found: ${table1}`);
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.sql,
204
- filter: query.filter,
205
- search: query.search,
206
- state: query.state,
207
- custom: query.custom,
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.filter,
213
- query.search,
214
- query.state,
215
- query.custom,
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.filter,
223
- search: query.search,
224
- state: query.state,
225
- custom: query.custom,
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.key && (loadTable?.key || tokenData?.key) && !objectId
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.limit || defaultLimit
237
- : Math.min(maxLimit, +(query.limit || defaultLimit))) || defaultLimit;
238
- const offset = query.page && query.page > 0 && !objectId
239
- ? ` offset ${(query.page - 1) * limit}`
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.order, query.desc, loadTable?.order, columnList, !!called);
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.search
257
+ const search = loadTable?.meta?.search && query?.search
245
258
  ? `(${loadTable?.meta?.search
246
259
  ?.split(",")
247
- ?.map((el) => `${el} ilike '%${query.search
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.bbox
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.key
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.sql === "1") {
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.key && loadTable.key ? [query.key] : []))
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.status(403).send("access restricted: empty rows");
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.sql === "2") {
403
+ if (query?.sql === "2") {
389
404
  return qCount;
390
405
  }
391
406
  const counts = keyQuery || objectId
@@ -0,0 +1,2 @@
1
+ export default function plugin(app: any): void;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,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"}
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;
@@ -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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"}