@common-stack/server-stack 7.1.1-alpha.2 → 7.1.1-alpha.3
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/MainStackServer.cjs +6 -3
- package/lib/MainStackServer.cjs.map +1 -1
- package/lib/MainStackServer.d.ts +2 -1
- package/lib/MainStackServer.mjs +6 -3
- package/lib/MainStackServer.mjs.map +1 -1
- package/lib/api/root-schema.graphqls.cjs +1 -1
- package/lib/api/root-schema.graphqls.mjs +1 -1
- package/lib/api/sub-graph-schema-builder.cjs +149 -0
- package/lib/api/sub-graph-schema-builder.cjs.map +1 -0
- package/lib/api/sub-graph-schema-builder.d.ts +24 -0
- package/lib/api/sub-graph-schema-builder.mjs +149 -0
- package/lib/api/sub-graph-schema-builder.mjs.map +1 -0
- package/lib/plugins/responseCachePlugin.cjs +1 -0
- package/lib/plugins/responseCachePlugin.cjs.map +1 -1
- package/lib/plugins/responseCachePlugin.mjs +1 -0
- package/lib/plugins/responseCachePlugin.mjs.map +1 -1
- package/lib/utils/add-shareable-directive-to-schema.cjs +44 -0
- package/lib/utils/add-shareable-directive-to-schema.cjs.map +1 -0
- package/lib/utils/add-shareable-directive-to-schema.d.ts +1 -0
- package/lib/utils/add-shareable-directive-to-schema.mjs +44 -0
- package/lib/utils/add-shareable-directive-to-schema.mjs.map +1 -0
- package/lib/utils/add-shareable-directive-to-schema.test.d.ts +1 -0
- package/lib/utils/index.d.ts +1 -0
- package/package.json +4 -3
package/lib/MainStackServer.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';var http=require('http'),server=require('@cdm-logger/server'),serverCore=require('@common-stack/server-core'),inversify=require('inversify'),moleculer=require('moleculer'),core=require('@common-stack/core'),_=require('lodash-es'),ExpressApp=require('./servers/ExpressApp.cjs'),GraphqlServer=require('./servers/GraphqlServer.cjs'),envConfig=require('./config/env-config.cjs'),connectionBroker=require('./connectors/connection-broker.cjs'),moleculer_config=require('./config/moleculer.config.cjs'),schemaBuilder=require('./api/schema-builder.cjs'),WebsocketMultipathUpdate=require('./servers/WebsocketMultipathUpdate.cjs'),migrations=require('./utils/migrations.cjs'),moleculerInterNamespace=require('./middleware/moleculer-inter-namespace.cjs'),index$1=require('./graphql/directives/index.cjs'),index=require('./graphql/schema/index.cjs');function _interopNamespaceDefault(e){var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var http__namespace=/*#__PURE__*/_interopNamespaceDefault(http);/* eslint-disable import/namespace */
|
|
1
|
+
'use strict';var http=require('http'),server=require('@cdm-logger/server'),serverCore=require('@common-stack/server-core'),inversify=require('inversify'),moleculer=require('moleculer'),core=require('@common-stack/core'),_=require('lodash-es'),ExpressApp=require('./servers/ExpressApp.cjs'),GraphqlServer=require('./servers/GraphqlServer.cjs'),envConfig=require('./config/env-config.cjs'),connectionBroker=require('./connectors/connection-broker.cjs'),moleculer_config=require('./config/moleculer.config.cjs'),schemaBuilder=require('./api/schema-builder.cjs'),WebsocketMultipathUpdate=require('./servers/WebsocketMultipathUpdate.cjs'),migrations=require('./utils/migrations.cjs'),moleculerInterNamespace=require('./middleware/moleculer-inter-namespace.cjs'),index$1=require('./graphql/directives/index.cjs'),index=require('./graphql/schema/index.cjs'),subGraphSchemaBuilder=require('./api/sub-graph-schema-builder.cjs');function _interopNamespaceDefault(e){var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var http__namespace=/*#__PURE__*/_interopNamespaceDefault(http);/* eslint-disable import/namespace */
|
|
2
2
|
/* eslint-disable import/no-unresolved */
|
|
3
3
|
/* eslint-disable import/no-extraneous-dependencies */
|
|
4
4
|
// version 08/25/2021
|
|
@@ -39,9 +39,11 @@ class MainStackServer {
|
|
|
39
39
|
microserviceContainer;
|
|
40
40
|
serverFeature;
|
|
41
41
|
settings;
|
|
42
|
-
|
|
42
|
+
options;
|
|
43
|
+
constructor(feature, settings, options) {
|
|
43
44
|
this.serverFeature = feature;
|
|
44
45
|
this.settings = settings;
|
|
46
|
+
this.options = options;
|
|
45
47
|
this.logger = server.logger.child({ className: 'StackServer' });
|
|
46
48
|
}
|
|
47
49
|
async initialize() {
|
|
@@ -134,7 +136,8 @@ class MainStackServer {
|
|
|
134
136
|
schema: index.schema,
|
|
135
137
|
createDirectivesFunc: index$1.serverDirectives,
|
|
136
138
|
}));
|
|
137
|
-
const
|
|
139
|
+
const Constructor = this?.options?.isSubGraph ? subGraphSchemaBuilder.SubGraphSchemaBuilder : schemaBuilder.GatewaySchemaBuilder;
|
|
140
|
+
const executableSchema = await new Constructor({
|
|
138
141
|
schema: allModules.schemas,
|
|
139
142
|
resolvers: allModules.createResolvers({
|
|
140
143
|
pubsub,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MainStackServer.cjs","sources":["../src/MainStackServer.ts"],"sourcesContent":[null],"names":["ContainerModule","CommonType","config","serverLogger","ConnectionBroker","brokerConfig","ServiceBroker","InterNamespaceMiddleware","migrate","Feature","schema","serverDirectives","GatewaySchemaBuilder","http","expressApp","isEmpty","WebsocketMultiPathServer","GraphqlServer"],"mappings":"
|
|
1
|
+
{"version":3,"file":"MainStackServer.cjs","sources":["../src/MainStackServer.ts"],"sourcesContent":[null],"names":["ContainerModule","CommonType","config","serverLogger","ConnectionBroker","brokerConfig","ServiceBroker","InterNamespaceMiddleware","migrate","Feature","schema","serverDirectives","SubGraphSchemaBuilder","GatewaySchemaBuilder","http","expressApp","isEmpty","WebsocketMultiPathServer","GraphqlServer"],"mappings":"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"}
|
package/lib/MainStackServer.d.ts
CHANGED
|
@@ -21,7 +21,8 @@ export declare class MainStackServer {
|
|
|
21
21
|
private microserviceContainer;
|
|
22
22
|
private serverFeature;
|
|
23
23
|
private settings;
|
|
24
|
-
|
|
24
|
+
private options;
|
|
25
|
+
constructor(feature: ServerFeature, settings: any, options?: Record<string, unknown>);
|
|
25
26
|
initialize(): Promise<void>;
|
|
26
27
|
start(): Promise<void>;
|
|
27
28
|
cleanup(): Promise<void>;
|
package/lib/MainStackServer.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import*as http from'http';import {logger}from'@cdm-logger/server';import {Feature}from'@common-stack/server-core';import {ContainerModule}from'inversify';import {ServiceBroker}from'moleculer';import {CommonType}from'@common-stack/core';import {isEmpty}from'lodash-es';import {expressApp}from'./servers/ExpressApp.mjs';import {GraphqlServer}from'./servers/GraphqlServer.mjs';import {config}from'./config/env-config.mjs';import {ConnectionBroker}from'./connectors/connection-broker.mjs';import brokerConfig from'./config/moleculer.config.mjs';import {GatewaySchemaBuilder}from'./api/schema-builder.mjs';import {WebsocketMultiPathServer}from'./servers/WebsocketMultipathUpdate.mjs';import {migrate}from'./utils/migrations.mjs';import {InterNamespaceMiddleware}from'./middleware/moleculer-inter-namespace.mjs';import {serverDirectives}from'./graphql/directives/index.mjs';import {schema}from'./graphql/schema/index.mjs';/* eslint-disable import/namespace */
|
|
1
|
+
import*as http from'http';import {logger}from'@cdm-logger/server';import {Feature}from'@common-stack/server-core';import {ContainerModule}from'inversify';import {ServiceBroker}from'moleculer';import {CommonType}from'@common-stack/core';import {isEmpty}from'lodash-es';import {expressApp}from'./servers/ExpressApp.mjs';import {GraphqlServer}from'./servers/GraphqlServer.mjs';import {config}from'./config/env-config.mjs';import {ConnectionBroker}from'./connectors/connection-broker.mjs';import brokerConfig from'./config/moleculer.config.mjs';import {GatewaySchemaBuilder}from'./api/schema-builder.mjs';import {WebsocketMultiPathServer}from'./servers/WebsocketMultipathUpdate.mjs';import {migrate}from'./utils/migrations.mjs';import {InterNamespaceMiddleware}from'./middleware/moleculer-inter-namespace.mjs';import {serverDirectives}from'./graphql/directives/index.mjs';import {schema}from'./graphql/schema/index.mjs';import {SubGraphSchemaBuilder}from'./api/sub-graph-schema-builder.mjs';/* eslint-disable import/namespace */
|
|
2
2
|
/* eslint-disable import/no-unresolved */
|
|
3
3
|
/* eslint-disable import/no-extraneous-dependencies */
|
|
4
4
|
// version 08/25/2021
|
|
@@ -39,9 +39,11 @@ class MainStackServer {
|
|
|
39
39
|
microserviceContainer;
|
|
40
40
|
serverFeature;
|
|
41
41
|
settings;
|
|
42
|
-
|
|
42
|
+
options;
|
|
43
|
+
constructor(feature, settings, options) {
|
|
43
44
|
this.serverFeature = feature;
|
|
44
45
|
this.settings = settings;
|
|
46
|
+
this.options = options;
|
|
45
47
|
this.logger = logger.child({ className: 'StackServer' });
|
|
46
48
|
}
|
|
47
49
|
async initialize() {
|
|
@@ -134,7 +136,8 @@ class MainStackServer {
|
|
|
134
136
|
schema,
|
|
135
137
|
createDirectivesFunc: serverDirectives,
|
|
136
138
|
}));
|
|
137
|
-
const
|
|
139
|
+
const Constructor = this?.options?.isSubGraph ? SubGraphSchemaBuilder : GatewaySchemaBuilder;
|
|
140
|
+
const executableSchema = await new Constructor({
|
|
138
141
|
schema: allModules.schemas,
|
|
139
142
|
resolvers: allModules.createResolvers({
|
|
140
143
|
pubsub,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MainStackServer.mjs","sources":["../src/MainStackServer.ts"],"sourcesContent":[null],"names":["serverLogger"],"mappings":"
|
|
1
|
+
{"version":3,"file":"MainStackServer.mjs","sources":["../src/MainStackServer.ts"],"sourcesContent":[null],"names":["serverLogger"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var rootSchemaDef = "scalar AnyObject\nscalar Date\nscalar Time\nscalar DateTime\nscalar Timestamp\nscalar URI\nscalar URIInput\nscalar Observable\nscalar JSON\nscalar JSONObject\n\n\"\"\"\n An object with an ID.\n\"\"\"\ninterface Node {\n \"\"\"\n The ID of the node.\n \"\"\"\n id: ID!\n}\n\n# Pagination information. See https://facebook.github.io/relay/graphql/connections.htm#sec-undefined.PageInfo.\ntype PageInfo {\n # Whether there is a next page of nodes in the connection.\n hasNextPage: Boolean!\n}\n\n\"\"\"\n Represents a null return value.\n\"\"\"\ntype EmptyResponse {\n # A dummy null value.\n alwaysNil: String\n}\n\ntype FieldError {\n field: String!\n message: String!\n}\n\ninput Sort{\n key: String!,\n value: SortEnum!,\n}\n\nenum SortEnum{\n ASC\n DESC\n}\n\ntype Query {\n \"\"\"\n Looks up a node by ID.\n \"\"\"\n node(id: ID!): Node\n\n}\n\ntype Mutation {\n dummy: Int\n}\n\ntype Subscription {\n dummy: Int\n}\n\n\ntype AdminIdeSettings {\n dummy: Int\n}\n\n\"\"\" All Moleculer Topic names are extended from this.\"\"\"\nenum MoleculerServiceName {\n dummy\n}\n\ninterface IResourceUtilizationSettings {\n subTopic: String\n adminApiNamespace: String\n}\n\n\"\"\"\nTo calculate geometry over an Eath-like sphere.\nList the `longitude` first and then `latitude`\n - Validate longitude values are between `-180` and `180`\n - Validate latitude values are between `-90` and `90`\n\"\"\"\ntype GeoLocation {\n coordinates: [Float]\n}\n\"\"\"\nInput geometry of the location.\nList the `longitude` first and then `latitude`\n - Validate longitude values are between `-180` and `180`\n - Validate latitude values are between `-90` and `90`\n\"\"\"\ninput GeoLocationInput {\n type: String = \"Point\"\n coordinates: [Float]\n}\n\
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var rootSchemaDef = "scalar AnyObject\nscalar Date\nscalar Time\nscalar DateTime\nscalar Timestamp\nscalar URI\nscalar URIInput\nscalar Observable\nscalar JSON\nscalar JSONObject\n\n\"\"\"\n An object with an ID.\n\"\"\"\ninterface Node {\n \"\"\"\n The ID of the node.\n \"\"\"\n id: ID!\n}\n\n# Pagination information. See https://facebook.github.io/relay/graphql/connections.htm#sec-undefined.PageInfo.\ntype PageInfo {\n # Whether there is a next page of nodes in the connection.\n hasNextPage: Boolean!\n}\n\n\"\"\"\n Represents a null return value.\n\"\"\"\ntype EmptyResponse {\n # A dummy null value.\n alwaysNil: String\n}\n\ntype FieldError {\n field: String!\n message: String!\n}\n\ninput Sort{\n key: String!,\n value: SortEnum!,\n}\n\nenum SortEnum{\n ASC\n DESC\n}\n\ntype Query {\n \"\"\"\n Looks up a node by ID.\n \"\"\"\n node(id: ID!): Node\n\n}\n\ntype Mutation {\n dummy: Int\n}\n\ntype Subscription {\n dummy: Int\n}\n\n\ntype AdminIdeSettings {\n dummy: Int\n}\n\n\"\"\" All Moleculer Topic names are extended from this.\"\"\"\nenum MoleculerServiceName {\n dummy\n}\n\ninterface IResourceUtilizationSettings {\n subTopic: String\n adminApiNamespace: String\n}\n\n\"\"\"\nTo calculate geometry over an Eath-like sphere.\nList the `longitude` first and then `latitude`\n - Validate longitude values are between `-180` and `180`\n - Validate latitude values are between `-90` and `90`\n\"\"\"\ntype GeoLocation {\n coordinates: [Float]\n}\n\"\"\"\nInput geometry of the location.\nList the `longitude` first and then `latitude`\n - Validate longitude values are between `-180` and `180`\n - Validate latitude values are between `-90` and `90`\n\"\"\"\ninput GeoLocationInput {\n type: String = \"Point\"\n coordinates: [Float]\n}\n\nenum MailTemplateId {\n dummy\n}\n\nenum MoleculerCronServiceName {\n dummy\n}\n\nschema {\n query: Query\n mutation: Mutation\n subscription: Subscription\n}\n\n";
|
|
2
2
|
exports.default=rootSchemaDef;//# sourceMappingURL=root-schema.graphqls.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var rootSchemaDef = "scalar AnyObject\nscalar Date\nscalar Time\nscalar DateTime\nscalar Timestamp\nscalar URI\nscalar URIInput\nscalar Observable\nscalar JSON\nscalar JSONObject\n\n\"\"\"\n An object with an ID.\n\"\"\"\ninterface Node {\n \"\"\"\n The ID of the node.\n \"\"\"\n id: ID!\n}\n\n# Pagination information. See https://facebook.github.io/relay/graphql/connections.htm#sec-undefined.PageInfo.\ntype PageInfo {\n # Whether there is a next page of nodes in the connection.\n hasNextPage: Boolean!\n}\n\n\"\"\"\n Represents a null return value.\n\"\"\"\ntype EmptyResponse {\n # A dummy null value.\n alwaysNil: String\n}\n\ntype FieldError {\n field: String!\n message: String!\n}\n\ninput Sort{\n key: String!,\n value: SortEnum!,\n}\n\nenum SortEnum{\n ASC\n DESC\n}\n\ntype Query {\n \"\"\"\n Looks up a node by ID.\n \"\"\"\n node(id: ID!): Node\n\n}\n\ntype Mutation {\n dummy: Int\n}\n\ntype Subscription {\n dummy: Int\n}\n\n\ntype AdminIdeSettings {\n dummy: Int\n}\n\n\"\"\" All Moleculer Topic names are extended from this.\"\"\"\nenum MoleculerServiceName {\n dummy\n}\n\ninterface IResourceUtilizationSettings {\n subTopic: String\n adminApiNamespace: String\n}\n\n\"\"\"\nTo calculate geometry over an Eath-like sphere.\nList the `longitude` first and then `latitude`\n - Validate longitude values are between `-180` and `180`\n - Validate latitude values are between `-90` and `90`\n\"\"\"\ntype GeoLocation {\n coordinates: [Float]\n}\n\"\"\"\nInput geometry of the location.\nList the `longitude` first and then `latitude`\n - Validate longitude values are between `-180` and `180`\n - Validate latitude values are between `-90` and `90`\n\"\"\"\ninput GeoLocationInput {\n type: String = \"Point\"\n coordinates: [Float]\n}\n\
|
|
1
|
+
var rootSchemaDef = "scalar AnyObject\nscalar Date\nscalar Time\nscalar DateTime\nscalar Timestamp\nscalar URI\nscalar URIInput\nscalar Observable\nscalar JSON\nscalar JSONObject\n\n\"\"\"\n An object with an ID.\n\"\"\"\ninterface Node {\n \"\"\"\n The ID of the node.\n \"\"\"\n id: ID!\n}\n\n# Pagination information. See https://facebook.github.io/relay/graphql/connections.htm#sec-undefined.PageInfo.\ntype PageInfo {\n # Whether there is a next page of nodes in the connection.\n hasNextPage: Boolean!\n}\n\n\"\"\"\n Represents a null return value.\n\"\"\"\ntype EmptyResponse {\n # A dummy null value.\n alwaysNil: String\n}\n\ntype FieldError {\n field: String!\n message: String!\n}\n\ninput Sort{\n key: String!,\n value: SortEnum!,\n}\n\nenum SortEnum{\n ASC\n DESC\n}\n\ntype Query {\n \"\"\"\n Looks up a node by ID.\n \"\"\"\n node(id: ID!): Node\n\n}\n\ntype Mutation {\n dummy: Int\n}\n\ntype Subscription {\n dummy: Int\n}\n\n\ntype AdminIdeSettings {\n dummy: Int\n}\n\n\"\"\" All Moleculer Topic names are extended from this.\"\"\"\nenum MoleculerServiceName {\n dummy\n}\n\ninterface IResourceUtilizationSettings {\n subTopic: String\n adminApiNamespace: String\n}\n\n\"\"\"\nTo calculate geometry over an Eath-like sphere.\nList the `longitude` first and then `latitude`\n - Validate longitude values are between `-180` and `180`\n - Validate latitude values are between `-90` and `90`\n\"\"\"\ntype GeoLocation {\n coordinates: [Float]\n}\n\"\"\"\nInput geometry of the location.\nList the `longitude` first and then `latitude`\n - Validate longitude values are between `-180` and `180`\n - Validate latitude values are between `-90` and `90`\n\"\"\"\ninput GeoLocationInput {\n type: String = \"Point\"\n coordinates: [Float]\n}\n\nenum MailTemplateId {\n dummy\n}\n\nenum MoleculerCronServiceName {\n dummy\n}\n\nschema {\n query: Query\n mutation: Mutation\n subscription: Subscription\n}\n\n";
|
|
2
2
|
export{rootSchemaDef as default};//# sourceMappingURL=root-schema.graphqls.mjs.map
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
'use strict';var fs=require('fs'),path=require('path'),subgraph=require('@apollo/subgraph'),links=require('@graphql-tools/links'),wrap=require('@graphql-tools/wrap'),ws$1=require('ws'),utilities=require('@apollo/client/utilities'),ws=require('@apollo/client/link/ws'),index_js=require('@apollo/client/index.js'),serverCore=require('@common-stack/server-core'),http=require('@apollo/client/link/http'),fetch=require('isomorphic-fetch'),graphqlShield=require('graphql-shield'),graphqlMiddleware=require('graphql-middleware'),remoteConfig=require('./remote-config.cjs'),rootSchema=require('./root-schema.graphqls.cjs'),resolver=require('./resolver.cjs'),utils=require('./utils.cjs'),envConfig=require('../config/env-config.cjs'),gql=require('graphql-tag');require('../utils/migrations.cjs');var addShareableDirectiveToSchema=require('../utils/add-shareable-directive-to-schema.cjs');function _interopNamespaceDefault(e){var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var fs__namespace=/*#__PURE__*/_interopNamespaceDefault(fs);var path__namespace=/*#__PURE__*/_interopNamespaceDefault(path);var ws__namespace=/*#__PURE__*/_interopNamespaceDefault(ws$1);var fetch__namespace=/*#__PURE__*/_interopNamespaceDefault(fetch);/// <reference path='../../../../typings/index.d.ts' />
|
|
2
|
+
/* eslint-disable class-methods-use-this */
|
|
3
|
+
/* eslint-disable no-useless-constructor */
|
|
4
|
+
/* eslint-disable import/no-extraneous-dependencies */
|
|
5
|
+
class SubGraphSchemaBuilder {
|
|
6
|
+
options;
|
|
7
|
+
constructor(options) {
|
|
8
|
+
this.options = options;
|
|
9
|
+
}
|
|
10
|
+
async build() {
|
|
11
|
+
let gatewaySchema;
|
|
12
|
+
let ownSchema;
|
|
13
|
+
try {
|
|
14
|
+
ownSchema = this.createOwnSchema();
|
|
15
|
+
const remoteSchema = await this.load();
|
|
16
|
+
// techSchema = this.patchSchema(techSchema, 'TechService');
|
|
17
|
+
gatewaySchema = ownSchema;
|
|
18
|
+
// Apply middleware to the schema
|
|
19
|
+
if (this.options.middlewares && this.options.middlewares.length > 0) {
|
|
20
|
+
gatewaySchema = graphqlMiddleware.applyMiddleware(gatewaySchema, ...this.options.middlewares, graphqlShield.shield(this.options.rules || {}, {
|
|
21
|
+
allowExternalErrors: true,
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
// TODO after updating graphql-tools to v8
|
|
25
|
+
// addErrorLoggingToSchema(schema, { log: (e) => logger.error(e as Error) });
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
serverCore.logger.error(err, '[Graphql Schema Errors] when building schema:', err.message);
|
|
29
|
+
gatewaySchema = ownSchema;
|
|
30
|
+
}
|
|
31
|
+
return gatewaySchema;
|
|
32
|
+
}
|
|
33
|
+
async load() {
|
|
34
|
+
const schemas = [];
|
|
35
|
+
// eslint-disable-next-line no-plusplus
|
|
36
|
+
for (const element of remoteConfig.remoteSchemaDetails) {
|
|
37
|
+
// eslint-disable-next-line no-await-in-loop
|
|
38
|
+
const schema = await this.loadRemoteSchema(element);
|
|
39
|
+
schemas.push(schema);
|
|
40
|
+
}
|
|
41
|
+
return schemas;
|
|
42
|
+
}
|
|
43
|
+
async createRemoteSchema(service, iteration) {
|
|
44
|
+
serverCore.logger.info('Fetch service [%s] iteration [%s]', service, iteration);
|
|
45
|
+
const services = remoteConfig.remoteSchemaDetails;
|
|
46
|
+
if (!services.length) {
|
|
47
|
+
console.warn(`Service ${services} is undefined`);
|
|
48
|
+
if (iteration && iteration > 2) {
|
|
49
|
+
return Promise.reject(new Error(`tried upto ${iteration} attempts, now failing...`));
|
|
50
|
+
}
|
|
51
|
+
return new Promise((resolve, reject) => {
|
|
52
|
+
const timeout = iteration ? 1000 * iteration : 1000;
|
|
53
|
+
serverCore.logger.info('Wait for service startup %s', timeout);
|
|
54
|
+
setTimeout(() => {
|
|
55
|
+
this.createRemoteSchema(service, iteration ? iteration + 1 : 1)
|
|
56
|
+
.then(resolve)
|
|
57
|
+
.catch(reject);
|
|
58
|
+
}, timeout);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
// instead need to loop it
|
|
62
|
+
// https://github.com/j-colter/graphql-gateway/blob/9c64d90a74727d2002d10b06f47e1f4a316070fc/src/schema.js#L50
|
|
63
|
+
const url = services[0].uri;
|
|
64
|
+
serverCore.logger.info('fetch service [%s]', url);
|
|
65
|
+
// 1. Create apollo Link that's connected to the underlying GraphQL API
|
|
66
|
+
const link = new http.HttpLink({ uri: url, fetch: fetch__namespace });
|
|
67
|
+
const executor = links.linkToExecutor(link);
|
|
68
|
+
// 2. Retrieve schema definition of the underlying GraphQL API
|
|
69
|
+
const remoteSchema = await wrap.schemaFromExecutor(link);
|
|
70
|
+
// 3. Create the executable schema based on schema definition and Apollo Link
|
|
71
|
+
return wrap.wrapSchema({
|
|
72
|
+
schema: remoteSchema,
|
|
73
|
+
executor,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
async loadRemoteSchema({ uri, wsUri }) {
|
|
77
|
+
try {
|
|
78
|
+
const httpLink = new http.HttpLink({ uri, fetch: fetch__namespace });
|
|
79
|
+
let link = null;
|
|
80
|
+
if (wsUri) {
|
|
81
|
+
const wsLink = new ws.WebSocketLink({
|
|
82
|
+
uri: wsUri,
|
|
83
|
+
options: {
|
|
84
|
+
reconnect: true,
|
|
85
|
+
},
|
|
86
|
+
webSocketImpl: ws__namespace,
|
|
87
|
+
});
|
|
88
|
+
link = index_js.split(
|
|
89
|
+
// split based on operatino type
|
|
90
|
+
({ query }) => {
|
|
91
|
+
const { kind, operation } = utilities.getMainDefinition(query);
|
|
92
|
+
return kind === 'OperationDefinition' && operation === 'subscription';
|
|
93
|
+
}, wsLink, httpLink);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
link = httpLink;
|
|
97
|
+
}
|
|
98
|
+
const executor = links.linkToExecutor(link);
|
|
99
|
+
const remoteSchema = await wrap.schemaFromExecutor(link);
|
|
100
|
+
return wrap.wrapSchema({
|
|
101
|
+
schema: remoteSchema,
|
|
102
|
+
executor,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
this.options.logger.error(err, 'fetching schema error: ', err);
|
|
107
|
+
return {};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
createOwnSchema() {
|
|
111
|
+
const typeDefs = [addShareableDirectiveToSchema.addShareableDirectiveToSchema(rootSchema.default), this.options.schema].join('\n');
|
|
112
|
+
if (envConfig.config.isDev) {
|
|
113
|
+
// @ts-ignore
|
|
114
|
+
import('@src/modules/module').then(({ ExternalModules }) => {
|
|
115
|
+
const externalSchema = ExternalModules?.schemas || ``;
|
|
116
|
+
const writeData = `${externalSchema}`;
|
|
117
|
+
const filePath = path__namespace.join(process.cwd(), 'generated-schema.graphql');
|
|
118
|
+
fs__namespace.writeFileSync(filePath, writeData);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
const resolvers = [resolver.resolvers, this.options.resolvers].reduce((acc, curr) => ({
|
|
122
|
+
...acc,
|
|
123
|
+
...curr,
|
|
124
|
+
}), {});
|
|
125
|
+
let mergedSchema = subgraph.buildSubgraphSchema({
|
|
126
|
+
resolvers,
|
|
127
|
+
typeDefs: gql `
|
|
128
|
+
${typeDefs}
|
|
129
|
+
`,
|
|
130
|
+
});
|
|
131
|
+
try {
|
|
132
|
+
// Check if directives are provided and are iterable
|
|
133
|
+
if (Array.isArray(this.options.directives) && this.options.directives.length > 0) {
|
|
134
|
+
this.options.directives.forEach((transform) => {
|
|
135
|
+
mergedSchema = transform(mergedSchema);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
// Handle deprecated directiveResolvers if they exist
|
|
139
|
+
if (this.options.directiveResolvers && Object.keys(this.options.directiveResolvers).length !== 0) {
|
|
140
|
+
this.options.logger.warn('directiveResolvers deprecated replaced with directives');
|
|
141
|
+
mergedSchema = utils.attachDirectiveResolvers(mergedSchema, this.options.directiveResolvers);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
this.options.logger.error(err, 'Error in schema directives [%j], and directiveResolvers [%j]', this.options.directives, this.options.directiveResolvers);
|
|
146
|
+
}
|
|
147
|
+
return mergedSchema;
|
|
148
|
+
}
|
|
149
|
+
}exports.SubGraphSchemaBuilder=SubGraphSchemaBuilder;//# sourceMappingURL=sub-graph-schema-builder.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sub-graph-schema-builder.cjs","sources":["../../src/api/sub-graph-schema-builder.ts"],"sourcesContent":[null],"names":["applyMiddleware","shield","logger","remoteSchemaDetails","HttpLink","fetch","linkToExecutor","schemaFromExecutor","wrapSchema","WebSocketLink","ws","split","getMainDefinition","addShareableDirectiveToSchema","rootSchemaDef","config","path","fs","rootResolver","buildSubgraphSchema","attachDirectiveResolvers"],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { GraphQLSchema } from 'graphql';
|
|
2
|
+
import { IGraphqlShieldRules } from '@common-stack/server-core';
|
|
3
|
+
import { CdmLogger } from '@cdm-logger/core';
|
|
4
|
+
interface IGraphqlOptions {
|
|
5
|
+
schema: string | string[];
|
|
6
|
+
resolvers: any;
|
|
7
|
+
directives: any[];
|
|
8
|
+
directiveResolvers: {
|
|
9
|
+
[key: string]: any;
|
|
10
|
+
};
|
|
11
|
+
middlewares: any[];
|
|
12
|
+
rules?: IGraphqlShieldRules;
|
|
13
|
+
logger: CdmLogger.ILogger;
|
|
14
|
+
}
|
|
15
|
+
export declare class SubGraphSchemaBuilder {
|
|
16
|
+
private readonly options;
|
|
17
|
+
constructor(options: IGraphqlOptions);
|
|
18
|
+
build(): Promise<GraphQLSchema>;
|
|
19
|
+
private load;
|
|
20
|
+
private createRemoteSchema;
|
|
21
|
+
private loadRemoteSchema;
|
|
22
|
+
private createOwnSchema;
|
|
23
|
+
}
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import*as fs from'fs';import*as path from'path';import {buildSubgraphSchema}from'@apollo/subgraph';import {linkToExecutor}from'@graphql-tools/links';import {schemaFromExecutor,wrapSchema}from'@graphql-tools/wrap';import*as ws from'ws';import {getMainDefinition}from'@apollo/client/utilities';import {WebSocketLink}from'@apollo/client/link/ws';import {split}from'@apollo/client/index.js';import {logger}from'@common-stack/server-core';import {HttpLink}from'@apollo/client/link/http';import*as fetch from'isomorphic-fetch';import {shield}from'graphql-shield';import {applyMiddleware}from'graphql-middleware';import {remoteSchemaDetails}from'./remote-config.mjs';import rootSchemaDef from'./root-schema.graphqls.mjs';import {resolvers}from'./resolver.mjs';import {attachDirectiveResolvers}from'./utils.mjs';import {config}from'../config/env-config.mjs';import gql from'graphql-tag';import'../utils/migrations.mjs';import {addShareableDirectiveToSchema}from'../utils/add-shareable-directive-to-schema.mjs';/// <reference path='../../../../typings/index.d.ts' />
|
|
2
|
+
/* eslint-disable class-methods-use-this */
|
|
3
|
+
/* eslint-disable no-useless-constructor */
|
|
4
|
+
/* eslint-disable import/no-extraneous-dependencies */
|
|
5
|
+
class SubGraphSchemaBuilder {
|
|
6
|
+
options;
|
|
7
|
+
constructor(options) {
|
|
8
|
+
this.options = options;
|
|
9
|
+
}
|
|
10
|
+
async build() {
|
|
11
|
+
let gatewaySchema;
|
|
12
|
+
let ownSchema;
|
|
13
|
+
try {
|
|
14
|
+
ownSchema = this.createOwnSchema();
|
|
15
|
+
const remoteSchema = await this.load();
|
|
16
|
+
// techSchema = this.patchSchema(techSchema, 'TechService');
|
|
17
|
+
gatewaySchema = ownSchema;
|
|
18
|
+
// Apply middleware to the schema
|
|
19
|
+
if (this.options.middlewares && this.options.middlewares.length > 0) {
|
|
20
|
+
gatewaySchema = applyMiddleware(gatewaySchema, ...this.options.middlewares, shield(this.options.rules || {}, {
|
|
21
|
+
allowExternalErrors: true,
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
// TODO after updating graphql-tools to v8
|
|
25
|
+
// addErrorLoggingToSchema(schema, { log: (e) => logger.error(e as Error) });
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
logger.error(err, '[Graphql Schema Errors] when building schema:', err.message);
|
|
29
|
+
gatewaySchema = ownSchema;
|
|
30
|
+
}
|
|
31
|
+
return gatewaySchema;
|
|
32
|
+
}
|
|
33
|
+
async load() {
|
|
34
|
+
const schemas = [];
|
|
35
|
+
// eslint-disable-next-line no-plusplus
|
|
36
|
+
for (const element of remoteSchemaDetails) {
|
|
37
|
+
// eslint-disable-next-line no-await-in-loop
|
|
38
|
+
const schema = await this.loadRemoteSchema(element);
|
|
39
|
+
schemas.push(schema);
|
|
40
|
+
}
|
|
41
|
+
return schemas;
|
|
42
|
+
}
|
|
43
|
+
async createRemoteSchema(service, iteration) {
|
|
44
|
+
logger.info('Fetch service [%s] iteration [%s]', service, iteration);
|
|
45
|
+
const services = remoteSchemaDetails;
|
|
46
|
+
if (!services.length) {
|
|
47
|
+
console.warn(`Service ${services} is undefined`);
|
|
48
|
+
if (iteration && iteration > 2) {
|
|
49
|
+
return Promise.reject(new Error(`tried upto ${iteration} attempts, now failing...`));
|
|
50
|
+
}
|
|
51
|
+
return new Promise((resolve, reject) => {
|
|
52
|
+
const timeout = iteration ? 1000 * iteration : 1000;
|
|
53
|
+
logger.info('Wait for service startup %s', timeout);
|
|
54
|
+
setTimeout(() => {
|
|
55
|
+
this.createRemoteSchema(service, iteration ? iteration + 1 : 1)
|
|
56
|
+
.then(resolve)
|
|
57
|
+
.catch(reject);
|
|
58
|
+
}, timeout);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
// instead need to loop it
|
|
62
|
+
// https://github.com/j-colter/graphql-gateway/blob/9c64d90a74727d2002d10b06f47e1f4a316070fc/src/schema.js#L50
|
|
63
|
+
const url = services[0].uri;
|
|
64
|
+
logger.info('fetch service [%s]', url);
|
|
65
|
+
// 1. Create apollo Link that's connected to the underlying GraphQL API
|
|
66
|
+
const link = new HttpLink({ uri: url, fetch });
|
|
67
|
+
const executor = linkToExecutor(link);
|
|
68
|
+
// 2. Retrieve schema definition of the underlying GraphQL API
|
|
69
|
+
const remoteSchema = await schemaFromExecutor(link);
|
|
70
|
+
// 3. Create the executable schema based on schema definition and Apollo Link
|
|
71
|
+
return wrapSchema({
|
|
72
|
+
schema: remoteSchema,
|
|
73
|
+
executor,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
async loadRemoteSchema({ uri, wsUri }) {
|
|
77
|
+
try {
|
|
78
|
+
const httpLink = new HttpLink({ uri, fetch });
|
|
79
|
+
let link = null;
|
|
80
|
+
if (wsUri) {
|
|
81
|
+
const wsLink = new WebSocketLink({
|
|
82
|
+
uri: wsUri,
|
|
83
|
+
options: {
|
|
84
|
+
reconnect: true,
|
|
85
|
+
},
|
|
86
|
+
webSocketImpl: ws,
|
|
87
|
+
});
|
|
88
|
+
link = split(
|
|
89
|
+
// split based on operatino type
|
|
90
|
+
({ query }) => {
|
|
91
|
+
const { kind, operation } = getMainDefinition(query);
|
|
92
|
+
return kind === 'OperationDefinition' && operation === 'subscription';
|
|
93
|
+
}, wsLink, httpLink);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
link = httpLink;
|
|
97
|
+
}
|
|
98
|
+
const executor = linkToExecutor(link);
|
|
99
|
+
const remoteSchema = await schemaFromExecutor(link);
|
|
100
|
+
return wrapSchema({
|
|
101
|
+
schema: remoteSchema,
|
|
102
|
+
executor,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
this.options.logger.error(err, 'fetching schema error: ', err);
|
|
107
|
+
return {};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
createOwnSchema() {
|
|
111
|
+
const typeDefs = [addShareableDirectiveToSchema(rootSchemaDef), this.options.schema].join('\n');
|
|
112
|
+
if (config.isDev) {
|
|
113
|
+
// @ts-ignore
|
|
114
|
+
import('@src/modules/module').then(({ ExternalModules }) => {
|
|
115
|
+
const externalSchema = ExternalModules?.schemas || ``;
|
|
116
|
+
const writeData = `${externalSchema}`;
|
|
117
|
+
const filePath = path.join(process.cwd(), 'generated-schema.graphql');
|
|
118
|
+
fs.writeFileSync(filePath, writeData);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
const resolvers$1 = [resolvers, this.options.resolvers].reduce((acc, curr) => ({
|
|
122
|
+
...acc,
|
|
123
|
+
...curr,
|
|
124
|
+
}), {});
|
|
125
|
+
let mergedSchema = buildSubgraphSchema({
|
|
126
|
+
resolvers: resolvers$1,
|
|
127
|
+
typeDefs: gql `
|
|
128
|
+
${typeDefs}
|
|
129
|
+
`,
|
|
130
|
+
});
|
|
131
|
+
try {
|
|
132
|
+
// Check if directives are provided and are iterable
|
|
133
|
+
if (Array.isArray(this.options.directives) && this.options.directives.length > 0) {
|
|
134
|
+
this.options.directives.forEach((transform) => {
|
|
135
|
+
mergedSchema = transform(mergedSchema);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
// Handle deprecated directiveResolvers if they exist
|
|
139
|
+
if (this.options.directiveResolvers && Object.keys(this.options.directiveResolvers).length !== 0) {
|
|
140
|
+
this.options.logger.warn('directiveResolvers deprecated replaced with directives');
|
|
141
|
+
mergedSchema = attachDirectiveResolvers(mergedSchema, this.options.directiveResolvers);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
this.options.logger.error(err, 'Error in schema directives [%j], and directiveResolvers [%j]', this.options.directives, this.options.directiveResolvers);
|
|
146
|
+
}
|
|
147
|
+
return mergedSchema;
|
|
148
|
+
}
|
|
149
|
+
}export{SubGraphSchemaBuilder};//# sourceMappingURL=sub-graph-schema-builder.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sub-graph-schema-builder.mjs","sources":["../../src/api/sub-graph-schema-builder.ts"],"sourcesContent":[null],"names":["resolvers","rootResolver"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responseCachePlugin.cjs","sources":["../../src/plugins/responseCachePlugin.ts"],"sourcesContent":[null],"names":["getDirectiveArgsFromSchema","CACHE_CONTROL_DIRECTIVE","extractTenantId","generateQueryCacheKey","isEmpty"],"mappings":"0JAcA,MAAM,WAAW,GAAI,iBAAyB,CAAC,OAAO,IAAI,iBAAiB,CAAC;AAO/D,MAAA,WAAW,GAAG,CAAC,cAA4D,KAAI;AACxF,IAAA,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;IAC5C,MAAM,KAAK,GAAGA,qCAA0B,CAAC;QACrC,MAAM;QACN,QAAQ;AACR,QAAA,aAAa,EAAEC,kCAAuB;AACzC,KAAA,CAAC,CAAC;AACH,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,KAAK,CAAC;IACzB,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC9B,QAAA,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;KACxB;AACD,IAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE;;;AAGnC,QAAA,cAAsB,CAAC,kBAAkB,GAAG,EAAE,CAAC;KACnD
|
|
1
|
+
{"version":3,"file":"responseCachePlugin.cjs","sources":["../../src/plugins/responseCachePlugin.ts"],"sourcesContent":[null],"names":["getDirectiveArgsFromSchema","CACHE_CONTROL_DIRECTIVE","extractTenantId","generateQueryCacheKey","isEmpty"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responseCachePlugin.mjs","sources":["../../src/plugins/responseCachePlugin.ts"],"sourcesContent":[null],"names":[],"mappings":"qOAcA,MAAM,WAAW,GAAI,iBAAyB,CAAC,OAAO,IAAI,iBAAiB,CAAC;AAO/D,MAAA,WAAW,GAAG,CAAC,cAA4D,KAAI;AACxF,IAAA,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;IAC5C,MAAM,KAAK,GAAG,0BAA0B,CAAC;QACrC,MAAM;QACN,QAAQ;AACR,QAAA,aAAa,EAAE,uBAAuB;AACzC,KAAA,CAAC,CAAC;AACH,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,KAAK,CAAC;IACzB,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC9B,QAAA,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;KACxB;AACD,IAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE;;;AAGnC,QAAA,cAAsB,CAAC,kBAAkB,GAAG,EAAE,CAAC;KACnD
|
|
1
|
+
{"version":3,"file":"responseCachePlugin.mjs","sources":["../../src/plugins/responseCachePlugin.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
'use strict';var graphql=require('graphql');const addShareableDirectiveToSchema = (schemaString) => {
|
|
2
|
+
const ast = graphql.parse(schemaString);
|
|
3
|
+
const modifiedAst = graphql.visit(ast, {
|
|
4
|
+
ObjectTypeDefinition(node) {
|
|
5
|
+
// Add @shareable directive to each type
|
|
6
|
+
const shareableDirective = {
|
|
7
|
+
kind: graphql.Kind.DIRECTIVE,
|
|
8
|
+
name: { kind: graphql.Kind.NAME, value: 'shareable' },
|
|
9
|
+
};
|
|
10
|
+
return {
|
|
11
|
+
...node,
|
|
12
|
+
directives: [...(node.directives || []), shareableDirective],
|
|
13
|
+
};
|
|
14
|
+
},
|
|
15
|
+
ObjectTypeExtension(node) {
|
|
16
|
+
// Add @shareable directive to each extended type
|
|
17
|
+
const shareableDirective = {
|
|
18
|
+
kind: graphql.Kind.DIRECTIVE,
|
|
19
|
+
name: { kind: graphql.Kind.NAME, value: 'shareable' },
|
|
20
|
+
};
|
|
21
|
+
return {
|
|
22
|
+
...node,
|
|
23
|
+
directives: [...(node.directives || []), shareableDirective],
|
|
24
|
+
};
|
|
25
|
+
},
|
|
26
|
+
FieldDefinition(node, _key, _parent, _path, ancestors) {
|
|
27
|
+
// Get the parent type definition from ancestors
|
|
28
|
+
const parent = ancestors[2];
|
|
29
|
+
// @ts-expect-error - parent is an object, but we need to check if it has a kind property
|
|
30
|
+
if (parent?.kind === graphql.Kind.OBJECT_TYPE_DEFINITION && parent.name.value === 'Query') {
|
|
31
|
+
const shareableDirective = {
|
|
32
|
+
kind: graphql.Kind.DIRECTIVE,
|
|
33
|
+
name: { kind: graphql.Kind.NAME, value: 'shareable' },
|
|
34
|
+
};
|
|
35
|
+
return {
|
|
36
|
+
...node,
|
|
37
|
+
directives: [...(node.directives || []), shareableDirective],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return node;
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
return graphql.print(modifiedAst);
|
|
44
|
+
};exports.addShareableDirectiveToSchema=addShareableDirectiveToSchema;//# sourceMappingURL=add-shareable-directive-to-schema.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-shareable-directive-to-schema.cjs","sources":["../../src/utils/add-shareable-directive-to-schema.ts"],"sourcesContent":[null],"names":["parse","visit","Kind","print"],"mappings":"4CAEa,MAAA,6BAA6B,GAAG,CAAC,YAAoB,KAAI;AAClE,IAAA,MAAM,GAAG,GAAGA,aAAK,CAAC,YAAY,CAAC,CAAC;AAEhC,IAAA,MAAM,WAAW,GAAGC,aAAK,CAAC,GAAG,EAAE;AAC3B,QAAA,oBAAoB,CAAC,IAAI,EAAA;;AAErB,YAAA,MAAM,kBAAkB,GAAG;gBACvB,IAAI,EAAEC,YAAI,CAAC,SAAS;gBACpB,IAAI,EAAE,EAAE,IAAI,EAAEA,YAAI,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;aAChD,CAAC;YAEF,OAAO;AACH,gBAAA,GAAG,IAAI;AACP,gBAAA,UAAU,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,kBAAkB,CAAC;aAC/D,CAAC;SACL;AACD,QAAA,mBAAmB,CAAC,IAAI,EAAA;;AAEpB,YAAA,MAAM,kBAAkB,GAAG;gBACvB,IAAI,EAAEA,YAAI,CAAC,SAAS;gBACpB,IAAI,EAAE,EAAE,IAAI,EAAEA,YAAI,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;aAChD,CAAC;YAEF,OAAO;AACH,gBAAA,GAAG,IAAI;AACP,gBAAA,UAAU,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,kBAAkB,CAAC;aAC/D,CAAC;SACL;QACD,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAA;;AAEjD,YAAA,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;;AAE5B,YAAA,IAAI,MAAM,EAAE,IAAI,KAAKA,YAAI,CAAC,sBAAsB,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE;AAC/E,gBAAA,MAAM,kBAAkB,GAAG;oBACvB,IAAI,EAAEA,YAAI,CAAC,SAAS;oBACpB,IAAI,EAAE,EAAE,IAAI,EAAEA,YAAI,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;iBAChD,CAAC;gBAEF,OAAO;AACH,oBAAA,GAAG,IAAI;AACP,oBAAA,UAAU,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,kBAAkB,CAAC;iBAC/D,CAAC;aACL;AACD,YAAA,OAAO,IAAI,CAAC;SACf;AACJ,KAAA,CAAC,CAAC;AAEH,IAAA,OAAOC,aAAK,CAAC,WAAW,CAAC,CAAC;AAC9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const addShareableDirectiveToSchema: (schemaString: string) => string;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import {parse,visit,Kind,print}from'graphql';const addShareableDirectiveToSchema = (schemaString) => {
|
|
2
|
+
const ast = parse(schemaString);
|
|
3
|
+
const modifiedAst = visit(ast, {
|
|
4
|
+
ObjectTypeDefinition(node) {
|
|
5
|
+
// Add @shareable directive to each type
|
|
6
|
+
const shareableDirective = {
|
|
7
|
+
kind: Kind.DIRECTIVE,
|
|
8
|
+
name: { kind: Kind.NAME, value: 'shareable' },
|
|
9
|
+
};
|
|
10
|
+
return {
|
|
11
|
+
...node,
|
|
12
|
+
directives: [...(node.directives || []), shareableDirective],
|
|
13
|
+
};
|
|
14
|
+
},
|
|
15
|
+
ObjectTypeExtension(node) {
|
|
16
|
+
// Add @shareable directive to each extended type
|
|
17
|
+
const shareableDirective = {
|
|
18
|
+
kind: Kind.DIRECTIVE,
|
|
19
|
+
name: { kind: Kind.NAME, value: 'shareable' },
|
|
20
|
+
};
|
|
21
|
+
return {
|
|
22
|
+
...node,
|
|
23
|
+
directives: [...(node.directives || []), shareableDirective],
|
|
24
|
+
};
|
|
25
|
+
},
|
|
26
|
+
FieldDefinition(node, _key, _parent, _path, ancestors) {
|
|
27
|
+
// Get the parent type definition from ancestors
|
|
28
|
+
const parent = ancestors[2];
|
|
29
|
+
// @ts-expect-error - parent is an object, but we need to check if it has a kind property
|
|
30
|
+
if (parent?.kind === Kind.OBJECT_TYPE_DEFINITION && parent.name.value === 'Query') {
|
|
31
|
+
const shareableDirective = {
|
|
32
|
+
kind: Kind.DIRECTIVE,
|
|
33
|
+
name: { kind: Kind.NAME, value: 'shareable' },
|
|
34
|
+
};
|
|
35
|
+
return {
|
|
36
|
+
...node,
|
|
37
|
+
directives: [...(node.directives || []), shareableDirective],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return node;
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
return print(modifiedAst);
|
|
44
|
+
};export{addShareableDirectiveToSchema};//# sourceMappingURL=add-shareable-directive-to-schema.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-shareable-directive-to-schema.mjs","sources":["../../src/utils/add-shareable-directive-to-schema.ts"],"sourcesContent":[null],"names":[],"mappings":"6CAEa,MAAA,6BAA6B,GAAG,CAAC,YAAoB,KAAI;AAClE,IAAA,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;AAEhC,IAAA,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,EAAE;AAC3B,QAAA,oBAAoB,CAAC,IAAI,EAAA;;AAErB,YAAA,MAAM,kBAAkB,GAAG;gBACvB,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;aAChD,CAAC;YAEF,OAAO;AACH,gBAAA,GAAG,IAAI;AACP,gBAAA,UAAU,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,kBAAkB,CAAC;aAC/D,CAAC;SACL;AACD,QAAA,mBAAmB,CAAC,IAAI,EAAA;;AAEpB,YAAA,MAAM,kBAAkB,GAAG;gBACvB,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;aAChD,CAAC;YAEF,OAAO;AACH,gBAAA,GAAG,IAAI;AACP,gBAAA,UAAU,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,kBAAkB,CAAC;aAC/D,CAAC;SACL;QACD,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAA;;AAEjD,YAAA,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;;AAE5B,YAAA,IAAI,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC,sBAAsB,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE;AAC/E,gBAAA,MAAM,kBAAkB,GAAG;oBACvB,IAAI,EAAE,IAAI,CAAC,SAAS;oBACpB,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;iBAChD,CAAC;gBAEF,OAAO;AACH,oBAAA,GAAG,IAAI;AACP,oBAAA,UAAU,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,kBAAkB,CAAC;iBAC/D,CAAC;aACL;AACD,YAAA,OAAO,IAAI,CAAC;SACf;AACJ,KAAA,CAAC,CAAC;AAEH,IAAA,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC;AAC9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/lib/utils/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@common-stack/server-stack",
|
|
3
|
-
"version": "7.1.1-alpha.
|
|
3
|
+
"version": "7.1.1-alpha.3",
|
|
4
4
|
"description": "common core for higher packages to depend on",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "CDMBase LLC",
|
|
@@ -26,13 +26,14 @@
|
|
|
26
26
|
"@apollo/datasource-rest": "^6.3.0",
|
|
27
27
|
"@apollo/server": "^4.10.4",
|
|
28
28
|
"@apollo/server-plugin-response-cache": "^4.1.3",
|
|
29
|
+
"@apollo/subgraph": "^2.7.1",
|
|
29
30
|
"@apollo/utils.keyvadapter": "^3.1.0",
|
|
30
31
|
"@casl/ability": "^4.1.5",
|
|
31
32
|
"@cdm-logger/client": "^9.0.3",
|
|
32
33
|
"@cdm-logger/server": "^9.0.3",
|
|
33
34
|
"@cdmbase/graphql-type-uri": "^4.0.0",
|
|
34
35
|
"@common-stack/cache-api-server": "7.0.4-alpha.17",
|
|
35
|
-
"@common-stack/client-core": "7.1.1-alpha.
|
|
36
|
+
"@common-stack/client-core": "7.1.1-alpha.3",
|
|
36
37
|
"@common-stack/core": "7.0.4-alpha.17",
|
|
37
38
|
"@common-stack/server-core": "7.0.4-alpha.17",
|
|
38
39
|
"@common-stack/store-mongo": "7.0.4-alpha.17",
|
|
@@ -88,7 +89,7 @@
|
|
|
88
89
|
"publishConfig": {
|
|
89
90
|
"access": "public"
|
|
90
91
|
},
|
|
91
|
-
"gitHead": "
|
|
92
|
+
"gitHead": "957549af03185aa8c04c216f68db9ab6251f2d0d",
|
|
92
93
|
"typescript": {
|
|
93
94
|
"definition": "lib/index.d.ts"
|
|
94
95
|
}
|