@or-sdk/files 0.20.1-269.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.
@@ -0,0 +1,382 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __assign = (this && this.__assign) || function () {
18
+ __assign = Object.assign || function(t) {
19
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
20
+ s = arguments[i];
21
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
+ t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
28
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
29
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
30
+ return new (P || (P = Promise))(function (resolve, reject) {
31
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
32
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
33
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
34
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
35
+ });
36
+ };
37
+ var __generator = (this && this.__generator) || function (thisArg, body) {
38
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
39
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
40
+ function verb(n) { return function (v) { return step([n, v]); }; }
41
+ function step(op) {
42
+ if (f) throw new TypeError("Generator is already executing.");
43
+ while (_) try {
44
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
45
+ if (y = 0, t) op = [op[0] & 2, t.value];
46
+ switch (op[0]) {
47
+ case 0: case 1: t = op; break;
48
+ case 4: _.label++; return { value: op[1], done: false };
49
+ case 5: _.label++; y = op[1]; op = [0]; continue;
50
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
51
+ default:
52
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
53
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
54
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
55
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
56
+ if (t[2]) _.ops.pop();
57
+ _.trys.pop(); continue;
58
+ }
59
+ op = body.call(thisArg, _);
60
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
61
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
62
+ }
63
+ };
64
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
65
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
66
+ if (ar || !(i in from)) {
67
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
68
+ ar[i] = from[i];
69
+ }
70
+ }
71
+ return to.concat(ar || Array.prototype.slice.call(from));
72
+ };
73
+ var __importDefault = (this && this.__importDefault) || function (mod) {
74
+ return (mod && mod.__esModule) ? mod : { "default": mod };
75
+ };
76
+ Object.defineProperty(exports, "__esModule", { value: true });
77
+ exports.Files = void 0;
78
+ var axios_1 = __importDefault(require("axios"));
79
+ var base_1 = require("@or-sdk/base");
80
+ var constants_1 = require("./constants");
81
+ var Files = (function (_super) {
82
+ __extends(Files, _super);
83
+ function Files(params) {
84
+ var token = params.token, discoveryUrl = params.discoveryUrl, serviceUrl = params.serviceUrl;
85
+ return _super.call(this, {
86
+ token: token,
87
+ discoveryUrl: discoveryUrl,
88
+ serviceUrl: serviceUrl,
89
+ serviceKey: constants_1.SERVICE_KEY,
90
+ }) || this;
91
+ }
92
+ Files.prototype.getFolderSize = function (key) {
93
+ return __awaiter(this, void 0, void 0, function () {
94
+ var size;
95
+ return __generator(this, function (_a) {
96
+ switch (_a.label) {
97
+ case 0: return [4, this.callApi({
98
+ method: 'get',
99
+ route: 'api/folder',
100
+ params: { key: key },
101
+ })];
102
+ case 1:
103
+ size = (_a.sent()).size;
104
+ return [2, size];
105
+ }
106
+ });
107
+ });
108
+ };
109
+ Files.prototype.getItemsList = function (isPublic, treePrefix) {
110
+ return __awaiter(this, void 0, void 0, function () {
111
+ var nextToken, totalItems, queryParams, _a, items, nextTokenResponse;
112
+ return __generator(this, function (_b) {
113
+ switch (_b.label) {
114
+ case 0:
115
+ nextToken = null;
116
+ totalItems = [];
117
+ _b.label = 1;
118
+ case 1:
119
+ queryParams = {
120
+ isPublic: isPublic,
121
+ prefix: treePrefix,
122
+ };
123
+ if (nextToken)
124
+ queryParams.nextToken = nextToken;
125
+ return [4, this.callApi({
126
+ method: 'GET',
127
+ route: 'api/files',
128
+ params: queryParams,
129
+ })];
130
+ case 2:
131
+ _a = _b.sent(), items = _a.items, nextTokenResponse = _a.nextTokenResponse;
132
+ totalItems = __spreadArray(__spreadArray([], totalItems, true), items, true);
133
+ nextToken = nextTokenResponse;
134
+ _b.label = 3;
135
+ case 3:
136
+ if (nextToken) return [3, 1];
137
+ _b.label = 4;
138
+ case 4: return [2, totalItems];
139
+ }
140
+ });
141
+ });
142
+ };
143
+ Files.prototype.search = function (isPublic, term) {
144
+ return __awaiter(this, void 0, void 0, function () {
145
+ var nextToken, totalItems, queryParams, _a, files, nextTokenResponse;
146
+ return __generator(this, function (_b) {
147
+ switch (_b.label) {
148
+ case 0:
149
+ nextToken = null;
150
+ totalItems = [];
151
+ _b.label = 1;
152
+ case 1:
153
+ queryParams = {
154
+ isPublic: isPublic,
155
+ term: term,
156
+ };
157
+ if (nextToken)
158
+ queryParams.nextToken = nextToken;
159
+ return [4, this.callApi({
160
+ method: 'GET',
161
+ route: 'api/files/search',
162
+ params: queryParams,
163
+ })];
164
+ case 2:
165
+ _a = _b.sent(), files = _a.files, nextTokenResponse = _a.nextTokenResponse;
166
+ totalItems = __spreadArray(__spreadArray([], totalItems, true), files, true);
167
+ nextToken = nextTokenResponse;
168
+ _b.label = 3;
169
+ case 3:
170
+ if (nextToken) return [3, 1];
171
+ _b.label = 4;
172
+ case 4: return [2, totalItems];
173
+ }
174
+ });
175
+ });
176
+ };
177
+ Files.prototype.createFolder = function (folderName) {
178
+ return __awaiter(this, void 0, void 0, function () {
179
+ return __generator(this, function (_a) {
180
+ switch (_a.label) {
181
+ case 0: return [4, this.callApi({
182
+ method: 'post',
183
+ route: 'api/files',
184
+ data: { key: folderName },
185
+ })];
186
+ case 1:
187
+ _a.sent();
188
+ return [2];
189
+ }
190
+ });
191
+ });
192
+ };
193
+ Files.prototype.renameFile = function (key, newKey, isPublic) {
194
+ return __awaiter(this, void 0, void 0, function () {
195
+ return __generator(this, function (_a) {
196
+ switch (_a.label) {
197
+ case 0: return [4, this.callApi({
198
+ method: 'put',
199
+ route: 'api/files',
200
+ params: {
201
+ key: key,
202
+ isPublic: isPublic,
203
+ },
204
+ data: { newKey: newKey },
205
+ })];
206
+ case 1:
207
+ _a.sent();
208
+ return [2];
209
+ }
210
+ });
211
+ });
212
+ };
213
+ Files.prototype.duplicateFile = function (key, newKey, isPublic) {
214
+ return __awaiter(this, void 0, void 0, function () {
215
+ return __generator(this, function (_a) {
216
+ switch (_a.label) {
217
+ case 0: return [4, this.callApi({
218
+ method: 'put',
219
+ route: 'api/files/duplicate',
220
+ params: {
221
+ key: key,
222
+ isPublic: isPublic,
223
+ },
224
+ data: { newKey: newKey },
225
+ })];
226
+ case 1:
227
+ _a.sent();
228
+ return [2];
229
+ }
230
+ });
231
+ });
232
+ };
233
+ Files.prototype.changePrivacy = function (key, newPrivacy, isPublic) {
234
+ return __awaiter(this, void 0, void 0, function () {
235
+ return __generator(this, function (_a) {
236
+ switch (_a.label) {
237
+ case 0: return [4, this.callApi({
238
+ method: 'patch',
239
+ route: 'api/files',
240
+ params: {
241
+ key: key,
242
+ isPublic: isPublic,
243
+ },
244
+ data: { newPrivacy: newPrivacy },
245
+ })];
246
+ case 1:
247
+ _a.sent();
248
+ return [2];
249
+ }
250
+ });
251
+ });
252
+ };
253
+ Files.prototype.deleteFile = function (key, isPublic) {
254
+ return __awaiter(this, void 0, void 0, function () {
255
+ return __generator(this, function (_a) {
256
+ switch (_a.label) {
257
+ case 0: return [4, this.callApi({
258
+ method: 'delete',
259
+ route: 'api/files',
260
+ params: {
261
+ key: key,
262
+ isPublic: isPublic,
263
+ },
264
+ })];
265
+ case 1:
266
+ _a.sent();
267
+ return [2];
268
+ }
269
+ });
270
+ });
271
+ };
272
+ Files.prototype.deleteFolder = function (key) {
273
+ return __awaiter(this, void 0, void 0, function () {
274
+ return __generator(this, function (_a) {
275
+ switch (_a.label) {
276
+ case 0: return [4, this.callApi({
277
+ method: 'delete',
278
+ route: 'api/folder',
279
+ data: { key: key },
280
+ })];
281
+ case 1:
282
+ _a.sent();
283
+ return [2];
284
+ }
285
+ });
286
+ });
287
+ };
288
+ Files.prototype.getDownloadUrl = function (key, isPublic) {
289
+ return __awaiter(this, void 0, void 0, function () {
290
+ return __generator(this, function (_a) {
291
+ switch (_a.label) {
292
+ case 0: return [4, this.callApi({
293
+ method: 'get',
294
+ route: 'api/url',
295
+ params: {
296
+ key: key,
297
+ isPublic: isPublic,
298
+ },
299
+ })];
300
+ case 1: return [2, _a.sent()];
301
+ }
302
+ });
303
+ });
304
+ };
305
+ Files.prototype.getObjectInfo = function (key, isPublic) {
306
+ return __awaiter(this, void 0, void 0, function () {
307
+ return __generator(this, function (_a) {
308
+ switch (_a.label) {
309
+ case 0: return [4, this.callApi({
310
+ method: 'get',
311
+ route: 'api/file',
312
+ params: {
313
+ key: key,
314
+ isPublic: isPublic,
315
+ },
316
+ })];
317
+ case 1: return [2, _a.sent()];
318
+ }
319
+ });
320
+ });
321
+ };
322
+ Files.prototype.checkFileExist = function (key, isPublic) {
323
+ return __awaiter(this, void 0, void 0, function () {
324
+ return __generator(this, function (_a) {
325
+ switch (_a.label) {
326
+ case 0: return [4, this.callApi({
327
+ method: 'get',
328
+ route: 'api/files/check-file',
329
+ params: {
330
+ key: key,
331
+ isPublic: isPublic,
332
+ },
333
+ })];
334
+ case 1: return [2, _a.sent()];
335
+ }
336
+ });
337
+ });
338
+ };
339
+ Files.prototype.getUploadUrl = function (data, isPublic) {
340
+ return this.callApi({
341
+ method: 'post',
342
+ route: 'api/url',
343
+ params: {
344
+ isPublic: isPublic,
345
+ prefix: '',
346
+ },
347
+ data: __assign({}, data),
348
+ });
349
+ };
350
+ Files.prototype.uploadFile = function (file) {
351
+ return __awaiter(this, void 0, void 0, function () {
352
+ var _a, type, name, contentType, _b, url, fields, formData;
353
+ return __generator(this, function (_c) {
354
+ switch (_c.label) {
355
+ case 0:
356
+ _a = file.fileModel, type = _a.type, name = _a.name;
357
+ contentType = type || 'binary/octet-stream';
358
+ return [4, this.getUploadUrl({
359
+ contentType: contentType,
360
+ key: file.prefix + name,
361
+ cacheControl: 'no-cache',
362
+ }, file.isPublic)];
363
+ case 1:
364
+ _b = _c.sent(), url = _b.url, fields = _b.fields;
365
+ formData = new FormData();
366
+ Object.entries(fields).forEach(function (value) {
367
+ formData.append(value[0], value[1]);
368
+ });
369
+ formData.append('cache-control', 'no-cache');
370
+ formData.append('content-type', contentType);
371
+ formData.append('File', file.fileModel, name);
372
+ return [2, axios_1.default.post(url, formData, {
373
+ onUploadProgress: function (event) { return file.progress(event, name); },
374
+ })];
375
+ }
376
+ });
377
+ });
378
+ };
379
+ return Files;
380
+ }(base_1.Base));
381
+ exports.Files = Files;
382
+ //# sourceMappingURL=Files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Files.js","sourceRoot":"","sources":["../../src/Files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SERVICE_KEY = void 0;
4
+ exports.SERVICE_KEY = 'files-api';
5
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,WAAW,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.Files = void 0;
18
+ var Files_1 = require("./Files");
19
+ Object.defineProperty(exports, "Files", { enumerable: true, get: function () { return Files_1.Files; } });
20
+ __exportStar(require("./types"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,0CAAwB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,215 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import axios from 'axios';
11
+ import { Base } from '@or-sdk/base';
12
+ import { SERVICE_KEY } from './constants';
13
+ export class Files extends Base {
14
+ constructor(params) {
15
+ const { token, discoveryUrl, serviceUrl } = params;
16
+ super({
17
+ token,
18
+ discoveryUrl,
19
+ serviceUrl,
20
+ serviceKey: SERVICE_KEY,
21
+ });
22
+ }
23
+ getFolderSize(key) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ const { size } = yield this.callApi({
26
+ method: 'get',
27
+ route: 'api/folder',
28
+ params: { key },
29
+ });
30
+ return size;
31
+ });
32
+ }
33
+ getItemsList(isPublic, treePrefix) {
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ let nextToken = null;
36
+ let totalItems = [];
37
+ do {
38
+ const queryParams = {
39
+ isPublic,
40
+ prefix: treePrefix,
41
+ };
42
+ if (nextToken)
43
+ queryParams.nextToken = nextToken;
44
+ const { items, nextTokenResponse } = yield this.callApi({
45
+ method: 'GET',
46
+ route: 'api/files',
47
+ params: queryParams,
48
+ });
49
+ totalItems = [...totalItems, ...items];
50
+ nextToken = nextTokenResponse;
51
+ } while (nextToken);
52
+ return totalItems;
53
+ });
54
+ }
55
+ search(isPublic, term) {
56
+ return __awaiter(this, void 0, void 0, function* () {
57
+ let nextToken = null;
58
+ let totalItems = [];
59
+ do {
60
+ const queryParams = {
61
+ isPublic,
62
+ term,
63
+ };
64
+ if (nextToken)
65
+ queryParams.nextToken = nextToken;
66
+ const { files, nextTokenResponse } = yield this.callApi({
67
+ method: 'GET',
68
+ route: 'api/files/search',
69
+ params: queryParams,
70
+ });
71
+ totalItems = [...totalItems, ...files];
72
+ nextToken = nextTokenResponse;
73
+ } while (nextToken);
74
+ return totalItems;
75
+ });
76
+ }
77
+ createFolder(folderName) {
78
+ return __awaiter(this, void 0, void 0, function* () {
79
+ yield this.callApi({
80
+ method: 'post',
81
+ route: 'api/files',
82
+ data: { key: folderName },
83
+ });
84
+ });
85
+ }
86
+ renameFile(key, newKey, isPublic) {
87
+ return __awaiter(this, void 0, void 0, function* () {
88
+ yield this.callApi({
89
+ method: 'put',
90
+ route: 'api/files',
91
+ params: {
92
+ key,
93
+ isPublic,
94
+ },
95
+ data: { newKey },
96
+ });
97
+ });
98
+ }
99
+ duplicateFile(key, newKey, isPublic) {
100
+ return __awaiter(this, void 0, void 0, function* () {
101
+ yield this.callApi({
102
+ method: 'put',
103
+ route: 'api/files/duplicate',
104
+ params: {
105
+ key,
106
+ isPublic,
107
+ },
108
+ data: { newKey },
109
+ });
110
+ });
111
+ }
112
+ changePrivacy(key, newPrivacy, isPublic) {
113
+ return __awaiter(this, void 0, void 0, function* () {
114
+ yield this.callApi({
115
+ method: 'patch',
116
+ route: 'api/files',
117
+ params: {
118
+ key,
119
+ isPublic,
120
+ },
121
+ data: { newPrivacy },
122
+ });
123
+ });
124
+ }
125
+ deleteFile(key, isPublic) {
126
+ return __awaiter(this, void 0, void 0, function* () {
127
+ yield this.callApi({
128
+ method: 'delete',
129
+ route: 'api/files',
130
+ params: {
131
+ key,
132
+ isPublic,
133
+ },
134
+ });
135
+ });
136
+ }
137
+ deleteFolder(key) {
138
+ return __awaiter(this, void 0, void 0, function* () {
139
+ yield this.callApi({
140
+ method: 'delete',
141
+ route: 'api/folder',
142
+ data: { key },
143
+ });
144
+ });
145
+ }
146
+ getDownloadUrl(key, isPublic) {
147
+ return __awaiter(this, void 0, void 0, function* () {
148
+ return yield this.callApi({
149
+ method: 'get',
150
+ route: 'api/url',
151
+ params: {
152
+ key,
153
+ isPublic,
154
+ },
155
+ });
156
+ });
157
+ }
158
+ getObjectInfo(key, isPublic) {
159
+ return __awaiter(this, void 0, void 0, function* () {
160
+ return yield this.callApi({
161
+ method: 'get',
162
+ route: 'api/file',
163
+ params: {
164
+ key,
165
+ isPublic,
166
+ },
167
+ });
168
+ });
169
+ }
170
+ checkFileExist(key, isPublic) {
171
+ return __awaiter(this, void 0, void 0, function* () {
172
+ return yield this.callApi({
173
+ method: 'get',
174
+ route: 'api/files/check-file',
175
+ params: {
176
+ key,
177
+ isPublic,
178
+ },
179
+ });
180
+ });
181
+ }
182
+ getUploadUrl(data, isPublic) {
183
+ return this.callApi({
184
+ method: 'post',
185
+ route: 'api/url',
186
+ params: {
187
+ isPublic,
188
+ prefix: '',
189
+ },
190
+ data: Object.assign({}, data),
191
+ });
192
+ }
193
+ uploadFile(file) {
194
+ return __awaiter(this, void 0, void 0, function* () {
195
+ const { type, name } = file.fileModel;
196
+ const contentType = type || 'binary/octet-stream';
197
+ const { url, fields } = yield this.getUploadUrl({
198
+ contentType,
199
+ key: file.prefix + name,
200
+ cacheControl: 'no-cache',
201
+ }, file.isPublic);
202
+ const formData = new FormData();
203
+ Object.entries(fields).forEach(value => {
204
+ formData.append(value[0], value[1]);
205
+ });
206
+ formData.append('cache-control', 'no-cache');
207
+ formData.append('content-type', contentType);
208
+ formData.append('File', file.fileModel, name);
209
+ return axios.post(url, formData, {
210
+ onUploadProgress: event => file.progress(event, name),
211
+ });
212
+ });
213
+ }
214
+ }
215
+ //# sourceMappingURL=Files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Files.js","sourceRoot":"","sources":["../../src/Files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export const SERVICE_KEY = 'files-api';
2
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { Files } from './Files';
2
+ export * from './types';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,cAAc,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import { Base } from '@or-sdk/base';
2
+ import { FilesConfig, FileItem, UploadFileProps, HeadData } from './types';
3
+ export declare class Files extends Base {
4
+ constructor(params: FilesConfig);
5
+ getFolderSize(key: string): Promise<number>;
6
+ getItemsList(isPublic: boolean, treePrefix: string): Promise<FileItem[]>;
7
+ search(isPublic: boolean, term: string): Promise<FileItem[]>;
8
+ createFolder(folderName: string): Promise<void>;
9
+ renameFile(key: string, newKey: string, isPublic: boolean): Promise<void>;
10
+ duplicateFile(key: string, newKey: string, isPublic: boolean): Promise<void>;
11
+ changePrivacy(key: string, newPrivacy: 'private' | 'public', isPublic: boolean): Promise<void>;
12
+ deleteFile(key: string, isPublic: boolean): Promise<void>;
13
+ deleteFolder(key: string): Promise<void>;
14
+ getDownloadUrl(key: string, isPublic: boolean): Promise<string>;
15
+ getObjectInfo(key: string, isPublic: boolean): Promise<HeadData>;
16
+ checkFileExist(key: string, isPublic: boolean): Promise<boolean>;
17
+ private getUploadUrl;
18
+ uploadFile(file: UploadFileProps): Promise<void>;
19
+ }
@@ -0,0 +1 @@
1
+ export declare const SERVICE_KEY = "files-api";
@@ -0,0 +1,2 @@
1
+ export { Files } from './Files';
2
+ export * from './types';
@@ -0,0 +1,72 @@
1
+ import { Token } from '@or-sdk/base';
2
+ export declare type FilesConfig = {
3
+ token: Token;
4
+ discoveryUrl?: string;
5
+ accountId?: string;
6
+ serviceUrl?: string;
7
+ };
8
+ export declare type GetItemsQuery = {
9
+ isPublic: boolean;
10
+ prefix: string;
11
+ nextToken?: string;
12
+ };
13
+ export declare type SearchQuery = {
14
+ isPublic: boolean;
15
+ term: string;
16
+ nextToken?: string;
17
+ };
18
+ export declare type FileItem = {
19
+ key: string;
20
+ size?: number;
21
+ lastModified?: string;
22
+ };
23
+ export declare type FilesPageState = {
24
+ filesInstance: any;
25
+ userToken: string;
26
+ discoveryUrl: string;
27
+ serviceUrl: string;
28
+ accountId: string;
29
+ renameFrom: string;
30
+ renameTo: string;
31
+ searchString: string;
32
+ items: FileItem[];
33
+ searchItems: FileItem[];
34
+ };
35
+ export declare type HeadData = {
36
+ contentLength: number;
37
+ contentType: string;
38
+ metaData: object;
39
+ };
40
+ export declare type GetItemsListResponse = {
41
+ items: FileItem[];
42
+ nextTokenResponse: string | null;
43
+ };
44
+ export declare type SearchItemsListResponse = {
45
+ files: FileItem[];
46
+ nextTokenResponse: string | null;
47
+ };
48
+ export declare type UploadUrlProps = {
49
+ key: string;
50
+ contentType: string;
51
+ maxFileSize?: number;
52
+ cacheControl: string;
53
+ };
54
+ export declare type UploadUrlResponse = {
55
+ url: string;
56
+ fields: {
57
+ key: string;
58
+ bucket: string;
59
+ Policy: string;
60
+ 'X-Amz-Date': string;
61
+ 'X-Amz-Signature': string;
62
+ 'X-Amz-Algorithm': string;
63
+ 'X-Amz-Credential': string;
64
+ 'X-Amz-Security-Token': string;
65
+ }[];
66
+ };
67
+ export declare type UploadFileProps = {
68
+ fileModel: File;
69
+ prefix: string;
70
+ isPublic: boolean;
71
+ progress: (event: ProgressEvent, name: string) => void;
72
+ };
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "version": "0.20.1-269.0",
3
+ "name": "@or-sdk/files",
4
+ "main": "dist/cjs/index.js",
5
+ "module": "dist/esm/index.js",
6
+ "types": "dist/types/index.d.ts",
7
+ "scripts": {
8
+ "build": "npm run clean && concurrently \"npm run build:cjs\" \"npm run build:esm\" \"npm run build:types\"",
9
+ "build:watch": "concurrently -r --hide 1,2 \"npm run build:watch:cjs\" \"npm run build:watch:esm\" \"npm run build:watch:types\"",
10
+ "build:cjs": "tsc --project tsconfig.json",
11
+ "build:watch:cjs": "tsc --project tsconfig.json -w",
12
+ "build:esm": "tsc --project tsconfig.esm.json",
13
+ "build:watch:esm": "tsc --project tsconfig.esm.json -w",
14
+ "build:types": "tsc --project tsconfig.types.json",
15
+ "build:watch:types": "tsc --project tsconfig.types.json -w",
16
+ "clean": "rm -rf ./dist"
17
+ },
18
+ "devDependencies": {
19
+ "concurrently": "^6.4.0",
20
+ "typescript": "^4.4.4"
21
+ },
22
+ "publishConfig": {
23
+ "access": "public"
24
+ },
25
+ "dependencies": {
26
+ "@or-sdk/base": "^0.20.1-createfilespackage.19",
27
+ "axios": "^0.24.0"
28
+ }
29
+ }
package/src/Files.ts ADDED
@@ -0,0 +1,299 @@
1
+ import axios from 'axios';
2
+ import { Base } from '@or-sdk/base';
3
+ import { SERVICE_KEY } from './constants';
4
+ import {
5
+ FilesConfig, GetItemsQuery, SearchItemsListResponse, SearchQuery, FileItem,
6
+ GetItemsListResponse, UploadUrlProps, UploadFileProps, UploadUrlResponse, HeadData,
7
+ } from './types';
8
+
9
+ /**
10
+ * OneReach Files service client
11
+ * ## Installation:
12
+ * ```
13
+ * $ npm i @or-sdk/files
14
+ * ```
15
+ */
16
+ export class Files extends Base {
17
+ /**
18
+ * ```typescript
19
+ * import { Files } from '@or-sdk/files'
20
+ * const files = new Files({token: 'my-account-token-string', discoveryUrl: 'http://example.tables/endpoint'});
21
+ * ```
22
+ */
23
+ constructor(params: FilesConfig) {
24
+ const { token, discoveryUrl, serviceUrl } = params;
25
+
26
+ super({
27
+ token,
28
+ discoveryUrl,
29
+ serviceUrl,
30
+ serviceKey: SERVICE_KEY,
31
+ });
32
+ }
33
+
34
+ /**
35
+ * Get folder size
36
+ * @param key the name of folder
37
+ * @return total folder size in bytes
38
+ */
39
+ async getFolderSize(key: string): Promise<number> {
40
+ const { size } = await this.callApi({
41
+ method: 'get',
42
+ route: 'api/folder',
43
+ params: { key },
44
+ });
45
+
46
+ return size;
47
+ }
48
+
49
+ /**
50
+ * Get list of public/private FileItems from api
51
+ * @param isPublic does this file public or private
52
+ * @param treePrefix the folder path where GET FileItems, for Root use ''
53
+ * @return list of FileItems
54
+ */
55
+ async getItemsList(isPublic: boolean, treePrefix: string): Promise<FileItem[]> {
56
+ let nextToken: null | string = null;
57
+ let totalItems: FileItem[] = [];
58
+
59
+ do {
60
+ const queryParams: GetItemsQuery = {
61
+ isPublic,
62
+ prefix: treePrefix,
63
+ };
64
+ if (nextToken) queryParams.nextToken = nextToken;
65
+
66
+ const { items, nextTokenResponse }: GetItemsListResponse = await this.callApi({
67
+ method: 'GET',
68
+ route: 'api/files',
69
+ params: queryParams,
70
+ });
71
+ totalItems = [...totalItems, ...items];
72
+
73
+ nextToken = nextTokenResponse;
74
+ } while (nextToken);
75
+
76
+ return totalItems;
77
+ }
78
+
79
+ async search(isPublic: boolean, term: string): Promise<FileItem[]> {
80
+ let nextToken = null;
81
+ let totalItems: FileItem[] = [];
82
+
83
+ do {
84
+ const queryParams: SearchQuery = {
85
+ isPublic,
86
+ term,
87
+ };
88
+
89
+ if (nextToken) queryParams.nextToken = nextToken;
90
+
91
+ const { files, nextTokenResponse }: SearchItemsListResponse = await this.callApi({
92
+ method: 'GET',
93
+ route: 'api/files/search',
94
+ params: queryParams,
95
+ });
96
+
97
+ totalItems = [...totalItems, ...files];
98
+ nextToken = nextTokenResponse;
99
+
100
+ } while (nextToken);
101
+
102
+ return totalItems;
103
+ }
104
+
105
+ /**
106
+ * Create new folders
107
+ * @param folderName should have folder path + folder name, example: /main/New folder
108
+ */
109
+ async createFolder(folderName: string): Promise<void> {
110
+ await this.callApi({
111
+ method: 'post',
112
+ route: 'api/files',
113
+ data: { key: folderName },
114
+ });
115
+ }
116
+
117
+ /**
118
+ * Rename exist file
119
+ * @param key old file name
120
+ * @param newKey new file name
121
+ * @param isPublic does this file public or private
122
+ */
123
+ async renameFile(key: string, newKey: string, isPublic: boolean): Promise<void> {
124
+ await this.callApi({
125
+ method: 'put',
126
+ route: 'api/files',
127
+ params: {
128
+ key,
129
+ isPublic,
130
+ },
131
+ data: { newKey },
132
+ });
133
+ }
134
+
135
+ /**
136
+ * Duplicate file
137
+ * @param key target file name
138
+ * @param newKey new file name
139
+ * @param isPublic does this file public or private
140
+ */
141
+ async duplicateFile(key: string, newKey: string, isPublic: boolean): Promise<void> {
142
+ await this.callApi({
143
+ method: 'put',
144
+ route: 'api/files/duplicate',
145
+ params: {
146
+ key,
147
+ isPublic,
148
+ },
149
+ data: { newKey },
150
+ });
151
+ }
152
+
153
+ /**
154
+ * Change file privacy
155
+ * @param key file name
156
+ * @param newPrivacy new file privacy
157
+ * @param isPublic does this file public or private
158
+ */
159
+ async changePrivacy(key: string, newPrivacy: 'private' | 'public', isPublic: boolean): Promise<void> {
160
+ await this.callApi({
161
+ method: 'patch',
162
+ route: 'api/files',
163
+ params: {
164
+ key,
165
+ isPublic,
166
+ },
167
+ data: { newPrivacy },
168
+ });
169
+ }
170
+
171
+ /**
172
+ * Delete file
173
+ * @param key file name
174
+ * @param isPublic does this file public or private
175
+ */
176
+ async deleteFile(key: string, isPublic: boolean): Promise<void> {
177
+ // TODO: add error handler and status response true
178
+ await this.callApi({
179
+ method: 'delete',
180
+ route: 'api/files',
181
+ params: {
182
+ key,
183
+ isPublic,
184
+ },
185
+ });
186
+ }
187
+
188
+ /**
189
+ * Delete folder
190
+ * @param key folder name
191
+ */
192
+ async deleteFolder(key: string): Promise<void> {
193
+ // TODO: add error handler and status response true
194
+ await this.callApi({
195
+ method: 'delete',
196
+ route: 'api/folder',
197
+ data: { key },
198
+ });
199
+ }
200
+
201
+ /**
202
+ * Get a link to download file, example: for preview
203
+ * @param key folder name
204
+ * @param isPublic does this file public or private
205
+ * @return file url
206
+ */
207
+ async getDownloadUrl(key: string, isPublic: boolean): Promise<string> {
208
+ return await this.callApi({
209
+ method: 'get',
210
+ route: 'api/url',
211
+ params: {
212
+ key,
213
+ isPublic,
214
+ },
215
+ });
216
+ }
217
+
218
+ /**
219
+ * Get object info
220
+ * @param key folder name
221
+ * @param isPublic does this file public or private
222
+ */
223
+ async getObjectInfo(key: string, isPublic: boolean): Promise<HeadData> {
224
+ return await this.callApi({
225
+ method: 'get',
226
+ route: 'api/file',
227
+ params: {
228
+ key,
229
+ isPublic,
230
+ },
231
+ });
232
+ }
233
+
234
+ /**
235
+ * Check is file with such name already exist
236
+ * @param key file name
237
+ * @param isPublic does file public or private
238
+ * @return true if file exist
239
+ */
240
+ async checkFileExist(key: string, isPublic: boolean): Promise<boolean> {
241
+ return await this.callApi({
242
+ method: 'get',
243
+ route: 'api/files/check-file',
244
+ params: {
245
+ key,
246
+ isPublic,
247
+ },
248
+ });
249
+ }
250
+
251
+ /**
252
+ * Get a link for uploading specific file, JUST FOR INNER USE
253
+ * @param data has UploadUrlProps values inside
254
+ * @param isPublic does this file public or private
255
+ * @return uploading Url with different header Fields
256
+ */
257
+ private getUploadUrl(data: UploadUrlProps, isPublic: boolean): Promise<UploadUrlResponse> {
258
+ return this.callApi({
259
+ method: 'post',
260
+ route: 'api/url',
261
+ params: {
262
+ isPublic,
263
+ prefix: '',
264
+ },
265
+ data: { ...data },
266
+ });
267
+ }
268
+
269
+ /**
270
+ * Upload file to S3 bucket
271
+ * @param file file itself for uploading with prefix (path) and isPublic boolean
272
+ */
273
+ async uploadFile(file: UploadFileProps): Promise<void> {
274
+ const { type, name } = file.fileModel;
275
+ const contentType = type || 'binary/octet-stream';
276
+
277
+ const { url, fields } = await this.getUploadUrl({
278
+ contentType,
279
+ key: file.prefix + name,
280
+ cacheControl: 'no-cache',
281
+ }, file.isPublic);
282
+
283
+ const formData = new FormData();
284
+
285
+ Object.entries(fields).forEach(value => {
286
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
287
+ // @ts-ignore
288
+ formData.append(value[0], value[1]);
289
+ });
290
+
291
+ formData.append('cache-control', 'no-cache');
292
+ formData.append('content-type', contentType);
293
+ formData.append('File', file.fileModel, name);
294
+
295
+ return axios.post(url, formData, {
296
+ onUploadProgress: event => file.progress(event, name),
297
+ });
298
+ }
299
+ }
@@ -0,0 +1 @@
1
+ export const SERVICE_KEY = 'files-api';
package/src/index.ts ADDED
@@ -0,0 +1,2 @@
1
+ export { Files } from './Files';
2
+ export * from './types';
package/src/types.ts ADDED
@@ -0,0 +1,96 @@
1
+ import { Token } from '@or-sdk/base';
2
+
3
+ export type FilesConfig = {
4
+ /**
5
+ * token
6
+ */
7
+ token: Token;
8
+ /**
9
+ * Url of OneReach service discovery api
10
+ */
11
+ discoveryUrl?: string;
12
+ /**
13
+ * Account ID for cross-account requests (super admin only)
14
+ */
15
+ accountId?: string;
16
+ /**
17
+ * Direct service url, can be used to avoid discovery api call
18
+ */
19
+ serviceUrl?: string;
20
+ };
21
+
22
+ export type GetItemsQuery = {
23
+ isPublic: boolean;
24
+ prefix: string;
25
+ nextToken?: string;
26
+ };
27
+
28
+ export type SearchQuery = {
29
+ isPublic: boolean;
30
+ term: string;
31
+ nextToken?: string;
32
+ };
33
+
34
+ export type FileItem = {
35
+ key: string;
36
+ size?: number;
37
+ lastModified?: string;
38
+ };
39
+
40
+ export type FilesPageState = {
41
+ filesInstance: any;
42
+ userToken: string;
43
+ discoveryUrl: string;
44
+ serviceUrl: string;
45
+ accountId: string;
46
+ renameFrom: string;
47
+ renameTo: string;
48
+ searchString: string;
49
+ items: FileItem[];
50
+ searchItems: FileItem[];
51
+ };
52
+
53
+ export type HeadData = {
54
+ contentLength: number;
55
+ contentType: string;
56
+ metaData: object;
57
+ };
58
+
59
+ export type GetItemsListResponse = {
60
+ items: FileItem[];
61
+ nextTokenResponse: string | null;
62
+ };
63
+
64
+ export type SearchItemsListResponse = {
65
+ files: FileItem[];
66
+ nextTokenResponse: string | null;
67
+ };
68
+
69
+ export type UploadUrlProps = {
70
+ key: string;
71
+ contentType: string;
72
+ maxFileSize?: number;
73
+ cacheControl: string;
74
+ };
75
+
76
+ export type UploadUrlResponse = {
77
+ url: string;
78
+ fields: {
79
+ key: string;
80
+ bucket: string;
81
+ Policy: string;
82
+ 'X-Amz-Date': string;
83
+ 'X-Amz-Signature': string;
84
+ 'X-Amz-Algorithm': string;
85
+ 'X-Amz-Credential': string;
86
+ 'X-Amz-Security-Token': string;
87
+ }[];
88
+ };
89
+
90
+ export type UploadFileProps = {
91
+ fileModel: File;
92
+ prefix: string;
93
+ isPublic: boolean;
94
+ progress: (event: ProgressEvent, name: string) => void;
95
+ };
96
+
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "module": "ES6",
5
+ "target": "es6",
6
+ "outDir": "./dist/esm/",
7
+ "rootDir": "./src"
8
+ }
9
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "./dist/cjs/",
5
+ "rootDir": "./src"
6
+ }
7
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "./dist/types/",
5
+ "rootDir": "./src",
6
+ "declaration": true,
7
+ "emitDeclarationOnly": true
8
+ }
9
+ }