mosquito-transport 1.7.1 → 1.7.2
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/index.d.ts +1 -0
- package/lib/index.js +8 -2
- package/lib/products/storage/store.js +33 -13
- package/package.json +2 -2
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -603,8 +603,14 @@ const useMosquitoServer = (app, config) => {
|
|
|
603
603
|
},
|
|
604
604
|
disconnect: (...args) => {
|
|
605
605
|
socket.disconnect(...args);
|
|
606
|
-
}
|
|
606
|
+
},
|
|
607
|
+
disconnected: false
|
|
607
608
|
};
|
|
609
|
+
|
|
610
|
+
socket.on('disconnect', () => {
|
|
611
|
+
clonedSocket.disconnected = true;
|
|
612
|
+
});
|
|
613
|
+
// TODO: disconnected
|
|
608
614
|
onSocketSnapshot(clonedSocket);
|
|
609
615
|
} catch (e) {
|
|
610
616
|
onSocketError?.(Object.assign(simplifyCaughtError(e).simpleError, { socket }));
|
|
@@ -959,7 +965,7 @@ export default class MosquitoTransportServer {
|
|
|
959
965
|
deleteFile = async (path = '') => {
|
|
960
966
|
if (Validator.LINK(path)) {
|
|
961
967
|
const url = new URL(path);
|
|
962
|
-
if (url.pathname.startsWith(`${STORAGE_ROUTE}/`))
|
|
968
|
+
if (!url.pathname.startsWith(`${STORAGE_ROUTE}/`))
|
|
963
969
|
throw `link must have a pathname that starts with ${STORAGE_ROUTE}/`;
|
|
964
970
|
path = url.pathname.substring(STORAGE_ROUTE.length);
|
|
965
971
|
}
|
|
@@ -69,9 +69,10 @@ export const streamWritableSource = (path, makeHash, projectName, callback) => {
|
|
|
69
69
|
await handler.close();
|
|
70
70
|
};
|
|
71
71
|
/** @type {import('fs').WriteStream} */
|
|
72
|
-
let fileWriter
|
|
73
|
-
|
|
74
|
-
|
|
72
|
+
let fileWriter;
|
|
73
|
+
let bufferSize = 0;
|
|
74
|
+
let residueExecutions = [];
|
|
75
|
+
let resolvedData;
|
|
75
76
|
|
|
76
77
|
const hasher = createHash('sha256');
|
|
77
78
|
|
|
@@ -88,7 +89,7 @@ export const streamWritableSource = (path, makeHash, projectName, callback) => {
|
|
|
88
89
|
|
|
89
90
|
stream.on('error', async err => {
|
|
90
91
|
await writeReadyPromise;
|
|
91
|
-
|
|
92
|
+
fileWriter.destroy(new Error(err));
|
|
92
93
|
removeLogFlag(true);
|
|
93
94
|
});
|
|
94
95
|
|
|
@@ -144,10 +145,10 @@ export const streamWritableSource = (path, makeHash, projectName, callback) => {
|
|
|
144
145
|
await new Promise(async (resolve, reject) => {
|
|
145
146
|
const writer = createWriteStream(await ensureDir(join(FILES, path)));
|
|
146
147
|
writtenPath = writer.path;
|
|
148
|
+
writer.on('finish', resolve).on('error', reject);
|
|
149
|
+
|
|
147
150
|
createReadStream(fileWriter.path)
|
|
148
|
-
.pipe(writer)
|
|
149
|
-
.on('finish', resolve)
|
|
150
|
-
.on('error', reject);
|
|
151
|
+
.pipe(writer);
|
|
151
152
|
});
|
|
152
153
|
break;
|
|
153
154
|
}
|
|
@@ -164,7 +165,8 @@ export const streamWritableSource = (path, makeHash, projectName, callback) => {
|
|
|
164
165
|
});
|
|
165
166
|
} else uri = hashPath;
|
|
166
167
|
await removeLogFlag(true);
|
|
167
|
-
|
|
168
|
+
resolvedData = uri;
|
|
169
|
+
fileWriter.end();
|
|
168
170
|
} else {
|
|
169
171
|
try {
|
|
170
172
|
await deleteSource(path, projectName);
|
|
@@ -172,11 +174,12 @@ export const streamWritableSource = (path, makeHash, projectName, callback) => {
|
|
|
172
174
|
await rename(fileWriter.path, hashPath);
|
|
173
175
|
await saveHash();
|
|
174
176
|
await removeLogFlag();
|
|
175
|
-
|
|
177
|
+
resolvedData = hashPath;
|
|
178
|
+
fileWriter.end();
|
|
176
179
|
}
|
|
177
180
|
} catch (error) {
|
|
178
181
|
await removeLogFlag(true);
|
|
179
|
-
|
|
182
|
+
fileWriter.destroy(new Error(error));
|
|
180
183
|
}
|
|
181
184
|
});
|
|
182
185
|
await openIO(await ensureDir(PENDING_HASH_LOG)).then(async handler => {
|
|
@@ -186,25 +189,42 @@ export const streamWritableSource = (path, makeHash, projectName, callback) => {
|
|
|
186
189
|
await handler.close();
|
|
187
190
|
});
|
|
188
191
|
fileWriter = createWriteStream(await ensureDir(join(HASH_FILE, sessionID)));
|
|
192
|
+
fileWriter.on('finish', () => {
|
|
193
|
+
resolve(resolvedData);
|
|
194
|
+
});
|
|
195
|
+
fileWriter.on('error', (err) => {
|
|
196
|
+
reject(err);
|
|
197
|
+
});
|
|
189
198
|
residueExecutions.forEach(e => e());
|
|
190
199
|
residueExecutions = undefined;
|
|
191
200
|
writeReadyCallback();
|
|
192
201
|
} else {
|
|
193
|
-
|
|
202
|
+
/** @type {import('fs').WriteStream} */
|
|
203
|
+
let writable;
|
|
204
|
+
let residueBuffers = [];
|
|
194
205
|
|
|
195
206
|
stream.on('data', buf => {
|
|
196
207
|
if (residueBuffers) residueBuffers.push(buf);
|
|
197
208
|
else writable.write(buf);
|
|
198
209
|
});
|
|
199
|
-
stream.on('error',
|
|
210
|
+
stream.on('error', async (err) => {
|
|
211
|
+
await writeReadyPromise;
|
|
212
|
+
writable.destroy(err);
|
|
213
|
+
});
|
|
200
214
|
stream.on('end', async () => {
|
|
201
215
|
await writeReadyPromise;
|
|
202
216
|
try {
|
|
203
217
|
await deleteSource(path, projectName, 'hash');
|
|
204
218
|
} catch (_) { }
|
|
205
|
-
|
|
219
|
+
writable.end();
|
|
206
220
|
});
|
|
207
221
|
writable = createWriteStream(await ensureDir(join(FILES, path)));
|
|
222
|
+
writable.on('finish', () => {
|
|
223
|
+
resolve(writable.path);
|
|
224
|
+
});
|
|
225
|
+
writable.on('error', (err) => {
|
|
226
|
+
reject(err);
|
|
227
|
+
});
|
|
208
228
|
residueBuffers.forEach(buf => {
|
|
209
229
|
writable.write(buf);
|
|
210
230
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mosquito-transport",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.2",
|
|
4
4
|
"description": "Quickly spawn server infrastructure along robust authentication, database, storage, and cross-platform compatibility",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"entity-serializer": "^1.0.2",
|
|
44
44
|
"express": "^4.18.2",
|
|
45
45
|
"google-auth-library": "^8.8.0",
|
|
46
|
-
"guard-object": "^1.1.
|
|
46
|
+
"guard-object": "^1.1.4",
|
|
47
47
|
"jsonwebtoken": "^9.0.0",
|
|
48
48
|
"limit-task": "1.0.0",
|
|
49
49
|
"lodash": "^4.17.21",
|