@attryio/react-native 0.1.3 → 0.1.4

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.
package/dist/index.d.ts CHANGED
@@ -53,11 +53,11 @@ export interface ReactNativeAttryConfig extends Omit<AttryConfig, "platform" | "
53
53
  }
54
54
  export { parseAttryUrl };
55
55
  export declare function createAttryReactNative(config: ReactNativeAttryConfig): Promise<Attry>;
56
- export declare function collectReactNativeContext(rn?: ReactNativeLike | undefined, configuredContext?: AttryConfig["context"]): Promise<AttryContext>;
56
+ export declare function collectReactNativeContext(rn?: ReactNativeLike, configuredContext?: AttryConfig["context"]): Promise<AttryContext>;
57
57
  export declare function attachReactNativeLifecycleTracking(client: Attry, rn: ReactNativeLike | undefined, storage: AttryStorage | undefined, options: {
58
58
  appId: string;
59
59
  sessionTimeoutMs?: number;
60
60
  }): Promise<void>;
61
- export declare function attachDeepLinkTracking(client: Attry, rn?: ReactNativeLike | undefined): Promise<void>;
62
- export declare function collectInstallAttribution(client: Attry, rn?: ReactNativeLike | undefined): Promise<void>;
61
+ export declare function attachDeepLinkTracking(client: Attry, rn?: ReactNativeLike): Promise<void>;
62
+ export declare function collectInstallAttribution(client: Attry, rn?: ReactNativeLike): Promise<void>;
63
63
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import { Attry, ATTRY_EVENTS, MemoryStorage, parseAttryUrl } from "@attryio/sdk-core";
2
2
  const SDK_NAME = "attry-react-native";
3
- const SDK_VERSION = "0.1.3";
3
+ const SDK_VERSION = "0.1.4";
4
4
  export { parseAttryUrl };
