@commitspark/graphql-api 2.0.0-beta.3 → 2.0.0-beta.5
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/CHANGELOG.md +58 -0
- package/README.md +165 -88
- package/dist/cjs/client.d.ts +1 -0
- package/dist/cjs/graphql/apollo-config-factory.d.ts +1 -0
- package/dist/cjs/graphql/errors.d.ts +4 -2
- package/dist/cjs/graphql/errors.d.ts.map +1 -0
- package/dist/cjs/graphql/errors.js +11 -1
- package/dist/cjs/graphql/errors.js.map +1 -1
- package/dist/cjs/graphql/input-type-generator.d.ts +1 -0
- package/dist/cjs/graphql/input-type-generator.d.ts.map +1 -0
- package/dist/cjs/graphql/input-type-generator.js +5 -10
- package/dist/cjs/graphql/input-type-generator.js.map +1 -1
- package/dist/cjs/graphql/queries-mutations-generator.d.ts +10 -1
- package/dist/cjs/graphql/queries-mutations-generator.d.ts.map +1 -0
- package/dist/cjs/graphql/queries-mutations-generator.js +55 -3
- package/dist/cjs/graphql/queries-mutations-generator.js.map +1 -1
- package/dist/cjs/graphql/resolvers/commit-message.d.ts +11 -0
- package/dist/cjs/graphql/resolvers/commit-message.d.ts.map +1 -0
- package/dist/cjs/graphql/resolvers/commit-message.js +22 -0
- package/dist/cjs/graphql/resolvers/commit-message.js.map +1 -0
- package/dist/cjs/graphql/resolvers/field-resolvers/entry-reference-resolver.d.ts +1 -0
- package/dist/cjs/graphql/resolvers/field-resolvers/entry-reference-resolver.js +2 -2
- package/dist/cjs/graphql/resolvers/field-resolvers/entry-reference-resolver.js.map +1 -1
- package/dist/cjs/graphql/resolvers/field-resolvers/field-default-value-resolver.d.ts +1 -0
- package/dist/cjs/graphql/resolvers/field-resolvers/field-default-value-resolver.js +3 -3
- package/dist/cjs/graphql/resolvers/field-resolvers/field-default-value-resolver.js.map +1 -1
- package/dist/cjs/graphql/resolvers/field-resolvers/referenced-by-resolver.d.ts +3 -0
- package/dist/cjs/graphql/resolvers/field-resolvers/referenced-by-resolver.d.ts.map +1 -0
- package/dist/cjs/graphql/resolvers/field-resolvers/referenced-by-resolver.js +7 -0
- package/dist/cjs/graphql/resolvers/field-resolvers/referenced-by-resolver.js.map +1 -0
- package/dist/cjs/graphql/resolvers/field-resolvers/types.d.ts +1 -0
- package/dist/cjs/graphql/resolvers/field-resolvers/union-value-resolver.d.ts +1 -0
- package/dist/cjs/graphql/resolvers/field-resolvers/version-resolver.d.ts +3 -0
- package/dist/cjs/graphql/resolvers/field-resolvers/version-resolver.d.ts.map +1 -0
- package/dist/cjs/graphql/resolvers/field-resolvers/version-resolver.js +7 -0
- package/dist/cjs/graphql/resolvers/field-resolvers/version-resolver.js.map +1 -0
- package/dist/cjs/graphql/resolvers/object-type-field-default-value-resolver-generator.d.ts +1 -0
- package/dist/cjs/graphql/resolvers/object-type-field-default-value-resolver-generator.js +1 -1
- package/dist/cjs/graphql/resolvers/object-type-field-default-value-resolver-generator.js.map +1 -1
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.d.ts +1 -0
- package/dist/{types → cjs}/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.d.ts.map +1 -1
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js +33 -42
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js.map +1 -1
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.d.ts +1 -0
- package/dist/{types → cjs}/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.d.ts.map +1 -1
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js +28 -40
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js.map +1 -1
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.d.ts +1 -0
- package/dist/{types → cjs}/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.d.ts.map +1 -1
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js +26 -43
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js.map +1 -1
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.d.ts +1 -0
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-every-resolver.d.ts +1 -0
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-search-resolver.d.ts +1 -0
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-search-resolver.js +5 -5
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-search-resolver.js.map +1 -1
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.d.ts +1 -0
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/union-type-resolver.d.ts +1 -0
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/union-type-resolver.js +1 -1
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/union-type-resolver.js.map +1 -1
- package/dist/cjs/graphql/resolvers/types.d.ts +14 -2
- package/dist/cjs/graphql/resolvers/types.d.ts.map +1 -0
- package/dist/cjs/graphql/schema-analyzer.d.ts +1 -0
- package/dist/cjs/graphql/schema-generator.d.ts +1 -0
- package/dist/cjs/graphql/schema-generator.d.ts.map +1 -0
- package/dist/cjs/graphql/schema-generator.js +12 -1
- package/dist/cjs/graphql/schema-generator.js.map +1 -1
- package/dist/cjs/graphql/schema-root-type-generator.d.ts +1 -0
- package/dist/cjs/graphql/schema-utils/directive-util.d.ts +1 -0
- package/dist/cjs/graphql/schema-utils/entry-reference-util.d.ts +5 -2
- package/dist/cjs/graphql/schema-utils/entry-reference-util.d.ts.map +1 -0
- package/dist/cjs/graphql/schema-utils/entry-reference-util.js +94 -121
- package/dist/cjs/graphql/schema-utils/entry-reference-util.js.map +1 -1
- package/dist/cjs/graphql/schema-utils/entry-type-util.d.ts +1 -0
- package/dist/cjs/graphql/schema-utils/searchable-field-util.d.ts +1 -0
- package/dist/cjs/graphql/schema-utils/union-type-util.d.ts +1 -0
- package/dist/cjs/graphql/schema-utils/union-type-util.js +2 -2
- package/dist/cjs/graphql/schema-utils/union-type-util.js.map +1 -1
- package/dist/cjs/graphql/schema-validator.d.ts +1 -0
- package/dist/{types → cjs}/graphql/schema-validator.d.ts.map +1 -1
- package/dist/cjs/graphql/schema-validator.js +16 -0
- package/dist/cjs/graphql/schema-validator.js.map +1 -1
- package/dist/cjs/graphql/util.d.ts +1 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/persistence/cache.d.ts +4 -1
- package/dist/cjs/persistence/cache.d.ts.map +1 -0
- package/dist/cjs/persistence/cache.js +8 -17
- package/dist/cjs/persistence/cache.js.map +1 -1
- package/dist/cjs/persistence/commit-with-retry.d.ts +16 -0
- package/dist/cjs/persistence/commit-with-retry.d.ts.map +1 -0
- package/dist/cjs/persistence/commit-with-retry.js +39 -0
- package/dist/cjs/persistence/commit-with-retry.js.map +1 -0
- package/dist/cjs/persistence/git-adapter-call.d.ts +10 -0
- package/dist/cjs/persistence/git-adapter-call.d.ts.map +1 -0
- package/dist/cjs/persistence/git-adapter-call.js +29 -0
- package/dist/cjs/persistence/git-adapter-call.js.map +1 -0
- package/dist/cjs/persistence/persistence.d.ts +12 -0
- package/dist/{types → cjs}/persistence/persistence.d.ts.map +1 -1
- package/dist/cjs/persistence/persistence.js +37 -2
- package/dist/cjs/persistence/persistence.js.map +1 -1
- package/dist/esm/client.d.ts.map +1 -0
- package/dist/esm/graphql/apollo-config-factory.d.ts.map +1 -0
- package/dist/{types → esm}/graphql/errors.d.ts +3 -2
- package/dist/esm/graphql/errors.d.ts.map +1 -0
- package/dist/esm/graphql/errors.js +10 -0
- package/dist/esm/graphql/errors.js.map +1 -1
- package/dist/esm/graphql/input-type-generator.d.ts.map +1 -0
- package/dist/esm/graphql/input-type-generator.js +6 -11
- package/dist/esm/graphql/input-type-generator.js.map +1 -1
- package/dist/{types → esm}/graphql/queries-mutations-generator.d.ts +9 -1
- package/dist/esm/graphql/queries-mutations-generator.d.ts.map +1 -0
- package/dist/esm/graphql/queries-mutations-generator.js +53 -3
- package/dist/esm/graphql/queries-mutations-generator.js.map +1 -1
- package/dist/esm/graphql/resolvers/commit-message.d.ts +11 -0
- package/dist/esm/graphql/resolvers/commit-message.d.ts.map +1 -0
- package/dist/esm/graphql/resolvers/commit-message.js +19 -0
- package/dist/esm/graphql/resolvers/commit-message.js.map +1 -0
- package/dist/esm/graphql/resolvers/field-resolvers/entry-reference-resolver.d.ts.map +1 -0
- package/dist/esm/graphql/resolvers/field-resolvers/entry-reference-resolver.js +3 -3
- package/dist/esm/graphql/resolvers/field-resolvers/entry-reference-resolver.js.map +1 -1
- package/dist/esm/graphql/resolvers/field-resolvers/field-default-value-resolver.d.ts.map +1 -0
- package/dist/esm/graphql/resolvers/field-resolvers/field-default-value-resolver.js +4 -4
- package/dist/esm/graphql/resolvers/field-resolvers/field-default-value-resolver.js.map +1 -1
- package/dist/esm/graphql/resolvers/field-resolvers/referenced-by-resolver.d.ts +3 -0
- package/dist/esm/graphql/resolvers/field-resolvers/referenced-by-resolver.d.ts.map +1 -0
- package/dist/esm/graphql/resolvers/field-resolvers/referenced-by-resolver.js +3 -0
- package/dist/esm/graphql/resolvers/field-resolvers/referenced-by-resolver.js.map +1 -0
- package/dist/esm/graphql/resolvers/field-resolvers/types.d.ts.map +1 -0
- package/dist/esm/graphql/resolvers/field-resolvers/union-value-resolver.d.ts.map +1 -0
- package/dist/esm/graphql/resolvers/field-resolvers/version-resolver.d.ts +3 -0
- package/dist/esm/graphql/resolvers/field-resolvers/version-resolver.d.ts.map +1 -0
- package/dist/esm/graphql/resolvers/field-resolvers/version-resolver.js +3 -0
- package/dist/esm/graphql/resolvers/field-resolvers/version-resolver.js.map +1 -0
- package/dist/esm/graphql/resolvers/object-type-field-default-value-resolver-generator.d.ts.map +1 -0
- package/dist/esm/graphql/resolvers/object-type-field-default-value-resolver-generator.js +2 -2
- package/dist/esm/graphql/resolvers/object-type-field-default-value-resolver-generator.js.map +1 -1
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.d.ts.map +1 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js +36 -45
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js.map +1 -1
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.d.ts.map +1 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js +31 -43
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js.map +1 -1
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.d.ts.map +1 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js +29 -46
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js.map +1 -1
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.d.ts.map +1 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-every-resolver.d.ts.map +1 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-search-resolver.d.ts.map +1 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-search-resolver.js +6 -6
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-search-resolver.js.map +1 -1
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.d.ts.map +1 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/union-type-resolver.d.ts.map +1 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/union-type-resolver.js +2 -2
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/union-type-resolver.js.map +1 -1
- package/dist/{types → esm}/graphql/resolvers/types.d.ts +13 -2
- package/dist/esm/graphql/resolvers/types.d.ts.map +1 -0
- package/dist/esm/graphql/schema-analyzer.d.ts.map +1 -0
- package/dist/esm/graphql/schema-generator.d.ts.map +1 -0
- package/dist/esm/graphql/schema-generator.js +14 -3
- package/dist/esm/graphql/schema-generator.js.map +1 -1
- package/dist/esm/graphql/schema-root-type-generator.d.ts.map +1 -0
- package/dist/esm/graphql/schema-utils/directive-util.d.ts.map +1 -0
- package/dist/esm/graphql/schema-utils/entry-reference-util.d.ts +6 -0
- package/dist/esm/graphql/schema-utils/entry-reference-util.d.ts.map +1 -0
- package/dist/esm/graphql/schema-utils/entry-reference-util.js +93 -121
- package/dist/esm/graphql/schema-utils/entry-reference-util.js.map +1 -1
- package/dist/esm/graphql/schema-utils/entry-type-util.d.ts.map +1 -0
- package/dist/esm/graphql/schema-utils/searchable-field-util.d.ts.map +1 -0
- package/dist/esm/graphql/schema-utils/union-type-util.d.ts.map +1 -0
- package/dist/esm/graphql/schema-utils/union-type-util.js +3 -3
- package/dist/esm/graphql/schema-utils/union-type-util.js.map +1 -1
- package/dist/esm/graphql/schema-validator.d.ts.map +1 -0
- package/dist/esm/graphql/schema-validator.js +17 -1
- package/dist/esm/graphql/schema-validator.js.map +1 -1
- package/dist/esm/graphql/util.d.ts.map +1 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/{types → esm}/persistence/cache.d.ts +3 -1
- package/dist/esm/persistence/cache.d.ts.map +1 -0
- package/dist/esm/persistence/cache.js +6 -15
- package/dist/esm/persistence/cache.js.map +1 -1
- package/dist/esm/persistence/commit-with-retry.d.ts +16 -0
- package/dist/esm/persistence/commit-with-retry.d.ts.map +1 -0
- package/dist/esm/persistence/commit-with-retry.js +35 -0
- package/dist/esm/persistence/commit-with-retry.js.map +1 -0
- package/dist/esm/persistence/git-adapter-call.d.ts +10 -0
- package/dist/esm/persistence/git-adapter-call.d.ts.map +1 -0
- package/dist/esm/persistence/git-adapter-call.js +24 -0
- package/dist/esm/persistence/git-adapter-call.js.map +1 -0
- package/dist/esm/persistence/persistence.d.ts +18 -0
- package/dist/esm/persistence/persistence.d.ts.map +1 -0
- package/dist/esm/persistence/persistence.js +36 -3
- package/dist/esm/persistence/persistence.js.map +1 -1
- package/package.json +27 -18
- package/src/graphql/errors.ts +2 -1
- package/src/graphql/input-type-generator.ts +6 -18
- package/src/graphql/queries-mutations-generator.ts +69 -3
- package/src/graphql/resolvers/commit-message.ts +34 -0
- package/src/graphql/resolvers/field-resolvers/referenced-by-resolver.ts +9 -0
- package/src/graphql/resolvers/field-resolvers/version-resolver.ts +8 -0
- package/src/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.ts +43 -57
- package/src/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.ts +45 -60
- package/src/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.ts +38 -67
- package/src/graphql/resolvers/types.ts +26 -2
- package/src/graphql/schema-generator.ts +19 -0
- package/src/graphql/schema-utils/entry-reference-util.ts +147 -191
- package/src/graphql/schema-validator.ts +21 -0
- package/src/persistence/cache.ts +8 -14
- package/src/persistence/commit-with-retry.ts +47 -0
- package/src/persistence/git-adapter-call.ts +27 -0
- package/src/persistence/persistence.ts +50 -0
- package/dist/types/graphql/errors.d.ts.map +0 -1
- package/dist/types/graphql/input-type-generator.d.ts.map +0 -1
- package/dist/types/graphql/queries-mutations-generator.d.ts.map +0 -1
- package/dist/types/graphql/resolvers/types.d.ts.map +0 -1
- package/dist/types/graphql/schema-generator.d.ts.map +0 -1
- package/dist/types/graphql/schema-utils/entry-reference-util.d.ts +0 -4
- package/dist/types/graphql/schema-utils/entry-reference-util.d.ts.map +0 -1
- package/dist/types/persistence/cache.d.ts.map +0 -1
- package/dist/types/persistence/persistence.d.ts +0 -7
- /package/dist/{types → cjs}/client.d.ts.map +0 -0
- /package/dist/{types → cjs}/graphql/apollo-config-factory.d.ts.map +0 -0
- /package/dist/{types → cjs}/graphql/resolvers/field-resolvers/entry-reference-resolver.d.ts.map +0 -0
- /package/dist/{types → cjs}/graphql/resolvers/field-resolvers/field-default-value-resolver.d.ts.map +0 -0
- /package/dist/{types → cjs}/graphql/resolvers/field-resolvers/types.d.ts.map +0 -0
- /package/dist/{types → cjs}/graphql/resolvers/field-resolvers/union-value-resolver.d.ts.map +0 -0
- /package/dist/{types → cjs}/graphql/resolvers/object-type-field-default-value-resolver-generator.d.ts.map +0 -0
- /package/dist/{types → cjs}/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.d.ts.map +0 -0
- /package/dist/{types → cjs}/graphql/resolvers/query-mutation-resolvers/query-every-resolver.d.ts.map +0 -0
- /package/dist/{types → cjs}/graphql/resolvers/query-mutation-resolvers/query-search-resolver.d.ts.map +0 -0
- /package/dist/{types → cjs}/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.d.ts.map +0 -0
- /package/dist/{types → cjs}/graphql/resolvers/query-mutation-resolvers/union-type-resolver.d.ts.map +0 -0
- /package/dist/{types → cjs}/graphql/schema-analyzer.d.ts.map +0 -0
- /package/dist/{types → cjs}/graphql/schema-root-type-generator.d.ts.map +0 -0
- /package/dist/{types → cjs}/graphql/schema-utils/directive-util.d.ts.map +0 -0
- /package/dist/{types → cjs}/graphql/schema-utils/entry-type-util.d.ts.map +0 -0
- /package/dist/{types → cjs}/graphql/schema-utils/searchable-field-util.d.ts.map +0 -0
- /package/dist/{types → cjs}/graphql/schema-utils/union-type-util.d.ts.map +0 -0
- /package/dist/{types → cjs}/graphql/util.d.ts.map +0 -0
- /package/dist/{types → cjs}/index.d.ts.map +0 -0
- /package/dist/{types → esm}/client.d.ts +0 -0
- /package/dist/{types → esm}/graphql/apollo-config-factory.d.ts +0 -0
- /package/dist/{types → esm}/graphql/input-type-generator.d.ts +0 -0
- /package/dist/{types → esm}/graphql/resolvers/field-resolvers/entry-reference-resolver.d.ts +0 -0
- /package/dist/{types → esm}/graphql/resolvers/field-resolvers/field-default-value-resolver.d.ts +0 -0
- /package/dist/{types → esm}/graphql/resolvers/field-resolvers/types.d.ts +0 -0
- /package/dist/{types → esm}/graphql/resolvers/field-resolvers/union-value-resolver.d.ts +0 -0
- /package/dist/{types → esm}/graphql/resolvers/object-type-field-default-value-resolver-generator.d.ts +0 -0
- /package/dist/{types → esm}/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.d.ts +0 -0
- /package/dist/{types → esm}/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.d.ts +0 -0
- /package/dist/{types → esm}/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.d.ts +0 -0
- /package/dist/{types → esm}/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.d.ts +0 -0
- /package/dist/{types → esm}/graphql/resolvers/query-mutation-resolvers/query-every-resolver.d.ts +0 -0
- /package/dist/{types → esm}/graphql/resolvers/query-mutation-resolvers/query-search-resolver.d.ts +0 -0
- /package/dist/{types → esm}/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.d.ts +0 -0
- /package/dist/{types → esm}/graphql/resolvers/query-mutation-resolvers/union-type-resolver.d.ts +0 -0
- /package/dist/{types → esm}/graphql/schema-analyzer.d.ts +0 -0
- /package/dist/{types → esm}/graphql/schema-generator.d.ts +0 -0
- /package/dist/{types → esm}/graphql/schema-root-type-generator.d.ts +0 -0
- /package/dist/{types → esm}/graphql/schema-utils/directive-util.d.ts +0 -0
- /package/dist/{types → esm}/graphql/schema-utils/entry-type-util.d.ts +0 -0
- /package/dist/{types → esm}/graphql/schema-utils/searchable-field-util.d.ts +0 -0
- /package/dist/{types → esm}/graphql/schema-utils/union-type-util.d.ts +0 -0
- /package/dist/{types → esm}/graphql/schema-validator.d.ts +0 -0
- /package/dist/{types → esm}/graphql/util.d.ts +0 -0
- /package/dist/{types → esm}/index.d.ts +0 -0
|
@@ -3,107 +3,101 @@ import { getTypeById } from "../../persistence/persistence.js";
|
|
|
3
3
|
import { getUnionTypeNameFromFieldValue, getUnionValue, } from "./union-type-util.js";
|
|
4
4
|
import { ENTRY_DIRECTIVE_NAME, hasDirective } from "./directive-util.js";
|
|
5
5
|
import { isUnionOfEntryTypes } from "./entry-type-util.js";
|
|
6
|
-
import { createError } from "../errors.js";
|
|
6
|
+
import { createError, ErrorCode } from "../errors.js";
|
|
7
7
|
import { isEntryData } from "../util.js";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return isPermittedReferenceType(referencedTypeName, fieldType.ofType);
|
|
14
|
-
}
|
|
15
|
-
else if (isUnionType(fieldType)) {
|
|
16
|
-
return fieldType
|
|
17
|
-
.getTypes()
|
|
18
|
-
.map((concreteType) => concreteType.name)
|
|
19
|
-
.includes(referencedTypeName);
|
|
20
|
-
}
|
|
21
|
-
else if (isObjectType(fieldType)) {
|
|
22
|
-
return fieldType.name === referencedTypeName;
|
|
23
|
-
}
|
|
24
|
-
return false;
|
|
25
|
-
}
|
|
26
|
-
async function validateReference(context, fieldName, fieldType, fieldValue) {
|
|
27
|
-
if (isNonNullType(fieldType)) {
|
|
28
|
-
await validateReference(context, fieldName, fieldType.ofType, fieldValue);
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
if (isListType(fieldType)) {
|
|
32
|
-
if (!Array.isArray(fieldValue)) {
|
|
33
|
-
throw createError(`Expected array while validation references for field "${fieldName}".`, "BAD_REPOSITORY_DATA" /* ErrorCode.BAD_REPOSITORY_DATA */, {
|
|
34
|
-
fieldName: fieldName,
|
|
35
|
-
fieldValue: fieldValue,
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
for (const fieldListElement of fieldValue) {
|
|
39
|
-
await validateReference(context, fieldName, fieldType.ofType, fieldListElement);
|
|
40
|
-
}
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
if (isUnionType(fieldType) || isObjectType(fieldType)) {
|
|
44
|
-
if (fieldValue === null ||
|
|
45
|
-
!('id' in fieldValue) ||
|
|
46
|
-
typeof fieldValue.id !== 'string') {
|
|
47
|
-
throw createError(`Expected key "id" with value of type string in data while validating reference for field "${fieldName}".`, "BAD_REPOSITORY_DATA" /* ErrorCode.BAD_REPOSITORY_DATA */, {
|
|
48
|
-
fieldName: fieldName,
|
|
49
|
-
fieldValue: fieldValue,
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
const referencedId = fieldValue.id;
|
|
8
|
+
// commits are immutable, so an index built from the cached entries of a commit stays valid for as long as these
|
|
9
|
+
// entries remain cached
|
|
10
|
+
const referencedByIndexes = new WeakMap();
|
|
11
|
+
export async function validateEntryReferences(entryType, context, data) {
|
|
12
|
+
for (const reference of getEntryReferences(entryType, data)) {
|
|
53
13
|
let referencedTypeName;
|
|
54
14
|
try {
|
|
55
|
-
referencedTypeName = await getTypeById(context,
|
|
15
|
+
referencedTypeName = await getTypeById(context, reference.id);
|
|
56
16
|
}
|
|
57
17
|
catch {
|
|
58
|
-
throw createError(`Failed to resolve entry reference "${
|
|
59
|
-
fieldName: fieldName,
|
|
60
|
-
fieldValue:
|
|
18
|
+
throw createError(`Failed to resolve entry reference "${reference.id}".`, ErrorCode.BAD_USER_INPUT, {
|
|
19
|
+
fieldName: reference.fieldName,
|
|
20
|
+
fieldValue: reference.id,
|
|
61
21
|
});
|
|
62
22
|
}
|
|
63
|
-
if (!isPermittedReferenceType(referencedTypeName, fieldType)) {
|
|
64
|
-
throw createError(`Reference with ID "${
|
|
65
|
-
fieldName: fieldName,
|
|
66
|
-
fieldValue:
|
|
23
|
+
if (!isPermittedReferenceType(referencedTypeName, reference.fieldType)) {
|
|
24
|
+
throw createError(`Reference with ID "${reference.id}" points to entry of incompatible type "${referencedTypeName}".`, ErrorCode.BAD_USER_INPUT, {
|
|
25
|
+
fieldName: reference.fieldName,
|
|
26
|
+
fieldValue: reference.id,
|
|
67
27
|
});
|
|
68
28
|
}
|
|
69
29
|
}
|
|
70
30
|
}
|
|
71
|
-
export async function
|
|
31
|
+
export async function getReferencingEntryIds(context, schema, id) {
|
|
32
|
+
const entriesRecord = await context.repositoryCache.getEntriesRecord(context, context.getCurrentHash());
|
|
33
|
+
let referencedByIndex = referencedByIndexes.get(entriesRecord);
|
|
34
|
+
if (referencedByIndex === undefined) {
|
|
35
|
+
referencedByIndex = buildReferencedByIndex(schema, entriesRecord);
|
|
36
|
+
referencedByIndexes.set(entriesRecord, referencedByIndex);
|
|
37
|
+
}
|
|
38
|
+
return referencedByIndex.get(id) ?? [];
|
|
39
|
+
}
|
|
40
|
+
function buildReferencedByIndex(schema, entriesRecord) {
|
|
41
|
+
const referencedByIndex = new Map();
|
|
42
|
+
for (const entry of entriesRecord.byId.values()) {
|
|
43
|
+
const entryType = schema.getType(entry.metadata.type);
|
|
44
|
+
if (!isObjectType(entryType) ||
|
|
45
|
+
!hasDirective(entryType, ENTRY_DIRECTIVE_NAME)) {
|
|
46
|
+
throw createError(`Entry "${entry.id}" is of type "${entry.metadata.type}", which is not a type with directive ` +
|
|
47
|
+
`@${ENTRY_DIRECTIVE_NAME} in the schema.`, ErrorCode.BAD_REPOSITORY_DATA, {
|
|
48
|
+
typeName: entry.metadata.type,
|
|
49
|
+
fieldValue: entry.id,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
const referencedIds = new Set(getEntryReferences(entryType, entry.data ?? null).map((reference) => reference.id));
|
|
53
|
+
for (const referencedId of referencedIds) {
|
|
54
|
+
const referencingIds = referencedByIndex.get(referencedId) ?? [];
|
|
55
|
+
referencingIds.push(entry.id);
|
|
56
|
+
referencedByIndex.set(referencedId, referencingIds);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
for (const referencingIds of referencedByIndex.values()) {
|
|
60
|
+
referencingIds.sort();
|
|
61
|
+
}
|
|
62
|
+
return referencedByIndex;
|
|
63
|
+
}
|
|
64
|
+
function getEntryReferences(entryType, data) {
|
|
65
|
+
// the fields of the entry itself are traversed directly, so that any nested @Entry type is treated as reference,
|
|
66
|
+
// including references to entries of the same type
|
|
67
|
+
return getReferencesInObjectFields(entryType, data);
|
|
68
|
+
}
|
|
69
|
+
function getReferencesInObjectFields(type, data) {
|
|
70
|
+
if (data === null || data === undefined) {
|
|
71
|
+
return [];
|
|
72
|
+
}
|
|
73
|
+
// expect our object type to hold EntryData (i.e. an object)
|
|
74
|
+
if (!isEntryData(data) || data === null) {
|
|
75
|
+
throw createError(`Expected object as data for type "${type.name}".`, ErrorCode.BAD_REPOSITORY_DATA, {
|
|
76
|
+
typeName: type.name,
|
|
77
|
+
fieldValue: data,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return Object.entries(type.getFields()).flatMap(([fieldName, field]) => getReferencesInField(fieldName, field.type, data[fieldName]));
|
|
81
|
+
}
|
|
82
|
+
function getReferencesInField(fieldName, type, data) {
|
|
72
83
|
if (data === null || data === undefined || isScalarType(type)) {
|
|
73
84
|
return [];
|
|
74
85
|
}
|
|
75
86
|
if (isNonNullType(type)) {
|
|
76
|
-
return
|
|
87
|
+
return getReferencesInField(fieldName, type.ofType, data);
|
|
77
88
|
}
|
|
78
89
|
if (isListType(type)) {
|
|
79
90
|
if (!Array.isArray(data)) {
|
|
80
|
-
throw createError(`Expected array as data for field "${fieldName}"
|
|
81
|
-
fieldName: fieldName
|
|
91
|
+
throw createError(`Expected array as data for field "${fieldName}".`, ErrorCode.BAD_REPOSITORY_DATA, {
|
|
92
|
+
fieldName: fieldName,
|
|
82
93
|
fieldValue: data,
|
|
83
94
|
});
|
|
84
95
|
}
|
|
85
|
-
|
|
86
|
-
for (const element of data) {
|
|
87
|
-
referencedEntryIds = [
|
|
88
|
-
...referencedEntryIds,
|
|
89
|
-
...(await getReferencedEntryIds(rootType, context, fieldName, type.ofType, element)),
|
|
90
|
-
];
|
|
91
|
-
}
|
|
92
|
-
// deduplicate
|
|
93
|
-
referencedEntryIds = [...new Set(referencedEntryIds)];
|
|
94
|
-
return referencedEntryIds;
|
|
96
|
+
return data.flatMap((element) => getReferencesInField(fieldName, type.ofType, element));
|
|
95
97
|
}
|
|
96
98
|
if (isUnionType(type)) {
|
|
97
|
-
if (!isEntryData(data)) {
|
|
98
|
-
throw createError(`Expected object as data for type "${type.name}".`, "BAD_REPOSITORY_DATA" /* ErrorCode.BAD_REPOSITORY_DATA */, {
|
|
99
|
-
typeName: type.name,
|
|
100
|
-
fieldName: fieldName ? fieldName : undefined,
|
|
101
|
-
fieldValue: data,
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
99
|
if (isUnionOfEntryTypes(type)) {
|
|
105
|
-
|
|
106
|
-
return [referenceId];
|
|
100
|
+
return [createEntryReference(fieldName, type, data)];
|
|
107
101
|
}
|
|
108
102
|
const requestedUnionTypeName = getUnionTypeNameFromFieldValue(data);
|
|
109
103
|
const concreteFieldUnionType = type
|
|
@@ -111,63 +105,41 @@ export async function getReferencedEntryIds(rootType, context, fieldName, type,
|
|
|
111
105
|
.find((concreteFieldType) => concreteFieldType.name === requestedUnionTypeName);
|
|
112
106
|
if (!concreteFieldUnionType) {
|
|
113
107
|
throw createError(`Type "${requestedUnionTypeName}" found in field data is not a valid type for ` +
|
|
114
|
-
`union type "${type.name}".`,
|
|
108
|
+
`union type "${type.name}".`, ErrorCode.BAD_REPOSITORY_DATA, {
|
|
115
109
|
typeName: type.name,
|
|
116
|
-
fieldName: fieldName
|
|
110
|
+
fieldName: fieldName,
|
|
117
111
|
fieldValue: data,
|
|
118
112
|
});
|
|
119
113
|
}
|
|
120
|
-
|
|
121
|
-
return getReferencedEntryIds(rootType, context, fieldName, concreteFieldUnionType, unionValue);
|
|
114
|
+
return getReferencesInObjectFields(concreteFieldUnionType, getUnionValue(data));
|
|
122
115
|
}
|
|
123
116
|
if (isObjectType(type)) {
|
|
124
|
-
if (type
|
|
125
|
-
|
|
126
|
-
const referenceId = await getValidatedReferenceId(context, fieldName, type, data);
|
|
127
|
-
return [referenceId];
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
let referencedEntryIds = [];
|
|
131
|
-
for (const [fieldsKey, field] of Object.entries(type.getFields())) {
|
|
132
|
-
// expect our object type to hold EntryData (i.e. an object)
|
|
133
|
-
if (Array.isArray(data) || !isEntryData(data)) {
|
|
134
|
-
throw createError(`Expected object as data for type "${type.name}".`, "BAD_REPOSITORY_DATA" /* ErrorCode.BAD_REPOSITORY_DATA */, {
|
|
135
|
-
typeName: type.name,
|
|
136
|
-
fieldName: field.name ? field.name : undefined,
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
// recursively get referenced IDs in nested data
|
|
140
|
-
const nestedResult = await getReferencedEntryIds(rootType, context, fieldsKey, field.type, data[fieldsKey]);
|
|
141
|
-
referencedEntryIds = [...referencedEntryIds, ...nestedResult];
|
|
142
|
-
}
|
|
143
|
-
// deduplicate
|
|
144
|
-
referencedEntryIds = [...new Set(referencedEntryIds)];
|
|
145
|
-
return referencedEntryIds;
|
|
117
|
+
if (hasDirective(type, ENTRY_DIRECTIVE_NAME)) {
|
|
118
|
+
return [createEntryReference(fieldName, type, data)];
|
|
146
119
|
}
|
|
120
|
+
return getReferencesInObjectFields(type, data);
|
|
147
121
|
}
|
|
148
122
|
return [];
|
|
149
123
|
}
|
|
150
|
-
|
|
151
|
-
if (data
|
|
152
|
-
data ===
|
|
153
|
-
!
|
|
154
|
-
|
|
155
|
-
throw createError(`Expected
|
|
156
|
-
typeName:
|
|
157
|
-
fieldName: fieldName
|
|
124
|
+
function createEntryReference(fieldName, fieldType, data) {
|
|
125
|
+
if (typeof data !== 'object' ||
|
|
126
|
+
data === null ||
|
|
127
|
+
!('id' in data) ||
|
|
128
|
+
typeof data.id !== 'string') {
|
|
129
|
+
throw createError(`Expected key "id" with value of type string in data of field "${fieldName}" of type "${fieldType.name}".`, ErrorCode.BAD_REPOSITORY_DATA, {
|
|
130
|
+
typeName: fieldType.name,
|
|
131
|
+
fieldName: fieldName,
|
|
158
132
|
fieldValue: data,
|
|
159
133
|
});
|
|
160
134
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
fieldValue: data,
|
|
169
|
-
});
|
|
135
|
+
return { id: data.id, fieldName, fieldType };
|
|
136
|
+
}
|
|
137
|
+
function isPermittedReferenceType(referencedTypeName, fieldType) {
|
|
138
|
+
if (isUnionType(fieldType)) {
|
|
139
|
+
return fieldType
|
|
140
|
+
.getTypes()
|
|
141
|
+
.some((concreteType) => concreteType.name === referencedTypeName);
|
|
170
142
|
}
|
|
171
|
-
return
|
|
143
|
+
return fieldType.name === referencedTypeName;
|
|
172
144
|
}
|
|
173
145
|
//# sourceMappingURL=entry-reference-util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-reference-util.js","sourceRoot":"","sources":["../../../../src/graphql/schema-utils/entry-reference-util.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"entry-reference-util.js","sourceRoot":"","sources":["../../../../src/graphql/schema-utils/entry-reference-util.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry-type-util.d.ts","sourceRoot":"","sources":["../../../../src/graphql/schema-utils/entry-type-util.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAKjB,MAAM,SAAS,CAAA;AAGhB,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAInE;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAWT"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"searchable-field-util.d.ts","sourceRoot":"","sources":["../../../../src/graphql/schema-utils/searchable-field-util.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,aAAa,EAMd,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAWlE,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,GACvB,oBAAoB,EAAE,CAkBxB"}
|
|
@@ -0,0 +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;AAGpD,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,CAc1E;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,OAAO,GAAG,SAAS,CAa5D"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { createError } from "../errors.js";
|
|
1
|
+
import { createError, ErrorCode } from "../errors.js";
|
|
2
2
|
export function getUnionTypeNameFromFieldValue(fieldValue) {
|
|
3
3
|
if (typeof fieldValue !== 'object' || fieldValue === null) {
|
|
4
|
-
throw createError(`Expected object value in order to determine union type name.`,
|
|
4
|
+
throw createError(`Expected object value in order to determine union type name.`, ErrorCode.BAD_REPOSITORY_DATA, {
|
|
5
5
|
fieldValue: fieldValue,
|
|
6
6
|
});
|
|
7
7
|
}
|
|
@@ -11,7 +11,7 @@ export function getUnionTypeNameFromFieldValue(fieldValue) {
|
|
|
11
11
|
}
|
|
12
12
|
export function getUnionValue(fieldValue) {
|
|
13
13
|
if (typeof fieldValue !== 'object' || fieldValue === null) {
|
|
14
|
-
throw createError(`Expected object value in order to determine union value.`,
|
|
14
|
+
throw createError(`Expected object value in order to determine union value.`, ErrorCode.BAD_REPOSITORY_DATA, {
|
|
15
15
|
fieldValue: fieldValue,
|
|
16
16
|
});
|
|
17
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"union-type-util.js","sourceRoot":"","sources":["../../../../src/graphql/schema-utils/union-type-util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"union-type-util.js","sourceRoot":"","sources":["../../../../src/graphql/schema-utils/union-type-util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAErD,MAAM,UAAU,8BAA8B,CAAC,UAAmB;IAChE,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QAC1D,MAAM,WAAW,CACf,8DAA8D,EAC9D,SAAS,CAAC,mBAAmB,EAC7B;YACE,UAAU,EAAE,UAAU;SACvB,CACF,CAAA;IACH,CAAC;IAED,qEAAqE;IACrE,2CAA2C;IAC3C,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAmB;IAC/C,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QAC1D,MAAM,WAAW,CACf,0DAA0D,EAC1D,SAAS,CAAC,mBAAmB,EAC7B;YACE,UAAU,EAAE,UAAU;SACvB,CACF,CAAA;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3C,OAAQ,UAAwC,CAAC,QAAQ,CAAC,CAAA;AAC5D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-validator.d.ts","sourceRoot":"","sources":["../../../src/graphql/schema-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EAMd,MAAM,SAAS,CAAA;AAyEhB,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAMnE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getNamedType, isObjectType, isScalarType, Kind, } from 'graphql';
|
|
1
|
+
import { getNamedType, isNonNullType, isObjectType, isScalarType, Kind, } from 'graphql';
|
|
2
2
|
import { ENTRY_DIRECTIVE_NAME, hasDirective, SEARCHABLE_DIRECTIVE_NAME, } from "./schema-utils/directive-util.js";
|
|
3
3
|
function checkUnionMembersConsistentUseOfEntryDirective(schema) {
|
|
4
4
|
const typeMap = schema.getTypeMap();
|
|
@@ -32,8 +32,24 @@ function checkSearchableDirectiveOnlyOnStringFields(schema) {
|
|
|
32
32
|
}
|
|
33
33
|
return '';
|
|
34
34
|
}
|
|
35
|
+
function checkEntryTypesHaveIdField(schema) {
|
|
36
|
+
for (const type of Object.values(schema.getTypeMap())) {
|
|
37
|
+
if (!isObjectType(type) || !hasDirective(type, ENTRY_DIRECTIVE_NAME)) {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
const idField = type.getFields()['id'];
|
|
41
|
+
if (idField === undefined ||
|
|
42
|
+
!isNonNullType(idField.type) ||
|
|
43
|
+
!isScalarType(idField.type.ofType) ||
|
|
44
|
+
idField.type.ofType.name !== 'ID') {
|
|
45
|
+
return `Type "${type.name}" must have a field "id" of type "ID!" to use "@${ENTRY_DIRECTIVE_NAME}" directive.`;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return '';
|
|
49
|
+
}
|
|
35
50
|
export function getValidationResult(schema) {
|
|
36
51
|
const results = [];
|
|
52
|
+
results.push(checkEntryTypesHaveIdField(schema));
|
|
37
53
|
results.push(checkUnionMembersConsistentUseOfEntryDirective(schema));
|
|
38
54
|
results.push(checkSearchableDirectiveOnlyOnStringFields(schema));
|
|
39
55
|
return results.filter((result) => result !== '');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-validator.js","sourceRoot":"","sources":["../../../src/graphql/schema-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGZ,YAAY,EACZ,YAAY,EACZ,IAAI,GACL,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,yBAAyB,GAC1B,MAAM,kCAAkC,CAAA;AAEzC,SAAS,8CAA8C,CACrD,MAAqB;IAErB,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAA;IAEnC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACtD,SAAQ;QACV,CAAC;QACD,MAAM,UAAU,GAAI,IAAyB,CAAC,QAAQ,EAAE,CAAA;QAExD,MAAM,oCAAoC,GAAG,UAAU,CAAC,MAAM,CAC5D,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAC7D,CAAC,MAAM,CAAA;QAER,IACE,oCAAoC,KAAK,CAAC;YAC1C,oCAAoC,KAAK,UAAU,CAAC,MAAM,EAC1D,CAAC;YACD,OAAO,gCAAgC,IAAI,CAAC,IAAI,iBAAiB,oBAAoB,sBAAsB,CAAA;QAC7G,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC;AAED,SAAS,0CAA0C,CACjD,MAAqB;IAErB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,SAAQ;QACV,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC;gBACpD,SAAQ;YACV,CAAC;YACD,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAC1C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5D,OAAO,UAAU,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,6DAA6D,yBAAyB,cAAc,CAAA;YAC9I,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAqB;IACvD,MAAM,OAAO,GAAG,EAAE,CAAA;IAClB,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC,MAAM,CAAC,CAAC,CAAA;IACpE,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,MAAM,CAAC,CAAC,CAAA;IAChE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,CAAA;AAClD,CAAC"}
|
|
1
|
+
{"version":3,"file":"schema-validator.js","sourceRoot":"","sources":["../../../src/graphql/schema-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
|
@@ -0,0 +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,aAAa,CAAA;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAG9D,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,UAAU,aAAa;IACrB;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;CAC9B;AAED,OAAO,EACL,MAAM,EACN,aAAa,EACb,eAAe,EACf,cAAc,EACd,SAAS,EACT,aAAa,GACd,CAAA;AAED,wBAAsB,YAAY,CAChC,UAAU,EAAE,UAAU,EACtB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,MAAM,CAAC,CASjB"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { getSchema, postGraphQL, } from "./client.js";
|
|
2
|
+
import { ErrorCode } from "./graphql/errors.js";
|
|
2
3
|
import { createCacheHandler } from "./persistence/cache.js";
|
|
4
|
+
export { ErrorCode, };
|
|
3
5
|
export async function createClient(gitAdapter, options = {}) {
|
|
4
6
|
const repositoryCache = createCacheHandler();
|
|
5
7
|
const searchAdapter = options.searchAdapter;
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EAET,WAAW,GAGZ,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EAET,WAAW,GAGZ,MAAM,aAAa,CAAA;AAGpB,OAAO,EAAE,SAAS,EAAiB,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAoB3D,OAAO,EAKL,SAAS,GAEV,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAAsB,EACtB,UAAyB,EAAE;IAE3B,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAA;IAC5C,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAA;IAC3C,OAAO;QACL,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CACvB,WAAW,CAAC,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAClE,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CACrB,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;KACjE,CAAA;AACH,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { Entry } from '@commitspark/git-adapter';
|
|
2
2
|
import { ApolloContext } from '../client.ts';
|
|
3
|
-
|
|
3
|
+
type ContentHash = string;
|
|
4
|
+
export interface EntriesRecord {
|
|
4
5
|
byId: Map<string, Entry>;
|
|
5
6
|
byType: Map<string, Entry[]>;
|
|
7
|
+
hashById: Map<string, ContentHash>;
|
|
6
8
|
}
|
|
7
9
|
export interface RepositoryCacheHandler {
|
|
8
10
|
getEntriesRecord: (context: ApolloContext, ref: string) => Promise<EntriesRecord>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/persistence/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAK5C,KAAK,WAAW,GAAG,MAAM,CAAA;AAQzB,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACxB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;IAE5B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;CACnC;AAOD,MAAM,WAAW,sBAAsB;IACrC,gBAAgB,EAAE,CAChB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,MAAM,KACR,OAAO,CAAC,aAAa,CAAC,CAAA;IAC3B,SAAS,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CACpE;AAsLD,eAAO,MAAM,kBAAkB,GAC7B,YAAW,MAA0B,KACpC,sBAoBF,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { createError, ErrorCode } from "../graphql/errors.js";
|
|
2
|
+
import { callGitAdapter } from "./git-adapter-call.js";
|
|
3
3
|
const MAX_CACHE_ENTRIES = 50;
|
|
4
4
|
// intentionally not async so that the same in-flight promise is returned to all callers
|
|
5
5
|
const getEntriesRecordByRef = (entriesCache, contentCache, inflightEntries, cacheSize, context, ref) => {
|
|
@@ -39,14 +39,16 @@ const fetchAndCacheEntries = async (entriesCache, contentCache, cacheSize, conte
|
|
|
39
39
|
for (const [hash, id] of idsToFetchByHash) {
|
|
40
40
|
const fetchedEntry = fetchedEntriesById.get(id);
|
|
41
41
|
if (fetchedEntry === undefined) {
|
|
42
|
-
throw createError(`Git adapter did not return requested entry "${id}".`,
|
|
42
|
+
throw createError(`Git adapter did not return requested entry "${id}".`, ErrorCode.INTERNAL_ERROR, {});
|
|
43
43
|
}
|
|
44
44
|
contentByHash.set(hash, createEntryContent(fetchedEntry));
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
const entriesById = new Map();
|
|
48
48
|
const entriesByType = new Map();
|
|
49
|
+
const hashesById = new Map();
|
|
49
50
|
for (const { id, hash } of entryHashes) {
|
|
51
|
+
hashesById.set(id, hash);
|
|
50
52
|
const entry = {
|
|
51
53
|
id: id,
|
|
52
54
|
...contentByHash.get(hash),
|
|
@@ -60,6 +62,7 @@ const fetchAndCacheEntries = async (entriesCache, contentCache, cacheSize, conte
|
|
|
60
62
|
entriesRecord: {
|
|
61
63
|
byType: entriesByType,
|
|
62
64
|
byId: entriesById,
|
|
65
|
+
hashById: hashesById,
|
|
63
66
|
},
|
|
64
67
|
contentHashes: [...contentByHash.keys()],
|
|
65
68
|
};
|
|
@@ -97,18 +100,6 @@ const removeUnreferencedContent = (entriesCache, contentCache) => {
|
|
|
97
100
|
}
|
|
98
101
|
}
|
|
99
102
|
};
|
|
100
|
-
const callGitAdapter = async (operation) => {
|
|
101
|
-
try {
|
|
102
|
-
return await operation();
|
|
103
|
-
}
|
|
104
|
-
catch (err) {
|
|
105
|
-
if (err instanceof GitAdapterError) {
|
|
106
|
-
throw createError(err.message, err.code, {});
|
|
107
|
-
}
|
|
108
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
109
|
-
throw createError(message, "INTERNAL_ERROR" /* ErrorCode.INTERNAL_ERROR */, {});
|
|
110
|
-
}
|
|
111
|
-
};
|
|
112
103
|
const getSchemaStringByRef = async (schemaCache, cacheSize, context, ref) => {
|
|
113
104
|
const schemaCacheRecord = schemaCache.get(ref);
|
|
114
105
|
if (schemaCacheRecord !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/persistence/cache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/persistence/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CommitDraft } from '@commitspark/git-adapter';
|
|
2
|
+
import { ApolloContext } from '../client.ts';
|
|
3
|
+
/**
|
|
4
|
+
* Commits a draft that `createDraft` validates against the current commit of the request, guaranteeing that the
|
|
5
|
+
* draft is only committed on top of the exact commit it was validated against.
|
|
6
|
+
*
|
|
7
|
+
* Git adapters only move a branch if it still points to `parentSha` and otherwise throw `CONFLICT`. As most adapters
|
|
8
|
+
* can only check this for the branch as a whole, any concurrent commit to the branch between reading and committing
|
|
9
|
+
* leads to `CONFLICT`, even if it changed unrelated entries. In this case, the current commit of the request is moved
|
|
10
|
+
* to the new branch head and the draft is created and validated again, including expected entry versions and
|
|
11
|
+
* references, so that only actual conflicts are reported to the caller.
|
|
12
|
+
*
|
|
13
|
+
* Errors thrown by `createDraft` are not retried, as the draft was validated against the latest known state.
|
|
14
|
+
*/
|
|
15
|
+
export declare const commitWithRetry: (context: ApolloContext, createDraft: () => Promise<CommitDraft>) => Promise<void>;
|
|
16
|
+
//# sourceMappingURL=commit-with-retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit-with-retry.d.ts","sourceRoot":"","sources":["../../../src/persistence/commit-with-retry.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAGZ,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAK5C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,GAC1B,SAAS,aAAa,EACtB,aAAa,MAAM,OAAO,CAAC,WAAW,CAAC,KACtC,OAAO,CAAC,IAAI,CAqBd,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ErrorCode as GitAdapterErrorCode, GitAdapterError, } from '@commitspark/git-adapter';
|
|
2
|
+
import { callGitAdapter, toGraphQLError } from "./git-adapter-call.js";
|
|
3
|
+
const MAX_COMMIT_ATTEMPTS = 3;
|
|
4
|
+
/**
|
|
5
|
+
* Commits a draft that `createDraft` validates against the current commit of the request, guaranteeing that the
|
|
6
|
+
* draft is only committed on top of the exact commit it was validated against.
|
|
7
|
+
*
|
|
8
|
+
* Git adapters only move a branch if it still points to `parentSha` and otherwise throw `CONFLICT`. As most adapters
|
|
9
|
+
* can only check this for the branch as a whole, any concurrent commit to the branch between reading and committing
|
|
10
|
+
* leads to `CONFLICT`, even if it changed unrelated entries. In this case, the current commit of the request is moved
|
|
11
|
+
* to the new branch head and the draft is created and validated again, including expected entry versions and
|
|
12
|
+
* references, so that only actual conflicts are reported to the caller.
|
|
13
|
+
*
|
|
14
|
+
* Errors thrown by `createDraft` are not retried, as the draft was validated against the latest known state.
|
|
15
|
+
*/
|
|
16
|
+
export const commitWithRetry = async (context, createDraft) => {
|
|
17
|
+
for (let attempt = 1;; attempt++) {
|
|
18
|
+
const commitDraft = await createDraft();
|
|
19
|
+
try {
|
|
20
|
+
const commit = await context.gitAdapter.createCommit(commitDraft);
|
|
21
|
+
context.setCurrentHash(commit.commitHash);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
const isConflict = err instanceof GitAdapterError &&
|
|
26
|
+
err.code === GitAdapterErrorCode.CONFLICT;
|
|
27
|
+
if (!isConflict || attempt >= MAX_COMMIT_ATTEMPTS) {
|
|
28
|
+
throw toGraphQLError(err);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const headCommitHash = await callGitAdapter(() => context.gitAdapter.getLatestCommitHash(context.branch));
|
|
32
|
+
context.setCurrentHash(headCommitHash);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=commit-with-retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit-with-retry.js","sourceRoot":"","sources":["../../../src/persistence/commit-with-retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,IAAI,mBAAmB,EAChC,eAAe,GAChB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtE,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAE7B;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,OAAsB,EACtB,WAAuC,EACxB,EAAE;IACjB,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,MAAM,WAAW,EAAE,CAAA;QACvC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;YACjE,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YACzC,OAAM;QACR,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,UAAU,GACd,GAAG,YAAY,eAAe;gBAC9B,GAAG,CAAC,IAAI,KAAK,mBAAmB,CAAC,QAAQ,CAAA;YAC3C,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,mBAAmB,EAAE,CAAC;gBAClD,MAAM,cAAc,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,CAC/C,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CACvD,CAAA;QACD,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,CAAA;IACxC,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { GraphQLError } from 'graphql';
|
|
2
|
+
/**
|
|
3
|
+
* Converts an error thrown by a Git adapter to a GraphQL error, keeping the error code of a `GitAdapterError`.
|
|
4
|
+
*/
|
|
5
|
+
export declare const toGraphQLError: (err: unknown) => GraphQLError;
|
|
6
|
+
/**
|
|
7
|
+
* Runs a Git adapter operation and converts thrown errors to GraphQL errors.
|
|
8
|
+
*/
|
|
9
|
+
export declare const callGitAdapter: <T>(operation: () => Promise<T>) => Promise<T>;
|
|
10
|
+
//# sourceMappingURL=git-adapter-call.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-adapter-call.d.ts","sourceRoot":"","sources":["../../../src/persistence/git-adapter-call.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAGtC;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,OAAO,KAAG,YAM7C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,GAAU,CAAC,EACpC,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC,KAC1B,OAAO,CAAC,CAAC,CAMX,CAAA"}
|