@adapty/capacitor 3.16.1 → 3.16.2

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.
Files changed (278) hide show
  1. package/dist/esm/adapters.d.ts +16 -0
  2. package/dist/esm/adapters.js +31 -0
  3. package/dist/esm/adapters.js.map +1 -0
  4. package/dist/esm/adapty-emitter.js +2 -2
  5. package/dist/esm/adapty-emitter.js.map +1 -1
  6. package/dist/esm/adapty.d.ts +8 -6
  7. package/dist/esm/adapty.js +40 -78
  8. package/dist/esm/adapty.js.map +1 -1
  9. package/dist/esm/coders/factory.d.ts +6 -0
  10. package/dist/esm/coders/factory.js +11 -0
  11. package/dist/esm/coders/factory.js.map +1 -0
  12. package/dist/esm/coders/parse-onboarding.d.ts +3 -0
  13. package/dist/esm/coders/parse-onboarding.js +4 -0
  14. package/dist/esm/coders/parse-onboarding.js.map +1 -0
  15. package/dist/esm/coders/parse-paywall.d.ts +3 -0
  16. package/dist/esm/coders/parse-paywall.js +4 -0
  17. package/dist/esm/coders/parse-paywall.js.map +1 -0
  18. package/dist/esm/coders/parse.d.ts +5 -0
  19. package/dist/esm/coders/parse.js +5 -0
  20. package/dist/esm/coders/parse.js.map +1 -0
  21. package/dist/esm/default-configs.js +1 -1
  22. package/dist/esm/default-configs.js.map +1 -1
  23. package/dist/esm/index.d.ts +5 -7
  24. package/dist/esm/index.js +3 -5
  25. package/dist/esm/index.js.map +1 -1
  26. package/dist/esm/logger/index.d.ts +2 -0
  27. package/dist/esm/logger/index.js +2 -0
  28. package/dist/esm/logger/index.js.map +1 -0
  29. package/dist/esm/types/adapty-plugin.d.ts +4 -4
  30. package/dist/esm/types/adapty-plugin.js.map +1 -1
  31. package/dist/esm/types/configs.d.ts +2 -2
  32. package/dist/esm/types/configs.js.map +1 -1
  33. package/dist/esm/types/index.d.ts +5 -0
  34. package/dist/esm/types/index.js +6 -0
  35. package/dist/esm/types/index.js.map +1 -0
  36. package/dist/esm/types/inputs.d.ts +1 -0
  37. package/dist/esm/types/inputs.js +2 -0
  38. package/dist/esm/types/inputs.js.map +1 -0
  39. package/dist/esm/types/method-types.d.ts +1 -0
  40. package/dist/esm/types/method-types.js +2 -0
  41. package/dist/esm/types/method-types.js.map +1 -0
  42. package/dist/esm/types/onboarding-events.d.ts +1 -0
  43. package/dist/esm/types/onboarding-events.js +2 -0
  44. package/dist/esm/types/onboarding-events.js.map +1 -0
  45. package/dist/esm/types/paywall-events.d.ts +1 -0
  46. package/dist/esm/types/paywall-events.js +2 -0
  47. package/dist/esm/types/paywall-events.js.map +1 -0
  48. package/dist/esm/ui-builder/base-view-emitter.d.ts +1 -1
  49. package/dist/esm/ui-builder/base-view-emitter.js +1 -1
  50. package/dist/esm/ui-builder/base-view-emitter.js.map +1 -1
  51. package/dist/esm/ui-builder/create-onboarding-view.d.ts +1 -1
  52. package/dist/esm/ui-builder/create-onboarding-view.js.map +1 -1
  53. package/dist/esm/ui-builder/create-paywall-view.d.ts +1 -1
  54. package/dist/esm/ui-builder/create-paywall-view.js.map +1 -1
  55. package/dist/esm/ui-builder/onboarding-view-controller.d.ts +1 -1
  56. package/dist/esm/ui-builder/onboarding-view-controller.js +7 -9
  57. package/dist/esm/ui-builder/onboarding-view-controller.js.map +1 -1
  58. package/dist/esm/ui-builder/onboarding-view-emitter.d.ts +2 -2
  59. package/dist/esm/ui-builder/onboarding-view-emitter.js +2 -2
  60. package/dist/esm/ui-builder/onboarding-view-emitter.js.map +1 -1
  61. package/dist/esm/ui-builder/paywall-view-controller.d.ts +1 -1
  62. package/dist/esm/ui-builder/paywall-view-controller.js +6 -8
  63. package/dist/esm/ui-builder/paywall-view-controller.js.map +1 -1
  64. package/dist/esm/ui-builder/paywall-view-emitter.d.ts +2 -2
  65. package/dist/esm/ui-builder/paywall-view-emitter.js +2 -2
  66. package/dist/esm/ui-builder/paywall-view-emitter.js.map +1 -1
  67. package/dist/esm/ui-builder/types.d.ts +3 -3
  68. package/dist/esm/ui-builder/types.js +1 -1
  69. package/dist/esm/ui-builder/types.js.map +1 -1
  70. package/dist/esm/utils/index.d.ts +1 -0
  71. package/dist/esm/utils/index.js +2 -0
  72. package/dist/esm/utils/index.js.map +1 -0
  73. package/dist/esm/version.d.ts +1 -1
  74. package/dist/esm/version.js +1 -1
  75. package/dist/esm/version.js.map +1 -1
  76. package/dist/plugin.cjs.js +2882 -2777
  77. package/dist/plugin.cjs.js.map +1 -1
  78. package/dist/plugin.js +5321 -5216
  79. package/dist/plugin.js.map +1 -1
  80. package/package.json +11 -7
  81. package/dist/esm/coder-registry.d.ts +0 -27
  82. package/dist/esm/coder-registry.js +0 -25
  83. package/dist/esm/coder-registry.js.map +0 -1
  84. package/dist/esm/shared/adapty-error.d.ts +0 -19
  85. package/dist/esm/shared/adapty-error.js +0 -46
  86. package/dist/esm/shared/adapty-error.js.map +0 -1
  87. package/dist/esm/shared/coders/adapty-access-level.d.ts +0 -10
  88. package/dist/esm/shared/coders/adapty-access-level.js +0 -113
  89. package/dist/esm/shared/coders/adapty-access-level.js.map +0 -1
  90. package/dist/esm/shared/coders/adapty-configuration.d.ts +0 -8
  91. package/dist/esm/shared/coders/adapty-configuration.js +0 -68
  92. package/dist/esm/shared/coders/adapty-configuration.js.map +0 -1
  93. package/dist/esm/shared/coders/adapty-discount-phase.d.ts +0 -10
  94. package/dist/esm/shared/coders/adapty-discount-phase.js +0 -39
  95. package/dist/esm/shared/coders/adapty-discount-phase.js.map +0 -1
  96. package/dist/esm/shared/coders/adapty-identify-params.d.ts +0 -11
  97. package/dist/esm/shared/coders/adapty-identify-params.js +0 -19
  98. package/dist/esm/shared/coders/adapty-identify-params.js.map +0 -1
  99. package/dist/esm/shared/coders/adapty-installation-details.d.ts +0 -7
  100. package/dist/esm/shared/coders/adapty-installation-details.js +0 -25
  101. package/dist/esm/shared/coders/adapty-installation-details.js.map +0 -1
  102. package/dist/esm/shared/coders/adapty-installation-status.d.ts +0 -7
  103. package/dist/esm/shared/coders/adapty-installation-status.js +0 -42
  104. package/dist/esm/shared/coders/adapty-installation-status.js.map +0 -1
  105. package/dist/esm/shared/coders/adapty-native-error.d.ts +0 -14
  106. package/dist/esm/shared/coders/adapty-native-error.js +0 -21
  107. package/dist/esm/shared/coders/adapty-native-error.js.map +0 -1
  108. package/dist/esm/shared/coders/adapty-non-subscription.d.ts +0 -10
  109. package/dist/esm/shared/coders/adapty-non-subscription.js +0 -31
  110. package/dist/esm/shared/coders/adapty-non-subscription.js.map +0 -1
  111. package/dist/esm/shared/coders/adapty-onboarding-builder.d.ts +0 -10
  112. package/dist/esm/shared/coders/adapty-onboarding-builder.js +0 -14
  113. package/dist/esm/shared/coders/adapty-onboarding-builder.js.map +0 -1
  114. package/dist/esm/shared/coders/adapty-onboarding.d.ts +0 -13
  115. package/dist/esm/shared/coders/adapty-onboarding.js +0 -55
  116. package/dist/esm/shared/coders/adapty-onboarding.js.map +0 -1
  117. package/dist/esm/shared/coders/adapty-paywall-builder.d.ts +0 -10
  118. package/dist/esm/shared/coders/adapty-paywall-builder.js +0 -19
  119. package/dist/esm/shared/coders/adapty-paywall-builder.js.map +0 -1
  120. package/dist/esm/shared/coders/adapty-paywall-product.d.ts +0 -11
  121. package/dist/esm/shared/coders/adapty-paywall-product.js +0 -94
  122. package/dist/esm/shared/coders/adapty-paywall-product.js.map +0 -1
  123. package/dist/esm/shared/coders/adapty-paywall.d.ts +0 -13
  124. package/dist/esm/shared/coders/adapty-paywall.js +0 -75
  125. package/dist/esm/shared/coders/adapty-paywall.js.map +0 -1
  126. package/dist/esm/shared/coders/adapty-placement.d.ts +0 -10
  127. package/dist/esm/shared/coders/adapty-placement.js +0 -23
  128. package/dist/esm/shared/coders/adapty-placement.js.map +0 -1
  129. package/dist/esm/shared/coders/adapty-price.d.ts +0 -10
  130. package/dist/esm/shared/coders/adapty-price.js +0 -29
  131. package/dist/esm/shared/coders/adapty-price.js.map +0 -1
  132. package/dist/esm/shared/coders/adapty-profile-parameters.d.ts +0 -10
  133. package/dist/esm/shared/coders/adapty-profile-parameters.js +0 -30
  134. package/dist/esm/shared/coders/adapty-profile-parameters.js.map +0 -1
  135. package/dist/esm/shared/coders/adapty-profile.d.ts +0 -10
  136. package/dist/esm/shared/coders/adapty-profile.js +0 -47
  137. package/dist/esm/shared/coders/adapty-profile.js.map +0 -1
  138. package/dist/esm/shared/coders/adapty-purchase-params.d.ts +0 -7
  139. package/dist/esm/shared/coders/adapty-purchase-params.js +0 -37
  140. package/dist/esm/shared/coders/adapty-purchase-params.js.map +0 -1
  141. package/dist/esm/shared/coders/adapty-purchase-result.d.ts +0 -12
  142. package/dist/esm/shared/coders/adapty-purchase-result.js +0 -54
  143. package/dist/esm/shared/coders/adapty-purchase-result.js.map +0 -1
  144. package/dist/esm/shared/coders/adapty-remote-config.d.ts +0 -13
  145. package/dist/esm/shared/coders/adapty-remote-config.js +0 -41
  146. package/dist/esm/shared/coders/adapty-remote-config.js.map +0 -1
  147. package/dist/esm/shared/coders/adapty-subscription-details.d.ts +0 -11
  148. package/dist/esm/shared/coders/adapty-subscription-details.js +0 -64
  149. package/dist/esm/shared/coders/adapty-subscription-details.js.map +0 -1
  150. package/dist/esm/shared/coders/adapty-subscription-offer-identifier.d.ts +0 -10
  151. package/dist/esm/shared/coders/adapty-subscription-offer-identifier.js +0 -19
  152. package/dist/esm/shared/coders/adapty-subscription-offer-identifier.js.map +0 -1
  153. package/dist/esm/shared/coders/adapty-subscription-offer.d.ts +0 -11
  154. package/dist/esm/shared/coders/adapty-subscription-offer.js +0 -50
  155. package/dist/esm/shared/coders/adapty-subscription-offer.js.map +0 -1
  156. package/dist/esm/shared/coders/adapty-subscription-period.d.ts +0 -10
  157. package/dist/esm/shared/coders/adapty-subscription-period.js +0 -11
  158. package/dist/esm/shared/coders/adapty-subscription-period.js.map +0 -1
  159. package/dist/esm/shared/coders/adapty-subscription.d.ts +0 -10
  160. package/dist/esm/shared/coders/adapty-subscription.js +0 -116
  161. package/dist/esm/shared/coders/adapty-subscription.js.map +0 -1
  162. package/dist/esm/shared/coders/adapty-ui-create-onboarding-view-params.d.ts +0 -8
  163. package/dist/esm/shared/coders/adapty-ui-create-onboarding-view-params.js +0 -10
  164. package/dist/esm/shared/coders/adapty-ui-create-onboarding-view-params.js.map +0 -1
  165. package/dist/esm/shared/coders/adapty-ui-create-paywall-view-params.d.ts +0 -18
  166. package/dist/esm/shared/coders/adapty-ui-create-paywall-view-params.js +0 -142
  167. package/dist/esm/shared/coders/adapty-ui-create-paywall-view-params.js.map +0 -1
  168. package/dist/esm/shared/coders/adapty-ui-media-cache.d.ts +0 -10
  169. package/dist/esm/shared/coders/adapty-ui-media-cache.js +0 -24
  170. package/dist/esm/shared/coders/adapty-ui-media-cache.js.map +0 -1
  171. package/dist/esm/shared/coders/adapty-ui-onboarding-meta.d.ts +0 -10
  172. package/dist/esm/shared/coders/adapty-ui-onboarding-meta.js +0 -29
  173. package/dist/esm/shared/coders/adapty-ui-onboarding-meta.js.map +0 -1
  174. package/dist/esm/shared/coders/adapty-ui-onboarding-state-params.d.ts +0 -10
  175. package/dist/esm/shared/coders/adapty-ui-onboarding-state-params.js +0 -24
  176. package/dist/esm/shared/coders/adapty-ui-onboarding-state-params.js.map +0 -1
  177. package/dist/esm/shared/coders/adapty-ui-onboarding-state-updated-action.d.ts +0 -14
  178. package/dist/esm/shared/coders/adapty-ui-onboarding-state-updated-action.js +0 -55
  179. package/dist/esm/shared/coders/adapty-ui-onboarding-state-updated-action.js.map +0 -1
  180. package/dist/esm/shared/coders/array.d.ts +0 -15
  181. package/dist/esm/shared/coders/array.js +0 -34
  182. package/dist/esm/shared/coders/array.js.map +0 -1
  183. package/dist/esm/shared/coders/bridge-error.d.ts +0 -13
  184. package/dist/esm/shared/coders/bridge-error.js +0 -78
  185. package/dist/esm/shared/coders/bridge-error.js.map +0 -1
  186. package/dist/esm/shared/coders/coder.d.ts +0 -13
  187. package/dist/esm/shared/coders/coder.js +0 -118
  188. package/dist/esm/shared/coders/coder.js.map +0 -1
  189. package/dist/esm/shared/coders/date.d.ts +0 -9
  190. package/dist/esm/shared/coders/date.js +0 -36
  191. package/dist/esm/shared/coders/date.js.map +0 -1
  192. package/dist/esm/shared/coders/error-coder.d.ts +0 -6
  193. package/dist/esm/shared/coders/error-coder.js +0 -2
  194. package/dist/esm/shared/coders/error-coder.js.map +0 -1
  195. package/dist/esm/shared/coders/hashmap.d.ts +0 -7
  196. package/dist/esm/shared/coders/hashmap.js +0 -25
  197. package/dist/esm/shared/coders/hashmap.js.map +0 -1
  198. package/dist/esm/shared/coders/json.d.ts +0 -8
  199. package/dist/esm/shared/coders/json.js +0 -15
  200. package/dist/esm/shared/coders/json.js.map +0 -1
  201. package/dist/esm/shared/coders/parse-onboarding.d.ts +0 -3
  202. package/dist/esm/shared/coders/parse-onboarding.js +0 -86
  203. package/dist/esm/shared/coders/parse-onboarding.js.map +0 -1
  204. package/dist/esm/shared/coders/parse-paywall.d.ts +0 -4
  205. package/dist/esm/shared/coders/parse-paywall.js +0 -141
  206. package/dist/esm/shared/coders/parse-paywall.js.map +0 -1
  207. package/dist/esm/shared/coders/parse.d.ts +0 -6
  208. package/dist/esm/shared/coders/parse.js +0 -135
  209. package/dist/esm/shared/coders/parse.js.map +0 -1
  210. package/dist/esm/shared/coders/product-reference.d.ts +0 -10
  211. package/dist/esm/shared/coders/product-reference.js +0 -53
  212. package/dist/esm/shared/coders/product-reference.js.map +0 -1
  213. package/dist/esm/shared/coders/types.d.ts +0 -23
  214. package/dist/esm/shared/coders/types.js +0 -2
  215. package/dist/esm/shared/coders/types.js.map +0 -1
  216. package/dist/esm/shared/coders/utils.d.ts +0 -18
  217. package/dist/esm/shared/coders/utils.js +0 -50
  218. package/dist/esm/shared/coders/utils.js.map +0 -1
  219. package/dist/esm/shared/constants.d.ts +0 -42
  220. package/dist/esm/shared/constants.js +0 -37
  221. package/dist/esm/shared/constants.js.map +0 -1
  222. package/dist/esm/shared/index.d.ts +0 -3
  223. package/dist/esm/shared/index.js +0 -4
  224. package/dist/esm/shared/index.js.map +0 -1
  225. package/dist/esm/shared/logger/console-sink.d.ts +0 -2
  226. package/dist/esm/shared/logger/console-sink.js +0 -23
  227. package/dist/esm/shared/logger/console-sink.js.map +0 -1
  228. package/dist/esm/shared/logger/index.d.ts +0 -5
  229. package/dist/esm/shared/logger/index.js +0 -5
  230. package/dist/esm/shared/logger/index.js.map +0 -1
  231. package/dist/esm/shared/logger/log-context.d.ts +0 -23
  232. package/dist/esm/shared/logger/log-context.js +0 -61
  233. package/dist/esm/shared/logger/log-context.js.map +0 -1
  234. package/dist/esm/shared/logger/log-scope.d.ts +0 -25
  235. package/dist/esm/shared/logger/log-scope.js +0 -26
  236. package/dist/esm/shared/logger/log-scope.js.map +0 -1
  237. package/dist/esm/shared/logger/log.d.ts +0 -34
  238. package/dist/esm/shared/logger/log.js +0 -110
  239. package/dist/esm/shared/logger/log.js.map +0 -1
  240. package/dist/esm/shared/logger/types.d.ts +0 -20
  241. package/dist/esm/shared/logger/types.js +0 -2
  242. package/dist/esm/shared/logger/types.js.map +0 -1
  243. package/dist/esm/shared/types/bridge.d.ts +0 -50
  244. package/dist/esm/shared/types/bridge.js +0 -78
  245. package/dist/esm/shared/types/bridge.js.map +0 -1
  246. package/dist/esm/shared/types/error.d.ts +0 -325
  247. package/dist/esm/shared/types/error.js +0 -176
  248. package/dist/esm/shared/types/error.js.map +0 -1
  249. package/dist/esm/shared/types/index.d.ts +0 -718
  250. package/dist/esm/shared/types/index.js +0 -14
  251. package/dist/esm/shared/types/index.js.map +0 -1
  252. package/dist/esm/shared/types/inputs.d.ts +0 -238
  253. package/dist/esm/shared/types/inputs.js +0 -42
  254. package/dist/esm/shared/types/inputs.js.map +0 -1
  255. package/dist/esm/shared/types/method-types.d.ts +0 -86
  256. package/dist/esm/shared/types/method-types.js +0 -13
  257. package/dist/esm/shared/types/method-types.js.map +0 -1
  258. package/dist/esm/shared/types/onboarding-events.d.ts +0 -60
  259. package/dist/esm/shared/types/onboarding-events.js +0 -11
  260. package/dist/esm/shared/types/onboarding-events.js.map +0 -1
  261. package/dist/esm/shared/types/paywall-events.d.ts +0 -84
  262. package/dist/esm/shared/types/paywall-events.js +0 -16
  263. package/dist/esm/shared/types/paywall-events.js.map +0 -1
  264. package/dist/esm/shared/utils/compact-object.d.ts +0 -6
  265. package/dist/esm/shared/utils/compact-object.js +0 -9
  266. package/dist/esm/shared/utils/compact-object.js.map +0 -1
  267. package/dist/esm/shared/utils/map-values.d.ts +0 -8
  268. package/dist/esm/shared/utils/map-values.js +0 -11
  269. package/dist/esm/shared/utils/map-values.js.map +0 -1
  270. package/dist/esm/shared/utils/merge-options.d.ts +0 -7
  271. package/dist/esm/shared/utils/merge-options.js +0 -93
  272. package/dist/esm/shared/utils/merge-options.js.map +0 -1
  273. package/dist/esm/shared/utils/platform.d.ts +0 -2
  274. package/dist/esm/shared/utils/platform.js +0 -5
  275. package/dist/esm/shared/utils/platform.js.map +0 -1
  276. package/dist/esm/shared/utils/with-error-context.d.ts +0 -7
  277. package/dist/esm/shared/utils/with-error-context.js +0 -33
  278. package/dist/esm/shared/utils/with-error-context.js.map +0 -1
