@orion-js/graphql 3.12.0 → 3.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/jest.config.js +8 -0
- package/lib/buildSchema/getArgs/getField.d.ts +1 -0
- package/lib/buildSchema/getArgs/getField.js +49 -0
- package/lib/buildSchema/getArgs/index.d.ts +1 -0
- package/lib/buildSchema/getArgs/index.js +24 -0
- package/lib/buildSchema/getMutation.d.ts +3 -0
- package/lib/buildSchema/getMutation.js +18 -0
- package/lib/buildSchema/getQuery.d.ts +3 -0
- package/lib/buildSchema/getQuery.js +18 -0
- package/lib/buildSchema/getResolvers/index.d.ts +3 -0
- package/lib/buildSchema/getResolvers/index.js +43 -0
- package/lib/buildSchema/getResolvers/index.test.d.ts +1 -0
- package/lib/buildSchema/getResolvers/index.test.js +65 -0
- package/lib/buildSchema/getResolvers/resolversStore.d.ts +3 -0
- package/lib/buildSchema/getResolvers/resolversStore.js +5 -0
- package/lib/buildSchema/getSubscription.d.ts +3 -0
- package/lib/buildSchema/getSubscription.js +17 -0
- package/lib/buildSchema/getSubscriptions/index.d.ts +2 -0
- package/lib/buildSchema/getSubscriptions/index.js +26 -0
- package/lib/buildSchema/getSubscriptions/index.test.d.ts +1 -0
- package/lib/buildSchema/getSubscriptions/index.test.js +52 -0
- package/lib/buildSchema/getType/BigIntScalar.d.ts +3 -0
- package/lib/buildSchema/getType/BigIntScalar.js +35 -0
- package/lib/buildSchema/getType/DateScalar.d.ts +3 -0
- package/lib/buildSchema/getType/DateScalar.js +10 -0
- package/lib/buildSchema/getType/JSONScalar.d.ts +3 -0
- package/lib/buildSchema/getType/JSONScalar.js +42 -0
- package/lib/buildSchema/getType/enum.test.d.ts +1 -0
- package/lib/buildSchema/getType/enum.test.js +80 -0
- package/lib/buildSchema/getType/getScalar.d.ts +1 -0
- package/lib/buildSchema/getType/getScalar.js +58 -0
- package/lib/buildSchema/getType/getTypeAsResolver.d.ts +10 -0
- package/lib/buildSchema/getType/getTypeAsResolver.js +26 -0
- package/lib/buildSchema/getType/index.d.ts +2 -0
- package/lib/buildSchema/getType/index.js +86 -0
- package/lib/buildSchema/index.d.ts +3 -0
- package/lib/buildSchema/index.js +17 -0
- package/lib/cleanResolvers.d.ts +1 -0
- package/lib/cleanResolvers.js +8 -0
- package/lib/errorHandler.d.ts +1 -0
- package/lib/errorHandler.js +42 -0
- package/lib/getApolloOptions/formatError.d.ts +1 -0
- package/lib/getApolloOptions/formatError.js +14 -0
- package/lib/getApolloOptions/index.d.ts +3 -0
- package/lib/getApolloOptions/index.js +26 -0
- package/lib/index.d.ts +12 -0
- package/lib/index.js +51 -0
- package/lib/pubsub.d.ts +3 -0
- package/lib/pubsub.js +12 -0
- package/lib/resolversSchemas/ResolverParamsInfo.d.ts +9 -0
- package/lib/resolversSchemas/ResolverParamsInfo.js +47 -0
- package/lib/resolversSchemas/getBasicResultQuery.d.ts +1 -0
- package/lib/resolversSchemas/getBasicResultQuery.js +24 -0
- package/lib/resolversSchemas/getDynamicFields.d.ts +2 -0
- package/lib/resolversSchemas/getDynamicFields.js +19 -0
- package/lib/resolversSchemas/getField.d.ts +1 -0
- package/lib/resolversSchemas/getField.js +50 -0
- package/lib/resolversSchemas/getField.test.d.ts +1 -0
- package/lib/resolversSchemas/getField.test.js +56 -0
- package/lib/resolversSchemas/getModelLoadedResolvers.d.ts +3 -0
- package/lib/resolversSchemas/getModelLoadedResolvers.js +21 -0
- package/lib/resolversSchemas/getStaticFields.d.ts +3 -0
- package/lib/resolversSchemas/getStaticFields.js +20 -0
- package/lib/resolversSchemas/index.d.ts +7 -0
- package/lib/resolversSchemas/index.js +9 -0
- package/lib/resolversSchemas/params.d.ts +5 -0
- package/lib/resolversSchemas/params.js +31 -0
- package/lib/resolversSchemas/params.test.d.ts +1 -0
- package/lib/resolversSchemas/params.test.js +131 -0
- package/lib/resolversSchemas/serializeSchema.d.ts +2 -0
- package/lib/resolversSchemas/serializeSchema.js +22 -0
- package/lib/resolversSchemas/serializeSchema.test.d.ts +1 -0
- package/lib/resolversSchemas/serializeSchema.test.js +56 -0
- package/lib/service/global.d.ts +10 -0
- package/lib/service/global.js +60 -0
- package/lib/service/index.d.ts +4 -0
- package/lib/service/index.js +20 -0
- package/lib/service/index.test.d.ts +1 -0
- package/lib/service/index.test.js +63 -0
- package/lib/service/middlewares.test.d.ts +1 -0
- package/lib/service/middlewares.test.js +125 -0
- package/lib/service/model.d.ts +14 -0
- package/lib/service/model.js +48 -0
- package/lib/service/model.test.d.ts +1 -0
- package/lib/service/model.test.js +126 -0
- package/lib/service/otherParams.d.ts +7 -0
- package/lib/service/otherParams.js +28 -0
- package/lib/service/subscription.d.ts +6 -0
- package/lib/service/subscription.js +43 -0
- package/lib/service/subscription.test.d.ts +1 -0
- package/lib/service/subscription.test.js +55 -0
- package/lib/startGraphQL.d.ts +2 -0
- package/lib/startGraphQL.js +43 -0
- package/lib/startGraphQL.test.d.ts +1 -0
- package/lib/startGraphQL.test.js +414 -0
- package/lib/startGraphiQL.d.ts +3 -0
- package/lib/startGraphiQL.js +207 -0
- package/lib/startWebsocket.d.ts +11 -0
- package/lib/startWebsocket.js +48 -0
- package/lib/startWebsocket.test.d.ts +1 -0
- package/lib/startWebsocket.test.js +303 -0
- package/lib/subscription/getChannelName.d.ts +1 -0
- package/lib/subscription/getChannelName.js +9 -0
- package/lib/subscription/getChannelName.test.d.ts +1 -0
- package/lib/subscription/getChannelName.test.js +26 -0
- package/lib/subscription/index.d.ts +3 -0
- package/lib/subscription/index.js +34 -0
- package/lib/types/index.d.ts +3 -0
- package/lib/types/index.js +19 -0
- package/lib/types/startGraphQL.d.ts +41 -0
- package/lib/types/startGraphQL.js +2 -0
- package/lib/types/subscription.d.ts +15 -0
- package/lib/types/subscription.js +2 -0
- package/lib/websockerViewer.d.ts +2 -0
- package/lib/websockerViewer.js +20 -0
- package/package.json +22 -31
- package/tsconfig.json +20 -0
- package/dist/index.cjs +0 -107852
- package/dist/index.d.ts +0 -116
- package/dist/index.js +0 -107825
|
@@ -0,0 +1,126 @@
|
|
|
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
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
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;
|
|
@@ -0,0 +1,28 @@
|
|
|
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');
|
|
@@ -0,0 +1,6 @@
|
|
|
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
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
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;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
@@ -0,0 +1,55 @@
|
|
|
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
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
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;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|