@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 +21 -0
- package/dist/index.cjs +128 -238
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +128 -238
- package/dist/index.js.map +1 -1
- package/package.json +8 -8
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 =
|
|
45
|
+
setupFileManager = (options) => {
|
|
39
46
|
savedOptions = options;
|
|
40
|
-
}
|
|
41
|
-
getAWSCredentials =
|
|
42
|
-
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
|
-
|
|
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
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
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
|
|
159
|
+
var FileSchemaDimensionsData = class {
|
|
181
160
|
width;
|
|
182
161
|
height;
|
|
183
162
|
};
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
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
|
|
172
|
+
var FileSchemaColorsData = class {
|
|
202
173
|
front;
|
|
203
174
|
background;
|
|
204
175
|
blurhash;
|
|
205
176
|
};
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
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
|
|
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
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
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
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
})
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
})
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
})
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
})
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
})
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
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:
|
|
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
|
-
|
|
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 {
|
|
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
|
-
|
|
578
|
-
|
|
579
|
-
[
|
|
580
|
-
"content-length-range",
|
|
581
|
-
params.
|
|
582
|
-
|
|
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
|
-
|
|
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
|
-
|
|
595
|
-
|
|
596
|
-
|
|
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
|
-
|
|
600
|
-
if (error) reject(error);
|
|
601
|
-
else resolve(data);
|
|
602
|
-
});
|
|
492
|
+
);
|
|
603
493
|
});
|
|
604
494
|
return {
|
|
605
495
|
fileId,
|
package/dist/index.cjs.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/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 =
|
|
35
|
+
setupFileManager = (options) => {
|
|
29
36
|
savedOptions = options;
|
|
30
|
-
}
|
|
31
|
-
getAWSCredentials =
|
|
32
|
-
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
|
-
|
|
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
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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
|
|
136
|
+
var FileSchemaDimensionsData = class {
|
|
158
137
|
width;
|
|
159
138
|
height;
|
|
160
139
|
};
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
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
|
|
149
|
+
var FileSchemaColorsData = class {
|
|
179
150
|
front;
|
|
180
151
|
background;
|
|
181
152
|
blurhash;
|
|
182
153
|
};
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
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
|
|
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
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
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
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
})
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
})
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
})
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
})
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
})
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
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:
|
|
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
|
-
|
|
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 {
|
|
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
|
-
|
|
555
|
-
|
|
556
|
-
[
|
|
557
|
-
"content-length-range",
|
|
558
|
-
params.
|
|
559
|
-
|
|
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
|
-
|
|
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
|
-
|
|
572
|
-
|
|
573
|
-
|
|
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
|
-
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;AAuBA,IAAIA,cAESC,kBAOAC,mBAEAC;AAXb;;IAAIH,eAA4C,CAAC;AAE1C,IAAMC,mBAAmB,wBAACG,YAAAA;AAC/BJ,qBAAeI;IACjB,GAFgC;AAOzB,IAAMF,oBAAoB,6BAAMF,cAAN;AAE1B,IAAMG,wBAAwB,6BAAMH,cAAN;;;;;AClCrC,SAAQK,qBAAoB;AAA5B,IAEA;AAFA;;AAEA,IAAA,sBAAeA,cAAc;MAC3BC,SAASC;MACT,MAAMC,QAAQC,MAAMC,QAAM;AACxB,cAAM,EAACC,KAAI,IAAIF;AACf,YAAI,CAACE,KAAM,QAAO;AAClB,YAAIA,KAAKC,WAAW,QAAA,EAAW,QAAO;AACtC,YAAID,KAAKC,WAAW,iBAAA,EAAoB,QAAO;AAC/C,eAAO;MACT;IACF,CAAA;;;;;ACXA,SAAQC,iBAAAA,sBAAoB;AAIrB,SAASC,WAAWC,MAAgB;AACzC,MAAIA,KAAKC,YAAa,QAAOD,KAAKC;AAClC,QAAMC,UAAUC,kBAAAA;AAChB,MAAID,QAAQH,WAAY,QAAOG,QAAQH,WAAWC,IAAAA;AAClD,SAAO,4BAA4BA,KAAKI,MAAM,IAAIC,mBAAmBL,KAAKM,GAAG,CAAA;AAC/E;AATA,IAWA;AAXA;;AACA;AAGgBP;AAOhB,IAAA,cAAeD,eAAc;MAC3BS,SAASC;MACT,MAAMC,QAAQT,MAAI;AAChB,eAAOD,WAAWC,IAAAA;MACpB;IACF,CAAA;;;;;AChBA;;;;IAGA;AAHA;;;AACA;AAEA,IAAA,oBAAe;MACbU;MACAC;IACF;;;;;ACNA,SAAQC,gBAAe;;;ACAvB,SAAqBC,mBAAkB;;;ACAvC,SAAoBC,wBAAuB;;;ACA3C,SAAQC,kBAAkBC,MAAMC,mBAAkB;;;;;;;;;;;;AAG3C,IAAMC,wBAAN,MAAMA,sBAAAA;EAEXC;EAGAC;EAGAC;EAGAC;EAGAC;AACF;AAfaL;AAAN,IAAMA,uBAAN;;;IACEM,UAAU;;;;;;IAGVA,UAAU;;;;;;IAGVA,UAAU;;;;;;IAGVA,UAAU;;;;;;IAGVA,UAAU;;;;;;;AAKZ,IAAMC,4BAAN,MAAMA,0BAAAA;EAEXC;EAGAC;AACF;AANaF;AAAN,IAAMA,2BAAN;;;IACED,UAAU;;;;;;IAGVA,UAAU;;;;;;;AAKZ,IAAMI,wBAAN,MAAMA,sBAAAA;EAEXC;EAGAC;EAGAC;AACF;AATaH;AAAN,IAAMA,uBAAN;;;IACEJ,UAAU;;;;;;IAGVA,UAAU;;;;;;IAGVA,UAAU;;;;;;;AAKZ,IAAMQ,cAAN,MAAMA,YAAAA;EAEXC;EAGAC;EAMAC;EAGAC;EAGAC;EAGAC;EAGAC;EAGAC;EAGAC;EAGAC;EAGAC;EAGAC;EAGAC;EAGAC;AACF;AA7Cad;AAAN,IAAMA,aAAN;;;IACEO,MAAM;;;;;;IAGNf,UAAU;;;;;;IAIfA,UAAU;IACVuB,SAAS;;;;;;IAIJvB,UAAU;;;;;;IAGVA,UAAU;;;;;;IAGVA,UAAU;;;;;;IAGVA,UAAU;;;;;;IAGVA,UAAU;;;;;;IAGVA,UAAU;;;;;;IAGVA,UAAU;;;;;;IAGVA,UAAU;;;;;;IAGVA,UAAU;IAAMe,MAAMS,iBAAiBvB,wBAAAA;;;;;;IAGvCD,UAAU;IAAMe,MAAMS,iBAAiB9B,oBAAAA;;;;;;IAGvCM,UAAU;IAAMe,MAAMS,iBAAiBpB,oBAAAA;;;;;;;;;ADjFzC,IAAMqB,QAAgCC,iBAA6B;EACxEC,MAAM;EACNC,OAAOC;EACPC,QAAQC;EACRC,SAAS;IACP;MACEC,MAAM;QACJC,KAAK;QACLC,QAAQ;MACV;IACF;IACA;MACEF,MAAM;QACJG,MAAM;MACR;IACF;;AAEJ,CAAA;;;ADnBA,OAAOC,UAAU;AACjB,OAAOC,UAAU;AAEjB,SAAQC,oBAAAA,yBAAuB;;;AGJ/B;AADA,SAAQC,eAAc;;;ACEf,SAASC,QAAQC,OAAiB;AACvC,MAAI,CAACA,MAAMC,MAAM;AACf,WAAO;EACT;AACA,QAAMC,OAAOF,MAAMC;AACnB,SAAOC,KAAKC,SAAS,OAAA;AACvB;AANgBJ;;;ADIhB,eAAsBK,kBAAkBC,MAAgB;AANxD;AAOE,MAAI,CAACA,KAAKC,IAAK;AAEf,QAAMC,UAAUC,sBAAAA;AAEhB,MAAIC,QAAQJ,IAAAA,GAAO;AACjB,QAAI,CAACA,KAAKK,cAAcH,QAAQI,oBAAoB;AAClD,UAAI;AACFN,aAAKK,aAAa,MAAMH,QAAQI,mBAAmBN,IAAAA;AACnD,YAAI,CAACO,QAAQP,KAAKK,UAAU,GAAG;AAC7B,gBAAMG,MAAMC,UAAUT,KAAKC,KAAK;YAACS,MAAM;cAACL,YAAYL,KAAKK;YAAU;UAAC,CAAA;QACtE;MACF,SAASM,OAAO;AACdC,gBAAQD,MAAM,kCAAkCA,KAAAA;MAClD;IACF;AAEA,QAAI,GAACX,UAAKa,gBAALb,mBAAkBc,kBAAiBZ,QAAQa,kBAAkB;AAChE,UAAI;AACFf,aAAKa,cAAc,MAAMX,QAAQa,iBAAiBf,IAAAA;AAClD,YAAI,CAACO,QAAQP,KAAKa,WAAW,GAAG;AAC9B,gBAAML,MAAMC,UAAUT,KAAKC,KAAK;YAACS,MAAM;cAACG,aAAab,KAAKa;YAAW;UAAC,CAAA;QACxE;MACF,SAASF,OAAO;AACdC,gBAAQD,MAAM,gCAAgCA,KAAAA;MAChD;IACF;AAEA,QAAI,CAACX,KAAKgB,cAAcd,QAAQe,gBAAgB;AAC9C,UAAI;AACFjB,aAAKgB,aAAa,MAAMd,QAAQe,eAAejB,IAAAA;AAC/C,YAAI,CAACO,QAAQP,KAAKgB,UAAU,GAAG;AAC7B,gBAAMR,MAAMC,UAAUT,KAAKC,KAAK;YAACS,MAAM;cAACM,YAAYhB,KAAKgB;YAAU;UAAC,CAAA;QACtE;MACF,SAASL,OAAO;AACdC,gBAAQD,MAAM,8BAA8BA,KAAAA;MAC9C;IACF;EACF;AACF;AAvCsBZ;;;AHEtB,IAAMmB,SAASC,kBAAiBC,UAAAA,EAAYC,UAAS;AAErD,IAAA,eAAeC,YAAwB;EACrCC,MAAM;EACNL;EACAM,WAAW,6BAAMC,qDAAN;;EAEX,MAAMC,MAAMC,OAAK;AACf,QAAI,CAACA,MAAO,QAAO;AACnB,UAAMC,SAASD,MAAME;AACrB,UAAMC,OAAO,MAAMC,MAAMC,QAAQ;MAACH,KAAKD;IAAM,CAAA;AAC7C,QAAI,CAACE,KAAM,QAAO;AAElB,UAAMG,kBAAkBH,IAAAA;AAExB,UAAMI,OAAOC,OAAOD,KAAKE,KAAKlB,QAAQ,aAAa,aAAa,QAAA,CAAA;AAChE,UAAMmB,OAAOC,KAAKR,MAAMI,IAAAA;AACxB,WAAOG;EACT;AACF,CAAA;;;ADvBA,IAAA,0BAAeE,SAAS;EACtBC,QAAQ;IACNC,QAAQ;MACNC,MAAM;IACR;EACF;EACAC,SAASC;EACT,MAAMC,QAAQ,EAACJ,OAAM,GAAC;AACpB,WAAO,MAAMK,MAAMC,QAAQN,MAAAA;EAC7B;AACF,CAAA;;;AMdA,SAAQO,yBAAwB;AAEhC,OAAOC,kBAAkB;AAIzB,IAAMC,mBAA6BC,kBAAkB;EACnDC,QAAQ;IACNC,QAAQ;MACNC,MAAMC;MACNC,UAAU;IACZ;EACF;EACAC,SAASC;EACT,MAAMC,UAAU,EAACN,OAAM,GAAGO,QAAM;AAC9B,UAAMC,QAAa;MAACC,QAAQ;IAAU;AAEtCD,UAAME,YAAYH,OAAOI;AAEzB,QAAIX,QAAQ;AACVQ,YAAMI,OAAO;QAACC,QAAQ,IAAIC,OAAO,IAAIC,aAAaf,MAAAA,CAAAA,EAAS;MAAC;IAC9D;AAEA,WAAOgB,MAAMC,KAAKT,KAAAA;EACpB;AACF,CAAA;AAEA,IAAA,2BAAeX;;;AC3Bf,SAAQqB,YAAAA,iBAAe;AAKvB,IAAA,yBAAeC,UAAS;EACtBC,QAAQ;IACNC,QAAQ;MACNC,MAAM;IACR;EACF;EACAC,SAASC;EACTC,UAAU;EACV,MAAMC,QAAQ,EAACL,OAAM,GAAGM,QAAM;AAC5B,UAAMC,OAAO,MAAMC,MAAMC,QAAQ;MAACC,WAAWJ,OAAOK;MAAQC,KAAKZ;IAAM,CAAA;AACvE,UAAMQ,MAAMK,UAAUN,MAAM;MAACO,MAAM;QAACC,QAAQ;MAAU;IAAC,CAAA;AAGvD,UAAMC,kBAAkBT,IAAAA;AAExB,WAAOA;EACT;AACF,CAAA;;;AClBA;AAJA,SAAQU,YAAAA,iBAAe;AACvB,SAAQC,YAAYC,oBAAmB;AACvC,SAAQC,eAAAA,oBAAkB;AAC1B,OAAOC,SAAS;AAKT,IAAMC,4BAAgDC,UAAS;EACpEC,QAAQ;IACNC,MAAM;MACJC,MAAMC;IACR;IACAC,MAAM;MACJF,MAAMG;IACR;IACAH,MAAM;MACJA,MAAMC;IACR;EACF;EACAG,SAASC,aAAY;IACnBN,MAAM;IACNO,QAAQ;MACNC,QAAQ;QACNP,MAAM;MACR;MACAQ,KAAK;QACHR,MAAMC;MACR;MACAQ,QAAQ;QACNT,MAAM;MACR;MACAU,KAAK;QACHV,MAAMC;MACR;IACF;EACF,CAAA;EACAU,UAAU;EACV,MAAMC,QAAQd,QAAQe,QAAM;AAC1B,UAAM,EACJC,aACAC,iBACAC,QACAC,QACAC,UACAC,kBACAC,WACAC,SAAQ,IACNC,kBAAAA;AACJ,UAAMC,KAAK,IAAIC,IAAIC,GAAG;MACpBX;MACAC;MACAC;MACAE;MACAC;IACF,CAAA;AAEA,QAAIC,WAAW;AACb,UAAI,CAAE,MAAMA,UAAUtB,QAAQe,MAAAA,EAAU,QAAO;IACjD;AAEA,UAAMH,MAAM,GAAGW,QAAAA,IAAYK,WAAAA,CAAAA,IAAgB5B,OAAOC,IAAI;AAEtD,UAAMQ,SAAS,MAAMoB,MAAMC,cAAcC,UAAU;MACjDC,KAAK,OAAOC,aAAAA,CAAAA;MACZrB;MACAO;MACAlB,MAAMD,OAAOC;MACbC,MAAMF,OAAOE;MACbE,MAAMJ,OAAOI;MACb8B,QAAQ;MACRC,WAAWpB,OAAOqB;MAClBC,WAAW,oBAAIC,KAAAA;IACjB,CAAA;AAEA,UAAMC,SAAS,MAAM,IAAIC,QAA8B,CAAC1B,SAAS2B,WAAAA;AAC/DhB,SAAGiB,oBACD;QACEC,QAAQxB;QACRyB,YAAY;UACV;YAAC;YAAwB5C,OAAOI;YAAMJ,OAAOI;;UAC7C;YAAC,gBAAgBJ,OAAOE;UAAI;UAC5B;YAAC,iBAAiB;UAAqC;UACvD;YAAC2C,KAAKjC;UAAG;;QAEXkC,QAAQ;UACNlC;UACA,gBAAgBZ,OAAOE;UACvB,iBAAiB;QACnB;MACF,GACA,SAAU6C,OAAOC,MAAI;AACnB,YAAID,MAAON,QAAOM,KAAAA;YACbjC,SAAQkC,IAAAA;MACf,CAAA;IAEJ,CAAA;AAEA,WAAO;MACLvC;MACA,GAAI8B;MACJ3B;IACF;EACF;AACF,CAAA;;;AC/FA,IAAMqC,YAA0B;EAC9BC;EACAC;EACAC;EACAC;AACF;AAEA,IAAAC,qBAAeL;;;ACff;AAGA;","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.
|
|
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.
|
|
13
|
-
"@orion-js/
|
|
14
|
-
"@orion-js/
|
|
15
|
-
"@orion-js/
|
|
16
|
-
"@orion-js/schema": "4.0.0-next.
|
|
17
|
-
"@orion-js/
|
|
18
|
-
"@orion-js/
|
|
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",
|