@orion-js/file-manager 3.0.15 → 3.0.23

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2018 Orionjs Team
3
+ Copyright (c) 2021 Orionjs Team
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@orion-js/models").Model;
2
+ export default _default;
package/lib/File/index.js CHANGED
@@ -1,38 +1,22 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const models_1 = require("@orion-js/models");
7
+ const schema_1 = __importDefault(require("./schema"));
8
+ exports.default = (0, models_1.createModel)({
9
+ name: 'File',
10
+ schema: schema_1.default,
11
+ resolvers: () => require('./resolvers')
12
+ // this is only called when its child
13
+ // async clean(value) {
14
+ // if (!value) return null
15
+ // const fileId = value._id
16
+ // const file = await Files.findOne(fileId)
17
+ // if (!file) return null
18
+ // const keys = Object.keys(omit(schema, 'createdBy', 'createdAt', 'status'))
19
+ // const data = pick(file, keys)
20
+ // return data
21
+ // }
7
22
  });
8
- exports.default = void 0;
9
-
10
- var _app = require("@orion-js/app");
11
-
12
- var _Files = _interopRequireDefault(require("../Files"));
13
-
14
- var _pick = _interopRequireDefault(require("lodash/pick"));
15
-
16
- var _omit = _interopRequireDefault(require("lodash/omit"));
17
-
18
- var _schema = _interopRequireDefault(require("./schema"));
19
-
20
- var _default = new _app.Model({
21
- name: 'File',
22
- schema: _schema.default,
23
- resolvers: () => require('./resolvers'),
24
-
25
- // this is only called when its child
26
- async clean(value) {
27
- if (!value) return null;
28
- const fileId = value._id;
29
- const file = await _Files.default.findOne(fileId);
30
- if (!file) return null;
31
- const keys = Object.keys((0, _omit.default)(_schema.default, 'createdBy', 'createdAt', 'status'));
32
- const data = (0, _pick.default)(file, keys);
33
- return data;
34
- }
35
-
36
- });
37
-
38
- exports.default = _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@orion-js/resolvers").ModelResolver<(file: any, viewer: any) => Promise<"unknown" | "image" | "pdf">>;
2
+ export default _default;
@@ -1,25 +1,16 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const resolvers_1 = require("@orion-js/resolvers");
4
+ exports.default = (0, resolvers_1.modelResolver)({
5
+ returns: String,
6
+ async resolve(file, viewer) {
7
+ const { type } = file;
8
+ if (!type)
9
+ return 'unknown';
10
+ if (type.startsWith('image/'))
11
+ return 'image';
12
+ if (type.startsWith('application/pdf'))
13
+ return 'pdf';
14
+ return 'unknown';
15
+ }
5
16
  });
