@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.
Files changed (210) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +613 -0
  3. package/dist/cjs/package.json +3 -0
  4. package/dist/cjs/src/config.d.ts +4 -0
  5. package/dist/cjs/src/config.d.ts.map +1 -0
  6. package/dist/cjs/src/config.js +9 -0
  7. package/dist/cjs/src/config.js.map +1 -0
  8. package/dist/cjs/src/file-box.d.ts +209 -0
  9. package/dist/cjs/src/file-box.d.ts.map +1 -0
  10. package/dist/cjs/src/file-box.js +804 -0
  11. package/dist/cjs/src/file-box.js.map +1 -0
  12. package/dist/cjs/src/file-box.spec.d.ts +14 -0
  13. package/dist/cjs/src/file-box.spec.d.ts.map +1 -0
  14. package/dist/cjs/src/file-box.spec.js +393 -0
  15. package/dist/cjs/src/file-box.spec.js.map +1 -0
  16. package/dist/cjs/src/file-box.type.d.ts +103 -0
  17. package/dist/cjs/src/file-box.type.d.ts.map +1 -0
  18. package/dist/cjs/src/file-box.type.js +34 -0
  19. package/dist/cjs/src/file-box.type.js.map +1 -0
  20. package/dist/cjs/src/interface.d.ts +25 -0
  21. package/dist/cjs/src/interface.d.ts.map +1 -0
  22. package/dist/cjs/src/interface.js +3 -0
  23. package/dist/cjs/src/interface.js.map +1 -0
  24. package/dist/cjs/src/interface.spec.d.ts +3 -0
  25. package/dist/cjs/src/interface.spec.d.ts.map +1 -0
  26. package/dist/cjs/src/interface.spec.js +11 -0
  27. package/dist/cjs/src/interface.spec.js.map +1 -0
  28. package/dist/cjs/src/misc.d.ts +17 -0
  29. package/dist/cjs/src/misc.d.ts.map +1 -0
  30. package/dist/cjs/src/misc.js +137 -0
  31. package/dist/cjs/src/misc.js.map +1 -0
  32. package/dist/cjs/src/misc.spec.d.ts +3 -0
  33. package/dist/cjs/src/misc.spec.d.ts.map +1 -0
  34. package/dist/cjs/src/misc.spec.js +51 -0
  35. package/dist/cjs/src/misc.spec.js.map +1 -0
  36. package/dist/cjs/src/mod.d.ts +9 -0
  37. package/dist/cjs/src/mod.d.ts.map +1 -0
  38. package/dist/cjs/src/mod.js +12 -0
  39. package/dist/cjs/src/mod.js.map +1 -0
  40. package/dist/cjs/src/pure-functions/sized-chunk-transformer.d.ts +13 -0
  41. package/dist/cjs/src/pure-functions/sized-chunk-transformer.d.ts.map +1 -0
  42. package/dist/cjs/src/pure-functions/sized-chunk-transformer.js +45 -0
  43. package/dist/cjs/src/pure-functions/sized-chunk-transformer.js.map +1 -0
  44. package/dist/cjs/src/pure-functions/sized-chunk-transformer.spec.d.ts +3 -0
  45. package/dist/cjs/src/pure-functions/sized-chunk-transformer.spec.d.ts.map +1 -0
  46. package/dist/cjs/src/pure-functions/sized-chunk-transformer.spec.js +39 -0
  47. package/dist/cjs/src/pure-functions/sized-chunk-transformer.spec.js.map +1 -0
  48. package/dist/cjs/src/qrcode.d.ts +6 -0
  49. package/dist/cjs/src/qrcode.d.ts.map +1 -0
  50. package/dist/cjs/src/qrcode.js +35 -0
  51. package/dist/cjs/src/qrcode.js.map +1 -0
  52. package/dist/cjs/src/qrcode.spec.d.ts +3 -0
  53. package/dist/cjs/src/qrcode.spec.d.ts.map +1 -0
  54. package/dist/cjs/src/qrcode.spec.js +47 -0
  55. package/dist/cjs/src/qrcode.spec.js.map +1 -0
  56. package/dist/cjs/src/urn-registry/mod.d.ts +3 -0
  57. package/dist/cjs/src/urn-registry/mod.d.ts.map +1 -0
  58. package/dist/cjs/src/urn-registry/mod.js +6 -0
  59. package/dist/cjs/src/urn-registry/mod.js.map +1 -0
  60. package/dist/cjs/src/urn-registry/random-uuid.d.ts +4 -0
  61. package/dist/cjs/src/urn-registry/random-uuid.d.ts.map +1 -0
  62. package/dist/cjs/src/urn-registry/random-uuid.js +30 -0
  63. package/dist/cjs/src/urn-registry/random-uuid.js.map +1 -0
  64. package/dist/cjs/src/urn-registry/uniform-resource-name-registry.d.ts +76 -0
  65. package/dist/cjs/src/urn-registry/uniform-resource-name-registry.d.ts.map +1 -0
  66. package/dist/cjs/src/urn-registry/uniform-resource-name-registry.js +259 -0
  67. package/dist/cjs/src/urn-registry/uniform-resource-name-registry.js.map +1 -0
  68. package/dist/cjs/src/urn-registry/uniform-resource-name-registry.spec.d.ts +3 -0
  69. package/dist/cjs/src/urn-registry/uniform-resource-name-registry.spec.d.ts.map +1 -0
  70. package/dist/cjs/src/urn-registry/uniform-resource-name-registry.spec.js +81 -0
  71. package/dist/cjs/src/urn-registry/uniform-resource-name-registry.spec.js.map +1 -0
  72. package/dist/cjs/src/urn-registry/uuid-to-big-int.d.ts +8 -0
  73. package/dist/cjs/src/urn-registry/uuid-to-big-int.d.ts.map +1 -0
  74. package/dist/cjs/src/urn-registry/uuid-to-big-int.js +16 -0
  75. package/dist/cjs/src/urn-registry/uuid-to-big-int.js.map +1 -0
  76. package/dist/cjs/src/urn-registry/uuid-to-big-int.spec.d.ts +3 -0
  77. package/dist/cjs/src/urn-registry/uuid-to-big-int.spec.d.ts.map +1 -0
  78. package/dist/cjs/src/urn-registry/uuid-to-big-int.spec.js +17 -0
  79. package/dist/cjs/src/urn-registry/uuid-to-big-int.spec.js.map +1 -0
  80. package/dist/cjs/src/version.d.ts +5 -0
  81. package/dist/cjs/src/version.d.ts.map +1 -0
  82. package/dist/cjs/src/version.js +8 -0
  83. package/dist/cjs/src/version.js.map +1 -0
  84. package/dist/cjs/src/version.spec.d.ts +3 -0
  85. package/dist/cjs/src/version.spec.d.ts.map +1 -0
  86. package/dist/cjs/src/version.spec.js +9 -0
  87. package/dist/cjs/src/version.spec.js.map +1 -0
  88. package/dist/cjs/tests/integration.spec.d.ts +3 -0
  89. package/dist/cjs/tests/integration.spec.d.ts.map +1 -0
  90. package/dist/cjs/tests/integration.spec.js +8 -0
  91. package/dist/cjs/tests/integration.spec.js.map +1 -0
  92. package/dist/cjs/tests/network-timeout.spec.d.ts +3 -0
  93. package/dist/cjs/tests/network-timeout.spec.d.ts.map +1 -0
  94. package/dist/cjs/tests/network-timeout.spec.js +121 -0
  95. package/dist/cjs/tests/network-timeout.spec.js.map +1 -0
  96. package/dist/esm/src/config.d.ts +4 -0
  97. package/dist/esm/src/config.d.ts.map +1 -0
  98. package/dist/esm/src/config.js +5 -0
  99. package/dist/esm/src/config.js.map +1 -0
  100. package/dist/esm/src/file-box.d.ts +209 -0
  101. package/dist/esm/src/file-box.d.ts.map +1 -0
  102. package/dist/esm/src/file-box.js +775 -0
  103. package/dist/esm/src/file-box.js.map +1 -0
  104. package/dist/esm/src/file-box.spec.d.ts +14 -0
  105. package/dist/esm/src/file-box.spec.d.ts.map +1 -0
  106. package/dist/esm/src/file-box.spec.js +386 -0
  107. package/dist/esm/src/file-box.spec.js.map +1 -0
  108. package/dist/esm/src/file-box.type.d.ts +103 -0
  109. package/dist/esm/src/file-box.type.d.ts.map +1 -0
  110. package/dist/esm/src/file-box.type.js +31 -0
  111. package/dist/esm/src/file-box.type.js.map +1 -0
  112. package/dist/esm/src/interface.d.ts +25 -0
  113. package/dist/esm/src/interface.d.ts.map +1 -0
  114. package/dist/esm/src/interface.js +2 -0
  115. package/dist/esm/src/interface.js.map +1 -0
  116. package/dist/esm/src/interface.spec.d.ts +3 -0
  117. package/dist/esm/src/interface.spec.d.ts.map +1 -0
  118. package/dist/esm/src/interface.spec.js +9 -0
  119. package/dist/esm/src/interface.spec.js.map +1 -0
  120. package/dist/esm/src/misc.d.ts +17 -0
  121. package/dist/esm/src/misc.d.ts.map +1 -0
  122. package/dist/esm/src/misc.js +126 -0
  123. package/dist/esm/src/misc.js.map +1 -0
  124. package/dist/esm/src/misc.spec.d.ts +3 -0
  125. package/dist/esm/src/misc.spec.d.ts.map +1 -0
  126. package/dist/esm/src/misc.spec.js +49 -0
  127. package/dist/esm/src/misc.spec.js.map +1 -0
  128. package/dist/esm/src/mod.d.ts +9 -0
  129. package/dist/esm/src/mod.d.ts.map +1 -0
  130. package/dist/esm/src/mod.js +6 -0
  131. package/dist/esm/src/mod.js.map +1 -0
  132. package/dist/esm/src/pure-functions/sized-chunk-transformer.d.ts +13 -0
  133. package/dist/esm/src/pure-functions/sized-chunk-transformer.d.ts.map +1 -0
  134. package/dist/esm/src/pure-functions/sized-chunk-transformer.js +39 -0
  135. package/dist/esm/src/pure-functions/sized-chunk-transformer.js.map +1 -0
  136. package/dist/esm/src/pure-functions/sized-chunk-transformer.spec.d.ts +3 -0
  137. package/dist/esm/src/pure-functions/sized-chunk-transformer.spec.d.ts.map +1 -0
  138. package/dist/esm/src/pure-functions/sized-chunk-transformer.spec.js +37 -0
  139. package/dist/esm/src/pure-functions/sized-chunk-transformer.spec.js.map +1 -0
  140. package/dist/esm/src/qrcode.d.ts +6 -0
  141. package/dist/esm/src/qrcode.d.ts.map +1 -0
  142. package/dist/esm/src/qrcode.js +27 -0
  143. package/dist/esm/src/qrcode.js.map +1 -0
  144. package/dist/esm/src/qrcode.spec.d.ts +3 -0
  145. package/dist/esm/src/qrcode.spec.d.ts.map +1 -0
  146. package/dist/esm/src/qrcode.spec.js +45 -0
  147. package/dist/esm/src/qrcode.spec.js.map +1 -0
  148. package/dist/esm/src/urn-registry/mod.d.ts +3 -0
  149. package/dist/esm/src/urn-registry/mod.d.ts.map +1 -0
  150. package/dist/esm/src/urn-registry/mod.js +3 -0
  151. package/dist/esm/src/urn-registry/mod.js.map +1 -0
  152. package/dist/esm/src/urn-registry/random-uuid.d.ts +4 -0
  153. package/dist/esm/src/urn-registry/random-uuid.d.ts.map +1 -0
  154. package/dist/esm/src/urn-registry/random-uuid.js +4 -0
  155. package/dist/esm/src/urn-registry/random-uuid.js.map +1 -0
  156. package/dist/esm/src/urn-registry/uniform-resource-name-registry.d.ts +76 -0
  157. package/dist/esm/src/urn-registry/uniform-resource-name-registry.d.ts.map +1 -0
  158. package/dist/esm/src/urn-registry/uniform-resource-name-registry.js +253 -0
  159. package/dist/esm/src/urn-registry/uniform-resource-name-registry.js.map +1 -0
  160. package/dist/esm/src/urn-registry/uniform-resource-name-registry.spec.d.ts +3 -0
  161. package/dist/esm/src/urn-registry/uniform-resource-name-registry.spec.d.ts.map +1 -0
  162. package/dist/esm/src/urn-registry/uniform-resource-name-registry.spec.js +79 -0
  163. package/dist/esm/src/urn-registry/uniform-resource-name-registry.spec.js.map +1 -0
  164. package/dist/esm/src/urn-registry/uuid-to-big-int.d.ts +8 -0
  165. package/dist/esm/src/urn-registry/uuid-to-big-int.d.ts.map +1 -0
  166. package/dist/esm/src/urn-registry/uuid-to-big-int.js +13 -0
  167. package/dist/esm/src/urn-registry/uuid-to-big-int.js.map +1 -0
  168. package/dist/esm/src/urn-registry/uuid-to-big-int.spec.d.ts +3 -0
  169. package/dist/esm/src/urn-registry/uuid-to-big-int.spec.d.ts.map +1 -0
  170. package/dist/esm/src/urn-registry/uuid-to-big-int.spec.js +15 -0
  171. package/dist/esm/src/urn-registry/uuid-to-big-int.spec.js.map +1 -0
  172. package/dist/esm/src/version.d.ts +5 -0
  173. package/dist/esm/src/version.d.ts.map +1 -0
  174. package/dist/esm/src/version.js +5 -0
  175. package/dist/esm/src/version.js.map +1 -0
  176. package/dist/esm/src/version.spec.d.ts +3 -0
  177. package/dist/esm/src/version.spec.d.ts.map +1 -0
  178. package/dist/esm/src/version.spec.js +7 -0
  179. package/dist/esm/src/version.spec.js.map +1 -0
  180. package/dist/esm/tests/integration.spec.d.ts +3 -0
  181. package/dist/esm/tests/integration.spec.d.ts.map +1 -0
  182. package/dist/esm/tests/integration.spec.js +6 -0
  183. package/dist/esm/tests/integration.spec.js.map +1 -0
  184. package/dist/esm/tests/network-timeout.spec.d.ts +3 -0
  185. package/dist/esm/tests/network-timeout.spec.d.ts.map +1 -0
  186. package/dist/esm/tests/network-timeout.spec.js +119 -0
  187. package/dist/esm/tests/network-timeout.spec.js.map +1 -0
  188. package/package.json +85 -0
  189. package/src/config.ts +5 -0
  190. package/src/file-box.spec.ts +480 -0
  191. package/src/file-box.ts +1042 -0
  192. package/src/file-box.type.ts +145 -0
  193. package/src/interface.spec.ts +17 -0
  194. package/src/interface.ts +47 -0
  195. package/src/misc.spec.ts +70 -0
  196. package/src/misc.ts +157 -0
  197. package/src/mod.ts +33 -0
  198. package/src/pure-functions/sized-chunk-transformer.spec.ts +52 -0
  199. package/src/pure-functions/sized-chunk-transformer.ts +49 -0
  200. package/src/qrcode.spec.ts +55 -0
  201. package/src/qrcode.ts +38 -0
  202. package/src/typings.d.ts +1 -0
  203. package/src/urn-registry/mod.ts +7 -0
  204. package/src/urn-registry/random-uuid.ts +7 -0
  205. package/src/urn-registry/uniform-resource-name-registry.spec.ts +109 -0
  206. package/src/urn-registry/uniform-resource-name-registry.ts +342 -0
  207. package/src/urn-registry/uuid-to-big-int.spec.ts +19 -0
  208. package/src/urn-registry/uuid-to-big-int.ts +16 -0
  209. package/src/version.spec.ts +9 -0
  210. 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,4 @@
