@orion-js/resolvers 3.11.8 → 3.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +7236 -0
- package/dist/index.d.ts +88 -0
- package/dist/index.js +7208 -0
- package/package.json +23 -18
- package/LICENSE +0 -21
- package/lib/createResolverMiddleware.d.ts +0 -2
- package/lib/createResolverMiddleware.js +0 -7
- package/lib/index.d.ts +0 -8
- package/lib/index.js +0 -29
- package/lib/resolver/cleanParams.d.ts +0 -1
- package/lib/resolver/cleanParams.js +0 -25
- package/lib/resolver/cleanReturns.d.ts +0 -1
- package/lib/resolver/cleanReturns.js +0 -12
- package/lib/resolver/getArgs.d.ts +0 -11
- package/lib/resolver/getArgs.js +0 -22
- package/lib/resolver/getExecute/checkPermissions.d.ts +0 -2
- package/lib/resolver/getExecute/checkPermissions.js +0 -31
- package/lib/resolver/getExecute/cleanAndValidate.d.ts +0 -4
- package/lib/resolver/getExecute/cleanAndValidate.js +0 -25
- package/lib/resolver/getExecute/getCacheKey.d.ts +0 -2
- package/lib/resolver/getExecute/getCacheKey.js +0 -22
- package/lib/resolver/getExecute/getResult.d.ts +0 -2
- package/lib/resolver/getExecute/getResult.js +0 -26
- package/lib/resolver/getExecute/getResult.test.d.ts +0 -1
- package/lib/resolver/getExecute/getResult.test.js +0 -58
- package/lib/resolver/getExecute/getResultWithMiddlewares.d.ts +0 -2
- package/lib/resolver/getExecute/getResultWithMiddlewares.js +0 -20
- package/lib/resolver/getExecute/getSchema.d.ts +0 -2
- package/lib/resolver/getExecute/getSchema.js +0 -23
- package/lib/resolver/getExecute/index.d.ts +0 -2
- package/lib/resolver/getExecute/index.js +0 -28
- package/lib/resolver/getExecute/initResult.d.ts +0 -2
- package/lib/resolver/getExecute/initResult.js +0 -34
- package/lib/resolver/getExecute/middlewares.test.d.ts +0 -1
- package/lib/resolver/getExecute/middlewares.test.js +0 -65
- package/lib/resolver/index.d.ts +0 -5
- package/lib/resolver/index.js +0 -40
- package/lib/resolver/index.test.d.ts +0 -1
- package/lib/resolver/index.test.js +0 -217
- package/lib/resolver/permisionsCheckers.d.ts +0 -3
- package/lib/resolver/permisionsCheckers.js +0 -18
- package/lib/resolver/types.d.ts +0 -60
- package/lib/resolver/types.js +0 -2
package/package.json
CHANGED
|
@@ -1,37 +1,42 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orion-js/resolvers",
|
|
3
|
-
"version": "3.
|
|
4
|
-
"main": "
|
|
5
|
-
"types": "
|
|
3
|
+
"version": "3.12.0",
|
|
4
|
+
"main": "./dist/index.cjs",
|
|
5
|
+
"types": "./dist/index.d.ts",
|
|
6
6
|
"files": [
|
|
7
|
-
"
|
|
7
|
+
"dist"
|
|
8
8
|
],
|
|
9
9
|
"author": "nicolaslopezj",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"scripts": {
|
|
12
|
-
"test": "
|
|
12
|
+
"test": "bun test",
|
|
13
13
|
"prepare": "yarn run build",
|
|
14
|
-
"clean": "rm -rf ./
|
|
15
|
-
"build": "
|
|
14
|
+
"clean": "rm -rf ./dist",
|
|
15
|
+
"build": "bun run build.ts",
|
|
16
16
|
"watch": "tsc -w",
|
|
17
|
-
"upgrade-interactive": "yarn upgrade-interactive"
|
|
17
|
+
"upgrade-interactive": "yarn upgrade-interactive",
|
|
18
|
+
"dev": "bun --watch src/index.ts"
|
|
18
19
|
},
|
|
19
20
|
"dependencies": {
|
|
20
|
-
"@orion-js/cache": "^
|
|
21
|
-
"@orion-js/helpers": "^
|
|
22
|
-
"@orion-js/schema": "^
|
|
21
|
+
"@orion-js/cache": "^4.0.0-alpha.2",
|
|
22
|
+
"@orion-js/helpers": "^4.0.0-alpha.2",
|
|
23
|
+
"@orion-js/schema": "^4.0.0-alpha.2"
|
|
23
24
|
},
|
|
24
25
|
"devDependencies": {
|
|
25
|
-
"@shelf/jest-mongodb": "^2.1.0",
|
|
26
|
-
"@types/jest": "^27.0.2",
|
|
27
26
|
"@types/lodash": "4.14.176",
|
|
28
|
-
"jest": "27.3.1",
|
|
29
27
|
"reflect-metadata": "^0.1.13",
|
|
30
|
-
"
|
|
31
|
-
"
|
|
28
|
+
"typescript": "^5.4.5",
|
|
29
|
+
"@types/bun": "^1.2.4"
|
|
32
30
|
},
|
|
33
31
|
"publishConfig": {
|
|
34
32
|
"access": "public"
|
|
35
33
|
},
|
|
36
|
-
"gitHead": "
|
|
37
|
-
|
|
34
|
+
"gitHead": "9fd28b6f6b348cebc9f0dc207805647969277372",
|
|
35
|
+
"type": "module",
|
|
36
|
+
"module": "./dist/index.js",
|
|
37
|
+
"exports": {
|
|
38
|
+
"types": "./dist/index.d.ts",
|
|
39
|
+
"import": "./dist/index.js",
|
|
40
|
+
"require": "./dist/index.cjs"
|
|
41
|
+
}
|
|
42
|
+
}
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
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/lib/index.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { resolver, modelResolver } from './resolver';
|
|
2
|
-
export * from './resolver/types';
|
|
3
|
-
export * from './createResolverMiddleware';
|
|
4
|
-
import checkPermissions from './resolver/getExecute/checkPermissions';
|
|
5
|
-
import { addPermissionChecker } from './resolver/permisionsCheckers';
|
|
6
|
-
import cleanParams from './resolver/cleanParams';
|
|
7
|
-
import cleanReturns from './resolver/cleanReturns';
|
|
8
|
-
export { resolver, modelResolver, checkPermissions, addPermissionChecker, cleanParams, cleanReturns };
|
package/lib/index.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
-
};
|
|
15
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.cleanReturns = exports.cleanParams = exports.addPermissionChecker = exports.checkPermissions = exports.modelResolver = exports.resolver = void 0;
|
|
17
|
-
const resolver_1 = require("./resolver");
|
|
18
|
-
Object.defineProperty(exports, "resolver", { enumerable: true, get: function () { return resolver_1.resolver; } });
|
|
19
|
-
Object.defineProperty(exports, "modelResolver", { enumerable: true, get: function () { return resolver_1.modelResolver; } });
|
|
20
|
-
__exportStar(require("./resolver/types"), exports);
|
|
21
|
-
__exportStar(require("./createResolverMiddleware"), exports);
|
|
22
|
-
const checkPermissions_1 = __importDefault(require("./resolver/getExecute/checkPermissions"));
|
|
23
|
-
exports.checkPermissions = checkPermissions_1.default;
|
|
24
|
-
const permisionsCheckers_1 = require("./resolver/permisionsCheckers");
|
|
25
|
-
Object.defineProperty(exports, "addPermissionChecker", { enumerable: true, get: function () { return permisionsCheckers_1.addPermissionChecker; } });
|
|
26
|
-
const cleanParams_1 = __importDefault(require("./resolver/cleanParams"));
|
|
27
|
-
exports.cleanParams = cleanParams_1.default;
|
|
28
|
-
const cleanReturns_1 = __importDefault(require("./resolver/cleanReturns"));
|
|
29
|
-
exports.cleanReturns = cleanReturns_1.default;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function (rawParams: any): any;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
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 clone_1 = __importDefault(require("lodash/clone"));
|
|
7
|
-
function default_1(rawParams) {
|
|
8
|
-
if (!rawParams)
|
|
9
|
-
return;
|
|
10
|
-
// for typed model
|
|
11
|
-
if (rawParams.getModel) {
|
|
12
|
-
rawParams = rawParams.getModel();
|
|
13
|
-
}
|
|
14
|
-
if (rawParams.__isModel) {
|
|
15
|
-
rawParams = rawParams.getSchema();
|
|
16
|
-
}
|
|
17
|
-
const params = (0, clone_1.default)(rawParams);
|
|
18
|
-
Object.keys(params).forEach(key => {
|
|
19
|
-
if (key.startsWith('__')) {
|
|
20
|
-
delete params[key];
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
return params;
|
|
24
|
-
}
|
|
25
|
-
exports.default = default_1;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function (rawReturns: any): any;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
function default_1(rawReturns) {
|
|
4
|
-
if (!rawReturns)
|
|
5
|
-
return;
|
|
6
|
-
// for typed model
|
|
7
|
-
if (rawReturns.getModel) {
|
|
8
|
-
return rawReturns.getModel();
|
|
9
|
-
}
|
|
10
|
-
return rawReturns;
|
|
11
|
-
}
|
|
12
|
-
exports.default = default_1;
|
package/lib/resolver/getArgs.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getArgs = void 0;
|
|
4
|
-
const getArgs = function getArgs(...args) {
|
|
5
|
-
if (args.length === 4) {
|
|
6
|
-
return {
|
|
7
|
-
parent: args[0],
|
|
8
|
-
params: args[1] || {},
|
|
9
|
-
viewer: args[2] || {},
|
|
10
|
-
info: args[3] || {},
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
if (args.length < 4) {
|
|
14
|
-
return {
|
|
15
|
-
params: args[0] || {},
|
|
16
|
-
viewer: args[1] || {},
|
|
17
|
-
info: args[2] || {},
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
throw new Error('A resolver must be called with 2 parameters only');
|
|
21
|
-
};
|
|
22
|
-
exports.getArgs = getArgs;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const permisionsCheckers_1 = require("../permisionsCheckers");
|
|
4
|
-
const helpers_1 = require("@orion-js/helpers");
|
|
5
|
-
async function default_1(executeOptions, options) {
|
|
6
|
-
const { parent, params, viewer, info } = executeOptions;
|
|
7
|
-
if (viewer.app)
|
|
8
|
-
return;
|
|
9
|
-
await (0, permisionsCheckers_1.checkPermissions)({
|
|
10
|
-
resolver: options,
|
|
11
|
-
parent,
|
|
12
|
-
params,
|
|
13
|
-
viewer,
|
|
14
|
-
info,
|
|
15
|
-
});
|
|
16
|
-
if (options.checkPermission) {
|
|
17
|
-
const execute = async () => {
|
|
18
|
-
if (parent) {
|
|
19
|
-
const checker = options.checkPermission;
|
|
20
|
-
return checker(parent, params, viewer, info);
|
|
21
|
-
}
|
|
22
|
-
const checker = options.checkPermission;
|
|
23
|
-
return checker(params, viewer, info);
|
|
24
|
-
};
|
|
25
|
-
const error = await execute();
|
|
26
|
-
if (error) {
|
|
27
|
-
throw new helpers_1.PermissionsError(error);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
exports.default = default_1;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
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 getSchema_1 = __importDefault(require("./getSchema"));
|
|
7
|
-
const schema_1 = require("@orion-js/schema");
|
|
8
|
-
async function default_1({ params, callParams }) {
|
|
9
|
-
if (!callParams)
|
|
10
|
-
callParams = {};
|
|
11
|
-
if (params) {
|
|
12
|
-
const options = {
|
|
13
|
-
filter: false,
|
|
14
|
-
removeEmptyStrings: false
|
|
15
|
-
};
|
|
16
|
-
const schema = (0, getSchema_1.default)(params);
|
|
17
|
-
const cleaned = await (0, schema_1.clean)(schema, callParams, options);
|
|
18
|
-
await (0, schema_1.validate)(schema, cleaned, options);
|
|
19
|
-
return cleaned;
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
return callParams;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
exports.default = default_1;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const helpers_1 = require("@orion-js/helpers");
|
|
4
|
-
const getBaseKey = async (executeOptions) => {
|
|
5
|
-
const { parent, params, viewer, info, options } = executeOptions;
|
|
6
|
-
if (parent) {
|
|
7
|
-
const getKey = options.getCacheKey;
|
|
8
|
-
return await getKey(parent, params, viewer, info);
|
|
9
|
-
}
|
|
10
|
-
const getKey = options.getCacheKey;
|
|
11
|
-
return await getKey(params, viewer, info);
|
|
12
|
-
};
|
|
13
|
-
async function default_1(executeOptions) {
|
|
14
|
-
const { parent, params, options } = executeOptions;
|
|
15
|
-
if (options.getCacheKey) {
|
|
16
|
-
const baseKey = await getBaseKey(executeOptions);
|
|
17
|
-
return `${options.resolverId}_${baseKey}`;
|
|
18
|
-
}
|
|
19
|
-
const key = (0, helpers_1.hashObject)({ parent, params, resolverId: options.resolverId });
|
|
20
|
-
return key;
|
|
21
|
-
}
|
|
22
|
-
exports.default = default_1;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
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 getCacheKey_1 = __importDefault(require("./getCacheKey"));
|
|
7
|
-
async function default_1(executeOptions) {
|
|
8
|
-
const { parent, params, viewer, info, options } = executeOptions;
|
|
9
|
-
const executeResolver = async () => {
|
|
10
|
-
const resultFunc = options.resolve;
|
|
11
|
-
if (parent) {
|
|
12
|
-
return await resultFunc(parent, params, viewer, info);
|
|
13
|
-
}
|
|
14
|
-
return await resultFunc(params, viewer, info);
|
|
15
|
-
};
|
|
16
|
-
if (options.cache && options.cacheProvider) {
|
|
17
|
-
const key = await (0, getCacheKey_1.default)(executeOptions);
|
|
18
|
-
const result = await options.cacheProvider.get(key, {
|
|
19
|
-
fallback: executeResolver,
|
|
20
|
-
ttl: options.cache,
|
|
21
|
-
});
|
|
22
|
-
return result.value;
|
|
23
|
-
}
|
|
24
|
-
return await executeResolver();
|
|
25
|
-
}
|
|
26
|
-
exports.default = default_1;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
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 cache_1 = require("@orion-js/cache");
|
|
7
|
-
const helpers_1 = require("@orion-js/helpers");
|
|
8
|
-
const getResult_1 = __importDefault(require("./getResult"));
|
|
9
|
-
const cacheProvider = cache_1.defaultCache;
|
|
10
|
-
it('should execute the function', async () => {
|
|
11
|
-
const resolve = async ({ num }) => num * 2;
|
|
12
|
-
const params = { num: 321 };
|
|
13
|
-
const result = await (0, getResult_1.default)({
|
|
14
|
-
options: { resolve },
|
|
15
|
-
params,
|
|
16
|
-
viewer: {},
|
|
17
|
-
info: undefined,
|
|
18
|
-
});
|
|
19
|
-
expect(result).toBe(321 * 2);
|
|
20
|
-
});
|
|
21
|
-
it('should use the cache if passed', async () => {
|
|
22
|
-
let index = 1;
|
|
23
|
-
const resolve = async () => {
|
|
24
|
-
index++;
|
|
25
|
-
return index;
|
|
26
|
-
};
|
|
27
|
-
const cache = 10;
|
|
28
|
-
const resolverId = '1234';
|
|
29
|
-
const resolver = {
|
|
30
|
-
resolve,
|
|
31
|
-
cacheProvider,
|
|
32
|
-
cache,
|
|
33
|
-
resolverId,
|
|
34
|
-
};
|
|
35
|
-
const emptyCall = { options: resolver, params: {}, viewer: {} };
|
|
36
|
-
const result1 = await (0, getResult_1.default)(emptyCall);
|
|
37
|
-
expect(result1).toBe(2);
|
|
38
|
-
const result2 = await (0, getResult_1.default)(emptyCall);
|
|
39
|
-
expect(result2).toBe(2);
|
|
40
|
-
await (0, helpers_1.sleep)(15);
|
|
41
|
-
const result3 = await (0, getResult_1.default)(emptyCall);
|
|
42
|
-
expect(result3).toBe(3);
|
|
43
|
-
});
|
|
44
|
-
it('should use the custom cache Provider', async () => {
|
|
45
|
-
const resolve = async () => 1;
|
|
46
|
-
const provider = {
|
|
47
|
-
async get() {
|
|
48
|
-
return { value: 'fromcache' };
|
|
49
|
-
},
|
|
50
|
-
async set() { },
|
|
51
|
-
async invalidate() { },
|
|
52
|
-
};
|
|
53
|
-
const cache = 10;
|
|
54
|
-
const resolverId = '1234';
|
|
55
|
-
const resolver = { resolve, cacheProvider: provider, cache, resolverId };
|
|
56
|
-
const result = await (0, getResult_1.default)({ options: resolver, params: {}, viewer: {} });
|
|
57
|
-
expect(result).toBe('fromcache');
|
|
58
|
-
});
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
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.getResultWithMiddlewares = void 0;
|
|
7
|
-
const helpers_1 = require("@orion-js/helpers");
|
|
8
|
-
const createResolverMiddleware_1 = require("../../createResolverMiddleware");
|
|
9
|
-
const getResult_1 = __importDefault(require("./getResult"));
|
|
10
|
-
async function getResultWithMiddlewares(executeOptions) {
|
|
11
|
-
const resolveMiddleware = (0, createResolverMiddleware_1.createResolverMiddleware)(async (executeOptions) => {
|
|
12
|
-
return await (0, getResult_1.default)(executeOptions);
|
|
13
|
-
});
|
|
14
|
-
const composedMiddlewares = (0, helpers_1.composeMiddlewares)([
|
|
15
|
-
...(executeOptions.options.middlewares || []),
|
|
16
|
-
resolveMiddleware,
|
|
17
|
-
]);
|
|
18
|
-
return await composedMiddlewares(executeOptions);
|
|
19
|
-
}
|
|
20
|
-
exports.getResultWithMiddlewares = getResultWithMiddlewares;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
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 clone_1 = __importDefault(require("lodash/clone"));
|
|
7
|
-
const isArray_1 = __importDefault(require("lodash/isArray"));
|
|
8
|
-
function default_1(resolverParams) {
|
|
9
|
-
const schema = {};
|
|
10
|
-
for (const key of Object.keys(resolverParams)) {
|
|
11
|
-
const field = (0, clone_1.default)(resolverParams[key]);
|
|
12
|
-
const isArrayOfModel = (0, isArray_1.default)(field.type) && field.type[0].__isModel;
|
|
13
|
-
if (isArrayOfModel) {
|
|
14
|
-
field.type = [field.type[0].getSchema()];
|
|
15
|
-
}
|
|
16
|
-
else if (field.type.__isModel) {
|
|
17
|
-
field.type = field.type.getSchema();
|
|
18
|
-
}
|
|
19
|
-
schema[key] = field;
|
|
20
|
-
}
|
|
21
|
-
return schema;
|
|
22
|
-
}
|
|
23
|
-
exports.default = default_1;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
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 checkPermissions_1 = __importDefault(require("./checkPermissions"));
|
|
7
|
-
const cleanAndValidate_1 = __importDefault(require("./cleanAndValidate"));
|
|
8
|
-
const initResult_1 = __importDefault(require("./initResult"));
|
|
9
|
-
const getResultWithMiddlewares_1 = require("./getResultWithMiddlewares");
|
|
10
|
-
function getExecute(options) {
|
|
11
|
-
const execute = async (executeParams) => {
|
|
12
|
-
const executeOptions = {
|
|
13
|
-
params: await (0, cleanAndValidate_1.default)({
|
|
14
|
-
params: options.params,
|
|
15
|
-
callParams: executeParams.params,
|
|
16
|
-
}),
|
|
17
|
-
viewer: executeParams.viewer || {},
|
|
18
|
-
info: executeParams.info || {},
|
|
19
|
-
parent: executeParams.parent,
|
|
20
|
-
options: options,
|
|
21
|
-
};
|
|
22
|
-
await (0, checkPermissions_1.default)(executeOptions, options);
|
|
23
|
-
const result = await (0, getResultWithMiddlewares_1.getResultWithMiddlewares)(executeOptions);
|
|
24
|
-
return (0, initResult_1.default)(options, result);
|
|
25
|
-
};
|
|
26
|
-
return execute;
|
|
27
|
-
}
|
|
28
|
-
exports.default = getExecute;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
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 isArray_1 = __importDefault(require("lodash/isArray"));
|
|
7
|
-
const isNil_1 = __importDefault(require("lodash/isNil"));
|
|
8
|
-
function default_1(options, result) {
|
|
9
|
-
let { returns } = options;
|
|
10
|
-
if (returns) {
|
|
11
|
-
if ((0, isArray_1.default)(returns) && returns[0].__isModel) {
|
|
12
|
-
if ((0, isNil_1.default)(result)) {
|
|
13
|
-
return result;
|
|
14
|
-
}
|
|
15
|
-
else if ((0, isArray_1.default)(result)) {
|
|
16
|
-
return result.map(item => returns[0].initItem(item));
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
console.warn(`A resolver did not return an array when it should. Result:`, result);
|
|
20
|
-
return result;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
else if (returns.__isModel) {
|
|
24
|
-
return returns.initItem(result);
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
return result;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
return result;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
exports.default = default_1;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const __1 = require("..");
|
|
4
|
-
const createResolverMiddleware_1 = require("../../createResolverMiddleware");
|
|
5
|
-
it('should call middlewares in the correct order', async () => {
|
|
6
|
-
const order = [];
|
|
7
|
-
const middleware1 = (0, createResolverMiddleware_1.createResolverMiddleware)(async (executeOptions, next) => {
|
|
8
|
-
order.push(1);
|
|
9
|
-
const result = await next();
|
|
10
|
-
order.push(result);
|
|
11
|
-
order.push(3);
|
|
12
|
-
return 'middleware1';
|
|
13
|
-
});
|
|
14
|
-
const middleware2 = (0, createResolverMiddleware_1.createResolverMiddleware)(async ({ params, viewer }, next) => {
|
|
15
|
-
order.push(2);
|
|
16
|
-
const result = await next();
|
|
17
|
-
order.push(result);
|
|
18
|
-
order.push(4);
|
|
19
|
-
return 'middleware2';
|
|
20
|
-
});
|
|
21
|
-
const testResolver = (0, __1.resolver)({
|
|
22
|
-
params: {},
|
|
23
|
-
middlewares: [middleware1, middleware2],
|
|
24
|
-
async resolve() {
|
|
25
|
-
order.push(5);
|
|
26
|
-
return 'resolve';
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
const finalResult = await testResolver.resolve();
|
|
30
|
-
expect(finalResult).toEqual('middleware1');
|
|
31
|
-
expect(order).toEqual([1, 2, 5, 'resolve', 4, 'middleware2', 3]);
|
|
32
|
-
});
|
|
33
|
-
it('should let you throw an error inside a middleware', () => {
|
|
34
|
-
const middleware1 = (0, createResolverMiddleware_1.createResolverMiddleware)(async (executeOptions, next) => {
|
|
35
|
-
throw new Error('middleware1');
|
|
36
|
-
});
|
|
37
|
-
const testResolver = (0, __1.resolver)({
|
|
38
|
-
params: {},
|
|
39
|
-
middlewares: [middleware1],
|
|
40
|
-
async resolve() {
|
|
41
|
-
return 'resolve';
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
expect(testResolver.resolve()).rejects.toEqual(new Error('middleware1'));
|
|
45
|
-
});
|
|
46
|
-
it('should work with model resolvers and modify its params', async () => {
|
|
47
|
-
const middleware1 = (0, createResolverMiddleware_1.createResolverMiddleware)(async (executeOptions, next) => {
|
|
48
|
-
executeOptions.params.number = 2;
|
|
49
|
-
executeOptions.parent.text = 'middleware';
|
|
50
|
-
const result = await next();
|
|
51
|
-
return result;
|
|
52
|
-
});
|
|
53
|
-
const testResolver = (0, __1.modelResolver)({
|
|
54
|
-
params: { number: { type: Number } },
|
|
55
|
-
middlewares: [middleware1],
|
|
56
|
-
async resolve(model, params, viewer) {
|
|
57
|
-
return `${model.text} ${params.number}`;
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
const finalResult = await testResolver.execute({
|
|
61
|
-
params: { number: 1 },
|
|
62
|
-
parent: { text: 'test' }
|
|
63
|
-
});
|
|
64
|
-
expect(finalResult).toEqual('middleware 2');
|
|
65
|
-
});
|
package/lib/resolver/index.d.ts
DELETED
package/lib/resolver/index.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
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.modelResolver = exports.resolver = void 0;
|
|
7
|
-
const getExecute_1 = __importDefault(require("./getExecute"));
|
|
8
|
-
const cleanParams_1 = __importDefault(require("./cleanParams"));
|
|
9
|
-
const helpers_1 = require("@orion-js/helpers");
|
|
10
|
-
const cache_1 = require("@orion-js/cache");
|
|
11
|
-
const cleanReturns_1 = __importDefault(require("./cleanReturns"));
|
|
12
|
-
const getArgs_1 = require("./getArgs");
|
|
13
|
-
function createResolver(options) {
|
|
14
|
-
options.params = (0, cleanParams_1.default)(options.params);
|
|
15
|
-
options.returns = (0, cleanReturns_1.default)(options.returns);
|
|
16
|
-
if (!options.cacheProvider) {
|
|
17
|
-
options.cacheProvider = cache_1.defaultCache;
|
|
18
|
-
}
|
|
19
|
-
if (!options.resolverId) {
|
|
20
|
-
options.resolverId = (0, helpers_1.generateId)();
|
|
21
|
-
}
|
|
22
|
-
if (!options.middlewares) {
|
|
23
|
-
options.middlewares = [];
|
|
24
|
-
}
|
|
25
|
-
const execute = (0, getExecute_1.default)(options);
|
|
26
|
-
const resolve = async (...args) => {
|
|
27
|
-
const params = (0, getArgs_1.getArgs)(...args);
|
|
28
|
-
return await execute(params);
|
|
29
|
-
};
|
|
30
|
-
const resolver = {
|
|
31
|
-
...options,
|
|
32
|
-
resolve,
|
|
33
|
-
execute
|
|
34
|
-
};
|
|
35
|
-
return resolver;
|
|
36
|
-
}
|
|
37
|
-
const resolver = createResolver;
|
|
38
|
-
exports.resolver = resolver;
|
|
39
|
-
const modelResolver = createResolver;
|
|
40
|
-
exports.modelResolver = modelResolver;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|