@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 @@
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../src/interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env -S node --no-warnings --loader ts-node/esm
2
+ export {};
3
+ //# sourceMappingURL=interface.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.spec.d.ts","sourceRoot":"","sources":["../../../src/interface.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env -S node --no-warnings --loader ts-node/esm
2
+ // tslint:disable:no-shadowed-variable
3
+ import { test } from 'tstest';
4
+ import { FileBox, } from './file-box.js';
5
+ test('FileBoxInterface', async (t) => {
6
+ const fileBox = FileBox.fromQRCode('test');
7
+ t.ok(fileBox, 'should be ok with interface');
8
+ });
9
+ //# sourceMappingURL=interface.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.spec.js","sourceRoot":"","sources":["../../../src/interface.spec.ts"],"names":[],"mappings":";AAEA,sCAAsC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAO,QAAQ,CAAA;AAM9B,OAAO,EACL,OAAO,GACR,MAAgB,eAAe,CAAA;AAEhC,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACjC,MAAM,OAAO,GAAqB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAC5D,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,6BAA6B,CAAC,CAAA;AAC9C,CAAC,CAAC,CAAA"}
@@ -0,0 +1,17 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ /// <reference types="node" />
4
+ import http from 'http';
5
+ import type stream from 'stream';
6
+ export declare function dataUrlToBase64(dataUrl: string): string;
7
+ /**
8
+ * Get http headers for specific `url`
9
+ * follow 302 redirection for max `REDIRECT_TTL` times.
10
+ *
11
+ * @credit https://stackoverflow.com/a/43632171/1123955
12
+ */
13
+ export declare function httpHeadHeader(url: string): Promise<http.IncomingHttpHeaders>;
14
+ export declare function httpHeaderToFileName(headers: http.IncomingHttpHeaders): null | string;
15
+ export declare function httpStream(url: string, headers?: http.OutgoingHttpHeaders): Promise<http.IncomingMessage>;
16
+ export declare function streamToBuffer(stream: stream.Readable): Promise<Buffer>;
17
+ //# sourceMappingURL=misc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../../src/misc.ts"],"names":[],"mappings":";;;AAAA,OAAO,IAAI,MAAS,MAAM,CAAA;AAG1B,OAAO,KAAK,MAAM,MAAQ,QAAQ,CAAA;AAIlC,wBAAgB,eAAe,CAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAwDpF;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,IAAI,CAAC,mBAAmB,GAChC,IAAI,GAAG,MAAM,CAef;AAED,wBAAsB,UAAU,CAC9B,GAAG,EAAO,MAAM,EAChB,OAAO,GAAG,IAAI,CAAC,mBAAwB,GACtC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CA4C/B;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,CAAC,QAAQ,GACtB,OAAO,CAAC,MAAM,CAAC,CAUjB"}
@@ -0,0 +1,126 @@
1
+ import http from 'http';
2
+ import https from 'https';
3
+ import { URL } from 'url';
4
+ import { HTTP_TIMEOUT } from './config.js';
5
+ export function dataUrlToBase64(dataUrl) {
6
+ const dataList = dataUrl.split(',');
7
+ return dataList[dataList.length - 1];
8
+ }
9
+ /**
10
+ * Get http headers for specific `url`
11
+ * follow 302 redirection for max `REDIRECT_TTL` times.
12
+ *
13
+ * @credit https://stackoverflow.com/a/43632171/1123955
14
+ */
15
+ export async function httpHeadHeader(url) {
16
+ let REDIRECT_TTL = 7;
17
+ while (true) {
18
+ if (REDIRECT_TTL-- <= 0) {
19
+ throw new Error(`ttl expired! too many(>${REDIRECT_TTL}) 302 redirection.`);
20
+ }
21
+ const res = await _headHeader(url);
22
+ if (!/^3/.test(String(res.statusCode))) {
23
+ return res.headers;
24
+ }
25
+ // console.log('302 found for ' + url)
26
+ if (!res.headers.location) {
27
+ throw new Error('302 found but no location!');
28
+ }
29
+ url = res.headers.location;
30
+ }
31
+ async function _headHeader(destUrl) {
32
+ const parsedUrl = new URL(destUrl);
33
+ const options = {
34
+ method: 'HEAD',
35
+ // method : 'GET',
36
+ };
37
+ let request;
38
+ if (parsedUrl.protocol === 'https:') {
39
+ request = https.request;
40
+ }
41
+ else if (parsedUrl.protocol === 'http:') {
42
+ request = http.request;
43
+ }
44
+ else {
45
+ throw new Error('unknown protocol: ' + parsedUrl.protocol);
46
+ }
47
+ return new Promise((resolve, reject) => {
48
+ let res;
49
+ const req = request(parsedUrl, options, (response) => {
50
+ res = response;
51
+ resolve(res);
52
+ })
53
+ .on('error', reject)
54
+ .setTimeout(HTTP_TIMEOUT, () => {
55
+ const e = new Error(`FileBox: Http request timeout (${HTTP_TIMEOUT})!`);
56
+ req.emit('error', e);
57
+ req.destroy();
58
+ })
59
+ .end();
60
+ });
61
+ }
62
+ }
63
+ export function httpHeaderToFileName(headers) {
64
+ const contentDisposition = headers['content-disposition'];
65
+ if (!contentDisposition) {
66
+ return null;
67
+ }
68
+ // 'content-disposition': 'attachment; filename=db-0.0.19.zip'
69
+ const matches = contentDisposition.match(/attachment; filename="?(.+[^"])"?$/i);
70
+ if (matches && matches[1]) {
71
+ return matches[1];
72
+ }
73
+ return null;
74
+ }
75
+ export async function httpStream(url, headers = {}) {
76
+ const parsedUrl = new URL(url);
77
+ const protocol = parsedUrl.protocol;
78
+ const options = {};
79
+ let get;
80
+ if (!protocol) {
81
+ throw new Error('protocol is empty');
82
+ }
83
+ if (protocol.match(/^https:/i)) {
84
+ get = https.get;
85
+ options.agent = https.globalAgent;
86
+ }
87
+ else if (protocol.match(/^http:/i)) {
88
+ get = http.get;
89
+ options.agent = http.globalAgent;
90
+ }
91
+ else {
92
+ throw new Error('protocol unknown: ' + protocol);
93
+ }
94
+ options.headers = {
95
+ ...headers,
96
+ };
97
+ return new Promise((resolve, reject) => {
98
+ let res = null;
99
+ const req = get(parsedUrl, options, (response) => {
100
+ res = response;
101
+ resolve(res);
102
+ })
103
+ .on('error', reject)
104
+ .setTimeout(HTTP_TIMEOUT, () => {
105
+ const e = new Error(`FileBox: Http request timeout (${HTTP_TIMEOUT})!`);
106
+ if (res) {
107
+ res.emit('error', e);
108
+ }
109
+ req.emit('error', e);
110
+ req.destroy();
111
+ })
112
+ .end();
113
+ });
114
+ }
115
+ export async function streamToBuffer(stream) {
116
+ return new Promise((resolve, reject) => {
117
+ const bufferList = [];
118
+ stream.once('error', reject);
119
+ stream.once('end', () => {
120
+ const fullBuffer = Buffer.concat(bufferList);
121
+ resolve(fullBuffer);
122
+ });
123
+ stream.on('data', buffer => bufferList.push(buffer));
124
+ });
125
+ }
126
+ //# sourceMappingURL=misc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc.js","sourceRoot":"","sources":["../../../src/misc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env -S node --no-warnings --loader ts-node/esm
2
+ export {};
3
+ //# sourceMappingURL=misc.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc.spec.d.ts","sourceRoot":"","sources":["../../../src/misc.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env -S node --no-warnings --loader ts-node/esm
2
+ // tslint:disable:no-shadowed-variable
3
+ import { test } from 'tstest';
4
+ import { dataUrlToBase64, httpHeaderToFileName, httpHeadHeader, httpStream, streamToBuffer, } from './misc.js';
5
+ test('dataUrl to base64', async (t) => {
6
+ const base64 = [
7
+ 'R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl',
8
+ '3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',
9
+ 'ACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGA',
10
+ 'iqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7',
11
+ ].join('');
12
+ const dataUrl = [
13
+ 'data:image/png;base64,',
14
+ base64,
15
+ ].join('');
16
+ t.equal(base64, dataUrlToBase64(dataUrl), 'should get base64 from dataUrl');
17
+ });
18
+ test('httpHeadHeader', async (t) => {
19
+ const URL = 'https://github.com/huan/file-box/archive/v0.6.tar.gz';
20
+ const EXPECTED_HEADERS_KEY = 'content-disposition';
21
+ const EXPECTED_HEADERS_VALUE = 'attachment; filename=file-box-0.6.tar.gz';
22
+ const headers = await httpHeadHeader(URL);
23
+ t.equal(headers[EXPECTED_HEADERS_KEY], EXPECTED_HEADERS_VALUE, 'should get the headers right');
24
+ });
25
+ test('httpHeaderToFileName', async (t) => {
26
+ const HEADERS_QUOTATION_MARK = {
27
+ 'content-disposition': 'attachment; filename="db-0.0.19.zip"',
28
+ };
29
+ const HEADERS_NO_QUOTATION_MARK = {
30
+ 'content-disposition': 'attachment; filename=db-0.0.19.zip',
31
+ };
32
+ const EXPECTED_FILE_NAME = 'db-0.0.19.zip';
33
+ let filename = httpHeaderToFileName(HEADERS_QUOTATION_MARK);
34
+ t.equal(filename, EXPECTED_FILE_NAME, 'should get filename with quotation mark');
35
+ filename = httpHeaderToFileName(HEADERS_NO_QUOTATION_MARK);
36
+ t.equal(filename, EXPECTED_FILE_NAME, 'should get filename with no quotation mark');
37
+ });
38
+ test('httpStream', async (t) => {
39
+ const URL = 'https://httpbin.org/headers';
40
+ const MOL_KEY = 'Mol';
41
+ const MOL_VAL = '42';
42
+ const headers = {};
43
+ headers[MOL_KEY] = MOL_VAL;
44
+ const res = await httpStream(URL, headers);
45
+ const buffer = await streamToBuffer(res);
46
+ const obj = JSON.parse(buffer.toString());
47
+ t.equal(obj.headers[MOL_KEY], MOL_VAL, 'should send the header right');
48
+ });
49
+ //# sourceMappingURL=misc.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc.spec.js","sourceRoot":"","sources":["../../../src/misc.spec.ts"],"names":[],"mappings":";AAEA,sCAAsC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAO,QAAQ,CAAA;AAE9B,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,UAAU,EACV,cAAc,GACf,MAA8B,WAAW,CAAA;AAE1C,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAClC,MAAM,MAAM,GAAG;QACb,0EAA0E;QAC1E,0EAA0E;QAC1E,0EAA0E;QAC1E,0EAA0E;KAC3E,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACV,MAAM,OAAO,GAAG;QACd,wBAAwB;QACxB,MAAM;KACP,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEV,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,gCAAgC,CAAC,CAAA;AAC7E,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC/B,MAAM,GAAG,GAAG,sDAAsD,CAAA;IAElE,MAAM,oBAAoB,GAAK,qBAAqB,CAAA;IACpD,MAAM,sBAAsB,GAAG,0CAA0C,CAAA;IAEzE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAA;IAEzC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,sBAAsB,EAAE,8BAA8B,CAAC,CAAA;AAChG,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,sBAAsB,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACrC,MAAM,sBAAsB,GAAQ;QAClC,qBAAqB,EAAE,sCAAsC;KAC9D,CAAA;IACD,MAAM,yBAAyB,GAAQ;QACrC,qBAAqB,EAAE,oCAAoC;KAC5D,CAAA;IACD,MAAM,kBAAkB,GAAG,eAAe,CAAA;IAE1C,IAAI,QAAQ,GAAG,oBAAoB,CAAC,sBAAsB,CAAC,CAAA;IAC3D,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,kBAAkB,EAAE,yCAAyC,CAAC,CAAA;IAEhF,QAAQ,GAAG,oBAAoB,CAAC,yBAAyB,CAAC,CAAA;IAC1D,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,kBAAkB,EAAE,4CAA4C,CAAC,CAAA;AACrF,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,YAAY,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC3B,MAAM,GAAG,GAAG,6BAA6B,CAAA;IAEzC,MAAM,OAAO,GAAG,KAAK,CAAA;IACrB,MAAM,OAAO,GAAG,IAAI,CAAA;IAEpB,MAAM,OAAO,GAAG,EAA+B,CAAA;IAC/C,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;IAE1B,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IAE1C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,CAAA;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IACzC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,8BAA8B,CAAC,CAAA;AACxE,CAAC,CAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { FileBoxType } from './file-box.type.js';
2
+ import { VERSION } from './config.js';
3
+ import { FileBox } from './file-box.js';
4
+ import type { FileBoxInterface, FileBoxConstructor } from './interface.js';
5
+ import type { UuidSaver, UuidLoader } from './file-box.type.js';
6
+ import { UniformResourceNameRegistry } from './urn-registry/uniform-resource-name-registry.js';
7
+ export type { UuidSaver, UuidLoader, FileBoxInterface, FileBoxConstructor, };
8
+ export { FileBox, FileBoxType, UniformResourceNameRegistry, VERSION, };
9
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACZ,MAA4B,oBAAoB,CAAA;AACjD,OAAO,EACL,OAAO,EACR,MAA4B,aAAa,CAAA;AAC1C,OAAO,EACL,OAAO,EACR,MAA4B,eAAe,CAAA;AAC5C,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EACnB,MAA4B,gBAAgB,CAAA;AAC7C,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACX,MAA4B,oBAAoB,CAAA;AACjD,OAAO,EACL,2BAA2B,EAC5B,MAAkC,kDAAkD,CAAA;AAErF,YAAY,EACV,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,kBAAkB,GACnB,CAAA;AACD,OAAO,EACL,OAAO,EACP,WAAW,EACX,2BAA2B,EAC3B,OAAO,GACR,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { FileBoxType, } from './file-box.type.js';
2
+ import { VERSION, } from './config.js';
3
+ import { FileBox, } from './file-box.js';
4
+ import { UniformResourceNameRegistry, } from './urn-registry/uniform-resource-name-registry.js';
5
+ export { FileBox, FileBoxType, UniformResourceNameRegistry, VERSION, };
6
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,GACZ,MAA4B,oBAAoB,CAAA;AACjD,OAAO,EACL,OAAO,GACR,MAA4B,aAAa,CAAA;AAC1C,OAAO,EACL,OAAO,GACR,MAA4B,eAAe,CAAA;AAS5C,OAAO,EACL,2BAA2B,GAC5B,MAAkC,kDAAkD,CAAA;AAQrF,OAAO,EACL,OAAO,EACP,WAAW,EACX,2BAA2B,EAC3B,OAAO,GACR,CAAA"}
@@ -0,0 +1,13 @@
1
+ /// <reference types="node" />
2
+ /**
3
+ * ChunkerTransformStream, a transform stream to take arbitrary chunk sizes and make them consistent
4
+ * https://codereview.stackexchange.com/q/57492/185709
5
+ */
6
+ import stream from 'stream';
7
+ /**
8
+ * @param chunkByte The size of the chunks to be created
9
+ * @returns
10
+ */
11
+ declare function sizedChunkTransformer(chunkByte?: number): stream.Transform;
12
+ export { sizedChunkTransformer, };
13
+ //# sourceMappingURL=sized-chunk-transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sized-chunk-transformer.d.ts","sourceRoot":"","sources":["../../../../src/pure-functions/sized-chunk-transformer.ts"],"names":[],"mappings":";AAAA;;;GAGG;AACH,OAAO,MAAM,MAAM,QAAQ,CAAA;AAQ3B;;;GAGG;AACH,iBAAS,qBAAqB,CAAE,SAAS,SAAqB,oBA4B7D;AAED,OAAO,EACL,qBAAqB,GACtB,CAAA"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * ChunkerTransformStream, a transform stream to take arbitrary chunk sizes and make them consistent
3
+ * https://codereview.stackexchange.com/q/57492/185709
4
+ */
5
+ import stream from 'stream';
6
+ /**
7
+ * TCP streaming workload tuning
8
+ * https://www.ibm.com/docs/en/aix/7.2?topic=tuning-tcp-streaming-workload
9
+ */
10
+ const DEFAULT_CHUNK_BYTE = 256 * 1024; // 256 KB
11
+ /**
12
+ * @param chunkByte The size of the chunks to be created
13
+ * @returns
14
+ */
15
+ function sizedChunkTransformer(chunkByte = DEFAULT_CHUNK_BYTE) {
16
+ let buffer = Buffer.from([]);
17
+ const transform = function (chunk, _, done) {
18
+ buffer = Buffer.concat([buffer, chunk]);
19
+ while (buffer.length >= chunkByte) {
20
+ this.push(buffer.slice(0, chunkByte));
21
+ buffer = buffer.slice(chunkByte);
22
+ }
23
+ done();
24
+ };
25
+ const flush = function (done) {
26
+ if (buffer.length) {
27
+ this.push(buffer);
28
+ }
29
+ done();
30
+ };
31
+ const chunker = new stream.Transform({
32
+ flush,
33
+ objectMode: true,
34
+ transform,
35
+ });
36
+ return chunker;
37
+ }
38
+ export { sizedChunkTransformer, };
39
+ //# sourceMappingURL=sized-chunk-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sized-chunk-transformer.js","sourceRoot":"","sources":["../../../../src/pure-functions/sized-chunk-transformer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,MAAM,MAAM,QAAQ,CAAA;AAE3B;;;GAGG;AACH,MAAM,kBAAkB,GAAG,GAAG,GAAG,IAAI,CAAA,CAAC,SAAS;AAE/C;;;GAGG;AACH,SAAS,qBAAqB,CAAE,SAAS,GAAG,kBAAkB;IAC5D,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAE5B,MAAM,SAAS,GAAyC,UAAU,KAAK,EAAE,CAAC,EAAE,IAAI;QAC9E,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAE,MAAM,EAAE,KAAK,CAAE,CAAC,CAAA;QAEzC,OAAO,MAAM,CAAC,MAAM,IAAI,SAAS,EAAE;YACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;YACrC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;SACjC;QAED,IAAI,EAAE,CAAA;IACR,CAAC,CAAA;IAED,MAAM,KAAK,GAAqC,UAAU,IAAI;QAC5D,IAAI,MAAM,CAAC,MAAM,EAAE;YACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;SAClB;QACD,IAAI,EAAE,CAAA;IACR,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC;QACnC,KAAK;QACL,UAAU,EAAE,IAAI;QAChB,SAAS;KACV,CAAC,CAAA;IAEF,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,OAAO,EACL,qBAAqB,GACtB,CAAA"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env -S node --no-warnings --loader ts-node/esm
2
+ export {};
3
+ //# sourceMappingURL=sized-chunk-transformer.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sized-chunk-transformer.spec.d.ts","sourceRoot":"","sources":["../../../../src/pure-functions/sized-chunk-transformer.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env -S node --no-warnings --loader ts-node/esm
2
+ /* eslint @typescript-eslint/no-unused-vars:off */
3
+ import { test } from 'tstest';
4
+ import { PassThrough, } from 'stream';
5
+ import { sizedChunkTransformer } from './sized-chunk-transformer.js';
6
+ test('chunkerTransformStream()', async (t) => {
7
+ const DATA_LIST = [
8
+ 'a',
9
+ 'b',
10
+ ];
11
+ const DATA = DATA_LIST.join('');
12
+ const createStream = () => {
13
+ const stream = new PassThrough();
14
+ stream.end(DATA);
15
+ return stream;
16
+ };
17
+ const getDataList = (stream) => {
18
+ return new Promise(resolve => {
19
+ const list = [];
20
+ stream.on('end', () => resolve(list));
21
+ stream.on('data', chunk => list.push(chunk));
22
+ });
23
+ };
24
+ const newStream0 = createStream();
25
+ const dataList0 = await getDataList(newStream0);
26
+ t.equal(dataList0.length, 1, 'should get 1 chunks');
27
+ t.equal(dataList0[0].toString(), DATA, 'should get data');
28
+ const newStream1 = createStream().pipe(sizedChunkTransformer(2));
29
+ const dataList1 = await getDataList(newStream1);
30
+ t.equal(dataList1.length, 1, 'should get 1 chunks');
31
+ t.equal(dataList1[0].toString(), DATA, 'should get data');
32
+ const newStream2 = createStream().pipe(sizedChunkTransformer(1));
33
+ const dataList2 = await getDataList(newStream2);
34
+ t.equal(dataList2.length, 2, 'should get 2 chunks');
35
+ t.equal(dataList2.join(''), DATA, 'should get data');
36
+ });
37
+ //# sourceMappingURL=sized-chunk-transformer.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sized-chunk-transformer.spec.js","sourceRoot":"","sources":["../../../../src/pure-functions/sized-chunk-transformer.spec.ts"],"names":[],"mappings":";AAEA,kDAAkD;AAElD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,OAAO,EACL,WAAW,GAEZ,MAA0B,QAAQ,CAAA;AAEnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAEpE,IAAI,CAAC,0BAA0B,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACzC,MAAM,SAAS,GAAG;QAChB,GAAG;QACH,GAAG;KACJ,CAAA;IACD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAE/B,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAA;QAChC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAChB,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,CAAC,MAAgB,EAAE,EAAE;QACvC,OAAO,IAAI,OAAO,CAAQ,OAAO,CAAC,EAAE;YAClC,MAAM,IAAI,GAAG,EAAW,CAAA;YACxB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;YACrC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QAC9C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,YAAY,EAAE,CAAA;IACjC,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,CAAA;IAE/C,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAA;IACnD,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAA;IAEzD,MAAM,UAAU,GAAG,YAAY,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAA;IAChE,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,CAAA;IAE/C,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAA;IACnD,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAA;IAEzD,MAAM,UAAU,GAAG,YAAY,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAA;IAChE,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,CAAA;IAE/C,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAA;IACnD,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAA;AACtD,CAAC,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { Readable } from 'stream';
4
+ export declare function bufferToQrValue(buf: Buffer): Promise<string>;
5
+ export declare function qrValueToStream(value: string): Promise<Readable>;
6
+ //# sourceMappingURL=qrcode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qrcode.d.ts","sourceRoot":"","sources":["../../../src/qrcode.ts"],"names":[],"mappings":";;AAAA,OAAO,EAEL,QAAQ,EACT,MAAoB,QAAQ,CAAA;AAa7B,wBAAsB,eAAe,CAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAenE;AAED,wBAAsB,eAAe,CAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAIvE"}
@@ -0,0 +1,27 @@
1
+ import { PassThrough, } from 'stream';
2
+ // The npm package of my best choice for QR code decoding on Angular SPA
3
+ // https://dev.to/j_sakamoto/the-npm-package-of-my-best-choice-for-qr-code-decoding-on-angular-spa-4747?returning-user=true
4
+ import Jimp from 'jimp';
5
+ import jsQR from 'jsqr';
6
+ /**
7
+ * https://www.npmjs.com/package/qrcode
8
+ * Huan(202002): This module is encode only.
9
+ */
10
+ import { toFileStream } from 'qrcode';
11
+ export async function bufferToQrValue(buf) {
12
+ const image = await Jimp.read(buf);
13
+ const qrCodeImageArray = new Uint8ClampedArray(image.bitmap.data.buffer);
14
+ const qrCodeResult = jsQR(qrCodeImageArray, image.bitmap.width, image.bitmap.height);
15
+ if (qrCodeResult) {
16
+ return qrCodeResult.data;
17
+ }
18
+ else {
19
+ throw new Error('bufferToQrcode(buf) fail!');
20
+ }
21
+ }
22
+ export async function qrValueToStream(value) {
23
+ const stream = new PassThrough();
24
+ await toFileStream(stream, value); // only support .png for now
25
+ return stream;
26
+ }
27
+ //# sourceMappingURL=qrcode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qrcode.js","sourceRoot":"","sources":["../../../src/qrcode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,GAEZ,MAAoB,QAAQ,CAAA;AAE7B,wEAAwE;AACxE,2HAA2H;AAC3H,OAAO,IAAI,MAAkB,MAAM,CAAA;AACnC,OAAO,IAAI,MAAkB,MAAM,CAAA;AAEnC;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAErC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAE,GAAW;IAChD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAClC,MAAM,gBAAgB,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAExE,MAAM,YAAY,GAAG,IAAI,CACvB,gBAAgB,EAChB,KAAK,CAAC,MAAM,CAAC,KAAK,EAClB,KAAK,CAAC,MAAM,CAAC,MAAM,CACpB,CAAA;IAED,IAAI,YAAY,EAAE;QAChB,OAAO,YAAY,CAAC,IAAI,CAAA;KACzB;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;KAC7C;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAE,KAAa;IAClD,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAA;IAChC,MAAM,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA,CAAC,4BAA4B;IAC9D,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env -S node --no-warnings --loader ts-node/esm
2
+ export {};
3
+ //# sourceMappingURL=qrcode.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qrcode.spec.d.ts","sourceRoot":"","sources":["../../../src/qrcode.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env -S node --no-warnings --loader ts-node/esm
2
+ import { test } from 'tstest';
3
+ import { bufferToQrValue, qrValueToStream, } from './qrcode.js';
4
+ test('imageBase64ToQrCode()', async (t) => {
5
+ const QRCODE_IMAGE_BASE64 = [
6
+ 'iVBORw0KGgoAAAANSUhEUgAAAMgAAADIAQMAAACXljzdAAAABlBMVEX///8AAABVwtN+AAAA',
7
+ 'CXBIWXMAAA7EAAAOxAGVKw4bAAAA7klEQVRYw+2WsQ3EIAxFjShSMgKjZLRktIzCCJQpIv7Z',
8
+ 'hCiXO/qzT/wCWXo0X3wbEw0NWVaEKM187KHW2QLZ+AhpXovfQ+J6skEWHELqBa5NEeCwR7iS',
9
+ 'V7BDzuzAiZ9eqn5IWjfWXHf7VCO5tPAM6U9AjSRideyHFn4FiuvDqV5CM9rZXuF2pZmIAjZy',
10
+ 'x4S0MDdBxEmu3TrliPf7iglPvuLlRydfU3P70UweCSK+ZYK0mUg1O4AVcv0/8itGkC7SdiTH',
11
+ '0+Mz19oJZ4NkhhSPbIhQkQGI8u1HJzmzs7p7pzNAru2pJb6z8ykkQ0P/pheK6vjurjf7+wAA',
12
+ 'AABJRU5ErkJggg==',
13
+ ].join('');
14
+ const EXPECTED_QRCODE_TEXT = 'hello, world!';
15
+ const buf = Buffer.from(QRCODE_IMAGE_BASE64, 'base64');
16
+ const text = await bufferToQrValue(buf);
17
+ t.equal(text, EXPECTED_QRCODE_TEXT, 'should decode qrcode image base64');
18
+ });
19
+ test('qrValueToStream()', async (t) => {
20
+ const QRCODE_VALUE = 'hello, world!';
21
+ const EXPECTED_QRCODE_IMAGE_BASE64 = [
22
+ 'iVBORw0KGgoAAAANSUhEUgAAAHQAAAB0CAYAAABUmhYnAAAAAklEQVR4AewaftIAAAKcSURBVO3BQY7',
23
+ 'cQAwEwSxC//9yeo88NSBIsx7TjIg/WGMUa5RijVKsUYo1SrFGKdYoxRqlWKMUa5RijVKsUYo1SrFGKd',
24
+ 'YoxRrl4qEk/CaVkyTcoXKShN+k8kSxRinWKMUa5eJlKm9Kwh0qn6TypiS8qVijFGuUYo1y8WFJuEPlj',
25
+ 'iR0Kl0SOpUuCZ3KHUm4Q+WTijVKsUYp1igXw6n8T4o1SrFGKdYoF8MloVOZrFijFGuUYo1y8WEq3yQJ',
26
+ 'ncoTKt+kWKMUa5RijXLxsiR8M5UuCZ3KSRK+WbFGKdYoxRrl4iGVf5nKicq/pFijFGuUYo0Sf/BAEjq',
27
+ 'VLglvUnkiCZ3KSRLepPJJxRqlWKMUa5SLlyXhROU3JaFT6ZJwonKShCeS0Kk8UaxRijVKsUaJP3hREj',
28
+ 'qVO5JwotIloVO5Iwl3qJwk4Q6VNxVrlGKNUqxRLv6yJJyodEl4Igl3qHRJ6FTuUPmkYo1SrFGKNcrFQ',
29
+ '0k4ScITSehUuiScJKFT6ZLQqXRJuEPljiR0Kk8Ua5RijVKsUS4eUvkmSbhDpUvCHUk4UflNxRqlWKMU',
30
+ 'a5SLh5Lwm1Q6lS4JdyThCZWTJJyovKlYoxRrlGKNcvEylTcl4SQJnUqXhCdUuiScJOFvKtYoxRqlWKN',
31
+ 'cfFgS7lB5k0qXhDuS0Kl0SehUTpLQJaFTeaJYoxRrlGKNcjFcEjqVJ5JwkoROpVP5pGKNUqxRijXKxX',
32
+ '8mCScqXRJOVE6S0Kl8UrFGKdYoxRrl4sNUPknlDpUuCV0SOpWTJHyTYo1SrFGKNcrFy5Lwm5LQqXQqX',
33
+ 'RI6lZMkdConKidJ6FTeVKxRijVKsUaJP1hjFGuUYo1SrFGKNUqxRinWKMUapVijFGuUYo1SrFGKNUqx',
34
+ 'RinWKMUa5Q8Ztu740xD9iQAAAABJRU5ErkJggg==',
35
+ ].join('');
36
+ const stream = await qrValueToStream(QRCODE_VALUE);
37
+ const chunks = [];
38
+ for await (const chunk of stream) {
39
+ chunks.push(chunk);
40
+ }
41
+ const buf = Buffer.concat(chunks);
42
+ const base64Text = buf.toString('base64');
43
+ t.equal(base64Text, EXPECTED_QRCODE_IMAGE_BASE64, 'should encode QR Code value to expected image');
44
+ });
45
+ //# sourceMappingURL=qrcode.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qrcode.spec.js","sourceRoot":"","sources":["../../../src/qrcode.spec.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,OAAO,EACL,eAAe,EACf,eAAe,GAChB,MAA0B,aAAa,CAAA;AAExC,IAAI,CAAC,uBAAuB,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACtC,MAAM,mBAAmB,GAAG;QAC1B,0EAA0E;QAC1E,0EAA0E;QAC1E,0EAA0E;QAC1E,0EAA0E;QAC1E,0EAA0E;QAC1E,0EAA0E;QAC1E,kBAAkB;KACnB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACV,MAAM,oBAAoB,GAAG,eAAe,CAAA;IAE5C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAA;IACvC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,oBAAoB,EAAE,mCAAmC,CAAC,CAAA;AAC1E,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAClC,MAAM,YAAY,GAAG,eAAe,CAAA;IACpC,MAAM,4BAA4B,GAAG;QACnC,iFAAiF;QACjF,iFAAiF;QACjF,iFAAiF;QACjF,iFAAiF;QACjF,iFAAiF;QACjF,iFAAiF;QACjF,iFAAiF;QACjF,iFAAiF;QACjF,iFAAiF;QACjF,iFAAiF;QACjF,iFAAiF;QACjF,iFAAiF;QACjF,0CAA0C;KAC3C,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEV,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,CAAA;IAElD,MAAM,MAAM,GAAG,EAAc,CAAA;IAC7B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE;QAChC,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAA;KAC7B;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACjC,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAEzC,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,4BAA4B,EAAE,+CAA+C,CAAC,CAAA;AACpG,CAAC,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { UniformResourceNameRegistry } from './uniform-resource-name-registry.js';
2
+ export { UniformResourceNameRegistry, };
3
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../src/urn-registry/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC5B,MAAsC,qCAAqC,CAAA;AAE5E,OAAO,EACL,2BAA2B,GAC5B,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { UniformResourceNameRegistry, } from './uniform-resource-name-registry.js';
2
+ export { UniformResourceNameRegistry, };
3
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../../src/urn-registry/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,GAC5B,MAAsC,qCAAqC,CAAA;AAE5E,OAAO,EACL,2BAA2B,GAC5B,CAAA"}
@@ -0,0 +1,4 @@
1
+ import * as uuid from 'uuid';
2
+ declare const randomUuid: (<T extends ArrayLike<number>>(options: uuid.V4Options | null | undefined, buffer: T, offset?: number | undefined) => T) & ((options?: uuid.V4Options | undefined) => string);
3
+ export { randomUuid, };
4
+ //# sourceMappingURL=random-uuid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random-uuid.d.ts","sourceRoot":"","sources":["../../../../src/urn-registry/random-uuid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,QAAA,MAAM,UAAU,+KAAU,CAAA;AAE1B,OAAO,EACL,UAAU,GACX,CAAA"}
@@ -0,0 +1,4 @@
1
+ import * as uuid from 'uuid';
2
+ const randomUuid = uuid.v4;
3
+ export { randomUuid, };
4
+ //# sourceMappingURL=random-uuid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random-uuid.js","sourceRoot":"","sources":["../../../../src/urn-registry/random-uuid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAA;AAE1B,OAAO,EACL,UAAU,GACX,CAAA"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Huan(202110): Assignment and Resolution of Uniform Resource Names
3
+ * https://datatracker.ietf.org/wg/urn/about/
4
+ */
5
+ /// <reference types="node" />
6
+ /// <reference types="node" />
7
+ import type { Readable } from 'stream';
8
+ import { FileBox } from '../file-box.js';
9
+ interface UniformResourceNameRegistryOptions {
10
+ expireMilliseconds?: number;
11
+ storeDir?: string;
12
+ }
13
+ declare class UniformResourceNameRegistry {
14
+ protected static processExitMap: WeakMap<UniformResourceNameRegistry, Function>;
15
+ /**
16
+ * The directory that store all UUID files
17
+ */
18
+ protected storeDir: string;
19
+ protected expireMilliseconds: number;
20
+ /**
21
+ * Key: expiretime
22
+ * Value: the array of UUID that will expires after the `expiretime` (Key)
23
+ */
24
+ protected uuidExpiringTable: Map<number, string[]>;
25
+ protected purgerTimer?: ReturnType<typeof setInterval>;
26
+ constructor(options?: UniformResourceNameRegistryOptions);
27
+ /**
28
+ * Return a FileBox Interface with the current URN Registry for conience
29
+ */
30
+ getFileBox(): typeof FileBox;
31
+ /**
32
+ * init the UUID registry
33
+ *
34
+ * must be called before use.
35
+ */
36
+ init(): void;
37
+ protected purgeExpiredUuid(): void;
38
+ /**
39
+ * Clean up by calling this.destroy() before process exit
40
+ */
41
+ protected addProcessExitListener(): void;
42
+ protected uuidFileName(uuid: string): string;
43
+ /**
44
+ * @deprecated use `load()` instead
45
+ */
46
+ resolve(uuid: string): Promise<Readable>;
47
+ /**
48
+ * `resolve()` can only be used once.
49
+ * after resolve(), the UUID will be not exist any more
50
+ */
51
+ load(uuid: string): Promise<Readable>;
52
+ /**
53
+ * @deprecated use `save()` instead
54
+ */
55
+ register(stream: Readable): Promise<string>;
56
+ /**
57
+ * Save the `Readable` stream and return a random UUID
58
+ * The UUID will be expired after MAX_KEEP_MINUTES
59
+ */
60
+ save(stream: Readable): Promise<string>;
61
+ /**
62
+ * Set a timer to execute delete callback after `expireMilliseconds`
63
+ */
64
+ protected addToExpiringTable(uuid: string): void;
65
+ protected purge(uuid: string): Promise<void>;
66
+ /**
67
+ * destroy the urn registry.
68
+ *
69
+ * This function will be called automatically at `process.on(exit)`
70
+ * however, it till need to be called before the program ends
71
+ * because there have some timers in eventloop task list
72
+ */
73
+ destroy(): void;
74
+ }
75
+ export { UniformResourceNameRegistry };
76
+ //# sourceMappingURL=uniform-resource-name-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniform-resource-name-registry.d.ts","sourceRoot":"","sources":["../../../../src/urn-registry/uniform-resource-name-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;;;AAgCH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAKtC,OAAO,EACL,OAAO,EACR,MAA8B,gBAAgB,CAAA;AAY/C,UAAU,kCAAkC;IAC1C,kBAAkB,CAAC,EAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAa,MAAM,CAAC;CAC9B;AAED,cAAM,2BAA2B;IAE/B,SAAS,CAAC,MAAM,CAAC,cAAc,iDAG5B;IAEH;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAA;IAE1B,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAA;IAEpC;;;OAGG;IACH,SAAS,CAAC,iBAAiB,EAAE,GAAG,CAC9B,MAAM,EACN,MAAM,EAAE,CACT,CAAA;IAED,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA;gBAGpD,OAAO,GAAE,kCAAuC;IAalD;;OAEG;IACH,UAAU,IAAK,OAAO,OAAO;IAS7B;;;;OAIG;IACH,IAAI;IA2BJ,SAAS,CAAC,gBAAgB;IAoB1B;;OAEG;IACH,SAAS,CAAC,sBAAsB;IAqBhC,SAAS,CAAC,YAAY,CAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAO7C;;OAEG;IACG,OAAO,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAK/C;;;OAGG;IACG,IAAI,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAc5C;;OAEG;IACG,QAAQ,CAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAKlD;;;OAGG;IACG,IAAI,CAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB9C;;OAEG;IACH,SAAS,CAAC,kBAAkB,CAAE,IAAI,EAAE,MAAM,GAAG,IAAI;cAmBjC,KAAK,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYnD;;;;;;OAMG;IACH,OAAO;CAgDR;AAED,OAAO,EAAE,2BAA2B,EAAE,CAAA"}