@kubun/graphql 0.3.14 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/identifiers.d.ts +0 -3
- package/lib/identifiers.d.ts.map +1 -1
- package/lib/identifiers.js +0 -10
- package/lib/index.d.ts +0 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +0 -1
- package/lib/schema.d.ts +3 -3
- package/lib/schema.d.ts.map +1 -1
- package/lib/schema.js +99 -81
- package/package.json +4 -5
- package/lib/scalars.d.ts +0 -18
- package/lib/scalars.d.ts.map +0 -1
- package/lib/scalars.js +0 -23
package/lib/identifiers.d.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import { GraphQLScalarType } from 'graphql';
|
|
2
|
-
import type { JSONSchema } from 'json-schema-typed';
|
|
3
2
|
export declare const GraphQLAttachmentID: GraphQLScalarType<string, string>;
|
|
4
|
-
export declare const attachmentIDSchema: JSONSchema.String;
|
|
5
3
|
export declare const GraphQLDocID: GraphQLScalarType<string, string>;
|
|
6
|
-
export declare const docIDSchema: JSONSchema.String;
|
|
7
4
|
//# sourceMappingURL=identifiers.d.ts.map
|
package/lib/identifiers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identifiers.d.ts","sourceRoot":"","sources":["../src/identifiers.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,iBAAiB,EAAQ,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"identifiers.d.ts","sourceRoot":"","sources":["../src/identifiers.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,iBAAiB,EAAQ,MAAM,SAAS,CAAA;AAW/D,eAAO,MAAM,mBAAmB,mCAW9B,CAAA;AAWF,eAAO,MAAM,YAAY,mCAWvB,CAAA"}
|
package/lib/identifiers.js
CHANGED
|
@@ -20,11 +20,6 @@ export const GraphQLAttachmentID = new GraphQLScalarType({
|
|
|
20
20
|
return validateAttachmentID(ast.value);
|
|
21
21
|
}
|
|
22
22
|
});
|
|
23
|
-
export const attachmentIDSchema = {
|
|
24
|
-
type: 'string',
|
|
25
|
-
title: 'AttachmentID',
|
|
26
|
-
pattern: '^k[0-9a-z]{10,120}$'
|
|
27
|
-
};
|
|
28
23
|
function validateDocID(input) {
|
|
29
24
|
if (typeof input !== 'string') {
|
|
30
25
|
throw new GraphQLError(`Invalid DocumentID input: ${input}`);
|
|
@@ -45,8 +40,3 @@ export const GraphQLDocID = new GraphQLScalarType({
|
|
|
45
40
|
return validateDocID(ast.value);
|
|
46
41
|
}
|
|
47
42
|
});
|
|
48
|
-
export const docIDSchema = {
|
|
49
|
-
type: 'string',
|
|
50
|
-
title: 'DocID',
|
|
51
|
-
pattern: '^k[0-9a-z]{10,120}$'
|
|
52
|
-
};
|
package/lib/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export type { Context, MutationContext, QueryContext, ReadContextParams, ReadOnlyContext, SubscriptionContext, } from './context.js';
|
|
2
2
|
export { createReadContext } from './context.js';
|
|
3
3
|
export { GraphQLAttachmentID, GraphQLDocID } from './identifiers.js';
|
|
4
|
-
export * as scalars from './scalars.js';
|
|
5
4
|
export type { SchemaBuilderParams, SharedDefinitions, } from './schema.js';
|
|
6
5
|
export { createSchema, SchemaBuilder } from './schema.js';
|
|
7
6
|
export type * from './types.js';
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,OAAO,EACP,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,mBAAmB,GACpB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,OAAO,EACP,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,mBAAmB,GACpB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpE,YAAY,EACV,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACzD,mBAAmB,YAAY,CAAA"}
|
package/lib/index.js
CHANGED
package/lib/schema.d.ts
CHANGED
|
@@ -58,14 +58,14 @@ export declare class SchemaBuilder {
|
|
|
58
58
|
_buildObjectOrderByInput(id: string, schema: DocumentModelSchema | ObjectModel, parentName?: string, isDocument?: boolean): GraphQLInputObjectType;
|
|
59
59
|
_buildSetInputObjectType(id: string, withFields: Array<string>, relationField?: string): GraphQLInputObjectType;
|
|
60
60
|
_buildReference(id: string, schema: TypeModel, parentName?: string): GraphQLOutputType;
|
|
61
|
-
_buildScalar(id: string, schema: ScalarModel, parentName?: string
|
|
61
|
+
_buildScalar(id: string, schema: ScalarModel, parentName?: string): GraphQLScalarType;
|
|
62
62
|
_buildArray(schema: ArrayModel, parentName?: string): GraphQLList<GraphQLNonNull<GraphQLOutputType>>;
|
|
63
63
|
_buildObject(id: string, schema: ObjectModel, parentName?: string): GraphQLObjectType;
|
|
64
64
|
_buildObjectFields(id: string, schema: DocumentModelSchema | ObjectModel, parentName?: string): GraphQLFieldConfigMap<Record<string, unknown>, Context>;
|
|
65
65
|
_buildRelationFields(fields: GraphQLFieldConfigMap<DocumentNode, Context>, fieldName: string, relation: RelationField): void;
|
|
66
66
|
_buildRelationSubscriptions(fields: GraphQLFieldConfigMap<unknown, Context>, modelID: string, fieldName: string, relation: RelationField): void;
|
|
67
|
-
_buildString(
|
|
68
|
-
_buildCustomString(
|
|
67
|
+
_buildString(schema: StringModel, parentName: string): GraphQLEnumType | GraphQLObjectType | GraphQLScalarType;
|
|
68
|
+
_buildCustomString(schema: StringCustomModel): GraphQLScalarType<unknown, unknown>;
|
|
69
69
|
_buildEnumString(schema: StringEnumModel, parentName?: string): GraphQLEnumType;
|
|
70
70
|
_buildFormatString(schema: StringFormatModel): GraphQLScalarType<unknown, unknown>;
|
|
71
71
|
}
|
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,EAEZ,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,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,iBAAiB,EACtB,aAAa,EAKd,MAAM,SAAS,CAAA;AAkBhB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;
|
|
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,EAEZ,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,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,iBAAiB,EACtB,aAAa,EAKd,MAAM,SAAS,CAAA;AAkBhB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAiD3C,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,eAAe,GAAG,MAAM,GAAG,eAAe,CAE/E;AAED,wBAAgB,WAAW,CACzB,EAAE,EAAE,eAAe,GAAG,MAAM,EAC5B,QAAQ,EAAE,eAAe,GAAG,MAAM,GACjC,eAAe,CAGjB;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,gBAAgB,iDAE5C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,iBAAiB,kDAElD;AAyFD,eAAO,MAAM,cAAc,wBAWzB,CAAA;AAUF,MAAM,MAAM,sBAAsB,GAAG;IACnC,aAAa,EAAE,oBAAoB,CAAA;IACnC,SAAS,EAAE,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC/C,UAAU,EAAE,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;CACjD,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,sBAAsB,GAAG;IACvD,aAAa,EAAE,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjD,gBAAgB,EAAE,iBAAiB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAC1D,iBAAiB,EAAE,oBAAoB,CAAA;IACvC,kBAAkB,EAAE,qBAAqB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAChE,WAAW,EAAE,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;CACrD,CAAA;AAED,KAAK,aAAa,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAA;AACvD,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAA;AAE1D,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,MAAM,EAAE,oBAAoB,CAAA;CAC7B,CAAA;AAED,qBAAa,aAAa;IAExB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAA;IAC3C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAK;IAChD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAA6C;IAClG,UAAU,EAAE,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAK;IACxD,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAC5B,OAAO,EAAE,oBAAoB,CAAA;IAC7B,WAAW,EAAE,qBAAqB,CAAK;IACvC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAK;IACjD,cAAc,EAAE,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAK;IAC5D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAuB;gBAEpD,MAAM,EAAE,mBAAmB;IA2CvC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;IAI7C,KAAK,IAAI,aAAa;IAiFtB,eAAe,IAAI,iBAAiB;IAOpC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,iBAAiB;IAWnE,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS;IAQ1C,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,SAAK,GAAG,gBAAgB;IA4CvF,uBAAuB,IAAI,iBAAiB;IAyI5C,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,oBAAoB;IA+G3F,oBAAoB,CAClB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,GACX,qBAAqB,CAAC,YAAY,EAAE,OAAO,CAAC;IA2G/C,wBAAwB,CACtB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,GACX,oBAAoB,GAAG,iBAAiB,CAAC,YAAY,EAAE,OAAO,CAAC;IAoClE,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI;IAgC3D,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,SAAK,GAAG,gBAAgB,GAAG,IAAI;IA0ClF,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,SAAK,GAAG,gBAAgB,GAAG,IAAI;IAgBnF,uBAAuB,CACrB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,mBAAmB,GAAG,WAAW,EACzC,UAAU,SAAK,EACf,UAAU,UAAQ;IAqCpB,wBAAwB,CACtB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,mBAAmB,GAAG,WAAW,EACzC,UAAU,SAAK,EACf,UAAU,UAAQ;IA4BpB,wBAAwB,CACtB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,EACzB,aAAa,CAAC,EAAE,MAAM,GACrB,sBAAsB;IA4BzB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,SAAK,GAAG,iBAAiB;IAmBlF,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,SAAK,GAAG,iBAAiB;IAsBjF,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,SAAK,GAAG,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAOhG,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,SAAK,GAAG,iBAAiB;IAMjF,kBAAkB,CAChB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,mBAAmB,GAAG,WAAW,EACzC,UAAU,SAAK,GACd,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAc1D,oBAAoB,CAClB,MAAM,EAAE,qBAAqB,CAAC,YAAY,EAAE,OAAO,CAAC,EACpD,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,aAAa,GACtB,IAAI;IA0BP,2BAA2B,CACzB,MAAM,EAAE,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,EAC/C,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,aAAa,GACtB,IAAI;IAsCP,YAAY,CACV,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,MAAM,GACjB,eAAe,GAAG,iBAAiB,GAAG,iBAAiB;IAa1D,kBAAkB,CAAC,MAAM,EAAE,iBAAiB;IAY5C,gBAAgB,CAAC,MAAM,EAAE,eAAe,EAAE,UAAU,SAAK,GAUvB,eAAe;IAGjD,kBAAkB,CAAC,MAAM,EAAE,iBAAiB;CAO7C;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,oBAAoB,EAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,aAAa,CAEf"}
|
package/lib/schema.js
CHANGED
|
@@ -19,13 +19,6 @@ const STRING_TITLES = {
|
|
|
19
19
|
did: GraphQLDID,
|
|
20
20
|
docid: GraphQLDocID
|
|
21
21
|
};
|
|
22
|
-
const EXPANDED_STRING_SCALARS = [
|
|
23
|
-
'attachmentid',
|
|
24
|
-
'did'
|
|
25
|
-
];
|
|
26
|
-
function isExpandedStringScalar(title) {
|
|
27
|
-
return EXPANDED_STRING_SCALARS.includes(title.toLowerCase());
|
|
28
|
-
}
|
|
29
22
|
function getReferenceID(path) {
|
|
30
23
|
return path.slice(REFERENCE_PREFIX.length);
|
|
31
24
|
}
|
|
@@ -256,10 +249,10 @@ export class SchemaBuilder {
|
|
|
256
249
|
}
|
|
257
250
|
// Extract inverse relations
|
|
258
251
|
for (const [fieldName, meta] of Object.entries(model.fieldsMeta)){
|
|
259
|
-
if (meta.
|
|
252
|
+
if (meta.type === 'document' && meta.model != null) {
|
|
260
253
|
const relationRefID = getReferenceID(model.schema.properties[fieldName]?.$ref);
|
|
261
254
|
const isList = this._getReferenceSchema(relationRefID).type === 'array';
|
|
262
|
-
const relationID = getGlobalID(meta.
|
|
255
|
+
const relationID = getGlobalID(meta.model, modelID).toString();
|
|
263
256
|
this._relationsTo[relationID] ??= {};
|
|
264
257
|
this._relationsTo[relationID][fieldName] ??= [];
|
|
265
258
|
this._relationsTo[relationID][fieldName].push({
|
|
@@ -427,7 +420,7 @@ export class SchemaBuilder {
|
|
|
427
420
|
this._inputObjects[inputID] = input;
|
|
428
421
|
return input;
|
|
429
422
|
}
|
|
430
|
-
return this._buildScalar(id, schema, parentName
|
|
423
|
+
return this._buildScalar(id, schema, parentName);
|
|
431
424
|
}
|
|
432
425
|
_buildSharedDefinitions() {
|
|
433
426
|
const nodeDefs = nodeDefinitions(async (id, ctx)=>{
|
|
@@ -709,50 +702,97 @@ export class SchemaBuilder {
|
|
|
709
702
|
}
|
|
710
703
|
};
|
|
711
704
|
for (const [key, field] of Object.entries(dataObject.getFields())){
|
|
712
|
-
const
|
|
713
|
-
if (
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
return relationIDs.length ? await ctx.resolveList(this.getModelIDs(relationModelID), relationIDs) : [];
|
|
705
|
+
const meta = model.fieldsMeta[key];
|
|
706
|
+
if (meta == null) {
|
|
707
|
+
continue;
|
|
708
|
+
}
|
|
709
|
+
switch(meta.type){
|
|
710
|
+
case 'account':
|
|
711
|
+
{
|
|
712
|
+
if (isList(field.type)) {
|
|
713
|
+
fields[`${key}Accounts`] = {
|
|
714
|
+
type: new GraphQLNonNull(toOuputList(definitions.accountObject)),
|
|
715
|
+
resolve: (doc)=>doc.data?.[key] ?? []
|
|
716
|
+
};
|
|
717
|
+
} else {
|
|
718
|
+
fields[`${key}Account`] = {
|
|
719
|
+
type: definitions.accountObject,
|
|
720
|
+
resolve: (doc)=>doc.data?.[key] ?? null
|
|
721
|
+
};
|
|
730
722
|
}
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
723
|
+
break;
|
|
724
|
+
}
|
|
725
|
+
case 'attachment':
|
|
726
|
+
{
|
|
727
|
+
if (isList(field.type)) {
|
|
728
|
+
fields[`${key}Attachments`] = {
|
|
729
|
+
type: new GraphQLNonNull(toOuputList(definitions.attachmentObject)),
|
|
730
|
+
resolve: (doc)=>{
|
|
731
|
+
const ids = doc.data?.[key] ?? [];
|
|
732
|
+
return ids.map(AttachmentID.fromString);
|
|
733
|
+
}
|
|
734
|
+
};
|
|
735
|
+
} else {
|
|
736
|
+
fields[`${key}Attachment`] = {
|
|
737
|
+
type: definitions.attachmentObject,
|
|
738
|
+
resolve: (doc)=>{
|
|
739
|
+
const id = doc.data?.[key];
|
|
740
|
+
return id ? AttachmentID.fromString(id) : null;
|
|
741
|
+
}
|
|
742
|
+
};
|
|
738
743
|
}
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
744
|
+
break;
|
|
745
|
+
}
|
|
746
|
+
case 'document':
|
|
747
|
+
{
|
|
748
|
+
const relationModel = meta.model;
|
|
749
|
+
if (typeof relationModel === 'undefined') {
|
|
750
|
+
continue;
|
|
751
|
+
}
|
|
752
|
+
let relationModelID;
|
|
753
|
+
let relationType;
|
|
754
|
+
if (relationModel === null) {
|
|
755
|
+
relationModelID = null;
|
|
756
|
+
relationType = definitions.documentInterface;
|
|
757
|
+
} else {
|
|
758
|
+
relationModelID = getGlobalID(relationModel, id).toString();
|
|
759
|
+
relationType = this._buildDocument(relationModelID);
|
|
760
|
+
}
|
|
761
|
+
if (isList(field.type)) {
|
|
762
|
+
// TODO: add suport for filters?
|
|
763
|
+
fields[`${key}Documents`] = {
|
|
764
|
+
type: new GraphQLNonNull(toOuputList(relationType)),
|
|
765
|
+
resolve: async (doc, _args, ctx)=>{
|
|
766
|
+
const relationIDs = doc.data?.[key] ?? [];
|
|
767
|
+
return relationIDs.length ? await ctx.resolveList(this.getModelIDs(relationModelID), relationIDs) : [];
|
|
768
|
+
}
|
|
769
|
+
};
|
|
770
|
+
} else {
|
|
771
|
+
fields[`${key}Document`] = {
|
|
772
|
+
type: relationType,
|
|
773
|
+
resolve: async (doc, _args, ctx)=>{
|
|
774
|
+
const relationID = doc.data?.[key];
|
|
775
|
+
return relationID ? await ctx.loadDocument(relationID) : null;
|
|
776
|
+
}
|
|
777
|
+
};
|
|
778
|
+
}
|
|
779
|
+
break;
|
|
747
780
|
}
|
|
748
|
-
}
|
|
749
781
|
}
|
|
750
|
-
|
|
782
|
+
}
|
|
783
|
+
for (const iid of model.interfaces ?? []){
|
|
784
|
+
const interfaceID = getGlobalID(iid, id).toString();
|
|
785
|
+
for (const [fieldName, relations] of Object.entries(this._relationsTo[interfaceID] ?? {})){
|
|
751
786
|
for (const relation of relations){
|
|
752
787
|
this._buildRelationFields(fields, fieldName, relation);
|
|
753
788
|
}
|
|
754
789
|
}
|
|
755
790
|
}
|
|
791
|
+
for (const [fieldName, relations] of Object.entries(this._relationsTo[id] ?? {})){
|
|
792
|
+
for (const relation of relations){
|
|
793
|
+
this._buildRelationFields(fields, fieldName, relation);
|
|
794
|
+
}
|
|
795
|
+
}
|
|
756
796
|
return fields;
|
|
757
797
|
}
|
|
758
798
|
_buildDocumentDataObject(id, model, name) {
|
|
@@ -841,7 +881,7 @@ export class SchemaBuilder {
|
|
|
841
881
|
}
|
|
842
882
|
});
|
|
843
883
|
}
|
|
844
|
-
const scalar = this._buildScalar(id, schema, refParentName
|
|
884
|
+
const scalar = this._buildScalar(id, schema, refParentName);
|
|
845
885
|
const knownFilter = VALUE_FILTER_INPUT_TYPES[scalar.name];
|
|
846
886
|
if (knownFilter != null) {
|
|
847
887
|
return this._inputObjects[knownFilter];
|
|
@@ -983,11 +1023,9 @@ export class SchemaBuilder {
|
|
|
983
1023
|
return this._buildScalar(id, schema, parentName);
|
|
984
1024
|
}
|
|
985
1025
|
}
|
|
986
|
-
_buildScalar(id, schema, parentName = ''
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
if (this._types[key] != null) {
|
|
990
|
-
return this._types[key];
|
|
1026
|
+
_buildScalar(id, schema, parentName = '') {
|
|
1027
|
+
if (this._types[id] != null) {
|
|
1028
|
+
return this._types[id];
|
|
991
1029
|
}
|
|
992
1030
|
switch(schema.type){
|
|
993
1031
|
case 'boolean':
|
|
@@ -1000,10 +1038,10 @@ export class SchemaBuilder {
|
|
|
1000
1038
|
this._types[id] = GraphQLFloat;
|
|
1001
1039
|
break;
|
|
1002
1040
|
case 'string':
|
|
1003
|
-
this._buildString(
|
|
1041
|
+
this._types[id] = this._buildString(schema, parentName);
|
|
1004
1042
|
break;
|
|
1005
1043
|
}
|
|
1006
|
-
return this._types[
|
|
1044
|
+
return this._types[id];
|
|
1007
1045
|
}
|
|
1008
1046
|
_buildArray(schema, parentName = '') {
|
|
1009
1047
|
const itemRef = schema.items.$ref;
|
|
@@ -1106,48 +1144,28 @@ export class SchemaBuilder {
|
|
|
1106
1144
|
}
|
|
1107
1145
|
};
|
|
1108
1146
|
}
|
|
1109
|
-
_buildString(
|
|
1147
|
+
_buildString(schema, parentName) {
|
|
1110
1148
|
if (schema.const != null) {
|
|
1111
|
-
this._types[id] = GraphQLString;
|
|
1112
1149
|
return GraphQLString;
|
|
1113
1150
|
}
|
|
1114
1151
|
if (schema.enum != null) {
|
|
1115
|
-
|
|
1116
|
-
return this._types[id];
|
|
1152
|
+
return this._buildEnumString(schema, parentName);
|
|
1117
1153
|
}
|
|
1118
1154
|
if (schema.format != null) {
|
|
1119
|
-
|
|
1120
|
-
return this._types[id];
|
|
1155
|
+
return this._buildFormatString(schema);
|
|
1121
1156
|
}
|
|
1122
|
-
return this._buildCustomString(
|
|
1157
|
+
return this._buildCustomString(schema);
|
|
1123
1158
|
}
|
|
1124
|
-
_buildCustomString(
|
|
1159
|
+
_buildCustomString(schema) {
|
|
1125
1160
|
if (schema.title == null) {
|
|
1126
1161
|
// Plain string type
|
|
1127
|
-
this._types[id] = GraphQLString;
|
|
1128
1162
|
return GraphQLString;
|
|
1129
1163
|
}
|
|
1130
|
-
const definitions = this._getDefinitions();
|
|
1131
1164
|
const title = schema.title.toLowerCase();
|
|
1132
|
-
if (title === 'attachmentid') {
|
|
1133
|
-
|
|
1134
|
-
this._types[`${id}-input`] = GraphQLID;
|
|
1135
|
-
return GraphQLID;
|
|
1136
|
-
}
|
|
1137
|
-
this._types[id] = definitions.attachmentObject;
|
|
1138
|
-
return definitions.attachmentObject;
|
|
1165
|
+
if (title === 'attachmentid' || title === 'did') {
|
|
1166
|
+
return GraphQLID;
|
|
1139
1167
|
}
|
|
1140
|
-
|
|
1141
|
-
if (asInput) {
|
|
1142
|
-
this._types[`${id}-input`] = GraphQLID;
|
|
1143
|
-
return GraphQLID;
|
|
1144
|
-
}
|
|
1145
|
-
this._types[id] = definitions.accountObject;
|
|
1146
|
-
return definitions.accountObject;
|
|
1147
|
-
}
|
|
1148
|
-
const scalar = STRING_TITLES[title] ?? GraphQLString;
|
|
1149
|
-
this._types[id] = scalar;
|
|
1150
|
-
return scalar;
|
|
1168
|
+
return STRING_TITLES[title] ?? GraphQLString;
|
|
1151
1169
|
}
|
|
1152
1170
|
_buildEnumString(schema, parentName = '') {
|
|
1153
1171
|
const name = pascalCase(parentName + schema.title);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kubun/graphql",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"license": "see LICENSE.md",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"type": "module",
|
|
@@ -22,12 +22,11 @@
|
|
|
22
22
|
"graphql-relay": "^0.10.2",
|
|
23
23
|
"graphql-scalars": "^1.25.0",
|
|
24
24
|
"multiformats": "^13.4.2",
|
|
25
|
-
"@kubun/
|
|
26
|
-
"@kubun/
|
|
25
|
+
"@kubun/protocol": "^0.4.0",
|
|
26
|
+
"@kubun/id": "^0.4.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"
|
|
30
|
-
"@kubun/db": "^0.3.6"
|
|
29
|
+
"@kubun/db": "^0.4.0"
|
|
31
30
|
},
|
|
32
31
|
"scripts": {
|
|
33
32
|
"build:clean": "del lib",
|
package/lib/scalars.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { JSONSchema } from 'json-schema-typed';
|
|
2
|
-
export { attachmentIDSchema, docIDSchema } from './identifiers.js';
|
|
3
|
-
export declare const bigIntSchema: JSONSchema.Integer;
|
|
4
|
-
export declare const didSchema: JSONSchema.String;
|
|
5
|
-
export declare const dateTimeSchema: JSONSchema.String;
|
|
6
|
-
export declare const durationSchema: JSONSchema.String;
|
|
7
|
-
export declare const emailAddressSchema: JSONSchema.String;
|
|
8
|
-
export declare const jsonObjectSchema: JSONSchema.Object<any>;
|
|
9
|
-
export declare const latitudeSchema: JSONSchema.Number;
|
|
10
|
-
export declare const localDateSchema: JSONSchema.String;
|
|
11
|
-
export declare const localDateTimeSchema: JSONSchema.String;
|
|
12
|
-
export declare const localTimeSchema: JSONSchema.String;
|
|
13
|
-
export declare const localeSchema: JSONSchema.String;
|
|
14
|
-
export declare const longitudeSchema: JSONSchema.Number;
|
|
15
|
-
export declare const timeZoneSchema: JSONSchema.String;
|
|
16
|
-
export declare const urlSchema: JSONSchema.String;
|
|
17
|
-
export declare const utcOffsetSchema: JSONSchema.String;
|
|
18
|
-
//# sourceMappingURL=scalars.d.ts.map
|
package/lib/scalars.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scalars.d.ts","sourceRoot":"","sources":["../src/scalars.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAMlE,eAAO,MAAM,YAAY,oBAAwD,CAAA;AACjF,eAAO,MAAM,SAAS,mBAAiC,CAAA;AACvD,eAAO,MAAM,cAAc,mBAAsC,CAAA;AACjE,eAAO,MAAM,cAAc,mBAAsC,CAAA;AACjE,eAAO,MAAM,kBAAkB,mBAA0C,CAAA;AACzE,eAAO,MAAM,gBAAgB,wBAA2D,CAAA;AACxF,eAAO,MAAM,cAAc,mBAAyD,CAAA;AACpF,eAAO,MAAM,eAAe,mBAAuC,CAAA;AACnE,eAAO,MAAM,mBAAmB,mBAA2C,CAAA;AAC3E,eAAO,MAAM,eAAe,mBAAuC,CAAA;AACnE,eAAO,MAAM,YAAY,mBAAoC,CAAA;AAC7D,eAAO,MAAM,eAAe,mBAA0D,CAAA;AACtF,eAAO,MAAM,cAAc,mBAAsC,CAAA;AACjE,eAAO,MAAM,SAAS,mBAAiC,CAAA;AACvD,eAAO,MAAM,eAAe,mBAAuC,CAAA"}
|
package/lib/scalars.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { GraphQLBigInt, GraphQLDateTime, GraphQLDID, GraphQLDuration, GraphQLEmailAddress, GraphQLJSONObject, GraphQLLatitude, GraphQLLocalDate, GraphQLLocalDateTime, GraphQLLocale, GraphQLLocalTime, GraphQLLongitude, GraphQLTimeZone, GraphQLURL, GraphQLUtcOffset } from 'graphql-scalars';
|
|
2
|
-
export { attachmentIDSchema, docIDSchema } from './identifiers.js';
|
|
3
|
-
function createScalarSchema(type) {
|
|
4
|
-
return {
|
|
5
|
-
...type.extensions.jsonSchema,
|
|
6
|
-
title: type.name
|
|
7
|
-
};
|
|
8
|
-
}
|
|
9
|
-
export const bigIntSchema = createScalarSchema(GraphQLBigInt);
|
|
10
|
-
export const didSchema = createScalarSchema(GraphQLDID);
|
|
11
|
-
export const dateTimeSchema = createScalarSchema(GraphQLDateTime);
|
|
12
|
-
export const durationSchema = createScalarSchema(GraphQLDuration);
|
|
13
|
-
export const emailAddressSchema = createScalarSchema(GraphQLEmailAddress);
|
|
14
|
-
export const jsonObjectSchema = createScalarSchema(GraphQLJSONObject);
|
|
15
|
-
export const latitudeSchema = createScalarSchema(GraphQLLatitude);
|
|
16
|
-
export const localDateSchema = createScalarSchema(GraphQLLocalDate);
|
|
17
|
-
export const localDateTimeSchema = createScalarSchema(GraphQLLocalDateTime);
|
|
18
|
-
export const localTimeSchema = createScalarSchema(GraphQLLocalTime);
|
|
19
|
-
export const localeSchema = createScalarSchema(GraphQLLocale);
|
|
20
|
-
export const longitudeSchema = createScalarSchema(GraphQLLongitude);
|
|
21
|
-
export const timeZoneSchema = createScalarSchema(GraphQLTimeZone);
|
|
22
|
-
export const urlSchema = createScalarSchema(GraphQLURL);
|
|
23
|
-
export const utcOffsetSchema = createScalarSchema(GraphQLUtcOffset);
|