5
5
  export async function createAttryReactNative(config) {
6
- const rn = getReactNative();
6
+ const rn = await loadReactNative();
7
7
  const platform = rn?.Platform?.OS === "ios" || rn?.Platform?.OS === "android"
8
8
  ? rn.Platform.OS
9
9
  : "unknown";
10
- const storage = config.storage ?? createAsyncStorageAdapter() ?? new MemoryStorage();
10
+ const storage = config.storage ?? (await createAsyncStorageAdapter()) ?? new MemoryStorage();
11
11
  const context = await collectReactNativeContext(rn, config.context);
12
12
  const client = await new Attry({
13
13
  ...config,
@@ -29,18 +29,19 @@ export async function createAttryReactNative(config) {
29
29
  }
30
30
  return client;
31
31
  }
32
- export async function collectReactNativeContext(rn = getReactNative(), configuredContext = {}) {
33
- const modules = rn?.NativeModules;
32
+ export async function collectReactNativeContext(rn, configuredContext = {}) {
33
+ const native = rn ?? (await loadReactNative());
34
+ const modules = native?.NativeModules;
34
35
  const deviceInfo = modules?.RNDeviceInfo;
35
36
  const expoConstants = modules?.ExpoConstants ?? modules?.ExponentConstants;
36
37
  const platformConstants = modules?.PlatformConstants;
37
38
  const settings = modules?.SettingsManager;
38
- const screen = rn?.Dimensions?.get?.("screen");
39
+ const screen = native?.Dimensions?.get?.("screen");
39
40
  const locale = configuredContext?.locale ??
40
41
  readNestedString(settings?.settings, ["AppleLocale"]) ??
41
42
  readFirstString(readNestedUnknown(settings?.settings, ["AppleLanguages"])) ??
42
43
  readNestedString(deviceInfo, ["deviceLocale"]) ??
43
- rn?.I18nManager?.localeIdentifier;
44
+ native?.I18nManager?.localeIdentifier;
44
45
  return compactContext({
45
46
  sdkName: SDK_NAME,
46
47
  sdkVersion: SDK_VERSION,
@@ -74,10 +75,12 @@ export async function collectReactNativeContext(rn = getReactNative(), configure
74
75
  (await readMaybeString(deviceInfo?.getBuildNumber)) ??
75
76
  readNestedString(expoConstants, ["expoConfig", "ios", "buildNumber"]) ??
76
77
  readNestedString(expoConstants, ["expoConfig", "android", "versionCode"]),
77
- osVersion: rn?.Platform?.Version ? String(rn.Platform.Version) : undefined,
78
+ osVersion: native?.Platform?.Version
79
+ ? String(native.Platform.Version)
80
+ : undefined,
78
81
  systemName: configuredContext?.systemName ??
79
82
  (await readMaybeString(deviceInfo?.systemName)) ??
80
- (rn?.Platform?.OS ? String(rn.Platform.OS) : undefined),
83
+ (native?.Platform?.OS ? String(native.Platform.OS) : undefined),
81
84
  deviceModel: configuredContext?.deviceModel ??
82
85
  (await readMaybeString(deviceInfo?.model)) ??
83
86
  (await readMaybeString(deviceInfo?.getModel)) ??
@@ -124,7 +127,8 @@ export async function collectReactNativeContext(rn = getReactNative(), configure
124
127
  ...configuredContext
125
128
  });
126
129
  }
127
- export async function attachReactNativeLifecycleTracking(client, rn = getReactNative(), storage = new MemoryStorage(), options) {
130
+ export async function attachReactNativeLifecycleTracking(client, rn, storage = new MemoryStorage(), options) {
131
+ const native = rn ?? (await loadReactNative());
128
132
  const installKey = `attry.${options.appId}.install_tracked`;
129
133
  const sessionStartedAt = Date.now();
130
134
  const sessionId = `ses_${sessionStartedAt.toString(36)}`;
@@ -143,7 +147,7 @@ export async function attachReactNativeLifecycleTracking(client, rn = getReactNa
143
147
  await client.track(ATTRY_EVENTS.OPEN, {
144
148
  properties: {
145
149
  auto: true,
146
- appState: rn?.AppState?.currentState ?? "active"
150
+ appState: native?.AppState?.currentState ?? "active"
147
151
  },
148
152
  context: {
149
153
  sessionId
@@ -157,10 +161,10 @@ export async function attachReactNativeLifecycleTracking(client, rn = getReactNa
157
161
  sessionId
158
162
  }
159
163
  });
160
- let active = rn?.AppState?.currentState !== "background";
164
+ let active = native?.AppState?.currentState !== "background";
161
165
  let lastActiveAt = sessionStartedAt;
162
166
  const sessionTimeoutMs = options.sessionTimeoutMs ?? 30 * 60 * 1000;
163
- rn?.AppState?.addEventListener?.("change", (state) => {
167
+ native?.AppState?.addEventListener?.("change", (state) => {
164
168
  const now = Date.now();
165
169
  if (state === "active" && !active) {
166
170
  active = true;
@@ -202,18 +206,20 @@ export async function attachReactNativeLifecycleTracking(client, rn = getReactNa
202
206
  }
203
207
  });
204
208
  }
205
- export async function attachDeepLinkTracking(client, rn = getReactNative()) {
206
- const initialUrl = await rn?.Linking?.getInitialURL?.();
209
+ export async function attachDeepLinkTracking(client, rn) {
210
+ const native = rn ?? (await loadReactNative());
211
+ const initialUrl = await native?.Linking?.getInitialURL?.();
207
212
  if (initialUrl) {
208
- await trackDeepLinkOpen(client, initialUrl, "initial_url", rn);
213
+ await trackDeepLinkOpen(client, initialUrl, "initial_url", native);
209
214
  }
210
- rn?.Linking?.addEventListener?.("url", ({ url }) => {
211
- void trackDeepLinkOpen(client, url, "linking_event", rn);
215
+ native?.Linking?.addEventListener?.("url", ({ url }) => {
216
+ void trackDeepLinkOpen(client, url, "linking_event", native);
212
217
  });
213
218
  }
214
- export async function collectInstallAttribution(client, rn = getReactNative()) {
215
- if (rn?.Platform?.OS === "ios") {
216
- const token = await rn.NativeModules?.AttryAppleAds?.attributionToken?.();
219
+ export async function collectInstallAttribution(client, rn) {
220
+ const native = rn ?? (await loadReactNative());
221
+ if (native?.Platform?.OS === "ios") {
222
+ const token = await native.NativeModules?.AttryAppleAds?.attributionToken?.();
217
223
  if (token) {
218
224
  const response = await client.submitAppleAdsToken(token);
219
225
  await client.track("apple_ads_token_collected", {
@@ -225,8 +231,8 @@ export async function collectInstallAttribution(client, rn = getReactNative()) {
225
231
  }
226
232
  return;
227
233
  }
228
- if (rn?.Platform?.OS === "android") {
229
- const payload = await rn.NativeModules?.AttryInstallReferrer?.getInstallReferrer?.();
234
+ if (native?.Platform?.OS === "android") {
235
+ const payload = await native.NativeModules?.AttryInstallReferrer?.getInstallReferrer?.();
230
236
  if (payload?.installReferrer) {
231
237
  const response = await client.resolveInstall({
232
238
  installReferrer: payload.installReferrer
@@ -242,10 +248,11 @@ export async function collectInstallAttribution(client, rn = getReactNative()) {
242
248
  }
243
249
  }
244
250
  }
245
- async function trackDeepLinkOpen(client, url, openType, rn = getReactNative()) {
251
+ async function trackDeepLinkOpen(client, url, openType, rn) {
252
+ const native = rn ?? (await loadReactNative());
246
253
  const parsed = parseAttryUrl(url);
247
- const openedFromUniversalLink = rn?.Platform?.OS === "ios";
248
- const openedFromAndroidAppLink = rn?.Platform?.OS === "android";
254
+ const openedFromUniversalLink = native?.Platform?.OS === "ios";
255
+ const openedFromAndroidAppLink = native?.Platform?.OS === "android";
249
256
  const resolved = await client.resolveDeepLink({
250
257
  url,
251
258
  openedFromUniversalLink,
@@ -341,19 +348,18 @@ function safeTimezone() {
341
348
  return undefined;
342
349
  }
343
350
  }
344
- function getReactNative() {
351
+ async function loadReactNative() {
345
352
  try {
346
- const dynamicRequire = eval("require");
347
- return dynamicRequire("react-native");
353
+ return (await import("react-native"));
348
354
  }
349
355
  catch {
350
356
  return undefined;
351
357
  }
352
358
  }
353
- function createAsyncStorageAdapter() {
359
+ async function createAsyncStorageAdapter() {
354
360
  try {
355
- const dynamicRequire = eval("require");
356
- const asyncStorage = dynamicRequire("@react-native-async-storage/async-storage").default;
361
+ const asyncStorageModule = (await import("@react-native-async-storage/async-storage"));
362
+ const asyncStorage = asyncStorageModule.default;
357
363
  return asyncStorage;
358
364
  }
359
365
  catch {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@attryio/react-native",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "private": false,
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -29,7 +29,8 @@
29
29
  "access": "public"
30
30
  },
31
31
  "dependencies": {
32
- "@attryio/sdk-core": "0.1.3"
32
+ "@attryio/sdk-core": "0.1.3",
33
+ "@react-native-async-storage/async-storage": "^2.2.0"
33
34
  },
34
35
  "peerDependencies": {
35
36
  "react-native": ">=0.72"