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.
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.2",
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.2",
29
- "dbgate-sqltree": "^4.7.2",
30
- "dbgate-tools": "^4.7.2",
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 .env-portal node src/index.js",
57
- "start:singledb": "env-cmd -f .env-singledb node src/index.js",
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.2",
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",
@@ -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
  };
@@ -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()}.html`;
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)) {
@@ -1,5 +1,5 @@
1
1
 
2
2
  module.exports = {
3
- version: '4.7.2',
4
- buildTime: '2022-03-07T17:31:11.445Z'
3
+ version: '4.7.3-alpha.5',
4
+ buildTime: '2022-03-14T18:31:03.883Z'
5
5
  };
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({ port: 5000 }).then(port => {
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
  });
@@ -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
- if (output.requireFixedStructure) {
10
- const ensureHeader = new EnsureStreamHeaderStream();
11
- input.pipe(ensureHeader);
12
- ensureHeader.pipe(output);
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
  }