@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,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"}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Huan(202110): Assignment and Resolution of Uniform Resource Names
|
|
4
|
+
* https://datatracker.ietf.org/wg/urn/about/
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.UniformResourceNameRegistry = void 0;
|
|
11
|
+
/**
|
|
12
|
+
* RFC 4122: A Universally Unique IDentifier (UUID) URN Namespace
|
|
13
|
+
* ------------------------------------------------------------
|
|
14
|
+
* This specification defines a Uniform Resource Name namespace for
|
|
15
|
+
* UUIDs (Universally Unique IDentifier), also known as GUIDs (Globally
|
|
16
|
+
* Unique IDentifier). A UUID is 128 bits long, and can guarantee
|
|
17
|
+
* uniqueness across space and time. UUIDs were originally used in the
|
|
18
|
+
* Apollo Network Computing System and later in the Open Software
|
|
19
|
+
* Foundation's (OSF) Distributed Computing Environment (DCE), and then
|
|
20
|
+
* in Microsoft Windows platforms.
|
|
21
|
+
*
|
|
22
|
+
* The information here is meant to be a concise guide for those wishing
|
|
23
|
+
* to implement services using UUIDs as URNs. Nothing in this document
|
|
24
|
+
* should be construed to override the DCE standards that defined UUIDs.
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* RFC 2141: Uniform Resource Names (URNs) Syntax
|
|
28
|
+
* ----------------------------------------------
|
|
29
|
+
* Uniform Resource Names (URNs) are intended to serve as persistent,
|
|
30
|
+
* location-independent, resource identifiers. This document sets
|
|
31
|
+
* forward the canonical syntax for URNs. A discussion of both existing
|
|
32
|
+
* legacy and new namespaces and requirements for URN presentation and
|
|
33
|
+
* transmission are presented. Finally, there is a discussion of URN
|
|
34
|
+
* equivalence and how to determine it.
|
|
35
|
+
*/
|
|
36
|
+
const fs_1 = __importDefault(require("fs"));
|
|
37
|
+
const os_1 = __importDefault(require("os"));
|
|
38
|
+
const path_1 = __importDefault(require("path"));
|
|
39
|
+
const clone_class_1 = require("clone-class");
|
|
40
|
+
const brolog_1 = require("brolog");
|
|
41
|
+
const file_box_js_1 = require("../file-box.js");
|
|
42
|
+
const random_uuid_js_1 = require("./random-uuid.js");
|
|
43
|
+
/**
|
|
44
|
+
* A UUID will be only keep for a certain time.
|
|
45
|
+
*/
|
|
46
|
+
const DEFAULT_UUID_EXPIRE_MINUTES = 30;
|
|
47
|
+
const DEFAULT_UUID_PURGE_INTERVAL_MINUTES = 1;
|
|
48
|
+
class UniformResourceNameRegistry {
|
|
49
|
+
static processExitMap = new WeakMap();
|
|
50
|
+
/**
|
|
51
|
+
* The directory that store all UUID files
|
|
52
|
+
*/
|
|
53
|
+
storeDir;
|
|
54
|
+
expireMilliseconds;
|
|
55
|
+
/**
|
|
56
|
+
* Key: expiretime
|
|
57
|
+
* Value: the array of UUID that will expires after the `expiretime` (Key)
|
|
58
|
+
*/
|
|
59
|
+
uuidExpiringTable;
|
|
60
|
+
purgerTimer;
|
|
61
|
+
constructor(options = {}) {
|
|
62
|
+
brolog_1.log.verbose('UniformResourceNameRegistry', 'constructor("%s")', JSON.stringify(options));
|
|
63
|
+
this.uuidExpiringTable = new Map();
|
|
64
|
+
this.expireMilliseconds = options.expireMilliseconds ?? (DEFAULT_UUID_EXPIRE_MINUTES * 60 * 1000 * 1000);
|
|
65
|
+
this.storeDir = options.storeDir || path_1.default.join(os_1.default.tmpdir(), 'file-box-urn-registry.' + String(process.pid));
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Return a FileBox Interface with the current URN Registry for conience
|
|
69
|
+
*/
|
|
70
|
+
getFileBox() {
|
|
71
|
+
this.init();
|
|
72
|
+
class UUIDFileBox extends file_box_js_1.FileBox {
|
|
73
|
+
}
|
|
74
|
+
UUIDFileBox.setUuidLoader(this.load.bind(this));
|
|
75
|
+
UUIDFileBox.setUuidSaver(this.save.bind(this));
|
|
76
|
+
return UUIDFileBox;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* init the UUID registry
|
|
80
|
+
*
|
|
81
|
+
* must be called before use.
|
|
82
|
+
*/
|
|
83
|
+
init() {
|
|
84
|
+
brolog_1.log.verbose('UniformResourceNameRegistry', 'init()');
|
|
85
|
+
try {
|
|
86
|
+
const stat = fs_1.default.statSync(this.storeDir);
|
|
87
|
+
if (!stat.isDirectory()) {
|
|
88
|
+
throw new Error(this.storeDir + ' is Not a directory');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch (e) {
|
|
92
|
+
if (e.code === 'ENOENT') {
|
|
93
|
+
fs_1.default.mkdirSync(this.storeDir, { recursive: true });
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
throw e;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (!this.purgerTimer) {
|
|
100
|
+
this.addProcessExitListener();
|
|
101
|
+
this.purgerTimer = setInterval(() => this.purgeExpiredUuid(), DEFAULT_UUID_PURGE_INTERVAL_MINUTES * 60 * 1000);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
purgeExpiredUuid() {
|
|
105
|
+
brolog_1.log.verbose('UniformResourceNameRegistry', 'purgeExpiredUuid()');
|
|
106
|
+
const expireTimeList = [...this.uuidExpiringTable.keys()]
|
|
107
|
+
.sort((a, b) => Number(a) - Number(b));
|
|
108
|
+
for (const expireTime of expireTimeList) {
|
|
109
|
+
if (Date.now() < expireTime) {
|
|
110
|
+
// The earliest expire time is in the future
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
const uuidList = this.uuidExpiringTable.get(expireTime) || [];
|
|
114
|
+
this.uuidExpiringTable.delete(expireTime);
|
|
115
|
+
for (const uuid of uuidList) {
|
|
116
|
+
this.purge(uuid).catch(console.error);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Clean up by calling this.destroy() before process exit
|
|
122
|
+
*/
|
|
123
|
+
addProcessExitListener() {
|
|
124
|
+
brolog_1.log.verbose('UniformResourceNameRegistry', 'addProcessExitListener()');
|
|
125
|
+
const Klass = (0, clone_class_1.instanceToClass)(this, UniformResourceNameRegistry);
|
|
126
|
+
/**
|
|
127
|
+
* If we have already registered the listener, do nothing.
|
|
128
|
+
*/
|
|
129
|
+
if (Klass.processExitMap.has(this)) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const destroyCallback = () => this.destroy();
|
|
133
|
+
process.addListener('exit', destroyCallback);
|
|
134
|
+
Klass.processExitMap.set(this, () => process.removeListener('exit', destroyCallback));
|
|
135
|
+
}
|
|
136
|
+
uuidFileName(uuid) {
|
|
137
|
+
return path_1.default.join(this.storeDir, uuid + '.dat');
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* @deprecated use `load()` instead
|
|
141
|
+
*/
|
|
142
|
+
async resolve(uuid) {
|
|
143
|
+
brolog_1.log.warn('UniformResourceNameRegistry', 'resolve() is deprecated: use `load()` instead.\n%s', new Error().stack);
|
|
144
|
+
return this.load(uuid);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* `resolve()` can only be used once.
|
|
148
|
+
* after resolve(), the UUID will be not exist any more
|
|
149
|
+
*/
|
|
150
|
+
async load(uuid) {
|
|
151
|
+
brolog_1.log.verbose('UniformResourceNameRegistry', 'load(%s)', uuid);
|
|
152
|
+
const filename = this.uuidFileName(uuid);
|
|
153
|
+
const stream = fs_1.default.createReadStream(filename);
|
|
154
|
+
await new Promise((resolve, reject) => {
|
|
155
|
+
stream.on('ready', resolve);
|
|
156
|
+
stream.on('error', reject);
|
|
157
|
+
});
|
|
158
|
+
return stream;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* @deprecated use `save()` instead
|
|
162
|
+
*/
|
|
163
|
+
async register(stream) {
|
|
164
|
+
brolog_1.log.verbose('UniformResourceNameRegistry', 'register() deprecated: use save() instead.\n%s', new Error().stack);
|
|
165
|
+
return this.save(stream);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Save the `Readable` stream and return a random UUID
|
|
169
|
+
* The UUID will be expired after MAX_KEEP_MINUTES
|
|
170
|
+
*/
|
|
171
|
+
async save(stream) {
|
|
172
|
+
brolog_1.log.verbose('UniformResourceNameRegistry', 'save(stream)');
|
|
173
|
+
const uuid = (0, random_uuid_js_1.randomUuid)();
|
|
174
|
+
const fileStream = fs_1.default.createWriteStream(this.uuidFileName(uuid));
|
|
175
|
+
const future = new Promise((resolve, reject) => {
|
|
176
|
+
stream.on('end', resolve);
|
|
177
|
+
stream.on('error', reject);
|
|
178
|
+
fileStream.on('error', reject);
|
|
179
|
+
});
|
|
180
|
+
stream.pipe(fileStream);
|
|
181
|
+
await future;
|
|
182
|
+
this.addToExpiringTable(uuid);
|
|
183
|
+
return uuid;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Set a timer to execute delete callback after `expireMilliseconds`
|
|
187
|
+
*/
|
|
188
|
+
addToExpiringTable(uuid) {
|
|
189
|
+
brolog_1.log.verbose('UniformResourceNameRegistry', 'addToExpiringTable(%s)', uuid);
|
|
190
|
+
const expireTime = Date.now() + this.expireMilliseconds;
|
|
191
|
+
const expireTimeInterval = DEFAULT_UUID_PURGE_INTERVAL_MINUTES * 60 * 1000;
|
|
192
|
+
// https://stackoverflow.com/a/22687090
|
|
193
|
+
const expireTimeNearestMinute = Math.ceil(expireTime / expireTimeInterval) * expireTimeInterval;
|
|
194
|
+
const uuidList = this.uuidExpiringTable.get(expireTime) || [];
|
|
195
|
+
uuidList.push(uuid);
|
|
196
|
+
this.uuidExpiringTable.set(expireTimeNearestMinute, uuidList);
|
|
197
|
+
brolog_1.log.silly('UniformResourceNameRegistry', 'addToExpiringTable() uuidList.length = %s, expireTime = %s', uuidList.length, expireTimeNearestMinute);
|
|
198
|
+
}
|
|
199
|
+
async purge(uuid) {
|
|
200
|
+
brolog_1.log.verbose('UniformResourceNameRegistry', 'purge(%s)', uuid);
|
|
201
|
+
const file = this.uuidFileName(uuid);
|
|
202
|
+
try {
|
|
203
|
+
await fs_1.default.promises.unlink(file);
|
|
204
|
+
brolog_1.log.silly('UniformResourceNameRegistry', 'purge() %s', file);
|
|
205
|
+
}
|
|
206
|
+
catch (e) {
|
|
207
|
+
brolog_1.log.warn('UniformResourceNameRegistry', 'purge() rejection:', e.message);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* destroy the urn registry.
|
|
212
|
+
*
|
|
213
|
+
* This function will be called automatically at `process.on(exit)`
|
|
214
|
+
* however, it till need to be called before the program ends
|
|
215
|
+
* because there have some timers in eventloop task list
|
|
216
|
+
*/
|
|
217
|
+
destroy() {
|
|
218
|
+
brolog_1.log.verbose('UniformResourceNameRegistry', 'destroy() %s UUIDs left', [...this.uuidExpiringTable.values()].flat().length);
|
|
219
|
+
if (this.purgerTimer) {
|
|
220
|
+
brolog_1.log.verbose('UniformResourceNameRegistry', 'destroy() clearing purger timer ...');
|
|
221
|
+
clearInterval(this.purgerTimer);
|
|
222
|
+
this.purgerTimer = undefined;
|
|
223
|
+
}
|
|
224
|
+
const Klass = (0, clone_class_1.instanceToClass)(this, UniformResourceNameRegistry);
|
|
225
|
+
/**
|
|
226
|
+
* Remove process exit listener
|
|
227
|
+
*/
|
|
228
|
+
if (Klass.processExitMap.has(this)) {
|
|
229
|
+
brolog_1.log.verbose('UniformResourceNameRegistry', 'destroy() remove process `exit` listener ...');
|
|
230
|
+
const fn = Klass.processExitMap.get(this);
|
|
231
|
+
Klass.processExitMap.delete(this);
|
|
232
|
+
fn && fn();
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Clean up all the files
|
|
236
|
+
*/
|
|
237
|
+
brolog_1.log.verbose('UniformResourceNameRegistry', 'destroy() fs.rmSync(%s) ...', this.storeDir);
|
|
238
|
+
try {
|
|
239
|
+
/**
|
|
240
|
+
* Huan(202110):
|
|
241
|
+
* Check for the `this.uuidDir` exist or not
|
|
242
|
+
* when we are running unit tests, we might instanciate multiple UniformResourceNameRegistry
|
|
243
|
+
* which will cause the `this.destroy()` to be registered multiple times
|
|
244
|
+
*/
|
|
245
|
+
fs_1.default.statSync(this.storeDir);
|
|
246
|
+
fs_1.default.rmSync(this.storeDir, { recursive: true });
|
|
247
|
+
brolog_1.log.verbose('UniformResourceNameRegistry', 'destroy() fs.rmSync(%s) done', this.storeDir);
|
|
248
|
+
}
|
|
249
|
+
catch (e) {
|
|
250
|
+
if (e.code === 'ENOENT') {
|
|
251
|
+
brolog_1.log.verbose('UniformResourceNameRegistry', 'destroy() %s not exist', this.storeDir);
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
brolog_1.log.warn('UniformResourceNameRegistry', 'destroy() fs.rmSync(%s) exception: %s', e.message);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
exports.UniformResourceNameRegistry = UniformResourceNameRegistry;
|
|
259
|
+
//# sourceMappingURL=uniform-resource-name-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uniform-resource-name-registry.js","sourceRoot":"","sources":["../../../../src/urn-registry/uniform-resource-name-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uniform-resource-name-registry.spec.d.ts","sourceRoot":"","sources":["../../../../src/urn-registry/uniform-resource-name-registry.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
#!/usr/bin/env -S node --no-warnings --loader ts-node/esm
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const tstest_1 = require("tstest");
|
|
5
|
+
const file_box_js_1 = require("../file-box.js");
|
|
6
|
+
const uniform_resource_name_registry_js_1 = require("./uniform-resource-name-registry.js");
|
|
7
|
+
(0, tstest_1.test)('UniformResourceNameRegistry class', async (t) => {
|
|
8
|
+
const QRCODE = 'test qrcode';
|
|
9
|
+
const urnRegistry = new uniform_resource_name_registry_js_1.UniformResourceNameRegistry();
|
|
10
|
+
await urnRegistry.init();
|
|
11
|
+
const fileBox = file_box_js_1.FileBox.fromQRCode(QRCODE);
|
|
12
|
+
const stream = await fileBox.toStream();
|
|
13
|
+
const uuid = await urnRegistry.save(stream);
|
|
14
|
+
const stream2 = await urnRegistry.load(uuid);
|
|
15
|
+
t.ok(stream2, 'should load stream');
|
|
16
|
+
const fileBox2 = file_box_js_1.FileBox.fromStream(stream2, 'test');
|
|
17
|
+
const qrcode = await fileBox2.toQRCode();
|
|
18
|
+
t.equal(qrcode, QRCODE, 'should get back the qrcode data');
|
|
19
|
+
await t.resolves(() => urnRegistry.load(uuid), 'should not reject when load a UUID again');
|
|
20
|
+
await urnRegistry.destroy();
|
|
21
|
+
});
|
|
22
|
+
(0, tstest_1.test)('expireMilliseconds: in time', async (t) => {
|
|
23
|
+
const expireMilliseconds = 3;
|
|
24
|
+
const urnRegistry = new uniform_resource_name_registry_js_1.UniformResourceNameRegistry({
|
|
25
|
+
expireMilliseconds,
|
|
26
|
+
});
|
|
27
|
+
await urnRegistry.init();
|
|
28
|
+
const uuid = await urnRegistry.save(await file_box_js_1.FileBox.fromQRCode('qr').toStream());
|
|
29
|
+
await new Promise(resolve => setTimeout(resolve, 1));
|
|
30
|
+
await t.resolves(() => urnRegistry.load(uuid), `should not expire after 1ms (with ${expireMilliseconds}ms expire)`);
|
|
31
|
+
await urnRegistry.destroy();
|
|
32
|
+
});
|
|
33
|
+
(0, tstest_1.test)('expireMilliseconds: time out', async (t) => {
|
|
34
|
+
const sandbox = tstest_1.sinon.createSandbox({
|
|
35
|
+
useFakeTimers: true,
|
|
36
|
+
});
|
|
37
|
+
const expireMilliseconds = 10 * 60 * 1000; // 10 minute
|
|
38
|
+
const urnRegistry = new uniform_resource_name_registry_js_1.UniformResourceNameRegistry({
|
|
39
|
+
expireMilliseconds,
|
|
40
|
+
});
|
|
41
|
+
await urnRegistry.init();
|
|
42
|
+
/**
|
|
43
|
+
* Time: 0
|
|
44
|
+
*/
|
|
45
|
+
const uuid1 = await urnRegistry.save(await file_box_js_1.FileBox.fromQRCode('qr').toStream());
|
|
46
|
+
await t.resolves(() => urnRegistry.load(uuid1), 'should load uuid1 successfully');
|
|
47
|
+
/**
|
|
48
|
+
* Time: 5
|
|
49
|
+
*/
|
|
50
|
+
await sandbox.clock.tickAsync(5 * 60 * 1000);
|
|
51
|
+
const uuid2 = await urnRegistry.save(await file_box_js_1.FileBox.fromQRCode('qr2').toStream());
|
|
52
|
+
await t.resolves(() => urnRegistry.load(uuid1), 'should load uuid1 successfully after 5 minutes');
|
|
53
|
+
await t.resolves(() => urnRegistry.load(uuid2), 'should load uuid2 successfully');
|
|
54
|
+
/**
|
|
55
|
+
* Time: 11
|
|
56
|
+
*/
|
|
57
|
+
await sandbox.clock.tickAsync(6 * 60 * 1000);
|
|
58
|
+
await t.rejects(() => urnRegistry.load(uuid1), 'should load uuid1 fail because it is expired');
|
|
59
|
+
await t.resolves(() => urnRegistry.load(uuid2), 'should load uuid2 successfully 6 minutes after it has been saved');
|
|
60
|
+
/**
|
|
61
|
+
* Time 20
|
|
62
|
+
*/
|
|
63
|
+
await sandbox.clock.tickAsync(9 * 60 * 1000);
|
|
64
|
+
await t.rejects(() => urnRegistry.load(uuid2), 'should load uuid2 fail because it is expired');
|
|
65
|
+
await urnRegistry.destroy();
|
|
66
|
+
sandbox.restore();
|
|
67
|
+
});
|
|
68
|
+
(0, tstest_1.test)('URN FileBox helper smoke testing', async (t) => {
|
|
69
|
+
const QRCODE = 'test qrcode';
|
|
70
|
+
const urnRegistry = new uniform_resource_name_registry_js_1.UniformResourceNameRegistry();
|
|
71
|
+
const UUIDFileBox = urnRegistry.getFileBox();
|
|
72
|
+
const uuid = await UUIDFileBox
|
|
73
|
+
.fromQRCode(QRCODE)
|
|
74
|
+
.toUuid();
|
|
75
|
+
const qrcode = await UUIDFileBox
|
|
76
|
+
.fromUuid(uuid)
|
|
77
|
+
.toQRCode();
|
|
78
|
+
t.equal(qrcode, QRCODE, 'should get back the qrcode data');
|
|
79
|
+
urnRegistry.destroy();
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=uniform-resource-name-registry.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uniform-resource-name-registry.spec.js","sourceRoot":"","sources":["../../../../src/urn-registry/uniform-resource-name-registry.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid-to-big-int.d.ts","sourceRoot":"","sources":["../../../../src/urn-registry/uuid-to-big-int.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iBAAS,YAAY,CAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAK3C;AAED,OAAO,EACL,YAAY,GACb,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Convert UUID to BigInt
|
|
4
|
+
* @param uuid
|
|
5
|
+
* @returns BigInt
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.uuidToBigInt = void 0;
|
|
9
|
+
function uuidToBigInt(uuid) {
|
|
10
|
+
// credit: https://stackoverflow.com/a/58014300/1123955
|
|
11
|
+
const hexBytes = `0x${uuid.replace(/-/g, '')}`;
|
|
12
|
+
const bigInteger = BigInt(hexBytes);
|
|
13
|
+
return bigInteger;
|
|
14
|
+
}
|
|
15
|
+
exports.uuidToBigInt = uuidToBigInt;
|
|
16
|
+
//# sourceMappingURL=uuid-to-big-int.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid-to-big-int.js","sourceRoot":"","sources":["../../../../src/urn-registry/uuid-to-big-int.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,SAAS,YAAY,CAAE,IAAY;IACjC,uDAAuD;IACvD,MAAM,QAAQ,GAAM,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAA;IACjD,MAAM,UAAU,GAAI,MAAM,CAAC,QAAQ,CAAC,CAAA;IACpC,OAAO,UAAU,CAAA;AACnB,CAAC;AAGC,oCAAY"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid-to-big-int.spec.d.ts","sourceRoot":"","sources":["../../../../src/urn-registry/uuid-to-big-int.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env -S node --no-warnings --loader ts-node/esm
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const tstest_1 = require("tstest");
|
|
5
|
+
const uuid_to_big_int_js_1 = require("./uuid-to-big-int.js");
|
|
6
|
+
(0, tstest_1.test)('uuidToBigInt() Nil UUID', async (t) => {
|
|
7
|
+
const uuid = '00000000-0000-0000-0000-000000000000';
|
|
8
|
+
const bigInt = (0, uuid_to_big_int_js_1.uuidToBigInt)(uuid);
|
|
9
|
+
t.equal(bigInt.toString(), '0', 'should get zero for a Nil UUID');
|
|
10
|
+
});
|
|
11
|
+
(0, tstest_1.test)('uuidToBigInt() Nil UUID', async (t) => {
|
|
12
|
+
const UUID = '00bd7c03-a690-48d3-a1fe-1314574e4fc1';
|
|
13
|
+
const EXPECTED = BigInt('0x00bd7c03a69048d3a1fe1314574e4fc1');
|
|
14
|
+
const bigInt = (0, uuid_to_big_int_js_1.uuidToBigInt)(UUID);
|
|
15
|
+
t.equal(bigInt, EXPECTED, 'should convert UUID right');
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=uuid-to-big-int.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid-to-big-int.spec.js","sourceRoot":"","sources":["../../../../src/urn-registry/uuid-to-big-int.spec.ts"],"names":[],"mappings":";;;AAEA,mCAA8B;AAE9B,6DAAmD;AAEnD,IAAA,aAAI,EAAC,yBAAyB,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACxC,MAAM,IAAI,GAAG,sCAAsC,CAAA;IACnD,MAAM,MAAM,GAAG,IAAA,iCAAY,EAAC,IAAI,CAAC,CAAA;IACjC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,gCAAgC,CAAC,CAAA;AACnE,CAAC,CAAC,CAAA;AAEF,IAAA,aAAI,EAAC,yBAAyB,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACxC,MAAM,IAAI,GAAG,sCAAsC,CAAA;IACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,oCAAoC,CAAC,CAAA;IAE7D,MAAM,MAAM,GAAG,IAAA,iCAAY,EAAC,IAAI,CAAC,CAAA;IACjC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,2BAA2B,CAAC,CAAA;AACxD,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,MAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/version.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,OAAO,GAAW,OAAO,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.spec.d.ts","sourceRoot":"","sources":["../../../src/version.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env -S node --no-warnings --loader ts-node/esm
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const tstest_1 = require("tstest");
|
|
5
|
+
const version_js_1 = require("./version.js");
|
|
6
|
+
(0, tstest_1.test)('Make sure the VERSION is fresh in source code', async (t) => {
|
|
7
|
+
t.equal(version_js_1.VERSION, '0.0.0', 'version should be 0.0.0 in source code, only updated before publish to NPM');
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=version.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.spec.js","sourceRoot":"","sources":["../../../src/version.spec.ts"],"names":[],"mappings":";;;AAEA,mCAA8B;AAE9B,6CAAsC;AAEtC,IAAA,aAAI,EAAC,+CAA+C,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC9D,CAAC,CAAC,KAAK,CAAC,oBAAO,EAAE,OAAO,EAAE,4EAA4E,CAAC,CAAA;AACzG,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration.spec.d.ts","sourceRoot":"","sources":["../../../tests/integration.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
#!/usr/bin/env -S node --no-warnings --loader ts-node/esm
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const tstest_1 = require("tstest");
|
|
5
|
+
(0, tstest_1.test)('integration test', async (t) => {
|
|
6
|
+
t.pass('tbw');
|
|
7
|
+
});
|
|
8
|
+
//# sourceMappingURL=integration.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration.spec.js","sourceRoot":"","sources":["../../../tests/integration.spec.ts"],"names":[],"mappings":";;;AAEA,mCAA8B;AAE9B,IAAA,aAAI,EAAC,kBAAkB,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IACjC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACf,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-timeout.spec.d.ts","sourceRoot":"","sources":["../../../tests/network-timeout.spec.ts"],"names":[],"mappings":""}
|