@trayio/commons 4.74.0 → 4.76.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.
@@ -8,5 +8,6 @@ export declare class FakeFileStorage implements FileStorage {
8
8
  delete(fileName: string): TE.TaskEither<Error, undefined>;
9
9
  getSharedUrl(key: string): TE.TaskEither<Error, SharedUrl>;
10
10
  createDirectory(key: string): TE.TaskEither<Error, undefined>;
11
+ deleteDirectory(key: string): TE.TaskEither<Error, undefined>;
11
12
  }
12
13
  //# sourceMappingURL=FakeFileStorage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FakeFileStorage.d.ts","sourceRoot":"","sources":["../../src/file/FakeFileStorage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAIvC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEtD,qBAAa,eAAgB,YAAW,WAAW;IAClD,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;;IAMzB,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;IAY7C,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;IAkBlD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;IAYzD,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;IAI1D,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;CAmB7D"}
1
+ {"version":3,"file":"FakeFileStorage.d.ts","sourceRoot":"","sources":["../../src/file/FakeFileStorage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAIvC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEtD,qBAAa,eAAgB,YAAW,WAAW;IAClD,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;;IAMzB,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;IAY7C,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;IAkBlD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;IAYzD,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;IAI1D,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;IAoB7D,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;CAW7D"}
@@ -60,5 +60,8 @@ class FakeFileStorage {
60
60
  content: stream_1.Readable.from(''),
61
61
  }), (error) => new Error(error))), TE.map(() => undefined));
62
62
  }
63
+ deleteDirectory(key) {
64
+ return (0, function_1.pipe)(TE.fromEither(E.tryCatch(() => this.files.delete(key), (error) => new Error(error))), TE.map(() => undefined));
65
+ }
63
66
  }
64
67
  exports.FakeFileStorage = FakeFileStorage;
@@ -3,6 +3,7 @@ import { Readable } from 'stream';
3
3
  import { TaskEither } from 'fp-ts/TaskEither';
4
4
  import * as t from 'io-ts';
5
5
  import { Option } from 'fp-ts/lib/Option';
6
+ import * as TE from 'fp-ts/TaskEither';
6
7
  import { DynamicObject } from '../dynamictype/DynamicType';