@@ -0,0 +1,16 @@
1
+ import type { IPlatformAdapter, ISdkMetadataAdapter, PlatformOS } from '@adapty/core';
2
+ /**
3
+ * Capacitor implementation of IPlatformAdapter
4
+ * Wraps Capacitor.getPlatform() to detect current OS
5
+ */
6
+ export declare class CapacitorPlatformAdapter implements IPlatformAdapter {
7
+ get OS(): PlatformOS;
8
+ }
9
+ /**
10
+ * Capacitor implementation of ISdkMetadataAdapter
11
+ * Provides SDK name and version metadata
12
+ */
13
+ export declare class CapacitorSdkMetadataAdapter implements ISdkMetadataAdapter {
14
+ get sdkName(): string;
15
+ get sdkVersion(): string;
16
+ }
@@ -0,0 +1,31 @@
1
+ import { Capacitor } from '@capacitor/core';
2
+ import VERSION from './version';
3
+ /**
4
+ * Capacitor implementation of IPlatformAdapter
5
+ * Wraps Capacitor.getPlatform() to detect current OS
6
+ */
7
+ export class CapacitorPlatformAdapter {
8
+ get OS() {
9
+ const platform = Capacitor.getPlatform();
10
+ if (platform === 'ios' || platform === 'android') {
11
+ return platform;
12
+ }
13
+ if (platform === 'web') {
14
+ return 'web';
15
+ }
16
+ return 'unknown';
17
+ }
18
+ }
19
+ /**
20
+ * Capacitor implementation of ISdkMetadataAdapter
21
+ * Provides SDK name and version metadata
22
+ */
23
+ export class CapacitorSdkMetadataAdapter {
24
+ get sdkName() {
25
+ return 'capacitor';
26
+ }
27
+ get sdkVersion() {
28
+ return VERSION;
29
+ }
30
+ }
31
+ //# sourceMappingURL=adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../src/adapters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC;;;GAGG;AACH,MAAM,OAAO,wBAAwB;IACnC,IAAI,EAAE;QACJ,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACjD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,2BAA2B;IACtC,IAAI,OAAO;QACT,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;CACF","sourcesContent":["import type { IPlatformAdapter, ISdkMetadataAdapter, PlatformOS } from '@adapty/core';\nimport { Capacitor } from '@capacitor/core';\n\nimport VERSION from './version';\n\n/**\n * Capacitor implementation of IPlatformAdapter\n * Wraps Capacitor.getPlatform() to detect current OS\n */\nexport class CapacitorPlatformAdapter implements IPlatformAdapter {\n get OS(): PlatformOS {\n const platform = Capacitor.getPlatform();\n if (platform === 'ios' || platform === 'android') {\n return platform;\n }\n if (platform === 'web') {\n return 'web';\n }\n return 'unknown';\n }\n}\n\n/**\n * Capacitor implementation of ISdkMetadataAdapter\n * Provides SDK name and version metadata\n */\nexport class CapacitorSdkMetadataAdapter implements ISdkMetadataAdapter {\n get sdkName(): string {\n return 'capacitor';\n }\n\n get sdkVersion(): string {\n return VERSION;\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { AdaptyCapacitorPlugin } from './bridge/plugin';
2
- import { parseCommonEvent } from './shared/coders/parse';
3
- import { LogContext } from './shared/logger';
2
+ import { parseCommonEvent } from './coders/parse';
3
+ import { LogContext } from './logger';
4
4
  // Type-safe parser functions for each event