1
+ /// <reference path="../../../src/typings.d.ts" />
2
+ export { VERSION } from './version.js';
3
+ export declare const HTTP_TIMEOUT: number;
4
+ //# sourceMappingURL=config.d.ts.map
@@ -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,5 @@
1
+ /// <reference path="./typings.d.ts" />
2
+ export { VERSION } from './version.js';
3
+ export const HTTP_TIMEOUT = Number(process.env['FILEBOX_HTTP_TIMEOUT'])
4
+ || 60 * 1000;
5
+ //# sourceMappingURL=config.js.map
@@ -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":"AAAA;;;;;GAKG;;;;AAIH,OAAO,KAAK,KAAK,IAAI,MAAM,MAAM,CAAA;AAMjC,OAAO,EAEL,QAAQ,EACR,QAAQ,EACT,MAA8B,QAAQ,CAAA;AAUvC,OAAO,EACL,iBAAiB,EACjB,cAAc,EAMd,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,SAAS,EACV,MAA8B,oBAAoB,CAAA;AAenD,OAAO,KAAK,EACV,gBAAgB,EACjB,MAA8B,gBAAgB,CAAA;AAQ/C,cAAM,OAAQ,YAAW,QAAQ,EAAE,gBAAgB;IAEjD;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,SAAU;IAEjC;;;;OAIG;IACH,MAAM,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAE,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,gBAAgB;IAI/D;;OAEG;IACH,MAAM,CAAC,KAAK,CAAE,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,gBAAgB;IAItD;;OAEG;IACH,MAAM,CAAC,cAAc,CAAE,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,gBAAgB;IAI/D;;OAEG;IACH,MAAM,CAAC,aAAa,CAAE,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,OAAO;IAIrD,MAAM,CAAC,OAAO,CACZ,GAAG,EAAQ,MAAM,EACjB,OAAO,CAAC,EAAG;QACT,OAAO,CAAC,EAAG,IAAI,CAAC,mBAAmB,CAAC;QACpC,IAAI,CAAC,EAAM,MAAM,CAAC;QAClB,IAAI,CAAC,EAAM,MAAM,CAAC;QAClB,GAAG,CAAC,EAAO,MAAM,CAAC;KACnB,GACA,OAAO;IAEV;;OAEG;IACH,MAAM,CAAC,OAAO,CACZ,GAAG,EAAQ,MAAM,EACjB,IAAI,CAAC,EAAM,MAAM,EACjB,OAAO,CAAC,EAAG,IAAI,CAAC,mBAAmB,GAClC,OAAO;IA2CV;;;;OAIG;IAEH,MAAM,CAAC,QAAQ,CACb,IAAI,EAAI,MAAM,EACd,IAAI,CAAC,EAAG,MAAM,EACd,GAAG,CAAC,EAAK,MAAM,GACd,OAAO;IAcV;;OAEG;IACH,MAAM,CAAC,UAAU,CACf,MAAM,EAAE,QAAQ,EAChB,IAAI,CAAC,EAAG,MAAM,EACd,GAAG,CAAC,EAAI,MAAM,GACb,OAAO;IAUV,MAAM,CAAC,UAAU,CACf,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAI,MAAM,EACf,GAAG,CAAC,EAAK,MAAM,GACd,OAAO;IAUV;;;OAGG;IACH,MAAM,CAAC,UAAU,CACf,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAI,MAAM,EACf,GAAG,CAAC,EAAK,MAAM,GACd,OAAO;IAUV;;OAEG;IACH,MAAM,CAAC,WAAW,CAChB,OAAO,EAAG,MAAM,EAChB,IAAI,CAAC,EAAM,MAAM,EACjB,GAAG,CAAC,EAAO,MAAM,GAChB,OAAO;IAQV;;;OAGG;IACH,MAAM,CAAC,UAAU,CACf,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAI,MAAM,GACb,OAAO;IAUV,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,EAAK,UAAU,CAAA;IAC7C,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,EAAG,SAAS,CAAA;IAE5C,MAAM,CAAC,QAAQ,CACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAG,MAAM,CAAC;KACf,GACA,OAAO;IAEV;;OAEG;IACH,MAAM,CAAC,QAAQ,CACb,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,GACX,OAAO;IAoCV;;OAEG;IACH,MAAM,CAAC,aAAa,CAClB,MAAM,EAAE,UAAU,GACjB,IAAI;IAOP;;OAEG;IACH,MAAM,CAAC,YAAY,CACjB,KAAK,EAAE,SAAS,GACf,IAAI;IAOP;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAE,GAAG,EAAE,iBAAiB,GAAG,MAAM,GAAG,OAAO;IA6D1D;;;;OAIG;IACH,QAAQ,CAAC,OAAO,SAAU;IAE1B;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;IAC3B,IAAI,IAAI,gBAAyB;IAEjC;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,IAAI,IAAK,MAAM,CAKlB;IAED;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAAA;IAEhC;;OAEG;IACH,QAAQ,SAAwB;IAEhC;;;;;OAKG;IACH,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC7B,IAAI,SAAS,IAAK,MAAM,CAKvB;IAED,SAAS,CAAC,KAAK,EAAE,MAAM,CAAA;IACvB,IAAI,IAAI,IAAK,MAAM,CAElB;IAED,SAAS,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAA;IAC9B,IAAI,QAAQ,IAAK,QAAQ,CAKxB;IAED,IAAI,QAAQ,CAAE,IAAI,EAAE,QAAQ,EAM3B;IAED;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAc;IAEpC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAc;IAEtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAA0B;gBAGjD,OAAO,EAAE,cAAc;IAuFnB,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAiB7B;;OAEG;cACa,gBAAgB,IAAK,OAAO,CAAC,IAAI,CAAC;IAkClD;;;;OAIG;IACH,QAAQ;IAUR,MAAM,IAAK,iBAAiB;IA4FtB,QAAQ,IAAK,OAAO,CAAC,QAAQ,CAAC;IAsEpC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,sBAAsB;YAOhB,qBAAqB;YAYrB,wBAAwB;IAQtC;;;;OAIG;IACG,MAAM,CACV,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,UAAQ,GAChB,OAAO,CAAC,IAAI,CAAC;IAoCV,QAAQ,IAAK,OAAO,CAAC,MAAM,CAAC;IAYlC;;OAEG;IACG,SAAS,IAAK,OAAO,CAAC,MAAM,CAAC;IAiB7B,QAAQ,IAAK,OAAO,CAAC,MAAM,CAAC;IAe5B,QAAQ,IAAK,OAAO,CAAC,MAAM,CAAC;IAc5B,MAAM,IAAK,OAAO,CAAC,MAAM,CAAC;IAoBhC;;;;OAIG;IAEH,IAAI,CAAC,CAAC,SAAS,QAAQ,EACrB,WAAW,EAAE,CAAC,GACb,CAAC;CAYL;AASD,OAAO,EACL,OAAO,GACR,CAAA"}