@commitspark/graphql-api 0.80.0 → 0.81.0
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 +7 -0
- package/dist/cjs/app/api.service.js +74 -0
- package/dist/cjs/app/api.service.js.map +1 -0
- package/dist/{container.js → cjs/container.js} +13 -12
- package/dist/cjs/container.js.map +1 -0
- package/dist/cjs/graphql/apollo-config-factory.service.js +31 -0
- package/dist/cjs/graphql/apollo-config-factory.service.js.map +1 -0
- package/dist/cjs/graphql/field-resolver/entry-reference-resolver.js +26 -0
- package/dist/cjs/graphql/field-resolver/entry-reference-resolver.js.map +1 -0
- package/dist/cjs/graphql/field-resolver/field-default-value-resolver.js.map +1 -0
- package/dist/cjs/graphql/field-resolver/fieldResolver.js.map +1 -0
- package/dist/{graphql → cjs/graphql}/field-resolver/union-value-resolver.js +4 -0
- package/dist/cjs/graphql/field-resolver/union-value-resolver.js.map +1 -0
- package/dist/{graphql → cjs/graphql}/input-type-generator.service.js +5 -3
- package/dist/cjs/graphql/input-type-generator.service.js.map +1 -0
- package/dist/cjs/graphql/queries-mutations-generator.service.js.map +1 -0
- package/dist/{graphql → cjs/graphql}/resolver-generators/mutation-create-resolver-generator.js +21 -11
- package/dist/cjs/graphql/resolver-generators/mutation-create-resolver-generator.js.map +1 -0
- package/dist/{graphql → cjs/graphql}/resolver-generators/mutation-delete-resolver-generator.js +16 -8
- package/dist/cjs/graphql/resolver-generators/mutation-delete-resolver-generator.js.map +1 -0
- package/dist/{graphql → cjs/graphql}/resolver-generators/mutation-update-resolver-generator.js +18 -9
- package/dist/cjs/graphql/resolver-generators/mutation-update-resolver-generator.js.map +1 -0
- package/dist/cjs/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js.map +1 -0
- package/dist/cjs/graphql/resolver-generators/query-all-resolver-generator.js +27 -0
- package/dist/cjs/graphql/resolver-generators/query-all-resolver-generator.js.map +1 -0
- package/dist/cjs/graphql/resolver-generators/query-by-id-resolver-generator.js +25 -0
- package/dist/cjs/graphql/resolver-generators/query-by-id-resolver-generator.js.map +1 -0
- package/dist/cjs/graphql/resolver-generators/query-count-all-resolver-generator.js +26 -0
- package/dist/cjs/graphql/resolver-generators/query-count-all-resolver-generator.js.map +1 -0
- package/dist/cjs/graphql/resolver-generators/query-type-by-id-resolver-generator.js +24 -0
- package/dist/cjs/graphql/resolver-generators/query-type-by-id-resolver-generator.js.map +1 -0
- package/dist/cjs/graphql/resolver-generators/union-type-resolver-generator.js +33 -0
- package/dist/cjs/graphql/resolver-generators/union-type-resolver-generator.js.map +1 -0
- package/dist/cjs/graphql/schema-analyzer.service.js.map +1 -0
- package/dist/cjs/graphql/schema-generator.service.js +103 -0
- package/dist/cjs/graphql/schema-generator.service.js.map +1 -0
- package/dist/cjs/graphql/schema-root-type-generator.service.js.map +1 -0
- package/dist/cjs/graphql/schema-utils/entry-reference-util.js +139 -0
- package/dist/cjs/graphql/schema-utils/entry-reference-util.js.map +1 -0
- package/dist/cjs/graphql/schema-utils/entry-type-util.js.map +1 -0
- package/dist/{graphql → cjs/graphql}/schema-utils/union-type-util.js +2 -0
- package/dist/cjs/graphql/schema-utils/union-type-util.js.map +1 -0
- package/dist/{graphql → cjs/graphql}/schema-validator.js +2 -2
- package/dist/cjs/graphql/schema-validator.js.map +1 -0
- package/dist/cjs/index.js +22 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/persistence/persistence.service.js +66 -0
- package/dist/cjs/persistence/persistence.service.js.map +1 -0
- package/dist/{app → esm/app}/api.service.js +7 -7
- package/dist/esm/app/api.service.js.map +1 -0
- package/dist/esm/container.js +50 -0
- package/dist/esm/container.js.map +1 -0
- package/dist/esm/graphql/apollo-config-factory.service.js +17 -0
- package/dist/esm/graphql/apollo-config-factory.service.js.map +1 -0
- package/dist/{graphql → esm/graphql}/field-resolver/entry-reference-resolver.js +4 -6
- package/dist/esm/graphql/field-resolver/entry-reference-resolver.js.map +1 -0
- package/dist/esm/graphql/field-resolver/field-default-value-resolver.js +73 -0
- package/dist/esm/graphql/field-resolver/field-default-value-resolver.js.map +1 -0
- package/dist/esm/graphql/field-resolver/fieldResolver.js +2 -0
- package/dist/esm/graphql/field-resolver/fieldResolver.js.map +1 -0
- package/dist/esm/graphql/field-resolver/union-value-resolver.js +22 -0
- package/dist/esm/graphql/field-resolver/union-value-resolver.js.map +1 -0
- package/dist/esm/graphql/input-type-generator.service.js +94 -0
- package/dist/esm/graphql/input-type-generator.service.js.map +1 -0
- package/dist/esm/graphql/queries-mutations-generator.service.js +85 -0
- package/dist/esm/graphql/queries-mutations-generator.service.js.map +1 -0
- package/dist/esm/graphql/resolver-generators/mutation-create-resolver-generator.js +78 -0
- package/dist/esm/graphql/resolver-generators/mutation-create-resolver-generator.js.map +1 -0
- package/dist/esm/graphql/resolver-generators/mutation-delete-resolver-generator.js +58 -0
- package/dist/esm/graphql/resolver-generators/mutation-delete-resolver-generator.js.map +1 -0
- package/dist/esm/graphql/resolver-generators/mutation-update-resolver-generator.js +67 -0
- package/dist/esm/graphql/resolver-generators/mutation-update-resolver-generator.js.map +1 -0
- package/dist/esm/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js +55 -0
- package/dist/esm/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js.map +1 -0
- package/dist/esm/graphql/resolver-generators/query-all-resolver-generator.js +15 -0
- package/dist/esm/graphql/resolver-generators/query-all-resolver-generator.js.map +1 -0
- package/dist/esm/graphql/resolver-generators/query-by-id-resolver-generator.js +13 -0
- package/dist/esm/graphql/resolver-generators/query-by-id-resolver-generator.js.map +1 -0
- package/dist/{graphql → esm/graphql}/resolver-generators/query-count-all-resolver-generator.js +2 -5
- package/dist/esm/graphql/resolver-generators/query-count-all-resolver-generator.js.map +1 -0
- package/dist/esm/graphql/resolver-generators/query-type-by-id-resolver-generator.js +12 -0
- package/dist/esm/graphql/resolver-generators/query-type-by-id-resolver-generator.js.map +1 -0
- package/dist/{graphql → esm/graphql}/resolver-generators/union-type-resolver-generator.js +6 -5
- package/dist/esm/graphql/resolver-generators/union-type-resolver-generator.js.map +1 -0
- package/dist/esm/graphql/schema-analyzer.service.js +36 -0
- package/dist/esm/graphql/schema-analyzer.service.js.map +1 -0
- package/dist/{graphql → esm/graphql}/schema-generator.service.js +24 -13
- package/dist/esm/graphql/schema-generator.service.js.map +1 -0
- package/dist/esm/graphql/schema-root-type-generator.service.js +35 -0
- package/dist/esm/graphql/schema-root-type-generator.service.js.map +1 -0
- package/dist/{graphql → esm/graphql}/schema-utils/entry-reference-util.js +22 -23
- package/dist/esm/graphql/schema-utils/entry-reference-util.js.map +1 -0
- package/dist/esm/graphql/schema-utils/entry-type-util.js +29 -0
- package/dist/esm/graphql/schema-utils/entry-type-util.js.map +1 -0
- package/dist/esm/graphql/schema-utils/union-type-util.js +18 -0
- package/dist/esm/graphql/schema-utils/union-type-util.js.map +1 -0
- package/dist/esm/graphql/schema-validator.js +25 -0
- package/dist/esm/graphql/schema-validator.js.map +1 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/{persistence → esm/persistence}/persistence.service.js +5 -9
- package/dist/esm/persistence/persistence.service.js.map +1 -0
- package/dist/tsconfig.build.cjs.tsbuildinfo +1 -0
- package/dist/tsconfig.build.esm.tsbuildinfo +1 -0
- package/dist/tsconfig.build.types.tsbuildinfo +1 -0
- package/dist/{app → types/app}/api.service.d.ts +8 -5
- package/dist/types/app/api.service.d.ts.map +1 -0
- package/dist/{container.d.ts → types/container.d.ts} +1 -0
- package/dist/types/container.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/apollo-config-factory.service.d.ts +1 -0
- package/dist/types/graphql/apollo-config-factory.service.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/field-resolver/entry-reference-resolver.d.ts +3 -2
- package/dist/types/graphql/field-resolver/entry-reference-resolver.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/field-resolver/field-default-value-resolver.d.ts +3 -2
- package/dist/types/graphql/field-resolver/field-default-value-resolver.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/field-resolver/fieldResolver.d.ts +2 -2
- package/dist/types/graphql/field-resolver/fieldResolver.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/field-resolver/union-value-resolver.d.ts +2 -1
- package/dist/types/graphql/field-resolver/union-value-resolver.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/input-type-generator.service.d.ts +1 -0
- package/dist/types/graphql/input-type-generator.service.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/queries-mutations-generator.service.d.ts +2 -2
- package/dist/types/graphql/queries-mutations-generator.service.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/resolver-generators/mutation-create-resolver-generator.d.ts +2 -1
- package/dist/types/graphql/resolver-generators/mutation-create-resolver-generator.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/resolver-generators/mutation-delete-resolver-generator.d.ts +2 -1
- package/dist/types/graphql/resolver-generators/mutation-delete-resolver-generator.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/resolver-generators/mutation-update-resolver-generator.d.ts +2 -1
- package/dist/types/graphql/resolver-generators/mutation-update-resolver-generator.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/resolver-generators/object-type-field-default-value-resolver-generator.d.ts +2 -2
- package/dist/types/graphql/resolver-generators/object-type-field-default-value-resolver-generator.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/resolver-generators/query-all-resolver-generator.d.ts +2 -1
- package/dist/types/graphql/resolver-generators/query-all-resolver-generator.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/resolver-generators/query-by-id-resolver-generator.d.ts +2 -1
- package/dist/types/graphql/resolver-generators/query-by-id-resolver-generator.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/resolver-generators/query-count-all-resolver-generator.d.ts +2 -1
- package/dist/types/graphql/resolver-generators/query-count-all-resolver-generator.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/resolver-generators/query-type-by-id-resolver-generator.d.ts +2 -1
- package/dist/types/graphql/resolver-generators/query-type-by-id-resolver-generator.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/resolver-generators/union-type-resolver-generator.d.ts +1 -0
- package/dist/types/graphql/resolver-generators/union-type-resolver-generator.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/schema-analyzer.service.d.ts +2 -2
- package/dist/types/graphql/schema-analyzer.service.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/schema-generator.service.d.ts +1 -0
- package/dist/types/graphql/schema-generator.service.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/schema-root-type-generator.service.d.ts +1 -0
- package/dist/types/graphql/schema-root-type-generator.service.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/schema-utils/entry-reference-util.d.ts +1 -0
- package/dist/types/graphql/schema-utils/entry-reference-util.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/schema-utils/entry-type-util.d.ts +1 -0
- package/dist/types/graphql/schema-utils/entry-type-util.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/schema-utils/union-type-util.d.ts +1 -0
- package/dist/types/graphql/schema-utils/union-type-util.d.ts.map +1 -0
- package/dist/{graphql → types/graphql}/schema-validator.d.ts +1 -0
- package/dist/types/graphql/schema-validator.d.ts.map +1 -0
- package/dist/{index.d.ts → types/index.d.ts} +1 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/{persistence → types/persistence}/persistence.service.d.ts +1 -0
- package/dist/types/persistence/persistence.service.d.ts.map +1 -0
- package/package.json +29 -17
- package/src/app/api.service.ts +13 -7
- package/src/container.ts +12 -12
- package/src/graphql/field-resolver/entry-reference-resolver.ts +2 -2
- package/src/graphql/field-resolver/field-default-value-resolver.ts +2 -4
- package/src/graphql/field-resolver/fieldResolver.ts +1 -2
- package/src/graphql/field-resolver/union-value-resolver.ts +1 -1
- package/src/graphql/input-type-generator.service.ts +1 -1
- package/src/graphql/queries-mutations-generator.service.ts +1 -2
- package/src/graphql/resolver-generators/mutation-create-resolver-generator.ts +4 -4
- package/src/graphql/resolver-generators/mutation-delete-resolver-generator.ts +1 -3
- package/src/graphql/resolver-generators/mutation-update-resolver-generator.ts +1 -2
- package/src/graphql/resolver-generators/object-type-field-default-value-resolver-generator.ts +4 -6
- package/src/graphql/resolver-generators/query-all-resolver-generator.ts +1 -1
- package/src/graphql/resolver-generators/query-by-id-resolver-generator.ts +1 -1
- package/src/graphql/resolver-generators/query-count-all-resolver-generator.ts +1 -1
- package/src/graphql/resolver-generators/query-type-by-id-resolver-generator.ts +1 -1
- package/src/graphql/schema-analyzer.service.ts +2 -1
- package/src/graphql/schema-generator.service.ts +1 -4
- package/src/graphql/schema-utils/entry-reference-util.ts +1 -1
- package/src/graphql/schema-validator.ts +1 -3
- package/src/persistence/persistence.service.ts +1 -1
- package/dist/app/api.service.js.map +0 -1
- package/dist/container.js.map +0 -1
- package/dist/graphql/apollo-config-factory.service.js +0 -20
- package/dist/graphql/apollo-config-factory.service.js.map +0 -1
- package/dist/graphql/field-resolver/entry-reference-resolver.js.map +0 -1
- package/dist/graphql/field-resolver/field-default-value-resolver.js.map +0 -1
- package/dist/graphql/field-resolver/fieldResolver.js.map +0 -1
- package/dist/graphql/field-resolver/union-value-resolver.js.map +0 -1
- package/dist/graphql/input-type-generator.service.js.map +0 -1
- package/dist/graphql/queries-mutations-generator.service.js.map +0 -1
- package/dist/graphql/resolver-generators/mutation-create-resolver-generator.js.map +0 -1
- package/dist/graphql/resolver-generators/mutation-delete-resolver-generator.js.map +0 -1
- package/dist/graphql/resolver-generators/mutation-update-resolver-generator.js.map +0 -1
- package/dist/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js.map +0 -1
- package/dist/graphql/resolver-generators/query-all-resolver-generator.js +0 -18
- package/dist/graphql/resolver-generators/query-all-resolver-generator.js.map +0 -1
- package/dist/graphql/resolver-generators/query-by-id-resolver-generator.js +0 -16
- package/dist/graphql/resolver-generators/query-by-id-resolver-generator.js.map +0 -1
- package/dist/graphql/resolver-generators/query-count-all-resolver-generator.js.map +0 -1
- package/dist/graphql/resolver-generators/query-type-by-id-resolver-generator.js +0 -15
- package/dist/graphql/resolver-generators/query-type-by-id-resolver-generator.js.map +0 -1
- package/dist/graphql/resolver-generators/union-type-resolver-generator.js.map +0 -1
- package/dist/graphql/schema-analyzer.service.js.map +0 -1
- package/dist/graphql/schema-generator.service.js.map +0 -1
- package/dist/graphql/schema-root-type-generator.service.js.map +0 -1
- package/dist/graphql/schema-utils/entry-reference-util.js.map +0 -1
- package/dist/graphql/schema-utils/entry-type-util.js.map +0 -1
- package/dist/graphql/schema-utils/union-type-util.js.map +0 -1
- package/dist/graphql/schema-validator.js.map +0 -1
- package/dist/index.js +0 -11
- package/dist/index.js.map +0 -1
- package/dist/persistence/persistence.service.js.map +0 -1
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- /package/dist/{graphql → cjs/graphql}/field-resolver/field-default-value-resolver.js +0 -0
- /package/dist/{graphql → cjs/graphql}/field-resolver/fieldResolver.js +0 -0
- /package/dist/{graphql → cjs/graphql}/queries-mutations-generator.service.js +0 -0
- /package/dist/{graphql → cjs/graphql}/resolver-generators/object-type-field-default-value-resolver-generator.js +0 -0
- /package/dist/{graphql → cjs/graphql}/schema-analyzer.service.js +0 -0
- /package/dist/{graphql → cjs/graphql}/schema-root-type-generator.service.js +0 -0
- /package/dist/{graphql → cjs/graphql}/schema-utils/entry-type-util.js +0 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { makeExecutableSchema } from '@graphql-tools/schema';
|
|
2
|
+
import { ApolloServerPluginUsageReportingDisabled } from '@apollo/server/plugin/disabled';
|
|
3
|
+
export class ApolloConfigFactoryService {
|
|
4
|
+
schemaGenerator;
|
|
5
|
+
constructor(schemaGenerator) {
|
|
6
|
+
this.schemaGenerator = schemaGenerator;
|
|
7
|
+
}
|
|
8
|
+
async createGqlOptions(context) {
|
|
9
|
+
const schemaDefinition = await this.schemaGenerator.generateSchema(context);
|
|
10
|
+
const schema = makeExecutableSchema(schemaDefinition);
|
|
11
|
+
return {
|
|
12
|
+
schema: schema,
|
|
13
|
+
plugins: [ApolloServerPluginUsageReportingDisabled()],
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=apollo-config-factory.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apollo-config-factory.service.js","sourceRoot":"","sources":["../../../src/graphql/apollo-config-factory.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAI5D,OAAO,EAAE,wCAAwC,EAAE,MAAM,gCAAgC,CAAA;AAEzF,MAAM,OAAO,0BAA0B;IACR;IAA7B,YAA6B,eAAuC;QAAvC,oBAAe,GAAf,eAAe,CAAwB;IAAG,CAAC;IAExE,KAAK,CAAC,gBAAgB,CACpB,OAAsB;QAEtB,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAC3E,MAAM,MAAM,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAA;QAErD,OAAO;YACL,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,CAAC,wCAAwC,EAAE,CAAC;SAChB,CAAA;IACzC,CAAC;CACF"}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class EntryReferenceResolver {
|
|
1
|
+
export class EntryReferenceResolver {
|
|
2
|
+
persistence;
|
|
3
|
+
resolve;
|
|
5
4
|
constructor(persistence) {
|
|
6
5
|
this.persistence = persistence;
|
|
7
6
|
this.resolve = (fieldValue, args, context, info) => this.resolveFieldValue(fieldValue, args, context, info, info.returnType);
|
|
8
7
|
}
|
|
9
8
|
async resolveFieldValue(fieldValue, args, context, info, currentType) {
|
|
10
9
|
const entry = await this.persistence.findById(context.gitAdapter, context.getCurrentRef(), fieldValue.id);
|
|
11
|
-
return
|
|
10
|
+
return { ...entry.data, id: entry.id };
|
|
12
11
|
}
|
|
13
12
|
}
|
|
14
|
-
exports.EntryReferenceResolver = EntryReferenceResolver;
|
|
15
13
|
//# sourceMappingURL=entry-reference-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry-reference-resolver.js","sourceRoot":"","sources":["../../../../src/graphql/field-resolver/entry-reference-resolver.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,sBAAsB;IAQJ;IAP7B,OAAO,CAKN;IAED,YAA6B,WAA+B;QAA/B,gBAAW,GAAX,WAAW,CAAoB;QAC1D,IAAI,CAAC,OAAO,GAAG,CACb,UAAU,EACV,IAAS,EACT,OAA6B,EAC7B,IAAI,EACwD,EAAE,CAC9D,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IAC5E,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC7B,UAAe,EACf,IAAS,EACT,OAA6B,EAC7B,IAAwB,EACxB,WAA8B;QAE9B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAC3C,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,UAAU,CAAC,EAAE,CACd,CAAA;QAED,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAA;IACxC,CAAC;CACF"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { isListType, isNonNullType, isObjectType, isUnionType, } from 'graphql';
|
|
2
|
+
export class FieldDefaultValueResolver {
|
|
3
|
+
entryTypeUtil;
|
|
4
|
+
unionValueResolver;
|
|
5
|
+
entryReferenceResolver;
|
|
6
|
+
resolve;
|
|
7
|
+
constructor(entryTypeUtil, unionValueResolver, entryReferenceResolver) {
|
|
8
|
+
this.entryTypeUtil = entryTypeUtil;
|
|
9
|
+
this.unionValueResolver = unionValueResolver;
|
|
10
|
+
this.entryReferenceResolver = entryReferenceResolver;
|
|
11
|
+
this.resolve = (fieldValue, args, context, info) => this.resolveFieldValue(fieldValue, args, context, info, info.returnType, false);
|
|
12
|
+
}
|
|
13
|
+
resolveFieldValue(fieldValue, args, context, info, currentType, hasNonNullParent) {
|
|
14
|
+
if (isNonNullType(currentType)) {
|
|
15
|
+
return this.resolveFieldValue(fieldValue, args, {
|
|
16
|
+
gitAdapter: context.gitAdapter,
|
|
17
|
+
getCurrentRef: context.getCurrentRef,
|
|
18
|
+
}, info, currentType.ofType, true);
|
|
19
|
+
}
|
|
20
|
+
else if (isListType(currentType)) {
|
|
21
|
+
if (fieldValue === undefined || fieldValue === null) {
|
|
22
|
+
if (hasNonNullParent) {
|
|
23
|
+
return new Promise((resolve) => resolve([]));
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
return new Promise((resolve) => resolve(null));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (!Array.isArray(fieldValue)) {
|
|
30
|
+
throw new Error(`Expected array while resolving value for field "${info.fieldName}".`);
|
|
31
|
+
}
|
|
32
|
+
const resultPromises = [];
|
|
33
|
+
for (const item of fieldValue) {
|
|
34
|
+
const resultPromise = this.resolveFieldValue(item, args, {
|
|
35
|
+
gitAdapter: context.gitAdapter,
|
|
36
|
+
getCurrentRef: context.getCurrentRef,
|
|
37
|
+
}, info, currentType.ofType, hasNonNullParent);
|
|
38
|
+
resultPromises.push(resultPromise);
|
|
39
|
+
}
|
|
40
|
+
return Promise.all(resultPromises);
|
|
41
|
+
}
|
|
42
|
+
else if (isUnionType(currentType)) {
|
|
43
|
+
if (fieldValue === undefined || fieldValue === null) {
|
|
44
|
+
if (hasNonNullParent) {
|
|
45
|
+
throw new Error(`Cannot generate a default value for NonNull field "${info.parentType.name}.${info.fieldName}" because it is a union field of type "${info.returnType.ofType.name}".`);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
return new Promise((resolve) => resolve(null));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (this.entryTypeUtil.buildsOnTypeWithEntryDirective(currentType)) {
|
|
52
|
+
return this.entryReferenceResolver.resolve(fieldValue, args, context, info);
|
|
53
|
+
}
|
|
54
|
+
return this.unionValueResolver.resolve(fieldValue, args, context, info);
|
|
55
|
+
}
|
|
56
|
+
else if (isObjectType(currentType)) {
|
|
57
|
+
if (fieldValue === undefined || fieldValue === null) {
|
|
58
|
+
if (hasNonNullParent) {
|
|
59
|
+
throw new Error(`Cannot generate a default value for NonNull field "${info.fieldName}" of type "${info.parentType.name}".`);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
return new Promise((resolve) => resolve(null));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (this.entryTypeUtil.hasEntryDirective(currentType)) {
|
|
66
|
+
return this.entryReferenceResolver.resolve(fieldValue, args, context, info);
|
|
67
|
+
}
|
|
68
|
+
return fieldValue;
|
|
69
|
+
}
|
|
70
|
+
return fieldValue;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=field-default-value-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-default-value-resolver.js","sourceRoot":"","sources":["../../../../src/graphql/field-resolver/field-default-value-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldResolver.js","sourceRoot":"","sources":["../../../../src/graphql/field-resolver/fieldResolver.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export class UnionValueResolver {
|
|
2
|
+
unionTypeUtil;
|
|
3
|
+
resolve;
|
|
4
|
+
constructor(unionTypeUtil) {
|
|
5
|
+
this.unionTypeUtil = unionTypeUtil;
|
|
6
|
+
this.resolve = (fieldValue, args, context, info) => this.resolveFieldValue(fieldValue);
|
|
7
|
+
}
|
|
8
|
+
resolveFieldValue(fieldValue) {
|
|
9
|
+
const typeName = this.unionTypeUtil.getUnionTypeNameFromFieldValue(fieldValue);
|
|
10
|
+
const unionValue = this.unionTypeUtil.getUnionValue(fieldValue);
|
|
11
|
+
// We replace the helper type name field that holds our field's actual data
|
|
12
|
+
// with this actual data and add a `__typename` field, so that our output data
|
|
13
|
+
// corresponds to the output schema provided by the user (i.e. there is
|
|
14
|
+
// no additional nesting level there).
|
|
15
|
+
const res = {
|
|
16
|
+
...unionValue,
|
|
17
|
+
__typename: typeName,
|
|
18
|
+
};
|
|
19
|
+
return new Promise((resolve) => resolve(res));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=union-value-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"union-value-resolver.js","sourceRoot":"","sources":["../../../../src/graphql/field-resolver/union-value-resolver.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,kBAAkB;IAQA;IAP7B,OAAO,CAKN;IAED,YAA6B,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QACvD,IAAI,CAAC,OAAO,GAAG,CACb,UAAU,EACV,IAAI,EACJ,OAAO,EACP,IAAI,EACwD,EAAE,CAC9D,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAA;IACtC,CAAC;IAEO,iBAAiB,CACvB,UAAe;QAEf,MAAM,QAAQ,GACZ,IAAI,CAAC,aAAa,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAA;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;QAE/D,2EAA2E;QAC3E,8EAA8E;QAC9E,uEAAuE;QACvE,sCAAsC;QACtC,MAAM,GAAG,GAAc;YACrB,GAAG,UAAU;YACb,UAAU,EAAE,QAAQ;SACrB,CAAA;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/C,CAAC;CACF"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { isInterfaceType, isListType, isNonNullType, isObjectType, isScalarType, isUnionType, } from 'graphql';
|
|
2
|
+
export class InputTypeGeneratorService {
|
|
3
|
+
entryTypeUtil;
|
|
4
|
+
constructor(entryTypeUtil) {
|
|
5
|
+
this.entryTypeUtil = entryTypeUtil;
|
|
6
|
+
}
|
|
7
|
+
generateFieldInputTypeString(type) {
|
|
8
|
+
if (isListType(type)) {
|
|
9
|
+
return `[${this.generateFieldInputTypeString(type.ofType)}]`;
|
|
10
|
+
}
|
|
11
|
+
else if (isNonNullType(type)) {
|
|
12
|
+
return `${this.generateFieldInputTypeString(type.ofType)}!`;
|
|
13
|
+
}
|
|
14
|
+
else if (isObjectType(type)) {
|
|
15
|
+
if (this.entryTypeUtil.hasEntryDirective(type)) {
|
|
16
|
+
return `${type.name}IdInput`;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
return `${type.name}Input`;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
else if (isInterfaceType(type)) {
|
|
23
|
+
// TODO
|
|
24
|
+
return '';
|
|
25
|
+
}
|
|
26
|
+
else if (isUnionType(type)) {
|
|
27
|
+
if (this.entryTypeUtil.buildsOnTypeWithEntryDirective(type)) {
|
|
28
|
+
return `${type.name}IdInput`;
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
return `${type.name}Input`;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
return type.name;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
generateIdInputTypeStrings(schemaAnalyzerResult) {
|
|
39
|
+
let typesWithIdField = [];
|
|
40
|
+
typesWithIdField = typesWithIdField.concat(schemaAnalyzerResult.entryDirectiveTypes);
|
|
41
|
+
typesWithIdField = typesWithIdField.concat(schemaAnalyzerResult.interfaceTypes);
|
|
42
|
+
typesWithIdField = typesWithIdField.concat(schemaAnalyzerResult.unionTypes);
|
|
43
|
+
return typesWithIdField.map((type) => {
|
|
44
|
+
return `input ${type.name}IdInput {\n` + ' id: ID!\n' + '}\n';
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
generateObjectInputTypeStrings(objectTypes) {
|
|
48
|
+
return objectTypes.map((objectType) => {
|
|
49
|
+
const name = objectType.name;
|
|
50
|
+
const inputTypeName = `${name}Input`;
|
|
51
|
+
let inputType = `input ${inputTypeName} {\n`;
|
|
52
|
+
let inputTypeFieldStrings = '';
|
|
53
|
+
for (const fieldsKey in objectType.getFields()) {
|
|
54
|
+
const field = objectType.getFields()[fieldsKey];
|
|
55
|
+
if ((isNonNullType(field.type) &&
|
|
56
|
+
isScalarType(field.type.ofType) &&
|
|
57
|
+
field.type.ofType.name === 'ID') ||
|
|
58
|
+
(isScalarType(field.type) && field.type.name === 'ID')) {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
const inputTypeString = this.generateFieldInputTypeString(field.type);
|
|
62
|
+
inputTypeFieldStrings += ` ${field.name}: ${inputTypeString}\n`;
|
|
63
|
+
}
|
|
64
|
+
if (inputTypeFieldStrings.length > 0) {
|
|
65
|
+
inputType += `${inputTypeFieldStrings}`;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
// generate a dummy field as empty input types are not permitted
|
|
69
|
+
inputType += ' _: Boolean\n';
|
|
70
|
+
}
|
|
71
|
+
inputType += '}\n';
|
|
72
|
+
return inputType;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
generateUnionInputTypeStrings(unionTypes) {
|
|
76
|
+
const typeStrings = unionTypes.map((unionType) => {
|
|
77
|
+
if (this.entryTypeUtil.buildsOnTypeWithEntryDirective(unionType)) {
|
|
78
|
+
return '';
|
|
79
|
+
}
|
|
80
|
+
// see https://github.com/graphql/graphql-spec/pull/825
|
|
81
|
+
let unionInputType = `input ${unionType.name}Input @oneOf {\n`;
|
|
82
|
+
for (const innerType of unionType.getTypes()) {
|
|
83
|
+
unionInputType += ` ${innerType.name}: ${innerType.name}Input\n`;
|
|
84
|
+
}
|
|
85
|
+
unionInputType += '}\n';
|
|
86
|
+
return unionInputType;
|
|
87
|
+
});
|
|
88
|
+
if (typeStrings.join('').length > 0) {
|
|
89
|
+
typeStrings.push('directive @oneOf on INPUT_OBJECT\n');
|
|
90
|
+
}
|
|
91
|
+
return typeStrings;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=input-type-generator.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-type-generator.service.js","sourceRoot":"","sources":["../../../src/graphql/input-type-generator.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
export class QueriesMutationsGeneratorService {
|
|
2
|
+
queryAllResolverGenerator;
|
|
3
|
+
queryByIdResolverGenerator;
|
|
4
|
+
queryCountAllResolverGenerator;
|
|
5
|
+
queryTypeByIdResolverGenerator;
|
|
6
|
+
mutationCreateResolverGenerator;
|
|
7
|
+
mutationUpdateResolverGenerator;
|
|
8
|
+
mutationDeleteResolverGenerator;
|
|
9
|
+
constructor(queryAllResolverGenerator, queryByIdResolverGenerator, queryCountAllResolverGenerator, queryTypeByIdResolverGenerator, mutationCreateResolverGenerator, mutationUpdateResolverGenerator, mutationDeleteResolverGenerator) {
|
|
10
|
+
this.queryAllResolverGenerator = queryAllResolverGenerator;
|
|
11
|
+
this.queryByIdResolverGenerator = queryByIdResolverGenerator;
|
|
12
|
+
this.queryCountAllResolverGenerator = queryCountAllResolverGenerator;
|
|
13
|
+
this.queryTypeByIdResolverGenerator = queryTypeByIdResolverGenerator;
|
|
14
|
+
this.mutationCreateResolverGenerator = mutationCreateResolverGenerator;
|
|
15
|
+
this.mutationUpdateResolverGenerator = mutationUpdateResolverGenerator;
|
|
16
|
+
this.mutationDeleteResolverGenerator = mutationDeleteResolverGenerator;
|
|
17
|
+
}
|
|
18
|
+
generateFromAnalyzedSchema(entryDirectiveTypes) {
|
|
19
|
+
return entryDirectiveTypes.map((objectType) => {
|
|
20
|
+
const typeName = objectType.name;
|
|
21
|
+
const queryAllName = `all${typeName}s`;
|
|
22
|
+
const queryAllString = `${queryAllName}: [${objectType.name}!]`;
|
|
23
|
+
const queryAllResolver = this.queryAllResolverGenerator.createResolver(typeName);
|
|
24
|
+
const queryAllMetaName = `_${queryAllName}Meta`;
|
|
25
|
+
const queryAllMetaString = `${queryAllMetaName}: ListMetadata`;
|
|
26
|
+
const queryAllMetaResolver = this.queryCountAllResolverGenerator.createResolver(typeName);
|
|
27
|
+
const queryByIdName = typeName;
|
|
28
|
+
const queryByIdString = `${queryByIdName}(id: ID!): ${objectType.name}`;
|
|
29
|
+
const queryByIdResolver = this.queryByIdResolverGenerator.createResolver(typeName);
|
|
30
|
+
const inputTypeName = `${typeName}Input`;
|
|
31
|
+
const createMutationName = `create${typeName}`;
|
|
32
|
+
const createMutationString = `${createMutationName}(id: ID!, data: ${inputTypeName}!, commitMessage: String): ${typeName}`;
|
|
33
|
+
const createMutationResolver = this.mutationCreateResolverGenerator.createResolver(typeName);
|
|
34
|
+
const updateMutationName = `update${typeName}`;
|
|
35
|
+
const updateMutationString = `${updateMutationName}(id: ID!, data: ${inputTypeName}!, commitMessage: String): ${typeName}`;
|
|
36
|
+
const updateMutationResolver = this.mutationUpdateResolverGenerator.createResolver(typeName);
|
|
37
|
+
const deleteMutationName = `delete${typeName}`;
|
|
38
|
+
const deleteMutationString = `${deleteMutationName}(id: ID!, commitMessage: String): ID`;
|
|
39
|
+
const deleteMutationResolver = this.mutationDeleteResolverGenerator.createResolver(typeName);
|
|
40
|
+
return {
|
|
41
|
+
queryAll: {
|
|
42
|
+
name: queryAllName,
|
|
43
|
+
schemaString: queryAllString,
|
|
44
|
+
resolver: queryAllResolver,
|
|
45
|
+
},
|
|
46
|
+
queryAllMeta: {
|
|
47
|
+
name: queryAllMetaName,
|
|
48
|
+
schemaString: queryAllMetaString,
|
|
49
|
+
resolver: queryAllMetaResolver,
|
|
50
|
+
},
|
|
51
|
+
queryById: {
|
|
52
|
+
name: queryByIdName,
|
|
53
|
+
schemaString: queryByIdString,
|
|
54
|
+
resolver: queryByIdResolver,
|
|
55
|
+
},
|
|
56
|
+
createMutation: {
|
|
57
|
+
name: createMutationName,
|
|
58
|
+
schemaString: createMutationString,
|
|
59
|
+
resolver: createMutationResolver,
|
|
60
|
+
},
|
|
61
|
+
updateMutation: {
|
|
62
|
+
name: updateMutationName,
|
|
63
|
+
schemaString: updateMutationString,
|
|
64
|
+
resolver: updateMutationResolver,
|
|
65
|
+
},
|
|
66
|
+
deleteMutation: {
|
|
67
|
+
name: deleteMutationName,
|
|
68
|
+
schemaString: deleteMutationString,
|
|
69
|
+
resolver: deleteMutationResolver,
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
generateTypeNameQuery() {
|
|
75
|
+
const entryTypeQueryName = '_typeName';
|
|
76
|
+
const entryTypeQueryString = `${entryTypeQueryName}(id: ID!): String!`;
|
|
77
|
+
const entryTypeQueryResolver = this.queryTypeByIdResolverGenerator.createResolver();
|
|
78
|
+
return {
|
|
79
|
+
name: entryTypeQueryName,
|
|
80
|
+
schemaString: entryTypeQueryString,
|
|
81
|
+
resolver: entryTypeQueryResolver,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=queries-mutations-generator.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries-mutations-generator.service.js","sourceRoot":"","sources":["../../../src/graphql/queries-mutations-generator.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { GraphQLError, isObjectType } from 'graphql';
|
|
2
|
+
import { ENTRY_ID_INVALID_CHARACTERS, } from '@commitspark/git-adapter';
|
|
3
|
+
export class MutationCreateResolverGenerator {
|
|
4
|
+
persistence;
|
|
5
|
+
entryReferenceUtil;
|
|
6
|
+
constructor(persistence, entryReferenceUtil) {
|
|
7
|
+
this.persistence = persistence;
|
|
8
|
+
this.entryReferenceUtil = entryReferenceUtil;
|
|
9
|
+
}
|
|
10
|
+
createResolver(typeName) {
|
|
11
|
+
return async (source, args, context, info) => {
|
|
12
|
+
if (!isObjectType(info.returnType)) {
|
|
13
|
+
throw new Error('Expected to create an ObjectType');
|
|
14
|
+
}
|
|
15
|
+
const idValidationResult = args.id.match(ENTRY_ID_INVALID_CHARACTERS);
|
|
16
|
+
if (idValidationResult) {
|
|
17
|
+
throw new GraphQLError(`"id" contains invalid characters "${idValidationResult.join(', ')}"`, {
|
|
18
|
+
extensions: {
|
|
19
|
+
code: 'BAD_USER_INPUT',
|
|
20
|
+
argumentName: 'id',
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
let existingEntry;
|
|
25
|
+
try {
|
|
26
|
+
existingEntry = await this.persistence.findById(context.gitAdapter, context.getCurrentRef(), args.id);
|
|
27
|
+
}
|
|
28
|
+
catch (_) {
|
|
29
|
+
/* empty */
|
|
30
|
+
}
|
|
31
|
+
if (existingEntry) {
|
|
32
|
+
throw new GraphQLError(`An entry with id "${args.id}" already exists`, {
|
|
33
|
+
extensions: {
|
|
34
|
+
code: 'BAD_USER_INPUT',
|
|
35
|
+
argumentName: 'id',
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
const referencedEntryIds = await this.entryReferenceUtil.getReferencedEntryIds(info.returnType, context, null, info.returnType, args.data);
|
|
40
|
+
const referencedEntryUpdates = [];
|
|
41
|
+
for (const referencedEntryId of referencedEntryIds) {
|
|
42
|
+
const referencedEntry = await this.persistence.findById(context.gitAdapter, context.getCurrentRef(), referencedEntryId);
|
|
43
|
+
const newReferencedEntryIds = [
|
|
44
|
+
...(referencedEntry.metadata.referencedBy ?? []),
|
|
45
|
+
args.id,
|
|
46
|
+
].sort();
|
|
47
|
+
const newReferencedEntryDraft = {
|
|
48
|
+
...referencedEntry,
|
|
49
|
+
metadata: {
|
|
50
|
+
...referencedEntry.metadata,
|
|
51
|
+
referencedBy: newReferencedEntryIds,
|
|
52
|
+
},
|
|
53
|
+
deletion: false,
|
|
54
|
+
};
|
|
55
|
+
referencedEntryUpdates.push(newReferencedEntryDraft);
|
|
56
|
+
}
|
|
57
|
+
const newEntryDraft = {
|
|
58
|
+
id: args.id,
|
|
59
|
+
metadata: {
|
|
60
|
+
type: typeName,
|
|
61
|
+
referencedBy: [],
|
|
62
|
+
},
|
|
63
|
+
data: args.data,
|
|
64
|
+
deletion: false,
|
|
65
|
+
};
|
|
66
|
+
const commit = await context.gitAdapter.createCommit({
|
|
67
|
+
ref: context.branch,
|
|
68
|
+
parentSha: context.getCurrentRef(),
|
|
69
|
+
entries: [newEntryDraft, ...referencedEntryUpdates],
|
|
70
|
+
message: args.commitMessage,
|
|
71
|
+
});
|
|
72
|
+
context.setCurrentRef(commit.ref);
|
|
73
|
+
const newEntry = await this.persistence.findByTypeId(context.gitAdapter, context.getCurrentRef(), typeName, args.id);
|
|
74
|
+
return { ...newEntry.data, id: newEntry.id };
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=mutation-create-resolver-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutation-create-resolver-generator.js","sourceRoot":"","sources":["../../../../src/graphql/resolver-generators/mutation-create-resolver-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { GraphQLError, isObjectType } from 'graphql';
|
|
2
|
+
export class MutationDeleteResolverGenerator {
|
|
3
|
+
persistence;
|
|
4
|
+
entryReferenceUtil;
|
|
5
|
+
constructor(persistence, entryReferenceUtil) {
|
|
6
|
+
this.persistence = persistence;
|
|
7
|
+
this.entryReferenceUtil = entryReferenceUtil;
|
|
8
|
+
}
|
|
9
|
+
createResolver(typeName) {
|
|
10
|
+
return async (source, args, context, info) => {
|
|
11
|
+
const entry = await this.persistence.findByTypeId(context.gitAdapter, context.getCurrentRef(), typeName, args.id);
|
|
12
|
+
if (entry.metadata.referencedBy &&
|
|
13
|
+
entry.metadata.referencedBy.length > 0) {
|
|
14
|
+
const otherIds = entry.metadata.referencedBy
|
|
15
|
+
.map((referenceId) => `"${referenceId}"`)
|
|
16
|
+
.join(', ');
|
|
17
|
+
throw new GraphQLError(`Entry with id "${args.id}" is referenced by other entries: [${otherIds}]`, {
|
|
18
|
+
extensions: {
|
|
19
|
+
code: 'IN_USE',
|
|
20
|
+
argumentName: 'id',
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
const entryType = info.schema.getType(typeName);
|
|
25
|
+
if (!isObjectType(entryType)) {
|
|
26
|
+
throw new Error('Expected to delete an ObjectType');
|
|
27
|
+
}
|
|
28
|
+
const referencedEntryIds = await this.entryReferenceUtil.getReferencedEntryIds(entryType, context, null, entryType, entry.data);
|
|
29
|
+
const referencedEntryUpdates = [];
|
|
30
|
+
for (const referencedEntryId of referencedEntryIds) {
|
|
31
|
+
const noLongerReferencedEntry = await this.persistence.findById(context.gitAdapter, context.getCurrentRef(), referencedEntryId);
|
|
32
|
+
referencedEntryUpdates.push({
|
|
33
|
+
...noLongerReferencedEntry,
|
|
34
|
+
metadata: {
|
|
35
|
+
...noLongerReferencedEntry.metadata,
|
|
36
|
+
referencedBy: noLongerReferencedEntry.metadata.referencedBy?.filter((entryId) => entryId !== args.id),
|
|
37
|
+
},
|
|
38
|
+
deletion: false,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
const commit = await context.gitAdapter.createCommit({
|
|
42
|
+
ref: context.branch,
|
|
43
|
+
parentSha: context.getCurrentRef(),
|
|
44
|
+
entries: [
|
|
45
|
+
{
|
|
46
|
+
...entry,
|
|
47
|
+
deletion: true,
|
|
48
|
+
},
|
|
49
|
+
...referencedEntryUpdates,
|
|
50
|
+
],
|
|
51
|
+
message: args.commitMessage,
|
|
52
|
+
});
|
|
53
|
+
context.setCurrentRef(commit.ref);
|
|
54
|
+
return args.id;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=mutation-delete-resolver-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutation-delete-resolver-generator.js","sourceRoot":"","sources":["../../../../src/graphql/resolver-generators/mutation-delete-resolver-generator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAwB,YAAY,EAAE,MAAM,SAAS,CAAA;AAE1E,MAAM,OAAO,+BAA+B;IAEvB;IACA;IAFnB,YACmB,WAA+B,EAC/B,kBAAsC;QADtC,gBAAW,GAAX,WAAW,CAAoB;QAC/B,uBAAkB,GAAlB,kBAAkB,CAAoB;IACtD,CAAC;IAEG,cAAc,CACnB,QAAgB;QAEhB,OAAO,KAAK,EACV,MAAM,EACN,IAAI,EACJ,OAAsB,EACtB,IAAI,EACgB,EAAE;YACtB,MAAM,KAAK,GAAU,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CACtD,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,QAAQ,EACR,IAAI,CAAC,EAAE,CACR,CAAA;YAED,IACE,KAAK,CAAC,QAAQ,CAAC,YAAY;gBAC3B,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EACtC,CAAC;gBACD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY;qBACzC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,WAAW,GAAG,CAAC;qBACxC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACb,MAAM,IAAI,YAAY,CACpB,kBAAkB,IAAI,CAAC,EAAE,sCAAsC,QAAQ,GAAG,EAC1E;oBACE,UAAU,EAAE;wBACV,IAAI,EAAE,QAAQ;wBACd,YAAY,EAAE,IAAI;qBACnB;iBACF,CACF,CAAA;YACH,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YAC/C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;YACrD,CAAC;YAED,MAAM,kBAAkB,GACtB,MAAM,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CACjD,SAAS,EACT,OAAO,EACP,IAAI,EACJ,SAAS,EACT,KAAK,CAAC,IAAI,CACX,CAAA;YACH,MAAM,sBAAsB,GAAiB,EAAE,CAAA;YAC/C,KAAK,MAAM,iBAAiB,IAAI,kBAAkB,EAAE,CAAC;gBACnD,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAC7D,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,iBAAiB,CAClB,CAAA;gBACD,sBAAsB,CAAC,IAAI,CAAC;oBAC1B,GAAG,uBAAuB;oBAC1B,QAAQ,EAAE;wBACR,GAAG,uBAAuB,CAAC,QAAQ;wBACnC,YAAY,EAAE,uBAAuB,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CACjE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,CACjC;qBACF;oBACD,QAAQ,EAAE,KAAK;iBAChB,CAAC,CAAA;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;gBACnD,GAAG,EAAE,OAAO,CAAC,MAAM;gBACnB,SAAS,EAAE,OAAO,CAAC,aAAa,EAAE;gBAClC,OAAO,EAAE;oBACP;wBACE,GAAG,KAAK;wBACR,QAAQ,EAAE,IAAI;qBACf;oBACD,GAAG,sBAAsB;iBAC1B;gBACD,OAAO,EAAE,IAAI,CAAC,aAAa;aAC5B,CAAC,CAAA;YACF,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAEjC,OAAO,IAAI,CAAC,EAAE,CAAA;QAChB,CAAC,CAAA;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { isObjectType } from 'graphql';
|
|
2
|
+
export class MutationUpdateResolverGenerator {
|
|
3
|
+
persistence;
|
|
4
|
+
entryReferenceUtil;
|
|
5
|
+
constructor(persistence, entryReferenceUtil) {
|
|
6
|
+
this.persistence = persistence;
|
|
7
|
+
this.entryReferenceUtil = entryReferenceUtil;
|
|
8
|
+
}
|
|
9
|
+
createResolver(typeName) {
|
|
10
|
+
return async (source, args, context, info) => {
|
|
11
|
+
if (!isObjectType(info.returnType)) {
|
|
12
|
+
throw new Error('Expected to update an ObjectType');
|
|
13
|
+
}
|
|
14
|
+
const existingEntry = await this.persistence.findByTypeId(context.gitAdapter, context.getCurrentRef(), typeName, args.id);
|
|
15
|
+
const existingReferencedEntryIds = await this.entryReferenceUtil.getReferencedEntryIds(info.returnType, context, null, info.returnType, existingEntry.data);
|
|
16
|
+
const mergedData = this.mergeData(existingEntry.data ?? null, args.data);
|
|
17
|
+
const updatedReferencedEntryIds = await this.entryReferenceUtil.getReferencedEntryIds(info.returnType, context, null, info.returnType, mergedData);
|
|
18
|
+
const noLongerReferencedIds = existingReferencedEntryIds.filter((entryId) => !updatedReferencedEntryIds.includes(entryId));
|
|
19
|
+
const newlyReferencedIds = updatedReferencedEntryIds.filter((entryId) => !existingReferencedEntryIds.includes(entryId));
|
|
20
|
+
const referencedEntryUpdates = [];
|
|
21
|
+
for (const noLongerReferencedEntryId of noLongerReferencedIds) {
|
|
22
|
+
const noLongerReferencedEntry = await this.persistence.findById(context.gitAdapter, context.getCurrentRef(), noLongerReferencedEntryId);
|
|
23
|
+
referencedEntryUpdates.push({
|
|
24
|
+
...noLongerReferencedEntry,
|
|
25
|
+
metadata: {
|
|
26
|
+
...noLongerReferencedEntry.metadata,
|
|
27
|
+
referencedBy: noLongerReferencedEntry.metadata.referencedBy?.filter((entryId) => entryId !== args.id),
|
|
28
|
+
},
|
|
29
|
+
deletion: false,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
for (const newlyReferencedEntryId of newlyReferencedIds) {
|
|
33
|
+
const newlyReferencedEntry = await this.persistence.findById(context.gitAdapter, context.getCurrentRef(), newlyReferencedEntryId);
|
|
34
|
+
const updatedReferenceList = newlyReferencedEntry.metadata.referencedBy ?? [];
|
|
35
|
+
updatedReferenceList.push(args.id);
|
|
36
|
+
updatedReferenceList.sort();
|
|
37
|
+
referencedEntryUpdates.push({
|
|
38
|
+
...newlyReferencedEntry,
|
|
39
|
+
metadata: {
|
|
40
|
+
...newlyReferencedEntry.metadata,
|
|
41
|
+
referencedBy: updatedReferenceList,
|
|
42
|
+
},
|
|
43
|
+
deletion: false,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
const commit = await context.gitAdapter.createCommit({
|
|
47
|
+
ref: context.branch,
|
|
48
|
+
parentSha: context.getCurrentRef(),
|
|
49
|
+
entries: [
|
|
50
|
+
{ ...existingEntry, data: mergedData, deletion: false },
|
|
51
|
+
...referencedEntryUpdates,
|
|
52
|
+
],
|
|
53
|
+
message: args.commitMessage,
|
|
54
|
+
});
|
|
55
|
+
context.setCurrentRef(commit.ref);
|
|
56
|
+
const updatedEntry = await this.persistence.findByTypeId(context.gitAdapter, context.getCurrentRef(), typeName, args.id);
|
|
57
|
+
return { ...updatedEntry.data, id: updatedEntry.id };
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
mergeData(existingEntryData, updateData) {
|
|
61
|
+
return {
|
|
62
|
+
...existingEntryData,
|
|
63
|
+
...updateData,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=mutation-update-resolver-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutation-update-resolver-generator.js","sourceRoot":"","sources":["../../../../src/graphql/resolver-generators/mutation-update-resolver-generator.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { isListType, isNonNullType, isObjectType, isUnionType, } from 'graphql';
|
|
2
|
+
export class ObjectTypeFieldDefaultValueResolverGenerator {
|
|
3
|
+
fieldDefaultValueResolver;
|
|
4
|
+
constructor(fieldDefaultValueResolver) {
|
|
5
|
+
this.fieldDefaultValueResolver = fieldDefaultValueResolver;
|
|
6
|
+
}
|
|
7
|
+
createResolver(schema) {
|
|
8
|
+
const resolvers = {};
|
|
9
|
+
for (const typeName of Object.keys(schema.getTypeMap())) {
|
|
10
|
+
const type = schema.getType(typeName);
|
|
11
|
+
if (!isObjectType(type) || type.name.startsWith('__')) {
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
const objectType = type;
|
|
15
|
+
const fieldsForCustomDefaultValueResolver = this.getFieldsForCustomDefaultValueResolver(objectType);
|
|
16
|
+
const fieldResolvers = {};
|
|
17
|
+
for (const field of fieldsForCustomDefaultValueResolver) {
|
|
18
|
+
fieldResolvers[field.name] = (obj, args, context, info) => this.fieldDefaultValueResolver.resolve(field.name in obj ? obj[field.name] : undefined, args, {
|
|
19
|
+
gitAdapter: context.gitAdapter,
|
|
20
|
+
getCurrentRef: context.getCurrentRef,
|
|
21
|
+
}, info);
|
|
22
|
+
}
|
|
23
|
+
if (Object.keys(fieldResolvers).length > 0) {
|
|
24
|
+
resolvers[typeName] = fieldResolvers;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return resolvers;
|
|
28
|
+
}
|
|
29
|
+
getFieldsForCustomDefaultValueResolver(objectType) {
|
|
30
|
+
const fields = [];
|
|
31
|
+
for (const fieldsKey in objectType.getFields()) {
|
|
32
|
+
const field = objectType.getFields()[fieldsKey];
|
|
33
|
+
if (this.requiresCustomDefaultValueResolver(field.type)) {
|
|
34
|
+
fields.push(field);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return fields;
|
|
38
|
+
}
|
|
39
|
+
requiresCustomDefaultValueResolver(type) {
|
|
40
|
+
if (isNonNullType(type)) {
|
|
41
|
+
return this.requiresCustomDefaultValueResolver(type.ofType);
|
|
42
|
+
}
|
|
43
|
+
else if (isListType(type)) {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
else if (isUnionType(type)) {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
else if (isObjectType(type)) {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=object-type-field-default-value-resolver-generator.js.map
|