@orion-js/file-manager 4.0.0-next.2 → 4.0.0-next.3

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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2022 Orionjs Team
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/dist/index.cjs CHANGED
@@ -4,7 +4,6 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __getProtoOf = Object.getPrototypeOf;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
8
7
  var __esm = (fn, res) => function __init() {
9
8
  return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
10
9
  };
@@ -29,17 +28,25 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
29
28
  mod
30
29
  ));
31
30
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
31
+ var __decorateClass = (decorators, target, key, kind) => {
32
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
33
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
34
+ if (decorator = decorators[i])
35
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
36
+ if (kind && result) __defProp(target, key, result);
37
+ return result;
38
+ };
32
39
 
33
40
  // src/credentials.ts
34
41
  var savedOptions, setupFileManager, getAWSCredentials, getFileManagerOptions;
35
42
  var init_credentials = __esm({
36
43
  "src/credentials.ts"() {
37
44
  savedOptions = {};
38
- setupFileManager = /* @__PURE__ */ __name((options) => {
45
+ setupFileManager = (options) => {
39
46
  savedOptions = options;
40
- }, "setupFileManager");
41
- getAWSCredentials = /* @__PURE__ */ __name(() => savedOptions, "getAWSCredentials");
42
- getFileManagerOptions = /* @__PURE__ */ __name(() => savedOptions, "getFileManagerOptions");
47
+ };
48
+ getAWSCredentials = () => savedOptions;
49
+ getFileManagerOptions = () => savedOptions;
43
50
  }
44
51
  });
45
52
 
