@trayio/commons 5.35.0-unstable.fd7158a → 6.0.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 (146) hide show
  1. package/dist/base64/Base64.d.ts +10 -5
  2. package/dist/base64/Base64.d.ts.map +1 -1
  3. package/dist/base64/Base64.js +40 -8
  4. package/dist/base64/Base64.unit.test.js +27 -4
  5. package/dist/buffer/BufferExtensions.d.ts +4 -4
  6. package/dist/buffer/BufferExtensions.d.ts.map +1 -1
  7. package/dist/buffer/BufferExtensions.js +38 -25
  8. package/dist/buffer/BufferExtensions.unit.test.js +45 -22
  9. package/dist/callsite/CallSite.js +7 -17
  10. package/dist/codec/CamelCasePropertyNameCodec.d.ts +2 -2
  11. package/dist/codec/CamelCasePropertyNameCodec.d.ts.map +1 -1
  12. package/dist/codec/CamelCasePropertyNameCodec.js +25 -2
  13. package/dist/codec/Codec.abstract.test.d.ts +2 -2
  14. package/dist/codec/Codec.abstract.test.d.ts.map +1 -1
  15. package/dist/codec/Codec.abstract.test.js +31 -5
  16. package/dist/codec/Codec.d.ts +2 -2
  17. package/dist/codec/Codec.d.ts.map +1 -1
  18. package/dist/codec/CompositeCodec.d.ts +2 -2
  19. package/dist/codec/CompositeCodec.d.ts.map +1 -1
  20. package/dist/codec/CompositeCodec.js +26 -2
  21. package/dist/codec/PartialRedactionCodec.d.ts +2 -2
  22. package/dist/codec/PartialRedactionCodec.d.ts.map +1 -1
  23. package/dist/codec/PartialRedactionCodec.js +25 -2
  24. package/dist/codec/RemoveNullValuesCodec.d.ts +2 -2
  25. package/dist/codec/RemoveNullValuesCodec.d.ts.map +1 -1
  26. package/dist/codec/RemoveNullValuesCodec.js +25 -2
  27. package/dist/codec/RemoveTopLevelTagCodec.d.ts +2 -2
  28. package/dist/codec/RemoveTopLevelTagCodec.d.ts.map +1 -1
  29. package/dist/codec/RemoveTopLevelTagCodec.js +25 -2
  30. package/dist/codec/SensitiveRemoveTagAndRedactCodec.d.ts +2 -2
  31. package/dist/codec/SensitiveRemoveTagAndRedactCodec.d.ts.map +1 -1
  32. package/dist/codec/SensitiveRemoveTagAndRedactCodec.js +25 -2
  33. package/dist/codec/SensitiveRemoveTagAndRedactCodec.unit.test.js +38 -15
  34. package/dist/codec/SnakeCasePropertyNameCodec.d.ts +2 -2
  35. package/dist/codec/SnakeCasePropertyNameCodec.d.ts.map +1 -1
  36. package/dist/codec/SnakeCasePropertyNameCodec.js +25 -2
  37. package/dist/codec/TypeCodec.d.ts +8 -24
  38. package/dist/codec/TypeCodec.d.ts.map +1 -1
  39. package/dist/codec/TypeCodec.js +48 -40
  40. package/dist/codec/TypeCodec.unit.test.js +38 -12
  41. package/dist/dynamicschema/DynamicSchema.d.ts +12 -6
  42. package/dist/dynamicschema/DynamicSchema.d.ts.map +1 -1
  43. package/dist/dynamicschema/DynamicSchema.js +41 -18
  44. package/dist/dynamicschema/DynamicSchema.unit.test.js +75 -51
  45. package/dist/dynamictype/DynamicType.d.ts +20 -17
  46. package/dist/dynamictype/DynamicType.d.ts.map +1 -1
  47. package/dist/dynamictype/DynamicType.js +35 -48
  48. package/dist/file/FakeFileStorage.d.ts +8 -8
  49. package/dist/file/FakeFileStorage.d.ts.map +1 -1
  50. package/dist/file/FakeFileStorage.js +40 -16
  51. package/dist/file/File.d.ts +14 -10
  52. package/dist/file/File.d.ts.map +1 -1
  53. package/dist/file/File.js +24 -31
  54. package/dist/file/FileStorage.abstract.test.d.ts.map +1 -1
  55. package/dist/file/FileStorage.abstract.test.js +41 -18
  56. package/dist/file/NodeFsFileStorage.d.ts +11 -9
  57. package/dist/file/NodeFsFileStorage.d.ts.map +1 -1
  58. package/dist/file/NodeFsFileStorage.integration.test.js +45 -21
  59. package/dist/file/NodeFsFileStorage.js +29 -37
  60. package/dist/http/Http.d.ts +13 -11
  61. package/dist/http/Http.d.ts.map +1 -1
  62. package/dist/http/Http.js +22 -30
  63. package/dist/http/Http.unit.test.js +26 -3
  64. package/dist/http/HttpClient.abstract.test.d.ts.map +1 -1
  65. package/dist/http/HttpClient.abstract.test.js +108 -104
  66. package/dist/http/HttpClient.d.ts +2 -2
  67. package/dist/http/HttpClient.d.ts.map +1 -1
  68. package/dist/http/HttpController.d.ts +3 -2
  69. package/dist/http/HttpController.d.ts.map +1 -1
  70. package/dist/http/HttpTypeDescriptors.d.ts +11 -0
  71. package/dist/http/HttpTypeDescriptors.d.ts.map +1 -0
  72. package/dist/http/HttpTypeDescriptors.js +59 -0
  73. package/dist/http/MultipartHttpRequestBody.integration.test.js +20 -31
  74. package/dist/http/MultipartHttpRequestBody.unit.test.js +53 -70
  75. package/dist/record/Record.d.ts +3 -3
  76. package/dist/record/Record.d.ts.map +1 -1
  77. package/dist/record/Record.js +30 -9
  78. package/dist/result/Result.d.ts +3 -3
  79. package/dist/result/Result.d.ts.map +1 -1
  80. package/dist/result/Result.js +26 -9
  81. package/dist/schema/JsonSchemaIntrospector.js +7 -17
  82. package/dist/sensitive/Sensitive.d.ts +3 -7
  83. package/dist/sensitive/Sensitive.d.ts.map +1 -1
  84. package/dist/sensitive/Sensitive.js +39 -23
  85. package/dist/sensitive/Sensitive.unit.test.d.ts +4 -4
  86. package/dist/sensitive/Sensitive.unit.test.d.ts.map +1 -1
  87. package/dist/sensitive/Sensitive.unit.test.js +46 -20
  88. package/dist/serialization/FormUrlEncodedSerialization.d.ts +2 -2
  89. package/dist/serialization/FormUrlEncodedSerialization.d.ts.map +1 -1
  90. package/dist/serialization/FormUrlEncodedSerialization.js +28 -5
  91. package/dist/serialization/JsonSerialization.d.ts +2 -2
  92. package/dist/serialization/JsonSerialization.d.ts.map +1 -1
  93. package/dist/serialization/JsonSerialization.js +28 -5
  94. package/dist/serialization/Serialization.abstract.test.d.ts.map +1 -1
  95. package/dist/serialization/Serialization.abstract.test.js +32 -6
  96. package/dist/serialization/Serialization.d.ts +2 -2
  97. package/dist/serialization/Serialization.d.ts.map +1 -1
  98. package/dist/task/Task.d.ts +19 -0
  99. package/dist/task/Task.d.ts.map +1 -0
  100. package/dist/task/Task.js +74 -0
  101. package/dist/task/Task.unit.test.d.ts +2 -0
  102. package/dist/task/Task.unit.test.d.ts.map +1 -0
  103. package/dist/task/Task.unit.test.js +46 -0
  104. package/dist/try/Try.d.ts +2 -2
  105. package/dist/try/Try.d.ts.map +1 -1
  106. package/dist/try/Try.js +32 -2
  107. package/dist/uuid/Uuid.d.ts +10 -11
  108. package/dist/uuid/Uuid.d.ts.map +1 -1
  109. package/dist/uuid/Uuid.js +39 -13
  110. package/dist/uuid/Uuid.unit.test.js +27 -4
  111. package/dist/zod/SchemaParser.abstract.test.d.ts.map +1 -1
  112. package/dist/zod/SchemaParser.abstract.test.js +31 -6
  113. package/dist/zod/SchemaParser.d.ts +2 -2
  114. package/dist/zod/SchemaParser.d.ts.map +1 -1
  115. package/dist/zod/ZodSchemaParser.d.ts +4 -3
  116. package/dist/zod/ZodSchemaParser.d.ts.map +1 -1
  117. package/dist/zod/ZodSchemaParser.js +28 -4
  118. package/dist/zod/ZodSchemaParser.unit.test.js +25 -2
  119. package/package.json +9 -4
  120. package/dist/effect/EffectExtensions.d.ts +0 -29
  121. package/dist/effect/EffectExtensions.d.ts.map +0 -1
  122. package/dist/effect/EffectExtensions.js +0 -30
  123. package/dist/effect/EffectExtensions.unit.test.d.ts +0 -2
  124. package/dist/effect/EffectExtensions.unit.test.d.ts.map +0 -1
  125. package/dist/effect/EffectExtensions.unit.test.js +0 -59
  126. package/dist/effect/Interop.d.ts +0 -53
  127. package/dist/effect/Interop.d.ts.map +0 -1
  128. package/dist/effect/Interop.js +0 -56
  129. package/dist/effect/Interop.unit.test.d.ts +0 -2
  130. package/dist/effect/Interop.unit.test.d.ts.map +0 -1
  131. package/dist/effect/Interop.unit.test.js +0 -134
  132. package/dist/effect/SchemaExtensions.d.ts +0 -11
  133. package/dist/effect/SchemaExtensions.d.ts.map +0 -1
  134. package/dist/effect/SchemaExtensions.js +0 -7
  135. package/dist/effect/SchemaExtensions.unit.test.d.ts +0 -2
  136. package/dist/effect/SchemaExtensions.unit.test.d.ts.map +0 -1
  137. package/dist/effect/SchemaExtensions.unit.test.js +0 -29
  138. package/dist/http/HttpSchemas.d.ts +0 -13
  139. package/dist/http/HttpSchemas.d.ts.map +0 -1
  140. package/dist/http/HttpSchemas.js +0 -23
  141. package/dist/schema/DateFromUnixTime.d.ts +0 -4
  142. package/dist/schema/DateFromUnixTime.d.ts.map +0 -1
  143. package/dist/schema/DateFromUnixTime.js +0 -10
  144. package/dist/schema/DateFromUnixTime.unit.test.d.ts +0 -2
  145. package/dist/schema/DateFromUnixTime.unit.test.d.ts.map +0 -1
  146. package/dist/schema/DateFromUnixTime.unit.test.js +0 -11
