Skip to content

Commit 5a32e11

Browse files
authored
feat(ios): add Swift Package Manager support (#686)
* feat(ios): add Swift Package Manager support * Fixes
1 parent 5735ce6 commit 5a32e11

7 files changed

Lines changed: 96 additions & 77 deletions

File tree

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ Pods
77
Podfile.lock
88
Build
99
xcuserdata
10+
Package.resolved
11+
/.build
12+
/Packages
13+
.swiftpm/configuration/registries.json
14+
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
15+
.netrc
1016

1117
# macOS files
1218
.DS_Store

Package.swift

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// swift-tools-version: 5.9
2+
import PackageDescription
3+
4+
let package = Package(
5+
name: "CapacitorCommunitySqlite",
6+
platforms: [.iOS(.v15)],
7+
products: [
8+
.library(
9+
name: "CapacitorCommunitySqlite",
10+
targets: ["CapacitorSQLitePlugin"])
11+
],
12+
dependencies: [
13+
.package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "8.0.0"),
14+
.package(url: "https://github.com/sqlcipher/SQLCipher.swift.git", from: "4.14.0"),
15+
.package(url: "https://github.com/weichsel/ZIPFoundation.git", from: "0.9.0")
16+
],
17+
targets: [
18+
.target(
19+
name: "CapacitorSQLitePlugin",
20+
dependencies: [
21+
.product(name: "Capacitor", package: "capacitor-swift-pm"),
22+
.product(name: "Cordova", package: "capacitor-swift-pm"),
23+
.product(name: "SQLCipher", package: "SQLCipher.swift"),
24+
.product(name: "ZIPFoundation", package: "ZIPFoundation")
25+
],
26+
path: "ios/Plugin"),
27+
.testTarget(
28+
name: "CapacitorSQLitePluginTests",
29+
dependencies: ["CapacitorSQLitePlugin"],
30+
path: "ios/PluginTests")
31+
]
32+
)

ios/Plugin.xcodeproj/project.pbxproj

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,7 @@
4040
2F98D68224C9AAE500613A4C /* CapacitorSQLite.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F98D68124C9AAE400613A4C /* CapacitorSQLite.swift */; };
4141
50ADFF92201F53D600D50D53 /* Plugin.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50ADFF88201F53D600D50D53 /* Plugin.framework */; };
4242
50ADFF97201F53D600D50D53 /* CapacitorSQLitePluginTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50ADFF96201F53D600D50D53 /* CapacitorSQLitePluginTests.swift */; };
43-
50ADFF99201F53D600D50D53 /* CapacitorSQLitePlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 50ADFF8B201F53D600D50D53 /* CapacitorSQLitePlugin.h */; settings = {ATTRIBUTES = (Public, ); }; };
4443
50ADFFA42020D75100D50D53 /* Capacitor.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50ADFFA52020D75100D50D53 /* Capacitor.framework */; };
45-
50ADFFA82020EE4F00D50D53 /* CapacitorSQLitePlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 50ADFFA72020EE4F00D50D53 /* CapacitorSQLitePlugin.m */; };
4644
50E1A94820377CB70090CE1A /* CapacitorSQLitePlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50E1A94720377CB70090CE1A /* CapacitorSQLitePlugin.swift */; };
4745
/* End PBXBuildFile section */
4846

