@orion-js/graphql 3.11.15 → 4.0.0-alpha.2
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 +107839 -0
- package/dist/index.d.ts +570 -0
- package/dist/index.js +107812 -0
- package/package.json +30 -21
- package/LICENSE +0 -21
- package/jest.config.js +0 -8
- package/lib/buildSchema/getArgs/getField.d.ts +0 -1
- package/lib/buildSchema/getArgs/getField.js +0 -49
- package/lib/buildSchema/getArgs/index.d.ts +0 -1
- package/lib/buildSchema/getArgs/index.js +0 -24
- package/lib/buildSchema/getMutation.d.ts +0 -3
- package/lib/buildSchema/getMutation.js +0 -18
- package/lib/buildSchema/getQuery.d.ts +0 -3
- package/lib/buildSchema/getQuery.js +0 -18
- package/lib/buildSchema/getResolvers/index.d.ts +0 -3
- package/lib/buildSchema/getResolvers/index.js +0 -43
- package/lib/buildSchema/getResolvers/index.test.d.ts +0 -1
- package/lib/buildSchema/getResolvers/index.test.js +0 -65
- package/lib/buildSchema/getResolvers/resolversStore.d.ts +0 -3
- package/lib/buildSchema/getResolvers/resolversStore.js +0 -5
- package/lib/buildSchema/getSubscription.d.ts +0 -3
- package/lib/buildSchema/getSubscription.js +0 -17
- package/lib/buildSchema/getSubscriptions/index.d.ts +0 -2
- package/lib/buildSchema/getSubscriptions/index.js +0 -26
- package/lib/buildSchema/getSubscriptions/index.test.d.ts +0 -1
- package/lib/buildSchema/getSubscriptions/index.test.js +0 -52
- package/lib/buildSchema/getType/BigIntScalar.d.ts +0 -3
- package/lib/buildSchema/getType/BigIntScalar.js +0 -35
- package/lib/buildSchema/getType/DateScalar.d.ts +0 -3
- package/lib/buildSchema/getType/DateScalar.js +0 -10
- package/lib/buildSchema/getType/JSONScalar.d.ts +0 -3
- package/lib/buildSchema/getType/JSONScalar.js +0 -42
- package/lib/buildSchema/getType/enum.test.d.ts +0 -1
- package/lib/buildSchema/getType/enum.test.js +0 -80
- package/lib/buildSchema/getType/getScalar.d.ts +0 -1
- package/lib/buildSchema/getType/getScalar.js +0 -58
- package/lib/buildSchema/getType/getTypeAsResolver.d.ts +0 -10
- package/lib/buildSchema/getType/getTypeAsResolver.js +0 -26
- package/lib/buildSchema/getType/index.d.ts +0 -2
- package/lib/buildSchema/getType/index.js +0 -86
- package/lib/buildSchema/index.d.ts +0 -3
- package/lib/buildSchema/index.js +0 -17
- package/lib/cleanResolvers.d.ts +0 -1
- package/lib/cleanResolvers.js +0 -8
- package/lib/errorHandler.d.ts +0 -1
- package/lib/errorHandler.js +0 -42
- package/lib/getApolloOptions/formatError.d.ts +0 -1
- package/lib/getApolloOptions/formatError.js +0 -14
- package/lib/getApolloOptions/index.d.ts +0 -3
- package/lib/getApolloOptions/index.js +0 -26
- package/lib/index.d.ts +0 -12
- package/lib/index.js +0 -51
- package/lib/pubsub.d.ts +0 -3
- package/lib/pubsub.js +0 -12
- package/lib/resolversSchemas/ResolverParamsInfo.d.ts +0 -9
- package/lib/resolversSchemas/ResolverParamsInfo.js +0 -47
- package/lib/resolversSchemas/getBasicResultQuery.d.ts +0 -1
- package/lib/resolversSchemas/getBasicResultQuery.js +0 -24
- package/lib/resolversSchemas/getDynamicFields.d.ts +0 -2
- package/lib/resolversSchemas/getDynamicFields.js +0 -19
- package/lib/resolversSchemas/getField.d.ts +0 -1
- package/lib/resolversSchemas/getField.js +0 -50
- package/lib/resolversSchemas/getField.test.d.ts +0 -1
- package/lib/resolversSchemas/getField.test.js +0 -56
- package/lib/resolversSchemas/getModelLoadedResolvers.d.ts +0 -3
- package/lib/resolversSchemas/getModelLoadedResolvers.js +0 -21
- package/lib/resolversSchemas/getStaticFields.d.ts +0 -3
- package/lib/resolversSchemas/getStaticFields.js +0 -20
- package/lib/resolversSchemas/index.d.ts +0 -7
- package/lib/resolversSchemas/index.js +0 -9
- package/lib/resolversSchemas/params.d.ts +0 -5
- package/lib/resolversSchemas/params.js +0 -31
- package/lib/resolversSchemas/params.test.d.ts +0 -1
- package/lib/resolversSchemas/params.test.js +0 -131
- package/lib/resolversSchemas/serializeSchema.d.ts +0 -2
- package/lib/resolversSchemas/serializeSchema.js +0 -22
- package/lib/resolversSchemas/serializeSchema.test.d.ts +0 -1
- package/lib/resolversSchemas/serializeSchema.test.js +0 -56
- package/lib/service/global.d.ts +0 -10
- package/lib/service/global.js +0 -60
- package/lib/service/index.d.ts +0 -4
- package/lib/service/index.js +0 -20
- package/lib/service/index.test.d.ts +0 -1
- package/lib/service/index.test.js +0 -63
- package/lib/service/middlewares.test.d.ts +0 -1
- package/lib/service/middlewares.test.js +0 -125
- package/lib/service/model.d.ts +0 -14
- package/lib/service/model.js +0 -48
- package/lib/service/model.test.d.ts +0 -1
- package/lib/service/model.test.js +0 -126
- package/lib/service/otherParams.d.ts +0 -7
- package/lib/service/otherParams.js +0 -28
- package/lib/service/subscription.d.ts +0 -6
- package/lib/service/subscription.js +0 -43
- package/lib/service/subscription.test.d.ts +0 -1
- package/lib/service/subscription.test.js +0 -55
- package/lib/startGraphQL.d.ts +0 -2
- package/lib/startGraphQL.js +0 -43
- package/lib/startGraphQL.test.d.ts +0 -1
- package/lib/startGraphQL.test.js +0 -414
- package/lib/startGraphiQL.d.ts +0 -3
- package/lib/startGraphiQL.js +0 -207
- package/lib/startWebsocket.d.ts +0 -11
- package/lib/startWebsocket.js +0 -48
- package/lib/startWebsocket.test.d.ts +0 -1
- package/lib/startWebsocket.test.js +0 -303
- package/lib/subscription/getChannelName.d.ts +0 -1
- package/lib/subscription/getChannelName.js +0 -9
- package/lib/subscription/getChannelName.test.d.ts +0 -1
- package/lib/subscription/getChannelName.test.js +0 -26
- package/lib/subscription/index.d.ts +0 -3
- package/lib/subscription/index.js +0 -34
- package/lib/types/index.d.ts +0 -3
- package/lib/types/index.js +0 -19
- package/lib/types/startGraphQL.d.ts +0 -41
- package/lib/types/startGraphQL.js +0 -2
- package/lib/types/subscription.d.ts +0 -15
- package/lib/types/subscription.js +0 -2
- package/lib/websockerViewer.d.ts +0 -2
- package/lib/websockerViewer.js +0 -20
- package/tsconfig.json +0 -20
- package/yarn-error.log +0 -3949
|
@@ -1,125 +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 index_1 = require("./index");
|
|
15
|
-
const otherParams_1 = require("./otherParams");
|
|
16
|
-
const resolvers_1 = require("@orion-js/resolvers");
|
|
17
|
-
const typed_model_1 = require("@orion-js/typed-model");
|
|
18
|
-
describe('Resolvers with service injection and middlewares', () => {
|
|
19
|
-
it('should allow to pass resolver middlewares with decorators', async () => {
|
|
20
|
-
expect.assertions(3);
|
|
21
|
-
let ExampleRepo = class ExampleRepo {
|
|
22
|
-
getLastName() {
|
|
23
|
-
return 'Lopez';
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
ExampleRepo = __decorate([
|
|
27
|
-
(0, services_1.Service)()
|
|
28
|
-
], ExampleRepo);
|
|
29
|
-
const exampleMiddleware = (0, resolvers_1.createResolverMiddleware)(async (executeOptions, next) => {
|
|
30
|
-
const result = await next();
|
|
31
|
-
expect(result).toBe('intercepted2');
|
|
32
|
-
return 'intercepted';
|
|
33
|
-
});
|
|
34
|
-
const CheckRoles = (rolesToCheck) => {
|
|
35
|
-
return (0, otherParams_1.UseMiddleware)(async (executeOptions, next) => {
|
|
36
|
-
// check roles here
|
|
37
|
-
await next();
|
|
38
|
-
return 'intercepted2';
|
|
39
|
-
});
|
|
40
|
-
};
|
|
41
|
-
let ExampleResolverService = class ExampleResolverService {
|
|
42
|
-
async sayHi(params) {
|
|
43
|
-
return 'text';
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
__decorate([
|
|
47
|
-
(0, index_1.Query)(),
|
|
48
|
-
(0, otherParams_1.ResolverParams)({ name: { type: 'string' } }),
|
|
49
|
-
(0, otherParams_1.ResolverReturns)(String),
|
|
50
|
-
(0, otherParams_1.UseMiddleware)(exampleMiddleware),
|
|
51
|
-
CheckRoles(['admin']),
|
|
52
|
-
__metadata("design:type", Function),
|
|
53
|
-
__metadata("design:paramtypes", [Object]),
|
|
54
|
-
__metadata("design:returntype", Promise)
|
|
55
|
-
], ExampleResolverService.prototype, "sayHi", null);
|
|
56
|
-
ExampleResolverService = __decorate([
|
|
57
|
-
(0, index_1.Resolvers)()
|
|
58
|
-
], ExampleResolverService);
|
|
59
|
-
const resolvers = (0, index_1.getServiceResolvers)(ExampleResolverService);
|
|
60
|
-
expect(resolvers.sayHi).toBeDefined();
|
|
61
|
-
const result = await resolvers.sayHi.execute({ params: { name: 'Orion' } });
|
|
62
|
-
expect(result).toBe(`intercepted`);
|
|
63
|
-
});
|
|
64
|
-
it('show also work with model resolvers', async () => {
|
|
65
|
-
let Person = class Person {
|
|
66
|
-
};
|
|
67
|
-
__decorate([
|
|
68
|
-
(0, typed_model_1.Prop)(),
|
|
69
|
-
__metadata("design:type", String)
|
|
70
|
-
], Person.prototype, "name", void 0);
|
|
71
|
-
Person = __decorate([
|
|
72
|
-
(0, typed_model_1.TypedSchema)()
|
|
73
|
-
], Person);
|
|
74
|
-
const NiceToMeetYou = (0, otherParams_1.UseMiddleware)(async (executeOptions, next) => {
|
|
75
|
-
const result = await next();
|
|
76
|
-
return `${result}, nice to meet you`;
|
|
77
|
-
});
|
|
78
|
-
let PersonResolvers = class PersonResolvers {
|
|
79
|
-
async getAge(person) {
|
|
80
|
-
return `hello ${person.name}`;
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
__decorate([
|
|
84
|
-
(0, index_1.ModelResolver)(),
|
|
85
|
-
(0, otherParams_1.ResolverReturns)(String),
|
|
86
|
-
NiceToMeetYou,
|
|
87
|
-
__metadata("design:type", Function),
|
|
88
|
-
__metadata("design:paramtypes", [Person]),
|
|
89
|
-
__metadata("design:returntype", Promise)
|
|
90
|
-
], PersonResolvers.prototype, "getAge", null);
|
|
91
|
-
PersonResolvers = __decorate([
|
|
92
|
-
(0, index_1.ModelResolvers)(Person)
|
|
93
|
-
], PersonResolvers);
|
|
94
|
-
const data = (0, index_1.getServiceModelResolvers)(PersonResolvers);
|
|
95
|
-
const item = { name: 'Orion' };
|
|
96
|
-
const result = await data.Person.getAge.execute({ parent: item });
|
|
97
|
-
expect(result).toBe(`hello Orion, nice to meet you`);
|
|
98
|
-
});
|
|
99
|
-
it('should pass the mutation name in the middleware', async () => {
|
|
100
|
-
let mutationName = '';
|
|
101
|
-
const exampleMiddleware = (0, resolvers_1.createResolverMiddleware)(async (executeOptions, next) => {
|
|
102
|
-
mutationName = executeOptions.options.resolverId;
|
|
103
|
-
await next();
|
|
104
|
-
});
|
|
105
|
-
let ExampleResolverService = class ExampleResolverService {
|
|
106
|
-
async sayHi(params) {
|
|
107
|
-
return 'text';
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
__decorate([
|
|
111
|
-
(0, index_1.Query)(),
|
|
112
|
-
(0, otherParams_1.ResolverReturns)(String),
|
|
113
|
-
(0, otherParams_1.UseMiddleware)(exampleMiddleware),
|
|
114
|
-
__metadata("design:type", Function),
|
|
115
|
-
__metadata("design:paramtypes", [Object]),
|
|
116
|
-
__metadata("design:returntype", Promise)
|
|
117
|
-
], ExampleResolverService.prototype, "sayHi", null);
|
|
118
|
-
ExampleResolverService = __decorate([
|
|
119
|
-
(0, index_1.Resolvers)()
|
|
120
|
-
], ExampleResolverService);
|
|
121
|
-
const resolvers = (0, index_1.getServiceResolvers)(ExampleResolverService);
|
|
122
|
-
await resolvers.sayHi.execute({ params: {} });
|
|
123
|
-
expect(mutationName).toBe('sayHi');
|
|
124
|
-
});
|
|
125
|
-
});
|
package/lib/service/model.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { GlobalResolverResolve, ResolverOptions, ModelResolverResolve, ModelResolver as ModelResolverType } from '@orion-js/resolvers';
|
|
2
|
-
export interface ModelResolverPropertyDescriptor extends Omit<PropertyDecorator, 'value'> {
|
|
3
|
-
value?: ModelResolverResolve;
|
|
4
|
-
}
|
|
5
|
-
export declare function ModelResolver(options?: Omit<ResolverOptions<any>, 'resolve' | 'middlewares'>): (target: any, propertyKey: string, descriptor: ModelResolverPropertyDescriptor) => void;
|
|
6
|
-
export interface ModelResolversOptions {
|
|
7
|
-
modelName?: string;
|
|
8
|
-
}
|
|
9
|
-
export declare function ModelResolvers(typedSchema: any, options?: ModelResolversOptions): ClassDecorator;
|
|
10
|
-
export declare function getServiceModelResolvers(target: any): {
|
|
11
|
-
[key: string]: {
|
|
12
|
-
[key: string]: ModelResolverType<GlobalResolverResolve>;
|
|
13
|
-
};
|
|
14
|
-
};
|
package/lib/service/model.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getServiceModelResolvers = exports.ModelResolvers = exports.ModelResolver = 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
|
-
const otherParams_1 = require("./otherParams");
|
|
8
|
-
function ModelResolver(options) {
|
|
9
|
-
return (target, propertyKey, descriptor) => {
|
|
10
|
-
if (!descriptor.value)
|
|
11
|
-
throw new Error(`You must pass resolver function to ${propertyKey}`);
|
|
12
|
-
target.resolvers = target.resolvers || {};
|
|
13
|
-
target.resolvers[propertyKey] = (0, resolvers_1.modelResolver)({
|
|
14
|
-
params: (0, otherParams_1.getTargetMetadata)(target, propertyKey, 'params'),
|
|
15
|
-
returns: (0, otherParams_1.getTargetMetadata)(target, propertyKey, 'returns'),
|
|
16
|
-
middlewares: (0, otherParams_1.getTargetMetadata)(target, propertyKey, 'middlewares'),
|
|
17
|
-
...options,
|
|
18
|
-
resolve: async (item, params, viewer, info) => {
|
|
19
|
-
const instance = (0, services_1.getInstance)(target.service);
|
|
20
|
-
return await instance[propertyKey](item, params, viewer, info);
|
|
21
|
-
},
|
|
22
|
-
});
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
exports.ModelResolver = ModelResolver;
|
|
26
|
-
function ModelResolvers(typedSchema, options = {}) {
|
|
27
|
-
return (target) => {
|
|
28
|
-
(0, services_1.Service)()(target);
|
|
29
|
-
target.prototype.modelName = options.modelName || typedSchema.name;
|
|
30
|
-
if (!target.prototype.modelName) {
|
|
31
|
-
throw new Error('The specified model has no name or is not a model');
|
|
32
|
-
}
|
|
33
|
-
target.prototype.typedSchema = typedSchema;
|
|
34
|
-
target.prototype.service = target;
|
|
35
|
-
// @ts-expect-error this is a trick to make it work in resolvers without having to call getModelForClass
|
|
36
|
-
target.getModel = () => getModelForClass(target);
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
exports.ModelResolvers = ModelResolvers;
|
|
40
|
-
function getServiceModelResolvers(target) {
|
|
41
|
-
if (!target.prototype) {
|
|
42
|
-
throw new helpers_1.UserError('You must pass a class to getResolvers');
|
|
43
|
-
}
|
|
44
|
-
return {
|
|
45
|
-
[target.prototype.modelName]: target.prototype.resolvers || {},
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
exports.getServiceModelResolvers = getServiceModelResolvers;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,126 +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
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
const services_1 = require("@orion-js/services");
|
|
16
|
-
const typed_model_1 = require("@orion-js/typed-model");
|
|
17
|
-
const model_1 = require("./model");
|
|
18
|
-
const http_1 = require("@orion-js/http");
|
|
19
|
-
const supertest_1 = __importDefault(require("supertest"));
|
|
20
|
-
const startGraphQL_1 = __importDefault(require("../startGraphQL"));
|
|
21
|
-
const cleanResolvers_1 = require("../cleanResolvers");
|
|
22
|
-
const global_1 = require("./global");
|
|
23
|
-
describe('Service with graphql models', () => {
|
|
24
|
-
beforeEach(() => {
|
|
25
|
-
(0, cleanResolvers_1.cleanResolvers)();
|
|
26
|
-
});
|
|
27
|
-
it('show allow to pass a service with resolvers to typed model', async () => {
|
|
28
|
-
let AgeRepo = class AgeRepo {
|
|
29
|
-
getAge(name) {
|
|
30
|
-
return `${name} is 100 years old`;
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
AgeRepo = __decorate([
|
|
34
|
-
(0, services_1.Service)()
|
|
35
|
-
], AgeRepo);
|
|
36
|
-
let Person = class Person {
|
|
37
|
-
};
|
|
38
|
-
__decorate([
|
|
39
|
-
(0, typed_model_1.Prop)(),
|
|
40
|
-
__metadata("design:type", String)
|
|
41
|
-
], Person.prototype, "name", void 0);
|
|
42
|
-
Person = __decorate([
|
|
43
|
-
(0, typed_model_1.TypedSchema)()
|
|
44
|
-
], Person);
|
|
45
|
-
let PersonResolvers = class PersonResolvers {
|
|
46
|
-
async getAge(person) {
|
|
47
|
-
const result = this.repo.getAge(person.name);
|
|
48
|
-
return result;
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
__decorate([
|
|
52
|
-
(0, services_1.Inject)(),
|
|
53
|
-
__metadata("design:type", AgeRepo)
|
|
54
|
-
], PersonResolvers.prototype, "repo", void 0);
|
|
55
|
-
__decorate([
|
|
56
|
-
(0, model_1.ModelResolver)({ returns: String }),
|
|
57
|
-
__metadata("design:type", Function),
|
|
58
|
-
__metadata("design:paramtypes", [Person]),
|
|
59
|
-
__metadata("design:returntype", Promise)
|
|
60
|
-
], PersonResolvers.prototype, "getAge", null);
|
|
61
|
-
PersonResolvers = __decorate([
|
|
62
|
-
(0, model_1.ModelResolvers)(Person)
|
|
63
|
-
], PersonResolvers);
|
|
64
|
-
const data = (0, model_1.getServiceModelResolvers)(PersonResolvers);
|
|
65
|
-
const item = { name: 'Orion' };
|
|
66
|
-
const result = await data.Person.getAge.execute({ parent: item });
|
|
67
|
-
expect(result).toBe(`Orion is 100 years old`);
|
|
68
|
-
});
|
|
69
|
-
it('should startGraphQL and make a request', async () => {
|
|
70
|
-
let Person = class Person {
|
|
71
|
-
};
|
|
72
|
-
__decorate([
|
|
73
|
-
(0, typed_model_1.Prop)(),
|
|
74
|
-
__metadata("design:type", String)
|
|
75
|
-
], Person.prototype, "name", void 0);
|
|
76
|
-
Person = __decorate([
|
|
77
|
-
(0, typed_model_1.TypedSchema)()
|
|
78
|
-
], Person);
|
|
79
|
-
let PersonResolvers = class PersonResolvers {
|
|
80
|
-
async sayHi(person) {
|
|
81
|
-
return `My name is ${person.name}`;
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
__decorate([
|
|
85
|
-
(0, model_1.ModelResolver)({ returns: String }),
|
|
86
|
-
__metadata("design:type", Function),
|
|
87
|
-
__metadata("design:paramtypes", [Person]),
|
|
88
|
-
__metadata("design:returntype", Promise)
|
|
89
|
-
], PersonResolvers.prototype, "sayHi", null);
|
|
90
|
-
PersonResolvers = __decorate([
|
|
91
|
-
(0, model_1.ModelResolvers)(Person)
|
|
92
|
-
], PersonResolvers);
|
|
93
|
-
let GlobalResolvers = class GlobalResolvers {
|
|
94
|
-
async person() {
|
|
95
|
-
return { name: 'Orion' };
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
__decorate([
|
|
99
|
-
(0, global_1.Query)({ returns: Person }),
|
|
100
|
-
__metadata("design:type", Function),
|
|
101
|
-
__metadata("design:paramtypes", []),
|
|
102
|
-
__metadata("design:returntype", Promise)
|
|
103
|
-
], GlobalResolvers.prototype, "person", null);
|
|
104
|
-
GlobalResolvers = __decorate([
|
|
105
|
-
(0, global_1.Resolvers)()
|
|
106
|
-
], GlobalResolvers);
|
|
107
|
-
const app = (0, http_1.express)();
|
|
108
|
-
await (0, startGraphQL_1.default)({
|
|
109
|
-
resolvers: (0, global_1.getServiceResolvers)(GlobalResolvers),
|
|
110
|
-
modelResolvers: (0, model_1.getServiceModelResolvers)(PersonResolvers),
|
|
111
|
-
app
|
|
112
|
-
});
|
|
113
|
-
const response = await (0, supertest_1.default)(app)
|
|
114
|
-
.post('/graphql')
|
|
115
|
-
.send({
|
|
116
|
-
operationName: 'testOperation',
|
|
117
|
-
query: `query testOperation {
|
|
118
|
-
person {
|
|
119
|
-
sayHi
|
|
120
|
-
}
|
|
121
|
-
}`
|
|
122
|
-
});
|
|
123
|
-
expect(response.statusCode).toBe(200);
|
|
124
|
-
expect(response.body.data).toEqual({ person: { sayHi: 'My name is Orion' } });
|
|
125
|
-
});
|
|
126
|
-
});
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { ResolverMiddleware } from '@orion-js/resolvers';
|
|
2
|
-
import { GlobalResolverPropertyDescriptor } from './global';
|
|
3
|
-
import { ModelResolverPropertyDescriptor } from './model';
|
|
4
|
-
export declare function getTargetMetadata(target: any, propertyKey: string, metadataKey: string): any;
|
|
5
|
-
export declare const UseMiddleware: (metadata: ResolverMiddleware) => (target: any, propertyKey: string, descriptor: GlobalResolverPropertyDescriptor | ModelResolverPropertyDescriptor) => void;
|
|
6
|
-
export declare const ResolverParams: (metadata: any) => (target: any, propertyKey: string, descriptor: GlobalResolverPropertyDescriptor | ModelResolverPropertyDescriptor) => void;
|
|
7
|
-
export declare const ResolverReturns: (metadata: any) => (target: any, propertyKey: string, descriptor: GlobalResolverPropertyDescriptor | ModelResolverPropertyDescriptor) => void;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ResolverReturns = exports.ResolverParams = exports.UseMiddleware = exports.getTargetMetadata = void 0;
|
|
4
|
-
function createRegisterResolverMetadata(metadataKey, isArray = false) {
|
|
5
|
-
return (metadata) => {
|
|
6
|
-
return (target, propertyKey, descriptor) => {
|
|
7
|
-
if (!descriptor.value)
|
|
8
|
-
throw new Error(`You must pass resolver function to ${propertyKey}`);
|
|
9
|
-
target[metadataKey] = target[metadataKey] || {};
|
|
10
|
-
if (isArray) {
|
|
11
|
-
target[metadataKey][propertyKey] = target[metadataKey][propertyKey] || [];
|
|
12
|
-
// push at the start of the array
|
|
13
|
-
target[metadataKey][propertyKey].unshift(metadata);
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
target[metadataKey][propertyKey] = metadata;
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
function getTargetMetadata(target, propertyKey, metadataKey) {
|
|
22
|
-
const items = target[metadataKey] || {};
|
|
23
|
-
return items[propertyKey] || [];
|
|
24
|
-
}
|
|
25
|
-
exports.getTargetMetadata = getTargetMetadata;
|
|
26
|
-
exports.UseMiddleware = createRegisterResolverMetadata('middlewares', true);
|
|
27
|
-
exports.ResolverParams = createRegisterResolverMetadata('params');
|
|
28
|
-
exports.ResolverReturns = createRegisterResolverMetadata('returns');
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { OrionSubscription, OrionSubscriptionOptions } from '../types/subscription';
|
|
2
|
-
export declare function Subscriptions(): ClassDecorator;
|
|
3
|
-
export declare function Subscription<T = any, ReturnType = any>(options: OrionSubscriptionOptions): (object: any, propertyName: string, index?: number) => void;
|
|
4
|
-
export declare function getServiceSubscriptions(target: any): {
|
|
5
|
-
[key: string]: OrionSubscription;
|
|
6
|
-
};
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getServiceSubscriptions = exports.Subscription = exports.Subscriptions = void 0;
|
|
4
|
-
const services_1 = require("@orion-js/services");
|
|
5
|
-
const helpers_1 = require("@orion-js/helpers");
|
|
6
|
-
const __1 = require("..");
|
|
7
|
-
function Subscriptions() {
|
|
8
|
-
return (target) => {
|
|
9
|
-
(0, services_1.Service)()(target);
|
|
10
|
-
target.prototype.service = target;
|
|
11
|
-
target.prototype.serviceType = 'subscriptions';
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
exports.Subscriptions = Subscriptions;
|
|
15
|
-
function Subscription(options) {
|
|
16
|
-
return (object, propertyName, index) => {
|
|
17
|
-
const sub = (0, __1.subscription)({
|
|
18
|
-
name: propertyName,
|
|
19
|
-
...options,
|
|
20
|
-
});
|
|
21
|
-
object.subscriptions = object.subscriptions || {};
|
|
22
|
-
object.subscriptions[propertyName] = sub;
|
|
23
|
-
services_1.Container.registerHandler({
|
|
24
|
-
object,
|
|
25
|
-
propertyName,
|
|
26
|
-
index,
|
|
27
|
-
value: _containerInstance => {
|
|
28
|
-
if (!object.serviceType || object.serviceType !== 'subscriptions') {
|
|
29
|
-
throw new Error('You must pass a class decorated with @Subscriptions if you want to use @Subscription');
|
|
30
|
-
}
|
|
31
|
-
return sub;
|
|
32
|
-
},
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
exports.Subscription = Subscription;
|
|
37
|
-
function getServiceSubscriptions(target) {
|
|
38
|
-
if (!target.prototype) {
|
|
39
|
-
throw new helpers_1.UserError('You must pass a class to getSubscriptions');
|
|
40
|
-
}
|
|
41
|
-
return target.prototype.subscriptions || {};
|
|
42
|
-
}
|
|
43
|
-
exports.getServiceSubscriptions = getServiceSubscriptions;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import 'reflect-metadata';
|
|
@@ -1,55 +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 index_1 = require("./index");
|
|
14
|
-
const services_1 = require("@orion-js/services");
|
|
15
|
-
const typed_model_1 = require("@orion-js/typed-model");
|
|
16
|
-
describe('Subscriptions classes', () => {
|
|
17
|
-
it('should get the subscriptions using services', async () => {
|
|
18
|
-
let Params = class Params {
|
|
19
|
-
};
|
|
20
|
-
__decorate([
|
|
21
|
-
(0, typed_model_1.Prop)(),
|
|
22
|
-
__metadata("design:type", String)
|
|
23
|
-
], Params.prototype, "name", void 0);
|
|
24
|
-
Params = __decorate([
|
|
25
|
-
(0, typed_model_1.TypedSchema)()
|
|
26
|
-
], Params);
|
|
27
|
-
let User = class User {
|
|
28
|
-
};
|
|
29
|
-
__decorate([
|
|
30
|
-
(0, typed_model_1.Prop)(),
|
|
31
|
-
__metadata("design:type", String)
|
|
32
|
-
], User.prototype, "name", void 0);
|
|
33
|
-
User = __decorate([
|
|
34
|
-
(0, typed_model_1.TypedSchema)()
|
|
35
|
-
], User);
|
|
36
|
-
let ExampleSubscriptionsService = class ExampleSubscriptionsService {
|
|
37
|
-
};
|
|
38
|
-
__decorate([
|
|
39
|
-
(0, index_1.Subscription)({
|
|
40
|
-
params: Params,
|
|
41
|
-
returns: User
|
|
42
|
-
}),
|
|
43
|
-
__metadata("design:type", Object)
|
|
44
|
-
], ExampleSubscriptionsService.prototype, "onUserCreated", void 0);
|
|
45
|
-
ExampleSubscriptionsService = __decorate([
|
|
46
|
-
(0, index_1.Subscriptions)()
|
|
47
|
-
], ExampleSubscriptionsService);
|
|
48
|
-
const subscriptions = (0, index_1.getServiceSubscriptions)(ExampleSubscriptionsService);
|
|
49
|
-
expect(subscriptions.onUserCreated).toBeDefined();
|
|
50
|
-
const instance = (0, services_1.getInstance)(ExampleSubscriptionsService);
|
|
51
|
-
expect(instance.onUserCreated.publish).toBeDefined();
|
|
52
|
-
expect(instance.onUserCreated.name).toBe('onUserCreated');
|
|
53
|
-
// await instance.onUserCreated.publish({name: 'test'}, {name: 'test'})
|
|
54
|
-
});
|
|
55
|
-
});
|
package/lib/startGraphQL.d.ts
DELETED
package/lib/startGraphQL.js
DELETED
|
@@ -1,43 +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 startGraphiQL_1 = __importDefault(require("./startGraphiQL"));
|
|
7
|
-
const getApolloOptions_1 = __importDefault(require("./getApolloOptions"));
|
|
8
|
-
const startWebsocket_1 = __importDefault(require("./startWebsocket"));
|
|
9
|
-
const http_1 = require("@orion-js/http");
|
|
10
|
-
const server_1 = require("@apollo/server");
|
|
11
|
-
const express4_1 = require("@apollo/server/express4");
|
|
12
|
-
const drainHttpServer_1 = require("@apollo/server/plugin/drainHttpServer");
|
|
13
|
-
async function default_1(options) {
|
|
14
|
-
const apolloOptions = await (0, getApolloOptions_1.default)(options);
|
|
15
|
-
const app = options.app || (0, http_1.getApp)();
|
|
16
|
-
const httpServer = (0, http_1.getServer)();
|
|
17
|
-
if (options.useGraphiql) {
|
|
18
|
-
(0, startGraphiQL_1.default)(apolloOptions, options);
|
|
19
|
-
}
|
|
20
|
-
const subPlugins = (0, startWebsocket_1.default)(apolloOptions, options);
|
|
21
|
-
const drainPlugins = httpServer ? [(0, drainHttpServer_1.ApolloServerPluginDrainHttpServer)({ httpServer })] : [];
|
|
22
|
-
const server = new server_1.ApolloServer({
|
|
23
|
-
...apolloOptions,
|
|
24
|
-
plugins: [...(apolloOptions.plugins || []), ...drainPlugins, ...subPlugins]
|
|
25
|
-
});
|
|
26
|
-
await server.start();
|
|
27
|
-
const middleware = (0, express4_1.expressMiddleware)(server, {
|
|
28
|
-
// @ts-expect-error
|
|
29
|
-
context: ({ req, res }) => req._viewer
|
|
30
|
-
});
|
|
31
|
-
(0, http_1.registerRoute)((0, http_1.route)({
|
|
32
|
-
app,
|
|
33
|
-
method: 'all',
|
|
34
|
-
path: '/graphql',
|
|
35
|
-
bodyParser: 'json',
|
|
36
|
-
async resolve(req, res, viewer) {
|
|
37
|
-
// @ts-expect-error
|
|
38
|
-
req._viewer = viewer;
|
|
39
|
-
return middleware(req, res, req.next);
|
|
40
|
-
}
|
|
41
|
-
}));
|
|
42
|
-
}
|
|
43
|
-
exports.default = default_1;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|