@commitspark/graphql-api 1.0.0-beta.7 → 1.0.0-beta.9

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.
Files changed (135) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +75 -28
  3. package/dist/cjs/graphql/errors.d.ts +0 -1
  4. package/dist/cjs/graphql/errors.js.map +1 -1
  5. package/dist/cjs/graphql/queries-mutations-generator.d.ts +10 -10
  6. package/dist/cjs/graphql/queries-mutations-generator.js.map +1 -1
  7. package/dist/cjs/graphql/resolvers/field-resolvers/entry-reference-resolver.d.ts +1 -1
  8. package/dist/cjs/graphql/resolvers/field-resolvers/entry-reference-resolver.js +8 -0
  9. package/dist/cjs/graphql/resolvers/field-resolvers/entry-reference-resolver.js.map +1 -1
  10. package/dist/cjs/graphql/resolvers/field-resolvers/field-default-value-resolver.d.ts +1 -1
  11. package/dist/cjs/graphql/resolvers/field-resolvers/field-default-value-resolver.js +4 -4
  12. package/dist/cjs/graphql/resolvers/field-resolvers/field-default-value-resolver.js.map +1 -1
  13. package/dist/cjs/graphql/resolvers/field-resolvers/types.d.ts +5 -3
  14. package/dist/cjs/graphql/resolvers/field-resolvers/union-value-resolver.d.ts +1 -1
  15. package/dist/cjs/graphql/resolvers/field-resolvers/union-value-resolver.js.map +1 -1
  16. package/dist/cjs/graphql/resolvers/object-type-field-default-value-resolver-generator.d.ts +4 -6
  17. package/dist/cjs/graphql/resolvers/object-type-field-default-value-resolver-generator.js +24 -7
  18. package/dist/cjs/graphql/resolvers/object-type-field-default-value-resolver-generator.js.map +1 -1
  19. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.d.ts +2 -3
  20. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js +3 -3
  21. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js.map +1 -1
  22. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.d.ts +2 -4
  23. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js +2 -2
  24. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js.map +1 -1
  25. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.d.ts +2 -3
  26. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js +7 -6
  27. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js.map +1 -1
  28. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.d.ts +2 -3
  29. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.js +1 -1
  30. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.js.map +1 -1
  31. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-every-resolver.d.ts +2 -3
  32. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-every-resolver.js +1 -1
  33. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-every-resolver.js.map +1 -1
  34. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.d.ts +2 -3
  35. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.js.map +1 -1
  36. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/union-type-resolver.d.ts +2 -3
  37. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/union-type-resolver.js +10 -3
  38. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/union-type-resolver.js.map +1 -1
  39. package/dist/cjs/graphql/resolvers/types.d.ts +15 -2
  40. package/dist/cjs/graphql/schema-generator.js +0 -7
  41. package/dist/cjs/graphql/schema-generator.js.map +1 -1
  42. package/dist/cjs/graphql/schema-root-type-generator.d.ts +1 -1
  43. package/dist/cjs/graphql/schema-root-type-generator.js.map +1 -1
  44. package/dist/cjs/graphql/schema-utils/entry-reference-util.d.ts +1 -1
  45. package/dist/cjs/graphql/schema-utils/entry-reference-util.js +63 -16
  46. package/dist/cjs/graphql/schema-utils/entry-reference-util.js.map +1 -1
  47. package/dist/cjs/graphql/util.d.ts +2 -0
  48. package/dist/cjs/graphql/util.js +13 -0
  49. package/dist/cjs/graphql/util.js.map +1 -0
  50. package/dist/esm/graphql/errors.js.map +1 -1
  51. package/dist/esm/graphql/queries-mutations-generator.js.map +1 -1
  52. package/dist/esm/graphql/resolvers/field-resolvers/entry-reference-resolver.js +8 -0
  53. package/dist/esm/graphql/resolvers/field-resolvers/entry-reference-resolver.js.map +1 -1
  54. package/dist/esm/graphql/resolvers/field-resolvers/field-default-value-resolver.js +4 -4
  55. package/dist/esm/graphql/resolvers/field-resolvers/field-default-value-resolver.js.map +1 -1
  56. package/dist/esm/graphql/resolvers/field-resolvers/union-value-resolver.js.map +1 -1
  57. package/dist/esm/graphql/resolvers/object-type-field-default-value-resolver-generator.js +24 -7
  58. package/dist/esm/graphql/resolvers/object-type-field-default-value-resolver-generator.js.map +1 -1
  59. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js +3 -3
  60. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js.map +1 -1
  61. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js +2 -2
  62. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js.map +1 -1
  63. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js +7 -6
  64. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js.map +1 -1
  65. package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.js +1 -1
  66. package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.js.map +1 -1
  67. package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-every-resolver.js +1 -1
  68. package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-every-resolver.js.map +1 -1
  69. package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.js.map +1 -1
  70. package/dist/esm/graphql/resolvers/query-mutation-resolvers/union-type-resolver.js +10 -3
  71. package/dist/esm/graphql/resolvers/query-mutation-resolvers/union-type-resolver.js.map +1 -1
  72. package/dist/esm/graphql/schema-generator.js +0 -7
  73. package/dist/esm/graphql/schema-generator.js.map +1 -1
  74. package/dist/esm/graphql/schema-root-type-generator.js.map +1 -1
  75. package/dist/esm/graphql/schema-utils/entry-reference-util.js +64 -17
  76. package/dist/esm/graphql/schema-utils/entry-reference-util.js.map +1 -1
  77. package/dist/esm/graphql/util.js +10 -0
  78. package/dist/esm/graphql/util.js.map +1 -0
  79. package/dist/types/graphql/errors.d.ts +0 -1
  80. package/dist/types/graphql/errors.d.ts.map +1 -1
  81. package/dist/types/graphql/queries-mutations-generator.d.ts +10 -10
  82. package/dist/types/graphql/queries-mutations-generator.d.ts.map +1 -1
  83. package/dist/types/graphql/resolvers/field-resolvers/entry-reference-resolver.d.ts +1 -1
  84. package/dist/types/graphql/resolvers/field-resolvers/entry-reference-resolver.d.ts.map +1 -1
  85. package/dist/types/graphql/resolvers/field-resolvers/field-default-value-resolver.d.ts +1 -1
  86. package/dist/types/graphql/resolvers/field-resolvers/field-default-value-resolver.d.ts.map +1 -1
  87. package/dist/types/graphql/resolvers/field-resolvers/types.d.ts +5 -3
  88. package/dist/types/graphql/resolvers/field-resolvers/types.d.ts.map +1 -1
  89. package/dist/types/graphql/resolvers/field-resolvers/union-value-resolver.d.ts +1 -1
  90. package/dist/types/graphql/resolvers/field-resolvers/union-value-resolver.d.ts.map +1 -1
  91. package/dist/types/graphql/resolvers/object-type-field-default-value-resolver-generator.d.ts +4 -6
  92. package/dist/types/graphql/resolvers/object-type-field-default-value-resolver-generator.d.ts.map +1 -1
  93. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.d.ts +2 -3
  94. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.d.ts.map +1 -1
  95. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.d.ts +2 -4
  96. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.d.ts.map +1 -1
  97. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.d.ts +2 -3
  98. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.d.ts.map +1 -1
  99. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.d.ts +2 -3
  100. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.d.ts.map +1 -1
  101. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-every-resolver.d.ts +2 -3
  102. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-every-resolver.d.ts.map +1 -1
  103. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.d.ts +2 -3
  104. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.d.ts.map +1 -1
  105. package/dist/types/graphql/resolvers/query-mutation-resolvers/union-type-resolver.d.ts +2 -3
  106. package/dist/types/graphql/resolvers/query-mutation-resolvers/union-type-resolver.d.ts.map +1 -1
  107. package/dist/types/graphql/resolvers/types.d.ts +15 -2
  108. package/dist/types/graphql/resolvers/types.d.ts.map +1 -1
  109. package/dist/types/graphql/schema-generator.d.ts.map +1 -1
  110. package/dist/types/graphql/schema-root-type-generator.d.ts +1 -1
  111. package/dist/types/graphql/schema-root-type-generator.d.ts.map +1 -1
  112. package/dist/types/graphql/schema-utils/entry-reference-util.d.ts +1 -1
  113. package/dist/types/graphql/schema-utils/entry-reference-util.d.ts.map +1 -1
  114. package/dist/types/graphql/util.d.ts +3 -0
  115. package/dist/types/graphql/util.d.ts.map +1 -0
  116. package/package.json +2 -2
  117. package/src/graphql/errors.ts +0 -1
  118. package/src/graphql/queries-mutations-generator.ts +16 -17
  119. package/src/graphql/resolvers/field-resolvers/entry-reference-resolver.ts +22 -7
  120. package/src/graphql/resolvers/field-resolvers/field-default-value-resolver.ts +17 -13
  121. package/src/graphql/resolvers/field-resolvers/types.ts +7 -5
  122. package/src/graphql/resolvers/field-resolvers/union-value-resolver.ts +2 -4
  123. package/src/graphql/resolvers/object-type-field-default-value-resolver-generator.ts +43 -26
  124. package/src/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.ts +11 -11
  125. package/src/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.ts +11 -11
  126. package/src/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.ts +15 -15
  127. package/src/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.ts +7 -8
  128. package/src/graphql/resolvers/query-mutation-resolvers/query-every-resolver.ts +7 -8
  129. package/src/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.ts +7 -8
  130. package/src/graphql/resolvers/query-mutation-resolvers/union-type-resolver.ts +20 -8
  131. package/src/graphql/resolvers/types.ts +27 -4
  132. package/src/graphql/schema-generator.ts +24 -31
  133. package/src/graphql/schema-root-type-generator.ts +5 -2
  134. package/src/graphql/schema-utils/entry-reference-util.ts +131 -24
  135. package/src/graphql/util.ts +13 -0