@@ -88,13 +86,11 @@
8886
2F98D68124C9AAE400613A4C /* CapacitorSQLite.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CapacitorSQLite.swift; sourceTree = "<group>"; };
8987
3B2A61DA5A1F2DD4F959604D /* Pods_Plugin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Plugin.framework; sourceTree = BUILT_PRODUCTS_DIR; };
9088
50ADFF88201F53D600D50D53 /* Plugin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Plugin.framework; sourceTree = BUILT_PRODUCTS_DIR; };
91-
50ADFF8B201F53D600D50D53 /* CapacitorSQLitePlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CapacitorSQLitePlugin.h; sourceTree = "<group>"; };
9289
50ADFF8C201F53D600D50D53 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
9390
50ADFF91201F53D600D50D53 /* PluginTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PluginTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
9491
50ADFF96201F53D600D50D53 /* CapacitorSQLitePluginTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CapacitorSQLitePluginTests.swift; sourceTree = "<group>"; };
9592
50ADFF98201F53D600D50D53 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
9693
50ADFFA52020D75100D50D53 /* Capacitor.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Capacitor.framework; sourceTree = BUILT_PRODUCTS_DIR; };
97-
50ADFFA72020EE4F00D50D53 /* CapacitorSQLitePlugin.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CapacitorSQLitePlugin.m; sourceTree = "<group>"; };
9894
50E1A94720377CB70090CE1A /* CapacitorSQLitePlugin.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CapacitorSQLitePlugin.swift; sourceTree = "<group>"; };
9995
5E23F77F099397094342571A /* Pods-Plugin.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Plugin.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Plugin/Pods-Plugin.debug.xcconfig"; sourceTree = "<group>"; };
10096
91781294A431A2A7CC6EB714 /* Pods-Plugin.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Plugin.release.xcconfig"; path = "Pods/Target Support Files/Pods-Plugin/Pods-Plugin.release.xcconfig"; sourceTree = "<group>"; };
@@ -205,8 +201,6 @@
205201
2C3AF2F725B591BC00C5EF2F /* Utils */,
206202
2F98D68124C9AAE400613A4C /* CapacitorSQLite.swift */,
207203
50E1A94720377CB70090CE1A /* CapacitorSQLitePlugin.swift */,
208-
50ADFF8B201F53D600D50D53 /* CapacitorSQLitePlugin.h */,
209-
50ADFFA72020EE4F00D50D53 /* CapacitorSQLitePlugin.m */,
210204
50ADFF8C201F53D600D50D53 /* Info.plist */,
211205
2CB89AE227C57603001F464B /* BiometricIDAuthentication.swift */,
212206
2C3AF2F325B58EC400C5EF2F /* Database.swift */,
@@ -255,7 +249,6 @@
255249
isa = PBXHeadersBuildPhase;
256250
buildActionMask = 2147483647;
257251
files = (
258-
50ADFF99201F53D600D50D53 /* CapacitorSQLitePlugin.h in Headers */,
259252
);
260253
runOnlyForDeploymentPostprocessing = 0;
261254
};
@@ -451,7 +444,6 @@
451444
2CB9B93A2601EF3700743730 /* UtilsMigrate.swift in Sources */,
452445
2CB4368728EEEFF500C973AA /* UtilsDownloadFromHTTP.swift in Sources */,
453446
2C8C860B2A84373F001F9CB2 /* UtilsSQLStatement.swift in Sources */,
454-
50ADFFA82020EE4F00D50D53 /* CapacitorSQLitePlugin.m in Sources */,
455447
2C3AF31A25B593E500C5EF2F /* UtilsUpgrade.swift in Sources */,
456448
2C3AF31225B5938500C5EF2F /* UtilsJson.swift in Sources */,
457449
2CB89AE327C57603001F464B /* BiometricIDAuthentication.swift in Sources */,

ios/Plugin/CapacitorSQLitePlugin.h

Lines changed: 0 additions & 10 deletions
This file was deleted.

ios/Plugin/CapacitorSQLitePlugin.m

Lines changed: 0 additions & 56 deletions
This file was deleted.

