@kontextso/sdk-react-native 1.0.4 → 2.0.0-rc.1
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.mts +4 -3
- package/dist/index.d.ts +4 -3
- package/dist/index.js +76 -4
- package/dist/index.mjs +66 -4
- package/package.json +7 -4
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { FormatProps } from '@kontextso/sdk-react';
|
|
3
|
-
export { AdsProvider } from '@kontextso/sdk-react';
|
|
2
|
+
import { FormatProps, AdsProviderProps } from '@kontextso/sdk-react';
|
|
4
3
|
|
|
5
4
|
declare const InlineAd: ({ code, messageId, wrapper, ...props }: FormatProps) => react_jsx_runtime.JSX.Element;
|
|
6
5
|
|
|
7
|
-
|
|
6
|
+
declare const AdsProvider: (props: AdsProviderProps) => react_jsx_runtime.JSX.Element;
|
|
7
|
+
|
|
8
|
+
export { AdsProvider, InlineAd };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { FormatProps } from '@kontextso/sdk-react';
|
|
3
|
-
export { AdsProvider } from '@kontextso/sdk-react';
|
|
2
|
+
import { FormatProps, AdsProviderProps } from '@kontextso/sdk-react';
|
|
4
3
|
|
|
5
4
|
declare const InlineAd: ({ code, messageId, wrapper, ...props }: FormatProps) => react_jsx_runtime.JSX.Element;
|
|
6
5
|
|
|
7
|
-
|
|
6
|
+
declare const AdsProvider: (props: AdsProviderProps) => react_jsx_runtime.JSX.Element;
|
|
7
|
+
|
|
8
|
+
export { AdsProvider, InlineAd };
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
5
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
8
|
var __export = (target, all) => {
|
|
7
9
|
for (var name in all)
|
|
@@ -15,12 +17,20 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
17
|
}
|
|
16
18
|
return to;
|
|
17
19
|
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
18
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
29
|
|
|
20
30
|
// src/index.ts
|
|
21
31
|
var index_exports = {};
|
|
22
32
|
__export(index_exports, {
|
|
23
|
-
AdsProvider: () =>
|
|
33
|
+
AdsProvider: () => AdsProvider,
|
|
24
34
|
InlineAd: () => InlineAd_default
|
|
25
35
|
});
|
|
26
36
|
module.exports = __toCommonJS(index_exports);
|
|
@@ -79,14 +89,34 @@ var Format = ({ code, messageId, wrapper, ...otherParams }) => {
|
|
|
79
89
|
context?.resetAll();
|
|
80
90
|
context?.captureError(new Error("Processing iframe error"));
|
|
81
91
|
};
|
|
92
|
+
const debug = (name, data = {}) => {
|
|
93
|
+
context?.onDebugEventInternal?.(name, {
|
|
94
|
+
code,
|
|
95
|
+
messageId,
|
|
96
|
+
otherParams,
|
|
97
|
+
bid,
|
|
98
|
+
iframeUrl,
|
|
99
|
+
iframeLoaded,
|
|
100
|
+
showIframe,
|
|
101
|
+
height,
|
|
102
|
+
containerStyles,
|
|
103
|
+
iframeStyles,
|
|
104
|
+
...data
|
|
105
|
+
});
|
|
106
|
+
};
|
|
107
|
+
debug("format-update-state");
|
|
82
108
|
const onMessage = (event) => {
|
|
83
109
|
try {
|
|
84
110
|
const data = JSON.parse(event.nativeEvent.data);
|
|
111
|
+
debug("iframe-message", {
|
|
112
|
+
message: data
|
|
113
|
+
});
|
|
85
114
|
const messageHandler = handleIframeMessage(
|
|
86
115
|
(message) => {
|
|
87
116
|
switch (message.type) {
|
|
88
117
|
case "init-iframe":
|
|
89
118
|
setIframeLoaded(true);
|
|
119
|
+
debug("iframe-post-message");
|
|
90
120
|
sendMessage(webViewRef, code, {
|
|
91
121
|
messages: context?.messages,
|
|
92
122
|
sdk: "sdk-react-native",
|
|
@@ -129,6 +159,9 @@ var Format = ({ code, messageId, wrapper, ...otherParams }) => {
|
|
|
129
159
|
);
|
|
130
160
|
messageHandler({ data });
|
|
131
161
|
} catch (e) {
|
|
162
|
+
debug("iframe-message-error", {
|
|
163
|
+
error: e
|
|
164
|
+
});
|
|
132
165
|
console.error("error parsing message from webview", e);
|
|
133
166
|
reset();
|
|
134
167
|
}
|
|
@@ -138,6 +171,7 @@ var Format = ({ code, messageId, wrapper, ...otherParams }) => {
|
|
|
138
171
|
if (!iframeLoaded || !context?.adServerUrl || !bid || !webViewRef.current) {
|
|
139
172
|
return;
|
|
140
173
|
}
|
|
174
|
+
debug("iframe-post-message");
|
|
141
175
|
sendMessage(webViewRef, code, {
|
|
142
176
|
data: { otherParams },
|
|
143
177
|
code
|
|
@@ -166,7 +200,6 @@ var Format = ({ code, messageId, wrapper, ...otherParams }) => {
|
|
|
166
200
|
import_react_native_webview.WebView,
|
|
167
201
|
{
|
|
168
202
|
ref: webViewRef,
|
|
169
|
-
onError: reset,
|
|
170
203
|
source: {
|
|
171
204
|
uri: iframeUrl
|
|
172
205
|
},
|
|
@@ -183,7 +216,14 @@ var Format = ({ code, messageId, wrapper, ...otherParams }) => {
|
|
|
183
216
|
window.ReactNativeWebView.postMessage(JSON.stringify(event.data));
|
|
184
217
|
}
|
|
185
218
|
}, false);
|
|
186
|
-
|
|
219
|
+
`,
|
|
220
|
+
onError: () => {
|
|
221
|
+
debug("iframe-error");
|
|
222
|
+
reset();
|
|
223
|
+
},
|
|
224
|
+
onLoad: () => {
|
|
225
|
+
debug("iframe-load");
|
|
226
|
+
}
|
|
187
227
|
}
|
|
188
228
|
)
|
|
189
229
|
}
|
|
@@ -202,7 +242,9 @@ var InlineAd_default = InlineAd;
|
|
|
202
242
|
|
|
203
243
|
// src/context/AdsProvider.tsx
|
|
204
244
|
var import_sdk_react2 = require("@kontextso/sdk-react");
|
|
205
|
-
var
|
|
245
|
+
var import_react_native2 = require("react-native");
|
|
246
|
+
var import_react_native_device_info = __toESM(require("react-native-device-info"));
|
|
247
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
206
248
|
ErrorUtils.setGlobalHandler((error, isFatal) => {
|
|
207
249
|
if (!isFatal) {
|
|
208
250
|
import_sdk_react2.log.warn(error);
|
|
@@ -210,6 +252,36 @@ ErrorUtils.setGlobalHandler((error, isFatal) => {
|
|
|
210
252
|
import_sdk_react2.log.error(error);
|
|
211
253
|
}
|
|
212
254
|
});
|
|
255
|
+
var getDevice = () => {
|
|
256
|
+
try {
|
|
257
|
+
const os = import_react_native2.Platform.OS;
|
|
258
|
+
const systemVersion = import_react_native_device_info.default.getSystemVersion();
|
|
259
|
+
const reactNativeVersion = import_react_native2.Platform.constants.reactNativeVersion.toString();
|
|
260
|
+
const model = import_react_native_device_info.default.getModel();
|
|
261
|
+
const brand = import_react_native_device_info.default.getBrand();
|
|
262
|
+
const deviceId = import_react_native_device_info.default.getDeviceId();
|
|
263
|
+
const deviceType = import_react_native_device_info.default.getDeviceType();
|
|
264
|
+
const appBundleId = import_react_native_device_info.default.getBundleId();
|
|
265
|
+
const appVersion = import_react_native_device_info.default.getVersion();
|
|
266
|
+
return {
|
|
267
|
+
os,
|
|
268
|
+
systemVersion,
|
|
269
|
+
reactNativeVersion,
|
|
270
|
+
model,
|
|
271
|
+
brand,
|
|
272
|
+
deviceId,
|
|
273
|
+
deviceType,
|
|
274
|
+
appBundleId,
|
|
275
|
+
appVersion
|
|
276
|
+
};
|
|
277
|
+
} catch (error) {
|
|
278
|
+
console.error(error);
|
|
279
|
+
}
|
|
280
|
+
return {};
|
|
281
|
+
};
|
|
282
|
+
var AdsProvider = (props) => {
|
|
283
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_sdk_react2.AdsProviderInternal, { ...props, getDevice });
|
|
284
|
+
};
|
|
213
285
|
// Annotate the CommonJS export names for ESM import in node:
|
|
214
286
|
0 && (module.exports = {
|
|
215
287
|
AdsProvider,
|
package/dist/index.mjs
CHANGED
|
@@ -52,14 +52,34 @@ var Format = ({ code, messageId, wrapper, ...otherParams }) => {
|
|
|
52
52
|
context?.resetAll();
|
|
53
53
|
context?.captureError(new Error("Processing iframe error"));
|
|
54
54
|
};
|
|
55
|
+
const debug = (name, data = {}) => {
|
|
56
|
+
context?.onDebugEventInternal?.(name, {
|
|
57
|
+
code,
|
|
58
|
+
messageId,
|
|
59
|
+
otherParams,
|
|
60
|
+
bid,
|
|
61
|
+
iframeUrl,
|
|
62
|
+
iframeLoaded,
|
|
63
|
+
showIframe,
|
|
64
|
+
height,
|
|
65
|
+
containerStyles,
|
|
66
|
+
iframeStyles,
|
|
67
|
+
...data
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
debug("format-update-state");
|
|
55
71
|
const onMessage = (event) => {
|
|
56
72
|
try {
|
|
57
73
|
const data = JSON.parse(event.nativeEvent.data);
|
|
74
|
+
debug("iframe-message", {
|
|
75
|
+
message: data
|
|
76
|
+
});
|
|
58
77
|
const messageHandler = handleIframeMessage(
|
|
59
78
|
(message) => {
|
|
60
79
|
switch (message.type) {
|
|
61
80
|
case "init-iframe":
|
|
62
81
|
setIframeLoaded(true);
|
|
82
|
+
debug("iframe-post-message");
|
|
63
83
|
sendMessage(webViewRef, code, {
|
|
64
84
|
messages: context?.messages,
|
|
65
85
|
sdk: "sdk-react-native",
|
|
@@ -102,6 +122,9 @@ var Format = ({ code, messageId, wrapper, ...otherParams }) => {
|
|
|
102
122
|
);
|
|
103
123
|
messageHandler({ data });
|
|
104
124
|
} catch (e) {
|
|
125
|
+
debug("iframe-message-error", {
|
|
126
|
+
error: e
|
|
127
|
+
});
|
|
105
128
|
console.error("error parsing message from webview", e);
|
|
106
129
|
reset();
|
|
107
130
|
}
|
|
@@ -111,6 +134,7 @@ var Format = ({ code, messageId, wrapper, ...otherParams }) => {
|
|
|
111
134
|
if (!iframeLoaded || !context?.adServerUrl || !bid || !webViewRef.current) {
|
|
112
135
|
return;
|
|
113
136
|
}
|
|
137
|
+
debug("iframe-post-message");
|
|
114
138
|
sendMessage(webViewRef, code, {
|
|
115
139
|
data: { otherParams },
|
|
116
140
|
code
|
|
@@ -139,7 +163,6 @@ var Format = ({ code, messageId, wrapper, ...otherParams }) => {
|
|
|
139
163
|
WebView,
|
|
140
164
|
{
|
|
141
165
|
ref: webViewRef,
|
|
142
|
-
onError: reset,
|
|
143
166
|
source: {
|
|
144
167
|
uri: iframeUrl
|
|
145
168
|
},
|
|
@@ -156,7 +179,14 @@ var Format = ({ code, messageId, wrapper, ...otherParams }) => {
|
|
|
156
179
|
window.ReactNativeWebView.postMessage(JSON.stringify(event.data));
|
|
157
180
|
}
|
|
158
181
|
}, false);
|
|
159
|
-
|
|
182
|
+
`,
|
|
183
|
+
onError: () => {
|
|
184
|
+
debug("iframe-error");
|
|
185
|
+
reset();
|
|
186
|
+
},
|
|
187
|
+
onLoad: () => {
|
|
188
|
+
debug("iframe-load");
|
|
189
|
+
}
|
|
160
190
|
}
|
|
161
191
|
)
|
|
162
192
|
}
|
|
@@ -174,8 +204,10 @@ var InlineAd = ({ code, messageId, wrapper, ...props }) => {
|
|
|
174
204
|
var InlineAd_default = InlineAd;
|
|
175
205
|
|
|
176
206
|
// src/context/AdsProvider.tsx
|
|
177
|
-
import { log } from "@kontextso/sdk-react";
|
|
178
|
-
import {
|
|
207
|
+
import { AdsProviderInternal, log } from "@kontextso/sdk-react";
|
|
208
|
+
import { Platform } from "react-native";
|
|
209
|
+
import DeviceInfo from "react-native-device-info";
|
|
210
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
179
211
|
ErrorUtils.setGlobalHandler((error, isFatal) => {
|
|
180
212
|
if (!isFatal) {
|
|
181
213
|
log.warn(error);
|
|
@@ -183,6 +215,36 @@ ErrorUtils.setGlobalHandler((error, isFatal) => {
|
|
|
183
215
|
log.error(error);
|
|
184
216
|
}
|
|
185
217
|
});
|
|
218
|
+
var getDevice = () => {
|
|
219
|
+
try {
|
|
220
|
+
const os = Platform.OS;
|
|
221
|
+
const systemVersion = DeviceInfo.getSystemVersion();
|
|
222
|
+
const reactNativeVersion = Platform.constants.reactNativeVersion.toString();
|
|
223
|
+
const model = DeviceInfo.getModel();
|
|
224
|
+
const brand = DeviceInfo.getBrand();
|
|
225
|
+
const deviceId = DeviceInfo.getDeviceId();
|
|
226
|
+
const deviceType = DeviceInfo.getDeviceType();
|
|
227
|
+
const appBundleId = DeviceInfo.getBundleId();
|
|
228
|
+
const appVersion = DeviceInfo.getVersion();
|
|
229
|
+
return {
|
|
230
|
+
os,
|
|
231
|
+
systemVersion,
|
|
232
|
+
reactNativeVersion,
|
|
233
|
+
model,
|
|
234
|
+
brand,
|
|
235
|
+
deviceId,
|
|
236
|
+
deviceType,
|
|
237
|
+
appBundleId,
|
|
238
|
+
appVersion
|
|
239
|
+
};
|
|
240
|
+
} catch (error) {
|
|
241
|
+
console.error(error);
|
|
242
|
+
}
|
|
243
|
+
return {};
|
|
244
|
+
};
|
|
245
|
+
var AdsProvider = (props) => {
|
|
246
|
+
return /* @__PURE__ */ jsx3(AdsProviderInternal, { ...props, getDevice });
|
|
247
|
+
};
|
|
186
248
|
export {
|
|
187
249
|
AdsProvider,
|
|
188
250
|
InlineAd_default as InlineAd
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kontextso/sdk-react-native",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0-rc.1",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -37,6 +37,8 @@
|
|
|
37
37
|
"react": "^18.3.1",
|
|
38
38
|
"react-dom": "^18.3.1",
|
|
39
39
|
"react-native": "^0.80.1",
|
|
40
|
+
"react-native-device-info": ">=12.0.0",
|
|
41
|
+
"react-native-webview": "^13.15.0",
|
|
40
42
|
"react-test-renderer": "^18.3.1",
|
|
41
43
|
"tsup": "^8.0.2",
|
|
42
44
|
"typescript": "^5.3.3",
|
|
@@ -44,11 +46,12 @@
|
|
|
44
46
|
},
|
|
45
47
|
"peerDependencies": {
|
|
46
48
|
"react": ">=18.0.0",
|
|
47
|
-
"react-native": ">=0.73.0"
|
|
49
|
+
"react-native": ">=0.73.0",
|
|
50
|
+
"react-native-device-info": ">=12.0.0",
|
|
51
|
+
"react-native-webview": "^13.15.0"
|
|
48
52
|
},
|
|
49
53
|
"dependencies": {
|
|
50
|
-
"@kontextso/sdk-react": "^1.
|
|
51
|
-
"react-native-webview": "^13.15.0"
|
|
54
|
+
"@kontextso/sdk-react": "^1.2.0"
|
|
52
55
|
},
|
|
53
56
|
"files": [
|
|
54
57
|
"dist/*"
|