guratan 0.5.2 → 0.7.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.
- package/dist/cli.d.ts +7 -3
- package/dist/cli.js +8 -5
- package/dist/main.js +26 -1
- package/dist/tdrive.js +1 -1
- package/dist/trecv.d.ts +11 -1
- package/dist/trecv.js +26 -11
- package/dist/tsend.d.ts +8 -2
- package/dist/tsend.js +47 -60
- package/package.json +2 -1
package/dist/cli.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { Writable } from 'stream';
|
|
2
|
+
import { Readable, Writable } from 'stream';
|
|
3
3
|
declare type Opts = {
|
|
4
|
+
stdin: Readable;
|
|
4
5
|
stdout: Writable;
|
|
5
6
|
stderr: Writable;
|
|
6
7
|
};
|
|
@@ -11,6 +12,7 @@ declare type OptsSend = Opts & {
|
|
|
11
12
|
srcFileName: string;
|
|
12
13
|
destMimeType: string;
|
|
13
14
|
srcMimeType: string;
|
|
15
|
+
pipe: boolean;
|
|
14
16
|
printId: boolean;
|
|
15
17
|
};
|
|
16
18
|
declare type OptsRecv = Opts & {
|
|
@@ -19,6 +21,8 @@ declare type OptsRecv = Opts & {
|
|
|
19
21
|
srcFileName: string;
|
|
20
22
|
destFileName: string;
|
|
21
23
|
destMimeType: string;
|
|
24
|
+
pipe: boolean;
|
|
25
|
+
removeBom: boolean;
|
|
22
26
|
printId: boolean;
|
|
23
27
|
};
|
|
24
28
|
declare type OptsShare = Opts & {
|
|
@@ -37,7 +41,7 @@ declare type OptsShare = Opts & {
|
|
|
37
41
|
emailMessage: string;
|
|
38
42
|
printId: boolean;
|
|
39
43
|
};
|
|
40
|
-
export declare const cliSend: ({ fileId, parentId, destFileName, srcFileName, destMimeType, srcMimeType, printId, stdout, stderr }: OptsSend) => Promise<number>;
|
|
41
|
-
export declare const cliRecv: ({ fileId, parentId, srcFileName, destFileName, destMimeType, printId, stdout, stderr }: OptsRecv) => Promise<number>;
|
|
44
|
+
export declare const cliSend: ({ fileId, parentId, destFileName, srcFileName, destMimeType, srcMimeType, pipe, printId, stdin, stdout, stderr }: OptsSend) => Promise<number>;
|
|
45
|
+
export declare const cliRecv: ({ fileId, parentId, srcFileName, destFileName, destMimeType, printId, pipe, removeBom, stdout, stderr }: OptsRecv) => Promise<number>;
|
|
42
46
|
export declare const cliShare: ({ fileId, parentId, destFileName, type, role, emailAddress, domain, allowFileDiscovery, view, moveToNewOwnersRoot, transferOwnership, sendNotificationEmail, emailMessage, printId, stdout, stderr }: OptsShare) => Promise<number>;
|
|
43
47
|
export {};
|
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { driveClient } from './tdrive.js';
|
|
2
|
-
export const cliSend = async ({ fileId, parentId, destFileName, srcFileName, destMimeType, srcMimeType, printId, stdout, stderr }) => {
|
|
2
|
+
export const cliSend = async ({ fileId, parentId, destFileName, srcFileName, destMimeType, srcMimeType, pipe, printId, stdin, stdout, stderr }) => {
|
|
3
3
|
try {
|
|
4
4
|
const { sendFile } = await import('./tsend.js');
|
|
5
5
|
const id = await sendFile(driveClient(), {
|
|
@@ -8,7 +8,8 @@ export const cliSend = async ({ fileId, parentId, destFileName, srcFileName, des
|
|
|
8
8
|
destFileName,
|
|
9
9
|
srcFileName,
|
|
10
10
|
destMimeType,
|
|
11
|
-
srcMimeType
|
|
11
|
+
srcMimeType,
|
|
12
|
+
srcStream: pipe ? stdin : undefined
|
|
12
13
|
});
|
|
13
14
|
if (printId) {
|
|
14
15
|
stdout.write(id);
|
|
@@ -21,7 +22,7 @@ export const cliSend = async ({ fileId, parentId, destFileName, srcFileName, des
|
|
|
21
22
|
}
|
|
22
23
|
return 0;
|
|
23
24
|
};
|
|
24
|
-
export const cliRecv = async ({ fileId, parentId, srcFileName, destFileName, destMimeType, printId, stdout, stderr }) => {
|
|
25
|
+
export const cliRecv = async ({ fileId, parentId, srcFileName, destFileName, destMimeType, printId, pipe, removeBom, stdout, stderr }) => {
|
|
25
26
|
try {
|
|
26
27
|
const { recvFile } = await import('./trecv.js');
|
|
27
28
|
const id = await recvFile(driveClient(), {
|
|
@@ -29,9 +30,11 @@ export const cliRecv = async ({ fileId, parentId, srcFileName, destFileName, des
|
|
|
29
30
|
parentId,
|
|
30
31
|
srcFileName,
|
|
31
32
|
destFileName,
|
|
32
|
-
destMimeType
|
|
33
|
+
destMimeType,
|
|
34
|
+
removeBom,
|
|
35
|
+
destStream: pipe ? stdout : undefined
|
|
33
36
|
});
|
|
34
|
-
if (printId) {
|
|
37
|
+
if (printId && !pipe) {
|
|
35
38
|
stdout.write(id);
|
|
36
39
|
}
|
|
37
40
|
}
|
package/dist/main.js
CHANGED
|
@@ -28,7 +28,8 @@ const argv = await yargs(hideBin(process.argv))
|
|
|
28
28
|
},
|
|
29
29
|
'src-file-name': {
|
|
30
30
|
type: 'string',
|
|
31
|
-
|
|
31
|
+
default: '',
|
|
32
|
+
required: false,
|
|
32
33
|
description: 'The name(path) of the file in local filesystem'
|
|
33
34
|
},
|
|
34
35
|
'dest-mime-type': {
|
|
@@ -43,6 +44,12 @@ const argv = await yargs(hideBin(process.argv))
|
|
|
43
44
|
default: '',
|
|
44
45
|
description: 'Media mime-type'
|
|
45
46
|
},
|
|
47
|
+
pipe: {
|
|
48
|
+
type: 'boolean',
|
|
49
|
+
required: false,
|
|
50
|
+
default: false,
|
|
51
|
+
description: 'Use stdin instead of the source file'
|
|
52
|
+
},
|
|
46
53
|
'print-id': {
|
|
47
54
|
type: 'boolean',
|
|
48
55
|
required: false,
|
|
@@ -82,6 +89,18 @@ const argv = await yargs(hideBin(process.argv))
|
|
|
82
89
|
default: '',
|
|
83
90
|
description: 'Media mime-type'
|
|
84
91
|
},
|
|
92
|
+
pipe: {
|
|
93
|
+
type: 'boolean',
|
|
94
|
+
required: false,
|
|
95
|
+
default: false,
|
|
96
|
+
description: 'Use stdout instead of the dest file'
|
|
97
|
+
},
|
|
98
|
+
'remove-bom': {
|
|
99
|
+
type: 'boolean',
|
|
100
|
+
required: false,
|
|
101
|
+
default: false,
|
|
102
|
+
description: 'Remove BOM chars in receiving content'
|
|
103
|
+
},
|
|
85
104
|
'print-id': {
|
|
86
105
|
type: 'boolean',
|
|
87
106
|
required: false,
|
|
@@ -186,7 +205,9 @@ switch (`${argv._[0]}`) {
|
|
|
186
205
|
srcFileName: argv['src-file-name'] || '',
|
|
187
206
|
destMimeType: argv['dest-mime-type'] || '',
|
|
188
207
|
srcMimeType: argv['src-mime-type'] || '',
|
|
208
|
+
pipe: argv['pipe'] || false,
|
|
189
209
|
printId: argv['print-id'] || false,
|
|
210
|
+
stdin: process.stdin,
|
|
190
211
|
stdout: process.stdout,
|
|
191
212
|
stderr: process.stderr
|
|
192
213
|
}));
|
|
@@ -198,7 +219,10 @@ switch (`${argv._[0]}`) {
|
|
|
198
219
|
srcFileName: argv['src-file-name'] || '',
|
|
199
220
|
destFileName: argv['dest-file-name'] || '',
|
|
200
221
|
destMimeType: argv['dest-mime-type'] || '',
|
|
222
|
+
pipe: argv['pipe'] || false,
|
|
223
|
+
removeBom: argv['remove-bom'] || false,
|
|
201
224
|
printId: argv['print-id'] || false,
|
|
225
|
+
stdin: process.stdin,
|
|
202
226
|
stdout: process.stdout,
|
|
203
227
|
stderr: process.stderr
|
|
204
228
|
}));
|
|
@@ -219,6 +243,7 @@ switch (`${argv._[0]}`) {
|
|
|
219
243
|
sendNotificationEmail: argv['send-notification-email'],
|
|
220
244
|
printId: argv['print-id'] || false,
|
|
221
245
|
emailMessage: argv['email-message'],
|
|
246
|
+
stdin: process.stdin,
|
|
222
247
|
stdout: process.stdout,
|
|
223
248
|
stderr: process.stderr
|
|
224
249
|
}));
|
package/dist/tdrive.js
CHANGED
|
@@ -56,7 +56,7 @@ export function validateQueryValue(s) {
|
|
|
56
56
|
* @returns instance of drive.
|
|
57
57
|
*/
|
|
58
58
|
export function driveClient() {
|
|
59
|
-
const SCOPES = ['https://www.googleapis.com/auth/drive
|
|
59
|
+
const SCOPES = ['https://www.googleapis.com/auth/drive'];
|
|
60
60
|
const auth = new GoogleAuth({
|
|
61
61
|
scopes: SCOPES
|
|
62
62
|
});
|
package/dist/trecv.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Writable } from 'stream';
|
|
1
3
|
import { drive_v3 } from '@googleapis/drive';
|
|
2
4
|
export declare class DownloadFileError extends Error {
|
|
3
5
|
constructor(message: string);
|
|
@@ -27,6 +29,14 @@ export declare type RecvFileOpts = {
|
|
|
27
29
|
* @type Media mime-type.
|
|
28
30
|
*/
|
|
29
31
|
destMimeType: string;
|
|
32
|
+
/**
|
|
33
|
+
* @type Remove BOM chars in receiving content.
|
|
34
|
+
*/
|
|
35
|
+
removeBom?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* @type The dest content from stream. It passed by pipe option.
|
|
38
|
+
*/
|
|
39
|
+
destStream?: Writable;
|
|
30
40
|
};
|
|
31
41
|
/**
|
|
32
42
|
* Download the file from Google Drive to the locale file
|
|
@@ -34,7 +44,7 @@ export declare type RecvFileOpts = {
|
|
|
34
44
|
* @param opts - options.
|
|
35
45
|
* @returns
|
|
36
46
|
*/
|
|
37
|
-
export declare function downloadFile(drive: drive_v3.Drive, opts: Pick<RecvFileOpts, 'fileId' | 'destFileName' | 'destMimeType'>): Promise<void>;
|
|
47
|
+
export declare function downloadFile(drive: drive_v3.Drive, opts: Pick<RecvFileOpts, 'fileId' | 'destFileName' | 'destMimeType' | 'removeBom' | 'destStream'>): Promise<void>;
|
|
38
48
|
/**
|
|
39
49
|
* Receive the file from Google Drive to the locale file
|
|
40
50
|
* @param drive - drive instance.
|
package/dist/trecv.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
|
+
import { pipeline } from 'stream';
|
|
2
3
|
import { promisify } from 'util';
|
|
4
|
+
import stripBomStream from 'strip-bom-stream';
|
|
3
5
|
import { getFileId, GetFileIdError } from './tdrive.js';
|
|
6
|
+
const promisePipeline = promisify(pipeline);
|
|
4
7
|
export class DownloadFileError extends Error {
|
|
5
8
|
constructor(message) {
|
|
6
9
|
//https://stackoverflow.com/questions/41102060/typescript-extending-error-class
|
|
@@ -15,10 +18,10 @@ export class DownloadFileError extends Error {
|
|
|
15
18
|
* @returns
|
|
16
19
|
*/
|
|
17
20
|
export async function downloadFile(drive, opts) {
|
|
18
|
-
let ret;
|
|
21
|
+
let ret = undefined;
|
|
19
22
|
try {
|
|
20
|
-
const { fileId, destFileName, destMimeType } = opts;
|
|
21
|
-
|
|
23
|
+
const { fileId, destFileName, destMimeType, destStream, removeBom } = opts;
|
|
24
|
+
let dest = destStream ? destStream : fs.createWriteStream(destFileName);
|
|
22
25
|
try {
|
|
23
26
|
if (destMimeType) {
|
|
24
27
|
const params = {
|
|
@@ -26,8 +29,11 @@ export async function downloadFile(drive, opts) {
|
|
|
26
29
|
mimeType: destMimeType
|
|
27
30
|
};
|
|
28
31
|
const res = await drive.files.export(params, { responseType: 'stream' });
|
|
29
|
-
|
|
30
|
-
|
|
32
|
+
if (removeBom) {
|
|
33
|
+
await promisePipeline(res.data, stripBomStream(), dest);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
await promisePipeline(res.data, dest);
|
|
31
37
|
}
|
|
32
38
|
}
|
|
33
39
|
else {
|
|
@@ -36,9 +42,7 @@ export async function downloadFile(drive, opts) {
|
|
|
36
42
|
alt: 'media'
|
|
37
43
|
};
|
|
38
44
|
const res = await drive.files.get(params, { responseType: 'stream' });
|
|
39
|
-
|
|
40
|
-
dest.write(c);
|
|
41
|
-
}
|
|
45
|
+
await promisePipeline(res.data, dest);
|
|
42
46
|
}
|
|
43
47
|
}
|
|
44
48
|
catch (err) {
|
|
@@ -52,7 +56,9 @@ export async function downloadFile(drive, opts) {
|
|
|
52
56
|
}
|
|
53
57
|
finally {
|
|
54
58
|
// return promisify(dest.close.bind(dest))() ここで return すると常に undfeind になる
|
|
55
|
-
|
|
59
|
+
if (dest.close) {
|
|
60
|
+
ret = promisify(dest.close.bind(dest))();
|
|
61
|
+
}
|
|
56
62
|
}
|
|
57
63
|
}
|
|
58
64
|
catch (err) {
|
|
@@ -67,13 +73,22 @@ export async function downloadFile(drive, opts) {
|
|
|
67
73
|
* @returns id of file in Google Drive
|
|
68
74
|
*/
|
|
69
75
|
export async function recvFile(drive, opts) {
|
|
70
|
-
const { fileId: inFileId, parentId, srcFileName, destFileName, destMimeType } = opts;
|
|
76
|
+
const { fileId: inFileId, parentId, srcFileName, destFileName, destMimeType, removeBom, destStream } = opts;
|
|
77
|
+
if (destFileName === '' && destStream === undefined) {
|
|
78
|
+
throw new Error('The destination is not specified');
|
|
79
|
+
}
|
|
71
80
|
let fileId = inFileId !== '' ? inFileId : await getFileId(drive, parentId, srcFileName);
|
|
72
81
|
if (fileId === '') {
|
|
73
82
|
throw new GetFileIdError(
|
|
74
83
|
// `The srouce file not found in paretnt id : ${srcFileName}, ${parentId}`
|
|
75
84
|
`The srouce file not found`);
|
|
76
85
|
}
|
|
77
|
-
await downloadFile(drive, {
|
|
86
|
+
await downloadFile(drive, {
|
|
87
|
+
fileId,
|
|
88
|
+
destFileName,
|
|
89
|
+
destMimeType,
|
|
90
|
+
removeBom,
|
|
91
|
+
destStream
|
|
92
|
+
});
|
|
78
93
|
return fileId;
|
|
79
94
|
}
|
package/dist/tsend.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Readable } from 'stream';
|
|
1
3
|
import { drive_v3 } from '@googleapis/drive';
|
|
2
4
|
export declare class UploadFileError extends Error {
|
|
3
5
|
constructor(message: string);
|
|
@@ -34,6 +36,10 @@ export declare type SendFileOpts = {
|
|
|
34
36
|
* @type Media mime-type.
|
|
35
37
|
*/
|
|
36
38
|
srcMimeType: string;
|
|
39
|
+
/**
|
|
40
|
+
* @type The srouce content from stream. It passed by pipe option.
|
|
41
|
+
*/
|
|
42
|
+
srcStream?: Readable;
|
|
37
43
|
};
|
|
38
44
|
/**
|
|
39
45
|
* Create file using by source file into Google Drive.
|
|
@@ -41,7 +47,7 @@ export declare type SendFileOpts = {
|
|
|
41
47
|
* @param opts - options.
|
|
42
48
|
* @returns Print the id of the file that is sended into remote
|
|
43
49
|
*/
|
|
44
|
-
export declare function uploadFile(drive: drive_v3.Drive, opts: Pick<SendFileOpts, 'parentId' | 'destFileName' | 'srcFileName' | 'destMimeType' | 'srcMimeType'>): Promise<string>;
|
|
50
|
+
export declare function uploadFile(drive: drive_v3.Drive, opts: Pick<SendFileOpts, 'parentId' | 'destFileName' | 'srcFileName' | 'destMimeType' | 'srcMimeType' | 'srcStream'>): Promise<string>;
|
|
45
51
|
/**
|
|
46
52
|
* Update file using by source file into Google Drive.
|
|
47
53
|
* @param drive - drive instance.
|
|
@@ -50,7 +56,7 @@ export declare function uploadFile(drive: drive_v3.Drive, opts: Pick<SendFileOpt
|
|
|
50
56
|
*/
|
|
51
57
|
export declare function updateFile(drive: drive_v3.Drive, opts: {
|
|
52
58
|
fileId: string;
|
|
53
|
-
} & Pick<SendFileOpts, 'srcFileName' | 'destMimeType' | 'srcMimeType'>): Promise<string>;
|
|
59
|
+
} & Pick<SendFileOpts, 'srcFileName' | 'destMimeType' | 'srcMimeType' | 'srcStream'>): Promise<string>;
|
|
54
60
|
/**
|
|
55
61
|
* Send file using by source file into Google Drive.
|
|
56
62
|
* @param drive - drive instance.
|
package/dist/tsend.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import * as path from 'path';
|
|
2
2
|
import * as fs from 'fs';
|
|
3
|
-
import { promisify } from 'util';
|
|
4
3
|
import { getFileId } from './tdrive.js';
|
|
5
4
|
export class UploadFileError extends Error {
|
|
6
5
|
constructor(message) {
|
|
@@ -23,41 +22,30 @@ export class UpdateFileError extends Error {
|
|
|
23
22
|
* @returns Print the id of the file that is sended into remote
|
|
24
23
|
*/
|
|
25
24
|
export async function uploadFile(drive, opts) {
|
|
26
|
-
let ret = '';
|
|
27
25
|
try {
|
|
28
|
-
const { parentId, destFileName, srcFileName, destMimeType, srcMimeType } = opts;
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if (destMimeType) {
|
|
42
|
-
params.requestBody.mimeType = destMimeType;
|
|
43
|
-
}
|
|
44
|
-
if (srcMimeType) {
|
|
45
|
-
params.media.mimeType = srcMimeType;
|
|
46
|
-
}
|
|
47
|
-
const res = await drive.files.create(params);
|
|
48
|
-
ret = res.data.id || '';
|
|
26
|
+
const { parentId, destFileName, srcFileName, destMimeType, srcMimeType, srcStream } = opts;
|
|
27
|
+
const params = {
|
|
28
|
+
requestBody: {
|
|
29
|
+
name: path.basename(destFileName),
|
|
30
|
+
parents: [parentId]
|
|
31
|
+
},
|
|
32
|
+
media: {
|
|
33
|
+
body: srcStream ? srcStream : fs.createReadStream(srcFileName)
|
|
34
|
+
},
|
|
35
|
+
fields: 'id'
|
|
36
|
+
};
|
|
37
|
+
if (destMimeType) {
|
|
38
|
+
params.requestBody.mimeType = destMimeType;
|
|
49
39
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
finally {
|
|
54
|
-
await promisify(srcStream.close.bind(srcStream))();
|
|
40
|
+
if (srcMimeType) {
|
|
41
|
+
params.media.mimeType = srcMimeType;
|
|
55
42
|
}
|
|
43
|
+
const res = await drive.files.create(params);
|
|
44
|
+
return res.data.id || '';
|
|
56
45
|
}
|
|
57
46
|
catch (err) {
|
|
58
|
-
throw err;
|
|
47
|
+
throw new UploadFileError(JSON.stringify(err.errors));
|
|
59
48
|
}
|
|
60
|
-
return ret;
|
|
61
49
|
}
|
|
62
50
|
/**
|
|
63
51
|
* Update file using by source file into Google Drive.
|
|
@@ -66,39 +54,28 @@ export async function uploadFile(drive, opts) {
|
|
|
66
54
|
* @returns id of file in Google Drive
|
|
67
55
|
*/
|
|
68
56
|
export async function updateFile(drive, opts) {
|
|
69
|
-
let ret = '';
|
|
70
57
|
try {
|
|
71
|
-
const { fileId, srcFileName, destMimeType, srcMimeType } = opts;
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
if (destMimeType) {
|
|
83
|
-
params.requestBody.mimeType = destMimeType;
|
|
84
|
-
}
|
|
85
|
-
if (srcMimeType) {
|
|
86
|
-
params.media.mimeType = srcMimeType;
|
|
87
|
-
}
|
|
88
|
-
const res = await drive.files.update(params);
|
|
89
|
-
ret = res.data.id || '';
|
|
90
|
-
}
|
|
91
|
-
catch (err) {
|
|
92
|
-
throw new UpdateFileError(JSON.stringify(err.errors));
|
|
58
|
+
const { fileId, srcFileName, destMimeType, srcMimeType, srcStream } = opts;
|
|
59
|
+
const params = {
|
|
60
|
+
fileId,
|
|
61
|
+
requestBody: {},
|
|
62
|
+
media: {
|
|
63
|
+
body: srcStream ? srcStream : fs.createReadStream(srcFileName)
|
|
64
|
+
},
|
|
65
|
+
fields: 'id'
|
|
66
|
+
};
|
|
67
|
+
if (destMimeType) {
|
|
68
|
+
params.requestBody.mimeType = destMimeType;
|
|
93
69
|
}
|
|
94
|
-
|
|
95
|
-
|
|
70
|
+
if (srcMimeType) {
|
|
71
|
+
params.media.mimeType = srcMimeType;
|
|
96
72
|
}
|
|
73
|
+
const res = await drive.files.update(params);
|
|
74
|
+
return res.data.id || '';
|
|
97
75
|
}
|
|
98
76
|
catch (err) {
|
|
99
|
-
throw err;
|
|
77
|
+
throw new UpdateFileError(JSON.stringify(err.errors));
|
|
100
78
|
}
|
|
101
|
-
return ret;
|
|
102
79
|
}
|
|
103
80
|
/**
|
|
104
81
|
* Send file using by source file into Google Drive.
|
|
@@ -107,7 +84,10 @@ export async function updateFile(drive, opts) {
|
|
|
107
84
|
* @returns id of file in Google Drive
|
|
108
85
|
*/
|
|
109
86
|
export async function sendFile(drive, opts) {
|
|
110
|
-
const { fileId: inFileId, parentId, destFileName, srcFileName, destMimeType, srcMimeType } = opts;
|
|
87
|
+
const { fileId: inFileId, parentId, destFileName, srcFileName, destMimeType, srcMimeType, srcStream } = opts;
|
|
88
|
+
if (srcFileName === '' && srcStream === undefined) {
|
|
89
|
+
throw new Error('The source content is not specified');
|
|
90
|
+
}
|
|
111
91
|
let fileId = inFileId !== '' ? inFileId : await getFileId(drive, parentId, destFileName);
|
|
112
92
|
if (fileId === '') {
|
|
113
93
|
return uploadFile(drive, {
|
|
@@ -115,8 +95,15 @@ export async function sendFile(drive, opts) {
|
|
|
115
95
|
destFileName,
|
|
116
96
|
srcFileName,
|
|
117
97
|
destMimeType,
|
|
118
|
-
srcMimeType
|
|
98
|
+
srcMimeType,
|
|
99
|
+
srcStream
|
|
119
100
|
});
|
|
120
101
|
}
|
|
121
|
-
return updateFile(drive, {
|
|
102
|
+
return updateFile(drive, {
|
|
103
|
+
fileId,
|
|
104
|
+
srcFileName,
|
|
105
|
+
destMimeType,
|
|
106
|
+
srcMimeType,
|
|
107
|
+
srcStream
|
|
108
|
+
});
|
|
122
109
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "guratan",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Tiny send tool for Google Drive",
|
|
5
5
|
"author": "hankei6km <hankei6km@gmail.com> (https://github.com/hankei6km)",
|
|
6
6
|
"license": "MIT",
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@googleapis/drive": "^2.3.0",
|
|
38
|
+
"strip-bom-stream": "^5.0.0",
|
|
38
39
|
"yargs": "^17.3.1"
|
|
39
40
|
},
|
|
40
41
|
"devDependencies": {
|