@capawesome/capacitor-in-app-browser 0.0.1

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.
Files changed (60) hide show
  1. package/CapawesomeCapacitorInAppBrowser.podspec +17 -0
  2. package/LICENSE +21 -0
  3. package/Package.swift +28 -0
  4. package/README.md +690 -0
  5. package/android/build.gradle +60 -0
  6. package/android/src/main/AndroidManifest.xml +2 -0
  7. package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/InAppBrowser.java +242 -0
  8. package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/InAppBrowserPlugin.java +289 -0
  9. package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/CustomException.java +20 -0
  10. package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/CustomExceptions.java +20 -0
  11. package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/WebViewDialog.java +343 -0
  12. package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/events/BrowserPageNavigationCompletedEvent.java +23 -0
  13. package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/events/MessageReceivedEvent.java +23 -0
  14. package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/options/ExecuteScriptOptions.java +29 -0
  15. package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/options/GetCookiesOptions.java +29 -0
  16. package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/options/OpenInExternalBrowserOptions.java +30 -0
  17. package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/options/OpenInSystemBrowserOptions.java +74 -0
  18. package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/options/OpenInWebViewOptions.java +112 -0
  19. package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/options/PostMessageOptions.java +30 -0
  20. package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/options/WebViewToolbarOptions.java +87 -0
  21. package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/results/ExecuteScriptResult.java +25 -0
  22. package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/results/GetCookiesResult.java +28 -0
  23. package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/interfaces/Callback.java +5 -0
  24. package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/interfaces/EmptyCallback.java +5 -0
  25. package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/interfaces/NonEmptyResultCallback.java +7 -0
  26. package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/interfaces/Result.java +7 -0
  27. package/android/src/main/res/.gitkeep +0 -0
  28. package/dist/docs.json +1173 -0
  29. package/dist/esm/definitions.d.ts +540 -0
  30. package/dist/esm/definitions.js +19 -0
  31. package/dist/esm/definitions.js.map +1 -0
  32. package/dist/esm/index.d.ts +4 -0
  33. package/dist/esm/index.js +7 -0
  34. package/dist/esm/index.js.map +1 -0
  35. package/dist/esm/web.d.ts +14 -0
  36. package/dist/esm/web.js +35 -0
  37. package/dist/esm/web.js.map +1 -0
  38. package/dist/plugin.cjs.js +68 -0
  39. package/dist/plugin.cjs.js.map +1 -0
  40. package/dist/plugin.js +71 -0
  41. package/dist/plugin.js.map +1 -0
  42. package/ios/Plugin/Classes/Events/BrowserPageNavigationCompletedEvent.swift +16 -0
  43. package/ios/Plugin/Classes/Events/MessageReceivedEvent.swift +24 -0
  44. package/ios/Plugin/Classes/Options/ExecuteScriptOptions.swift +17 -0
  45. package/ios/Plugin/Classes/Options/GetCookiesOptions.swift +20 -0
  46. package/ios/Plugin/Classes/Options/OpenInExternalBrowserOptions.swift +20 -0
  47. package/ios/Plugin/Classes/Options/OpenInSystemBrowserOptions.swift +52 -0
  48. package/ios/Plugin/Classes/Options/OpenInWebViewOptions.swift +48 -0
  49. package/ios/Plugin/Classes/Options/PostMessageOptions.swift +17 -0
  50. package/ios/Plugin/Classes/Options/WebViewToolbarOptions.swift +37 -0
  51. package/ios/Plugin/Classes/Results/ExecuteScriptResult.swift +25 -0
  52. package/ios/Plugin/Classes/Results/GetCookiesResult.swift +20 -0
  53. package/ios/Plugin/Classes/WebViewController.swift +224 -0
  54. package/ios/Plugin/Enums/CustomError.swift +49 -0
  55. package/ios/Plugin/InAppBrowser.swift +194 -0
  56. package/ios/Plugin/InAppBrowserHelper.swift +49 -0
  57. package/ios/Plugin/InAppBrowserPlugin.swift +191 -0
  58. package/ios/Plugin/Info.plist +24 -0
  59. package/ios/Plugin/Protocols/Result.swift +5 -0
  60. package/package.json +91 -0
