@virex-tech/paywallo-sdk 2.1.0 → 2.2.3

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.
@@ -1,6 +1,7 @@
1
1
  import Foundation
2
2
  import UIKit
3
3
  import CoreTelephony
4
+ import WebKit
4
5
 
5
6
  @objc(PaywalloDevice)
6
7
  class PaywalloDevice: NSObject {
@@ -45,6 +46,12 @@ class PaywalloDevice: NSObject {
45
46
  // Model identifier (sysctl — safe on any thread)
46
47
  let modelId = self.getModelIdentifier()
47
48
 
49
+ // Darwin version (sysctl — synchronous, safe on any thread)
50
+ let darwinVersion = self.getDarwinVersion()
51
+
52
+ // WebKit version extracted from WKWebView user agent
53
+ let webkitVersion = self.getWebKitVersion()
54
+
48
55
  // Carrier: CTTelephonyNetworkInfo is deprecated in iOS 16+ but still functional.
49
56
  // Using conditional to suppress warning; no replacement API exists for carrier name.
50
57
  var carrier = "unknown"
@@ -56,7 +63,7 @@ class PaywalloDevice: NSObject {
56
63
  carrier = name
57
64
  }
58
65
 
59
- let result: NSDictionary = [
66
+ var result: [String: Any] = [
60
67
  "deviceId": deviceId,
61
68
  "model": model,
62
69
  "modelId": modelId,
@@ -72,7 +79,11 @@ class PaywalloDevice: NSObject {
72
79
  "carrier": carrier,
73
80
  "idfv": deviceId,
74
81
  "installerPackage": NSNull(),
82
+ "darwinVersion": darwinVersion as Any,
75
83
  ]
84
+ if let wkv = webkitVersion {
85
+ result["webkitVersion"] = wkv
86
+ }
76
87
 
77
88
  resolve(result)
78
89
  }
@@ -88,4 +99,21 @@ class PaywalloDevice: NSObject {
88
99
  sysctlbyname("hw.machine", &machine, &size, nil, 0)
89
100
  return String(cString: machine)
90
101
  }
102
+
103
+ private func getDarwinVersion() -> String? {
104
+ var size = 0
105
+ sysctlbyname("kern.osrelease", nil, &size, nil, 0)
106
+ guard size > 0 else { return nil }
107
+ var release = [CChar](repeating: 0, count: size)
108
+ sysctlbyname("kern.osrelease", &release, &size, nil, 0)
109
+ return String(cString: release)
110
+ }
111
+
112
+ private func getWebKitVersion() -> String? {
113
+ guard let ua = WKWebView().value(forKey: "userAgent") as? String else { return nil }
114
+ // Extract AppleWebKit/605.1.15 → "605.1.15"
115
+ guard let range = ua.range(of: #"AppleWebKit/([\d.]+)"#, options: .regularExpression) else { return nil }
116
+ let match = String(ua[range])
117
+ return match.components(separatedBy: "/").last
118
+ }
91
119
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@virex-tech/paywallo-sdk",
3
- "version": "2.1.0",
3
+ "version": "2.2.3",
4
4
  "description": "SDK React Native para integração com Paywallo - Paywalls, Subscriptions e Analytics",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -81,7 +81,7 @@
81
81
  "devDependencies": {
82
82
  "@eslint/js": "^9.0.0",
83
83
  "@types/react": "^19.0.0",
84
- "@vitest/coverage-v8": "^4.1.4",
84
+ "@vitest/coverage-v8": "^4.1.5",
85
85
  "eslint": "^9.0.0",
86
86
  "eslint-config-prettier": "^10.0.0",
87
87
  "eslint-plugin-simple-import-sort": "^12.0.0",