appambit 0.1.0

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 (52) hide show
  1. package/Appambit.podspec +22 -0
  2. package/LICENSE +20 -0
  3. package/README.md +191 -0
  4. package/android/build.gradle +78 -0
  5. package/android/gradle.properties +5 -0
  6. package/android/src/main/AndroidManifest.xml +2 -0
  7. package/android/src/main/java/com/appambit/AppambitAnalyticsModule.kt +56 -0
  8. package/android/src/main/java/com/appambit/AppambitCrashesModule.kt +90 -0
  9. package/android/src/main/java/com/appambit/AppambitModule.kt +22 -0
  10. package/android/src/main/java/com/appambit/AppambitPackage.kt +42 -0
  11. package/ios/AppAmbitAnalytics.h +5 -0
  12. package/ios/AppAmbitAnalytics.mm +45 -0
  13. package/ios/AppAmbitCrashes.h +5 -0
  14. package/ios/AppAmbitCrashes.mm +80 -0
  15. package/ios/AppAmbitSDKWrapper.swift +79 -0
  16. package/ios/Appambit.h +13 -0
  17. package/ios/Appambit.mm +17 -0
  18. package/lib/module/NativeAppambitAnalytics.js +5 -0
  19. package/lib/module/NativeAppambitAnalytics.js.map +1 -0
  20. package/lib/module/NativeAppambitCore.js +5 -0
  21. package/lib/module/NativeAppambitCore.js.map +1 -0
  22. package/lib/module/NativeAppambitCrashes.js +5 -0
  23. package/lib/module/NativeAppambitCrashes.js.map +1 -0
  24. package/lib/module/index.js +99 -0
  25. package/lib/module/index.js.map +1 -0
  26. package/lib/module/package.json +1 -0
  27. package/lib/typescript/appambit_test_app/src/App.d.ts +2 -0
  28. package/lib/typescript/appambit_test_app/src/App.d.ts.map +1 -0
  29. package/lib/typescript/appambit_test_app/src/components/CustomButton.d.ts +8 -0
  30. package/lib/typescript/appambit_test_app/src/components/CustomButton.d.ts.map +1 -0
  31. package/lib/typescript/appambit_test_app/src/components/CustomInput.d.ts +10 -0
  32. package/lib/typescript/appambit_test_app/src/components/CustomInput.d.ts.map +1 -0
  33. package/lib/typescript/appambit_test_app/src/screens/AnalyticsScreen.d.ts +2 -0
  34. package/lib/typescript/appambit_test_app/src/screens/AnalyticsScreen.d.ts.map +1 -0
  35. package/lib/typescript/appambit_test_app/src/screens/CrashesScreen.d.ts +2 -0
  36. package/lib/typescript/appambit_test_app/src/screens/CrashesScreen.d.ts.map +1 -0
  37. package/lib/typescript/appambit_test_app/src/utils/uuid.d.ts +2 -0
  38. package/lib/typescript/appambit_test_app/src/utils/uuid.d.ts.map +1 -0
  39. package/lib/typescript/package.json +1 -0
  40. package/lib/typescript/src/NativeAppambitAnalytics.d.ts +14 -0
  41. package/lib/typescript/src/NativeAppambitAnalytics.d.ts.map +1 -0
  42. package/lib/typescript/src/NativeAppambitCore.d.ts +7 -0
  43. package/lib/typescript/src/NativeAppambitCore.d.ts.map +1 -0
  44. package/lib/typescript/src/NativeAppambitCrashes.d.ts +23 -0
  45. package/lib/typescript/src/NativeAppambitCrashes.d.ts.map +1 -0
  46. package/lib/typescript/src/index.d.ts +24 -0
  47. package/lib/typescript/src/index.d.ts.map +1 -0
  48. package/package.json +164 -0
  49. package/src/NativeAppambitAnalytics.ts +14 -0
  50. package/src/NativeAppambitCore.ts +7 -0
  51. package/src/NativeAppambitCrashes.ts +23 -0
  52. package/src/index.tsx +138 -0