6
- exports.default = void 0;
7
-
8
- var _app = require("@orion-js/app");
9
-
10
- var _default = (0, _app.resolver)({
11
- returns: String,
12
-
13
- async resolve(file, viewer) {
14
- const {
15
- type
16
- } = file;
17
- if (!type) return 'unknown';
18
- if (type.startsWith('image/')) return 'image';
19
- if (type.startsWith('application/pdf')) return 'pdf';
20
- return 'unknown';
21
- }
22
-
23
- });
24
-
25
- exports.default = _default;
@@ -0,0 +1,5 @@
1
+ declare const _default: {
2
+ url: import("@orion-js/resolvers").ModelResolver<(file: any, viewer: any) => Promise<any>>;
3
+ genericType: import("@orion-js/resolvers").ModelResolver<(file: any, viewer: any) => Promise<"unknown" | "image" | "pdf">>;
4
+ };
5
+ export default _default;
@@ -1,18 +1,11 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _genericType = _interopRequireDefault(require("./genericType"));
11
-
12
- var _url = _interopRequireDefault(require("./url"));
13
-
14
- var _default = {
15
- url: _url.default,
16
- genericType: _genericType.default
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const genericType_1 = __importDefault(require("./genericType"));
7
+ const url_1 = __importDefault(require("./url"));
8
+ exports.default = {
9
+ url: url_1.default,
10
+ genericType: genericType_1.default,
17
11
  };
18
- exports.default = _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@orion-js/resolvers").ModelResolver<(file: any, viewer: any) => Promise<any>>;
2
+ export default _default;
@@ -1,20 +1,11 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const resolvers_1 = require("@orion-js/resolvers");
4
+ exports.default = (0, resolvers_1.modelResolver)({
5
+ returns: String,
6
+ async resolve(file, viewer) {
7
+ if (file.externalUrl)
8
+ return file.externalUrl;
9
+ return `https://s3.amazonaws.com/${file.bucket}/${encodeURIComponent(file.key)}`;
10
+ }
5
11
  });
6
- exports.default = void 0;
7
-
8
- var _app = require("@orion-js/app");
9
-
10
- var _default = (0, _app.resolver)({
11
- returns: String,
12
-
13
- async resolve(file, viewer) {
14
- if (file.externalUrl) return file.externalUrl;
15
- return `https://s3.amazonaws.com/${file.bucket}/${encodeURIComponent(file.key)}`;
16
- }
17
-
18
- });
19
-
20
- exports.default = _default;
@@ -0,0 +1,3 @@
1
+ import { ModelSchema } from '@orion-js/models';
2
+ declare const schema: ModelSchema;
3
+ export default schema;
@@ -1,53 +1,49 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _default = {
8
- _id: {
9
- type: 'ID'
10
- },
11
- hash: {
12
- type: String,
13
- optional: true
14
- },
15
- externalUrl: {
16
- type: String,
17
- optional: true,
18
- private: true
19
- },
20
- key: {
21
- type: String,
22
- optional: true
23
- },
24
- bucket: {
25
- type: String,
26
- optional: true
27
- },
28
- name: {
29
- type: String,
30
- optional: true
31
- },
32
- type: {
33
- type: String,
34
- optional: true
35
- },
36
- size: {
37
- type: Number,
38
- optional: true
39
- },
40
- status: {
41
- type: String,
42
- optional: true
43
- },
44
- createdBy: {
45
- type: String,
46
- optional: true
47
- },
48
- createdAt: {
49
- type: Date,
50
- optional: true
51
- }
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const schema = {
4
+ _id: {
5
+ type: 'ID'
6
+ },
7
+ hash: {
8
+ type: String,
9
+ optional: true
10
+ },
11
+ externalUrl: {
12
+ type: String,
13
+ optional: true,
14
+ private: true
15
+ },
16
+ key: {
17
+ type: String,
18
+ optional: true
19
+ },
20
+ bucket: {
21
+ type: String,
22
+ optional: true
23
+ },
24
+ name: {
25
+ type: String,
26
+ optional: true
27
+ },
28
+ type: {
29
+ type: String,
30
+ optional: true
31
+ },
32
+ size: {
33
+ type: Number,
34
+ optional: true
35
+ },
36
+ status: {
37
+ type: String,
38
+ optional: true
39
+ },
40
+ createdBy: {
41
+ type: String,
42
+ optional: true
43
+ },
44
+ createdAt: {
45
+ type: Date,
46
+ optional: true
47
+ }
52
48
  };
53
- exports.default = _default;
49
+ exports.default = schema;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@orion-js/mongodb").Collection<any>;
2
+ export default _default;
@@ -1,29 +1,24 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const mongodb_1 = require("@orion-js/mongodb");
7
+ const File_1 = __importDefault(require("../File"));
8
+ exports.default = (0, mongodb_1.createCollection)({
9
+ name: 'filemanager_files',
10
+ model: File_1.default,
11
+ indexes: [
12
+ {
13
+ keys: {
14
+ key: 1,
15
+ bucket: 1
16
+ }
17
+ },
18
+ {
19
+ keys: {
20
+ hash: 1
21
+ }
22
+ }
23
+ ]
7
24
  });
8
- exports.default = void 0;
9
-
10
- var _app = require("@orion-js/app");
11
-
12
- var _File = _interopRequireDefault(require("../File"));
13
-
14
- var _default = new _app.Collection({
15
- name: 'filemanager_files',
16
- model: _File.default,
17
- indexes: [{
18
- keys: {
19
- key: 1,
20
- bucket: 1
21
- }
22
- }, {
23
- keys: {
24
- hash: 1
25
- }
26
- }]
27
- });
28
-
29
- exports.default = _default;
@@ -0,0 +1,10 @@
1
+ export interface Credentials {
2
+ accessKeyId: string;
3
+ secretAccessKey: string;
4
+ region: string;
5
+ bucket: string;
6
+ canUpload: Function;
7
+ basePath: string;
8
+ }
9
+ export declare const setupFileManager: (options: any) => any;
10
+ export declare const getAWSCredentials: () => Partial<Credentials>;
@@ -1,15 +1,8 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
2
+ Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.getAWSCredentials = exports.setupFileManager = void 0;
7
4
  let credentials = {};
8
-
9
- const setupFileManager = options => credentials = options;
10
-
5
+ const setupFileManager = options => (credentials = options);
11
6
  exports.setupFileManager = setupFileManager;
12
-
13
7
  const getAWSCredentials = () => credentials;
14
-
15
- exports.getAWSCredentials = getAWSCredentials;
8
+ exports.getAWSCredentials = getAWSCredentials;
package/lib/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ import resolvers from './resolvers';
2
+ import { setupFileManager, getAWSCredentials } from './credentials';
3
+ import File from './File';
4
+ import Files from './Files';
5
+ export { resolvers, setupFileManager, getAWSCredentials, File, Files };
package/lib/index.js CHANGED
@@ -1,45 +1,15 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- Object.defineProperty(exports, "resolvers", {
9
- enumerable: true,
10
- get: function () {
11
- return _resolvers.default;
12
- }
13
- });
14
- Object.defineProperty(exports, "setupFileManager", {
15
- enumerable: true,
16
- get: function () {
17
- return _credentials.setupFileManager;
18
- }
19
- });
20
- Object.defineProperty(exports, "getAWSCredentials", {
21
- enumerable: true,
22
- get: function () {
23
- return _credentials.getAWSCredentials;
24
- }
25
- });
26
- Object.defineProperty(exports, "File", {
27
- enumerable: true,
28
- get: function () {
29
- return _File.default;
30
- }
31
- });
32
- Object.defineProperty(exports, "Files", {
33
- enumerable: true,
34
- get: function () {
35
- return _Files.default;
36
- }
37
- });
38
-
39
- var _resolvers = _interopRequireDefault(require("./resolvers"));
40
-
41
- var _credentials = require("./credentials");
42
-
43
- var _File = _interopRequireDefault(require("./File"));
44
-
45
- var _Files = _interopRequireDefault(require("./Files"));
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Files = exports.File = exports.getAWSCredentials = exports.setupFileManager = exports.resolvers = void 0;
7
+ const resolvers_1 = __importDefault(require("./resolvers"));
8
+ exports.resolvers = resolvers_1.default;
9
+ const credentials_1 = require("./credentials");
10
+ Object.defineProperty(exports, "setupFileManager", { enumerable: true, get: function () { return credentials_1.setupFileManager; } });
11
+ Object.defineProperty(exports, "getAWSCredentials", { enumerable: true, get: function () { return credentials_1.getAWSCredentials; } });
12
+ const File_1 = __importDefault(require("./File"));
13
+ exports.File = File_1.default;
14
+ const Files_1 = __importDefault(require("./Files"));
15
+ exports.Files = Files_1.default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@orion-js/resolvers").Resolver<({ fileId }: any, viewer: any) => Promise<any>, undefined>;
2
+ export default _default;
@@ -1,42 +1,22 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _app = require("@orion-js/app");
11
-
12
- var _File = _interopRequireDefault(require("../File"));
13
-
14
- var _Files = _interopRequireDefault(require("../Files"));
15
-
16
- var _default = (0, _app.resolver)({
17
- params: {
18
- fileId: {
19
- type: 'ID'
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const resolvers_1 = require("@orion-js/resolvers");
7
+ const File_1 = __importDefault(require("../File"));
8
+ const Files_1 = __importDefault(require("../Files"));
9
+ exports.default = (0, resolvers_1.resolver)({
10
+ params: {
11
+ fileId: {
12
+ type: 'ID'
13
+ }
14
+ },
15
+ returns: File_1.default,
16
+ mutation: true,
17
+ async resolve({ fileId }, viewer) {
18
+ const file = await Files_1.default.findOne({ createdBy: viewer.userId, _id: fileId });
19
+ await file.update({ $set: { status: 'uploaded' } });
20
+ return file;
20
21
  }
21
- },
22
- returns: _File.default,
23
- mutation: true,
24
-
25
- async resolve({
26
- fileId
27
- }, viewer) {
28
- const file = await _Files.default.findOne({
29
- createdBy: viewer.userId,
30
- _id: fileId
31
- });
32
- await file.update({
33
- $set: {
34
- status: 'uploaded'
35
- }
36
- });
37
- return file;
38
- }
39
-
40
22
  });
41
-
42
- exports.default = _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@orion-js/resolvers").Resolver<({ fileId }: any, viewer: any) => Promise<any>, undefined>;
2
+ export default _default;
@@ -1,32 +1,19 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _app = require("@orion-js/app");
11
-
12
- var _File = _interopRequireDefault(require("../File"));
13
-
14
- var _Files = _interopRequireDefault(require("../Files"));
15
-
16
- var _default = (0, _app.resolver)({
17
- params: {
18
- fileId: {
19
- type: 'ID'
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const resolvers_1 = require("@orion-js/resolvers");
7
+ const File_1 = __importDefault(require("../File"));
8
+ const Files_1 = __importDefault(require("../Files"));
9
+ exports.default = (0, resolvers_1.resolver)({
10
+ params: {
11
+ fileId: {
12
+ type: 'ID'
13
+ }
14
+ },
15
+ returns: File_1.default,
16
+ async resolve({ fileId }, viewer) {
17
+ return await Files_1.default.findOne(fileId);
20
18
  }
21
- },
22
- returns: _File.default,
23
-
24
- async resolve({
25
- fileId
26
- }, viewer) {
27
- return await _Files.default.findOne(fileId);
28
- }
29
-
30
19
  });
31
-
32
- exports.default = _default;
@@ -0,0 +1,11 @@
1
+ declare const _default: import("@orion-js/resolvers").Resolver<(params: any, viewer: any) => Promise<{
2
+ cursor: import("@orion-js/mongodb").FindCursor<any>;
3
+ params: any;
4
+ viewer: any;
5
+ options: {
6
+ skip: number;
7
+ limit: any;
8
+ };
9
+ count: number;
10
+ }>, undefined>;
11
+ export default _default;
@@ -1,46 +1,26 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _app = require("@orion-js/app");
11
-
12
- var _escapeStringRegexp = _interopRequireDefault(require("escape-string-regexp"));
13
-
14
- var _File = _interopRequireDefault(require("../File"));
15
-
16
- var _Files = _interopRequireDefault(require("../Files"));
17
-
18
- var _default = (0, _app.paginatedResolver)({
19
- params: {
20
- filter: {
21
- type: String,
22
- optional: true
23
- }
24
- },
25
- returns: _File.default,
26
-
27
- async getCursor({
28
- filter
29
- }, viewer) {
30
- const query = {
31
- status: 'uploaded'
32
- };
33
- query.createdBy = viewer.userId;
34
-
35
- if (filter) {
36
- query.name = {
37
- $regex: new RegExp(`^${(0, _escapeStringRegexp.default)(filter)}`)
38
- };
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const paginated_mongodb_1 = require("@orion-js/paginated-mongodb");
7
+ const escape_string_regexp_1 = __importDefault(require("escape-string-regexp"));
8
+ const File_1 = __importDefault(require("../File"));
9
+ const Files_1 = __importDefault(require("../Files"));
10
+ exports.default = (0, paginated_mongodb_1.paginatedResolver)({
11
+ params: {
12
+ filter: {
13
+ type: String,
14
+ optional: true
15
+ }
16
+ },
17
+ returns: File_1.default,
18
+ async getCursor({ filter }, viewer) {
19
+ const query = { status: 'uploaded' };
20
+ query.createdBy = viewer.userId;
21
+ if (filter) {
22
+ query.name = { $regex: new RegExp(`^${(0, escape_string_regexp_1.default)(filter)}`) };
23
+ }
24
+ return Files_1.default.find(query);
39
25
  }
40
-
41
- return _Files.default.find(query);
42
- }
43
-
44
26
  });
45
-
46
- exports.default = _default;
@@ -0,0 +1,5 @@
1
+ declare const _default: import("@orion-js/resolvers").Resolver<(params: any, viewer: any) => Promise<{
2
+ key: string;
3
+ fileId: string;
4
+ }>, undefined>;
5
+ export default _default;
@@ -1,104 +1,89 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _app = require("@orion-js/app");
11
-
12
- var _awsSdk = _interopRequireDefault(require("aws-sdk"));
13
-
14
- var _credentials = require("../credentials");
15
-
16
- var _Files = _interopRequireDefault(require("../Files"));
17
-
18
- var _default = (0, _app.resolver)({
19
- params: {
20
- name: {
21
- type: String
22
- },
23
- size: {
24
- type: Number
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const resolvers_1 = require("@orion-js/resolvers");
7
+ const helpers_1 = require("@orion-js/helpers");
8
+ const models_1 = require("@orion-js/models");
9
+ const aws_sdk_1 = __importDefault(require("aws-sdk"));
10
+ const credentials_1 = require("../credentials");
11
+ const Files_1 = __importDefault(require("../Files"));
12
+ exports.default = (0, resolvers_1.resolver)({
13
+ params: {
14
+ name: {
15
+ type: String
16
+ },
17
+ size: {
18
+ type: Number
19
+ },
20
+ type: {
21
+ type: String
22
+ }
25
23
  },
26
- type: {
27
- type: String
28
- }
29
- },
30
- returns: new _app.Model({
31
- name: 'UploadCredentials',
32
- schema: {
33
- fileId: {
34
- type: 'ID'
35
- },
36
- url: {
37
- type: String
38
- },
39
- fields: {
40
- type: 'blackbox'
41
- },
42
- key: {
43
- type: String
44
- }
45
- }
46
- }),
47
- mutation: true,
48
-
49
- async resolve(params, viewer) {
50
- const {
51
- accessKeyId,
52
- secretAccessKey,
53
- region,
54
- bucket,
55
- canUpload,
56
- basePath
57
- } = (0, _credentials.getAWSCredentials)();
58
- const s3 = new _awsSdk.default.S3({
59
- accessKeyId,
60
- secretAccessKey,
61
- region
62
- });
63
-
64
- if (canUpload) {
65
- if (!(await canUpload(params, viewer))) return null;
66
- }
67
-
68
- const key = `${basePath}/${(0, _app.generateId)()}-${params.name}`;
69
- const fileId = await _Files.default.insert({
70
- key,
71
- bucket,
72
- name: params.name,
73
- type: params.type,
74
- size: params.size,
75
- status: 'uploading',
76
- createdBy: viewer.userId,
77
- createdAt: new Date()
78
- });
79
- const result = await new Promise((resolve, reject) => {
80
- s3.createPresignedPost({
81
- Bucket: bucket,
82
- Conditions: [['content-length-range', params.size, params.size], {
83
- 'Content-Type': params.type
84
- }, {
85
- Key: key
86
- }],
87
- Fields: {
88
- key: key,
89
- 'Content-Type': params.type
24
+ returns: (0, models_1.createModel)({
25
+ name: 'UploadCredentials',
26
+ schema: {
27
+ fileId: {
28
+ type: 'ID'
29
+ },
30
+ url: {
31
+ type: String
32
+ },
33
+ fields: {
34
+ type: 'blackbox'
35
+ },
36
+ key: {
37
+ type: String
38
+ }
90
39
  }
91
- }, function (error, data) {
92
- if (error) reject(error);else resolve(data);
93
- });
94
- });
95
- return {
96
- fileId,
97
- ...result,
98
- key
99
- };
100
- }
101
-
40
+ }),
41
+ mutation: true,
42
+ async resolve(params, viewer) {
43
+ const { accessKeyId, secretAccessKey, region, bucket, canUpload, basePath } = (0, credentials_1.getAWSCredentials)();
44
+ const s3 = new aws_sdk_1.default.S3({
45
+ accessKeyId,
46
+ secretAccessKey,
47
+ region
48
+ });
49
+ if (canUpload) {
50
+ if (!(await canUpload(params, viewer)))
51
+ return null;
52
+ }
53
+ const key = `${basePath}/${(0, helpers_1.generateId)()}-${params.name}`;
54
+ const fileId = await Files_1.default.insertOne({
55
+ key,
56
+ bucket,
57
+ name: params.name,
58
+ type: params.type,
59
+ size: params.size,
60
+ status: 'uploading',
61
+ createdBy: viewer.userId,
62
+ createdAt: new Date()
63
+ });
64
+ const result = await new Promise((resolve, reject) => {
65
+ s3.createPresignedPost({
66
+ Bucket: bucket,
67
+ Conditions: [
68
+ ['content-length-range', params.size, params.size],
69
+ { 'Content-Type': params.type },
70
+ { Key: key }
71
+ ],
72
+ Fields: {
73
+ key: key,
74
+ 'Content-Type': params.type
75
+ }
76
+ }, function (error, data) {
77
+ if (error)
78
+ reject(error);
79
+ else
80
+ resolve(data);
81
+ });
82
+ });
83
+ return {
84
+ fileId,
85
+ ...result,
86
+ key
87
+ };
88
+ }
102
89
  });
103
-
104
- exports.default = _default;
@@ -0,0 +1,19 @@
1
+ declare const _default: {
2
+ fileManagerFile: import("@orion-js/resolvers").Resolver<({ fileId }: any, viewer: any) => Promise<any>, undefined>;
3
+ fileManagerFiles: import("@orion-js/resolvers").Resolver<(params: any, viewer: any) => Promise<{
4
+ cursor: import("@orion-js/mongodb").FindCursor<any>;
5
+ params: any;
6
+ viewer: any;
7
+ options: {
8
+ skip: number;
9
+ limit: any;
10
+ };
11
+ count: number;
12
+ }>, undefined>;
13
+ completeUpload: import("@orion-js/resolvers").Resolver<({ fileId }: any, viewer: any) => Promise<any>, undefined>;
14
+ generateUploadCredentials: import("@orion-js/resolvers").Resolver<(params: any, viewer: any) => Promise<{
15
+ key: string;
16
+ fileId: string;
17
+ }>, undefined>;
18
+ };
19
+ export default _default;
@@ -1,24 +1,15 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _fileManagerFile = _interopRequireDefault(require("./fileManagerFile"));
11
-
12
- var _fileManagerFiles = _interopRequireDefault(require("./fileManagerFiles"));
13
-
14
- var _completeUpload = _interopRequireDefault(require("./completeUpload"));
15
-
16
- var _generateUploadCredentials = _interopRequireDefault(require("./generateUploadCredentials"));
17
-
18
- var _default = {
19
- fileManagerFile: _fileManagerFile.default,
20
- fileManagerFiles: _fileManagerFiles.default,
21
- completeUpload: _completeUpload.default,
22
- generateUploadCredentials: _generateUploadCredentials.default
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fileManagerFile_1 = __importDefault(require("./fileManagerFile"));
7
+ const fileManagerFiles_1 = __importDefault(require("./fileManagerFiles"));
8
+ const completeUpload_1 = __importDefault(require("./completeUpload"));
9
+ const generateUploadCredentials_1 = __importDefault(require("./generateUploadCredentials"));
10
+ exports.default = {
11
+ fileManagerFile: fileManagerFile_1.default,
12
+ fileManagerFiles: fileManagerFiles_1.default,
13
+ completeUpload: completeUpload_1.default,
14
+ generateUploadCredentials: generateUploadCredentials_1.default
23
15
  };
24
- exports.default = _default;
package/package.json CHANGED
@@ -1,32 +1,37 @@
1
1
  {
2
2
  "name": "@orion-js/file-manager",
3
- "version": "3.0.15",
3
+ "version": "3.0.23",
4
4
  "main": "lib/index.js",
5
5
  "author": "nicolaslopezj",
6
6
  "license": "MIT",
7
7
  "scripts": {
8
- "build": "rm -rf ./lib && babel ./src --out-dir ./lib",
8
+ "test": "exit 0",
9
9
  "prepare": "yarn run build",
10
- "watch": "rm -rf ./lib && babel ./src --watch --out-dir ./lib",
11
- "test": "exit 0"
10
+ "clean": "rm -rf ./lib",
11
+ "build": "yarn run clean && tsc",
12
+ "watch": "yarn run clean && tsc -w"
12
13
  },
13
14
  "dependencies": {
14
- "@orion-js/resolvers": "^3.0.15",
15
+ "@orion-js/helpers": "^3.0.17",
16
+ "@orion-js/models": "^3.0.20",
17
+ "@orion-js/mongodb": "^3.0.23",
18
+ "@orion-js/paginated-mongodb": "^3.0.23",
19
+ "@orion-js/resolvers": "^3.0.14",
15
20
  "@orion-js/schema": "^3.0.7",
16
- "aws-sdk": "^2.258.1",
17
- "lodash": "^4.17.10",
18
- "luxon": "^1.2.0"
21
+ "aws-sdk": "^2.1028.0",
22
+ "lodash": "^4.17.21",
23
+ "luxon": "^2.1.1"
19
24
  },
20
25
  "devDependencies": {
21
- "@babel/cli": "^7.5.5",
22
- "@babel/core": "^7.5.5",
23
- "@babel/plugin-transform-runtime": "^7.5.5",
24
- "@babel/preset-env": "^7.5.5",
25
- "@babel/runtime": "^7.5.5",
26
- "@orion-js/app": "^3.0.0-alpha.10",
27
26
  "@shelf/jest-mongodb": "^2.1.0",
28
- "babel-jest": "^22.4.3",
29
- "jest": "^22.4.3"
27
+ "@types/jest": "^27.0.2",
28
+ "@typescript-eslint/eslint-plugin": "5.4.0",
29
+ "@typescript-eslint/parser": "5.4.0",
30
+ "eslint": "8.2.0",
31
+ "eslint-plugin-import": "2.25.3",
32
+ "jest": "27.3.1",
33
+ "ts-jest": "27.0.7",
34
+ "typescript": "^4.4.4"
30
35
  },
31
36
  "peerDependencies": {
32
37
  "@orion-js/app": "*"
@@ -34,5 +39,5 @@
34
39
  "publishConfig": {
35
40
  "access": "public"
36
41
  },
37
- "gitHead": "e3bfc7c78cace6976985f79b733df442ef11f231"
42
+ "gitHead": "26691f9507db91bd6ed1659d231f7e5e1dcc2e55"
38
43
  }
package/tsconfig.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "compilerOptions": {
3
+ "strict": false,
4
+ "outDir": "./lib",
5
+ "rootDir": "./src",
6
+ "module": "commonjs",
7
+ "target": "es2020",
8
+ "moduleResolution": "node",
9
+ "lib": ["es2020"],
10
+ "declaration": true,
11
+
12
+ "esModuleInterop": true,
13
+ "skipLibCheck": true,
14
+ "forceConsistentCasingInFileNames": true,
15
+
16
+ // required for typed models
17
+ "experimentalDecorators": true,
18
+ "emitDecoratorMetadata": true
19
+ }
20
+ }