@commitspark/graphql-api 0.90.0 → 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.
- package/CHANGELOG.md +16 -0
- package/README.md +8 -9
- package/dist/cjs/client.js +65 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/graphql/{apollo-config-factory.service.js → apollo-config-factory.js} +12 -17
- package/dist/cjs/graphql/apollo-config-factory.js.map +1 -0
- package/dist/cjs/graphql/errors.js +32 -0
- package/dist/cjs/graphql/errors.js.map +1 -0
- package/dist/cjs/graphql/input-type-generator.js +94 -0
- package/dist/cjs/graphql/input-type-generator.js.map +1 -0
- package/dist/cjs/graphql/queries-mutations-generator.js +70 -0
- package/dist/cjs/graphql/queries-mutations-generator.js.map +1 -0
- package/dist/cjs/graphql/resolvers/field-resolvers/entry-reference-resolver.js +26 -0
- package/dist/cjs/graphql/resolvers/field-resolvers/entry-reference-resolver.js.map +1 -0
- package/dist/cjs/graphql/resolvers/field-resolvers/field-default-value-resolver.js +93 -0
- package/dist/cjs/graphql/resolvers/field-resolvers/field-default-value-resolver.js.map +1 -0
- package/dist/cjs/graphql/{field-resolver/fieldResolver.js → resolvers/field-resolvers/types.js} +1 -1
- package/dist/cjs/graphql/resolvers/field-resolvers/types.js.map +1 -0
- package/dist/cjs/graphql/resolvers/field-resolvers/union-value-resolver.js +25 -0
- package/dist/cjs/graphql/resolvers/field-resolvers/union-value-resolver.js.map +1 -0
- package/dist/cjs/graphql/resolvers/object-type-field-default-value-resolver-generator.js +53 -0
- package/dist/cjs/graphql/resolvers/object-type-field-default-value-resolver-generator.js.map +1 -0
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js +74 -0
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js.map +1 -0
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js +52 -0
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js.map +1 -0
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js +57 -0
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js.map +1 -0
- package/dist/cjs/graphql/{resolver-generators/query-type-by-id-resolver-generator.js → resolvers/query-mutation-resolvers/query-by-id-resolver.js} +8 -13
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.js.map +1 -0
- package/dist/cjs/graphql/{resolver-generators/query-count-all-resolver-generator.js → resolvers/query-mutation-resolvers/query-every-resolver.js} +10 -15
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-every-resolver.js.map +1 -0
- package/dist/cjs/graphql/{resolver-generators/query-by-id-resolver-generator.js → resolvers/query-mutation-resolvers/query-type-by-id-resolver.js} +7 -14
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.js.map +1 -0
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/union-type-resolver.js +27 -0
- package/dist/cjs/graphql/resolvers/query-mutation-resolvers/union-type-resolver.js.map +1 -0
- package/dist/cjs/graphql/resolvers/types.js +3 -0
- package/dist/cjs/graphql/resolvers/types.js.map +1 -0
- package/dist/cjs/graphql/schema-analyzer.js +38 -0
- package/dist/cjs/graphql/schema-analyzer.js.map +1 -0
- package/dist/cjs/graphql/schema-generator.js +100 -0
- package/dist/cjs/graphql/schema-generator.js.map +1 -0
- package/dist/cjs/graphql/schema-root-type-generator.js +32 -0
- package/dist/cjs/graphql/schema-root-type-generator.js.map +1 -0
- package/dist/cjs/graphql/schema-utils/entry-reference-util.js +115 -113
- package/dist/cjs/graphql/schema-utils/entry-reference-util.js.map +1 -1
- package/dist/cjs/graphql/schema-utils/entry-type-util.js +24 -26
- package/dist/cjs/graphql/schema-utils/entry-type-util.js.map +1 -1
- package/dist/cjs/graphql/schema-utils/union-type-util.js +19 -16
- package/dist/cjs/graphql/schema-utils/union-type-util.js.map +1 -1
- package/dist/cjs/graphql/schema-validator.js +23 -26
- package/dist/cjs/graphql/schema-validator.js.map +1 -1
- package/dist/cjs/index.js +10 -7
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/persistence/persistence.js +63 -0
- package/dist/cjs/persistence/persistence.js.map +1 -0
- package/dist/esm/client.js +53 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/graphql/apollo-config-factory.js +12 -0
- package/dist/esm/graphql/apollo-config-factory.js.map +1 -0
- package/dist/esm/graphql/errors.js +28 -0
- package/dist/esm/graphql/errors.js.map +1 -0
- package/dist/esm/graphql/input-type-generator.js +89 -0
- package/dist/esm/graphql/input-type-generator.js.map +1 -0
- package/dist/esm/graphql/queries-mutations-generator.js +66 -0
- package/dist/esm/graphql/queries-mutations-generator.js.map +1 -0
- package/dist/esm/graphql/resolvers/field-resolvers/entry-reference-resolver.js +13 -0
- package/dist/esm/graphql/resolvers/field-resolvers/entry-reference-resolver.js.map +1 -0
- package/dist/esm/graphql/resolvers/field-resolvers/field-default-value-resolver.js +80 -0
- package/dist/esm/graphql/resolvers/field-resolvers/field-default-value-resolver.js.map +1 -0
- package/dist/esm/graphql/resolvers/field-resolvers/types.js +2 -0
- package/dist/esm/graphql/resolvers/field-resolvers/types.js.map +1 -0
- package/dist/esm/graphql/resolvers/field-resolvers/union-value-resolver.js +15 -0
- package/dist/esm/graphql/resolvers/field-resolvers/union-value-resolver.js.map +1 -0
- package/dist/esm/graphql/resolvers/object-type-field-default-value-resolver-generator.js +50 -0
- package/dist/esm/graphql/resolvers/object-type-field-default-value-resolver-generator.js.map +1 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js +67 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js.map +1 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js +48 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js.map +1 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js +60 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js.map +1 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.js +6 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.js.map +1 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-every-resolver.js +8 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-every-resolver.js.map +1 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.js +5 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.js.map +1 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/union-type-resolver.js +14 -0
- package/dist/esm/graphql/resolvers/query-mutation-resolvers/union-type-resolver.js.map +1 -0
- package/dist/esm/graphql/resolvers/types.js +2 -0
- package/dist/esm/graphql/resolvers/types.js.map +1 -0
- package/dist/esm/graphql/schema-analyzer.js +34 -0
- package/dist/esm/graphql/schema-analyzer.js.map +1 -0
- package/dist/esm/graphql/schema-generator.js +94 -0
- package/dist/esm/graphql/schema-generator.js.map +1 -0
- package/dist/esm/graphql/schema-root-type-generator.js +29 -0
- package/dist/esm/graphql/schema-root-type-generator.js.map +1 -0
- package/dist/esm/graphql/schema-utils/entry-reference-util.js +108 -108
- package/dist/esm/graphql/schema-utils/entry-reference-util.js.map +1 -1
- package/dist/esm/graphql/schema-utils/entry-type-util.js +20 -23
- package/dist/esm/graphql/schema-utils/entry-type-util.js.map +1 -1
- package/dist/esm/graphql/schema-utils/union-type-util.js +17 -14
- package/dist/esm/graphql/schema-utils/union-type-util.js.map +1 -1
- package/dist/esm/graphql/schema-validator.js +18 -20
- package/dist/esm/graphql/schema-validator.js.map +1 -1
- package/dist/esm/index.js +8 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/persistence/persistence.js +40 -0
- package/dist/esm/persistence/persistence.js.map +1 -0
- package/dist/tsconfig.build.cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.build.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.build.types.tsbuildinfo +1 -1
- package/dist/types/client.d.ts +27 -0
- package/dist/types/client.d.ts.map +1 -0
- package/dist/types/graphql/apollo-config-factory.d.ts +4 -0
- package/dist/types/graphql/apollo-config-factory.d.ts.map +1 -0
- package/dist/types/graphql/errors.d.ts +20 -0
- package/dist/types/graphql/errors.d.ts.map +1 -0
- package/dist/types/graphql/input-type-generator.d.ts +6 -0
- package/dist/types/graphql/input-type-generator.d.ts.map +1 -0
- package/dist/types/graphql/queries-mutations-generator.d.ts +18 -0
- package/dist/types/graphql/queries-mutations-generator.d.ts.map +1 -0
- package/dist/types/graphql/resolvers/field-resolvers/entry-reference-resolver.d.ts +3 -0
- package/dist/types/graphql/resolvers/field-resolvers/entry-reference-resolver.d.ts.map +1 -0
- package/dist/types/graphql/resolvers/field-resolvers/field-default-value-resolver.d.ts +3 -0
- package/dist/types/graphql/resolvers/field-resolvers/field-default-value-resolver.d.ts.map +1 -0
- package/dist/types/graphql/resolvers/field-resolvers/types.d.ts +12 -0
- package/dist/types/graphql/resolvers/field-resolvers/types.d.ts.map +1 -0
- package/dist/types/graphql/resolvers/field-resolvers/union-value-resolver.d.ts +3 -0
- package/dist/types/graphql/resolvers/field-resolvers/union-value-resolver.d.ts.map +1 -0
- package/dist/types/graphql/resolvers/object-type-field-default-value-resolver-generator.d.ts +8 -0
- package/dist/types/graphql/resolvers/object-type-field-default-value-resolver-generator.d.ts.map +1 -0
- package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.d.ts +5 -0
- package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.d.ts.map +1 -0
- package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.d.ts +5 -0
- package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.d.ts.map +1 -0
- package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.d.ts +5 -0
- package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.d.ts.map +1 -0
- package/dist/types/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.d.ts +5 -0
- package/dist/types/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.d.ts.map +1 -0
- package/dist/types/graphql/resolvers/query-mutation-resolvers/query-every-resolver.d.ts +5 -0
- package/dist/types/graphql/resolvers/query-mutation-resolvers/query-every-resolver.d.ts.map +1 -0
- package/dist/types/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.d.ts +4 -0
- package/dist/types/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.d.ts.map +1 -0
- package/dist/types/graphql/resolvers/query-mutation-resolvers/union-type-resolver.d.ts +4 -0
- package/dist/types/graphql/resolvers/query-mutation-resolvers/union-type-resolver.d.ts.map +1 -0
- package/dist/types/graphql/resolvers/types.d.ts +8 -0
- package/dist/types/graphql/resolvers/types.d.ts.map +1 -0
- package/dist/types/graphql/{schema-analyzer.service.d.ts → schema-analyzer.d.ts} +3 -5
- package/dist/types/graphql/schema-analyzer.d.ts.map +1 -0
- package/dist/types/graphql/schema-generator.d.ts +4 -0
- package/dist/types/graphql/schema-generator.d.ts.map +1 -0
- package/dist/types/graphql/schema-root-type-generator.d.ts +3 -0
- package/dist/types/graphql/schema-root-type-generator.d.ts.map +1 -0
- package/dist/types/graphql/schema-utils/entry-reference-util.d.ts +2 -13
- package/dist/types/graphql/schema-utils/entry-reference-util.d.ts.map +1 -1
- package/dist/types/graphql/schema-utils/entry-type-util.d.ts +3 -5
- package/dist/types/graphql/schema-utils/entry-type-util.d.ts.map +1 -1
- package/dist/types/graphql/schema-utils/union-type-util.d.ts +2 -4
- package/dist/types/graphql/schema-utils/union-type-util.d.ts.map +1 -1
- package/dist/types/graphql/schema-validator.d.ts +1 -4
- package/dist/types/graphql/schema-validator.d.ts.map +1 -1
- package/dist/types/index.d.ts +9 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/persistence/persistence.d.ts +6 -0
- package/dist/types/persistence/persistence.d.ts.map +1 -0
- package/package.json +10 -2
- package/src/client.ts +114 -0
- package/src/graphql/apollo-config-factory.ts +17 -0
- package/src/graphql/errors.ts +43 -0
- package/src/graphql/input-type-generator.ts +126 -0
- package/src/graphql/queries-mutations-generator.ts +138 -0
- package/src/graphql/resolvers/field-resolvers/entry-reference-resolver.ts +29 -0
- package/src/graphql/resolvers/field-resolvers/field-default-value-resolver.ts +125 -0
- package/src/graphql/{field-resolver/fieldResolver.ts → resolvers/field-resolvers/types.ts} +5 -4
- package/src/graphql/resolvers/field-resolvers/union-value-resolver.ts +24 -0
- package/src/graphql/resolvers/object-type-field-default-value-resolver-generator.ts +91 -0
- package/src/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.ts +116 -0
- package/src/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.ts +85 -0
- package/src/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.ts +119 -0
- package/src/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.ts +20 -0
- package/src/graphql/resolvers/query-mutation-resolvers/query-every-resolver.ts +21 -0
- package/src/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.ts +12 -0
- package/src/graphql/resolvers/query-mutation-resolvers/union-type-resolver.ts +19 -0
- package/src/graphql/resolvers/types.ts +14 -0
- package/src/graphql/schema-analyzer.ts +55 -0
- package/src/graphql/schema-generator.ts +166 -0
- package/src/graphql/schema-root-type-generator.ts +35 -0
- package/src/graphql/schema-utils/entry-reference-util.ts +175 -167
- package/src/graphql/schema-utils/entry-type-util.ts +25 -28
- package/src/graphql/schema-utils/union-type-util.ts +26 -15
- package/src/graphql/schema-validator.ts +29 -31
- package/src/index.ts +27 -5
- package/src/persistence/persistence.ts +70 -0
- package/dist/cjs/app/api.service.js +0 -74
- package/dist/cjs/app/api.service.js.map +0 -1
- package/dist/cjs/container.js +0 -53
- package/dist/cjs/container.js.map +0 -1
- package/dist/cjs/graphql/apollo-config-factory.service.js.map +0 -1
- package/dist/cjs/graphql/field-resolver/entry-reference-resolver.js +0 -26
- package/dist/cjs/graphql/field-resolver/entry-reference-resolver.js.map +0 -1
- package/dist/cjs/graphql/field-resolver/field-default-value-resolver.js +0 -73
- package/dist/cjs/graphql/field-resolver/field-default-value-resolver.js.map +0 -1
- package/dist/cjs/graphql/field-resolver/fieldResolver.js.map +0 -1
- package/dist/cjs/graphql/field-resolver/union-value-resolver.js +0 -21
- package/dist/cjs/graphql/field-resolver/union-value-resolver.js.map +0 -1
- package/dist/cjs/graphql/input-type-generator.service.js +0 -97
- package/dist/cjs/graphql/input-type-generator.service.js.map +0 -1
- package/dist/cjs/graphql/queries-mutations-generator.service.js +0 -82
- package/dist/cjs/graphql/queries-mutations-generator.service.js.map +0 -1
- package/dist/cjs/graphql/resolver-generators/mutation-create-resolver-generator.js +0 -83
- package/dist/cjs/graphql/resolver-generators/mutation-create-resolver-generator.js.map +0 -1
- package/dist/cjs/graphql/resolver-generators/mutation-delete-resolver-generator.js +0 -60
- package/dist/cjs/graphql/resolver-generators/mutation-delete-resolver-generator.js.map +0 -1
- package/dist/cjs/graphql/resolver-generators/mutation-update-resolver-generator.js +0 -62
- package/dist/cjs/graphql/resolver-generators/mutation-update-resolver-generator.js.map +0 -1
- package/dist/cjs/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js +0 -58
- package/dist/cjs/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js.map +0 -1
- package/dist/cjs/graphql/resolver-generators/query-all-resolver-generator.js +0 -27
- package/dist/cjs/graphql/resolver-generators/query-all-resolver-generator.js.map +0 -1
- package/dist/cjs/graphql/resolver-generators/query-by-id-resolver-generator.js.map +0 -1
- package/dist/cjs/graphql/resolver-generators/query-count-all-resolver-generator.js.map +0 -1
- package/dist/cjs/graphql/resolver-generators/query-type-by-id-resolver-generator.js.map +0 -1
- package/dist/cjs/graphql/resolver-generators/union-type-resolver-generator.js +0 -33
- package/dist/cjs/graphql/resolver-generators/union-type-resolver-generator.js.map +0 -1
- package/dist/cjs/graphql/schema-analyzer.service.js +0 -41
- package/dist/cjs/graphql/schema-analyzer.service.js.map +0 -1
- package/dist/cjs/graphql/schema-generator.service.js +0 -103
- package/dist/cjs/graphql/schema-generator.service.js.map +0 -1
- package/dist/cjs/graphql/schema-root-type-generator.service.js +0 -39
- package/dist/cjs/graphql/schema-root-type-generator.service.js.map +0 -1
- package/dist/cjs/persistence/persistence.service.js +0 -66
- package/dist/cjs/persistence/persistence.service.js.map +0 -1
- package/dist/esm/app/api.service.js +0 -61
- package/dist/esm/app/api.service.js.map +0 -1
- package/dist/esm/container.js +0 -50
- package/dist/esm/container.js.map +0 -1
- package/dist/esm/graphql/apollo-config-factory.service.js +0 -17
- package/dist/esm/graphql/apollo-config-factory.service.js.map +0 -1
- package/dist/esm/graphql/field-resolver/entry-reference-resolver.js +0 -13
- package/dist/esm/graphql/field-resolver/entry-reference-resolver.js.map +0 -1
- package/dist/esm/graphql/field-resolver/field-default-value-resolver.js +0 -73
- package/dist/esm/graphql/field-resolver/field-default-value-resolver.js.map +0 -1
- package/dist/esm/graphql/field-resolver/fieldResolver.js +0 -2
- package/dist/esm/graphql/field-resolver/fieldResolver.js.map +0 -1
- package/dist/esm/graphql/field-resolver/union-value-resolver.js +0 -22
- package/dist/esm/graphql/field-resolver/union-value-resolver.js.map +0 -1
- package/dist/esm/graphql/input-type-generator.service.js +0 -94
- package/dist/esm/graphql/input-type-generator.service.js.map +0 -1
- package/dist/esm/graphql/queries-mutations-generator.service.js +0 -85
- package/dist/esm/graphql/queries-mutations-generator.service.js.map +0 -1
- package/dist/esm/graphql/resolver-generators/mutation-create-resolver-generator.js +0 -78
- package/dist/esm/graphql/resolver-generators/mutation-create-resolver-generator.js.map +0 -1
- package/dist/esm/graphql/resolver-generators/mutation-delete-resolver-generator.js +0 -58
- package/dist/esm/graphql/resolver-generators/mutation-delete-resolver-generator.js.map +0 -1
- package/dist/esm/graphql/resolver-generators/mutation-update-resolver-generator.js +0 -67
- package/dist/esm/graphql/resolver-generators/mutation-update-resolver-generator.js.map +0 -1
- package/dist/esm/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js +0 -55
- package/dist/esm/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js.map +0 -1
- package/dist/esm/graphql/resolver-generators/query-all-resolver-generator.js +0 -15
- package/dist/esm/graphql/resolver-generators/query-all-resolver-generator.js.map +0 -1
- package/dist/esm/graphql/resolver-generators/query-by-id-resolver-generator.js +0 -13
- package/dist/esm/graphql/resolver-generators/query-by-id-resolver-generator.js.map +0 -1
- package/dist/esm/graphql/resolver-generators/query-count-all-resolver-generator.js +0 -14
- package/dist/esm/graphql/resolver-generators/query-count-all-resolver-generator.js.map +0 -1
- package/dist/esm/graphql/resolver-generators/query-type-by-id-resolver-generator.js +0 -12
- package/dist/esm/graphql/resolver-generators/query-type-by-id-resolver-generator.js.map +0 -1
- package/dist/esm/graphql/resolver-generators/union-type-resolver-generator.js +0 -22
- package/dist/esm/graphql/resolver-generators/union-type-resolver-generator.js.map +0 -1
- package/dist/esm/graphql/schema-analyzer.service.js +0 -36
- package/dist/esm/graphql/schema-analyzer.service.js.map +0 -1
- package/dist/esm/graphql/schema-generator.service.js +0 -103
- package/dist/esm/graphql/schema-generator.service.js.map +0 -1
- package/dist/esm/graphql/schema-root-type-generator.service.js +0 -35
- package/dist/esm/graphql/schema-root-type-generator.service.js.map +0 -1
- package/dist/esm/persistence/persistence.service.js +0 -45
- package/dist/esm/persistence/persistence.service.js.map +0 -1
- package/dist/types/app/api.service.d.ts +0 -34
- package/dist/types/app/api.service.d.ts.map +0 -1
- package/dist/types/container.d.ts +0 -3
- package/dist/types/container.d.ts.map +0 -1
- package/dist/types/graphql/apollo-config-factory.service.d.ts +0 -9
- package/dist/types/graphql/apollo-config-factory.service.d.ts.map +0 -1
- package/dist/types/graphql/field-resolver/entry-reference-resolver.d.ts +0 -11
- package/dist/types/graphql/field-resolver/entry-reference-resolver.d.ts.map +0 -1
- package/dist/types/graphql/field-resolver/field-default-value-resolver.d.ts +0 -15
- package/dist/types/graphql/field-resolver/field-default-value-resolver.d.ts.map +0 -1
- package/dist/types/graphql/field-resolver/fieldResolver.d.ts +0 -11
- package/dist/types/graphql/field-resolver/fieldResolver.d.ts.map +0 -1
- package/dist/types/graphql/field-resolver/union-value-resolver.d.ts +0 -11
- package/dist/types/graphql/field-resolver/union-value-resolver.d.ts.map +0 -1
- package/dist/types/graphql/input-type-generator.service.d.ts +0 -12
- package/dist/types/graphql/input-type-generator.service.d.ts.map +0 -1
- package/dist/types/graphql/queries-mutations-generator.service.d.ts +0 -39
- package/dist/types/graphql/queries-mutations-generator.service.d.ts.map +0 -1
- package/dist/types/graphql/resolver-generators/mutation-create-resolver-generator.d.ts +0 -12
- package/dist/types/graphql/resolver-generators/mutation-create-resolver-generator.d.ts.map +0 -1
- package/dist/types/graphql/resolver-generators/mutation-delete-resolver-generator.d.ts +0 -12
- package/dist/types/graphql/resolver-generators/mutation-delete-resolver-generator.d.ts.map +0 -1
- package/dist/types/graphql/resolver-generators/mutation-update-resolver-generator.d.ts +0 -13
- package/dist/types/graphql/resolver-generators/mutation-update-resolver-generator.d.ts.map +0 -1
- package/dist/types/graphql/resolver-generators/object-type-field-default-value-resolver-generator.d.ts +0 -13
- package/dist/types/graphql/resolver-generators/object-type-field-default-value-resolver-generator.d.ts.map +0 -1
- package/dist/types/graphql/resolver-generators/query-all-resolver-generator.d.ts +0 -10
- package/dist/types/graphql/resolver-generators/query-all-resolver-generator.d.ts.map +0 -1
- package/dist/types/graphql/resolver-generators/query-by-id-resolver-generator.d.ts +0 -10
- package/dist/types/graphql/resolver-generators/query-by-id-resolver-generator.d.ts.map +0 -1
- package/dist/types/graphql/resolver-generators/query-count-all-resolver-generator.d.ts +0 -10
- package/dist/types/graphql/resolver-generators/query-count-all-resolver-generator.d.ts.map +0 -1
- package/dist/types/graphql/resolver-generators/query-type-by-id-resolver-generator.d.ts +0 -9
- package/dist/types/graphql/resolver-generators/query-type-by-id-resolver-generator.d.ts.map +0 -1
- package/dist/types/graphql/resolver-generators/union-type-resolver-generator.d.ts +0 -11
- package/dist/types/graphql/resolver-generators/union-type-resolver-generator.d.ts.map +0 -1
- package/dist/types/graphql/schema-analyzer.service.d.ts.map +0 -1
- package/dist/types/graphql/schema-generator.service.d.ts +0 -21
- package/dist/types/graphql/schema-generator.service.d.ts.map +0 -1
- package/dist/types/graphql/schema-root-type-generator.service.d.ts +0 -5
- package/dist/types/graphql/schema-root-type-generator.service.d.ts.map +0 -1
- package/dist/types/persistence/persistence.service.d.ts +0 -8
- package/dist/types/persistence/persistence.service.d.ts.map +0 -1
- package/src/app/api.service.ts +0 -121
- package/src/container.ts +0 -106
- package/src/graphql/apollo-config-factory.service.ts +0 -21
- package/src/graphql/field-resolver/entry-reference-resolver.ts +0 -47
- package/src/graphql/field-resolver/field-default-value-resolver.ts +0 -152
- package/src/graphql/field-resolver/union-value-resolver.ts +0 -46
- package/src/graphql/input-type-generator.service.ts +0 -127
- package/src/graphql/queries-mutations-generator.service.ts +0 -154
- package/src/graphql/resolver-generators/mutation-create-resolver-generator.ts +0 -120
- package/src/graphql/resolver-generators/mutation-delete-resolver-generator.ts +0 -96
- package/src/graphql/resolver-generators/mutation-update-resolver-generator.ts +0 -127
- package/src/graphql/resolver-generators/object-type-field-default-value-resolver-generator.ts +0 -117
- package/src/graphql/resolver-generators/query-all-resolver-generator.ts +0 -29
- package/src/graphql/resolver-generators/query-by-id-resolver-generator.ts +0 -23
- package/src/graphql/resolver-generators/query-count-all-resolver-generator.ts +0 -29
- package/src/graphql/resolver-generators/query-type-by-id-resolver-generator.ts +0 -27
- package/src/graphql/resolver-generators/union-type-resolver-generator.ts +0 -38
- package/src/graphql/schema-analyzer.service.ts +0 -57
- package/src/graphql/schema-generator.service.ts +0 -178
- package/src/graphql/schema-root-type-generator.service.ts +0 -44
- package/src/persistence/persistence.service.ts +0 -74
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import {
|
|
2
|
-
GraphQLError,
|
|
3
2
|
GraphQLNullableType,
|
|
4
3
|
GraphQLObjectType,
|
|
5
4
|
isListType,
|
|
@@ -7,185 +6,194 @@ import {
|
|
|
7
6
|
isObjectType,
|
|
8
7
|
isUnionType,
|
|
9
8
|
} from 'graphql'
|
|
10
|
-
import { ApolloContext } from '../../
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
|
|
9
|
+
import { ApolloContext } from '../../client'
|
|
10
|
+
import { getTypeById } from '../../persistence/persistence'
|
|
11
|
+
import {
|
|
12
|
+
getUnionTypeNameFromFieldValue,
|
|
13
|
+
getUnionValue,
|
|
14
|
+
} from './union-type-util'
|
|
15
|
+
import { hasEntryDirective, isUnionOfEntryTypes } from './entry-type-util'
|
|
16
|
+
import { createError, ErrorCode } from '../errors'
|
|
14
17
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
function isPermittedReferenceType(
|
|
19
|
+
referencedTypeName: string,
|
|
20
|
+
fieldType: GraphQLNullableType,
|
|
21
|
+
): boolean {
|
|
22
|
+
if (isNonNullType(fieldType)) {
|
|
23
|
+
return isPermittedReferenceType(referencedTypeName, fieldType.ofType)
|
|
24
|
+
} else if (isListType(fieldType)) {
|
|
25
|
+
return isPermittedReferenceType(referencedTypeName, fieldType.ofType)
|
|
26
|
+
} else if (isUnionType(fieldType)) {
|
|
27
|
+
return fieldType
|
|
28
|
+
.getTypes()
|
|
29
|
+
.map((concreteType) => concreteType.name)
|
|
30
|
+
.includes(referencedTypeName)
|
|
31
|
+
} else if (isObjectType(fieldType)) {
|
|
32
|
+
return fieldType.name === referencedTypeName
|
|
33
|
+
}
|
|
34
|
+
return false
|
|
35
|
+
}
|
|
21
36
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
37
|
+
async function validateReference(
|
|
38
|
+
context: ApolloContext,
|
|
39
|
+
fieldName: string,
|
|
40
|
+
fieldType: GraphQLNullableType,
|
|
41
|
+
fieldValue: any,
|
|
42
|
+
): Promise<void> {
|
|
43
|
+
if (isNonNullType(fieldType)) {
|
|
44
|
+
await validateReference(context, fieldName, fieldType.ofType, fieldValue)
|
|
45
|
+
return
|
|
46
|
+
} else if (isListType(fieldType)) {
|
|
47
|
+
if (!Array.isArray(fieldValue)) {
|
|
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
|
+
},
|
|
36
55
|
)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
referencedEntryIds = [
|
|
41
|
-
...referencedEntryIds,
|
|
42
|
-
...(await this.getReferencedEntryIds(
|
|
43
|
-
rootType,
|
|
44
|
-
context,
|
|
45
|
-
fieldName,
|
|
46
|
-
type.ofType,
|
|
47
|
-
element,
|
|
48
|
-
)),
|
|
49
|
-
]
|
|
50
|
-
}
|
|
51
|
-
// deduplicate
|
|
52
|
-
referencedEntryIds = [...new Set(referencedEntryIds)]
|
|
53
|
-
return referencedEntryIds
|
|
54
|
-
} else if (isUnionType(type)) {
|
|
55
|
-
if (this.entryTypeUtil.isUnionOfEntryTypes(type)) {
|
|
56
|
-
await this.validateReference(context, '', type, data)
|
|
57
|
-
return [data.id]
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
const unionTypeName =
|
|
61
|
-
this.unionTypeUtil.getUnionTypeNameFromFieldValue(data)
|
|
62
|
-
const unionType = type
|
|
63
|
-
.getTypes()
|
|
64
|
-
.find((type) => type.name === unionTypeName)
|
|
65
|
-
if (!unionType) {
|
|
66
|
-
throw new Error(
|
|
67
|
-
`Type "${unionTypeName}" found in field data is not a valid type for union type "${type.name}".`,
|
|
68
|
-
)
|
|
69
|
-
}
|
|
70
|
-
const unionValue = this.unionTypeUtil.getUnionValue(data)
|
|
71
|
-
return this.getReferencedEntryIds(
|
|
72
|
-
rootType,
|
|
56
|
+
}
|
|
57
|
+
for (const fieldListElement of fieldValue) {
|
|
58
|
+
await validateReference(
|
|
73
59
|
context,
|
|
74
60
|
fieldName,
|
|
75
|
-
|
|
76
|
-
|
|
61
|
+
fieldType.ofType,
|
|
62
|
+
fieldListElement,
|
|
63
|
+
)
|
|
64
|
+
}
|
|
65
|
+
return
|
|
66
|
+
} else if (isUnionType(fieldType) || isObjectType(fieldType)) {
|
|
67
|
+
if (!('id' in fieldValue)) {
|
|
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
|
+
)
|
|
76
|
+
}
|
|
77
|
+
const referencedId = fieldValue.id
|
|
78
|
+
let referencedTypeName
|
|
79
|
+
try {
|
|
80
|
+
referencedTypeName = await getTypeById(
|
|
81
|
+
context.gitAdapter,
|
|
82
|
+
context.getCurrentRef(),
|
|
83
|
+
referencedId,
|
|
84
|
+
)
|
|
85
|
+
} catch (error) {
|
|
86
|
+
throw createError(
|
|
87
|
+
`Failed to resolve entry reference "${referencedId}".`,
|
|
88
|
+
ErrorCode.BAD_USER_INPUT,
|
|
89
|
+
{
|
|
90
|
+
fieldName: fieldName,
|
|
91
|
+
fieldValue: referencedId,
|
|
92
|
+
},
|
|
93
|
+
)
|
|
94
|
+
}
|
|
95
|
+
if (!isPermittedReferenceType(referencedTypeName, fieldType)) {
|
|
96
|
+
throw createError(
|
|
97
|
+
`Reference with ID "${referencedId}" points to entry of incompatible type "${referencedTypeName}".`,
|
|
98
|
+
ErrorCode.BAD_USER_INPUT,
|
|
99
|
+
{
|
|
100
|
+
fieldName: fieldName,
|
|
101
|
+
fieldValue: referencedId,
|
|
102
|
+
},
|
|
77
103
|
)
|
|
78
|
-
} else if (isObjectType(type)) {
|
|
79
|
-
if (
|
|
80
|
-
type.name !== rootType.name &&
|
|
81
|
-
this.entryTypeUtil.hasEntryDirective(type)
|
|
82
|
-
) {
|
|
83
|
-
await this.validateReference(context, fieldName ?? '', type, data)
|
|
84
|
-
return [data.id]
|
|
85
|
-
} else {
|
|
86
|
-
let referencedEntryIds: string[] = []
|
|
87
|
-
for (const [fieldsKey, field] of Object.entries(type.getFields())) {
|
|
88
|
-
const fieldValue = data[fieldsKey] ?? undefined
|
|
89
|
-
if (fieldValue !== undefined) {
|
|
90
|
-
const nestedResult = await this.getReferencedEntryIds(
|
|
91
|
-
rootType,
|
|
92
|
-
context,
|
|
93
|
-
fieldsKey,
|
|
94
|
-
field.type,
|
|
95
|
-
fieldValue,
|
|
96
|
-
)
|
|
97
|
-
referencedEntryIds = [...referencedEntryIds, ...nestedResult]
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
// deduplicate
|
|
101
|
-
referencedEntryIds = [...new Set(referencedEntryIds)]
|
|
102
|
-
return referencedEntryIds
|
|
103
|
-
}
|
|
104
104
|
}
|
|
105
|
-
|
|
106
|
-
return []
|
|
107
105
|
}
|
|
106
|
+
}
|
|
108
107
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
108
|
+
export async function getReferencedEntryIds(
|
|
109
|
+
rootType: GraphQLObjectType,
|
|
110
|
+
context: ApolloContext,
|
|
111
|
+
fieldName: string | null,
|
|
112
|
+
type: GraphQLNullableType,
|
|
113
|
+
data: any,
|
|
114
|
+
): Promise<string[]> {
|
|
115
|
+
if (isNonNullType(type)) {
|
|
116
|
+
return getReferencedEntryIds(
|
|
117
|
+
rootType,
|
|
118
|
+
context,
|
|
119
|
+
fieldName,
|
|
120
|
+
type.ofType,
|
|
121
|
+
data,
|
|
122
|
+
)
|
|
123
|
+
} else if (isListType(type)) {
|
|
124
|
+
let referencedEntryIds: string[] = []
|
|
125
|
+
for (const element of data) {
|
|
126
|
+
referencedEntryIds = [
|
|
127
|
+
...referencedEntryIds,
|
|
128
|
+
...(await getReferencedEntryIds(
|
|
129
|
+
rootType,
|
|
129
130
|
context,
|
|
130
131
|
fieldName,
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
)
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
referencedTypeName = await this.persistence.getTypeById(
|
|
144
|
-
context.gitAdapter,
|
|
145
|
-
context.getCurrentRef(),
|
|
146
|
-
referencedId,
|
|
147
|
-
)
|
|
148
|
-
} catch (error) {
|
|
149
|
-
throw new GraphQLError(
|
|
150
|
-
`Reference with id "${referencedId}" points to non-existing entry`,
|
|
151
|
-
{
|
|
152
|
-
extensions: {
|
|
153
|
-
code: 'BAD_USER_INPUT',
|
|
154
|
-
fieldName: fieldName,
|
|
155
|
-
},
|
|
156
|
-
},
|
|
157
|
-
)
|
|
158
|
-
}
|
|
159
|
-
if (!this.isPermittedReferenceType(referencedTypeName, fieldType)) {
|
|
160
|
-
throw new GraphQLError(
|
|
161
|
-
`Reference with id "${referencedId}" points to entry of incompatible type`,
|
|
162
|
-
{
|
|
163
|
-
extensions: {
|
|
164
|
-
code: 'BAD_USER_INPUT',
|
|
165
|
-
fieldName: fieldName,
|
|
166
|
-
},
|
|
167
|
-
},
|
|
168
|
-
)
|
|
169
|
-
}
|
|
132
|
+
type.ofType,
|
|
133
|
+
element,
|
|
134
|
+
)),
|
|
135
|
+
]
|
|
136
|
+
}
|
|
137
|
+
// deduplicate
|
|
138
|
+
referencedEntryIds = [...new Set(referencedEntryIds)]
|
|
139
|
+
return referencedEntryIds
|
|
140
|
+
} else if (isUnionType(type)) {
|
|
141
|
+
if (isUnionOfEntryTypes(type)) {
|
|
142
|
+
await validateReference(context, '', type, data)
|
|
143
|
+
return [data.id]
|
|
170
144
|
}
|
|
171
|
-
}
|
|
172
145
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
.
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
146
|
+
const requestedUnionTypeName = getUnionTypeNameFromFieldValue(data)
|
|
147
|
+
const concreteFieldUnionType = type
|
|
148
|
+
.getTypes()
|
|
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
|
+
},
|
|
163
|
+
)
|
|
164
|
+
}
|
|
165
|
+
const unionValue = getUnionValue(data)
|
|
166
|
+
return getReferencedEntryIds(
|
|
167
|
+
rootType,
|
|
168
|
+
context,
|
|
169
|
+
fieldName,
|
|
170
|
+
concreteFieldUnionType,
|
|
171
|
+
unionValue,
|
|
172
|
+
)
|
|
173
|
+
} else if (isObjectType(type)) {
|
|
174
|
+
if (type.name !== rootType.name && hasEntryDirective(type)) {
|
|
175
|
+
await validateReference(context, fieldName ?? '', type, data)
|
|
176
|
+
return [data.id]
|
|
177
|
+
} else {
|
|
178
|
+
let referencedEntryIds: string[] = []
|
|
179
|
+
for (const [fieldsKey, field] of Object.entries(type.getFields())) {
|
|
180
|
+
const fieldValue = data[fieldsKey] ?? undefined
|
|
181
|
+
if (fieldValue !== undefined) {
|
|
182
|
+
const nestedResult = await getReferencedEntryIds(
|
|
183
|
+
rootType,
|
|
184
|
+
context,
|
|
185
|
+
fieldsKey,
|
|
186
|
+
field.type,
|
|
187
|
+
fieldValue,
|
|
188
|
+
)
|
|
189
|
+
referencedEntryIds = [...referencedEntryIds, ...nestedResult]
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// deduplicate
|
|
193
|
+
referencedEntryIds = [...new Set(referencedEntryIds)]
|
|
194
|
+
return referencedEntryIds
|
|
188
195
|
}
|
|
189
|
-
return false
|
|
190
196
|
}
|
|
197
|
+
|
|
198
|
+
return []
|
|
191
199
|
}
|
|
@@ -8,35 +8,32 @@ import {
|
|
|
8
8
|
isUnionType,
|
|
9
9
|
} from 'graphql'
|
|
10
10
|
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
} else if (isObjectType(type)) {
|
|
20
|
-
return this.hasEntryDirective(type)
|
|
21
|
-
}
|
|
22
|
-
return false
|
|
23
|
-
}
|
|
11
|
+
export function hasEntryDirective(type: GraphQLObjectType): boolean {
|
|
12
|
+
return (
|
|
13
|
+
!!type.astNode &&
|
|
14
|
+
type.astNode.directives?.find(
|
|
15
|
+
(directive) => directive.name.value === 'Entry',
|
|
16
|
+
) !== undefined
|
|
17
|
+
)
|
|
18
|
+
}
|
|
24
19
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
) !== undefined
|
|
31
|
-
)
|
|
32
|
-
}
|
|
20
|
+
export function isUnionOfEntryTypes(type: GraphQLUnionType): boolean {
|
|
21
|
+
return type
|
|
22
|
+
.getTypes()
|
|
23
|
+
.every((unionType) => buildsOnTypeWithEntryDirective(unionType))
|
|
24
|
+
}
|
|
33
25
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
)
|
|
26
|
+
export function buildsOnTypeWithEntryDirective(
|
|
27
|
+
type: GraphQLNullableType,
|
|
28
|
+
): boolean {
|
|
29
|
+
if (isNonNullType(type)) {
|
|
30
|
+
return buildsOnTypeWithEntryDirective(type.ofType)
|
|
31
|
+
} else if (isListType(type)) {
|
|
32
|
+
return buildsOnTypeWithEntryDirective(type.ofType)
|
|
33
|
+
} else if (isUnionType(type)) {
|
|
34
|
+
return isUnionOfEntryTypes(type)
|
|
35
|
+
} else if (isObjectType(type)) {
|
|
36
|
+
return hasEntryDirective(type)
|
|
41
37
|
}
|
|
38
|
+
return false
|
|
42
39
|
}
|
|
@@ -1,22 +1,33 @@
|
|
|
1
1
|
import { EntryData } from '@commitspark/git-adapter'
|
|
2
|
+
import { createError, ErrorCode } from '../errors'
|
|
2
3
|
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
4
|
+
export function getUnionTypeNameFromFieldValue(fieldValue: unknown): string {
|
|
5
|
+
if (typeof fieldValue !== 'object' || fieldValue === null) {
|
|
6
|
+
throw createError(
|
|
7
|
+
`Expected object value in order to determine union type name.`,
|
|
8
|
+
ErrorCode.BAD_REPOSITORY_DATA,
|
|
9
|
+
{
|
|
10
|
+
fieldValue: fieldValue,
|
|
11
|
+
},
|
|
12
|
+
)
|
|
12
13
|
}
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
// Based on our @oneOf directive, we expect only one field whose name
|
|
16
|
+
// corresponds to the concrete type's name.
|
|
17
|
+
return Object.keys(fieldValue)[0]
|
|
18
|
+
}
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
export function getUnionValue(fieldValue: unknown): EntryData {
|
|
21
|
+
if (typeof fieldValue !== 'object' || fieldValue === null) {
|
|
22
|
+
throw createError(
|
|
23
|
+
`Expected object value in order to determine union value.`,
|
|
24
|
+
ErrorCode.BAD_REPOSITORY_DATA,
|
|
25
|
+
{
|
|
26
|
+
fieldValue: fieldValue,
|
|
27
|
+
},
|
|
28
|
+
)
|
|
21
29
|
}
|
|
30
|
+
|
|
31
|
+
const firstKey = Object.keys(fieldValue)[0]
|
|
32
|
+
return (fieldValue as Record<string, EntryData>)[firstKey]
|
|
22
33
|
}
|
|
@@ -1,39 +1,37 @@
|
|
|
1
1
|
import { GraphQLSchema, GraphQLUnionType, Kind } from 'graphql'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
return results.filter((result) => result !== '')
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
private checkUnionMembersConsistentUseOfEntryDirective(
|
|
11
|
-
schema: GraphQLSchema,
|
|
12
|
-
): string {
|
|
13
|
-
const typeMap = schema.getTypeMap()
|
|
3
|
+
function checkUnionMembersConsistentUseOfEntryDirective(
|
|
4
|
+
schema: GraphQLSchema,
|
|
5
|
+
): string {
|
|
6
|
+
const typeMap = schema.getTypeMap()
|
|
14
7
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
8
|
+
for (const [key, type] of Object.entries(typeMap)) {
|
|
9
|
+
if (type.astNode?.kind !== Kind.UNION_TYPE_DEFINITION) {
|
|
10
|
+
continue
|
|
11
|
+
}
|
|
12
|
+
const innerTypes = (type as GraphQLUnionType).getTypes()
|
|
20
13
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
14
|
+
const numberUnionMembersWithEntryDirective = innerTypes.filter(
|
|
15
|
+
(innerType) =>
|
|
16
|
+
!!innerType.astNode &&
|
|
17
|
+
innerType.astNode.directives?.find(
|
|
18
|
+
(directive) => directive.name.value === 'Entry',
|
|
19
|
+
) !== undefined,
|
|
20
|
+
).length
|
|
28
21
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
22
|
+
if (
|
|
23
|
+
numberUnionMembersWithEntryDirective !== 0 &&
|
|
24
|
+
numberUnionMembersWithEntryDirective !== innerTypes.length
|
|
25
|
+
) {
|
|
26
|
+
return `Either all union members of "${type.name}" must have "@Entry" directive or none.`
|
|
35
27
|
}
|
|
36
|
-
|
|
37
|
-
return ''
|
|
38
28
|
}
|
|
29
|
+
|
|
30
|
+
return ''
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export function getValidationResult(schema: GraphQLSchema): string[] {
|
|
34
|
+
const results = []
|
|
35
|
+
results.push(checkUnionMembersConsistentUseOfEntryDirective(schema))
|
|
36
|
+
return results.filter((result) => result !== '')
|
|
39
37
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,8 +1,30 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
ApolloExecuteOperationRequest,
|
|
3
|
+
getSchema,
|
|
4
|
+
GraphQLResponse,
|
|
5
|
+
postGraphQL,
|
|
6
|
+
SchemaResponse,
|
|
7
|
+
VariableValues,
|
|
8
|
+
} from './client'
|
|
9
|
+
import { GitAdapter } from '@commitspark/git-adapter'
|
|
10
|
+
import { ErrorCode, ErrorMetadata } from './graphql/errors'
|
|
3
11
|
|
|
4
|
-
|
|
12
|
+
interface Client {
|
|
13
|
+
postGraphQL<
|
|
14
|
+
TData = Record<string, unknown>,
|
|
15
|
+
TVariables extends VariableValues = VariableValues,
|
|
16
|
+
>(
|
|
17
|
+
ref: string,
|
|
18
|
+
request: ApolloExecuteOperationRequest<TData, TVariables>,
|
|
19
|
+
): Promise<GraphQLResponse<TData | null>>
|
|
20
|
+
getSchema(ref: string): Promise<SchemaResponse>
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export { Client, GraphQLResponse, SchemaResponse, ErrorCode, ErrorMetadata }
|
|
5
24
|
|
|
6
|
-
export async function
|
|
7
|
-
return
|
|
25
|
+
export async function createClient(gitAdapter: GitAdapter): Promise<Client> {
|
|
26
|
+
return {
|
|
27
|
+
postGraphQL: (ref, request) => postGraphQL(gitAdapter, ref, request),
|
|
28
|
+
getSchema: (ref) => getSchema(gitAdapter, ref),
|
|
29
|
+
}
|
|
8
30
|
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Entry, GitAdapter } from '@commitspark/git-adapter'
|
|
2
|
+
import { createError, ErrorCode } from '../graphql/errors'
|
|
3
|
+
|
|
4
|
+
export async function getTypeById(
|
|
5
|
+
gitAdapter: GitAdapter,
|
|
6
|
+
commitHash: string,
|
|
7
|
+
id: string,
|
|
8
|
+
): Promise<string> {
|
|
9
|
+
const allEntries = await gitAdapter.getEntries(commitHash)
|
|
10
|
+
const requestedEntry = allEntries.find((entry: Entry) => entry.id === id)
|
|
11
|
+
if (requestedEntry === undefined) {
|
|
12
|
+
throw createError(`No entry with id "${id}" exists.`, ErrorCode.NOT_FOUND, {
|
|
13
|
+
argumentName: 'id',
|
|
14
|
+
argumentValue: id,
|
|
15
|
+
})
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return requestedEntry.metadata.type
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export async function findById(
|
|
22
|
+
gitAdapter: GitAdapter,
|
|
23
|
+
commitHash: string,
|
|
24
|
+
id: string,
|
|
25
|
+
): Promise<Entry> {
|
|
26
|
+
const allEntries = await gitAdapter.getEntries(commitHash)
|
|
27
|
+
const requestedEntry = allEntries.find((entry: Entry) => entry.id === id)
|
|
28
|
+
if (requestedEntry === undefined) {
|
|
29
|
+
throw createError(`No entry with id "${id}" exists.`, ErrorCode.NOT_FOUND, {
|
|
30
|
+
argumentName: 'id',
|
|
31
|
+
argumentValue: id,
|
|
32
|
+
})
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return requestedEntry
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export async function findByType(
|
|
39
|
+
gitAdapter: GitAdapter,
|
|
40
|
+
commitHash: string,
|
|
41
|
+
type: string,
|
|
42
|
+
): Promise<Entry[]> {
|
|
43
|
+
const allEntries = await gitAdapter.getEntries(commitHash)
|
|
44
|
+
return allEntries.filter((entry: Entry) => entry.metadata.type === type)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export async function findByTypeId(
|
|
48
|
+
gitAdapter: GitAdapter,
|
|
49
|
+
commitHash: string,
|
|
50
|
+
type: string,
|
|
51
|
+
id: string,
|
|
52
|
+
): Promise<Entry> {
|
|
53
|
+
const allEntries = await gitAdapter.getEntries(commitHash)
|
|
54
|
+
const requestedEntry = allEntries.find(
|
|
55
|
+
(entry: Entry) => entry.id === id && entry.metadata.type === type,
|
|
56
|
+
)
|
|
57
|
+
if (requestedEntry === undefined) {
|
|
58
|
+
throw createError(
|
|
59
|
+
`No entry of type "${type}" with id "${id}" exists.`,
|
|
60
|
+
ErrorCode.NOT_FOUND,
|
|
61
|
+
{
|
|
62
|
+
typeName: type,
|
|
63
|
+
argumentName: 'id',
|
|
64
|
+
argumentValue: id,
|
|
65
|
+
},
|
|
66
|
+
)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return requestedEntry
|
|
70
|
+
}
|