guratan 0.7.0 → 0.8.1
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 +10 -8
- package/dist/cli.js +7 -4
- package/dist/main.js +70 -58
- package/dist/tdrive.d.ts +2 -1
- package/dist/tdrive.js +5 -2
- package/dist/trecv.d.ts +6 -3
- package/dist/trecv.js +8 -4
- package/dist/tsend.d.ts +7 -4
- package/dist/tsend.js +12 -6
- package/dist/tshare.d.ts +5 -1
- package/dist/tshare.js +7 -4
- package/package.json +9 -9
package/dist/cli.d.ts
CHANGED
|
@@ -1,31 +1,32 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { Readable, Writable } from 'stream';
|
|
3
|
-
|
|
2
|
+
type Opts = {
|
|
4
3
|
stdin: Readable;
|
|
5
4
|
stdout: Writable;
|
|
6
5
|
stderr: Writable;
|
|
7
6
|
};
|
|
8
|
-
|
|
7
|
+
type OptsSend = Opts & {
|
|
9
8
|
fileId: string;
|
|
10
9
|
parentId: string;
|
|
11
10
|
destFileName: string;
|
|
12
11
|
srcFileName: string;
|
|
13
12
|
destMimeType: string;
|
|
14
13
|
srcMimeType: string;
|
|
14
|
+
supportsAllDrives?: boolean;
|
|
15
15
|
pipe: boolean;
|
|
16
16
|
printId: boolean;
|
|
17
17
|
};
|
|
18
|
-
|
|
18
|
+
type OptsRecv = Opts & {
|
|
19
19
|
fileId: string;
|
|
20
20
|
parentId: string;
|
|
21
21
|
srcFileName: string;
|
|
22
22
|
destFileName: string;
|
|
23
23
|
destMimeType: string;
|
|
24
|
+
supportsAllDrives?: boolean;
|
|
24
25
|
pipe: boolean;
|
|
25
26
|
removeBom: boolean;
|
|
26
27
|
printId: boolean;
|
|
27
28
|
};
|
|
28
|
-
|
|
29
|
+
type OptsShare = Opts & {
|
|
29
30
|
fileId: string;
|
|
30
31
|
parentId: string;
|
|
31
32
|
destFileName: string;
|
|
@@ -39,9 +40,10 @@ declare type OptsShare = Opts & {
|
|
|
39
40
|
transferOwnership?: boolean;
|
|
40
41
|
sendNotificationEmail?: boolean;
|
|
41
42
|
emailMessage: string;
|
|
43
|
+
supportsAllDrives?: boolean;
|
|
42
44
|
printId: boolean;
|
|
43
45
|
};
|
|
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>;
|
|
46
|
-
export declare const cliShare: ({ fileId, parentId, destFileName, type, role, emailAddress, domain, allowFileDiscovery, view, moveToNewOwnersRoot, transferOwnership, sendNotificationEmail, emailMessage, printId, stdout, stderr }: OptsShare) => Promise<number>;
|
|
46
|
+
export declare const cliSend: ({ fileId, parentId, destFileName, srcFileName, destMimeType, srcMimeType, supportsAllDrives, pipe, printId, stdin, stdout, stderr }: OptsSend) => Promise<number>;
|
|
47
|
+
export declare const cliRecv: ({ fileId, parentId, srcFileName, destFileName, destMimeType, supportsAllDrives, printId, pipe, removeBom, stdout, stderr }: OptsRecv) => Promise<number>;
|
|
48
|
+
export declare const cliShare: ({ fileId, parentId, destFileName, type, role, emailAddress, domain, allowFileDiscovery, view, moveToNewOwnersRoot, transferOwnership, sendNotificationEmail, emailMessage, supportsAllDrives, printId, stdout, stderr }: OptsShare) => Promise<number>;
|
|
47
49
|
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, pipe, printId, stdin, stdout, stderr }) => {
|
|
2
|
+
export const cliSend = async ({ fileId, parentId, destFileName, srcFileName, destMimeType, srcMimeType, supportsAllDrives, pipe, printId, stdin, stdout, stderr }) => {
|
|
3
3
|
try {
|
|
4
4
|
const { sendFile } = await import('./tsend.js');
|
|
5
5
|
const id = await sendFile(driveClient(), {
|
|
@@ -9,6 +9,7 @@ export const cliSend = async ({ fileId, parentId, destFileName, srcFileName, des
|
|
|
9
9
|
srcFileName,
|
|
10
10
|
destMimeType,
|
|
11
11
|
srcMimeType,
|
|
12
|
+
supportsAllDrives: supportsAllDrives || false,
|
|
12
13
|
srcStream: pipe ? stdin : undefined
|
|
13
14
|
});
|
|
14
15
|
if (printId) {
|
|
@@ -22,7 +23,7 @@ export const cliSend = async ({ fileId, parentId, destFileName, srcFileName, des
|
|
|
22
23
|
}
|
|
23
24
|
return 0;
|
|
24
25
|
};
|
|
25
|
-
export const cliRecv = async ({ fileId, parentId, srcFileName, destFileName, destMimeType, printId, pipe, removeBom, stdout, stderr }) => {
|
|
26
|
+
export const cliRecv = async ({ fileId, parentId, srcFileName, destFileName, destMimeType, supportsAllDrives, printId, pipe, removeBom, stdout, stderr }) => {
|
|
26
27
|
try {
|
|
27
28
|
const { recvFile } = await import('./trecv.js');
|
|
28
29
|
const id = await recvFile(driveClient(), {
|
|
@@ -31,6 +32,7 @@ export const cliRecv = async ({ fileId, parentId, srcFileName, destFileName, des
|
|
|
31
32
|
srcFileName,
|
|
32
33
|
destFileName,
|
|
33
34
|
destMimeType,
|
|
35
|
+
supportsAllDrives: supportsAllDrives || false,
|
|
34
36
|
removeBom,
|
|
35
37
|
destStream: pipe ? stdout : undefined
|
|
36
38
|
});
|
|
@@ -45,7 +47,7 @@ export const cliRecv = async ({ fileId, parentId, srcFileName, destFileName, des
|
|
|
45
47
|
}
|
|
46
48
|
return 0;
|
|
47
49
|
};
|
|
48
|
-
export const cliShare = async ({ fileId, parentId, destFileName, type, role, emailAddress, domain, allowFileDiscovery, view, moveToNewOwnersRoot, transferOwnership, sendNotificationEmail, emailMessage, printId, stdout, stderr }) => {
|
|
50
|
+
export const cliShare = async ({ fileId, parentId, destFileName, type, role, emailAddress, domain, allowFileDiscovery, view, moveToNewOwnersRoot, transferOwnership, sendNotificationEmail, emailMessage, supportsAllDrives, printId, stdout, stderr }) => {
|
|
49
51
|
try {
|
|
50
52
|
const { createPermisson } = await import('./tshare.js');
|
|
51
53
|
const id = await createPermisson(driveClient(), {
|
|
@@ -61,7 +63,8 @@ export const cliShare = async ({ fileId, parentId, destFileName, type, role, ema
|
|
|
61
63
|
moveToNewOwnersRoot,
|
|
62
64
|
transferOwnership,
|
|
63
65
|
sendNotificationEmail,
|
|
64
|
-
emailMessage
|
|
66
|
+
emailMessage,
|
|
67
|
+
supportsAllDrives: supportsAllDrives || false
|
|
65
68
|
});
|
|
66
69
|
if (printId) {
|
|
67
70
|
stdout.write(id);
|
package/dist/main.js
CHANGED
|
@@ -44,6 +44,12 @@ const argv = await yargs(hideBin(process.argv))
|
|
|
44
44
|
default: '',
|
|
45
45
|
description: 'Media mime-type'
|
|
46
46
|
},
|
|
47
|
+
'supports-all-drives': {
|
|
48
|
+
type: 'boolean',
|
|
49
|
+
required: false,
|
|
50
|
+
default: false,
|
|
51
|
+
description: 'Supports both My Drives and shared drives(`includeItemsFromAllDrives` is also enabled)'
|
|
52
|
+
},
|
|
47
53
|
pipe: {
|
|
48
54
|
type: 'boolean',
|
|
49
55
|
required: false,
|
|
@@ -57,6 +63,21 @@ const argv = await yargs(hideBin(process.argv))
|
|
|
57
63
|
description: 'Print the id of the file that is sended into remote'
|
|
58
64
|
}
|
|
59
65
|
});
|
|
66
|
+
}, async (argv) => {
|
|
67
|
+
process.exit(await cliSend({
|
|
68
|
+
fileId: argv['file-id'],
|
|
69
|
+
parentId: argv['parent-id'] || '',
|
|
70
|
+
destFileName: argv['dest-file-name'] || '',
|
|
71
|
+
srcFileName: argv['src-file-name'] || '',
|
|
72
|
+
destMimeType: argv['dest-mime-type'] || '',
|
|
73
|
+
srcMimeType: argv['src-mime-type'] || '',
|
|
74
|
+
pipe: argv['pipe'] || false,
|
|
75
|
+
supportsAllDrives: argv['supports-all-drives'] || false,
|
|
76
|
+
printId: argv['print-id'] || false,
|
|
77
|
+
stdin: process.stdin,
|
|
78
|
+
stdout: process.stdout,
|
|
79
|
+
stderr: process.stderr
|
|
80
|
+
}));
|
|
60
81
|
})
|
|
61
82
|
.command('recv [OPTIONS]', 'receive file from Google Drive to local file', (yargs) => {
|
|
62
83
|
return yargs.options({
|
|
@@ -89,6 +110,12 @@ const argv = await yargs(hideBin(process.argv))
|
|
|
89
110
|
default: '',
|
|
90
111
|
description: 'Media mime-type'
|
|
91
112
|
},
|
|
113
|
+
'supports-all-drives': {
|
|
114
|
+
type: 'boolean',
|
|
115
|
+
required: false,
|
|
116
|
+
default: false,
|
|
117
|
+
description: 'Supports both My Drives and shared drives(`includeItemsFromAllDrives` is also enabled). It not used with "export" method(it has no `supportsAllDrives` parameter)'
|
|
118
|
+
},
|
|
92
119
|
pipe: {
|
|
93
120
|
type: 'boolean',
|
|
94
121
|
required: false,
|
|
@@ -108,6 +135,21 @@ const argv = await yargs(hideBin(process.argv))
|
|
|
108
135
|
description: 'Print the id of the file that is received from remote'
|
|
109
136
|
}
|
|
110
137
|
});
|
|
138
|
+
}, async (argv) => {
|
|
139
|
+
process.exit(await cliRecv({
|
|
140
|
+
fileId: argv['file-id'],
|
|
141
|
+
parentId: argv['parent-id'] || '',
|
|
142
|
+
srcFileName: argv['src-file-name'] || '',
|
|
143
|
+
destFileName: argv['dest-file-name'] || '',
|
|
144
|
+
destMimeType: argv['dest-mime-type'] || '',
|
|
145
|
+
supportsAllDrives: argv['supports-all-drives'] || false,
|
|
146
|
+
pipe: argv['pipe'] || false,
|
|
147
|
+
removeBom: argv['remove-bom'] || false,
|
|
148
|
+
printId: argv['print-id'] || false,
|
|
149
|
+
stdin: process.stdin,
|
|
150
|
+
stdout: process.stdout,
|
|
151
|
+
stderr: process.stderr
|
|
152
|
+
}));
|
|
111
153
|
})
|
|
112
154
|
.command('share [OPTIONS]', 'share file in Google Drive', (yargs) => {
|
|
113
155
|
return yargs.options({
|
|
@@ -184,6 +226,12 @@ const argv = await yargs(hideBin(process.argv))
|
|
|
184
226
|
default: '',
|
|
185
227
|
description: 'A plain text custom message to include in the notification email.'
|
|
186
228
|
},
|
|
229
|
+
'supports-all-drives': {
|
|
230
|
+
type: 'boolean',
|
|
231
|
+
required: false,
|
|
232
|
+
default: false,
|
|
233
|
+
description: 'Supports both My Drives and shared drives(`includeItemsFromAllDrives` is also enabled)'
|
|
234
|
+
},
|
|
187
235
|
'print-id': {
|
|
188
236
|
type: 'boolean',
|
|
189
237
|
required: false,
|
|
@@ -191,65 +239,29 @@ const argv = await yargs(hideBin(process.argv))
|
|
|
191
239
|
description: 'print id of file that is sended into Google Drive'
|
|
192
240
|
}
|
|
193
241
|
});
|
|
242
|
+
}, async (argv) => {
|
|
243
|
+
process.exit(await cliShare({
|
|
244
|
+
fileId: argv['file-id'],
|
|
245
|
+
parentId: argv['parent-id'] || '',
|
|
246
|
+
destFileName: argv['dest-file-name'] || '',
|
|
247
|
+
type: argv['type'],
|
|
248
|
+
role: argv['role'],
|
|
249
|
+
emailAddress: argv['email-address'],
|
|
250
|
+
domain: argv['domain'],
|
|
251
|
+
view: argv['view'],
|
|
252
|
+
allowFileDiscovery: argv['allow-file-discovery'],
|
|
253
|
+
moveToNewOwnersRoot: argv['move-to-new-owners-root'],
|
|
254
|
+
transferOwnership: argv['transfer-ownership'],
|
|
255
|
+
sendNotificationEmail: argv['send-notification-email'],
|
|
256
|
+
printId: argv['print-id'] || false,
|
|
257
|
+
emailMessage: argv['email-message'],
|
|
258
|
+
supportsAllDrives: argv['supports-all-drives'] || false,
|
|
259
|
+
stdin: process.stdin,
|
|
260
|
+
stdout: process.stdout,
|
|
261
|
+
stderr: process.stderr
|
|
262
|
+
}));
|
|
194
263
|
})
|
|
195
264
|
.demandCommand()
|
|
196
|
-
.demand(
|
|
265
|
+
.demand(1)
|
|
197
266
|
.strictOptions(true)
|
|
198
267
|
.help().argv;
|
|
199
|
-
switch (`${argv._[0]}`) {
|
|
200
|
-
case 'send':
|
|
201
|
-
process.exit(await cliSend({
|
|
202
|
-
fileId: argv['file-id'],
|
|
203
|
-
parentId: argv['parent-id'] || '',
|
|
204
|
-
destFileName: argv['dest-file-name'] || '',
|
|
205
|
-
srcFileName: argv['src-file-name'] || '',
|
|
206
|
-
destMimeType: argv['dest-mime-type'] || '',
|
|
207
|
-
srcMimeType: argv['src-mime-type'] || '',
|
|
208
|
-
pipe: argv['pipe'] || false,
|
|
209
|
-
printId: argv['print-id'] || false,
|
|
210
|
-
stdin: process.stdin,
|
|
211
|
-
stdout: process.stdout,
|
|
212
|
-
stderr: process.stderr
|
|
213
|
-
}));
|
|
214
|
-
break;
|
|
215
|
-
case 'recv':
|
|
216
|
-
process.exit(await cliRecv({
|
|
217
|
-
fileId: argv['file-id'],
|
|
218
|
-
parentId: argv['parent-id'] || '',
|
|
219
|
-
srcFileName: argv['src-file-name'] || '',
|
|
220
|
-
destFileName: argv['dest-file-name'] || '',
|
|
221
|
-
destMimeType: argv['dest-mime-type'] || '',
|
|
222
|
-
pipe: argv['pipe'] || false,
|
|
223
|
-
removeBom: argv['remove-bom'] || false,
|
|
224
|
-
printId: argv['print-id'] || false,
|
|
225
|
-
stdin: process.stdin,
|
|
226
|
-
stdout: process.stdout,
|
|
227
|
-
stderr: process.stderr
|
|
228
|
-
}));
|
|
229
|
-
break;
|
|
230
|
-
case 'share':
|
|
231
|
-
process.exit(await cliShare({
|
|
232
|
-
fileId: argv['file-id'],
|
|
233
|
-
parentId: argv['parent-id'] || '',
|
|
234
|
-
destFileName: argv['dest-file-name'] || '',
|
|
235
|
-
type: argv['type'],
|
|
236
|
-
role: argv['role'],
|
|
237
|
-
emailAddress: argv['email-address'],
|
|
238
|
-
domain: argv['domain'],
|
|
239
|
-
view: argv['view'],
|
|
240
|
-
allowFileDiscovery: argv['allow-file-discovery'],
|
|
241
|
-
moveToNewOwnersRoot: argv['move-to-new-owners-root'],
|
|
242
|
-
transferOwnership: argv['transfer-ownership'],
|
|
243
|
-
sendNotificationEmail: argv['send-notification-email'],
|
|
244
|
-
printId: argv['print-id'] || false,
|
|
245
|
-
emailMessage: argv['email-message'],
|
|
246
|
-
stdin: process.stdin,
|
|
247
|
-
stdout: process.stdout,
|
|
248
|
-
stderr: process.stderr
|
|
249
|
-
}));
|
|
250
|
-
break;
|
|
251
|
-
default:
|
|
252
|
-
console.log(argv);
|
|
253
|
-
process.stderr.write(`unknown command: ${argv._[0]}\n`);
|
|
254
|
-
process.exit(1);
|
|
255
|
-
}
|
package/dist/tdrive.d.ts
CHANGED
|
@@ -7,9 +7,10 @@ export declare class GetFileIdError extends Error {
|
|
|
7
7
|
* @param drive - drive instance.
|
|
8
8
|
* @param parentId - id of folder in Google Deive.
|
|
9
9
|
* @param fileName - file name.
|
|
10
|
+
* @param [supportsAllDrives=false] - supports both My Drives and shared drives.
|
|
10
11
|
* @returns id of file or blank(when file is not found)
|
|
11
12
|
*/
|
|
12
|
-
export declare function getFileId(drive: drive_v3.Drive, parentId: string, fileName: string): Promise<string>;
|
|
13
|
+
export declare function getFileId(drive: drive_v3.Drive, parentId: string, fileName: string, supportsAllDrives?: boolean): Promise<string>;
|
|
13
14
|
/**
|
|
14
15
|
* Validate value that is used in query parameter.
|
|
15
16
|
* return false if value has included "'">
|
package/dist/tdrive.js
CHANGED
|
@@ -12,9 +12,10 @@ export class GetFileIdError extends Error {
|
|
|
12
12
|
* @param drive - drive instance.
|
|
13
13
|
* @param parentId - id of folder in Google Deive.
|
|
14
14
|
* @param fileName - file name.
|
|
15
|
+
* @param [supportsAllDrives=false] - supports both My Drives and shared drives.
|
|
15
16
|
* @returns id of file or blank(when file is not found)
|
|
16
17
|
*/
|
|
17
|
-
export async function getFileId(drive, parentId, fileName) {
|
|
18
|
+
export async function getFileId(drive, parentId, fileName, supportsAllDrives = false) {
|
|
18
19
|
try {
|
|
19
20
|
if (validateQueryValue(parentId) === false) {
|
|
20
21
|
throw new GetFileIdError(`Invalid paretnt id : ${parentId}`);
|
|
@@ -25,7 +26,9 @@ export async function getFileId(drive, parentId, fileName) {
|
|
|
25
26
|
const list = await drive.files.list({
|
|
26
27
|
pageSize: 10,
|
|
27
28
|
q: `'${parentId}' in parents and name = '${fileName}'`,
|
|
28
|
-
fields: 'files(id, name)'
|
|
29
|
+
fields: 'files(id, name)',
|
|
30
|
+
includeItemsFromAllDrives: supportsAllDrives, // 現状では supportsAllDrives が指定されていれば常に true にする
|
|
31
|
+
supportsAllDrives
|
|
29
32
|
});
|
|
30
33
|
if (list.data.files && list.data.files.length > 0) {
|
|
31
34
|
return list.data.files[0].id || '';
|
package/dist/trecv.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { Writable } from 'stream';
|
|
3
2
|
import { drive_v3 } from '@googleapis/drive';
|
|
4
3
|
export declare class DownloadFileError extends Error {
|
|
@@ -7,7 +6,7 @@ export declare class DownloadFileError extends Error {
|
|
|
7
6
|
/**
|
|
8
7
|
* Options for recvFile().
|
|
9
8
|
*/
|
|
10
|
-
export
|
|
9
|
+
export type RecvFileOpts = {
|
|
11
10
|
/**
|
|
12
11
|
* @type The ID of the file or shared drive.
|
|
13
12
|
*/
|
|
@@ -29,6 +28,10 @@ export declare type RecvFileOpts = {
|
|
|
29
28
|
* @type Media mime-type.
|
|
30
29
|
*/
|
|
31
30
|
destMimeType: string;
|
|
31
|
+
/**
|
|
32
|
+
* Supports both My Drives and shared drives
|
|
33
|
+
*/
|
|
34
|
+
supportsAllDrives?: boolean;
|
|
32
35
|
/**
|
|
33
36
|
* @type Remove BOM chars in receiving content.
|
|
34
37
|
*/
|
|
@@ -44,7 +47,7 @@ export declare type RecvFileOpts = {
|
|
|
44
47
|
* @param opts - options.
|
|
45
48
|
* @returns
|
|
46
49
|
*/
|
|
47
|
-
export declare function downloadFile(drive: drive_v3.Drive, opts: Pick<RecvFileOpts, 'fileId' | 'destFileName' | 'destMimeType' | 'removeBom' | 'destStream'>): Promise<void>;
|
|
50
|
+
export declare function downloadFile(drive: drive_v3.Drive, opts: Pick<RecvFileOpts, 'fileId' | 'destFileName' | 'destMimeType' | 'supportsAllDrives' | 'removeBom' | 'destStream'>): Promise<void>;
|
|
48
51
|
/**
|
|
49
52
|
* Receive the file from Google Drive to the locale file
|
|
50
53
|
* @param drive - drive instance.
|
package/dist/trecv.js
CHANGED
|
@@ -20,7 +20,7 @@ export class DownloadFileError extends Error {
|
|
|
20
20
|
export async function downloadFile(drive, opts) {
|
|
21
21
|
let ret = undefined;
|
|
22
22
|
try {
|
|
23
|
-
const { fileId, destFileName, destMimeType, destStream, removeBom } = opts;
|
|
23
|
+
const { fileId, destFileName, destMimeType, destStream, supportsAllDrives, removeBom } = opts;
|
|
24
24
|
let dest = destStream ? destStream : fs.createWriteStream(destFileName);
|
|
25
25
|
try {
|
|
26
26
|
if (destMimeType) {
|
|
@@ -39,7 +39,8 @@ export async function downloadFile(drive, opts) {
|
|
|
39
39
|
else {
|
|
40
40
|
const params = {
|
|
41
41
|
fileId,
|
|
42
|
-
alt: 'media'
|
|
42
|
+
alt: 'media',
|
|
43
|
+
supportsAllDrives: supportsAllDrives || false
|
|
43
44
|
};
|
|
44
45
|
const res = await drive.files.get(params, { responseType: 'stream' });
|
|
45
46
|
await promisePipeline(res.data, dest);
|
|
@@ -73,11 +74,13 @@ export async function downloadFile(drive, opts) {
|
|
|
73
74
|
* @returns id of file in Google Drive
|
|
74
75
|
*/
|
|
75
76
|
export async function recvFile(drive, opts) {
|
|
76
|
-
const { fileId: inFileId, parentId, srcFileName, destFileName, destMimeType, removeBom, destStream } = opts;
|
|
77
|
+
const { fileId: inFileId, parentId, srcFileName, destFileName, destMimeType, supportsAllDrives, removeBom, destStream } = opts;
|
|
77
78
|
if (destFileName === '' && destStream === undefined) {
|
|
78
79
|
throw new Error('The destination is not specified');
|
|
79
80
|
}
|
|
80
|
-
let fileId = inFileId !== ''
|
|
81
|
+
let fileId = inFileId !== ''
|
|
82
|
+
? inFileId
|
|
83
|
+
: await getFileId(drive, parentId, srcFileName, supportsAllDrives || false);
|
|
81
84
|
if (fileId === '') {
|
|
82
85
|
throw new GetFileIdError(
|
|
83
86
|
// `The srouce file not found in paretnt id : ${srcFileName}, ${parentId}`
|
|
@@ -87,6 +90,7 @@ export async function recvFile(drive, opts) {
|
|
|
87
90
|
fileId,
|
|
88
91
|
destFileName,
|
|
89
92
|
destMimeType,
|
|
93
|
+
supportsAllDrives,
|
|
90
94
|
removeBom,
|
|
91
95
|
destStream
|
|
92
96
|
});
|
package/dist/tsend.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { Readable } from 'stream';
|
|
3
2
|
import { drive_v3 } from '@googleapis/drive';
|
|
4
3
|
export declare class UploadFileError extends Error {
|
|
@@ -10,7 +9,7 @@ export declare class UpdateFileError extends Error {
|
|
|
10
9
|
/**
|
|
11
10
|
* Options for sendFile().
|
|
12
11
|
*/
|
|
13
|
-
export
|
|
12
|
+
export type SendFileOpts = {
|
|
14
13
|
/**
|
|
15
14
|
* @type The ID of the file or shared drive.
|
|
16
15
|
*/
|
|
@@ -36,6 +35,10 @@ export declare type SendFileOpts = {
|
|
|
36
35
|
* @type Media mime-type.
|
|
37
36
|
*/
|
|
38
37
|
srcMimeType: string;
|
|
38
|
+
/**
|
|
39
|
+
* Supports both My Drives and shared drives
|
|
40
|
+
*/
|
|
41
|
+
supportsAllDrives?: boolean;
|
|
39
42
|
/**
|
|
40
43
|
* @type The srouce content from stream. It passed by pipe option.
|
|
41
44
|
*/
|
|
@@ -47,7 +50,7 @@ export declare type SendFileOpts = {
|
|
|
47
50
|
* @param opts - options.
|
|
48
51
|
* @returns Print the id of the file that is sended into remote
|
|
49
52
|
*/
|
|
50
|
-
export declare function uploadFile(drive: drive_v3.Drive, opts: Pick<SendFileOpts, 'parentId' | 'destFileName' | 'srcFileName' | 'destMimeType' | 'srcMimeType' | 'srcStream'>): Promise<string>;
|
|
53
|
+
export declare function uploadFile(drive: drive_v3.Drive, opts: Pick<SendFileOpts, 'parentId' | 'destFileName' | 'srcFileName' | 'destMimeType' | 'srcMimeType' | 'srcStream' | 'supportsAllDrives'>): Promise<string>;
|
|
51
54
|
/**
|
|
52
55
|
* Update file using by source file into Google Drive.
|
|
53
56
|
* @param drive - drive instance.
|
|
@@ -56,7 +59,7 @@ export declare function uploadFile(drive: drive_v3.Drive, opts: Pick<SendFileOpt
|
|
|
56
59
|
*/
|
|
57
60
|
export declare function updateFile(drive: drive_v3.Drive, opts: {
|
|
58
61
|
fileId: string;
|
|
59
|
-
} & Pick<SendFileOpts, 'srcFileName' | 'destMimeType' | 'srcMimeType' | 'srcStream'>): Promise<string>;
|
|
62
|
+
} & Pick<SendFileOpts, 'srcFileName' | 'destMimeType' | 'srcMimeType' | 'srcStream' | 'supportsAllDrives'>): Promise<string>;
|
|
60
63
|
/**
|
|
61
64
|
* Send file using by source file into Google Drive.
|
|
62
65
|
* @param drive - drive instance.
|
package/dist/tsend.js
CHANGED
|
@@ -23,7 +23,7 @@ export class UpdateFileError extends Error {
|
|
|
23
23
|
*/
|
|
24
24
|
export async function uploadFile(drive, opts) {
|
|
25
25
|
try {
|
|
26
|
-
const { parentId, destFileName, srcFileName, destMimeType, srcMimeType, srcStream } = opts;
|
|
26
|
+
const { parentId, destFileName, srcFileName, destMimeType, srcMimeType, supportsAllDrives, srcStream } = opts;
|
|
27
27
|
const params = {
|
|
28
28
|
requestBody: {
|
|
29
29
|
name: path.basename(destFileName),
|
|
@@ -32,7 +32,8 @@ export async function uploadFile(drive, opts) {
|
|
|
32
32
|
media: {
|
|
33
33
|
body: srcStream ? srcStream : fs.createReadStream(srcFileName)
|
|
34
34
|
},
|
|
35
|
-
fields: 'id'
|
|
35
|
+
fields: 'id',
|
|
36
|
+
supportsAllDrives: supportsAllDrives || false
|
|
36
37
|
};
|
|
37
38
|
if (destMimeType) {
|
|
38
39
|
params.requestBody.mimeType = destMimeType;
|
|
@@ -55,14 +56,15 @@ export async function uploadFile(drive, opts) {
|
|
|
55
56
|
*/
|
|
56
57
|
export async function updateFile(drive, opts) {
|
|
57
58
|
try {
|
|
58
|
-
const { fileId, srcFileName, destMimeType, srcMimeType, srcStream } = opts;
|
|
59
|
+
const { fileId, srcFileName, destMimeType, srcMimeType, srcStream, supportsAllDrives } = opts;
|
|
59
60
|
const params = {
|
|
60
61
|
fileId,
|
|
61
62
|
requestBody: {},
|
|
62
63
|
media: {
|
|
63
64
|
body: srcStream ? srcStream : fs.createReadStream(srcFileName)
|
|
64
65
|
},
|
|
65
|
-
fields: 'id'
|
|
66
|
+
fields: 'id',
|
|
67
|
+
supportsAllDrives: supportsAllDrives || false
|
|
66
68
|
};
|
|
67
69
|
if (destMimeType) {
|
|
68
70
|
params.requestBody.mimeType = destMimeType;
|
|
@@ -84,11 +86,13 @@ export async function updateFile(drive, opts) {
|
|
|
84
86
|
* @returns id of file in Google Drive
|
|
85
87
|
*/
|
|
86
88
|
export async function sendFile(drive, opts) {
|
|
87
|
-
const { fileId: inFileId, parentId, destFileName, srcFileName, destMimeType, srcMimeType, srcStream } = opts;
|
|
89
|
+
const { fileId: inFileId, parentId, destFileName, srcFileName, destMimeType, srcMimeType, supportsAllDrives, srcStream } = opts;
|
|
88
90
|
if (srcFileName === '' && srcStream === undefined) {
|
|
89
91
|
throw new Error('The source content is not specified');
|
|
90
92
|
}
|
|
91
|
-
let fileId = inFileId !== ''
|
|
93
|
+
let fileId = inFileId !== ''
|
|
94
|
+
? inFileId
|
|
95
|
+
: await getFileId(drive, parentId, destFileName, supportsAllDrives || false);
|
|
92
96
|
if (fileId === '') {
|
|
93
97
|
return uploadFile(drive, {
|
|
94
98
|
parentId,
|
|
@@ -96,6 +100,7 @@ export async function sendFile(drive, opts) {
|
|
|
96
100
|
srcFileName,
|
|
97
101
|
destMimeType,
|
|
98
102
|
srcMimeType,
|
|
103
|
+
supportsAllDrives,
|
|
99
104
|
srcStream
|
|
100
105
|
});
|
|
101
106
|
}
|
|
@@ -104,6 +109,7 @@ export async function sendFile(drive, opts) {
|
|
|
104
109
|
srcFileName,
|
|
105
110
|
destMimeType,
|
|
106
111
|
srcMimeType,
|
|
112
|
+
supportsAllDrives,
|
|
107
113
|
srcStream
|
|
108
114
|
});
|
|
109
115
|
}
|
package/dist/tshare.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export declare class UpdatePermissonError extends Error {
|
|
|
8
8
|
/**
|
|
9
9
|
* Options for createPermisson().
|
|
10
10
|
*/
|
|
11
|
-
export
|
|
11
|
+
export type CreatePermissonOpts = {
|
|
12
12
|
/**
|
|
13
13
|
* @type The ID of the file or shared drive.
|
|
14
14
|
*/
|
|
@@ -61,6 +61,10 @@ export declare type CreatePermissonOpts = {
|
|
|
61
61
|
* @type A plain text custom message to include in the notification email.
|
|
62
62
|
*/
|
|
63
63
|
emailMessage: string;
|
|
64
|
+
/**
|
|
65
|
+
* Supports both My Drives and shared drives
|
|
66
|
+
*/
|
|
67
|
+
supportsAllDrives?: boolean;
|
|
64
68
|
};
|
|
65
69
|
/**
|
|
66
70
|
* Create permission
|
package/dist/tshare.js
CHANGED
|
@@ -22,15 +22,17 @@ export class UpdatePermissonError extends Error {
|
|
|
22
22
|
export async function createPermisson(drive, opts) {
|
|
23
23
|
let created = false;
|
|
24
24
|
try {
|
|
25
|
-
const { fileId: inFileId, parentId, destFileName, type, role, emailAddress, domain, view, allowFileDiscovery, moveToNewOwnersRoot, transferOwnership, sendNotificationEmail, emailMessage } = opts;
|
|
26
|
-
const fileId = inFileId ||
|
|
25
|
+
const { fileId: inFileId, parentId, destFileName, type, role, emailAddress, domain, view, allowFileDiscovery, moveToNewOwnersRoot, transferOwnership, sendNotificationEmail, emailMessage, supportsAllDrives } = opts;
|
|
26
|
+
const fileId = inFileId ||
|
|
27
|
+
(await getFileId(drive, parentId, destFileName, supportsAllDrives || false));
|
|
27
28
|
const createParams = {
|
|
28
29
|
requestBody: {
|
|
29
30
|
type,
|
|
30
31
|
role
|
|
31
32
|
},
|
|
32
33
|
fileId,
|
|
33
|
-
fields: 'id'
|
|
34
|
+
fields: 'id',
|
|
35
|
+
supportsAllDrives: supportsAllDrives || false
|
|
34
36
|
};
|
|
35
37
|
if (emailAddress) {
|
|
36
38
|
createParams.requestBody.emailAddress = emailAddress;
|
|
@@ -69,7 +71,8 @@ export async function createPermisson(drive, opts) {
|
|
|
69
71
|
role
|
|
70
72
|
},
|
|
71
73
|
fileId,
|
|
72
|
-
fields: 'id'
|
|
74
|
+
fields: 'id',
|
|
75
|
+
supportsAllDrives: supportsAllDrives || false
|
|
73
76
|
});
|
|
74
77
|
}
|
|
75
78
|
return id;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "guratan",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"description": "Tiny send tool for Google Drive",
|
|
5
5
|
"author": "hankei6km <hankei6km@gmail.com> (https://github.com/hankei6km)",
|
|
6
6
|
"license": "MIT",
|
|
@@ -34,18 +34,18 @@
|
|
|
34
34
|
"csb:test": "npm test -- --runInBand --watchAll"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@googleapis/drive": "^
|
|
37
|
+
"@googleapis/drive": "^8.0.0",
|
|
38
38
|
"strip-bom-stream": "^5.0.0",
|
|
39
|
-
"yargs": "^
|
|
39
|
+
"yargs": "^18.0.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@types/jest": "^
|
|
42
|
+
"@types/jest": "^30.0.0",
|
|
43
43
|
"@types/node": "^16.11.26",
|
|
44
44
|
"@types/yargs": "^17.0.9",
|
|
45
|
-
"jest": "^
|
|
46
|
-
"rimraf": "^
|
|
47
|
-
"ts-jest": "^
|
|
48
|
-
"ts-node": "^10.
|
|
49
|
-
"typescript": "^
|
|
45
|
+
"jest": "^30.0.0",
|
|
46
|
+
"rimraf": "^6.0.0",
|
|
47
|
+
"ts-jest": "^29.1.1",
|
|
48
|
+
"ts-node": "^10.9.1",
|
|
49
|
+
"typescript": "^5.1.6"
|
|
50
50
|
}
|
|
51
51
|
}
|