@mparticle/web-sdk 2.79.2 → 2.79.3
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/README.md +52 -0
- package/dist/mparticle.common.js +69 -28
- package/dist/mparticle.esm.js +69 -28
- package/dist/mparticle.js +375 -318
- package/dist/types/src/filteredMparticleUser.d.ts +15 -7
- package/dist/types/src/forwardingStatsUploader.d.ts +4 -4
- package/dist/types/src/mp-instance.d.ts +3 -2
- package/dist/types/src/nativeSdkHelpers.d.ts +3 -12
- package/dist/types/src/nativeSdkHelpers.interfaces.d.ts +15 -1
- package/dist/types/src/pageViewTracker.d.ts +27 -23
- package/dist/types/src/sdkRuntimeModels.d.ts +4 -3
- package/dist/types/src/store.d.ts +2 -0
- package/package.json +1 -1
- package/src/filteredMparticleUser.ts +160 -0
- package/src/{forwardingStatsUploader.js → forwardingStatsUploader.ts} +25 -12
- package/src/mp-instance.ts +27 -25
- package/src/nativeSdkHelpers.interfaces.ts +21 -1
- package/src/{nativeSdkHelpers.js → nativeSdkHelpers.ts} +59 -34
- package/src/pageViewTracker.ts +339 -279
- package/src/sdkRuntimeModels.ts +4 -3
- package/src/store.ts +2 -0
- package/src/filteredMparticleUser.js +0 -101
|
@@ -1,13 +1,40 @@
|
|
|
1
1
|
import Constants from './constants';
|
|
2
|
+
import { IMParticleWebSDKInstance } from './mp-instance';
|
|
3
|
+
import {
|
|
4
|
+
IAndroidNativeBridge,
|
|
5
|
+
INativeSdkHelpers,
|
|
6
|
+
} from './nativeSdkHelpers.interfaces';
|
|
2
7
|
|
|
3
|
-
|
|
8
|
+
const Messages = Constants.Messages;
|
|
4
9
|
|
|
5
|
-
|
|
6
|
-
|
|
10
|
+
const androidBridgeNameBase = 'mParticleAndroid';
|
|
11
|
+
const iosBridgeNameBase = 'mParticle';
|
|
7
12
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
13
|
+
function getAndroidBridge(name: string): IAndroidNativeBridge | undefined {
|
|
14
|
+
if (!Object.prototype.hasOwnProperty.call(window, name)) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return (window as unknown as Record<string, IAndroidNativeBridge | undefined>)[
|
|
19
|
+
name
|
|
20
|
+
];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function getInstanceNamedValue(
|
|
24
|
+
instance: IMParticleWebSDKInstance,
|
|
25
|
+
name: string
|
|
26
|
+
): unknown {
|
|
27
|
+
return (instance as IMParticleWebSDKInstance & Record<string, unknown>)[
|
|
28
|
+
name
|
|
29
|
+
];
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export default function NativeSdkHelpers(
|
|
33
|
+
this: INativeSdkHelpers,
|
|
34
|
+
mpInstance: IMParticleWebSDKInstance
|
|
35
|
+
): void {
|
|
36
|
+
const self = this;
|
|
37
|
+
this.initializeSessionAttributes = function(apiKey: string): void {
|
|
11
38
|
const { SetSessionAttribute } = Constants.NativeSdkPaths;
|
|
12
39
|
const env = JSON.stringify({
|
|
13
40
|
key: '$src_env',
|
|
@@ -25,20 +52,16 @@ export default function NativeSdkHelpers(mpInstance) {
|
|
|
25
52
|
}
|
|
26
53
|
};
|
|
27
54
|
|
|
28
|
-
this.isBridgeV2Available = function(bridgeName) {
|
|
55
|
+
this.isBridgeV2Available = function(bridgeName: string): boolean {
|
|
29
56
|
if (!bridgeName) {
|
|
30
57
|
return false;
|
|
31
58
|
}
|
|
32
|
-
|
|
59
|
+
const androidBridgeName =
|
|
33
60
|
androidBridgeNameBase + '_' + bridgeName + '_v2';
|
|
34
|
-
|
|
61
|
+
const iosBridgeName = iosBridgeNameBase + '_' + bridgeName + '_v2';
|
|
35
62
|
|
|
36
63
|
// iOS v2 bridge
|
|
37
|
-
if (
|
|
38
|
-
window.webkit &&
|
|
39
|
-
window.webkit.messageHandlers &&
|
|
40
|
-
window.webkit.messageHandlers.hasOwnProperty(iosBridgeName)
|
|
41
|
-
) {
|
|
64
|
+
if (window.webkit?.messageHandlers?.hasOwnProperty(iosBridgeName)) {
|
|
42
65
|
return true;
|
|
43
66
|
}
|
|
44
67
|
// other iOS v2 bridge
|
|
@@ -58,9 +81,9 @@ export default function NativeSdkHelpers(mpInstance) {
|
|
|
58
81
|
};
|
|
59
82
|
|
|
60
83
|
this.isWebviewEnabled = function(
|
|
61
|
-
requiredWebviewBridgeName,
|
|
62
|
-
minWebviewBridgeVersion
|
|
63
|
-
) {
|
|
84
|
+
requiredWebviewBridgeName: string,
|
|
85
|
+
minWebviewBridgeVersion: number
|
|
86
|
+
): boolean {
|
|
64
87
|
mpInstance._Store.bridgeV2Available = self.isBridgeV2Available(
|
|
65
88
|
requiredWebviewBridgeName
|
|
66
89
|
);
|
|
@@ -92,7 +115,7 @@ export default function NativeSdkHelpers(mpInstance) {
|
|
|
92
115
|
return false;
|
|
93
116
|
};
|
|
94
117
|
|
|
95
|
-
this.isBridgeV1Available = function() {
|
|
118
|
+
this.isBridgeV1Available = function(): boolean {
|
|
96
119
|
if (
|
|
97
120
|
mpInstance._Store.SDKConfig.useNativeSdk ||
|
|
98
121
|
window.mParticleAndroid ||
|
|
@@ -104,7 +127,7 @@ export default function NativeSdkHelpers(mpInstance) {
|
|
|
104
127
|
return false;
|
|
105
128
|
};
|
|
106
129
|
|
|
107
|
-
this.sendToNative = function(path, value) {
|
|
130
|
+
this.sendToNative = function(path: string, value?: string): void {
|
|
108
131
|
if (
|
|
109
132
|
mpInstance._Store.bridgeV2Available &&
|
|
110
133
|
mpInstance._Store.SDKConfig.minWebviewBridgeVersion === 2
|
|
@@ -136,7 +159,7 @@ export default function NativeSdkHelpers(mpInstance) {
|
|
|
136
159
|
}
|
|
137
160
|
};
|
|
138
161
|
|
|
139
|
-
this.sendViaBridgeV1 = function(path, value) {
|
|
162
|
+
this.sendViaBridgeV1 = function(path: string, value: string): void {
|
|
140
163
|
if (
|
|
141
164
|
window.mParticleAndroid &&
|
|
142
165
|
window.mParticleAndroid.hasOwnProperty(path)
|
|
@@ -153,8 +176,8 @@ export default function NativeSdkHelpers(mpInstance) {
|
|
|
153
176
|
}
|
|
154
177
|
};
|
|
155
178
|
|
|
156
|
-
this.sendViaIframeToIOS = function(path, value) {
|
|
157
|
-
|
|
179
|
+
this.sendViaIframeToIOS = function(path: string, value: string): void {
|
|
180
|
+
const iframe = document.createElement('IFRAME');
|
|
158
181
|
iframe.setAttribute(
|
|
159
182
|
'src',
|
|
160
183
|
'mp-sdk://' + path + '/' + encodeURIComponent(value)
|
|
@@ -163,30 +186,32 @@ export default function NativeSdkHelpers(mpInstance) {
|
|
|
163
186
|
iframe.parentNode.removeChild(iframe);
|
|
164
187
|
};
|
|
165
188
|
|
|
166
|
-
this.sendViaBridgeV2 = function(
|
|
189
|
+
this.sendViaBridgeV2 = function(
|
|
190
|
+
path: string,
|
|
191
|
+
value: string,
|
|
192
|
+
requiredWebviewBridgeName: string
|
|
193
|
+
): void {
|
|
167
194
|
if (!requiredWebviewBridgeName) {
|
|
168
195
|
return;
|
|
169
196
|
}
|
|
170
197
|
|
|
171
|
-
|
|
198
|
+
const androidBridgeName =
|
|
172
199
|
androidBridgeNameBase + '_' + requiredWebviewBridgeName + '_v2',
|
|
173
|
-
androidBridge =
|
|
200
|
+
androidBridge = getAndroidBridge(androidBridgeName),
|
|
174
201
|
iosBridgeName =
|
|
175
|
-
iosBridgeNameBase + '_' + requiredWebviewBridgeName + '_v2'
|
|
176
|
-
|
|
177
|
-
iOSBridgeNonMessageHandler;
|
|
202
|
+
iosBridgeNameBase + '_' + requiredWebviewBridgeName + '_v2';
|
|
203
|
+
let iOSBridgeMessageHandler, iOSBridgeNonMessageHandler;
|
|
178
204
|
|
|
179
|
-
if (
|
|
180
|
-
window.webkit &&
|
|
181
|
-
window.webkit.messageHandlers &&
|
|
182
|
-
window.webkit.messageHandlers[iosBridgeName]
|
|
183
|
-
) {
|
|
205
|
+
if (window.webkit?.messageHandlers?.[iosBridgeName]) {
|
|
184
206
|
iOSBridgeMessageHandler =
|
|
185
207
|
window.webkit.messageHandlers[iosBridgeName];
|
|
186
208
|
}
|
|
187
209
|
|
|
188
210
|
if (mpInstance.uiwebviewBridgeName === iosBridgeName) {
|
|
189
|
-
iOSBridgeNonMessageHandler =
|
|
211
|
+
iOSBridgeNonMessageHandler = getInstanceNamedValue(
|
|
212
|
+
mpInstance,
|
|
213
|
+
iosBridgeName
|
|
214
|
+
);
|
|
190
215
|
}
|
|
191
216
|
|
|
192
217
|
if (androidBridge && androidBridge.hasOwnProperty(path)) {
|