@@ -1,49 +1,73 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
26
  exports.FakeFileStorage = void 0;
4
- const effect_1 = require("effect");
27
+ const TE = __importStar(require("fp-ts/TaskEither"));
28
+ const E = __importStar(require("fp-ts/Either"));
29
+ const function_1 = require("fp-ts/lib/function");
5
30
  const stream_1 = require("stream");
6
- const attempt = (block) => effect_1.Effect.try({
7
- try: block,
8
- catch: (error) => new Error(error),
9
- });
10
31
  class FakeFileStorage {
11
32
  files;
12
33
  constructor() {
13
34
  this.files = new Map();
14
35
  }
15
36
  write(file) {
16
- return effect_1.Effect.map(attempt(() => this.files.set(file.reference.key, file)), () => file);
37
+ return (0, function_1.pipe)(TE.fromEither(E.tryCatch(() => this.files.set(file.reference.key, file), (error) => new Error(error))), TE.map(() => file));
17
38
  }
18
39
  read(fileName) {
19
- return effect_1.Effect.flatMap(attempt(() => this.files.get(fileName)), (file) => file === undefined
20
- ? effect_1.Effect.fail(new Error(`File ${fileName} not found`))
21
- : effect_1.Effect.succeed(file));
40
+ return (0, function_1.pipe)(TE.fromEither(E.tryCatch(() => this.files.get(fileName), (error) => new Error(error))), TE.chain((file) => {
41
+ if (file === undefined) {
42
+ return TE.left(new Error(`File ${fileName} not found`));
43
+ }
44
+ return TE.right(file);
45
+ }));
22
46
  }
23
47
  delete(fileName) {
24
- return effect_1.Effect.map(attempt(() => this.files.delete(fileName)), () => undefined);
48
+ return (0, function_1.pipe)(TE.fromEither(E.tryCatch(() => this.files.delete(fileName), (error) => new Error(error))), TE.map(() => undefined));
25
49
  }
26
50
  getSharedUrl(key) {
27
- return effect_1.Effect.succeed({ url: key });
51
+ return TE.right({ url: key });
28
52
  }
29
53
  getSize(key) {
30
- return effect_1.Effect.map(this.read(key), (file) => {
54
+ return (0, function_1.pipe)(this.read(key), TE.map((file) => {
31
55
  const { size } = file.reference.metadata;
32
56
  return size || 0; // node-fs returns 0 for directories
33
- });
57
+ }));
34
58
  }
35
59
  createDirectory(key) {
36
- return effect_1.Effect.map(attempt(() => this.files.set(key, {
60
+ return (0, function_1.pipe)(TE.fromEither(E.tryCatch(() => this.files.set(key, {
37
61
  reference: {
38
62
  _tag: 'FileDescriptor',
39
63
  key,
40
64
  metadata: { name: key },
41
65
  },
42
66
  content: stream_1.Readable.from(''),
43
- })), () => undefined);
67
+ }), (error) => new Error(error))), TE.map(() => undefined));
44
68
  }
45
69
  deleteDirectory(key) {
46
- return effect_1.Effect.map(attempt(() => this.files.delete(key)), () => undefined);
70
+ return (0, function_1.pipe)(TE.fromEither(E.tryCatch(() => this.files.delete(key), (error) => new Error(error))), TE.map(() => undefined));
47
71
  }
48
72
  }
