@commitspark/graphql-api 1.0.0-beta.1 → 1.0.0-beta.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.
Files changed (103) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +3 -3
  3. package/dist/cjs/client.js +1 -1
  4. package/dist/cjs/client.js.map +1 -1
  5. package/dist/cjs/graphql/errors.js +32 -0
  6. package/dist/cjs/graphql/errors.js.map +1 -0
  7. package/dist/cjs/graphql/queries-mutations-generator.js +10 -8
  8. package/dist/cjs/graphql/queries-mutations-generator.js.map +1 -1
  9. package/dist/cjs/graphql/resolvers/field-resolvers/entry-reference-resolver.js +4 -1
  10. package/dist/cjs/graphql/resolvers/field-resolvers/entry-reference-resolver.js.map +1 -1
  11. package/dist/cjs/graphql/resolvers/field-resolvers/field-default-value-resolver.js +15 -3
  12. package/dist/cjs/graphql/resolvers/field-resolvers/field-default-value-resolver.js.map +1 -1
  13. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js +10 -13
  14. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js.map +1 -1
  15. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js +5 -6
  16. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js.map +1 -1
  17. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js +5 -4
  18. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js.map +1 -1
  19. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/{query-all-resolver.js → query-every-resolver.js} +4 -4
  20. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-every-resolver.js.map +1 -0
  21. package/dist/cjs/graphql/schema-generator.js +7 -2
  22. package/dist/cjs/graphql/schema-generator.js.map +1 -1
  23. package/dist/cjs/graphql/schema-root-type-generator.js +1 -1
  24. package/dist/cjs/graphql/schema-root-type-generator.js.map +1 -1
  25. package/dist/cjs/graphql/schema-utils/entry-reference-util.js +26 -18
  26. package/dist/cjs/graphql/schema-utils/entry-reference-util.js.map +1 -1
  27. package/dist/cjs/graphql/schema-utils/union-type-util.js +9 -4
  28. package/dist/cjs/graphql/schema-utils/union-type-util.js.map +1 -1
  29. package/dist/cjs/index.js +3 -0
  30. package/dist/cjs/index.js.map +1 -1
  31. package/dist/cjs/persistence/persistence.js +11 -14
  32. package/dist/cjs/persistence/persistence.js.map +1 -1
  33. package/dist/esm/client.js +1 -1
  34. package/dist/esm/client.js.map +1 -1
  35. package/dist/esm/graphql/errors.js +28 -0
  36. package/dist/esm/graphql/errors.js.map +1 -0
  37. package/dist/esm/graphql/queries-mutations-generator.js +10 -8
  38. package/dist/esm/graphql/queries-mutations-generator.js.map +1 -1
  39. package/dist/esm/graphql/resolvers/field-resolvers/entry-reference-resolver.js +4 -1
  40. package/dist/esm/graphql/resolvers/field-resolvers/entry-reference-resolver.js.map +1 -1
  41. package/dist/esm/graphql/resolvers/field-resolvers/field-default-value-resolver.js +15 -3
  42. package/dist/esm/graphql/resolvers/field-resolvers/field-default-value-resolver.js.map +1 -1
  43. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js +11 -14
  44. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js.map +1 -1
  45. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js +6 -7
  46. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js.map +1 -1
  47. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js +5 -4
  48. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js.map +1 -1
  49. package/dist/esm/graphql/resolvers/query-mutation-resolvers/{query-all-resolver.js → query-every-resolver.js} +2 -2
  50. package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-every-resolver.js.map +1 -0
  51. package/dist/esm/graphql/schema-generator.js +7 -2
  52. package/dist/esm/graphql/schema-generator.js.map +1 -1
  53. package/dist/esm/graphql/schema-root-type-generator.js +1 -1
  54. package/dist/esm/graphql/schema-root-type-generator.js.map +1 -1
  55. package/dist/esm/graphql/schema-utils/entry-reference-util.js +27 -19
  56. package/dist/esm/graphql/schema-utils/entry-reference-util.js.map +1 -1
  57. package/dist/esm/graphql/schema-utils/union-type-util.js +9 -4
  58. package/dist/esm/graphql/schema-utils/union-type-util.js.map +1 -1
  59. package/dist/esm/index.js +2 -0
  60. package/dist/esm/index.js.map +1 -1
  61. package/dist/esm/persistence/persistence.js +11 -14
  62. package/dist/esm/persistence/persistence.js.map +1 -1
  63. package/dist/tsconfig.build.cjs.tsbuildinfo +1 -1
  64. package/dist/tsconfig.build.esm.tsbuildinfo +1 -1
  65. package/dist/tsconfig.build.types.tsbuildinfo +1 -1
  66. package/dist/types/graphql/errors.d.ts +20 -0
  67. package/dist/types/graphql/errors.d.ts.map +1 -0
  68. package/dist/types/graphql/queries-mutations-generator.d.ts +1 -1
  69. package/dist/types/graphql/queries-mutations-generator.d.ts.map +1 -1
  70. package/dist/types/graphql/resolvers/field-resolvers/entry-reference-resolver.d.ts.map +1 -1
  71. package/dist/types/graphql/resolvers/field-resolvers/field-default-value-resolver.d.ts.map +1 -1
  72. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.d.ts.map +1 -1
  73. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.d.ts.map +1 -1
  74. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.d.ts.map +1 -1
  75. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-every-resolver.d.ts +5 -0
  76. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-every-resolver.d.ts.map +1 -0
  77. package/dist/types/graphql/schema-generator.d.ts.map +1 -1
  78. package/dist/types/graphql/schema-utils/entry-reference-util.d.ts.map +1 -1
  79. package/dist/types/graphql/schema-utils/union-type-util.d.ts +2 -2
  80. package/dist/types/graphql/schema-utils/union-type-util.d.ts.map +1 -1
  81. package/dist/types/index.d.ts +2 -1
  82. package/dist/types/index.d.ts.map +1 -1
  83. package/dist/types/persistence/persistence.d.ts.map +1 -1
  84. package/package.json +10 -2
  85. package/src/client.ts +1 -1
  86. package/src/graphql/errors.ts +43 -0
  87. package/src/graphql/queries-mutations-generator.ts +12 -10
  88. package/src/graphql/resolvers/field-resolvers/entry-reference-resolver.ts +8 -1
  89. package/src/graphql/resolvers/field-resolvers/field-default-value-resolver.ts +23 -5
  90. package/src/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.ts +22 -14
  91. package/src/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.ts +12 -8
  92. package/src/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.ts +9 -4
  93. package/src/graphql/resolvers/query-mutation-resolvers/{query-all-resolver.ts → query-every-resolver.ts} +1 -1
  94. package/src/graphql/schema-generator.ts +7 -2
  95. package/src/graphql/schema-root-type-generator.ts +1 -1
  96. package/src/graphql/schema-utils/entry-reference-util.ts +44 -22
  97. package/src/graphql/schema-utils/union-type-util.ts +20 -7
  98. package/src/index.ts +2 -1
  99. package/src/persistence/persistence.ts +13 -15
  100. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-all-resolver.js.map +0 -1
  101. package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-all-resolver.js.map +0 -1
  102. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-all-resolver.d.ts +0 -5
  103. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-all-resolver.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"queries-mutations-generator.d.ts","sourceRoot":"","sources":["../../../src/graphql/queries-mutations-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AASjE,wBAAgB,2BAA2B,CACzC,mBAAmB,EAAE,iBAAiB,EAAE,GACvC,eAAe,EAAE,CAiGnB;AAED,wBAAgB,qBAAqB,IAAI,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CASvE;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;IAC9C,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;IAC7C,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;IAClD,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;IAClD,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;CACnD;AAED,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,oBAAoB,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;CAC3D"}