@@ -73,7 +80,6 @@ var init_url = __esm({
73
80
  "src/File/resolvers/url.ts"() {
74
81
  import_resolvers2 = require("@orion-js/resolvers");
75
82
  init_credentials();
76
- __name(getFileURL, "getFileURL");
77
83
  url_default = (0, import_resolvers2.modelResolver)({
78
84
  returns: String,
79
85
  async resolve(file) {
@@ -124,109 +130,63 @@ var import_mongodb = require("@orion-js/mongodb");
124
130
 
125
131
  // src/File/schema.ts
126
132
  var import_typed_model = require("@orion-js/typed-model");
127
- function _ts_decorate(decorators, target, key, desc) {
128
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
129
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
130
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
131
- return c > 3 && r && Object.defineProperty(target, key, r), r;
132
- }
133
- __name(_ts_decorate, "_ts_decorate");
134
- function _ts_metadata(k, v) {
135
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
136
- }
137
- __name(_ts_metadata, "_ts_metadata");
138
- var _FileSchemaResizeData = class _FileSchemaResizeData {
133
+ var FileSchemaResizeData = class {
139
134
  thumbnailURL;
140
135
  smallURL;
141
136
  mediumURL;
142
137
  largeURL;
143
138
  extraLargeURL;
139
+ // 2400 height max
144
140
  };
145
- __name(_FileSchemaResizeData, "FileSchemaResizeData");
146
- var FileSchemaResizeData = _FileSchemaResizeData;
147
- _ts_decorate([
148
- (0, import_typed_model.Prop)({
149
- optional: true
150
- }),
151
- _ts_metadata("design:type", String)
152
- ], FileSchemaResizeData.prototype, "thumbnailURL", void 0);
153
- _ts_decorate([
154
- (0, import_typed_model.Prop)({
155
- optional: true
156
- }),
157
- _ts_metadata("design:type", String)
158
- ], FileSchemaResizeData.prototype, "smallURL", void 0);
159
- _ts_decorate([
160
- (0, import_typed_model.Prop)({
161
- optional: true
162
- }),
163
- _ts_metadata("design:type", String)
164
- ], FileSchemaResizeData.prototype, "mediumURL", void 0);
165
- _ts_decorate([
166
- (0, import_typed_model.Prop)({
167
- optional: true
168
- }),
169
- _ts_metadata("design:type", String)
170
- ], FileSchemaResizeData.prototype, "largeURL", void 0);
171
- _ts_decorate([
172
- (0, import_typed_model.Prop)({
173
- optional: true
174
- }),
175
- _ts_metadata("design:type", String)
176
- ], FileSchemaResizeData.prototype, "extraLargeURL", void 0);
177
- FileSchemaResizeData = _ts_decorate([
141
+ __decorateClass([
142
+ (0, import_typed_model.Prop)({ optional: true })
143
+ ], FileSchemaResizeData.prototype, "thumbnailURL", 2);
144
+ __decorateClass([
145
+ (0, import_typed_model.Prop)({ optional: true })
146
+ ], FileSchemaResizeData.prototype, "smallURL", 2);
147
+ __decorateClass([
148
+ (0, import_typed_model.Prop)({ optional: true })
149
+ ], FileSchemaResizeData.prototype, "mediumURL", 2);
150
+ __decorateClass([
151
+ (0, import_typed_model.Prop)({ optional: true })
152
+ ], FileSchemaResizeData.prototype, "largeURL", 2);
153
+ __decorateClass([
154
+ (0, import_typed_model.Prop)({ optional: true })
155
+ ], FileSchemaResizeData.prototype, "extraLargeURL", 2);
156
+ FileSchemaResizeData = __decorateClass([
178
157
  (0, import_typed_model.TypedSchema)()
179
158
  ], FileSchemaResizeData);
180
- var _FileSchemaDimensionsData = class _FileSchemaDimensionsData {
159
+ var FileSchemaDimensionsData = class {
181
160
  width;
182
161
  height;
183
162
  };
184
- __name(_FileSchemaDimensionsData, "FileSchemaDimensionsData");
185
- var FileSchemaDimensionsData = _FileSchemaDimensionsData;
186
- _ts_decorate([
187
- (0, import_typed_model.Prop)({
188
- optional: true
189
- }),
190
- _ts_metadata("design:type", Number)
191
- ], FileSchemaDimensionsData.prototype, "width", void 0);
192
- _ts_decorate([
193
- (0, import_typed_model.Prop)({
194
- optional: true
195
- }),
196
- _ts_metadata("design:type", Number)
197
- ], FileSchemaDimensionsData.prototype, "height", void 0);
198
- FileSchemaDimensionsData = _ts_decorate([
163
+ __decorateClass([
164
+ (0, import_typed_model.Prop)({ optional: true })
165
+ ], FileSchemaDimensionsData.prototype, "width", 2);
166
+ __decorateClass([
167
+ (0, import_typed_model.Prop)({ optional: true })
168
+ ], FileSchemaDimensionsData.prototype, "height", 2);
169
+ FileSchemaDimensionsData = __decorateClass([
199
170
  (0, import_typed_model.TypedSchema)()
200
171
  ], FileSchemaDimensionsData);
201
- var _FileSchemaColorsData = class _FileSchemaColorsData {
172
+ var FileSchemaColorsData = class {
202
173
  front;
203
174
  background;
204
175
  blurhash;
205
176
  };
206
- __name(_FileSchemaColorsData, "FileSchemaColorsData");
207
- var FileSchemaColorsData = _FileSchemaColorsData;
208
- _ts_decorate([
209
- (0, import_typed_model.Prop)({
210
- optional: true
211
- }),
212
- _ts_metadata("design:type", String)
213
- ], FileSchemaColorsData.prototype, "front", void 0);
214
- _ts_decorate([
215
- (0, import_typed_model.Prop)({
216
- optional: true
217
- }),
218
- _ts_metadata("design:type", String)
219
- ], FileSchemaColorsData.prototype, "background", void 0);
220
- _ts_decorate([
221
- (0, import_typed_model.Prop)({
222
- optional: true
223
- }),
224
- _ts_metadata("design:type", String)
225
- ], FileSchemaColorsData.prototype, "blurhash", void 0);
226
- FileSchemaColorsData = _ts_decorate([
177
+ __decorateClass([
178
+ (0, import_typed_model.Prop)({ optional: true })
179
+ ], FileSchemaColorsData.prototype, "front", 2);
180
+ __decorateClass([
181
+ (0, import_typed_model.Prop)({ optional: true })
182
+ ], FileSchemaColorsData.prototype, "background", 2);
183
+ __decorateClass([
184
+ (0, import_typed_model.Prop)({ optional: true })
185
+ ], FileSchemaColorsData.prototype, "blurhash", 2);
186
+ FileSchemaColorsData = __decorateClass([
227
187
  (0, import_typed_model.TypedSchema)()
228
188
  ], FileSchemaColorsData);
229
- var _FileSchema = class _FileSchema {
189
+ var FileSchema = class {
230
190
  _id;
231
191
  hash;
232
192
  externalUrl;
@@ -242,97 +202,52 @@ var _FileSchema = class _FileSchema {
242
202
  resizedData;
243
203
  colorsData;
244
204
  };
245
- __name(_FileSchema, "FileSchema");
246
- var FileSchema = _FileSchema;
247
- _ts_decorate([
248
- (0, import_typed_model.Prop)({
249
- type: "ID"
250
- }),
251
- _ts_metadata("design:type", String)
252
- ], FileSchema.prototype, "_id", void 0);
253
- _ts_decorate([
254
- (0, import_typed_model.Prop)({
255
- optional: true
256
- }),
257
- _ts_metadata("design:type", String)
258
- ], FileSchema.prototype, "hash", void 0);
259
- _ts_decorate([
205
+ __decorateClass([
206
+ (0, import_typed_model.Prop)({ type: "ID" })
207
+ ], FileSchema.prototype, "_id", 2);
208
+ __decorateClass([
209
+ (0, import_typed_model.Prop)({ optional: true })
210
+ ], FileSchema.prototype, "hash", 2);
211
+ __decorateClass([
260
212
  (0, import_typed_model.Prop)({
261
213
  optional: true,
262
214
  private: true
263
- }),
264
- _ts_metadata("design:type", String)
265
- ], FileSchema.prototype, "externalUrl", void 0);
266
- _ts_decorate([
267
- (0, import_typed_model.Prop)({
268
- optional: true
269
- }),
270
- _ts_metadata("design:type", String)
271
- ], FileSchema.prototype, "key", void 0);
272
- _ts_decorate([
273
- (0, import_typed_model.Prop)({
274
- optional: true
275
- }),
276
- _ts_metadata("design:type", String)
277
- ], FileSchema.prototype, "bucket", void 0);
278
- _ts_decorate([
279
- (0, import_typed_model.Prop)({
280
- optional: true
281
- }),
282
- _ts_metadata("design:type", String)
283
- ], FileSchema.prototype, "name", void 0);
284
- _ts_decorate([
285
- (0, import_typed_model.Prop)({
286
- optional: true
287
- }),
288
- _ts_metadata("design:type", String)
289
- ], FileSchema.prototype, "type", void 0);
290
- _ts_decorate([
291
- (0, import_typed_model.Prop)({
292
- optional: true
293
- }),
294
- _ts_metadata("design:type", Number)
295
- ], FileSchema.prototype, "size", void 0);
296
- _ts_decorate([
297
- (0, import_typed_model.Prop)({
298
- optional: true
299
- }),
300
- _ts_metadata("design:type", String)
301
- ], FileSchema.prototype, "status", void 0);
302
- _ts_decorate([
303
- (0, import_typed_model.Prop)({
304
- optional: true
305
- }),
306
- _ts_metadata("design:type", String)
307
- ], FileSchema.prototype, "createdBy", void 0);
308
- _ts_decorate([
309
- (0, import_typed_model.Prop)({
310
- optional: true
311
- }),
312
- _ts_metadata("design:type", typeof Date === "undefined" ? Object : Date)
313
- ], FileSchema.prototype, "createdAt", void 0);
314
- _ts_decorate([
315
- (0, import_typed_model.Prop)({
316
- optional: true,
317
- type: (0, import_typed_model.getModelForClass)(FileSchemaDimensionsData)
318
- }),
319
- _ts_metadata("design:type", typeof FileSchemaDimensionsData === "undefined" ? Object : FileSchemaDimensionsData)
320
- ], FileSchema.prototype, "dimensions", void 0);
321
- _ts_decorate([
322
- (0, import_typed_model.Prop)({
323
- optional: true,
324
- type: (0, import_typed_model.getModelForClass)(FileSchemaResizeData)
325
- }),
326
- _ts_metadata("design:type", typeof FileSchemaResizeData === "undefined" ? Object : FileSchemaResizeData)
327
- ], FileSchema.prototype, "resizedData", void 0);
328
- _ts_decorate([
329
- (0, import_typed_model.Prop)({
330
- optional: true,
331
- type: (0, import_typed_model.getModelForClass)(FileSchemaColorsData)
332
- }),
333
- _ts_metadata("design:type", typeof FileSchemaColorsData === "undefined" ? Object : FileSchemaColorsData)
334
- ], FileSchema.prototype, "colorsData", void 0);
335
- FileSchema = _ts_decorate([
215
+ })
216
+ ], FileSchema.prototype, "externalUrl", 2);
217
+ __decorateClass([
218
+ (0, import_typed_model.Prop)({ optional: true })
219
+ ], FileSchema.prototype, "key", 2);
220
+ __decorateClass([
221
+ (0, import_typed_model.Prop)({ optional: true })
222
+ ], FileSchema.prototype, "bucket", 2);
223
+ __decorateClass([
224
+ (0, import_typed_model.Prop)({ optional: true })
225
+ ], FileSchema.prototype, "name", 2);
226
+ __decorateClass([
227
+ (0, import_typed_model.Prop)({ optional: true })
228
+ ], FileSchema.prototype, "type", 2);
229
+ __decorateClass([
230
+ (0, import_typed_model.Prop)({ optional: true })
231
+ ], FileSchema.prototype, "size", 2);
232
+ __decorateClass([
233
+ (0, import_typed_model.Prop)({ optional: true })
234
+ ], FileSchema.prototype, "status", 2);
235
+ __decorateClass([
236
+ (0, import_typed_model.Prop)({ optional: true })
237
+ ], FileSchema.prototype, "createdBy", 2);
238
+ __decorateClass([
239
+ (0, import_typed_model.Prop)({ optional: true })
240
+ ], FileSchema.prototype, "createdAt", 2);
241
+ __decorateClass([
242
+ (0, import_typed_model.Prop)({ optional: true, type: (0, import_typed_model.getModelForClass)(FileSchemaDimensionsData) })
243
+ ], FileSchema.prototype, "dimensions", 2);
244
+ __decorateClass([
245
+ (0, import_typed_model.Prop)({ optional: true, type: (0, import_typed_model.getModelForClass)(FileSchemaResizeData) })
246
+ ], FileSchema.prototype, "resizedData", 2);
247
+ __decorateClass([
248
+ (0, import_typed_model.Prop)({ optional: true, type: (0, import_typed_model.getModelForClass)(FileSchemaColorsData) })
249
+ ], FileSchema.prototype, "colorsData", 2);
250
+ FileSchema = __decorateClass([
336
251
  (0, import_typed_model.TypedSchema)()
337
252
  ], FileSchema);
338
253
 
@@ -373,7 +288,6 @@ function isImage(image) {
373
288
  const mime = image.type;
374
289
  return mime.includes("image");
375
290
  }
376
- __name(isImage, "isImage");
377
291
 
378
292
  // src/resolvers/generateImageInfo.ts
379
293
  async function generateImageInfo(file) {
@@ -385,11 +299,7 @@ async function generateImageInfo(file) {
385
299
  try {
386
300
  file.dimensions = await options.getImageDimensions(file);
387
301
  if (!(0, import_lodash.isEmpty)(file.dimensions)) {
388
- await Files.updateOne(file._id, {
389
- $set: {
390
- dimensions: file.dimensions
391
- }
392
- });
302
+ await Files.updateOne(file._id, { $set: { dimensions: file.dimensions } });
393
303
  }
394
304
  } catch (error) {
395
305
  console.error("Error getting image dimensions", error);
@@ -399,11 +309,7 @@ async function generateImageInfo(file) {
399
309
  try {
400
310
  file.resizedData = await options.getResizedImages(file);
401
311
  if (!(0, import_lodash.isEmpty)(file.resizedData)) {
402
- await Files.updateOne(file._id, {
403
- $set: {
404
- resizedData: file.resizedData
405
- }
406
- });
312
+ await Files.updateOne(file._id, { $set: { resizedData: file.resizedData } });
407
313
  }
408
314
  } catch (error) {
409
315
  console.error("Error getting resized images", error);
@@ -413,11 +319,7 @@ async function generateImageInfo(file) {
413
319
  try {
414
320
  file.colorsData = await options.getImageColors(file);
415
321
  if (!(0, import_lodash.isEmpty)(file.colorsData)) {
416
- await Files.updateOne(file._id, {
417
- $set: {
418
- colorsData: file.colorsData
419
- }
420
- });
322
+ await Files.updateOne(file._id, { $set: { colorsData: file.colorsData } });
421
323
  }
422
324
  } catch (error) {
423
325
  console.error("Error getting image colors", error);
@@ -425,21 +327,18 @@ async function generateImageInfo(file) {
425
327
  }
426
328
  }
427
329
  }
428
- __name(generateImageInfo, "generateImageInfo");
429
330
 
430
331
  // src/File/index.ts
431
332
  var schema = (0, import_typed_model2.getModelForClass)(FileSchema).getSchema();
432
333
  var File_default = (0, import_models.createModel)({
433
334
  name: "File",
434
335
  schema,
435
- resolvers: /* @__PURE__ */ __name(() => (init_resolvers(), __toCommonJS(resolvers_exports)), "resolvers"),
336
+ resolvers: () => (init_resolvers(), __toCommonJS(resolvers_exports)),
436
337
  // this is only called when its child
437
338
  async clean(value) {
438
339
  if (!value) return null;
439
340
  const fileId = value._id;
440
- const file = await Files.findOne({
441
- _id: fileId
442
- });
341
+ const file = await Files.findOne({ _id: fileId });
443
342
  if (!file) return null;
444
343
  await generateImageInfo(file);
445
344
  const keys = Object.keys((0, import_omit.default)(schema, "createdBy", "createdAt", "status"));
@@ -473,14 +372,10 @@ var fileManagerFiles = (0, import_paginated_mongodb.paginatedResolver)({
473
372
  },
474
373
  returns: File_default,
475
374
  async getCursor({ filter }, viewer) {
476
- const query = {
477
- status: "uploaded"
478
- };
375
+ const query = { status: "uploaded" };
479
376
  query.createdBy = viewer.userId;
480
377
  if (filter) {
481
- query.name = {
482
- $regex: new RegExp(`^${(0, import_escape_string_regexp.default)(filter)}`)
483
- };
378
+ query.name = { $regex: new RegExp(`^${(0, import_escape_string_regexp.default)(filter)}`) };
484
379
  }
485
380
  return Files.find(query);
486
381
  }
@@ -498,15 +393,8 @@ var completeUpload_default = (0, import_resolvers4.resolver)({
498
393
  returns: File_default,
499
394
  mutation: true,
500
395
  async resolve({ fileId }, viewer) {
501
- const file = await Files.findOne({
502
- createdBy: viewer.userId,
503
- _id: fileId
504
- });
505
- await Files.updateOne(file, {
506
- $set: {
507
- status: "uploaded"
508
- }
509
- });
396
+ const file = await Files.findOne({ createdBy: viewer.userId, _id: fileId });
397
+ await Files.updateOne(file, { $set: { status: "uploaded" } });
510
398
  await generateImageInfo(file);
511
399
  return file;
512
400
  }
@@ -549,7 +437,16 @@ var generateUploadCredentials = (0, import_resolvers5.resolver)({
549
437
  }),
550
438
  mutation: true,
551
439
  async resolve(params, viewer) {
552
- const { accessKeyId, secretAccessKey, region, bucket, endpoint, s3ForcePathStyle, canUpload, basePath } = getAWSCredentials();
440
+ const {
441
+ accessKeyId,
442
+ secretAccessKey,
443
+ region,
444
+ bucket,
445
+ endpoint,
446
+ s3ForcePathStyle,
447
+ canUpload,
448
+ basePath
449
+ } = getAWSCredentials();
553
450
  const s3 = new import_aws_sdk.default.S3({
554
451
  accessKeyId,
555
452
  secretAccessKey,
@@ -573,33 +470,26 @@ var generateUploadCredentials = (0, import_resolvers5.resolver)({
573
470
  createdAt: /* @__PURE__ */ new Date()
574
471
  });
575
472
  const result = await new Promise((resolve, reject) => {
576
- s3.createPresignedPost({
577
- Bucket: bucket,
578
- Conditions: [
579
- [
580
- "content-length-range",
581
- params.size,
582
- params.size
473
+ s3.createPresignedPost(
474
+ {
475
+ Bucket: bucket,
476
+ Conditions: [
477
+ ["content-length-range", params.size, params.size],
478
+ { "Content-Type": params.type },
479
+ { "Cache-Control": "public, max-age=31536000, immutable" },
480
+ { Key: key }
583
481
  ],
584
- {
585
- "Content-Type": params.type
586
- },
587
- {
482
+ Fields: {
483
+ key,
484
+ "Content-Type": params.type,
588
485
  "Cache-Control": "public, max-age=31536000, immutable"
589
- },
590
- {
591
- Key: key
592
486
  }
593
- ],
594
- Fields: {
595
- key,
596
- "Content-Type": params.type,
597
- "Cache-Control": "public, max-age=31536000, immutable"
487
+ },
488
+ function(error, data) {
489
+ if (error) reject(error);
490
+ else resolve(data);
598
491
  }
599
- }, function(error, data) {
600
- if (error) reject(error);
601
- else resolve(data);
602
- });
492
+ );
603
493
  });
604
494
  return {
605
495
  fileId,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/credentials.ts","../src/File/resolvers/genericType.ts","../src/File/resolvers/url.ts","../src/File/resolvers/index.ts","../src/index.ts","../src/resolvers/fileManagerFile.ts","../src/File/index.ts","../src/Files/index.ts","../src/File/schema.ts","../src/resolvers/generateImageInfo.ts","../src/File/resolvers/isImage.ts","../src/resolvers/fileManagerFiles.ts","../src/resolvers/completeUpload.ts","../src/resolvers/generateUploadCredentials.ts","../src/resolvers/index.ts"],"sourcesContent":["import {\n FileSchema,\n FileSchemaColorsData,\n FileSchemaDimensionsData,\n FileSchemaResizeData,\n} from './File/schema'\n\nexport interface FileManagerOptions {\n accessKeyId: string\n secretAccessKey: string\n region: string\n bucket: string\n canUpload: Function\n getFileURL?: Function\n basePath: string\n endpoint?: string\n s3ForcePathStyle?: boolean\n\n getImageDimensions?: (file: FileSchema) => Promise<FileSchemaDimensionsData>\n getResizedImages?: (file: FileSchema) => Promise<FileSchemaResizeData>\n getImageColors?: (file: FileSchema) => Promise<FileSchemaColorsData>\n}\n\nlet savedOptions: Partial<FileManagerOptions> = {}\n\nexport const setupFileManager = (options: FileManagerOptions) => {\n savedOptions = options\n}\n\n/**\n * @deprecated use getFileManagerOptions instead\n */\nexport const getAWSCredentials = () => savedOptions\n\nexport const getFileManagerOptions = () => savedOptions\n","import {modelResolver} from '@orion-js/resolvers'\n\nexport default modelResolver({\n returns: String,\n async resolve(file, viewer) {\n const {type} = file\n if (!type) return 'unknown'\n if (type.startsWith('image/')) return 'image'\n if (type.startsWith('application/pdf')) return 'pdf'\n return 'unknown'\n }\n})\n","import {modelResolver} from '@orion-js/resolvers'\nimport {getAWSCredentials} from '../../credentials'\nimport {FileSchema} from '../schema'\n\nexport function getFileURL(file: FileSchema): string {\n if (file.externalUrl) return file.externalUrl\n const options = getAWSCredentials()\n if (options.getFileURL) return options.getFileURL(file)\n return `https://s3.amazonaws.com/${file.bucket}/${encodeURIComponent(file.key)}`\n}\n\nexport default modelResolver({\n returns: String,\n async resolve(file) {\n return getFileURL(file)\n }\n})\n","import genericType from './genericType'\nimport url from './url'\n\nexport default {\n url,\n genericType,\n}\n","import resolvers from './resolvers'\nimport {setupFileManager, getAWSCredentials} from './credentials'\nimport File from './File'\nimport {Files} from './Files'\nimport {getFileURL} from './File/resolvers/url'\nimport {FileSchema} from './File/schema'\n\nexport {resolvers, setupFileManager, getAWSCredentials, File, Files, getFileURL, FileSchema}\n","import {resolver} from '@orion-js/resolvers'\nimport File from '../File'\nimport {Files} from '../Files'\n\nexport default resolver({\n params: {\n fileId: {\n type: 'ID'\n }\n },\n returns: File,\n async resolve({fileId}) {\n return await Files.findOne(fileId)\n }\n})\n","import {ModelSchema, createModel} from '@orion-js/models'\nimport {Files} from '../Files'\nimport pick from 'lodash/pick'\nimport omit from 'lodash/omit'\nimport {FileSchema} from './schema'\nimport {getModelForClass} from '@orion-js/typed-model'\nimport {generateImageInfo} from '../resolvers/generateImageInfo'\n\nconst schema = getModelForClass(FileSchema).getSchema()\n\nexport default createModel<FileSchema>({\n name: 'File',\n schema: schema as ModelSchema,\n resolvers: () => require('./resolvers'),\n // this is only called when its child\n async clean(value) {\n if (!value) return null\n const fileId = value._id\n const file = await Files.findOne({_id: fileId})\n if (!file) return null\n\n await generateImageInfo(file)\n\n const keys = Object.keys(omit(schema, 'createdBy', 'createdAt', 'status'))\n const data = pick(file, keys)\n return data\n },\n})\n","import {Collection, createCollection} from '@orion-js/mongodb'\nimport File from '../File'\nimport {FileSchema} from '../File/schema'\n\nexport const Files: Collection<FileSchema> = createCollection<FileSchema>({\n name: 'filemanager_files',\n model: File,\n schema: FileSchema,\n indexes: [\n {\n keys: {\n key: 1,\n bucket: 1\n }\n },\n {\n keys: {\n hash: 1\n }\n }\n ]\n})\n","import {getModelForClass, Prop, TypedSchema} from '@orion-js/typed-model'\n\n@TypedSchema()\nexport class FileSchemaResizeData {\n @Prop({optional: true})\n thumbnailURL?: string // 100 height max\n\n @Prop({optional: true})\n smallURL?: string // 300 height max\n\n @Prop({optional: true})\n mediumURL?: string // 800 height max\n\n @Prop({optional: true})\n largeURL?: string // 1400 height max\n\n @Prop({optional: true})\n extraLargeURL?: string // 2400 height max\n}\n\n@TypedSchema()\nexport class FileSchemaDimensionsData {\n @Prop({optional: true})\n width?: number\n\n @Prop({optional: true})\n height?: number\n}\n\n@TypedSchema()\nexport class FileSchemaColorsData {\n @Prop({optional: true})\n front?: string\n\n @Prop({optional: true})\n background?: string\n\n @Prop({optional: true})\n blurhash?: string\n}\n\n@TypedSchema()\nexport class FileSchema {\n @Prop({type: 'ID'})\n _id: string\n\n @Prop({optional: true})\n hash?: string\n\n @Prop({\n optional: true,\n private: true,\n })\n externalUrl?: string\n\n @Prop({optional: true})\n key?: string\n\n @Prop({optional: true})\n bucket?: string\n\n @Prop({optional: true})\n name?: string\n\n @Prop({optional: true})\n type?: string\n\n @Prop({optional: true})\n size?: number\n\n @Prop({optional: true})\n status?: string\n\n @Prop({optional: true})\n createdBy?: string\n\n @Prop({optional: true})\n createdAt?: Date\n\n @Prop({optional: true, type: getModelForClass(FileSchemaDimensionsData)})\n dimensions?: FileSchemaDimensionsData\n\n @Prop({optional: true, type: getModelForClass(FileSchemaResizeData)})\n resizedData?: FileSchemaResizeData\n\n @Prop({optional: true, type: getModelForClass(FileSchemaColorsData)})\n colorsData?: FileSchemaColorsData\n}\n","import {isEmpty} from 'lodash'\nimport {getFileManagerOptions} from '../credentials'\nimport {isImage} from '../File/resolvers/isImage'\nimport {FileSchema} from '../File/schema'\nimport {Files} from '../Files'\n\nexport async function generateImageInfo(file: FileSchema) {\n if (!file._id) return\n\n const options = getFileManagerOptions()\n\n if (isImage(file)) {\n if (!file.dimensions && options.getImageDimensions) {\n try {\n file.dimensions = await options.getImageDimensions(file)\n if (!isEmpty(file.dimensions)) {\n await Files.updateOne(file._id, {$set: {dimensions: file.dimensions}})\n }\n } catch (error) {\n console.error('Error getting image dimensions', error)\n }\n }\n\n if (!file.resizedData?.extraLargeURL && options.getResizedImages) {\n try {\n file.resizedData = await options.getResizedImages(file)\n if (!isEmpty(file.resizedData)) {\n await Files.updateOne(file._id, {$set: {resizedData: file.resizedData}})\n }\n } catch (error) {\n console.error('Error getting resized images', error)\n }\n }\n\n if (!file.colorsData && options.getImageColors) {\n try {\n file.colorsData = await options.getImageColors(file)\n if (!isEmpty(file.colorsData)) {\n await Files.updateOne(file._id, {$set: {colorsData: file.colorsData}})\n }\n } catch (error) {\n console.error('Error getting image colors', error)\n }\n }\n }\n}\n","import {FileSchema} from '../schema'\n\nexport function isImage(image: FileSchema): boolean {\n if (!image.type) {\n return true\n }\n const mime = image.type\n return mime.includes('image')\n}\n","import {paginatedResolver} from '@orion-js/paginated-mongodb'\nimport {Resolver} from '@orion-js/resolvers'\nimport escapeString from 'escape-string-regexp'\nimport File from '../File'\nimport {Files} from '../Files'\n\nconst fileManagerFiles: Resolver = paginatedResolver({\n params: {\n filter: {\n type: String,\n optional: true,\n },\n },\n returns: File,\n async getCursor({filter}, viewer) {\n const query: any = {status: 'uploaded'}\n\n query.createdBy = viewer.userId\n\n if (filter) {\n query.name = {$regex: new RegExp(`^${escapeString(filter)}`)}\n }\n\n return Files.find(query)\n },\n})\n\nexport default fileManagerFiles\n","import {resolver} from '@orion-js/resolvers'\nimport File from '../File'\nimport {Files} from '../Files'\nimport {generateImageInfo} from './generateImageInfo'\n\nexport default resolver({\n params: {\n fileId: {\n type: 'ID',\n },\n },\n returns: File,\n mutation: true,\n async resolve({fileId}, viewer) {\n const file = await Files.findOne({createdBy: viewer.userId, _id: fileId})\n await Files.updateOne(file, {$set: {status: 'uploaded'}})\n\n // mientras el usuario sigue editando el formulario, se generan los resizes y colores\n await generateImageInfo(file)\n\n return file\n },\n})\n","import {resolver} from '@orion-js/resolvers'\nimport {generateId, generateUUID} from '@orion-js/helpers'\nimport {createModel} from '@orion-js/models'\nimport AWS from 'aws-sdk'\nimport {getAWSCredentials} from '../credentials'\nimport {Files} from '../Files'\nimport type {Resolver} from '@orion-js/resolvers'\n\nexport const generateUploadCredentials: Resolver<any, any> = resolver({\n params: {\n name: {\n type: String,\n },\n size: {\n type: Number,\n },\n type: {\n type: String,\n },\n },\n returns: createModel({\n name: 'UploadCredentials',\n schema: {\n fileId: {\n type: 'ID',\n },\n url: {\n type: String,\n },\n fields: {\n type: 'blackbox',\n },\n key: {\n type: String,\n },\n },\n }),\n mutation: true,\n async resolve(params, viewer) {\n const {\n accessKeyId,\n secretAccessKey,\n region,\n bucket,\n endpoint,\n s3ForcePathStyle,\n canUpload,\n basePath,\n } = getAWSCredentials()\n const s3 = new AWS.S3({\n accessKeyId,\n secretAccessKey,\n region,\n endpoint,\n s3ForcePathStyle,\n })\n\n if (canUpload) {\n if (!(await canUpload(params, viewer))) return null\n }\n\n const key = `${basePath}/${generateId()}-${params.name}`\n\n const fileId = await Files.rawCollection.insertOne({\n _id: `ofl-${generateUUID()}`,\n key,\n bucket,\n name: params.name,\n type: params.type,\n size: params.size,\n status: 'uploading',\n createdBy: viewer.userId,\n createdAt: new Date(),\n })\n\n const result = await new Promise<AWS.S3.PresignedPost>((resolve, reject) => {\n s3.createPresignedPost(\n {\n Bucket: bucket,\n Conditions: [\n ['content-length-range', params.size, params.size],\n {'Content-Type': params.type},\n {'Cache-Control': 'public, max-age=31536000, immutable'},\n {Key: key},\n ],\n Fields: {\n key: key,\n 'Content-Type': params.type,\n 'Cache-Control': 'public, max-age=31536000, immutable',\n },\n },\n function (error, data) {\n if (error) reject(error)\n else resolve(data)\n },\n )\n })\n\n return {\n fileId,\n ...(result as object),\n key,\n }\n },\n})\n","import fileManagerFile from './fileManagerFile'\nimport fileManagerFiles from './fileManagerFiles'\nimport completeUpload from './completeUpload'\nimport {generateUploadCredentials} from './generateUploadCredentials'\nimport type {Resolver} from '@orion-js/resolvers'\n\n// Define a type for our resolvers object\ntype ResolversMap = Record<string, Resolver<any, any>>\n\nconst resolvers: ResolversMap = {\n fileManagerFile,\n fileManagerFiles,\n completeUpload,\n generateUploadCredentials\n}\n\nexport default resolvers\n"],"mappings":"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","names":["savedOptions","setupFileManager","getAWSCredentials","getFileManagerOptions","options","modelResolver","returns","String","resolve","file","viewer","type","startsWith","getFileURL","file","externalUrl","options","getAWSCredentials","bucket","encodeURIComponent","key","import_resolvers","modelResolver","returns","String","resolve","url","genericType","resolvers_default","import_resolvers","FileSchemaResizeData","thumbnailURL","smallURL","mediumURL","largeURL","extraLargeURL","optional","FileSchemaDimensionsData","width","height","FileSchemaColorsData","front","background","blurhash","FileSchema","_id","hash","externalUrl","key","bucket","name","type","size","status","createdBy","createdAt","dimensions","resizedData","colorsData","private","getModelForClass","Files","createCollection","name","model","File","schema","FileSchema","indexes","keys","key","bucket","hash","import_typed_model","isImage","image","type","mime","includes","generateImageInfo","file","_id","options","getFileManagerOptions","isImage","dimensions","getImageDimensions","isEmpty","Files","updateOne","$set","error","console","resizedData","extraLargeURL","getResizedImages","colorsData","getImageColors","schema","getModelForClass","FileSchema","getSchema","createModel","name","resolvers","require","clean","value","fileId","_id","file","Files","findOne","generateImageInfo","keys","Object","omit","data","pick","resolver","params","fileId","type","returns","File","resolve","Files","findOne","fileManagerFiles","paginatedResolver","params","filter","type","String","optional","returns","File","getCursor","viewer","query","status","createdBy","userId","name","$regex","RegExp","escapeString","Files","find","import_resolvers","resolver","params","fileId","type","returns","File","mutation","resolve","viewer","file","Files","findOne","createdBy","userId","_id","updateOne","$set","status","generateImageInfo","import_resolvers","import_models","generateUploadCredentials","resolver","params","name","type","String","size","Number","returns","createModel","schema","fileId","url","fields","key","mutation","resolve","viewer","accessKeyId","secretAccessKey","region","bucket","endpoint","s3ForcePathStyle","canUpload","basePath","getAWSCredentials","s3","AWS","S3","generateId","Files","rawCollection","insertOne","_id","generateUUID","status","createdBy","userId","createdAt","Date","result","Promise","reject","createPresignedPost","Bucket","Conditions","Key","Fields","error","data","resolvers","fileManagerFile","fileManagerFiles","completeUpload","generateUploadCredentials","resolvers_default"]}
1
+ {"version":3,"sources":["../src/credentials.ts","../src/File/resolvers/genericType.ts","../src/File/resolvers/url.ts","../src/File/resolvers/index.ts","../src/index.ts","../src/resolvers/fileManagerFile.ts","../src/File/index.ts","../src/Files/index.ts","../src/File/schema.ts","../src/resolvers/generateImageInfo.ts","../src/File/resolvers/isImage.ts","../src/resolvers/fileManagerFiles.ts","../src/resolvers/completeUpload.ts","../src/resolvers/generateUploadCredentials.ts","../src/resolvers/index.ts"],"sourcesContent":["import {\n FileSchema,\n FileSchemaColorsData,\n FileSchemaDimensionsData,\n FileSchemaResizeData,\n} from './File/schema'\n\nexport interface FileManagerOptions {\n accessKeyId: string\n secretAccessKey: string\n region: string\n bucket: string\n canUpload: Function\n getFileURL?: Function\n basePath: string\n endpoint?: string\n s3ForcePathStyle?: boolean\n\n getImageDimensions?: (file: FileSchema) => Promise<FileSchemaDimensionsData>\n getResizedImages?: (file: FileSchema) => Promise<FileSchemaResizeData>\n getImageColors?: (file: FileSchema) => Promise<FileSchemaColorsData>\n}\n\nlet savedOptions: Partial<FileManagerOptions> = {}\n\nexport const setupFileManager = (options: FileManagerOptions) => {\n savedOptions = options\n}\n\n/**\n * @deprecated use getFileManagerOptions instead\n */\nexport const getAWSCredentials = () => savedOptions\n\nexport const getFileManagerOptions = () => savedOptions\n","import {modelResolver} from '@orion-js/resolvers'\n\nexport default modelResolver({\n returns: String,\n async resolve(file, viewer) {\n const {type} = file\n if (!type) return 'unknown'\n if (type.startsWith('image/')) return 'image'\n if (type.startsWith('application/pdf')) return 'pdf'\n return 'unknown'\n }\n})\n","import {modelResolver} from '@orion-js/resolvers'\nimport {getAWSCredentials} from '../../credentials'\nimport {FileSchema} from '../schema'\n\nexport function getFileURL(file: FileSchema): string {\n if (file.externalUrl) return file.externalUrl\n const options = getAWSCredentials()\n if (options.getFileURL) return options.getFileURL(file)\n return `https://s3.amazonaws.com/${file.bucket}/${encodeURIComponent(file.key)}`\n}\n\nexport default modelResolver({\n returns: String,\n async resolve(file) {\n return getFileURL(file)\n }\n})\n","import genericType from './genericType'\nimport url from './url'\n\nexport default {\n url,\n genericType,\n}\n","import resolvers from './resolvers'\nimport {setupFileManager, getAWSCredentials} from './credentials'\nimport File from './File'\nimport {Files} from './Files'\nimport {getFileURL} from './File/resolvers/url'\nimport {FileSchema} from './File/schema'\n\nexport {resolvers, setupFileManager, getAWSCredentials, File, Files, getFileURL, FileSchema}\n","import {resolver} from '@orion-js/resolvers'\nimport File from '../File'\nimport {Files} from '../Files'\n\nexport default resolver({\n params: {\n fileId: {\n type: 'ID'\n }\n },\n returns: File,\n async resolve({fileId}) {\n return await Files.findOne(fileId)\n }\n})\n","import {ModelSchema, createModel} from '@orion-js/models'\nimport {Files} from '../Files'\nimport pick from 'lodash/pick'\nimport omit from 'lodash/omit'\nimport {FileSchema} from './schema'\nimport {getModelForClass} from '@orion-js/typed-model'\nimport {generateImageInfo} from '../resolvers/generateImageInfo'\n\nconst schema = getModelForClass(FileSchema).getSchema()\n\nexport default createModel<FileSchema>({\n name: 'File',\n schema: schema as ModelSchema,\n resolvers: () => require('./resolvers'),\n // this is only called when its child\n async clean(value) {\n if (!value) return null\n const fileId = value._id\n const file = await Files.findOne({_id: fileId})\n if (!file) return null\n\n await generateImageInfo(file)\n\n const keys = Object.keys(omit(schema, 'createdBy', 'createdAt', 'status'))\n const data = pick(file, keys)\n return data\n },\n})\n","import {Collection, createCollection} from '@orion-js/mongodb'\nimport File from '../File'\nimport {FileSchema} from '../File/schema'\n\nexport const Files: Collection<FileSchema> = createCollection<FileSchema>({\n name: 'filemanager_files',\n model: File,\n schema: FileSchema,\n indexes: [\n {\n keys: {\n key: 1,\n bucket: 1\n }\n },\n {\n keys: {\n hash: 1\n }\n }\n ]\n})\n","import {getModelForClass, Prop, TypedSchema} from '@orion-js/typed-model'\n\n@TypedSchema()\nexport class FileSchemaResizeData {\n @Prop({optional: true})\n thumbnailURL?: string // 100 height max\n\n @Prop({optional: true})\n smallURL?: string // 300 height max\n\n @Prop({optional: true})\n mediumURL?: string // 800 height max\n\n @Prop({optional: true})\n largeURL?: string // 1400 height max\n\n @Prop({optional: true})\n extraLargeURL?: string // 2400 height max\n}\n\n@TypedSchema()\nexport class FileSchemaDimensionsData {\n @Prop({optional: true})\n width?: number\n\n @Prop({optional: true})\n height?: number\n}\n\n@TypedSchema()\nexport class FileSchemaColorsData {\n @Prop({optional: true})\n front?: string\n\n @Prop({optional: true})\n background?: string\n\n @Prop({optional: true})\n blurhash?: string\n}\n\n@TypedSchema()\nexport class FileSchema {\n @Prop({type: 'ID'})\n _id: string\n\n @Prop({optional: true})\n hash?: string\n\n @Prop({\n optional: true,\n private: true,\n })\n externalUrl?: string\n\n @Prop({optional: true})\n key?: string\n\n @Prop({optional: true})\n bucket?: string\n\n @Prop({optional: true})\n name?: string\n\n @Prop({optional: true})\n type?: string\n\n @Prop({optional: true})\n size?: number\n\n @Prop({optional: true})\n status?: string\n\n @Prop({optional: true})\n createdBy?: string\n\n @Prop({optional: true})\n createdAt?: Date\n\n @Prop({optional: true, type: getModelForClass(FileSchemaDimensionsData)})\n dimensions?: FileSchemaDimensionsData\n\n @Prop({optional: true, type: getModelForClass(FileSchemaResizeData)})\n resizedData?: FileSchemaResizeData\n\n @Prop({optional: true, type: getModelForClass(FileSchemaColorsData)})\n colorsData?: FileSchemaColorsData\n}\n","import {isEmpty} from 'lodash'\nimport {getFileManagerOptions} from '../credentials'\nimport {isImage} from '../File/resolvers/isImage'\nimport {FileSchema} from '../File/schema'\nimport {Files} from '../Files'\n\nexport async function generateImageInfo(file: FileSchema) {\n if (!file._id) return\n\n const options = getFileManagerOptions()\n\n if (isImage(file)) {\n if (!file.dimensions && options.getImageDimensions) {\n try {\n file.dimensions = await options.getImageDimensions(file)\n if (!isEmpty(file.dimensions)) {\n await Files.updateOne(file._id, {$set: {dimensions: file.dimensions}})\n }\n } catch (error) {\n console.error('Error getting image dimensions', error)\n }\n }\n\n if (!file.resizedData?.extraLargeURL && options.getResizedImages) {\n try {\n file.resizedData = await options.getResizedImages(file)\n if (!isEmpty(file.resizedData)) {\n await Files.updateOne(file._id, {$set: {resizedData: file.resizedData}})\n }\n } catch (error) {\n console.error('Error getting resized images', error)\n }\n }\n\n if (!file.colorsData && options.getImageColors) {\n try {\n file.colorsData = await options.getImageColors(file)\n if (!isEmpty(file.colorsData)) {\n await Files.updateOne(file._id, {$set: {colorsData: file.colorsData}})\n }\n } catch (error) {\n console.error('Error getting image colors', error)\n }\n }\n }\n}\n","import {FileSchema} from '../schema'\n\nexport function isImage(image: FileSchema): boolean {\n if (!image.type) {\n return true\n }\n const mime = image.type\n return mime.includes('image')\n}\n","import {paginatedResolver} from '@orion-js/paginated-mongodb'\nimport {Resolver} from '@orion-js/resolvers'\nimport escapeString from 'escape-string-regexp'\nimport File from '../File'\nimport {Files} from '../Files'\n\nconst fileManagerFiles: Resolver = paginatedResolver({\n params: {\n filter: {\n type: String,\n optional: true,\n },\n },\n returns: File,\n async getCursor({filter}, viewer) {\n const query: any = {status: 'uploaded'}\n\n query.createdBy = viewer.userId\n\n if (filter) {\n query.name = {$regex: new RegExp(`^${escapeString(filter)}`)}\n }\n\n return Files.find(query)\n },\n})\n\nexport default fileManagerFiles\n","import {resolver} from '@orion-js/resolvers'\nimport File from '../File'\nimport {Files} from '../Files'\nimport {generateImageInfo} from './generateImageInfo'\n\nexport default resolver({\n params: {\n fileId: {\n type: 'ID',\n },\n },\n returns: File,\n mutation: true,\n async resolve({fileId}, viewer) {\n const file = await Files.findOne({createdBy: viewer.userId, _id: fileId})\n await Files.updateOne(file, {$set: {status: 'uploaded'}})\n\n // mientras el usuario sigue editando el formulario, se generan los resizes y colores\n await generateImageInfo(file)\n\n return file\n },\n})\n","import {resolver} from '@orion-js/resolvers'\nimport {generateId, generateUUID} from '@orion-js/helpers'\nimport {createModel} from '@orion-js/models'\nimport AWS from 'aws-sdk'\nimport {getAWSCredentials} from '../credentials'\nimport {Files} from '../Files'\nimport type {Resolver} from '@orion-js/resolvers'\n\nexport const generateUploadCredentials: Resolver<any, any> = resolver({\n params: {\n name: {\n type: String,\n },\n size: {\n type: Number,\n },\n type: {\n type: String,\n },\n },\n returns: createModel({\n name: 'UploadCredentials',\n schema: {\n fileId: {\n type: 'ID',\n },\n url: {\n type: String,\n },\n fields: {\n type: 'blackbox',\n },\n key: {\n type: String,\n },\n },\n }),\n mutation: true,\n async resolve(params, viewer) {\n const {\n accessKeyId,\n secretAccessKey,\n region,\n bucket,\n endpoint,\n s3ForcePathStyle,\n canUpload,\n basePath,\n } = getAWSCredentials()\n const s3 = new AWS.S3({\n accessKeyId,\n secretAccessKey,\n region,\n endpoint,\n s3ForcePathStyle,\n })\n\n if (canUpload) {\n if (!(await canUpload(params, viewer))) return null\n }\n\n const key = `${basePath}/${generateId()}-${params.name}`\n\n const fileId = await Files.rawCollection.insertOne({\n _id: `ofl-${generateUUID()}`,\n key,\n bucket,\n name: params.name,\n type: params.type,\n size: params.size,\n status: 'uploading',\n createdBy: viewer.userId,\n createdAt: new Date(),\n })\n\n const result = await new Promise<AWS.S3.PresignedPost>((resolve, reject) => {\n s3.createPresignedPost(\n {\n Bucket: bucket,\n Conditions: [\n ['content-length-range', params.size, params.size],\n {'Content-Type': params.type},\n {'Cache-Control': 'public, max-age=31536000, immutable'},\n {Key: key},\n ],\n Fields: {\n key: key,\n 'Content-Type': params.type,\n 'Cache-Control': 'public, max-age=31536000, immutable',\n },\n },\n function (error, data) {\n if (error) reject(error)\n else resolve(data)\n },\n )\n })\n\n return {\n fileId,\n ...(result as object),\n key,\n }\n },\n})\n","import fileManagerFile from './fileManagerFile'\nimport fileManagerFiles from './fileManagerFiles'\nimport completeUpload from './completeUpload'\nimport {generateUploadCredentials} from './generateUploadCredentials'\nimport type {Resolver} from '@orion-js/resolvers'\n\n// Define a type for our resolvers object\ntype ResolversMap = Record<string, Resolver<any, any>>\n\nconst resolvers: ResolversMap = {\n fileManagerFile,\n fileManagerFiles,\n completeUpload,\n generateUploadCredentials\n}\n\nexport default resolvers\n"],"mappings":"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","names":["import_resolvers","resolvers_default","import_resolvers","import_typed_model","omit","pick","escapeString","import_resolvers","import_resolvers","import_models","AWS","resolvers_default"]}
package/dist/index.js CHANGED
@@ -2,7 +2,6 @@ var __defProp = Object.defineProperty;
2
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
4
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
5
  var __esm = (fn, res) => function __init() {
7
6
  return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
8
7
  };
@@ -19,17 +18,25 @@ var __copyProps = (to, from, except, desc) => {
19
18
  return to;
20
19
  };
21
20
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
+ var __decorateClass = (decorators, target, key, kind) => {
22
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
23
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
24
+ if (decorator = decorators[i])
25
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
26
+ if (kind && result) __defProp(target, key, result);
27
+ return result;
28
+ };
22
29
 
23
30
  // src/credentials.ts
24
31
  var savedOptions, setupFileManager, getAWSCredentials, getFileManagerOptions;
25
32
  var init_credentials = __esm({
26
33
  "src/credentials.ts"() {
27
34
  savedOptions = {};
28
- setupFileManager = /* @__PURE__ */ __name((options) => {
35
+ setupFileManager = (options) => {
29
36
  savedOptions = options;
30
- }, "setupFileManager");
31
- getAWSCredentials = /* @__PURE__ */ __name(() => savedOptions, "getAWSCredentials");
32
- getFileManagerOptions = /* @__PURE__ */ __name(() => savedOptions, "getFileManagerOptions");
37
+ };
38
+ getAWSCredentials = () => savedOptions;
39
+ getFileManagerOptions = () => savedOptions;
33
40
  }
34
41
  });
35
42
 
@@ -63,7 +70,6 @@ var url_default;
63
70
  var init_url = __esm({
64
71
  "src/File/resolvers/url.ts"() {
65
72
  init_credentials();
66
- __name(getFileURL, "getFileURL");
67
73
  url_default = modelResolver2({
68
74
  returns: String,
69
75
  async resolve(file) {
@@ -101,109 +107,63 @@ import { createCollection } from "@orion-js/mongodb";
101
107
 
102
108
  // src/File/schema.ts
103
109
  import { getModelForClass, Prop, TypedSchema } from "@orion-js/typed-model";
104
- function _ts_decorate(decorators, target, key, desc) {
105
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
106
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
107
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
108
- return c > 3 && r && Object.defineProperty(target, key, r), r;
109
- }
110
- __name(_ts_decorate, "_ts_decorate");
111
- function _ts_metadata(k, v) {
112
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
113
- }
114
- __name(_ts_metadata, "_ts_metadata");
115
- var _FileSchemaResizeData = class _FileSchemaResizeData {
110
+ var FileSchemaResizeData = class {
116
111
  thumbnailURL;
117
112
  smallURL;
118
113
  mediumURL;
119
114
  largeURL;
120
115
  extraLargeURL;
116
+ // 2400 height max
121
117
  };
122
- __name(_FileSchemaResizeData, "FileSchemaResizeData");
123
- var FileSchemaResizeData = _FileSchemaResizeData;
124
- _ts_decorate([
125
- Prop({
126
- optional: true
127
- }),
128
- _ts_metadata("design:type", String)
129
- ], FileSchemaResizeData.prototype, "thumbnailURL", void 0);
130
- _ts_decorate([
131
- Prop({
132
- optional: true
133
- }),
134
- _ts_metadata("design:type", String)
135
- ], FileSchemaResizeData.prototype, "smallURL", void 0);
136
- _ts_decorate([
137
- Prop({
138
- optional: true
139
- }),
140
- _ts_metadata("design:type", String)
141
- ], FileSchemaResizeData.prototype, "mediumURL", void 0);
142
- _ts_decorate([
143
- Prop({
144
- optional: true
145
- }),
146
- _ts_metadata("design:type", String)
147
- ], FileSchemaResizeData.prototype, "largeURL", void 0);
148
- _ts_decorate([
149
- Prop({
150
- optional: true
151
- }),
152
- _ts_metadata("design:type", String)
153
- ], FileSchemaResizeData.prototype, "extraLargeURL", void 0);
154
- FileSchemaResizeData = _ts_decorate([
118
+ __decorateClass([
119
+ Prop({ optional: true })
120
+ ], FileSchemaResizeData.prototype, "thumbnailURL", 2);
121
+ __decorateClass([
122
+ Prop({ optional: true })
123
+ ], FileSchemaResizeData.prototype, "smallURL", 2);
124
+ __decorateClass([
125
+ Prop({ optional: true })
126
+ ], FileSchemaResizeData.prototype, "mediumURL", 2);
127
+ __decorateClass([
128
+ Prop({ optional: true })
129
+ ], FileSchemaResizeData.prototype, "largeURL", 2);
130
+ __decorateClass([
131
+ Prop({ optional: true })
132
+ ], FileSchemaResizeData.prototype, "extraLargeURL", 2);
133
+ FileSchemaResizeData = __decorateClass([
155
134
  TypedSchema()
156
135
  ], FileSchemaResizeData);
157
- var _FileSchemaDimensionsData = class _FileSchemaDimensionsData {
136
+ var FileSchemaDimensionsData = class {
158
137
  width;
159
138
  height;
160
139
  };
161
- __name(_FileSchemaDimensionsData, "FileSchemaDimensionsData");
162
- var FileSchemaDimensionsData = _FileSchemaDimensionsData;
163
- _ts_decorate([
164
- Prop({
165
- optional: true
166
- }),
167
- _ts_metadata("design:type", Number)
168
- ], FileSchemaDimensionsData.prototype, "width", void 0);
169
- _ts_decorate([
170
- Prop({
171
- optional: true
172
- }),
173
- _ts_metadata("design:type", Number)
174
- ], FileSchemaDimensionsData.prototype, "height", void 0);
175
- FileSchemaDimensionsData = _ts_decorate([
140
+ __decorateClass([
141
+ Prop({ optional: true })
142
+ ], FileSchemaDimensionsData.prototype, "width", 2);
143
+ __decorateClass([
144
+ Prop({ optional: true })
145
+ ], FileSchemaDimensionsData.prototype, "height", 2);
146
+ FileSchemaDimensionsData = __decorateClass([
176
147
  TypedSchema()
177
148
  ], FileSchemaDimensionsData);
178
- var _FileSchemaColorsData = class _FileSchemaColorsData {
149
+ var FileSchemaColorsData = class {
179
150
  front;
180
151
  background;
181
152
  blurhash;
182
153
  };
183
- __name(_FileSchemaColorsData, "FileSchemaColorsData");
184
- var FileSchemaColorsData = _FileSchemaColorsData;
185
- _ts_decorate([
186
- Prop({
187
- optional: true
188
- }),
189
- _ts_metadata("design:type", String)
190
- ], FileSchemaColorsData.prototype, "front", void 0);
191
- _ts_decorate([
192
- Prop({
193
- optional: true
194
- }),
195
- _ts_metadata("design:type", String)
196
- ], FileSchemaColorsData.prototype, "background", void 0);
197
- _ts_decorate([
198
- Prop({
199
- optional: true
200
- }),
201
- _ts_metadata("design:type", String)
202
- ], FileSchemaColorsData.prototype, "blurhash", void 0);
203
- FileSchemaColorsData = _ts_decorate([
154
+ __decorateClass([
155
+ Prop({ optional: true })
156
+ ], FileSchemaColorsData.prototype, "front", 2);
157
+ __decorateClass([
158
+ Prop({ optional: true })
159
+ ], FileSchemaColorsData.prototype, "background", 2);
160
+ __decorateClass([
161
+ Prop({ optional: true })
162
+ ], FileSchemaColorsData.prototype, "blurhash", 2);
163
+ FileSchemaColorsData = __decorateClass([
204
164
  TypedSchema()
205
165
  ], FileSchemaColorsData);
206
- var _FileSchema = class _FileSchema {
166
+ var FileSchema = class {
207
167
  _id;
208
168
  hash;
209
169
  externalUrl;
@@ -219,97 +179,52 @@ var _FileSchema = class _FileSchema {
219
179
  resizedData;
220
180
  colorsData;
221
181
  };
222
- __name(_FileSchema, "FileSchema");
223
- var FileSchema = _FileSchema;
224
- _ts_decorate([
225
- Prop({
226
- type: "ID"
227
- }),
228
- _ts_metadata("design:type", String)
229
- ], FileSchema.prototype, "_id", void 0);
230
- _ts_decorate([
231
- Prop({
232
- optional: true
233
- }),
234
- _ts_metadata("design:type", String)
235
- ], FileSchema.prototype, "hash", void 0);
236
- _ts_decorate([
182
+ __decorateClass([
183
+ Prop({ type: "ID" })
184
+ ], FileSchema.prototype, "_id", 2);
185
+ __decorateClass([
186
+ Prop({ optional: true })
187
+ ], FileSchema.prototype, "hash", 2);
188
+ __decorateClass([
237
189
  Prop({
238
190
  optional: true,
239
191
  private: true
240
- }),
241
- _ts_metadata("design:type", String)
242
- ], FileSchema.prototype, "externalUrl", void 0);
243
- _ts_decorate([
244
- Prop({
245
- optional: true
246
- }),
247
- _ts_metadata("design:type", String)
248
- ], FileSchema.prototype, "key", void 0);
249
- _ts_decorate([
250
- Prop({
251
- optional: true
252
- }),
253
- _ts_metadata("design:type", String)
254
- ], FileSchema.prototype, "bucket", void 0);
255
- _ts_decorate([
256
- Prop({
257
- optional: true
258
- }),
259
- _ts_metadata("design:type", String)
260
- ], FileSchema.prototype, "name", void 0);
261
- _ts_decorate([
262
- Prop({
263
- optional: true
264
- }),
265
- _ts_metadata("design:type", String)
266
- ], FileSchema.prototype, "type", void 0);
267
- _ts_decorate([
268
- Prop({
269
- optional: true
270
- }),
271
- _ts_metadata("design:type", Number)
272
- ], FileSchema.prototype, "size", void 0);
273
- _ts_decorate([
274
- Prop({
275
- optional: true
276
- }),
277
- _ts_metadata("design:type", String)
278
- ], FileSchema.prototype, "status", void 0);
279
- _ts_decorate([
280
- Prop({
281
- optional: true
282
- }),
283
- _ts_metadata("design:type", String)
284
- ], FileSchema.prototype, "createdBy", void 0);
285
- _ts_decorate([
286
- Prop({
287
- optional: true
288
- }),
289
- _ts_metadata("design:type", typeof Date === "undefined" ? Object : Date)
290
- ], FileSchema.prototype, "createdAt", void 0);
291
- _ts_decorate([
292
- Prop({
293
- optional: true,
294
- type: getModelForClass(FileSchemaDimensionsData)
295
- }),
296
- _ts_metadata("design:type", typeof FileSchemaDimensionsData === "undefined" ? Object : FileSchemaDimensionsData)
297
- ], FileSchema.prototype, "dimensions", void 0);
298
- _ts_decorate([
299
- Prop({
300
- optional: true,
301
- type: getModelForClass(FileSchemaResizeData)
302
- }),
303
- _ts_metadata("design:type", typeof FileSchemaResizeData === "undefined" ? Object : FileSchemaResizeData)
304
- ], FileSchema.prototype, "resizedData", void 0);
305
- _ts_decorate([
306
- Prop({
307
- optional: true,
308
- type: getModelForClass(FileSchemaColorsData)
309
- }),
310
- _ts_metadata("design:type", typeof FileSchemaColorsData === "undefined" ? Object : FileSchemaColorsData)
311
- ], FileSchema.prototype, "colorsData", void 0);
312
- FileSchema = _ts_decorate([
192
+ })
193
+ ], FileSchema.prototype, "externalUrl", 2);
194
+ __decorateClass([
195
+ Prop({ optional: true })
196
+ ], FileSchema.prototype, "key", 2);
197
+ __decorateClass([
198
+ Prop({ optional: true })
199
+ ], FileSchema.prototype, "bucket", 2);
200
+ __decorateClass([
201
+ Prop({ optional: true })
202
+ ], FileSchema.prototype, "name", 2);
203
+ __decorateClass([
204
+ Prop({ optional: true })
205
+ ], FileSchema.prototype, "type", 2);
206
+ __decorateClass([
207
+ Prop({ optional: true })
208
+ ], FileSchema.prototype, "size", 2);
209
+ __decorateClass([
210
+ Prop({ optional: true })
211
+ ], FileSchema.prototype, "status", 2);
212
+ __decorateClass([
213
+ Prop({ optional: true })
214
+ ], FileSchema.prototype, "createdBy", 2);
215
+ __decorateClass([
216
+ Prop({ optional: true })
217
+ ], FileSchema.prototype, "createdAt", 2);
218
+ __decorateClass([
219
+ Prop({ optional: true, type: getModelForClass(FileSchemaDimensionsData) })
220
+ ], FileSchema.prototype, "dimensions", 2);
221
+ __decorateClass([
222
+ Prop({ optional: true, type: getModelForClass(FileSchemaResizeData) })
223
+ ], FileSchema.prototype, "resizedData", 2);
224
+ __decorateClass([
225
+ Prop({ optional: true, type: getModelForClass(FileSchemaColorsData) })
226
+ ], FileSchema.prototype, "colorsData", 2);
227
+ FileSchema = __decorateClass([
313
228
  TypedSchema()
314
229
  ], FileSchema);
315
230
 
@@ -350,7 +265,6 @@ function isImage(image) {
350
265
  const mime = image.type;
351
266
  return mime.includes("image");
352
267
  }
353
- __name(isImage, "isImage");
354
268
 
355
269
  // src/resolvers/generateImageInfo.ts
356
270
  async function generateImageInfo(file) {
@@ -362,11 +276,7 @@ async function generateImageInfo(file) {
362
276
  try {
363
277
  file.dimensions = await options.getImageDimensions(file);
364
278
  if (!isEmpty(file.dimensions)) {
365
- await Files.updateOne(file._id, {
366
- $set: {
367
- dimensions: file.dimensions
368
- }
369
- });
279
+ await Files.updateOne(file._id, { $set: { dimensions: file.dimensions } });
370
280
  }
371
281
  } catch (error) {
372
282
  console.error("Error getting image dimensions", error);
@@ -376,11 +286,7 @@ async function generateImageInfo(file) {
376
286
  try {
377
287
  file.resizedData = await options.getResizedImages(file);
378
288
  if (!isEmpty(file.resizedData)) {
379
- await Files.updateOne(file._id, {
380
- $set: {
381
- resizedData: file.resizedData
382
- }
383
- });
289
+ await Files.updateOne(file._id, { $set: { resizedData: file.resizedData } });
384
290
  }
385
291
  } catch (error) {
386
292
  console.error("Error getting resized images", error);
@@ -390,11 +296,7 @@ async function generateImageInfo(file) {
390
296
  try {
391
297
  file.colorsData = await options.getImageColors(file);
392
298
  if (!isEmpty(file.colorsData)) {
393
- await Files.updateOne(file._id, {
394
- $set: {
395
- colorsData: file.colorsData
396
- }
397
- });
299
+ await Files.updateOne(file._id, { $set: { colorsData: file.colorsData } });
398
300
  }
399
301
  } catch (error) {
400
302
  console.error("Error getting image colors", error);
@@ -402,21 +304,18 @@ async function generateImageInfo(file) {
402
304
  }
403
305
  }
404
306
  }
405
- __name(generateImageInfo, "generateImageInfo");
406
307
 
407
308
  // src/File/index.ts
408
309
  var schema = getModelForClass2(FileSchema).getSchema();
409
310
  var File_default = createModel({
410
311
  name: "File",
411
312
  schema,
412
- resolvers: /* @__PURE__ */ __name(() => (init_resolvers(), __toCommonJS(resolvers_exports)), "resolvers"),
313
+ resolvers: () => (init_resolvers(), __toCommonJS(resolvers_exports)),
413
314
  // this is only called when its child
414
315
  async clean(value) {
415
316
  if (!value) return null;
416
317
  const fileId = value._id;
417
- const file = await Files.findOne({
418
- _id: fileId
419
- });
318
+ const file = await Files.findOne({ _id: fileId });
420
319
  if (!file) return null;
421
320
  await generateImageInfo(file);
422
321
  const keys = Object.keys(omit(schema, "createdBy", "createdAt", "status"));
@@ -450,14 +349,10 @@ var fileManagerFiles = paginatedResolver({
450
349
  },
451
350
  returns: File_default,
452
351
  async getCursor({ filter }, viewer) {
453
- const query = {
454
- status: "uploaded"
455
- };
352
+ const query = { status: "uploaded" };
456
353
  query.createdBy = viewer.userId;
457
354
  if (filter) {
458
- query.name = {
459
- $regex: new RegExp(`^${escapeString(filter)}`)
460
- };
355
+ query.name = { $regex: new RegExp(`^${escapeString(filter)}`) };
461
356
  }
462
357
  return Files.find(query);
463
358
  }
@@ -475,15 +370,8 @@ var completeUpload_default = resolver2({
475
370
  returns: File_default,
476
371
  mutation: true,
477
372
  async resolve({ fileId }, viewer) {
478
- const file = await Files.findOne({
479
- createdBy: viewer.userId,
480
- _id: fileId
481
- });
482
- await Files.updateOne(file, {
483
- $set: {
484
- status: "uploaded"
485
- }
486
- });
373
+ const file = await Files.findOne({ createdBy: viewer.userId, _id: fileId });
374
+ await Files.updateOne(file, { $set: { status: "uploaded" } });
487
375
  await generateImageInfo(file);
488
376
  return file;
489
377
  }
@@ -526,7 +414,16 @@ var generateUploadCredentials = resolver3({
526
414
  }),
527
415
  mutation: true,
528
416
  async resolve(params, viewer) {
529
- const { accessKeyId, secretAccessKey, region, bucket, endpoint, s3ForcePathStyle, canUpload, basePath } = getAWSCredentials();
417
+ const {
418
+ accessKeyId,
419
+ secretAccessKey,
420
+ region,
421
+ bucket,
422
+ endpoint,
423
+ s3ForcePathStyle,
424
+ canUpload,
425
+ basePath
426
+ } = getAWSCredentials();
530
427
  const s3 = new AWS.S3({
531
428
  accessKeyId,
532
429
  secretAccessKey,
@@ -550,33 +447,26 @@ var generateUploadCredentials = resolver3({
550
447
  createdAt: /* @__PURE__ */ new Date()
551
448
  });
552
449
  const result = await new Promise((resolve, reject) => {
553
- s3.createPresignedPost({
554
- Bucket: bucket,
555
- Conditions: [
556
- [
557
- "content-length-range",
558
- params.size,
559
- params.size
450
+ s3.createPresignedPost(
451
+ {
452
+ Bucket: bucket,
453
+ Conditions: [
454
+ ["content-length-range", params.size, params.size],
455
+ { "Content-Type": params.type },
456
+ { "Cache-Control": "public, max-age=31536000, immutable" },
457
+ { Key: key }
560
458
  ],
561
- {
562
- "Content-Type": params.type
563
- },
564
- {
459
+ Fields: {
460
+ key,
461
+ "Content-Type": params.type,
565
462
  "Cache-Control": "public, max-age=31536000, immutable"
566
- },
567
- {
568
- Key: key
569
463
  }
570
- ],
571
- Fields: {
572
- key,
573
- "Content-Type": params.type,
574
- "Cache-Control": "public, max-age=31536000, immutable"
464
+ },
465
+ function(error, data) {
466
+ if (error) reject(error);
467
+ else resolve(data);
575
468
  }
576
- }, function(error, data) {
577
- if (error) reject(error);
578
- else resolve(data);
579
- });
469
+ );
580
470
  });
581
471
  return {
582
472
  fileId,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/credentials.ts","../src/File/resolvers/genericType.ts","../src/File/resolvers/url.ts","../src/File/resolvers/index.ts","../src/resolvers/fileManagerFile.ts","../src/File/index.ts","../src/Files/index.ts","../src/File/schema.ts","../src/resolvers/generateImageInfo.ts","../src/File/resolvers/isImage.ts","../src/resolvers/fileManagerFiles.ts","../src/resolvers/completeUpload.ts","../src/resolvers/generateUploadCredentials.ts","../src/resolvers/index.ts","../src/index.ts"],"sourcesContent":["import {\n FileSchema,\n FileSchemaColorsData,\n FileSchemaDimensionsData,\n FileSchemaResizeData,\n} from './File/schema'\n\nexport interface FileManagerOptions {\n accessKeyId: string\n secretAccessKey: string\n region: string\n bucket: string\n canUpload: Function\n getFileURL?: Function\n basePath: string\n endpoint?: string\n s3ForcePathStyle?: boolean\n\n getImageDimensions?: (file: FileSchema) => Promise<FileSchemaDimensionsData>\n getResizedImages?: (file: FileSchema) => Promise<FileSchemaResizeData>\n getImageColors?: (file: FileSchema) => Promise<FileSchemaColorsData>\n}\n\nlet savedOptions: Partial<FileManagerOptions> = {}\n\nexport const setupFileManager = (options: FileManagerOptions) => {\n savedOptions = options\n}\n\n/**\n * @deprecated use getFileManagerOptions instead\n */\nexport const getAWSCredentials = () => savedOptions\n\nexport const getFileManagerOptions = () => savedOptions\n","import {modelResolver} from '@orion-js/resolvers'\n\nexport default modelResolver({\n returns: String,\n async resolve(file, viewer) {\n const {type} = file\n if (!type) return 'unknown'\n if (type.startsWith('image/')) return 'image'\n if (type.startsWith('application/pdf')) return 'pdf'\n return 'unknown'\n }\n})\n","import {modelResolver} from '@orion-js/resolvers'\nimport {getAWSCredentials} from '../../credentials'\nimport {FileSchema} from '../schema'\n\nexport function getFileURL(file: FileSchema): string {\n if (file.externalUrl) return file.externalUrl\n const options = getAWSCredentials()\n if (options.getFileURL) return options.getFileURL(file)\n return `https://s3.amazonaws.com/${file.bucket}/${encodeURIComponent(file.key)}`\n}\n\nexport default modelResolver({\n returns: String,\n async resolve(file) {\n return getFileURL(file)\n }\n})\n","import genericType from './genericType'\nimport url from './url'\n\nexport default {\n url,\n genericType,\n}\n","import {resolver} from '@orion-js/resolvers'\nimport File from '../File'\nimport {Files} from '../Files'\n\nexport default resolver({\n params: {\n fileId: {\n type: 'ID'\n }\n },\n returns: File,\n async resolve({fileId}) {\n return await Files.findOne(fileId)\n }\n})\n","import {ModelSchema, createModel} from '@orion-js/models'\nimport {Files} from '../Files'\nimport pick from 'lodash/pick'\nimport omit from 'lodash/omit'\nimport {FileSchema} from './schema'\nimport {getModelForClass} from '@orion-js/typed-model'\nimport {generateImageInfo} from '../resolvers/generateImageInfo'\n\nconst schema = getModelForClass(FileSchema).getSchema()\n\nexport default createModel<FileSchema>({\n name: 'File',\n schema: schema as ModelSchema,\n resolvers: () => require('./resolvers'),\n // this is only called when its child\n async clean(value) {\n if (!value) return null\n const fileId = value._id\n const file = await Files.findOne({_id: fileId})\n if (!file) return null\n\n await generateImageInfo(file)\n\n const keys = Object.keys(omit(schema, 'createdBy', 'createdAt', 'status'))\n const data = pick(file, keys)\n return data\n },\n})\n","import {Collection, createCollection} from '@orion-js/mongodb'\nimport File from '../File'\nimport {FileSchema} from '../File/schema'\n\nexport const Files: Collection<FileSchema> = createCollection<FileSchema>({\n name: 'filemanager_files',\n model: File,\n schema: FileSchema,\n indexes: [\n {\n keys: {\n key: 1,\n bucket: 1\n }\n },\n {\n keys: {\n hash: 1\n }\n }\n ]\n})\n","import {getModelForClass, Prop, TypedSchema} from '@orion-js/typed-model'\n\n@TypedSchema()\nexport class FileSchemaResizeData {\n @Prop({optional: true})\n thumbnailURL?: string // 100 height max\n\n @Prop({optional: true})\n smallURL?: string // 300 height max\n\n @Prop({optional: true})\n mediumURL?: string // 800 height max\n\n @Prop({optional: true})\n largeURL?: string // 1400 height max\n\n @Prop({optional: true})\n extraLargeURL?: string // 2400 height max\n}\n\n@TypedSchema()\nexport class FileSchemaDimensionsData {\n @Prop({optional: true})\n width?: number\n\n @Prop({optional: true})\n height?: number\n}\n\n@TypedSchema()\nexport class FileSchemaColorsData {\n @Prop({optional: true})\n front?: string\n\n @Prop({optional: true})\n background?: string\n\n @Prop({optional: true})\n blurhash?: string\n}\n\n@TypedSchema()\nexport class FileSchema {\n @Prop({type: 'ID'})\n _id: string\n\n @Prop({optional: true})\n hash?: string\n\n @Prop({\n optional: true,\n private: true,\n })\n externalUrl?: string\n\n @Prop({optional: true})\n key?: string\n\n @Prop({optional: true})\n bucket?: string\n\n @Prop({optional: true})\n name?: string\n\n @Prop({optional: true})\n type?: string\n\n @Prop({optional: true})\n size?: number\n\n @Prop({optional: true})\n status?: string\n\n @Prop({optional: true})\n createdBy?: string\n\n @Prop({optional: true})\n createdAt?: Date\n\n @Prop({optional: true, type: getModelForClass(FileSchemaDimensionsData)})\n dimensions?: FileSchemaDimensionsData\n\n @Prop({optional: true, type: getModelForClass(FileSchemaResizeData)})\n resizedData?: FileSchemaResizeData\n\n @Prop({optional: true, type: getModelForClass(FileSchemaColorsData)})\n colorsData?: FileSchemaColorsData\n}\n","import {isEmpty} from 'lodash'\nimport {getFileManagerOptions} from '../credentials'\nimport {isImage} from '../File/resolvers/isImage'\nimport {FileSchema} from '../File/schema'\nimport {Files} from '../Files'\n\nexport async function generateImageInfo(file: FileSchema) {\n if (!file._id) return\n\n const options = getFileManagerOptions()\n\n if (isImage(file)) {\n if (!file.dimensions && options.getImageDimensions) {\n try {\n file.dimensions = await options.getImageDimensions(file)\n if (!isEmpty(file.dimensions)) {\n await Files.updateOne(file._id, {$set: {dimensions: file.dimensions}})\n }\n } catch (error) {\n console.error('Error getting image dimensions', error)\n }\n }\n\n if (!file.resizedData?.extraLargeURL && options.getResizedImages) {\n try {\n file.resizedData = await options.getResizedImages(file)\n if (!isEmpty(file.resizedData)) {\n await Files.updateOne(file._id, {$set: {resizedData: file.resizedData}})\n }\n } catch (error) {\n console.error('Error getting resized images', error)\n }\n }\n\n if (!file.colorsData && options.getImageColors) {\n try {\n file.colorsData = await options.getImageColors(file)\n if (!isEmpty(file.colorsData)) {\n await Files.updateOne(file._id, {$set: {colorsData: file.colorsData}})\n }\n } catch (error) {\n console.error('Error getting image colors', error)\n }\n }\n }\n}\n","import {FileSchema} from '../schema'\n\nexport function isImage(image: FileSchema): boolean {\n if (!image.type) {\n return true\n }\n const mime = image.type\n return mime.includes('image')\n}\n","import {paginatedResolver} from '@orion-js/paginated-mongodb'\nimport {Resolver} from '@orion-js/resolvers'\nimport escapeString from 'escape-string-regexp'\nimport File from '../File'\nimport {Files} from '../Files'\n\nconst fileManagerFiles: Resolver = paginatedResolver({\n params: {\n filter: {\n type: String,\n optional: true,\n },\n },\n returns: File,\n async getCursor({filter}, viewer) {\n const query: any = {status: 'uploaded'}\n\n query.createdBy = viewer.userId\n\n if (filter) {\n query.name = {$regex: new RegExp(`^${escapeString(filter)}`)}\n }\n\n return Files.find(query)\n },\n})\n\nexport default fileManagerFiles\n","import {resolver} from '@orion-js/resolvers'\nimport File from '../File'\nimport {Files} from '../Files'\nimport {generateImageInfo} from './generateImageInfo'\n\nexport default resolver({\n params: {\n fileId: {\n type: 'ID',\n },\n },\n returns: File,\n mutation: true,\n async resolve({fileId}, viewer) {\n const file = await Files.findOne({createdBy: viewer.userId, _id: fileId})\n await Files.updateOne(file, {$set: {status: 'uploaded'}})\n\n // mientras el usuario sigue editando el formulario, se generan los resizes y colores\n await generateImageInfo(file)\n\n return file\n },\n})\n","import {resolver} from '@orion-js/resolvers'\nimport {generateId, generateUUID} from '@orion-js/helpers'\nimport {createModel} from '@orion-js/models'\nimport AWS from 'aws-sdk'\nimport {getAWSCredentials} from '../credentials'\nimport {Files} from '../Files'\nimport type {Resolver} from '@orion-js/resolvers'\n\nexport const generateUploadCredentials: Resolver<any, any> = resolver({\n params: {\n name: {\n type: String,\n },\n size: {\n type: Number,\n },\n type: {\n type: String,\n },\n },\n returns: createModel({\n name: 'UploadCredentials',\n schema: {\n fileId: {\n type: 'ID',\n },\n url: {\n type: String,\n },\n fields: {\n type: 'blackbox',\n },\n key: {\n type: String,\n },\n },\n }),\n mutation: true,\n async resolve(params, viewer) {\n const {\n accessKeyId,\n secretAccessKey,\n region,\n bucket,\n endpoint,\n s3ForcePathStyle,\n canUpload,\n basePath,\n } = getAWSCredentials()\n const s3 = new AWS.S3({\n accessKeyId,\n secretAccessKey,\n region,\n endpoint,\n s3ForcePathStyle,\n })\n\n if (canUpload) {\n if (!(await canUpload(params, viewer))) return null\n }\n\n const key = `${basePath}/${generateId()}-${params.name}`\n\n const fileId = await Files.rawCollection.insertOne({\n _id: `ofl-${generateUUID()}`,\n key,\n bucket,\n name: params.name,\n type: params.type,\n size: params.size,\n status: 'uploading',\n createdBy: viewer.userId,\n createdAt: new Date(),\n })\n\n const result = await new Promise<AWS.S3.PresignedPost>((resolve, reject) => {\n s3.createPresignedPost(\n {\n Bucket: bucket,\n Conditions: [\n ['content-length-range', params.size, params.size],\n {'Content-Type': params.type},\n {'Cache-Control': 'public, max-age=31536000, immutable'},\n {Key: key},\n ],\n Fields: {\n key: key,\n 'Content-Type': params.type,\n 'Cache-Control': 'public, max-age=31536000, immutable',\n },\n },\n function (error, data) {\n if (error) reject(error)\n else resolve(data)\n },\n )\n })\n\n return {\n fileId,\n ...(result as object),\n key,\n }\n },\n})\n","import fileManagerFile from './fileManagerFile'\nimport fileManagerFiles from './fileManagerFiles'\nimport completeUpload from './completeUpload'\nimport {generateUploadCredentials} from './generateUploadCredentials'\nimport type {Resolver} from '@orion-js/resolvers'\n\n// Define a type for our resolvers object\ntype ResolversMap = Record<string, Resolver<any, any>>\n\nconst resolvers: ResolversMap = {\n fileManagerFile,\n fileManagerFiles,\n completeUpload,\n generateUploadCredentials\n}\n\nexport default resolvers\n","import resolvers from './resolvers'\nimport {setupFileManager, getAWSCredentials} from './credentials'\nimport File from './File'\nimport {Files} from './Files'\nimport {getFileURL} from './File/resolvers/url'\nimport {FileSchema} from './File/schema'\n\nexport {resolvers, setupFileManager, getAWSCredentials, File, Files, getFileURL, FileSchema}\n"],"mappings":"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","names":["savedOptions","setupFileManager","getAWSCredentials","getFileManagerOptions","options","modelResolver","returns","String","resolve","file","viewer","type","startsWith","modelResolver","getFileURL","file","externalUrl","options","getAWSCredentials","bucket","encodeURIComponent","key","returns","String","resolve","url","genericType","resolver","createModel","createCollection","getModelForClass","Prop","TypedSchema","FileSchemaResizeData","thumbnailURL","smallURL","mediumURL","largeURL","extraLargeURL","optional","FileSchemaDimensionsData","width","height","FileSchemaColorsData","front","background","blurhash","FileSchema","_id","hash","externalUrl","key","bucket","name","type","size","status","createdBy","createdAt","dimensions","resizedData","colorsData","private","getModelForClass","Files","createCollection","name","model","File","schema","FileSchema","indexes","keys","key","bucket","hash","pick","omit","getModelForClass","isEmpty","isImage","image","type","mime","includes","generateImageInfo","file","_id","options","getFileManagerOptions","isImage","dimensions","getImageDimensions","isEmpty","Files","updateOne","$set","error","console","resizedData","extraLargeURL","getResizedImages","colorsData","getImageColors","schema","getModelForClass","FileSchema","getSchema","createModel","name","resolvers","require","clean","value","fileId","_id","file","Files","findOne","generateImageInfo","keys","Object","omit","data","pick","resolver","params","fileId","type","returns","File","resolve","Files","findOne","paginatedResolver","escapeString","fileManagerFiles","paginatedResolver","params","filter","type","String","optional","returns","File","getCursor","viewer","query","status","createdBy","userId","name","$regex","RegExp","escapeString","Files","find","resolver","resolver","params","fileId","type","returns","File","mutation","resolve","viewer","file","Files","findOne","createdBy","userId","_id","updateOne","$set","status","generateImageInfo","resolver","generateId","generateUUID","createModel","AWS","generateUploadCredentials","resolver","params","name","type","String","size","Number","returns","createModel","schema","fileId","url","fields","key","mutation","resolve","viewer","accessKeyId","secretAccessKey","region","bucket","endpoint","s3ForcePathStyle","canUpload","basePath","getAWSCredentials","s3","AWS","S3","generateId","Files","rawCollection","insertOne","_id","generateUUID","status","createdBy","userId","createdAt","Date","result","Promise","reject","createPresignedPost","Bucket","Conditions","Key","Fields","error","data","resolvers","fileManagerFile","fileManagerFiles","completeUpload","generateUploadCredentials","resolvers_default"]}
1
+ {"version":3,"sources":["../src/credentials.ts","../src/File/resolvers/genericType.ts","../src/File/resolvers/url.ts","../src/File/resolvers/index.ts","../src/resolvers/fileManagerFile.ts","../src/File/index.ts","../src/Files/index.ts","../src/File/schema.ts","../src/resolvers/generateImageInfo.ts","../src/File/resolvers/isImage.ts","../src/resolvers/fileManagerFiles.ts","../src/resolvers/completeUpload.ts","../src/resolvers/generateUploadCredentials.ts","../src/resolvers/index.ts","../src/index.ts"],"sourcesContent":["import {\n FileSchema,\n FileSchemaColorsData,\n FileSchemaDimensionsData,\n FileSchemaResizeData,\n} from './File/schema'\n\nexport interface FileManagerOptions {\n accessKeyId: string\n secretAccessKey: string\n region: string\n bucket: string\n canUpload: Function\n getFileURL?: Function\n basePath: string\n endpoint?: string\n s3ForcePathStyle?: boolean\n\n getImageDimensions?: (file: FileSchema) => Promise<FileSchemaDimensionsData>\n getResizedImages?: (file: FileSchema) => Promise<FileSchemaResizeData>\n getImageColors?: (file: FileSchema) => Promise<FileSchemaColorsData>\n}\n\nlet savedOptions: Partial<FileManagerOptions> = {}\n\nexport const setupFileManager = (options: FileManagerOptions) => {\n savedOptions = options\n}\n\n/**\n * @deprecated use getFileManagerOptions instead\n */\nexport const getAWSCredentials = () => savedOptions\n\nexport const getFileManagerOptions = () => savedOptions\n","import {modelResolver} from '@orion-js/resolvers'\n\nexport default modelResolver({\n returns: String,\n async resolve(file, viewer) {\n const {type} = file\n if (!type) return 'unknown'\n if (type.startsWith('image/')) return 'image'\n if (type.startsWith('application/pdf')) return 'pdf'\n return 'unknown'\n }\n})\n","import {modelResolver} from '@orion-js/resolvers'\nimport {getAWSCredentials} from '../../credentials'\nimport {FileSchema} from '../schema'\n\nexport function getFileURL(file: FileSchema): string {\n if (file.externalUrl) return file.externalUrl\n const options = getAWSCredentials()\n if (options.getFileURL) return options.getFileURL(file)\n return `https://s3.amazonaws.com/${file.bucket}/${encodeURIComponent(file.key)}`\n}\n\nexport default modelResolver({\n returns: String,\n async resolve(file) {\n return getFileURL(file)\n }\n})\n","import genericType from './genericType'\nimport url from './url'\n\nexport default {\n url,\n genericType,\n}\n","import {resolver} from '@orion-js/resolvers'\nimport File from '../File'\nimport {Files} from '../Files'\n\nexport default resolver({\n params: {\n fileId: {\n type: 'ID'\n }\n },\n returns: File,\n async resolve({fileId}) {\n return await Files.findOne(fileId)\n }\n})\n","import {ModelSchema, createModel} from '@orion-js/models'\nimport {Files} from '../Files'\nimport pick from 'lodash/pick'\nimport omit from 'lodash/omit'\nimport {FileSchema} from './schema'\nimport {getModelForClass} from '@orion-js/typed-model'\nimport {generateImageInfo} from '../resolvers/generateImageInfo'\n\nconst schema = getModelForClass(FileSchema).getSchema()\n\nexport default createModel<FileSchema>({\n name: 'File',\n schema: schema as ModelSchema,\n resolvers: () => require('./resolvers'),\n // this is only called when its child\n async clean(value) {\n if (!value) return null\n const fileId = value._id\n const file = await Files.findOne({_id: fileId})\n if (!file) return null\n\n await generateImageInfo(file)\n\n const keys = Object.keys(omit(schema, 'createdBy', 'createdAt', 'status'))\n const data = pick(file, keys)\n return data\n },\n})\n","import {Collection, createCollection} from '@orion-js/mongodb'\nimport File from '../File'\nimport {FileSchema} from '../File/schema'\n\nexport const Files: Collection<FileSchema> = createCollection<FileSchema>({\n name: 'filemanager_files',\n model: File,\n schema: FileSchema,\n indexes: [\n {\n keys: {\n key: 1,\n bucket: 1\n }\n },\n {\n keys: {\n hash: 1\n }\n }\n ]\n})\n","import {getModelForClass, Prop, TypedSchema} from '@orion-js/typed-model'\n\n@TypedSchema()\nexport class FileSchemaResizeData {\n @Prop({optional: true})\n thumbnailURL?: string // 100 height max\n\n @Prop({optional: true})\n smallURL?: string // 300 height max\n\n @Prop({optional: true})\n mediumURL?: string // 800 height max\n\n @Prop({optional: true})\n largeURL?: string // 1400 height max\n\n @Prop({optional: true})\n extraLargeURL?: string // 2400 height max\n}\n\n@TypedSchema()\nexport class FileSchemaDimensionsData {\n @Prop({optional: true})\n width?: number\n\n @Prop({optional: true})\n height?: number\n}\n\n@TypedSchema()\nexport class FileSchemaColorsData {\n @Prop({optional: true})\n front?: string\n\n @Prop({optional: true})\n background?: string\n\n @Prop({optional: true})\n blurhash?: string\n}\n\n@TypedSchema()\nexport class FileSchema {\n @Prop({type: 'ID'})\n _id: string\n\n @Prop({optional: true})\n hash?: string\n\n @Prop({\n optional: true,\n private: true,\n })\n externalUrl?: string\n\n @Prop({optional: true})\n key?: string\n\n @Prop({optional: true})\n bucket?: string\n\n @Prop({optional: true})\n name?: string\n\n @Prop({optional: true})\n type?: string\n\n @Prop({optional: true})\n size?: number\n\n @Prop({optional: true})\n status?: string\n\n @Prop({optional: true})\n createdBy?: string\n\n @Prop({optional: true})\n createdAt?: Date\n\n @Prop({optional: true, type: getModelForClass(FileSchemaDimensionsData)})\n dimensions?: FileSchemaDimensionsData\n\n @Prop({optional: true, type: getModelForClass(FileSchemaResizeData)})\n resizedData?: FileSchemaResizeData\n\n @Prop({optional: true, type: getModelForClass(FileSchemaColorsData)})\n colorsData?: FileSchemaColorsData\n}\n","import {isEmpty} from 'lodash'\nimport {getFileManagerOptions} from '../credentials'\nimport {isImage} from '../File/resolvers/isImage'\nimport {FileSchema} from '../File/schema'\nimport {Files} from '../Files'\n\nexport async function generateImageInfo(file: FileSchema) {\n if (!file._id) return\n\n const options = getFileManagerOptions()\n\n if (isImage(file)) {\n if (!file.dimensions && options.getImageDimensions) {\n try {\n file.dimensions = await options.getImageDimensions(file)\n if (!isEmpty(file.dimensions)) {\n await Files.updateOne(file._id, {$set: {dimensions: file.dimensions}})\n }\n } catch (error) {\n console.error('Error getting image dimensions', error)\n }\n }\n\n if (!file.resizedData?.extraLargeURL && options.getResizedImages) {\n try {\n file.resizedData = await options.getResizedImages(file)\n if (!isEmpty(file.resizedData)) {\n await Files.updateOne(file._id, {$set: {resizedData: file.resizedData}})\n }\n } catch (error) {\n console.error('Error getting resized images', error)\n }\n }\n\n if (!file.colorsData && options.getImageColors) {\n try {\n file.colorsData = await options.getImageColors(file)\n if (!isEmpty(file.colorsData)) {\n await Files.updateOne(file._id, {$set: {colorsData: file.colorsData}})\n }\n } catch (error) {\n console.error('Error getting image colors', error)\n }\n }\n }\n}\n","import {FileSchema} from '../schema'\n\nexport function isImage(image: FileSchema): boolean {\n if (!image.type) {\n return true\n }\n const mime = image.type\n return mime.includes('image')\n}\n","import {paginatedResolver} from '@orion-js/paginated-mongodb'\nimport {Resolver} from '@orion-js/resolvers'\nimport escapeString from 'escape-string-regexp'\nimport File from '../File'\nimport {Files} from '../Files'\n\nconst fileManagerFiles: Resolver = paginatedResolver({\n params: {\n filter: {\n type: String,\n optional: true,\n },\n },\n returns: File,\n async getCursor({filter}, viewer) {\n const query: any = {status: 'uploaded'}\n\n query.createdBy = viewer.userId\n\n if (filter) {\n query.name = {$regex: new RegExp(`^${escapeString(filter)}`)}\n }\n\n return Files.find(query)\n },\n})\n\nexport default fileManagerFiles\n","import {resolver} from '@orion-js/resolvers'\nimport File from '../File'\nimport {Files} from '../Files'\nimport {generateImageInfo} from './generateImageInfo'\n\nexport default resolver({\n params: {\n fileId: {\n type: 'ID',\n },\n },\n returns: File,\n mutation: true,\n async resolve({fileId}, viewer) {\n const file = await Files.findOne({createdBy: viewer.userId, _id: fileId})\n await Files.updateOne(file, {$set: {status: 'uploaded'}})\n\n // mientras el usuario sigue editando el formulario, se generan los resizes y colores\n await generateImageInfo(file)\n\n return file\n },\n})\n","import {resolver} from '@orion-js/resolvers'\nimport {generateId, generateUUID} from '@orion-js/helpers'\nimport {createModel} from '@orion-js/models'\nimport AWS from 'aws-sdk'\nimport {getAWSCredentials} from '../credentials'\nimport {Files} from '../Files'\nimport type {Resolver} from '@orion-js/resolvers'\n\nexport const generateUploadCredentials: Resolver<any, any> = resolver({\n params: {\n name: {\n type: String,\n },\n size: {\n type: Number,\n },\n type: {\n type: String,\n },\n },\n returns: createModel({\n name: 'UploadCredentials',\n schema: {\n fileId: {\n type: 'ID',\n },\n url: {\n type: String,\n },\n fields: {\n type: 'blackbox',\n },\n key: {\n type: String,\n },\n },\n }),\n mutation: true,\n async resolve(params, viewer) {\n const {\n accessKeyId,\n secretAccessKey,\n region,\n bucket,\n endpoint,\n s3ForcePathStyle,\n canUpload,\n basePath,\n } = getAWSCredentials()\n const s3 = new AWS.S3({\n accessKeyId,\n secretAccessKey,\n region,\n endpoint,\n s3ForcePathStyle,\n })\n\n if (canUpload) {\n if (!(await canUpload(params, viewer))) return null\n }\n\n const key = `${basePath}/${generateId()}-${params.name}`\n\n const fileId = await Files.rawCollection.insertOne({\n _id: `ofl-${generateUUID()}`,\n key,\n bucket,\n name: params.name,\n type: params.type,\n size: params.size,\n status: 'uploading',\n createdBy: viewer.userId,\n createdAt: new Date(),\n })\n\n const result = await new Promise<AWS.S3.PresignedPost>((resolve, reject) => {\n s3.createPresignedPost(\n {\n Bucket: bucket,\n Conditions: [\n ['content-length-range', params.size, params.size],\n {'Content-Type': params.type},\n {'Cache-Control': 'public, max-age=31536000, immutable'},\n {Key: key},\n ],\n Fields: {\n key: key,\n 'Content-Type': params.type,\n 'Cache-Control': 'public, max-age=31536000, immutable',\n },\n },\n function (error, data) {\n if (error) reject(error)\n else resolve(data)\n },\n )\n })\n\n return {\n fileId,\n ...(result as object),\n key,\n }\n },\n})\n","import fileManagerFile from './fileManagerFile'\nimport fileManagerFiles from './fileManagerFiles'\nimport completeUpload from './completeUpload'\nimport {generateUploadCredentials} from './generateUploadCredentials'\nimport type {Resolver} from '@orion-js/resolvers'\n\n// Define a type for our resolvers object\ntype ResolversMap = Record<string, Resolver<any, any>>\n\nconst resolvers: ResolversMap = {\n fileManagerFile,\n fileManagerFiles,\n completeUpload,\n generateUploadCredentials\n}\n\nexport default resolvers\n","import resolvers from './resolvers'\nimport {setupFileManager, getAWSCredentials} from './credentials'\nimport File from './File'\nimport {Files} from './Files'\nimport {getFileURL} from './File/resolvers/url'\nimport {FileSchema} from './File/schema'\n\nexport {resolvers, setupFileManager, getAWSCredentials, File, Files, getFileURL, FileSchema}\n"],"mappings":"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","names":["modelResolver","getModelForClass","getModelForClass","resolver","resolver","resolver","createModel","resolver","createModel","resolvers_default"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orion-js/file-manager",
3
- "version": "4.0.0-next.2",
3
+ "version": "4.0.0-next.3",
4
4
  "main": "./dist/index.cjs",
5
5
  "author": "nicolaslopezj",
6
6
  "license": "MIT",
@@ -9,13 +9,13 @@
9
9
  "escape-string-regexp": "^4.0.0",
10
10
  "lodash": "^4.17.21",
11
11
  "luxon": "^2.1.1",
12
- "@orion-js/helpers": "4.0.0-next.2",
13
- "@orion-js/mongodb": "4.0.0-next.2",
14
- "@orion-js/paginated-mongodb": "4.0.0-next.2",
15
- "@orion-js/resolvers": "4.0.0-next.2",
16
- "@orion-js/schema": "4.0.0-next.2",
17
- "@orion-js/typed-model": "4.0.0-next.2",
18
- "@orion-js/models": "4.0.0-next.2"
12
+ "@orion-js/helpers": "4.0.0-next.3",
13
+ "@orion-js/models": "4.0.0-next.3",
14
+ "@orion-js/mongodb": "4.0.0-next.3",
15
+ "@orion-js/paginated-mongodb": "4.0.0-next.3",
16
+ "@orion-js/schema": "4.0.0-next.3",
17
+ "@orion-js/resolvers": "4.0.0-next.3",
18
+ "@orion-js/typed-model": "4.0.0-next.3"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@types/dot-object": "^2.1.2",