@screeb/react-native 2.1.18 → 2.2.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 (34) hide show
  1. package/README.md +24 -5
  2. package/{screeb-module.podspec → ScreebReactNative.podspec} +6 -4
  3. package/android/build.gradle +36 -86
  4. package/android/gradle.properties +5 -3
  5. package/android/src/main/AndroidManifest.xml +1 -3
  6. package/android/src/main/java/app/screeb/reactnative/ScreebReactNativeModule.kt +258 -0
  7. package/android/src/main/java/app/screeb/reactnative/ScreebReactNativePackage.kt +33 -0
  8. package/ios/ScreebReactNative.m +63 -0
  9. package/ios/ScreebReactNative.swift +229 -0
  10. package/lib/module/NativeScreebReactNative.js +10 -0
  11. package/lib/module/NativeScreebReactNative.js.map +1 -0
  12. package/lib/module/index.js +170 -88
  13. package/lib/module/index.js.map +1 -0
  14. package/lib/module/package.json +1 -0
  15. package/lib/typescript/package.json +1 -0
  16. package/lib/typescript/src/NativeScreebReactNative.d.ts +49 -0
  17. package/lib/typescript/src/NativeScreebReactNative.d.ts.map +1 -0
  18. package/lib/typescript/src/index.d.ts +25 -0
  19. package/lib/typescript/src/index.d.ts.map +1 -0
  20. package/package.json +153 -59
  21. package/src/NativeScreebReactNative.ts +81 -0
  22. package/src/index.tsx +255 -144
  23. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  24. package/android/gradle/wrapper/gradle-wrapper.properties +0 -5
  25. package/android/gradlew +0 -185
  26. package/android/gradlew.bat +0 -89
  27. package/android/src/main/java/com/screebmodule/ScreebModuleModule.kt +0 -186
  28. package/android/src/main/java/com/screebmodule/ScreebModulePackage.kt +0 -17
  29. package/ios/ScreebModule-Bridging-Header.h +0 -3
  30. package/ios/ScreebModule.m +0 -24
  31. package/ios/ScreebModule.swift +0 -210
  32. package/ios/ScreebModule.xcodeproj/project.pbxproj +0 -293
  33. package/lib/commonjs/index.js +0 -130
  34. package/lib/typescript/index.d.ts +0 -13
