@commitspark/graphql-api 1.0.0-beta.8 → 1.0.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 +12 -0
- package/dist/cjs/graphql/resolvers/field-resolvers/field-default-value-resolver.js +3 -3
- package/dist/cjs/graphql/resolvers/field-resolvers/field-default-value-resolver.js.map +1 -1
- package/dist/cjs/graphql/resolvers/object-type-field-default-value-resolver-generator.js +1 -1
- package/dist/cjs/graphql/resolvers/object-type-field-default-value-resolver-generator.js.map +1 -1
- package/dist/cjs/graphql/schema-utils/entry-reference-util.d.ts +1 -2
- package/dist/cjs/graphql/schema-utils/entry-reference-util.js +20 -22
- package/dist/cjs/graphql/schema-utils/entry-reference-util.js.map +1 -1
- package/dist/cjs/graphql/util.d.ts +2 -1
- package/dist/cjs/graphql/util.js +2 -2
- package/dist/cjs/graphql/util.js.map +1 -1
- package/dist/esm/graphql/resolvers/field-resolvers/field-default-value-resolver.js +3 -3
- package/dist/esm/graphql/resolvers/field-resolvers/field-default-value-resolver.js.map +1 -1
- package/dist/esm/graphql/resolvers/object-type-field-default-value-resolver-generator.js +2 -2
- package/dist/esm/graphql/resolvers/object-type-field-default-value-resolver-generator.js.map +1 -1
- package/dist/esm/graphql/schema-utils/entry-reference-util.js +21 -23
- package/dist/esm/graphql/schema-utils/entry-reference-util.js.map +1 -1
- package/dist/esm/graphql/util.js +1 -1
- package/dist/esm/graphql/util.js.map +1 -1
- package/dist/types/graphql/resolvers/field-resolvers/field-default-value-resolver.d.ts.map +1 -1
- package/dist/types/graphql/schema-utils/entry-reference-util.d.ts +1 -2
- package/dist/types/graphql/schema-utils/entry-reference-util.d.ts.map +1 -1
- package/dist/types/graphql/util.d.ts +2 -1
- package/dist/types/graphql/util.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/graphql/resolvers/field-resolvers/field-default-value-resolver.ts +9 -3
- package/src/graphql/resolvers/object-type-field-default-value-resolver-generator.ts +2 -2
- package/src/graphql/schema-utils/entry-reference-util.ts +40 -32
- package/src/graphql/util.ts +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,18 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.0.0] - 2026-02-27
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- Upgrade to @commitspark/git-adapter 1.0.0
|
|
13
|
+
|
|
14
|
+
## [1.0.0-beta.9] - 2026-02-26
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- Fix broken reference evaluation on mutating entries with non-null fields
|
|
19
|
+
|
|
8
20
|
## [1.0.0-beta.8] - 2026-02-26
|
|
9
21
|
|
|
10
22
|
### Fixed
|
|
@@ -14,7 +14,7 @@ const resolveFieldDefaultValue = async (fieldValue, args, context, info) => {
|
|
|
14
14
|
hasNonNullParent: true,
|
|
15
15
|
}, info);
|
|
16
16
|
}
|
|
17
|
-
|
|
17
|
+
if ((0, graphql_1.isListType)(context.currentType)) {
|
|
18
18
|
if (fieldValue === undefined || fieldValue === null) {
|
|
19
19
|
if (context.hasNonNullParent) {
|
|
20
20
|
return new Promise((resolve) => resolve([]));
|
|
@@ -40,7 +40,7 @@ const resolveFieldDefaultValue = async (fieldValue, args, context, info) => {
|
|
|
40
40
|
}
|
|
41
41
|
return Promise.all(resultPromises);
|
|
42
42
|
}
|
|
43
|
-
|
|
43
|
+
if ((0, graphql_1.isUnionType)(context.currentType)) {
|
|
44
44
|
if (fieldValue === undefined || fieldValue === null) {
|
|
45
45
|
if (context.hasNonNullParent) {
|
|
46
46
|
throw (0, errors_ts_1.createError)(`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}". Set a value in your repository data or remove the NonNull declaration in your schema.`, "BAD_REPOSITORY_DATA" /* ErrorCode.BAD_REPOSITORY_DATA */, {
|
|
@@ -57,7 +57,7 @@ const resolveFieldDefaultValue = async (fieldValue, args, context, info) => {
|
|
|
57
57
|
}
|
|
58
58
|
return (0, union_value_resolver_ts_1.resolveUnionValue)(fieldValue, args, context, info);
|
|
59
59
|
}
|
|
60
|
-
|
|
60
|
+
if ((0, graphql_1.isObjectType)(context.currentType)) {
|
|
61
61
|
if (fieldValue === undefined || fieldValue === null) {
|
|
62
62
|
if (context.hasNonNullParent) {
|
|
63
63
|
throw (0, errors_ts_1.createError)(`Cannot generate a default value for NonNull field "${info.fieldName}" of type ` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-default-value-resolver.js","sourceRoot":"","sources":["../../../../../src/graphql/resolvers/field-resolvers/field-default-value-resolver.ts"],"names":[],"mappings":";;;AACA,qCAOgB;AAChB,8EAG8C;AAC9C,+EAAqE;AACrE,uEAA6D;AAC7D,+CAAwD;AAEjD,MAAM,wBAAwB,GAAkB,KAAK,EAC1D,UAAU,EACV,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,EAAE;IACF,IAAI,IAAA,uBAAa,EAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,OAAO,IAAA,gCAAwB,EAC7B,UAAU,EACV,IAAI,EACJ;YACE,GAAG,OAAO;YACV,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM;YACvC,gBAAgB,EAAE,IAAI;SACvB,EACD,IAAI,CACL,CAAA;IACH,CAAC;
|
|
1
|
+
{"version":3,"file":"field-default-value-resolver.js","sourceRoot":"","sources":["../../../../../src/graphql/resolvers/field-resolvers/field-default-value-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,7 +47,7 @@ function createObjectTypeFieldResolvers(schema) {
|
|
|
47
47
|
if (obj) {
|
|
48
48
|
fieldSourceData = obj[field.name] ?? null;
|
|
49
49
|
if (fieldSourceData !== null &&
|
|
50
|
-
!((0, util_ts_1.
|
|
50
|
+
!((0, util_ts_1.isEntryData)(fieldSourceData) || Array.isArray(fieldSourceData))) {
|
|
51
51
|
throw (0, errors_ts_1.createError)(`Expected an object or array as data for passing to resolver of field "${field.name}" in type "${typeName}".`, "BAD_REPOSITORY_DATA" /* ErrorCode.BAD_REPOSITORY_DATA */, {
|
|
52
52
|
fieldName: field.name,
|
|
53
53
|
typeName: typeName,
|
package/dist/cjs/graphql/resolvers/object-type-field-default-value-resolver-generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-type-field-default-value-resolver-generator.js","sourceRoot":"","sources":["../../../../src/graphql/resolvers/object-type-field-default-value-resolver-generator.ts"],"names":[],"mappings":";;AA+CA,wEA2DC;AA1GD,qCASgB;AAChB,uGAA4F;AAC5F,4CAAqD;AACrD,
|
|
1
|
+
{"version":3,"file":"object-type-field-default-value-resolver-generator.js","sourceRoot":"","sources":["../../../../src/graphql/resolvers/object-type-field-default-value-resolver-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import { GraphQLNullableType, GraphQLObjectType } from 'graphql';
|
|
2
2
|
import { ApolloContext } from '../../client.ts';
|
|
3
|
-
|
|
4
|
-
export declare function getReferencedEntryIds(rootType: GraphQLObjectType, context: ApolloContext, fieldName: string | null, type: GraphQLNullableType, data: EntryData | EntryData[]): Promise<string[]>;
|
|
3
|
+
export declare function getReferencedEntryIds(rootType: GraphQLObjectType, context: ApolloContext, fieldName: string | null, type: GraphQLNullableType, data: unknown): Promise<string[]>;
|
|
@@ -30,7 +30,7 @@ async function validateReference(context, fieldName, fieldType, fieldValue) {
|
|
|
30
30
|
await validateReference(context, fieldName, fieldType.ofType, fieldValue);
|
|
31
31
|
return;
|
|
32
32
|
}
|
|
33
|
-
|
|
33
|
+
if ((0, graphql_1.isListType)(fieldType)) {
|
|
34
34
|
if (!Array.isArray(fieldValue)) {
|
|
35
35
|
throw (0, errors_ts_1.createError)(`Expected array while validation references for field "${fieldName}".`, "BAD_REPOSITORY_DATA" /* ErrorCode.BAD_REPOSITORY_DATA */, {
|
|
36
36
|
fieldName: fieldName,
|
|
@@ -42,7 +42,7 @@ async function validateReference(context, fieldName, fieldType, fieldValue) {
|
|
|
42
42
|
}
|
|
43
43
|
return;
|
|
44
44
|
}
|
|
45
|
-
|
|
45
|
+
if ((0, graphql_1.isUnionType)(fieldType) || (0, graphql_1.isObjectType)(fieldType)) {
|
|
46
46
|
if (fieldValue === null ||
|
|
47
47
|
!('id' in fieldValue) ||
|
|
48
48
|
typeof fieldValue.id !== 'string') {
|
|
@@ -71,13 +71,13 @@ async function validateReference(context, fieldName, fieldType, fieldValue) {
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
async function getReferencedEntryIds(rootType, context, fieldName, type, data) {
|
|
74
|
-
if (data === null || (0, graphql_1.isScalarType)(type)) {
|
|
74
|
+
if (data === null || data === undefined || (0, graphql_1.isScalarType)(type)) {
|
|
75
75
|
return [];
|
|
76
76
|
}
|
|
77
77
|
if ((0, graphql_1.isNonNullType)(type)) {
|
|
78
78
|
return getReferencedEntryIds(rootType, context, fieldName, type.ofType, data);
|
|
79
79
|
}
|
|
80
|
-
|
|
80
|
+
if ((0, graphql_1.isListType)(type)) {
|
|
81
81
|
if (!Array.isArray(data)) {
|
|
82
82
|
throw (0, errors_ts_1.createError)(`Expected array as data for field "${fieldName}". `, "BAD_REPOSITORY_DATA" /* ErrorCode.BAD_REPOSITORY_DATA */, {
|
|
83
83
|
fieldName: fieldName ? fieldName : undefined,
|
|
@@ -95,7 +95,14 @@ async function getReferencedEntryIds(rootType, context, fieldName, type, data) {
|
|
|
95
95
|
referencedEntryIds = [...new Set(referencedEntryIds)];
|
|
96
96
|
return referencedEntryIds;
|
|
97
97
|
}
|
|
98
|
-
|
|
98
|
+
if ((0, graphql_1.isUnionType)(type)) {
|
|
99
|
+
if (!(0, util_ts_1.isEntryData)(data)) {
|
|
100
|
+
throw (0, errors_ts_1.createError)(`Expected object as data for type "${type.name}".`, "BAD_REPOSITORY_DATA" /* ErrorCode.BAD_REPOSITORY_DATA */, {
|
|
101
|
+
typeName: type.name,
|
|
102
|
+
fieldName: fieldName ? fieldName : undefined,
|
|
103
|
+
fieldValue: data,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
99
106
|
if ((0, entry_type_util_ts_1.isUnionOfEntryTypes)(type)) {
|
|
100
107
|
const referenceId = await getValidatedReferenceId(context, fieldName, type, data);
|
|
101
108
|
return [referenceId];
|
|
@@ -115,7 +122,7 @@ async function getReferencedEntryIds(rootType, context, fieldName, type, data) {
|
|
|
115
122
|
const unionValue = (0, union_type_util_ts_1.getUnionValue)(data);
|
|
116
123
|
return getReferencedEntryIds(rootType, context, fieldName, concreteFieldUnionType, unionValue);
|
|
117
124
|
}
|
|
118
|
-
|
|
125
|
+
if ((0, graphql_1.isObjectType)(type)) {
|
|
119
126
|
if (type.name !== rootType.name && (0, entry_type_util_ts_1.hasEntryDirective)(type)) {
|
|
120
127
|
const referenceId = await getValidatedReferenceId(context, fieldName, type, data);
|
|
121
128
|
return [referenceId];
|
|
@@ -123,27 +130,15 @@ async function getReferencedEntryIds(rootType, context, fieldName, type, data) {
|
|
|
123
130
|
else {
|
|
124
131
|
let referencedEntryIds = [];
|
|
125
132
|
for (const [fieldsKey, field] of Object.entries(type.getFields())) {
|
|
126
|
-
|
|
133
|
+
// expect our object type to hold EntryData (i.e. an object)
|
|
134
|
+
if (Array.isArray(data) || !(0, util_ts_1.isEntryData)(data)) {
|
|
127
135
|
throw (0, errors_ts_1.createError)(`Expected object as data for type "${type.name}".`, "BAD_REPOSITORY_DATA" /* ErrorCode.BAD_REPOSITORY_DATA */, {
|
|
128
136
|
typeName: type.name,
|
|
129
137
|
fieldName: field.name ? field.name : undefined,
|
|
130
138
|
});
|
|
131
139
|
}
|
|
132
|
-
const fieldValue = data[fieldsKey];
|
|
133
|
-
if (fieldValue === undefined ||
|
|
134
|
-
fieldValue === null ||
|
|
135
|
-
(0, graphql_1.isScalarType)(field.type)) {
|
|
136
|
-
continue;
|
|
137
|
-
}
|
|
138
|
-
if (!(Array.isArray(fieldValue) || (0, util_ts_1.isRecord)(fieldValue))) {
|
|
139
|
-
throw (0, errors_ts_1.createError)(`Expected object or array as data for field "${field.name}" of type "${type.name}".`, "BAD_REPOSITORY_DATA" /* ErrorCode.BAD_REPOSITORY_DATA */, {
|
|
140
|
-
typeName: type.name,
|
|
141
|
-
fieldName: field.name ? field.name : undefined,
|
|
142
|
-
fieldValue: fieldValue,
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
140
|
// recursively get referenced IDs in nested data
|
|
146
|
-
const nestedResult = await getReferencedEntryIds(rootType, context, fieldsKey, field.type,
|
|
141
|
+
const nestedResult = await getReferencedEntryIds(rootType, context, fieldsKey, field.type, data[fieldsKey]);
|
|
147
142
|
referencedEntryIds = [...referencedEntryIds, ...nestedResult];
|
|
148
143
|
}
|
|
149
144
|
// deduplicate
|
|
@@ -154,7 +149,10 @@ async function getReferencedEntryIds(rootType, context, fieldName, type, data) {
|
|
|
154
149
|
return [];
|
|
155
150
|
}
|
|
156
151
|
async function getValidatedReferenceId(context, fieldName, type, data) {
|
|
157
|
-
if (data === null ||
|
|
152
|
+
if (data === null ||
|
|
153
|
+
data === undefined ||
|
|
154
|
+
!(0, util_ts_1.isEntryData)(data) ||
|
|
155
|
+
Array.isArray(data)) {
|
|
158
156
|
throw (0, errors_ts_1.createError)(`Expected object as data for field "${fieldName}" of type "${type.name}".`, "BAD_REPOSITORY_DATA" /* ErrorCode.BAD_REPOSITORY_DATA */, {
|
|
159
157
|
typeName: type.name,
|
|
160
158
|
fieldName: fieldName ? fieldName : undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-reference-util.js","sourceRoot":"","sources":["../../../../src/graphql/schema-utils/entry-reference-util.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"entry-reference-util.js","sourceRoot":"","sources":["../../../../src/graphql/schema-utils/entry-reference-util.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { EntryData } from '@commitspark/git-adapter';
|
|
2
|
+
export declare function isEntryData(obj: unknown): obj is EntryData;
|
package/dist/cjs/graphql/util.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/graphql/util.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/graphql/util.ts"],"names":[],"mappings":";;AAEA,kCAUC;AAVD,SAAgB,WAAW,CAAC,GAAY;IACtC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAA;AACvD,CAAC"}
|
|
@@ -11,7 +11,7 @@ export const resolveFieldDefaultValue = async (fieldValue, args, context, info)
|
|
|
11
11
|
hasNonNullParent: true,
|
|
12
12
|
}, info);
|
|
13
13
|
}
|
|
14
|
-
|
|
14
|
+
if (isListType(context.currentType)) {
|
|
15
15
|
if (fieldValue === undefined || fieldValue === null) {
|
|
16
16
|
if (context.hasNonNullParent) {
|
|
17
17
|
return new Promise((resolve) => resolve([]));
|
|
@@ -37,7 +37,7 @@ export const resolveFieldDefaultValue = async (fieldValue, args, context, info)
|
|
|
37
37
|
}
|
|
38
38
|
return Promise.all(resultPromises);
|
|
39
39
|
}
|
|
40
|
-
|
|
40
|
+
if (isUnionType(context.currentType)) {
|
|
41
41
|
if (fieldValue === undefined || fieldValue === null) {
|
|
42
42
|
if (context.hasNonNullParent) {
|
|
43
43
|
throw createError(`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}". Set a value in your repository data or remove the NonNull declaration in your schema.`, "BAD_REPOSITORY_DATA" /* ErrorCode.BAD_REPOSITORY_DATA */, {
|
|
@@ -54,7 +54,7 @@ export const resolveFieldDefaultValue = async (fieldValue, args, context, info)
|
|
|
54
54
|
}
|
|
55
55
|
return resolveUnionValue(fieldValue, args, context, info);
|
|
56
56
|
}
|
|
57
|
-
|
|
57
|
+
if (isObjectType(context.currentType)) {
|
|
58
58
|
if (fieldValue === undefined || fieldValue === null) {
|
|
59
59
|
if (context.hasNonNullParent) {
|
|
60
60
|
throw createError(`Cannot generate a default value for NonNull field "${info.fieldName}" of type ` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-default-value-resolver.js","sourceRoot":"","sources":["../../../../../src/graphql/resolvers/field-resolvers/field-default-value-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,UAAU,EACV,aAAa,EACb,YAAY,EACZ,WAAW,GACZ,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,8BAA8B,EAC9B,iBAAiB,GAClB,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAa,MAAM,iBAAiB,CAAA;AAExD,MAAM,CAAC,MAAM,wBAAwB,GAAkB,KAAK,EAC1D,UAAU,EACV,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,EAAE;IACF,IAAI,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,OAAO,wBAAwB,CAC7B,UAAU,EACV,IAAI,EACJ;YACE,GAAG,OAAO;YACV,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM;YACvC,gBAAgB,EAAE,IAAI;SACvB,EACD,IAAI,CACL,CAAA;IACH,CAAC;
|
|
1
|
+
{"version":3,"file":"field-default-value-resolver.js","sourceRoot":"","sources":["../../../../../src/graphql/resolvers/field-resolvers/field-default-value-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,UAAU,EACV,aAAa,EACb,YAAY,EACZ,WAAW,GACZ,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,8BAA8B,EAC9B,iBAAiB,GAClB,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAa,MAAM,iBAAiB,CAAA;AAExD,MAAM,CAAC,MAAM,wBAAwB,GAAkB,KAAK,EAC1D,UAAU,EACV,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,EAAE;IACF,IAAI,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,OAAO,wBAAwB,CAC7B,UAAU,EACV,IAAI,EACJ;YACE,GAAG,OAAO;YACV,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM;YACvC,gBAAgB,EAAE,IAAI;SACvB,EACD,IAAI,CACL,CAAA;IACH,CAAC;IAED,IAAI,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACpC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACpD,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;YAC9C,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;YAChD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,WAAW,CACf,mDAAmD,IAAI,CAAC,SAAS,IAAI,6DAErE;gBACE,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,UAAU,EAAE,UAAU;aACvB,CACF,CAAA;QACH,CAAC;QAED,MAAM,cAAc,GAAG,EAAE,CAAA;QACzB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,aAAa,GAAG,wBAAwB,CAC5C,IAAI,EACJ,IAAI,EACJ;gBACE,GAAG,OAAO;gBACV,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM;gBACvC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;aAC3C,EACD,IAAI,CACL,CAAA;YACD,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACpC,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IACpC,CAAC;IAED,IAAI,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACpD,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAC7B,MAAM,WAAW,CACf,sDACE,IAAI,CAAC,UAAU,CAAC,IAClB,IAAI,IAAI,CAAC,SAAS,0CACf,IAAI,CAAC,UAA+C,CAAC,MAAM,CAAC,IAC/D,0FAA0F,6DAE1F;oBACE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;oBAC9B,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC1B,CACF,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;YAChD,CAAC;QACH,CAAC;QAED,IAAI,8BAA8B,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YACxD,OAAO,qBAAqB,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QAC/D,CAAC;QAED,OAAO,iBAAiB,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;IAC3D,CAAC;IAED,IAAI,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACpD,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAC7B,MAAM,WAAW,CACf,sDAAsD,IAAI,CAAC,SAAS,YAAY;oBAC9E,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,+DAA+D;oBACvF,6BAA6B,6DAE/B;oBACE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;oBAC9B,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC1B,CACF,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;YAChD,CAAC;QACH,CAAC;QAED,IAAI,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,OAAO,qBAAqB,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QAC/D,CAAC;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isListType, isNonNullType, isObjectType, isUnionType, } from 'graphql';
|
|
2
2
|
import { resolveFieldDefaultValue } from "./field-resolvers/field-default-value-resolver.js";
|
|
3
3
|
import { createError } from "../errors.js";
|
|
4
|
-
import {
|
|
4
|
+
import { isEntryData } from "../util.js";
|
|
5
5
|
function requiresCustomDefaultValueResolver(type) {
|
|
6
6
|
if (isNonNullType(type)) {
|
|
7
7
|
return requiresCustomDefaultValueResolver(type.ofType);
|
|
@@ -44,7 +44,7 @@ export function createObjectTypeFieldResolvers(schema) {
|
|
|
44
44
|
if (obj) {
|
|
45
45
|
fieldSourceData = obj[field.name] ?? null;
|
|
46
46
|
if (fieldSourceData !== null &&
|
|
47
|
-
!(
|
|
47
|
+
!(isEntryData(fieldSourceData) || Array.isArray(fieldSourceData))) {
|
|
48
48
|
throw createError(`Expected an object or array as data for passing to resolver of field "${field.name}" in type "${typeName}".`, "BAD_REPOSITORY_DATA" /* ErrorCode.BAD_REPOSITORY_DATA */, {
|
|
49
49
|
fieldName: field.name,
|
|
50
50
|
typeName: typeName,
|
package/dist/esm/graphql/resolvers/object-type-field-default-value-resolver-generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-type-field-default-value-resolver-generator.js","sourceRoot":"","sources":["../../../../src/graphql/resolvers/object-type-field-default-value-resolver-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,UAAU,EACV,aAAa,EACb,YAAY,EACZ,WAAW,GACZ,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,wBAAwB,EAAE,MAAM,mDAAmD,CAAA;AAC5F,OAAO,EAAE,WAAW,EAAa,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"object-type-field-default-value-resolver-generator.js","sourceRoot":"","sources":["../../../../src/graphql/resolvers/object-type-field-default-value-resolver-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { getTypeById } from "../../persistence/persistence.js";
|
|
|
3
3
|
import { getUnionTypeNameFromFieldValue, getUnionValue, } from "./union-type-util.js";
|
|
4
4
|
import { hasEntryDirective, isUnionOfEntryTypes } from "./entry-type-util.js";
|
|
5
5
|
import { createError } from "../errors.js";
|
|
6
|
-
import {
|
|
6
|
+
import { isEntryData } from "../util.js";
|
|
7
7
|
function isPermittedReferenceType(referencedTypeName, fieldType) {
|
|
8
8
|
if (isNonNullType(fieldType)) {
|
|
9
9
|
return isPermittedReferenceType(referencedTypeName, fieldType.ofType);
|
|
@@ -27,7 +27,7 @@ async function validateReference(context, fieldName, fieldType, fieldValue) {
|
|
|
27
27
|
await validateReference(context, fieldName, fieldType.ofType, fieldValue);
|
|
28
28
|
return;
|
|
29
29
|
}
|
|
30
|
-
|
|
30
|
+
if (isListType(fieldType)) {
|
|
31
31
|
if (!Array.isArray(fieldValue)) {
|
|
32
32
|
throw createError(`Expected array while validation references for field "${fieldName}".`, "BAD_REPOSITORY_DATA" /* ErrorCode.BAD_REPOSITORY_DATA */, {
|
|
33
33
|
fieldName: fieldName,
|
|
@@ -39,7 +39,7 @@ async function validateReference(context, fieldName, fieldType, fieldValue) {
|
|
|
39
39
|
}
|
|
40
40
|
return;
|
|
41
41
|
}
|
|
42
|
-
|
|
42
|
+
if (isUnionType(fieldType) || isObjectType(fieldType)) {
|
|
43
43
|
if (fieldValue === null ||
|
|
44
44
|
!('id' in fieldValue) ||
|
|
45
45
|
typeof fieldValue.id !== 'string') {
|
|
@@ -68,13 +68,13 @@ async function validateReference(context, fieldName, fieldType, fieldValue) {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
export async function getReferencedEntryIds(rootType, context, fieldName, type, data) {
|
|
71
|
-
if (data === null || isScalarType(type)) {
|
|
71
|
+
if (data === null || data === undefined || isScalarType(type)) {
|
|
72
72
|
return [];
|
|
73
73
|
}
|
|
74
74
|
if (isNonNullType(type)) {
|
|
75
75
|
return getReferencedEntryIds(rootType, context, fieldName, type.ofType, data);
|
|
76
76
|
}
|
|
77
|
-
|
|
77
|
+
if (isListType(type)) {
|
|
78
78
|
if (!Array.isArray(data)) {
|
|
79
79
|
throw createError(`Expected array as data for field "${fieldName}". `, "BAD_REPOSITORY_DATA" /* ErrorCode.BAD_REPOSITORY_DATA */, {
|
|
80
80
|
fieldName: fieldName ? fieldName : undefined,
|
|
@@ -92,7 +92,14 @@ export async function getReferencedEntryIds(rootType, context, fieldName, type,
|
|
|
92
92
|
referencedEntryIds = [...new Set(referencedEntryIds)];
|
|
93
93
|
return referencedEntryIds;
|
|
94
94
|
}
|
|
95
|
-
|
|
95
|
+
if (isUnionType(type)) {
|
|
96
|
+
if (!isEntryData(data)) {
|
|
97
|
+
throw createError(`Expected object as data for type "${type.name}".`, "BAD_REPOSITORY_DATA" /* ErrorCode.BAD_REPOSITORY_DATA */, {
|
|
98
|
+
typeName: type.name,
|
|
99
|
+
fieldName: fieldName ? fieldName : undefined,
|
|
100
|
+
fieldValue: data,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
96
103
|
if (isUnionOfEntryTypes(type)) {
|
|
97
104
|
const referenceId = await getValidatedReferenceId(context, fieldName, type, data);
|
|
98
105
|
return [referenceId];
|
|
@@ -112,7 +119,7 @@ export async function getReferencedEntryIds(rootType, context, fieldName, type,
|
|
|
112
119
|
const unionValue = getUnionValue(data);
|
|
113
120
|
return getReferencedEntryIds(rootType, context, fieldName, concreteFieldUnionType, unionValue);
|
|
114
121
|
}
|
|
115
|
-
|
|
122
|
+
if (isObjectType(type)) {
|
|
116
123
|
if (type.name !== rootType.name && hasEntryDirective(type)) {
|
|
117
124
|
const referenceId = await getValidatedReferenceId(context, fieldName, type, data);
|
|
118
125
|
return [referenceId];
|
|
@@ -120,27 +127,15 @@ export async function getReferencedEntryIds(rootType, context, fieldName, type,
|
|
|
120
127
|
else {
|
|
121
128
|
let referencedEntryIds = [];
|
|
122
129
|
for (const [fieldsKey, field] of Object.entries(type.getFields())) {
|
|
123
|
-
|
|
130
|
+
// expect our object type to hold EntryData (i.e. an object)
|
|
131
|
+
if (Array.isArray(data) || !isEntryData(data)) {
|
|
124
132
|
throw createError(`Expected object as data for type "${type.name}".`, "BAD_REPOSITORY_DATA" /* ErrorCode.BAD_REPOSITORY_DATA */, {
|
|
125
133
|
typeName: type.name,
|
|
126
134
|
fieldName: field.name ? field.name : undefined,
|
|
127
135
|
});
|
|
128
136
|
}
|
|
129
|
-
const fieldValue = data[fieldsKey];
|
|
130
|
-
if (fieldValue === undefined ||
|
|
131
|
-
fieldValue === null ||
|
|
132
|
-
isScalarType(field.type)) {
|
|
133
|
-
continue;
|
|
134
|
-
}
|
|
135
|
-
if (!(Array.isArray(fieldValue) || isRecord(fieldValue))) {
|
|
136
|
-
throw createError(`Expected object or array as data for field "${field.name}" of type "${type.name}".`, "BAD_REPOSITORY_DATA" /* ErrorCode.BAD_REPOSITORY_DATA */, {
|
|
137
|
-
typeName: type.name,
|
|
138
|
-
fieldName: field.name ? field.name : undefined,
|
|
139
|
-
fieldValue: fieldValue,
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
137
|
// recursively get referenced IDs in nested data
|
|
143
|
-
const nestedResult = await getReferencedEntryIds(rootType, context, fieldsKey, field.type,
|
|
138
|
+
const nestedResult = await getReferencedEntryIds(rootType, context, fieldsKey, field.type, data[fieldsKey]);
|
|
144
139
|
referencedEntryIds = [...referencedEntryIds, ...nestedResult];
|
|
145
140
|
}
|
|
146
141
|
// deduplicate
|
|
@@ -151,7 +146,10 @@ export async function getReferencedEntryIds(rootType, context, fieldName, type,
|
|
|
151
146
|
return [];
|
|
152
147
|
}
|
|
153
148
|
async function getValidatedReferenceId(context, fieldName, type, data) {
|
|
154
|
-
if (data === null ||
|
|
149
|
+
if (data === null ||
|
|
150
|
+
data === undefined ||
|
|
151
|
+
!isEntryData(data) ||
|
|
152
|
+
Array.isArray(data)) {
|
|
155
153
|
throw createError(`Expected object as data for field "${fieldName}" of type "${type.name}".`, "BAD_REPOSITORY_DATA" /* ErrorCode.BAD_REPOSITORY_DATA */, {
|
|
156
154
|
typeName: type.name,
|
|
157
155
|
fieldName: fieldName ? fieldName : undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-reference-util.js","sourceRoot":"","sources":["../../../../src/graphql/schema-utils/entry-reference-util.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,UAAU,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,GACZ,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAC9D,OAAO,EACL,8BAA8B,EAC9B,aAAa,GACd,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAa,MAAM,cAAc,CAAA;AAErD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"entry-reference-util.js","sourceRoot":"","sources":["../../../../src/graphql/schema-utils/entry-reference-util.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/graphql/util.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/graphql/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/graphql/util.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAA;AACvD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-default-value-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/graphql/resolvers/field-resolvers/field-default-value-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAiB1C,eAAO,MAAM,wBAAwB,EAAE,
|
|
1
|
+
{"version":3,"file":"field-default-value-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/graphql/resolvers/field-resolvers/field-default-value-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAiB1C,eAAO,MAAM,wBAAwB,EAAE,aA6GtC,CAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { GraphQLNullableType, GraphQLObjectType } from 'graphql';
|
|
2
2
|
import { ApolloContext } from '../../client.ts';
|
|
3
|
-
|
|
4
|
-
export declare function getReferencedEntryIds(rootType: GraphQLObjectType, context: ApolloContext, fieldName: string | null, type: GraphQLNullableType, data: EntryData | EntryData[]): Promise<string[]>;
|
|
3
|
+
export declare function getReferencedEntryIds(rootType: GraphQLObjectType, context: ApolloContext, fieldName: string | null, type: GraphQLNullableType, data: unknown): Promise<string[]>;
|
|
5
4
|
//# sourceMappingURL=entry-reference-util.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-reference-util.d.ts","sourceRoot":"","sources":["../../../../src/graphql/schema-utils/entry-reference-util.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EAOlB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"entry-reference-util.d.ts","sourceRoot":"","sources":["../../../../src/graphql/schema-utils/entry-reference-util.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EAOlB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AA0G/C,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,IAAI,EAAE,mBAAmB,EACzB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC,CA0InB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/graphql/util.ts"],"names":[],"mappings":"AAAA,wBAAgB,
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/graphql/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEpD,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,SAAS,CAU1D"}
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"gitops",
|
|
10
10
|
"api"
|
|
11
11
|
],
|
|
12
|
-
"version": "1.0.0
|
|
12
|
+
"version": "1.0.0",
|
|
13
13
|
"license": "ISC",
|
|
14
14
|
"private": false,
|
|
15
15
|
"files": [
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"@apollo/server": "^5.2.0",
|
|
47
|
-
"@commitspark/git-adapter": "^0.
|
|
47
|
+
"@commitspark/git-adapter": "^1.0.0",
|
|
48
48
|
"@graphql-tools/schema": "^9.0.0",
|
|
49
49
|
"@graphql-tools/utils": "^9.0.0"
|
|
50
50
|
},
|
|
@@ -32,7 +32,9 @@ export const resolveFieldDefaultValue: FieldResolver = async (
|
|
|
32
32
|
},
|
|
33
33
|
info,
|
|
34
34
|
)
|
|
35
|
-
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (isListType(context.currentType)) {
|
|
36
38
|
if (fieldValue === undefined || fieldValue === null) {
|
|
37
39
|
if (context.hasNonNullParent) {
|
|
38
40
|
return new Promise((resolve) => resolve([]))
|
|
@@ -67,7 +69,9 @@ export const resolveFieldDefaultValue: FieldResolver = async (
|
|
|
67
69
|
resultPromises.push(resultPromise)
|
|
68
70
|
}
|
|
69
71
|
return Promise.all(resultPromises)
|
|
70
|
-
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (isUnionType(context.currentType)) {
|
|
71
75
|
if (fieldValue === undefined || fieldValue === null) {
|
|
72
76
|
if (context.hasNonNullParent) {
|
|
73
77
|
throw createError(
|
|
@@ -92,7 +96,9 @@ export const resolveFieldDefaultValue: FieldResolver = async (
|
|
|
92
96
|
}
|
|
93
97
|
|
|
94
98
|
return resolveUnionValue(fieldValue, args, context, info)
|
|
95
|
-
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (isObjectType(context.currentType)) {
|
|
96
102
|
if (fieldValue === undefined || fieldValue === null) {
|
|
97
103
|
if (context.hasNonNullParent) {
|
|
98
104
|
throw createError(
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
} from 'graphql'
|
|
11
11
|
import { resolveFieldDefaultValue } from './field-resolvers/field-default-value-resolver.ts'
|
|
12
12
|
import { createError, ErrorCode } from '../errors.ts'
|
|
13
|
-
import {
|
|
13
|
+
import { isEntryData } from '../util.ts'
|
|
14
14
|
import { ContextInjectionResolver } from './types.ts'
|
|
15
15
|
|
|
16
16
|
function requiresCustomDefaultValueResolver(type: GraphQLOutputType): boolean {
|
|
@@ -73,7 +73,7 @@ export function createObjectTypeFieldResolvers(
|
|
|
73
73
|
fieldSourceData = obj[field.name] ?? null
|
|
74
74
|
if (
|
|
75
75
|
fieldSourceData !== null &&
|
|
76
|
-
!(
|
|
76
|
+
!(isEntryData(fieldSourceData) || Array.isArray(fieldSourceData))
|
|
77
77
|
) {
|
|
78
78
|
throw createError(
|
|
79
79
|
`Expected an object or array as data for passing to resolver of field "${field.name}" in type "${typeName}".`,
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
import { hasEntryDirective, isUnionOfEntryTypes } from './entry-type-util.ts'
|
|
18
18
|
import { createError, ErrorCode } from '../errors.ts'
|
|
19
19
|
import { EntryData } from '@commitspark/git-adapter'
|
|
20
|
-
import {
|
|
20
|
+
import { isEntryData } from '../util.ts'
|
|
21
21
|
|
|
22
22
|
function isPermittedReferenceType(
|
|
23
23
|
referencedTypeName: string,
|
|
@@ -47,7 +47,9 @@ async function validateReference(
|
|
|
47
47
|
if (isNonNullType(fieldType)) {
|
|
48
48
|
await validateReference(context, fieldName, fieldType.ofType, fieldValue)
|
|
49
49
|
return
|
|
50
|
-
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (isListType(fieldType)) {
|
|
51
53
|
if (!Array.isArray(fieldValue)) {
|
|
52
54
|
throw createError(
|
|
53
55
|
`Expected array while validation references for field "${fieldName}".`,
|
|
@@ -67,7 +69,9 @@ async function validateReference(
|
|
|
67
69
|
)
|
|
68
70
|
}
|
|
69
71
|
return
|
|
70
|
-
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (isUnionType(fieldType) || isObjectType(fieldType)) {
|
|
71
75
|
if (
|
|
72
76
|
fieldValue === null ||
|
|
73
77
|
!('id' in fieldValue) ||
|
|
@@ -115,9 +119,9 @@ export async function getReferencedEntryIds(
|
|
|
115
119
|
context: ApolloContext,
|
|
116
120
|
fieldName: string | null,
|
|
117
121
|
type: GraphQLNullableType,
|
|
118
|
-
data:
|
|
122
|
+
data: unknown,
|
|
119
123
|
): Promise<string[]> {
|
|
120
|
-
if (data === null || isScalarType(type)) {
|
|
124
|
+
if (data === null || data === undefined || isScalarType(type)) {
|
|
121
125
|
return []
|
|
122
126
|
}
|
|
123
127
|
|
|
@@ -129,7 +133,9 @@ export async function getReferencedEntryIds(
|
|
|
129
133
|
type.ofType,
|
|
130
134
|
data,
|
|
131
135
|
)
|
|
132
|
-
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (isListType(type)) {
|
|
133
139
|
if (!Array.isArray(data)) {
|
|
134
140
|
throw createError(
|
|
135
141
|
`Expected array as data for field "${fieldName}". `,
|
|
@@ -157,7 +163,21 @@ export async function getReferencedEntryIds(
|
|
|
157
163
|
// deduplicate
|
|
158
164
|
referencedEntryIds = [...new Set(referencedEntryIds)]
|
|
159
165
|
return referencedEntryIds
|
|
160
|
-
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
if (isUnionType(type)) {
|
|
169
|
+
if (!isEntryData(data)) {
|
|
170
|
+
throw createError(
|
|
171
|
+
`Expected object as data for type "${type.name}".`,
|
|
172
|
+
ErrorCode.BAD_REPOSITORY_DATA,
|
|
173
|
+
{
|
|
174
|
+
typeName: type.name,
|
|
175
|
+
fieldName: fieldName ? fieldName : undefined,
|
|
176
|
+
fieldValue: data,
|
|
177
|
+
},
|
|
178
|
+
)
|
|
179
|
+
}
|
|
180
|
+
|
|
161
181
|
if (isUnionOfEntryTypes(type)) {
|
|
162
182
|
const referenceId = await getValidatedReferenceId(
|
|
163
183
|
context,
|
|
@@ -195,7 +215,9 @@ export async function getReferencedEntryIds(
|
|
|
195
215
|
concreteFieldUnionType,
|
|
196
216
|
unionValue,
|
|
197
217
|
)
|
|
198
|
-
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
if (isObjectType(type)) {
|
|
199
221
|
if (type.name !== rootType.name && hasEntryDirective(type)) {
|
|
200
222
|
const referenceId = await getValidatedReferenceId(
|
|
201
223
|
context,
|
|
@@ -207,7 +229,8 @@ export async function getReferencedEntryIds(
|
|
|
207
229
|
} else {
|
|
208
230
|
let referencedEntryIds: string[] = []
|
|
209
231
|
for (const [fieldsKey, field] of Object.entries(type.getFields())) {
|
|
210
|
-
|
|
232
|
+
// expect our object type to hold EntryData (i.e. an object)
|
|
233
|
+
if (Array.isArray(data) || !isEntryData(data)) {
|
|
211
234
|
throw createError(
|
|
212
235
|
`Expected object as data for type "${type.name}".`,
|
|
213
236
|
ErrorCode.BAD_REPOSITORY_DATA,
|
|
@@ -218,33 +241,13 @@ export async function getReferencedEntryIds(
|
|
|
218
241
|
)
|
|
219
242
|
}
|
|
220
243
|
|
|
221
|
-
const fieldValue = data[fieldsKey]
|
|
222
|
-
if (
|
|
223
|
-
fieldValue === undefined ||
|
|
224
|
-
fieldValue === null ||
|
|
225
|
-
isScalarType(field.type)
|
|
226
|
-
) {
|
|
227
|
-
continue
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
if (!(Array.isArray(fieldValue) || isRecord(fieldValue))) {
|
|
231
|
-
throw createError(
|
|
232
|
-
`Expected object or array as data for field "${field.name}" of type "${type.name}".`,
|
|
233
|
-
ErrorCode.BAD_REPOSITORY_DATA,
|
|
234
|
-
{
|
|
235
|
-
typeName: type.name,
|
|
236
|
-
fieldName: field.name ? field.name : undefined,
|
|
237
|
-
fieldValue: fieldValue,
|
|
238
|
-
},
|
|
239
|
-
)
|
|
240
|
-
}
|
|
241
244
|
// recursively get referenced IDs in nested data
|
|
242
245
|
const nestedResult = await getReferencedEntryIds(
|
|
243
246
|
rootType,
|
|
244
247
|
context,
|
|
245
248
|
fieldsKey,
|
|
246
249
|
field.type,
|
|
247
|
-
|
|
250
|
+
data[fieldsKey],
|
|
248
251
|
)
|
|
249
252
|
referencedEntryIds = [...referencedEntryIds, ...nestedResult]
|
|
250
253
|
}
|
|
@@ -261,9 +264,14 @@ async function getValidatedReferenceId(
|
|
|
261
264
|
context: ApolloContext,
|
|
262
265
|
fieldName: string | null,
|
|
263
266
|
type: GraphQLUnionType | GraphQLObjectType,
|
|
264
|
-
data:
|
|
267
|
+
data: unknown,
|
|
265
268
|
): Promise<string> {
|
|
266
|
-
if (
|
|
269
|
+
if (
|
|
270
|
+
data === null ||
|
|
271
|
+
data === undefined ||
|
|
272
|
+
!isEntryData(data) ||
|
|
273
|
+
Array.isArray(data)
|
|
274
|
+
) {
|
|
267
275
|
throw createError(
|
|
268
276
|
`Expected object as data for field "${fieldName}" of type "${type.name}".`,
|
|
269
277
|
ErrorCode.BAD_REPOSITORY_DATA,
|
package/src/graphql/util.ts
CHANGED