@attryio/react-native 0.1.4 → 0.1.6

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.
@@ -0,0 +1,19 @@
1
+ require "json"
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
+
5
+ Pod::Spec.new do |s|
6
+ s.name = "AttryReactNative"
7
+ s.version = package["version"]
8
+ s.summary = "Attry React Native SDK"
9
+ s.description = "React Native SDK for Attry mobile attribution, app events, and store attribution."
10
+ s.homepage = "https://attry.io"
11
+ s.license = { :type => "Apache-2.0" }
12
+ s.author = { "Attry" => "hello@attry.io" }
13
+ s.platforms = { :ios => "13.0" }
14
+ s.source = { :git => "https://github.com/mozhn/attry.io.git", :tag => "v#{s.version}" }
15
+ s.source_files = "ios/**/*.{h,m,mm,swift}"
16
+ s.frameworks = "AdServices"
17
+ s.swift_version = "5.0"
18
+ s.dependency "React-Core"
19
+ end
@@ -0,0 +1,37 @@
1
+ buildscript {
2
+ repositories {
3
+ google()
4
+ mavenCentral()
5
+ }
6
+ dependencies {
7
+ classpath("com.android.tools.build:gradle:8.7.3")
8
+ classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.21")
9
+ }
10
+ }
11
+
12
+ def safeExtGet(prop, fallback) {
13
+ rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
14
+ }
15
+
16
+ apply plugin: "com.android.library"
17
+ apply plugin: "org.jetbrains.kotlin.android"
18
+
19
+ android {
20
+ namespace "io.attry.reactnative"
21
+ compileSdkVersion safeExtGet("compileSdkVersion", 35)
22
+
23
+ defaultConfig {
24
+ minSdkVersion safeExtGet("minSdkVersion", 23)
25
+ targetSdkVersion safeExtGet("targetSdkVersion", 35)
26
+ }
27
+ }
28
+
29
+ repositories {
30
+ google()
31
+ mavenCentral()
32
+ }
33
+
34
+ dependencies {
35
+ implementation("com.facebook.react:react-android")
36
+ implementation("com.android.installreferrer:installreferrer:2.2")
37
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EAGL,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAE3B,KAAK,eAAe,GAAG;IACrB,QAAQ,CAAC,EAAE;QACT,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,CACjB,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,KAC9B;YAAE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;SAAE,CAAC;KAC9B,CAAC;IACF,UAAU,CAAC,EAAE;QACX,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,KAAK;YACxC,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,KAAK,CAAC,EAAE,MAAM,CAAC;SAChB,CAAC;KACH,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAC7C,gBAAgB,CAAC,EAAE,CACjB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,OAAO,EAAE;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE,KAAK,IAAI,KACzC;YAAE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;SAAE,CAAC;KAC9B,CAAC;IACF,aAAa,CAAC,EAAE;QACd,aAAa,CAAC,EAAE;YACd,gBAAgB,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;SAChD,CAAC;QACF,oBAAoB,CAAC,EAAE;YACrB,kBAAkB,EAAE,MAAM,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;SAClE,CAAC;QACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,EAAE,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;QAChC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;KAC3B,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,sBACf,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,SAAS,CAAC;IACjD,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACjC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAKD,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,kBAiC1E;AAED,wBAAsB,yBAAyB,CAC7C,EAAE,CAAC,EAAE,eAAe,EACpB,iBAAiB,GAAE,WAAW,CAAC,SAAS,CAAM,GAC7C,OAAO,CAAC,YAAY,CAAC,CA0HvB;AAED,wBAAsB,kCAAkC,CACtD,MAAM,EAAE,KAAK,EACb,EAAE,EAAE,eAAe,GAAG,SAAS,EAC/B,OAAO,EAAE,YAAY,YAAsB,EAC3C,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,iBAsFtD;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,KAAK,EACb,EAAE,CAAC,EAAE,eAAe,iBAWrB;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,KAAK,EACb,EAAE,CAAC,EAAE,eAAe,iBAmCrB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
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.4";
3
+ const SDK_VERSION = "0.1.6";
4
4
  export { parseAttryUrl };
5
5
  export async function createAttryReactNative(config) {
6
6
  const rn = await loadReactNative();
@@ -42,6 +42,13 @@ export async function collectReactNativeContext(rn, configuredContext = {}) {
42
42
  readFirstString(readNestedUnknown(settings?.settings, ["AppleLanguages"])) ??
43
43
  readNestedString(deviceInfo, ["deviceLocale"]) ??
44
44
  native?.I18nManager?.localeIdentifier;
45
+ const timezone = configuredContext?.timezone ??
46
+ safeTimezone() ??
47
+ (await readMaybeString(deviceInfo?.timezone)) ??
48
+ (await readMaybeString(deviceInfo?.getTimezone));
49
+ const countryCode = configuredContext?.countryCode ??
50
+ readCountryCodeFromLocale(typeof locale === "string" ? locale : undefined) ??
51
+ readCountryCodeFromTimezone(timezone);
45
52
  return compactContext({
46
53
  sdkName: SDK_NAME,
47
54
  sdkVersion: SDK_VERSION,
@@ -109,13 +116,9 @@ export async function collectReactNativeContext(rn, configuredContext = {}) {
109
116
  locale,
110
117
  language: configuredContext?.language ??
111
118
  (typeof locale === "string" ? locale.split(/[-_]/)[0] : undefined),
112
- timezone: configuredContext?.timezone ??
113
- safeTimezone() ??
114
- (await readMaybeString(deviceInfo?.timezone)) ??
115
- (await readMaybeString(deviceInfo?.getTimezone)),
116
- country: configuredContext?.country,
117
- countryCode: configuredContext?.countryCode ??
118
- readCountryCodeFromLocale(typeof locale === "string" ? locale : undefined),
119
+ timezone,
120
+ country: configuredContext?.country ?? countryNameFromCode(countryCode),
121
+ countryCode,
119
122
  region: configuredContext?.region,
120
123
  city: configuredContext?.city,
121
124
  carrier: configuredContext?.carrier ??
@@ -336,9 +339,43 @@ function compactContext(context) {
336
339
  return Object.fromEntries(Object.entries(context).filter(([, value]) => value !== undefined && value !== null && value !== ""));
337
340
  }
338
341
  function readCountryCodeFromLocale(locale) {
339
- const normalized = locale?.replace("_", "-");
340
- const country = normalized?.split("-")[1];
341
- return country && country.length === 2 ? country.toUpperCase() : undefined;
342
+ if (!locale) {
343
+ return undefined;
344
+ }
345
+ try {
346
+ return normalizeCountryCode(new Intl.Locale(locale.replace("_", "-")).region);
347
+ }
348
+ catch {
349
+ const match = locale.match(/[-_]([A-Za-z]{2})(?:$|[-_])/);
350
+ return normalizeCountryCode(match?.[1]);
351
+ }
352
+ }
353
+ function readCountryCodeFromTimezone(timezone) {
354
+ return timezone ? TIMEZONE_COUNTRY_CODES[timezone] : undefined;
355
+ }
356
+ const TIMEZONE_COUNTRY_CODES = {
357
+ "Europe/Istanbul": "TR"
358
+ };
359
+ function normalizeCountryCode(countryCode) {
360
+ if (!countryCode || countryCode.length !== 2) {
361
+ return undefined;
362
+ }
363
+ const upper = countryCode.toUpperCase();
364
+ return upper === "XX" || upper === "T1" ? undefined : upper;
365
+ }
366
+ function countryNameFromCode(countryCode) {
367
+ if (!countryCode) {
368
+ return undefined;
369
+ }
370
+ if (countryCode === "TR") {
371
+ return "Turkey";
372
+ }
373
+ try {
374
+ return new Intl.DisplayNames(["en"], { type: "region" }).of(countryCode);
375
+ }
376
+ catch {
377
+ return countryCode;
378
+ }
342
379
  }
343
380
  function safeTimezone() {
344
381
  try {
@@ -1,4 +1,5 @@
1
1
  import Foundation
2
+ import React
2
3
 
3
4
  #if canImport(AdServices)
4
5
  import AdServices
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@attryio/react-native",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "private": false,
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -22,6 +22,8 @@
22
22
  "dist",
23
23
  "ios",
24
24
  "android",
25
+ "AttryReactNative.podspec",
26
+ "react-native.config.js",
25
27
  "README.md",
26
28
  "package.json"
27
29
  ],
@@ -0,0 +1,12 @@
1
+ module.exports = {
2
+ dependency: {
3
+ platforms: {
4
+ android: {
5
+ sourceDir: "./android",
6
+ packageImportPath: "import io.attry.reactnative.AttryPackage;",
7
+ packageInstance: "new AttryPackage()"
8
+ },
9
+ ios: {}
10
+ }
11
+ }
12
+ };