Skip to content

Commit fc99164

Browse files
committed
Squashed 'apollo-ios-codegen/' changes from c93d3aea7..46101fb7e
46101fb7e feature: @fieldPolicy directive (#735) b31cb350a secops: Combined PRs - Sept 4th 2025 (#743) git-subtree-dir: apollo-ios-codegen git-subtree-split: 46101fb7e97fce62d77af53e879cf0cbf28140af
1 parent 2e5423f commit fc99164

17 files changed

+1425
-799
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,3 +87,5 @@ Tests/TestCodeGenConfigurations/EmbeddedInTarget-RelativeAbsolute/PackageTwo/Sou
8787
!Tests/TestCodeGenConfigurations/**/SchemaConfiguration.swift
8888
!Tests/TestCodeGenConfigurations/Other-CustomTarget/AnimalKingdomAPI/AnimalKingdomAPI.h
8989
!Tests/TestCodeGenConfigurations/EmbeddedInTarget-RelativeAbsolute/PackageTwo/Sources/PackageTwo/PackageTwo.swift
90+
91+
Sources/GraphQLCompiler/JavaScript/coverage/

Sources/ApolloCodegenLib/Templates/SelectionSetTemplate.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,10 @@ struct SelectionSetTemplate {
346346
where: { !$0.isEmpty }, { args in
347347
", arguments: " + renderValue(for: args, onFieldNamed: field.name, &deprecatedArguments)
348348
})\
349+
\(ifLet: field.fieldPolicyKeys,
350+
where: { !$0.isEmpty }, { keys in
351+
", fieldPolicy: .init(keyArgs: [\"\(keys.joined(separator: "\", \""))\"])"
352+
})\
349353
)
350354
"""
351355
}

Sources/GraphQLCompiler/ApolloCodegenFrontendBundle.swift

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

Sources/GraphQLCompiler/CompilationResult.swift

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,8 @@ public final class CompilationResult: JavaScriptObjectDecodable {
492492
public let type: GraphQLType
493493

494494
public let arguments: [Argument]?
495+
496+
public let fieldPolicyKeys: [String]?
495497

496498
public let inclusionConditions: [InclusionCondition]?
497499

@@ -515,6 +517,7 @@ public final class CompilationResult: JavaScriptObjectDecodable {
515517
name: String,
516518
alias: String? = nil,
517519
arguments: [Argument]? = nil,
520+
fieldPolicyKeys: [String]? = nil,
518521
inclusionConditions: [InclusionCondition]? = nil,
519522
directives: [Directive]? = nil,
520523
type: GraphQLType,
@@ -526,18 +529,20 @@ public final class CompilationResult: JavaScriptObjectDecodable {
526529
self.alias = alias
527530
self.type = type
528531
self.arguments = arguments
532+
self.fieldPolicyKeys = fieldPolicyKeys
529533
self.inclusionConditions = inclusionConditions
530534
self.directives = directives
531535
self.selectionSet = selectionSet
532536
self.deprecationReason = deprecationReason
533537
self.documentation = documentation
534538
}
535539

536-
static func fromJSValue(_ jsValue: JSValue, bridge: isolated JavaScriptBridge) -> Self {
537-
self.init(
540+
static func fromJSValue(_ jsValue: JSValue, bridge: isolated JavaScriptBridge) -> Self {
541+
return self.init(
538542
name: jsValue["name"],
539543
alias: jsValue["alias"],
540544
arguments: .fromJSValue(jsValue["arguments"], bridge: bridge),
545+
fieldPolicyKeys: jsValue["fieldPolicyKeys"],
541546
inclusionConditions: jsValue["inclusionConditions"],
542547
directives: .fromJSValue(jsValue["directives"], bridge: bridge),
543548
type: .fromJSValue(jsValue["type"], bridge: bridge),
@@ -560,6 +565,7 @@ public final class CompilationResult: JavaScriptObjectDecodable {
560565
hasher.combine(alias)
561566
hasher.combine(type)
562567
hasher.combine(arguments)
568+
hasher.combine(fieldPolicyKeys)
563569
hasher.combine(directives)
564570
hasher.combine(selectionSet)
565571
}
@@ -569,6 +575,7 @@ public final class CompilationResult: JavaScriptObjectDecodable {
569575
lhs.alias == rhs.alias &&
570576
lhs.type == rhs.type &&
571577
lhs.arguments == rhs.arguments &&
578+
lhs.fieldPolicyKeys == rhs.fieldPolicyKeys &&
572579
lhs.directives == rhs.directives &&
573580
lhs.selectionSet == rhs.selectionSet
574581
}

Sources/GraphQLCompiler/GraphQLSchema.swift

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public class GraphQLNamedType:
6464
}
6565
}
6666

67-
public final class GraphQLScalarType: GraphQLNamedType {
67+
public final class GraphQLScalarType: GraphQLNamedType, @unchecked Sendable {
6868
public let specifiedByURL: String?
6969

7070
public var isCustomScalar: Bool {
@@ -95,7 +95,7 @@ public final class GraphQLScalarType: GraphQLNamedType {
9595

9696
}
9797

98-
public final class GraphQLEnumType: GraphQLNamedType {
98+
public final class GraphQLEnumType: GraphQLNamedType, @unchecked Sendable {
9999
public private(set) var values: [GraphQLEnumValue]!
100100

101101
required init(_ jsValue: JSValue, bridge: isolated JavaScriptBridge) {
@@ -151,7 +151,7 @@ public struct GraphQLEnumValue: JavaScriptObjectDecodable, GraphQLNamedItem {
151151

152152
public typealias GraphQLInputFieldDictionary = OrderedDictionary<String, GraphQLInputField>
153153

154-
public final class GraphQLInputObjectType: GraphQLNamedType {
154+
public final class GraphQLInputObjectType: GraphQLNamedType, @unchecked Sendable {
155155
public private(set) var fields: GraphQLInputFieldDictionary!
156156

157157
public let isOneOf: Bool
@@ -217,7 +217,7 @@ public class GraphQLInputField: JavaScriptObjectDecodable, GraphQLNamedItem {
217217
}
218218
}
219219

220-
public class GraphQLCompositeType: GraphQLNamedType {
220+
public class GraphQLCompositeType: GraphQLNamedType, @unchecked Sendable {
221221
public override var debugDescription: String {
222222
"Type - \(name)"
223223
}
@@ -233,7 +233,7 @@ public extension GraphQLInterfaceImplementingType {
233233
}
234234
}
235235

236-
public final class GraphQLObjectType: GraphQLCompositeType, GraphQLInterfaceImplementingType {
236+
public final class GraphQLObjectType: GraphQLCompositeType, GraphQLInterfaceImplementingType, @unchecked Sendable {
237237

238238
public private(set) var fields: [String: GraphQLField]!
239239

@@ -270,10 +270,10 @@ public final class GraphQLObjectType: GraphQLCompositeType, GraphQLInterfaceImpl
270270
}
271271
}
272272

273-
public class GraphQLAbstractType: GraphQLCompositeType {
273+
public class GraphQLAbstractType: GraphQLCompositeType, @unchecked Sendable {
274274
}
275275

276-
public final class GraphQLInterfaceType: GraphQLAbstractType, GraphQLInterfaceImplementingType {
276+
public final class GraphQLInterfaceType: GraphQLAbstractType, GraphQLInterfaceImplementingType, @unchecked Sendable {
277277

278278
public private(set) var fields: [String: GraphQLField]!
279279

@@ -315,7 +315,7 @@ public final class GraphQLInterfaceType: GraphQLAbstractType, GraphQLInterfaceIm
315315
}
316316
}
317317

318-
public final class GraphQLUnionType: GraphQLAbstractType {
318+
public final class GraphQLUnionType: GraphQLAbstractType, @unchecked Sendable {
319319
public let types: [GraphQLObjectType]
320320

321321
required init(_ jsValue: JSValue, bridge: isolated JavaScriptBridge) {

0 commit comments

Comments
 (0)