Skip to content

Commit ed74494

Browse files
authored
fix: allow fully qualified ParseSwift types (#397)
* fix: Allow fully qualified ParseSwift types * improve file organization * import for linux * add test
1 parent a143c0f commit ed74494

37 files changed

+896
-841
lines changed

CHANGELOG.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
# Parse-Swift Changelog
22

33
### main
4-
[Full Changelog](https://github.com/parse-community/Parse-Swift/compare/4.9.1...main)
4+
[Full Changelog](https://github.com/parse-community/Parse-Swift/compare/4.9.2...main)
55
* _Contributing to this repo? Add info about your change here to be included in the next release_
66

7+
### 4.9.2
8+
[Full Changelog](https://github.com/parse-community/Parse-Swift/compare/4.9.1...4.9.2)
9+
10+
__Fixes__
11+
- Allow fully qualified ParseSwift types to be used externally by fixing clash with module name ([#397](https://github.com/parse-community/Parse-Swift/pull/397)), thanks to [Corey Baker](https://github.com/cbaker6).
12+
713
### 4.9.1
814
[Full Changelog](https://github.com/parse-community/Parse-Swift/compare/4.9.0...4.9.1)
915

ParseSwift.xcodeproj/project.pbxproj

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,10 @@
315315
7045769E26BD934000F86F71 /* ParseFile+async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7045769C26BD934000F86F71 /* ParseFile+async.swift */; };
316316
7045769F26BD934000F86F71 /* ParseFile+async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7045769C26BD934000F86F71 /* ParseFile+async.swift */; };
317317
704576A026BD934000F86F71 /* ParseFile+async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7045769C26BD934000F86F71 /* ParseFile+async.swift */; };
318+
704C886C28BE69A8008E6B01 /* ParseConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 704C886B28BE69A8008E6B01 /* ParseConfiguration.swift */; };
319+
704C886D28BE69A8008E6B01 /* ParseConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 704C886B28BE69A8008E6B01 /* ParseConfiguration.swift */; };
320+
704C886E28BE69A8008E6B01 /* ParseConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 704C886B28BE69A8008E6B01 /* ParseConfiguration.swift */; };
321+
704C886F28BE69A8008E6B01 /* ParseConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 704C886B28BE69A8008E6B01 /* ParseConfiguration.swift */; };
318322
705025992842FD3B008D6624 /* ParseCLPTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 705025982842FD3B008D6624 /* ParseCLPTests.swift */; };
319323
7050259A2842FD3B008D6624 /* ParseCLPTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 705025982842FD3B008D6624 /* ParseCLPTests.swift */; };
320324
7050259B2842FD3B008D6624 /* ParseCLPTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 705025982842FD3B008D6624 /* ParseCLPTests.swift */; };
@@ -1229,6 +1233,7 @@
12291233
7045769226BD8F8100F86F71 /* ParseInstallation+async.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ParseInstallation+async.swift"; sourceTree = "<group>"; };
12301234
7045769726BD917500F86F71 /* Query+async.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Query+async.swift"; sourceTree = "<group>"; };
12311235
7045769C26BD934000F86F71 /* ParseFile+async.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ParseFile+async.swift"; sourceTree = "<group>"; };
1236+
704C886B28BE69A8008E6B01 /* ParseConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseConfiguration.swift; sourceTree = "<group>"; };
12321237
705025982842FD3B008D6624 /* ParseCLPTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseCLPTests.swift; sourceTree = "<group>"; };
12331238
7050259C2843F0CF008D6624 /* ParseSchemaAsyncTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseSchemaAsyncTests.swift; sourceTree = "<group>"; };
12341239
705025A02843F0E7008D6624 /* ParseSchemaCombineTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseSchemaCombineTests.swift; sourceTree = "<group>"; };
@@ -2112,6 +2117,7 @@
21122117
70D1BDB925BB17A600A42E7C /* ParseConfig.swift */,
21132118
703B090B26BD984D005A112F /* ParseConfig+async.swift */,
21142119
7044C18225C4EFC10011F6E7 /* ParseConfig+combine.swift */,
2120+
704C886B28BE69A8008E6B01 /* ParseConfiguration.swift */,
21152121
F97B45BF24D9C6F200F4A88B /* ParseError.swift */,
21162122
709A148628396B1C00BF85E5 /* ParseField.swift */,
21172123
705025A828441C96008D6624 /* ParseFieldOptions.swift */,
@@ -2733,6 +2739,7 @@
27332739
705A9A2F25991C1400B3547F /* Fileable.swift in Sources */,
27342740
89899D342603CF36002E2043 /* ParseTwitter.swift in Sources */,
27352741
7C55F9F12860CEEF002A352D /* ParseSpotify+combine.swift in Sources */,
2742+
704C886C28BE69A8008E6B01 /* ParseConfiguration.swift in Sources */,
27362743
70B4E0BC2762F1D5004C9757 /* QueryConstraint.swift in Sources */,
27372744
70C167B427304F09009F4E30 /* Pointer+async.swift in Sources */,
27382745
705025AE28456106008D6624 /* ParsePushStatusable.swift in Sources */,
@@ -3041,6 +3048,7 @@
30413048
89899D332603CF36002E2043 /* ParseTwitter.swift in Sources */,
30423049
70B4E0BD2762F1D5004C9757 /* QueryConstraint.swift in Sources */,
30433050
7C55F9F22860CEEF002A352D /* ParseSpotify+combine.swift in Sources */,
3051+
704C886D28BE69A8008E6B01 /* ParseConfiguration.swift in Sources */,
30443052
70C167B527304F09009F4E30 /* Pointer+async.swift in Sources */,
30453053
F97B464B24D9C78B00F4A88B /* Delete.swift in Sources */,
30463054
705025AF28456106008D6624 /* ParsePushStatusable.swift in Sources */,
@@ -3481,6 +3489,7 @@
34813489
705A9A3225991C1400B3547F /* Fileable.swift in Sources */,
34823490
70B4E0BF2762F1D5004C9757 /* QueryConstraint.swift in Sources */,
34833491
7C55F9F42860CEEF002A352D /* ParseSpotify+combine.swift in Sources */,
3492+
704C886F28BE69A8008E6B01 /* ParseConfiguration.swift in Sources */,
34843493
89899D282603CF35002E2043 /* ParseTwitter.swift in Sources */,
34853494
70C167B727304F09009F4E30 /* Pointer+async.swift in Sources */,
34863495
705025B128456106008D6624 /* ParsePushStatusable.swift in Sources */,
@@ -3666,6 +3675,7 @@
36663675
705A9A3125991C1400B3547F /* Fileable.swift in Sources */,
36673676
70B4E0BE2762F1D5004C9757 /* QueryConstraint.swift in Sources */,
36683677
7C55F9F32860CEEF002A352D /* ParseSpotify+combine.swift in Sources */,
3678+
704C886E28BE69A8008E6B01 /* ParseConfiguration.swift in Sources */,
36693679
89899D322603CF35002E2043 /* ParseTwitter.swift in Sources */,
36703680
70C167B627304F09009F4E30 /* Pointer+async.swift in Sources */,
36713681
705025B028456106008D6624 /* ParsePushStatusable.swift in Sources */,

