@tachybase/database 1.3.25 → 1.3.27
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/lib/collection.d.ts +1 -1
- package/lib/collection.js +2 -2
- package/lib/database.d.ts +1 -1
- package/lib/database.js +6 -6
- package/lib/fields/password-field.js +5 -5
- package/lib/helpers.js +4 -4
- package/lib/mock-database.js +3 -3
- package/lib/repositories/tree-repository/adjacency-list-repository.js +2 -2
- package/lib/sql-parser/postgres.js +2 -2
- package/lib/utils.js +2 -2
- package/lib/value-parsers/to-many-value-parser.js +4 -4
- package/package.json +3 -6
package/lib/collection.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EventEmitter } from 'events';
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
2
|
import { ModelOptions, ModelStatic, QueryInterfaceDropTableOptions, QueryInterfaceOptions, SyncOptions, Transactionable } from 'sequelize';
|
|
3
3
|
import { BuiltInGroup } from './collection-group-manager';
|
|
4
4
|
import { Database } from './database';
|
package/lib/collection.js
CHANGED
|
@@ -74,7 +74,7 @@ __export(collection_exports, {
|
|
|
74
74
|
Collection: () => Collection
|
|
75
75
|
});
|
|
76
76
|
module.exports = __toCommonJS(collection_exports);
|
|
77
|
-
var
|
|
77
|
+
var import_node_events = require("node:events");
|
|
78
78
|
var import_deepmerge = __toESM(require("deepmerge"));
|
|
79
79
|
var import_lodash = __toESM(require("lodash"));
|
|
80
80
|
var import_sequelize = require("sequelize");
|
|
@@ -107,7 +107,7 @@ function EnsureAtomicity(originalMethod, context) {
|
|
|
107
107
|
return newMethod;
|
|
108
108
|
}
|
|
109
109
|
__name(EnsureAtomicity, "EnsureAtomicity");
|
|
110
|
-
const _Collection = class _Collection extends (_a =
|
|
110
|
+
const _Collection = class _Collection extends (_a = import_node_events.EventEmitter, _setField_dec = [EnsureAtomicity], _a) {
|
|
111
111
|
constructor(options, context) {
|
|
112
112
|
super();
|
|
113
113
|
__runInitializers(_init, 5, this);
|
package/lib/database.d.ts
CHANGED
package/lib/database.js
CHANGED
|
@@ -36,8 +36,8 @@ __export(database_exports, {
|
|
|
36
36
|
extendCollection: () => extendCollection
|
|
37
37
|
});
|
|
38
38
|
module.exports = __toCommonJS(database_exports);
|
|
39
|
-
var
|
|
40
|
-
var
|
|
39
|
+
var import_node_events = require("node:events");
|
|
40
|
+
var import_node_path = require("node:path");
|
|
41
41
|
var import_logger = require("@tachybase/logger");
|
|
42
42
|
var import_utils = require("@tachybase/utils");
|
|
43
43
|
var import_chalk = __toESM(require("chalk"));
|
|
@@ -119,7 +119,7 @@ const _DatabaseVersion = class _DatabaseVersion {
|
|
|
119
119
|
};
|
|
120
120
|
__name(_DatabaseVersion, "DatabaseVersion");
|
|
121
121
|
let DatabaseVersion = _DatabaseVersion;
|
|
122
|
-
const _Database = class _Database extends
|
|
122
|
+
const _Database = class _Database extends import_node_events.EventEmitter {
|
|
123
123
|
constructor(options) {
|
|
124
124
|
super();
|
|
125
125
|
this.fieldTypes = /* @__PURE__ */ new Map();
|
|
@@ -165,8 +165,8 @@ const _Database = class _Database extends import_events.EventEmitter {
|
|
|
165
165
|
this._instanceId = options.instanceId;
|
|
166
166
|
}
|
|
167
167
|
if (options.storage && options.storage !== ":memory:") {
|
|
168
|
-
if (!(0,
|
|
169
|
-
opts.storage = (0,
|
|
168
|
+
if (!(0, import_node_path.isAbsolute)(options.storage)) {
|
|
169
|
+
opts.storage = (0, import_node_path.resolve)(process.cwd(), options.storage);
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
172
|
if (options.dialect === "sqlite") {
|
|
@@ -370,7 +370,7 @@ const _Database = class _Database extends import_events.EventEmitter {
|
|
|
370
370
|
ignore: ["**/*.d.ts"]
|
|
371
371
|
});
|
|
372
372
|
for (const file of files) {
|
|
373
|
-
let filename = (0,
|
|
373
|
+
let filename = (0, import_node_path.basename)(file);
|
|
374
374
|
filename = filename.substring(0, filename.lastIndexOf(".")) || filename;
|
|
375
375
|
this.migrations.add({
|
|
376
376
|
name: namespace ? `${namespace}/${filename}` : filename,
|
|
@@ -31,7 +31,7 @@ __export(password_field_exports, {
|
|
|
31
31
|
PasswordField: () => PasswordField
|
|
32
32
|
});
|
|
33
33
|
module.exports = __toCommonJS(password_field_exports);
|
|
34
|
-
var
|
|
34
|
+
var import_node_crypto = __toESM(require("node:crypto"));
|
|
35
35
|
var import_sequelize = require("sequelize");
|
|
36
36
|
var import_field = require("./field");
|
|
37
37
|
const _PasswordField = class _PasswordField extends import_field.Field {
|
|
@@ -45,17 +45,17 @@ const _PasswordField = class _PasswordField extends import_field.Field {
|
|
|
45
45
|
return new Promise((resolve, reject) => {
|
|
46
46
|
const salt = hash.substring(0, randomBytesSize * 2);
|
|
47
47
|
const key = hash.substring(randomBytesSize * 2);
|
|
48
|
-
|
|
48
|
+
import_node_crypto.default.scrypt(password, salt, length / 2 - randomBytesSize, (err, derivedKey) => {
|
|
49
49
|
if (err) reject(err);
|
|
50
|
-
resolve(key
|
|
50
|
+
resolve(key === derivedKey.toString("hex"));
|
|
51
51
|
});
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
54
|
async hash(password) {
|
|
55
55
|
const { length = 64, randomBytesSize = 8 } = this.options;
|
|
56
56
|
return new Promise((resolve, reject) => {
|
|
57
|
-
const salt =
|
|
58
|
-
|
|
57
|
+
const salt = import_node_crypto.default.randomBytes(randomBytesSize).toString("hex");
|
|
58
|
+
import_node_crypto.default.scrypt(password, salt, length / 2 - randomBytesSize, (err, derivedKey) => {
|
|
59
59
|
if (err) reject(err);
|
|
60
60
|
resolve(salt + derivedKey.toString("hex"));
|
|
61
61
|
});
|
package/lib/helpers.js
CHANGED
|
@@ -32,14 +32,14 @@ __export(helpers_exports, {
|
|
|
32
32
|
parseDatabaseOptionsFromEnv: () => parseDatabaseOptionsFromEnv
|
|
33
33
|
});
|
|
34
34
|
module.exports = __toCommonJS(helpers_exports);
|
|
35
|
-
var
|
|
35
|
+
var import_node_fs = __toESM(require("node:fs"));
|
|
36
36
|
var import_semver = __toESM(require("semver"));
|
|
37
37
|
function getEnvValue(key, defaultValue) {
|
|
38
38
|
return process.env[key] || defaultValue;
|
|
39
39
|
}
|
|
40
40
|
__name(getEnvValue, "getEnvValue");
|
|
41
41
|
function isFilePath(value) {
|
|
42
|
-
return
|
|
42
|
+
return import_node_fs.default.promises.stat(value).then((stats) => stats.isFile()).catch((err) => {
|
|
43
43
|
if (err.code === "ENOENT") {
|
|
44
44
|
return false;
|
|
45
45
|
}
|
|
@@ -54,7 +54,7 @@ function getValueOrFileContent(envVarName) {
|
|
|
54
54
|
}
|
|
55
55
|
return isFilePath(value).then((isFile) => {
|
|
56
56
|
if (isFile) {
|
|
57
|
-
return
|
|
57
|
+
return import_node_fs.default.promises.readFile(value, "utf8");
|
|
58
58
|
}
|
|
59
59
|
return value;
|
|
60
60
|
}).catch((error) => {
|
|
@@ -83,7 +83,7 @@ function extractSSLOptionsFromEnv() {
|
|
|
83
83
|
__name(extractSSLOptionsFromEnv, "extractSSLOptionsFromEnv");
|
|
84
84
|
async function parseDatabaseOptionsFromEnv() {
|
|
85
85
|
const databaseOptions = {
|
|
86
|
-
logging: process.env.DB_LOGGING
|
|
86
|
+
logging: process.env.DB_LOGGING === "on" ? customLogger : false,
|
|
87
87
|
dialect: process.env.DB_DIALECT,
|
|
88
88
|
storage: process.env.DB_STORAGE,
|
|
89
89
|
username: process.env.DB_USER,
|
package/lib/mock-database.js
CHANGED
|
@@ -33,7 +33,7 @@ __export(mock_database_exports, {
|
|
|
33
33
|
mockDatabase: () => mockDatabase
|
|
34
34
|
});
|
|
35
35
|
module.exports = __toCommonJS(mock_database_exports);
|
|
36
|
-
var
|
|
36
|
+
var import_node_path = __toESM(require("node:path"));
|
|
37
37
|
var import_utils = require("@tachybase/utils");
|
|
38
38
|
var import_nanoid = require("nanoid");
|
|
39
39
|
var import_node_fetch = __toESM(require("node-fetch"));
|
|
@@ -68,7 +68,7 @@ function getConfigByEnv() {
|
|
|
68
68
|
schema: process.env.DB_SCHEMA !== "public" ? process.env.DB_SCHEMA : void 0,
|
|
69
69
|
dialectOptions: {}
|
|
70
70
|
};
|
|
71
|
-
if (process.env.DB_DIALECT
|
|
71
|
+
if (process.env.DB_DIALECT === "postgres") {
|
|
72
72
|
options.dialectOptions["application_name"] = "tachybase.main";
|
|
73
73
|
}
|
|
74
74
|
return options;
|
|
@@ -101,7 +101,7 @@ function mockDatabase(options = {}) {
|
|
|
101
101
|
const instanceId = `d_${nanoid()}`;
|
|
102
102
|
const databaseName = `${process.env["DB_TEST_PREFIX"]}_${instanceId}`;
|
|
103
103
|
if (dbOptions.dialect === "sqlite") {
|
|
104
|
-
dbOptions.storage =
|
|
104
|
+
dbOptions.storage = import_node_path.default.resolve(import_node_path.default.dirname(dbOptions.storage), databaseName);
|
|
105
105
|
} else {
|
|
106
106
|
dbOptions.database = databaseName;
|
|
107
107
|
}
|
|
@@ -55,7 +55,7 @@ const _AdjacencyListRepository = class _AdjacencyListRepository extends import_r
|
|
|
55
55
|
}
|
|
56
56
|
async update(options) {
|
|
57
57
|
return super.update({
|
|
58
|
-
...options
|
|
58
|
+
...options,
|
|
59
59
|
addIndex: false
|
|
60
60
|
});
|
|
61
61
|
}
|
|
@@ -77,7 +77,7 @@ const _AdjacencyListRepository = class _AdjacencyListRepository extends import_r
|
|
|
77
77
|
const foreignKey = treeParentField.options.foreignKey;
|
|
78
78
|
const childrenKey = ((_a = collection.treeChildrenField) == null ? void 0 : _a.name) ?? "children";
|
|
79
79
|
const parentIds = parentNodes.map((node) => node[primaryKey]);
|
|
80
|
-
if (parentIds.length
|
|
80
|
+
if (parentIds.length === 0) {
|
|
81
81
|
this.database.logger.warn("parentIds is empty");
|
|
82
82
|
return parentNodes;
|
|
83
83
|
}
|
|
@@ -1651,7 +1651,7 @@ function peg$parse(input, options) {
|
|
|
1651
1651
|
column: c,
|
|
1652
1652
|
definition: d,
|
|
1653
1653
|
resource: "column",
|
|
1654
|
-
...cdo
|
|
1654
|
+
...cdo
|
|
1655
1655
|
};
|
|
1656
1656
|
}, "peg$f72");
|
|
1657
1657
|
var peg$f73 = /* @__PURE__ */ __name(function(n, df) {
|
|
@@ -2564,7 +2564,7 @@ function peg$parse(input, options) {
|
|
|
2564
2564
|
distinct: d,
|
|
2565
2565
|
columns: c,
|
|
2566
2566
|
into: {
|
|
2567
|
-
...ci || fi || li
|
|
2567
|
+
...ci || fi || li,
|
|
2568
2568
|
position: ci && "column" || fi && "from" || li && "end"
|
|
2569
2569
|
},
|
|
2570
2570
|
from: f,
|
package/lib/utils.js
CHANGED
|
@@ -36,11 +36,11 @@ __export(utils_exports, {
|
|
|
36
36
|
snakeCase: () => snakeCase
|
|
37
37
|
});
|
|
38
38
|
module.exports = __toCommonJS(utils_exports);
|
|
39
|
-
var
|
|
39
|
+
var import_node_crypto = __toESM(require("node:crypto"));
|
|
40
40
|
var import_lodash = __toESM(require("lodash"));
|
|
41
41
|
var import_identifier_error = require("./errors/identifier-error");
|
|
42
42
|
function md5(value) {
|
|
43
|
-
return
|
|
43
|
+
return import_node_crypto.default.createHash("md5").update(value).digest("hex");
|
|
44
44
|
}
|
|
45
45
|
__name(md5, "md5");
|
|
46
46
|
const MAX_IDENTIFIER_LENGTH = 63;
|
|
@@ -21,7 +21,7 @@ __export(to_many_value_parser_exports, {
|
|
|
21
21
|
ToManyValueParser: () => ToManyValueParser
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(to_many_value_parser_exports);
|
|
24
|
-
var
|
|
24
|
+
var import_node_path = require("node:path");
|
|
25
25
|
var import_base_value_parser = require("./base-value-parser");
|
|
26
26
|
const _ToManyValueParser = class _ToManyValueParser extends import_base_value_parser.BaseValueParser {
|
|
27
27
|
constructor() {
|
|
@@ -34,9 +34,9 @@ const _ToManyValueParser = class _ToManyValueParser extends import_base_value_pa
|
|
|
34
34
|
async setAttachments(value) {
|
|
35
35
|
this.value = this.toArr(value).map((url) => {
|
|
36
36
|
return {
|
|
37
|
-
title: (0,
|
|
38
|
-
extname: (0,
|
|
39
|
-
filename: (0,
|
|
37
|
+
title: (0, import_node_path.basename)(url),
|
|
38
|
+
extname: (0, import_node_path.extname)(url),
|
|
39
|
+
filename: (0, import_node_path.basename)(url),
|
|
40
40
|
url
|
|
41
41
|
};
|
|
42
42
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tachybase/database",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.27",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -25,15 +25,12 @@
|
|
|
25
25
|
"semver": "7.7.2",
|
|
26
26
|
"sequelize": "^6.37.5",
|
|
27
27
|
"umzug": "^3.8.2",
|
|
28
|
-
"@tachybase/
|
|
29
|
-
"@tachybase/
|
|
28
|
+
"@tachybase/utils": "1.3.27",
|
|
29
|
+
"@tachybase/logger": "1.3.27"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@types/flat": "^5.0.5",
|
|
33
33
|
"@types/glob": "^7.2.0",
|
|
34
34
|
"@types/lodash": "^4.17.20"
|
|
35
|
-
},
|
|
36
|
-
"scripts": {
|
|
37
|
-
"build": "tachybase-build --no-dts @tachybase/database"
|
|
38
35
|
}
|
|
39
36
|
}
|