@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 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
- export { InlineAd };
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
- export { InlineAd };
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: () => import_sdk_react3.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 import_sdk_react3 = require("@kontextso/sdk-react");
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 { AdsProvider } from "@kontextso/sdk-react";
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": "1.0.4",
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.1.3",
51
- "react-native-webview": "^13.15.0"
54
+ "@kontextso/sdk-react": "^1.2.0"
52
55
  },
53
56
  "files": [
54
57
  "dist/*"