@haibun/storage-mem 1.13.13

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.
@@ -0,0 +1,15 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { IFs } from 'memfs';
3
+ import { AStorage, IFile } from '@haibun/domain-storage/build/AStorage.js';
4
+ export default class StorageMem extends AStorage {
5
+ memFS: IFs;
6
+ exists: (file: string) => boolean;
7
+ mkdir: (dir: string) => void;
8
+ constructor();
9
+ readFile: (file: string, coding?: any) => import("memfs/lib/encoding.js").TDataOut;
10
+ writeFileBuffer: (fn: string, contents: Buffer) => void;
11
+ lstatToIFile(file: string): IFile;
12
+ readdir: (dir: string) => Promise<any[]>;
13
+ readdirStat(dir: string): Promise<IFile[]>;
14
+ mkdirp: (dir: string) => void;
15
+ }
@@ -0,0 +1,44 @@
1
+ import { Volume } from 'memfs';
2
+ import { AStorage } from '@haibun/domain-storage/build/AStorage.js';
3
+ export default class StorageMem extends AStorage {
4
+ memFS;
5
+ exists;
6
+ mkdir;
7
+ constructor() {
8
+ super();
9
+ this.memFS = Volume.fromJSON({});
10
+ this.exists = (dir) => this.memFS.existsSync(dir);
11
+ this.mkdir = (dir) => this.memFS.mkdirSync(dir);
12
+ }
13
+ readFile = (file, coding) => this.memFS.readFileSync(file, coding);
14
+ writeFileBuffer = (fn, contents) => {
15
+ this.memFS.writeFileSync(fn, contents);
16
+ };
17
+ lstatToIFile(file) {
18
+ const l = this.memFS.lstatSync(file);
19
+ const ifile = {
20
+ name: file,
21
+ created: l.mtime.getDate(),
22
+ isDirectory: l.isDirectory(),
23
+ isFile: l.isFile()
24
+ };
25
+ return ifile;
26
+ }
27
+ readdir = async (dir) => {
28
+ try {
29
+ return this.memFS.readdirSync(dir).map(i => i.toString());
30
+ }
31
+ catch (e) {
32
+ console.error(`can't read ${dir}`);
33
+ throw (e);
34
+ }
35
+ };
36
+ async readdirStat(dir) {
37
+ const files = await this.readdir(dir);
38
+ return files.map(f => this.lstatToIFile(`${dir}/${f}`));
39
+ }
40
+ mkdirp = (dir) => {
41
+ this.memFS.mkdirSync(dir, { recursive: true });
42
+ };
43
+ }
44
+ //# sourceMappingURL=storage-mem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-mem.js","sourceRoot":"","sources":["../src/storage-mem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAO,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAS,MAAM,0CAA0C,CAAC;AAE3E,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,QAAQ;IAC5C,KAAK,CAAM;IACX,MAAM,CAA4B;IAClC,KAAK,CAAwB;IAC7B;QACI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAQ,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC;IACD,QAAQ,GAAG,CAAC,IAAY,EAAE,MAAY,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACjF,eAAe,GAAG,CAAC,EAAU,EAAE,QAAgB,EAAE,EAAE;QAC/C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC,CAAA;IACD,YAAY,CAAC,IAAY;QACrB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG;YACV,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE;YAC1B,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE;YAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SACrB,CAAA;QACD,OAAc,KAAK,CAAC;IACxB,CAAC;IACD,OAAO,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;QAC5B,IAAI;YACA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC7D;QAAC,OAAO,CAAC,EAAE;YACR,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC;YACnC,MAAM,CAAC,CAAC,CAAC,CAAC;SACb;IACL,CAAC,CAAA;IACD,KAAK,CAAC,WAAW,CAAC,GAAW;QACzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE;QACrB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC,CAAA;CACJ"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,78 @@
1
+ import { CAPTURE } from '@haibun/core/build/lib/defs.js';
2
+ import { getDefaultWorld, getTestWorldWithOptions } from '@haibun/core/build/lib/test/lib.js';
3
+ import StorageMem from './storage-mem.js';
4
+ describe('getCaptureLocation', () => {
5
+ it('gets capture location', async () => {
6
+ const storageMem = new StorageMem();
7
+ const { world } = getDefaultWorld(0);
8
+ const dir = await storageMem.getCaptureLocation({ ...world, mediaType: "json" /* EMediaTypes.json */ }, 'test');
9
+ expect(dir).toEqual(`./${CAPTURE}/default/loop-0/seq-0/featn-0/mem-0/test`);
10
+ });
11
+ it('gets options capture location', async () => {
12
+ const storageMem = new StorageMem();
13
+ const world = getTestWorldWithOptions({ options: { DEST: 'foo' }, extraOptions: {} });
14
+ const dir = await storageMem.getCaptureLocation({ ...world, mediaType: "json" /* EMediaTypes.json */ }, 'test');
15
+ expect(dir).toEqual(`./${CAPTURE}/foo/loop-0/seq-0/featn-0/mem-0/test`);
16
+ });
17
+ it('gets relative capture location', async () => {
18
+ const storageMem = new StorageMem();
19
+ const world = getTestWorldWithOptions({ options: { DEST: 'foo' }, extraOptions: {} });
20
+ const dir = await storageMem.getCaptureLocation({ ...world, mediaType: "json" /* EMediaTypes.json */ }, 'test');
21
+ expect(dir).toEqual(`./${CAPTURE}/foo/loop-0/seq-0/featn-0/mem-0/test`);
22
+ });
23
+ it('ensures capture location', async () => {
24
+ const storageMem = new StorageMem();
25
+ const { world } = getDefaultWorld(0);
26
+ const loc = await storageMem.getCaptureLocation({ ...world, mediaType: "json" /* EMediaTypes.json */ }, 'test');
27
+ await storageMem.ensureCaptureLocation({ ...world, mediaType: "json" /* EMediaTypes.json */ }, 'test');
28
+ expect(storageMem.exists(loc)).toBe(true);
29
+ });
30
+ it('creates a directory', () => {
31
+ const storageMem = new StorageMem();
32
+ storageMem.mkdir(`/${CAPTURE}`);
33
+ expect(storageMem.exists(`/${CAPTURE}`)).toBe(true);
34
+ });
35
+ it('creates a directory with parents', () => {
36
+ const storageMem = new StorageMem();
37
+ storageMem.mkdirp(`/${CAPTURE}/wtw`);
38
+ expect(storageMem.exists(`/${CAPTURE}/wtw`)).toBe(true);
39
+ });
40
+ it('exists', () => {
41
+ const storageMem = new StorageMem();
42
+ storageMem.mkdirp(`/${CAPTURE}/wtw`);
43
+ expect(storageMem.exists(`/${CAPTURE}/wtw`)).toBe(true);
44
+ });
45
+ it('does not exist', () => {
46
+ const storageMem = new StorageMem();
47
+ expect(storageMem.exists(`/${CAPTURE}/wtw`)).toBe(false);
48
+ });
49
+ it('readdir', async () => {
50
+ const storageMem = new StorageMem();
51
+ storageMem.mkdirp(`/${CAPTURE}/wtw`);
52
+ const files = await storageMem.readdir(`/${CAPTURE}`);
53
+ expect(files).toEqual(['wtw']);
54
+ });
55
+ it('writes and reads a file', () => {
56
+ const storageMem = new StorageMem();
57
+ storageMem.writeFileBuffer(`/test.txt`, Buffer.from('test'));
58
+ const text = storageMem.readFile(`/test.txt`);
59
+ expect(text).toEqual(Buffer.from('test'));
60
+ });
61
+ it('lstat', () => {
62
+ const storageMem = new StorageMem();
63
+ storageMem.mkdirp(`/${CAPTURE}/wtw`);
64
+ const lstat = storageMem.lstatToIFile(`/${CAPTURE}/wtw`);
65
+ expect(lstat.name).toEqual(`/${CAPTURE}/wtw`);
66
+ expect(lstat.isDirectory).toBe(true);
67
+ });
68
+ it('readdirStat', async () => {
69
+ const storageMem = new StorageMem();
70
+ storageMem.mkdirp(`/${CAPTURE}/wtw`);
71
+ storageMem.writeFileBuffer(`/${CAPTURE}/wtw/test.txt`, Buffer.from('test'));
72
+ const files = await storageMem.readdirStat(`/${CAPTURE}`);
73
+ const expected = [{ name: `/${CAPTURE}/wtw`, isDirectory: true, isFile: false, isSymbolicLink: false },
74
+ { name: `/${CAPTURE}/wtw/test.txt`, isDirectory: false, isFile: true, isSymbolicLink: false }];
75
+ expect(files).toEqual(files);
76
+ });
77
+ });
78
+ //# sourceMappingURL=storage-mem.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-mem.test.js","sourceRoot":"","sources":["../src/storage-mem.test.ts"],"names":[],"mappings":"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"}
package/index.js ADDED
@@ -0,0 +1 @@
1
+ export * from './build/storage-mem';
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@haibun/storage-mem",
3
+ "type": "module",
4
+ "version": "1.13.13",
5
+ "description": "",
6
+ "main": "index.js",
7
+ "files": [
8
+ "build/"
9
+ ],
10
+ "scripts": {
11
+ "build": "tsc -b .",
12
+ "prepublishOnly": "tsc -b .",
13
+ "test": "jest",
14
+ "test-watch": "jest --watch"
15
+ },
16
+ "keywords": [],
17
+ "author": "",
18
+ "license": "ISC",
19
+ "devDependencies": {
20
+ "@types/jest": "^29.2.4",
21
+ "@types/node": "^18.11.14",
22
+ "@typescript-eslint/eslint-plugin": "^5.48.0",
23
+ "@typescript-eslint/parser": "^5.48.0",
24
+ "eslint": "^8.31.0",
25
+ "eslint-config-airbnb-typescript": "^17.0.0",
26
+ "eslint-config-prettier": "^8.6.0",
27
+ "eslint-plugin-import": "^2.22.1",
28
+ "eslint-plugin-prefer-arrow": "^1.2.2",
29
+ "eslint-plugin-prettier": "^4.2.1",
30
+ "jest": "^29.3.1",
31
+ "prettier": "^2.8.1",
32
+ "typescript": "^5.0.0-dev.20230117"
33
+ },
34
+ "dependencies": {
35
+ "@haibun/core": "1.13.13",
36
+ "@haibun/domain-storage": "1.13.13",
37
+ "memfs": "^3.4.13"
38
+ }
39
+ }