1
+ {"version":3,"file":"queries-mutations-generator.d.ts","sourceRoot":"","sources":["../../../src/graphql/queries-mutations-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AASjE,wBAAgB,2BAA2B,CACzC,mBAAmB,EAAE,iBAAiB,EAAE,GACvC,eAAe,EAAE,CAmGnB;AAED,wBAAgB,qBAAqB,IAAI,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CASvE;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;IAChD,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;IAC7C,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;IAClD,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;IAClD,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;CACnD;AAED,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,oBAAoB,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;CAC3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"entry-reference-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/graphql/resolvers/field-resolvers/entry-reference-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAwB,MAAM,SAAS,CAAA;AAI7D,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,GAAG,CAiBpD,CAAA"}
1
+ {"version":3,"file":"entry-reference-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/graphql/resolvers/field-resolvers/entry-reference-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAwB,MAAM,SAAS,CAAA;AAK7D,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,GAAG,CAuBpD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"field-default-value-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/graphql/resolvers/field-resolvers/field-default-value-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA2C,MAAM,SAAS,CAAA;AAkBhF,eAAO,MAAM,wBAAwB,EAAE,aAAa,CAAC,GAAG,CAwFvD,CAAA"}
1
+ {"version":3,"file":"field-default-value-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/graphql/resolvers/field-resolvers/field-default-value-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA2C,MAAM,SAAS,CAAA;AAmBhF,eAAO,MAAM,wBAAwB,EAAE,aAAa,CAAC,GAAG,CAyGvD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"mutation-create-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,oBAAoB,EAAgB,MAAM,SAAS,CAAA;AAE1E,OAAO,EAEL,SAAS,EAEV,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAA;AAEvD,eAAO,MAAM,sBAAsB,EAAE,oBAAoB,CACvD,GAAG,EACH,4BAA4B,EAC5B,GAAG,EACH,OAAO,CAAC,SAAS,CAAC,CA6FnB,CAAA"}
1
+ {"version":3,"file":"mutation-create-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAgB,MAAM,SAAS,CAAA;AAE5D,OAAO,EAEL,SAAS,EAEV,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAA;AAGvD,eAAO,MAAM,sBAAsB,EAAE,oBAAoB,CACvD,GAAG,EACH,4BAA4B,EAC5B,GAAG,EACH,OAAO,CAAC,SAAS,CAAC,CAoGnB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"mutation-delete-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,SAAS,EAAc,MAAM,0BAA0B,CAAA;AAEvE,OAAO,EAAgB,oBAAoB,EAAgB,MAAM,SAAS,CAAA;AAC1E,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAA;AAEvD,eAAO,MAAM,sBAAsB,EAAE,oBAAoB,CACvD,GAAG,EACH,4BAA4B,EAC5B,GAAG,EACH,OAAO,CAAC,SAAS,CAAC,CAsEnB,CAAA"}
1
+ {"version":3,"file":"mutation-delete-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,SAAS,EAAc,MAAM,0BAA0B,CAAA;AAEvE,OAAO,EAAE,oBAAoB,EAAgB,MAAM,SAAS,CAAA;AAC5D,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAA;AAGvD,eAAO,MAAM,sBAAsB,EAAE,oBAAoB,CACvD,GAAG,EACH,4BAA4B,EAC5B,GAAG,EACH,OAAO,CAAC,SAAS,CAAC,CAyEnB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"mutation-update-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAgB,MAAM,SAAS,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAc,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAA;AAYvD,eAAO,MAAM,sBAAsB,EAAE,oBAAoB,CACvD,GAAG,EACH,4BAA4B,EAC5B,GAAG,EACH,OAAO,CAAC,SAAS,CAAC,CA6FnB,CAAA"}
1
+ {"version":3,"file":"mutation-update-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAgB,MAAM,SAAS,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAc,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAA;AAavD,eAAO,MAAM,sBAAsB,EAAE,oBAAoB,CACvD,GAAG,EACH,4BAA4B,EAC5B,GAAG,EACH,OAAO,CAAC,SAAS,CAAC,CAiGnB,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { EntryData } from '@commitspark/git-adapter';
2
+ import { GraphQLFieldResolver } from 'graphql';
3
+ import { QueryMutationResolverContext } from '../types';
4
+ export declare const queryEveryResolver: GraphQLFieldResolver<any, QueryMutationResolverContext, any, Promise<EntryData[]>>;
5
+ //# sourceMappingURL=query-every-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-every-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/graphql/resolvers/query-mutation-resolvers/query-every-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAA;AAEvD,eAAO,MAAM,kBAAkB,EAAE,oBAAoB,CACnD,GAAG,EACH,4BAA4B,EAC5B,GAAG,EACH,OAAO,CAAC,SAAS,EAAE,CAAC,CAWrB,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,WAAW,CAAA;AAMzC,wBAAsB,cAAc,CAClC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,2BAA2B,CAAC,CAmItC"}
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,WAAW,CAAA;AAOzC,wBAAsB,cAAc,CAClC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,2BAA2B,CAAC,CAuItC"}
@@ -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,EAEL,mBAAmB,EACnB,iBAAiB,EAKlB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAsF5C,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,CA2EnB"}
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,cAAc,CAAA;AAmG5C,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,4 +1,4 @@
1
1
  import { EntryData } from '@commitspark/git-adapter';
2
- export declare function getUnionTypeNameFromFieldValue(fieldValue: any): string;
3
- export declare function getUnionValue(fieldValue: any): EntryData;
2
+ export declare function getUnionTypeNameFromFieldValue(fieldValue: unknown): string;
3
+ export declare function getUnionValue(fieldValue: unknown): EntryData;
4
4
  //# sourceMappingURL=union-type-util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"union-type-util.d.ts","sourceRoot":"","sources":["../../../../src/graphql/schema-utils/union-type-util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEpD,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,GAAG,GAAG,MAAM,CAQtE;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,GAAG,GAAG,SAAS,CAOxD"}
1
+ {"version":3,"file":"union-type-util.d.ts","sourceRoot":"","sources":["../../../../src/graphql/schema-utils/union-type-util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAGpD,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,CAc1E;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,OAAO,GAAG,SAAS,CAa5D"}
@@ -1,9 +1,10 @@
1
1
  import { ApolloExecuteOperationRequest, GraphQLResponse, SchemaResponse, VariableValues } from './client';
2
2
  import { GitAdapter } from '@commitspark/git-adapter';
3
+ import { ErrorCode, ErrorMetadata } from './graphql/errors';
3
4
  interface Client {
4
5
  postGraphQL<TData = Record<string, unknown>, TVariables extends VariableValues = VariableValues>(ref: string, request: ApolloExecuteOperationRequest<TData, TVariables>): Promise<GraphQLResponse<TData | null>>;
5
6
  getSchema(ref: string): Promise<SchemaResponse>;
6
7
  }
7
- export { Client, GraphQLResponse, SchemaResponse };
8
+ export { Client, GraphQLResponse, SchemaResponse, ErrorCode, ErrorMetadata };
8
9
  export declare function createClient(gitAdapter: GitAdapter): Promise<Client>;
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAE7B,eAAe,EAEf,cAAc,EACd,cAAc,EACf,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,UAAU,MAAM;IACd,WAAW,CACT,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,UAAU,SAAS,cAAc,GAAG,cAAc,EAElD,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,6BAA6B,CAAC,KAAK,EAAE,UAAU,CAAC,GACxD,OAAO,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAA;IACzC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;CAChD;AAED,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,CAAA;AAElD,wBAAsB,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAK1E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAE7B,eAAe,EAEf,cAAc,EACd,cAAc,EACf,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAE3D,UAAU,MAAM;IACd,WAAW,CACT,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,UAAU,SAAS,cAAc,GAAG,cAAc,EAElD,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,6BAA6B,CAAC,KAAK,EAAE,UAAU,CAAC,GACxD,OAAO,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAA;IACzC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;CAChD;AAED,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,CAAA;AAE5E,wBAAsB,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAK1E"}
@@ -1 +1 @@
1
- {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../src/persistence/persistence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAG5D,wBAAsB,WAAW,CAC/B,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED,wBAAsB,QAAQ,CAC5B,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,KAAK,CAAC,CAYhB;AAED,wBAAsB,UAAU,CAC9B,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,KAAK,EAAE,CAAC,CAGlB;AAED,wBAAsB,YAAY,CAChC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,KAAK,CAAC,CAkBhB"}
1
+ {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../src/persistence/persistence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAG5D,wBAAsB,WAAW,CAC/B,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED,wBAAsB,QAAQ,CAC5B,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,KAAK,CAAC,CAWhB;AAED,wBAAsB,UAAU,CAC9B,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,KAAK,EAAE,CAAC,CAGlB;AAED,wBAAsB,YAAY,CAChC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,KAAK,CAAC,CAkBhB"}
package/package.json CHANGED
@@ -1,7 +1,15 @@
1
1
  {
2
2
  "name": "@commitspark/graphql-api",
3
- "description": "GraphQL API for Commitspark",
4
- "version": "1.0.0-beta.1",
3
+ "description": "GraphQL API to store and manage structured data with Git",
4
+ "keywords": [
5
+ "graphql",
6
+ "graphql-api",
7
+ "graphql-schema",
8
+ "git",
9
+ "gitops",
10
+ "api"
11
+ ],
12
+ "version": "1.0.0-beta.2",
5
13
  "license": "ISC",
6
14
  "private": false,
7
15
  "files": [
package/src/client.ts CHANGED
@@ -86,7 +86,7 @@ export const getSchema = async (
86
86
 
87
87
  const typeDefinitionStrings = (await generateSchema(context)).typeDefs
88
88
  if (!Array.isArray(typeDefinitionStrings)) {
89
- throw new Error('Unknown element')
89
+ throw new Error('Expected array of typeDefinition strings.')
90
90
  }
91
91
 
92
92
  return {
@@ -0,0 +1,43 @@
1
+ import { GraphQLError } from 'graphql'
2
+
3
+ export enum ErrorCode {
4
+ BAD_USER_INPUT = 'BAD_USER_INPUT',
5
+ NOT_FOUND = 'NOT_FOUND',
6
+ BAD_REPOSITORY_DATA = 'BAD_REPOSITORY_DATA',
7
+ SCHEMA_DATA_MISMATCH = 'SCHEMA_DATA_MISMATCH',
8
+ BAD_SCHEMA = 'BAD_SCHEMA',
9
+ INTERNAL_ERROR = 'INTERNAL_ERROR',
10
+ IN_USE = 'IN_USE',
11
+ }
12
+
13
+ export interface ErrorMetadata {
14
+ typeName?: string
15
+ fieldName?: string
16
+ fieldValue?: unknown
17
+ argumentName?: string
18
+ argumentValue?: unknown
19
+ schema?: string
20
+ }
21
+
22
+ export const createError = (
23
+ message: string,
24
+ code: ErrorCode,
25
+ metaData: ErrorMetadata,
26
+ ): GraphQLError => {
27
+ const serializedFieldValue =
28
+ typeof metaData.fieldValue === 'object' ||
29
+ Array.isArray(metaData.fieldValue)
30
+ ? JSON.stringify(metaData.fieldValue)
31
+ : metaData.fieldValue
32
+ const updatedMetaData = { ...metaData }
33
+ if (serializedFieldValue !== undefined) {
34
+ updatedMetaData.fieldValue = serializedFieldValue
35
+ }
36
+
37
+ return new GraphQLError(message, {
38
+ extensions: {
39
+ code: code,
40
+ commitspark: updatedMetaData,
41
+ },
42
+ })
43
+ }
@@ -1,7 +1,7 @@
1
1
  import { EntryData } from '@commitspark/git-adapter'
2
2
  import { ApolloContext } from '../client'
3
3
  import { GraphQLFieldResolver, GraphQLObjectType } from 'graphql'
4
- import { queryAllResolver } from './resolvers/query-mutation-resolvers/query-all-resolver'
4
+ import { queryEveryResolver } from './resolvers/query-mutation-resolvers/query-every-resolver'
5
5
  import { queryByIdResolver } from './resolvers/query-mutation-resolvers/query-by-id-resolver'
6
6
  import { mutationCreateResolver } from './resolvers/query-mutation-resolvers/mutation-create-resolver'
7
7
  import { mutationUpdateResolver } from './resolvers/query-mutation-resolvers/mutation-update-resolver'
@@ -15,15 +15,17 @@ export function generateQueriesAndMutations(
15
15
  return entryDirectiveTypes.map((objectType): GeneratedSchema => {
16
16
  const typeName = objectType.name
17
17
 
18
- const queryAllName = `all${typeName}s`
19
- const queryAllString = `${queryAllName}: [${objectType.name}!]`
20
- const queryAllResolverFunc: GraphQLFieldResolver<
18
+ // The semantics of `every` aren't a perfect replacement of `all` but this way we don't need to do non-trivial
19
+ // pluralization of user-provided typeName
20
+ const queryEveryName = `every${typeName}`
21
+ const queryEveryString = `${queryEveryName}: [${objectType.name}!]`
22
+ const queryEveryResolverFunc: GraphQLFieldResolver<
21
23
  any,
22
24
  ApolloContext,
23
25
  any,
24
26
  Promise<EntryData[]>
25
27
  > = (source, args, context, info) =>
26
- queryAllResolver(source, args, { ...context, type: objectType }, info)
28
+ queryEveryResolver(source, args, { ...context, type: objectType }, info)
27
29
 
28
30
  const queryByIdName = typeName
29
31
  const queryByIdString = `${queryByIdName}(id: ID!): ${objectType.name}`
@@ -81,10 +83,10 @@ export function generateQueriesAndMutations(
81
83
  )
82
84
 
83
85
  return {
84
- queryAll: {
85
- name: queryAllName,
86
- schemaString: queryAllString,
87
- resolver: queryAllResolverFunc,
86
+ queryEvery: {
87
+ name: queryEveryName,
88
+ schemaString: queryEveryString,
89
+ resolver: queryEveryResolverFunc,
88
90
  },
89
91
  queryById: {
90
92
  name: queryByIdName,
@@ -122,7 +124,7 @@ export function generateTypeNameQuery(): GeneratedQuery<Promise<string>> {
122
124
  }
123
125
 
124
126
  export interface GeneratedSchema {
125
- queryAll: GeneratedQuery<Promise<EntryData[]>>
127
+ queryEvery: GeneratedQuery<Promise<EntryData[]>>
126
128
  queryById: GeneratedQuery<Promise<EntryData>>
127
129
  createMutation: GeneratedQuery<Promise<EntryData>>
128
130
  updateMutation: GeneratedQuery<Promise<EntryData>>
@@ -1,6 +1,7 @@
1
1
  import { FieldResolver, FieldResolverContext } from './types'
2
2
  import { GraphQLResolveInfo, isNamedType } from 'graphql'
3
3
  import { findById } from '../../../persistence/persistence'
4
+ import { createError, ErrorCode } from '../../errors'
4
5
 
5
6
  export const resolveEntryReference: FieldResolver<any> = async (
6
7
  fieldValue: any,
@@ -9,7 +10,13 @@ export const resolveEntryReference: FieldResolver<any> = async (
9
10
  info: GraphQLResolveInfo,
10
11
  ) => {
11
12
  if (!isNamedType(context.currentType)) {
12
- throw new Error(`Expected context.currentType type to be named type`)
13
+ throw createError(
14
+ `Expected context.currentType type to be a named type.`,
15
+ ErrorCode.INTERNAL_ERROR,
16
+ {
17
+ fieldValue: fieldValue,
18
+ },
19
+ )
13
20
  }
14
21
 
15
22
  const entry = await findById(
@@ -15,6 +15,7 @@ import {
15
15
  } from '../../schema-utils/entry-type-util'
16
16
  import { resolveEntryReference } from './entry-reference-resolver'
17
17
  import { resolveUnionValue } from './union-value-resolver'
18
+ import { createError, ErrorCode } from '../../errors'
18
19
 
19
20
  export const resolveFieldDefaultValue: FieldResolver<any> = async (
20
21
  fieldValue: any,
@@ -44,8 +45,13 @@ export const resolveFieldDefaultValue: FieldResolver<any> = async (
44
45
  }
45
46
 
46
47
  if (!Array.isArray(fieldValue)) {
47
- throw new Error(
48
+ throw createError(
48
49
  `Expected array while resolving value for field "${info.fieldName}".`,
50
+ ErrorCode.SCHEMA_DATA_MISMATCH,
51
+ {
52
+ fieldName: info.fieldName,
53
+ fieldValue: fieldValue,
54
+ },
49
55
  )
50
56
  }
51
57
 
@@ -68,12 +74,17 @@ export const resolveFieldDefaultValue: FieldResolver<any> = async (
68
74
  } else if (isUnionType(context.currentType)) {
69
75
  if (fieldValue === undefined || fieldValue === null) {
70
76
  if (context.hasNonNullParent) {
71
- throw new Error(
77
+ throw createError(
72
78
  `Cannot generate a default value for NonNull field "${
73
79
  info.parentType.name
74
80
  }.${info.fieldName}" because it is a union field of type "${
75
81
  (info.returnType as GraphQLNonNull<GraphQLUnionType>).ofType.name
76
- }".`,
82
+ }". Set a value in your repository data or remove the NonNull declaration in your schema.`,
83
+ ErrorCode.BAD_REPOSITORY_DATA,
84
+ {
85
+ typeName: info.parentType.name,
86
+ fieldName: info.fieldName,
87
+ },
77
88
  )
78
89
  } else {
79
90
  return new Promise((resolve) => resolve(null))
@@ -88,8 +99,15 @@ export const resolveFieldDefaultValue: FieldResolver<any> = async (
88
99
  } else if (isObjectType(context.currentType)) {
89
100
  if (fieldValue === undefined || fieldValue === null) {
90
101
  if (context.hasNonNullParent) {
91
- throw new Error(
92
- `Cannot generate a default value for NonNull field "${info.fieldName}" of type "${info.parentType.name}".`,
102
+ throw createError(
103
+ `Cannot generate a default value for NonNull field "${info.fieldName}" of type ` +
104
+ `"${info.parentType.name}". Set a value in your repository data or remove the NonNull ` +
105
+ `declaration in your schema.`,
106
+ ErrorCode.BAD_REPOSITORY_DATA,
107
+ {
108
+ typeName: info.parentType.name,
109
+ fieldName: info.fieldName,
110
+ },
93
111
  )
94
112
  } else {
95
113
  return new Promise((resolve) => resolve(null))
@@ -1,5 +1,5 @@
1
1
  import { findById, findByTypeId } from '../../../persistence/persistence'
2
- import { GraphQLError, GraphQLFieldResolver, isObjectType } from 'graphql'
2
+ import { GraphQLFieldResolver, isObjectType } from 'graphql'
3
3
  import { getReferencedEntryIds } from '../../schema-utils/entry-reference-util'
4
4
  import {
5
5
  ENTRY_ID_INVALID_CHARACTERS,
@@ -7,6 +7,7 @@ import {
7
7
  EntryDraft,
8
8
  } from '@commitspark/git-adapter'
9
9
  import { QueryMutationResolverContext } from '../types'
10
+ import { createError, ErrorCode } from '../../errors'
10
11
 
11
12
  export const mutationCreateResolver: GraphQLFieldResolver<
12
13
  any,
@@ -14,19 +15,24 @@ export const mutationCreateResolver: GraphQLFieldResolver<
14
15
  any,
15
16
  Promise<EntryData>
16
17
  > = async (source, args, context, info) => {
17
- if (!isObjectType(info.returnType)) {
18
- throw new Error('Expected to create an ObjectType')
18
+ if (!isObjectType(context.type)) {
19
+ throw createError(
20
+ `Entry of type "${context.type.name}" cannot be created as is not an ObjectType.`,
21
+ ErrorCode.INTERNAL_ERROR,
22
+ {},
23
+ )
19
24
  }
20
25
 
21
26
  const idValidationResult = args.id.match(ENTRY_ID_INVALID_CHARACTERS)
22
27
  if (idValidationResult) {
23
- throw new GraphQLError(
24
- `"id" contains invalid characters "${idValidationResult.join(', ')}"`,
28
+ throw createError(
29
+ `Field "id" contains invalid characters "${idValidationResult.join(
30
+ ', ',
31
+ )}".`,
32
+ ErrorCode.BAD_USER_INPUT,
25
33
  {
26
- extensions: {
27
- code: 'BAD_USER_INPUT',
28
- argumentName: 'id',
29
- },
34
+ argumentName: 'id',
35
+ argumentValue: args.id,
30
36
  },
31
37
  )
32
38
  }
@@ -42,16 +48,18 @@ export const mutationCreateResolver: GraphQLFieldResolver<
42
48
  /* empty */
43
49
  }
44
50
  if (existingEntry) {
45
- throw new GraphQLError(`An entry with id "${args.id}" already exists`, {
46
- extensions: {
47
- code: 'BAD_USER_INPUT',
51
+ throw createError(
52
+ `An entry with id "${args.id}" already exists.`,
53
+ ErrorCode.BAD_USER_INPUT,
54
+ {
48
55
  argumentName: 'id',
56
+ argumentValue: args.id,
49
57
  },
50
- })
58
+ )
51
59
  }
52
60
 
53
61
  const referencedEntryIds = await getReferencedEntryIds(
54
- info.returnType,
62
+ context.type,
55
63
  context,
56
64
  null,
57
65
  info.returnType,
@@ -1,8 +1,9 @@
1
1
  import { findById, findByTypeId } from '../../../persistence/persistence'
2
2
  import { Entry, EntryData, EntryDraft } from '@commitspark/git-adapter'
3
3
  import { getReferencedEntryIds } from '../../schema-utils/entry-reference-util'
4
- import { GraphQLError, GraphQLFieldResolver, isObjectType } from 'graphql'
4
+ import { GraphQLFieldResolver, isObjectType } from 'graphql'
5
5
  import { QueryMutationResolverContext } from '../types'
6
+ import { createError, ErrorCode } from '../../errors'
6
7
 
7
8
  export const mutationDeleteResolver: GraphQLFieldResolver<
8
9
  any,
@@ -21,20 +22,23 @@ export const mutationDeleteResolver: GraphQLFieldResolver<
21
22
  const otherIds = entry.metadata.referencedBy
22
23
  .map((referenceId) => `"${referenceId}"`)
23
24
  .join(', ')
24
- throw new GraphQLError(
25
- `Entry with id "${args.id}" is referenced by other entries: [${otherIds}]`,
25
+ throw createError(
26
+ `Entry with ID "${args.id}" is still referenced by entries [${otherIds}].`,
27
+ ErrorCode.IN_USE,
26
28
  {
27
- extensions: {
28
- code: 'IN_USE',
29
- argumentName: 'id',
30
- },
29
+ argumentName: 'id',
30
+ argumentValue: args.id,
31
31
  },
32
32
  )
33
33
  }
34
34
 
35
35
  const entryType = info.schema.getType(context.type.name)
36
36
  if (!isObjectType(entryType)) {
37
- throw new Error('Expected to delete an ObjectType')
37
+ throw createError(
38
+ `Type "${context.type.name}" is not an ObjectType.`,
39
+ ErrorCode.INTERNAL_ERROR,
40
+ {},
41
+ )
38
42
  }
39
43
 
40
44
  const referencedEntryIds = await getReferencedEntryIds(
@@ -3,6 +3,7 @@ import { getReferencedEntryIds } from '../../schema-utils/entry-reference-util'
3
3
  import { GraphQLFieldResolver, isObjectType } from 'graphql'
4
4
  import { EntryData, EntryDraft } from '@commitspark/git-adapter'
5
5
  import { QueryMutationResolverContext } from '../types'
6
+ import { createError, ErrorCode } from '../../errors'
6
7
 
7
8
  function mergeData(
8
9
  existingEntryData: EntryData,
@@ -20,8 +21,12 @@ export const mutationUpdateResolver: GraphQLFieldResolver<
20
21
  any,
21
22
  Promise<EntryData>
22
23
  > = async (source, args, context, info) => {
23
- if (!isObjectType(info.returnType)) {
24
- throw new Error('Expected to update an ObjectType')
24
+ if (!isObjectType(context.type)) {
25
+ throw createError(
26
+ `Type "${context.type.name}" cannot be mutated as is not an ObjectType.`,
27
+ ErrorCode.INTERNAL_ERROR,
28
+ {},
29
+ )
25
30
  }
26
31
 
27
32
  const existingEntry = await findByTypeId(
@@ -32,7 +37,7 @@ export const mutationUpdateResolver: GraphQLFieldResolver<
32
37
  )
33
38
 
34
39
  const existingReferencedEntryIds = await getReferencedEntryIds(
35
- info.returnType,
40
+ context.type,
36
41
  context,
37
42
  null,
38
43
  info.returnType,
@@ -41,7 +46,7 @@ export const mutationUpdateResolver: GraphQLFieldResolver<
41
46
 
42
47
  const mergedData = mergeData(existingEntry.data ?? null, args.data)
43
48
  const updatedReferencedEntryIds = await getReferencedEntryIds(
44
- info.returnType,
49
+ context.type,
45
50
  context,
46
51
  null,
47
52
  info.returnType,
@@ -3,7 +3,7 @@ import { findByType } from '../../../persistence/persistence'
3
3
  import { GraphQLFieldResolver } from 'graphql'
4
4
  import { QueryMutationResolverContext } from '../types'
5
5
 
6
- export const queryAllResolver: GraphQLFieldResolver<
6
+ export const queryEveryResolver: GraphQLFieldResolver<
7
7
  any,
8
8
  QueryMutationResolverContext,
9
9
  any,
@@ -20,6 +20,7 @@ import { GraphQLFieldResolver, GraphQLTypeResolver } from 'graphql'
20
20
  import { getValidationResult } from './schema-validator'
21
21
  import { EntryData } from '@commitspark/git-adapter'
22
22
  import { createObjectTypeFieldResolvers } from './resolvers/object-type-field-default-value-resolver-generator'
23
+ import { createError, ErrorCode } from './errors'
23
24
 
24
25
  export async function generateSchema(
25
26
  context: ApolloContext,
@@ -33,7 +34,10 @@ export async function generateSchema(
33
34
 
34
35
  const validationResult = getValidationResult(schema)
35
36
  if (validationResult.length > 0) {
36
- throw new Error(validationResult.join('\n'))
37
+ throw createError(`Invalid schema.`, ErrorCode.BAD_SCHEMA, {
38
+ schema: printSchemaWithDirectives(schema),
39
+ argumentValue: validationResult.join('\n'),
40
+ })
37
41
  }
38
42
  const schemaAnalyzerResult = analyzeSchema(schema)
39
43
 
@@ -99,7 +103,8 @@ ${generatedSchemaRootTypeStrings}`
99
103
  > = {}
100
104
 
101
105
  for (const element of generatedQueriesMutations) {
102
- generatedQueryResolvers[element.queryAll.name] = element.queryAll.resolver
106
+ generatedQueryResolvers[element.queryEvery.name] =
107
+ element.queryEvery.resolver
103
108
  generatedQueryResolvers[element.queryById.name] = element.queryById.resolver
104
109
  generatedMutationResolvers[element.createMutation.name] =
105
110
  element.createMutation.resolver
@@ -7,7 +7,7 @@ export function generateSchemaRootTypeStrings(
7
7
  return (
8
8
  `type Query {\n` +
9
9
  generatedSchemas
10
- .map((generated) => ' ' + generated.queryAll.schemaString)
10
+ .map((generated) => ' ' + generated.queryEvery.schemaString)
11
11
  .join('\n') +
12
12
  '\n' +
13
13
  generatedSchemas
@@ -1,5 +1,4 @@
1
1
  import {
2
- GraphQLError,
3
2
  GraphQLNullableType,
4
3
  GraphQLObjectType,
5
4
  isListType,
@@ -14,6 +13,7 @@ import {
14
13
  getUnionValue,
15
14
  } from './union-type-util'
16
15
  import { hasEntryDirective, isUnionOfEntryTypes } from './entry-type-util'
16
+ import { createError, ErrorCode } from '../errors'
17
17
 
18
18
  function isPermittedReferenceType(
19
19
  referencedTypeName: string,
@@ -45,7 +45,14 @@ async function validateReference(
45
45
  return
46
46
  } else if (isListType(fieldType)) {
47
47
  if (!Array.isArray(fieldValue)) {
48
- throw new Error(`Expected array value in field "${fieldName}"`)
48
+ throw createError(
49
+ `Expected array while validation references for field "${fieldName}".`,
50
+ ErrorCode.SCHEMA_DATA_MISMATCH,
51
+ {
52
+ fieldName: fieldName,
53
+ fieldValue: fieldValue,
54
+ },
55
+ )
49
56
  }
50
57
  for (const fieldListElement of fieldValue) {
51
58
  await validateReference(
@@ -58,7 +65,14 @@ async function validateReference(
58
65
  return
59
66
  } else if (isUnionType(fieldType) || isObjectType(fieldType)) {
60
67
  if (!('id' in fieldValue)) {
61
- throw new Error('Expected key "id"')
68
+ throw createError(
69
+ `Expected key "id" in data while validating reference for field "${fieldName}".`,
70
+ ErrorCode.SCHEMA_DATA_MISMATCH,
71
+ {
72
+ fieldName: fieldName,
73
+ fieldValue: fieldValue,
74
+ },
75
+ )
62
76
  }
63
77
  const referencedId = fieldValue.id
64
78
  let referencedTypeName
@@ -69,24 +83,22 @@ async function validateReference(
69
83
  referencedId,
70
84
  )
71
85
  } catch (error) {
72
- throw new GraphQLError(
73
- `Reference with id "${referencedId}" points to non-existing entry`,
86
+ throw createError(
87
+ `Failed to resolve entry reference "${referencedId}".`,
88
+ ErrorCode.BAD_USER_INPUT,
74
89
  {
75
- extensions: {
76
- code: 'BAD_USER_INPUT',
77
- fieldName: fieldName,
78
- },
90
+ fieldName: fieldName,
91
+ fieldValue: referencedId,
79
92
  },
80
93
  )
81
94
  }
82
95
  if (!isPermittedReferenceType(referencedTypeName, fieldType)) {
83
- throw new GraphQLError(
84
- `Reference with id "${referencedId}" points to entry of incompatible type`,
96
+ throw createError(
97
+ `Reference with ID "${referencedId}" points to entry of incompatible type "${referencedTypeName}".`,
98
+ ErrorCode.BAD_USER_INPUT,
85
99
  {
86
- extensions: {
87
- code: 'BAD_USER_INPUT',
88
- fieldName: fieldName,
89
- },
100
+ fieldName: fieldName,
101
+ fieldValue: referencedId,
90
102
  },
91
103
  )
92
104
  }
@@ -131,13 +143,23 @@ export async function getReferencedEntryIds(
131
143
  return [data.id]
132
144
  }
133
145
 
134
- const unionTypeName = getUnionTypeNameFromFieldValue(data)
135
- const unionType = type
146
+ const requestedUnionTypeName = getUnionTypeNameFromFieldValue(data)
147
+ const concreteFieldUnionType = type
136
148
  .getTypes()
137
- .find((type) => type.name === unionTypeName)
138
- if (!unionType) {
139
- throw new Error(
140
- `Type "${unionTypeName}" found in field data is not a valid type for union type "${type.name}".`,
149
+ .find(
150
+ (concreteFieldType) =>
151
+ concreteFieldType.name === requestedUnionTypeName,
152
+ )
153
+ if (!concreteFieldUnionType) {
154
+ throw createError(
155
+ `Type "${requestedUnionTypeName}" found in field data is not a valid type for ` +
156
+ `union type "${type.name}".`,
157
+ ErrorCode.BAD_REPOSITORY_DATA,
158
+ {
159
+ typeName: type.name,
160
+ fieldName: fieldName ? fieldName : undefined,
161
+ fieldValue: data,
162
+ },
141
163
  )
142
164
  }
143
165
  const unionValue = getUnionValue(data)
@@ -145,7 +167,7 @@ export async function getReferencedEntryIds(
145
167
  rootType,
146
168
  context,
147
169
  fieldName,
148
- unionType,
170
+ concreteFieldUnionType,
149
171
  unionValue,
150
172
  )
151
173
  } else if (isObjectType(type)) {