Sources/ParseSwift/API/API+Command.swift

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -60,16 +60,16 @@ internal extension API {
6060
case .success(let urlRequest):
6161
if method == .POST || method == .PUT || method == .PATCH {
6262
let task = URLSession.parse.uploadTask(withStreamedRequest: urlRequest)
63-
ParseSwift.sessionDelegate.streamDelegates[task] = stream
63+
Parse.sessionDelegate.streamDelegates[task] = stream
6464
#if compiler(>=5.5.2) && canImport(_Concurrency)
6565
Task {
66-
await ParseSwift.sessionDelegate.delegates.updateUpload(task, callback: uploadProgress)
67-
await ParseSwift.sessionDelegate.delegates.updateTask(task, queue: callbackQueue)
66+
await Parse.sessionDelegate.delegates.updateUpload(task, callback: uploadProgress)
67+
await Parse.sessionDelegate.delegates.updateTask(task, queue: callbackQueue)
6868
task.resume()
6969
}
7070
#else
71-
ParseSwift.sessionDelegate.uploadDelegates[task] = uploadProgress
72-
ParseSwift.sessionDelegate.taskCallbackQueues[task] = callbackQueue
71+
Parse.sessionDelegate.uploadDelegates[task] = uploadProgress
72+
Parse.sessionDelegate.taskCallbackQueues[task] = callbackQueue
7373
task.resume()
7474
#endif
7575
return
@@ -274,7 +274,7 @@ internal extension API {
274274
headers.removeValue(forKey: "X-Parse-Request-Id")
275275
}
276276
let url = parseURL == nil ?
277-
ParseSwift.configuration.serverURL.appendingPathComponent(path.urlComponent) : parseURL!
277+
Parse.configuration.serverURL.appendingPathComponent(path.urlComponent) : parseURL!
278278

279279
guard var components = URLComponents(url: url, resolvingAgainstBaseURL: false) else {
280280
return .failure(ParseError(code: .unknownError,
@@ -319,7 +319,7 @@ internal extension API {
319319
}
320320

321321
static func requestCachePolicy(options: API.Options) -> URLRequest.CachePolicy {
322-
var policy: URLRequest.CachePolicy = ParseSwift.configuration.requestCachePolicy
322+
var policy: URLRequest.CachePolicy = Parse.configuration.requestCachePolicy
323323
options.forEach { option in
324324
if case .cachePolicy(let updatedPolicy) = option {
325325
policy = updatedPolicy
@@ -395,7 +395,7 @@ internal extension API.Command {
395395
static func save<T>(_ object: T,
396396
original data: Data?,
397397
ignoringCustomObjectIdConfig: Bool) throws -> API.Command<T, T> where T: ParseObject {
398-
if ParseSwift.configuration.isAllowingCustomObjectIds
398+
if Parse.configuration.isAllowingCustomObjectIds
399399
&& object.objectId == nil && !ignoringCustomObjectIdConfig {
400400
throw ParseError(code: .missingObjectId, message: "objectId must not be nil")
401401
}
@@ -501,7 +501,7 @@ internal extension API.Command where T: ParseObject {
501501
static func batch(commands: [API.Command<T, T>],
502502
transaction: Bool) -> RESTBatchCommandType<T> {
503503
let batchCommands = commands.compactMap { (command) -> API.Command<T, T>? in
504-
let path = ParseSwift.configuration.mountPath + command.path.urlComponent
504+
let path = Parse.configuration.mountPath + command.path.urlComponent
505505
guard let body = command.body else {
506506
return nil
507507
}
@@ -553,7 +553,7 @@ internal extension API.Command where T: ParseObject {
553553
static func batch(commands: [API.NonParseBodyCommand<NoBody, NoBody>],
554554
transaction: Bool) -> RESTBatchCommandNoBodyType<NoBody> {
555555
let commands = commands.compactMap { (command) -> API.NonParseBodyCommand<NoBody, NoBody>? in
556-
let path = ParseSwift.configuration.mountPath + command.path.urlComponent
556+
let path = Parse.configuration.mountPath + command.path.urlComponent
557557
return API.NonParseBodyCommand<NoBody, NoBody>(
558558
method: command.method,
559559
path: .any(path), mapper: command.mapper)

Sources/ParseSwift/API/API+NonParseBodyCommand.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ internal extension API {
9090
if method == .GET || method == .DELETE {
9191
headers.removeValue(forKey: "X-Parse-Request-Id")
9292
}
93-
let url = ParseSwift.configuration.serverURL.appendingPathComponent(path.urlComponent)
93+
let url = Parse.configuration.serverURL.appendingPathComponent(path.urlComponent)
9494

9595
guard var components = URLComponents(url: url, resolvingAgainstBaseURL: false) else {
9696
return .failure(ParseError(code: .unknownError,
@@ -169,7 +169,7 @@ internal extension API.NonParseBodyCommand {
169169
return try objectable.toPointer()
170170
}
171171

172-
let path = ParseSwift.configuration.mountPath + objectable.endpoint.urlComponent
172+
let path = Parse.configuration.mountPath + objectable.endpoint.urlComponent
173173
let encoded = try ParseCoding.parseEncoder().encode(object)
174174
let body = try ParseCoding.jsonDecoder().decode(AnyCodable.self, from: encoded)
175175
return API.BatchCommand<AnyCodable, PointerType>(method: method,

Sources/ParseSwift/API/API.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -197,9 +197,9 @@ public struct API {
197197

198198
// swiftlint:disable:next cyclomatic_complexity
199199
internal static func getHeaders(options: API.Options) -> [String: String] {
200-
var headers: [String: String] = ["X-Parse-Application-Id": ParseSwift.configuration.applicationId,
200+
var headers: [String: String] = ["X-Parse-Application-Id": Parse.configuration.applicationId,
201201
"Content-Type": "application/json"]
202-
if let clientKey = ParseSwift.configuration.clientKey {
202+
if let clientKey = Parse.configuration.clientKey {
203203
headers["X-Parse-Client-Key"] = clientKey
204204
}
205205

@@ -217,7 +217,7 @@ public struct API {
217217
options.forEach { (option) in
218218
switch option {
219219
case .useMasterKey:
220-
headers["X-Parse-Master-Key"] = ParseSwift.configuration.masterKey
220+
headers["X-Parse-Master-Key"] = Parse.configuration.masterKey
221221
case .sessionToken(let sessionToken):
222222
headers["X-Parse-Session-Token"] = sessionToken
223223
case .installationId(let installationId):

Sources/ParseSwift/Coding/ParseEncoder.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ public struct ParseEncoder {
147147
unique: PointerType?,
148148
unsavedChildren: [Encodable]) {
149149
let keysToSkip: Set<String>!
150-
if !ParseSwift.configuration.isAllowingCustomObjectIds {
150+
if !Parse.configuration.isAllowingCustomObjectIds {
151151
keysToSkip = SkipKeys.object.keys()
152152
} else {
153153
keysToSkip = SkipKeys.customObjectId.keys()
@@ -172,7 +172,7 @@ public struct ParseEncoder {
172172
objectsSavedBeforeThisOne: [String: PointerType]?,
173173
filesSavedBeforeThisOne: [UUID: ParseFile]?) throws -> (encoded: Data, unique: PointerType?, unsavedChildren: [Encodable]) {
174174
let keysToSkip: Set<String>!
175-
if !ParseSwift.configuration.isAllowingCustomObjectIds {
175+
if !Parse.configuration.isAllowingCustomObjectIds {
176176
keysToSkip = SkipKeys.object.keys()
177177
} else {
178178
keysToSkip = SkipKeys.customObjectId.keys()

Sources/ParseSwift/Extensions/URLCache.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,19 @@ import FoundationNetworking
1414
internal extension URLCache {
1515
static let parse: URLCache = {
1616
guard let cacheURL = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first else {
17-
return URLCache(memoryCapacity: ParseSwift.configuration.cacheMemoryCapacity,
18-
diskCapacity: ParseSwift.configuration.cacheDiskCapacity,
17+
return URLCache(memoryCapacity: Parse.configuration.cacheMemoryCapacity,
18+
diskCapacity: Parse.configuration.cacheDiskCapacity,
1919
diskPath: nil)
2020
}
2121
let parseCacheDirectory = "ParseCache"
2222
let diskURL = cacheURL.appendingPathComponent(parseCacheDirectory, isDirectory: true)
2323
#if !os(Linux) && !os(Android) && !os(Windows)
24-
return URLCache(memoryCapacity: ParseSwift.configuration.cacheMemoryCapacity,
25-
diskCapacity: ParseSwift.configuration.cacheDiskCapacity,
24+
return URLCache(memoryCapacity: Parse.configuration.cacheMemoryCapacity,
25+
diskCapacity: Parse.configuration.cacheDiskCapacity,
2626
directory: diskURL)
2727
#else
28-
return URLCache(memoryCapacity: ParseSwift.configuration.cacheMemoryCapacity,
29-
diskCapacity: ParseSwift.configuration.cacheDiskCapacity,
28+
return URLCache(memoryCapacity: Parse.configuration.cacheMemoryCapacity,
29+
diskCapacity: Parse.configuration.cacheDiskCapacity,
3030
diskPath: diskURL.absoluteString)
3131
#endif
3232
}()

0 commit comments

Comments
 (0)