@@ -0,0 +1,191 @@
1
+ import Foundation
2
+ import Capacitor
3
+
4
+ @objc(InAppBrowserPlugin)
5
+ public class InAppBrowserPlugin: CAPPlugin, CAPBridgedPlugin {
6
+ public let identifier = "InAppBrowserPlugin"
7
+ public let jsName = "InAppBrowser"
8
+ public let pluginMethods: [CAPPluginMethod] = [
9
+ CAPPluginMethod(name: "clearCache", returnType: CAPPluginReturnPromise),
10
+ CAPPluginMethod(name: "clearSessionData", returnType: CAPPluginReturnPromise),
11
+ CAPPluginMethod(name: "close", returnType: CAPPluginReturnPromise),
12
+ CAPPluginMethod(name: "executeScript", returnType: CAPPluginReturnPromise),
13
+ CAPPluginMethod(name: "getCookies", returnType: CAPPluginReturnPromise),
14
+ CAPPluginMethod(name: "openInExternalBrowser", returnType: CAPPluginReturnPromise),
15
+ CAPPluginMethod(name: "openInSystemBrowser", returnType: CAPPluginReturnPromise),
16
+ CAPPluginMethod(name: "openInWebView", returnType: CAPPluginReturnPromise),
17
+ CAPPluginMethod(name: "postMessage", returnType: CAPPluginReturnPromise)
18
+ ]
19
+
20
+ public static let eventBrowserClosed = "browserClosed"
21
+ public static let eventBrowserPageLoaded = "browserPageLoaded"
22
+ public static let eventBrowserPageNavigationCompleted = "browserPageNavigationCompleted"
23
+ public static let eventMessageReceived = "messageReceived"
24
+ public static let tag = "InAppBrowserPlugin"
25
+
26
+ private var implementation: InAppBrowser?
27
+
28
+ @objc func clearCache(_ call: CAPPluginCall) {
29
+ implementation?.clearCache(completion: { error in
30
+ if let error = error {
31
+ self.rejectCall(call, error)
32
+ return
33
+ }
34
+ self.resolveCall(call)
35
+ })
36
+ }
37
+
38
+ @objc func clearSessionData(_ call: CAPPluginCall) {
39
+ implementation?.clearSessionData(completion: { error in
40
+ if let error = error {
41
+ self.rejectCall(call, error)
42
+ return
43
+ }
44
+ self.resolveCall(call)
45
+ })
46
+ }
47
+
48
+ @objc func close(_ call: CAPPluginCall) {
49
+ implementation?.close(completion: { error in
50
+ if let error = error {
51
+ self.rejectCall(call, error)
52
+ return
53
+ }
54
+ self.resolveCall(call)
55
+ })
56
+ }
57
+
58
+ @objc func executeScript(_ call: CAPPluginCall) {
59
+ do {
60
+ let options = try ExecuteScriptOptions(call)
61
+
62
+ implementation?.executeScript(options, completion: { result, error in
63
+ if let error = error {
64
+ self.rejectCall(call, error)
65
+ return
66
+ }
67
+ self.resolveCall(call, result)
68
+ })
69
+ } catch {
70
+ rejectCall(call, error)
71
+ }
72
+ }
73
+
74
+ @objc func getCookies(_ call: CAPPluginCall) {
75
+ do {
76
+ let options = try GetCookiesOptions(call)
77
+
78
+ implementation?.getCookies(options, completion: { result, error in
79
+ if let error = error {
80
+ self.rejectCall(call, error)
81
+ return
82
+ }
83
+ self.resolveCall(call, result)
84
+ })
85
+ } catch {
86
+ rejectCall(call, error)
87
+ }
88
+ }
89
+
90
+ override public func load() {
91
+ self.implementation = InAppBrowser(plugin: self)
92
+ }
93
+
94
+ @objc public func notifyBrowserClosedListeners() {
95
+ self.notifyListeners(Self.eventBrowserClosed, data: [:])
96
+ }
97
+
98
+ @objc public func notifyBrowserPageLoadedListeners() {
99
+ self.notifyListeners(Self.eventBrowserPageLoaded, data: [:])
100
+ }
101
+
102
+ @objc public func notifyBrowserPageNavigationCompletedListeners(_ event: BrowserPageNavigationCompletedEvent) {
103
+ self.notifyListeners(Self.eventBrowserPageNavigationCompleted, data: event.toJSObject() as? [String: Any])
104
+ }
105
+
106
+ @objc public func notifyMessageReceivedListeners(_ event: MessageReceivedEvent) {
107
+ self.notifyListeners(Self.eventMessageReceived, data: event.toJSObject() as? [String: Any])
108
+ }
109
+
110
+ @objc func openInExternalBrowser(_ call: CAPPluginCall) {
111
+ do {
112
+ let options = try OpenInExternalBrowserOptions(call)
113
+
114
+ implementation?.openInExternalBrowser(options, completion: { error in
115
+ if let error = error {
116
+ self.rejectCall(call, error)
117
+ return
118
+ }
119
+ self.resolveCall(call)
120
+ })
121
+ } catch {
122
+ rejectCall(call, error)
123
+ }
124
+ }
125
+
126
+ @objc func openInSystemBrowser(_ call: CAPPluginCall) {
127
+ do {
128
+ let options = try OpenInSystemBrowserOptions(call)
129
+
130
+ implementation?.openInSystemBrowser(options, completion: { error in
131
+ if let error = error {
132
+ self.rejectCall(call, error)
133
+ return
134
+ }
135
+ self.resolveCall(call)
136
+ })
137
+ } catch {
138
+ rejectCall(call, error)
139
+ }
140
+ }
141
+
142
+ @objc func openInWebView(_ call: CAPPluginCall) {
143
+ do {
144
+ let options = try OpenInWebViewOptions(call)
145
+
146
+ implementation?.openInWebView(options, completion: { error in
147
+ if let error = error {
148
+ self.rejectCall(call, error)
149
+ return
150
+ }
151
+ self.resolveCall(call)
152
+ })
153
+ } catch {
154
+ rejectCall(call, error)
155
+ }
156
+ }
157
+
158
+ @objc func postMessage(_ call: CAPPluginCall) {
159
+ do {
160
+ let options = try PostMessageOptions(call)
161
+
162
+ implementation?.postMessage(options, completion: { error in
163
+ if let error = error {
164
+ self.rejectCall(call, error)
165
+ return
166
+ }
167
+ self.resolveCall(call)
168
+ })
169
+ } catch {
170
+ rejectCall(call, error)
171
+ }
172
+ }
173
+
174
+ private func rejectCall(_ call: CAPPluginCall, _ error: Error) {
175
+ CAPLog.print("[", InAppBrowserPlugin.tag, "] ", error)
176
+ let code = (error as? CustomError)?.code
177
+ call.reject(error.localizedDescription, code)
178
+ }
179
+
180
+ private func resolveCall(_ call: CAPPluginCall) {
181
+ call.resolve()
182
+ }
183
+
184
+ private func resolveCall(_ call: CAPPluginCall, _ result: Result?) {
185
+ if let result = result?.toJSObject() as? JSObject {
186
+ call.resolve(result)
187
+ } else {
188
+ call.resolve()
189
+ }
190
+ }
191
+ }
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>CFBundleDevelopmentRegion</key>
6
+ <string>$(DEVELOPMENT_LANGUAGE)</string>
7
+ <key>CFBundleExecutable</key>
8
+ <string>$(EXECUTABLE_NAME)</string>
9
+ <key>CFBundleIdentifier</key>
10
+ <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
11
+ <key>CFBundleInfoDictionaryVersion</key>
12
+ <string>6.0</string>
13
+ <key>CFBundleName</key>
14
+ <string>$(PRODUCT_NAME)</string>
15
+ <key>CFBundlePackageType</key>
16
+ <string>FMWK</string>
17
+ <key>CFBundleShortVersionString</key>
18
+ <string>1.0</string>
19
+ <key>CFBundleVersion</key>
20
+ <string>$(CURRENT_PROJECT_VERSION)</string>
21
+ <key>NSPrincipalClass</key>
22
+ <string></string>
23
+ </dict>
24
+ </plist>
@@ -0,0 +1,5 @@
1
+ import Capacitor
2
+
3
+ @objc public protocol Result {
4
+ @objc func toJSObject() -> AnyObject
5
+ }
package/package.json ADDED
@@ -0,0 +1,91 @@
1
+ {
2
+ "name": "@capawesome/capacitor-in-app-browser",
3
+ "version": "0.0.1",
4
+ "description": "Capacitor plugin to open URLs in the external browser, the system browser or an embedded web view.",
5
+ "main": "dist/plugin.cjs.js",
6
+ "module": "dist/esm/index.js",
7
+ "types": "dist/esm/index.d.ts",
8
+ "unpkg": "dist/plugin.js",
9
+ "files": [
10
+ "android/src/main/",
11
+ "android/build.gradle",
12
+ "dist/",
13
+ "ios/Plugin/",
14
+ "CapawesomeCapacitorInAppBrowser.podspec",
15
+ "Package.swift"
16
+ ],
17
+ "author": "Robin Genz <mail@robingenz.dev>",
18
+ "license": "MIT",
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "git+https://github.com/capawesome-team/capacitor-plugins.git"
22
+ },
23
+ "bugs": {
24
+ "url": "https://github.com/capawesome-team/capacitor-plugins/issues"
25
+ },
26
+ "funding": [
27
+ {
28
+ "type": "github",
29
+ "url": "https://github.com/sponsors/capawesome-team/"
30
+ },
31
+ {
32
+ "type": "opencollective",
33
+ "url": "https://opencollective.com/capawesome"
34
+ }
35
+ ],
36
+ "homepage": "https://capawesome.io/docs/plugins/in-app-browser/",
37
+ "keywords": [
38
+ "capacitor",
39
+ "plugin",
40
+ "native"
41
+ ],
42
+ "scripts": {
43
+ "verify": "npm run verify:ios && npm run verify:android && npm run verify:web",
44
+ "verify:ios": "cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..",
45
+ "verify:android": "cd android && ./gradlew clean build test && cd ..",
46
+ "verify:web": "npm run build",
47
+ "lint": "npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint",
48
+ "fmt": "npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format",
49
+ "eslint": "eslint . --ext ts",
50
+ "prettier": "prettier \"**/*.{css,html,ts,js,java}\"",
51
+ "swiftlint": "node-swiftlint",
52
+ "docgen": "docgen --api InAppBrowserPlugin --output-readme README.md --output-json dist/docs.json",
53
+ "build": "npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs",
54
+ "clean": "rimraf ./dist",
55
+ "watch": "tsc --watch",
56
+ "ios:pod:install": "cd ios && pod install --repo-update && cd ..",
57
+ "ios:spm:install": "cd ios && swift package resolve && cd ..",
58
+ "prepublishOnly": "npm run build"
59
+ },
60
+ "devDependencies": {
61
+ "@capacitor/android": "8.0.0",
62
+ "@capacitor/cli": "8.0.0",
63
+ "@capacitor/core": "8.0.0",
64
+ "@capacitor/docgen": "0.3.1",
65
+ "@capacitor/ios": "8.0.0",
66
+ "@ionic/eslint-config": "0.4.0",
67
+ "eslint": "8.57.0",
68
+ "prettier-plugin-java": "2.6.7",
69
+ "rimraf": "6.1.2",
70
+ "rollup": "4.53.3",
71
+ "swiftlint": "2.0.0",
72
+ "typescript": "5.9.3"
73
+ },
74
+ "peerDependencies": {
75
+ "@capacitor/core": ">=8.0.0"
76
+ },
77
+ "eslintConfig": {
78
+ "extends": "@ionic/eslint-config/recommended"
79
+ },
80
+ "capacitor": {
81
+ "ios": {
82
+ "src": "ios"
83
+ },
84
+ "android": {
85
+ "src": "android"
86
+ }
87
+ },
88
+ "publishConfig": {
89
+ "access": "public"
90
+ }
91
+ }