49
73
  exports.FakeFileStorage = FakeFileStorage;
@@ -1,5 +1,9 @@
1
+ /// <reference types="node" />
1
2
  import { Readable } from 'stream';
2
- import { Effect, Option, Schema } from 'effect';
3
+ import { TaskEither } from 'fp-ts/TaskEither';
4
+ import * as t from 'io-ts';
5
+ import { Option } from 'fp-ts/lib/Option';
6
+ import * as TE from 'fp-ts/TaskEither';
3
7
  import { DynamicObject } from '../dynamictype/DynamicType';
4
8
  export interface FileContentTypeCheckerInterface {
5
9
  isFileContentType(value: unknown): value is string;
@@ -10,8 +14,8 @@ export type FileMetadata = {
10
14
  size?: number;
11
15
  contentType?: string;
12
16
  };
13
- export declare const fileMetadataSchema: Schema.Schema<FileMetadata>;
14
- export declare const fileDescriptorSchema: Schema.Schema<FileDescriptor>;
17
+ export declare const fileMetadataDescriptor: t.Type<FileMetadata, unknown>;
18
+ export declare const fileDescriptorDescriptor: t.Type<FileDescriptor, unknown>;
15
19
  export type File = {
16
20
  reference: FileDescriptor;
17
21
  content: Readable;
@@ -31,12 +35,12 @@ export type SharedUrl = {
31
35
  expires?: number;
32
36
  };
33
37
  export interface FileStorage {
34
- write(file: File, writeOptions: Option.Option<DynamicObject>): Effect.Effect<File, Error>;
35
- read(key: string, name?: string): Effect.Effect<File, Error>;
36
- getSharedUrl(key: string): Effect.Effect<SharedUrl, Error>;
37
- getSize(key: string): Effect.Effect<number, Error>;
38
- delete(key: string): Effect.Effect<undefined, Error>;
39
- createDirectory(key: string): Effect.Effect<undefined, Error>;
40
- deleteDirectory(key: string): Effect.Effect<undefined, Error>;
38
+ write(file: File, writeOptions: Option<DynamicObject>): TaskEither<Error, File>;
39
+ read(key: string, name?: string): TaskEither<Error, File>;
40
+ getSharedUrl(key: string): TaskEither<Error, SharedUrl>;
41
+ getSize(key: string): TaskEither<Error, number>;
42
+ delete(key: string): TaskEither<Error, undefined>;
43
+ createDirectory(key: string): TaskEither<Error, undefined>;
44
+ deleteDirectory(key: string): TE.TaskEither<Error, undefined>;
41
45
  }
42
46
  //# 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,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhD,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,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAMd,CAAC;AAE9C,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAOf,CAAC;AAOjD,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,MAAM,CAAC,aAAa,CAAC,GACxC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7D,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACrD,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9D,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;CAC9D"}
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,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAChD,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"}
package/dist/file/File.js CHANGED
@@ -15,26 +15,16 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
35
25
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.FileDescriptor = exports.fileDescriptorSchema = exports.fileMetadataSchema = exports.FileContentTypeChecker = void 0;
37
- const effect_1 = require("effect");
26
+ exports.FileDescriptor = exports.fileDescriptorDescriptor = exports.fileMetadataDescriptor = exports.FileContentTypeChecker = void 0;
27
+ const t = __importStar(require("io-ts"));
38
28
  const mime = __importStar(require("mime-types"));
39
29
  exports.FileContentTypeChecker = {
40
30
  isFileContentType(value) {
@@ -45,17 +35,20 @@ exports.FileContentTypeChecker = {
45
35
  return mime.contentType(lowerCaseValue) !== false;
46
36
  },
47
37
  };
48
- exports.fileMetadataSchema = effect_1.Schema.mutable(effect_1.Schema.Struct({
49
- name: effect_1.Schema.String,
50
- size: effect_1.Schema.optional(effect_1.Schema.Number),
51
- contentType: effect_1.Schema.optional(effect_1.Schema.String),
52
- })).annotations({ identifier: 'FileMetadata' });
53
- exports.fileDescriptorSchema = effect_1.Schema.mutable(effect_1.Schema.Struct({
54
- _tag: effect_1.Schema.Literal('FileDescriptor'),
55
- key: effect_1.Schema.String,
56
- metadata: exports.fileMetadataSchema,
57
- })).annotations({ identifier: 'FileDescriptor' });
58
- const isFileMetadata = effect_1.Schema.is(exports.fileMetadataSchema);
38
+ exports.fileMetadataDescriptor = t.intersection([
39
+ t.type({
40
+ name: t.string,
41
+ }),
42
+ t.partial({
43
+ size: t.number,
44
+ contentType: t.string,
45
+ }),
46
+ ]);
47
+ exports.fileDescriptorDescriptor = t.type({
48
+ _tag: t.literal('FileDescriptor'),
49
+ key: t.string,
50
+ metadata: exports.fileMetadataDescriptor,
51
+ });
59
52
  exports.FileDescriptor = {
60
53
  isFileDescriptor(value) {
61
54
  return (typeof value === 'object' &&
@@ -65,7 +58,7 @@ exports.FileDescriptor = {
65
58
  'key' in value &&
66
59
  typeof value.key === 'string' &&
67
60
  'metadata' in value &&
68
- isFileMetadata(value.metadata));
61
+ exports.fileMetadataDescriptor.is(value.metadata));
69
62
  },
70
63
  fromFile(file) {
71
64
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"FileStorage.abstract.test.d.ts","sourceRoot":"","sources":["../../src/file/FileStorage.abstract.test.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAQ,MAAM,QAAQ,CAAC;AAE3C,eAAO,MAAM,eAAe,GAAI,aAAa,WAAW,SA6GvD,CAAC"}
1
+ {"version":3,"file":"FileStorage.abstract.test.d.ts","sourceRoot":"","sources":["../../src/file/FileStorage.abstract.test.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAQ,MAAM,QAAQ,CAAC;AAE3C,eAAO,MAAM,eAAe,gBAAiB,WAAW,SAiGvD,CAAC"}
@@ -1,10 +1,33 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
26
  exports.fileStorageTest = void 0;
4
- const effect_1 = require("effect");
27
+ const E = __importStar(require("fp-ts/Either"));
5
28
  const uuid_1 = require("uuid");
29
+ const O = __importStar(require("fp-ts/Option"));
6
30
  const stream_1 = require("stream");
7
- const BufferExtensions_1 = require("../buffer/BufferExtensions");
8
31
  const JsonSerialization_1 = require("../serialization/JsonSerialization");
9
32
  const fileStorageTest = (fileStorage) => {
10
33
  describe('FileStorage Tests', () => {
@@ -28,23 +51,23 @@ const fileStorageTest = (fileStorage) => {
28
51
  },
29
52
  content: readableStream,
30
53
  };
31
- const writtenFile = await effect_1.Effect.runPromise(effect_1.Effect.either(fileStorage.write(file, effect_1.Option.none())));
32
- expect(writtenFile).toEqual(effect_1.Either.right(file));
33
- const sharedUrl = await effect_1.Effect.runPromise(effect_1.Effect.either(fileStorage.getSharedUrl(file.reference.key)));
34
- expect(sharedUrl).toEqual(effect_1.Either.right(expect.objectContaining({
54
+ const writtenFile = await fileStorage.write(file, O.none)();
55
+ expect(writtenFile).toEqual(E.right(file));
56
+ const sharedUrl = await fileStorage.getSharedUrl(file.reference.key)();
57
+ expect(sharedUrl).toEqual(E.right(expect.objectContaining({
35
58
  url: expect.any(String),
36
59
  })));
37
- if (effect_1.Either.isRight(sharedUrl)) {
60
+ if (E.isRight(sharedUrl)) {
38
61
  if (typeof sharedUrl.right.expires !== 'undefined') {
39
62
  expect(sharedUrl.right.expires).toEqual(expect.any(Number));
40
63
  }
41
64
  }
42
- const size = await effect_1.Effect.runPromise(effect_1.Effect.either(fileStorage.getSize(file.reference.key)));
43
- expect(size).toEqual(effect_1.Either.right(expect.any(Number)));
44
- const read = await effect_1.Effect.runPromise(effect_1.Effect.either(fileStorage.read(file.reference.key)));
45
- const readResponse = effect_1.Either.getOrElse(read, () => {
65
+ const size = await fileStorage.getSize(file.reference.key)();
66
+ expect(size).toEqual(E.right(expect.any(Number)));
67
+ const read = await fileStorage.read(file.reference.key)();
68
+ const readResponse = E.getOrElse(() => {
46
69
  throw new Error('Expected right');
47
- });
70
+ })(read);
48
71
  let data = '';
49
72
  await new Promise((resolve) => {
50
73
  readResponse.content.on('data', (chunk) => {
@@ -54,21 +77,21 @@ const fileStorageTest = (fileStorage) => {
54
77
  resolve(undefined);
55
78
  });
56
79
  });
57
- const deserializedData = serialization.deserialize(BufferExtensions_1.BufferExtensions.bufferToArrayBuffer(Buffer.from(data)));
58
- if (effect_1.Either.isLeft(deserializedData)) {
80
+ const deserializedData = serialization.deserialize(Buffer.from(data));
81
+ if (E.isLeft(deserializedData)) {
59
82
  throw new Error('failed to deserialise stream contents');
60
83
  }
61
84
  expect(deserializedData.right).toStrictEqual(fileContent);
62
- const deleted = await effect_1.Effect.runPromise(effect_1.Effect.either(fileStorage.delete(file.reference.key)));
63
- expect(deleted).toEqual(effect_1.Either.right(undefined));
85
+ const deleted = await fileStorage.delete(file.reference.key)();
86
+ expect(deleted).toEqual(E.right(undefined));
64
87
  });
65
88
  });
66
89
  });
67
90
  describe('Reading a file', () => {
68
91
  describe('when the file does not exist', () => {
69
92
  it('should return does not exist error', async () => {
70
- const read = await effect_1.Effect.runPromise(effect_1.Effect.either(fileStorage.read(`fail_test-${(0, uuid_1.v4)()}.zip`)));
71
- if (effect_1.Either.isRight(read)) {
93
+ const read = await fileStorage.read(`fail_test-${(0, uuid_1.v4)()}.zip`)();
94
+ if (E.isRight(read)) {
72
95
  throw new Error('Expected left');
73
96
  }
74
97
  expect(read.left).toBeInstanceOf(Error);
@@ -1,17 +1,19 @@
1
+ /// <reference types="node" />
2
+ import * as TE from 'fp-ts/lib/TaskEither';
1
3
  import { Dirent } from 'fs';
2
- import { Effect, Option } from 'effect';
4
+ import * as O from 'fp-ts/Option';
3
5
  import { File, FileStorage, SharedUrl } from './File';
4
6
  import { DynamicObject } from '../dynamictype/DynamicType';
5
7
  export declare class NodeFsFileStorage implements FileStorage {
6
8
  private basePath;
7
9
  constructor(basePath?: string);
8
- write(file: File, writeOptions?: Option.Option<DynamicObject>): Effect.Effect<File, Error>;
9
- read(key: string): Effect.Effect<File, Error>;
10
- getSharedUrl(key: string): Effect.Effect<SharedUrl, Error>;
11
- getSize(key: string): Effect.Effect<number, Error>;
12
- delete(key: string): Effect.Effect<undefined, Error>;
13
- createDirectory(key: string): Effect.Effect<undefined, Error>;
14
- readDirectory(key: string): Effect.Effect<Dirent[], Error>;
15
- deleteDirectory(key: string): Effect.Effect<undefined, Error>;
10
+ write(file: File, writeOptions?: O.Option<DynamicObject>): TE.TaskEither<Error, File>;
11
+ read(key: string): TE.TaskEither<Error, File>;
12
+ getSharedUrl(key: string): TE.TaskEither<Error, SharedUrl>;
13
+ getSize(key: string): TE.TaskEither<Error, number>;
14
+ delete(key: string): TE.TaskEither<Error, undefined>;
15
+ createDirectory(key: string): TE.TaskEither<Error, undefined>;
16
+ readDirectory(key: string): TE.TaskEither<Error, Dirent[]>;
17
+ deleteDirectory(key: string): TE.TaskEither<Error, undefined>;
16
18
  }
17
19
  //# sourceMappingURL=NodeFsFileStorage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeFsFileStorage.d.ts","sourceRoot":"","sources":["../../src/file/NodeFsFileStorage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EACN,IAAI,EACJ,WAAW,EAEX,SAAS,EAET,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAS3D,qBAAa,iBAAkB,YAAW,WAAW;IACxC,OAAO,CAAC,QAAQ;gBAAR,QAAQ,GAAE,MAAe;IAE7C,KAAK,CACJ,IAAI,EAAE,IAAI,EACV,YAAY,GAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAiB,GACxD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;IAgB7B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;IAoB7C,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;IAQ1D,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IASlD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;IAQpD,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;IAU7D,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC;IAS1D,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;CAS7D"}
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,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC;IAYlD,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"}
@@ -1,8 +1,32 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const effect_1 = require("effect");
4
26
  const stream_1 = require("stream");
5
27
  const uuid_1 = require("uuid");
28
+ const O = __importStar(require("fp-ts/Option"));
29
+ const E = __importStar(require("fp-ts/Either"));
6
30
  const FileStorage_abstract_test_1 = require("./FileStorage.abstract.test");
7
31
  const NodeFsFileStorage_1 = require("./NodeFsFileStorage");
8
32
  describe('NodeFsFileStorage Tests', () => {
@@ -25,8 +49,8 @@ describe('NodeFsFileStorage Tests', () => {
25
49
  },
26
50
  content: readableStream,
27
51
  };
28
- const writtenFile = await effect_1.Effect.runPromise(effect_1.Effect.either(fileStorage.write(file, effect_1.Option.none())));
29
- expect(writtenFile).toEqual(effect_1.Either.right(file));
52
+ const writtenFile = await fileStorage.write(file, O.none)();
53
+ expect(writtenFile).toEqual(E.right(file));
30
54
  const secondFileContent = ' And we continue to write.';
31
55
  const appendReadableStream = new stream_1.Readable({
32
56
  read() {
@@ -42,13 +66,13 @@ describe('NodeFsFileStorage Tests', () => {
42
66
  },
43
67
  content: appendReadableStream,
44
68
  };
45
- const appendedFile = await effect_1.Effect.runPromise(effect_1.Effect.either(fileStorage.write(appendFile, effect_1.Option.some({ flag: 'a' }))));
46
- expect(appendedFile).toEqual(effect_1.Either.right(appendFile));
69
+ const appendedFile = await fileStorage.write(appendFile, O.some({ flag: 'a' }))();
70
+ expect(appendedFile).toEqual(E.right(appendFile));
47
71
  // When reading the full contents.
48
- const read = await effect_1.Effect.runPromise(effect_1.Effect.either(fileStorage.read(file.reference.key)));
49
- const readResponse = effect_1.Either.getOrElse(read, () => {
72
+ const read = await fileStorage.read(file.reference.key)();
73
+ const readResponse = E.getOrElse(() => {
50
74
  throw new Error('Expected right');
51
- });
75
+ })(read);
52
76
  let data = '';
53
77
  await new Promise((resolve) => {
54
78
  readResponse.content.on('data', (chunk) => {
@@ -59,8 +83,8 @@ describe('NodeFsFileStorage Tests', () => {
59
83
  });
60
84
  });
61
85
  expect(Buffer.from(data).toString()).toStrictEqual(`${fileContent}${secondFileContent}`);
62
- const deleted = await effect_1.Effect.runPromise(effect_1.Effect.either(fileStorage.delete(file.reference.key)));
63
- expect(deleted).toEqual(effect_1.Either.right(undefined));
86
+ const deleted = await fileStorage.delete(file.reference.key)();
87
+ expect(deleted).toEqual(E.right(undefined));
64
88
  });
65
89
  it('should create, read and remove a folder', async () => {
66
90
  const fileContent = 'This is the initial text.';
@@ -72,8 +96,8 @@ describe('NodeFsFileStorage Tests', () => {
72
96
  });
73
97
  const folderName = `folder`;
74
98
  const fileName = `test-${(0, uuid_1.v4)()}.txt`;
75
- const createdFolderResult = await effect_1.Effect.runPromise(effect_1.Effect.either(fileStorage.createDirectory(folderName)));
76
- expect(createdFolderResult).toEqual(effect_1.Either.right(undefined));
99
+ const createdFolderResult = await fileStorage.createDirectory(folderName)();
100
+ expect(createdFolderResult).toEqual(E.right(undefined));
77
101
  const file = {
78
102
  reference: {
79
103
  _tag: 'FileDescriptor',
@@ -82,16 +106,16 @@ describe('NodeFsFileStorage Tests', () => {
82
106
  },
83
107
  content: readableStream,
84
108
  };
85
- const writtenFile = await effect_1.Effect.runPromise(effect_1.Effect.either(fileStorage.write(file, effect_1.Option.none())));
86
- expect(writtenFile).toEqual(effect_1.Either.right(file));
87
- const readFolderResult = await effect_1.Effect.runPromise(effect_1.Effect.either(fileStorage.readDirectory(folderName)));
88
- const contents = effect_1.Either.getOrElse(readFolderResult, () => {
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(() => {
89
113
  throw new Error('Expected right');
90
- });
114
+ })(readFolderResult);
91
115
  expect(contents.length).toEqual(1);
92
- const deleteFolderResult = await effect_1.Effect.runPromise(effect_1.Effect.either(fileStorage.deleteDirectory(folderName)));
93
- expect(deleteFolderResult).toEqual(effect_1.Either.right(undefined));
94
- const readFolderResult2 = await effect_1.Effect.runPromise(effect_1.Effect.either(fileStorage.readDirectory(folderName)));
95
- expect(readFolderResult2).toEqual(effect_1.Either.left(new Error("Error: ENOENT: no such file or directory, scandir '/tmp/folder'")));
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'")));
96
120
  });
97
121
  });
@@ -15,46 +15,35 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
35
25
  Object.defineProperty(exports, "__esModule", { value: true });
36
26
  exports.NodeFsFileStorage = void 0;
37
27
  const fs = __importStar(require("fs/promises"));
38
28
  const path = __importStar(require("path"));
39
- const effect_1 = require("effect");
40
- const EffectExtensions_1 = require("../effect/EffectExtensions");
41
- const attempt = (block) => effect_1.Effect.tryPromise({
42
- try: block,
43
- catch: (reason) => new Error(String(reason)),
44
- });
29
+ const TE = __importStar(require("fp-ts/lib/TaskEither"));
30
+ const function_1 = require("fp-ts/lib/function");
31
+ const O = __importStar(require("fp-ts/Option"));
32
+ const Task_1 = require("../task/Task");
45
33
  class NodeFsFileStorage {
46
34
  basePath;
47
35
  constructor(basePath = '/tmp') {
48
36
  this.basePath = basePath;
49
37
  }
50
- write(file, writeOptions = effect_1.Option.none()) {
38
+ write(file, writeOptions = O.none) {
51
39
  const filePath = `${this.basePath}/${file.reference.key}`;
52
- const uploadOptions = effect_1.Option.getOrNull(writeOptions);
53
- return effect_1.Effect.map(EffectExtensions_1.EffectExtensions.tryPromiseWithSimpleError(() => fs.writeFile(filePath, file.content, uploadOptions?.flag ? { flag: uploadOptions.flag } : {})), () => file);
40
+ const uploadOptions = O.toNullable(writeOptions);
41
+ const result = (0, Task_1.createTaskEitherFromPromiseWithSimpleError)(() => fs.writeFile(filePath, file.content, uploadOptions?.flag ? { flag: uploadOptions.flag } : {}));
42
+ return (0, function_1.pipe)(result, TE.map(() => file));
54
43
  }
55
44
  read(key) {
56
45
  const filePath = `${this.basePath}/${key}`;
57
- return attempt(async () => {
46
+ return TE.tryCatch(async () => {
58
47
  const fileHandle = await fs.open(filePath, 'r');
59
48
  const stat = await fs.stat(filePath);
60
49
  const stream = fileHandle.createReadStream();
@@ -68,39 +57,42 @@ class NodeFsFileStorage {
68
57
  metadata,
69
58
  };
70
59
  return { reference: fileReference, content: stream };
71
- });
60
+ }, (reason) => new Error(String(reason)));
72
61
  }
73
62
  getSharedUrl(key) {
74
63
  const filePath = `${this.basePath}/${key}`;
75
- return attempt(async () => ({
64
+ return TE.tryCatch(async () => ({
76
65
  url: path.resolve(filePath),
77
- }));
66
+ }), (reason) => new Error(String(reason)));
78
67
  }
79
68
  getSize(key) {
80
69
  const filePath = `${this.basePath}/${key}`;
81
- return attempt(async () => {
70
+ return TE.tryCatch(async () => {
82
71
  const stat = await fs.stat(filePath);
83
72
  return stat.size;
84
- });
73
+ }, (reason) => new Error(String(reason)));
85
74
  }
86
75
  delete(key) {
87
76
  const filePath = `${this.basePath}/${key}`;
88
- return effect_1.Effect.map(EffectExtensions_1.EffectExtensions.tryPromiseWithSimpleError(() => fs.unlink(filePath)), () => undefined);
77
+ const result = (0, Task_1.createTaskEitherFromPromiseWithSimpleError)(() => fs.unlink(filePath));
78
+ return (0, function_1.pipe)(result, TE.map(() => undefined));
89
79
  }
90
80
  createDirectory(key) {
91
81
  const dirPath = `${this.basePath}/${key}`;
92
- return effect_1.Effect.map(EffectExtensions_1.EffectExtensions.tryPromiseWithSimpleError(() => fs.mkdir(dirPath, { recursive: true })), () => undefined);
82
+ const result = (0, Task_1.createTaskEitherFromPromiseWithSimpleError)(() => fs.mkdir(dirPath, { recursive: true }));
83
+ return (0, function_1.pipe)(result, TE.map(() => undefined));
93
84
  }
94
85
  readDirectory(key) {
95
86
  const dirPath = `${this.basePath}/${key}`;
96
- return attempt(async () => {
87
+ return TE.tryCatch(async () => {
97
88
  const files = await fs.readdir(dirPath, { withFileTypes: true });
98
89
  return files;
99
- });
90
+ }, (reason) => new Error(String(reason)));
100
91
  }
101
92
  deleteDirectory(key) {
102
93
  const dirPath = `${this.basePath}/${key}`;
103
- return effect_1.Effect.map(EffectExtensions_1.EffectExtensions.tryPromiseWithSimpleError(() => fs.rm(dirPath, { recursive: true, force: true })), () => undefined);
94
+ const result = (0, Task_1.createTaskEitherFromPromiseWithSimpleError)(() => fs.rm(dirPath, { recursive: true, force: true }));
95
+ return (0, function_1.pipe)(result, TE.map(() => undefined));
104
96
  }
105
97
  }
106
98
  exports.NodeFsFileStorage = NodeFsFileStorage;