@devbro/neko-storage 0.1.3 → 0.1.5
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 +104 -7
- package/dist/Storage.d.mts +14 -13
- package/dist/Storage.mjs +30 -8
- package/dist/Storage.mjs.map +1 -1
- package/dist/StorageProviderFactory.d.mts +15 -0
- package/dist/StorageProviderFactory.mjs +19 -0
- package/dist/StorageProviderFactory.mjs.map +1 -0
- package/dist/StorageProviderInterface.d.mts +18 -0
- package/dist/StorageProviderInterface.mjs +1 -0
- package/dist/StorageProviderInterface.mjs.map +1 -0
- package/dist/index.d.mts +11 -4
- package/dist/index.js +609 -221
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8 -3
- package/dist/index.mjs.map +1 -1
- package/dist/{AWSS3Storage.d.mts → providers/AWSS3StorageProvider.d.mts} +7 -7
- package/dist/providers/AWSS3StorageProvider.mjs +108 -0
- package/dist/providers/AWSS3StorageProvider.mjs.map +1 -0
- package/dist/providers/AzureBlobStorageProvider.d.mts +23 -0
- package/dist/providers/AzureBlobStorageProvider.mjs +116 -0
- package/dist/providers/AzureBlobStorageProvider.mjs.map +1 -0
- package/dist/providers/FTPStorageProvider.d.mts +22 -0
- package/dist/providers/FTPStorageProvider.mjs +124 -0
- package/dist/providers/FTPStorageProvider.mjs.map +1 -0
- package/dist/providers/GCPStorageProvider.d.mts +22 -0
- package/dist/providers/GCPStorageProvider.mjs +82 -0
- package/dist/providers/GCPStorageProvider.mjs.map +1 -0
- package/dist/{LocalStorage.d.mts → providers/LocalStorageProvider.d.mts} +7 -6
- package/dist/providers/LocalStorageProvider.mjs +84 -0
- package/dist/providers/LocalStorageProvider.mjs.map +1 -0
- package/dist/providers/SFTPStorageProvider.d.mts +22 -0
- package/dist/providers/SFTPStorageProvider.mjs +124 -0
- package/dist/providers/SFTPStorageProvider.mjs.map +1 -0
- package/dist/types.d.mts +32 -6
- package/package.json +10 -6
- package/dist/AWSS3Storage.mjs +0 -154
- package/dist/AWSS3Storage.mjs.map +0 -1
- package/dist/LocalStorage.mjs +0 -129
- package/dist/LocalStorage.mjs.map +0 -1
- package/dist/StorageFactory.d.mts +0 -13
- package/dist/StorageFactory.mjs +0 -24
- package/dist/StorageFactory.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -39,22 +39,119 @@ let is_file_deleted = await storage.delete('path/to/file/filename.ext');
|
|
|
39
39
|
|
|
40
40
|
## available drivers
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
### Local Storage
|
|
43
|
+
|
|
44
|
+
Store files on the local file system.
|
|
43
45
|
|
|
44
46
|
```ts
|
|
45
|
-
import {
|
|
47
|
+
import { LocalStorageProvider, Storage } from '@devbro/neko-storage';
|
|
46
48
|
|
|
47
49
|
const basePath = path.resolve(os.tmpdir(), `test-storage-${randomUUID()}`);
|
|
48
|
-
const
|
|
50
|
+
const provider = new LocalStorageProvider({ engine: 'local', basePath });
|
|
51
|
+
const storage = new Storage(provider);
|
|
49
52
|
```
|
|
50
53
|
|
|
51
|
-
AWS S3
|
|
54
|
+
### AWS S3
|
|
55
|
+
|
|
56
|
+
Store files in Amazon S3 buckets.
|
|
52
57
|
|
|
53
58
|
```ts
|
|
54
|
-
import {
|
|
59
|
+
import { AWSS3StorageProvider, Storage } from '@devbro/neko-storage';
|
|
60
|
+
|
|
61
|
+
const provider = new AWSS3StorageProvider({
|
|
62
|
+
engine: 's3',
|
|
63
|
+
bucket: 'your-bucket-name',
|
|
64
|
+
s3Config: {
|
|
65
|
+
region: 'us-east-1',
|
|
66
|
+
credentials: {
|
|
67
|
+
accessKeyId: 'YOUR_ACCESS_KEY',
|
|
68
|
+
secretAccessKey: 'YOUR_SECRET_KEY',
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
const storage = new Storage(provider);
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Google Cloud Storage (GCP)
|
|
76
|
+
|
|
77
|
+
Store files in Google Cloud Storage buckets.
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
import { GCPStorageProvider, Storage } from '@devbro/neko-storage';
|
|
81
|
+
|
|
82
|
+
const provider = new GCPStorageProvider({
|
|
83
|
+
engine: 'gcp',
|
|
84
|
+
bucket: 'your-bucket-name',
|
|
85
|
+
gcpConfig: {
|
|
86
|
+
projectId: 'your-project-id',
|
|
87
|
+
keyFilename: '/path/to/service-account-key.json',
|
|
88
|
+
// Or use credentials object directly
|
|
89
|
+
// credentials: {...}
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
const storage = new Storage(provider);
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Azure Blob Storage
|
|
96
|
+
|
|
97
|
+
Store files in Azure Blob Storage containers.
|
|
55
98
|
|
|
56
|
-
|
|
57
|
-
|
|
99
|
+
```ts
|
|
100
|
+
import { AzureBlobStorageProvider, Storage } from '@devbro/neko-storage';
|
|
101
|
+
|
|
102
|
+
const provider = new AzureBlobStorageProvider({
|
|
103
|
+
engine: 'azure',
|
|
104
|
+
azureConfig: {
|
|
105
|
+
accountName: 'your-storage-account',
|
|
106
|
+
accountKey: 'YOUR_ACCOUNT_KEY', // Or use sasToken instead
|
|
107
|
+
containerName: 'your-container-name',
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
const storage = new Storage(provider);
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### FTP
|
|
114
|
+
|
|
115
|
+
Store files on FTP servers.
|
|
116
|
+
|
|
117
|
+
```ts
|
|
118
|
+
import { FTPStorageProvider, Storage } from '@devbro/neko-storage';
|
|
119
|
+
|
|
120
|
+
const provider = new FTPStorageProvider({
|
|
121
|
+
engine: 'ftp',
|
|
122
|
+
basePath: '/remote/path',
|
|
123
|
+
ftpConfig: {
|
|
124
|
+
host: 'ftp.example.com',
|
|
125
|
+
port: 21,
|
|
126
|
+
user: 'username',
|
|
127
|
+
password: 'password',
|
|
128
|
+
secure: false, // Set to true for FTPS
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
const storage = new Storage(provider);
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### SFTP
|
|
135
|
+
|
|
136
|
+
Store files on SFTP servers via SSH.
|
|
137
|
+
|
|
138
|
+
```ts
|
|
139
|
+
import { SFTPStorageProvider, Storage } from '@devbro/neko-storage';
|
|
140
|
+
|
|
141
|
+
const provider = new SFTPStorageProvider({
|
|
142
|
+
engine: 'sftp',
|
|
143
|
+
basePath: '/remote/path',
|
|
144
|
+
sftpConfig: {
|
|
145
|
+
host: 'sftp.example.com',
|
|
146
|
+
port: 22,
|
|
147
|
+
username: 'username',
|
|
148
|
+
password: 'password',
|
|
149
|
+
// Or use private key authentication
|
|
150
|
+
// privateKey: fs.readFileSync('/path/to/private-key'),
|
|
151
|
+
// passphrase: 'key-passphrase',
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
const storage = new Storage(provider);
|
|
58
155
|
```
|
|
59
156
|
|
|
60
157
|
More driver available upon request or through PR.
|
package/dist/Storage.d.mts
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import { ReadStream } from 'fs';
|
|
2
2
|
import { Stream } from 'stream';
|
|
3
|
-
import {
|
|
3
|
+
import { Metadata } from './types.mjs';
|
|
4
|
+
import { StorageProviderInterface } from './StorageProviderInterface.mjs';
|
|
4
5
|
import '@aws-sdk/client-s3';
|
|
6
|
+
import '@google-cloud/storage';
|
|
5
7
|
|
|
6
|
-
declare
|
|
7
|
-
protected
|
|
8
|
-
constructor(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
abstract metadata(path: string): Promise<Metadata>;
|
|
8
|
+
declare class Storage {
|
|
9
|
+
protected provider: StorageProviderInterface;
|
|
10
|
+
constructor(provider: StorageProviderInterface);
|
|
11
|
+
exists(path: string): Promise<boolean>;
|
|
12
|
+
put(path: string, content: string | object | Stream | Buffer): Promise<boolean>;
|
|
13
|
+
getJson(path: string): Promise<object>;
|
|
14
|
+
getString(path: string): Promise<string>;
|
|
15
|
+
getBuffer(path: string): Promise<Buffer>;
|
|
16
|
+
getStream(path: string): Promise<ReadStream>;
|
|
17
|
+
delete(path: string): Promise<boolean>;
|
|
18
|
+
metadata(path: string): Promise<Metadata>;
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
export { Storage };
|
package/dist/Storage.mjs
CHANGED
|
@@ -1,15 +1,37 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
|
|
4
|
-
constructor(
|
|
5
|
-
this.
|
|
3
|
+
class Storage {
|
|
4
|
+
constructor(provider) {
|
|
5
|
+
this.provider = provider;
|
|
6
6
|
}
|
|
7
|
-
static
|
|
8
|
-
|
|
7
|
+
static {
|
|
8
|
+
__name(this, "Storage");
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
exists(path) {
|
|
11
|
+
return this.provider.exists(path);
|
|
12
|
+
}
|
|
13
|
+
put(path, content) {
|
|
14
|
+
return this.provider.put(path, content);
|
|
15
|
+
}
|
|
16
|
+
getJson(path) {
|
|
17
|
+
return this.provider.getJson(path);
|
|
18
|
+
}
|
|
19
|
+
getString(path) {
|
|
20
|
+
return this.provider.getString(path);
|
|
21
|
+
}
|
|
22
|
+
getBuffer(path) {
|
|
23
|
+
return this.provider.getBuffer(path);
|
|
24
|
+
}
|
|
25
|
+
getStream(path) {
|
|
26
|
+
return this.provider.getStream(path);
|
|
27
|
+
}
|
|
28
|
+
delete(path) {
|
|
29
|
+
return this.provider.delete(path);
|
|
30
|
+
}
|
|
31
|
+
metadata(path) {
|
|
32
|
+
return this.provider.metadata(path);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
13
35
|
export {
|
|
14
36
|
Storage
|
|
15
37
|
};
|
package/dist/Storage.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Storage.mts"],"sourcesContent":["import { ReadStream } from 'fs';\nimport { Stream } from 'stream';\nimport { Metadata } from './types.mjs';\nimport { StorageConfig } from './types.mjs';\n\nexport
|
|
1
|
+
{"version":3,"sources":["../src/Storage.mts"],"sourcesContent":["import { ReadStream } from 'fs';\nimport { Stream } from 'stream';\nimport { Metadata } from './types.mjs';\nimport { StorageConfig } from './types.mjs';\nimport { StorageProviderInterface } from './StorageProviderInterface.mjs';\n\nexport class Storage {\n constructor(protected provider: StorageProviderInterface) {}\n\n exists(path: string): Promise<boolean> {\n return this.provider.exists(path);\n }\n\n put(path: string, content: string | object | Stream | Buffer): Promise<boolean> {\n return this.provider.put(path, content);\n }\n\n getJson(path: string): Promise<object> {\n return this.provider.getJson(path);\n }\n\n getString(path: string): Promise<string> {\n return this.provider.getString(path);\n }\n\n getBuffer(path: string): Promise<Buffer> {\n return this.provider.getBuffer(path);\n }\n\n getStream(path: string): Promise<ReadStream> {\n return this.provider.getStream(path);\n }\n\n delete(path: string): Promise<boolean> {\n return this.provider.delete(path);\n }\n\n metadata(path: string): Promise<Metadata> {\n return this.provider.metadata(path);\n }\n}\n"],"mappings":";;AAMO,MAAM,QAAQ;AAAA,EACnB,YAAsB,UAAoC;AAApC;AAAA,EAAqC;AAAA,EAP7D,OAMqB;AAAA;AAAA;AAAA,EAGnB,OAAO,MAAgC;AACrC,WAAO,KAAK,SAAS,OAAO,IAAI;AAAA,EAClC;AAAA,EAEA,IAAI,MAAc,SAA8D;AAC9E,WAAO,KAAK,SAAS,IAAI,MAAM,OAAO;AAAA,EACxC;AAAA,EAEA,QAAQ,MAA+B;AACrC,WAAO,KAAK,SAAS,QAAQ,IAAI;AAAA,EACnC;AAAA,EAEA,UAAU,MAA+B;AACvC,WAAO,KAAK,SAAS,UAAU,IAAI;AAAA,EACrC;AAAA,EAEA,UAAU,MAA+B;AACvC,WAAO,KAAK,SAAS,UAAU,IAAI;AAAA,EACrC;AAAA,EAEA,UAAU,MAAmC;AAC3C,WAAO,KAAK,SAAS,UAAU,IAAI;AAAA,EACrC;AAAA,EAEA,OAAO,MAAgC;AACrC,WAAO,KAAK,SAAS,OAAO,IAAI;AAAA,EAClC;AAAA,EAEA,SAAS,MAAiC;AACxC,WAAO,KAAK,SAAS,SAAS,IAAI;AAAA,EACpC;AACF;","names":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FlexibleFactory } from '@devbro/neko-helper';
|
|
2
|
+
import { StorageProviderInterface } from './StorageProviderInterface.mjs';
|
|
3
|
+
import 'fs';
|
|
4
|
+
import 'stream';
|
|
5
|
+
import './types.mjs';
|
|
6
|
+
import '@aws-sdk/client-s3';
|
|
7
|
+
import '@google-cloud/storage';
|
|
8
|
+
|
|
9
|
+
declare class StorageProviderFactory {
|
|
10
|
+
static instance: FlexibleFactory<StorageProviderInterface>;
|
|
11
|
+
static register(key: string, factory: (...args: any[]) => StorageProviderInterface): void;
|
|
12
|
+
static create<T>(key: string, ...args: any[]): StorageProviderInterface;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { StorageProviderFactory };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { FlexibleFactory } from "@devbro/neko-helper";
|
|
4
|
+
class StorageProviderFactory {
|
|
5
|
+
static {
|
|
6
|
+
__name(this, "StorageProviderFactory");
|
|
7
|
+
}
|
|
8
|
+
static instance = new FlexibleFactory();
|
|
9
|
+
static register(key, factory) {
|
|
10
|
+
StorageProviderFactory.instance.register(key, factory);
|
|
11
|
+
}
|
|
12
|
+
static create(key, ...args) {
|
|
13
|
+
return StorageProviderFactory.instance.create(key, ...args);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
StorageProviderFactory
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=StorageProviderFactory.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/StorageProviderFactory.mts"],"sourcesContent":["import { Storage } from './Storage.mjs';\nimport { FlexibleFactory } from '@devbro/neko-helper';\nimport { StorageProviderInterface } from './StorageProviderInterface.mjs';\n\nexport class StorageProviderFactory {\n static instance: FlexibleFactory<StorageProviderInterface> =\n new FlexibleFactory<StorageProviderInterface>();\n\n static register(key: string, factory: (...args: any[]) => StorageProviderInterface): void {\n StorageProviderFactory.instance.register(key, factory);\n }\n\n static create<T>(key: string, ...args: any[]): StorageProviderInterface {\n return StorageProviderFactory.instance.create(key, ...args);\n }\n}\n"],"mappings":";;AACA,SAAS,uBAAuB;AAGzB,MAAM,uBAAuB;AAAA,EAJpC,OAIoC;AAAA;AAAA;AAAA,EAClC,OAAO,WACL,IAAI,gBAA0C;AAAA,EAEhD,OAAO,SAAS,KAAa,SAA6D;AACxF,2BAAuB,SAAS,SAAS,KAAK,OAAO;AAAA,EACvD;AAAA,EAEA,OAAO,OAAU,QAAgB,MAAuC;AACtE,WAAO,uBAAuB,SAAS,OAAO,KAAK,GAAG,IAAI;AAAA,EAC5D;AACF;","names":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ReadStream } from 'fs';
|
|
2
|
+
import { Stream } from 'stream';
|
|
3
|
+
import { Metadata } from './types.mjs';
|
|
4
|
+
import '@aws-sdk/client-s3';
|
|
5
|
+
import '@google-cloud/storage';
|
|
6
|
+
|
|
7
|
+
interface StorageProviderInterface {
|
|
8
|
+
exists(path: string): Promise<boolean>;
|
|
9
|
+
put(path: string, content: string | object | Stream | Buffer): Promise<boolean>;
|
|
10
|
+
getJson(path: string): Promise<object>;
|
|
11
|
+
getString(path: string): Promise<string>;
|
|
12
|
+
getBuffer(path: string): Promise<Buffer>;
|
|
13
|
+
getStream(path: string): Promise<ReadStream>;
|
|
14
|
+
delete(path: string): Promise<boolean>;
|
|
15
|
+
metadata(path: string): Promise<Metadata>;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export type { StorageProviderInterface };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=StorageProviderInterface.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
export { Metadata, StorageConfig } from './types.mjs';
|
|
1
|
+
export { AzureStorageConfig, FTPConfig, GCPStorageConfig, LocalStorageConfig, Metadata, S3ClientConfig, SFTPConfig, StorageConfig } from './types.mjs';
|
|
2
2
|
export { Storage } from './Storage.mjs';
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
3
|
+
export { AWSS3StorageProvider } from './providers/AWSS3StorageProvider.mjs';
|
|
4
|
+
export { LocalStorageProvider } from './providers/LocalStorageProvider.mjs';
|
|
5
|
+
export { GCPStorageProvider } from './providers/GCPStorageProvider.mjs';
|
|
6
|
+
export { AzureBlobStorageProvider } from './providers/AzureBlobStorageProvider.mjs';
|
|
7
|
+
export { FTPStorageProvider } from './providers/FTPStorageProvider.mjs';
|
|
8
|
+
export { SFTPStorageProvider } from './providers/SFTPStorageProvider.mjs';
|
|
9
|
+
export { StorageProviderFactory } from './StorageProviderFactory.mjs';
|
|
10
|
+
export { StorageProviderInterface } from './StorageProviderInterface.mjs';
|
|
6
11
|
import '@aws-sdk/client-s3';
|
|
12
|
+
import '@google-cloud/storage';
|
|
7
13
|
import 'fs';
|
|
8
14
|
import 'stream';
|
|
15
|
+
import '@devbro/neko-helper';
|