dbgate-api 4.7.2 → 4.7.3-alpha.5
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/{.env-portal → env/portal/.env} +0 -0
- package/{.env-singledb → env/singledb/.env} +0 -0
- package/package.json +7 -7
- package/src/controllers/apps.js +12 -0
- package/src/controllers/files.js +3 -2
- package/src/controllers/plugins.js +6 -0
- package/src/currentVersion.js +2 -2
- package/src/main.js +6 -1
- package/src/shell/copyStream.js +36 -7
- package/src/utility/ColumnMapTransformStream.js +21 -0
- package/src/utility/freeTableStorage.js +1 -1
|
File without changes
|
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dbgate-api",
|
|
3
3
|
"main": "src/index.js",
|
|
4
|
-
"version": "4.7.
|
|
4
|
+
"version": "4.7.3-alpha.5",
|
|
5
5
|
"homepage": "https://dbgate.org/",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
"compare-versions": "^3.6.0",
|
|
26
26
|
"cors": "^2.8.5",
|
|
27
27
|
"cross-env": "^6.0.3",
|
|
28
|
-
"dbgate-query-splitter": "^4.7.
|
|
29
|
-
"dbgate-sqltree": "^4.7.
|
|
30
|
-
"dbgate-tools": "^4.7.
|
|
28
|
+
"dbgate-query-splitter": "^4.7.3-alpha.5",
|
|
29
|
+
"dbgate-sqltree": "^4.7.3-alpha.5",
|
|
30
|
+
"dbgate-tools": "^4.7.3-alpha.5",
|
|
31
31
|
"diff": "^5.0.0",
|
|
32
32
|
"diff2html": "^3.4.13",
|
|
33
33
|
"eslint": "^6.8.0",
|
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
},
|
|
54
54
|
"scripts": {
|
|
55
55
|
"start": "env-cmd node src/index.js",
|
|
56
|
-
"start:portal": "env-cmd -f
|
|
57
|
-
"start:singledb": "env-cmd -f
|
|
56
|
+
"start:portal": "env-cmd -f env/portal/.env node src/index.js",
|
|
57
|
+
"start:singledb": "env-cmd -f env/singledb/.env node src/index.js",
|
|
58
58
|
"start:filedb": "env-cmd node src/index.js /home/jena/test/chinook/Chinook.db",
|
|
59
59
|
"start:singleconn": "env-cmd node src/index.js --server localhost --user root --port 3307 --engine mysql@dbgate-plugin-mysql --password test",
|
|
60
60
|
"ts": "tsc",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"devDependencies": {
|
|
64
64
|
"@types/fs-extra": "^9.0.11",
|
|
65
65
|
"@types/lodash": "^4.14.149",
|
|
66
|
-
"dbgate-types": "^4.7.
|
|
66
|
+
"dbgate-types": "^4.7.3-alpha.5",
|
|
67
67
|
"env-cmd": "^10.1.0",
|
|
68
68
|
"node-loader": "^1.0.2",
|
|
69
69
|
"nodemon": "^2.0.2",
|
package/src/controllers/apps.js
CHANGED
|
@@ -265,4 +265,16 @@ module.exports = {
|
|
|
265
265
|
|
|
266
266
|
return true;
|
|
267
267
|
},
|
|
268
|
+
|
|
269
|
+
createConfigFile_meta: true,
|
|
270
|
+
async createConfigFile({ appFolder, fileName, content }) {
|
|
271
|
+
const file = path.join(appdir(), appFolder, fileName);
|
|
272
|
+
if (!(await fs.exists(file))) {
|
|
273
|
+
await fs.writeFile(file, JSON.stringify(content, undefined, 2));
|
|
274
|
+
socket.emitChanged(`app-files-changed-${appFolder}`);
|
|
275
|
+
socket.emitChanged('used-apps-changed');
|
|
276
|
+
return true;
|
|
277
|
+
}
|
|
278
|
+
return false;
|
|
279
|
+
},
|
|
268
280
|
};
|
package/src/controllers/files.js
CHANGED
|
@@ -98,6 +98,7 @@ module.exports = {
|
|
|
98
98
|
const app = folder.substring('app:'.length);
|
|
99
99
|
await fs.writeFile(path.join(appdir(), app, file), serialize(format, data));
|
|
100
100
|
socket.emitChanged(`app-files-changed-${app}`);
|
|
101
|
+
socket.emitChanged('used-apps-changed');
|
|
101
102
|
apps.emitChangedDbApp(folder);
|
|
102
103
|
return true;
|
|
103
104
|
} else {
|
|
@@ -141,8 +142,8 @@ module.exports = {
|
|
|
141
142
|
},
|
|
142
143
|
|
|
143
144
|
generateUploadsFile_meta: true,
|
|
144
|
-
async generateUploadsFile() {
|
|
145
|
-
const fileName = `${uuidv1()}
|
|
145
|
+
async generateUploadsFile({ extension }) {
|
|
146
|
+
const fileName = `${uuidv1()}.${extension || 'html'}`;
|
|
146
147
|
return {
|
|
147
148
|
fileName,
|
|
148
149
|
filePath: path.join(uploadsdir(), fileName),
|
|
@@ -89,6 +89,12 @@ module.exports = {
|
|
|
89
89
|
encoding: 'utf-8',
|
|
90
90
|
})
|
|
91
91
|
.then(x => JSON.parse(x));
|
|
92
|
+
if (!manifest.keywords) {
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
if (!manifest.keywords.includes('dbgateplugin')) {
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
92
98
|
const readmeFile = path.join(isPackaged ? packagedPluginsDir() : pluginsdir(), packageName, 'README.md');
|
|
93
99
|
// @ts-ignore
|
|
94
100
|
if (await fs.exists(readmeFile)) {
|
package/src/currentVersion.js
CHANGED
package/src/main.js
CHANGED
|
@@ -95,7 +95,12 @@ function start() {
|
|
|
95
95
|
|
|
96
96
|
if (platformInfo.isNpmDist) {
|
|
97
97
|
app.use(getExpressPath('/'), express.static(path.join(__dirname, '../../dbgate-web/public')));
|
|
98
|
-
getPort({
|
|
98
|
+
getPort({
|
|
99
|
+
port: parseInt(
|
|
100
|
+
// @ts-ignore
|
|
101
|
+
process.env.PORT || 3000
|
|
102
|
+
),
|
|
103
|
+
}).then(port => {
|
|
99
104
|
server.listen(port, () => {
|
|
100
105
|
console.log(`DbGate API listening on port ${port}`);
|
|
101
106
|
});
|
package/src/shell/copyStream.js
CHANGED
|
@@ -1,18 +1,47 @@
|
|
|
1
1
|
const EnsureStreamHeaderStream = require('../utility/EnsureStreamHeaderStream');
|
|
2
|
+
const Stream = require('stream');
|
|
3
|
+
const ColumnMapTransformStream = require('../utility/ColumnMapTransformStream');
|
|
4
|
+
|
|
5
|
+
function copyStream(input, output, options) {
|
|
6
|
+
const { columns } = options || {};
|
|
7
|
+
|
|
8
|
+
const transforms = [];
|
|
9
|
+
if (columns) {
|
|
10
|
+
transforms.push(new ColumnMapTransformStream(columns));
|
|
11
|
+
}
|
|
12
|
+
if (output.requireFixedStructure) {
|
|
13
|
+
transforms.push(new EnsureStreamHeaderStream());
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// return new Promise((resolve, reject) => {
|
|
17
|
+
// Stream.pipeline(input, ...transforms, output, err => {
|
|
18
|
+
// if (err) {
|
|
19
|
+
// reject(err);
|
|
20
|
+
// } else {
|
|
21
|
+
// resolve();
|
|
22
|
+
// }
|
|
23
|
+
// });
|
|
24
|
+
// });
|
|
2
25
|
|
|
3
|
-
function copyStream(input, output) {
|
|
4
26
|
return new Promise((resolve, reject) => {
|
|
5
27
|
const finisher = output['finisher'] || output;
|
|
6
28
|
finisher.on('finish', resolve);
|
|
7
29
|
finisher.on('error', reject);
|
|
8
30
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
} else {
|
|
14
|
-
input.pipe(output);
|
|
31
|
+
let lastStream = input;
|
|
32
|
+
for (const tran of transforms) {
|
|
33
|
+
lastStream.pipe(tran);
|
|
34
|
+
lastStream = tran;
|
|
15
35
|
}
|
|
36
|
+
lastStream.pipe(output);
|
|
37
|
+
|
|
38
|
+
// if (output.requireFixedStructure) {
|
|
39
|
+
// const ensureHeader = new EnsureStreamHeaderStream();
|
|
40
|
+
// input.pipe(ensureHeader);
|
|
41
|
+
// ensureHeader.pipe(output);
|
|
42
|
+
// } else {
|
|
43
|
+
// input.pipe(output);
|
|
44
|
+
// }
|
|
16
45
|
});
|
|
17
46
|
}
|
|
18
47
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const stream = require('stream');
|
|
2
|
+
const { transformRowUsingColumnMap } = require('dbgate-tools');
|
|
3
|
+
|
|
4
|
+
class ColumnMapTransformStream extends stream.Transform {
|
|
5
|
+
constructor(columns) {
|
|
6
|
+
super({ objectMode: true });
|
|
7
|
+
this.columns = columns;
|
|
8
|
+
}
|
|
9
|
+
_transform(chunk, encoding, done) {
|
|
10
|
+
if (chunk.__isStreamHeader) {
|
|
11
|
+
// skip stream header
|
|
12
|
+
done();
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
this.push(transformRowUsingColumnMap(chunk, this.columns));
|
|
17
|
+
done();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
module.exports = ColumnMapTransformStream;
|
|
@@ -3,7 +3,7 @@ const fs = require('fs-extra');
|
|
|
3
3
|
async function saveFreeTableData(file, data) {
|
|
4
4
|
const { structure, rows } = data;
|
|
5
5
|
const fileStream = fs.createWriteStream(file);
|
|
6
|
-
await fileStream.write(JSON.stringify(structure) + '\n');
|
|
6
|
+
await fileStream.write(JSON.stringify({ __isStreamHeader: true, ...structure }) + '\n');
|
|
7
7
|
for (const row of rows) {
|
|
8
8
|
await fileStream.write(JSON.stringify(row) + '\n');
|
|
9
9
|
}
|