@restorecommerce/facade 1.1.3 → 1.1.5
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/CHANGELOG.md +37 -0
- package/codegen/index.js +2 -1
- package/dist/gql/protos/federation.js +2 -2
- package/dist/gql/protos/registry.js +2 -2
- package/dist/gql/protos/resolvers.d.ts +2 -2
- package/dist/gql/protos/resolvers.js +7 -6
- package/dist/gql/protos/schema.d.ts +1 -1
- package/dist/gql/protos/schema.js +4 -4
- package/dist/gql/protos/types.d.ts +3 -3
- package/dist/gql/protos/utils.d.ts +2 -0
- package/dist/gql/protos/utils.js +11 -1
- package/dist/index.d.ts +1 -3
- package/dist/index.js +19 -18
- package/dist/interfaces.d.ts +4 -5
- package/dist/modules/access-control/gql/federation.js +2 -2
- package/dist/modules/access-control/gql/schema.generated.d.ts +166 -161
- package/dist/modules/access-control/grpc/index.d.ts +8 -8
- package/dist/modules/access-control/grpc/index.js +4 -4
- package/dist/modules/access-control/interfaces.d.ts +1 -1
- package/dist/modules/catalog/gql/federation.js +2 -2
- package/dist/modules/catalog/gql/schema.generated.d.ts +575 -339
- package/dist/modules/catalog/gql/schema.generated.js +7 -1
- package/dist/modules/catalog/grpc/index.d.ts +10 -10
- package/dist/modules/catalog/grpc/index.js +5 -5
- package/dist/modules/catalog/interfaces.d.ts +1 -1
- package/dist/modules/facade-status/gql/index.js +2 -2
- package/dist/modules/facade-status/gql/schema.generated.d.ts +27 -27
- package/dist/modules/facade-status/interfaces.d.ts +1 -1
- package/dist/modules/fulfillment/gql/federation.js +2 -2
- package/dist/modules/fulfillment/gql/schema.generated.d.ts +561 -505
- package/dist/modules/fulfillment/gql/schema.generated.js +6 -6
- package/dist/modules/fulfillment/grpc/index.d.ts +4 -4
- package/dist/modules/fulfillment/grpc/index.js +2 -2
- package/dist/modules/fulfillment/interfaces.d.ts +1 -1
- package/dist/modules/identity/gql/schema.generated.d.ts +361 -213
- package/dist/modules/identity/grpc/index.d.ts +10 -10
- package/dist/modules/identity/grpc/index.js +5 -5
- package/dist/modules/identity/interfaces.d.ts +1 -1
- package/dist/modules/identity/oidc/adapter.d.ts +1 -1
- package/dist/modules/identity/oidc/index.d.ts +1 -1
- package/dist/modules/identity/oidc/index.js +1 -1
- package/dist/modules/identity/oidc/interfaces.d.ts +11 -10
- package/dist/modules/identity/oidc/router.d.ts +1 -1
- package/dist/modules/identity/oidc/router.js +2 -2
- package/dist/modules/identity/oidc/user.d.ts +1 -1
- package/dist/modules/indexing/gql/federation.js +2 -2
- package/dist/modules/indexing/gql/schema.generated.d.ts +55 -50
- package/dist/modules/indexing/grpc/index.d.ts +2 -2
- package/dist/modules/indexing/grpc/index.js +1 -1
- package/dist/modules/indexing/interfaces.d.ts +1 -1
- package/dist/modules/invoicing/gql/federation.js +2 -2
- package/dist/modules/invoicing/gql/schema.generated.d.ts +148 -139
- package/dist/modules/invoicing/grpc/index.d.ts +2 -2
- package/dist/modules/invoicing/grpc/index.js +1 -1
- package/dist/modules/invoicing/interfaces.d.ts +1 -1
- package/dist/modules/notification/gql/federation.js +2 -2
- package/dist/modules/notification/gql/schema.generated.d.ts +100 -95
- package/dist/modules/notification/grpc/index.d.ts +2 -2
- package/dist/modules/notification/grpc/index.js +1 -1
- package/dist/modules/notification/interfaces.d.ts +1 -1
- package/dist/modules/ordering/gql/federation.js +2 -2
- package/dist/modules/ordering/gql/schema.generated.d.ts +686 -269
- package/dist/modules/ordering/gql/schema.generated.js +24 -12
- package/dist/modules/ordering/grpc/index.d.ts +2 -2
- package/dist/modules/ordering/grpc/index.js +1 -1
- package/dist/modules/ordering/interfaces.d.ts +1 -1
- package/dist/modules/ostorage/gql/federation.js +2 -2
- package/dist/modules/ostorage/gql/schema.generated.d.ts +135 -130
- package/dist/modules/ostorage/grpc/index.d.ts +2 -2
- package/dist/modules/ostorage/grpc/index.js +1 -1
- package/dist/modules/ostorage/interfaces.d.ts +1 -1
- package/dist/modules/payment/gql/federation.js +2 -2
- package/dist/modules/payment/gql/schema.generated.d.ts +65 -65
- package/dist/modules/payment/grpc/index.d.ts +2 -2
- package/dist/modules/payment/grpc/index.js +1 -1
- package/dist/modules/payment/interfaces.d.ts +1 -1
- package/dist/modules/resource/gql/federation.js +2 -2
- package/dist/modules/resource/gql/schema.generated.d.ts +331 -314
- package/dist/modules/resource/gql/schema.generated.js +6 -1
- package/dist/modules/resource/grpc/index.d.ts +23 -22
- package/dist/modules/resource/grpc/index.js +13 -11
- package/dist/modules/resource/interfaces.d.ts +1 -1
- package/dist/modules/scheduling/gql/federation.js +2 -2
- package/dist/modules/scheduling/gql/schema.generated.d.ts +105 -100
- package/dist/modules/scheduling/grpc/index.d.ts +2 -2
- package/dist/modules/scheduling/grpc/index.js +1 -1
- package/dist/modules/scheduling/interfaces.d.ts +1 -1
- package/dist/utils.d.ts +2 -2
- package/package.json +46 -45
package/CHANGELOG.md
CHANGED
@@ -3,6 +3,43 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
5
5
|
|
6
|
+
## [1.1.5](https://github.com/restorecommerce/libs/compare/@restorecommerce/facade@1.1.4...@restorecommerce/facade@1.1.5) (2023-05-22)
|
7
|
+
|
8
|
+
|
9
|
+
### Bug Fixes
|
10
|
+
|
11
|
+
* **acs-client:** fix test imports ([3a092ef](https://github.com/restorecommerce/libs/commit/3a092ef3e34b45df0c121c3fef3f8a51d99acb96))
|
12
|
+
* **facade:** build error for null field ([aa7f405](https://github.com/restorecommerce/libs/commit/aa7f405aa3940be8d75abd3e10c6f29a19688d09))
|
13
|
+
* **facade:** downgrade nanoid, import koa-body, match test to object ([d05cee1](https://github.com/restorecommerce/libs/commit/d05cee10c7d631d54b5466e6122fee769505a6da))
|
14
|
+
* **facade:** fixed sub service name space ([f3266e7](https://github.com/restorecommerce/libs/commit/f3266e7461c7bb2db0a7be05fb79ff132f062ec5))
|
15
|
+
* **facade:** regenerated schema for changes in protos ([0da0851](https://github.com/restorecommerce/libs/commit/0da08515e4e1d05482d5881cbfe55523fc7fa368))
|
16
|
+
* **facade:** renamed service in protos and removed service names options from proto files, fixed typing issues. ([25a24f0](https://github.com/restorecommerce/libs/commit/25a24f063e2499c06c171f1265297500816879f2))
|
17
|
+
* **facade:** restore facade code-gen to previous working version ([294a55f](https://github.com/restorecommerce/libs/commit/294a55f7135aa4b072fdecefbd33baed9efeb4ca))
|
18
|
+
* **facade:** unit test ([748ab00](https://github.com/restorecommerce/libs/commit/748ab00483fa1893aa50006795c654834a7ffb57))
|
19
|
+
* failed unit tests ([0f06228](https://github.com/restorecommerce/libs/commit/0f062288ad929303a9544a3d30357b666dec555c))
|
20
|
+
* **protos:** restore nested attribute as its referenced in obligation masked properties in ACS ([d6536f9](https://github.com/restorecommerce/libs/commit/d6536f96dfc30eb1905c899af519d50778e2edee))
|
21
|
+
* **rc-grpc-clients, facade:** WIP optional fields ([98f0977](https://github.com/restorecommerce/libs/commit/98f097730503bd0fa021bc886ba55d477dafb89f))
|
22
|
+
|
23
|
+
|
24
|
+
### Reverts
|
25
|
+
|
26
|
+
* Revert "chore: upgrade Apollo Server 4" ([90464f2](https://github.com/restorecommerce/libs/commit/90464f2ba77261406718a76d4a854ff7cbcfedf2))
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
## [1.1.4](https://github.com/restorecommerce/libs/compare/@restorecommerce/facade@1.1.3...@restorecommerce/facade@1.1.4) (2022-11-16)
|
33
|
+
|
34
|
+
|
35
|
+
### Bug Fixes
|
36
|
+
|
37
|
+
* command import ([fcbb6c1](https://github.com/restorecommerce/libs/commit/fcbb6c15b708fc63bf38d0dfa65946731cef3e79))
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
|
6
43
|
## [1.1.3](https://github.com/restorecommerce/libs/compare/@restorecommerce/facade@1.1.2...@restorecommerce/facade@1.1.3) (2022-10-26)
|
7
44
|
|
8
45
|
|
package/codegen/index.js
CHANGED
@@ -15,7 +15,8 @@ async function generateSchemaTypings({ schema, outputFile, typescript, typescrip
|
|
15
15
|
plugins: [
|
16
16
|
{
|
17
17
|
typescript: {
|
18
|
-
maybeValue: 'T | undefined',
|
18
|
+
maybeValue: 'T | null | undefined',
|
19
|
+
inputMaybeValue: 'T | null | undefined',
|
19
20
|
...(typescript !== null && typescript !== void 0 ? typescript : {})
|
20
21
|
},
|
21
22
|
},
|
@@ -2,7 +2,7 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.mergeSubscribeIntoSchema = exports.buildFederatedSubscriptionSchema = void 0;
|
4
4
|
const federation_1 = require("@apollo/federation");
|
5
|
-
const
|
5
|
+
const graphql_tag_1 = require("graphql-tag");
|
6
6
|
const index_1 = require("graphql/index");
|
7
7
|
const graphql_1 = require("graphql");
|
8
8
|
const definition_1 = require("graphql/type/definition");
|
@@ -12,7 +12,7 @@ const buildFederatedSubscriptionSchema = (subServices, config, namespace, schema
|
|
12
12
|
// TODO There is currently no way of building a federated schema from GraphQLSchema Object
|
13
13
|
// See https://github.com/apollographql/apollo-server/pull/4310
|
14
14
|
const federatedSchema = (0, federation_1.buildSubgraphSchema)({
|
15
|
-
typeDefs: (0,
|
15
|
+
typeDefs: (0, graphql_tag_1.default)((0, index_1.printSchema)(schema)),
|
16
16
|
resolvers
|
17
17
|
});
|
18
18
|
return {
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getTyping = exports.registerEnumTyping = exports.registerTyping = exports.recursiveEnumCheck = exports.getNameSpaceTypeName = exports.getRegisteredEnumTypings = exports.registerPackagesRecursive = exports.clearRegistry = exports.IGoogleProtobufAny = exports.scalarTypes = exports.registeredTypings = void 0;
|
4
4
|
const graphql_1 = require("graphql");
|
5
5
|
const definition_1 = require("graphql/type/definition");
|
6
|
-
const
|
6
|
+
const GraphQLUpload = require('graphql-upload/GraphQLUpload.js');
|
7
7
|
const utils_1 = require("./utils");
|
8
8
|
const types_1 = require("./types");
|
9
9
|
const ts_proto_descriptors_1 = require("ts-proto-descriptors");
|
@@ -349,7 +349,7 @@ const resolveMeta = (key, field, rootObjType, objName, input) => {
|
|
349
349
|
break;
|
350
350
|
case ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_BYTES:
|
351
351
|
if (input) {
|
352
|
-
result =
|
352
|
+
result = GraphQLUpload;
|
353
353
|
break;
|
354
354
|
}
|
355
355
|
// TODO Output Buffer
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { ProtoMetadata, ServiceClient, ServiceConfig, SubSpaceServiceConfig } from './types';
|
2
2
|
import { ServiceDescriptorProto } from 'ts-proto-descriptors';
|
3
3
|
import { GraphQLResolveInfo } from 'graphql';
|
4
|
-
export
|
5
|
-
export
|
4
|
+
export type ResolverFn<TResult, TParent, TContext, TArgs> = (parent: TParent, args: TArgs, context: TContext, info: GraphQLResolveInfo) => Promise<TResult> | TResult;
|
5
|
+
export type SubscribeResolverFn<TResult, TParent, TContext, TArgs> = (parent: TParent, args: TArgs, context: TContext, info: GraphQLResolveInfo) => AsyncGenerator<TResult>;
|
6
6
|
export declare const getGQLResolverFunctions: <T extends Record<string, any>, CTX extends ServiceClient<CTX, keyof CTX, T>, SRV = any, R = ResolverFn<any, any, ServiceClient<CTX, keyof CTX, T>, any>, B extends keyof T = any, NS extends keyof CTX = any>(service: ServiceDescriptorProto, key: NS, serviceKey: B, cfg: ServiceConfig) => { [key in keyof SRV]: R; };
|
7
7
|
export declare const registerResolverFunction: <T extends Record<string, any>, CTX extends ServiceClient<CTX, keyof CTX, T>>(namespace: string, name: string, func: ResolverFn<any, any, ServiceClient<CTX, keyof CTX, T>, any>, mutation?: boolean, subspace?: string | undefined, service?: ServiceDescriptorProto) => void;
|
8
8
|
export declare const generateResolver: (...namespaces: string[]) => any;
|
@@ -261,8 +261,9 @@ const generateSubServiceResolvers = (subServices, config, namespace) => {
|
|
261
261
|
subServices.forEach((meta) => {
|
262
262
|
var _a;
|
263
263
|
meta.fileDescriptor.service.forEach(service => {
|
264
|
-
if (
|
265
|
-
|
264
|
+
if (service.name) {
|
265
|
+
// strip Service from end of String for sub service name
|
266
|
+
const subName = (0, utils_1.getServiceName)(service.name);
|
266
267
|
const { mutations, queries } = (0, graphql_1.getWhitelistBlacklistConfig)(service, config, meta, subName);
|
267
268
|
const func = (0, exports.getGQLResolverFunctions)(service, namespace, subName || namespace, config);
|
268
269
|
Object.keys(func).forEach(k => {
|
@@ -354,11 +355,11 @@ const generateSubServiceResolvers = (subServices, config, namespace) => {
|
|
354
355
|
if (config.root) {
|
355
356
|
return (0, exports.generateResolver)(...(0, array_prototype_flat_1.default)(subServices.map(meta => {
|
356
357
|
return meta.fileDescriptor.service.map(service => {
|
357
|
-
if (
|
358
|
-
return
|
358
|
+
if (service.name) {
|
359
|
+
return (0, utils_1.getServiceName)(service.name);
|
359
360
|
}
|
360
|
-
return
|
361
|
-
}).filter(s => s !==
|
361
|
+
return '';
|
362
|
+
}).filter(s => s !== '');
|
362
363
|
})));
|
363
364
|
}
|
364
365
|
const finalResolver = (0, exports.generateResolver)(namespace);
|
@@ -4,7 +4,7 @@ import { GraphQLSchema, ThunkObjMap } from 'graphql';
|
|
4
4
|
import { GraphQLFieldConfig, GraphQLFieldConfigMap } from 'graphql/type/definition';
|
5
5
|
export declare const getGQLSchema: <TSource, TContext>(method: MethodDescriptorProto) => GraphQLFieldConfig<TSource, TContext, any>;
|
6
6
|
export declare const getGQLSchemas: <TSource, TContext>(service: ServiceDescriptorProto) => GraphQLFieldConfigMap<TSource, TContext>;
|
7
|
-
|
7
|
+
type SchemaBaseOrSub = ThunkObjMap<GraphQLFieldConfig<any, any>> | Map<string, ThunkObjMap<GraphQLFieldConfig<any, any>>>;
|
8
8
|
export declare const registerResolverSchema: (namespace: string, name: string, schema: SchemaBaseOrSub, mutation: boolean | undefined, subspace: string | undefined, config: ServiceConfig) => void;
|
9
9
|
export declare const generateSchema: (setup: {
|
10
10
|
prefix: string;
|
@@ -189,8 +189,8 @@ const generateSubServiceSchemas = (subServices, config, namespace, prefix) => {
|
|
189
189
|
subServices.forEach((meta) => {
|
190
190
|
var _a;
|
191
191
|
meta.fileDescriptor.service.forEach(service => {
|
192
|
-
if (
|
193
|
-
const subName =
|
192
|
+
if (service.name) {
|
193
|
+
const subName = (0, utils_1.getServiceName)(service.name);
|
194
194
|
const { mutations, queries } = (0, graphql_2.getWhitelistBlacklistConfig)(service, config, meta, subName);
|
195
195
|
const schemas = (0, exports.getGQLSchemas)(service);
|
196
196
|
Object.keys(schemas).forEach(key => {
|
@@ -218,8 +218,8 @@ const generateSubServiceSchemas = (subServices, config, namespace, prefix) => {
|
|
218
218
|
if (config.root) {
|
219
219
|
return (0, exports.generateSchema)((0, array_prototype_flat_1.default)(subServices.map(meta => {
|
220
220
|
return meta.fileDescriptor.service.map(service => {
|
221
|
-
if (
|
222
|
-
const subName =
|
221
|
+
if (service.name) {
|
222
|
+
const subName = (0, utils_1.getServiceName)(service.name);
|
223
223
|
return {
|
224
224
|
prefix: prefix + subName.substring(0, 1).toUpperCase() + subName.substring(1).toLowerCase(),
|
225
225
|
namespace: subName
|
@@ -12,7 +12,7 @@ export interface GraphQLResolverMap<TContext = {}> {
|
|
12
12
|
};
|
13
13
|
}
|
14
14
|
export declare const authSubjectType = ".io.restorecommerce.auth.Subject";
|
15
|
-
export
|
15
|
+
export type ProtoMetaMessageOptions = {
|
16
16
|
options?: {
|
17
17
|
[key: string]: any;
|
18
18
|
};
|
@@ -85,12 +85,12 @@ export interface ServiceConfig {
|
|
85
85
|
export interface SubSpaceServiceConfig extends ServiceConfig {
|
86
86
|
root: boolean;
|
87
87
|
}
|
88
|
-
export
|
88
|
+
export type ServiceClient<Context extends Pick<Context, Key>, Key extends keyof Context, T extends Record<string, any>> = {
|
89
89
|
[V in Key]: {
|
90
90
|
client: T;
|
91
91
|
};
|
92
92
|
};
|
93
|
-
export
|
93
|
+
export type FederatedSchemaWithResolvers = {
|
94
94
|
federatedSchema: GraphQLSchema;
|
95
95
|
resolvers: GraphQLResolverMap<any>;
|
96
96
|
};
|
@@ -10,6 +10,8 @@ export declare const decodeBufferFields: (items: any[], bufferFields: string[])
|
|
10
10
|
*/
|
11
11
|
export declare const convertEnumToInt: (inputTyping: TypingData, req: any) => any;
|
12
12
|
export declare const snakeToCamel: (s: string) => string;
|
13
|
+
export declare const camelToSnake: (serviceName: string) => string;
|
14
|
+
export declare const getServiceName: (serviceName: string) => string;
|
13
15
|
export declare const capitalize: (s: string) => string;
|
14
16
|
export declare function camelCase(s: string): string;
|
15
17
|
export declare let useSubscriptions: boolean;
|
package/dist/gql/protos/utils.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.setUseSubscriptions = exports.useSubscriptions = exports.camelCase = exports.capitalize = exports.snakeToCamel = exports.convertEnumToInt = exports.decodeBufferFields = exports.getKeys = exports.convertyCamelToSnakeCase = exports.capitalizeProtoName = void 0;
|
3
|
+
exports.setUseSubscriptions = exports.useSubscriptions = exports.camelCase = exports.capitalize = exports.getServiceName = exports.camelToSnake = exports.snakeToCamel = exports.convertEnumToInt = exports.decodeBufferFields = exports.getKeys = exports.convertyCamelToSnakeCase = exports.capitalizeProtoName = void 0;
|
4
4
|
const _ = require("lodash");
|
5
5
|
const registry_1 = require("./registry");
|
6
6
|
const capitalizeProtoName = (name) => {
|
@@ -126,6 +126,16 @@ const snakeToCamel = (s) => {
|
|
126
126
|
.join('');
|
127
127
|
};
|
128
128
|
exports.snakeToCamel = snakeToCamel;
|
129
|
+
const camelToSnake = (serviceName) => {
|
130
|
+
// convert camel case to snake case
|
131
|
+
serviceName = serviceName.replace(/(?:^|\.?)([A-Z])/g, (x, y) => { return '_' + y.toLowerCase(); }).replace(/^_/, '');
|
132
|
+
return serviceName;
|
133
|
+
};
|
134
|
+
exports.camelToSnake = camelToSnake;
|
135
|
+
const getServiceName = (serviceName) => {
|
136
|
+
return serviceName.endsWith('Service') ? (0, exports.camelToSnake)(serviceName.substr(0, serviceName.length - 7)) : (0, exports.camelToSnake)(serviceName);
|
137
|
+
};
|
138
|
+
exports.getServiceName = getServiceName;
|
129
139
|
const capitalize = (s) => {
|
130
140
|
return s.substring(0, 1).toUpperCase() + s.substring(1);
|
131
141
|
};
|
package/dist/index.d.ts
CHANGED
@@ -1,10 +1,8 @@
|
|
1
|
-
/// <reference types="koa-bodyparser" />
|
2
|
-
/// <reference types="koa-websocket" />
|
3
1
|
/// <reference types="node" />
|
4
2
|
/// <reference types="node" />
|
5
|
-
import Koa from 'koa';
|
6
3
|
import { Logger } from 'winston';
|
7
4
|
import { Server, ServerResponse } from 'http';
|
5
|
+
import Koa from "koa";
|
8
6
|
import { AddressInfo } from 'net';
|
9
7
|
import { Facade, FacadeBaseContext, FacadeModule, FacadeModuleBase, FacadeModulesContext } from './interfaces';
|
10
8
|
import { KafkaProviderConfig } from '@restorecommerce/kafka-client';
|
package/dist/index.js
CHANGED
@@ -15,14 +15,18 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
15
15
|
};
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
17
|
exports.createFacade = exports.RestoreCommerceFacade = void 0;
|
18
|
-
const koa_1 = require("koa");
|
19
18
|
const logger_1 = require("@restorecommerce/logger");
|
20
19
|
const http_1 = require("http");
|
21
|
-
const
|
20
|
+
const koa_1 = require("koa");
|
21
|
+
const bodyParser = require('koa-bodyparser');
|
22
|
+
const cors = require('@koa/cors');
|
23
|
+
const server_1 = require("@apollo/server");
|
24
|
+
const koa_2 = require("@as-integrations/koa");
|
22
25
|
const graphql_1 = require("graphql");
|
23
26
|
const gateway_1 = require("@apollo/gateway");
|
24
27
|
const modules_1 = require("./modules");
|
25
|
-
const
|
28
|
+
const drainHttpServer_1 = require("@apollo/server/plugin/drainHttpServer");
|
29
|
+
const default_1 = require("@apollo/server/plugin/landingPage/default");
|
26
30
|
const http_2 = require("http");
|
27
31
|
const ws_1 = require("ws");
|
28
32
|
const ws_2 = require("graphql-ws/lib/use/ws");
|
@@ -201,7 +205,7 @@ class RestoreCommerceFacade {
|
|
201
205
|
subscription: schemaContext.apiSchema.getSubscriptionType()
|
202
206
|
}));
|
203
207
|
let schema = (0, graphql_tools_1.makeExecutableSchema)({
|
204
|
-
typeDefs: (0, graphql_tag_1.
|
208
|
+
typeDefs: (0, graphql_tag_1.default)(typeDefs + `
|
205
209
|
type Query { sample: String }
|
206
210
|
`),
|
207
211
|
resolvers: {
|
@@ -225,12 +229,13 @@ class RestoreCommerceFacade {
|
|
225
229
|
},
|
226
230
|
}, wsServer);
|
227
231
|
});
|
228
|
-
const gqlServer = new
|
232
|
+
const gqlServer = new server_1.ApolloServer({
|
229
233
|
gateway,
|
230
234
|
introspection: true,
|
235
|
+
allowBatchedHttpRequests: true,
|
231
236
|
plugins: [
|
232
|
-
(0,
|
233
|
-
(0,
|
237
|
+
(0, drainHttpServer_1.ApolloServerPluginDrainHttpServer)({ httpServer: this._server }),
|
238
|
+
(0, default_1.ApolloServerPluginLandingPageLocalDefault)({
|
234
239
|
embed: true
|
235
240
|
}),
|
236
241
|
{
|
@@ -243,27 +248,23 @@ class RestoreCommerceFacade {
|
|
243
248
|
},
|
244
249
|
},
|
245
250
|
],
|
246
|
-
|
251
|
+
includeStacktraceInErrorResponses: true,
|
247
252
|
formatError: (error) => {
|
248
253
|
this.logger.error('Error while processing request', { message: error.message });
|
249
254
|
this.logger.debug('Error while processing request', { error });
|
250
255
|
return {
|
251
256
|
message: error.message,
|
252
257
|
locations: error.locations,
|
253
|
-
stack: error
|
258
|
+
stack: error
|
254
259
|
};
|
255
260
|
},
|
256
|
-
context: ({ ctx }) => ctx
|
257
261
|
});
|
258
262
|
await gqlServer.start();
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
},
|
265
|
-
});
|
266
|
-
this.koa.use(middleware);
|
263
|
+
this.koa.use(cors());
|
264
|
+
this.koa.use(bodyParser());
|
265
|
+
this.koa.use((0, koa_2.koaMiddleware)(gqlServer, {
|
266
|
+
context: async ({ ctx }) => ctx,
|
267
|
+
}));
|
267
268
|
}
|
268
269
|
}
|
269
270
|
exports.RestoreCommerceFacade = RestoreCommerceFacade;
|
package/dist/interfaces.d.ts
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
/// <reference types="koa-websocket" />
|
2
|
-
/// <reference types="koa-bodyparser" />
|
3
2
|
/// <reference types="node" />
|
4
3
|
/// <reference types="node" />
|
5
4
|
import Koa from 'koa';
|
6
5
|
import { Logger } from 'winston';
|
7
6
|
import { Server } from 'http';
|
8
7
|
import { AddressInfo } from 'net';
|
9
|
-
|
8
|
+
type RequireAtLeastOne<T, Keys extends keyof T> = Pick<T, Exclude<keyof T, Keys>> & {
|
10
9
|
[K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>;
|
11
10
|
}[Keys];
|
12
11
|
export interface FacadeBaseContext extends Koa.Context {
|
@@ -22,9 +21,9 @@ export interface FacadeModule<TContext extends FacadeBaseContext = FacadeBaseCon
|
|
22
21
|
export interface FacadeModuleFactory<TConfig = any, TContext extends FacadeBaseContext = FacadeBaseContext> extends FacadeModuleBase<TContext> {
|
23
22
|
(config: TConfig): FacadeModule<TContext>;
|
24
23
|
}
|
25
|
-
export
|
26
|
-
export
|
27
|
-
export
|
24
|
+
export type ExtractModuleContext<TModule> = TModule extends FacadeModuleFactory<infer TConfig, infer TContext> ? TContext : TModule extends FacadeModule<infer TContext> ? TContext : never;
|
25
|
+
export type FacadeModulesContext<T extends FacadeModuleBase[]> = (T[0] extends FacadeModuleBase ? ExtractModuleContext<T[0]> : FacadeBaseContext) & (T[1] extends FacadeModuleBase ? ExtractModuleContext<T[1]> : FacadeBaseContext) & (T[2] extends FacadeModuleBase ? ExtractModuleContext<T[2]> : FacadeBaseContext) & (T[3] extends FacadeModuleBase ? ExtractModuleContext<T[3]> : FacadeBaseContext) & (T[4] extends FacadeModuleBase ? ExtractModuleContext<T[4]> : FacadeBaseContext) & (T[5] extends FacadeModuleBase ? ExtractModuleContext<T[5]> : FacadeBaseContext) & (T[6] extends FacadeModuleBase ? ExtractModuleContext<T[6]> : FacadeBaseContext) & (T[7] extends FacadeModuleBase ? ExtractModuleContext<T[7]> : FacadeBaseContext) & (T[8] extends FacadeModuleBase ? ExtractModuleContext<T[8]> : FacadeBaseContext) & (T[9] extends FacadeModuleBase ? ExtractModuleContext<T[9]> : FacadeBaseContext);
|
26
|
+
export type FacadeContext<T extends FacadeModuleBase[] | Facade<any> = []> = T extends FacadeModuleBase[] ? FacadeModulesContext<T> : T extends Facade<infer TFacadeModules> ? FacadeModulesContext<TFacadeModules> : FacadeBaseContext;
|
28
27
|
export interface Facade<TModules extends FacadeModuleBase[] = []> {
|
29
28
|
readonly logger: Logger;
|
30
29
|
readonly koa: Koa<any, FacadeModulesContext<TModules>>;
|
@@ -1,7 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.FederatedAccessControlSchema = void 0;
|
4
|
-
const
|
4
|
+
const graphql_tag_1 = require("graphql-tag");
|
5
5
|
const federation_1 = require("@apollo/federation");
|
6
6
|
const schema_1 = require("./schema");
|
7
7
|
const interfaces_1 = require("../interfaces");
|
@@ -11,7 +11,7 @@ const graphql_1 = require("graphql");
|
|
11
11
|
// TODO There is currently no way of building a federated schema from GraphQLSchema Object
|
12
12
|
// See https://github.com/apollographql/apollo-server/pull/4310
|
13
13
|
const FederatedAccessControlSchema = (cfg) => (0, federation_1.buildSubgraphSchema)({
|
14
|
-
typeDefs: (0,
|
14
|
+
typeDefs: (0, graphql_tag_1.default)((0, graphql_1.printSchema)((0, schema_1.schema)(cfg))),
|
15
15
|
resolvers: (0, protos_1.generateSubServiceResolvers)(types_1.subServices, cfg, interfaces_1.namespace)
|
16
16
|
});
|
17
17
|
exports.FederatedAccessControlSchema = FederatedAccessControlSchema;
|