dbgate-api 4.8.7 → 4.8.8

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dbgate-api",
3
3
  "main": "src/index.js",
4
- "version": "4.8.7",
4
+ "version": "4.8.8",
5
5
  "homepage": "https://dbgate.org/",
6
6
  "repository": {
7
7
  "type": "git",
@@ -26,8 +26,8 @@
26
26
  "cors": "^2.8.5",
27
27
  "cross-env": "^6.0.3",
28
28
  "dbgate-query-splitter": "^4.9.0",
29
- "dbgate-sqltree": "^4.8.7",
30
- "dbgate-tools": "^4.8.7",
29
+ "dbgate-sqltree": "^4.8.8",
30
+ "dbgate-tools": "^4.8.8",
31
31
  "diff": "^5.0.0",
32
32
  "diff2html": "^3.4.13",
33
33
  "eslint": "^6.8.0",
@@ -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.8.7",
66
+ "dbgate-types": "^4.8.8",
67
67
  "env-cmd": "^10.1.0",
68
68
  "node-loader": "^1.0.2",
69
69
  "nodemon": "^2.0.2",
@@ -62,6 +62,15 @@ module.exports = {
62
62
  return true;
63
63
  },
64
64
 
65
+ refresh_meta: true,
66
+ async refresh({ folders }, req) {
67
+ for (const folder of folders) {
68
+ socket.emitChanged(`files-changed-${folder}`);
69
+ socket.emitChanged(`all-files-changed`);
70
+ }
71
+ return true;
72
+ },
73
+
65
74
  copy_meta: true,
66
75
  async copy({ folder, file, newFile }, req) {
67
76
  if (!hasPermission(`files/${folder}/write`, req)) return false;
@@ -177,4 +186,24 @@ module.exports = {
177
186
  await fs.writeFile(filePath, getDiagramExport(html, css, themeType, themeClassName));
178
187
  return true;
179
188
  },
189
+
190
+ getFileRealPath_meta: true,
191
+ async getFileRealPath({ folder, file }, req) {
192
+ if (folder.startsWith('archive:')) {
193
+ if (!hasPermission(`archive/write`, req)) return false;
194
+ const dir = resolveArchiveFolder(folder.substring('archive:'.length));
195
+ return path.join(dir, file);
196
+ } else if (folder.startsWith('app:')) {
197
+ if (!hasPermission(`apps/write`, req)) return false;
198
+ const app = folder.substring('app:'.length);
199
+ return path.join(appdir(), app, file);
200
+ } else {
201
+ if (!hasPermission(`files/${folder}/write`, req)) return false;
202
+ const dir = path.join(filesdir(), folder);
203
+ if (!(await fs.exists(dir))) {
204
+ await fs.mkdir(dir);
205
+ }
206
+ return path.join(dir, file);
207
+ }
208
+ },
180
209
  };
@@ -1,5 +1,5 @@
1
1
 
2
2
  module.exports = {
3
- version: '4.8.7',
4
- buildTime: '2022-04-22T18:29:21.643Z'
3
+ version: '4.8.8',
4
+ buildTime: '2022-04-29T15:49:25.137Z'
5
5
  };
package/src/main.js CHANGED
@@ -155,8 +155,8 @@ function useAllControllers(app, electron) {
155
155
  useController(app, electron, '/apps', apps);
156
156
  }
157
157
 
158
- function initializeElectronSender(electronSender) {
158
+ function setElectronSender(electronSender) {
159
159
  socket.setElectronSender(electronSender);
160
160
  }
161
161
 
162
- module.exports = { start, useAllControllers, initializeElectronSender, configController: config };
162
+ module.exports = { start, useAllControllers, setElectronSender, configController: config };
@@ -1,6 +1,6 @@
1
1
  let sseResponse = null;
2
2
  let electronSender = null;
3
- let init = '';
3
+ let init = [];
4
4
 
5
5
  module.exports = {
6
6
  setSseResponse(value) {
@@ -12,15 +12,25 @@ module.exports = {
12
12
  },
13
13
  emit(message, data) {
14
14
  if (electronSender) {
15
+ if (init.length > 0) {
16
+ for (const item of init) {
17
+ electronSender.send(item.message, item.data == null ? null : item.data);
18
+ }
19
+ init = [];
20
+ }
15
21
  electronSender.send(message, data == null ? null : data);
16
22
  } else if (sseResponse) {
17
- if (init) {
18
- sseResponse.write(init);
19
- init = '';
23
+ if (init.length > 0) {
24
+ for (const item of init) {
25
+ sseResponse.write(
26
+ `event: ${item.message}\ndata: ${JSON.stringify(item.data == null ? null : item.data)}\n\n`
27
+ );
28
+ }
29
+ init = [];
20
30
  }
21
31
  sseResponse.write(`event: ${message}\ndata: ${JSON.stringify(data == null ? null : data)}\n\n`);
22
32
  } else {
23
- init += sseResponse;
33
+ init.push([{ message, data }]);
24
34
  }
25
35
  },
26
36
  emitChanged(key) {