@pipedream/google_drive 0.4.0 → 0.4.2
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/LICENSE +7 -0
- package/actions/create-folder/create-folder.mjs +36 -1
- package/actions/find-folder/find-folder.mjs +13 -2
- package/actions/list-files/list-files.mjs +50 -0
- package/actions/replace-file/replace-file.mjs +47 -3
- package/actions/upload-file/upload-file.mjs +33 -2
- package/constants.mjs +10 -0
- package/google_drive.app.mjs +8 -5
- package/package.json +1 -1
- package/utils.mjs +20 -0
- package/pnpm-lock.yaml +0 -393
package/LICENSE
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Copyright 2020 Pipedream, Inc.
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
4
|
+
|
|
5
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
6
|
+
|
|
7
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import googleDrive from "../../google_drive.app.mjs";
|
|
2
|
+
import {
|
|
3
|
+
getListFilesOpts,
|
|
4
|
+
toSingleLineString,
|
|
5
|
+
} from "../../utils.mjs";
|
|
6
|
+
|
|
7
|
+
import { GOOGLE_DRIVE_FOLDER_MIME_TYPE } from "../../constants.mjs";
|
|
2
8
|
|
|
3
9
|
export default {
|
|
4
10
|
key: "google_drive-create-folder",
|
|
5
11
|
name: "Create Folder",
|
|
6
12
|
description: "Create a new empty folder. [See the docs](https://developers.google.com/drive/api/v3/reference/files/create) for more information",
|
|
7
|
-
version: "0.0.
|
|
13
|
+
version: "0.0.5",
|
|
8
14
|
type: "action",
|
|
9
15
|
props: {
|
|
10
16
|
googleDrive,
|
|
@@ -36,12 +42,41 @@ export default {
|
|
|
36
42
|
description: "The name of the new folder",
|
|
37
43
|
optional: true,
|
|
38
44
|
},
|
|
45
|
+
createIfExists: {
|
|
46
|
+
type: "boolean",
|
|
47
|
+
label: "Create If Exists?",
|
|
48
|
+
description: toSingleLineString(`
|
|
49
|
+
If the folder already exists and is not in the trash, should we create it? This option defaults to 'true' for
|
|
50
|
+
backwards compatability and to be consistent with default Google Drive behavior.
|
|
51
|
+
`),
|
|
52
|
+
optional: true,
|
|
53
|
+
default: true,
|
|
54
|
+
},
|
|
39
55
|
},
|
|
40
56
|
async run({ $ }) {
|
|
41
57
|
const {
|
|
42
58
|
parentId,
|
|
43
59
|
name,
|
|
60
|
+
createIfExists,
|
|
44
61
|
} = this;
|
|
62
|
+
let folder;
|
|
63
|
+
if (createIfExists == false) {//checking "false" because if this optional prop may not be given
|
|
64
|
+
const folders = (await this.googleDrive.listFilesInPage(null, getListFilesOpts(this.drive, {
|
|
65
|
+
q: `mimeType = '${GOOGLE_DRIVE_FOLDER_MIME_TYPE}' and name contains '${name}' and trashed=false`.trim(),
|
|
66
|
+
}))).files;
|
|
67
|
+
for (let f of folders) {
|
|
68
|
+
if (f.name == name) {
|
|
69
|
+
folder = f;
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (folder) {
|
|
74
|
+
$.export("$summary", "Found existing folder, therefore not creating folder. Returning found folder.");
|
|
75
|
+
const folderDetails = await this.googleDrive.getFile(folder.id);
|
|
76
|
+
|
|
77
|
+
return folderDetails;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
45
80
|
const driveId = this.googleDrive.getDriveId(this.drive);
|
|
46
81
|
const resp = await this.googleDrive.createFolder({
|
|
47
82
|
name,
|
|
@@ -7,7 +7,7 @@ export default {
|
|
|
7
7
|
key: "google_drive-find-folder",
|
|
8
8
|
name: "Find Folder",
|
|
9
9
|
description: "Search for a specific folder by name. [See the docs](https://developers.google.com/drive/api/v3/search-files) for more information",
|
|
10
|
-
version: "0.0.
|
|
10
|
+
version: "0.0.5",
|
|
11
11
|
type: "action",
|
|
12
12
|
props: {
|
|
13
13
|
googleDrive,
|
|
@@ -25,10 +25,21 @@ export default {
|
|
|
25
25
|
],
|
|
26
26
|
description: "The name of the folder to search for",
|
|
27
27
|
},
|
|
28
|
+
includeTrashed: {
|
|
29
|
+
type: "boolean",
|
|
30
|
+
label: "Include Trashed",
|
|
31
|
+
description: "If set to true, returns all matches including items currently in the trash. Defaults to `false`.",
|
|
32
|
+
default: false,
|
|
33
|
+
optional: true,
|
|
34
|
+
},
|
|
28
35
|
},
|
|
29
36
|
async run({ $ }) {
|
|
37
|
+
let q = `mimeType = '${GOOGLE_DRIVE_FOLDER_MIME_TYPE}' and name contains '${this.nameSearchTerm}'`.trim();
|
|
38
|
+
if (!this.includeTrashed) {
|
|
39
|
+
q += " and trashed=false";
|
|
40
|
+
}
|
|
30
41
|
const opts = getListFilesOpts(this.drive, {
|
|
31
|
-
q
|
|
42
|
+
q,
|
|
32
43
|
});
|
|
33
44
|
const folders = (await this.googleDrive.listFilesInPage(null, opts)).files;
|
|
34
45
|
// eslint-disable-next-line multiline-ternary
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import googleDrive from "../../google_drive.app.mjs";
|
|
2
|
+
import { getListFilesOpts } from "../../utils.mjs";
|
|
3
|
+
|
|
4
|
+
export default {
|
|
5
|
+
key: "google_drive-list-files",
|
|
6
|
+
name: "List Files",
|
|
7
|
+
description: "List files from a specific folder. [See the docs](https://developers.google.com/drive/api/v3/reference/files/list) for more information",
|
|
8
|
+
version: "0.0.1",
|
|
9
|
+
type: "action",
|
|
10
|
+
props: {
|
|
11
|
+
googleDrive,
|
|
12
|
+
drive: {
|
|
13
|
+
propDefinition: [
|
|
14
|
+
googleDrive,
|
|
15
|
+
"watchedDrive",
|
|
16
|
+
],
|
|
17
|
+
optional: true,
|
|
18
|
+
},
|
|
19
|
+
folderId: {
|
|
20
|
+
propDefinition: [
|
|
21
|
+
googleDrive,
|
|
22
|
+
"folderId",
|
|
23
|
+
(c) => ({
|
|
24
|
+
drive: c.drive,
|
|
25
|
+
}),
|
|
26
|
+
],
|
|
27
|
+
label: "Parent Folder",
|
|
28
|
+
description: "The ID of the parent folder which contains the file. If not specified, it will list files from the drive's top-level folder.",
|
|
29
|
+
optional: true,
|
|
30
|
+
},
|
|
31
|
+
fields: {
|
|
32
|
+
type: "string",
|
|
33
|
+
label: "Fields",
|
|
34
|
+
description: "The paths of the fields you want included in the response. If not specified, the response includes a default set of fields specific to this method. For development you can use the special value `*` to return all fields, but you'll achieve greater performance by only selecting the fields you need.\n\n**eg:** `files(id,mimeType,name,webContentLink,webViewLink)`",
|
|
35
|
+
optional: true,
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
async run({ $ }) {
|
|
39
|
+
const opts = getListFilesOpts(this.drive);
|
|
40
|
+
if (this.folderId) {
|
|
41
|
+
opts.q = `"${this.folderId}" in parents`;
|
|
42
|
+
}
|
|
43
|
+
if (this.fields) {
|
|
44
|
+
opts.fields = this.fields;
|
|
45
|
+
}
|
|
46
|
+
const files = (await this.googleDrive.listFilesInPage(null, opts)).files;
|
|
47
|
+
$.export("$summary", `Successfully found ${files.length} file(s).`);
|
|
48
|
+
return files;
|
|
49
|
+
},
|
|
50
|
+
};
|
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import googleDrive from "../../google_drive.app.mjs";
|
|
3
3
|
import { omitEmptyStringValues } from "../../utils.mjs";
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
import {
|
|
5
|
+
getFileStream,
|
|
6
|
+
streamToBuffer,
|
|
7
|
+
byteToMB,
|
|
8
|
+
} from "../../utils.mjs";
|
|
9
|
+
import {
|
|
10
|
+
GOOGLE_DRIVE_UPLOAD_TYPE_MEDIA,
|
|
11
|
+
GOOGLE_DRIVE_UPLOAD_TYPE_RESUMABLE,
|
|
12
|
+
} from "../../constants.mjs";
|
|
6
13
|
|
|
7
14
|
export default {
|
|
8
15
|
key: "google_drive-replace-file",
|
|
9
16
|
name: "Replace File",
|
|
10
17
|
description: "Upload a file that replaces an existing file. [See the docs](https://developers.google.com/drive/api/v3/reference/files/update) for more information",
|
|
11
|
-
version: "0.0.
|
|
18
|
+
version: "0.0.5",
|
|
12
19
|
type: "action",
|
|
13
20
|
props: {
|
|
14
21
|
googleDrive,
|
|
@@ -57,6 +64,13 @@ export default {
|
|
|
57
64
|
],
|
|
58
65
|
description: "The MIME type of the new file (e.g., `image/jpeg`)",
|
|
59
66
|
},
|
|
67
|
+
uploadType: {
|
|
68
|
+
propDefinition: [
|
|
69
|
+
googleDrive,
|
|
70
|
+
"uploadType",
|
|
71
|
+
],
|
|
72
|
+
optional: true,
|
|
73
|
+
},
|
|
60
74
|
},
|
|
61
75
|
async run({ $ }) {
|
|
62
76
|
const {
|
|
@@ -66,6 +80,7 @@ export default {
|
|
|
66
80
|
name,
|
|
67
81
|
mimeType,
|
|
68
82
|
} = this;
|
|
83
|
+
let { uploadType } = this;
|
|
69
84
|
if (!fileUrl && !filePath) {
|
|
70
85
|
throw new Error("One of File URL and File Path is required.");
|
|
71
86
|
}
|
|
@@ -74,15 +89,44 @@ export default {
|
|
|
74
89
|
fileUrl,
|
|
75
90
|
filePath,
|
|
76
91
|
});
|
|
92
|
+
|
|
93
|
+
if (!uploadType || uploadType === "") {
|
|
94
|
+
try {
|
|
95
|
+
// Its necessary to get the file stream again, after user streamToBuffer function and pass
|
|
96
|
+
// the same object to updateFileMedia function, the function will throw an error about
|
|
97
|
+
// circular json structure.
|
|
98
|
+
// Deep clone is very slow in this case, so its better get the stream again
|
|
99
|
+
const fileBuffer = await streamToBuffer(await getFileStream({
|
|
100
|
+
$,
|
|
101
|
+
fileUrl,
|
|
102
|
+
filePath,
|
|
103
|
+
}));
|
|
104
|
+
const bufferSize = byteToMB(Buffer.byteLength(fileBuffer));
|
|
105
|
+
uploadType = bufferSize > 5
|
|
106
|
+
? GOOGLE_DRIVE_UPLOAD_TYPE_RESUMABLE
|
|
107
|
+
: undefined;
|
|
108
|
+
} catch (err) {
|
|
109
|
+
console.log(err);
|
|
110
|
+
uploadType = undefined;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (uploadType === GOOGLE_DRIVE_UPLOAD_TYPE_MEDIA) {
|
|
115
|
+
uploadType = undefined;
|
|
116
|
+
}
|
|
117
|
+
console.log(`Upload type: ${uploadType}`);
|
|
77
118
|
// Update file media separately from metadata to prevent multipart upload,
|
|
78
119
|
// which `google-apis-nodejs-client` doesn't seem to support for
|
|
79
120
|
// [files.update](https://bit.ly/3lP5sWn)
|
|
80
121
|
await this.googleDrive.updateFileMedia(fileId, fileStream, omitEmptyStringValues({
|
|
81
122
|
mimeType,
|
|
123
|
+
uploadType,
|
|
82
124
|
}));
|
|
125
|
+
|
|
83
126
|
const resp = await this.googleDrive.updateFile(fileId, omitEmptyStringValues({
|
|
84
127
|
name: name || path.basename(fileUrl || filePath),
|
|
85
128
|
mimeType,
|
|
129
|
+
uploadType,
|
|
86
130
|
}));
|
|
87
131
|
$.export("$summary", "Successfully replaced the file");
|
|
88
132
|
return resp;
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
import googleDrive from "../../google_drive.app.mjs";
|
|
2
2
|
import path from "path";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
getFileStream,
|
|
5
|
+
streamToBuffer,
|
|
6
|
+
byteToMB,
|
|
7
|
+
} from "../../utils.mjs";
|
|
4
8
|
import { omitEmptyStringValues } from "../../utils.mjs";
|
|
9
|
+
import {
|
|
10
|
+
GOOGLE_DRIVE_UPLOAD_TYPE_MEDIA,
|
|
11
|
+
GOOGLE_DRIVE_UPLOAD_TYPE_RESUMABLE,
|
|
12
|
+
} from "../../constants.mjs";
|
|
5
13
|
|
|
6
14
|
export default {
|
|
7
15
|
key: "google_drive-upload-file",
|
|
8
16
|
name: "Upload File",
|
|
9
17
|
description: "Copy an existing file to Google Drive. [See the docs](https://developers.google.com/drive/api/v3/manage-uploads) for more information",
|
|
10
|
-
version: "0.0.
|
|
18
|
+
version: "0.0.6",
|
|
11
19
|
type: "action",
|
|
12
20
|
props: {
|
|
13
21
|
googleDrive,
|
|
@@ -58,6 +66,13 @@ export default {
|
|
|
58
66
|
description:
|
|
59
67
|
"The file's MIME type (e.g., `image/jpeg`). Google Drive will attempt to automatically detect an appropriate value from uploaded content if no value is provided.",
|
|
60
68
|
},
|
|
69
|
+
uploadType: {
|
|
70
|
+
propDefinition: [
|
|
71
|
+
googleDrive,
|
|
72
|
+
"uploadType",
|
|
73
|
+
],
|
|
74
|
+
optional: true,
|
|
75
|
+
},
|
|
61
76
|
},
|
|
62
77
|
async run({ $ }) {
|
|
63
78
|
const {
|
|
@@ -67,6 +82,7 @@ export default {
|
|
|
67
82
|
name,
|
|
68
83
|
mimeType,
|
|
69
84
|
} = this;
|
|
85
|
+
let { uploadType } = this;
|
|
70
86
|
if (!fileUrl && !filePath) {
|
|
71
87
|
throw new Error("One of File URL and File Path is required.");
|
|
72
88
|
}
|
|
@@ -76,12 +92,27 @@ export default {
|
|
|
76
92
|
fileUrl,
|
|
77
93
|
filePath,
|
|
78
94
|
});
|
|
95
|
+
if (!uploadType || uploadType === "") {
|
|
96
|
+
try {
|
|
97
|
+
const fileBuffer = await streamToBuffer(file);
|
|
98
|
+
const bufferSize = byteToMB(Buffer.byteLength(fileBuffer));
|
|
99
|
+
uploadType = bufferSize > 5
|
|
100
|
+
? GOOGLE_DRIVE_UPLOAD_TYPE_RESUMABLE
|
|
101
|
+
: GOOGLE_DRIVE_UPLOAD_TYPE_MEDIA;
|
|
102
|
+
console.log(`Upload type: ${uploadType}`);
|
|
103
|
+
} catch (err) {
|
|
104
|
+
console.log(err);
|
|
105
|
+
uploadType = "media";
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
console.log(`Upload type: ${uploadType}`);
|
|
79
109
|
const resp = await this.googleDrive.createFile(omitEmptyStringValues({
|
|
80
110
|
file,
|
|
81
111
|
mimeType,
|
|
82
112
|
name: name || path.basename(fileUrl || filePath),
|
|
83
113
|
parentId,
|
|
84
114
|
driveId,
|
|
115
|
+
uploadType,
|
|
85
116
|
}));
|
|
86
117
|
$.export("$summary", `Successfully uploaded a new file, "${resp.name}"`);
|
|
87
118
|
return resp;
|
package/constants.mjs
CHANGED
|
@@ -157,6 +157,15 @@ const GOOGLE_DRIVE_GRANTEE_TYPES = [
|
|
|
157
157
|
GOOGLE_DRIVE_GRANTEE_ANYONE,
|
|
158
158
|
];
|
|
159
159
|
|
|
160
|
+
export const GOOGLE_DRIVE_UPLOAD_TYPE_MEDIA = "media";
|
|
161
|
+
export const GOOGLE_DRIVE_UPLOAD_TYPE_RESUMABLE = "resumable";
|
|
162
|
+
export const GOOGLE_DRIVE_UPLOAD_TYPE_MULTIPART = "multipart";
|
|
163
|
+
const GOOGLE_DRIVE_UPLOAD_TYPES = [
|
|
164
|
+
GOOGLE_DRIVE_UPLOAD_TYPE_MEDIA,
|
|
165
|
+
GOOGLE_DRIVE_UPLOAD_TYPE_RESUMABLE,
|
|
166
|
+
GOOGLE_DRIVE_UPLOAD_TYPE_MULTIPART,
|
|
167
|
+
];
|
|
168
|
+
|
|
160
169
|
export {
|
|
161
170
|
GOOGLE_DRIVE_NOTIFICATION_SYNC,
|
|
162
171
|
GOOGLE_DRIVE_NOTIFICATION_ADD,
|
|
@@ -173,6 +182,7 @@ export {
|
|
|
173
182
|
MAX_FILE_OPTION_PATH_SEGMENTS,
|
|
174
183
|
GOOGLE_DRIVE_MIME_TYPE_PREFIX,
|
|
175
184
|
GOOGLE_DRIVE_FOLDER_MIME_TYPE,
|
|
185
|
+
GOOGLE_DRIVE_UPLOAD_TYPES,
|
|
176
186
|
// Google Drive Roles
|
|
177
187
|
GOOGLE_DRIVE_ROLE_OWNER,
|
|
178
188
|
GOOGLE_DRIVE_ROLE_ORGANIZER,
|
package/google_drive.app.mjs
CHANGED
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
GOOGLE_DRIVE_GRANTEE_TYPES,
|
|
15
15
|
GOOGLE_DRIVE_GRANTEE_ANYONE,
|
|
16
16
|
GOOGLE_DRIVE_ROLE_READER,
|
|
17
|
+
GOOGLE_DRIVE_UPLOAD_TYPES,
|
|
17
18
|
} from "./constants.mjs";
|
|
18
19
|
import googleMimeTypes from "./actions/google-mime-types.mjs";
|
|
19
20
|
|
|
@@ -188,11 +189,7 @@ export default {
|
|
|
188
189
|
multipart - Multipart upload. Upload both the media and its metadata, in a single request.
|
|
189
190
|
resumable - Resumable upload. Upload the file in a resumable fashion, using a series of
|
|
190
191
|
at least two requests where the first request includes the metadata.`,
|
|
191
|
-
options:
|
|
192
|
-
"media",
|
|
193
|
-
"multipart",
|
|
194
|
-
"resumable",
|
|
195
|
-
],
|
|
192
|
+
options: GOOGLE_DRIVE_UPLOAD_TYPES,
|
|
196
193
|
},
|
|
197
194
|
useDomainAdminAccess: {
|
|
198
195
|
type: "boolean",
|
|
@@ -1003,6 +1000,7 @@ export default {
|
|
|
1003
1000
|
fields,
|
|
1004
1001
|
supportsAllDrives = true,
|
|
1005
1002
|
requestBody,
|
|
1003
|
+
uploadType,
|
|
1006
1004
|
...extraParams
|
|
1007
1005
|
} = opts;
|
|
1008
1006
|
const drive = this.drive();
|
|
@@ -1015,6 +1013,7 @@ export default {
|
|
|
1015
1013
|
? {
|
|
1016
1014
|
mimeType,
|
|
1017
1015
|
body: file,
|
|
1016
|
+
uploadType,
|
|
1018
1017
|
}
|
|
1019
1018
|
: undefined,
|
|
1020
1019
|
requestBody: {
|
|
@@ -1081,6 +1080,7 @@ export default {
|
|
|
1081
1080
|
const {
|
|
1082
1081
|
mimeType,
|
|
1083
1082
|
supportsAllDrives = true,
|
|
1083
|
+
uploadType,
|
|
1084
1084
|
...extraParams
|
|
1085
1085
|
} = opts;
|
|
1086
1086
|
const drive = this.drive();
|
|
@@ -1091,6 +1091,7 @@ export default {
|
|
|
1091
1091
|
media: {
|
|
1092
1092
|
mimeType,
|
|
1093
1093
|
body: fileStream,
|
|
1094
|
+
uploadType,
|
|
1094
1095
|
},
|
|
1095
1096
|
...extraParams,
|
|
1096
1097
|
})
|
|
@@ -1128,12 +1129,14 @@ export default {
|
|
|
1128
1129
|
addParents,
|
|
1129
1130
|
supportsAllDrives = true,
|
|
1130
1131
|
requestBody,
|
|
1132
|
+
uploadType,
|
|
1131
1133
|
...extraParams
|
|
1132
1134
|
} = opts;
|
|
1133
1135
|
const drive = this.drive();
|
|
1134
1136
|
return (
|
|
1135
1137
|
await drive.files.update({
|
|
1136
1138
|
fileId,
|
|
1139
|
+
uploadType,
|
|
1137
1140
|
removeParents,
|
|
1138
1141
|
addParents,
|
|
1139
1142
|
fields,
|
package/package.json
CHANGED
package/utils.mjs
CHANGED
|
@@ -81,6 +81,24 @@ async function getFileStream({
|
|
|
81
81
|
: fs.createReadStream(filePath);
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
+
function streamToBuffer(stream) {
|
|
85
|
+
return new Promise((resolve, reject) => {
|
|
86
|
+
const chunks = [];
|
|
87
|
+
stream.on("data", (chunk) => {
|
|
88
|
+
chunks.push(chunk);
|
|
89
|
+
}).on("end", () => {
|
|
90
|
+
resolve(Buffer.concat(chunks));
|
|
91
|
+
// eslint-disable-next-line newline-per-chained-call
|
|
92
|
+
}).on("error", (err) => {
|
|
93
|
+
reject(err);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function byteToMB(byte) {
|
|
99
|
+
return byte / 1024 / 1024;
|
|
100
|
+
}
|
|
101
|
+
|
|
84
102
|
/**
|
|
85
103
|
* Truncate an array of path segments from its base
|
|
86
104
|
*
|
|
@@ -244,4 +262,6 @@ export {
|
|
|
244
262
|
toSingleLineString,
|
|
245
263
|
buildFilePaths,
|
|
246
264
|
getFilePaths,
|
|
265
|
+
streamToBuffer,
|
|
266
|
+
byteToMB,
|
|
247
267
|
};
|
package/pnpm-lock.yaml
DELETED
|
@@ -1,393 +0,0 @@
|
|
|
1
|
-
lockfileVersion: 5.4
|
|
2
|
-
|
|
3
|
-
specifiers:
|
|
4
|
-
'@googleapis/drive': ^2.3.0
|
|
5
|
-
'@pipedream/platform': ^0.9.0
|
|
6
|
-
axios: ^0.21.1
|
|
7
|
-
mime-db: ^1.51.0
|
|
8
|
-
uuid: ^8.3.2
|
|
9
|
-
|
|
10
|
-
dependencies:
|
|
11
|
-
'@googleapis/drive': 2.3.0
|
|
12
|
-
'@pipedream/platform': 0.9.0
|
|
13
|
-
axios: 0.21.4
|
|
14
|
-
mime-db: 1.52.0
|
|
15
|
-
uuid: 8.3.2
|
|
16
|
-
|
|
17
|
-
packages:
|
|
18
|
-
|
|
19
|
-
/@googleapis/drive/2.3.0:
|
|
20
|
-
resolution: {integrity: sha512-uXLF2qc1Hzee25acyEEmyfwbyw1nI2hjUde7pTNOc3K4OkVlPdq08+e7x+hdlUkQPazmqhtbPmWWm2HNAek9+A==}
|
|
21
|
-
engines: {node: '>=10.0.0'}
|
|
22
|
-
dependencies:
|
|
23
|
-
googleapis-common: 5.1.0
|
|
24
|
-
transitivePeerDependencies:
|
|
25
|
-
- encoding
|
|
26
|
-
- supports-color
|
|
27
|
-
dev: false
|
|
28
|
-
|
|
29
|
-
/@pipedream/platform/0.9.0:
|
|
30
|
-
resolution: {integrity: sha512-d8gcWQi9qkjeMz/Cr/oRQ3h2LOEouxxsb3dPPCZDcAL/w0I3BywvUzr4/wmWENORilwKUZZs+wWmmj5BT0zMIQ==}
|
|
31
|
-
dependencies:
|
|
32
|
-
axios: 0.19.2
|
|
33
|
-
fp-ts: 2.12.1
|
|
34
|
-
io-ts: 2.2.16_fp-ts@2.12.1
|
|
35
|
-
transitivePeerDependencies:
|
|
36
|
-
- supports-color
|
|
37
|
-
dev: false
|
|
38
|
-
|
|
39
|
-
/abort-controller/3.0.0:
|
|
40
|
-
resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
|
|
41
|
-
engines: {node: '>=6.5'}
|
|
42
|
-
dependencies:
|
|
43
|
-
event-target-shim: 5.0.1
|
|
44
|
-
dev: false
|
|
45
|
-
|
|
46
|
-
/agent-base/6.0.2:
|
|
47
|
-
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
|
|
48
|
-
engines: {node: '>= 6.0.0'}
|
|
49
|
-
dependencies:
|
|
50
|
-
debug: 4.3.4
|
|
51
|
-
transitivePeerDependencies:
|
|
52
|
-
- supports-color
|
|
53
|
-
dev: false
|
|
54
|
-
|
|
55
|
-
/arrify/2.0.1:
|
|
56
|
-
resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==}
|
|
57
|
-
engines: {node: '>=8'}
|
|
58
|
-
dev: false
|
|
59
|
-
|
|
60
|
-
/axios/0.19.2:
|
|
61
|
-
resolution: {integrity: sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==}
|
|
62
|
-
deprecated: Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410
|
|
63
|
-
dependencies:
|
|
64
|
-
follow-redirects: 1.5.10
|
|
65
|
-
transitivePeerDependencies:
|
|
66
|
-
- supports-color
|
|
67
|
-
dev: false
|
|
68
|
-
|
|
69
|
-
/axios/0.21.4:
|
|
70
|
-
resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==}
|
|
71
|
-
dependencies:
|
|
72
|
-
follow-redirects: 1.15.0
|
|
73
|
-
transitivePeerDependencies:
|
|
74
|
-
- debug
|
|
75
|
-
dev: false
|
|
76
|
-
|
|
77
|
-
/base64-js/1.5.1:
|
|
78
|
-
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
|
|
79
|
-
dev: false
|
|
80
|
-
|
|
81
|
-
/bignumber.js/9.0.2:
|
|
82
|
-
resolution: {integrity: sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw==}
|
|
83
|
-
dev: false
|
|
84
|
-
|
|
85
|
-
/buffer-equal-constant-time/1.0.1:
|
|
86
|
-
resolution: {integrity: sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=}
|
|
87
|
-
dev: false
|
|
88
|
-
|
|
89
|
-
/call-bind/1.0.2:
|
|
90
|
-
resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
|
|
91
|
-
dependencies:
|
|
92
|
-
function-bind: 1.1.1
|
|
93
|
-
get-intrinsic: 1.1.1
|
|
94
|
-
dev: false
|
|
95
|
-
|
|
96
|
-
/debug/3.1.0:
|
|
97
|
-
resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==}
|
|
98
|
-
peerDependencies:
|
|
99
|
-
supports-color: '*'
|
|
100
|
-
peerDependenciesMeta:
|
|
101
|
-
supports-color:
|
|
102
|
-
optional: true
|
|
103
|
-
dependencies:
|
|
104
|
-
ms: 2.0.0
|
|
105
|
-
dev: false
|
|
106
|
-
|
|
107
|
-
/debug/4.3.4:
|
|
108
|
-
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
|
|
109
|
-
engines: {node: '>=6.0'}
|
|
110
|
-
peerDependencies:
|
|
111
|
-
supports-color: '*'
|
|
112
|
-
peerDependenciesMeta:
|
|
113
|
-
supports-color:
|
|
114
|
-
optional: true
|
|
115
|
-
dependencies:
|
|
116
|
-
ms: 2.1.2
|
|
117
|
-
dev: false
|
|
118
|
-
|
|
119
|
-
/ecdsa-sig-formatter/1.0.11:
|
|
120
|
-
resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==}
|
|
121
|
-
dependencies:
|
|
122
|
-
safe-buffer: 5.2.1
|
|
123
|
-
dev: false
|
|
124
|
-
|
|
125
|
-
/event-target-shim/5.0.1:
|
|
126
|
-
resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
|
|
127
|
-
engines: {node: '>=6'}
|
|
128
|
-
dev: false
|
|
129
|
-
|
|
130
|
-
/extend/3.0.2:
|
|
131
|
-
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
|
|
132
|
-
dev: false
|
|
133
|
-
|
|
134
|
-
/fast-text-encoding/1.0.3:
|
|
135
|
-
resolution: {integrity: sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==}
|
|
136
|
-
dev: false
|
|
137
|
-
|
|
138
|
-
/follow-redirects/1.15.0:
|
|
139
|
-
resolution: {integrity: sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==}
|
|
140
|
-
engines: {node: '>=4.0'}
|
|
141
|
-
peerDependencies:
|
|
142
|
-
debug: '*'
|
|
143
|
-
peerDependenciesMeta:
|
|
144
|
-
debug:
|
|
145
|
-
optional: true
|
|
146
|
-
dev: false
|
|
147
|
-
|
|
148
|
-
/follow-redirects/1.5.10:
|
|
149
|
-
resolution: {integrity: sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==}
|
|
150
|
-
engines: {node: '>=4.0'}
|
|
151
|
-
dependencies:
|
|
152
|
-
debug: 3.1.0
|
|
153
|
-
transitivePeerDependencies:
|
|
154
|
-
- supports-color
|
|
155
|
-
dev: false
|
|
156
|
-
|
|
157
|
-
/fp-ts/2.12.1:
|
|
158
|
-
resolution: {integrity: sha512-oxvgqUYR6O9VkKXrxkJ0NOyU0FrE705MeqgBUMEPWyTu6Pwn768cJbHChw2XOBlgFLKfIHxjr2OOBFpv2mUGZw==}
|
|
159
|
-
dev: false
|
|
160
|
-
|
|
161
|
-
/function-bind/1.1.1:
|
|
162
|
-
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
|
|
163
|
-
dev: false
|
|
164
|
-
|
|
165
|
-
/gaxios/4.3.3:
|
|
166
|
-
resolution: {integrity: sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==}
|
|
167
|
-
engines: {node: '>=10'}
|
|
168
|
-
dependencies:
|
|
169
|
-
abort-controller: 3.0.0
|
|
170
|
-
extend: 3.0.2
|
|
171
|
-
https-proxy-agent: 5.0.1
|
|
172
|
-
is-stream: 2.0.1
|
|
173
|
-
node-fetch: 2.6.7
|
|
174
|
-
transitivePeerDependencies:
|
|
175
|
-
- encoding
|
|
176
|
-
- supports-color
|
|
177
|
-
dev: false
|
|
178
|
-
|
|
179
|
-
/gcp-metadata/4.3.1:
|
|
180
|
-
resolution: {integrity: sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==}
|
|
181
|
-
engines: {node: '>=10'}
|
|
182
|
-
dependencies:
|
|
183
|
-
gaxios: 4.3.3
|
|
184
|
-
json-bigint: 1.0.0
|
|
185
|
-
transitivePeerDependencies:
|
|
186
|
-
- encoding
|
|
187
|
-
- supports-color
|
|
188
|
-
dev: false
|
|
189
|
-
|
|
190
|
-
/get-intrinsic/1.1.1:
|
|
191
|
-
resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==}
|
|
192
|
-
dependencies:
|
|
193
|
-
function-bind: 1.1.1
|
|
194
|
-
has: 1.0.3
|
|
195
|
-
has-symbols: 1.0.3
|
|
196
|
-
dev: false
|
|
197
|
-
|
|
198
|
-
/google-auth-library/7.14.1:
|
|
199
|
-
resolution: {integrity: sha512-5Rk7iLNDFhFeBYc3s8l1CqzbEBcdhwR193RlD4vSNFajIcINKI8W8P0JLmBpwymHqqWbX34pJDQu39cSy/6RsA==}
|
|
200
|
-
engines: {node: '>=10'}
|
|
201
|
-
dependencies:
|
|
202
|
-
arrify: 2.0.1
|
|
203
|
-
base64-js: 1.5.1
|
|
204
|
-
ecdsa-sig-formatter: 1.0.11
|
|
205
|
-
fast-text-encoding: 1.0.3
|
|
206
|
-
gaxios: 4.3.3
|
|
207
|
-
gcp-metadata: 4.3.1
|
|
208
|
-
gtoken: 5.3.2
|
|
209
|
-
jws: 4.0.0
|
|
210
|
-
lru-cache: 6.0.0
|
|
211
|
-
transitivePeerDependencies:
|
|
212
|
-
- encoding
|
|
213
|
-
- supports-color
|
|
214
|
-
dev: false
|
|
215
|
-
|
|
216
|
-
/google-p12-pem/3.1.4:
|
|
217
|
-
resolution: {integrity: sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg==}
|
|
218
|
-
engines: {node: '>=10'}
|
|
219
|
-
hasBin: true
|
|
220
|
-
dependencies:
|
|
221
|
-
node-forge: 1.3.1
|
|
222
|
-
dev: false
|
|
223
|
-
|
|
224
|
-
/googleapis-common/5.1.0:
|
|
225
|
-
resolution: {integrity: sha512-RXrif+Gzhq1QAzfjxulbGvAY3FPj8zq/CYcvgjzDbaBNCD6bUl+86I7mUs4DKWHGruuK26ijjR/eDpWIDgNROA==}
|
|
226
|
-
engines: {node: '>=10.10.0'}
|
|
227
|
-
dependencies:
|
|
228
|
-
extend: 3.0.2
|
|
229
|
-
gaxios: 4.3.3
|
|
230
|
-
google-auth-library: 7.14.1
|
|
231
|
-
qs: 6.10.3
|
|
232
|
-
url-template: 2.0.8
|
|
233
|
-
uuid: 8.3.2
|
|
234
|
-
transitivePeerDependencies:
|
|
235
|
-
- encoding
|
|
236
|
-
- supports-color
|
|
237
|
-
dev: false
|
|
238
|
-
|
|
239
|
-
/gtoken/5.3.2:
|
|
240
|
-
resolution: {integrity: sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==}
|
|
241
|
-
engines: {node: '>=10'}
|
|
242
|
-
dependencies:
|
|
243
|
-
gaxios: 4.3.3
|
|
244
|
-
google-p12-pem: 3.1.4
|
|
245
|
-
jws: 4.0.0
|
|
246
|
-
transitivePeerDependencies:
|
|
247
|
-
- encoding
|
|
248
|
-
- supports-color
|
|
249
|
-
dev: false
|
|
250
|
-
|
|
251
|
-
/has-symbols/1.0.3:
|
|
252
|
-
resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
|
|
253
|
-
engines: {node: '>= 0.4'}
|
|
254
|
-
dev: false
|
|
255
|
-
|
|
256
|
-
/has/1.0.3:
|
|
257
|
-
resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
|
|
258
|
-
engines: {node: '>= 0.4.0'}
|
|
259
|
-
dependencies:
|
|
260
|
-
function-bind: 1.1.1
|
|
261
|
-
dev: false
|
|
262
|
-
|
|
263
|
-
/https-proxy-agent/5.0.1:
|
|
264
|
-
resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
|
|
265
|
-
engines: {node: '>= 6'}
|
|
266
|
-
dependencies:
|
|
267
|
-
agent-base: 6.0.2
|
|
268
|
-
debug: 4.3.4
|
|
269
|
-
transitivePeerDependencies:
|
|
270
|
-
- supports-color
|
|
271
|
-
dev: false
|
|
272
|
-
|
|
273
|
-
/io-ts/2.2.16_fp-ts@2.12.1:
|
|
274
|
-
resolution: {integrity: sha512-y5TTSa6VP6le0hhmIyN0dqEXkrZeJLeC5KApJq6VLci3UEKF80lZ+KuoUs02RhBxNWlrqSNxzfI7otLX1Euv8Q==}
|
|
275
|
-
peerDependencies:
|
|
276
|
-
fp-ts: ^2.5.0
|
|
277
|
-
dependencies:
|
|
278
|
-
fp-ts: 2.12.1
|
|
279
|
-
dev: false
|
|
280
|
-
|
|
281
|
-
/is-stream/2.0.1:
|
|
282
|
-
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
|
|
283
|
-
engines: {node: '>=8'}
|
|
284
|
-
dev: false
|
|
285
|
-
|
|
286
|
-
/json-bigint/1.0.0:
|
|
287
|
-
resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==}
|
|
288
|
-
dependencies:
|
|
289
|
-
bignumber.js: 9.0.2
|
|
290
|
-
dev: false
|
|
291
|
-
|
|
292
|
-
/jwa/2.0.0:
|
|
293
|
-
resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==}
|
|
294
|
-
dependencies:
|
|
295
|
-
buffer-equal-constant-time: 1.0.1
|
|
296
|
-
ecdsa-sig-formatter: 1.0.11
|
|
297
|
-
safe-buffer: 5.2.1
|
|
298
|
-
dev: false
|
|
299
|
-
|
|
300
|
-
/jws/4.0.0:
|
|
301
|
-
resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==}
|
|
302
|
-
dependencies:
|
|
303
|
-
jwa: 2.0.0
|
|
304
|
-
safe-buffer: 5.2.1
|
|
305
|
-
dev: false
|
|
306
|
-
|
|
307
|
-
/lru-cache/6.0.0:
|
|
308
|
-
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
|
|
309
|
-
engines: {node: '>=10'}
|
|
310
|
-
dependencies:
|
|
311
|
-
yallist: 4.0.0
|
|
312
|
-
dev: false
|
|
313
|
-
|
|
314
|
-
/mime-db/1.52.0:
|
|
315
|
-
resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
|
|
316
|
-
engines: {node: '>= 0.6'}
|
|
317
|
-
dev: false
|
|
318
|
-
|
|
319
|
-
/ms/2.0.0:
|
|
320
|
-
resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=}
|
|
321
|
-
dev: false
|
|
322
|
-
|
|
323
|
-
/ms/2.1.2:
|
|
324
|
-
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
|
|
325
|
-
dev: false
|
|
326
|
-
|
|
327
|
-
/node-fetch/2.6.7:
|
|
328
|
-
resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==}
|
|
329
|
-
engines: {node: 4.x || >=6.0.0}
|
|
330
|
-
peerDependencies:
|
|
331
|
-
encoding: ^0.1.0
|
|
332
|
-
peerDependenciesMeta:
|
|
333
|
-
encoding:
|
|
334
|
-
optional: true
|
|
335
|
-
dependencies:
|
|
336
|
-
whatwg-url: 5.0.0
|
|
337
|
-
dev: false
|
|
338
|
-
|
|
339
|
-
/node-forge/1.3.1:
|
|
340
|
-
resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
|
|
341
|
-
engines: {node: '>= 6.13.0'}
|
|
342
|
-
dev: false
|
|
343
|
-
|
|
344
|
-
/object-inspect/1.12.0:
|
|
345
|
-
resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==}
|
|
346
|
-
dev: false
|
|
347
|
-
|
|
348
|
-
/qs/6.10.3:
|
|
349
|
-
resolution: {integrity: sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==}
|
|
350
|
-
engines: {node: '>=0.6'}
|
|
351
|
-
dependencies:
|
|
352
|
-
side-channel: 1.0.4
|
|
353
|
-
dev: false
|
|
354
|
-
|
|
355
|
-
/safe-buffer/5.2.1:
|
|
356
|
-
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
|
|
357
|
-
dev: false
|
|
358
|
-
|
|
359
|
-
/side-channel/1.0.4:
|
|
360
|
-
resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
|
|
361
|
-
dependencies:
|
|
362
|
-
call-bind: 1.0.2
|
|
363
|
-
get-intrinsic: 1.1.1
|
|
364
|
-
object-inspect: 1.12.0
|
|
365
|
-
dev: false
|
|
366
|
-
|
|
367
|
-
/tr46/0.0.3:
|
|
368
|
-
resolution: {integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=}
|
|
369
|
-
dev: false
|
|
370
|
-
|
|
371
|
-
/url-template/2.0.8:
|
|
372
|
-
resolution: {integrity: sha1-/FZaPMy/93MMd19WQflVV5FDnyE=}
|
|
373
|
-
dev: false
|
|
374
|
-
|
|
375
|
-
/uuid/8.3.2:
|
|
376
|
-
resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
|
|
377
|
-
hasBin: true
|
|
378
|
-
dev: false
|
|
379
|
-
|
|
380
|
-
/webidl-conversions/3.0.1:
|
|
381
|
-
resolution: {integrity: sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=}
|
|
382
|
-
dev: false
|
|
383
|
-
|
|
384
|
-
/whatwg-url/5.0.0:
|
|
385
|
-
resolution: {integrity: sha1-lmRU6HZUYuN2RNNib2dCzotwll0=}
|
|
386
|
-
dependencies:
|
|
387
|
-
tr46: 0.0.3
|
|
388
|
-
webidl-conversions: 3.0.1
|
|
389
|
-
dev: false
|
|
390
|
-
|
|
391
|
-
/yallist/4.0.0:
|
|
392
|
-
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
|
|
393
|
-
dev: false
|