files.com 1.0.204 → 1.0.207
Sign up to get free protection for your applications and to get access to all the features.
- package/_VERSION +1 -1
- package/docs/models/Site.md +1 -0
- package/docs/models/UsageDailySnapshot.md +2 -4
- package/lib/models/File.js +52 -35
- package/package.json +1 -1
- package/src/models/File.js +42 -27
- package/src/models/Site.js +1 -0
- package/src/models/UsageDailySnapshot.js +1 -1
package/_VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.207
|
package/docs/models/Site.md
CHANGED
@@ -562,6 +562,7 @@ await Site.update({
|
|
562
562
|
* `user_requests_notify_admins` (boolean): Send email to site admins when a user request is received?
|
563
563
|
* `ftp_enabled` (boolean): Is FTP enabled?
|
564
564
|
* `sftp_enabled` (boolean): Is SFTP enabled?
|
565
|
+
* `bundle_watermark_value` (object): Preview watermark settings applied to all bundle items. Uses the same keys as Behavior.value
|
565
566
|
* `allowed_2fa_method_sms` (boolean): Is SMS two factor authentication allowed?
|
566
567
|
* `allowed_2fa_method_u2f` (boolean): Is U2F two factor authentication allowed?
|
567
568
|
* `allowed_2fa_method_totp` (boolean): Is TOTP two factor authentication allowed?
|
@@ -14,9 +14,7 @@
|
|
14
14
|
"deleted_files_storage": "65536",
|
15
15
|
"deleted_files_counted_in_minimum": "65536",
|
16
16
|
"root_storage": "65536",
|
17
|
-
"usage_by_top_level_dir":
|
18
|
-
""
|
19
|
-
]
|
17
|
+
"usage_by_top_level_dir": ""
|
20
18
|
}
|
21
19
|
```
|
22
20
|
|
@@ -30,7 +28,7 @@
|
|
30
28
|
* `deleted_files_storage` (int64): GB of Files Native Storage used on this day for files that have been deleted and are stored as backups.
|
31
29
|
* `deleted_files_counted_in_minimum` (int64): GB of Files Native Storage used on this day for files that have been permanently deleted but were uploaded less than 30 days ago, and are still billable.
|
32
30
|
* `root_storage` (int64): GB of Files Native Storage used for the root folder. Included here because this value will not be part of `usage_by_top_level_dir`
|
33
|
-
* `usage_by_top_level_dir` (
|
31
|
+
* `usage_by_top_level_dir` (object): Usage broken down by each top-level folder
|
34
32
|
|
35
33
|
---
|
36
34
|
|
package/lib/models/File.js
CHANGED
@@ -900,15 +900,15 @@ var File = /*#__PURE__*/(0, _createClass2.default)(function File() {
|
|
900
900
|
this.options = _objectSpread({}, options);
|
901
901
|
});
|
902
902
|
(0, _defineProperty2.default)(File, "_openUpload", /*#__PURE__*/function () {
|
903
|
-
var _ref13 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(path) {
|
903
|
+
var _ref13 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(path, paramsRaw) {
|
904
904
|
var params, response, partData;
|
905
905
|
return _regenerator.default.wrap(function _callee11$(_context11) {
|
906
906
|
while (1) {
|
907
907
|
switch (_context11.prev = _context11.next) {
|
908
908
|
case 0:
|
909
|
-
params = {
|
909
|
+
params = _objectSpread(_objectSpread({}, paramsRaw), {}, {
|
910
910
|
action: 'put'
|
911
|
-
};
|
911
|
+
});
|
912
912
|
_context11.next = 3;
|
913
913
|
return _Api.default.sendRequest("/files/".concat(encodeURIComponent(path)), 'POST', params);
|
914
914
|
|
@@ -937,7 +937,7 @@ var File = /*#__PURE__*/(0, _createClass2.default)(function File() {
|
|
937
937
|
}, _callee11);
|
938
938
|
}));
|
939
939
|
|
940
|
-
return function (_x5) {
|
940
|
+
return function (_x5, _x6) {
|
941
941
|
return _ref13.apply(this, arguments);
|
942
942
|
};
|
943
943
|
}());
|
@@ -981,7 +981,7 @@ var File = /*#__PURE__*/(0, _createClass2.default)(function File() {
|
|
981
981
|
}, _callee12);
|
982
982
|
}));
|
983
983
|
|
984
|
-
return function (
|
984
|
+
return function (_x7, _x8, _x9) {
|
985
985
|
return _ref14.apply(this, arguments);
|
986
986
|
};
|
987
987
|
}());
|
@@ -1006,19 +1006,19 @@ var File = /*#__PURE__*/(0, _createClass2.default)(function File() {
|
|
1006
1006
|
}, _callee13);
|
1007
1007
|
}));
|
1008
1008
|
|
1009
|
-
return function (
|
1009
|
+
return function (_x10) {
|
1010
1010
|
return _ref15.apply(this, arguments);
|
1011
1011
|
};
|
1012
1012
|
}());
|
1013
1013
|
(0, _defineProperty2.default)(File, "uploadStream", /*#__PURE__*/function () {
|
1014
|
-
var _ref16 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16(destinationPath, readableStream) {
|
1014
|
+
var _ref16 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16(destinationPath, readableStream, params) {
|
1015
1015
|
var fileUploadPart, file;
|
1016
1016
|
return _regenerator.default.wrap(function _callee16$(_context16) {
|
1017
1017
|
while (1) {
|
1018
1018
|
switch (_context16.prev = _context16.next) {
|
1019
1019
|
case 0:
|
1020
1020
|
_context16.next = 2;
|
1021
|
-
return File._openUpload(destinationPath);
|
1021
|
+
return File._openUpload(destinationPath, params);
|
1022
1022
|
|
1023
1023
|
case 2:
|
1024
1024
|
fileUploadPart = _context16.sent;
|
@@ -1047,40 +1047,48 @@ var File = /*#__PURE__*/(0, _createClass2.default)(function File() {
|
|
1047
1047
|
while (1) {
|
1048
1048
|
switch (_context14.prev = _context14.next) {
|
1049
1049
|
case 0:
|
1050
|
+
_context14.prev = 0;
|
1050
1051
|
length += chunk.length;
|
1051
1052
|
|
1052
1053
|
if (!(length > fileUploadPart.partsize)) {
|
1053
|
-
_context14.next =
|
1054
|
+
_context14.next = 13;
|
1054
1055
|
break;
|
1055
1056
|
}
|
1056
1057
|
|
1057
1058
|
readableStream.pause();
|
1058
1059
|
buffer = _safeBuffer.Buffer.concat(chunks);
|
1059
|
-
_context14.next =
|
1060
|
+
_context14.next = 7;
|
1060
1061
|
return File._continueUpload(destinationPath, ++part, fileUploadPart);
|
1061
1062
|
|
1062
|
-
case
|
1063
|
+
case 7:
|
1063
1064
|
nextFileUploadPart = _context14.sent;
|
1064
|
-
_context14.next =
|
1065
|
+
_context14.next = 10;
|
1065
1066
|
return _Api.default.sendFilePart(nextFileUploadPart.upload_uri, 'PUT', buffer);
|
1066
1067
|
|
1067
|
-
case
|
1068
|
+
case 10:
|
1068
1069
|
chunks = [];
|
1069
1070
|
length = 0;
|
1070
1071
|
readableStream.resume();
|
1071
1072
|
|
1072
|
-
case
|
1073
|
+
case 13:
|
1073
1074
|
chunks.push(_safeBuffer.Buffer.from(chunk));
|
1075
|
+
_context14.next = 19;
|
1076
|
+
break;
|
1074
1077
|
|
1075
|
-
case
|
1078
|
+
case 16:
|
1079
|
+
_context14.prev = 16;
|
1080
|
+
_context14.t0 = _context14["catch"](0);
|
1081
|
+
reject(_context14.t0);
|
1082
|
+
|
1083
|
+
case 19:
|
1076
1084
|
case "end":
|
1077
1085
|
return _context14.stop();
|
1078
1086
|
}
|
1079
1087
|
}
|
1080
|
-
}, _callee14);
|
1088
|
+
}, _callee14, null, [[0, 16]]);
|
1081
1089
|
}));
|
1082
1090
|
|
1083
|
-
return function (
|
1091
|
+
return function (_x14) {
|
1084
1092
|
return _ref17.apply(this, arguments);
|
1085
1093
|
};
|
1086
1094
|
}());
|
@@ -1090,35 +1098,44 @@ var File = /*#__PURE__*/(0, _createClass2.default)(function File() {
|
|
1090
1098
|
while (1) {
|
1091
1099
|
switch (_context15.prev = _context15.next) {
|
1092
1100
|
case 0:
|
1101
|
+
_context15.prev = 0;
|
1102
|
+
|
1093
1103
|
if (!(chunks.length > 0)) {
|
1094
|
-
_context15.next =
|
1104
|
+
_context15.next = 8;
|
1095
1105
|
break;
|
1096
1106
|
}
|
1097
1107
|
|
1098
1108
|
buffer = _safeBuffer.Buffer.concat(chunks);
|
1099
|
-
_context15.next =
|
1109
|
+
_context15.next = 5;
|
1100
1110
|
return File._continueUpload(destinationPath, ++part, fileUploadPart);
|
1101
1111
|
|
1102
|
-
case
|
1112
|
+
case 5:
|
1103
1113
|
nextFileUploadPart = _context15.sent;
|
1104
|
-
_context15.next =
|
1114
|
+
_context15.next = 8;
|
1105
1115
|
return _Api.default.sendFilePart(nextFileUploadPart.upload_uri, 'PUT', buffer);
|
1106
1116
|
|
1107
|
-
case
|
1108
|
-
_context15.next =
|
1117
|
+
case 8:
|
1118
|
+
_context15.next = 10;
|
1109
1119
|
return File._completeUpload(fileUploadPart);
|
1110
1120
|
|
1111
|
-
case
|
1121
|
+
case 10:
|
1112
1122
|
response = _context15.sent;
|
1113
1123
|
createdFile = new File(response.data);
|
1114
1124
|
resolve(createdFile);
|
1125
|
+
_context15.next = 18;
|
1126
|
+
break;
|
1127
|
+
|
1128
|
+
case 15:
|
1129
|
+
_context15.prev = 15;
|
1130
|
+
_context15.t0 = _context15["catch"](0);
|
1131
|
+
reject(_context15.t0);
|
1115
1132
|
|
1116
|
-
case
|
1133
|
+
case 18:
|
1117
1134
|
case "end":
|
1118
1135
|
return _context15.stop();
|
1119
1136
|
}
|
1120
1137
|
}
|
1121
|
-
}, _callee15);
|
1138
|
+
}, _callee15, null, [[0, 15]]);
|
1122
1139
|
})));
|
1123
1140
|
});
|
1124
1141
|
|
@@ -1139,12 +1156,12 @@ var File = /*#__PURE__*/(0, _createClass2.default)(function File() {
|
|
1139
1156
|
}, _callee16, null, [[5, 12]]);
|
1140
1157
|
}));
|
1141
1158
|
|
1142
|
-
return function (
|
1159
|
+
return function (_x11, _x12, _x13) {
|
1143
1160
|
return _ref16.apply(this, arguments);
|
1144
1161
|
};
|
1145
1162
|
}());
|
1146
1163
|
(0, _defineProperty2.default)(File, "uploadData", /*#__PURE__*/function () {
|
1147
|
-
var _ref19 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17(destinationPath, data) {
|
1164
|
+
var _ref19 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17(destinationPath, data, params) {
|
1148
1165
|
return _regenerator.default.wrap(function _callee17$(_context17) {
|
1149
1166
|
while (1) {
|
1150
1167
|
switch (_context17.prev = _context17.next) {
|
@@ -1157,7 +1174,7 @@ var File = /*#__PURE__*/(0, _createClass2.default)(function File() {
|
|
1157
1174
|
throw new errors.MissingParameterError('Upload data was not provided');
|
1158
1175
|
|
1159
1176
|
case 2:
|
1160
|
-
return _context17.abrupt("return", File.uploadStream(destinationPath, _readableStream.default.from(data)));
|
1177
|
+
return _context17.abrupt("return", File.uploadStream(destinationPath, _readableStream.default.from(data), params));
|
1161
1178
|
|
1162
1179
|
case 3:
|
1163
1180
|
case "end":
|
@@ -1167,12 +1184,12 @@ var File = /*#__PURE__*/(0, _createClass2.default)(function File() {
|
|
1167
1184
|
}, _callee17);
|
1168
1185
|
}));
|
1169
1186
|
|
1170
|
-
return function (
|
1187
|
+
return function (_x15, _x16, _x17) {
|
1171
1188
|
return _ref19.apply(this, arguments);
|
1172
1189
|
};
|
1173
1190
|
}());
|
1174
1191
|
(0, _defineProperty2.default)(File, "uploadFile", /*#__PURE__*/function () {
|
1175
|
-
var _ref20 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18(destinationPath, sourceFilePath) {
|
1192
|
+
var _ref20 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18(destinationPath, sourceFilePath, params) {
|
1176
1193
|
var _require3, openDiskFileReadStream, stream;
|
1177
1194
|
|
1178
1195
|
return _regenerator.default.wrap(function _callee18$(_context18) {
|
@@ -1189,7 +1206,7 @@ var File = /*#__PURE__*/(0, _createClass2.default)(function File() {
|
|
1189
1206
|
case 2:
|
1190
1207
|
_require3 = require('../isomorphic/File.node.js'), openDiskFileReadStream = _require3.openDiskFileReadStream;
|
1191
1208
|
stream = openDiskFileReadStream(sourceFilePath);
|
1192
|
-
return _context18.abrupt("return", File.uploadStream(destinationPath, stream));
|
1209
|
+
return _context18.abrupt("return", File.uploadStream(destinationPath, stream, params));
|
1193
1210
|
|
1194
1211
|
case 5:
|
1195
1212
|
case "end":
|
@@ -1199,7 +1216,7 @@ var File = /*#__PURE__*/(0, _createClass2.default)(function File() {
|
|
1199
1216
|
}, _callee18);
|
1200
1217
|
}));
|
1201
1218
|
|
1202
|
-
return function (
|
1219
|
+
return function (_x18, _x19, _x20) {
|
1203
1220
|
return _ref20.apply(this, arguments);
|
1204
1221
|
};
|
1205
1222
|
}());
|
@@ -1329,7 +1346,7 @@ var File = /*#__PURE__*/(0, _createClass2.default)(function File() {
|
|
1329
1346
|
}, _callee19);
|
1330
1347
|
}));
|
1331
1348
|
|
1332
|
-
return function (
|
1349
|
+
return function (_x21) {
|
1333
1350
|
return _ref21.apply(this, arguments);
|
1334
1351
|
};
|
1335
1352
|
}());
|
@@ -1395,7 +1412,7 @@ var File = /*#__PURE__*/(0, _createClass2.default)(function File() {
|
|
1395
1412
|
}, _callee20);
|
1396
1413
|
}));
|
1397
1414
|
|
1398
|
-
return function (
|
1415
|
+
return function (_x22) {
|
1399
1416
|
return _ref22.apply(this, arguments);
|
1400
1417
|
};
|
1401
1418
|
}());
|
package/package.json
CHANGED
package/src/models/File.js
CHANGED
@@ -28,8 +28,8 @@ class File {
|
|
28
28
|
}
|
29
29
|
|
30
30
|
isLoaded = () => !!this.attributes.path
|
31
|
-
static _openUpload = async path => {
|
32
|
-
const params = { action: 'put' }
|
31
|
+
static _openUpload = async (path, paramsRaw) => {
|
32
|
+
const params = { ...paramsRaw, action: 'put' }
|
33
33
|
const response = await Api.sendRequest(`/files/${encodeURIComponent(path)}`, 'POST', params)
|
34
34
|
|
35
35
|
if (!response) {
|
@@ -76,8 +76,11 @@ class File {
|
|
76
76
|
return Api.sendRequest(`/files/${encodeURIComponent(fileUploadPart.path)}`, 'POST', params)
|
77
77
|
}
|
78
78
|
|
79
|
-
|
80
|
-
|
79
|
+
/**
|
80
|
+
* @note see File.copy() for list of supported params
|
81
|
+
*/
|
82
|
+
static uploadStream = async (destinationPath, readableStream, params) => {
|
83
|
+
const fileUploadPart = await File._openUpload(destinationPath, params)
|
81
84
|
|
82
85
|
if (!fileUploadPart) {
|
83
86
|
return
|
@@ -92,37 +95,45 @@ class File {
|
|
92
95
|
readableStream.on('error', error => { reject(error) })
|
93
96
|
|
94
97
|
readableStream.on('data', async chunk => {
|
95
|
-
|
98
|
+
try {
|
99
|
+
length += chunk.length
|
96
100
|
|
97
|
-
|
98
|
-
|
101
|
+
if (length > fileUploadPart.partsize) {
|
102
|
+
readableStream.pause()
|
99
103
|
|
100
|
-
|
101
|
-
|
104
|
+
const buffer = Buffer.concat(chunks)
|
105
|
+
const nextFileUploadPart = await File._continueUpload(destinationPath, ++part, fileUploadPart)
|
102
106
|
|
103
|
-
|
107
|
+
await Api.sendFilePart(nextFileUploadPart.upload_uri, 'PUT', buffer)
|
104
108
|
|
105
|
-
|
106
|
-
|
109
|
+
chunks = []
|
110
|
+
length = 0
|
107
111
|
|
108
|
-
|
109
|
-
|
112
|
+
readableStream.resume()
|
113
|
+
}
|
110
114
|
|
111
|
-
|
115
|
+
chunks.push(Buffer.from(chunk))
|
116
|
+
} catch (error) {
|
117
|
+
reject(error)
|
118
|
+
}
|
112
119
|
})
|
113
120
|
|
114
121
|
readableStream.on('end', async () => {
|
115
|
-
|
116
|
-
|
117
|
-
|
122
|
+
try {
|
123
|
+
if (chunks.length > 0) {
|
124
|
+
const buffer = Buffer.concat(chunks)
|
125
|
+
const nextFileUploadPart = await File._continueUpload(destinationPath, ++part, fileUploadPart)
|
118
126
|
|
119
|
-
|
120
|
-
|
127
|
+
await Api.sendFilePart(nextFileUploadPart.upload_uri, 'PUT', buffer)
|
128
|
+
}
|
121
129
|
|
122
|
-
|
123
|
-
|
130
|
+
const response = await File._completeUpload(fileUploadPart)
|
131
|
+
const createdFile = new File(response.data)
|
124
132
|
|
125
|
-
|
133
|
+
resolve(createdFile)
|
134
|
+
} catch (error) {
|
135
|
+
reject(error)
|
136
|
+
}
|
126
137
|
})
|
127
138
|
})
|
128
139
|
|
@@ -134,16 +145,20 @@ class File {
|
|
134
145
|
|
135
146
|
/**
|
136
147
|
* data - string, Buffer, Stream, any object implementing Symbol.iterator or Symbol.asyncIterator
|
148
|
+
* @note see File.copy() for list of supported params
|
137
149
|
*/
|
138
|
-
static uploadData = async (destinationPath, data) => {
|
150
|
+
static uploadData = async (destinationPath, data, params) => {
|
139
151
|
if (!data) {
|
140
152
|
throw new errors.MissingParameterError('Upload data was not provided')
|
141
153
|
}
|
142
154
|
|
143
|
-
return File.uploadStream(destinationPath, Readable.from(data))
|
155
|
+
return File.uploadStream(destinationPath, Readable.from(data), params)
|
144
156
|
}
|
145
157
|
|
146
|
-
|
158
|
+
/**
|
159
|
+
* @note see File.copy() for list of supported params
|
160
|
+
*/
|
161
|
+
static uploadFile = async (destinationPath, sourceFilePath, params) => {
|
147
162
|
if (isBrowser()) {
|
148
163
|
throw new errors.NotImplementedError('Disk file uploads are only available in a NodeJS environment')
|
149
164
|
}
|
@@ -151,7 +166,7 @@ class File {
|
|
151
166
|
const { openDiskFileReadStream } = require('../isomorphic/File.node.js')
|
152
167
|
const stream = openDiskFileReadStream(sourceFilePath)
|
153
168
|
|
154
|
-
return File.uploadStream(destinationPath, stream)
|
169
|
+
return File.uploadStream(destinationPath, stream, params)
|
155
170
|
}
|
156
171
|
|
157
172
|
downloadToStream = async writableStream => {
|
package/src/models/Site.js
CHANGED
@@ -498,6 +498,7 @@ class Site {
|
|
498
498
|
// user_requests_notify_admins - boolean - Send email to site admins when a user request is received?
|
499
499
|
// ftp_enabled - boolean - Is FTP enabled?
|
500
500
|
// sftp_enabled - boolean - Is SFTP enabled?
|
501
|
+
// bundle_watermark_value - object - Preview watermark settings applied to all bundle items. Uses the same keys as Behavior.value
|
501
502
|
// allowed_2fa_method_sms - boolean - Is SMS two factor authentication allowed?
|
502
503
|
// allowed_2fa_method_u2f - boolean - Is U2F two factor authentication allowed?
|
503
504
|
// allowed_2fa_method_totp - boolean - Is TOTP two factor authentication allowed?
|
@@ -53,7 +53,7 @@ class UsageDailySnapshot {
|
|
53
53
|
// int64 # GB of Files Native Storage used for the root folder. Included here because this value will not be part of `usage_by_top_level_dir`
|
54
54
|
getRootStorage = () => this.attributes.root_storage
|
55
55
|
|
56
|
-
//
|
56
|
+
// object # Usage broken down by each top-level folder
|
57
57
|
getUsageByTopLevelDir = () => this.attributes.usage_by_top_level_dir
|
58
58
|
|
59
59
|
|