@kubun/graphql 0.3.2 → 0.3.4
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/schema.d.ts +5 -5
- package/lib/schema.d.ts.map +1 -1
- package/lib/schema.js +41 -29
- package/package.json +3 -3
package/lib/schema.d.ts
CHANGED
|
@@ -86,21 +86,21 @@ export declare class SchemaBuilder {
|
|
|
86
86
|
_buildDocumentFields(id: string, model: DocumentModel, name: string): GraphQLFieldConfigMap<DocumentNode, Context>;
|
|
87
87
|
_buildDocumentDataObject(id: string, model: DocumentModel, name: string): GraphQLInterfaceType | GraphQLObjectType<DocumentData, Context>;
|
|
88
88
|
_buildDocumentInput(id: string, model: DocumentModel): void;
|
|
89
|
-
_buildReferenceFilterInput(path: string, parentName?: string): GraphQLInputType;
|
|
89
|
+
_buildReferenceFilterInput(path: string, parentName?: string): GraphQLInputType | null;
|
|
90
90
|
_buildReferenceOrderByInput(path: string, parentName?: string): GraphQLInputType | null;
|
|
91
91
|
_buildObjectFilterInput(id: string, schema: DocumentModelSchema | ObjectModel, parentName?: string, isDocument?: boolean): GraphQLInputObjectType;
|
|
92
92
|
_buildObjectOrderByInput(id: string, schema: DocumentModelSchema | ObjectModel, parentName?: string, isDocument?: boolean): GraphQLInputObjectType;
|
|
93
93
|
_buildSetInputObjectType(id: string, withFields: Array<string>, relationField?: string): GraphQLInputObjectType;
|
|
94
94
|
_buildReference(id: string, schema: TypeModel, parentName?: string): GraphQLOutputType;
|
|
95
|
-
_buildScalar(id: string, schema: ScalarModel, asInput?: boolean): GraphQLScalarType;
|
|
95
|
+
_buildScalar(id: string, schema: ScalarModel, parentName?: string, asInput?: boolean): GraphQLScalarType;
|
|
96
96
|
_buildArray(schema: ArrayModel, parentName?: string): GraphQLList<GraphQLNonNull<GraphQLOutputType>>;
|
|
97
97
|
_buildObject(id: string, schema: ObjectModel, parentName?: string): GraphQLObjectType;
|
|
98
|
-
_buildObjectFields(id: string, schema: DocumentModelSchema | ObjectModel): GraphQLFieldConfigMap<Record<string, unknown>, Context>;
|
|
98
|
+
_buildObjectFields(id: string, schema: DocumentModelSchema | ObjectModel, parentName?: string): GraphQLFieldConfigMap<Record<string, unknown>, Context>;
|
|
99
99
|
_buildRelationFields(fields: GraphQLFieldConfigMap<DocumentNode, Context>, fieldName: string, relation: RelationField): void;
|
|
100
100
|
_buildRelationSubscriptions(fields: GraphQLFieldConfigMap<unknown, Context>, modelID: string, fieldName: string, relation: RelationField): void;
|
|
101
|
-
_buildString(schema: StringModel, asInput: boolean): GraphQLEnumType | GraphQLObjectType | GraphQLScalarType;
|
|
101
|
+
_buildString(schema: StringModel, parentName: string, asInput: boolean): GraphQLEnumType | GraphQLObjectType | GraphQLScalarType;
|
|
102
102
|
_buildCustomString(schema: StringCustomModel, asInput: boolean): GraphQLScalarType<unknown, unknown> | GraphQLObjectType<string, Context> | GraphQLObjectType<AttachmentID, Context>;
|
|
103
|
-
_buildEnumString(schema: StringEnumModel): GraphQLEnumType;
|
|
103
|
+
_buildEnumString(schema: StringEnumModel, parentName?: string): GraphQLEnumType;
|
|
104
104
|
_buildFormatString(schema: StringFormatModel): GraphQLScalarType<unknown, unknown>;
|
|
105
105
|
}
|
|
106
106
|
export declare function createSchema(record: DocumentModelsRecord, aliases?: Record<string, string>): GraphQLSchema;
|
package/lib/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAc,eAAe,EAAY,MAAM,WAAW,CAAA;AAC/E,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,WAAW,EAEX,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,WAAW,EAEX,SAAS,EACV,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EAGL,eAAe,EAEf,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAI1B,sBAAsB,EACtB,KAAK,gBAAgB,EAErB,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,aAAa,EAKd,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,IAAI,EAKV,MAAM,eAAe,CAAA;AAWtB,OAAO,KAAK,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
package/lib/schema.js
CHANGED
|
@@ -16,8 +16,7 @@ const STRING_FORMATS = {
|
|
|
16
16
|
const STRING_TITLES = {
|
|
17
17
|
attachmentid: GraphQLAttachmentID,
|
|
18
18
|
did: GraphQLDID,
|
|
19
|
-
docid: GraphQLDocID
|
|
20
|
-
jsonobject: GraphQLJSONObject
|
|
19
|
+
docid: GraphQLDocID
|
|
21
20
|
};
|
|
22
21
|
function getReferenceID(path) {
|
|
23
22
|
return path.slice(REFERENCE_PREFIX.length);
|
|
@@ -389,6 +388,9 @@ export class SchemaBuilder {
|
|
|
389
388
|
return new GraphQLList(new GraphQLNonNull(itemType));
|
|
390
389
|
}
|
|
391
390
|
if (schema.type === 'object') {
|
|
391
|
+
if (schema.additionalProperties) {
|
|
392
|
+
return GraphQLJSONObject;
|
|
393
|
+
}
|
|
392
394
|
const inputID = isPartial ? `${id}-partial` : id;
|
|
393
395
|
const existing = this._inputObjects[inputID];
|
|
394
396
|
if (existing != null) {
|
|
@@ -409,7 +411,7 @@ export class SchemaBuilder {
|
|
|
409
411
|
this._inputObjects[inputID] = input;
|
|
410
412
|
return input;
|
|
411
413
|
}
|
|
412
|
-
return this._buildScalar(id, schema, true);
|
|
414
|
+
return this._buildScalar(id, schema, parentName, true);
|
|
413
415
|
}
|
|
414
416
|
_buildSharedDefinitions() {
|
|
415
417
|
const nodeDefs = nodeDefinitions(async (id, ctx)=>{
|
|
@@ -798,11 +800,13 @@ export class SchemaBuilder {
|
|
|
798
800
|
_buildReferenceFilterInput(path, parentName = '') {
|
|
799
801
|
const id = getReferenceID(path);
|
|
800
802
|
const schema = this._getReferenceSchema(id);
|
|
803
|
+
let refParentName = parentName;
|
|
801
804
|
if (schema.type === 'object') {
|
|
802
|
-
return this._buildObjectFilterInput(id, schema, parentName);
|
|
805
|
+
return schema.additionalProperties ? null : this._buildObjectFilterInput(id, schema, parentName);
|
|
803
806
|
}
|
|
804
807
|
if (schema.type === 'array') {
|
|
805
808
|
const name = this._aliases[id] ?? pascalCase(parentName + schema.title);
|
|
809
|
+
refParentName = name;
|
|
806
810
|
// const itemType = this._buildReferenceFilterInput(schema.items.$ref, schema.title)
|
|
807
811
|
return new GraphQLInputObjectType({
|
|
808
812
|
name: `${name}Filter`,
|
|
@@ -817,7 +821,7 @@ export class SchemaBuilder {
|
|
|
817
821
|
}
|
|
818
822
|
});
|
|
819
823
|
}
|
|
820
|
-
const scalar = this._buildScalar(id, schema, true);
|
|
824
|
+
const scalar = this._buildScalar(id, schema, refParentName, true);
|
|
821
825
|
const knownFilter = VALUE_FILTER_INPUT_TYPES[scalar.name];
|
|
822
826
|
if (knownFilter != null) {
|
|
823
827
|
return this._inputObjects[knownFilter];
|
|
@@ -835,7 +839,7 @@ export class SchemaBuilder {
|
|
|
835
839
|
case 'array':
|
|
836
840
|
return null;
|
|
837
841
|
case 'object':
|
|
838
|
-
return this._buildObjectOrderByInput(id, schema, parentName);
|
|
842
|
+
return schema.additionalProperties ? null : this._buildObjectOrderByInput(id, schema, parentName);
|
|
839
843
|
default:
|
|
840
844
|
return OrderByDirection;
|
|
841
845
|
}
|
|
@@ -854,9 +858,11 @@ export class SchemaBuilder {
|
|
|
854
858
|
} : {};
|
|
855
859
|
for (const [key, value] of Object.entries(schema.properties)){
|
|
856
860
|
const type = this._buildReferenceFilterInput(value.$ref, name);
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
861
|
+
if (type !== null) {
|
|
862
|
+
fields[key] = {
|
|
863
|
+
type
|
|
864
|
+
};
|
|
865
|
+
}
|
|
860
866
|
}
|
|
861
867
|
const objectInput = new GraphQLInputObjectType({
|
|
862
868
|
name: `${name}ObjectFilter`,
|
|
@@ -951,13 +957,13 @@ export class SchemaBuilder {
|
|
|
951
957
|
this._types[id] = this._buildArray(schema, parentName);
|
|
952
958
|
return this._types[id];
|
|
953
959
|
case 'object':
|
|
954
|
-
this._types[id] = this._buildObject(id, schema, parentName);
|
|
960
|
+
this._types[id] = schema.additionalProperties ? GraphQLJSONObject : this._buildObject(id, schema, parentName);
|
|
955
961
|
return this._types[id];
|
|
956
962
|
default:
|
|
957
|
-
return this._buildScalar(id, schema);
|
|
963
|
+
return this._buildScalar(id, schema, parentName);
|
|
958
964
|
}
|
|
959
965
|
}
|
|
960
|
-
_buildScalar(id, schema, asInput = false) {
|
|
966
|
+
_buildScalar(id, schema, parentName = '', asInput = false) {
|
|
961
967
|
switch(schema.type){
|
|
962
968
|
case 'boolean':
|
|
963
969
|
this._types[id] = GraphQLBoolean;
|
|
@@ -969,7 +975,7 @@ export class SchemaBuilder {
|
|
|
969
975
|
this._types[id] = GraphQLFloat;
|
|
970
976
|
break;
|
|
971
977
|
case 'string':
|
|
972
|
-
this._types[id] = this._buildString(schema, asInput);
|
|
978
|
+
this._types[id] = this._buildString(schema, parentName, asInput);
|
|
973
979
|
break;
|
|
974
980
|
}
|
|
975
981
|
return this._types[id];
|
|
@@ -979,13 +985,14 @@ export class SchemaBuilder {
|
|
|
979
985
|
return new GraphQLList(new GraphQLNonNull(this._getReference(itemRef, pascalCase(parentName + schema.title))));
|
|
980
986
|
}
|
|
981
987
|
_buildObject(id, schema, parentName = '') {
|
|
982
|
-
const
|
|
988
|
+
const name = pascalCase(parentName + schema.title);
|
|
989
|
+
const fields = this._buildObjectFields(id, schema, name);
|
|
983
990
|
return new GraphQLObjectType({
|
|
984
|
-
name
|
|
991
|
+
name,
|
|
985
992
|
fields
|
|
986
993
|
});
|
|
987
994
|
}
|
|
988
|
-
_buildObjectFields(id, schema) {
|
|
995
|
+
_buildObjectFields(id, schema, parentName = '') {
|
|
989
996
|
const required = schema.required ?? [];
|
|
990
997
|
const fields = {};
|
|
991
998
|
for (const [key, value] of Object.entries(schema.properties ?? {})){
|
|
@@ -993,7 +1000,7 @@ export class SchemaBuilder {
|
|
|
993
1000
|
if (fieldRef == null) {
|
|
994
1001
|
throw new Error(`Missing ref for field ${key} of object ${id}`);
|
|
995
1002
|
}
|
|
996
|
-
const type = this._getReference(fieldRef,
|
|
1003
|
+
const type = this._getReference(fieldRef, parentName);
|
|
997
1004
|
fields[key] = {
|
|
998
1005
|
type: required.includes(key) ? new GraphQLNonNull(type) : type
|
|
999
1006
|
};
|
|
@@ -1074,12 +1081,12 @@ export class SchemaBuilder {
|
|
|
1074
1081
|
}
|
|
1075
1082
|
};
|
|
1076
1083
|
}
|
|
1077
|
-
_buildString(schema, asInput) {
|
|
1084
|
+
_buildString(schema, parentName, asInput) {
|
|
1078
1085
|
if (schema.const != null) {
|
|
1079
1086
|
return GraphQLString;
|
|
1080
1087
|
}
|
|
1081
1088
|
if (schema.enum != null) {
|
|
1082
|
-
return this._buildEnumString(schema);
|
|
1089
|
+
return this._buildEnumString(schema, parentName);
|
|
1083
1090
|
}
|
|
1084
1091
|
if (schema.format != null) {
|
|
1085
1092
|
return this._buildFormatString(schema);
|
|
@@ -1105,17 +1112,22 @@ export class SchemaBuilder {
|
|
|
1105
1112
|
}
|
|
1106
1113
|
return scalar;
|
|
1107
1114
|
}
|
|
1108
|
-
_buildEnumString(schema) {
|
|
1109
|
-
const
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1115
|
+
_buildEnumString(schema, parentName = '') {
|
|
1116
|
+
const name = pascalCase(parentName + schema.title);
|
|
1117
|
+
const typeName = `${name}-enum`;
|
|
1118
|
+
if (this._types[typeName] == null) {
|
|
1119
|
+
const values = {};
|
|
1120
|
+
for (const value of schema.enum){
|
|
1121
|
+
values[value] = {
|
|
1122
|
+
value
|
|
1123
|
+
};
|
|
1124
|
+
}
|
|
1125
|
+
this._types[typeName] = new GraphQLEnumType({
|
|
1126
|
+
name,
|
|
1127
|
+
values
|
|
1128
|
+
});
|
|
1114
1129
|
}
|
|
1115
|
-
return
|
|
1116
|
-
name: schema.title,
|
|
1117
|
-
values
|
|
1118
|
-
});
|
|
1130
|
+
return this._types[typeName];
|
|
1119
1131
|
}
|
|
1120
1132
|
_buildFormatString(schema) {
|
|
1121
1133
|
const scalar = STRING_FORMATS[schema.format];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kubun/graphql",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.4",
|
|
4
4
|
"license": "see LICENSE.md",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"type": "module",
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
"graphql-relay": "^0.10.2",
|
|
22
22
|
"graphql-scalars": "^1.24.2",
|
|
23
23
|
"multiformats": "^13.3.2",
|
|
24
|
-
"@kubun/
|
|
25
|
-
"@kubun/
|
|
24
|
+
"@kubun/protocol": "^0.3.4",
|
|
25
|
+
"@kubun/id": "^0.3.0"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"json-schema-typed": "^8.0.1"
|