7
8
  export interface FileContentTypeCheckerInterface {
8
9
  isFileContentType(value: unknown): value is string;
@@ -39,5 +40,6 @@ export interface FileStorage {
39
40
  getSharedUrl(key: string): TaskEither<Error, SharedUrl>;
40
41
  delete(key: string): TaskEither<Error, undefined>;
41
42
  createDirectory(key: string): TaskEither<Error, undefined>;
43
+ deleteDirectory(key: string): TE.TaskEither<Error, undefined>;
42
44
  }
43
45
  //# sourceMappingURL=File.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"File.d.ts","sourceRoot":"","sources":["../../src/file/File.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,WAAW,+BAA+B;IAC/C,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC;CACnD;AAED,eAAO,MAAM,sBAAsB,EAAE,+BAQpC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAS9D,CAAC;AAEJ,eAAO,MAAM,wBAAwB,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAMpE,CAAC;AAKF,MAAM,MAAM,IAAI,GAAG;IAElB,SAAS,EAAE,cAAc,CAAC;IAC1B,OAAO,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,YAAY,CAAC;CACvB,CAAC;AACF,MAAM,WAAW,uBAAuB;IACvC,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAAC;IAC1D,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc,CAAC;CACrC;AAED,eAAO,MAAM,cAAc,EAAE,uBAoB5B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,WAAW,WAAW;IAC3B,KAAK,CACJ,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,MAAM,CAAC,aAAa,CAAC,GACjC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1D,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACxD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAClD,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;CAC3D"}
1
+ {"version":3,"file":"File.d.ts","sourceRoot":"","sources":["../../src/file/File.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,WAAW,+BAA+B;IAC/C,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC;CACnD;AAED,eAAO,MAAM,sBAAsB,EAAE,+BAQpC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAS9D,CAAC;AAEJ,eAAO,MAAM,wBAAwB,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAMpE,CAAC;AAKF,MAAM,MAAM,IAAI,GAAG;IAElB,SAAS,EAAE,cAAc,CAAC;IAC1B,OAAO,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,YAAY,CAAC;CACvB,CAAC;AACF,MAAM,WAAW,uBAAuB;IACvC,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAAC;IAC1D,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc,CAAC;CACrC;AAED,eAAO,MAAM,cAAc,EAAE,uBAoB5B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,WAAW,WAAW;IAC3B,KAAK,CACJ,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,MAAM,CAAC,aAAa,CAAC,GACjC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1D,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACxD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAClD,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC3D,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;CAC9D"}
@@ -13,5 +13,6 @@ export declare class NodeFsFileStorage implements FileStorage {
13
13
  delete(key: string): TE.TaskEither<Error, undefined>;
14
14
  createDirectory(key: string): TE.TaskEither<Error, undefined>;
15
15
  readDirectory(key: string): TE.TaskEither<Error, Dirent[]>;
16
+ deleteDirectory(key: string): TE.TaskEither<Error, undefined>;
16
17
  }
17
18
  //# sourceMappingURL=NodeFsFileStorage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeFsFileStorage.d.ts","sourceRoot":"","sources":["../../src/file/NodeFsFileStorage.ts"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAG3C,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EACN,IAAI,EACJ,WAAW,EAEX,SAAS,EAET,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,qBAAa,iBAAkB,YAAW,WAAW;IACxC,OAAO,CAAC,QAAQ;gBAAR,QAAQ,GAAE,MAAe;IAE7C,KAAK,CACJ,IAAI,EAAE,IAAI,EACV,YAAY,GAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAU,GAC5C,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;IAkB7B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;IAuB7C,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;IAW1D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;IAYpD,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;IAY7D,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;CAW1D"}
1
+ {"version":3,"file":"NodeFsFileStorage.d.ts","sourceRoot":"","sources":["../../src/file/NodeFsFileStorage.ts"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAG3C,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EACN,IAAI,EACJ,WAAW,EAEX,SAAS,EAET,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,qBAAa,iBAAkB,YAAW,WAAW;IACxC,OAAO,CAAC,QAAQ;gBAAR,QAAQ,GAAE,MAAe;IAE7C,KAAK,CACJ,IAAI,EAAE,IAAI,EACV,YAAY,GAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAU,GAC5C,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;IAkB7B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;IAuB7C,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;IAW1D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;IAYpD,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;IAY7D,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAY1D,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;CAY7D"}
@@ -86,4 +86,36 @@ describe('NodeFsFileStorage Tests', () => {
86
86
  const deleted = await fileStorage.delete(file.reference.key)();
87
87
  expect(deleted).toEqual(E.right(undefined));
88
88
  });
89
+ it('should create, read and remove a folder', async () => {
90
+ const fileContent = 'This is the initial text.';
91
+ const readableStream = new stream_1.Readable({
92
+ read() {
93
+ this.push(Buffer.from(fileContent));
94
+ this.push(null);
95
+ },
96
+ });
97
+ const folderName = `folder`;
98
+ const fileName = `test-${(0, uuid_1.v4)()}.txt`;
99
+ const createdFolderResult = await fileStorage.createDirectory(folderName)();
100
+ expect(createdFolderResult).toEqual(E.right(undefined));
101
+ const file = {
102
+ reference: {
103
+ _tag: 'FileDescriptor',
104
+ key: `${folderName}/${fileName}`,
105
+ metadata: { name: fileName },
106
+ },
107
+ content: readableStream,
108
+ };
109
+ const writtenFile = await fileStorage.write(file, O.none)();
110
+ expect(writtenFile).toEqual(E.right(file));
111
+ const readFolderResult = await fileStorage.readDirectory(folderName)();
112
+ const contents = E.getOrElse(() => {
113
+ throw new Error('Expected right');
114
+ })(readFolderResult);
115
+ expect(contents.length).toEqual(1);
116
+ const deleteFolderResult = await fileStorage.deleteDirectory(folderName)();
117
+ expect(deleteFolderResult).toEqual(E.right(undefined));
118
+ const readFolderResult2 = await fileStorage.readDirectory(folderName)();
119
+ expect(readFolderResult2).toEqual(E.left(new Error("Error: ENOENT: no such file or directory, scandir '/tmp/folder'")));
120
+ });
89
121
  });
@@ -71,16 +71,21 @@ class NodeFsFileStorage {
71
71
  return (0, function_1.pipe)(result, TE.map(() => undefined));
72
72
  }
73
73
  createDirectory(key) {
74
- const filePath = `${this.basePath}/${key}`;
75
- const result = (0, Task_1.createTaskEitherFromPromiseWithSimpleError)(() => fs.mkdir(filePath, { recursive: true }));
74
+ const dirPath = `${this.basePath}/${key}`;
75
+ const result = (0, Task_1.createTaskEitherFromPromiseWithSimpleError)(() => fs.mkdir(dirPath, { recursive: true }));
76
76
  return (0, function_1.pipe)(result, TE.map(() => undefined));
77
77
  }
78
78
  readDirectory(key) {
79
- const filePath = `${this.basePath}/${key}`;
79
+ const dirPath = `${this.basePath}/${key}`;
80
80
  return TE.tryCatch(async () => {
81
- const files = await fs.readdir(filePath, { withFileTypes: true });
81
+ const files = await fs.readdir(dirPath, { withFileTypes: true });
82
82
  return files;
83
83
  }, (reason) => new Error(String(reason)));
84
84
  }
85
+ deleteDirectory(key) {
86
+ const dirPath = `${this.basePath}/${key}`;
87
+ const result = (0, Task_1.createTaskEitherFromPromiseWithSimpleError)(() => fs.rm(dirPath, { recursive: true, force: true }));
88
+ return (0, function_1.pipe)(result, TE.map(() => undefined));
89
+ }
85
90
  }
86
91
  exports.NodeFsFileStorage = NodeFsFileStorage;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trayio/commons",
3
- "version": "4.74.0",
3
+ "version": "4.76.0",
4
4
  "description": "Extensions to the standard/core libraries and basic features",
5
5
  "exports": {
6
6
  "./*": "./dist/*.js"