@@ -0,0 +1,229 @@
1
+ import Screeb
2
+ import React
3
+ import UIKit
4
+ import Foundation
5
+
6
+ @objc(ScreebReactNative)
7
+ class ScreebReactNative: RCTEventEmitter {
8
+ private var hasListeners = false
9
+ private var pendingEvents: [[String: Any]] = []
10
+
11
+ override func startObserving() {
12
+ hasListeners = true
13
+ flushPendingEventsIfPossible()
14
+ }
15
+
16
+ override func stopObserving() {
17
+ hasListeners = false
18
+ }
19
+
20
+ @objc(initSdk:userId:properties:hooks:initOptions:language:)
21
+ func initSdk(
22
+ _ channelId: String,
23
+ userId userId_: String?,
24
+ properties properties_: [String: Any]?,
25
+ hooks hooks_: [String: Any]?,
26
+ initOptions initOptions_: [String: Any]?,
27
+ language language_: String?
28
+ ) {
29
+ Screeb.setSecondarySDK(name: "react-native", version: "2.2.1")
30
+ var mapHooks: [String: Any]? = nil
31
+ if (hooks_ != nil) {
32
+ mapHooks = [:]
33
+ hooks_?.forEach{ hook in
34
+ if (hook.key == "version") {
35
+ if let v = hook.value as? String {
36
+ mapHooks![hook.key] = v
37
+ }
38
+ } else {
39
+ mapHooks![hook.key] = { [weak self] (payload: Any) -> () in
40
+ self?.emitHookEvent(hookId: hook.value, payload: payload)
41
+ }
42
+ }
43
+ }
44
+ }
45
+
46
+ var initOptions = InitOptions()
47
+ initOptions_?.forEach{ option in
48
+ if (option.key == "isDebugMode") {
49
+ initOptions = InitOptions(isDebugMode: option.value as? Bool)
50
+ }
51
+ }
52
+
53
+ DispatchQueue.main.async {
54
+ Screeb.initSdk(context: nil, channelId: channelId, identity: userId_, visitorProperty: properties_ ?? [:], initOptions: initOptions, hooks: mapHooks, language: language_)
55
+ }
56
+ }
57
+
58
+ @objc func setIdentity(_ userId: String, properties properties_: [String: Any]?) {
59
+ DispatchQueue.main.async {
60
+ Screeb.setIdentity(uniqueVisitorId: userId, visitorProperty: properties_ ?? [:])
61
+ }
62
+ }
63
+
64
+ @objc func trackEvent(_ eventId: String, properties properties_: [String: Any]?) {
65
+ DispatchQueue.main.async {
66
+ Screeb.trackEvent(name: eventId, trackingEventProperties: properties_ ?? [:])
67
+ }
68
+ }
69
+
70
+ @objc func trackScreen(_ screen: String, properties properties_: [String: Any]?) {
71
+ DispatchQueue.main.async {
72
+ Screeb.trackScreen(name: screen, trackingEventProperties: properties_ ?? [:])
73
+ }
74
+ }
75
+
76
+ @objc(setProperties:)
77
+ func setVisitorPropertiesImpl(_ properties: [String: Any]?) {
78
+ DispatchQueue.main.async {
79
+ Screeb.visitorProperty(visitorProperty: properties ?? [:])
80
+ }
81
+ }
82
+
83
+ @objc func startSurvey(_ surveyId: String, allowMultipleResponses allowMultipleResponses_: Bool, hiddenFields hiddenFields_: [String: Any]?,ignoreSurveyStatus ignoreSurveyStatus_: Bool, hooks hooks_: [String: Any]?, language language_: String?, distributionId distributionId_: String?) {
84
+ var mapHooks: [String: Any]? = nil
85
+ if (hooks_ != nil) {
86
+ mapHooks = [:]
87
+ hooks_?.forEach{ hook in
88
+ if(hook.key == "version"){
89
+ if let v = hook.value as? String {
90
+ mapHooks![hook.key] = v
91
+ }
92
+ } else {
93
+ mapHooks![hook.key] = { [weak self] (payload: Any) -> () in
94
+ self?.emitHookEvent(hookId: hook.value, payload: payload)
95
+ }
96
+ }
97
+ }
98
+ }
99
+ DispatchQueue.main.async {
100
+ Screeb.startSurvey(surveyId: surveyId, allowMultipleResponses: allowMultipleResponses_, hiddenFields: hiddenFields_ ?? [:], ignoreSurveyStatus: ignoreSurveyStatus_, hooks: mapHooks, language: language_, distributionId: distributionId_)
101
+ }
102
+ }
103
+
104
+ @objc func startMessage(_ messageId: String, allowMultipleResponses allowMultipleResponses_: Bool, hiddenFields hiddenFields_: [String: Any]?, ignoreMessageStatus ignoreMessageStatus_: Bool, hooks hooks_: [String: Any]?, language language_: String?, distributionId distributionId_: String?) {
105
+ var mapHooks: [String: Any]? = nil
106
+ if (hooks_ != nil) {
107
+ mapHooks = [:]
108
+ hooks_?.forEach{ hook in
109
+ if(hook.key == "version"){
110
+ if let v = hook.value as? String {
111
+ mapHooks![hook.key] = v
112
+ }
113
+ } else {
114
+ mapHooks![hook.key] = { [weak self] (payload: Any) -> () in
115
+ self?.emitHookEvent(hookId: hook.value, payload: payload)
116
+ }
117
+ }
118
+ }
119
+ }
120
+ DispatchQueue.main.async {
121
+ Screeb.startMessage(messageId: messageId, allowMultipleResponses: allowMultipleResponses_, hiddenFields: hiddenFields_ ?? [:], ignoreMessageStatus: ignoreMessageStatus_, hooks: mapHooks, language: language_, distributionId: distributionId_)
122
+ }
123
+ }
124
+
125
+ @objc func assignGroup(_ type: String?, name name_: String, properties properties_: [String: Any]?) {
126
+ DispatchQueue.main.async {
127
+ Screeb.assignGroup(type: type, name: name_, properties: properties_ ?? [:])
128
+ }
129
+ }
130
+
131
+ @objc func unassignGroup(_ type: String?, name name_: String, properties properties_: [String: Any]?) {
132
+ DispatchQueue.main.async {
133
+ Screeb.assignGroup(type: type, name: name_, properties: properties_ ?? [:])
134
+ }
135
+ }
136
+
137
+ @objc func resetIdentity(){
138
+ DispatchQueue.main.async {
139
+ Screeb.resetIdentity()
140
+ }
141
+ }
142
+
143
+ @objc func closeSdk(){
144
+ DispatchQueue.main.async {
145
+ Screeb.closeSdk()
146
+ }
147
+ }
148
+
149
+ @objc func closeSurvey(_ surveyId: String?){
150
+ DispatchQueue.main.async {
151
+ Screeb.closeSurvey(surveyId: surveyId)
152
+ }
153
+ }
154
+
155
+ @objc func closeMessage(_ messageId: String?){
156
+ DispatchQueue.main.async {
157
+ Screeb.closeMessage(messageId: messageId)
158
+ }
159
+ }
160
+
161
+ @objc func onHookResult(_ hookId: String, payload: [String: Any]?) {
162
+ DispatchQueue.main.async {
163
+ if payload != nil {
164
+ Screeb.onHookResult(hookId, payload!["result"])
165
+ }
166
+ }
167
+ }
168
+
169
+ @objc func debug(){
170
+ DispatchQueue.main.async {
171
+ Screeb.debug()
172
+ }
173
+ }
174
+
175
+ @objc func debugTargeting(){
176
+ DispatchQueue.main.async {
177
+ Screeb.debugTargeting()
178
+ }
179
+ }
180
+
181
+ private func emitHookEvent(hookId: Any?, payload: Any) {
182
+ guard let hookKey = hookId as? String else {
183
+ return
184
+ }
185
+
186
+ let body: [String: Any] = ["hookId": hookKey, "payload": payload]
187
+
188
+ let sendBlock = { [weak self] in
189
+ guard let self else { return }
190
+ if self.hasListeners, self.callableJSModules != nil {
191
+ self.sendEvent(withName: "ScreebEvent", body: body)
192
+ } else {
193
+ self.pendingEvents.append(body)
194
+ }
195
+ }
196
+
197
+ if Thread.isMainThread {
198
+ sendBlock()
199
+ flushPendingEventsIfPossible()
200
+ } else {
201
+ DispatchQueue.main.async {
202
+ sendBlock()
203
+ self.flushPendingEventsIfPossible()
204
+ }
205
+ }
206
+ }
207
+
208
+ private func flushPendingEventsIfPossible() {
209
+ guard hasListeners, callableJSModules != nil, !pendingEvents.isEmpty else { return }
210
+
211
+ let events = pendingEvents
212
+ pendingEvents.removeAll()
213
+
214
+ let flushBlock = { [weak self] in
215
+ guard let self else { return }
216
+ events.forEach { self.sendEvent(withName: "ScreebEvent", body: $0) }
217
+ }
218
+
219
+ if Thread.isMainThread {
220
+ flushBlock()
221
+ } else {
222
+ DispatchQueue.main.async(execute: flushBlock)
223
+ }
224
+ }
225
+
226
+ override func supportedEvents() -> [String]! {
227
+ return ["ScreebEvent"]
228
+ }
229
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ import { TurboModuleRegistry } from "react-native";
4
+ const module = TurboModuleRegistry.get("ScreebReactNative");
5
+ if (!module) {
6
+ const LINKING_ERROR = `The native module "ScreebReactNative" could not be found.\n` + "- Ensure the iOS/Android native code is compiled (iOS: run 'pod install' in the example app, then rebuild).\n" + "- If you're developing locally, run 'yarn prepare' to rebuild the JS output.\n" + "- On iOS, make sure the podspec is included and the app is rebuilt (not just reloaded).";
7
+ throw new Error(LINKING_ERROR);
8
+ }
9
+ export default module;
10
+ //# sourceMappingURL=NativeScreebReactNative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TurboModuleRegistry","module","get","LINKING_ERROR","Error"],"sourceRoot":"../../src","sources":["NativeScreebReactNative.ts"],"mappings":";;AAAA,SAA2BA,mBAAmB,QAAQ,cAAc;AAsEpE,MAAMC,MAAM,GAAGD,mBAAmB,CAACE,GAAG,CAAO,mBAAmB,CAAC;AACjE,IAAI,CAACD,MAAM,EAAE;EACZ,MAAME,aAAa,GAClB,6DAA6D,GAC7D,+GAA+G,GAC/G,gFAAgF,GAChF,yFAAyF;EAC1F,MAAM,IAAIC,KAAK,CAACD,aAAa,CAAC;AAC/B;AAEA,eAAeF,MAAM","ignoreList":[]}
@@ -1,115 +1,197 @@
1
- import { DeviceEventEmitter, NativeEventEmitter, NativeModules, Platform, } from "react-native";
2
- const LINKING_ERROR = `The package '@screeb/react-native' doesn't seem to be linked. Make sure: \n\n` +
3
- Platform.select({ ios: "- You have run 'pod install'\n", default: "" }) +
4
- "- You rebuilt the app after installing the package\n" +
5
- "- You are not using Expo managed workflow\n";
6
- const ScreebModule = NativeModules.ScreebModule
7
- ? NativeModules.ScreebModule
8
- : new Proxy({}, {
9
- get() {
10
- throw new Error(LINKING_ERROR);
11
- },
1
+ "use strict";
2
+
3
+ import { DeviceEventEmitter, NativeEventEmitter, NativeModules, Platform } from "react-native";
4
+ import ScreebReactNative from "./NativeScreebReactNative.js";
5
+
6
+ // biome-ignore lint/suspicious/noExplicitAny: .
7
+ let emitter;
8
+ // initSdk
9
+ export function initSdk(channelId, userId, properties, hooks, initOptions, language) {
10
+ // Use NativeEventEmitter on both platforms; pass the native module on iOS
11
+ // and rely on the default emitter on Android.
12
+ if (Platform.OS === "ios") {
13
+ emitter = new NativeEventEmitter(NativeModules.ScreebReactNative);
14
+ } else {
15
+ emitter = DeviceEventEmitter;
16
+ }
17
+ emitter.addListener("ScreebEvent", handleEvent);
18
+ let mapHooksId;
19
+ if (hooks != null) {
20
+ mapHooksId = {};
21
+ Object.keys(hooks).map(key => {
22
+ if (key === "version") {
23
+ const v = hooks.version ?? undefined;
24
+ if (v) mapHooksId = {
25
+ ...mapHooksId,
26
+ version: v
27
+ };
28
+ } else {
29
+ const uuid = Date.now().toString() + Math.random().toString() + key;
30
+ const fn = hooks[key];
31
+ if (typeof fn === "function") {
32
+ hooksRegistry.set(uuid, fn);
33
+ }
34
+ mapHooksId = {
35
+ ...mapHooksId,
36
+ [key]: uuid
37
+ };
38
+ }
12
39
  });
13
- let hooksRegistry = new Map();
14
- export function initSdk(androidChannelId, iosChannelId, userId, properties, hooks, isDebugMode, language) {
15
- const emitter = Platform.OS === "ios"
16
- ? new NativeEventEmitter(NativeModules.ScreebModule)
17
- : DeviceEventEmitter;
18
- emitter.addListener("ScreebEvent", handleEvent);
19
- let mapHooksId = undefined;
20
- if (hooks != null) {
21
- mapHooksId = new Object();
22
- Object.keys(hooks).map((key) => {
23
- if (key == "version") {
24
- mapHooksId = { ...mapHooksId, version: hooks[key] };
25
- }
26
- else {
27
- let uuid = Date.now().toString() + Math.random().toString() + key;
28
- hooksRegistry.set(uuid, hooks[key]);
29
- mapHooksId = { ...mapHooksId, [key]: uuid };
30
- }
31
- });
32
- }
33
- if (Platform.OS === "ios") {
34
- return ScreebModule.initSdk(iosChannelId, userId, properties, mapHooksId, isDebugMode, language);
35
- }
36
- else {
37
- return ScreebModule.initSdk(androidChannelId, userId, properties, mapHooksId, isDebugMode, language);
38
- }
40
+ }
41
+ return ScreebReactNative.initSdk(channelId, userId, toObject(properties), mapHooksId, initOptions, language);
39
42
  }
43
+
44
+ // setIdentity
40
45
  export function setIdentity(userId, properties) {
41
- return ScreebModule.setIdentity(userId, properties);
46
+ return ScreebReactNative.setIdentity(userId, toObject(properties));
42
47
  }
48
+
49
+ // setProperties
43
50
  export function setProperties(properties) {
44
- return ScreebModule.setProperties(properties);
51
+ return ScreebReactNative.setProperties(toObject(properties));
45
52
  }
53
+
54
+ // assignGroup
46
55
  export function assignGroup(type, name, properties) {
47
- return ScreebModule.assignGroup(type, name, properties);
56
+ return ScreebReactNative.assignGroup(type, name, toObject(properties));
48
57
  }
58
+
59
+ // unassignGroup
49
60
  export function unassignGroup(type, name, properties) {
50
- return ScreebModule.unassignGroup(type, name, properties);
61
+ return ScreebReactNative.unassignGroup(type, name, toObject(properties));
51
62
  }
63
+
64
+ // trackEvent
52
65
  export function trackEvent(name, properties) {
53
- return ScreebModule.trackEvent(name, properties);
66
+ return ScreebReactNative.trackEvent(name, toObject(properties));
54
67
  }
68
+
69
+ // trackScreen
55
70
  export function trackScreen(name, properties) {
56
- return ScreebModule.trackScreen(name, properties);
57
- }
58
- export function startSurvey(surveyId, allowMultipleResponses, hiddenFields, ignoreSurveyStatus, hooks, language) {
59
- let mapHooksId = undefined;
60
- if (hooks != undefined) {
61
- mapHooksId = new Object();
62
- Object.keys(hooks).map((key) => {
63
- if (key == "version") {
64
- mapHooksId = { ...mapHooksId, version: hooks[key] };
65
- }
66
- else {
67
- let uuid = Date.now().toString() + Math.random().toString() + key;
68
- hooksRegistry.set(uuid, hooks[key]);
69
- mapHooksId = { ...mapHooksId, [key]: uuid };
70
- }
71
- });
72
- }
73
- return ScreebModule.startSurvey(surveyId, allowMultipleResponses ?? true, hiddenFields, ignoreSurveyStatus ?? true, mapHooksId, language);
71
+ return ScreebReactNative.trackScreen(name, toObject(properties));
74
72
  }
73
+
74
+ // startSurvey
75
+ export function startSurvey(surveyId, allowMultipleResponses, hiddenFields, ignoreSurveyStatus, hooks, language, distributionId) {
76
+ let mapHooksId;
77
+ if (hooks !== undefined) {
78
+ mapHooksId = {};
79
+ Object.keys(hooks).map(key => {
80
+ if (key === "version") {
81
+ const v = hooks.version ?? undefined;
82
+ if (v) mapHooksId = {
83
+ ...mapHooksId,
84
+ version: v
85
+ };
86
+ } else {
87
+ const uuid = Date.now().toString() + Math.random().toString() + key;
88
+ const fn = hooks[key];
89
+ if (typeof fn === "function") {
90
+ hooksRegistry.set(uuid, fn);
91
+ }
92
+ mapHooksId = {
93
+ ...mapHooksId,
94
+ [key]: uuid
95
+ };
96
+ }
97
+ });
98
+ }
99
+ return ScreebReactNative.startSurvey(surveyId, allowMultipleResponses ?? true, toObject(hiddenFields), ignoreSurveyStatus ?? true, mapHooksId, language, distributionId);
100
+ }
101
+
102
+ // startMessage
103
+ export function startMessage(messageId, allowMultipleResponses, hiddenFields, ignoreMessageStatus, hooks, language, distributionId) {
104
+ let mapHooksId;
105
+ if (hooks !== undefined) {
106
+ mapHooksId = {};
107
+ Object.keys(hooks).map(key => {
108
+ if (key === "version") {
109
+ const v = hooks.version ?? undefined;
110
+ if (v) mapHooksId = {
111
+ ...mapHooksId,
112
+ version: v
113
+ };
114
+ } else {
115
+ const uuid = Date.now().toString() + Math.random().toString() + key;
116
+ const fn = hooks[key];
117
+ if (typeof fn === "function") {
118
+ hooksRegistry.set(uuid, fn);
119
+ }
120
+ mapHooksId = {
121
+ ...mapHooksId,
122
+ [key]: uuid
123
+ };
124
+ }
125
+ });
126
+ }
127
+ return ScreebReactNative.startMessage(messageId, allowMultipleResponses ?? true, toObject(hiddenFields), ignoreMessageStatus ?? true, mapHooksId, language, distributionId);
128
+ }
129
+
130
+ // debug
75
131
  export function debug() {
76
- return ScreebModule.debug();
132
+ return ScreebReactNative.debug();
77
133
  }
134
+
135
+ // debugTargeting
78
136
  export function debugTargeting() {
79
- return ScreebModule.debugTargeting();
137
+ return ScreebReactNative.debugTargeting();
80
138
  }
139
+
140
+ // resetIdentity
81
141
  export function resetIdentity() {
82
- return ScreebModule.resetIdentity();
142
+ return ScreebReactNative.resetIdentity();
83
143
  }
144
+
145
+ // closeSdk
84
146
  export function closeSdk() {
85
- return ScreebModule.closeSdk();
147
+ if (emitter) {
148
+ emitter.removeAllListeners("ScreebEvent");
149
+ emitter = undefined;
150
+ }
151
+ return ScreebReactNative.closeSdk();
152
+ }
153
+
154
+ // closeSurvey
155
+ export function closeSurvey(surveyId) {
156
+ return ScreebReactNative.closeSurvey(surveyId);
86
157
  }
87
- export function closeSurvey() {
88
- return ScreebModule.closeSurvey();
158
+
159
+ // closeMessage
160
+ export function closeMessage(messageId) {
161
+ return ScreebReactNative.closeMessage(messageId);
89
162
  }
163
+ const hooksRegistry = new Map();
90
164
  function handleEvent(event) {
91
- if (event?.hookId != null) {
92
- let hook = hooksRegistry.get(event.hookId);
93
- if (hook != null) {
94
- const result = hook(event.payload);
95
- const parsedPayload = JSON.parse(event.payload);
96
- const originalHookId = parsedPayload?.hook_id;
97
- if (originalHookId) {
98
- // result must be a map to fit with react native allowed types
99
- // Check if hook is a promise/async function
100
- if (result instanceof Promise) {
101
- result
102
- .then((result) => {
103
- ScreebModule.onHookResult(originalHookId, { result });
104
- })
105
- .catch((error) => {
106
- console.error(error);
107
- });
108
- }
109
- else {
110
- ScreebModule.onHookResult(originalHookId, { result });
111
- }
112
- }
165
+ if (event?.hookId != null) {
166
+ const hook = hooksRegistry.get(event.hookId);
167
+ if (hook != null) {
168
+ const payload = event.payload ? typeof event.payload !== "string" ? JSON.stringify(event.payload) : event.payload : "{}";
169
+ const result = hook(payload);
170
+ const parsedPayload = JSON.parse(payload);
171
+ const originalHookId = parsedPayload?.hook_id;
172
+ if (originalHookId) {
173
+ if (result instanceof Promise) {
174
+ result.then(result => {
175
+ ScreebReactNative.onHookResult(originalHookId, {
176
+ result
177
+ });
178
+ }).catch(error => {
179
+ console.error(error);
180
+ });
181
+ } else {
182
+ ScreebReactNative.onHookResult(originalHookId, {
183
+ result
184
+ });
113
185
  }
186
+ }
114
187
  }
188
+ }
189
+ }
190
+ function toObject(value) {
191
+ if (value == null) return undefined;
192
+ if (value instanceof Map) {
193
+ return Object.fromEntries(value);
194
+ }
195
+ return value;
115
196
  }
197
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DeviceEventEmitter","NativeEventEmitter","NativeModules","Platform","ScreebReactNative","emitter","initSdk","channelId","userId","properties","hooks","initOptions","language","OS","addListener","handleEvent","mapHooksId","Object","keys","map","key","v","version","undefined","uuid","Date","now","toString","Math","random","fn","hooksRegistry","set","toObject","setIdentity","setProperties","assignGroup","type","name","unassignGroup","trackEvent","trackScreen","startSurvey","surveyId","allowMultipleResponses","hiddenFields","ignoreSurveyStatus","distributionId","startMessage","messageId","ignoreMessageStatus","debug","debugTargeting","resetIdentity","closeSdk","removeAllListeners","closeSurvey","closeMessage","Map","event","hookId","hook","get","payload","JSON","stringify","result","parsedPayload","parse","originalHookId","hook_id","Promise","then","onHookResult","catch","error","console","value","fromEntries"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,49 @@
1
+ import { type TurboModule } from "react-native";
2
+ type HookIdsMap = {
3
+ [key: string]: string;
4
+ };
5
+ type InitOptions = {
6
+ isDebugMode?: boolean;
7
+ disableMirror?: boolean;
8
+ };
9
+ export interface Spec extends TurboModule {
10
+ initSdk(channelId: string, userId?: string, properties?: {
11
+ [key: string]: unknown;
12
+ } | null, hooks?: HookIdsMap, initOptions?: InitOptions, language?: string): Promise<void>;
13
+ setIdentity(userId: string, properties?: {
14
+ [key: string]: unknown;
15
+ } | null): Promise<void>;
16
+ setProperties(properties?: {
17
+ [key: string]: unknown;
18
+ } | null): Promise<void>;
19
+ assignGroup(type: string | null, name: string, properties?: {
20
+ [key: string]: unknown;
21
+ } | null): Promise<void>;
22
+ unassignGroup(type: string | null, name: string, properties?: {
23
+ [key: string]: unknown;
24
+ } | null): Promise<void>;
25
+ trackEvent(name: string, properties?: {
26
+ [key: string]: unknown;
27
+ } | null): Promise<void>;
28
+ trackScreen(name: string, properties?: {
29
+ [key: string]: unknown;
30
+ } | null): Promise<void>;
31
+ startSurvey(surveyId: string, allowMultipleResponses?: boolean, hiddenFields?: {
32
+ [key: string]: unknown;
33
+ } | null, ignoreSurveyStatus?: boolean, hooks?: HookIdsMap, language?: string, distributionId?: string): Promise<void>;
34
+ startMessage(messageId: string, allowMultipleResponses?: boolean, hiddenFields?: {
35
+ [key: string]: unknown;
36
+ } | null, ignoreMessageStatus?: boolean, hooks?: HookIdsMap, language?: string, distributionId?: string): Promise<void>;
37
+ debug(): Promise<void>;
38
+ debugTargeting(): Promise<void>;
39
+ resetIdentity(): Promise<void>;
40
+ closeSdk(): Promise<void>;
41
+ closeSurvey(surveyId?: string): Promise<void>;
42
+ closeMessage(messageId?: string): Promise<void>;
43
+ onHookResult(hookId: string, result: {
44
+ [key: string]: unknown;
45
+ }): Promise<void>;
46
+ }
47
+ declare const _default: Spec;
48
+ export default _default;
49
+ //# sourceMappingURL=NativeScreebReactNative.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeScreebReactNative.d.ts","sourceRoot":"","sources":["../../../src/NativeScreebReactNative.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ type HookMap = {
2
+ version?: string;
3
+ [key: string]: unknown;
4
+ };
5
+ type InitOptions = {
6
+ isDebugMode?: boolean;
7
+ disableMirror?: boolean;
8
+ };
9
+ export declare function initSdk(channelId: string, userId?: string, properties?: Record<string, unknown> | Map<string, unknown>, hooks?: HookMap, initOptions?: InitOptions, language?: string): Promise<void>;
10
+ export declare function setIdentity(userId: string, properties?: Record<string, unknown> | Map<string, unknown> | null): Promise<void>;
11
+ export declare function setProperties(properties?: Record<string, unknown> | Map<string, unknown> | null): Promise<void>;
12
+ export declare function assignGroup(type: string | null, name: string, properties?: Record<string, unknown> | Map<string, unknown> | null): Promise<void>;
13
+ export declare function unassignGroup(type: string | null, name: string, properties?: Record<string, unknown> | Map<string, unknown> | null): Promise<void>;
14
+ export declare function trackEvent(name: string, properties?: Record<string, unknown> | Map<string, unknown> | null): Promise<void>;
15
+ export declare function trackScreen(name: string, properties?: Record<string, unknown> | Map<string, unknown> | null): Promise<void>;
16
+ export declare function startSurvey(surveyId: string, allowMultipleResponses?: boolean, hiddenFields?: Record<string, unknown> | Map<string, unknown> | null, ignoreSurveyStatus?: boolean, hooks?: HookMap, language?: string, distributionId?: string): Promise<void>;
17
+ export declare function startMessage(messageId: string, allowMultipleResponses?: boolean, hiddenFields?: Record<string, unknown> | Map<string, unknown> | null, ignoreMessageStatus?: boolean, hooks?: HookMap, language?: string, distributionId?: string): Promise<void>;
18
+ export declare function debug(): Promise<void>;
19
+ export declare function debugTargeting(): Promise<void>;
20
+ export declare function resetIdentity(): Promise<void>;
21
+ export declare function closeSdk(): Promise<void>;
22
+ export declare function closeSurvey(surveyId?: string): Promise<void>;
23
+ export declare function closeMessage(messageId?: string): Promise<void>;
24
+ export {};
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"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"}