@@ -0,0 +1,79 @@
1
+ import Foundation
2
+ import AppAmbitSdk
3
+
4
+ @objc(AppAmbitSdkWrapper)
5
+ public class AppAmbitSDKWrapper: NSObject {
6
+
7
+ @objc public static let shared = AppAmbitSDKWrapper()
8
+
9
+ // MARK: - Core
10
+ @objc
11
+ public static func start(appKey: String) {
12
+ AppAmbit.start(appKey: appKey)
13
+ }
14
+
15
+ // MARK: - Analytics
16
+ @objc
17
+ public static func setUserId(userId: String) {
18
+ Analytics.setUserId(userId)
19
+ }
20
+
21
+ @objc
22
+ public static func setUserEmail(userEmail: String) {
23
+ Analytics.setEmail(userEmail)
24
+ }
25
+
26
+ @objc
27
+ public static func clearToken() {
28
+ Analytics.clearToken()
29
+ }
30
+
31
+ @objc
32
+ public static func startSession() {
33
+ Analytics.startSession()
34
+ }
35
+
36
+ @objc
37
+ public static func endSession() {
38
+ Analytics.endSession()
39
+ }
40
+
41
+ @objc
42
+ public static func enableManualSession() {
43
+ Analytics.enableManualSession()
44
+ }
45
+
46
+ @objc
47
+ public static func trackEvent(eventTitle: String, properties: [String: String]? = nil) {
48
+ Analytics.trackEvent(eventTitle: eventTitle, data: properties ?? [:])
49
+ }
50
+
51
+ @objc
52
+ public static func generateTestEvent() {
53
+ Analytics.generateTestEvent()
54
+ }
55
+
56
+ // MARK: - Crashes
57
+ @objc
58
+ public static func didCrashInLastSession(completion: @escaping (Bool) -> Void) {
59
+ Crashes.didCrashInLastSession { crashed in
60
+ completion(crashed)
61
+ }
62
+ }
63
+
64
+ @objc
65
+ public static func generateTestCrash() {
66
+ Crashes.generateTestCrash()
67
+ }
68
+
69
+ @objc
70
+ public static func logError(message: String, properties: [String: String]? = nil) {
71
+ Crashes.logError(message: message, properties: properties)
72
+ }
73
+
74
+ @objc
75
+ public static func logError(exception: Error, properties: [String: String]? = nil) {
76
+ Crashes.logError(exception: exception, properties: properties)
77
+ }
78
+
79
+ }
package/ios/Appambit.h ADDED
@@ -0,0 +1,13 @@
1
+ #import <AppambitSpec/AppambitSpec.h>
2
+
3
+ @interface AppAmbit : NSObject <NativeAppambitCoreSpec>
4
+
5
+ @end
6
+
7
+ @interface AppAmbitCrashes : NSObject <NativeAppambitCrashesSpec>
8
+
9
+ @end
10
+
11
+ @interface AppAmbitAnalytics : NSObject <NativeAppambitAnalyticsSpec>
12
+
13
+ @end
@@ -0,0 +1,17 @@
1
+ #import "Appambit.h"
2
+ #import <Appambit-Swift.h>
3
+
4
+ @implementation AppAmbit
5
+ RCT_EXPORT_MODULE(AppAmbitCore);
6
+
7
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
8
+ (const facebook::react::ObjCTurboModule::InitParams &)params
9
+ {
10
+ return std::make_shared<facebook::react::NativeAppambitCoreSpecJSI>(params);
11
+ }
12
+
13
+ - (void)start:(nonnull NSString *)appkey {
14
+ [AppAmbitSdkWrapper startWithAppKey:appkey];
15
+ }
16
+
17
+ @end
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ import { TurboModuleRegistry } from 'react-native';
4
+ export default TurboModuleRegistry.getEnforcing('AppAmbitAnalytics');
5
+ //# sourceMappingURL=NativeAppambitAnalytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeAppambitAnalytics.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAA0B,cAAc;AAapE,eAAeA,mBAAmB,CAACC,YAAY,CAAO,mBAAmB,CAAC","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ import { TurboModuleRegistry } from 'react-native';
4
+ export default TurboModuleRegistry.getEnforcing('AppAmbitCore');
5
+ //# sourceMappingURL=NativeAppambitCore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeAppambitCore.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAA0B,cAAc;AAMpE,eAAeA,mBAAmB,CAACC,YAAY,CAAO,cAAc,CAAC","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ import { TurboModuleRegistry } from 'react-native';
4
+ export default TurboModuleRegistry.getEnforcing('AppAmbitCrashes');
5
+ //# sourceMappingURL=NativeAppambitCrashes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeAppambitCrashes.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAA0B,cAAc;AAsBpE,eAAeA,mBAAmB,CAACC,YAAY,CAAO,iBAAiB,CAAC","ignoreList":[]}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+
3
+ import Appambit from "./NativeAppambitCore.js";
4
+ import AppambitAnalytics from "./NativeAppambitAnalytics.js";
5
+ import AppambitCrashes from "./NativeAppambitCrashes.js";
6
+ // Start the Appambit SDK with the provided app key
7
+
8
+ export function start(appkey) {
9
+ Appambit.start(appkey);
10
+ }
11
+
12
+ // Analytics methods
13
+
14
+ export function setUserId(userId) {
15
+ AppambitAnalytics.setUserId(userId);
16
+ }
17
+ export function setUserEmail(userEmail) {
18
+ AppambitAnalytics.setUserEmail(userEmail);
19
+ }
20
+ export function clearToken() {
21
+ AppambitAnalytics.clearToken();
22
+ }
23
+ export function startSession() {
24
+ AppambitAnalytics.startSession();
25
+ }
26
+ export function endSession() {
27
+ AppambitAnalytics.endSession();
28
+ }
29
+ export function enableManualSession() {
30
+ AppambitAnalytics.enableManualSession();
31
+ }
32
+ export function trackEvent(eventTitle, properties) {
33
+ AppambitAnalytics.trackEvent(eventTitle, properties);
34
+ }
35
+ export function generateTestEvent() {
36
+ AppambitAnalytics.generateTestEvent();
37
+ }
38
+
39
+ // Crashes methods
40
+
41
+ export function didCrashInLastSession() {
42
+ return AppambitCrashes.didCrashInLastSession();
43
+ }
44
+ export function generateTestCrash() {
45
+ AppambitCrashes.generateTestCrash();
46
+ }
47
+ export function logErrorMessage(message, properties) {
48
+ AppambitCrashes.logErrorMessage(message, properties);
49
+ }
50
+ export async function logError({
51
+ message,
52
+ exception,
53
+ stack,
54
+ classFqn,
55
+ fileName,
56
+ lineNumber,
57
+ properties
58
+ }) {
59
+ if (!AppambitCrashes) {
60
+ console.warn('AppambitCrashes not registered');
61
+ return;
62
+ }
63
+ const messageStr = message && message.length > 0 ? message : exception ? exception.message || JSON.stringify(exception) : "UnknownError";
64
+ const stackStr = stack && stack.length > 0 ? stack : exception?.stack ? exception.stack.toString() : new Error().stack?.toString();
65
+ const payload = {};
66
+ if (messageStr) payload.message = messageStr;
67
+ if (stackStr) payload.stack = stackStr;
68
+ if (properties && Object.keys(properties).length > 0) payload.properties = properties;
69
+ if (classFqn) payload.classFqn = classFqn;
70
+ if (fileName) payload.fileName = fileName;
71
+ if (typeof lineNumber === 'number' && !isNaN(lineNumber) && isFinite(lineNumber)) {
72
+ payload.lineNumber = lineNumber;
73
+ }
74
+ if (Object.keys(payload).length === 0) return;
75
+ const userProvidedMessage = !!message && message.length > 0;
76
+ if (userProvidedMessage) {
77
+ AppambitCrashes.logErrorMessage(message, properties);
78
+ } else if (exception || stackStr && stackStr.length > 0) {
79
+ AppambitCrashes.logError(payload);
80
+ }
81
+ }
82
+ ErrorUtils.setGlobalHandler(error => {
83
+ const hasMessage = typeof error?.message === "string" && error.message.trim().length > 0;
84
+ if (hasMessage) {
85
+ logError({
86
+ exception: error,
87
+ message: error.message,
88
+ stack: error.stack,
89
+ classFqn: error.constructor?.name
90
+ });
91
+ } else {
92
+ logError({
93
+ exception: error,
94
+ stack: error.stack,
95
+ classFqn: error.constructor?.name
96
+ });
97
+ }
98
+ });
99
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Appambit","AppambitAnalytics","AppambitCrashes","start","appkey","setUserId","userId","setUserEmail","userEmail","clearToken","startSession","endSession","enableManualSession","trackEvent","eventTitle","properties","generateTestEvent","didCrashInLastSession","generateTestCrash","logErrorMessage","message","logError","exception","stack","classFqn","fileName","lineNumber","console","warn","messageStr","length","JSON","stringify","stackStr","toString","Error","payload","Object","keys","isNaN","isFinite","userProvidedMessage","ErrorUtils","setGlobalHandler","error","hasMessage","trim","constructor","name"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,2 @@
1
+ export default function App(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=App.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../../../appambit_test_app/src/App.tsx"],"names":[],"mappings":"AAOA,MAAM,CAAC,OAAO,UAAU,GAAG,4CA6B1B"}
@@ -0,0 +1,8 @@
1
+ import { type GestureResponderEvent } from "react-native";
2
+ interface Props {
3
+ title: string;
4
+ onPress: (event: GestureResponderEvent) => void;
5
+ }
6
+ export default function CustomButton({ title, onPress }: Props): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=CustomButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomButton.d.ts","sourceRoot":"","sources":["../../../../../appambit_test_app/src/components/CustomButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAEvF,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,2CAM7D"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface CustomInputProps {
3
+ placeholder: string;
4
+ buttonLabel: string;
5
+ defaultValue: string;
6
+ onSubmit: (value: string) => void;
7
+ }
8
+ declare const CustomInput: React.FC<CustomInputProps>;
9
+ export default CustomInput;
10
+ //# sourceMappingURL=CustomInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomInput.d.ts","sourceRoot":"","sources":["../../../../../appambit_test_app/src/components/CustomInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAIxC,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAc3C,CAAC;AAmBF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export default function AnalyticsScreen(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=AnalyticsScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalyticsScreen.d.ts","sourceRoot":"","sources":["../../../../../appambit_test_app/src/screens/AnalyticsScreen.tsx"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,UAAU,eAAe,4CAuHtC"}
@@ -0,0 +1,2 @@
1
+ export default function CrashesScreen(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=CrashesScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CrashesScreen.d.ts","sourceRoot":"","sources":["../../../../../appambit_test_app/src/screens/CrashesScreen.tsx"],"names":[],"mappings":"AAeA,MAAM,CAAC,OAAO,UAAU,aAAa,4CAwEpC"}
@@ -0,0 +1,2 @@
1
+ export declare function uuidv4(): string;
2
+ //# sourceMappingURL=uuid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../../../../../appambit_test_app/src/utils/uuid.tsx"],"names":[],"mappings":"AAAA,wBAAgB,MAAM,IAAI,MAAM,CAM/B"}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,14 @@
1
+ import { type TurboModule } from 'react-native';
2
+ export interface Spec extends TurboModule {
3
+ setUserId(userId: string): void;
4
+ setUserEmail(email: string): void;
5
+ clearToken(): void;
6
+ startSession(): void;
7
+ endSession(): void;
8
+ enableManualSession(): void;
9
+ trackEvent(eventTitle: string, properties?: Object): void;
10
+ generateTestEvent(): void;
11
+ }
12
+ declare const _default: Spec;
13
+ export default _default;
14
+ //# sourceMappingURL=NativeAppambitAnalytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeAppambitAnalytics.d.ts","sourceRoot":"","sources":["../../../src/NativeAppambitAnalytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,WAAW,IAAK,SAAQ,WAAW;IACrC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,IAAI,IAAI,CAAC;IACnB,YAAY,IAAI,IAAI,CAAC;IACrB,UAAU,IAAI,IAAI,CAAC;IACnB,mBAAmB,IAAI,IAAI,CAAC;IAC5B,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1D,iBAAiB,IAAI,IAAI,CAAC;CAC7B;;AAED,wBAA2E"}
@@ -0,0 +1,7 @@
1
+ import { type TurboModule } from 'react-native';
2
+ export interface Spec extends TurboModule {
3
+ start(appkey: string): void;
4
+ }
5
+ declare const _default: Spec;
6
+ export default _default;
7
+ //# sourceMappingURL=NativeAppambitCore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeAppambitCore.d.ts","sourceRoot":"","sources":["../../../src/NativeAppambitCore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;;AAED,wBAAsE"}
@@ -0,0 +1,23 @@
1
+ import { type TurboModule } from 'react-native';
2
+ export interface Spec extends TurboModule {
3
+ generateTestCrash(): void;
4
+ didCrashInLastSession(): Promise<boolean>;
5
+ logErrorMessage(message: string, properties?: {
6
+ [key: string]: string;
7
+ }): void;
8
+ logError(payload: ErrorPayload): void;
9
+ }
10
+ interface ErrorPayload {
11
+ exception?: Object;
12
+ message?: string;
13
+ stack?: string;
14
+ classFqn?: string;
15
+ fileName?: string;
16
+ lineNumber?: number;
17
+ properties?: {
18
+ [key: string]: string;
19
+ };
20
+ }
21
+ declare const _default: Spec;
22
+ export default _default;
23
+ //# sourceMappingURL=NativeAppambitCrashes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeAppambitCrashes.d.ts","sourceRoot":"","sources":["../../../src/NativeAppambitCrashes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,WAAW,IAAK,SAAQ,WAAW;IACrC,iBAAiB,IAAI,IAAI,CAAC;IAC1B,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,eAAe,CACX,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GACvC,IAAI,CAAC;IACR,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;CACzC;AAED,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACxC;;AAED,wBAAyE"}
@@ -0,0 +1,24 @@
1
+ type LogErrorParams = {
2
+ exception?: any;
3
+ message?: string;
4
+ stack?: string;
5
+ classFqn?: string;
6
+ fileName?: string;
7
+ lineNumber?: number;
8
+ properties?: Record<string, string>;
9
+ };
10
+ export declare function start(appkey: string): void;
11
+ export declare function setUserId(userId: string): void;
12
+ export declare function setUserEmail(userEmail: string): void;
13
+ export declare function clearToken(): void;
14
+ export declare function startSession(): void;
15
+ export declare function endSession(): void;
16
+ export declare function enableManualSession(): void;
17
+ export declare function trackEvent(eventTitle: string, properties?: Record<string, string>): void;
18
+ export declare function generateTestEvent(): void;
19
+ export declare function didCrashInLastSession(): Promise<boolean>;
20
+ export declare function generateTestCrash(): void;
21
+ export declare function logErrorMessage(message: string, properties?: Record<string, string>): void;
22
+ export declare function logError({ message, exception, stack, classFqn, fileName, lineNumber, properties, }: LogErrorParams): Promise<void>;
23
+ export {};
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAIA,KAAK,cAAc,GAAG;IACpB,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC,CAAC;AAIF,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE1C;AAID,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAExF;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAID,wBAAgB,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAExD;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAE1F;AAED,wBAAsB,QAAQ,CAAC,EAC7B,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,UAAU,GACX,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA0ChC"}
package/package.json ADDED
@@ -0,0 +1,164 @@
1
+ {
2
+ "name": "appambit",
3
+ "version": "0.1.0",
4
+ "description": "Lightweight SDK for analytics, events, logging, crashes, and offline support. Simple setup, minimal overhead.",
5
+ "main": "./lib/module/index.js",
6
+ "types": "./lib/typescript/src/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "source": "./src/index.tsx",
10
+ "types": "./lib/typescript/src/index.d.ts",
11
+ "default": "./lib/module/index.js"
12
+ },
13
+ "./package.json": "./package.json"
14
+ },
15
+ "files": [
16
+ "src",
17
+ "lib",
18
+ "android",
19
+ "ios",
20
+ "cpp",
21
+ "*.podspec",
22
+ "react-native.config.js",
23
+ "!ios/build",
24
+ "!android/build",
25
+ "!android/gradle",
26
+ "!android/gradlew",
27
+ "!android/gradlew.bat",
28
+ "!android/local.properties",
29
+ "!**/__tests__",
30
+ "!**/__fixtures__",
31
+ "!**/__mocks__",
32
+ "!**/.*"
33
+ ],
34
+ "scripts": {
35
+ "example": "yarn workspace appambit-example",
36
+ "test": "jest",
37
+ "typecheck": "tsc",
38
+ "lint": "eslint \"**/*.{js,ts,tsx}\"",
39
+ "clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib",
40
+ "prepare": "bob build",
41
+ "release": "release-it --only-version"
42
+ },
43
+ "keywords": [
44
+ "react-native",
45
+ "ios",
46
+ "android"
47
+ ],
48
+ "repository": {
49
+ "type": "git",
50
+ "url": "git+https://github.com/AppAmbit/appambit-sdk-react-native.git"
51
+ },
52
+ "author": "AppAmbit <hello@appambit.com> (https://appambit.com)",
53
+ "license": "MIT",
54
+ "bugs": {
55
+ "url": "https://github.com/AppAmbit/appambit-sdk-react-native/issues"
56
+ },
57
+ "homepage": "https://github.com/AppAmbit/appambit-sdk-react-native#readme",
58
+ "publishConfig": {
59
+ "registry": "https://registry.npmjs.org/"
60
+ },
61
+ "devDependencies": {
62
+ "@commitlint/config-conventional": "^19.8.1",
63
+ "@eslint/compat": "^1.3.2",
64
+ "@eslint/eslintrc": "^3.3.1",
65
+ "@eslint/js": "^9.35.0",
66
+ "@evilmartians/lefthook": "^1.12.3",
67
+ "@react-native-community/cli": "20.0.1",
68
+ "@react-native/babel-preset": "0.81.1",
69
+ "@react-native/eslint-config": "^0.81.1",
70
+ "@release-it/conventional-changelog": "^10.0.1",
71
+ "@types/jest": "^29.5.14",
72
+ "@types/react": "^19.1.0",
73
+ "commitlint": "^19.8.1",
74
+ "del-cli": "^6.0.0",
75
+ "eslint": "^9.35.0",
76
+ "eslint-config-prettier": "^10.1.8",
77
+ "eslint-plugin-prettier": "^5.5.4",
78
+ "jest": "^29.7.0",
79
+ "prettier": "^3.6.2",
80
+ "react": "19.1.0",
81
+ "react-native": "0.81.1",
82
+ "react-native-builder-bob": "^0.40.13",
83
+ "release-it": "^19.0.4",
84
+ "turbo": "^2.5.6",
85
+ "typescript": "^5.9.2"
86
+ },
87
+ "peerDependencies": {
88
+ "react": "*",
89
+ "react-native": "*"
90
+ },
91
+ "workspaces": [
92
+ "appambit_test_app"
93
+ ],
94
+ "packageManager": "yarn@3.6.1",
95
+ "jest": {
96
+ "preset": "react-native",
97
+ "modulePathIgnorePatterns": [
98
+ "<rootDir>/example/node_modules",
99
+ "<rootDir>/lib/"
100
+ ]
101
+ },
102
+ "commitlint": {
103
+ "extends": [
104
+ "@commitlint/config-conventional"
105
+ ]
106
+ },
107
+ "release-it": {
108
+ "git": {
109
+ "commitMessage": "chore: release ${version}",
110
+ "tagName": "v${version}"
111
+ },
112
+ "npm": {
113
+ "publish": true
114
+ },
115
+ "github": {
116
+ "release": true
117
+ },
118
+ "plugins": {
119
+ "@release-it/conventional-changelog": {
120
+ "preset": {
121
+ "name": "angular"
122
+ }
123
+ }
124
+ }
125
+ },
126
+ "prettier": {
127
+ "quoteProps": "consistent",
128
+ "singleQuote": true,
129
+ "tabWidth": 2,
130
+ "trailingComma": "es5",
131
+ "useTabs": false
132
+ },
133
+ "react-native-builder-bob": {
134
+ "source": "src",
135
+ "output": "lib",
136
+ "targets": [
137
+ [
138
+ "module",
139
+ {
140
+ "esm": true
141
+ }
142
+ ],
143
+ [
144
+ "typescript",
145
+ {
146
+ "project": "tsconfig.build.json"
147
+ }
148
+ ]
149
+ ]
150
+ },
151
+ "codegenConfig": {
152
+ "name": "AppambitSpec",
153
+ "type": "modules",
154
+ "jsSrcsDir": "src",
155
+ "android": {
156
+ "javaPackageName": "com.appambit"
157
+ }
158
+ },
159
+ "create-react-native-library": {
160
+ "languages": "kotlin-objc",
161
+ "type": "turbo-module",
162
+ "version": "0.54.3"
163
+ }
164
+ }
@@ -0,0 +1,14 @@
1
+ import { TurboModuleRegistry, type TurboModule } from 'react-native';
2
+
3
+ export interface Spec extends TurboModule {
4
+ setUserId(userId: string): void;
5
+ setUserEmail(email: string): void;
6
+ clearToken(): void;
7
+ startSession(): void;
8
+ endSession(): void;
9
+ enableManualSession(): void;
10
+ trackEvent(eventTitle: string, properties?: Object): void;
11
+ generateTestEvent(): void;
12
+ }
13
+
14
+ export default TurboModuleRegistry.getEnforcing<Spec>('AppAmbitAnalytics');
@@ -0,0 +1,7 @@
1
+ import { TurboModuleRegistry, type TurboModule } from 'react-native';
2
+
3
+ export interface Spec extends TurboModule {
4
+ start(appkey: string): void;
5
+ }
6
+
7
+ export default TurboModuleRegistry.getEnforcing<Spec>('AppAmbitCore');
@@ -0,0 +1,23 @@
1
+ import { TurboModuleRegistry, type TurboModule } from 'react-native';
2
+
3
+ export interface Spec extends TurboModule {
4
+ generateTestCrash(): void;
5
+ didCrashInLastSession(): Promise<boolean>;
6
+ logErrorMessage(
7
+ message: string,
8
+ properties?: { [key: string]: string }
9
+ ): void;
10
+ logError(payload: ErrorPayload): void;
11
+ }
12
+
13
+ interface ErrorPayload {
14
+ exception?: Object;
15
+ message?: string;
16
+ stack?: string;
17
+ classFqn?: string;
18
+ fileName?: string;
19
+ lineNumber?: number;
20
+ properties?: { [key: string]: string };
21
+ }
22
+
23
+ export default TurboModuleRegistry.getEnforcing<Spec>('AppAmbitCrashes');