ios/Plugin/CapacitorSQLitePlugin.swift

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,60 @@ import Capacitor
44
@objc(CapacitorSQLitePlugin)
55
// swiftlint:disable file_length
66
// swiftlint:disable type_body_length
7-
public class CapacitorSQLitePlugin: CAPPlugin {
7+
public class CapacitorSQLitePlugin: CAPPlugin, CAPBridgedPlugin {
8+
public let identifier = "CapacitorSQLitePlugin"
9+
public let jsName = "CapacitorSQLite"
10+
public let pluginMethods: [CAPPluginMethod] = [
11+
CAPPluginMethod(name: "echo", returnType: CAPPluginReturnPromise),
12+
CAPPluginMethod(name: "createConnection", returnType: CAPPluginReturnPromise),
13+
CAPPluginMethod(name: "closeConnection", returnType: CAPPluginReturnPromise),
14+
CAPPluginMethod(name: "createNCConnection", returnType: CAPPluginReturnPromise),
15+
CAPPluginMethod(name: "closeNCConnection", returnType: CAPPluginReturnPromise),
16+
CAPPluginMethod(name: "getNCDatabasePath", returnType: CAPPluginReturnPromise),
17+
CAPPluginMethod(name: "open", returnType: CAPPluginReturnPromise),
18+
CAPPluginMethod(name: "close", returnType: CAPPluginReturnPromise),
19+
CAPPluginMethod(name: "getUrl", returnType: CAPPluginReturnPromise),
20+
CAPPluginMethod(name: "getVersion", returnType: CAPPluginReturnPromise),
21+
CAPPluginMethod(name: "execute", returnType: CAPPluginReturnPromise),
22+
CAPPluginMethod(name: "executeSet", returnType: CAPPluginReturnPromise),
23+
CAPPluginMethod(name: "run", returnType: CAPPluginReturnPromise),
24+
CAPPluginMethod(name: "query", returnType: CAPPluginReturnPromise),
25+
CAPPluginMethod(name: "isDBExists", returnType: CAPPluginReturnPromise),
26+
CAPPluginMethod(name: "isDBOpen", returnType: CAPPluginReturnPromise),
27+
CAPPluginMethod(name: "deleteDatabase", returnType: CAPPluginReturnPromise),
28+
CAPPluginMethod(name: "importFromJson", returnType: CAPPluginReturnPromise),
29+
CAPPluginMethod(name: "isJsonValid", returnType: CAPPluginReturnPromise),
30+
CAPPluginMethod(name: "exportToJson", returnType: CAPPluginReturnPromise),
31+
CAPPluginMethod(name: "deleteExportedRows", returnType: CAPPluginReturnPromise),
32+
CAPPluginMethod(name: "createSyncTable", returnType: CAPPluginReturnPromise),
33+
CAPPluginMethod(name: "setSyncDate", returnType: CAPPluginReturnPromise),
34+
CAPPluginMethod(name: "getSyncDate", returnType: CAPPluginReturnPromise),
35+
CAPPluginMethod(name: "addUpgradeStatement", returnType: CAPPluginReturnPromise),
36+
CAPPluginMethod(name: "copyFromAssets", returnType: CAPPluginReturnPromise),
37+
CAPPluginMethod(name: "isDatabase", returnType: CAPPluginReturnPromise),
38+
CAPPluginMethod(name: "isNCDatabase", returnType: CAPPluginReturnPromise),
39+
CAPPluginMethod(name: "isTableExists", returnType: CAPPluginReturnPromise),
40+
CAPPluginMethod(name: "getDatabaseList", returnType: CAPPluginReturnPromise),
41+
CAPPluginMethod(name: "getTableList", returnType: CAPPluginReturnPromise),
42+
CAPPluginMethod(name: "getMigratableDbList", returnType: CAPPluginReturnPromise),
43+
CAPPluginMethod(name: "addSQLiteSuffix", returnType: CAPPluginReturnPromise),
44+
CAPPluginMethod(name: "deleteOldDatabases", returnType: CAPPluginReturnPromise),
45+
CAPPluginMethod(name: "moveDatabasesAndAddSuffix", returnType: CAPPluginReturnPromise),
46+
CAPPluginMethod(name: "checkConnectionsConsistency", returnType: CAPPluginReturnPromise),
47+
CAPPluginMethod(name: "isSecretStored", returnType: CAPPluginReturnPromise),
48+
CAPPluginMethod(name: "setEncryptionSecret", returnType: CAPPluginReturnPromise),
49+
CAPPluginMethod(name: "changeEncryptionSecret", returnType: CAPPluginReturnPromise),
50+
CAPPluginMethod(name: "clearEncryptionSecret", returnType: CAPPluginReturnPromise),
51+
CAPPluginMethod(name: "getFromHTTPRequest", returnType: CAPPluginReturnPromise),
52+
CAPPluginMethod(name: "checkEncryptionSecret", returnType: CAPPluginReturnPromise),
53+
CAPPluginMethod(name: "isInConfigEncryption", returnType: CAPPluginReturnPromise),
54+
CAPPluginMethod(name: "isInConfigBiometricAuth", returnType: CAPPluginReturnPromise),
55+
CAPPluginMethod(name: "isDatabaseEncrypted", returnType: CAPPluginReturnPromise),
56+
CAPPluginMethod(name: "beginTransaction", returnType: CAPPluginReturnPromise),
57+
CAPPluginMethod(name: "commitTransaction", returnType: CAPPluginReturnPromise),
58+
CAPPluginMethod(name: "rollbackTransaction", returnType: CAPPluginReturnPromise),
59+
CAPPluginMethod(name: "isTransactionActive", returnType: CAPPluginReturnPromise)
60+
]
861
private var implementation: CapacitorSQLite?
962
private let modeList: [String] = ["no-encryption", "encryption", "secret",
1063
"decryption", "newsecret", "wrongsecret"]

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
"src/",
1414
"ios/Plugin/",
1515
"electron/",
16-
"CapacitorCommunitySqlite.podspec"
16+
"CapacitorCommunitySqlite.podspec",
17+
"Package.swift"
1718
],
1819
"author": "Robin Genz <mail@robingenz.dev>",
1920
"license": "MIT",
@@ -57,7 +58,8 @@
5758
"watch": "tsc --watch",
5859
"test": "echo \"No test specified\"",
5960
"prepublishOnly": "npm run build && npm run build-electron && npm run docgen",
60-
"release": "commit-and-tag-version"
61+
"release": "commit-and-tag-version",
62+
"ios:spm:install": "swift package resolve"
6163
},
6264
"devDependencies": {
6365
"@capacitor/android": "^8.0.0",

0 commit comments

Comments
 (0)