@opengis/fastify-table 2.0.104 → 2.0.106
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/server/migrations/users.sql +1 -1
- package/dist/server/plugins/file/providers/s3/client.d.ts +12 -4
- package/dist/server/plugins/file/providers/s3/client.d.ts.map +1 -1
- package/dist/server/plugins/file/providers/s3/client.js +21 -15
- package/dist/server/plugins/file/providers/s3/funcs/downloadFile.d.ts +1 -1
- package/dist/server/plugins/file/providers/s3/funcs/downloadFile.d.ts.map +1 -1
- package/dist/server/plugins/file/providers/s3/funcs/downloadFile.js +9 -4
- package/dist/server/plugins/file/providers/s3/funcs/fileExists.d.ts +1 -1
- package/dist/server/plugins/file/providers/s3/funcs/fileExists.d.ts.map +1 -1
- package/dist/server/plugins/file/providers/s3/funcs/fileExists.js +13 -10
- package/dist/server/plugins/file/providers/s3/funcs/uploadFile.d.ts +1 -1
- package/dist/server/plugins/file/providers/s3/funcs/uploadFile.d.ts.map +1 -1
- package/dist/server/plugins/file/providers/s3/funcs/uploadFile.js +4 -4
- package/dist/server/plugins/file/providers/s3/funcs/utils/getS3FilePath.d.ts +1 -1
- package/dist/server/plugins/file/providers/s3/funcs/utils/getS3FilePath.d.ts.map +1 -1
- package/dist/server/plugins/file/providers/s3/funcs/utils/getS3FilePath.js +1 -1
- package/dist/server/plugins/file/providers/s3/index.d.ts +1 -1
- package/dist/server/plugins/logger/getLogger.d.ts.map +1 -1
- package/dist/server/plugins/logger/getLogger.js +4 -2
- package/dist/server/plugins/logger/index.d.ts.map +1 -1
- package/dist/server/plugins/logger/index.js +27 -0
- package/dist/server/plugins/pg/funcs/pool.d.ts.map +1 -1
- package/dist/server/plugins/pg/funcs/pool.js +0 -13
- package/dist/server/plugins/redis/funcs/getRedis.d.ts +7 -1
- package/dist/server/plugins/redis/funcs/getRedis.d.ts.map +1 -1
- package/dist/server/plugins/redis/funcs/getRedis.js +19 -4
- package/dist/server/plugins/table/funcs/getSelectMeta.d.ts +4 -2
- package/dist/server/plugins/table/funcs/getSelectMeta.d.ts.map +1 -1
- package/dist/server/plugins/table/funcs/getSelectMeta.js +20 -4
- package/dist/server/plugins/table/funcs/metaFormat/getSelectVal.d.ts.map +1 -1
- package/dist/server/plugins/table/funcs/metaFormat/getSelectVal.js +8 -1
- package/dist/server/routes/table/controllers/suggest.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/suggest.js +24 -10
- package/dist/server/routes/util/controllers/config.d.ts +2 -0
- package/dist/server/routes/util/controllers/config.d.ts.map +1 -0
- package/dist/server/routes/util/controllers/config.js +33 -0
- package/dist/server/routes/util/index.js +2 -2
- package/dist/utils.d.ts +1 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +1 -0
- package/package.json +1 -1
|
@@ -35,7 +35,7 @@ ALTER TABLE admin.users add CONSTRAINT admin_user_user_rnokpp UNIQUE (user_rnokp
|
|
|
35
35
|
|
|
36
36
|
-- update admin.users set user_type='regular' where user_type not in ('viewer', 'regular','admin','superadmin');
|
|
37
37
|
-- ALTER TABLE admin.users add constraint admin_user_type_check CHECK (user_type=any(array['viewer', 'regular','admin','superadmin']));
|
|
38
|
-
insert into admin.users (uid,login,password,user_type,enabled)values('viewer','viewer','viewer','viewer', false) on conflict (uid) do update set enabled=excluded.enabled;
|
|
38
|
+
insert into admin.users (uid,login,sur_name,password,user_type,enabled)values('viewer','viewer','viewer','viewer','viewer', false) on conflict (uid) do update set enabled=excluded.enabled, sur_name=excluded.sur_name;
|
|
39
39
|
-- update admin.users set enabled=true where uid='viewer';
|
|
40
40
|
|
|
41
41
|
COMMENT ON TABLE admin.users IS 'Користувачі';
|
|
@@ -1,5 +1,13 @@
|
|
|
1
|
-
declare const
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
declare const getS3Client: ({ accessKeyId: accessKeyId1, secretAccessKey: secretAccessKey1, user, password, endpoint: endpoint1, host, region, }?: {
|
|
2
|
+
accessKeyId?: string;
|
|
3
|
+
secretAccessKey?: string;
|
|
4
|
+
user?: string;
|
|
5
|
+
password?: string;
|
|
6
|
+
endpoint?: string;
|
|
7
|
+
host?: string;
|
|
8
|
+
region: string;
|
|
9
|
+
}) => any;
|
|
10
|
+
declare const s3Client: any;
|
|
11
|
+
export { getS3Client, s3Client };
|
|
12
|
+
export default s3Client;
|
|
5
13
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../server/plugins/file/providers/s3/client.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../server/plugins/file/providers/s3/client.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,WAAW,GACf,uHAQG;IACD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACE,QA+BpB,CAAC;AAEF,QAAA,MAAM,QAAQ,KAAgB,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AAEjC,eAAe,QAAQ,CAAC"}
|
|
@@ -1,26 +1,32 @@
|
|
|
1
1
|
import { S3Client } from "@aws-sdk/client-s3";
|
|
2
2
|
import { createHash } from "crypto";
|
|
3
|
-
|
|
4
|
-
return createHash("md5").update(string).digest("hex");
|
|
5
|
-
}
|
|
3
|
+
import config from "../.../../../../../../config.js";
|
|
6
4
|
const CLIENT_CACHE = {};
|
|
7
|
-
const getS3Client = ({ accessKeyId, secretAccessKey, user, password, endpoint, host, region = "us-west-2", }) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
5
|
+
const getS3Client = ({ accessKeyId: accessKeyId1, secretAccessKey: secretAccessKey1, user, password, endpoint: endpoint1, host, region = "us-west-2", } = config.s3 || {}) => {
|
|
6
|
+
const accessKeyId = accessKeyId1 || user;
|
|
7
|
+
const endpoint = endpoint1 || host;
|
|
8
|
+
const secretAccessKey = secretAccessKey1 || password;
|
|
9
|
+
if (!accessKeyId || !secretAccessKey || !endpoint) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
const uniqueKey = createHash("md5")
|
|
13
|
+
.update(`${accessKeyId}${secretAccessKey}${endpoint}`)
|
|
14
|
+
.digest("hex");
|
|
15
|
+
if (CLIENT_CACHE[uniqueKey]) {
|
|
16
|
+
return CLIENT_CACHE[uniqueKey];
|
|
17
|
+
}
|
|
18
|
+
const client = new S3Client({
|
|
15
19
|
credentials: {
|
|
16
|
-
accessKeyId
|
|
17
|
-
secretAccessKey
|
|
20
|
+
accessKeyId,
|
|
21
|
+
secretAccessKey,
|
|
18
22
|
},
|
|
19
|
-
endpoint
|
|
23
|
+
endpoint,
|
|
20
24
|
forcePathStyle: true,
|
|
21
25
|
region,
|
|
22
26
|
});
|
|
23
27
|
CLIENT_CACHE[uniqueKey] = client;
|
|
24
28
|
return client;
|
|
25
29
|
};
|
|
26
|
-
|
|
30
|
+
const s3Client = getS3Client();
|
|
31
|
+
export { getS3Client, s3Client };
|
|
32
|
+
export default s3Client;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
declare const getFileStream: (s3Settings
|
|
1
|
+
declare const getFileStream: (s3Settings?: Record<string, any>) => (fp: string, options?: Record<string, any>) => Promise<any>;
|
|
2
2
|
export default getFileStream;
|
|
3
3
|
//# sourceMappingURL=downloadFile.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"downloadFile.d.ts","sourceRoot":"","sources":["../../../../../../../server/plugins/file/providers/s3/funcs/downloadFile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"downloadFile.d.ts","sourceRoot":"","sources":["../../../../../../../server/plugins/file/providers/s3/funcs/downloadFile.ts"],"names":[],"mappings":"AAgBA,QAAA,MAAM,aAAa,GAChB,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAC1B,IAAI,MAAM,EAAE,UAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,iBA2CnD,CAAC;AAEJ,eAAe,aAAa,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { GetObjectCommand } from "@aws-sdk/client-s3";
|
|
2
2
|
import { readFile } from "node:fs/promises";
|
|
3
3
|
import { createReadStream } from "node:fs";
|
|
4
|
-
import
|
|
4
|
+
import s3Client from "../client.js";
|
|
5
|
+
import config from "../../../../../../config.js";
|
|
5
6
|
import streamToBuffer from "../../utils/streamToBuffer.js";
|
|
6
7
|
// if not found on s3 => fs
|
|
7
8
|
import fsFuncs from "../../fs.js";
|
|
@@ -9,11 +10,11 @@ import getPath from "../../../utils/getPath.js";
|
|
|
9
10
|
import getS3FilePath from "./utils/getS3FilePath.js";
|
|
10
11
|
const getFileStream = (s3Settings) => async (fp, options = {}) => {
|
|
11
12
|
const filepath = getS3FilePath(fp, s3Settings);
|
|
12
|
-
const s3Client = client.getS3Client(s3Settings);
|
|
13
|
-
const bucketName = s3Settings.containerName;
|
|
14
13
|
const bucketParams = {
|
|
15
|
-
Bucket:
|
|
14
|
+
Bucket: (s3Settings || config.s3 || { containerName: "work" })
|
|
15
|
+
.containerName,
|
|
16
16
|
Key: filepath[0] === "/" ? filepath?.slice(1) : filepath,
|
|
17
|
+
Range: options.Range,
|
|
17
18
|
};
|
|
18
19
|
try {
|
|
19
20
|
const data = await s3Client.send(new GetObjectCommand(bucketParams));
|
|
@@ -23,6 +24,10 @@ const getFileStream = (s3Settings) => async (fp, options = {}) => {
|
|
|
23
24
|
return data.Body;
|
|
24
25
|
}
|
|
25
26
|
catch (err) {
|
|
27
|
+
// disable fs fallback for chunked download from s3
|
|
28
|
+
if (options.fallback === false) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
26
31
|
const filepath1 = getPath(fp, options);
|
|
27
32
|
if (!filepath1) {
|
|
28
33
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileExists.d.ts","sourceRoot":"","sources":["../../../../../../../server/plugins/file/providers/s3/funcs/fileExists.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fileExists.d.ts","sourceRoot":"","sources":["../../../../../../../server/plugins/file/providers/s3/funcs/fileExists.ts"],"names":[],"mappings":"AAWA,QAAA,MAAM,eAAe,GAClB,aAAa,GAAG,MACV,IAAI,GAAG,EAAE,UAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,iBAmBhD,CAAC;AAEJ,eAAe,eAAe,CAAC"}
|
|
@@ -1,22 +1,25 @@
|
|
|
1
|
-
import { HeadObjectCommand
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
1
|
+
import { HeadObjectCommand } from "@aws-sdk/client-s3";
|
|
2
|
+
import s3Client from "../client.js";
|
|
3
|
+
import config from "../../../../../../config.js";
|
|
4
|
+
import getPath from "../../../utils/getPath.js";
|
|
5
|
+
import getS3FilePath from "./utils/getS3FilePath.js";
|
|
5
6
|
// if not found on s3 => fs
|
|
6
|
-
import isFileExists from
|
|
7
|
-
const getFileMetadata = (s3Settings) => async (fp) => {
|
|
7
|
+
import isFileExists from "../../../utils/isFileExists.js";
|
|
8
|
+
const getFileMetadata = (s3Settings) => async (fp, options = {}) => {
|
|
8
9
|
const filepath = getS3FilePath(fp, s3Settings);
|
|
9
|
-
const s3Client = client.getS3Client(s3Settings);
|
|
10
|
-
const bucketName = s3Settings.containerName;
|
|
11
10
|
const bucketParams = {
|
|
12
|
-
Bucket:
|
|
13
|
-
|
|
11
|
+
Bucket: (s3Settings || config.s3 || { containerName: "work" })
|
|
12
|
+
.containerName,
|
|
13
|
+
Key: filepath[0] === "/" ? filepath?.slice(1) : filepath,
|
|
14
14
|
};
|
|
15
15
|
try {
|
|
16
16
|
const data = await s3Client.send(new HeadObjectCommand(bucketParams));
|
|
17
17
|
return data;
|
|
18
18
|
}
|
|
19
19
|
catch (err) {
|
|
20
|
+
if (options.fallback === false) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
20
23
|
const filepath1 = getPath(fp);
|
|
21
24
|
return isFileExists(filepath1);
|
|
22
25
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
declare const uploadFile: (s3Settings
|
|
1
|
+
declare const uploadFile: (s3Settings?: any) => (fp: any, data: any) => Promise<import("@aws-sdk/client-s3").CompleteMultipartUploadCommandOutput>;
|
|
2
2
|
export default uploadFile;
|
|
3
3
|
//# sourceMappingURL=uploadFile.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadFile.d.ts","sourceRoot":"","sources":["../../../../../../../server/plugins/file/providers/s3/funcs/uploadFile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"uploadFile.d.ts","sourceRoot":"","sources":["../../../../../../../server/plugins/file/providers/s3/funcs/uploadFile.ts"],"names":[],"mappings":"AAaA,QAAA,MAAM,UAAU,GAAI,aAAa,GAAG,MAAY,IAAI,GAAG,EAAE,MAAM,GAAG,+EA8BjE,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Upload } from "@aws-sdk/lib-storage";
|
|
2
|
-
import
|
|
2
|
+
import s3Client from "../client.js";
|
|
3
|
+
import config from "../../../../../../config.js";
|
|
3
4
|
import getValidData from "../../utils/getValidData.js";
|
|
4
5
|
import getDataSize from "../../utils/getDataSize.js";
|
|
5
6
|
import dataTypes from "../../utils/handlers/dataTypes.js";
|
|
@@ -11,10 +12,9 @@ const uploadFile = (s3Settings) => async (fp, data) => {
|
|
|
11
12
|
const size = await getDataSize({ data });
|
|
12
13
|
const type = getMimeType(filepath);
|
|
13
14
|
try {
|
|
14
|
-
const s3Client = client.getS3Client(s3Settings);
|
|
15
|
-
const bucketName = s3Settings.containerName;
|
|
16
15
|
const bucketParams = {
|
|
17
|
-
Bucket:
|
|
16
|
+
Bucket: (s3Settings || config.s3 || { containerName: "work" })
|
|
17
|
+
.containerName,
|
|
18
18
|
Key: filepath,
|
|
19
19
|
ContentLength: size,
|
|
20
20
|
ContentType: type,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getS3FilePath.d.ts","sourceRoot":"","sources":["../../../../../../../../server/plugins/file/providers/s3/funcs/utils/getS3FilePath.ts"],"names":[],"mappings":"AAgBA,iBAAS,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"getS3FilePath.d.ts","sourceRoot":"","sources":["../../../../../../../../server/plugins/file/providers/s3/funcs/utils/getS3FilePath.ts"],"names":[],"mappings":"AAgBA,iBAAS,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,UAAU,MAAY,UAQrD;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -7,7 +7,7 @@ function getPath(fp, s3Settings) {
|
|
|
7
7
|
}
|
|
8
8
|
return filepath;
|
|
9
9
|
}
|
|
10
|
-
function getS3FilePath(fp, s3Settings) {
|
|
10
|
+
function getS3FilePath(fp, s3Settings = config.s3) {
|
|
11
11
|
const filepath = getPath(fp, s3Settings);
|
|
12
12
|
const unixPath = filepath.replace(/\\/g, "/").split("work/").pop();
|
|
13
13
|
const prefix = !filepath.includes(config.folder) ? config.folder : "";
|
|
@@ -2,6 +2,6 @@ export default function s3Storage(opt: any): {
|
|
|
2
2
|
name: string;
|
|
3
3
|
downloadFile: (fp: string, options?: Record<string, any>) => Promise<any>;
|
|
4
4
|
uploadFile: (fp: any, data: any) => Promise<import("@aws-sdk/client-s3").CompleteMultipartUploadCommandOutput>;
|
|
5
|
-
fileExists: (fp: any) => Promise<any>;
|
|
5
|
+
fileExists: (fp: any, options?: Record<string, any>) => Promise<any>;
|
|
6
6
|
};
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getLogger.d.ts","sourceRoot":"","sources":["../../../../server/plugins/logger/getLogger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,UAAU,cAAe,SAAQ,IAAI,CAAC,MAAM;IAC1C,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IAClE,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5D;
|
|
1
|
+
{"version":3,"file":"getLogger.d.ts","sourceRoot":"","sources":["../../../../server/plugins/logger/getLogger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,UAAU,cAAe,SAAQ,IAAI,CAAC,MAAM;IAC1C,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IAClE,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5D;AAgDD,QAAA,MAAM,MAAM,EAAE,cAAgD,CAAC;AA+B/D,eAAe,MAAM,CAAC"}
|
|
@@ -7,7 +7,6 @@ import getHooks from "./getHooks.js";
|
|
|
7
7
|
import serializers from "./serializers.js";
|
|
8
8
|
import timestampWithTimeZone from "./timestampWithTimeZone.js";
|
|
9
9
|
const isServer = process.argv[2];
|
|
10
|
-
const rclient2 = getRedis({ db: 2 });
|
|
11
10
|
const level = process.env.LOG_LEVEL || "info";
|
|
12
11
|
console.log(`log level: ${level}`);
|
|
13
12
|
const targets = [
|
|
@@ -49,11 +48,14 @@ if (config.debug) {
|
|
|
49
48
|
});
|
|
50
49
|
}
|
|
51
50
|
logger.metrics = function metrics(key, val, dbName) {
|
|
51
|
+
const rclient2 = getRedis({ db: 2 });
|
|
52
52
|
const dbname = dbName || config.pg?.database;
|
|
53
53
|
if (!dbname && !isServer)
|
|
54
54
|
return;
|
|
55
55
|
if (!config.redis)
|
|
56
56
|
return;
|
|
57
|
-
rclient2
|
|
57
|
+
rclient2
|
|
58
|
+
.hincrby(`${dbname}:system_metrics`, key, val || 1)
|
|
59
|
+
.catch((err) => console.warn("logger metrics error", err.toString()));
|
|
58
60
|
};
|
|
59
61
|
export default logger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/plugins/logger/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/plugins/logger/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAsC7E,iBAAe,MAAM,CAAC,OAAO,EAAE,eAAe,iBAwC7C;AACD,eAAe,MAAM,CAAC"}
|
|
@@ -1,6 +1,33 @@
|
|
|
1
1
|
import errorMessage from "./errorMessage.js";
|
|
2
2
|
import logger from "./getLogger.js";
|
|
3
3
|
import pgClients from "../pg/pgClients.js";
|
|
4
|
+
// avoid process exit with exception on network changes: disconnect from db, internet altogether etc
|
|
5
|
+
process.on("uncaughtException", (err) => {
|
|
6
|
+
if (err.message === "Connection terminated unexpectedly" ||
|
|
7
|
+
err.code === "ECONNRESET") {
|
|
8
|
+
logger.file("pg", { error: err.toString() });
|
|
9
|
+
console.warn("Ignored pg connection drop:", err.toString());
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
throw err; // keep normal behavior
|
|
13
|
+
});
|
|
14
|
+
// avoid process exit with rejection during client connect at process start
|
|
15
|
+
process.on("unhandledRejection", (err) => {
|
|
16
|
+
if ([
|
|
17
|
+
"Client was closed and is not queryable",
|
|
18
|
+
"Connection terminated due to connection timeout",
|
|
19
|
+
].includes(err.message)) {
|
|
20
|
+
logger.file("pg", { error: err.message });
|
|
21
|
+
console.warn("Ignored pg connection timeout / close:", err.toString());
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (err.message === "Connection is closed.") {
|
|
25
|
+
logger.file("redis", { error: err.message });
|
|
26
|
+
console.warn("Ignored redis connection close:", err.toString());
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
throw err;
|
|
30
|
+
});
|
|
4
31
|
async function plugin(fastify) {
|
|
5
32
|
fastify.addHook("onResponse", async (req, reply) => {
|
|
6
33
|
if (reply?.statusCode && reply.statusCode >= 400) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/pg/funcs/pool.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/pg/funcs/pool.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,CAAC;yBAK7B,QAAO,GAAQ;AAA/B,wBAsEE"}
|
|
@@ -9,19 +9,6 @@ import config from "../../../../config.js";
|
|
|
9
9
|
export const Pools = {};
|
|
10
10
|
const errored = {};
|
|
11
11
|
const inited = {};
|
|
12
|
-
// avoid process exit with exception on network changes: disconnect from db, internet altogether etc
|
|
13
|
-
process.on("uncaughtException", (err) => {
|
|
14
|
-
if (err.message === "Connection terminated unexpectedly" ||
|
|
15
|
-
err.code === "ECONNRESET") {
|
|
16
|
-
logger.file("pg", {
|
|
17
|
-
message: "client connection drop",
|
|
18
|
-
error: err.toString(),
|
|
19
|
-
});
|
|
20
|
-
console.warn("Ignored pg connection drop:", err.toString());
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
throw err; // keep normal behavior
|
|
24
|
-
});
|
|
25
12
|
export default (param = {}) => {
|
|
26
13
|
if (!config.pg)
|
|
27
14
|
return null;
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
declare function getRedis({ db, host, port, }?: {
|
|
1
|
+
declare function getRedis({ db, host, port, closeClient, retryStrategy, enableOfflineQueue, lazyConnect, connectTimeout, maxRetriesPerRequest, }?: {
|
|
2
2
|
db: number;
|
|
3
3
|
host?: string;
|
|
4
4
|
port?: number;
|
|
5
|
+
closeClient?: boolean;
|
|
6
|
+
retryStrategy?: any;
|
|
7
|
+
enableOfflineQueue?: boolean;
|
|
8
|
+
lazyConnect?: boolean;
|
|
9
|
+
connectTimeout?: number;
|
|
10
|
+
maxRetriesPerRequest?: number;
|
|
5
11
|
}): any;
|
|
6
12
|
export default getRedis;
|
|
7
13
|
//# sourceMappingURL=getRedis.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getRedis.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/redis/funcs/getRedis.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getRedis.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/redis/funcs/getRedis.ts"],"names":[],"mappings":"AAQA,iBAAS,QAAQ,CACf,EACE,EAAE,EACF,IAAI,EACJ,IAAI,EACJ,WAAkB,EAClB,aAAwB,EACxB,kBAAyB,EACzB,WAAkB,EAClB,cAAqB,EACrB,oBAAwB,GACzB,GAAE;IACD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACnB,OAwCd;AAED,eAAe,QAAQ,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/* eslint-disable no-console */
|
|
2
1
|
import { Redis } from "ioredis";
|
|
3
|
-
// import Redis from 'ioredis';
|
|
4
2
|
import config from "../../../../config.js";
|
|
3
|
+
import logger from "../../logger/getLogger.js";
|
|
5
4
|
import redisClients from "./redisClients.js";
|
|
6
|
-
|
|
5
|
+
config.ready = config.ready || {};
|
|
6
|
+
function getRedis({ db, host, port, closeClient = true, retryStrategy = () => { }, enableOfflineQueue = true, lazyConnect = true, connectTimeout = 2000, maxRetriesPerRequest = 0, } = { db: 0 }) {
|
|
7
7
|
if (!config.redis && !host)
|
|
8
8
|
return null;
|
|
9
9
|
const key = host || port ? [host, port, db].join("-") : db;
|
|
@@ -16,9 +16,24 @@ function getRedis({ db, host, port, } = { db: 0 }) {
|
|
|
16
16
|
host: host || config.redis?.host || "127.0.0.1",
|
|
17
17
|
port: port || config.redis?.port || 6379, // Redis port
|
|
18
18
|
family: 4, // 4 (IPv4) or 6 (IPv6)
|
|
19
|
-
closeClient
|
|
19
|
+
closeClient,
|
|
20
|
+
retryStrategy,
|
|
21
|
+
enableOfflineQueue,
|
|
22
|
+
lazyConnect,
|
|
23
|
+
connectTimeout,
|
|
24
|
+
maxRetriesPerRequest,
|
|
20
25
|
};
|
|
21
26
|
redisClients[key] = new Redis(redisConfig);
|
|
27
|
+
redisClients[key].on("ready", () => {
|
|
28
|
+
config.ready[`redis:${key}`] = true;
|
|
29
|
+
});
|
|
30
|
+
redisClients[key].on("error", (err) => {
|
|
31
|
+
console.warn("Ignored redis error:", err.message);
|
|
32
|
+
logger.file("redis", { error: err.toString() });
|
|
33
|
+
if (err.code === "ETIMEDOUT") {
|
|
34
|
+
// redisClients[key].disconnect();
|
|
35
|
+
}
|
|
36
|
+
});
|
|
22
37
|
console.log("redis connected", db, host, port);
|
|
23
38
|
return redisClients[key];
|
|
24
39
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { ExtendedPG } from "../../../types/core.js";
|
|
2
|
-
export default function getSelectMeta({ name,
|
|
2
|
+
export default function getSelectMeta({ name, startsWith, key, nocache, parent, pg, }: {
|
|
3
3
|
name: string;
|
|
4
|
-
|
|
4
|
+
startsWith?: boolean;
|
|
5
|
+
key?: string;
|
|
5
6
|
nocache?: any;
|
|
6
7
|
parent?: string;
|
|
8
|
+
pg?: ExtendedPG;
|
|
7
9
|
}): Promise<any>;
|
|
8
10
|
//# sourceMappingURL=getSelectMeta.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSelectMeta.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/table/funcs/getSelectMeta.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAWzD,wBAA8B,aAAa,CAAC,EAC1C,IAAI,EACJ,
|
|
1
|
+
{"version":3,"file":"getSelectMeta.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/table/funcs/getSelectMeta.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAWzD,wBAA8B,aAAa,CAAC,EAC1C,IAAI,EACJ,UAAU,EACV,GAAG,EACH,OAAO,EACP,MAAM,EACN,EAAqB,GACtB,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,UAAU,CAAC;CACjB,gBA6GA"}
|
|
@@ -5,14 +5,21 @@ import pgClients from "../../pg/pgClients.js";
|
|
|
5
5
|
import getSelect from "./getSelect.js";
|
|
6
6
|
const limit = 50;
|
|
7
7
|
const selectMeta = {};
|
|
8
|
-
export default async function getSelectMeta({ name, pg = pgClients.client,
|
|
9
|
-
if (selectMeta[name] && !nocache)
|
|
8
|
+
export default async function getSelectMeta({ name, startsWith, key, nocache, parent, pg = pgClients.client, }) {
|
|
9
|
+
if (selectMeta[name] && !startsWith && !nocache)
|
|
10
10
|
return selectMeta[name];
|
|
11
|
+
if (selectMeta[name] && startsWith && key && !nocache) {
|
|
12
|
+
const searchQuery = `(${selectMeta[name].searchColumn
|
|
13
|
+
.split(",")
|
|
14
|
+
.map((el) => `left(lower("${el}"),${key.length}) = $1`)
|
|
15
|
+
.join(" or ")})`;
|
|
16
|
+
return { ...selectMeta[name], searchQuery };
|
|
17
|
+
}
|
|
11
18
|
const cls = await getSelect(name, pg, nocache);
|
|
12
19
|
const db = typeof cls?.db === "string" ? { database: cls.db } : cls?.db;
|
|
13
20
|
const pg1 = cls?.db ? getPG(db) : pg;
|
|
14
21
|
if (!pg1?.pk)
|
|
15
|
-
await pg1
|
|
22
|
+
await pg1?.init?.();
|
|
16
23
|
if (!cls)
|
|
17
24
|
return null;
|
|
18
25
|
if (cls.arr)
|
|
@@ -52,12 +59,13 @@ export default async function getSelectMeta({ name, pg = pgClients.client, nocac
|
|
|
52
59
|
(dataOrigin.fields.find((el) => el.name === "search")
|
|
53
60
|
? "search"
|
|
54
61
|
: dataOrigin1.fields[1].name);
|
|
62
|
+
// by default - search by like %value%
|
|
55
63
|
const searchQuery = `(${searchColumn
|
|
56
64
|
.split(",")
|
|
57
65
|
.map((el) => `lower("${el}") ~ $1 `)
|
|
58
66
|
.join(" or ")})`;
|
|
59
|
-
// console.log(dataOrigin1.fields.map((el) => el.name).join(','));
|
|
60
67
|
const data = {
|
|
68
|
+
searchColumn,
|
|
61
69
|
minLength: cls.minLength,
|
|
62
70
|
limit: cls.limit,
|
|
63
71
|
type: type.join(","),
|
|
@@ -73,5 +81,13 @@ export default async function getSelectMeta({ name, pg = pgClients.client, nocac
|
|
|
73
81
|
time: new Date().toISOString(),
|
|
74
82
|
};
|
|
75
83
|
selectMeta[name] = data;
|
|
84
|
+
// on demand - search by "start with these characters"
|
|
85
|
+
if (startsWith && key?.length) {
|
|
86
|
+
const searchQuery = `(${selectMeta[name].searchColumn
|
|
87
|
+
.split(",")
|
|
88
|
+
.map((el) => `left(lower("${el}"),${key.length}) = $1`)
|
|
89
|
+
.join(" or ")})`;
|
|
90
|
+
return { ...data, searchQuery };
|
|
91
|
+
}
|
|
76
92
|
return data;
|
|
77
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSelectVal.d.ts","sourceRoot":"","sources":["../../../../../../server/plugins/table/funcs/metaFormat/getSelectVal.ts"],"names":[],"mappings":"AAaA,wBAA8B,YAAY,CAAC,EACzC,EAAqB,EACrB,IAAI,EACJ,MAAM,EAAE,YAAY,EACpB,EAAU,GACX,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"getSelectVal.d.ts","sourceRoot":"","sources":["../../../../../../server/plugins/table/funcs/metaFormat/getSelectVal.ts"],"names":[],"mappings":"AAaA,wBAA8B,YAAY,CAAC,EACzC,EAAqB,EACrB,IAAI,EACJ,MAAM,EAAE,YAAY,EACpB,EAAU,GACX,EAAE,GAAG,gBA6GL"}
|
|
@@ -32,7 +32,14 @@ export default async function getSelectVal({ pg = pgClients.client, name, values
|
|
|
32
32
|
}
|
|
33
33
|
const id = selectIds[name];
|
|
34
34
|
// cache
|
|
35
|
-
const
|
|
35
|
+
const table = cls.sql
|
|
36
|
+
?.toLowerCase?.()
|
|
37
|
+
?.replace?.(/[\n\r]+/g, " ")
|
|
38
|
+
?.split?.(" from ")
|
|
39
|
+
?.filter?.((el) => /^[a-z0-9_]+\.[a-z0-9_]+/.test(el))
|
|
40
|
+
?.map?.((el) => el.split(/[ )]/)[0])?.[0];
|
|
41
|
+
const crudInc = table && config.redis ? (await rclient.get(`pg:${table}:crud`)) || 0 : 0;
|
|
42
|
+
const key = `select:${name}:${crudInc}`;
|
|
36
43
|
const cache = values?.length && config.redis && !config.disableCache
|
|
37
44
|
? (await rclient.hmget(key, values)).reduce((p, el, i) => ({
|
|
38
45
|
...p,
|
|
@@ -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":"AAoEA,wBAA8B,OAAO,CAAC,GAAG,EAAE,GAAG,gBA6V7C"}
|
|
@@ -7,20 +7,22 @@ const headers = {
|
|
|
7
7
|
"Access-Control-Allow-Methods": "GET",
|
|
8
8
|
"Cache-Control": "no-cache",
|
|
9
9
|
};
|
|
10
|
-
async function getTableColumnMeta(
|
|
11
|
-
if (!
|
|
10
|
+
async function getTableColumnMeta({ table, column, filtered, startsWith, key, pg, }) {
|
|
11
|
+
if (!table || !column) {
|
|
12
12
|
return null;
|
|
13
13
|
}
|
|
14
|
-
const loadTable = await getTemplate("table",
|
|
14
|
+
const loadTable = await getTemplate("table", table);
|
|
15
15
|
const { data: clsName } = loadTable?.columns?.find?.((el) => el.name === column) || {};
|
|
16
16
|
const { arr } = (await getSelect(clsName, pg)) || {};
|
|
17
17
|
const original = filtered
|
|
18
|
-
? `with c(id,text) as (select ${column} as id, ${column} as text from ${loadTable?.table ||
|
|
19
|
-
: `with c(id,text) as (select ${column} as id, ${column} as text, count(*) from ${loadTable?.table ||
|
|
18
|
+
? `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`;
|
|
20
20
|
return {
|
|
21
21
|
arr,
|
|
22
22
|
original,
|
|
23
|
-
searchQuery:
|
|
23
|
+
searchQuery: startsWith && key
|
|
24
|
+
? `(left(lower("text"),${key.length}) = $1 )`
|
|
25
|
+
: '(lower("text") ~ $1 )',
|
|
24
26
|
pk: "id",
|
|
25
27
|
};
|
|
26
28
|
}
|
|
@@ -64,12 +66,21 @@ export default async function suggest(req) {
|
|
|
64
66
|
return { status: 400, message: "param limit is invalid" };
|
|
65
67
|
}
|
|
66
68
|
const meta = tableName && column
|
|
67
|
-
? await getTableColumnMeta(
|
|
68
|
-
|
|
69
|
+
? await getTableColumnMeta({
|
|
70
|
+
table,
|
|
71
|
+
column,
|
|
72
|
+
filtered: query?.key || query?.val,
|
|
73
|
+
startsWith: !!query.start,
|
|
74
|
+
key: query.key,
|
|
69
75
|
pg: pg1,
|
|
76
|
+
})
|
|
77
|
+
: await getSelectMeta({
|
|
70
78
|
name: selectName,
|
|
71
79
|
nocache: query?.nocache,
|
|
80
|
+
startsWith: !!query.start,
|
|
81
|
+
key: query.key,
|
|
72
82
|
parent,
|
|
83
|
+
pg: pg1,
|
|
73
84
|
});
|
|
74
85
|
if (meta?.minLength && query.key && query.key.length < meta?.minLength) {
|
|
75
86
|
return { message: `min length: ${meta.minLength}` };
|
|
@@ -183,7 +194,7 @@ export default async function suggest(req) {
|
|
|
183
194
|
? ` ${meta.pk}=any('{${query.val.replace(/'/g, "''")}}')`
|
|
184
195
|
: "";
|
|
185
196
|
const where = [search, val, meta.pk ? `${meta.pk} is not null` : null]
|
|
186
|
-
.filter(
|
|
197
|
+
.filter(Boolean)
|
|
187
198
|
.join(" and ") || "true";
|
|
188
199
|
const loadTable = await getTemplate("table", query.token);
|
|
189
200
|
const tableName1 = hookBody?.table || loadTable?.table || query.token;
|
|
@@ -204,7 +215,7 @@ export default async function suggest(req) {
|
|
|
204
215
|
return sqlSuggest;
|
|
205
216
|
}
|
|
206
217
|
// query
|
|
207
|
-
const { rows: dataNew } = await pg.query(sqlSuggest, query.key ? [
|
|
218
|
+
const { rows: dataNew } = await pg.query(sqlSuggest, query.key ? [query.key.toLowerCase()] : []);
|
|
208
219
|
// const { rows: dataNew1 } = dataNew.length < limit ? await pg.query(sqlSuggest, query.key ? [`${query.key}`] : []) : {};
|
|
209
220
|
// const ids = dataNew.map((el) => el.id);
|
|
210
221
|
const data = dataNew.filter((el) => el.id && el.text);
|
|
@@ -223,6 +234,9 @@ export default async function suggest(req) {
|
|
|
223
234
|
total: meta.count - 0,
|
|
224
235
|
mode: type === "cls" ? "array" : "sql",
|
|
225
236
|
db: meta.db,
|
|
237
|
+
sql: config.local || user?.user_type?.includes?.("admin")
|
|
238
|
+
? sqlSuggest
|
|
239
|
+
: undefined,
|
|
226
240
|
data: data.map((el) => ({
|
|
227
241
|
count: el.count,
|
|
228
242
|
id: el.id,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../server/routes/util/controllers/config.ts"],"names":[],"mappings":"AAyBA,wBAA8B,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,gBAOpD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import config from "../../../../config.js";
|
|
2
|
+
function substringObject(data, substr) {
|
|
3
|
+
if (typeof data === "boolean")
|
|
4
|
+
return data;
|
|
5
|
+
if (!data)
|
|
6
|
+
return "null";
|
|
7
|
+
// array string
|
|
8
|
+
if (typeof data === "string")
|
|
9
|
+
return data.substring(0, substr);
|
|
10
|
+
// array object
|
|
11
|
+
return Object.keys(data).reduce((acc, curr) => {
|
|
12
|
+
if (Array.isArray(data[curr])) {
|
|
13
|
+
return { [curr]: processObject(data[curr], substr) };
|
|
14
|
+
}
|
|
15
|
+
return { ...acc, [curr]: processObject(data[curr], substr) };
|
|
16
|
+
}, {});
|
|
17
|
+
}
|
|
18
|
+
function processObject(obj, substr) {
|
|
19
|
+
// root string
|
|
20
|
+
if (typeof obj === "string")
|
|
21
|
+
return obj.substring(0, substr);
|
|
22
|
+
// root array / object
|
|
23
|
+
return Array.isArray(obj)
|
|
24
|
+
? obj.map((el) => substringObject(el, substr))
|
|
25
|
+
: substringObject(obj, substr);
|
|
26
|
+
}
|
|
27
|
+
export default async function apiConfig({ user }) {
|
|
28
|
+
if (config.local || (config.debug && user?.user_type?.includes?.("admin"))) {
|
|
29
|
+
return config;
|
|
30
|
+
}
|
|
31
|
+
const reductConfig = processObject(config, 3);
|
|
32
|
+
return reductConfig;
|
|
33
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import apiConfig from "./controllers/config.js";
|
|
2
2
|
import nextId from "./controllers/next.id.js";
|
|
3
3
|
import statusMonitor from "./controllers/status.monitor.js";
|
|
4
4
|
import userTokens from "./controllers/user.tokens.js";
|
|
@@ -12,6 +12,6 @@ function plugin(app, opt = {}) {
|
|
|
12
12
|
...(req.headers || {}),
|
|
13
13
|
sessionId: req.session?.sessionId,
|
|
14
14
|
}));
|
|
15
|
-
app.get("/config", { config: { role: "admin" } },
|
|
15
|
+
app.get("/config", { config: { policy: "L0" /*role: "admin"*/ } }, apiConfig);
|
|
16
16
|
}
|
|
17
17
|
export default plugin;
|
package/dist/utils.d.ts
CHANGED
|
@@ -80,6 +80,7 @@ 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 { default as s3Client } from "./server/plugins/file/providers/s3/client.js";
|
|
83
84
|
declare const _default: null;
|
|
84
85
|
export default _default;
|
|
85
86
|
//# sourceMappingURL=utils.d.ts.map
|
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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"}
|
package/dist/utils.js
CHANGED
|
@@ -97,4 +97,5 @@ export { default as getAdminAccess } from "./server/plugins/access/funcs/getAdmi
|
|
|
97
97
|
export { default as sendNotification } from "./server/plugins/auth/funcs/sendNotification.js"; // email
|
|
98
98
|
export { default as addUserNotification } from "./server/plugins/notifications/addNotification.js"; // popup, widget, interface etc.
|
|
99
99
|
export { addUserCls, editUserCls, deleteUserCls, getUserCls, } from "./server/plugins/usercls/index.js";
|
|
100
|
+
export { default as s3Client } from "./server/plugins/file/providers/s3/client.js";
|
|
100
101
|
export default null;
|