@bgord/bun 1.9.2 → 1.9.3
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/dist/file-draft-zip.service.js +1 -1
- package/dist/file-draft-zip.service.js.map +1 -1
- package/dist/file-draft.service.d.ts +2 -1
- package/dist/file-draft.service.d.ts.map +1 -1
- package/dist/file-draft.service.js +6 -4
- package/dist/file-draft.service.js.map +1 -1
- package/dist/file-uploader.middleware.d.ts +1 -1
- package/dist/file-uploader.middleware.d.ts.map +1 -1
- package/dist/file-uploader.middleware.js +3 -5
- package/dist/file-uploader.middleware.js.map +1 -1
- package/dist/hash-file-noop.adapter.js +1 -1
- package/dist/hash-file-noop.adapter.js.map +1 -1
- package/dist/hash-file-sha256-bun.adapter.d.ts +1 -0
- package/dist/hash-file-sha256-bun.adapter.d.ts.map +1 -1
- package/dist/hash-file-sha256-bun.adapter.js +5 -2
- package/dist/hash-file-sha256-bun.adapter.js.map +1 -1
- package/dist/image-info-sharp.adapter.d.ts +6 -0
- package/dist/image-info-sharp.adapter.d.ts.map +1 -1
- package/dist/image-info-sharp.adapter.js +9 -1
- package/dist/image-info-sharp.adapter.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/remote-file-storage-noop.adapter.js +1 -1
- package/dist/remote-file-storage-noop.adapter.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -8
- package/readme.md +0 -1
- package/src/file-draft-zip.service.ts +1 -1
- package/src/file-draft.service.ts +8 -4
- package/src/file-uploader.middleware.ts +5 -6
- package/src/hash-file-noop.adapter.ts +1 -1
- package/src/hash-file-sha256-bun.adapter.ts +7 -3
- package/src/image-info-sharp.adapter.ts +10 -1
- package/src/index.ts +0 -1
- package/src/remote-file-storage-noop.adapter.ts +1 -1
- package/dist/cache-repository-lru-cache.adapter.d.ts +0 -17
- package/dist/cache-repository-lru-cache.adapter.d.ts.map +0 -1
- package/dist/cache-repository-lru-cache.adapter.js +0 -43
- package/dist/cache-repository-lru-cache.adapter.js.map +0 -1
- package/src/cache-repository-lru-cache.adapter.ts +0 -58
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bgord/bun",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.3",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "Bartosz Gordon",
|
|
@@ -32,7 +32,6 @@
|
|
|
32
32
|
"knip": "5.81.0",
|
|
33
33
|
"lefthook": "2.0.15",
|
|
34
34
|
"lockfile-lint": "4.14.1",
|
|
35
|
-
"lru-cache": "11.2.4",
|
|
36
35
|
"only-allow": "1.2.2",
|
|
37
36
|
"sharp": "0.34.5",
|
|
38
37
|
"shellcheck": "4.1.0",
|
|
@@ -40,8 +39,8 @@
|
|
|
40
39
|
"zod": "4.3.5"
|
|
41
40
|
},
|
|
42
41
|
"dependencies": {
|
|
43
|
-
"@bgord/tools": "1.
|
|
44
|
-
"better-auth": "1.4.
|
|
42
|
+
"@bgord/tools": "1.3.6",
|
|
43
|
+
"better-auth": "1.4.14",
|
|
45
44
|
"croner": "9.1.0",
|
|
46
45
|
"csv": "6.4.1",
|
|
47
46
|
"hcaptcha": "0.2.0",
|
|
@@ -53,16 +52,12 @@
|
|
|
53
52
|
"yazl": "3.3.1"
|
|
54
53
|
},
|
|
55
54
|
"peerDependencies": {
|
|
56
|
-
"lru-cache": "11.2.4",
|
|
57
55
|
"zod": "4.3.5",
|
|
58
56
|
"sharp": "0.34.5"
|
|
59
57
|
},
|
|
60
58
|
"peerDependenciesMeta": {
|
|
61
59
|
"sharp": {
|
|
62
60
|
"optional": true
|
|
63
|
-
},
|
|
64
|
-
"lru-cache": {
|
|
65
|
-
"optional": true
|
|
66
61
|
}
|
|
67
62
|
}
|
|
68
63
|
}
|
package/readme.md
CHANGED
|
@@ -39,7 +39,6 @@ src/
|
|
|
39
39
|
├── build-info-repository-package-json.strategy.ts
|
|
40
40
|
├── build-info-repository.strategy.ts
|
|
41
41
|
├── cache-file.service.ts
|
|
42
|
-
├── cache-repository-lru-cache.adapter.ts
|
|
43
42
|
├── cache-repository-node-cache.adapter.ts
|
|
44
43
|
├── cache-repository-noop.adapter.ts
|
|
45
44
|
├── cache-repository.port.ts
|
|
@@ -6,13 +6,17 @@ export type DraftBody = BodyInit | NodeJS.ReadableStream | ReadableStream;
|
|
|
6
6
|
export abstract class FileDraft {
|
|
7
7
|
readonly filename: tools.Filename;
|
|
8
8
|
|
|
9
|
-
constructor(
|
|
10
|
-
|
|
9
|
+
constructor(
|
|
10
|
+
basename: tools.BasenameType,
|
|
11
|
+
extension: tools.ExtensionType,
|
|
12
|
+
readonly mime: tools.Mime,
|
|
13
|
+
) {
|
|
14
|
+
this.filename = tools.Filename.fromPartsSafe(basename, extension);
|
|
11
15
|
}
|
|
12
16
|
|
|
13
17
|
getHeaders(): Headers {
|
|
14
18
|
return new Headers({
|
|
15
|
-
"Content-Type": this.
|
|
19
|
+
"Content-Type": this.mime.toString(),
|
|
16
20
|
"Content-Disposition": `attachment; filename="${this.filename.get()}"`,
|
|
17
21
|
});
|
|
18
22
|
}
|
|
@@ -28,6 +32,6 @@ export abstract class FileDraft {
|
|
|
28
32
|
async toAttachment() {
|
|
29
33
|
const body = await this.create();
|
|
30
34
|
|
|
31
|
-
return { filename: this.filename, content: body, contentType: this.
|
|
35
|
+
return { filename: this.filename, content: body, contentType: this.mime.toString() };
|
|
32
36
|
}
|
|
33
37
|
}
|
|
@@ -3,11 +3,9 @@ import { bodyLimit } from "hono/body-limit";
|
|
|
3
3
|
import { createMiddleware } from "hono/factory";
|
|
4
4
|
import { HTTPException } from "hono/http-exception";
|
|
5
5
|
|
|
6
|
-
type FileUploaderConfigType = {
|
|
6
|
+
type FileUploaderConfigType = { MimeRegistry: tools.MimeRegistry; maxFilesSize: tools.Size };
|
|
7
7
|
|
|
8
|
-
export const FileUploaderInvalidMimeError = new HTTPException(400, {
|
|
9
|
-
message: "file.uploader.invalid.mime",
|
|
10
|
-
});
|
|
8
|
+
export const FileUploaderInvalidMimeError = new HTTPException(400, { message: "file.uploader.invalid.mime" });
|
|
11
9
|
|
|
12
10
|
export const FileUploaderTooBigError = new HTTPException(400, { message: "file.uploader.too.big" });
|
|
13
11
|
|
|
@@ -28,8 +26,9 @@ export class FileUploader {
|
|
|
28
26
|
|
|
29
27
|
if (!(file instanceof File)) throw FileUploaderInvalidMimeError;
|
|
30
28
|
|
|
31
|
-
const
|
|
32
|
-
|
|
29
|
+
const mime = tools.Mime.fromString(file.type);
|
|
30
|
+
|
|
31
|
+
const accepted = config.MimeRegistry.hasMime(mime);
|
|
33
32
|
|
|
34
33
|
if (!accepted) throw FileUploaderInvalidMimeError;
|
|
35
34
|
return next();
|
|
@@ -8,7 +8,7 @@ export class HashFileNoopAdapter implements HashFilePort {
|
|
|
8
8
|
etag: Hash.fromString("0000000000000000000000000000000000000000000000000000000000000000"),
|
|
9
9
|
size: tools.Size.fromBytes(10),
|
|
10
10
|
lastModified: tools.Timestamp.fromNumber(1000),
|
|
11
|
-
mime: tools.
|
|
11
|
+
mime: tools.Mimes.text.mime,
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
14
|
}
|
|
@@ -2,22 +2,26 @@ import * as tools from "@bgord/tools";
|
|
|
2
2
|
import type { HashContentStrategy } from "./hash-content.strategy";
|
|
3
3
|
import type { HashFilePort } from "./hash-file.port";
|
|
4
4
|
|
|
5
|
-
type Dependencies = { HashContent: HashContentStrategy };
|
|
5
|
+
type Dependencies = { HashContent: HashContentStrategy; MimeRegistry: tools.MimeRegistry };
|
|
6
6
|
|
|
7
7
|
export class HashFileSha256BunAdapter implements HashFilePort {
|
|
8
8
|
constructor(private readonly deps: Dependencies) {}
|
|
9
9
|
|
|
10
10
|
async hash(path: tools.FilePathAbsolute | tools.FilePathRelative) {
|
|
11
|
-
const file = Bun.file(path.get());
|
|
12
11
|
const extension = path.getFilename().getExtension();
|
|
13
12
|
|
|
13
|
+
const mime = this.deps.MimeRegistry.fromExtension(extension);
|
|
14
|
+
|
|
15
|
+
if (!mime) throw new Error(tools.MimeRegistryError.MimeNotFound);
|
|
16
|
+
|
|
17
|
+
const file = Bun.file(path.get());
|
|
14
18
|
const arrayBuffer = await file.arrayBuffer();
|
|
15
19
|
|
|
16
20
|
return {
|
|
17
21
|
etag: await this.deps.HashContent.hash(await file.text()),
|
|
18
22
|
size: tools.Size.fromBytes(arrayBuffer.byteLength),
|
|
19
23
|
lastModified: tools.Timestamp.fromNumber(file.lastModified),
|
|
20
|
-
mime
|
|
24
|
+
mime,
|
|
21
25
|
};
|
|
22
26
|
}
|
|
23
27
|
}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import * as tools from "@bgord/tools";
|
|
2
2
|
import type { ImageInfoPort } from "./image-info.port";
|
|
3
3
|
|
|
4
|
+
type Dependencies = { MimeRegistry: tools.MimeRegistry };
|
|
5
|
+
|
|
4
6
|
export class ImageInfoSharpAdapter implements ImageInfoPort {
|
|
7
|
+
constructor(private readonly deps: Dependencies) {}
|
|
8
|
+
|
|
5
9
|
private async load() {
|
|
6
10
|
const name = "sha" + "rp"; // Bun does not resolve dynamic imports with a dynamic name
|
|
7
11
|
return (await import(name)).default;
|
|
@@ -17,10 +21,15 @@ export class ImageInfoSharpAdapter implements ImageInfoPort {
|
|
|
17
21
|
|
|
18
22
|
const metadata = await pipeline.metadata();
|
|
19
23
|
|
|
24
|
+
const extension = tools.Extension.parse(metadata.format);
|
|
25
|
+
const mime = this.deps.MimeRegistry.fromExtension(extension);
|
|
26
|
+
|
|
27
|
+
if (!mime) throw new Error(tools.MimeRegistryError.MimeNotFound);
|
|
28
|
+
|
|
20
29
|
return {
|
|
21
30
|
width: tools.ImageWidth.parse(metadata.width),
|
|
22
31
|
height: tools.ImageHeight.parse(metadata.height),
|
|
23
|
-
mime
|
|
32
|
+
mime,
|
|
24
33
|
size: tools.Size.fromBytes(Bun.file(path).size),
|
|
25
34
|
};
|
|
26
35
|
}
|
package/src/index.ts
CHANGED
|
@@ -14,7 +14,6 @@ export * from "./build-info-repository-noop.strategy";
|
|
|
14
14
|
export * from "./build-info-repository-package-json.strategy";
|
|
15
15
|
export * from "./cache-file.service";
|
|
16
16
|
export * from "./cache-repository.port";
|
|
17
|
-
export * from "./cache-repository-lru-cache.adapter";
|
|
18
17
|
export * from "./cache-repository-node-cache.adapter";
|
|
19
18
|
export * from "./cache-repository-noop.adapter";
|
|
20
19
|
export * from "./cache-resolver.strategy";
|
|
@@ -32,7 +32,7 @@ export class RemoteFileStorageNoopAdapter implements RemoteFileStoragePort {
|
|
|
32
32
|
etag: Hash.fromString("0000000000000000000000000000000000000000000000000000000000000000"),
|
|
33
33
|
size: tools.Size.fromBytes(10),
|
|
34
34
|
lastModified: this.deps.Clock.now(),
|
|
35
|
-
mime: tools.
|
|
35
|
+
mime: tools.Mimes.text.mime,
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
38
|
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { CacheRepositoryPort, CacheRepositoryTtlType } from "./cache-repository.port";
|
|
2
|
-
import type { Hash } from "./hash.vo";
|
|
3
|
-
export declare const CacheRepositoryLruCacheAdapterError: {
|
|
4
|
-
MissingDependency: string;
|
|
5
|
-
};
|
|
6
|
-
export declare class CacheRepositoryLruCacheAdapter implements CacheRepositoryPort {
|
|
7
|
-
private readonly store;
|
|
8
|
-
private constructor();
|
|
9
|
-
static build(config: CacheRepositoryTtlType): Promise<CacheRepositoryLruCacheAdapter>;
|
|
10
|
-
private static resolve;
|
|
11
|
-
static import(): Promise<typeof import("lru-cache")>;
|
|
12
|
-
get<T>(subject: Hash): Promise<T | null>;
|
|
13
|
-
set<T>(subject: Hash, value: T): Promise<void>;
|
|
14
|
-
delete(subject: Hash): Promise<void>;
|
|
15
|
-
flush(): Promise<void>;
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=cache-repository-lru-cache.adapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cache-repository-lru-cache.adapter.d.ts","sourceRoot":"","sources":["../src/cache-repository-lru-cache.adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAC3F,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGtC,eAAO,MAAM,mCAAmC;;CAE/C,CAAC;AAEF,qBAAa,8BAA+B,YAAW,mBAAmB;IACxE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+B;IAErD,OAAO;WAIM,KAAK,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,8BAA8B,CAAC;mBAYtE,OAAO;WAUf,MAAM;IAIb,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAIxC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,MAAM,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
export const CacheRepositoryLruCacheAdapterError = {
|
|
2
|
-
MissingDependency: "cache.repository.lru.cache.adapter.error.missing.dependency",
|
|
3
|
-
};
|
|
4
|
-
export class CacheRepositoryLruCacheAdapter {
|
|
5
|
-
store;
|
|
6
|
-
constructor(store) {
|
|
7
|
-
this.store = store;
|
|
8
|
-
}
|
|
9
|
-
static async build(config) {
|
|
10
|
-
const library = await CacheRepositoryLruCacheAdapter.resolve();
|
|
11
|
-
const store = new library({
|
|
12
|
-
max: 100_000,
|
|
13
|
-
ttl: config.type === "finite" ? config.ttl.ms : undefined,
|
|
14
|
-
ttlAutopurge: true,
|
|
15
|
-
});
|
|
16
|
-
return new CacheRepositoryLruCacheAdapter(store);
|
|
17
|
-
}
|
|
18
|
-
static async resolve() {
|
|
19
|
-
try {
|
|
20
|
-
const library = await CacheRepositoryLruCacheAdapter.import();
|
|
21
|
-
return library.LRUCache;
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
throw new Error(CacheRepositoryLruCacheAdapterError.MissingDependency);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
static async import() {
|
|
28
|
-
return import("lru-cache");
|
|
29
|
-
}
|
|
30
|
-
async get(subject) {
|
|
31
|
-
return this.store.get(subject.get()) ?? null;
|
|
32
|
-
}
|
|
33
|
-
async set(subject, value) {
|
|
34
|
-
this.store.set(subject.get(), value);
|
|
35
|
-
}
|
|
36
|
-
async delete(subject) {
|
|
37
|
-
this.store.delete(subject.get());
|
|
38
|
-
}
|
|
39
|
-
async flush() {
|
|
40
|
-
this.store.clear();
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=cache-repository-lru-cache.adapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cache-repository-lru-cache.adapter.js","sourceRoot":"","sources":["../src/cache-repository-lru-cache.adapter.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,mCAAmC,GAAG;IACjD,iBAAiB,EAAE,6DAA6D;CACjF,CAAC;AAEF,MAAM,OAAO,8BAA8B;IACxB,KAAK,CAA+B;IAErD,YAAoB,KAAmC;QACrD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAA8B;QAC/C,MAAM,OAAO,GAAG,MAAM,8BAA8B,CAAC,OAAO,EAAE,CAAC;QAE/D,MAAM,KAAK,GAAG,IAAI,OAAO,CAAqB;YAC5C,GAAG,EAAE,OAAO;YACZ,GAAG,EAAE,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;YACzD,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,OAAO,IAAI,8BAA8B,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,OAAO;QAC1B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,8BAA8B,CAAC,MAAM,EAAE,CAAC;YAE9D,OAAO,OAAO,CAAC,QAAQ,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,iBAAiB,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,OAAa;QACxB,OAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAO,IAAI,IAAI,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,OAAa,EAAE,KAAQ;QAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAa;QACxB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import type { LRUCache } from "lru-cache";
|
|
2
|
-
import type { CacheRepositoryPort, CacheRepositoryTtlType } from "./cache-repository.port";
|
|
3
|
-
import type { Hash } from "./hash.vo";
|
|
4
|
-
import type { HashValueType } from "./hash-value.vo";
|
|
5
|
-
|
|
6
|
-
export const CacheRepositoryLruCacheAdapterError = {
|
|
7
|
-
MissingDependency: "cache.repository.lru.cache.adapter.error.missing.dependency",
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
export class CacheRepositoryLruCacheAdapter implements CacheRepositoryPort {
|
|
11
|
-
private readonly store: LRUCache<HashValueType, any>;
|
|
12
|
-
|
|
13
|
-
private constructor(store: LRUCache<HashValueType, any>) {
|
|
14
|
-
this.store = store;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
static async build(config: CacheRepositoryTtlType): Promise<CacheRepositoryLruCacheAdapter> {
|
|
18
|
-
const library = await CacheRepositoryLruCacheAdapter.resolve();
|
|
19
|
-
|
|
20
|
-
const store = new library<HashValueType, any>({
|
|
21
|
-
max: 100_000,
|
|
22
|
-
ttl: config.type === "finite" ? config.ttl.ms : undefined,
|
|
23
|
-
ttlAutopurge: true,
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
return new CacheRepositoryLruCacheAdapter(store);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
private static async resolve() {
|
|
30
|
-
try {
|
|
31
|
-
const library = await CacheRepositoryLruCacheAdapter.import();
|
|
32
|
-
|
|
33
|
-
return library.LRUCache;
|
|
34
|
-
} catch {
|
|
35
|
-
throw new Error(CacheRepositoryLruCacheAdapterError.MissingDependency);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
static async import() {
|
|
40
|
-
return import("lru-cache");
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
async get<T>(subject: Hash): Promise<T | null> {
|
|
44
|
-
return (this.store.get(subject.get()) as T) ?? null;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
async set<T>(subject: Hash, value: T): Promise<void> {
|
|
48
|
-
this.store.set(subject.get(), value);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
async delete(subject: Hash): Promise<void> {
|
|
52
|
-
this.store.delete(subject.get());
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
async flush(): Promise<void> {
|
|
56
|
-
this.store.clear();
|
|
57
|
-
}
|
|
58
|
-
}
|