@orion-js/typed-model 3.2.3 → 3.2.18
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/lib/factories/getModelForClass.js +1 -2
- package/lib/index.d.ts +0 -1
- package/lib/index.js +0 -1
- package/package.json +6 -9
- package/lib/services/echoes.d.ts +0 -10
- package/lib/services/echoes.js +0 -51
- package/lib/services/echoes.test.d.ts +0 -1
- package/lib/services/echoes.test.js +0 -50
- package/lib/services/http.d.ts +0 -9
- package/lib/services/http.js +0 -34
- package/lib/services/http.test.d.ts +0 -1
- package/lib/services/http.test.js +0 -40
- package/lib/services/index.d.ts +0 -4
- package/lib/services/index.js +0 -16
- package/lib/services/jobs.d.ts +0 -9
- package/lib/services/jobs.js +0 -34
- package/lib/services/jobs.test.d.ts +0 -1
- package/lib/services/jobs.test.js +0 -37
- package/lib/services/resolvers.d.ts +0 -18
- package/lib/services/resolvers.js +0 -83
- package/lib/services/resolvers.test.d.ts +0 -1
- package/lib/services/resolvers.test.js +0 -106
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getModelForClass = void 0;
|
|
4
4
|
/* eslint-disable @typescript-eslint/ban-types */
|
|
5
5
|
const models_1 = require("@orion-js/models");
|
|
6
|
-
const __1 = require("..");
|
|
7
6
|
const metadataStorage_1 = require("../storage/metadataStorage");
|
|
8
7
|
const processSchemaForProp_1 = require("./helpers/processSchemaForProp");
|
|
9
8
|
const modelCache = new Map();
|
|
@@ -16,7 +15,7 @@ function processModelSchemaForProp(prop) {
|
|
|
16
15
|
function getModelForClass(target) {
|
|
17
16
|
let modelResolvers = null;
|
|
18
17
|
if (target.prototype.typedModel) {
|
|
19
|
-
modelResolvers =
|
|
18
|
+
modelResolvers = target.prototype.resolvers || {};
|
|
20
19
|
target = target.prototype.typedModel;
|
|
21
20
|
}
|
|
22
21
|
const schemaId = target.__schemaId;
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -12,4 +12,3 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
__exportStar(require("./decorators"), exports);
|
|
14
14
|
__exportStar(require("./factories"), exports);
|
|
15
|
-
__exportStar(require("./services"), exports);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orion-js/typed-model",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.18",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"types": "lib/index.d.ts",
|
|
6
6
|
"files": [
|
|
@@ -17,14 +17,11 @@
|
|
|
17
17
|
"test": "jest --config jest.config.js"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@orion-js/dogs": "^3.2.3",
|
|
21
|
-
"@orion-js/echoes": "^3.2.3",
|
|
22
20
|
"@orion-js/helpers": "^3.2.0",
|
|
23
|
-
"@orion-js/
|
|
24
|
-
"@orion-js/
|
|
25
|
-
"@orion-js/
|
|
26
|
-
"@orion-js/
|
|
27
|
-
"@orion-js/services": "^3.2.0",
|
|
21
|
+
"@orion-js/models": "^3.2.18",
|
|
22
|
+
"@orion-js/resolvers": "^3.2.18",
|
|
23
|
+
"@orion-js/schema": "^3.2.18",
|
|
24
|
+
"@orion-js/services": "^3.2.10",
|
|
28
25
|
"lodash": "^4.17.21",
|
|
29
26
|
"reflect-metadata": "0.1.13"
|
|
30
27
|
},
|
|
@@ -44,5 +41,5 @@
|
|
|
44
41
|
"publishConfig": {
|
|
45
42
|
"access": "public"
|
|
46
43
|
},
|
|
47
|
-
"gitHead": "
|
|
44
|
+
"gitHead": "95db28fdf82bca1f23a07ea3a0d8f1218b7c1373"
|
|
48
45
|
}
|
package/lib/services/echoes.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Echo as EchoType, EchoConfig } from '@orion-js/echoes';
|
|
2
|
-
export declare function Echoes(): ClassDecorator;
|
|
3
|
-
export interface EchoesPropertyDescriptor extends Omit<PropertyDecorator, 'value'> {
|
|
4
|
-
value?: EchoConfig['resolve'];
|
|
5
|
-
}
|
|
6
|
-
export declare function EchoRequest(options?: Omit<EchoConfig, 'resolve' | 'type'>): (target: any, propertyKey: string, descriptor: EchoesPropertyDescriptor) => void;
|
|
7
|
-
export declare function EchoEvent(options?: Omit<EchoConfig, 'resolve' | 'type'>): (target: any, propertyKey: string, descriptor: EchoesPropertyDescriptor) => void;
|
|
8
|
-
export declare function getServiceEchoes(target: any): {
|
|
9
|
-
[key: string]: EchoType;
|
|
10
|
-
};
|
package/lib/services/echoes.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getServiceEchoes = exports.EchoEvent = exports.EchoRequest = exports.Echoes = void 0;
|
|
4
|
-
const services_1 = require("@orion-js/services");
|
|
5
|
-
const echoes_1 = require("@orion-js/echoes");
|
|
6
|
-
function Echoes() {
|
|
7
|
-
return function (target) {
|
|
8
|
-
(0, services_1.Service)()(target);
|
|
9
|
-
target.prototype.service = target;
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
exports.Echoes = Echoes;
|
|
13
|
-
function EchoRequest(options = {}) {
|
|
14
|
-
return function (target, propertyKey, descriptor) {
|
|
15
|
-
if (!descriptor.value)
|
|
16
|
-
throw new Error(`You must pass resolver function to ${propertyKey}`);
|
|
17
|
-
target.echoes = target.echoes || {};
|
|
18
|
-
target.echoes[propertyKey] = (0, echoes_1.echo)({
|
|
19
|
-
...options,
|
|
20
|
-
type: 'request',
|
|
21
|
-
resolve: async (params, viewer) => {
|
|
22
|
-
const instance = (0, services_1.getInstance)(target.service);
|
|
23
|
-
return await instance[propertyKey](params, viewer);
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
exports.EchoRequest = EchoRequest;
|
|
29
|
-
function EchoEvent(options = {}) {
|
|
30
|
-
return function (target, propertyKey, descriptor) {
|
|
31
|
-
if (!descriptor.value)
|
|
32
|
-
throw new Error(`You must pass resolver function to ${propertyKey}`);
|
|
33
|
-
target.echoes = target.echoes || {};
|
|
34
|
-
target.echoes[propertyKey] = (0, echoes_1.echo)({
|
|
35
|
-
...options,
|
|
36
|
-
type: 'event',
|
|
37
|
-
resolve: async (params, viewer) => {
|
|
38
|
-
const instance = (0, services_1.getInstance)(target.service);
|
|
39
|
-
return await instance[propertyKey](params, viewer);
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
exports.EchoEvent = EchoEvent;
|
|
45
|
-
function getServiceEchoes(target) {
|
|
46
|
-
if (!target.prototype) {
|
|
47
|
-
throw new Error('You must pass a class to getServiceRoutes');
|
|
48
|
-
}
|
|
49
|
-
return target.prototype.echoes || {};
|
|
50
|
-
}
|
|
51
|
-
exports.getServiceEchoes = getServiceEchoes;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
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;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const echoes_1 = require("./echoes");
|
|
13
|
-
describe('Echoes with service injections', () => {
|
|
14
|
-
it('Should define a echoes map using services', async () => {
|
|
15
|
-
let ExampleEchoesService = class ExampleEchoesService {
|
|
16
|
-
async echo() {
|
|
17
|
-
return 1;
|
|
18
|
-
}
|
|
19
|
-
async echoEvent() {
|
|
20
|
-
return 2;
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
__decorate([
|
|
24
|
-
(0, echoes_1.EchoRequest)(),
|
|
25
|
-
__metadata("design:type", Function),
|
|
26
|
-
__metadata("design:paramtypes", []),
|
|
27
|
-
__metadata("design:returntype", Promise)
|
|
28
|
-
], ExampleEchoesService.prototype, "echo", null);
|
|
29
|
-
__decorate([
|
|
30
|
-
(0, echoes_1.EchoEvent)(),
|
|
31
|
-
__metadata("design:type", Function),
|
|
32
|
-
__metadata("design:paramtypes", []),
|
|
33
|
-
__metadata("design:returntype", Promise)
|
|
34
|
-
], ExampleEchoesService.prototype, "echoEvent", null);
|
|
35
|
-
ExampleEchoesService = __decorate([
|
|
36
|
-
(0, echoes_1.Echoes)()
|
|
37
|
-
], ExampleEchoesService);
|
|
38
|
-
const echoes = (0, echoes_1.getServiceEchoes)(ExampleEchoesService);
|
|
39
|
-
expect(echoes).toMatchObject({
|
|
40
|
-
echo: {
|
|
41
|
-
type: 'request',
|
|
42
|
-
onRequest: expect.any(Function)
|
|
43
|
-
},
|
|
44
|
-
echoEvent: {
|
|
45
|
-
type: 'event',
|
|
46
|
-
resolve: expect.any(Function)
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
});
|
package/lib/services/http.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { OrionRouteOptions, Route as RouteType } from '@orion-js/http';
|
|
2
|
-
export declare function Routes(): ClassDecorator;
|
|
3
|
-
export interface RoutesPropertyDescriptor extends Omit<PropertyDecorator, 'value'> {
|
|
4
|
-
value?: OrionRouteOptions['resolve'];
|
|
5
|
-
}
|
|
6
|
-
export declare function Route(options: Omit<OrionRouteOptions, 'resolve'>): (target: any, propertyKey: string, descriptor: RoutesPropertyDescriptor) => void;
|
|
7
|
-
export declare function getServiceRoutes(target: any): {
|
|
8
|
-
[key: string]: RouteType;
|
|
9
|
-
};
|
package/lib/services/http.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getServiceRoutes = exports.Route = exports.Routes = void 0;
|
|
4
|
-
const services_1 = require("@orion-js/services");
|
|
5
|
-
const http_1 = require("@orion-js/http");
|
|
6
|
-
function Routes() {
|
|
7
|
-
return function (target) {
|
|
8
|
-
(0, services_1.Service)()(target);
|
|
9
|
-
target.prototype.service = target;
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
exports.Routes = Routes;
|
|
13
|
-
function Route(options) {
|
|
14
|
-
return function (target, propertyKey, descriptor) {
|
|
15
|
-
if (!descriptor.value)
|
|
16
|
-
throw new Error(`You must pass resolver function to ${propertyKey}`);
|
|
17
|
-
target.routes = target.routes || {};
|
|
18
|
-
target.routes[propertyKey] = (0, http_1.route)({
|
|
19
|
-
...options,
|
|
20
|
-
resolve: async (params, viewer) => {
|
|
21
|
-
const instance = (0, services_1.getInstance)(target.service);
|
|
22
|
-
return await instance[propertyKey](params, viewer);
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
exports.Route = Route;
|
|
28
|
-
function getServiceRoutes(target) {
|
|
29
|
-
if (!target.prototype) {
|
|
30
|
-
throw new Error('You must pass a class to getServiceRoutes');
|
|
31
|
-
}
|
|
32
|
-
return target.prototype.routes || {};
|
|
33
|
-
}
|
|
34
|
-
exports.getServiceRoutes = getServiceRoutes;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
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;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const http_1 = require("./http");
|
|
13
|
-
describe('Routes with service injections', () => {
|
|
14
|
-
it('Should define a routes map using services', async () => {
|
|
15
|
-
let RoutesService = class RoutesService {
|
|
16
|
-
async route1() {
|
|
17
|
-
return {
|
|
18
|
-
statusCode: 200,
|
|
19
|
-
body: 'route1'
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
__decorate([
|
|
24
|
-
(0, http_1.Route)({ method: 'get', path: '/route1' }),
|
|
25
|
-
__metadata("design:type", Function),
|
|
26
|
-
__metadata("design:paramtypes", []),
|
|
27
|
-
__metadata("design:returntype", Promise)
|
|
28
|
-
], RoutesService.prototype, "route1", null);
|
|
29
|
-
RoutesService = __decorate([
|
|
30
|
-
(0, http_1.Routes)()
|
|
31
|
-
], RoutesService);
|
|
32
|
-
const routes = (0, http_1.getServiceRoutes)(RoutesService);
|
|
33
|
-
expect(routes).toMatchObject({
|
|
34
|
-
route1: {
|
|
35
|
-
method: 'get',
|
|
36
|
-
path: '/route1'
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
});
|
package/lib/services/index.d.ts
DELETED
package/lib/services/index.js
DELETED
|
@@ -1,16 +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
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
__exportStar(require("./resolvers"), exports);
|
|
14
|
-
__exportStar(require("./echoes"), exports);
|
|
15
|
-
__exportStar(require("./http"), exports);
|
|
16
|
-
__exportStar(require("./jobs"), exports);
|
package/lib/services/jobs.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { JobDefinition } from '@orion-js/dogs';
|
|
2
|
-
export declare function Jobs(): ClassDecorator;
|
|
3
|
-
export interface JobsPropertyDescriptor extends Omit<PropertyDecorator, 'value'> {
|
|
4
|
-
value?: JobDefinition['resolve'];
|
|
5
|
-
}
|
|
6
|
-
export declare function Job(options: Omit<JobDefinition, 'resolve'>): (target: any, propertyKey: string, descriptor: JobsPropertyDescriptor) => void;
|
|
7
|
-
export declare function getServiceJobs(target: any): {
|
|
8
|
-
[key: string]: JobDefinition;
|
|
9
|
-
};
|
package/lib/services/jobs.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getServiceJobs = exports.Job = exports.Jobs = void 0;
|
|
4
|
-
const services_1 = require("@orion-js/services");
|
|
5
|
-
const dogs_1 = require("@orion-js/dogs");
|
|
6
|
-
function Jobs() {
|
|
7
|
-
return function (target) {
|
|
8
|
-
(0, services_1.Service)()(target);
|
|
9
|
-
target.prototype.service = target;
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
exports.Jobs = Jobs;
|
|
13
|
-
function Job(options) {
|
|
14
|
-
return function (target, propertyKey, descriptor) {
|
|
15
|
-
if (!descriptor.value)
|
|
16
|
-
throw new Error(`You must pass resolver function to ${propertyKey}`);
|
|
17
|
-
target.echoes = target.echoes || {};
|
|
18
|
-
target.echoes[propertyKey] = (0, dogs_1.defineJob)({
|
|
19
|
-
...options,
|
|
20
|
-
resolve: async (params, viewer) => {
|
|
21
|
-
const instance = (0, services_1.getInstance)(target.service);
|
|
22
|
-
return await instance[propertyKey](params, viewer);
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
exports.Job = Job;
|
|
28
|
-
function getServiceJobs(target) {
|
|
29
|
-
if (!target.prototype) {
|
|
30
|
-
throw new Error('You must pass a class to getServiceRoutes');
|
|
31
|
-
}
|
|
32
|
-
return target.prototype.echoes || {};
|
|
33
|
-
}
|
|
34
|
-
exports.getServiceJobs = getServiceJobs;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
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;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const jobs_1 = require("./jobs");
|
|
13
|
-
describe('Jobs (dogs) with service injections', () => {
|
|
14
|
-
it('Should define a jobs map using services', async () => {
|
|
15
|
-
let ExampleJobsService = class ExampleJobsService {
|
|
16
|
-
async job1() {
|
|
17
|
-
return {};
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
__decorate([
|
|
21
|
-
(0, jobs_1.Job)({ type: 'event' }),
|
|
22
|
-
__metadata("design:type", Function),
|
|
23
|
-
__metadata("design:paramtypes", []),
|
|
24
|
-
__metadata("design:returntype", Promise)
|
|
25
|
-
], ExampleJobsService.prototype, "job1", null);
|
|
26
|
-
ExampleJobsService = __decorate([
|
|
27
|
-
(0, jobs_1.Jobs)()
|
|
28
|
-
], ExampleJobsService);
|
|
29
|
-
const jobs = (0, jobs_1.getServiceJobs)(ExampleJobsService);
|
|
30
|
-
expect(jobs).toMatchObject({
|
|
31
|
-
job1: {
|
|
32
|
-
type: 'event',
|
|
33
|
-
resolve: expect.any(Function)
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
});
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { GlobalResolverResolve, ResolverOptions, ModelResolverResolve, Resolver, ModelResolver } from '@orion-js/resolvers';
|
|
2
|
-
export interface GlobalResolverPropertyDescriptor extends Omit<PropertyDecorator, 'value'> {
|
|
3
|
-
value?: GlobalResolverResolve;
|
|
4
|
-
}
|
|
5
|
-
export declare function Query(options: Omit<ResolverOptions<any>, 'resolve' | 'mutation'>): (target: any, propertyKey: string, descriptor: GlobalResolverPropertyDescriptor) => void;
|
|
6
|
-
export declare function Mutation(options: Omit<ResolverOptions<any>, 'resolve' | 'mutation'>): (target: any, propertyKey: string, descriptor: GlobalResolverPropertyDescriptor) => void;
|
|
7
|
-
export declare function getServiceResolvers(target: any): {
|
|
8
|
-
[key: string]: Resolver<GlobalResolverResolve>;
|
|
9
|
-
};
|
|
10
|
-
export interface ModelResolverPropertyDescriptor extends Omit<PropertyDecorator, 'value'> {
|
|
11
|
-
value?: ModelResolverResolve;
|
|
12
|
-
}
|
|
13
|
-
export declare function ModelResolver(options: Omit<ResolverOptions<any>, 'resolve'>): (target: any, propertyKey: string, descriptor: ModelResolverPropertyDescriptor) => void;
|
|
14
|
-
export declare function getServiceModelResolvers(target: any): {
|
|
15
|
-
[key: string]: ModelResolver<GlobalResolverResolve>;
|
|
16
|
-
};
|
|
17
|
-
export declare function Resolvers(): ClassDecorator;
|
|
18
|
-
export declare function Model(typedModel: any): ClassDecorator;
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Model = exports.Resolvers = exports.getServiceModelResolvers = exports.ModelResolver = exports.getServiceResolvers = exports.Mutation = exports.Query = void 0;
|
|
4
|
-
const services_1 = require("@orion-js/services");
|
|
5
|
-
const resolvers_1 = require("@orion-js/resolvers");
|
|
6
|
-
const helpers_1 = require("@orion-js/helpers");
|
|
7
|
-
function Query(options) {
|
|
8
|
-
return function (target, propertyKey, descriptor) {
|
|
9
|
-
if (!descriptor.value)
|
|
10
|
-
throw new Error(`You must pass resolver function to ${propertyKey}`);
|
|
11
|
-
target.resolvers = target.resolvers || {};
|
|
12
|
-
target.resolvers[propertyKey] = (0, resolvers_1.resolver)({
|
|
13
|
-
...options,
|
|
14
|
-
resolve: async (params, viewer) => {
|
|
15
|
-
const instance = (0, services_1.getInstance)(target.service);
|
|
16
|
-
return await instance[propertyKey](params, viewer);
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
exports.Query = Query;
|
|
22
|
-
function Mutation(options) {
|
|
23
|
-
return function (target, propertyKey, descriptor) {
|
|
24
|
-
if (!descriptor.value)
|
|
25
|
-
throw new Error(`You must pass resolver function to ${propertyKey}`);
|
|
26
|
-
target.resolvers = target.resolvers || {};
|
|
27
|
-
target.resolvers[propertyKey] = (0, resolvers_1.resolver)({
|
|
28
|
-
...options,
|
|
29
|
-
mutation: true,
|
|
30
|
-
resolve: async (params, viewer) => {
|
|
31
|
-
const instance = (0, services_1.getInstance)(target.service);
|
|
32
|
-
return await instance[propertyKey](params, viewer);
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
exports.Mutation = Mutation;
|
|
38
|
-
function getServiceResolvers(target) {
|
|
39
|
-
if (!target.prototype) {
|
|
40
|
-
throw new helpers_1.UserError('You must pass a class to getResolvers');
|
|
41
|
-
}
|
|
42
|
-
return target.prototype.resolvers || {};
|
|
43
|
-
}
|
|
44
|
-
exports.getServiceResolvers = getServiceResolvers;
|
|
45
|
-
function ModelResolver(options) {
|
|
46
|
-
return function (target, propertyKey, descriptor) {
|
|
47
|
-
if (!descriptor.value)
|
|
48
|
-
throw new Error(`You must pass resolver function to ${propertyKey}`);
|
|
49
|
-
target.resolvers = target.resolvers || {};
|
|
50
|
-
target.resolvers[propertyKey] = (0, resolvers_1.modelResolver)({
|
|
51
|
-
...options,
|
|
52
|
-
resolve: async (item, params, viewer) => {
|
|
53
|
-
const instance = (0, services_1.getInstance)(target.service);
|
|
54
|
-
return await instance[propertyKey](item, params, viewer);
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
exports.ModelResolver = ModelResolver;
|
|
60
|
-
function getServiceModelResolvers(target) {
|
|
61
|
-
if (!target.prototype) {
|
|
62
|
-
throw new helpers_1.UserError('You must pass a class to getResolvers');
|
|
63
|
-
}
|
|
64
|
-
return target.prototype.resolvers || {};
|
|
65
|
-
}
|
|
66
|
-
exports.getServiceModelResolvers = getServiceModelResolvers;
|
|
67
|
-
function Resolvers() {
|
|
68
|
-
return function (target) {
|
|
69
|
-
(0, services_1.Service)()(target);
|
|
70
|
-
target.prototype.service = target;
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
exports.Resolvers = Resolvers;
|
|
74
|
-
function Model(typedModel) {
|
|
75
|
-
return function (target) {
|
|
76
|
-
(0, services_1.Service)()(target);
|
|
77
|
-
target.prototype.typedModel = typedModel;
|
|
78
|
-
target.prototype.service = target;
|
|
79
|
-
// @ts-expect-error this is a trick to make it work in resolvers without having to call getModelForClass
|
|
80
|
-
target.getModel = () => getModelForClass(target);
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
exports.Model = Model;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import 'reflect-metadata';
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
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;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
require("reflect-metadata");
|
|
13
|
-
const services_1 = require("@orion-js/services");
|
|
14
|
-
const __1 = require("..");
|
|
15
|
-
const factories_1 = require("../factories");
|
|
16
|
-
const resolvers_1 = require("./resolvers");
|
|
17
|
-
describe('Resolvers with service injection', () => {
|
|
18
|
-
it('should allow to pass a service as resolve', async () => {
|
|
19
|
-
let ExampleRepo = class ExampleRepo {
|
|
20
|
-
getLastName() {
|
|
21
|
-
return 'Lopez';
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
ExampleRepo = __decorate([
|
|
25
|
-
(0, services_1.Service)()
|
|
26
|
-
], ExampleRepo);
|
|
27
|
-
let ExampleResolverService = class ExampleResolverService {
|
|
28
|
-
async sayHi(params) {
|
|
29
|
-
return this.addAge(`My name is ${params.name} ${this.repo.getLastName()}`);
|
|
30
|
-
}
|
|
31
|
-
async setName() {
|
|
32
|
-
this.repo.getLastName();
|
|
33
|
-
}
|
|
34
|
-
async addAge(params) {
|
|
35
|
-
return `${params} and I'm 100 years old`;
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
__decorate([
|
|
39
|
-
(0, services_1.Inject)(),
|
|
40
|
-
__metadata("design:type", ExampleRepo)
|
|
41
|
-
], ExampleResolverService.prototype, "repo", void 0);
|
|
42
|
-
__decorate([
|
|
43
|
-
(0, resolvers_1.Query)({
|
|
44
|
-
params: { name: { type: 'string' } },
|
|
45
|
-
returns: String
|
|
46
|
-
}),
|
|
47
|
-
__metadata("design:type", Function),
|
|
48
|
-
__metadata("design:paramtypes", [Object]),
|
|
49
|
-
__metadata("design:returntype", Promise)
|
|
50
|
-
], ExampleResolverService.prototype, "sayHi", null);
|
|
51
|
-
__decorate([
|
|
52
|
-
(0, resolvers_1.Mutation)({ returns: String }),
|
|
53
|
-
__metadata("design:type", Function),
|
|
54
|
-
__metadata("design:paramtypes", []),
|
|
55
|
-
__metadata("design:returntype", Promise)
|
|
56
|
-
], ExampleResolverService.prototype, "setName", null);
|
|
57
|
-
ExampleResolverService = __decorate([
|
|
58
|
-
(0, resolvers_1.Resolvers)()
|
|
59
|
-
], ExampleResolverService);
|
|
60
|
-
const resolvers = (0, resolvers_1.getServiceResolvers)(ExampleResolverService);
|
|
61
|
-
expect(resolvers.sayHi).toBeDefined();
|
|
62
|
-
const result = await resolvers.sayHi.execute({ params: { name: 'Orion' } });
|
|
63
|
-
expect(result).toBe(`My name is Orion Lopez and I'm 100 years old`);
|
|
64
|
-
});
|
|
65
|
-
it('show allow to pass a service with resolvers to typed model', async () => {
|
|
66
|
-
let AgeRepo = class AgeRepo {
|
|
67
|
-
getAge(name) {
|
|
68
|
-
return `${name} is 100 years old`;
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
AgeRepo = __decorate([
|
|
72
|
-
(0, services_1.Service)()
|
|
73
|
-
], AgeRepo);
|
|
74
|
-
let PersonSchema = class PersonSchema {
|
|
75
|
-
};
|
|
76
|
-
__decorate([
|
|
77
|
-
(0, __1.Prop)(),
|
|
78
|
-
__metadata("design:type", String)
|
|
79
|
-
], PersonSchema.prototype, "name", void 0);
|
|
80
|
-
PersonSchema = __decorate([
|
|
81
|
-
(0, __1.TypedSchema)()
|
|
82
|
-
], PersonSchema);
|
|
83
|
-
let PersonModel = class PersonModel {
|
|
84
|
-
async getAge(person) {
|
|
85
|
-
const result = this.repo.getAge(person.name);
|
|
86
|
-
return result;
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
__decorate([
|
|
90
|
-
(0, services_1.Inject)(),
|
|
91
|
-
__metadata("design:type", AgeRepo)
|
|
92
|
-
], PersonModel.prototype, "repo", void 0);
|
|
93
|
-
__decorate([
|
|
94
|
-
(0, resolvers_1.ModelResolver)({ returns: String }),
|
|
95
|
-
__metadata("design:type", Function),
|
|
96
|
-
__metadata("design:paramtypes", [PersonSchema]),
|
|
97
|
-
__metadata("design:returntype", Promise)
|
|
98
|
-
], PersonModel.prototype, "getAge", null);
|
|
99
|
-
PersonModel = __decorate([
|
|
100
|
-
(0, resolvers_1.Model)(PersonSchema)
|
|
101
|
-
], PersonModel);
|
|
102
|
-
const model = (0, factories_1.getModelForClass)(PersonModel);
|
|
103
|
-
const item = model.initItem({ name: 'Orion' });
|
|
104
|
-
expect(await item.getAge()).toBe(`Orion is 100 years old`);
|
|
105
|
-
});
|
|
106
|
-
});
|