@@ -1,4 +1,3 @@
1
- import { GraphQLFieldResolver } from 'graphql';
2
- import { ApolloContext } from '../../../client.ts';
3
- export declare const queryTypeByIdResolver: GraphQLFieldResolver<any, ApolloContext, any, Promise<string>>;
1
+ import { QueryMutationResolver } from '../types.ts';
2
+ export declare const queryTypeByIdResolver: QueryMutationResolver<string>;
4
3
  //# sourceMappingURL=query-type-by-id-resolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-type-by-id-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,eAAO,MAAM,qBAAqB,EAAE,oBAAoB,CACtD,GAAG,EACH,aAAa,EACb,GAAG,EACH,OAAO,CAAC,MAAM,CAAC,CAIhB,CAAA"}
1
+ {"version":3,"file":"query-type-by-id-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAEnD,eAAO,MAAM,qBAAqB,EAAE,qBAAqB,CAAC,MAAM,CAQ/D,CAAA"}
@@ -1,4 +1,3 @@
1
- import { ApolloContext } from '../../../client.ts';
2
- import { GraphQLTypeResolver } from 'graphql';
3
- export declare const unionTypeResolver: GraphQLTypeResolver<any, ApolloContext>;
1
+ import { UnionTypeResolver } from '../types.ts';
2
+ export declare const unionTypeResolver: UnionTypeResolver;
4
3
  //# sourceMappingURL=union-type-resolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"union-type-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/graphql/resolvers/query-mutation-resolvers/union-type-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAG7C,eAAO,MAAM,iBAAiB,EAAE,mBAAmB,CACjD,GAAG,EACH,aAAa,CAWd,CAAA"}
