@tweedegolf/sab-adapter-backblaze-b2 1.0.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,498 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __asyncValues = (this && this.__asyncValues) || function (o) {
12
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
13
+ var m = o[Symbol.asyncIterator], i;
14
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
15
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
16
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
17
+ };
18
+ var __importDefault = (this && this.__importDefault) || function (mod) {
19
+ return (mod && mod.__esModule) ? mod : { "default": mod };
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.AdapterBackblazeB2 = void 0;
23
+ const backblaze_b2_1 = __importDefault(require("backblaze-b2"));
24
+ const fs_1 = __importDefault(require("fs"));
25
+ const AbstractAdapter_1 = require("./AbstractAdapter");
26
+ const general_1 = require("./types/general");
27
+ const util_1 = require("./util");
28
+ class AdapterBackblazeB2 extends AbstractAdapter_1.AbstractAdapter {
29
+ constructor(config) {
30
+ super(config);
31
+ this._type = general_1.StorageType.B2;
32
+ this._configError = null;
33
+ this._client = null;
34
+ this.authorized = false;
35
+ this.versioning = true;
36
+ if (typeof this._config.applicationKey === "undefined" ||
37
+ typeof this._config.applicationKeyId === "undefined") {
38
+ this._configError = 'Please provide both a value for "applicationKey" and "applicationKeyId"';
39
+ }
40
+ else {
41
+ try {
42
+ this._client = new backblaze_b2_1.default(this._config);
43
+ }
44
+ catch (e) {
45
+ this._configError = `[configError] ${e.message}`;
46
+ }
47
+ }
48
+ }
49
+ // util members
50
+ authorize() {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ if (this.configError !== null) {
53
+ return { value: null, error: this.configError };
54
+ }
55
+ if (this.authorized) {
56
+ return { value: "ok", error: null };
57
+ }
58
+ try {
59
+ const { data: _data } = yield this._client.authorize();
60
+ // console.log(_data.allowed.capabilities);
61
+ this.authorized = true;
62
+ return { value: "ok", error: null };
63
+ }
64
+ catch (e) {
65
+ return { value: null, error: e.message };
66
+ }
67
+ });
68
+ }
69
+ getBuckets() {
70
+ return __awaiter(this, void 0, void 0, function* () {
71
+ try {
72
+ const { data } = yield this._client.listBuckets();
73
+ const value = data.buckets.map(({ bucketId, bucketName }) => {
74
+ return {
75
+ id: bucketId,
76
+ name: bucketName,
77
+ };
78
+ });
79
+ return { value, error: null };
80
+ }
81
+ catch (e) {
82
+ return { value: null, error: e.message };
83
+ }
84
+ });
85
+ }
86
+ getBucket(name) {
87
+ return __awaiter(this, void 0, void 0, function* () {
88
+ try {
89
+ const { data } = yield this._client.getBucket({ bucketName: name });
90
+ if (data.buckets.length > 0) {
91
+ const { bucketId, bucketName } = data.buckets[0];
92
+ return { value: { id: bucketId, name: bucketName }, error: null };
93
+ }
94
+ return { value: null, error: `Could not find bucket "${name}"` };
95
+ }
96
+ catch (e) {
97
+ return { value: null, error: e.message };
98
+ }
99
+ });
100
+ }
101
+ getUploadUrl(bucketId) {
102
+ return __awaiter(this, void 0, void 0, function* () {
103
+ try {
104
+ const { data } = yield this._client.getUploadUrl(bucketId);
105
+ if (typeof data.uploadUrl === "undefined") {
106
+ return { value: null, error: data.message };
107
+ }
108
+ const { uploadUrl, authorizationToken: uploadAuthToken } = data;
109
+ return { value: { uploadUrl, uploadAuthToken }, error: null };
110
+ }
111
+ catch (e) {
112
+ return { value: null, error: e.message };
113
+ }
114
+ });
115
+ }
116
+ getFiles(bucketName, versioning, numFiles = 1000) {
117
+ return __awaiter(this, void 0, void 0, function* () {
118
+ const { value: bucket, error } = yield this.getBucket(bucketName);
119
+ if (error !== null) {
120
+ return { value: null, error };
121
+ }
122
+ try {
123
+ let data; //eslint-disable-line
124
+ const options = {
125
+ bucketId: bucket.id,
126
+ maxFileCount: numFiles,
127
+ };
128
+ if (versioning) {
129
+ ({ data } = yield this._client.listFileVersions(options));
130
+ }
131
+ else {
132
+ ({ data } = yield this._client.listFileNames(options));
133
+ }
134
+ return {
135
+ value: data.files.map(({ fileId, fileName, contentType, contentLength }) => {
136
+ return {
137
+ id: fileId,
138
+ name: fileName,
139
+ contentType,
140
+ contentLength,
141
+ };
142
+ }),
143
+ error: null,
144
+ };
145
+ }
146
+ catch (e) {
147
+ return {
148
+ value: null,
149
+ error: e.message,
150
+ };
151
+ }
152
+ });
153
+ }
154
+ getFile(bucketName, name) {
155
+ return __awaiter(this, void 0, void 0, function* () {
156
+ const { value: files, error } = yield this.getFiles(bucketName, false);
157
+ if (error !== null) {
158
+ return { value: null, error };
159
+ }
160
+ for (let i = 0; i < files.length; i++) {
161
+ const file = files[i];
162
+ if (file.name === name) {
163
+ return { value: file, error: null };
164
+ }
165
+ }
166
+ return { value: null, error: `Could not find file "${name}" in bucket "${bucketName}".` };
167
+ });
168
+ }
169
+ // public API
170
+ get config() {
171
+ return this._config;
172
+ }
173
+ get serviceClient() {
174
+ return this._client;
175
+ }
176
+ addFile(params) {
177
+ var _a, e_1, _b, _c;
178
+ return __awaiter(this, void 0, void 0, function* () {
179
+ const { error } = yield this.authorize();
180
+ if (error !== null) {
181
+ return { value: null, error };
182
+ }
183
+ const { bucketName, targetPath } = params;
184
+ const data1 = yield this.getBucket(bucketName);
185
+ if (data1.error !== null) {
186
+ return { value: null, error: data1.error };
187
+ }
188
+ const { value: { id: bucketId }, } = data1;
189
+ const data2 = yield this.getUploadUrl(bucketId);
190
+ if (data2.error !== null) {
191
+ return { value: null, error: data2.error };
192
+ }
193
+ const { value: { uploadUrl, uploadAuthToken }, } = data2;
194
+ let { options } = params;
195
+ if (typeof options === "undefined") {
196
+ options = {};
197
+ }
198
+ try {
199
+ let buffer;
200
+ if (typeof params.origPath !== "undefined") {
201
+ buffer = yield fs_1.default.promises.readFile(params.origPath);
202
+ }
203
+ else if (typeof params.buffer !== "undefined") {
204
+ buffer = params.buffer;
205
+ }
206
+ else if (typeof params.stream !== "undefined") {
207
+ const buffers = []; // eslint-disable-line
208
+ try {
209
+ for (var _d = true, _e = __asyncValues(params.stream), _f; _f = yield _e.next(), _a = _f.done, !_a; _d = true) {
210
+ _c = _f.value;
211
+ _d = false;
212
+ const data = _c;
213
+ buffers.push(data);
214
+ }
215
+ }
216
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
217
+ finally {
218
+ try {
219
+ if (!_d && !_a && (_b = _e.return)) yield _b.call(_e);
220
+ }
221
+ finally { if (e_1) throw e_1.error; }
222
+ }
223
+ buffer = Buffer.concat(buffers);
224
+ }
225
+ const { data: _data } = yield this._client.uploadFile(Object.assign({ uploadUrl,
226
+ uploadAuthToken, fileName: targetPath, data: buffer }, options));
227
+ // console.log(_data);
228
+ return {
229
+ value: `${this._client.downloadUrl}/file/${bucketName}/${targetPath}`,
230
+ error: null,
231
+ };
232
+ }
233
+ catch (e) {
234
+ // console.log(e.toJSON());
235
+ return { value: null, error: e.message };
236
+ }
237
+ });
238
+ }
239
+ getFileAsStream(bucketName, fileName, options = { start: 0 }) {
240
+ return __awaiter(this, void 0, void 0, function* () {
241
+ const { error } = yield this.authorize();
242
+ if (error !== null) {
243
+ return { value: null, error };
244
+ }
245
+ const data = yield this.getFile(bucketName, fileName);
246
+ if (data.error !== null) {
247
+ return { value: null, error: data.error };
248
+ }
249
+ const { value: file } = data;
250
+ const { start, end } = options;
251
+ let range = `bytes=${start}-${end}`;
252
+ if (typeof start === "undefined" && typeof end === "undefined") {
253
+ range = null;
254
+ }
255
+ else if (typeof start === "undefined") {
256
+ range = `bytes=0-${end}`;
257
+ }
258
+ else if (typeof end === "undefined") {
259
+ range = `bytes=${start}-`;
260
+ }
261
+ delete options.start;
262
+ delete options.end;
263
+ try {
264
+ const { data } = yield this._client.downloadFileById({
265
+ fileId: file.id,
266
+ responseType: "stream",
267
+ axios: Object.assign({ headers: {
268
+ "Content-Type": file.contentType,
269
+ Range: range,
270
+ } }, options),
271
+ });
272
+ return { value: data, error: null };
273
+ }
274
+ catch (e) {
275
+ return { value: null, error: e.message };
276
+ }
277
+ });
278
+ }
279
+ getFileAsURL(bucketName, fileName
280
+ // options?: Options
281
+ ) {
282
+ return __awaiter(this, void 0, void 0, function* () {
283
+ const { error } = yield this.authorize();
284
+ if (error !== null) {
285
+ return { value: null, error };
286
+ }
287
+ const url = `${this._client.downloadUrl}/file/${bucketName}/${fileName}`;
288
+ return { value: url, error: null };
289
+ });
290
+ }
291
+ removeFile(bucketName, fileName) {
292
+ return __awaiter(this, void 0, void 0, function* () {
293
+ const { error } = yield this.authorize();
294
+ if (error !== null) {
295
+ return { value: null, error };
296
+ }
297
+ const data = yield this.getFiles(bucketName, !this.versioning);
298
+ if (error !== null) {
299
+ return { value: null, error };
300
+ }
301
+ const { value: files } = data;
302
+ const index = files.findIndex(({ name }) => name === fileName);
303
+ if (index === -1) {
304
+ // return { value: null, error: `Could not find file "${fileName}"` };
305
+ // no fail if the file does not exist
306
+ return { value: "ok", error: null };
307
+ }
308
+ if (this.versioning) {
309
+ // delete the file, if the file has more versions, delete the most recent version
310
+ const file = files[index];
311
+ try {
312
+ yield this._client.deleteFileVersion({
313
+ fileId: file.id,
314
+ fileName: file.name,
315
+ });
316
+ return { value: "ok", error: null };
317
+ }
318
+ catch (e) {
319
+ return { value: null, error: e.message };
320
+ }
321
+ }
322
+ else {
323
+ // delete all versions of the file
324
+ try {
325
+ yield Promise.all(files
326
+ .filter((f) => f.name === fileName)
327
+ .map(({ id: fileId, name: fileName }) => {
328
+ console.log(fileName, fileId);
329
+ return this._client.deleteFileVersion({
330
+ fileId,
331
+ fileName,
332
+ });
333
+ }));
334
+ return { value: "ok", error: null };
335
+ }
336
+ catch (e) {
337
+ return { value: null, error: e.message };
338
+ }
339
+ }
340
+ });
341
+ }
342
+ createBucket(name, options = {}) {
343
+ return __awaiter(this, void 0, void 0, function* () {
344
+ const { error } = yield this.authorize();
345
+ if (error !== null) {
346
+ return { value: null, error };
347
+ }
348
+ const msg = (0, util_1.validateName)(name);
349
+ if (msg !== null) {
350
+ return { value: null, error: msg };
351
+ }
352
+ if (typeof options.bucketType === "undefined") {
353
+ options.bucketType = "allPrivate";
354
+ }
355
+ try {
356
+ const { data } = yield this._client.createBucket(Object.assign(Object.assign({}, options), { bucketName: name }));
357
+ const { bucketType: _type } = data;
358
+ // console.log(_type);
359
+ return { value: "ok", error: null };
360
+ }
361
+ catch (e) {
362
+ return { value: null, error: e.response.data.message };
363
+ }
364
+ });
365
+ }
366
+ clearBucket(name) {
367
+ return __awaiter(this, void 0, void 0, function* () {
368
+ const { error } = yield this.authorize();
369
+ if (error !== null) {
370
+ return { value: null, error };
371
+ }
372
+ const data = yield this.getFiles(name, true);
373
+ if (data.error !== null) {
374
+ return { value: null, error: data.error };
375
+ }
376
+ const { value: files } = data;
377
+ try {
378
+ const _data = yield Promise.all(files.map((file) => this._client.deleteFileVersion({
379
+ fileId: file.id,
380
+ fileName: file.name,
381
+ })));
382
+ // console.log("[clearBucket]", _data);
383
+ return { value: "ok", error: null };
384
+ }
385
+ catch (e) {
386
+ return { value: null, error: e.message };
387
+ }
388
+ });
389
+ }
390
+ deleteBucket(name) {
391
+ return __awaiter(this, void 0, void 0, function* () {
392
+ const data = yield this.clearBucket(name);
393
+ if (data.error !== null) {
394
+ return { value: null, error: data.error };
395
+ }
396
+ const { error, value: bucket } = yield this.getBucket(name);
397
+ if (error !== null) {
398
+ return { value: null, error: error };
399
+ }
400
+ try {
401
+ yield this._client.deleteBucket({ bucketId: bucket.id });
402
+ return { value: "ok", error: null };
403
+ }
404
+ catch (e) {
405
+ return { value: null, error: e.message };
406
+ }
407
+ });
408
+ }
409
+ listBuckets() {
410
+ return __awaiter(this, void 0, void 0, function* () {
411
+ const { error } = yield this.authorize();
412
+ if (error !== null) {
413
+ return { value: null, error };
414
+ }
415
+ const data = yield this.getBuckets();
416
+ if (data.error === null) {
417
+ const { value: buckets } = data;
418
+ return {
419
+ value: buckets.map((b) => {
420
+ return b.name;
421
+ }),
422
+ error: null,
423
+ };
424
+ }
425
+ else {
426
+ return { value: null, error: data.error };
427
+ }
428
+ });
429
+ }
430
+ listFiles(bucketName, numFiles = 1000) {
431
+ return __awaiter(this, void 0, void 0, function* () {
432
+ const { error } = yield this.authorize();
433
+ if (error !== null) {
434
+ return { value: null, error };
435
+ }
436
+ const data = yield this.getFiles(bucketName, this.versioning, numFiles);
437
+ if (data.error === null) {
438
+ const { value: files } = data;
439
+ return {
440
+ value: files.map((f) => {
441
+ return [f.name, f.contentLength];
442
+ }),
443
+ error: null,
444
+ };
445
+ }
446
+ else {
447
+ return { value: null, error: data.error };
448
+ }
449
+ });
450
+ }
451
+ sizeOf(bucketName, fileName) {
452
+ return __awaiter(this, void 0, void 0, function* () {
453
+ const { error } = yield this.authorize();
454
+ if (error !== null) {
455
+ return { value: null, error };
456
+ }
457
+ const data = yield this.getFile(bucketName, fileName);
458
+ if (data.error === null) {
459
+ const { value: file } = data;
460
+ return { value: file.contentLength, error: null };
461
+ }
462
+ else {
463
+ return { value: null, error: data.error };
464
+ }
465
+ });
466
+ }
467
+ bucketExists(bucketName) {
468
+ return __awaiter(this, void 0, void 0, function* () {
469
+ const { error } = yield this.authorize();
470
+ if (error !== null) {
471
+ return { value: null, error };
472
+ }
473
+ const data = yield this.getBucket(bucketName);
474
+ if (data.error === null) {
475
+ return { value: true, error: null };
476
+ }
477
+ else if (data.error.startsWith("Could not find bucket")) {
478
+ return { value: false, error: null };
479
+ }
480
+ else {
481
+ return { value: null, error: data.error };
482
+ }
483
+ });
484
+ }
485
+ fileExists(bucketName, fileName) {
486
+ return __awaiter(this, void 0, void 0, function* () {
487
+ const { error, value } = yield this.sizeOf(bucketName, fileName);
488
+ if (error === null) {
489
+ return { value: true, error: null };
490
+ }
491
+ else {
492
+ return { value: false, error: null };
493
+ }
494
+ });
495
+ }
496
+ }
497
+ exports.AdapterBackblazeB2 = AdapterBackblazeB2;
498
+ //# sourceMappingURL=AdapterBackblazeB2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdapterBackblazeB2.js","sourceRoot":"","sources":["../../src/AdapterBackblazeB2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { AbstractAdapter } from "../AbstractAdapter";
2
+ import { AdapterBackblazeB2 } from "../AdapterBackblazeB2";
3
+ import { AdapterConfigBackblazeB2 } from "../types/adapter_backblaze_b2";
4
+ import { StorageType, AdapterConfig } from "../types/general";
5
+ export { AdapterBackblazeB2, AbstractAdapter, StorageType, AdapterConfig, AdapterConfigBackblazeB2, };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StorageType = exports.AbstractAdapter = exports.AdapterBackblazeB2 = void 0;
4
+ const AbstractAdapter_1 = require("../AbstractAdapter");
5
+ Object.defineProperty(exports, "AbstractAdapter", { enumerable: true, get: function () { return AbstractAdapter_1.AbstractAdapter; } });
6
+ const AdapterBackblazeB2_1 = require("../AdapterBackblazeB2");
7
+ Object.defineProperty(exports, "AdapterBackblazeB2", { enumerable: true, get: function () { return AdapterBackblazeB2_1.AdapterBackblazeB2; } });
8
+ const general_1 = require("../types/general");
9
+ Object.defineProperty(exports, "StorageType", { enumerable: true, get: function () { return general_1.StorageType; } });
10
+ //# sourceMappingURL=AdapterBackblazeB2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdapterBackblazeB2.js","sourceRoot":"","sources":["../../../src/indexes/AdapterBackblazeB2.ts"],"names":[],"mappings":";;;AAAA,wDAAqD;AAOnD,gGAPO,iCAAe,OAOP;AANjB,8DAA2D;AAKzD,mGALO,uCAAkB,OAKP;AAHpB,8CAA8D;AAK5D,4FALO,qBAAW,OAKP"}
@@ -0,0 +1,71 @@
1
+ import { AdapterConfig } from "./general";
2
+ export interface AdapterConfigBackblazeB2 extends AdapterConfig {
3
+ applicationKey: string;
4
+ applicationKeyId: string;
5
+ }
6
+ export type BackblazeAxiosResponse = {
7
+ response: {
8
+ data: {
9
+ code: string;
10
+ message: string;
11
+ status: number;
12
+ allowed?: {
13
+ capabilities: Array<string>;
14
+ };
15
+ buckets?: Array<any>;
16
+ };
17
+ };
18
+ };
19
+ export type BackblazeB2Bucket = {
20
+ accountId: "string";
21
+ bucketId: "string";
22
+ bucketInfo: "object";
23
+ bucketName: "string";
24
+ bucketType: "string";
25
+ corsRules: string[];
26
+ lifecycleRules: string[];
27
+ options: string[];
28
+ revision: number;
29
+ };
30
+ export type BackblazeB2File = {
31
+ accountId: string;
32
+ action: string;
33
+ bucketId: string;
34
+ contentLength: number;
35
+ contentMd5: string;
36
+ contentSha1: string;
37
+ contentType: string;
38
+ fileId: string;
39
+ fileInfo: [object];
40
+ fileName: string;
41
+ uploadTimestamp: number;
42
+ };
43
+ export type BucketB2 = {
44
+ id: string;
45
+ name: string;
46
+ };
47
+ export type FileB2 = {
48
+ id: string;
49
+ name: string;
50
+ contentType: string;
51
+ contentLength: number;
52
+ };
53
+ export type BackblazeBucketOptions = {
54
+ bucketType: string;
55
+ };
56
+ export type ResultObjectBucketsB2 = {
57
+ error: string | null;
58
+ value: Array<BucketB2> | null;
59
+ };
60
+ export type ResultObjectBucketB2 = {
61
+ error: string | null;
62
+ value: BucketB2 | null;
63
+ };
64
+ export type ResultObjectFileB2 = {
65
+ error: string | null;
66
+ value: FileB2 | null;
67
+ };
68
+ export type ResultObjectFilesB2 = {
69
+ error: string | null;
70
+ value: Array<FileB2> | null;
71
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=adapter_backblaze_b2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter_backblaze_b2.js","sourceRoot":"","sources":["../../../src/types/adapter_backblaze_b2.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { Readable } from "stream";
4
+ import { Options } from "./general";
5
+ /**
6
+ * @param bucketName name of the bucket you want to use
7
+ * @param origPath path of the file to be copied
8
+ * @param targetPath path to copy the file to, folders will be created automatically
9
+ * @param options additional option such as access rights
10
+ **/
11
+ export type FilePathParams = {
12
+ bucketName: string;
13
+ origPath: string;
14
+ targetPath: string;
15
+ options?: Options;
16
+ };
17
+ /**
18
+ * @param bucketName name of the bucket you want to use
19
+ * @param buffer file as buffer
20
+ * @param targetPath path to the file to save the buffer to, folders will be created automatically
21
+ * @param options additional option such as access rights
22
+ **/
23
+ export type FileBufferParams = {
24
+ bucketName: string;
25
+ buffer: Buffer;
26
+ targetPath: string;
27
+ options?: Options;
28
+ };
29
+ /**
30
+ * @param bucketName name of the bucket you want to use
31
+ * @param stream a read stream
32
+ * @param targetPath path to the file to save the stream to, folders will be created automatically
33
+ * @param options additional option such as access rights
34
+ **/
35
+ export type FileStreamParams = {
36
+ bucketName: string;
37
+ stream: Readable;
38
+ targetPath: string;
39
+ options?: Options;
40
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=add_file_params.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add_file_params.js","sourceRoot":"","sources":["../../../src/types/add_file_params.ts"],"names":[],"mappings":""}