@amplitude/analytics-react-native 0.4.7 → 0.4.9
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/lib/commonjs/react-native-client.js +15 -9
- package/lib/commonjs/react-native-client.js.map +1 -1
- package/lib/commonjs/storage/local-storage.js +3 -1
- package/lib/commonjs/storage/local-storage.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/react-native-client.js +15 -9
- package/lib/module/react-native-client.js.map +1 -1
- package/lib/module/storage/local-storage.js +2 -1
- package/lib/module/storage/local-storage.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/react-native-client.d.ts +2 -1
- package/lib/typescript/react-native-client.d.ts.map +1 -1
- package/lib/typescript/storage/local-storage.d.ts.map +1 -1
- package/lib/typescript/version.d.ts +1 -1
- package/package.json +4 -4
- package/src/react-native-client.ts +16 -8
- package/src/storage/local-storage.ts +2 -1
- package/src/version.ts +1 -1
|
@@ -68,17 +68,11 @@ class AmplitudeReactNative extends _analyticsCore.AmplitudeCore {
|
|
|
68
68
|
await this.add(new _context.Context());
|
|
69
69
|
await this.add(new _analyticsClientCommon.IdentityEventSender());
|
|
70
70
|
await this.add(new _analyticsCore.Destination());
|
|
71
|
-
this.initializing = false; // Step 5:
|
|
72
|
-
// Send existing events, which might be collected by track before init
|
|
71
|
+
this.initializing = false; // Step 5: Track attributions
|
|
73
72
|
|
|
74
|
-
this.
|
|
73
|
+
await this.runAttributionStrategy(options === null || options === void 0 ? void 0 : options.attribution, isNewSession); // Step 6: Run queued dispatch functions
|
|
75
74
|
|
|
76
|
-
|
|
77
|
-
this.timeline.scheduleApply(0);
|
|
78
|
-
} // Step 6: Track attributions
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
await this.runAttributionStrategy(options === null || options === void 0 ? void 0 : options.attribution, isNewSession);
|
|
75
|
+
await this.runQueuedFunctions('dispatchQ');
|
|
82
76
|
}
|
|
83
77
|
|
|
84
78
|
async runAttributionStrategy(attributionConfig) {
|
|
@@ -135,6 +129,18 @@ class AmplitudeReactNative extends _analyticsCore.AmplitudeCore {
|
|
|
135
129
|
.setDeviceId(deviceId).commit();
|
|
136
130
|
}
|
|
137
131
|
|
|
132
|
+
identify(identify, eventOptions) {
|
|
133
|
+
if (eventOptions !== null && eventOptions !== void 0 && eventOptions.user_id) {
|
|
134
|
+
this.setUserId(eventOptions.user_id);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if (eventOptions !== null && eventOptions !== void 0 && eventOptions.device_id) {
|
|
138
|
+
this.setDeviceId(eventOptions.device_id);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return super.identify(identify, eventOptions);
|
|
142
|
+
}
|
|
143
|
+
|
|
138
144
|
reset() {
|
|
139
145
|
this.setUserId(undefined);
|
|
140
146
|
this.setDeviceId((0, _analyticsCore.UUID)());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AmplitudeReactNative","AmplitudeCore","init","apiKey","userId","options","initializing","oldCookies","parseOldCookies","reactNativeOptions","useReactNativeConfig","deviceId","sessionId","optOut","lastEventTime","_init","isNewSession","config","Date","now","sessionTimeout","setSessionId","connector","getAnalyticsConnector","eventBridge","setEventReceiver","event","track","eventType","eventProperties","identityStore","setIdentity","add","Context","IdentityEventSender","Destination","timeline","isReady","scheduleApply","runAttributionStrategy","attribution","attributionConfig","isNative","bind","onNewCampaign","storage","createFlexibleStorage","campaignTracker","CampaignTracker","send","getUserId","setUserId","q","push","editIdentity","commit","getDeviceId","setDeviceId","reset","undefined","UUID","getSessionId","createInstance","client","returnWrapper","remove","logEvent","identify","groupIdentify","setGroup","revenue","flush","setOptOut"],"sources":["react-native-client.ts"],"sourcesContent":["import { AmplitudeCore, Destination, UUID, returnWrapper } from '@amplitude/analytics-core';\nimport { CampaignTracker, IdentityEventSender, getAnalyticsConnector } from '@amplitude/analytics-client-common';\nimport {\n ReactNativeConfig,\n Campaign,\n ReactNativeOptions,\n AttributionOptions,\n ReactNativeClient,\n} from '@amplitude/analytics-types';\nimport { Context } from './plugins/context';\nimport { useReactNativeConfig, createFlexibleStorage } from './config';\nimport { parseOldCookies } from './cookie-migration';\nimport { isNative } from './utils/platform';\n\nexport class AmplitudeReactNative extends AmplitudeCore<ReactNativeConfig> {\n async init(apiKey = '', userId?: string, options?: ReactNativeOptions) {\n // Step 0: Block concurrent initialization\n if (this.initializing) {\n return;\n }\n this.initializing = true;\n\n // Step 1: Read cookies stored by old SDK\n const oldCookies = await parseOldCookies(apiKey, options);\n\n // Step 2: Create react native config\n const reactNativeOptions = await useReactNativeConfig(apiKey, userId || oldCookies.userId, {\n ...options,\n deviceId: oldCookies.deviceId ?? options?.deviceId,\n sessionId: oldCookies.sessionId ?? options?.sessionId,\n optOut: options?.optOut ?? oldCookies.optOut,\n lastEventTime: oldCookies.lastEventTime,\n });\n await super._init(reactNativeOptions);\n\n // Step 3: Manage session\n let isNewSession = !this.config.lastEventTime;\n if (\n !this.config.sessionId ||\n (this.config.lastEventTime && Date.now() - this.config.lastEventTime > this.config.sessionTimeout)\n ) {\n // Either\n // 1) No previous session; or\n // 2) Previous session expired\n this.setSessionId(Date.now());\n isNewSession = true;\n }\n\n // Set up the analytics connector to integrate with the experiment SDK.\n // Send events from the experiment SDK and forward identifies to the\n // identity store.\n const connector = getAnalyticsConnector();\n connector.eventBridge.setEventReceiver((event) => {\n void this.track(event.eventType, event.eventProperties);\n });\n connector.identityStore.setIdentity({\n userId: this.config.userId,\n deviceId: this.config.deviceId,\n });\n\n // Step 4: Install plugins\n // Do not track any events before this\n await this.add(new Context());\n await this.add(new IdentityEventSender());\n await this.add(new Destination());\n\n this.initializing = false;\n\n // Step 5: Set timeline ready for processing events\n // Send existing events, which might be collected by track before init\n this.timeline.isReady = true;\n if (!this.config.optOut) {\n this.timeline.scheduleApply(0);\n }\n\n // Step 6: Track attributions\n await this.runAttributionStrategy(options?.attribution, isNewSession);\n }\n\n async runAttributionStrategy(attributionConfig?: AttributionOptions, isNewSession = false) {\n if (isNative()) {\n return;\n }\n const track = this.track.bind(this);\n const onNewCampaign = this.setSessionId.bind(this, Date.now());\n\n const storage = await createFlexibleStorage<Campaign>(this.config);\n const campaignTracker = new CampaignTracker(this.config.apiKey, {\n ...attributionConfig,\n storage,\n track,\n onNewCampaign,\n });\n\n await campaignTracker.send(isNewSession);\n }\n\n getUserId() {\n return this.config?.userId;\n }\n\n setUserId(userId: string | undefined) {\n if (!this.config) {\n this.q.push(this.setUserId.bind(this, userId));\n return;\n }\n this.config.userId = userId;\n getAnalyticsConnector()\n .identityStore.editIdentity()\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n .setUserId(userId)\n .commit();\n }\n\n getDeviceId() {\n return this.config?.deviceId;\n }\n\n setDeviceId(deviceId: string) {\n if (!this.config) {\n this.q.push(this.setDeviceId.bind(this, deviceId));\n return;\n }\n this.config.deviceId = deviceId;\n getAnalyticsConnector()\n .identityStore.editIdentity()\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n .setDeviceId(deviceId)\n .commit();\n }\n\n reset() {\n this.setUserId(undefined);\n this.setDeviceId(UUID());\n }\n\n getSessionId() {\n return this.config?.sessionId;\n }\n\n setSessionId(sessionId: number) {\n if (!this.config) {\n this.q.push(this.setSessionId.bind(this, sessionId));\n return;\n }\n this.config.sessionId = sessionId;\n }\n}\n\nexport const createInstance = (): ReactNativeClient => {\n const client = new AmplitudeReactNative();\n return {\n init: returnWrapper(client.init.bind(client)),\n add: returnWrapper(client.add.bind(client)),\n remove: returnWrapper(client.remove.bind(client)),\n track: returnWrapper(client.track.bind(client)),\n logEvent: returnWrapper(client.logEvent.bind(client)),\n identify: returnWrapper(client.identify.bind(client)),\n groupIdentify: returnWrapper(client.groupIdentify.bind(client)),\n setGroup: returnWrapper(client.setGroup.bind(client)),\n revenue: returnWrapper(client.revenue.bind(client)),\n flush: returnWrapper(client.flush.bind(client)),\n getUserId: client.getUserId.bind(client),\n setUserId: client.setUserId.bind(client),\n getDeviceId: client.getDeviceId.bind(client),\n setDeviceId: client.setDeviceId.bind(client),\n reset: client.reset.bind(client),\n getSessionId: client.getSessionId.bind(client),\n setSessionId: client.setSessionId.bind(client),\n setOptOut: client.setOptOut.bind(client),\n };\n};\n\nexport default createInstance();\n"],"mappings":";;;;;;;AAAA;;AACA;;AAQA;;AACA;;AACA;;AACA;;AAEO,MAAMA,oBAAN,SAAmCC,4BAAnC,CAAoE;EAC/D,MAAJC,IAAI,GAA6D;IAAA;;IAAA,IAA5DC,MAA4D,uEAAnD,EAAmD;IAAA,IAA/CC,MAA+C;IAAA,IAA9BC,OAA8B;;IACrE;IACA,IAAI,KAAKC,YAAT,EAAuB;MACrB;IACD;;IACD,KAAKA,YAAL,GAAoB,IAApB,CALqE,CAOrE;;IACA,MAAMC,UAAU,GAAG,MAAM,IAAAC,gCAAA,EAAgBL,MAAhB,EAAwBE,OAAxB,CAAzB,CARqE,CAUrE;;IACA,MAAMI,kBAAkB,GAAG,MAAM,IAAAC,4BAAA,EAAqBP,MAArB,EAA6BC,MAAM,IAAIG,UAAU,CAACH,MAAlD,EAA0D,EACzF,GAAGC,OADsF;MAEzFM,QAAQ,0BAAEJ,UAAU,CAACI,QAAb,uEAAyBN,OAAzB,aAAyBA,OAAzB,uBAAyBA,OAAO,CAAEM,QAF+C;MAGzFC,SAAS,2BAAEL,UAAU,CAACK,SAAb,yEAA0BP,OAA1B,aAA0BA,OAA1B,uBAA0BA,OAAO,CAAEO,SAH6C;MAIzFC,MAAM,qBAAER,OAAF,aAAEA,OAAF,uBAAEA,OAAO,CAAEQ,MAAX,6DAAqBN,UAAU,CAACM,MAJmD;MAKzFC,aAAa,EAAEP,UAAU,CAACO;IAL+D,CAA1D,CAAjC;IAOA,MAAM,MAAMC,KAAN,CAAYN,kBAAZ,CAAN,CAlBqE,CAoBrE;;IACA,IAAIO,YAAY,GAAG,CAAC,KAAKC,MAAL,CAAYH,aAAhC;;IACA,IACE,CAAC,KAAKG,MAAL,CAAYL,SAAb,IACC,KAAKK,MAAL,CAAYH,aAAZ,IAA6BI,IAAI,CAACC,GAAL,KAAa,KAAKF,MAAL,CAAYH,aAAzB,GAAyC,KAAKG,MAAL,CAAYG,cAFrF,EAGE;MACA;MACA;MACA;MACA,KAAKC,YAAL,CAAkBH,IAAI,CAACC,GAAL,EAAlB;MACAH,YAAY,GAAG,IAAf;IACD,CA/BoE,CAiCrE;IACA;IACA;;;IACA,MAAMM,SAAS,GAAG,IAAAC,4CAAA,GAAlB;IACAD,SAAS,CAACE,WAAV,CAAsBC,gBAAtB,CAAwCC,KAAD,IAAW;MAChD,KAAK,KAAKC,KAAL,CAAWD,KAAK,CAACE,SAAjB,EAA4BF,KAAK,CAACG,eAAlC,CAAL;IACD,CAFD;IAGAP,SAAS,CAACQ,aAAV,CAAwBC,WAAxB,CAAoC;MAClC3B,MAAM,EAAE,KAAKa,MAAL,CAAYb,MADc;MAElCO,QAAQ,EAAE,KAAKM,MAAL,CAAYN;IAFY,CAApC,EAxCqE,CA6CrE;IACA;;IACA,MAAM,KAAKqB,GAAL,CAAS,IAAIC,gBAAJ,EAAT,CAAN;IACA,MAAM,KAAKD,GAAL,CAAS,IAAIE,0CAAJ,EAAT,CAAN;IACA,MAAM,KAAKF,GAAL,CAAS,IAAIG,0BAAJ,EAAT,CAAN;IAEA,KAAK7B,YAAL,GAAoB,KAApB,CAnDqE,CAqDrE;IACA;;IACA,KAAK8B,QAAL,CAAcC,OAAd,GAAwB,IAAxB;;IACA,IAAI,CAAC,KAAKpB,MAAL,CAAYJ,MAAjB,EAAyB;MACvB,KAAKuB,QAAL,CAAcE,aAAd,CAA4B,CAA5B;IACD,CA1DoE,CA4DrE;;;IACA,MAAM,KAAKC,sBAAL,CAA4BlC,OAA5B,aAA4BA,OAA5B,uBAA4BA,OAAO,CAAEmC,WAArC,EAAkDxB,YAAlD,CAAN;EACD;;EAE2B,MAAtBuB,sBAAsB,CAACE,iBAAD,EAA+D;IAAA,IAAtBzB,YAAsB,uEAAP,KAAO;;IACzF,IAAI,IAAA0B,kBAAA,GAAJ,EAAgB;MACd;IACD;;IACD,MAAMf,KAAK,GAAG,KAAKA,KAAL,CAAWgB,IAAX,CAAgB,IAAhB,CAAd;IACA,MAAMC,aAAa,GAAG,KAAKvB,YAAL,CAAkBsB,IAAlB,CAAuB,IAAvB,EAA6BzB,IAAI,CAACC,GAAL,EAA7B,CAAtB;IAEA,MAAM0B,OAAO,GAAG,MAAM,IAAAC,6BAAA,EAAgC,KAAK7B,MAArC,CAAtB;IACA,MAAM8B,eAAe,GAAG,IAAIC,sCAAJ,CAAoB,KAAK/B,MAAL,CAAYd,MAAhC,EAAwC,EAC9D,GAAGsC,iBAD2D;MAE9DI,OAF8D;MAG9DlB,KAH8D;MAI9DiB;IAJ8D,CAAxC,CAAxB;IAOA,MAAMG,eAAe,CAACE,IAAhB,CAAqBjC,YAArB,CAAN;EACD;;EAEDkC,SAAS,GAAG;IAAA;;IACV,uBAAO,KAAKjC,MAAZ,iDAAO,aAAab,MAApB;EACD;;EAED+C,SAAS,CAAC/C,MAAD,EAA6B;IACpC,IAAI,CAAC,KAAKa,MAAV,EAAkB;MAChB,KAAKmC,CAAL,CAAOC,IAAP,CAAY,KAAKF,SAAL,CAAeR,IAAf,CAAoB,IAApB,EAA0BvC,MAA1B,CAAZ;MACA;IACD;;IACD,KAAKa,MAAL,CAAYb,MAAZ,GAAqBA,MAArB;IACA,IAAAmB,4CAAA,IACGO,aADH,CACiBwB,YADjB,GAEE;IACA;IAHF,CAIGH,SAJH,CAIa/C,MAJb,EAKGmD,MALH;EAMD;;EAEDC,WAAW,GAAG;IAAA;;IACZ,wBAAO,KAAKvC,MAAZ,kDAAO,cAAaN,QAApB;EACD;;EAED8C,WAAW,CAAC9C,QAAD,EAAmB;IAC5B,IAAI,CAAC,KAAKM,MAAV,EAAkB;MAChB,KAAKmC,CAAL,CAAOC,IAAP,CAAY,KAAKI,WAAL,CAAiBd,IAAjB,CAAsB,IAAtB,EAA4BhC,QAA5B,CAAZ;MACA;IACD;;IACD,KAAKM,MAAL,CAAYN,QAAZ,GAAuBA,QAAvB;IACA,IAAAY,4CAAA,IACGO,aADH,CACiBwB,YADjB,GAEE;IACA;IAHF,CAIGG,WAJH,CAIe9C,QAJf,EAKG4C,MALH;EAMD;;EAEDG,KAAK,GAAG;IACN,KAAKP,SAAL,CAAeQ,SAAf;IACA,KAAKF,WAAL,CAAiB,IAAAG,mBAAA,GAAjB;EACD;;EAEDC,YAAY,GAAG;IAAA;;IACb,wBAAO,KAAK5C,MAAZ,kDAAO,cAAaL,SAApB;EACD;;EAEDS,YAAY,CAACT,SAAD,EAAoB;IAC9B,IAAI,CAAC,KAAKK,MAAV,EAAkB;MAChB,KAAKmC,CAAL,CAAOC,IAAP,CAAY,KAAKhC,YAAL,CAAkBsB,IAAlB,CAAuB,IAAvB,EAA6B/B,SAA7B,CAAZ;MACA;IACD;;IACD,KAAKK,MAAL,CAAYL,SAAZ,GAAwBA,SAAxB;EACD;;AAtIwE;;;;AAyIpE,MAAMkD,cAAc,GAAG,MAAyB;EACrD,MAAMC,MAAM,GAAG,IAAI/D,oBAAJ,EAAf;EACA,OAAO;IACLE,IAAI,EAAE,IAAA8D,4BAAA,EAAcD,MAAM,CAAC7D,IAAP,CAAYyC,IAAZ,CAAiBoB,MAAjB,CAAd,CADD;IAEL/B,GAAG,EAAE,IAAAgC,4BAAA,EAAcD,MAAM,CAAC/B,GAAP,CAAWW,IAAX,CAAgBoB,MAAhB,CAAd,CAFA;IAGLE,MAAM,EAAE,IAAAD,4BAAA,EAAcD,MAAM,CAACE,MAAP,CAActB,IAAd,CAAmBoB,MAAnB,CAAd,CAHH;IAILpC,KAAK,EAAE,IAAAqC,4BAAA,EAAcD,MAAM,CAACpC,KAAP,CAAagB,IAAb,CAAkBoB,MAAlB,CAAd,CAJF;IAKLG,QAAQ,EAAE,IAAAF,4BAAA,EAAcD,MAAM,CAACG,QAAP,CAAgBvB,IAAhB,CAAqBoB,MAArB,CAAd,CALL;IAMLI,QAAQ,EAAE,IAAAH,4BAAA,EAAcD,MAAM,CAACI,QAAP,CAAgBxB,IAAhB,CAAqBoB,MAArB,CAAd,CANL;IAOLK,aAAa,EAAE,IAAAJ,4BAAA,EAAcD,MAAM,CAACK,aAAP,CAAqBzB,IAArB,CAA0BoB,MAA1B,CAAd,CAPV;IAQLM,QAAQ,EAAE,IAAAL,4BAAA,EAAcD,MAAM,CAACM,QAAP,CAAgB1B,IAAhB,CAAqBoB,MAArB,CAAd,CARL;IASLO,OAAO,EAAE,IAAAN,4BAAA,EAAcD,MAAM,CAACO,OAAP,CAAe3B,IAAf,CAAoBoB,MAApB,CAAd,CATJ;IAULQ,KAAK,EAAE,IAAAP,4BAAA,EAAcD,MAAM,CAACQ,KAAP,CAAa5B,IAAb,CAAkBoB,MAAlB,CAAd,CAVF;IAWLb,SAAS,EAAEa,MAAM,CAACb,SAAP,CAAiBP,IAAjB,CAAsBoB,MAAtB,CAXN;IAYLZ,SAAS,EAAEY,MAAM,CAACZ,SAAP,CAAiBR,IAAjB,CAAsBoB,MAAtB,CAZN;IAaLP,WAAW,EAAEO,MAAM,CAACP,WAAP,CAAmBb,IAAnB,CAAwBoB,MAAxB,CAbR;IAcLN,WAAW,EAAEM,MAAM,CAACN,WAAP,CAAmBd,IAAnB,CAAwBoB,MAAxB,CAdR;IAeLL,KAAK,EAAEK,MAAM,CAACL,KAAP,CAAaf,IAAb,CAAkBoB,MAAlB,CAfF;IAgBLF,YAAY,EAAEE,MAAM,CAACF,YAAP,CAAoBlB,IAApB,CAAyBoB,MAAzB,CAhBT;IAiBL1C,YAAY,EAAE0C,MAAM,CAAC1C,YAAP,CAAoBsB,IAApB,CAAyBoB,MAAzB,CAjBT;IAkBLS,SAAS,EAAET,MAAM,CAACS,SAAP,CAAiB7B,IAAjB,CAAsBoB,MAAtB;EAlBN,CAAP;AAoBD,CAtBM;;;;eAwBQD,cAAc,E"}
|
|
1
|
+
{"version":3,"names":["AmplitudeReactNative","AmplitudeCore","init","apiKey","userId","options","initializing","oldCookies","parseOldCookies","reactNativeOptions","useReactNativeConfig","deviceId","sessionId","optOut","lastEventTime","_init","isNewSession","config","Date","now","sessionTimeout","setSessionId","connector","getAnalyticsConnector","eventBridge","setEventReceiver","event","track","eventType","eventProperties","identityStore","setIdentity","add","Context","IdentityEventSender","Destination","runAttributionStrategy","attribution","runQueuedFunctions","attributionConfig","isNative","bind","onNewCampaign","storage","createFlexibleStorage","campaignTracker","CampaignTracker","send","getUserId","setUserId","q","push","editIdentity","commit","getDeviceId","setDeviceId","identify","eventOptions","user_id","device_id","reset","undefined","UUID","getSessionId","createInstance","client","returnWrapper","remove","logEvent","groupIdentify","setGroup","revenue","flush","setOptOut"],"sources":["react-native-client.ts"],"sourcesContent":["import { AmplitudeCore, Destination, UUID, returnWrapper } from '@amplitude/analytics-core';\nimport { CampaignTracker, IdentityEventSender, getAnalyticsConnector } from '@amplitude/analytics-client-common';\nimport {\n ReactNativeConfig,\n Campaign,\n ReactNativeOptions,\n AttributionOptions,\n ReactNativeClient,\n Identify as IIdentify,\n EventOptions,\n} from '@amplitude/analytics-types';\nimport { Context } from './plugins/context';\nimport { useReactNativeConfig, createFlexibleStorage } from './config';\nimport { parseOldCookies } from './cookie-migration';\nimport { isNative } from './utils/platform';\n\nexport class AmplitudeReactNative extends AmplitudeCore<ReactNativeConfig> {\n async init(apiKey = '', userId?: string, options?: ReactNativeOptions) {\n // Step 0: Block concurrent initialization\n if (this.initializing) {\n return;\n }\n this.initializing = true;\n\n // Step 1: Read cookies stored by old SDK\n const oldCookies = await parseOldCookies(apiKey, options);\n\n // Step 2: Create react native config\n const reactNativeOptions = await useReactNativeConfig(apiKey, userId || oldCookies.userId, {\n ...options,\n deviceId: oldCookies.deviceId ?? options?.deviceId,\n sessionId: oldCookies.sessionId ?? options?.sessionId,\n optOut: options?.optOut ?? oldCookies.optOut,\n lastEventTime: oldCookies.lastEventTime,\n });\n await super._init(reactNativeOptions);\n\n // Step 3: Manage session\n let isNewSession = !this.config.lastEventTime;\n if (\n !this.config.sessionId ||\n (this.config.lastEventTime && Date.now() - this.config.lastEventTime > this.config.sessionTimeout)\n ) {\n // Either\n // 1) No previous session; or\n // 2) Previous session expired\n this.setSessionId(Date.now());\n isNewSession = true;\n }\n\n // Set up the analytics connector to integrate with the experiment SDK.\n // Send events from the experiment SDK and forward identifies to the\n // identity store.\n const connector = getAnalyticsConnector();\n connector.eventBridge.setEventReceiver((event) => {\n void this.track(event.eventType, event.eventProperties);\n });\n connector.identityStore.setIdentity({\n userId: this.config.userId,\n deviceId: this.config.deviceId,\n });\n\n // Step 4: Install plugins\n // Do not track any events before this\n await this.add(new Context());\n await this.add(new IdentityEventSender());\n await this.add(new Destination());\n\n this.initializing = false;\n\n // Step 5: Track attributions\n await this.runAttributionStrategy(options?.attribution, isNewSession);\n\n // Step 6: Run queued dispatch functions\n await this.runQueuedFunctions('dispatchQ');\n }\n\n async runAttributionStrategy(attributionConfig?: AttributionOptions, isNewSession = false) {\n if (isNative()) {\n return;\n }\n const track = this.track.bind(this);\n const onNewCampaign = this.setSessionId.bind(this, Date.now());\n\n const storage = await createFlexibleStorage<Campaign>(this.config);\n const campaignTracker = new CampaignTracker(this.config.apiKey, {\n ...attributionConfig,\n storage,\n track,\n onNewCampaign,\n });\n\n await campaignTracker.send(isNewSession);\n }\n\n getUserId() {\n return this.config?.userId;\n }\n\n setUserId(userId: string | undefined) {\n if (!this.config) {\n this.q.push(this.setUserId.bind(this, userId));\n return;\n }\n this.config.userId = userId;\n getAnalyticsConnector()\n .identityStore.editIdentity()\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n .setUserId(userId)\n .commit();\n }\n\n getDeviceId() {\n return this.config?.deviceId;\n }\n\n setDeviceId(deviceId: string) {\n if (!this.config) {\n this.q.push(this.setDeviceId.bind(this, deviceId));\n return;\n }\n this.config.deviceId = deviceId;\n getAnalyticsConnector()\n .identityStore.editIdentity()\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n .setDeviceId(deviceId)\n .commit();\n }\n\n identify(identify: IIdentify, eventOptions?: EventOptions) {\n if (eventOptions?.user_id) {\n this.setUserId(eventOptions.user_id);\n }\n if (eventOptions?.device_id) {\n this.setDeviceId(eventOptions.device_id);\n }\n return super.identify(identify, eventOptions);\n }\n\n reset() {\n this.setUserId(undefined);\n this.setDeviceId(UUID());\n }\n\n getSessionId() {\n return this.config?.sessionId;\n }\n\n setSessionId(sessionId: number) {\n if (!this.config) {\n this.q.push(this.setSessionId.bind(this, sessionId));\n return;\n }\n this.config.sessionId = sessionId;\n }\n}\n\nexport const createInstance = (): ReactNativeClient => {\n const client = new AmplitudeReactNative();\n return {\n init: returnWrapper(client.init.bind(client)),\n add: returnWrapper(client.add.bind(client)),\n remove: returnWrapper(client.remove.bind(client)),\n track: returnWrapper(client.track.bind(client)),\n logEvent: returnWrapper(client.logEvent.bind(client)),\n identify: returnWrapper(client.identify.bind(client)),\n groupIdentify: returnWrapper(client.groupIdentify.bind(client)),\n setGroup: returnWrapper(client.setGroup.bind(client)),\n revenue: returnWrapper(client.revenue.bind(client)),\n flush: returnWrapper(client.flush.bind(client)),\n getUserId: client.getUserId.bind(client),\n setUserId: client.setUserId.bind(client),\n getDeviceId: client.getDeviceId.bind(client),\n setDeviceId: client.setDeviceId.bind(client),\n reset: client.reset.bind(client),\n getSessionId: client.getSessionId.bind(client),\n setSessionId: client.setSessionId.bind(client),\n setOptOut: client.setOptOut.bind(client),\n };\n};\n\nexport default createInstance();\n"],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.LocalStorage = void 0;
|
|
7
7
|
|
|
8
|
+
var _analyticsClientCommon = require("@amplitude/analytics-client-common");
|
|
9
|
+
|
|
8
10
|
var _asyncStorage = _interopRequireDefault(require("@react-native-async-storage/async-storage"));
|
|
9
11
|
|
|
10
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -12,7 +14,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
12
14
|
class LocalStorage {
|
|
13
15
|
async isEnabled() {
|
|
14
16
|
/* istanbul ignore if */
|
|
15
|
-
if (
|
|
17
|
+
if (!(0, _analyticsClientCommon.getGlobalScope)()) {
|
|
16
18
|
return false;
|
|
17
19
|
}
|
|
18
20
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["LocalStorage","isEnabled","
|
|
1
|
+
{"version":3,"names":["LocalStorage","isEnabled","getGlobalScope","random","String","Date","now","testStorage","testKey","set","value","get","remove","key","getRaw","undefined","JSON","parse","AsyncStorage","getItem","setItem","stringify","removeItem","reset","clear"],"sources":["local-storage.ts"],"sourcesContent":["import { getGlobalScope } from '@amplitude/analytics-client-common';\nimport { Storage } from '@amplitude/analytics-types';\nimport AsyncStorage from '@react-native-async-storage/async-storage';\n\nexport class LocalStorage<T> implements Storage<T> {\n async isEnabled(): Promise<boolean> {\n /* istanbul ignore if */\n if (!getGlobalScope()) {\n return false;\n }\n\n const random = String(Date.now());\n const testStorage = new LocalStorage<string>();\n const testKey = 'AMP_TEST';\n try {\n await testStorage.set(testKey, random);\n const value = await testStorage.get(testKey);\n return value === random;\n } catch {\n /* istanbul ignore next */\n return false;\n } finally {\n await testStorage.remove(testKey);\n }\n }\n\n async get(key: string): Promise<T | undefined> {\n try {\n const value = await this.getRaw(key);\n if (!value) {\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return JSON.parse(value);\n } catch {\n /* istanbul ignore next */\n return undefined;\n }\n }\n\n async getRaw(key: string): Promise<string | undefined> {\n return (await AsyncStorage.getItem(key)) || undefined;\n }\n\n async set(key: string, value: T): Promise<void> {\n try {\n await AsyncStorage.setItem(key, JSON.stringify(value));\n } catch {\n //\n }\n }\n\n async remove(key: string): Promise<void> {\n try {\n await AsyncStorage.removeItem(key);\n } catch {\n //\n }\n }\n\n async reset(): Promise<void> {\n try {\n await AsyncStorage.clear();\n } catch {\n //\n }\n }\n}\n"],"mappings":";;;;;;;AAAA;;AAEA;;;;AAEO,MAAMA,YAAN,CAA4C;EAClC,MAATC,SAAS,GAAqB;IAClC;IACA,IAAI,CAAC,IAAAC,qCAAA,GAAL,EAAuB;MACrB,OAAO,KAAP;IACD;;IAED,MAAMC,MAAM,GAAGC,MAAM,CAACC,IAAI,CAACC,GAAL,EAAD,CAArB;IACA,MAAMC,WAAW,GAAG,IAAIP,YAAJ,EAApB;IACA,MAAMQ,OAAO,GAAG,UAAhB;;IACA,IAAI;MACF,MAAMD,WAAW,CAACE,GAAZ,CAAgBD,OAAhB,EAAyBL,MAAzB,CAAN;MACA,MAAMO,KAAK,GAAG,MAAMH,WAAW,CAACI,GAAZ,CAAgBH,OAAhB,CAApB;MACA,OAAOE,KAAK,KAAKP,MAAjB;IACD,CAJD,CAIE,MAAM;MACN;MACA,OAAO,KAAP;IACD,CAPD,SAOU;MACR,MAAMI,WAAW,CAACK,MAAZ,CAAmBJ,OAAnB,CAAN;IACD;EACF;;EAEQ,MAAHG,GAAG,CAACE,GAAD,EAAsC;IAC7C,IAAI;MACF,MAAMH,KAAK,GAAG,MAAM,KAAKI,MAAL,CAAYD,GAAZ,CAApB;;MACA,IAAI,CAACH,KAAL,EAAY;QACV,OAAOK,SAAP;MACD,CAJC,CAKF;;;MACA,OAAOC,IAAI,CAACC,KAAL,CAAWP,KAAX,CAAP;IACD,CAPD,CAOE,MAAM;MACN;MACA,OAAOK,SAAP;IACD;EACF;;EAEW,MAAND,MAAM,CAACD,GAAD,EAA2C;IACrD,OAAO,CAAC,MAAMK,qBAAA,CAAaC,OAAb,CAAqBN,GAArB,CAAP,KAAqCE,SAA5C;EACD;;EAEQ,MAAHN,GAAG,CAACI,GAAD,EAAcH,KAAd,EAAuC;IAC9C,IAAI;MACF,MAAMQ,qBAAA,CAAaE,OAAb,CAAqBP,GAArB,EAA0BG,IAAI,CAACK,SAAL,CAAeX,KAAf,CAA1B,CAAN;IACD,CAFD,CAEE,MAAM,CACN;IACD;EACF;;EAEW,MAANE,MAAM,CAACC,GAAD,EAA6B;IACvC,IAAI;MACF,MAAMK,qBAAA,CAAaI,UAAb,CAAwBT,GAAxB,CAAN;IACD,CAFD,CAEE,MAAM,CACN;IACD;EACF;;EAEU,MAALU,KAAK,GAAkB;IAC3B,IAAI;MACF,MAAML,qBAAA,CAAaM,KAAb,EAAN;IACD,CAFD,CAEE,MAAM,CACN;IACD;EACF;;AA9DgD"}
|
package/lib/commonjs/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["export const VERSION = '0.4.
|
|
1
|
+
{"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["export const VERSION = '0.4.9';\n"],"mappings":";;;;;;AAAO,MAAMA,OAAO,GAAG,OAAhB"}
|
|
@@ -55,17 +55,11 @@ export class AmplitudeReactNative extends AmplitudeCore {
|
|
|
55
55
|
await this.add(new Context());
|
|
56
56
|
await this.add(new IdentityEventSender());
|
|
57
57
|
await this.add(new Destination());
|
|
58
|
-
this.initializing = false; // Step 5:
|
|
59
|
-
// Send existing events, which might be collected by track before init
|
|
58
|
+
this.initializing = false; // Step 5: Track attributions
|
|
60
59
|
|
|
61
|
-
this.
|
|
60
|
+
await this.runAttributionStrategy(options === null || options === void 0 ? void 0 : options.attribution, isNewSession); // Step 6: Run queued dispatch functions
|
|
62
61
|
|
|
63
|
-
|
|
64
|
-
this.timeline.scheduleApply(0);
|
|
65
|
-
} // Step 6: Track attributions
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
await this.runAttributionStrategy(options === null || options === void 0 ? void 0 : options.attribution, isNewSession);
|
|
62
|
+
await this.runQueuedFunctions('dispatchQ');
|
|
69
63
|
}
|
|
70
64
|
|
|
71
65
|
async runAttributionStrategy(attributionConfig) {
|
|
@@ -122,6 +116,18 @@ export class AmplitudeReactNative extends AmplitudeCore {
|
|
|
122
116
|
.setDeviceId(deviceId).commit();
|
|
123
117
|
}
|
|
124
118
|
|
|
119
|
+
identify(identify, eventOptions) {
|
|
120
|
+
if (eventOptions !== null && eventOptions !== void 0 && eventOptions.user_id) {
|
|
121
|
+
this.setUserId(eventOptions.user_id);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
if (eventOptions !== null && eventOptions !== void 0 && eventOptions.device_id) {
|
|
125
|
+
this.setDeviceId(eventOptions.device_id);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return super.identify(identify, eventOptions);
|
|
129
|
+
}
|
|
130
|
+
|
|
125
131
|
reset() {
|
|
126
132
|
this.setUserId(undefined);
|
|
127
133
|
this.setDeviceId(UUID());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AmplitudeCore","Destination","UUID","returnWrapper","CampaignTracker","IdentityEventSender","getAnalyticsConnector","Context","useReactNativeConfig","createFlexibleStorage","parseOldCookies","isNative","AmplitudeReactNative","init","apiKey","userId","options","initializing","oldCookies","reactNativeOptions","deviceId","sessionId","optOut","lastEventTime","_init","isNewSession","config","Date","now","sessionTimeout","setSessionId","connector","eventBridge","setEventReceiver","event","track","eventType","eventProperties","identityStore","setIdentity","add","timeline","isReady","scheduleApply","runAttributionStrategy","attribution","attributionConfig","bind","onNewCampaign","storage","campaignTracker","send","getUserId","setUserId","q","push","editIdentity","commit","getDeviceId","setDeviceId","reset","undefined","getSessionId","createInstance","client","remove","logEvent","identify","groupIdentify","setGroup","revenue","flush","setOptOut"],"sources":["react-native-client.ts"],"sourcesContent":["import { AmplitudeCore, Destination, UUID, returnWrapper } from '@amplitude/analytics-core';\nimport { CampaignTracker, IdentityEventSender, getAnalyticsConnector } from '@amplitude/analytics-client-common';\nimport {\n ReactNativeConfig,\n Campaign,\n ReactNativeOptions,\n AttributionOptions,\n ReactNativeClient,\n} from '@amplitude/analytics-types';\nimport { Context } from './plugins/context';\nimport { useReactNativeConfig, createFlexibleStorage } from './config';\nimport { parseOldCookies } from './cookie-migration';\nimport { isNative } from './utils/platform';\n\nexport class AmplitudeReactNative extends AmplitudeCore<ReactNativeConfig> {\n async init(apiKey = '', userId?: string, options?: ReactNativeOptions) {\n // Step 0: Block concurrent initialization\n if (this.initializing) {\n return;\n }\n this.initializing = true;\n\n // Step 1: Read cookies stored by old SDK\n const oldCookies = await parseOldCookies(apiKey, options);\n\n // Step 2: Create react native config\n const reactNativeOptions = await useReactNativeConfig(apiKey, userId || oldCookies.userId, {\n ...options,\n deviceId: oldCookies.deviceId ?? options?.deviceId,\n sessionId: oldCookies.sessionId ?? options?.sessionId,\n optOut: options?.optOut ?? oldCookies.optOut,\n lastEventTime: oldCookies.lastEventTime,\n });\n await super._init(reactNativeOptions);\n\n // Step 3: Manage session\n let isNewSession = !this.config.lastEventTime;\n if (\n !this.config.sessionId ||\n (this.config.lastEventTime && Date.now() - this.config.lastEventTime > this.config.sessionTimeout)\n ) {\n // Either\n // 1) No previous session; or\n // 2) Previous session expired\n this.setSessionId(Date.now());\n isNewSession = true;\n }\n\n // Set up the analytics connector to integrate with the experiment SDK.\n // Send events from the experiment SDK and forward identifies to the\n // identity store.\n const connector = getAnalyticsConnector();\n connector.eventBridge.setEventReceiver((event) => {\n void this.track(event.eventType, event.eventProperties);\n });\n connector.identityStore.setIdentity({\n userId: this.config.userId,\n deviceId: this.config.deviceId,\n });\n\n // Step 4: Install plugins\n // Do not track any events before this\n await this.add(new Context());\n await this.add(new IdentityEventSender());\n await this.add(new Destination());\n\n this.initializing = false;\n\n // Step 5: Set timeline ready for processing events\n // Send existing events, which might be collected by track before init\n this.timeline.isReady = true;\n if (!this.config.optOut) {\n this.timeline.scheduleApply(0);\n }\n\n // Step 6: Track attributions\n await this.runAttributionStrategy(options?.attribution, isNewSession);\n }\n\n async runAttributionStrategy(attributionConfig?: AttributionOptions, isNewSession = false) {\n if (isNative()) {\n return;\n }\n const track = this.track.bind(this);\n const onNewCampaign = this.setSessionId.bind(this, Date.now());\n\n const storage = await createFlexibleStorage<Campaign>(this.config);\n const campaignTracker = new CampaignTracker(this.config.apiKey, {\n ...attributionConfig,\n storage,\n track,\n onNewCampaign,\n });\n\n await campaignTracker.send(isNewSession);\n }\n\n getUserId() {\n return this.config?.userId;\n }\n\n setUserId(userId: string | undefined) {\n if (!this.config) {\n this.q.push(this.setUserId.bind(this, userId));\n return;\n }\n this.config.userId = userId;\n getAnalyticsConnector()\n .identityStore.editIdentity()\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n .setUserId(userId)\n .commit();\n }\n\n getDeviceId() {\n return this.config?.deviceId;\n }\n\n setDeviceId(deviceId: string) {\n if (!this.config) {\n this.q.push(this.setDeviceId.bind(this, deviceId));\n return;\n }\n this.config.deviceId = deviceId;\n getAnalyticsConnector()\n .identityStore.editIdentity()\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n .setDeviceId(deviceId)\n .commit();\n }\n\n reset() {\n this.setUserId(undefined);\n this.setDeviceId(UUID());\n }\n\n getSessionId() {\n return this.config?.sessionId;\n }\n\n setSessionId(sessionId: number) {\n if (!this.config) {\n this.q.push(this.setSessionId.bind(this, sessionId));\n return;\n }\n this.config.sessionId = sessionId;\n }\n}\n\nexport const createInstance = (): ReactNativeClient => {\n const client = new AmplitudeReactNative();\n return {\n init: returnWrapper(client.init.bind(client)),\n add: returnWrapper(client.add.bind(client)),\n remove: returnWrapper(client.remove.bind(client)),\n track: returnWrapper(client.track.bind(client)),\n logEvent: returnWrapper(client.logEvent.bind(client)),\n identify: returnWrapper(client.identify.bind(client)),\n groupIdentify: returnWrapper(client.groupIdentify.bind(client)),\n setGroup: returnWrapper(client.setGroup.bind(client)),\n revenue: returnWrapper(client.revenue.bind(client)),\n flush: returnWrapper(client.flush.bind(client)),\n getUserId: client.getUserId.bind(client),\n setUserId: client.setUserId.bind(client),\n getDeviceId: client.getDeviceId.bind(client),\n setDeviceId: client.setDeviceId.bind(client),\n reset: client.reset.bind(client),\n getSessionId: client.getSessionId.bind(client),\n setSessionId: client.setSessionId.bind(client),\n setOptOut: client.setOptOut.bind(client),\n };\n};\n\nexport default createInstance();\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["AmplitudeCore","Destination","UUID","returnWrapper","CampaignTracker","IdentityEventSender","getAnalyticsConnector","Context","useReactNativeConfig","createFlexibleStorage","parseOldCookies","isNative","AmplitudeReactNative","init","apiKey","userId","options","initializing","oldCookies","reactNativeOptions","deviceId","sessionId","optOut","lastEventTime","_init","isNewSession","config","Date","now","sessionTimeout","setSessionId","connector","eventBridge","setEventReceiver","event","track","eventType","eventProperties","identityStore","setIdentity","add","runAttributionStrategy","attribution","runQueuedFunctions","attributionConfig","bind","onNewCampaign","storage","campaignTracker","send","getUserId","setUserId","q","push","editIdentity","commit","getDeviceId","setDeviceId","identify","eventOptions","user_id","device_id","reset","undefined","getSessionId","createInstance","client","remove","logEvent","groupIdentify","setGroup","revenue","flush","setOptOut"],"sources":["react-native-client.ts"],"sourcesContent":["import { AmplitudeCore, Destination, UUID, returnWrapper } from '@amplitude/analytics-core';\nimport { CampaignTracker, IdentityEventSender, getAnalyticsConnector } from '@amplitude/analytics-client-common';\nimport {\n ReactNativeConfig,\n Campaign,\n ReactNativeOptions,\n AttributionOptions,\n ReactNativeClient,\n Identify as IIdentify,\n EventOptions,\n} from '@amplitude/analytics-types';\nimport { Context } from './plugins/context';\nimport { useReactNativeConfig, createFlexibleStorage } from './config';\nimport { parseOldCookies } from './cookie-migration';\nimport { isNative } from './utils/platform';\n\nexport class AmplitudeReactNative extends AmplitudeCore<ReactNativeConfig> {\n async init(apiKey = '', userId?: string, options?: ReactNativeOptions) {\n // Step 0: Block concurrent initialization\n if (this.initializing) {\n return;\n }\n this.initializing = true;\n\n // Step 1: Read cookies stored by old SDK\n const oldCookies = await parseOldCookies(apiKey, options);\n\n // Step 2: Create react native config\n const reactNativeOptions = await useReactNativeConfig(apiKey, userId || oldCookies.userId, {\n ...options,\n deviceId: oldCookies.deviceId ?? options?.deviceId,\n sessionId: oldCookies.sessionId ?? options?.sessionId,\n optOut: options?.optOut ?? oldCookies.optOut,\n lastEventTime: oldCookies.lastEventTime,\n });\n await super._init(reactNativeOptions);\n\n // Step 3: Manage session\n let isNewSession = !this.config.lastEventTime;\n if (\n !this.config.sessionId ||\n (this.config.lastEventTime && Date.now() - this.config.lastEventTime > this.config.sessionTimeout)\n ) {\n // Either\n // 1) No previous session; or\n // 2) Previous session expired\n this.setSessionId(Date.now());\n isNewSession = true;\n }\n\n // Set up the analytics connector to integrate with the experiment SDK.\n // Send events from the experiment SDK and forward identifies to the\n // identity store.\n const connector = getAnalyticsConnector();\n connector.eventBridge.setEventReceiver((event) => {\n void this.track(event.eventType, event.eventProperties);\n });\n connector.identityStore.setIdentity({\n userId: this.config.userId,\n deviceId: this.config.deviceId,\n });\n\n // Step 4: Install plugins\n // Do not track any events before this\n await this.add(new Context());\n await this.add(new IdentityEventSender());\n await this.add(new Destination());\n\n this.initializing = false;\n\n // Step 5: Track attributions\n await this.runAttributionStrategy(options?.attribution, isNewSession);\n\n // Step 6: Run queued dispatch functions\n await this.runQueuedFunctions('dispatchQ');\n }\n\n async runAttributionStrategy(attributionConfig?: AttributionOptions, isNewSession = false) {\n if (isNative()) {\n return;\n }\n const track = this.track.bind(this);\n const onNewCampaign = this.setSessionId.bind(this, Date.now());\n\n const storage = await createFlexibleStorage<Campaign>(this.config);\n const campaignTracker = new CampaignTracker(this.config.apiKey, {\n ...attributionConfig,\n storage,\n track,\n onNewCampaign,\n });\n\n await campaignTracker.send(isNewSession);\n }\n\n getUserId() {\n return this.config?.userId;\n }\n\n setUserId(userId: string | undefined) {\n if (!this.config) {\n this.q.push(this.setUserId.bind(this, userId));\n return;\n }\n this.config.userId = userId;\n getAnalyticsConnector()\n .identityStore.editIdentity()\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n .setUserId(userId)\n .commit();\n }\n\n getDeviceId() {\n return this.config?.deviceId;\n }\n\n setDeviceId(deviceId: string) {\n if (!this.config) {\n this.q.push(this.setDeviceId.bind(this, deviceId));\n return;\n }\n this.config.deviceId = deviceId;\n getAnalyticsConnector()\n .identityStore.editIdentity()\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n .setDeviceId(deviceId)\n .commit();\n }\n\n identify(identify: IIdentify, eventOptions?: EventOptions) {\n if (eventOptions?.user_id) {\n this.setUserId(eventOptions.user_id);\n }\n if (eventOptions?.device_id) {\n this.setDeviceId(eventOptions.device_id);\n }\n return super.identify(identify, eventOptions);\n }\n\n reset() {\n this.setUserId(undefined);\n this.setDeviceId(UUID());\n }\n\n getSessionId() {\n return this.config?.sessionId;\n }\n\n setSessionId(sessionId: number) {\n if (!this.config) {\n this.q.push(this.setSessionId.bind(this, sessionId));\n return;\n }\n this.config.sessionId = sessionId;\n }\n}\n\nexport const createInstance = (): ReactNativeClient => {\n const client = new AmplitudeReactNative();\n return {\n init: returnWrapper(client.init.bind(client)),\n add: returnWrapper(client.add.bind(client)),\n remove: returnWrapper(client.remove.bind(client)),\n track: returnWrapper(client.track.bind(client)),\n logEvent: returnWrapper(client.logEvent.bind(client)),\n identify: returnWrapper(client.identify.bind(client)),\n groupIdentify: returnWrapper(client.groupIdentify.bind(client)),\n setGroup: returnWrapper(client.setGroup.bind(client)),\n revenue: returnWrapper(client.revenue.bind(client)),\n flush: returnWrapper(client.flush.bind(client)),\n getUserId: client.getUserId.bind(client),\n setUserId: client.setUserId.bind(client),\n getDeviceId: client.getDeviceId.bind(client),\n setDeviceId: client.setDeviceId.bind(client),\n reset: client.reset.bind(client),\n getSessionId: client.getSessionId.bind(client),\n setSessionId: client.setSessionId.bind(client),\n setOptOut: client.setOptOut.bind(client),\n };\n};\n\nexport default createInstance();\n"],"mappings":"AAAA,SAASA,aAAT,EAAwBC,WAAxB,EAAqCC,IAArC,EAA2CC,aAA3C,QAAgE,2BAAhE;AACA,SAASC,eAAT,EAA0BC,mBAA1B,EAA+CC,qBAA/C,QAA4E,oCAA5E;AAUA,SAASC,OAAT,QAAwB,mBAAxB;AACA,SAASC,oBAAT,EAA+BC,qBAA/B,QAA4D,UAA5D;AACA,SAASC,eAAT,QAAgC,oBAAhC;AACA,SAASC,QAAT,QAAyB,kBAAzB;AAEA,OAAO,MAAMC,oBAAN,SAAmCZ,aAAnC,CAAoE;EAC/D,MAAJa,IAAI,GAA6D;IAAA;;IAAA,IAA5DC,MAA4D,uEAAnD,EAAmD;IAAA,IAA/CC,MAA+C;IAAA,IAA9BC,OAA8B;;IACrE;IACA,IAAI,KAAKC,YAAT,EAAuB;MACrB;IACD;;IACD,KAAKA,YAAL,GAAoB,IAApB,CALqE,CAOrE;;IACA,MAAMC,UAAU,GAAG,MAAMR,eAAe,CAACI,MAAD,EAASE,OAAT,CAAxC,CARqE,CAUrE;;IACA,MAAMG,kBAAkB,GAAG,MAAMX,oBAAoB,CAACM,MAAD,EAASC,MAAM,IAAIG,UAAU,CAACH,MAA9B,EAAsC,EACzF,GAAGC,OADsF;MAEzFI,QAAQ,0BAAEF,UAAU,CAACE,QAAb,uEAAyBJ,OAAzB,aAAyBA,OAAzB,uBAAyBA,OAAO,CAAEI,QAF+C;MAGzFC,SAAS,2BAAEH,UAAU,CAACG,SAAb,yEAA0BL,OAA1B,aAA0BA,OAA1B,uBAA0BA,OAAO,CAAEK,SAH6C;MAIzFC,MAAM,qBAAEN,OAAF,aAAEA,OAAF,uBAAEA,OAAO,CAAEM,MAAX,6DAAqBJ,UAAU,CAACI,MAJmD;MAKzFC,aAAa,EAAEL,UAAU,CAACK;IAL+D,CAAtC,CAArD;IAOA,MAAM,MAAMC,KAAN,CAAYL,kBAAZ,CAAN,CAlBqE,CAoBrE;;IACA,IAAIM,YAAY,GAAG,CAAC,KAAKC,MAAL,CAAYH,aAAhC;;IACA,IACE,CAAC,KAAKG,MAAL,CAAYL,SAAb,IACC,KAAKK,MAAL,CAAYH,aAAZ,IAA6BI,IAAI,CAACC,GAAL,KAAa,KAAKF,MAAL,CAAYH,aAAzB,GAAyC,KAAKG,MAAL,CAAYG,cAFrF,EAGE;MACA;MACA;MACA;MACA,KAAKC,YAAL,CAAkBH,IAAI,CAACC,GAAL,EAAlB;MACAH,YAAY,GAAG,IAAf;IACD,CA/BoE,CAiCrE;IACA;IACA;;;IACA,MAAMM,SAAS,GAAGzB,qBAAqB,EAAvC;IACAyB,SAAS,CAACC,WAAV,CAAsBC,gBAAtB,CAAwCC,KAAD,IAAW;MAChD,KAAK,KAAKC,KAAL,CAAWD,KAAK,CAACE,SAAjB,EAA4BF,KAAK,CAACG,eAAlC,CAAL;IACD,CAFD;IAGAN,SAAS,CAACO,aAAV,CAAwBC,WAAxB,CAAoC;MAClCxB,MAAM,EAAE,KAAKW,MAAL,CAAYX,MADc;MAElCK,QAAQ,EAAE,KAAKM,MAAL,CAAYN;IAFY,CAApC,EAxCqE,CA6CrE;IACA;;IACA,MAAM,KAAKoB,GAAL,CAAS,IAAIjC,OAAJ,EAAT,CAAN;IACA,MAAM,KAAKiC,GAAL,CAAS,IAAInC,mBAAJ,EAAT,CAAN;IACA,MAAM,KAAKmC,GAAL,CAAS,IAAIvC,WAAJ,EAAT,CAAN;IAEA,KAAKgB,YAAL,GAAoB,KAApB,CAnDqE,CAqDrE;;IACA,MAAM,KAAKwB,sBAAL,CAA4BzB,OAA5B,aAA4BA,OAA5B,uBAA4BA,OAAO,CAAE0B,WAArC,EAAkDjB,YAAlD,CAAN,CAtDqE,CAwDrE;;IACA,MAAM,KAAKkB,kBAAL,CAAwB,WAAxB,CAAN;EACD;;EAE2B,MAAtBF,sBAAsB,CAACG,iBAAD,EAA+D;IAAA,IAAtBnB,YAAsB,uEAAP,KAAO;;IACzF,IAAId,QAAQ,EAAZ,EAAgB;MACd;IACD;;IACD,MAAMwB,KAAK,GAAG,KAAKA,KAAL,CAAWU,IAAX,CAAgB,IAAhB,CAAd;IACA,MAAMC,aAAa,GAAG,KAAKhB,YAAL,CAAkBe,IAAlB,CAAuB,IAAvB,EAA6BlB,IAAI,CAACC,GAAL,EAA7B,CAAtB;IAEA,MAAMmB,OAAO,GAAG,MAAMtC,qBAAqB,CAAW,KAAKiB,MAAhB,CAA3C;IACA,MAAMsB,eAAe,GAAG,IAAI5C,eAAJ,CAAoB,KAAKsB,MAAL,CAAYZ,MAAhC,EAAwC,EAC9D,GAAG8B,iBAD2D;MAE9DG,OAF8D;MAG9DZ,KAH8D;MAI9DW;IAJ8D,CAAxC,CAAxB;IAOA,MAAME,eAAe,CAACC,IAAhB,CAAqBxB,YAArB,CAAN;EACD;;EAEDyB,SAAS,GAAG;IAAA;;IACV,uBAAO,KAAKxB,MAAZ,iDAAO,aAAaX,MAApB;EACD;;EAEDoC,SAAS,CAACpC,MAAD,EAA6B;IACpC,IAAI,CAAC,KAAKW,MAAV,EAAkB;MAChB,KAAK0B,CAAL,CAAOC,IAAP,CAAY,KAAKF,SAAL,CAAeN,IAAf,CAAoB,IAApB,EAA0B9B,MAA1B,CAAZ;MACA;IACD;;IACD,KAAKW,MAAL,CAAYX,MAAZ,GAAqBA,MAArB;IACAT,qBAAqB,GAClBgC,aADH,CACiBgB,YADjB,GAEE;IACA;IAHF,CAIGH,SAJH,CAIapC,MAJb,EAKGwC,MALH;EAMD;;EAEDC,WAAW,GAAG;IAAA;;IACZ,wBAAO,KAAK9B,MAAZ,kDAAO,cAAaN,QAApB;EACD;;EAEDqC,WAAW,CAACrC,QAAD,EAAmB;IAC5B,IAAI,CAAC,KAAKM,MAAV,EAAkB;MAChB,KAAK0B,CAAL,CAAOC,IAAP,CAAY,KAAKI,WAAL,CAAiBZ,IAAjB,CAAsB,IAAtB,EAA4BzB,QAA5B,CAAZ;MACA;IACD;;IACD,KAAKM,MAAL,CAAYN,QAAZ,GAAuBA,QAAvB;IACAd,qBAAqB,GAClBgC,aADH,CACiBgB,YADjB,GAEE;IACA;IAHF,CAIGG,WAJH,CAIerC,QAJf,EAKGmC,MALH;EAMD;;EAEDG,QAAQ,CAACA,QAAD,EAAsBC,YAAtB,EAAmD;IACzD,IAAIA,YAAJ,aAAIA,YAAJ,eAAIA,YAAY,CAAEC,OAAlB,EAA2B;MACzB,KAAKT,SAAL,CAAeQ,YAAY,CAACC,OAA5B;IACD;;IACD,IAAID,YAAJ,aAAIA,YAAJ,eAAIA,YAAY,CAAEE,SAAlB,EAA6B;MAC3B,KAAKJ,WAAL,CAAiBE,YAAY,CAACE,SAA9B;IACD;;IACD,OAAO,MAAMH,QAAN,CAAeA,QAAf,EAAyBC,YAAzB,CAAP;EACD;;EAEDG,KAAK,GAAG;IACN,KAAKX,SAAL,CAAeY,SAAf;IACA,KAAKN,WAAL,CAAiBvD,IAAI,EAArB;EACD;;EAED8D,YAAY,GAAG;IAAA;;IACb,wBAAO,KAAKtC,MAAZ,kDAAO,cAAaL,SAApB;EACD;;EAEDS,YAAY,CAACT,SAAD,EAAoB;IAC9B,IAAI,CAAC,KAAKK,MAAV,EAAkB;MAChB,KAAK0B,CAAL,CAAOC,IAAP,CAAY,KAAKvB,YAAL,CAAkBe,IAAlB,CAAuB,IAAvB,EAA6BxB,SAA7B,CAAZ;MACA;IACD;;IACD,KAAKK,MAAL,CAAYL,SAAZ,GAAwBA,SAAxB;EACD;;AA5IwE;AA+I3E,OAAO,MAAM4C,cAAc,GAAG,MAAyB;EACrD,MAAMC,MAAM,GAAG,IAAItD,oBAAJ,EAAf;EACA,OAAO;IACLC,IAAI,EAAEV,aAAa,CAAC+D,MAAM,CAACrD,IAAP,CAAYgC,IAAZ,CAAiBqB,MAAjB,CAAD,CADd;IAEL1B,GAAG,EAAErC,aAAa,CAAC+D,MAAM,CAAC1B,GAAP,CAAWK,IAAX,CAAgBqB,MAAhB,CAAD,CAFb;IAGLC,MAAM,EAAEhE,aAAa,CAAC+D,MAAM,CAACC,MAAP,CAActB,IAAd,CAAmBqB,MAAnB,CAAD,CAHhB;IAIL/B,KAAK,EAAEhC,aAAa,CAAC+D,MAAM,CAAC/B,KAAP,CAAaU,IAAb,CAAkBqB,MAAlB,CAAD,CAJf;IAKLE,QAAQ,EAAEjE,aAAa,CAAC+D,MAAM,CAACE,QAAP,CAAgBvB,IAAhB,CAAqBqB,MAArB,CAAD,CALlB;IAMLR,QAAQ,EAAEvD,aAAa,CAAC+D,MAAM,CAACR,QAAP,CAAgBb,IAAhB,CAAqBqB,MAArB,CAAD,CANlB;IAOLG,aAAa,EAAElE,aAAa,CAAC+D,MAAM,CAACG,aAAP,CAAqBxB,IAArB,CAA0BqB,MAA1B,CAAD,CAPvB;IAQLI,QAAQ,EAAEnE,aAAa,CAAC+D,MAAM,CAACI,QAAP,CAAgBzB,IAAhB,CAAqBqB,MAArB,CAAD,CARlB;IASLK,OAAO,EAAEpE,aAAa,CAAC+D,MAAM,CAACK,OAAP,CAAe1B,IAAf,CAAoBqB,MAApB,CAAD,CATjB;IAULM,KAAK,EAAErE,aAAa,CAAC+D,MAAM,CAACM,KAAP,CAAa3B,IAAb,CAAkBqB,MAAlB,CAAD,CAVf;IAWLhB,SAAS,EAAEgB,MAAM,CAAChB,SAAP,CAAiBL,IAAjB,CAAsBqB,MAAtB,CAXN;IAYLf,SAAS,EAAEe,MAAM,CAACf,SAAP,CAAiBN,IAAjB,CAAsBqB,MAAtB,CAZN;IAaLV,WAAW,EAAEU,MAAM,CAACV,WAAP,CAAmBX,IAAnB,CAAwBqB,MAAxB,CAbR;IAcLT,WAAW,EAAES,MAAM,CAACT,WAAP,CAAmBZ,IAAnB,CAAwBqB,MAAxB,CAdR;IAeLJ,KAAK,EAAEI,MAAM,CAACJ,KAAP,CAAajB,IAAb,CAAkBqB,MAAlB,CAfF;IAgBLF,YAAY,EAAEE,MAAM,CAACF,YAAP,CAAoBnB,IAApB,CAAyBqB,MAAzB,CAhBT;IAiBLpC,YAAY,EAAEoC,MAAM,CAACpC,YAAP,CAAoBe,IAApB,CAAyBqB,MAAzB,CAjBT;IAkBLO,SAAS,EAAEP,MAAM,CAACO,SAAP,CAAiB5B,IAAjB,CAAsBqB,MAAtB;EAlBN,CAAP;AAoBD,CAtBM;AAwBP,eAAeD,cAAc,EAA7B"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { getGlobalScope } from '@amplitude/analytics-client-common';
|
|
1
2
|
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
2
3
|
export class LocalStorage {
|
|
3
4
|
async isEnabled() {
|
|
4
5
|
/* istanbul ignore if */
|
|
5
|
-
if (
|
|
6
|
+
if (!getGlobalScope()) {
|
|
6
7
|
return false;
|
|
7
8
|
}
|
|
8
9
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AsyncStorage","LocalStorage","isEnabled","
|
|
1
|
+
{"version":3,"names":["getGlobalScope","AsyncStorage","LocalStorage","isEnabled","random","String","Date","now","testStorage","testKey","set","value","get","remove","key","getRaw","undefined","JSON","parse","getItem","setItem","stringify","removeItem","reset","clear"],"sources":["local-storage.ts"],"sourcesContent":["import { getGlobalScope } from '@amplitude/analytics-client-common';\nimport { Storage } from '@amplitude/analytics-types';\nimport AsyncStorage from '@react-native-async-storage/async-storage';\n\nexport class LocalStorage<T> implements Storage<T> {\n async isEnabled(): Promise<boolean> {\n /* istanbul ignore if */\n if (!getGlobalScope()) {\n return false;\n }\n\n const random = String(Date.now());\n const testStorage = new LocalStorage<string>();\n const testKey = 'AMP_TEST';\n try {\n await testStorage.set(testKey, random);\n const value = await testStorage.get(testKey);\n return value === random;\n } catch {\n /* istanbul ignore next */\n return false;\n } finally {\n await testStorage.remove(testKey);\n }\n }\n\n async get(key: string): Promise<T | undefined> {\n try {\n const value = await this.getRaw(key);\n if (!value) {\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return JSON.parse(value);\n } catch {\n /* istanbul ignore next */\n return undefined;\n }\n }\n\n async getRaw(key: string): Promise<string | undefined> {\n return (await AsyncStorage.getItem(key)) || undefined;\n }\n\n async set(key: string, value: T): Promise<void> {\n try {\n await AsyncStorage.setItem(key, JSON.stringify(value));\n } catch {\n //\n }\n }\n\n async remove(key: string): Promise<void> {\n try {\n await AsyncStorage.removeItem(key);\n } catch {\n //\n }\n }\n\n async reset(): Promise<void> {\n try {\n await AsyncStorage.clear();\n } catch {\n //\n }\n }\n}\n"],"mappings":"AAAA,SAASA,cAAT,QAA+B,oCAA/B;AAEA,OAAOC,YAAP,MAAyB,2CAAzB;AAEA,OAAO,MAAMC,YAAN,CAA4C;EAClC,MAATC,SAAS,GAAqB;IAClC;IACA,IAAI,CAACH,cAAc,EAAnB,EAAuB;MACrB,OAAO,KAAP;IACD;;IAED,MAAMI,MAAM,GAAGC,MAAM,CAACC,IAAI,CAACC,GAAL,EAAD,CAArB;IACA,MAAMC,WAAW,GAAG,IAAIN,YAAJ,EAApB;IACA,MAAMO,OAAO,GAAG,UAAhB;;IACA,IAAI;MACF,MAAMD,WAAW,CAACE,GAAZ,CAAgBD,OAAhB,EAAyBL,MAAzB,CAAN;MACA,MAAMO,KAAK,GAAG,MAAMH,WAAW,CAACI,GAAZ,CAAgBH,OAAhB,CAApB;MACA,OAAOE,KAAK,KAAKP,MAAjB;IACD,CAJD,CAIE,MAAM;MACN;MACA,OAAO,KAAP;IACD,CAPD,SAOU;MACR,MAAMI,WAAW,CAACK,MAAZ,CAAmBJ,OAAnB,CAAN;IACD;EACF;;EAEQ,MAAHG,GAAG,CAACE,GAAD,EAAsC;IAC7C,IAAI;MACF,MAAMH,KAAK,GAAG,MAAM,KAAKI,MAAL,CAAYD,GAAZ,CAApB;;MACA,IAAI,CAACH,KAAL,EAAY;QACV,OAAOK,SAAP;MACD,CAJC,CAKF;;;MACA,OAAOC,IAAI,CAACC,KAAL,CAAWP,KAAX,CAAP;IACD,CAPD,CAOE,MAAM;MACN;MACA,OAAOK,SAAP;IACD;EACF;;EAEW,MAAND,MAAM,CAACD,GAAD,EAA2C;IACrD,OAAO,CAAC,MAAMb,YAAY,CAACkB,OAAb,CAAqBL,GAArB,CAAP,KAAqCE,SAA5C;EACD;;EAEQ,MAAHN,GAAG,CAACI,GAAD,EAAcH,KAAd,EAAuC;IAC9C,IAAI;MACF,MAAMV,YAAY,CAACmB,OAAb,CAAqBN,GAArB,EAA0BG,IAAI,CAACI,SAAL,CAAeV,KAAf,CAA1B,CAAN;IACD,CAFD,CAEE,MAAM,CACN;IACD;EACF;;EAEW,MAANE,MAAM,CAACC,GAAD,EAA6B;IACvC,IAAI;MACF,MAAMb,YAAY,CAACqB,UAAb,CAAwBR,GAAxB,CAAN;IACD,CAFD,CAEE,MAAM,CACN;IACD;EACF;;EAEU,MAALS,KAAK,GAAkB;IAC3B,IAAI;MACF,MAAMtB,YAAY,CAACuB,KAAb,EAAN;IACD,CAFD,CAEE,MAAM,CACN;IACD;EACF;;AA9DgD"}
|
package/lib/module/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = '0.4.
|
|
1
|
+
export const VERSION = '0.4.9';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["export const VERSION = '0.4.
|
|
1
|
+
{"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["export const VERSION = '0.4.9';\n"],"mappings":"AAAA,OAAO,MAAMA,OAAO,GAAG,OAAhB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AmplitudeCore } from '@amplitude/analytics-core';
|
|
2
|
-
import { ReactNativeConfig, ReactNativeOptions, AttributionOptions, ReactNativeClient } from '@amplitude/analytics-types';
|
|
2
|
+
import { ReactNativeConfig, ReactNativeOptions, AttributionOptions, ReactNativeClient, Identify as IIdentify, EventOptions } from '@amplitude/analytics-types';
|
|
3
3
|
export declare class AmplitudeReactNative extends AmplitudeCore<ReactNativeConfig> {
|
|
4
4
|
init(apiKey?: string, userId?: string, options?: ReactNativeOptions): Promise<void>;
|
|
5
5
|
runAttributionStrategy(attributionConfig?: AttributionOptions, isNewSession?: boolean): Promise<void>;
|
|
@@ -7,6 +7,7 @@ export declare class AmplitudeReactNative extends AmplitudeCore<ReactNativeConfi
|
|
|
7
7
|
setUserId(userId: string | undefined): void;
|
|
8
8
|
getDeviceId(): string | undefined;
|
|
9
9
|
setDeviceId(deviceId: string): void;
|
|
10
|
+
identify(identify: IIdentify, eventOptions?: EventOptions): Promise<import("@amplitude/analytics-types").Result>;
|
|
10
11
|
reset(): void;
|
|
11
12
|
getSessionId(): number | undefined;
|
|
12
13
|
setSessionId(sessionId: number): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-native-client.d.ts","sourceRoot":"","sources":["../../src/react-native-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoC,MAAM,2BAA2B,CAAC;AAE5F,OAAO,EACL,iBAAiB,EAEjB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"react-native-client.d.ts","sourceRoot":"","sources":["../../src/react-native-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoC,MAAM,2BAA2B,CAAC;AAE5F,OAAO,EACL,iBAAiB,EAEjB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,QAAQ,IAAI,SAAS,EACrB,YAAY,EACb,MAAM,4BAA4B,CAAC;AAMpC,qBAAa,oBAAqB,SAAQ,aAAa,CAAC,iBAAiB,CAAC;IAClE,IAAI,CAAC,MAAM,SAAK,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB;IA4D/D,sBAAsB,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,EAAE,YAAY,UAAQ;IAkBzF,SAAS;IAIT,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAcpC,WAAW;IAIX,WAAW,CAAC,QAAQ,EAAE,MAAM;IAc5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,YAAY;IAUzD,KAAK;IAKL,YAAY;IAIZ,YAAY,CAAC,SAAS,EAAE,MAAM;CAO/B;AAED,eAAO,MAAM,cAAc,QAAO,iBAsBjC,CAAC;;AAEF,wBAAgC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-storage.d.ts","sourceRoot":"","sources":["../../../src/storage/local-storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"local-storage.d.ts","sourceRoot":"","sources":["../../../src/storage/local-storage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAGrD,qBAAa,YAAY,CAAC,CAAC,CAAE,YAAW,OAAO,CAAC,CAAC,CAAC;IAC1C,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAqB7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAcxC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIhD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.4.
|
|
1
|
+
export declare const VERSION = "0.4.9";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amplitude/analytics-react-native",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.9",
|
|
4
4
|
"description": "Official React Native SDK",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"analytics",
|
|
@@ -57,8 +57,8 @@
|
|
|
57
57
|
"url": "https://github.com/amplitude/Amplitude-TypeScript/issues"
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"@amplitude/analytics-client-common": "^0.3.
|
|
61
|
-
"@amplitude/analytics-core": "^0.9.
|
|
60
|
+
"@amplitude/analytics-client-common": "^0.3.2",
|
|
61
|
+
"@amplitude/analytics-core": "^0.9.7",
|
|
62
62
|
"@amplitude/analytics-types": "^0.11.0",
|
|
63
63
|
"@amplitude/ua-parser-js": "^0.7.31",
|
|
64
64
|
"@react-native-async-storage/async-storage": "^1.17.7",
|
|
@@ -89,5 +89,5 @@
|
|
|
89
89
|
]
|
|
90
90
|
]
|
|
91
91
|
},
|
|
92
|
-
"gitHead": "
|
|
92
|
+
"gitHead": "7e75f22a1d9a972f627d18ae2e09add8dac2c63f"
|
|
93
93
|
}
|
|
@@ -6,6 +6,8 @@ import {
|
|
|
6
6
|
ReactNativeOptions,
|
|
7
7
|
AttributionOptions,
|
|
8
8
|
ReactNativeClient,
|
|
9
|
+
Identify as IIdentify,
|
|
10
|
+
EventOptions,
|
|
9
11
|
} from '@amplitude/analytics-types';
|
|
10
12
|
import { Context } from './plugins/context';
|
|
11
13
|
import { useReactNativeConfig, createFlexibleStorage } from './config';
|
|
@@ -66,15 +68,11 @@ export class AmplitudeReactNative extends AmplitudeCore<ReactNativeConfig> {
|
|
|
66
68
|
|
|
67
69
|
this.initializing = false;
|
|
68
70
|
|
|
69
|
-
// Step 5:
|
|
70
|
-
// Send existing events, which might be collected by track before init
|
|
71
|
-
this.timeline.isReady = true;
|
|
72
|
-
if (!this.config.optOut) {
|
|
73
|
-
this.timeline.scheduleApply(0);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// Step 6: Track attributions
|
|
71
|
+
// Step 5: Track attributions
|
|
77
72
|
await this.runAttributionStrategy(options?.attribution, isNewSession);
|
|
73
|
+
|
|
74
|
+
// Step 6: Run queued dispatch functions
|
|
75
|
+
await this.runQueuedFunctions('dispatchQ');
|
|
78
76
|
}
|
|
79
77
|
|
|
80
78
|
async runAttributionStrategy(attributionConfig?: AttributionOptions, isNewSession = false) {
|
|
@@ -131,6 +129,16 @@ export class AmplitudeReactNative extends AmplitudeCore<ReactNativeConfig> {
|
|
|
131
129
|
.commit();
|
|
132
130
|
}
|
|
133
131
|
|
|
132
|
+
identify(identify: IIdentify, eventOptions?: EventOptions) {
|
|
133
|
+
if (eventOptions?.user_id) {
|
|
134
|
+
this.setUserId(eventOptions.user_id);
|
|
135
|
+
}
|
|
136
|
+
if (eventOptions?.device_id) {
|
|
137
|
+
this.setDeviceId(eventOptions.device_id);
|
|
138
|
+
}
|
|
139
|
+
return super.identify(identify, eventOptions);
|
|
140
|
+
}
|
|
141
|
+
|
|
134
142
|
reset() {
|
|
135
143
|
this.setUserId(undefined);
|
|
136
144
|
this.setDeviceId(UUID());
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { getGlobalScope } from '@amplitude/analytics-client-common';
|
|
1
2
|
import { Storage } from '@amplitude/analytics-types';
|
|
2
3
|
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
3
4
|
|
|
4
5
|
export class LocalStorage<T> implements Storage<T> {
|
|
5
6
|
async isEnabled(): Promise<boolean> {
|
|
6
7
|
/* istanbul ignore if */
|
|
7
|
-
if (
|
|
8
|
+
if (!getGlobalScope()) {
|
|
8
9
|
return false;
|
|
9
10
|
}
|
|
10
11
|
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const VERSION = '0.4.
|
|
1
|
+
export const VERSION = '0.4.9';
|