1
+ {"version":3,"file":"union-type-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/graphql/resolvers/query-mutation-resolvers/union-type-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAG/C,eAAO,MAAM,iBAAiB,EAAE,iBAyB/B,CAAA"}
@@ -1,7 +1,20 @@
1
1
  import { ApolloContext } from '../../client.ts';
2
- import { GraphQLFieldResolver, GraphQLNamedType } from 'graphql';
2
+ import { GraphQLFieldResolver, GraphQLNamedType, GraphQLTypeResolver } from 'graphql';
3
+ import { EntryData } from '@commitspark/git-adapter';
4
+ import { RecursiveArray } from './field-resolvers/types.ts';
3
5
  export interface QueryMutationResolverContext extends ApolloContext {
4
6
  type: GraphQLNamedType;
5
7
  }
6
- export type QueryMutationResolver<ResultType> = GraphQLFieldResolver<any, ApolloContext, any, Promise<ResultType>>;
8
+ export type QueryMutationResolver<ResultType> = GraphQLFieldResolver<unknown, QueryMutationResolverContext, {
9
+ id: string;
10
+ data?: EntryData;
11
+ commitMessage: string;
12
+ }, Promise<ResultType>>;
13
+ export type UnionTypeResolver = GraphQLTypeResolver<UnionTypeResolverSourceData, ApolloContext>;
14
+ type UnionTypeResolverSourceData = EntryData & {
15
+ id?: string;
16
+ __typename: string;
17
+ };
18
+ export type ContextInjectionResolver = GraphQLFieldResolver<EntryData, ApolloContext, Record<string, unknown>, Promise<RecursiveArray<EntryData>>>;
19
+ export {};
7
20
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/graphql/resolvers/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAEhE,MAAM,WAAW,4BAA6B,SAAQ,aAAa;IACjE,IAAI,EAAE,gBAAgB,CAAA;CACvB;AAED,MAAM,MAAM,qBAAqB,CAAC,UAAU,IAAI,oBAAoB,CAClE,GAAG,EACH,aAAa,EACb,GAAG,EACH,OAAO,CAAC,UAAU,CAAC,CACpB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/graphql/resolvers/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAE3D,MAAM,WAAW,4BAA6B,SAAQ,aAAa;IACjE,IAAI,EAAE,gBAAgB,CAAA;CACvB;AAED,MAAM,MAAM,qBAAqB,CAAC,UAAU,IAAI,oBAAoB,CAClE,OAAO,EACP,4BAA4B,EAC5B;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,EACvD,OAAO,CAAC,UAAU,CAAC,CACpB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,CACjD,2BAA2B,EAC3B,aAAa,CACd,CAAA;AAED,KAAK,2BAA2B,GAAG,SAAS,GAAG;IAC7C,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG,oBAAoB,CACzD,SAAS,EACT,aAAa,EACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvB,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CACnC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema-generator.d.ts","sourceRoot":"","sources":["../../../src/graphql/schema-generator.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,2BAA2B,EAE5B,MAAM,uBAAuB,CAAA;AAU9B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAO5C,wBAAsB,cAAc,CAClC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,2BAA2B,CAAC,CAwItC"}
1
+ {"version":3,"file":"schema-generator.d.ts","sourceRoot":"","sources":["../../../src/graphql/schema-generator.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,2BAA2B,EAE5B,MAAM,uBAAuB,CAAA;AAU9B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAa5C,wBAAsB,cAAc,CAClC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,2BAA2B,CAAC,CA2HtC"}
@@ -1,3 +1,3 @@
1
1
  import { GeneratedQuery, GeneratedSchema } from './queries-mutations-generator.ts';
2
- export declare function generateSchemaRootTypeStrings(generatedSchemas: GeneratedSchema[], typeQuery: GeneratedQuery<Promise<string>>): string;
2
+ export declare function generateSchemaRootTypeStrings(generatedSchemas: GeneratedSchema[], typeQuery: GeneratedQuery): string;
3
3
  //# sourceMappingURL=schema-root-type-generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-root-type-generator.d.ts","sourceRoot":"","sources":["../../../src/graphql/schema-root-type-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAElF,wBAAgB,6BAA6B,CAC3C,gBAAgB,EAAE,eAAe,EAAE,EACnC,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GACzC,MAAM,CA6BR"}
1
+ {"version":3,"file":"schema-root-type-generator.d.ts","sourceRoot":"","sources":["../../../src/graphql/schema-root-type-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,eAAe,EAChB,MAAM,kCAAkC,CAAA;AAEzC,wBAAgB,6BAA6B,CAC3C,gBAAgB,EAAE,eAAe,EAAE,EACnC,SAAS,EAAE,cAAc,GACxB,MAAM,CA6BR"}
@@ -1,4 +1,4 @@
1
1
  import { GraphQLNullableType, GraphQLObjectType } from 'graphql';
2
2
  import { ApolloContext } from '../../client.ts';
3
- export declare function getReferencedEntryIds(rootType: GraphQLObjectType, context: ApolloContext, fieldName: string | null, type: GraphQLNullableType, data: any): Promise<string[]>;
3
+ export declare function getReferencedEntryIds(rootType: GraphQLObjectType, context: ApolloContext, fieldName: string | null, type: GraphQLNullableType, data: unknown): Promise<string[]>;
4
4
  //# sourceMappingURL=entry-reference-util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entry-reference-util.d.ts","sourceRoot":"","sources":["../../../../src/graphql/schema-utils/entry-reference-util.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EAKlB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AA+F/C,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,IAAI,EAAE,mBAAmB,EACzB,IAAI,EAAE,GAAG,GACR,OAAO,CAAC,MAAM,EAAE,CAAC,CAqFnB"}
1
+ {"version":3,"file":"entry-reference-util.d.ts","sourceRoot":"","sources":["../../../../src/graphql/schema-utils/entry-reference-util.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EAOlB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AA0G/C,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,IAAI,EAAE,mBAAmB,EACzB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC,CA0InB"}
@@ -0,0 +1,3 @@
1
+ import { EntryData } from '@commitspark/git-adapter';
2
+ export declare function isEntryData(obj: unknown): obj is EntryData;
3
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/graphql/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEpD,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,SAAS,CAU1D"}
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "gitops",
10
10
  "api"
11
11
  ],
12
- "version": "1.0.0-beta.7",
12
+ "version": "1.0.0-beta.9",
13
13
  "license": "ISC",
14
14
  "private": false,
15
15
  "files": [
@@ -44,7 +44,7 @@
44
44
  },
45
45
  "dependencies": {
46
46
  "@apollo/server": "^5.2.0",
47
- "@commitspark/git-adapter": "^0.20.0",
47
+ "@commitspark/git-adapter": "^0.30.0",
48
48
  "@graphql-tools/schema": "^9.0.0",
49
49
  "@graphql-tools/utils": "^9.0.0"
50
50
  },
@@ -5,7 +5,6 @@ export const enum ErrorCode {
5
5
  BAD_USER_INPUT = 'BAD_USER_INPUT',
6
6
  NOT_FOUND = 'NOT_FOUND',
7
7
  BAD_REPOSITORY_DATA = 'BAD_REPOSITORY_DATA',
8
- SCHEMA_DATA_MISMATCH = 'SCHEMA_DATA_MISMATCH',
9
8
  BAD_SCHEMA = 'BAD_SCHEMA',
10
9
  INTERNAL_ERROR = 'INTERNAL_ERROR',
11
10
  IN_USE = 'IN_USE',
@@ -1,6 +1,5 @@
1
1
  import { EntryData } from '@commitspark/git-adapter'
2
- import { ApolloContext } from '../client.ts'
3
- import { GraphQLFieldResolver, GraphQLObjectType } from 'graphql'
2
+ import { GraphQLObjectType } from 'graphql'
4
3
  import { queryEveryResolver } from './resolvers/query-mutation-resolvers/query-every-resolver.ts'
5
4
  import { queryByIdResolver } from './resolvers/query-mutation-resolvers/query-by-id-resolver.ts'
6
5
  import { mutationCreateResolver } from './resolvers/query-mutation-resolvers/mutation-create-resolver.ts'
@@ -19,12 +18,12 @@ export function generateQueriesAndMutations(
19
18
  // pluralization of user-provided typeName
20
19
  const queryEveryName = `every${typeName}`
21
20
  const queryEveryString = `${queryEveryName}: [${objectType.name}!]`
22
- const queryEveryResolverFunc: GraphQLFieldResolver<
23
- any,
24
- ApolloContext,
25
- any,
26
- Promise<EntryData[]>
27
- > = (source, args, context, info) =>
21
+ const queryEveryResolverFunc: QueryMutationResolver<EntryData[]> = (
22
+ source,
23
+ args,
24
+ context,
25
+ info,
26
+ ) =>
28
27
  queryEveryResolver(source, args, { ...context, type: objectType }, info)
29
28
 
30
29
  const queryByIdName = typeName
@@ -69,7 +68,7 @@ export function generateQueriesAndMutations(
69
68
 
70
69
  const deleteMutationName = `delete${typeName}`
71
70
  const deleteMutationString = `${deleteMutationName}(id: ID!, commitMessage: String): ID`
72
- const deleteMutationResolver: QueryMutationResolver<EntryData> = (
71
+ const deleteMutationResolver: QueryMutationResolver<string> = (
73
72
  source,
74
73
  args,
75
74
  context,
@@ -112,7 +111,7 @@ export function generateQueriesAndMutations(
112
111
  })
113
112
  }
114
113
 
115
- export function generateTypeNameQuery(): GeneratedQuery<Promise<string>> {
114
+ export function generateTypeNameQuery(): GeneratedQuery {
116
115
  const entryTypeQueryName = '_typeName'
117
116
  const entryTypeQueryString = `${entryTypeQueryName}(id: ID!): String!`
118
117
 
@@ -124,15 +123,15 @@ export function generateTypeNameQuery(): GeneratedQuery<Promise<string>> {
124
123
  }
125
124
 
126
125
  export interface GeneratedSchema {
127
- queryEvery: GeneratedQuery<Promise<EntryData[]>>
128
- queryById: GeneratedQuery<Promise<EntryData>>
129
- createMutation: GeneratedQuery<Promise<EntryData>>
130
- updateMutation: GeneratedQuery<Promise<EntryData>>
131
- deleteMutation: GeneratedQuery<Promise<EntryData>>
126
+ queryEvery: GeneratedQuery
127
+ queryById: GeneratedQuery
128
+ createMutation: GeneratedQuery
129
+ updateMutation: GeneratedQuery
130
+ deleteMutation: GeneratedQuery
132
131
  }
133
132
 
134
- export interface GeneratedQuery<T> {
133
+ export interface GeneratedQuery {
135
134
  name: string
136
135
  schemaString: string
137
- resolver: GraphQLFieldResolver<any, ApolloContext, any, T>
136
+ resolver: QueryMutationResolver<EntryData | EntryData[] | string>
138
137
  }
@@ -1,13 +1,13 @@
1
- import { FieldResolver, FieldResolverContext } from './types.ts'
2
- import { GraphQLResolveInfo, isNamedType } from 'graphql'
1
+ import { FieldResolver } from './types.ts'
2
+ import { isNamedType } from 'graphql'
3
3
  import { findById } from '../../../persistence/persistence.ts'
4
4
  import { createError, ErrorCode } from '../../errors.ts'
5
5
 
6
- export const resolveEntryReference: FieldResolver<any> = async (
7
- fieldValue: any,
8
- args: any,
9
- context: FieldResolverContext,
10
- info: GraphQLResolveInfo,
6
+ export const resolveEntryReference: FieldResolver = async (
7
+ fieldValue,
8
+ args,
9
+ context,
10
+ info,
11
11
  ) => {
12
12
  void info
13
13
  if (!isNamedType(context.currentType)) {
@@ -20,6 +20,21 @@ export const resolveEntryReference: FieldResolver<any> = async (
20
20
  )
21
21
  }
22
22
 
23
+ if (
24
+ fieldValue === null ||
25
+ typeof fieldValue !== 'object' ||
26
+ !('id' in fieldValue) ||
27
+ typeof fieldValue.id !== 'string'
28
+ ) {
29
+ throw createError(
30
+ 'Expected fieldValue.id to be a string.',
31
+ ErrorCode.INTERNAL_ERROR,
32
+ {
33
+ fieldValue: fieldValue,
34
+ },
35
+ )
36
+ }
37
+
23
38
  const entry = await findById(context, fieldValue.id)
24
39
 
25
40
  return { ...entry.data, id: entry.id }
@@ -1,8 +1,6 @@
1
- import { FieldResolver, FieldResolverContext, ResolvedEntryData } from './types.ts'
2
- import { EntryData } from '@commitspark/git-adapter'
1
+ import { FieldResolver } from './types.ts'
3
2
  import {
4
3
  GraphQLNonNull,
5
- GraphQLResolveInfo,
6
4
  GraphQLUnionType,
7
5
  isListType,
8
6
  isNonNullType,
@@ -17,12 +15,12 @@ import { resolveEntryReference } from './entry-reference-resolver.ts'
17
15
  import { resolveUnionValue } from './union-value-resolver.ts'
18
16
  import { createError, ErrorCode } from '../../errors.ts'
19
17
 
20
- export const resolveFieldDefaultValue: FieldResolver<any> = async (
21
- fieldValue: any,
22
- args: any,
23
- context: FieldResolverContext,
24
- info: GraphQLResolveInfo,
25
- ): Promise<ResolvedEntryData<EntryData | EntryData[] | null>> => {
18
+ export const resolveFieldDefaultValue: FieldResolver = async (
19
+ fieldValue,
20
+ args,
21
+ context,
22
+ info,
23
+ ) => {
26
24
  if (isNonNullType(context.currentType)) {
27
25
  return resolveFieldDefaultValue(
28
26
  fieldValue,
@@ -34,7 +32,9 @@ export const resolveFieldDefaultValue: FieldResolver<any> = async (
34
32
  },
35
33
  info,
36
34
  )
37
- } else if (isListType(context.currentType)) {
35
+ }
36
+
37
+ if (isListType(context.currentType)) {
38
38
  if (fieldValue === undefined || fieldValue === null) {
39
39
  if (context.hasNonNullParent) {
40
40
  return new Promise((resolve) => resolve([]))
@@ -46,7 +46,7 @@ export const resolveFieldDefaultValue: FieldResolver<any> = async (
46
46
  if (!Array.isArray(fieldValue)) {
47
47
  throw createError(
48
48
  `Expected array while resolving value for field "${info.fieldName}".`,
49
- ErrorCode.SCHEMA_DATA_MISMATCH,
49
+ ErrorCode.BAD_REPOSITORY_DATA,
50
50
  {
51
51
  fieldName: info.fieldName,
52
52
  fieldValue: fieldValue,
@@ -69,7 +69,9 @@ export const resolveFieldDefaultValue: FieldResolver<any> = async (
69
69
  resultPromises.push(resultPromise)
70
70
  }
71
71
  return Promise.all(resultPromises)
72
- } else if (isUnionType(context.currentType)) {
72
+ }
73
+
74
+ if (isUnionType(context.currentType)) {
73
75
  if (fieldValue === undefined || fieldValue === null) {
74
76
  if (context.hasNonNullParent) {
75
77
  throw createError(
@@ -94,7 +96,9 @@ export const resolveFieldDefaultValue: FieldResolver<any> = async (
94
96
  }
95
97
 
96
98
  return resolveUnionValue(fieldValue, args, context, info)
97
- } else if (isObjectType(context.currentType)) {
99
+ }
100
+
101
+ if (isObjectType(context.currentType)) {
98
102
  if (fieldValue === undefined || fieldValue === null) {
99
103
  if (context.hasNonNullParent) {
100
104
  throw createError(
@@ -2,16 +2,18 @@ import { GraphQLFieldResolver, GraphQLOutputType } from 'graphql'
2
2
  import { EntryData } from '@commitspark/git-adapter'
3
3
  import { ApolloContext } from '../../../client.ts'
4
4
 
5
- export interface FieldResolverContext extends ApolloContext {
5
+ interface FieldResolverContext extends ApolloContext {
6
6
  currentType: GraphQLOutputType
7
7
  hasNonNullParent?: boolean
8
8
  }
9
9
 
10
+ type FieldResolverSource = EntryData | EntryData[]
11
+
10
12
  export type FieldResolver<
11
- TSource,
13
+ TSource = FieldResolverSource,
12
14
  TContext = FieldResolverContext,
13
- TArgs = any,
14
- TResult = Promise<ResolvedEntryData<EntryData | EntryData[] | null>>,
15
+ TArgs = Record<string, unknown>,
16
+ TResult = Promise<RecursiveArray<EntryData>>,
15
17
  > = GraphQLFieldResolver<TSource, TContext, TArgs, TResult>
16
18
 
17
- export type ResolvedEntryData<T> = T | Array<ResolvedEntryData<T>>
19
+ export type RecursiveArray<T> = T | Array<RecursiveArray<T>>
@@ -1,13 +1,11 @@
1
1
  import { EntryData } from '@commitspark/git-adapter'
2
- import { FieldResolver, ResolvedEntryData } from './types.ts'
2
+ import { FieldResolver } from './types.ts'
3
3
  import {
4
4
  getUnionTypeNameFromFieldValue,
5
5
  getUnionValue,
6
6
  } from '../../schema-utils/union-type-util.ts'
7
7
 
8
- export const resolveUnionValue: FieldResolver<any> = async (
9
- fieldValue: any,
10
- ): Promise<ResolvedEntryData<EntryData | EntryData[] | null>> => {
8
+ export const resolveUnionValue: FieldResolver = async (fieldValue) => {
11
9
  const typeName = getUnionTypeNameFromFieldValue(fieldValue)
12
10
  const unionValue = getUnionValue(fieldValue)
13
11
 
@@ -1,6 +1,5 @@
1
1
  import {
2
2
  GraphQLField,
3
- GraphQLFieldResolver,
4
3
  GraphQLObjectType,
5
4
  GraphQLOutputType,
6
5
  GraphQLSchema,
@@ -9,10 +8,10 @@ import {
9
8
  isObjectType,
10
9
  isUnionType,
11
10
  } from 'graphql'
12
- import { EntryData } from '@commitspark/git-adapter'
13
- import { ResolvedEntryData } from './field-resolvers/types.ts'
14
11
  import { resolveFieldDefaultValue } from './field-resolvers/field-default-value-resolver.ts'
15
- import { ApolloContext } from '../../client.ts'
12
+ import { createError, ErrorCode } from '../errors.ts'
13
+ import { isEntryData } from '../util.ts'
14
+ import { ContextInjectionResolver } from './types.ts'
16
15
 
17
16
  function requiresCustomDefaultValueResolver(type: GraphQLOutputType): boolean {
18
17
  if (isNonNullType(type)) {
@@ -29,10 +28,11 @@ function requiresCustomDefaultValueResolver(type: GraphQLOutputType): boolean {
29
28
 
30
29
  function getFieldsForCustomDefaultValueResolver(
31
30
  objectType: GraphQLObjectType,
32
- ): GraphQLField<any, any>[] {
31
+ ): GraphQLField<unknown, unknown>[] {
33
32
  const fields = []
34
33
  for (const fieldsKey in objectType.getFields()) {
35
- const field: GraphQLField<any, any> = objectType.getFields()[fieldsKey]
34
+ const field: GraphQLField<unknown, unknown> =
35
+ objectType.getFields()[fieldsKey]
36
36
  if (requiresCustomDefaultValueResolver(field.type)) {
37
37
  fields.push(field)
38
38
  }
@@ -40,38 +40,54 @@ function getFieldsForCustomDefaultValueResolver(
40
40
  return fields
41
41
  }
42
42
 
43
- type FieldResolversRecord = Record<
43
+ type RecordOfContextInjectionResolvers = Record<
44
44
  string,
45
- GraphQLFieldResolver<
46
- any,
47
- ApolloContext,
48
- any,
49
- Promise<ResolvedEntryData<EntryData | EntryData[] | null>>
50
- >
45
+ ContextInjectionResolver
51
46
  >
52
47
 
53
48
  export function createObjectTypeFieldResolvers(
54
49
  schema: GraphQLSchema,
55
- ): Record<string, FieldResolversRecord> {
56
- const fieldResolversByType: Record<string, FieldResolversRecord> = {}
50
+ ): Record<string, RecordOfContextInjectionResolvers> {
51
+ const adapterResolversByType: Record<
52
+ string,
53
+ RecordOfContextInjectionResolvers
54
+ > = {}
55
+
57
56
  for (const typeName of Object.keys(schema.getTypeMap())) {
58
57
  const type = schema.getType(typeName)
59
58
  if (!isObjectType(type) || type.name.startsWith('__')) {
60
59
  continue
61
60
  }
61
+
62
+ // only some fields need a custom resolver that generates a default result value on missing source data
62
63
  const fieldsForCustomDefaultValueResolver =
63
64
  getFieldsForCustomDefaultValueResolver(type)
64
65
 
65
- const fieldResolversByFieldName: FieldResolversRecord = {}
66
+ const fieldResolversByFieldName: Record<string, ContextInjectionResolver> =
67
+ {}
66
68
  for (const field of fieldsForCustomDefaultValueResolver) {
67
- fieldResolversByFieldName[field.name] = (
68
- obj,
69
- args,
70
- context,
71
- info,
72
- ): Promise<ResolvedEntryData<EntryData | EntryData[] | null>> =>
73
- resolveFieldDefaultValue(
74
- field.name in obj ? obj[field.name] : undefined,
69
+ // the resolvers created here serve as adapters to inject additional context information needed by actual field resolvers
70
+ fieldResolversByFieldName[field.name] = (obj, args, context, info) => {
71
+ let fieldSourceData = null
72
+ if (obj) {
73
+ fieldSourceData = obj[field.name] ?? null
74
+ if (
75
+ fieldSourceData !== null &&
76
+ !(isEntryData(fieldSourceData) || Array.isArray(fieldSourceData))
77
+ ) {
78
+ throw createError(
79
+ `Expected an object or array as data for passing to resolver of field "${field.name}" in type "${typeName}".`,
80
+ ErrorCode.BAD_REPOSITORY_DATA,
81
+ {
82
+ fieldName: field.name,
83
+ typeName: typeName,
84
+ },
85
+ )
86
+ }
87
+ }
88
+
89
+ return resolveFieldDefaultValue(
90
+ fieldSourceData,
75
91
  args,
76
92
  {
77
93
  ...context,
@@ -79,12 +95,13 @@ export function createObjectTypeFieldResolvers(
79
95
  },
80
96
  info,
81
97
  )
98
+ }
82
99
  }
83
100
 
84
101
  if (Object.keys(fieldResolversByFieldName).length > 0) {
85
- fieldResolversByType[typeName] = fieldResolversByFieldName
102
+ adapterResolversByType[typeName] = fieldResolversByFieldName
86
103
  }
87
104
  }
88
105
 
89
- return fieldResolversByType
106
+ return adapterResolversByType
90
107
  }
@@ -1,20 +1,20 @@
1
1
  import { findById, findByTypeId } from '../../../persistence/persistence.ts'
2
- import { GraphQLFieldResolver, isObjectType } from 'graphql'
2
+ import { isObjectType } from 'graphql'
3
3
  import { getReferencedEntryIds } from '../../schema-utils/entry-reference-util.ts'
4
4
  import {
5
5
  ENTRY_ID_INVALID_CHARACTERS,
6
6
  EntryData,
7
7
  EntryDraft,
8
8
  } from '@commitspark/git-adapter'
9
- import { QueryMutationResolverContext } from '../types.ts'
9
+ import { QueryMutationResolver } from '../types.ts'
10
10
  import { createError, ErrorCode } from '../../errors.ts'
11
11
 
12
- export const mutationCreateResolver: GraphQLFieldResolver<
13
- any,
14
- QueryMutationResolverContext,
15
- any,
16
- Promise<EntryData>
17
- > = async (source, args, context, info) => {
12
+ export const mutationCreateResolver: QueryMutationResolver<EntryData> = async (
13
+ source,
14
+ args,
15
+ context,
16
+ info,
17
+ ) => {
18
18
  if (!isObjectType(context.type)) {
19
19
  throw createError(
20
20
  `Entry of type "${context.type.name}" cannot be created as is not an ObjectType.`,
@@ -57,7 +57,7 @@ export const mutationCreateResolver: GraphQLFieldResolver<
57
57
  context,
58
58
  null,
59
59
  info.returnType,
60
- args.data,
60
+ args.data ?? null,
61
61
  )
62
62
 
63
63
  const referencedEntryUpdates: EntryDraft[] = []
@@ -84,7 +84,7 @@ export const mutationCreateResolver: GraphQLFieldResolver<
84
84
  type: context.type.name,
85
85
  referencedBy: [],
86
86
  },
87
- data: args.data,
87
+ data: args.data ?? null,
88
88
  deletion: false,
89
89
  }
90
90
 
@@ -94,7 +94,7 @@ export const mutationCreateResolver: GraphQLFieldResolver<
94
94
  entries: [newEntryDraft, ...referencedEntryUpdates],
95
95
  message: args.commitMessage,
96
96
  })
97
- context.setCurrentHash(commit.ref)
97
+ context.setCurrentHash(commit.commitHash)
98
98
 
99
99
  const newEntry = await findByTypeId(context, context.type.name, args.id)
100
100
  return { ...newEntry.data, id: newEntry.id }
@@ -1,16 +1,16 @@
1
1
  import { findById, findByTypeId } from '../../../persistence/persistence.ts'
2
- import { Entry, EntryData, EntryDraft } from '@commitspark/git-adapter'
2
+ import { Entry, EntryDraft } from '@commitspark/git-adapter'
3
3
  import { getReferencedEntryIds } from '../../schema-utils/entry-reference-util.ts'
4
- import { GraphQLFieldResolver, isObjectType } from 'graphql'
5
- import { QueryMutationResolverContext } from '../types.ts'
4
+ import { isObjectType } from 'graphql'
5
+ import { QueryMutationResolver } from '../types.ts'
6
6
  import { createError, ErrorCode } from '../../errors.ts'
7
7
 
8
- export const mutationDeleteResolver: GraphQLFieldResolver<
9
- any,
10
- QueryMutationResolverContext,
11
- any,
12
- Promise<EntryData>
13
- > = async (source, args, context, info) => {
8
+ export const mutationDeleteResolver: QueryMutationResolver<string> = async (
9
+ source,
10
+ args,
11
+ context,
12
+ info,
13
+ ) => {
14
14
  const entry: Entry = await findByTypeId(context, context.type.name, args.id)
15
15
 
16
16
  if (entry.metadata.referencedBy && entry.metadata.referencedBy.length > 0) {
@@ -41,7 +41,7 @@ export const mutationDeleteResolver: GraphQLFieldResolver<
41
41
  context,
42
42
  null,
43
43
  entryType,
44
- entry.data,
44
+ entry.data ?? null,
45
45
  )
46
46
  const referencedEntryUpdates: EntryDraft[] = []
47
47
  for (const referencedEntryId of referencedEntryIds) {
@@ -70,7 +70,7 @@ export const mutationDeleteResolver: GraphQLFieldResolver<
70
70
  ],
71
71
  message: args.commitMessage,
72
72
  })
73
- context.setCurrentHash(commit.ref)
73
+ context.setCurrentHash(commit.commitHash)
74
74
 
75
75
  return args.id
76
76
  }
@@ -1,8 +1,8 @@
1
1
  import { findById, findByTypeId } from '../../../persistence/persistence.ts'
2
2
  import { getReferencedEntryIds } from '../../schema-utils/entry-reference-util.ts'
3
- import { GraphQLFieldResolver, isObjectType } from 'graphql'
3
+ import { isObjectType } from 'graphql'
4
4
  import { EntryData, EntryDraft } from '@commitspark/git-adapter'
5
- import { QueryMutationResolverContext } from '../types.ts'
5
+ import { QueryMutationResolver } from '../types.ts'
6
6
  import { createError, ErrorCode } from '../../errors.ts'
7
7
 
8
8
  function mergeData(
@@ -15,12 +15,12 @@ function mergeData(
15
15
  }
16
16
  }
17
17
 
18
- export const mutationUpdateResolver: GraphQLFieldResolver<
19
- any,
20
- QueryMutationResolverContext,
21
- any,
22
- Promise<EntryData>
23
- > = async (source, args, context, info) => {
18
+ export const mutationUpdateResolver: QueryMutationResolver<EntryData> = async (
19
+ source,
20
+ args,
21
+ context,
22
+ info,
23
+ ) => {
24
24
  if (!isObjectType(context.type)) {
25
25
  throw createError(
26
26
  `Type "${context.type.name}" cannot be mutated as is not an ObjectType.`,
@@ -36,10 +36,10 @@ export const mutationUpdateResolver: GraphQLFieldResolver<
36
36
  context,
37
37
  null,
38
38
  info.returnType,
39
- existingEntry.data,
39
+ existingEntry.data ?? null,
40
40
  )
41
41
 
42
- const mergedData = mergeData(existingEntry.data ?? null, args.data)
42
+ const mergedData = mergeData(existingEntry.data ?? null, args.data ?? null)
43
43
  const updatedReferencedEntryIds = await getReferencedEntryIds(
44
44
  context.type,
45
45
  context,
@@ -74,10 +74,10 @@ export const mutationUpdateResolver: GraphQLFieldResolver<
74
74
  }
75
75
  for (const newlyReferencedEntryId of newlyReferencedIds) {
76
76
  const newlyReferencedEntry = await findById(context, newlyReferencedEntryId)
77
- const updatedReferenceList: string[] =
78
- newlyReferencedEntry.metadata.referencedBy ?? []
79
- updatedReferenceList.push(args.id)
80
- updatedReferenceList.sort()
77
+ const updatedReferenceList: string[] = [
78
+ ...(newlyReferencedEntry.metadata.referencedBy ?? []),
79
+ args.id,
80
+ ].sort()
81
81
  referencedEntryUpdates.push({
82
82
  ...newlyReferencedEntry,
83
83
  metadata: {
@@ -97,7 +97,7 @@ export const mutationUpdateResolver: GraphQLFieldResolver<
97
97
  ],
98
98
  message: args.commitMessage,
99
99
  })
100
- context.setCurrentHash(commit.ref)
100
+ context.setCurrentHash(commit.commitHash)
101
101
 
102
102
  const updatedEntry = await findByTypeId(context, context.type.name, args.id)
103
103
  return { ...updatedEntry.data, id: updatedEntry.id }