@juzi/file-box 1.7.0
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/LICENSE +201 -0
- package/README.md +613 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/src/config.d.ts +4 -0
- package/dist/cjs/src/config.d.ts.map +1 -0
- package/dist/cjs/src/config.js +9 -0
- package/dist/cjs/src/config.js.map +1 -0
- package/dist/cjs/src/file-box.d.ts +209 -0
- package/dist/cjs/src/file-box.d.ts.map +1 -0
- package/dist/cjs/src/file-box.js +804 -0
- package/dist/cjs/src/file-box.js.map +1 -0
- package/dist/cjs/src/file-box.spec.d.ts +14 -0
- package/dist/cjs/src/file-box.spec.d.ts.map +1 -0
- package/dist/cjs/src/file-box.spec.js +393 -0
- package/dist/cjs/src/file-box.spec.js.map +1 -0
- package/dist/cjs/src/file-box.type.d.ts +103 -0
- package/dist/cjs/src/file-box.type.d.ts.map +1 -0
- package/dist/cjs/src/file-box.type.js +34 -0
- package/dist/cjs/src/file-box.type.js.map +1 -0
- package/dist/cjs/src/interface.d.ts +25 -0
- package/dist/cjs/src/interface.d.ts.map +1 -0
- package/dist/cjs/src/interface.js +3 -0
- package/dist/cjs/src/interface.js.map +1 -0
- package/dist/cjs/src/interface.spec.d.ts +3 -0
- package/dist/cjs/src/interface.spec.d.ts.map +1 -0
- package/dist/cjs/src/interface.spec.js +11 -0
- package/dist/cjs/src/interface.spec.js.map +1 -0
- package/dist/cjs/src/misc.d.ts +17 -0
- package/dist/cjs/src/misc.d.ts.map +1 -0
- package/dist/cjs/src/misc.js +137 -0
- package/dist/cjs/src/misc.js.map +1 -0
- package/dist/cjs/src/misc.spec.d.ts +3 -0
- package/dist/cjs/src/misc.spec.d.ts.map +1 -0
- package/dist/cjs/src/misc.spec.js +51 -0
- package/dist/cjs/src/misc.spec.js.map +1 -0
- package/dist/cjs/src/mod.d.ts +9 -0
- package/dist/cjs/src/mod.d.ts.map +1 -0
- package/dist/cjs/src/mod.js +12 -0
- package/dist/cjs/src/mod.js.map +1 -0
- package/dist/cjs/src/pure-functions/sized-chunk-transformer.d.ts +13 -0
- package/dist/cjs/src/pure-functions/sized-chunk-transformer.d.ts.map +1 -0
- package/dist/cjs/src/pure-functions/sized-chunk-transformer.js +45 -0
- package/dist/cjs/src/pure-functions/sized-chunk-transformer.js.map +1 -0
- package/dist/cjs/src/pure-functions/sized-chunk-transformer.spec.d.ts +3 -0
- package/dist/cjs/src/pure-functions/sized-chunk-transformer.spec.d.ts.map +1 -0
- package/dist/cjs/src/pure-functions/sized-chunk-transformer.spec.js +39 -0
- package/dist/cjs/src/pure-functions/sized-chunk-transformer.spec.js.map +1 -0
- package/dist/cjs/src/qrcode.d.ts +6 -0
- package/dist/cjs/src/qrcode.d.ts.map +1 -0
- package/dist/cjs/src/qrcode.js +35 -0
- package/dist/cjs/src/qrcode.js.map +1 -0
- package/dist/cjs/src/qrcode.spec.d.ts +3 -0
- package/dist/cjs/src/qrcode.spec.d.ts.map +1 -0
- package/dist/cjs/src/qrcode.spec.js +47 -0
- package/dist/cjs/src/qrcode.spec.js.map +1 -0
- package/dist/cjs/src/urn-registry/mod.d.ts +3 -0
- package/dist/cjs/src/urn-registry/mod.d.ts.map +1 -0
- package/dist/cjs/src/urn-registry/mod.js +6 -0
- package/dist/cjs/src/urn-registry/mod.js.map +1 -0
- package/dist/cjs/src/urn-registry/random-uuid.d.ts +4 -0
- package/dist/cjs/src/urn-registry/random-uuid.d.ts.map +1 -0
- package/dist/cjs/src/urn-registry/random-uuid.js +30 -0
- package/dist/cjs/src/urn-registry/random-uuid.js.map +1 -0
- package/dist/cjs/src/urn-registry/uniform-resource-name-registry.d.ts +76 -0
- package/dist/cjs/src/urn-registry/uniform-resource-name-registry.d.ts.map +1 -0
- package/dist/cjs/src/urn-registry/uniform-resource-name-registry.js +259 -0
- package/dist/cjs/src/urn-registry/uniform-resource-name-registry.js.map +1 -0
- package/dist/cjs/src/urn-registry/uniform-resource-name-registry.spec.d.ts +3 -0
- package/dist/cjs/src/urn-registry/uniform-resource-name-registry.spec.d.ts.map +1 -0
- package/dist/cjs/src/urn-registry/uniform-resource-name-registry.spec.js +81 -0
- package/dist/cjs/src/urn-registry/uniform-resource-name-registry.spec.js.map +1 -0
- package/dist/cjs/src/urn-registry/uuid-to-big-int.d.ts +8 -0
- package/dist/cjs/src/urn-registry/uuid-to-big-int.d.ts.map +1 -0
- package/dist/cjs/src/urn-registry/uuid-to-big-int.js +16 -0
- package/dist/cjs/src/urn-registry/uuid-to-big-int.js.map +1 -0
- package/dist/cjs/src/urn-registry/uuid-to-big-int.spec.d.ts +3 -0
- package/dist/cjs/src/urn-registry/uuid-to-big-int.spec.d.ts.map +1 -0
- package/dist/cjs/src/urn-registry/uuid-to-big-int.spec.js +17 -0
- package/dist/cjs/src/urn-registry/uuid-to-big-int.spec.js.map +1 -0
- package/dist/cjs/src/version.d.ts +5 -0
- package/dist/cjs/src/version.d.ts.map +1 -0
- package/dist/cjs/src/version.js +8 -0
- package/dist/cjs/src/version.js.map +1 -0
- package/dist/cjs/src/version.spec.d.ts +3 -0
- package/dist/cjs/src/version.spec.d.ts.map +1 -0
- package/dist/cjs/src/version.spec.js +9 -0
- package/dist/cjs/src/version.spec.js.map +1 -0
- package/dist/cjs/tests/integration.spec.d.ts +3 -0
- package/dist/cjs/tests/integration.spec.d.ts.map +1 -0
- package/dist/cjs/tests/integration.spec.js +8 -0
- package/dist/cjs/tests/integration.spec.js.map +1 -0
- package/dist/cjs/tests/network-timeout.spec.d.ts +3 -0
- package/dist/cjs/tests/network-timeout.spec.d.ts.map +1 -0
- package/dist/cjs/tests/network-timeout.spec.js +121 -0
- package/dist/cjs/tests/network-timeout.spec.js.map +1 -0
- package/dist/esm/src/config.d.ts +4 -0
- package/dist/esm/src/config.d.ts.map +1 -0
- package/dist/esm/src/config.js +5 -0
- package/dist/esm/src/config.js.map +1 -0
- package/dist/esm/src/file-box.d.ts +209 -0
- package/dist/esm/src/file-box.d.ts.map +1 -0
- package/dist/esm/src/file-box.js +775 -0
- package/dist/esm/src/file-box.js.map +1 -0
- package/dist/esm/src/file-box.spec.d.ts +14 -0
- package/dist/esm/src/file-box.spec.d.ts.map +1 -0
- package/dist/esm/src/file-box.spec.js +386 -0
- package/dist/esm/src/file-box.spec.js.map +1 -0
- package/dist/esm/src/file-box.type.d.ts +103 -0
- package/dist/esm/src/file-box.type.d.ts.map +1 -0
- package/dist/esm/src/file-box.type.js +31 -0
- package/dist/esm/src/file-box.type.js.map +1 -0
- package/dist/esm/src/interface.d.ts +25 -0
- package/dist/esm/src/interface.d.ts.map +1 -0
- package/dist/esm/src/interface.js +2 -0
- package/dist/esm/src/interface.js.map +1 -0
- package/dist/esm/src/interface.spec.d.ts +3 -0
- package/dist/esm/src/interface.spec.d.ts.map +1 -0
- package/dist/esm/src/interface.spec.js +9 -0
- package/dist/esm/src/interface.spec.js.map +1 -0
- package/dist/esm/src/misc.d.ts +17 -0
- package/dist/esm/src/misc.d.ts.map +1 -0
- package/dist/esm/src/misc.js +126 -0
- package/dist/esm/src/misc.js.map +1 -0
- package/dist/esm/src/misc.spec.d.ts +3 -0
- package/dist/esm/src/misc.spec.d.ts.map +1 -0
- package/dist/esm/src/misc.spec.js +49 -0
- package/dist/esm/src/misc.spec.js.map +1 -0
- package/dist/esm/src/mod.d.ts +9 -0
- package/dist/esm/src/mod.d.ts.map +1 -0
- package/dist/esm/src/mod.js +6 -0
- package/dist/esm/src/mod.js.map +1 -0
- package/dist/esm/src/pure-functions/sized-chunk-transformer.d.ts +13 -0
- package/dist/esm/src/pure-functions/sized-chunk-transformer.d.ts.map +1 -0
- package/dist/esm/src/pure-functions/sized-chunk-transformer.js +39 -0
- package/dist/esm/src/pure-functions/sized-chunk-transformer.js.map +1 -0
- package/dist/esm/src/pure-functions/sized-chunk-transformer.spec.d.ts +3 -0
- package/dist/esm/src/pure-functions/sized-chunk-transformer.spec.d.ts.map +1 -0
- package/dist/esm/src/pure-functions/sized-chunk-transformer.spec.js +37 -0
- package/dist/esm/src/pure-functions/sized-chunk-transformer.spec.js.map +1 -0
- package/dist/esm/src/qrcode.d.ts +6 -0
- package/dist/esm/src/qrcode.d.ts.map +1 -0
- package/dist/esm/src/qrcode.js +27 -0
- package/dist/esm/src/qrcode.js.map +1 -0
- package/dist/esm/src/qrcode.spec.d.ts +3 -0
- package/dist/esm/src/qrcode.spec.d.ts.map +1 -0
- package/dist/esm/src/qrcode.spec.js +45 -0
- package/dist/esm/src/qrcode.spec.js.map +1 -0
- package/dist/esm/src/urn-registry/mod.d.ts +3 -0
- package/dist/esm/src/urn-registry/mod.d.ts.map +1 -0
- package/dist/esm/src/urn-registry/mod.js +3 -0
- package/dist/esm/src/urn-registry/mod.js.map +1 -0
- package/dist/esm/src/urn-registry/random-uuid.d.ts +4 -0
- package/dist/esm/src/urn-registry/random-uuid.d.ts.map +1 -0
- package/dist/esm/src/urn-registry/random-uuid.js +4 -0
- package/dist/esm/src/urn-registry/random-uuid.js.map +1 -0
- package/dist/esm/src/urn-registry/uniform-resource-name-registry.d.ts +76 -0
- package/dist/esm/src/urn-registry/uniform-resource-name-registry.d.ts.map +1 -0
- package/dist/esm/src/urn-registry/uniform-resource-name-registry.js +253 -0
- package/dist/esm/src/urn-registry/uniform-resource-name-registry.js.map +1 -0
- package/dist/esm/src/urn-registry/uniform-resource-name-registry.spec.d.ts +3 -0
- package/dist/esm/src/urn-registry/uniform-resource-name-registry.spec.d.ts.map +1 -0
- package/dist/esm/src/urn-registry/uniform-resource-name-registry.spec.js +79 -0
- package/dist/esm/src/urn-registry/uniform-resource-name-registry.spec.js.map +1 -0
- package/dist/esm/src/urn-registry/uuid-to-big-int.d.ts +8 -0
- package/dist/esm/src/urn-registry/uuid-to-big-int.d.ts.map +1 -0
- package/dist/esm/src/urn-registry/uuid-to-big-int.js +13 -0
- package/dist/esm/src/urn-registry/uuid-to-big-int.js.map +1 -0
- package/dist/esm/src/urn-registry/uuid-to-big-int.spec.d.ts +3 -0
- package/dist/esm/src/urn-registry/uuid-to-big-int.spec.d.ts.map +1 -0
- package/dist/esm/src/urn-registry/uuid-to-big-int.spec.js +15 -0
- package/dist/esm/src/urn-registry/uuid-to-big-int.spec.js.map +1 -0
- package/dist/esm/src/version.d.ts +5 -0
- package/dist/esm/src/version.d.ts.map +1 -0
- package/dist/esm/src/version.js +5 -0
- package/dist/esm/src/version.js.map +1 -0
- package/dist/esm/src/version.spec.d.ts +3 -0
- package/dist/esm/src/version.spec.d.ts.map +1 -0
- package/dist/esm/src/version.spec.js +7 -0
- package/dist/esm/src/version.spec.js.map +1 -0
- package/dist/esm/tests/integration.spec.d.ts +3 -0
- package/dist/esm/tests/integration.spec.d.ts.map +1 -0
- package/dist/esm/tests/integration.spec.js +6 -0
- package/dist/esm/tests/integration.spec.js.map +1 -0
- package/dist/esm/tests/network-timeout.spec.d.ts +3 -0
- package/dist/esm/tests/network-timeout.spec.d.ts.map +1 -0
- package/dist/esm/tests/network-timeout.spec.js +119 -0
- package/dist/esm/tests/network-timeout.spec.js.map +1 -0
- package/package.json +85 -0
- package/src/config.ts +5 -0
- package/src/file-box.spec.ts +480 -0
- package/src/file-box.ts +1042 -0
- package/src/file-box.type.ts +145 -0
- package/src/interface.spec.ts +17 -0
- package/src/interface.ts +47 -0
- package/src/misc.spec.ts +70 -0
- package/src/misc.ts +157 -0
- package/src/mod.ts +33 -0
- package/src/pure-functions/sized-chunk-transformer.spec.ts +52 -0
- package/src/pure-functions/sized-chunk-transformer.ts +49 -0
- package/src/qrcode.spec.ts +55 -0
- package/src/qrcode.ts +38 -0
- package/src/typings.d.ts +1 -0
- package/src/urn-registry/mod.ts +7 -0
- package/src/urn-registry/random-uuid.ts +7 -0
- package/src/urn-registry/uniform-resource-name-registry.spec.ts +109 -0
- package/src/urn-registry/uniform-resource-name-registry.ts +342 -0
- package/src/urn-registry/uuid-to-big-int.spec.ts +19 -0
- package/src/urn-registry/uuid-to-big-int.ts +16 -0
- package/src/version.spec.ts +9 -0
- package/src/version.ts +4 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
#!/usr/bin/env -S node --no-warnings --loader ts-node/esm
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const http_1 = require("http");
|
|
5
|
+
const promises_1 = require("timers/promises");
|
|
6
|
+
const tstest_1 = require("tstest");
|
|
7
|
+
const mod_js_1 = require("../src/mod.js");
|
|
8
|
+
const config_js_1 = require("../src/config.js");
|
|
9
|
+
(0, tstest_1.test)('slow network stall HTTP_TIMEOUT', async (t) => {
|
|
10
|
+
const sandbox = tstest_1.sinon.createSandbox();
|
|
11
|
+
sandbox.useFakeTimers({
|
|
12
|
+
now: Date.now(),
|
|
13
|
+
shouldAdvanceTime: true,
|
|
14
|
+
shouldClearNativeTimers: true,
|
|
15
|
+
toFake: ['setTimeout', 'clearTimeout', 'setInterval', 'clearInterval', 'nextTick'],
|
|
16
|
+
});
|
|
17
|
+
t.jobs = 3;
|
|
18
|
+
const port = Math.floor(Math.random() * (65535 - 49152 + 1)) + 49152;
|
|
19
|
+
const URL = {
|
|
20
|
+
NOT_TIMEOUT: '/not_timeout',
|
|
21
|
+
READY: '/ready',
|
|
22
|
+
TIMEOUT: '/timeout',
|
|
23
|
+
};
|
|
24
|
+
/* eslint @typescript-eslint/no-misused-promises:off */
|
|
25
|
+
const server = (0, http_1.createServer)(async (req, res) => {
|
|
26
|
+
res.write(Buffer.from('This is the first chunk of data.'));
|
|
27
|
+
if (req.url === URL.NOT_TIMEOUT) {
|
|
28
|
+
await (0, promises_1.setTimeout)(config_js_1.HTTP_TIMEOUT * 0.5);
|
|
29
|
+
res.write(Buffer.from('This is the second chunk of data.'));
|
|
30
|
+
await (0, promises_1.setTimeout)(config_js_1.HTTP_TIMEOUT * 0.9);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
await (0, promises_1.setTimeout)(config_js_1.HTTP_TIMEOUT + 100);
|
|
34
|
+
}
|
|
35
|
+
// console.debug(`${new Date().toLocaleTimeString()} call res.end "${req.url}"`)
|
|
36
|
+
res.end(Buffer.from('All data end.'));
|
|
37
|
+
});
|
|
38
|
+
const host = await new Promise((resolve) => {
|
|
39
|
+
server.listen(port, '127.0.0.1', () => {
|
|
40
|
+
const addr = server.address();
|
|
41
|
+
// console.debug(`Server is listening on port ${JSON.stringify(addr)}`)
|
|
42
|
+
resolve(`http://127.0.0.1:${addr.port}`);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
t.teardown(() => {
|
|
46
|
+
// console.debug('teardown')
|
|
47
|
+
server.close();
|
|
48
|
+
sandbox.restore();
|
|
49
|
+
});
|
|
50
|
+
/** eslint @typescript-eslint/no-floating-promises:off */
|
|
51
|
+
t.test('should not timeout', async (t) => {
|
|
52
|
+
const url = `${host}${URL.NOT_TIMEOUT}`;
|
|
53
|
+
const dataSpy = sandbox.spy();
|
|
54
|
+
const errorSpy = sandbox.spy();
|
|
55
|
+
// console.debug(`${new Date().toLocaleTimeString()} Start request "${url}" ...`)
|
|
56
|
+
const start = Date.now();
|
|
57
|
+
const stream = await mod_js_1.FileBox.fromUrl(url).toStream();
|
|
58
|
+
stream.once('error', errorSpy).on('data', dataSpy);
|
|
59
|
+
await sandbox.clock.tickAsync(1);
|
|
60
|
+
t.ok(dataSpy.calledOnce, `should get chunk 1 (${Date.now() - start} passed)`);
|
|
61
|
+
t.ok(errorSpy.notCalled, `should not get error (${Date.now() - start} passed)`);
|
|
62
|
+
// FIXME: tickAsync does not work on socket timeout
|
|
63
|
+
await new Promise((resolve) => {
|
|
64
|
+
stream.once('error', resolve).on('close', resolve);
|
|
65
|
+
// resolve(setTimeout(HTTP_TIMEOUT))
|
|
66
|
+
});
|
|
67
|
+
await sandbox.clock.tickAsync(1);
|
|
68
|
+
// await sandbox.clock.tickAsync(HTTP_TIMEOUT)
|
|
69
|
+
// t.comment('recv data count:', dataSpy.callCount)
|
|
70
|
+
// t.comment('recv error count:', errorSpy.callCount)
|
|
71
|
+
t.ok(dataSpy.calledThrice, `should get chunk 3 after TIMEOUT ${config_js_1.HTTP_TIMEOUT} (${Date.now() - start} passed)`);
|
|
72
|
+
t.ok(errorSpy.notCalled, `should not get error after TIMEOUT ${config_js_1.HTTP_TIMEOUT} (${Date.now() - start} passed)`);
|
|
73
|
+
t.end();
|
|
74
|
+
}).catch(t.threw);
|
|
75
|
+
/** eslint @typescript-eslint/no-floating-promises:off */
|
|
76
|
+
t.test('should timeout', async (t) => {
|
|
77
|
+
const url = `${host}${URL.TIMEOUT}`;
|
|
78
|
+
const dataSpy = sandbox.spy();
|
|
79
|
+
const errorSpy = sandbox.spy();
|
|
80
|
+
// console.debug(`${new Date().toLocaleTimeString()} Start request "${url}" ...`)
|
|
81
|
+
const start = Date.now();
|
|
82
|
+
const stream = await mod_js_1.FileBox.fromUrl(url).toStream();
|
|
83
|
+
stream.once('error', errorSpy).once('data', dataSpy);
|
|
84
|
+
// .on('error', (e) => {
|
|
85
|
+
// console.error(`on error for req "${url}":`, e.stack)
|
|
86
|
+
// })
|
|
87
|
+
// .on('data', (d: Buffer) => {
|
|
88
|
+
// console.error(`on data for req "${url}":`, d.toString())
|
|
89
|
+
// })
|
|
90
|
+
await sandbox.clock.tickAsync(1);
|
|
91
|
+
// t.comment('recv data count:', dataSpy.callCount)
|
|
92
|
+
// t.comment('recv error count:', errorSpy.callCount)
|
|
93
|
+
t.ok(dataSpy.calledOnce, `should get chunk 1 (${Date.now() - start} passed)`);
|
|
94
|
+
t.ok(errorSpy.notCalled, `should not get error (${Date.now() - start} passed)`);
|
|
95
|
+
// FIXME: tickAsync does not work on socket timeout
|
|
96
|
+
await new Promise((resolve) => {
|
|
97
|
+
stream.once('error', resolve).on('close', resolve);
|
|
98
|
+
// resolve(setTimeout(HTTP_TIMEOUT))
|
|
99
|
+
});
|
|
100
|
+
await sandbox.clock.tickAsync(1);
|
|
101
|
+
// await sandbox.clock.tickAsync(HTTP_TIMEOUT)
|
|
102
|
+
// t.comment('recv data count:', dataSpy.callCount)
|
|
103
|
+
// t.comment('recv error count:', errorSpy.callCount)
|
|
104
|
+
t.ok(errorSpy.calledOnce, `should get error after TIMEOUT ${config_js_1.HTTP_TIMEOUT} (${Date.now() - start} passed)`);
|
|
105
|
+
t.end();
|
|
106
|
+
}).catch(t.threw);
|
|
107
|
+
/** eslint @typescript-eslint/no-floating-promises:off */
|
|
108
|
+
t.test('ready should timeout', async (t) => {
|
|
109
|
+
const url = `${host}${URL.READY}`;
|
|
110
|
+
const errorSpy = sandbox.spy();
|
|
111
|
+
// console.debug(`${new Date().toLocaleTimeString()} Start request "${url}" ...`)
|
|
112
|
+
const start = Date.now();
|
|
113
|
+
const fileBox = mod_js_1.FileBox.fromUrl(url);
|
|
114
|
+
await fileBox.ready().catch(errorSpy);
|
|
115
|
+
await sandbox.clock.tickAsync(1);
|
|
116
|
+
// t.comment('recv error count:', errorSpy.callCount)
|
|
117
|
+
t.ok(errorSpy.calledOnce, `should get error after TIMEOUT ${config_js_1.HTTP_TIMEOUT} (${Date.now() - start} passed)`);
|
|
118
|
+
t.end();
|
|
119
|
+
}).catch(t.threw);
|
|
120
|
+
});
|
|
121
|
+
//# sourceMappingURL=network-timeout.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-timeout.spec.js","sourceRoot":"","sources":["../../../tests/network-timeout.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,eAAO,MAAM,YAAY,QACX,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;OAClE,EAAE,GAAG,IAAI,CAAA"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File Box
|
|
3
|
+
* https://github.com/huan/file-box
|
|
4
|
+
*
|
|
5
|
+
* 2018 Huan LI <zixia@zixia.net>
|
|
6
|
+
*/
|
|
7
|
+
/// <reference types="node" />
|
|
8
|
+
/// <reference types="node" />
|
|
9
|
+
/// <reference types="node" />
|
|
10
|
+
import type * as HTTP from 'http';
|
|
11
|
+
import { Readable, Writable } from 'stream';
|
|
12
|
+
import { FileBoxJsonObject, FileBoxOptions, FileBoxType, Metadata, Pipeable, UuidLoader, UuidSaver } from './file-box.type.js';
|
|
13
|
+
import type { FileBoxInterface } from './interface.js';
|
|
14
|
+
declare class FileBox implements Pipeable, FileBoxInterface {
|
|
15
|
+
/**
|
|
16
|
+
*
|
|
17
|
+
* Static Properties
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
static readonly version: string;
|
|
21
|
+
/**
|
|
22
|
+
* Symbol.hasInstance: instanceof
|
|
23
|
+
*
|
|
24
|
+
* @link https://www.keithcirkel.co.uk/metaprogramming-in-es6-symbols/
|
|
25
|
+
*/
|
|
26
|
+
static [Symbol.hasInstance](lho: any): lho is FileBoxInterface;
|
|
27
|
+
/**
|
|
28
|
+
* Check if obj satisfy FileBox interface
|
|
29
|
+
*/
|
|
30
|
+
static valid(target: any): target is FileBoxInterface;
|
|
31
|
+
/**
|
|
32
|
+
* Check if obj satisfy FileBox interface
|
|
33
|
+
*/
|
|
34
|
+
static validInterface(target: any): target is FileBoxInterface;
|
|
35
|
+
/**
|
|
36
|
+
* loose check instance of FileBox
|
|
37
|
+
*/
|
|
38
|
+
static validInstance(target: any): target is FileBox;
|
|
39
|
+
static fromUrl(url: string, options?: {
|
|
40
|
+
headers?: HTTP.OutgoingHttpHeaders;
|
|
41
|
+
name?: string;
|
|
42
|
+
size?: number;
|
|
43
|
+
md5?: string;
|
|
44
|
+
}): FileBox;
|
|
45
|
+
/**
|
|
46
|
+
* @deprecated use `fromUrl(url, options)` instead
|
|
47
|
+
*/
|
|
48
|
+
static fromUrl(url: string, name?: string, headers?: HTTP.OutgoingHttpHeaders): FileBox;
|
|
49
|
+
/**
|
|
50
|
+
* Alias for `FileBox.fromFile()`
|
|
51
|
+
*
|
|
52
|
+
* @alias fromFile
|
|
53
|
+
*/
|
|
54
|
+
static fromFile(path: string, name?: string, md5?: string): FileBox;
|
|
55
|
+
/**
|
|
56
|
+
* TODO: add `FileBoxStreamOptions` with `size` support (@huan, 202111)
|
|
57
|
+
*/
|
|
58
|
+
static fromStream(stream: Readable, name?: string, md5?: string): FileBox;
|
|
59
|
+
static fromBuffer(buffer: Buffer, name?: string, md5?: string): FileBox;
|
|
60
|
+
/**
|
|
61
|
+
* @param base64
|
|
62
|
+
* @param name the file name of the base64 data
|
|
63
|
+
*/
|
|
64
|
+
static fromBase64(base64: string, name?: string, md5?: string): FileBox;
|
|
65
|
+
/**
|
|
66
|
+
* dataURL: `data:image/png;base64,${base64Text}`,
|
|
67
|
+
*/
|
|
68
|
+
static fromDataURL(dataUrl: string, name?: string, md5?: string): FileBox;
|
|
69
|
+
/**
|
|
70
|
+
*
|
|
71
|
+
* @param qrCode the value of the QR Code. For example: `https://github.com`
|
|
72
|
+
*/
|
|
73
|
+
static fromQRCode(qrCode: string, md5?: string): FileBox;
|
|
74
|
+
protected static uuidToStream?: UuidLoader;
|
|
75
|
+
protected static uuidFromStream?: UuidSaver;
|
|
76
|
+
static fromUuid(uuid: string, options?: {
|
|
77
|
+
name?: string;
|
|
78
|
+
size?: number;
|
|
79
|
+
md5?: string;
|
|
80
|
+
}): FileBox;
|
|
81
|
+
/**
|
|
82
|
+
* @deprecated use `fromUuid(name, options)` instead
|
|
83
|
+
*/
|
|
84
|
+
static fromUuid(uuid: string, name?: string, md5?: string): FileBox;
|
|
85
|
+
/**
|
|
86
|
+
* UUID Type FielBox Loader
|
|
87
|
+
*/
|
|
88
|
+
static setUuidLoader(loader: UuidLoader): void;
|
|
89
|
+
/**
|
|
90
|
+
* UUID Type FielBox Saver
|
|
91
|
+
*/
|
|
92
|
+
static setUuidSaver(saver: UuidSaver): void;
|
|
93
|
+
/**
|
|
94
|
+
*
|
|
95
|
+
* @static
|
|
96
|
+
* @param {(FileBoxJsonObject | string)} obj
|
|
97
|
+
* @returns {FileBox}
|
|
98
|
+
*/
|
|
99
|
+
static fromJSON(obj: FileBoxJsonObject | string): FileBox;
|
|
100
|
+
/**
|
|
101
|
+
*
|
|
102
|
+
* Instance Properties
|
|
103
|
+
*
|
|
104
|
+
*/
|
|
105
|
+
readonly version: string;
|
|
106
|
+
/**
|
|
107
|
+
* We are using a getter for `type` is because
|
|
108
|
+
* getter name can be enumurated by the `Object.hasOwnProperties()`*
|
|
109
|
+
* but property name can not.
|
|
110
|
+
*
|
|
111
|
+
* * required by `validInterface()`
|
|
112
|
+
*/
|
|
113
|
+
readonly _type: FileBoxType;
|
|
114
|
+
get type(): FileBoxType;
|
|
115
|
+
/**
|
|
116
|
+
* the Content-Length of the file
|
|
117
|
+
* `SIZE_UNKNOWN(-1)` means unknown
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```ts
|
|
121
|
+
* const fileBox = FileBox.fromUrl('http://example.com/image.png')
|
|
122
|
+
* await fileBox.ready()
|
|
123
|
+
* console.log(fileBox.size)
|
|
124
|
+
* // > 102400 <- this is the size of the remote image.png
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
_size?: number;
|
|
128
|
+
get size(): number;
|
|
129
|
+
/**
|
|
130
|
+
* File MD5 Sum
|
|
131
|
+
*/
|
|
132
|
+
readonly md5: undefined | string;
|
|
133
|
+
/**
|
|
134
|
+
* @deprecated: use `mediaType` instead. will be removed after Dec 31, 2022
|
|
135
|
+
*/
|
|
136
|
+
mimeType: string;
|
|
137
|
+
/**
|
|
138
|
+
* (Internet) Media Type is the proper technical term of `MIME Type`
|
|
139
|
+
* @see https://stackoverflow.com/a/9277778/1123955
|
|
140
|
+
*
|
|
141
|
+
* @example 'text/plain'
|
|
142
|
+
*/
|
|
143
|
+
protected _mediaType?: string;
|
|
144
|
+
get mediaType(): string;
|
|
145
|
+
protected _name: string;
|
|
146
|
+
get name(): string;
|
|
147
|
+
protected _metadata?: Metadata;
|
|
148
|
+
get metadata(): Metadata;
|
|
149
|
+
set metadata(data: Metadata);
|
|
150
|
+
/**
|
|
151
|
+
* Lazy load data: (can be serialized to JSON)
|
|
152
|
+
* Do not read file to Buffer until there's a consumer.
|
|
153
|
+
*/
|
|
154
|
+
private readonly base64?;
|
|
155
|
+
private readonly remoteUrl?;
|
|
156
|
+
private readonly qrCode?;
|
|
157
|
+
private readonly uuid?;
|
|
158
|
+
/**
|
|
159
|
+
* Can not be serialized to JSON
|
|
160
|
+
*/
|
|
161
|
+
private readonly buffer?;
|
|
162
|
+
private readonly localPath?;
|
|
163
|
+
private readonly stream?;
|
|
164
|
+
private readonly headers?;
|
|
165
|
+
constructor(options: FileBoxOptions);
|
|
166
|
+
ready(): Promise<void>;
|
|
167
|
+
/**
|
|
168
|
+
* @todo use http.get/gets instead of Request
|
|
169
|
+
*/
|
|
170
|
+
protected _syncUrlMetadata(): Promise<void>;
|
|
171
|
+
/**
|
|
172
|
+
*
|
|
173
|
+
* toXXX methods
|
|
174
|
+
*
|
|
175
|
+
*/
|
|
176
|
+
toString(): string;
|
|
177
|
+
toJSON(): FileBoxJsonObject;
|
|
178
|
+
toStream(): Promise<Readable>;
|
|
179
|
+
/**
|
|
180
|
+
* https://stackoverflow.com/a/16044400/1123955
|
|
181
|
+
*/
|
|
182
|
+
private _transformBufferToStream;
|
|
183
|
+
private _transformBase64ToStream;
|
|
184
|
+
private _transformFileToStream;
|
|
185
|
+
private _transformUrlToStream;
|
|
186
|
+
private _transformQRCodeToStream;
|
|
187
|
+
/**
|
|
188
|
+
* save file
|
|
189
|
+
*
|
|
190
|
+
* @param filePath save file
|
|
191
|
+
*/
|
|
192
|
+
toFile(filePath?: string, overwrite?: boolean): Promise<void>;
|
|
193
|
+
toBase64(): Promise<string>;
|
|
194
|
+
/**
|
|
195
|
+
* dataUrl: `data:image/png;base64,${base64Text}',
|
|
196
|
+
*/
|
|
197
|
+
toDataURL(): Promise<string>;
|
|
198
|
+
toBuffer(): Promise<Buffer>;
|
|
199
|
+
toQRCode(): Promise<string>;
|
|
200
|
+
toUuid(): Promise<string>;
|
|
201
|
+
/**
|
|
202
|
+
*
|
|
203
|
+
* toXXX methods END
|
|
204
|
+
*
|
|
205
|
+
*/
|
|
206
|
+
pipe<T extends Writable>(destination: T): T;
|
|
207
|
+
}
|
|
208
|
+
export { FileBox, };
|
|
209
|
+
//# sourceMappingURL=file-box.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-box.d.ts","sourceRoot":"","sources":["../../../src/file-box.ts"],"names":[],"mappings":"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"}
|