5
5
  function parseProfileEvent(raw, eventCtx) {
6
6
  const profile = parseCommonEvent('did_load_latest_profile', raw, eventCtx);
@@ -1 +1 @@
1
- {"version":3,"file":"adapty-emitter.js","sourceRoot":"","sources":["../../src/adapty-emitter.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PluginListenerHandle } from '@capacitor/core';\n\nimport { AdaptyCapacitorPlugin } from './bridge/plugin';\nimport type { AdaptyError } from './shared/adapty-error';\nimport { parseCommonEvent } from './shared/coders/parse';\nimport { LogContext } from './shared/logger';\nimport type { AdaptyProfile, AdaptyInstallationDetails } from './shared/types';\nimport type { AddListenerFn, EventPayloadMap } from './types/adapty-plugin';\n\ntype EventConfig<K extends keyof EventPayloadMap> = {\n native: 'did_load_latest_profile' | 'on_installation_details_success' | 'on_installation_details_fail';\n parse: (raw: string, eventCtx: LogContext) => EventPayloadMap[K] | null;\n};\n\n// Type-safe parser functions for each event\nfunction parseProfileEvent(raw: string, eventCtx: LogContext): EventPayloadMap['onLatestProfileLoad'] | null {\n const profile = parseCommonEvent('did_load_latest_profile', raw, eventCtx);\n return profile ? { profile: profile as AdaptyProfile } : null;\n}\n\nfunction parseInstallationDetailsSuccessEvent(\n raw: string,\n eventCtx: LogContext,\n): EventPayloadMap['onInstallationDetailsSuccess'] | null {\n const details = parseCommonEvent('on_installation_details_success', raw, eventCtx);\n return details ? { details: details as AdaptyInstallationDetails } : null;\n}\n\nfunction parseInstallationDetailsFailEvent(\n raw: string,\n eventCtx: LogContext,\n): EventPayloadMap['onInstallationDetailsFail'] | null {\n const error = parseCommonEvent('on_installation_details_fail', raw, eventCtx);\n return error ? { error: error as AdaptyError } : null;\n}\n\nconst EVENT_MAP: { [K in keyof EventPayloadMap]: EventConfig<K> } = {\n onLatestProfileLoad: {\n native: 'did_load_latest_profile',\n parse: parseProfileEvent,\n },\n onInstallationDetailsSuccess: {\n native: 'on_installation_details_success',\n parse: parseInstallationDetailsSuccessEvent,\n },\n onInstallationDetailsFail: {\n native: 'on_installation_details_fail',\n parse: parseInstallationDetailsFailEvent,\n },\n};\n\nexport class AdaptyEmitter {\n private nativeEventListeners: Map<string, PluginListenerHandle> = new Map();\n private externalHandlers: Map<\n string,\n {\n id: string;\n handlerName: keyof EventPayloadMap;\n listener: (data: EventPayloadMap[keyof EventPayloadMap]) => void;\n config: EventConfig<keyof EventPayloadMap>;\n }[]\n > = new Map();\n\n public addListener: AddListenerFn = async <T extends keyof EventPayloadMap>(\n eventName: T,\n listener: (data: EventPayloadMap[T]) => void,\n ): Promise<PluginListenerHandle> => {\n const ctx = new LogContext();\n const log = ctx.call({ methodName: 'addListener' });\n log.start(() => ({ eventName }));\n\n const eventConfig = EVENT_MAP[eventName];\n if (!eventConfig) {\n throw new Error(`[Adapty] Unsupported event: ${eventName}`);\n }\n\n const handlerId = `${eventName}_${Math.random().toString(36)}`;\n const handlersForEvent = this.externalHandlers.get(eventConfig.native) ?? [];\n handlersForEvent.push({\n id: handlerId,\n handlerName: eventName,\n listener: listener as (data: EventPayloadMap[keyof EventPayloadMap]) => void,\n config: eventConfig as EventConfig<keyof EventPayloadMap>,\n });\n this.externalHandlers.set(eventConfig.native, handlersForEvent);\n\n if (!this.nativeEventListeners.has(eventConfig.native)) {\n const handlers = this.externalHandlers;\n const subscription = await AdaptyCapacitorPlugin.addListener(eventConfig.native, (arg: { data: string }) => {\n const eventCtx = new LogContext();\n const eventLog = eventCtx.event({ methodName: eventConfig.native });\n eventLog.start(() => ({ raw: arg }));\n\n const rawEventData = arg?.data;\n if (typeof rawEventData !== 'string') {\n eventLog.failed(() => ({ error: new Error('[Adapty] Expected event data to be JSON string') }));\n return;\n }\n\n const eventHandlers = handlers.get(eventConfig.native) ?? [];\n for (const { handlerName, listener, config } of eventHandlers) {\n let payload: EventPayloadMap[keyof EventPayloadMap] | null = null;\n try {\n payload = config.parse(rawEventData, eventCtx);\n } catch (err) {\n eventLog.failed(() => ({ error: err }));\n continue;\n }\n\n if (!payload) {\n eventLog.failed(() => ({ error: new Error('[Adapty] Parsed payload is null') }));\n continue;\n }\n\n try {\n listener(payload);\n eventLog.success(() => ({ message: 'Event handled successfully', handlerName }));\n } catch (handlerError) {\n eventLog.failed(() => ({ handlerName, handlerError }));\n }\n }\n });\n this.nativeEventListeners.set(eventConfig.native, subscription);\n }\n\n // Return wrapper handle that can remove this specific handler\n const wrappedHandle: PluginListenerHandle = {\n remove: async () => {\n await this.removeHandler(eventConfig.native, handlerId);\n },\n } as PluginListenerHandle;\n\n return wrappedHandle;\n };\n\n private async removeHandler(nativeEvent: string, handlerId: string): Promise<void> {\n const ctx = new LogContext();\n const log = ctx.call({ methodName: 'removeHandler' });\n log.start(() => ({ nativeEvent, handlerId }));\n\n const handlersForEvent = this.externalHandlers.get(nativeEvent);\n if (!handlersForEvent) {\n log.success(() => ({ message: 'No handlers found for native event', nativeEvent }));\n return;\n }\n\n const initialHandlersCount = handlersForEvent.length;\n // Remove the specific handler\n const filteredHandlers = handlersForEvent.filter((h) => h.id !== handlerId);\n this.externalHandlers.set(nativeEvent, filteredHandlers);\n\n const handlerRemoved = filteredHandlers.length < initialHandlersCount;\n if (!handlerRemoved) {\n log.success(() => ({\n message: 'Handler not found in handlers list',\n nativeEvent,\n handlerId,\n remainingHandlers: filteredHandlers.length,\n }));\n return;\n }\n\n // If no more handlers for this native event, remove the subscription\n if (filteredHandlers.length === 0) {\n this.externalHandlers.delete(nativeEvent);\n const subscription = this.nativeEventListeners.get(nativeEvent);\n if (subscription) {\n try {\n await subscription.remove();\n this.nativeEventListeners.delete(nativeEvent);\n log.success(() => ({\n message: 'Handler and native subscription removed successfully',\n nativeEvent,\n handlerId,\n }));\n } catch (error) {\n log.failed(() => ({\n message: `Failed to remove subscription for ${nativeEvent}`,\n error,\n nativeEvent,\n handlerId,\n }));\n }\n } else {\n log.success(() => ({\n message: 'Handler removed, no native subscription found',\n nativeEvent,\n handlerId,\n }));\n }\n } else {\n log.success(() => ({\n message: 'Handler removed successfully',\n nativeEvent,\n handlerId,\n remainingHandlers: filteredHandlers.length,\n }));\n }\n }\n\n async removeAllListeners(): Promise<void> {\n const ctx = new LogContext();\n const log = ctx.call({ methodName: 'removeAllListeners' });\n log.start(() => ({ listenersCount: this.nativeEventListeners.size }));\n\n try {\n const removePromises = Array.from(this.nativeEventListeners.values()).map((handle, index) =>\n handle.remove().catch((error) => {\n log.failed(() => ({\n message: `Failed to remove event listener ${index}`,\n error,\n index,\n }));\n }),\n );\n\n this.nativeEventListeners.clear();\n this.externalHandlers.clear();\n await Promise.all(removePromises);\n log.success(() => ({ message: 'All listeners removed successfully' }));\n } catch (error) {\n log.failed(() => ({ error }));\n throw error;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"adapty-emitter.js","sourceRoot":"","sources":["../../src/adapty-emitter.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AdaptyError } from '@adapty/core';\nimport type { PluginListenerHandle } from '@capacitor/core';\n\nimport { AdaptyCapacitorPlugin } from './bridge/plugin';\nimport { parseCommonEvent } from './coders/parse';\nimport { LogContext } from './logger';\nimport type { AdaptyProfile, AdaptyInstallationDetails } from './types';\nimport type { AddListenerFn, EventPayloadMap } from './types/adapty-plugin';\n\ntype EventConfig<K extends keyof EventPayloadMap> = {\n native: 'did_load_latest_profile' | 'on_installation_details_success' | 'on_installation_details_fail';\n parse: (raw: string, eventCtx: LogContext) => EventPayloadMap[K] | null;\n};\n\n// Type-safe parser functions for each event\nfunction parseProfileEvent(raw: string, eventCtx: LogContext): EventPayloadMap['onLatestProfileLoad'] | null {\n const profile = parseCommonEvent('did_load_latest_profile', raw, eventCtx);\n return profile ? { profile: profile as AdaptyProfile } : null;\n}\n\nfunction parseInstallationDetailsSuccessEvent(\n raw: string,\n eventCtx: LogContext,\n): EventPayloadMap['onInstallationDetailsSuccess'] | null {\n const details = parseCommonEvent('on_installation_details_success', raw, eventCtx);\n return details ? { details: details as AdaptyInstallationDetails } : null;\n}\n\nfunction parseInstallationDetailsFailEvent(\n raw: string,\n eventCtx: LogContext,\n): EventPayloadMap['onInstallationDetailsFail'] | null {\n const error = parseCommonEvent('on_installation_details_fail', raw, eventCtx);\n return error ? { error: error as AdaptyError } : null;\n}\n\nconst EVENT_MAP: { [K in keyof EventPayloadMap]: EventConfig<K> } = {\n onLatestProfileLoad: {\n native: 'did_load_latest_profile',\n parse: parseProfileEvent,\n },\n onInstallationDetailsSuccess: {\n native: 'on_installation_details_success',\n parse: parseInstallationDetailsSuccessEvent,\n },\n onInstallationDetailsFail: {\n native: 'on_installation_details_fail',\n parse: parseInstallationDetailsFailEvent,\n },\n};\n\nexport class AdaptyEmitter {\n private nativeEventListeners: Map<string, PluginListenerHandle> = new Map();\n private externalHandlers: Map<\n string,\n {\n id: string;\n handlerName: keyof EventPayloadMap;\n listener: (data: EventPayloadMap[keyof EventPayloadMap]) => void;\n config: EventConfig<keyof EventPayloadMap>;\n }[]\n > = new Map();\n\n public addListener: AddListenerFn = async <T extends keyof EventPayloadMap>(\n eventName: T,\n listener: (data: EventPayloadMap[T]) => void,\n ): Promise<PluginListenerHandle> => {\n const ctx = new LogContext();\n const log = ctx.call({ methodName: 'addListener' });\n log.start(() => ({ eventName }));\n\n const eventConfig = EVENT_MAP[eventName];\n if (!eventConfig) {\n throw new Error(`[Adapty] Unsupported event: ${eventName}`);\n }\n\n const handlerId = `${eventName}_${Math.random().toString(36)}`;\n const handlersForEvent = this.externalHandlers.get(eventConfig.native) ?? [];\n handlersForEvent.push({\n id: handlerId,\n handlerName: eventName,\n listener: listener as (data: EventPayloadMap[keyof EventPayloadMap]) => void,\n config: eventConfig as EventConfig<keyof EventPayloadMap>,\n });\n this.externalHandlers.set(eventConfig.native, handlersForEvent);\n\n if (!this.nativeEventListeners.has(eventConfig.native)) {\n const handlers = this.externalHandlers;\n const subscription = await AdaptyCapacitorPlugin.addListener(eventConfig.native, (arg: { data: string }) => {\n const eventCtx = new LogContext();\n const eventLog = eventCtx.event({ methodName: eventConfig.native });\n eventLog.start(() => ({ raw: arg }));\n\n const rawEventData = arg?.data;\n if (typeof rawEventData !== 'string') {\n eventLog.failed(() => ({ error: new Error('[Adapty] Expected event data to be JSON string') }));\n return;\n }\n\n const eventHandlers = handlers.get(eventConfig.native) ?? [];\n for (const { handlerName, listener, config } of eventHandlers) {\n let payload: EventPayloadMap[keyof EventPayloadMap] | null = null;\n try {\n payload = config.parse(rawEventData, eventCtx);\n } catch (err) {\n eventLog.failed(() => ({ error: err }));\n continue;\n }\n\n if (!payload) {\n eventLog.failed(() => ({ error: new Error('[Adapty] Parsed payload is null') }));\n continue;\n }\n\n try {\n listener(payload);\n eventLog.success(() => ({ message: 'Event handled successfully', handlerName }));\n } catch (handlerError) {\n eventLog.failed(() => ({ handlerName, handlerError }));\n }\n }\n });\n this.nativeEventListeners.set(eventConfig.native, subscription);\n }\n\n // Return wrapper handle that can remove this specific handler\n const wrappedHandle: PluginListenerHandle = {\n remove: async () => {\n await this.removeHandler(eventConfig.native, handlerId);\n },\n } as PluginListenerHandle;\n\n return wrappedHandle;\n };\n\n private async removeHandler(nativeEvent: string, handlerId: string): Promise<void> {\n const ctx = new LogContext();\n const log = ctx.call({ methodName: 'removeHandler' });\n log.start(() => ({ nativeEvent, handlerId }));\n\n const handlersForEvent = this.externalHandlers.get(nativeEvent);\n if (!handlersForEvent) {\n log.success(() => ({ message: 'No handlers found for native event', nativeEvent }));\n return;\n }\n\n const initialHandlersCount = handlersForEvent.length;\n // Remove the specific handler\n const filteredHandlers = handlersForEvent.filter((h) => h.id !== handlerId);\n this.externalHandlers.set(nativeEvent, filteredHandlers);\n\n const handlerRemoved = filteredHandlers.length < initialHandlersCount;\n if (!handlerRemoved) {\n log.success(() => ({\n message: 'Handler not found in handlers list',\n nativeEvent,\n handlerId,\n remainingHandlers: filteredHandlers.length,\n }));\n return;\n }\n\n // If no more handlers for this native event, remove the subscription\n if (filteredHandlers.length === 0) {\n this.externalHandlers.delete(nativeEvent);\n const subscription = this.nativeEventListeners.get(nativeEvent);\n if (subscription) {\n try {\n await subscription.remove();\n this.nativeEventListeners.delete(nativeEvent);\n log.success(() => ({\n message: 'Handler and native subscription removed successfully',\n nativeEvent,\n handlerId,\n }));\n } catch (error) {\n log.failed(() => ({\n message: `Failed to remove subscription for ${nativeEvent}`,\n error,\n nativeEvent,\n handlerId,\n }));\n }\n } else {\n log.success(() => ({\n message: 'Handler removed, no native subscription found',\n nativeEvent,\n handlerId,\n }));\n }\n } else {\n log.success(() => ({\n message: 'Handler removed successfully',\n nativeEvent,\n handlerId,\n remainingHandlers: filteredHandlers.length,\n }));\n }\n }\n\n async removeAllListeners(): Promise<void> {\n const ctx = new LogContext();\n const log = ctx.call({ methodName: 'removeAllListeners' });\n log.start(() => ({ listenersCount: this.nativeEventListeners.size }));\n\n try {\n const removePromises = Array.from(this.nativeEventListeners.values()).map((handle, index) =>\n handle.remove().catch((error) => {\n log.failed(() => ({\n message: `Failed to remove event listener ${index}`,\n error,\n index,\n }));\n }),\n );\n\n this.nativeEventListeners.clear();\n this.externalHandlers.clear();\n await Promise.all(removePromises);\n log.success(() => ({ message: 'All listeners removed successfully' }));\n } catch (error) {\n log.failed(() => ({ error }));\n throw error;\n }\n }\n}\n"]}
@@ -1,10 +1,11 @@
1
- import { LogContext } from './shared/logger';
2
- import type { LoggerConfig, LogScope } from './shared/logger';
3
- import type { AdaptyPaywall, AdaptyPaywallProduct, AdaptyOnboarding, AdaptyProfile, AdaptyPurchaseResult, AdaptyProfileParameters, RefundPreference, AdaptyInstallationStatus, WebPresentation } from './shared/types';
4
- import type { ActivateParamsInput, FileLocation, LogLevel, IdentifyParamsInput } from './shared/types/inputs';
5
- import { type MethodName, type MethodResponseMap } from './shared/types/method-types';
1
+ import { type AdaptyType } from './coders/parse';
2
+ import { LogContext } from './logger';
3
+ import type { LoggerConfig, LogScope } from './logger';
4
+ import type { AdaptyPaywall, AdaptyPaywallProduct, AdaptyOnboarding, AdaptyProfile, AdaptyPurchaseResult, AdaptyProfileParameters, RefundPreference, AdaptyInstallationStatus, WebPresentation } from './types';
6
5
  import type { AdaptyPlugin, AddListenerFn } from './types/adapty-plugin';
7
6
  import type { GetPaywallOptions, GetPaywallForDefaultAudienceOptions, MakePurchaseOptions, GetOnboardingOptions, GetOnboardingForDefaultAudienceOptions } from './types/configs';
7
+ import type { ActivateParamsInput, FileLocation, LogLevel, IdentifyParamsInput } from './types/inputs';
8
+ import type { MethodName } from './types/method-types';
8
9
  /**
9
10
  * Entry point for the Adapty SDK.
10
11
  *
@@ -14,6 +15,7 @@ import type { GetPaywallOptions, GetPaywallForDefaultAudienceOptions, MakePurcha
14
15
  * @public
15
16
  */
16
17
  export declare class Adapty implements AdaptyPlugin {
18
+ constructor();
17
19
  private activating;
18
20
  private resolveHeldActivation?;
19
21
  private readonly emitter;
@@ -27,7 +29,7 @@ export declare class Adapty implements AdaptyPlugin {
27
29
  * Handle method calls through crossplatform bridge with type safety
28
30
  * @internal
29
31
  */
30
- handleMethodCall<M extends MethodName>(methodName: M, args: string, ctx: LogContext, log: LogScope): Promise<MethodResponseMap[M]>;
32
+ handleMethodCall<M extends MethodName>(methodName: M, args: string, ctx: LogContext, log: LogScope, resultType?: AdaptyType): Promise<any>;
31
33
  private isPaywallProduct;
32
34
  /**
33
35
  * Initializes the Adapty SDK.
@@ -1,20 +1,14 @@
1
1
  // PluginListenerHandle is no longer referenced directly in this file
2
+ import { AdaptyError } from '@adapty/core';
2
3
  import { Capacitor } from '@capacitor/core';
3
4
  import { AdaptyEmitter } from './adapty-emitter';
4
5
  import { AdaptyCapacitorPlugin } from './bridge/plugin';
5
- import { getCoder } from './coder-registry';
6
+ import { coderFactory } from './coders/factory';
7
+ import { parseMethodResult } from './coders/parse';
6
8
  import { defaultAdaptyOptions } from './default-configs';
7
- import { AdaptyConfigurationCoder } from './shared/coders/adapty-configuration';
8
- import { AdaptyIdentifyParamsCoder } from './shared/coders/adapty-identify-params';
9
- import { AdaptyPaywallCoder } from './shared/coders/adapty-paywall';
10
- import { AdaptyPaywallProductCoder } from './shared/coders/adapty-paywall-product';
11
- import { AdaptyProfileParametersCoder } from './shared/coders/adapty-profile-parameters';
12
- import { AdaptyPurchaseParamsCoder } from './shared/coders/adapty-purchase-params';
13
- import { Log, LogContext } from './shared/logger';
14
- import { isErrorResponse, isSuccessResponse, } from './shared/types/method-types';
15
- import { filterUndefined } from './shared/utils/compact-object';
16
- import { mergeOptions } from './shared/utils/merge-options';
17
- import { withErrorContext } from './shared/utils/with-error-context';
9
+ import { Log, LogContext } from './logger';
10
+ import { filterUndefined, mergeOptions, withErrorContext } from './utils';
11
+ import VERSION from './version';
18
12
  /**
19
13
  * Entry point for the Adapty SDK.
20
14
  *
@@ -69,6 +63,7 @@ export class Adapty {
69
63
  const wrappedListener = withErrorContext(listenerFunc, eventName, 'Adapty');
70
64
  return this.emitter.addListener(eventName, wrappedListener);
71
65
  };
66
+ Log.setVersion(VERSION);
72
67
  }
73
68
  /**
74
69
  * Helper method for logging encode operations
@@ -93,7 +88,7 @@ export class Adapty {
93
88
  * Handle method calls through crossplatform bridge with type safety
94
89
  * @internal
95
90
  */
96
- async handleMethodCall(methodName, args, ctx, log) {
91
+ async handleMethodCall(methodName, args, ctx, log, resultType = 'Void') {
97
92
  // Hold on deferred activation first
98
93
  if (this.resolveHeldActivation && !this.nonWaitingMethods.includes(methodName)) {
99
94
  log.wait(() => ({}));
@@ -114,53 +109,20 @@ export class Adapty {
114
109
  methodName,
115
110
  args,
116
111
  });
117
- bridgeLog.success(() => ({ crossPlatformJson: result.crossPlatformJson }));
118
- // Parse JSON response with type safety
119
- const parsedResponse = JSON.parse(result.crossPlatformJson);
120
- // Check for native errors
121
- if (isErrorResponse(parsedResponse)) {
122
- const error = parsedResponse.error;
123
- const errorMessage = `Native error: ${error.message} (code: ${error.adaptyCode})`;
124
- const nativeError = new Error(errorMessage);
125
- log.failed(() => ({ error: nativeError }));
126
- throw nativeError;
127
- }
128
- // Extract success data with type safety
129
- if (isSuccessResponse(parsedResponse)) {
130
- const successData = parsedResponse.success;
131
- // Apply decoder if available for this method
132
- const coder = getCoder(methodName);
133
- let result;
134
- if (coder) {
135
- // Create decode scope for logging decode operations
136
- const decodeLog = ctx.decode({ methodName: `decode/${methodName}` });
137
- decodeLog.start(() => ({ successData }));
138
- try {
139
- result = coder.decode(successData);
140
- decodeLog.success(() => ({ result }));
141
- }
142
- catch (error) {
143
- decodeLog.failed(() => ({ error }));
144
- throw error;
145
- }
146
- }
147
- else {
148
- result = successData;
149
- }
150
- log.success(() => ({ result }));
151
- return result;
152
- }
153
- const formatError = new Error('Invalid response format: missing success or error field');
154
- log.failed(() => ({ error: formatError }));
155
- throw formatError;
112
+ const resultJson = result.crossPlatformJson;
113
+ bridgeLog.success(() => ({ crossPlatformJson: resultJson }));
114
+ const decoded = parseMethodResult(resultJson, resultType, ctx);
115
+ log.success(() => ({ result: decoded }));
116
+ return decoded;
156
117
  }
157
118
  catch (error) {
119
+ if (error instanceof AdaptyError) {
120
+ log.failed(() => ({ error }));
121
+ throw error;
122
+ }
158
123
  bridgeLog.failed(() => ({ error }));
159
- // If it's our custom error and log wasn't called yet, log it
160
124
  if (error instanceof Error && !error.message.startsWith('{')) {
161
- if (!error.message.startsWith('Native error:')) {
162
- log.failed(() => ({ error }));
163
- }
125
+ log.failed(() => ({ error }));
164
126
  throw error;
165
127
  }
166
128
  // If JSON parsing fails, wrap the error
@@ -251,7 +213,7 @@ export class Adapty {
251
213
  const ctx = new LogContext();
252
214
  const log = ctx.call({ methodName: method });
253
215
  log.start(() => ({ apiKey, params }));
254
- const configurationCoder = new AdaptyConfigurationCoder();
216
+ const configurationCoder = coderFactory.createConfigurationCoder();
255
217
  const configuration = configurationCoder.encode(apiKey, params);
256
218
  const activateRequestWithUndefined = {
257
219
  method,
@@ -275,7 +237,7 @@ export class Adapty {
275
237
  method,
276
238
  };
277
239
  const args = filterUndefined(argsWithUndefined);
278
- return await this.handleMethodCall(method, JSON.stringify(args), ctx, log);
240
+ return await this.handleMethodCall(method, JSON.stringify(args), ctx, log, 'Boolean');
279
241
  }
280
242
  /**
281
243
  * Gets the current installation status.
@@ -312,7 +274,7 @@ export class Adapty {
312
274
  method,
313
275
  };
314
276
  const args = filterUndefined(argsWithUndefined);
315
- return await this.handleMethodCall(method, JSON.stringify(args), ctx, log);
277
+ return await this.handleMethodCall(method, JSON.stringify(args), ctx, log, 'AdaptyInstallationStatus');
316
278
  }
317
279
  /**
318
280
  * Fetches the paywall by the specified placement.
@@ -363,7 +325,7 @@ export class Adapty {
363
325
  : { type: params.fetchPolicy },
364
326
  };
365
327
  const args = filterUndefined(argsWithUndefined);
366
- return await this.handleMethodCall(method, JSON.stringify(args), ctx, log);
328
+ return await this.handleMethodCall(method, JSON.stringify(args), ctx, log, 'AdaptyPaywall');
367
329
  }
368
330
  /**
369
331
  * Fetches the paywall of the specified placement for the **All Users** audience.
@@ -419,7 +381,7 @@ export class Adapty {
419
381
  : { type: (_a = params.fetchPolicy) !== null && _a !== void 0 ? _a : 'reload_revalidating_cache_data' },
420
382
  };
421
383
  const args = filterUndefined(argsWithUndefined);
422
- return await this.handleMethodCall(method, JSON.stringify(args), ctx, log);
384
+ return await this.handleMethodCall(method, JSON.stringify(args), ctx, log, 'AdaptyPaywall');
423
385
  }
424
386
  /**
425
387
  * Fetches a list of products associated with a provided paywall.
@@ -447,13 +409,13 @@ export class Adapty {
447
409
  const ctx = new LogContext();
448
410
  const log = ctx.call({ methodName: method });
449
411
  log.start(() => ({ options }));
450
- const paywallCoder = new AdaptyPaywallCoder();
412
+ const paywallCoder = coderFactory.createPaywallCoder();
451
413
  const argsWithUndefined = {
452
414
  method,
453
415
  paywall: this.encodeWithLogging(paywallCoder, options.paywall, 'AdaptyPaywall', ctx),
454
416
  };
455
417
  const args = filterUndefined(argsWithUndefined);
456
- return await this.handleMethodCall(method, JSON.stringify(args), ctx, log);
418
+ return await this.handleMethodCall(method, JSON.stringify(args), ctx, log, 'Array<AdaptyPaywallProduct>');
457
419
  }
458
420
  /**
459
421
  * Fetches the onboarding by the specified placement.
@@ -506,7 +468,7 @@ export class Adapty {
506
468
  : { type: params.fetchPolicy },
507
469
  };
508
470
  const args = filterUndefined(argsWithUndefined);
509
- return await this.handleMethodCall(method, JSON.stringify(args), ctx, log);
471
+ return await this.handleMethodCall(method, JSON.stringify(args), ctx, log, 'AdaptyOnboarding');
510
472
  }
511
473
  /**
512
474
  * Fetches the onboarding of the specified placement for the **All Users** audience.
@@ -556,7 +518,7 @@ export class Adapty {
556
518
  : { type: (_a = params.fetchPolicy) !== null && _a !== void 0 ? _a : 'reload_revalidating_cache_data' },
557
519
  };
558
520
  const args = filterUndefined(argsWithUndefined);
559
- return await this.handleMethodCall(method, JSON.stringify(args), ctx, log);
521
+ return await this.handleMethodCall(method, JSON.stringify(args), ctx, log, 'AdaptyOnboarding');
560
522
  }
561
523
  /**
562
524
  * Fetches a user profile.
@@ -599,7 +561,7 @@ export class Adapty {
599
561
  method,
600
562
  };
601
563
  const args = filterUndefined(argsWithUndefined);
602
- return await this.handleMethodCall(method, JSON.stringify(args), ctx, log);
564
+ return await this.handleMethodCall(method, JSON.stringify(args), ctx, log, 'AdaptyProfile');
603
565
  }
604
566
  /**
605
567
  * Logs in a user with a provided customerUserId.
@@ -633,7 +595,7 @@ export class Adapty {
633
595
  const ctx = new LogContext();
634
596
  const log = ctx.call({ methodName: method });
635
597
  log.start(() => ({ options }));
636
- const identifyParamsCoder = new AdaptyIdentifyParamsCoder();
598
+ const identifyParamsCoder = coderFactory.createIdentifyParamsCoder();
637
599
  const parameters = identifyParamsCoder.encode(options.params);
638
600
  const argsWithUndefined = {
639
601
  method,
@@ -674,7 +636,7 @@ export class Adapty {
674
636
  const ctx = new LogContext();
675
637
  const log = ctx.call({ methodName: method });
676
638
  log.start(() => ({ options }));
677
- const paywallCoder = new AdaptyPaywallCoder();
639
+ const paywallCoder = coderFactory.createPaywallCoder();
678
640
  const argsWithUndefined = {
679
641
  method,
680
642
  paywall: this.encodeWithLogging(paywallCoder, options.paywall, 'AdaptyPaywall', ctx),
@@ -707,8 +669,8 @@ export class Adapty {
707
669
  const ctx = new LogContext();
708
670
  const log = ctx.call({ methodName: method });
709
671
  log.start(() => ({ options }));
710
- const paywallCoder = new AdaptyPaywallCoder();
711
- const productCoder = new AdaptyPaywallProductCoder();
672
+ const paywallCoder = coderFactory.createPaywallCoder();
673
+ const productCoder = coderFactory.createPaywallProductCoder();
712
674
  const argsWithUndefined = Object.assign(Object.assign({ method }, (this.isPaywallProduct(options.paywallOrProduct)
713
675
  ? { product: this.encodeWithLogging(productCoder, options.paywallOrProduct, 'AdaptyPaywallProduct', ctx) }
714
676
  : { paywall: this.encodeWithLogging(paywallCoder, options.paywallOrProduct, 'AdaptyPaywall', ctx) })), (options.openIn ? { open_in: options.openIn } : {}));
@@ -745,13 +707,13 @@ export class Adapty {
745
707
  const ctx = new LogContext();
746
708
  const log = ctx.call({ methodName: method });
747
709
  log.start(() => ({ options }));
748
- const paywallCoder = new AdaptyPaywallCoder();
749
- const productCoder = new AdaptyPaywallProductCoder();
710
+ const paywallCoder = coderFactory.createPaywallCoder();
711
+ const productCoder = coderFactory.createPaywallProductCoder();
750
712
  const argsWithUndefined = Object.assign({ method }, (this.isPaywallProduct(options.paywallOrProduct)
751
713
  ? { product: this.encodeWithLogging(productCoder, options.paywallOrProduct, 'AdaptyPaywallProduct', ctx) }
752
714
  : { paywall: this.encodeWithLogging(paywallCoder, options.paywallOrProduct, 'AdaptyPaywall', ctx) }));
753
715
  const args = filterUndefined(argsWithUndefined);
754
- return await this.handleMethodCall(method, JSON.stringify(args), ctx, log);
716
+ return await this.handleMethodCall(method, JSON.stringify(args), ctx, log, 'String');
755
717
  }
756
718
  /**
757
719
  * Logs out the current user.
@@ -824,8 +786,8 @@ export class Adapty {
824
786
  const ctx = new LogContext();
825
787
  const log = ctx.call({ methodName: method });
826
788
  log.start(() => ({ options }));
827
- const productCoder = new AdaptyPaywallProductCoder();
828
- const purchaseParamsCoder = new AdaptyPurchaseParamsCoder();
789
+ const productCoder = coderFactory.createPaywallProductCoder();
790
+ const purchaseParamsCoder = coderFactory.createPurchaseParamsCoder();
829
791
  const encodedProduct = this.encodeWithLogging(productCoder, options.product, 'AdaptyPaywallProduct', ctx);
830
792
  const productInput = productCoder.getInput(encodedProduct);
831
793
  const purchaseParams = this.encodeWithLogging(purchaseParamsCoder, params, 'AdaptyPurchaseParams', ctx);
@@ -835,7 +797,7 @@ export class Adapty {
835
797
  parameters: purchaseParams,
836
798
  };
837
799
  const args = filterUndefined(argsWithUndefined);
838
- return await this.handleMethodCall(method, JSON.stringify(args), ctx, log);
800
+ return await this.handleMethodCall(method, JSON.stringify(args), ctx, log, 'AdaptyPurchaseResult');
839
801
  }
840
802
  /**
841
803
  * Opens a native modal screen to redeem Apple Offer Codes.
@@ -951,7 +913,7 @@ export class Adapty {
951
913
  method,
952
914
  };
953
915
  const args = filterUndefined(argsWithUndefined);
954
- return await this.handleMethodCall(method, JSON.stringify(args), ctx, log);
916
+ return await this.handleMethodCall(method, JSON.stringify(args), ctx, log, 'AdaptyProfile');
955
917
  }
956
918
  /**
957
919
  * Sets the fallback paywalls.
@@ -1283,7 +1245,7 @@ export class Adapty {
1283
1245
  const ctx = new LogContext();
1284
1246
  const log = ctx.call({ methodName: method });
1285
1247
  log.start(() => ({ options }));
1286
- const profileParametersCoder = new AdaptyProfileParametersCoder();
1248
+ const profileParametersCoder = coderFactory.createProfileParametersCoder();
1287
1249
  const argsWithUndefined = {
1288
1250
  method,
1289
1251
  params: this.encodeWithLogging(profileParametersCoder, options, 'AdaptyProfileParameters', ctx),