@revisium/endpoint 0.11.0-alpha.1 → 0.11.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/schema.mocks.d.ts +25 -0
- package/dist/__tests__/schema.mocks.js +60 -0
- package/dist/__tests__/schema.mocks.js.map +1 -0
- package/dist/endpoint-microservice/graphql/graphql-endpoint.service.js +9 -5
- package/dist/endpoint-microservice/graphql/graphql-endpoint.service.js.map +1 -1
- package/dist/endpoint-microservice/graphql/graphql-schema-converter/constants.d.ts +1 -0
- package/dist/endpoint-microservice/graphql/graphql-schema-converter/constants.js +5 -0
- package/dist/endpoint-microservice/graphql/graphql-schema-converter/constants.js.map +1 -0
- package/dist/endpoint-microservice/graphql/graphql-schema-converter/graphql-schema.converter.d.ts +29 -0
- package/dist/endpoint-microservice/graphql/graphql-schema-converter/graphql-schema.converter.js +199 -0
- package/dist/endpoint-microservice/graphql/graphql-schema-converter/graphql-schema.converter.js.map +1 -0
- package/dist/endpoint-microservice/graphql/graphql-schema-converter/types.d.ts +13 -0
- package/dist/endpoint-microservice/graphql/graphql-schema-converter/types.js +26 -0
- package/dist/endpoint-microservice/graphql/graphql-schema-converter/types.js.map +1 -0
- package/dist/endpoint-microservice/graphql/graphql-schema-converter/utils.d.ts +4 -0
- package/dist/endpoint-microservice/graphql/graphql-schema-converter/utils.js +31 -0
- package/dist/endpoint-microservice/graphql/graphql-schema-converter/utils.js.map +1 -0
- package/dist/endpoint-microservice/graphql/graphql.module.js +12 -1
- package/dist/endpoint-microservice/graphql/graphql.module.js.map +1 -1
- package/dist/endpoint-microservice/graphql/queries/handlers/get-graphql-schema.handler.d.ts +5 -14
- package/dist/endpoint-microservice/graphql/queries/handlers/get-graphql-schema.handler.js +20 -211
- package/dist/endpoint-microservice/graphql/queries/handlers/get-graphql-schema.handler.js.map +1 -1
- package/dist/endpoint-microservice/graphql/queries/impl/get-graphql-schema.query.d.ts +8 -0
- package/dist/endpoint-microservice/graphql/queries/impl/get-graphql-schema.query.js.map +1 -1
- package/dist/endpoint-microservice/restapi/queries/handlers/get-open-api-schema.handler.js.map +1 -1
- package/dist/endpoint-microservice/shared/converter.d.ts +17 -0
- package/dist/endpoint-microservice/shared/{types/json-schema-type.js → converter.js} +1 -1
- package/dist/endpoint-microservice/shared/converter.js.map +1 -0
- package/dist/endpoint-microservice/shared/types/json-patch.types.d.ts +21 -0
- package/dist/endpoint-microservice/shared/types/json-patch.types.js +3 -0
- package/dist/endpoint-microservice/shared/types/json-patch.types.js.map +1 -0
- package/dist/endpoint-microservice/shared/types/json.types.d.ts +6 -0
- package/dist/endpoint-microservice/shared/types/json.types.js +3 -0
- package/dist/endpoint-microservice/shared/types/json.types.js.map +1 -0
- package/dist/endpoint-microservice/shared/types/schema.types.d.ts +28 -0
- package/dist/endpoint-microservice/shared/types/schema.types.js +3 -0
- package/dist/endpoint-microservice/shared/types/schema.types.js.map +1 -0
- package/dist/endpoint-microservice/shared/utils/stringUtils.d.ts +3 -0
- package/dist/endpoint-microservice/shared/utils/stringUtils.js +37 -0
- package/dist/endpoint-microservice/shared/utils/stringUtils.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +5 -2
- package/dist/endpoint-microservice/shared/types/json-schema-type.d.ts +0 -24
- package/dist/endpoint-microservice/shared/types/json-schema-type.js.map +0 -1
@@ -0,0 +1,25 @@
|
|
1
|
+
import { JsonArraySchema, JsonBooleanSchema, JsonNumberSchema, JsonObjectSchema, JsonSchema, JsonStringSchema } from '../endpoint-microservice/shared/types/schema.types';
|
2
|
+
import { JsonPatchAdd, JsonPatchMove, JsonPatchRemove, JsonPatchReplace } from '../endpoint-microservice/shared/types/json-patch.types';
|
3
|
+
export declare const getReplacePatch: ({ path, value, }: {
|
4
|
+
path: string;
|
5
|
+
value: JsonSchema;
|
6
|
+
}) => JsonPatchReplace;
|
7
|
+
export declare const getRemovePatch: ({ path, }: {
|
8
|
+
path: string;
|
9
|
+
}) => JsonPatchRemove;
|
10
|
+
export declare const getAddPatch: ({ path, value, }: {
|
11
|
+
path: string;
|
12
|
+
value: JsonSchema;
|
13
|
+
}) => JsonPatchAdd;
|
14
|
+
export declare const getMovePatch: ({ from, path, }: {
|
15
|
+
from: string;
|
16
|
+
path: string;
|
17
|
+
}) => JsonPatchMove;
|
18
|
+
export declare const getStringSchema: ({ defaultValue, foreignKey, }?: {
|
19
|
+
defaultValue?: string;
|
20
|
+
foreignKey?: string;
|
21
|
+
}) => JsonStringSchema;
|
22
|
+
export declare const getNumberSchema: (defaultValue?: number) => JsonNumberSchema;
|
23
|
+
export declare const getBooleanSchema: (defaultValue?: boolean) => JsonBooleanSchema;
|
24
|
+
export declare const getObjectSchema: (properties: Record<string, JsonSchema>) => JsonObjectSchema;
|
25
|
+
export declare const getArraySchema: (items: JsonSchema) => JsonArraySchema;
|
@@ -0,0 +1,60 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getArraySchema = exports.getObjectSchema = exports.getBooleanSchema = exports.getNumberSchema = exports.getStringSchema = exports.getMovePatch = exports.getAddPatch = exports.getRemovePatch = exports.getReplacePatch = void 0;
|
4
|
+
const getReplacePatch = ({ path, value, }) => ({
|
5
|
+
op: 'replace',
|
6
|
+
path,
|
7
|
+
value,
|
8
|
+
});
|
9
|
+
exports.getReplacePatch = getReplacePatch;
|
10
|
+
const getRemovePatch = ({ path, }) => ({
|
11
|
+
op: 'remove',
|
12
|
+
path,
|
13
|
+
});
|
14
|
+
exports.getRemovePatch = getRemovePatch;
|
15
|
+
const getAddPatch = ({ path, value, }) => ({
|
16
|
+
op: 'add',
|
17
|
+
path,
|
18
|
+
value,
|
19
|
+
});
|
20
|
+
exports.getAddPatch = getAddPatch;
|
21
|
+
const getMovePatch = ({ from, path, }) => ({
|
22
|
+
op: 'move',
|
23
|
+
from,
|
24
|
+
path,
|
25
|
+
});
|
26
|
+
exports.getMovePatch = getMovePatch;
|
27
|
+
const getStringSchema = ({ defaultValue = '', foreignKey, } = {}) => {
|
28
|
+
const schema = {
|
29
|
+
type: 'string',
|
30
|
+
default: defaultValue,
|
31
|
+
};
|
32
|
+
if (foreignKey) {
|
33
|
+
schema.foreignKey = foreignKey;
|
34
|
+
}
|
35
|
+
return schema;
|
36
|
+
};
|
37
|
+
exports.getStringSchema = getStringSchema;
|
38
|
+
const getNumberSchema = (defaultValue = 0) => ({
|
39
|
+
type: 'number',
|
40
|
+
default: defaultValue,
|
41
|
+
});
|
42
|
+
exports.getNumberSchema = getNumberSchema;
|
43
|
+
const getBooleanSchema = (defaultValue = false) => ({
|
44
|
+
type: 'boolean',
|
45
|
+
default: defaultValue,
|
46
|
+
});
|
47
|
+
exports.getBooleanSchema = getBooleanSchema;
|
48
|
+
const getObjectSchema = (properties) => ({
|
49
|
+
type: 'object',
|
50
|
+
additionalProperties: false,
|
51
|
+
required: Object.keys(properties).sort((a, b) => a.localeCompare(b)),
|
52
|
+
properties,
|
53
|
+
});
|
54
|
+
exports.getObjectSchema = getObjectSchema;
|
55
|
+
const getArraySchema = (items) => ({
|
56
|
+
type: 'array',
|
57
|
+
items,
|
58
|
+
});
|
59
|
+
exports.getArraySchema = getArraySchema;
|
60
|
+
//# sourceMappingURL=schema.mocks.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"schema.mocks.js","sourceRoot":"","sources":["../../src/__tests__/schema.mocks.ts"],"names":[],"mappings":";;;AAeO,MAAM,eAAe,GAAG,CAAC,EAC9B,IAAI,EACJ,KAAK,GAIN,EAAoB,EAAE,CAAC,CAAC;IACvB,EAAE,EAAE,SAAS;IACb,IAAI;IACJ,KAAK;CACN,CAAC,CAAC;AAVU,QAAA,eAAe,mBAUzB;AAEI,MAAM,cAAc,GAAG,CAAC,EAC7B,IAAI,GAGL,EAAmB,EAAE,CAAC,CAAC;IACtB,EAAE,EAAE,QAAQ;IACZ,IAAI;CACL,CAAC,CAAC;AAPU,QAAA,cAAc,kBAOxB;AAEI,MAAM,WAAW,GAAG,CAAC,EAC1B,IAAI,EACJ,KAAK,GAIN,EAAgB,EAAE,CAAC,CAAC;IACnB,EAAE,EAAE,KAAK;IACT,IAAI;IACJ,KAAK;CACN,CAAC,CAAC;AAVU,QAAA,WAAW,eAUrB;AAEI,MAAM,YAAY,GAAG,CAAC,EAC3B,IAAI,EACJ,IAAI,GAIL,EAAiB,EAAE,CAAC,CAAC;IACpB,EAAE,EAAE,MAAM;IACV,IAAI;IACJ,IAAI;CACL,CAAC,CAAC;AAVU,QAAA,YAAY,gBAUtB;AAEI,MAAM,eAAe,GAAG,CAAC,EAC9B,YAAY,GAAG,EAAE,EACjB,UAAU,MAIR,EAAE,EAAoB,EAAE;IAC1B,MAAM,MAAM,GAAqB;QAC/B,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,YAAY;KACtB,CAAC;IAEF,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAjBW,QAAA,eAAe,mBAiB1B;AAEK,MAAM,eAAe,GAAG,CAC7B,eAAuB,CAAC,EACN,EAAE,CAAC,CAAC;IACtB,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,YAAY;CACtB,CAAC,CAAC;AALU,QAAA,eAAe,mBAKzB;AAEI,MAAM,gBAAgB,GAAG,CAC9B,eAAwB,KAAK,EACV,EAAE,CAAC,CAAC;IACvB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,YAAY;CACtB,CAAC,CAAC;AALU,QAAA,gBAAgB,oBAK1B;AAEI,MAAM,eAAe,GAAG,CAC7B,UAAsC,EACpB,EAAE,CAAC,CAAC;IACtB,IAAI,EAAE,QAAQ;IACd,oBAAoB,EAAE,KAAK;IAC3B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACpE,UAAU;CACX,CAAC,CAAC;AAPU,QAAA,eAAe,mBAOzB;AAEI,MAAM,cAAc,GAAG,CAAC,KAAiB,EAAmB,EAAE,CAAC,CAAC;IACrE,IAAI,EAAE,OAAO;IACb,KAAK;CACN,CAAC,CAAC;AAHU,QAAA,cAAc,kBAGxB"}
|
@@ -55,7 +55,13 @@ let GraphqlEndpointService = GraphqlEndpointService_1 = class GraphqlEndpointSer
|
|
55
55
|
const dbEndpoint = await this.getDbEndpoint(endpointId);
|
56
56
|
const { revision: { branch, ...revision }, } = dbEndpoint;
|
57
57
|
const url = this.getUrl(branch.project.organizationId, branch.project.name, branch.name, this.getPostfix(revision));
|
58
|
-
const apollo = await this._run(
|
58
|
+
const apollo = await this._run({
|
59
|
+
projectId: branch.projectId,
|
60
|
+
projectName: branch.project.name,
|
61
|
+
endpointId,
|
62
|
+
isDraft: revision.isDraft,
|
63
|
+
revisionId: revision.id,
|
64
|
+
});
|
59
65
|
this.startedEndpointIds.push(endpointId);
|
60
66
|
this.map.set(url, {
|
61
67
|
middleware: (0, express4_1.expressMiddleware)(apollo, {
|
@@ -68,10 +74,8 @@ let GraphqlEndpointService = GraphqlEndpointService_1 = class GraphqlEndpointSer
|
|
68
74
|
});
|
69
75
|
this.logger.log(`started endpoint name=${url} endpointId=${endpointId}`);
|
70
76
|
}
|
71
|
-
async _run(
|
72
|
-
const graphqlSchema = await this.queryBus.execute(new impl_1.GetGraphqlSchemaQuery(
|
73
|
-
revisionId,
|
74
|
-
}));
|
77
|
+
async _run(options) {
|
78
|
+
const graphqlSchema = await this.queryBus.execute(new impl_1.GetGraphqlSchemaQuery(options));
|
75
79
|
const tables = Object.keys(graphqlSchema.getQueryType().getFields()).filter((field) => field !== '_service');
|
76
80
|
const table = tables[0] || 'Table';
|
77
81
|
const server = new server_1.ApolloServer({
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"graphql-endpoint.service.js","sourceRoot":"","sources":["../../../src/endpoint-microservice/graphql/graphql-endpoint.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAA8C;AAC9C,uEAAsG;AACtG,sDAA4D;AAC5D,2CAAoD;AACpD,uCAAwC;AAGxC,+DAAkF;AAClF,yCAAuF;AACvF,sFAAwG;AACxG,+DAAmF;AAG5E,IAAM,sBAAsB,8BAA5B,MAAM,sBAAsB;IASjC,YACmB,MAAqB,EACrB,QAAkB,EAClB,oBAA0C;QAF1C,WAAM,GAAN,MAAM,CAAe;QACrB,aAAQ,GAAR,QAAQ,CAAU;QAClB,yBAAoB,GAApB,oBAAoB,CAAsB;QAX5C,WAAM,GAAG,IAAI,eAAM,CAAC,wBAAsB,CAAC,IAAI,CAAC,CAAC;QAEjD,QAAG,GAAG,IAAI,GAAG,EAG3B,CAAC;QACI,uBAAkB,GAAa,EAAE,CAAC;IAMvC,CAAC;IAEG,qBAAqB,CAC1B,cAAsB,EACtB,WAAmB,EACnB,UAAkB,EAClB,OAAe;QAEf,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CACvB,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAC9D,CAAC;QACF,OAAO,IAAI,EAAE,UAAU,CAAC;IAC1B,CAAC;IAEM,aAAa,CAAC,UAAkB;QACrC,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,UAAkB;QAC1C,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,iBAAiB,CAAC,CAAC;QAClD,CAAC;
|
1
|
+
{"version":3,"file":"graphql-endpoint.service.js","sourceRoot":"","sources":["../../../src/endpoint-microservice/graphql/graphql-endpoint.service.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const DEFAULT_FIRST = 100;
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/endpoint-microservice/graphql/graphql-schema-converter/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG,GAAG,CAAC"}
|
package/dist/endpoint-microservice/graphql/graphql-schema-converter/graphql-schema.converter.d.ts
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
/// <reference types="node" />
|
2
|
+
import { AsyncLocalStorage } from 'async_hooks';
|
3
|
+
import { GraphQLObjectType, GraphQLSchema } from 'graphql/type';
|
4
|
+
import { ProxyCoreApiService } from '../../../endpoint-microservice/core-api/proxy-core-api.service';
|
5
|
+
import { Converter, ConverterContextType } from '../../../endpoint-microservice/shared/converter';
|
6
|
+
interface GraphQLSchemaConverterContext extends ConverterContextType {
|
7
|
+
pageInfo: GraphQLObjectType;
|
8
|
+
}
|
9
|
+
export declare class GraphQLSchemaConverter implements Converter<GraphQLSchema> {
|
10
|
+
private readonly asyncLocalStorage;
|
11
|
+
private readonly proxyCoreApi;
|
12
|
+
private readonly logger;
|
13
|
+
constructor(asyncLocalStorage: AsyncLocalStorage<GraphQLSchemaConverterContext>, proxyCoreApi: ProxyCoreApiService);
|
14
|
+
convert(context: ConverterContextType): Promise<GraphQLSchema>;
|
15
|
+
private createSchema;
|
16
|
+
private createQueryFields;
|
17
|
+
private createListField;
|
18
|
+
private getListResolver;
|
19
|
+
private getListConnection;
|
20
|
+
private getListArgs;
|
21
|
+
private getEdgeType;
|
22
|
+
private getNodeType;
|
23
|
+
private getSchema;
|
24
|
+
private getObjectSchema;
|
25
|
+
private get projectName();
|
26
|
+
private toGraphQLError;
|
27
|
+
private get context();
|
28
|
+
}
|
29
|
+
export {};
|
package/dist/endpoint-microservice/graphql/graphql-schema-converter/graphql-schema.converter.js
ADDED
@@ -0,0 +1,199 @@
|
|
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 GraphQLSchemaConverter_1;
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
13
|
+
exports.GraphQLSchemaConverter = void 0;
|
14
|
+
const common_1 = require("@nestjs/common");
|
15
|
+
const async_hooks_1 = require("async_hooks");
|
16
|
+
const error_1 = require("graphql/error");
|
17
|
+
const type_1 = require("graphql/type");
|
18
|
+
const utilities_1 = require("graphql/utilities");
|
19
|
+
const proxy_core_api_service_1 = require("../../core-api/proxy-core-api.service");
|
20
|
+
const constants_1 = require("./constants");
|
21
|
+
const types_1 = require("./types");
|
22
|
+
const utils_1 = require("./utils");
|
23
|
+
const stringUtils_1 = require("../../shared/utils/stringUtils");
|
24
|
+
let GraphQLSchemaConverter = GraphQLSchemaConverter_1 = class GraphQLSchemaConverter {
|
25
|
+
constructor(asyncLocalStorage, proxyCoreApi) {
|
26
|
+
this.asyncLocalStorage = asyncLocalStorage;
|
27
|
+
this.proxyCoreApi = proxyCoreApi;
|
28
|
+
this.logger = new common_1.Logger(GraphQLSchemaConverter_1.name);
|
29
|
+
}
|
30
|
+
async convert(context) {
|
31
|
+
const graphQLSchemaConverterContext = {
|
32
|
+
...context,
|
33
|
+
pageInfo: (0, types_1.getPageInfoType)((0, utils_1.getProjectName)(context.projectName)),
|
34
|
+
};
|
35
|
+
return this.asyncLocalStorage.run(graphQLSchemaConverterContext, async () => {
|
36
|
+
const schema = await this.createSchema();
|
37
|
+
return (0, utilities_1.lexicographicSortSchema)(schema);
|
38
|
+
});
|
39
|
+
}
|
40
|
+
async createSchema() {
|
41
|
+
let cachedSdl = undefined;
|
42
|
+
const schema = new type_1.GraphQLSchema({
|
43
|
+
query: new type_1.GraphQLObjectType({
|
44
|
+
name: 'Query',
|
45
|
+
fields: {
|
46
|
+
...this.createQueryFields(),
|
47
|
+
_service: {
|
48
|
+
type: types_1.ServiceType,
|
49
|
+
resolve: () => {
|
50
|
+
if (!cachedSdl) {
|
51
|
+
cachedSdl = (0, utilities_1.printSchema)(schema);
|
52
|
+
}
|
53
|
+
return { sdl: cachedSdl };
|
54
|
+
},
|
55
|
+
},
|
56
|
+
},
|
57
|
+
}),
|
58
|
+
});
|
59
|
+
return schema;
|
60
|
+
}
|
61
|
+
createQueryFields() {
|
62
|
+
const ids = this.context.tables.map((table) => table.id);
|
63
|
+
return this.context.tables
|
64
|
+
.filter((table) => !(0, utils_1.isEmptyObject)(table.schema))
|
65
|
+
.reduce((fields, table) => {
|
66
|
+
const safeName = (0, stringUtils_1.hasDuplicateKeyCaseInsensitive)(ids, table.id)
|
67
|
+
? (0, utils_1.getSafetyName)(table.id, 'INVALID_TABLE_NAME')
|
68
|
+
: (0, utils_1.getSafetyName)(table.id.toLowerCase(), 'INVALID_TABLE_NAME');
|
69
|
+
const pluralName = (0, stringUtils_1.pluralize)(safeName);
|
70
|
+
const capitalizedSafeName = (0, stringUtils_1.hasDuplicateKeyCaseInsensitive)(ids, table.id)
|
71
|
+
? safeName
|
72
|
+
: (0, stringUtils_1.capitalize)(safeName);
|
73
|
+
const pluralCapitalizedSafeName = (0, stringUtils_1.pluralize)(capitalizedSafeName);
|
74
|
+
fields[pluralName] = this.createListField(table, capitalizedSafeName, pluralCapitalizedSafeName);
|
75
|
+
return fields;
|
76
|
+
}, {});
|
77
|
+
}
|
78
|
+
createListField(table, safetyTableId, pluralSafetyTableId) {
|
79
|
+
const ConnectionType = this.getListConnection(table, safetyTableId, pluralSafetyTableId);
|
80
|
+
return {
|
81
|
+
type: new type_1.GraphQLNonNull(ConnectionType),
|
82
|
+
args: { data: { type: this.getListArgs(pluralSafetyTableId) } },
|
83
|
+
resolve: this.getListResolver(table),
|
84
|
+
};
|
85
|
+
}
|
86
|
+
getListResolver(table) {
|
87
|
+
const revisionId = this.context.revisionId;
|
88
|
+
return async (_, { data }, ctx) => {
|
89
|
+
const { data: response, error } = await this.proxyCoreApi.rows({
|
90
|
+
revisionId,
|
91
|
+
tableId: table.id,
|
92
|
+
first: data?.first || constants_1.DEFAULT_FIRST,
|
93
|
+
after: data?.after,
|
94
|
+
}, { headers: ctx.headers });
|
95
|
+
if (error)
|
96
|
+
throw this.toGraphQLError(error);
|
97
|
+
return response;
|
98
|
+
};
|
99
|
+
}
|
100
|
+
getListConnection(data, safetyTableId, pluralSafetyTableId) {
|
101
|
+
return new type_1.GraphQLObjectType({
|
102
|
+
name: `${this.projectName}${pluralSafetyTableId}Connection`,
|
103
|
+
fields: {
|
104
|
+
edges: {
|
105
|
+
type: new type_1.GraphQLNonNull(new type_1.GraphQLList(new type_1.GraphQLNonNull(this.getEdgeType(data, safetyTableId, pluralSafetyTableId)))),
|
106
|
+
},
|
107
|
+
pageInfo: { type: new type_1.GraphQLNonNull(this.context.pageInfo) },
|
108
|
+
totalCount: { type: new type_1.GraphQLNonNull(type_1.GraphQLFloat) },
|
109
|
+
},
|
110
|
+
});
|
111
|
+
}
|
112
|
+
getListArgs(name) {
|
113
|
+
return new type_1.GraphQLInputObjectType({
|
114
|
+
name: `${this.projectName}Get${name}Input`,
|
115
|
+
fields: {
|
116
|
+
first: { type: type_1.GraphQLFloat },
|
117
|
+
after: { type: type_1.GraphQLString },
|
118
|
+
},
|
119
|
+
});
|
120
|
+
}
|
121
|
+
getEdgeType(data, safetyTableId, pluralSafetyTableId) {
|
122
|
+
return new type_1.GraphQLObjectType({
|
123
|
+
name: `${this.projectName}${pluralSafetyTableId}Edge`,
|
124
|
+
fields: {
|
125
|
+
node: {
|
126
|
+
type: new type_1.GraphQLNonNull(this.getNodeType(data, safetyTableId, pluralSafetyTableId)),
|
127
|
+
},
|
128
|
+
cursor: { type: new type_1.GraphQLNonNull(type_1.GraphQLString) },
|
129
|
+
},
|
130
|
+
});
|
131
|
+
}
|
132
|
+
getNodeType(data, safetyTableId, pluralSafetyTableId) {
|
133
|
+
return new type_1.GraphQLObjectType({
|
134
|
+
name: `${this.projectName}${pluralSafetyTableId}Node`,
|
135
|
+
fields: () => ({
|
136
|
+
versionId: { type: new type_1.GraphQLNonNull(type_1.GraphQLString) },
|
137
|
+
id: { type: new type_1.GraphQLNonNull(type_1.GraphQLString) },
|
138
|
+
createdAt: { type: new type_1.GraphQLNonNull(types_1.DateTimeType) },
|
139
|
+
data: {
|
140
|
+
type: this.getSchema(`${this.projectName}${safetyTableId}`, data.schema),
|
141
|
+
},
|
142
|
+
}),
|
143
|
+
});
|
144
|
+
}
|
145
|
+
getSchema(name, schema, postfix = '') {
|
146
|
+
switch (schema.type) {
|
147
|
+
case 'string':
|
148
|
+
return new type_1.GraphQLNonNull(type_1.GraphQLString);
|
149
|
+
case 'number':
|
150
|
+
return new type_1.GraphQLNonNull(type_1.GraphQLFloat);
|
151
|
+
case 'boolean':
|
152
|
+
return new type_1.GraphQLNonNull(type_1.GraphQLBoolean);
|
153
|
+
case 'object':
|
154
|
+
return new type_1.GraphQLNonNull(this.getObjectSchema(`${name}${postfix}`, schema));
|
155
|
+
case 'array':
|
156
|
+
return new type_1.GraphQLNonNull(new type_1.GraphQLList(this.getSchema(`${name}${postfix}`, schema.items, 'Items')));
|
157
|
+
default:
|
158
|
+
this.logger.error(`Unknown schema: ${schema}`);
|
159
|
+
}
|
160
|
+
}
|
161
|
+
getObjectSchema(name, schema) {
|
162
|
+
const ids = Object.keys(schema.properties);
|
163
|
+
return new type_1.GraphQLObjectType({
|
164
|
+
name,
|
165
|
+
fields: () => Object.entries(schema.properties).reduce((fields, [key, itemSchema]) => {
|
166
|
+
const safetyKey = (0, utils_1.getSafetyName)(key, 'INVALID_FIELD_NAME');
|
167
|
+
const capitalizedSafetyKey = (0, stringUtils_1.hasDuplicateKeyCaseInsensitive)(ids, safetyKey)
|
168
|
+
? safetyKey
|
169
|
+
: (0, stringUtils_1.capitalize)(safetyKey);
|
170
|
+
const type = this.getSchema(`${name}${capitalizedSafetyKey}`, itemSchema);
|
171
|
+
fields[safetyKey] = { type };
|
172
|
+
return fields;
|
173
|
+
}, {}),
|
174
|
+
});
|
175
|
+
}
|
176
|
+
get projectName() {
|
177
|
+
return (0, utils_1.getProjectName)(this.context.projectName);
|
178
|
+
}
|
179
|
+
toGraphQLError(err) {
|
180
|
+
this.logger.error(err);
|
181
|
+
return new error_1.GraphQLError(err.message, {
|
182
|
+
extensions: { code: err.error, originalError: err },
|
183
|
+
});
|
184
|
+
}
|
185
|
+
get context() {
|
186
|
+
const context = this.asyncLocalStorage.getStore();
|
187
|
+
if (!context) {
|
188
|
+
throw new common_1.InternalServerErrorException('GraphQLSchemaConverterContext not found. It appears that an attempt was made to access a context outside of AsyncLocalStorage.run.');
|
189
|
+
}
|
190
|
+
return context;
|
191
|
+
}
|
192
|
+
};
|
193
|
+
exports.GraphQLSchemaConverter = GraphQLSchemaConverter;
|
194
|
+
exports.GraphQLSchemaConverter = GraphQLSchemaConverter = GraphQLSchemaConverter_1 = __decorate([
|
195
|
+
(0, common_1.Injectable)(),
|
196
|
+
__metadata("design:paramtypes", [async_hooks_1.AsyncLocalStorage,
|
197
|
+
proxy_core_api_service_1.ProxyCoreApiService])
|
198
|
+
], GraphQLSchemaConverter);
|
199
|
+
//# sourceMappingURL=graphql-schema.converter.js.map
|
package/dist/endpoint-microservice/graphql/graphql-schema-converter/graphql-schema.converter.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"graphql-schema.converter.js","sourceRoot":"","sources":["../../../../src/endpoint-microservice/graphql/graphql-schema-converter/graphql-schema.converter.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import { GraphQLObjectType, GraphQLScalarType } from 'graphql/type';
|
2
|
+
export declare const getPageInfoType: (projectName: string) => GraphQLObjectType<any, any>;
|
3
|
+
export declare const DateTimeType: GraphQLScalarType<unknown, unknown>;
|
4
|
+
export declare const ServiceType: GraphQLObjectType<any, any>;
|
5
|
+
export type InputType = {
|
6
|
+
data?: {
|
7
|
+
first?: number;
|
8
|
+
after?: string;
|
9
|
+
};
|
10
|
+
};
|
11
|
+
export type ContextType = {
|
12
|
+
headers: Record<string, string>;
|
13
|
+
};
|
@@ -0,0 +1,26 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.ServiceType = exports.DateTimeType = exports.getPageInfoType = void 0;
|
4
|
+
const type_1 = require("graphql/type");
|
5
|
+
const getPageInfoType = (projectName) => {
|
6
|
+
return new type_1.GraphQLObjectType({
|
7
|
+
name: `${projectName}PageInfo`,
|
8
|
+
fields: {
|
9
|
+
startCursor: { type: type_1.GraphQLString },
|
10
|
+
endCursor: { type: type_1.GraphQLString },
|
11
|
+
hasNextPage: { type: new type_1.GraphQLNonNull(type_1.GraphQLBoolean) },
|
12
|
+
hasPreviousPage: { type: new type_1.GraphQLNonNull(type_1.GraphQLBoolean) },
|
13
|
+
},
|
14
|
+
});
|
15
|
+
};
|
16
|
+
exports.getPageInfoType = getPageInfoType;
|
17
|
+
exports.DateTimeType = new type_1.GraphQLScalarType({
|
18
|
+
name: 'DataTime',
|
19
|
+
});
|
20
|
+
exports.ServiceType = new type_1.GraphQLObjectType({
|
21
|
+
name: '_Service',
|
22
|
+
fields: {
|
23
|
+
sdl: { type: type_1.GraphQLString },
|
24
|
+
},
|
25
|
+
});
|
26
|
+
//# sourceMappingURL=types.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/endpoint-microservice/graphql/graphql-schema-converter/types.ts"],"names":[],"mappings":";;;AAAA,uCAMsB;AAEf,MAAM,eAAe,GAAG,CAAC,WAAmB,EAAE,EAAE;IACrD,OAAO,IAAI,wBAAiB,CAAC;QAC3B,IAAI,EAAE,GAAG,WAAW,UAAU;QAC9B,MAAM,EAAE;YACN,WAAW,EAAE,EAAE,IAAI,EAAE,oBAAa,EAAE;YACpC,SAAS,EAAE,EAAE,IAAI,EAAE,oBAAa,EAAE;YAClC,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,qBAAc,CAAC,qBAAc,CAAC,EAAE;YACzD,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,qBAAc,CAAC,qBAAc,CAAC,EAAE;SAC9D;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAVW,QAAA,eAAe,mBAU1B;AAEW,QAAA,YAAY,GAAG,IAAI,wBAAiB,CAAC;IAChD,IAAI,EAAE,UAAU;CACjB,CAAC,CAAC;AAEU,QAAA,WAAW,GAAG,IAAI,wBAAiB,CAAC;IAC/C,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE;QACN,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAa,EAAE;KAC7B;CACF,CAAC,CAAC"}
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import { JsonSchema } from '../../../endpoint-microservice/shared/types/schema.types';
|
2
|
+
export declare const isEmptyObject: (schema: JsonSchema) => boolean;
|
3
|
+
export declare const getSafetyName: (name: string, prefix: string) => string;
|
4
|
+
export declare const getProjectName: (projectName: string) => string;
|
@@ -0,0 +1,31 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getProjectName = exports.getSafetyName = exports.isEmptyObject = void 0;
|
4
|
+
const stringUtils_1 = require("../../shared/utils/stringUtils");
|
5
|
+
const isEmptyObject = (schema) => {
|
6
|
+
if (schema.type === 'object' && !Object.keys(schema.properties).length) {
|
7
|
+
return true;
|
8
|
+
}
|
9
|
+
if (schema.type === 'array') {
|
10
|
+
return (0, exports.isEmptyObject)(schema.items);
|
11
|
+
}
|
12
|
+
return false;
|
13
|
+
};
|
14
|
+
exports.isEmptyObject = isEmptyObject;
|
15
|
+
const startName = /[_a-zA-Z]/;
|
16
|
+
const containName = /^\w+$/;
|
17
|
+
const getSafetyName = (name, prefix) => {
|
18
|
+
if (!startName.test(name[0])) {
|
19
|
+
return (0, exports.getSafetyName)(`${prefix}_${name}`, prefix);
|
20
|
+
}
|
21
|
+
if (!containName.test(name)) {
|
22
|
+
return (0, exports.getSafetyName)(name.replace(/\W/g, '_'), prefix);
|
23
|
+
}
|
24
|
+
return name;
|
25
|
+
};
|
26
|
+
exports.getSafetyName = getSafetyName;
|
27
|
+
const getProjectName = (projectName) => {
|
28
|
+
return (0, exports.getSafetyName)((0, stringUtils_1.capitalize)(projectName), 'INVALID_PROJECT_NAME');
|
29
|
+
};
|
30
|
+
exports.getProjectName = getProjectName;
|
31
|
+
//# sourceMappingURL=utils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/endpoint-microservice/graphql/graphql-schema-converter/utils.ts"],"names":[],"mappings":";;;AACA,gEAAgF;AAEzE,MAAM,aAAa,GAAG,CAAC,MAAkB,EAAW,EAAE;IAC3D,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,OAAO,IAAA,qBAAa,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAVW,QAAA,aAAa,iBAUxB;AAEF,MAAM,SAAS,GAAG,WAAW,CAAC;AAC9B,MAAM,WAAW,GAAG,OAAO,CAAC;AAErB,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,MAAc,EAAU,EAAE;IACpE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAA,qBAAa,EAAC,GAAG,MAAM,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAA,qBAAa,EAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAVW,QAAA,aAAa,iBAUxB;AAEK,MAAM,cAAc,GAAG,CAAC,WAAmB,EAAE,EAAE;IACpD,OAAO,IAAA,qBAAa,EAAC,IAAA,wBAAU,EAAC,WAAW,CAAC,EAAE,sBAAsB,CAAC,CAAC;AACxE,CAAC,CAAC;AAFW,QAAA,cAAc,kBAEzB"}
|
@@ -9,11 +9,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.GraphqlModule = void 0;
|
10
10
|
const common_1 = require("@nestjs/common");
|
11
11
|
const cqrs_1 = require("@nestjs/cqrs");
|
12
|
+
const async_hooks_1 = require("async_hooks");
|
12
13
|
const core_api_module_1 = require("../core-api/core-api.module");
|
13
14
|
const database_module_1 = require("../database/database.module");
|
14
15
|
const handlers_1 = require("./commands/handlers");
|
15
16
|
const graphql_endpoint_controller_1 = require("./graphql-endpoint.controller");
|
16
17
|
const graphql_endpoint_service_1 = require("./graphql-endpoint.service");
|
18
|
+
const graphql_schema_converter_1 = require("./graphql-schema-converter/graphql-schema.converter");
|
17
19
|
const handlers_2 = require("./queries/handlers");
|
18
20
|
const metrics_module_1 = require("../metrics/metrics.module");
|
19
21
|
let GraphqlModule = class GraphqlModule {
|
@@ -22,7 +24,16 @@ exports.GraphqlModule = GraphqlModule;
|
|
22
24
|
exports.GraphqlModule = GraphqlModule = __decorate([
|
23
25
|
(0, common_1.Module)({
|
24
26
|
imports: [cqrs_1.CqrsModule, database_module_1.DatabaseModule, core_api_module_1.CoreApiModule, metrics_module_1.MetricsModule],
|
25
|
-
providers: [
|
27
|
+
providers: [
|
28
|
+
{
|
29
|
+
provide: async_hooks_1.AsyncLocalStorage,
|
30
|
+
useValue: new async_hooks_1.AsyncLocalStorage(),
|
31
|
+
},
|
32
|
+
graphql_schema_converter_1.GraphQLSchemaConverter,
|
33
|
+
graphql_endpoint_service_1.GraphqlEndpointService,
|
34
|
+
...handlers_1.GRAPHQL_COMMANDS,
|
35
|
+
...handlers_2.GRAPHQL_QUERIES,
|
36
|
+
],
|
26
37
|
controllers: [graphql_endpoint_controller_1.GraphqlEndpointController],
|
27
38
|
})
|
28
39
|
], GraphqlModule);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"graphql.module.js","sourceRoot":"","sources":["../../../src/endpoint-microservice/graphql/graphql.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,uCAA0C;AAC1C,iEAAmF;AACnF,iEAAoF;AACpF,kDAAuF;AACvF,+EAA0G;AAC1G,yEAAoG;AACpG,iDAAqF;AACrF,8DAAiF;
|
1
|
+
{"version":3,"file":"graphql.module.js","sourceRoot":"","sources":["../../../src/endpoint-microservice/graphql/graphql.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,uCAA0C;AAC1C,6CAAgD;AAChD,iEAAmF;AACnF,iEAAoF;AACpF,kDAAuF;AACvF,+EAA0G;AAC1G,yEAAoG;AACpG,kGAA6H;AAC7H,iDAAqF;AACrF,8DAAiF;AAgB1E,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,sCAAa;wBAAb,aAAa;IAdzB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,iBAAU,EAAE,gCAAc,EAAE,+BAAa,EAAE,8BAAa,CAAC;QACnE,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,+BAAiB;gBAC1B,QAAQ,EAAE,IAAI,+BAAiB,EAAE;aAClC;YACD,iDAAsB;YACtB,iDAAsB;YACtB,GAAG,2BAAgB;YACnB,GAAG,0BAAe;SACnB;QACD,WAAW,EAAE,CAAC,uDAAyB,CAAC;KACzC,CAAC;GACW,aAAa,CAAG"}
|
@@ -1,27 +1,18 @@
|
|
1
1
|
import { IQueryHandler } from '@nestjs/cqrs';
|
2
2
|
import { GraphQLSchema } from 'graphql/type';
|
3
3
|
import { InternalCoreApiService } from '../../../../endpoint-microservice/core-api/internal-core-api.service';
|
4
|
-
import {
|
4
|
+
import { GraphQLSchemaConverter } from '../../../../endpoint-microservice/graphql/graphql-schema-converter/graphql-schema.converter';
|
5
5
|
import { GetGraphqlSchemaQuery } from '../../../../endpoint-microservice/graphql/queries/impl';
|
6
|
-
import {
|
6
|
+
import { JsonSchema } from '../../../../endpoint-microservice/shared/types/schema.types';
|
7
7
|
export type GetJsonSchemasReturnType = {
|
8
8
|
id: string;
|
9
9
|
versionId: string;
|
10
|
-
data:
|
10
|
+
data: JsonSchema;
|
11
11
|
}[];
|
12
12
|
export declare class GetGraphqlSchemaHandler implements IQueryHandler<GetGraphqlSchemaQuery> {
|
13
13
|
private readonly internalCoreApi;
|
14
|
-
private readonly
|
15
|
-
|
16
|
-
constructor(internalCoreApi: InternalCoreApiService, proxyCoreApi: ProxyCoreApiService);
|
14
|
+
private readonly converter;
|
15
|
+
constructor(internalCoreApi: InternalCoreApiService, converter: GraphQLSchemaConverter);
|
17
16
|
execute({ data, }: GetGraphqlSchemaQuery): Promise<GraphQLSchema>;
|
18
|
-
private getNodeType;
|
19
|
-
private getEdgeType;
|
20
|
-
private getTableConnection;
|
21
|
-
private getTableInput;
|
22
|
-
private getQueryFields;
|
23
|
-
private getRootSchema;
|
24
|
-
private getArrayItems;
|
25
|
-
private getObjectSchema;
|
26
17
|
private getSchemas;
|
27
18
|
}
|