@flystorage/file-storage 0.1.1 → 0.1.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/README.md CHANGED
@@ -41,7 +41,7 @@ to, simply because they cannot be abstracted over in a reasonable manner.
41
41
  ### Implemented
42
42
  - [x] [Local Filesystem](https://www.npmjs.com/package/@flystorage/local-fs)
43
43
  - [x] [AWS S3 (using the V3 SDK)](https://www.npmjs.com/package/@flystorage/aws-s3)
44
- - [x] [Azure Blob Storage](https://www.npmjs.com/package/@flystorage/file-storage)
44
+ - [x] [Azure Blob Storage](https://www.npmjs.com/package/@flystorage/azure-storage-blob)
45
45
  - [x] [Test implementation (in-memory)](https://www.npmjs.com/package/@flystorage/in-memory)
46
46
  - [x] [Google Cloud Storage](https://www.npmjs.com/package/@flystorage/google-cloud-storage)
47
47
  - [x] [Chaos adapter decorator](https://www.npmjs.com/package/@flystorage/chaos)
@@ -75,7 +75,7 @@ import {LocalStorageAdapter} from '@flystorage/local-fs';
75
75
  **/
76
76
 
77
77
  const rootDirectory = resolve(process.cwd(), 'my-files');
78
- const storage = new FileStorage(new LocalFileStorage(rootDirectory));
78
+ const storage = new FileStorage(new LocalStorageAdapter(rootDirectory));
79
79
 
80
80
  /**
81
81
  * USAGE
@@ -1,10 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checksumFromStream = void 0;
4
- const crypto_1 = require("crypto");
5
- async function checksumFromStream(stream, options) {
1
+ import { createHash } from 'crypto';
2
+ export async function checksumFromStream(stream, options) {
6
3
  return new Promise(async (resolve, reject) => {
7
- const hash = (0, crypto_1.createHash)(options.algo ?? 'md5');
4
+ const hash = createHash(options.algo ?? 'md5');
8
5
  stream.on('error', reject);
9
6
  stream.pipe(hash, { end: false });
10
7
  stream.on('end', () => {
@@ -13,4 +10,3 @@ async function checksumFromStream(stream, options) {
13
10
  });
14
11
  });
15
12
  }
16
- exports.checksumFromStream = checksumFromStream;
@@ -1,11 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UnableToListDirectory = exports.UnableToCheckDirectoryExistence = exports.UnableToCheckFileExistence = exports.UnableToDeleteFile = exports.UnableToDeleteDirectory = exports.UnableToCreateDirectory = exports.UnableToGetStat = exports.UnableToMoveFile = exports.UnableToCopyFile = exports.UnableToGetTemporaryUrl = exports.UnableToGetPublicUrl = exports.UnableToGetVisibility = exports.UnableToSetVisibility = exports.UnableToReadFile = exports.UnableToWriteFile = exports.UnableToGetFileSize = exports.UnableToGetLastModified = exports.UnableToGetMimeType = exports.UnableToGetChecksum = exports.ChecksumIsNotAvailable = exports.FlystorageError = exports.errorToMessage = void 0;
4
- function errorToMessage(error) {
1
+ export function errorToMessage(error) {
5
2
  return error instanceof Error ? error.message : String(error);
6
3
  }
7
- exports.errorToMessage = errorToMessage;
8
- class FlystorageError extends Error {
4
+ export class FlystorageError extends Error {
9
5
  context;
10
6
  code = 'unknown_error';
11
7
  constructor(message, context = {}, cause = undefined) {
@@ -15,12 +11,11 @@ class FlystorageError extends Error {
15
11
  this.context = context;
16
12
  }
17
13
  }
18
- exports.FlystorageError = FlystorageError;
19
14
  /**
20
15
  * Thrown when the checksum algo is not supported or not pre-computed. This error
21
16
  * is thrown with the intention of falling back to computing it based on a file read.
22
17
  */
23
- class ChecksumIsNotAvailable extends FlystorageError {
18
+ export class ChecksumIsNotAvailable extends FlystorageError {
24
19
  algo;
25
20
  code = 'flystorage.checksum_not_supported';
26
21
  constructor(message, algo, context = {}, cause = undefined) {
@@ -29,100 +24,80 @@ class ChecksumIsNotAvailable extends FlystorageError {
29
24
  }
30
25
  static checksumNotSupported = (algo, { context = {}, cause = undefined } = {}) => new ChecksumIsNotAvailable(`Checksum algo "${algo}" is not supported`, algo, { ...context, algo }, cause);
31
26
  }
32
- exports.ChecksumIsNotAvailable = ChecksumIsNotAvailable;
33
- class UnableToGetChecksum extends FlystorageError {
27
+ export class UnableToGetChecksum extends FlystorageError {
34
28
  code = 'flystorage.unable_to_get_checksum';
35
29
  static because = (reason, { context = {}, cause = undefined }) => new UnableToGetChecksum(`Unable to write the file. Reason: ${reason}`, context, cause);
36
30
  }
37
- exports.UnableToGetChecksum = UnableToGetChecksum;
38
- class UnableToGetMimeType extends FlystorageError {
31
+ export class UnableToGetMimeType extends FlystorageError {
39
32
  code = 'flystorage.unable_to_get_mimetype';
40
33
  static because = (reason, { context = {}, cause = undefined }) => new UnableToGetMimeType(`Unable to get mime-type. Reason: ${reason}`, context, cause);
41
34
  }
42
- exports.UnableToGetMimeType = UnableToGetMimeType;
43
- class UnableToGetLastModified extends FlystorageError {
35
+ export class UnableToGetLastModified extends FlystorageError {
44
36
  code = 'flystorage.unable_to_get_last_modified';
45
37
  static because = (reason, { context = {}, cause = undefined }) => new UnableToGetLastModified(`Unable to get last modified. Reason: ${reason}`, context, cause);
46
38
  }
47
- exports.UnableToGetLastModified = UnableToGetLastModified;
48
- class UnableToGetFileSize extends FlystorageError {
39
+ export class UnableToGetFileSize extends FlystorageError {
49
40
  code = 'flystorage.unable_to_get_file_size';
50
41
  static because = (reason, { context = {}, cause = undefined }) => new UnableToGetFileSize(`Unable to get file size. Reason: ${reason}`, context, cause);
51
42
  }
52
- exports.UnableToGetFileSize = UnableToGetFileSize;
53
- class UnableToWriteFile extends FlystorageError {
43
+ export class UnableToWriteFile extends FlystorageError {
54
44
  code = 'flystorage.unable_to_write_file';
55
45
  static because = (reason, { context = {}, cause = undefined }) => new UnableToWriteFile(`Unable to write the file. Reason: ${reason}`, context, cause);
56
46
  }
57
- exports.UnableToWriteFile = UnableToWriteFile;
58
- class UnableToReadFile extends FlystorageError {
47
+ export class UnableToReadFile extends FlystorageError {
59
48
  code = 'flystorage.unable_to_read_file';
60
49
  static because = (reason, { context = {}, cause = undefined }) => new UnableToReadFile(`Unable to read the file. Reason: ${reason}`, context, cause);
61
50
  }
62
- exports.UnableToReadFile = UnableToReadFile;
63
- class UnableToSetVisibility extends FlystorageError {
51
+ export class UnableToSetVisibility extends FlystorageError {
64
52
  code = 'flystorage.unable_to_set_visibility';
65
53
  static because = (reason, { context = {}, cause = undefined }) => new UnableToSetVisibility(`Unable to set visibility. Reason: ${reason}`, context, cause);
66
54
  }
67
- exports.UnableToSetVisibility = UnableToSetVisibility;
68
- class UnableToGetVisibility extends FlystorageError {
55
+ export class UnableToGetVisibility extends FlystorageError {
69
56
  code = 'flystorage.unable_to_get_visibility';
70
57
  static because = (reason, { context = {}, cause = undefined }) => new UnableToGetVisibility(`Unable to get visibility. Reason: ${reason}`, context, cause);
71
58
  }
72
- exports.UnableToGetVisibility = UnableToGetVisibility;
73
- class UnableToGetPublicUrl extends FlystorageError {
59
+ export class UnableToGetPublicUrl extends FlystorageError {
74
60
  code = 'flystorage.unable_to_get_public_url';
75
61
  static because = (reason, { context = {}, cause = undefined }) => new UnableToGetPublicUrl(`Unable to get public URL. Reason: ${reason}`, context, cause);
76
62
  }
77
- exports.UnableToGetPublicUrl = UnableToGetPublicUrl;
78
- class UnableToGetTemporaryUrl extends FlystorageError {
63
+ export class UnableToGetTemporaryUrl extends FlystorageError {
79
64
  code = 'flystorage.unable_to_get_temporary_url';
80
65
  static because = (reason, { context = {}, cause = undefined }) => new UnableToGetTemporaryUrl(`Unable to get temporary URL. Reason: ${reason}`, context, cause);
81
66
  }
82
- exports.UnableToGetTemporaryUrl = UnableToGetTemporaryUrl;
83
- class UnableToCopyFile extends FlystorageError {
67
+ export class UnableToCopyFile extends FlystorageError {
84
68
  code = 'flystorage.unable_to_copy_file';
85
69
  static because = (reason, { context = {}, cause = undefined }) => new UnableToCopyFile(`Unable to copy file. Reason: ${reason}`, context, cause);
86
70
  }
87
- exports.UnableToCopyFile = UnableToCopyFile;
88
- class UnableToMoveFile extends FlystorageError {
71
+ export class UnableToMoveFile extends FlystorageError {
89
72
  code = 'flystorage.unable_to_move_file';
90
73
  static because = (reason, { context = {}, cause = undefined }) => new UnableToMoveFile(`Unable to move file. Reason: ${reason}`, context, cause);
91
74
  }
92
- exports.UnableToMoveFile = UnableToMoveFile;
93
- class UnableToGetStat extends FlystorageError {
75
+ export class UnableToGetStat extends FlystorageError {
94
76
  code = 'flystorage.unable_to_get_stat';
95
77
  static because = (reason, { context = {}, cause = undefined }) => new UnableToGetStat(`Unable to get stat. Reason: ${reason}`, context, cause);
96
78
  static noFileStatResolved = ({ context = {}, cause = undefined }) => new UnableToGetStat(`Stat was not a file.`, context, cause);
97
79
  }
98
- exports.UnableToGetStat = UnableToGetStat;
99
- class UnableToCreateDirectory extends FlystorageError {
80
+ export class UnableToCreateDirectory extends FlystorageError {
100
81
  code = 'flystorage.unable_to_create_directory';
101
82
  static because = (reason, { context = {}, cause = undefined }) => new UnableToCreateDirectory(`Unable to create directory. Reason: ${reason}`, context, cause);
102
83
  }
103
- exports.UnableToCreateDirectory = UnableToCreateDirectory;
104
- class UnableToDeleteDirectory extends FlystorageError {
84
+ export class UnableToDeleteDirectory extends FlystorageError {
105
85
  code = 'flystorage.unable_to_delete_directory';
106
86
  static because = (reason, { context = {}, cause = undefined }) => new UnableToDeleteDirectory(`Unable to delete directory. Reason: ${reason}`, context, cause);
107
87
  }
108
- exports.UnableToDeleteDirectory = UnableToDeleteDirectory;
109
- class UnableToDeleteFile extends FlystorageError {
88
+ export class UnableToDeleteFile extends FlystorageError {
110
89
  code = 'flystorage.unable_to_delete_file';
111
90
  static because = (reason, { context = {}, cause = undefined }) => new UnableToDeleteFile(`Unable to delete file. Reason: ${reason}`, context, cause);
112
91
  }
113
- exports.UnableToDeleteFile = UnableToDeleteFile;
114
- class UnableToCheckFileExistence extends FlystorageError {
92
+ export class UnableToCheckFileExistence extends FlystorageError {
115
93
  code = 'flystorage.unable_to_check_file_existence';
116
94
  static because = (reason, { context = {}, cause = undefined }) => new UnableToCheckFileExistence(`Unable to check file existence. Reason: ${reason}`, context, cause);
117
95
  }
118
- exports.UnableToCheckFileExistence = UnableToCheckFileExistence;
119
- class UnableToCheckDirectoryExistence extends FlystorageError {
96
+ export class UnableToCheckDirectoryExistence extends FlystorageError {
120
97
  code = 'flystorage.unable_to_check_directory_existence';
121
98
  static because = (reason, { context = {}, cause = undefined }) => new UnableToCheckDirectoryExistence(`Unable to check directory existence. Reason: ${reason}`, context, cause);
122
99
  }
123
- exports.UnableToCheckDirectoryExistence = UnableToCheckDirectoryExistence;
124
- class UnableToListDirectory extends FlystorageError {
100
+ export class UnableToListDirectory extends FlystorageError {
125
101
  code = 'flystorage.unable_to_list_directory_contents';
126
102
  static because = (reason, { context = {}, cause = undefined }) => new UnableToListDirectory(`Unable to list directory contents. Reason: ${reason}`, context, cause);
127
103
  }
128
- exports.UnableToListDirectory = UnableToListDirectory;
@@ -1,21 +1,16 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.readableToUint8Array = exports.readableToString = exports.closeReadable = exports.normalizeExpiryToMilliseconds = exports.normalizeExpiryToDate = exports.FileStorage = exports.toReadable = exports.DirectoryListing = exports.isDirectory = exports.isFile = void 0;
4
- const stream_1 = require("stream");
5
- const checksum_from_stream_js_1 = require("./checksum-from-stream.js");
6
- const errors = require("./errors.js");
7
- const errors_js_1 = require("./errors.js");
8
- const path_normalizer_js_1 = require("./path-normalizer.js");
9
- const util_1 = require("util");
10
- function isFile(stat) {
1
+ import { Readable } from 'stream';
2
+ import { checksumFromStream } from './checksum-from-stream.js';
3
+ import * as errors from './errors.js';
4
+ import { ChecksumIsNotAvailable } from './errors.js';
5
+ import { PathNormalizerV1 } from './path-normalizer.js';
6
+ import { TextEncoder } from "util";
7
+ export function isFile(stat) {
11
8
  return stat.isFile;
12
9
  }
13
- exports.isFile = isFile;
14
- function isDirectory(stat) {
10
+ export function isDirectory(stat) {
15
11
  return stat.isDirectory;
16
12
  }
17
- exports.isDirectory = isDirectory;
18
- class DirectoryListing {
13
+ export class DirectoryListing {
19
14
  listing;
20
15
  path;
21
16
  deep;
@@ -53,23 +48,21 @@ class DirectoryListing {
53
48
  }
54
49
  }
55
50
  }
56
- exports.DirectoryListing = DirectoryListing;
57
- function toReadable(contents) {
58
- if (contents instanceof stream_1.Readable) {
51
+ export function toReadable(contents) {
52
+ if (contents instanceof Readable) {
59
53
  return contents;
60
54
  }
61
- return stream_1.Readable.from(contents);
55
+ return Readable.from(contents);
62
56
  }
63
- exports.toReadable = toReadable;
64
57
  const naturalSorting = new Intl.Collator(undefined, {
65
58
  numeric: true,
66
59
  sensitivity: 'base'
67
60
  });
68
- class FileStorage {
61
+ export class FileStorage {
69
62
  adapter;
70
63
  pathNormalizer;
71
64
  options;
72
- constructor(adapter, pathNormalizer = new path_normalizer_js_1.PathNormalizerV1(), options = {}) {
65
+ constructor(adapter, pathNormalizer = new PathNormalizerV1(), options = {}) {
73
66
  this.adapter = adapter;
74
67
  this.pathNormalizer = pathNormalizer;
75
68
  this.options = options;
@@ -86,7 +79,7 @@ class FileStorage {
86
79
  }
87
80
  async read(path) {
88
81
  try {
89
- return stream_1.Readable.from(await this.adapter.read(this.pathNormalizer.normalizePath(path)));
82
+ return Readable.from(await this.adapter.read(this.pathNormalizer.normalizePath(path)));
90
83
  }
91
84
  catch (error) {
92
85
  throw errors.UnableToReadFile.because(errors.errorToMessage(error), { cause: error, context: { path } });
@@ -218,7 +211,7 @@ class FileStorage {
218
211
  return await this.adapter.checksum(this.pathNormalizer.normalizePath(path), { ...this.options.checksums, ...options });
219
212
  }
220
213
  catch (error) {
221
- if (error instanceof errors_js_1.ChecksumIsNotAvailable) {
214
+ if (error instanceof ChecksumIsNotAvailable) {
222
215
  return this.calculateChecksum(path, options);
223
216
  }
224
217
  throw errors.UnableToGetChecksum.because(errors.errorToMessage(error), { cause: error, context: { path, options } });
@@ -250,23 +243,20 @@ class FileStorage {
250
243
  }
251
244
  async calculateChecksum(path, options) {
252
245
  try {
253
- return await (0, checksum_from_stream_js_1.checksumFromStream)(await this.read(path), options);
246
+ return await checksumFromStream(await this.read(path), options);
254
247
  }
255
248
  catch (error) {
256
249
  throw errors.UnableToGetChecksum.because(errors.errorToMessage(error), { cause: error, context: { path, options } });
257
250
  }
258
251
  }
259
252
  }
260
- exports.FileStorage = FileStorage;
261
- function normalizeExpiryToDate(expiresAt) {
253
+ export function normalizeExpiryToDate(expiresAt) {
262
254
  return expiresAt instanceof Date ? expiresAt : new Date(expiresAt);
263
255
  }
264
- exports.normalizeExpiryToDate = normalizeExpiryToDate;
265
- function normalizeExpiryToMilliseconds(expiresAt) {
256
+ export function normalizeExpiryToMilliseconds(expiresAt) {
266
257
  return expiresAt instanceof Date ? expiresAt.getTime() : expiresAt;
267
258
  }
268
- exports.normalizeExpiryToMilliseconds = normalizeExpiryToMilliseconds;
269
- async function closeReadable(body) {
259
+ export async function closeReadable(body) {
270
260
  if (body.closed) {
271
261
  return;
272
262
  }
@@ -277,16 +267,14 @@ async function closeReadable(body) {
277
267
  body.destroy();
278
268
  });
279
269
  }
280
- exports.closeReadable = closeReadable;
281
270
  const decoder = new TextDecoder();
282
- async function readableToString(stream) {
271
+ export async function readableToString(stream) {
283
272
  const contents = decoder.decode(await readableToUint8Array(stream));
284
273
  await closeReadable(stream);
285
274
  return contents;
286
275
  }
287
- exports.readableToString = readableToString;
288
- const encoder = new util_1.TextEncoder();
289
- function readableToUint8Array(stream) {
276
+ const encoder = new TextEncoder();
277
+ export function readableToUint8Array(stream) {
290
278
  return new Promise((resolve, reject) => {
291
279
  const parts = [];
292
280
  stream.on('data', (chunk) => {
@@ -303,7 +291,6 @@ function readableToUint8Array(stream) {
303
291
  stream.on('end', () => resolve(concatUint8Arrays(parts)));
304
292
  });
305
293
  }
306
- exports.readableToUint8Array = readableToUint8Array;
307
294
  function concatUint8Arrays(input) {
308
295
  const length = input.reduce((l, a) => l + (a.byteLength), 0);
309
296
  const output = new Uint8Array(length);
package/dist/cjs/index.js CHANGED
@@ -1,22 +1,6 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./checksum-from-stream.js"), exports);
18
- __exportStar(require("./file-storage.js"), exports);
19
- __exportStar(require("./errors.js"), exports);
20
- __exportStar(require("./path-normalizer.js"), exports);
21
- __exportStar(require("./path-prefixer.js"), exports);
22
- __exportStar(require("./portable-visibility.js"), exports);
1
+ export * from './checksum-from-stream.js';
2
+ export * from './file-storage.js';
3
+ export * from './errors.js';
4
+ export * from './path-normalizer.js';
5
+ export * from './path-prefixer.js';
6
+ export * from './portable-visibility.js';
@@ -1,26 +1,20 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PathTraversalDetected = exports.CorruptedPathDetected = exports.PathNormalizerV1 = void 0;
4
- const node_path_1 = require("node:path");
1
+ import { join } from 'node:path';
5
2
  const funkyWhiteSpaceRegex = new RegExp('\\p{C}+', 'u');
6
- class PathNormalizerV1 {
3
+ export class PathNormalizerV1 {
7
4
  normalizePath(path) {
8
5
  if (funkyWhiteSpaceRegex.test(path)) {
9
6
  throw CorruptedPathDetected.unexpectedWhitespace(path);
10
7
  }
11
- const normalized = (0, node_path_1.join)(...(path.split('/')));
8
+ const normalized = join(...(path.split('/')));
12
9
  if (normalized.indexOf('../') !== -1 || normalized == '..') {
13
10
  throw PathTraversalDetected.forPath(path);
14
11
  }
15
12
  return normalized === '.' ? '' : normalized;
16
13
  }
17
14
  }
18
- exports.PathNormalizerV1 = PathNormalizerV1;
19
- class CorruptedPathDetected extends Error {
15
+ export class CorruptedPathDetected extends Error {
20
16
  static unexpectedWhitespace = (path) => new CorruptedPathDetected(`Corrupted path detected with unexpected whitespace: ${path}`);
21
17
  }
22
- exports.CorruptedPathDetected = CorruptedPathDetected;
23
- class PathTraversalDetected extends Error {
18
+ export class PathTraversalDetected extends Error {
24
19
  static forPath = (path) => new PathTraversalDetected(`Path traversal detected for: ${path}`);
25
20
  }
26
- exports.PathTraversalDetected = PathTraversalDetected;
@@ -1,12 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PathPrefixer = void 0;
4
- const node_path_1 = require("node:path");
5
- class PathPrefixer {
1
+ import { join } from 'node:path';
2
+ export class PathPrefixer {
6
3
  separator;
7
4
  joinFunc;
8
5
  prefix = '';
9
- constructor(prefix = '', separator = '/', joinFunc = node_path_1.join) {
6
+ constructor(prefix = '', separator = '/', joinFunc = join) {
10
7
  this.separator = separator;
11
8
  this.joinFunc = joinFunc;
12
9
  if (prefix.length > 0) {
@@ -26,4 +23,3 @@ class PathPrefixer {
26
23
  return this.stripFilePath(path).replace(/\/+$/g, '');
27
24
  }
28
25
  }
29
- exports.PathPrefixer = PathPrefixer;
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Visibility = void 0;
4
- var Visibility;
1
+ export var Visibility;
5
2
  (function (Visibility) {
6
3
  Visibility["PUBLIC"] = "public";
7
4
  Visibility["PRIVATE"] = "private";
8
- })(Visibility || (exports.Visibility = Visibility = {}));
5
+ })(Visibility || (Visibility = {}));
@@ -20,144 +20,144 @@ export declare class ChecksumIsNotAvailable extends FlystorageError {
20
20
  readonly code = "flystorage.checksum_not_supported";
21
21
  constructor(message: string, algo: string, context?: ErrorContext, cause?: unknown);
22
22
  static checksumNotSupported: (algo: string, { context, cause }?: {
23
- context?: ErrorContext | undefined;
23
+ context?: ErrorContext;
24
24
  cause?: unknown;
25
25
  }) => ChecksumIsNotAvailable;
26
26
  }
27
27
  export declare class UnableToGetChecksum extends FlystorageError {
28
28
  readonly code = "flystorage.unable_to_get_checksum";
29
29
  static because: (reason: string, { context, cause }: {
30
- context?: ErrorContext | undefined;
30
+ context?: ErrorContext;
31
31
  cause?: unknown;
32
32
  }) => UnableToGetChecksum;
33
33
  }
34
34
  export declare class UnableToGetMimeType extends FlystorageError {
35
35
  readonly code = "flystorage.unable_to_get_mimetype";
36
36
  static because: (reason: string, { context, cause }: {
37
- context?: ErrorContext | undefined;
37
+ context?: ErrorContext;
38
38
  cause?: unknown;
39
39
  }) => UnableToGetMimeType;
40
40
  }
41
41
  export declare class UnableToGetLastModified extends FlystorageError {
42
42
  readonly code = "flystorage.unable_to_get_last_modified";
43
43
  static because: (reason: string, { context, cause }: {
44
- context?: ErrorContext | undefined;
44
+ context?: ErrorContext;
45
45
  cause?: unknown;
46
46
  }) => UnableToGetLastModified;
47
47
  }
48
48
  export declare class UnableToGetFileSize extends FlystorageError {
49
49
  readonly code = "flystorage.unable_to_get_file_size";
50
50
  static because: (reason: string, { context, cause }: {
51
- context?: ErrorContext | undefined;
51
+ context?: ErrorContext;
52
52
  cause?: unknown;
53
53
  }) => UnableToGetFileSize;
54
54
  }
55
55
  export declare class UnableToWriteFile extends FlystorageError {
56
56
  readonly code = "flystorage.unable_to_write_file";
57
57
  static because: (reason: string, { context, cause }: {
58
- context?: ErrorContext | undefined;
58
+ context?: ErrorContext;
59
59
  cause?: unknown;
60
60
  }) => UnableToWriteFile;
61
61
  }
62
62
  export declare class UnableToReadFile extends FlystorageError {
63
63
  readonly code = "flystorage.unable_to_read_file";
64
64
  static because: (reason: string, { context, cause }: {
65
- context?: ErrorContext | undefined;
65
+ context?: ErrorContext;
66
66
  cause?: unknown;
67
67
  }) => UnableToReadFile;
68
68
  }
69
69
  export declare class UnableToSetVisibility extends FlystorageError {
70
70
  readonly code = "flystorage.unable_to_set_visibility";
71
71
  static because: (reason: string, { context, cause }: {
72
- context?: ErrorContext | undefined;
72
+ context?: ErrorContext;
73
73
  cause?: unknown;
74
74
  }) => UnableToSetVisibility;
75
75
  }
76
76
  export declare class UnableToGetVisibility extends FlystorageError {
77
77
  readonly code = "flystorage.unable_to_get_visibility";
78
78
  static because: (reason: string, { context, cause }: {
79
- context?: ErrorContext | undefined;
79
+ context?: ErrorContext;
80
80
  cause?: unknown;
81
81
  }) => UnableToGetVisibility;
82
82
  }
83
83
  export declare class UnableToGetPublicUrl extends FlystorageError {
84
84
  readonly code = "flystorage.unable_to_get_public_url";
85
85
  static because: (reason: string, { context, cause }: {
86
- context?: ErrorContext | undefined;
86
+ context?: ErrorContext;
87
87
  cause?: unknown;
88
88
  }) => UnableToGetPublicUrl;
89
89
  }
90
90
  export declare class UnableToGetTemporaryUrl extends FlystorageError {
91
91
  readonly code = "flystorage.unable_to_get_temporary_url";
92
92
  static because: (reason: string, { context, cause }: {
93
- context?: ErrorContext | undefined;
93
+ context?: ErrorContext;
94
94
  cause?: unknown;
95
95
  }) => UnableToGetTemporaryUrl;
96
96
  }
97
97
  export declare class UnableToCopyFile extends FlystorageError {
98
98
  readonly code = "flystorage.unable_to_copy_file";
99
99
  static because: (reason: string, { context, cause }: {
100
- context?: ErrorContext | undefined;
100
+ context?: ErrorContext;
101
101
  cause?: unknown;
102
102
  }) => UnableToCopyFile;
103
103
  }
104
104
  export declare class UnableToMoveFile extends FlystorageError {
105
105
  readonly code = "flystorage.unable_to_move_file";
106
106
  static because: (reason: string, { context, cause }: {
107
- context?: ErrorContext | undefined;
107
+ context?: ErrorContext;
108
108
  cause?: unknown;
109
109
  }) => UnableToMoveFile;
110
110
  }
111
111
  export declare class UnableToGetStat extends FlystorageError {
112
112
  readonly code = "flystorage.unable_to_get_stat";
113
113
  static because: (reason: string, { context, cause }: {
114
- context?: ErrorContext | undefined;
114
+ context?: ErrorContext;
115
115
  cause?: unknown;
116
116
  }) => UnableToGetStat;
117
117
  static noFileStatResolved: ({ context, cause }: {
118
- context?: ErrorContext | undefined;
118
+ context?: ErrorContext;
119
119
  cause?: unknown;
120
120
  }) => UnableToGetStat;
121
121
  }
122
122
  export declare class UnableToCreateDirectory extends FlystorageError {
123
123
  readonly code = "flystorage.unable_to_create_directory";
124
124
  static because: (reason: string, { context, cause }: {
125
- context?: ErrorContext | undefined;
125
+ context?: ErrorContext;
126
126
  cause?: unknown;
127
127
  }) => UnableToCreateDirectory;
128
128
  }
129
129
  export declare class UnableToDeleteDirectory extends FlystorageError {
130
130
  readonly code = "flystorage.unable_to_delete_directory";
131
131
  static because: (reason: string, { context, cause }: {
132
- context?: ErrorContext | undefined;
132
+ context?: ErrorContext;
133
133
  cause?: unknown;
134
134
  }) => UnableToDeleteDirectory;
135
135
  }
136
136
  export declare class UnableToDeleteFile extends FlystorageError {
137
137
  readonly code = "flystorage.unable_to_delete_file";
138
138
  static because: (reason: string, { context, cause }: {
139
- context?: ErrorContext | undefined;
139
+ context?: ErrorContext;
140
140
  cause?: unknown;
141
141
  }) => UnableToDeleteFile;
142
142
  }
143
143
  export declare class UnableToCheckFileExistence extends FlystorageError {
144
144
  readonly code = "flystorage.unable_to_check_file_existence";
145
145
  static because: (reason: string, { context, cause }: {
146
- context?: ErrorContext | undefined;
146
+ context?: ErrorContext;
147
147
  cause?: unknown;
148
148
  }) => UnableToCheckFileExistence;
149
149
  }
150
150
  export declare class UnableToCheckDirectoryExistence extends FlystorageError {
151
151
  readonly code = "flystorage.unable_to_check_directory_existence";
152
152
  static because: (reason: string, { context, cause }: {
153
- context?: ErrorContext | undefined;
153
+ context?: ErrorContext;
154
154
  cause?: unknown;
155
155
  }) => UnableToCheckDirectoryExistence;
156
156
  }
157
157
  export declare class UnableToListDirectory extends FlystorageError {
158
158
  readonly code = "flystorage.unable_to_list_directory_contents";
159
159
  static because: (reason: string, { context, cause }: {
160
- context?: ErrorContext | undefined;
160
+ context?: ErrorContext;
161
161
  cause?: unknown;
162
162
  }) => UnableToListDirectory;
163
163
  }
@@ -72,6 +72,7 @@ export type VisibilityOptions = {
72
72
  export type WriteOptions = VisibilityOptions & MiscellaneousOptions & {
73
73
  mimeType?: string;
74
74
  size?: number;
75
+ cacheControl?: string;
75
76
  };
76
77
  export type CreateDirectoryOptions = MiscellaneousOptions & Pick<VisibilityOptions, 'directoryVisibility'> & {};
77
78
  export type PublicUrlOptions = MiscellaneousOptions & {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@flystorage/file-storage",
3
3
  "type": "module",
4
- "version": "0.1.1",
4
+ "version": "0.1.3",
5
5
  "description": "File-storage abstraction: multiple filesystems, one API.",
6
6
  "main": "./dist/cjs/index.js",
7
7
  "types": "./dist/types/index.d.ts",
@@ -20,7 +20,7 @@
20
20
  "scripts": {
21
21
  "compile": "rm -rf ./dist/ && concurrently npm:compile:* && echo '{\"type\": \"commonjs\"}' > ./dist/cjs/package.json",
22
22
  "compile:esm": "tsc --outDir ./dist/esm/ --declaration false",
23
- "compile:cjs": "tsc --outDir ./dist/cjs/ --declaration false --module commonjs --moduleResolution node",
23
+ "compile:cjs": "tsc --outDir ./dist/cjs/ --declaration false --module node16 --moduleResolution node16",
24
24
  "compile:types": "tsc --outDir ./dist/types/ --declaration --emitDeclarationOnly",
25
25
  "watch": "tsc --watch"
26
26
  },