@certd/plugin-lib 1.33.7 → 1.33.8
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/CHANGELOG.md +11 -0
- package/dist/aliyun/lib/oss-client.d.ts +4 -2
- package/dist/aliyun/lib/oss-client.js +17 -1
- package/dist/ftp/client.d.ts +3 -1
- package/dist/ftp/client.js +16 -2
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -1
- package/dist/oss/api.d.ts +46 -0
- package/dist/oss/api.js +48 -0
- package/dist/oss/factory.d.ts +10 -0
- package/dist/oss/factory.js +46 -0
- package/dist/oss/impls/alioss.d.ts +13 -0
- package/dist/oss/impls/alioss.js +55 -0
- package/dist/oss/impls/ftp.d.ts +12 -0
- package/dist/oss/impls/ftp.js +75 -0
- package/dist/oss/impls/qiniuoss.d.ts +13 -0
- package/dist/oss/impls/qiniuoss.js +47 -0
- package/dist/oss/impls/s3.d.ts +13 -0
- package/dist/oss/impls/s3.js +89 -0
- package/dist/oss/impls/sftp.d.ts +10 -0
- package/dist/oss/impls/sftp.js +79 -0
- package/dist/oss/impls/ssh.d.ts +11 -0
- package/dist/oss/impls/ssh.js +55 -0
- package/dist/oss/impls/tencentcos.d.ts +13 -0
- package/dist/oss/impls/tencentcos.js +51 -0
- package/dist/oss/index.d.ts +2 -0
- package/dist/oss/index.js +3 -0
- package/dist/qiniu/lib/sdk.d.ts +4 -1
- package/dist/qiniu/lib/sdk.js +45 -9
- package/dist/s3/access.d.ts +23 -0
- package/dist/s3/access.js +108 -0
- package/dist/s3/index.d.ts +1 -0
- package/dist/s3/index.js +2 -0
- package/dist/ssh/ssh.d.ts +18 -0
- package/dist/ssh/ssh.js +83 -23
- package/dist/tencent/lib/cos-client.d.ts +3 -1
- package/dist/tencent/lib/cos-client.js +42 -2
- package/package.json +6 -5
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BaseOssClient, OssFileItem } from "../api.js";
|
|
2
|
+
import { SftpAccess } from "../../ssh/index.js";
|
|
3
|
+
export default class SftpOssClientImpl extends BaseOssClient<SftpAccess> {
|
|
4
|
+
download(fileName: string, savePath: string): Promise<void>;
|
|
5
|
+
listDir(dir: string): Promise<OssFileItem[]>;
|
|
6
|
+
upload(filePath: string, fileContent: Buffer | string): Promise<void>;
|
|
7
|
+
remove(filePath: string, opts?: {
|
|
8
|
+
joinRootDir?: boolean;
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { BaseOssClient } from "../api.js";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import os from "os";
|
|
4
|
+
import fs from "fs";
|
|
5
|
+
import { SshClient } from "../../ssh/index.js";
|
|
6
|
+
export default class SftpOssClientImpl extends BaseOssClient {
|
|
7
|
+
async download(fileName, savePath) {
|
|
8
|
+
const path = this.join(this.rootDir, fileName);
|
|
9
|
+
const client = new SshClient(this.logger);
|
|
10
|
+
const access = await this.ctx.accessService.getById(this.access.sshAccess);
|
|
11
|
+
await client.download({
|
|
12
|
+
connectConf: access,
|
|
13
|
+
filePath: path,
|
|
14
|
+
savePath,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
async listDir(dir) {
|
|
18
|
+
const path = this.join(this.rootDir, dir);
|
|
19
|
+
const client = new SshClient(this.logger);
|
|
20
|
+
const access = await this.ctx.accessService.getById(this.access.sshAccess);
|
|
21
|
+
const res = await client.listDir({
|
|
22
|
+
connectConf: access,
|
|
23
|
+
dir: path,
|
|
24
|
+
});
|
|
25
|
+
return res.map(item => {
|
|
26
|
+
return {
|
|
27
|
+
path: this.join(path, item.filename),
|
|
28
|
+
size: item.size,
|
|
29
|
+
lastModified: item.attrs.atime * 1000,
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
async upload(filePath, fileContent) {
|
|
34
|
+
let tmpFilePath = fileContent;
|
|
35
|
+
if (typeof fileContent !== "string") {
|
|
36
|
+
tmpFilePath = path.join(os.tmpdir(), "cert", "oss", filePath);
|
|
37
|
+
const dir = path.dirname(tmpFilePath);
|
|
38
|
+
if (!fs.existsSync(dir)) {
|
|
39
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
40
|
+
}
|
|
41
|
+
fs.writeFileSync(tmpFilePath, fileContent);
|
|
42
|
+
}
|
|
43
|
+
const access = await this.ctx.accessService.getById(this.access.sshAccess);
|
|
44
|
+
const key = this.join(this.rootDir, filePath);
|
|
45
|
+
try {
|
|
46
|
+
const client = new SshClient(this.logger);
|
|
47
|
+
await client.uploadFiles({
|
|
48
|
+
connectConf: access,
|
|
49
|
+
mkdirs: true,
|
|
50
|
+
transports: [
|
|
51
|
+
{
|
|
52
|
+
localPath: tmpFilePath,
|
|
53
|
+
remotePath: key,
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
uploadType: "sftp",
|
|
57
|
+
opts: {
|
|
58
|
+
mode: this.access?.fileMode ?? undefined,
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
finally {
|
|
63
|
+
// Remove temp file
|
|
64
|
+
fs.unlinkSync(tmpFilePath);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async remove(filePath, opts) {
|
|
68
|
+
const access = await this.ctx.accessService.getById(this.access.sshAccess);
|
|
69
|
+
const client = new SshClient(this.logger);
|
|
70
|
+
if (opts?.joinRootDir !== false) {
|
|
71
|
+
filePath = this.join(this.rootDir, filePath);
|
|
72
|
+
}
|
|
73
|
+
await client.removeFiles({
|
|
74
|
+
connectConf: access,
|
|
75
|
+
files: [filePath],
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Z0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vc3MvaW1wbHMvc2Z0cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFlLE1BQU0sV0FBVyxDQUFDO0FBQ3ZELE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEIsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBeUIsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdEUsTUFBTSxDQUFDLE9BQU8sT0FBTyxpQkFBa0IsU0FBUSxhQUF5QjtJQUN0RSxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQWdCLEVBQUUsUUFBZ0I7UUFDL0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sTUFBTSxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBWSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUNwQixXQUFXLEVBQUUsTUFBTTtZQUNuQixRQUFRLEVBQUUsSUFBSTtZQUNkLFFBQVE7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFXO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsTUFB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
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BaseOssClient, OssClientRemoveByOpts, OssFileItem } from "../api.js";
|
|
2
|
+
import { SshAccess } from "../../ssh/index.js";
|
|
3
|
+
export default class SshOssClientImpl extends BaseOssClient<SshAccess> {
|
|
4
|
+
download(fileName: string, savePath: string): Promise<void>;
|
|
5
|
+
removeBy(removeByOpts: OssClientRemoveByOpts): Promise<void>;
|
|
6
|
+
listDir(dir: string): Promise<OssFileItem[]>;
|
|
7
|
+
upload(filePath: string, fileContent: Buffer): Promise<void>;
|
|
8
|
+
remove(filePath: string, opts?: {
|
|
9
|
+
joinRootDir?: boolean;
|
|
10
|
+
}): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { BaseOssClient } from "../api.js";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import os from "os";
|
|
4
|
+
import fs from "fs";
|
|
5
|
+
import { SshClient } from "../../ssh/index.js";
|
|
6
|
+
//废弃
|
|
7
|
+
export default class SshOssClientImpl extends BaseOssClient {
|
|
8
|
+
download(fileName, savePath) {
|
|
9
|
+
throw new Error("Method not implemented.");
|
|
10
|
+
}
|
|
11
|
+
removeBy(removeByOpts) {
|
|
12
|
+
throw new Error("Method not implemented.");
|
|
13
|
+
}
|
|
14
|
+
listDir(dir) {
|
|
15
|
+
throw new Error("Method not implemented.");
|
|
16
|
+
}
|
|
17
|
+
async upload(filePath, fileContent) {
|
|
18
|
+
const tmpFilePath = path.join(os.tmpdir(), "cert", "http", filePath);
|
|
19
|
+
// Write file to temp path
|
|
20
|
+
const dir = path.dirname(tmpFilePath);
|
|
21
|
+
if (!fs.existsSync(dir)) {
|
|
22
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
23
|
+
}
|
|
24
|
+
fs.writeFileSync(tmpFilePath, fileContent);
|
|
25
|
+
const key = this.rootDir + filePath;
|
|
26
|
+
try {
|
|
27
|
+
const client = new SshClient(this.logger);
|
|
28
|
+
await client.uploadFiles({
|
|
29
|
+
connectConf: this.access,
|
|
30
|
+
mkdirs: true,
|
|
31
|
+
transports: [
|
|
32
|
+
{
|
|
33
|
+
localPath: tmpFilePath,
|
|
34
|
+
remotePath: key,
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
finally {
|
|
40
|
+
// Remove temp file
|
|
41
|
+
fs.unlinkSync(tmpFilePath);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async remove(filePath, opts) {
|
|
45
|
+
if (opts?.joinRootDir !== false) {
|
|
46
|
+
filePath = this.join(this.rootDir, filePath);
|
|
47
|
+
}
|
|
48
|
+
const client = new SshClient(this.logger);
|
|
49
|
+
await client.removeFiles({
|
|
50
|
+
connectConf: this.access,
|
|
51
|
+
files: [filePath],
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29zcy9pbXBscy9zc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBc0MsTUFBTSxXQUFXLENBQUM7QUFDOUUsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEIsT0FBTyxFQUFhLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTFELElBQUk7QUFDSixNQUFNLENBQUMsT0FBTyxPQUFPLGdCQUFpQixTQUFRLGFBQXdCO0lBQ3BFLFFBQVEsQ0FBQyxRQUFnQixFQUFFLFFBQWdCO1FBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsUUFBUSxDQUFDLFlBQW1DO1FBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsT0FBTyxDQUFDLEdBQVc7UUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQWdCLEVBQUUsV0FBbUI7UUFDaEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVyRSwwQkFBMEI7UUFDMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hCLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUNELEVBQUUsQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRTNDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDO1FBQ3BDLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxQyxNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUM7Z0JBQ3ZCLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDeEIsTUFBTSxFQUFFLElBQUk7Z0JBQ1osVUFBVSxFQUFFO29CQUNWO3dCQUNFLFNBQVMsRUFBRSxXQUFXO3dCQUN0QixVQUFVLEVBQUUsR0FBRztxQkFDaEI7aUJBQ0Y7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO2dCQUFTLENBQUM7WUFDVCxtQkFBbUI7WUFDbkIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBZ0IsRUFBRSxJQUFnQztRQUM3RCxJQUFJLElBQUksRUFBRSxXQUFXLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDaEMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLE1BQU0sTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUN2QixXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDeEIsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDO1NBQ2xCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiJ9
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TencentCosAccess, TencentCosClient } from "../../tencent/index.js";
|
|
2
|
+
import { BaseOssClient, OssFileItem } from "../api.js";
|
|
3
|
+
export default class TencentOssClientImpl extends BaseOssClient<TencentCosAccess> {
|
|
4
|
+
client: TencentCosClient;
|
|
5
|
+
join(...strs: string[]): string;
|
|
6
|
+
init(): Promise<void>;
|
|
7
|
+
download(filePath: string, savePath: string): Promise<void>;
|
|
8
|
+
listDir(dir: string): Promise<OssFileItem[]>;
|
|
9
|
+
upload(filePath: string, fileContent: Buffer | string): Promise<void>;
|
|
10
|
+
remove(filePath: string, opts?: {
|
|
11
|
+
joinRootDir?: boolean;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import dayjs from "dayjs";
|
|
2
|
+
import { TencentCosClient } from "../../tencent/index.js";
|
|
3
|
+
import { BaseOssClient } from "../api.js";
|
|
4
|
+
export default class TencentOssClientImpl extends BaseOssClient {
|
|
5
|
+
client;
|
|
6
|
+
join(...strs) {
|
|
7
|
+
const str = super.join(...strs);
|
|
8
|
+
if (str.startsWith("/")) {
|
|
9
|
+
return str.substring(1);
|
|
10
|
+
}
|
|
11
|
+
return str;
|
|
12
|
+
}
|
|
13
|
+
async init() {
|
|
14
|
+
const access = await this.ctx.accessService.getById(this.access.accessId);
|
|
15
|
+
this.client = new TencentCosClient({
|
|
16
|
+
access: access,
|
|
17
|
+
logger: this.logger,
|
|
18
|
+
region: this.access.region,
|
|
19
|
+
bucket: this.access.bucket,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
async download(filePath, savePath) {
|
|
23
|
+
const key = this.join(this.rootDir, filePath);
|
|
24
|
+
await this.client.downloadFile(key, savePath);
|
|
25
|
+
}
|
|
26
|
+
async listDir(dir) {
|
|
27
|
+
const dirKey = this.join(this.rootDir, dir) + "/";
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
const res = await this.client.listDir(dirKey);
|
|
30
|
+
return res.map(item => {
|
|
31
|
+
return {
|
|
32
|
+
path: item.Key,
|
|
33
|
+
size: item.Size,
|
|
34
|
+
lastModified: dayjs(item.LastModified).valueOf(),
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
async upload(filePath, fileContent) {
|
|
39
|
+
const key = this.join(this.rootDir, filePath);
|
|
40
|
+
await this.client.uploadFile(key, fileContent);
|
|
41
|
+
this.logger.info(`文件上传成功: ${filePath}`);
|
|
42
|
+
}
|
|
43
|
+
async remove(filePath, opts) {
|
|
44
|
+
if (opts?.joinRootDir !== false) {
|
|
45
|
+
filePath = this.join(this.rootDir, filePath);
|
|
46
|
+
}
|
|
47
|
+
await this.client.removeFile(filePath);
|
|
48
|
+
this.logger.info(`文件删除成功: ${filePath}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuY2VudGNvcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vc3MvaW1wbHMvdGVuY2VudGNvcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFtQyxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNGLE9BQU8sRUFBRSxhQUFhLEVBQWUsTUFBTSxXQUFXLENBQUM7QUFFdkQsTUFBTSxDQUFDLE9BQU8sT0FBTyxvQkFBcUIsU0FBUSxhQUErQjtJQUMvRSxNQUFNLENBQW1CO0lBRXpCLElBQUksQ0FBQyxHQUFHLElBQWM7UUFDcEIsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBQ0QsS0FBSyxDQUFDLElBQUk7UUFDUixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBZ0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6RixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZ0JBQWdCLENBQUM7WUFDakMsTUFBTSxFQUFFLE1BQU07WUFDZCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUMxQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQWdCLEVBQUUsUUFBZ0I7UUFDL0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQVc7UUFDdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNsRCxhQUFhO1FBQ2IsTUFBTSxHQUFHLEdBQVUsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEIsT0FBTztnQkFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2QsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLFlBQVksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRTthQUNqRCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFnQixFQUFFLFdBQTRCO1FBQ3pELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5QyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBZ0IsRUFBRSxJQUFnQztRQUM3RCxJQUFJLElBQUksRUFBRSxXQUFXLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDaEMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from "./factory.js";
|
|
2
|
+
export * from "./api.js";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3NzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsVUFBVSxDQUFDIn0=
|
package/dist/qiniu/lib/sdk.d.ts
CHANGED
|
@@ -26,6 +26,9 @@ export declare class QiniuClient {
|
|
|
26
26
|
body?: any;
|
|
27
27
|
contentType: string;
|
|
28
28
|
}): Promise<unknown>;
|
|
29
|
-
uploadFile(bucket: string, key: string, content: Buffer): Promise<any>;
|
|
29
|
+
uploadFile(bucket: string, key: string, content: Buffer | string): Promise<any>;
|
|
30
30
|
removeFile(bucket: string, key: string): Promise<void>;
|
|
31
|
+
downloadFile(bucket: string, path: string, savePath: string): Promise<void>;
|
|
32
|
+
private getBucketManager;
|
|
33
|
+
listDir(bucket: string, path: string): Promise<import("qiniu/StorageResponseInterface.js").GetObjectsResult & import("qiniu").httpc.ResponseError>;
|
|
31
34
|
}
|
package/dist/qiniu/lib/sdk.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { utils } from "@certd/basic";
|
|
2
|
+
import fs from "fs";
|
|
1
3
|
export class QiniuClient {
|
|
2
4
|
http;
|
|
3
5
|
access;
|
|
@@ -95,8 +97,16 @@ export class QiniuClient {
|
|
|
95
97
|
const config = new qiniu.conf.Config();
|
|
96
98
|
const formUploader = new qiniu.form_up.FormUploader(config);
|
|
97
99
|
const putExtra = new qiniu.form_up.PutExtra();
|
|
98
|
-
|
|
99
|
-
|
|
100
|
+
let res = {};
|
|
101
|
+
if (typeof content === "string") {
|
|
102
|
+
const readableStream = fs.createReadStream(content);
|
|
103
|
+
res = await formUploader.putStream(uploadToken, key, readableStream, putExtra);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
// 文件上传
|
|
107
|
+
res = await formUploader.put(uploadToken, key, content, putExtra);
|
|
108
|
+
}
|
|
109
|
+
const { data, resp } = res;
|
|
100
110
|
if (resp.statusCode === 200) {
|
|
101
111
|
this.logger.info("文件上传成功:" + key);
|
|
102
112
|
return data;
|
|
@@ -107,12 +117,7 @@ export class QiniuClient {
|
|
|
107
117
|
}
|
|
108
118
|
}
|
|
109
119
|
async removeFile(bucket, key) {
|
|
110
|
-
const
|
|
111
|
-
const qiniu = sdk.default;
|
|
112
|
-
const mac = new qiniu.auth.digest.Mac(this.access.accessKey, this.access.secretKey);
|
|
113
|
-
const config = new qiniu.conf.Config();
|
|
114
|
-
config.useHttpsDomain = true;
|
|
115
|
-
const bucketManager = new qiniu.rs.BucketManager(mac, config);
|
|
120
|
+
const bucketManager = await this.getBucketManager();
|
|
116
121
|
const { resp } = await bucketManager.delete(bucket, key);
|
|
117
122
|
if (resp.statusCode === 200) {
|
|
118
123
|
this.logger.info("文件删除成功:" + key);
|
|
@@ -122,5 +127,36 @@ export class QiniuClient {
|
|
|
122
127
|
throw new Error("删除失败:" + JSON.stringify(resp));
|
|
123
128
|
}
|
|
124
129
|
}
|
|
130
|
+
async downloadFile(bucket, path, savePath) {
|
|
131
|
+
const bucketManager = await this.getBucketManager();
|
|
132
|
+
const privateBucketDomain = `http://${bucket}.qiniudn.com`;
|
|
133
|
+
const deadline = Math.floor(Date.now() / 1000) + 3600; // 1小时过期
|
|
134
|
+
const privateDownloadUrl = bucketManager.privateDownloadUrl(privateBucketDomain, path, deadline);
|
|
135
|
+
await utils.request.download({
|
|
136
|
+
http: this.http,
|
|
137
|
+
logger: this.logger,
|
|
138
|
+
config: {
|
|
139
|
+
url: privateDownloadUrl,
|
|
140
|
+
method: "get",
|
|
141
|
+
},
|
|
142
|
+
savePath,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
async getBucketManager() {
|
|
146
|
+
const sdk = await import("qiniu");
|
|
147
|
+
const qiniu = sdk.default;
|
|
148
|
+
const mac = new qiniu.auth.digest.Mac(this.access.accessKey, this.access.secretKey);
|
|
149
|
+
const config = new qiniu.conf.Config();
|
|
150
|
+
config.useHttpsDomain = true;
|
|
151
|
+
return new qiniu.rs.BucketManager(mac, config);
|
|
152
|
+
}
|
|
153
|
+
async listDir(bucket, path) {
|
|
154
|
+
const bucketManager = await this.getBucketManager();
|
|
155
|
+
const res = await bucketManager.listPrefix(bucket, {
|
|
156
|
+
prefix: path,
|
|
157
|
+
limit: 1000,
|
|
158
|
+
});
|
|
159
|
+
return res.data;
|
|
160
|
+
}
|
|
125
161
|
}
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Fpbml1L2xpYi9zZGsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixLQUFLLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFMUQsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBTXBCLE1BQU0sT0FBTyxXQUFXO0lBQ3RCLElBQUksQ0FBYTtJQUNqQixNQUFNLENBQWM7SUFDcEIsTUFBTSxDQUFVO0lBQ2hCLFlBQVksSUFBZ0U7UUFDMUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDNUIsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBbUIsRUFBRSxRQUFpQjtRQUNyRCxNQUFNLEdBQUcsR0FBRywrQkFBK0IsQ0FBQztRQUU1QyxNQUFNLElBQUksR0FBRztZQUNYLElBQUksRUFBRSxRQUFRO1lBQ2QsV0FBVyxFQUFFLE9BQU87WUFDcEIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHO1NBQ2IsQ0FBQztRQUVGLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXBELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUNwQixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUF3QztRQUNyRCxNQUFNLEdBQUcsR0FBRyxpQ0FBaUMsQ0FBQztRQUM5QyxPQUFPLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxL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
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { BaseAccess } from "@certd/pipeline";
|
|
2
|
+
/**
|
|
3
|
+
* 这个注解将注册一个授权配置
|
|
4
|
+
* 在certd的后台管理系统中,用户可以选择添加此类型的授权
|
|
5
|
+
*/
|
|
6
|
+
export declare class S3Access extends BaseAccess {
|
|
7
|
+
endpoint: string;
|
|
8
|
+
/**
|
|
9
|
+
* const minioClient = new S3Client({
|
|
10
|
+
* endpoint: "http://localhost:9000",
|
|
11
|
+
* forcePathStyle: true,
|
|
12
|
+
* credentials: {
|
|
13
|
+
* accessKeyId: "minioadmin", // 默认 MinIO 访问密钥
|
|
14
|
+
* secretAccessKey: "minioadmin", // 默认 MinIO 秘密密钥
|
|
15
|
+
* },
|
|
16
|
+
* region: "us-east-1",
|
|
17
|
+
* });
|
|
18
|
+
*/
|
|
19
|
+
accessKeyId: string;
|
|
20
|
+
secretAccessKey: string;
|
|
21
|
+
region: string;
|
|
22
|
+
bucket: string;
|
|
23
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { AccessInput, BaseAccess, IsAccess } from "@certd/pipeline";
|
|
11
|
+
/**
|
|
12
|
+
* 这个注解将注册一个授权配置
|
|
13
|
+
* 在certd的后台管理系统中,用户可以选择添加此类型的授权
|
|
14
|
+
*/
|
|
15
|
+
let S3Access = class S3Access extends BaseAccess {
|
|
16
|
+
endpoint;
|
|
17
|
+
/**
|
|
18
|
+
* const minioClient = new S3Client({
|
|
19
|
+
* endpoint: "http://localhost:9000",
|
|
20
|
+
* forcePathStyle: true,
|
|
21
|
+
* credentials: {
|
|
22
|
+
* accessKeyId: "minioadmin", // 默认 MinIO 访问密钥
|
|
23
|
+
* secretAccessKey: "minioadmin", // 默认 MinIO 秘密密钥
|
|
24
|
+
* },
|
|
25
|
+
* region: "us-east-1",
|
|
26
|
+
* });
|
|
27
|
+
*/
|
|
28
|
+
accessKeyId;
|
|
29
|
+
secretAccessKey;
|
|
30
|
+
region;
|
|
31
|
+
bucket;
|
|
32
|
+
};
|
|
33
|
+
__decorate([
|
|
34
|
+
AccessInput({
|
|
35
|
+
title: "endpoint",
|
|
36
|
+
component: {
|
|
37
|
+
placeholder: "http://xxxxxx:9000",
|
|
38
|
+
name: "a-input",
|
|
39
|
+
vModel: "value",
|
|
40
|
+
},
|
|
41
|
+
helper: "Minio的地址,如果是aws s3 则无需填写",
|
|
42
|
+
required: false,
|
|
43
|
+
}),
|
|
44
|
+
__metadata("design:type", String)
|
|
45
|
+
], S3Access.prototype, "endpoint", void 0);
|
|
46
|
+
__decorate([
|
|
47
|
+
AccessInput({
|
|
48
|
+
title: "accessKeyId",
|
|
49
|
+
component: {
|
|
50
|
+
placeholder: "accessKeyId",
|
|
51
|
+
},
|
|
52
|
+
helper: "accessKeyId",
|
|
53
|
+
required: true,
|
|
54
|
+
}),
|
|
55
|
+
__metadata("design:type", String)
|
|
56
|
+
], S3Access.prototype, "accessKeyId", void 0);
|
|
57
|
+
__decorate([
|
|
58
|
+
AccessInput({
|
|
59
|
+
title: "secretAccessKey",
|
|
60
|
+
component: {
|
|
61
|
+
placeholder: "secretAccessKey",
|
|
62
|
+
component: {
|
|
63
|
+
name: "a-input",
|
|
64
|
+
vModel: "value",
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
helper: "secretAccessKey",
|
|
68
|
+
encrypt: true,
|
|
69
|
+
required: true,
|
|
70
|
+
}),
|
|
71
|
+
__metadata("design:type", String)
|
|
72
|
+
], S3Access.prototype, "secretAccessKey", void 0);
|
|
73
|
+
__decorate([
|
|
74
|
+
AccessInput({
|
|
75
|
+
title: "地区",
|
|
76
|
+
value: "us-east-1",
|
|
77
|
+
component: {
|
|
78
|
+
name: "a-input",
|
|
79
|
+
vModel: "value",
|
|
80
|
+
},
|
|
81
|
+
helper: "region",
|
|
82
|
+
required: true,
|
|
83
|
+
}),
|
|
84
|
+
__metadata("design:type", String)
|
|
85
|
+
], S3Access.prototype, "region", void 0);
|
|
86
|
+
__decorate([
|
|
87
|
+
AccessInput({
|
|
88
|
+
title: "存储桶",
|
|
89
|
+
component: {
|
|
90
|
+
name: "a-input",
|
|
91
|
+
vModel: "value",
|
|
92
|
+
},
|
|
93
|
+
helper: "bucket 名称",
|
|
94
|
+
required: true,
|
|
95
|
+
}),
|
|
96
|
+
__metadata("design:type", String)
|
|
97
|
+
], S3Access.prototype, "bucket", void 0);
|
|
98
|
+
S3Access = __decorate([
|
|
99
|
+
IsAccess({
|
|
100
|
+
name: "s3",
|
|
101
|
+
title: "s3/minio授权",
|
|
102
|
+
desc: "S3/minio oss授权",
|
|
103
|
+
icon: "mdi:folder-upload-outline",
|
|
104
|
+
})
|
|
105
|
+
], S3Access);
|
|
106
|
+
export { S3Access };
|
|
107
|
+
new S3Access();
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3MzL2FjY2Vzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRTs7O0dBR0c7QUFPSSxJQUFNLFFBQVEsR0FBZCxNQUFNLFFBQVMsU0FBUSxVQUFVO0lBV3RDLFFBQVEsQ0FBVTtJQUVsQjs7Ozs7Ozs7OztPQVVHO0lBVUgsV0FBVyxDQUFVO0lBZXJCLGVBQWUsQ0FBVTtJQVl6QixNQUFNLENBQVU7SUFXaEIsTUFBTSxDQUFVO0NBQ2pCLENBQUE7QUE3REM7SUFWQyxXQUFXLENBQUM7UUFDWCxLQUFLLEVBQUUsVUFBVTtRQUNqQixTQUFTLEVBQUU7WUFDVCxXQUFXLEVBQUUsb0JBQW9CO1lBQ2pDLElBQUksRUFBRSxTQUFTO1lBQ2YsTUFBTSxFQUFFLE9BQU87U0FDaEI7UUFDRCxNQUFNLEVBQUUsMEJBQTBCO1FBQ2xDLFFBQVEsRUFBRSxLQUFLO0tBQ2hCLENBQUM7OzBDQUNnQjtBQXNCbEI7SUFSQyxXQUFXLENBQUM7UUFDWCxLQUFLLEVBQUUsYUFBYTtRQUNwQixTQUFTLEVBQUU7WUFDVCxXQUFXLEVBQUUsYUFBYTtTQUMzQjtRQUNELE1BQU0sRUFBRSxhQUFhO1FBQ3JCLFFBQVEsRUFBRSxJQUFJO0tBQ2YsQ0FBQzs7NkNBQ21CO0FBZXJCO0lBYkMsV0FBVyxDQUFDO1FBQ1gsS0FBSyxFQUFFLGlCQUFpQjtRQUN4QixTQUFTLEVBQUU7WUFDVCxXQUFXLEVBQUUsaUJBQWlCO1lBQzlCLFNBQVMsRUFBRTtnQkFDVCxJQUFJLEVBQUUsU0FBUztnQkFDZixNQUFNLEVBQUUsT0FBTzthQUNoQjtTQUNGO1FBQ0QsTUFBTSxFQUFFLGlCQUFpQjtRQUN6QixPQUFPLEVBQUUsSUFBSTtRQUNiLFFBQVEsRUFBRSxJQUFJO0tBQ2YsQ0FBQzs7aURBQ3VCO0FBWXpCO0lBVkMsV0FBVyxDQUFDO1FBQ1gsS0FBSyxFQUFFLElBQUk7UUFDWCxLQUFLLEVBQUUsV0FBVztRQUNsQixTQUFTLEVBQUU7WUFDVCxJQUFJLEVBQUUsU0FBUztZQUNmLE1BQU0sRUFBRSxPQUFPO1NBQ2hCO1FBQ0QsTUFBTSxFQUFFLFFBQVE7UUFDaEIsUUFBUSxFQUFFLElBQUk7S0FDZixDQUFDOzt3Q0FDYztBQVdoQjtJQVRDLFdBQVcsQ0FBQztRQUNYLEtBQUssRUFBRSxLQUFLO1FBQ1osU0FBUyxFQUFFO1lBQ1QsSUFBSSxFQUFFLFNBQVM7WUFDZixNQUFNLEVBQUUsT0FBTztTQUNoQjtRQUNELE1BQU0sRUFBRSxXQUFXO1FBQ25CLFFBQVEsRUFBRSxJQUFJO0tBQ2YsQ0FBQzs7d0NBQ2M7QUF2RUwsUUFBUTtJQU5wQixRQUFRLENBQUM7UUFDUixJQUFJLEVBQUUsSUFBSTtRQUNWLEtBQUssRUFBRSxZQUFZO1FBQ25CLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsSUFBSSxFQUFFLDJCQUEyQjtLQUNsQyxDQUFDO0dBQ1csUUFBUSxDQXdFcEI7O0FBRUQsSUFBSSxRQUFRLEVBQUUsQ0FBQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./access.js";
|
package/dist/s3/index.js
ADDED
package/dist/ssh/ssh.d.ts
CHANGED
|
@@ -37,6 +37,10 @@ export declare class AsyncSsh2Client {
|
|
|
37
37
|
mode?: string;
|
|
38
38
|
};
|
|
39
39
|
}): Promise<unknown>;
|
|
40
|
+
listDir(options: {
|
|
41
|
+
sftp: any;
|
|
42
|
+
remotePath: string;
|
|
43
|
+
}): Promise<unknown>;
|
|
40
44
|
unlink(options: {
|
|
41
45
|
sftp: any;
|
|
42
46
|
remotePath: string;
|
|
@@ -48,6 +52,11 @@ export declare class AsyncSsh2Client {
|
|
|
48
52
|
shell(script: string | string[]): Promise<string>;
|
|
49
53
|
end(): void;
|
|
50
54
|
private parseSocksProxyFromUri;
|
|
55
|
+
download(param: {
|
|
56
|
+
remotePath: string;
|
|
57
|
+
savePath: string;
|
|
58
|
+
sftp: any;
|
|
59
|
+
}): Promise<unknown>;
|
|
51
60
|
}
|
|
52
61
|
export declare class SshClient {
|
|
53
62
|
logger: ILogger;
|
|
@@ -109,4 +118,13 @@ export declare class SshClient {
|
|
|
109
118
|
connectConf: SshAccess;
|
|
110
119
|
callable: (conn: AsyncSsh2Client) => Promise<T>;
|
|
111
120
|
}): Promise<T>;
|
|
121
|
+
listDir(param: {
|
|
122
|
+
connectConf: any;
|
|
123
|
+
dir: string;
|
|
124
|
+
}): Promise<any>;
|
|
125
|
+
download(param: {
|
|
126
|
+
connectConf: any;
|
|
127
|
+
filePath: string;
|
|
128
|
+
savePath: string;
|
|
129
|
+
}): Promise<any>;
|
|
112
130
|
}
|