From e4e4330a07b1fe4983f04690a0541dcf6adb9903 Mon Sep 17 00:00:00 2001 From: Seven Du Date: Fri, 29 Nov 2024 20:45:10 +0800 Subject: [PATCH 1/5] feat(ios): support SPM --- .../ios/orm_flutter_ios/Package.swift | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 packages/orm_flutter_ios/ios/orm_flutter_ios/Package.swift diff --git a/packages/orm_flutter_ios/ios/orm_flutter_ios/Package.swift b/packages/orm_flutter_ios/ios/orm_flutter_ios/Package.swift new file mode 100644 index 00000000..8eba7e60 --- /dev/null +++ b/packages/orm_flutter_ios/ios/orm_flutter_ios/Package.swift @@ -0,0 +1,32 @@ +// swift-tools-version: 5.9 + +import PackageDescription + +let package = Package( + name: "orm_flutter_ios", + platforms: [ + .iOS(.v12), + ], + products: [ + .library(name: "orm-flutter-ios", targets: ["PrismaQueryEngineBridge"]), + ], + targets: [ + .target( + name: "PrismaQueryEngineBridge", + dependencies: ["PrismaQueryEngine"], + path: "Sources/query_engine_bridge", + sources: ["bridge.c"], + cSettings: [ + .headerSearchPath("headers"), + .headerSearchPath("include") + ], + linkerSettings: [ + .linkedFramework("PrismaQueryEngine") + ] + ), + .binaryTarget( + name: "PrismaQueryEngine", + path: "Frameworks/QueryEngine.xcframework" + ) + ] +) From 6c32a613ab6e571042aa7d88480c1bfbf5482f39 Mon Sep 17 00:00:00 2001 From: Seven Du Date: Fri, 29 Nov 2024 23:31:36 +0800 Subject: [PATCH 2/5] feat(ios): support SPM --- packages/orm_flutter_ios/CHANGELOG.md | 4 ++++ .../ios/orm_flutter_ios/Package.swift | 23 ++++++++++--------- packages/orm_flutter_ios/pubspec.yaml | 2 +- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/packages/orm_flutter_ios/CHANGELOG.md b/packages/orm_flutter_ios/CHANGELOG.md index 0bf0cfd9..cdcf53a8 100644 --- a/packages/orm_flutter_ios/CHANGELOG.md +++ b/packages/orm_flutter_ios/CHANGELOG.md @@ -1,3 +1,7 @@ +## v0.0.4 + +* Support Swift Package Manager + ## v0.0.3 * Upgrade Prisma CABI engine to `v6.0.0`. diff --git a/packages/orm_flutter_ios/ios/orm_flutter_ios/Package.swift b/packages/orm_flutter_ios/ios/orm_flutter_ios/Package.swift index 8eba7e60..e965cc64 100644 --- a/packages/orm_flutter_ios/ios/orm_flutter_ios/Package.swift +++ b/packages/orm_flutter_ios/ios/orm_flutter_ios/Package.swift @@ -5,28 +5,29 @@ import PackageDescription let package = Package( name: "orm_flutter_ios", platforms: [ - .iOS(.v12), + .iOS(.v12) ], products: [ - .library(name: "orm-flutter-ios", targets: ["PrismaQueryEngineBridge"]), + .library( + name: "orm-flutter-ios", + type: .dynamic, + targets: ["query_engine_bridge"] + ) ], targets: [ .target( - name: "PrismaQueryEngineBridge", - dependencies: ["PrismaQueryEngine"], - path: "Sources/query_engine_bridge", - sources: ["bridge.c"], - cSettings: [ - .headerSearchPath("headers"), - .headerSearchPath("include") + name: "query_engine_bridge", + dependencies: [ + .target(name: "PrismaQueryEngine") ], linkerSettings: [ - .linkedFramework("PrismaQueryEngine") + .linkedFramework("CoreFoundation"), + .linkedFramework("Security"), ] ), .binaryTarget( name: "PrismaQueryEngine", path: "Frameworks/QueryEngine.xcframework" - ) + ), ] ) diff --git a/packages/orm_flutter_ios/pubspec.yaml b/packages/orm_flutter_ios/pubspec.yaml index 1bbf4a25..8d430c33 100644 --- a/packages/orm_flutter_ios/pubspec.yaml +++ b/packages/orm_flutter_ios/pubspec.yaml @@ -3,7 +3,7 @@ description: "Dynamic library implementation library for Prisma Dart and Flutter homepage: https://prisma.pub resolution: workspace -version: 0.0.3 +version: 0.0.4 funding: - https://github.com/sponsors/medz From 74740282150b07e1bc849d4123a034cfdbd49c88 Mon Sep 17 00:00:00 2001 From: Seven Du Date: Fri, 29 Nov 2024 23:35:09 +0800 Subject: [PATCH 3/5] feat(ffi): Support SPM generate --- packages/orm_flutter_ffi/CHANGELOG.md | 6 ++++++ packages/orm_flutter_ffi/lib/src/bindings.dart | 9 ++++++++- packages/orm_flutter_ffi/pubspec.yaml | 6 +++--- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/packages/orm_flutter_ffi/CHANGELOG.md b/packages/orm_flutter_ffi/CHANGELOG.md index eef7809e..51ee0067 100644 --- a/packages/orm_flutter_ffi/CHANGELOG.md +++ b/packages/orm_flutter_ffi/CHANGELOG.md @@ -1,3 +1,9 @@ +## v0.0.2 + +- Upgrade `orm_flutter_android` to 0.0.2 version +- Upgrade `orm_flutter_ios` to 0.0.4 version +- Support SPM build for iOS + ## v0.0.1 - FFI implementation of Prisma and Flutter integration query engine, acknowledged by `orm_flutter` diff --git a/packages/orm_flutter_ffi/lib/src/bindings.dart b/packages/orm_flutter_ffi/lib/src/bindings.dart index f0a6dd07..e4f001dc 100644 --- a/packages/orm_flutter_ffi/lib/src/bindings.dart +++ b/packages/orm_flutter_ffi/lib/src/bindings.dart @@ -5,7 +5,14 @@ import '_generate_bindings.dart'; DynamicLibrary get _dl { if (Platform.isIOS) { - return DynamicLibrary.open('orm_flutter_ios.framework/orm_flutter_ios'); + // Try open SPM generated library. + try { + return DynamicLibrary.open('orm-flutter-ios.framework/orm-flutter-ios'); + + // Fallback open podspec defined library. + } catch (_) { + return DynamicLibrary.open('orm_flutter_ios.framework/orm_flutter_ios'); + } } else if (Platform.isAndroid) { return DynamicLibrary.open("liborm_flutter_android.so"); } diff --git a/packages/orm_flutter_ffi/pubspec.yaml b/packages/orm_flutter_ffi/pubspec.yaml index e3de2c69..3991fa76 100644 --- a/packages/orm_flutter_ffi/pubspec.yaml +++ b/packages/orm_flutter_ffi/pubspec.yaml @@ -4,7 +4,7 @@ homepage: https://prisma.pub repository: https://github.com/medz/prisma-dart resolution: workspace -version: 0.0.1 +version: 0.0.2 funding: - https://github.com/sponsors/medz @@ -19,8 +19,8 @@ dependencies: sdk: flutter ffi: ^2.1.3 orm: ^5.2.1 - orm_flutter_android: ^0.0.1 - orm_flutter_ios: ^0.0.2 + orm_flutter_android: ^0.0.2 + orm_flutter_ios: ^0.0.4 path_provider: ^2.1.5 path: ^1.9.0 From 3311a9469b4c2841bb30faedb5807e5ca99bf663 Mon Sep 17 00:00:00 2001 From: Seven Du Date: Fri, 29 Nov 2024 23:35:21 +0800 Subject: [PATCH 4/5] chore(example): SPM --- .../ios/Runner.xcodeproj/project.pbxproj | 58 +++++++++++++------ .../xcshareddata/xcschemes/Runner.xcscheme | 18 ++++++ examples/flutter_with_orm/lib/main.dart | 12 ++-- 3 files changed, 64 insertions(+), 24 deletions(-) diff --git a/examples/flutter_with_orm/ios/Runner.xcodeproj/project.pbxproj b/examples/flutter_with_orm/ios/Runner.xcodeproj/project.pbxproj index 0541fdbd..0282a21d 100644 --- a/examples/flutter_with_orm/ios/Runner.xcodeproj/project.pbxproj +++ b/examples/flutter_with_orm/ios/Runner.xcodeproj/project.pbxproj @@ -11,6 +11,7 @@ 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; }; 7D84E56EBDA51C775B5208BE /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5865938AA7538E8BB30A100B /* Pods_Runner.framework */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; @@ -72,6 +73,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */, 7D84E56EBDA51C775B5208BE /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -198,13 +200,16 @@ 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 950019065A4353394ABA0B51 /* [CP] Embed Pods Frameworks */, + 1340079823B69081FB578F21 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); dependencies = ( ); name = Runner; + packageProductDependencies = ( + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */, + ); productName = Runner; productReference = 97C146EE1CF9000F007C117D /* Runner.app */; productType = "com.apple.product-type.application"; @@ -238,6 +243,9 @@ Base, ); mainGroup = 97C146E51CF9000F007C117D; + packageReferences = ( + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "FlutterGeneratedPluginSwiftPackage" */, + ); productRefGroup = 97C146EF1CF9000F007C117D /* Products */; projectDirPath = ""; projectRoot = ""; @@ -270,6 +278,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 1340079823B69081FB578F21 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -308,23 +333,6 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 950019065A4353394ABA0B51 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -726,6 +734,20 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "FlutterGeneratedPluginSwiftPackage" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */ = { + isa = XCSwiftPackageProductDependency; + productName = FlutterGeneratedPluginSwiftPackage; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 97C146E61CF9000F007C117D /* Project object */; } diff --git a/examples/flutter_with_orm/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/examples/flutter_with_orm/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 8e3ca5df..15c313e2 100644 --- a/examples/flutter_with_orm/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/examples/flutter_with_orm/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -5,6 +5,24 @@ + + + + + + + + + + { enableDrag: true, showDragHandle: true, builder: (context) { - String name = ''; + final controller = TextEditingController(); return Column( children: [ @@ -104,16 +104,16 @@ class _HomeState extends State { Padding( padding: const EdgeInsets.all(12), child: TextField( + controller: controller, decoration: const InputDecoration(label: Text('Name')), - onChanged: (value) { - print('On changed: $value'); - name = value; - }, ), ), FilledButton( child: const Text('Create'), - onPressed: () => create(name), + onPressed: () { + create(controller.text); + Navigator.pop(context); + }, ), ], ); From 940b3615548915b52b04af9d071c29c5a280e0d7 Mon Sep 17 00:00:00 2001 From: Seven Du Date: Fri, 29 Nov 2024 23:39:01 +0800 Subject: [PATCH 5/5] chore(flutter): v0.5.0 --- packages/orm_flutter/CHANGELOG.md | 22 +++++++++++++++++++++- packages/orm_flutter/pubspec.yaml | 4 ++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/packages/orm_flutter/CHANGELOG.md b/packages/orm_flutter/CHANGELOG.md index 1d222924..774913de 100644 --- a/packages/orm_flutter/CHANGELOG.md +++ b/packages/orm_flutter/CHANGELOG.md @@ -1,3 +1,23 @@ +## v0.5.0 + +To install Prisma Flutter Integration v0.5.0 run this command + +```bash +dart pub add orm_flutter:^v0.5.0 +``` + +Or update your `pubspec.yaml` file: + +```yaml +dependencies: + orm_flutter: ^0.5.0 +``` + +### What's New + +- Upgrade Prisma CABI engine to `v6.0.0` +- Support Swift Package Manager + ## v0.4.0 To install Prisma Flutter Integration v0.4.0 run this command @@ -10,7 +30,7 @@ Or update your `pubspec.yaml` file: ```yaml dependencies: - orm_flutter: ^v0.4.0 + orm_flutter: ^0.4.0 ``` ### What's New diff --git a/packages/orm_flutter/pubspec.yaml b/packages/orm_flutter/pubspec.yaml index e3e77915..6cebef45 100644 --- a/packages/orm_flutter/pubspec.yaml +++ b/packages/orm_flutter/pubspec.yaml @@ -4,7 +4,7 @@ homepage: https://prisma.pub repository: https://github.com/medz/prisma-dart resolution: workspace -version: 0.4.0 +version: 0.5.0 funding: - https://github.com/sponsors/medz @@ -18,7 +18,7 @@ dependencies: flutter: sdk: flutter orm: ^5.2.1 - orm_flutter_ffi: ^0.0.1 + orm_flutter_ffi: ^0.0.2 dev_dependencies: flutter_lints: ^5.0.0