@apps-in-toss/native-modules 1.1.2 → 1.2.0

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.cjs CHANGED
@@ -47,14 +47,17 @@ __export(index_exports, {
47
47
  getNetworkStatus: () => getNetworkStatus,
48
48
  getOperationalEnvironment: () => getOperationalEnvironment,
49
49
  getPlatformOS: () => getPlatformOS,
50
- getSchemeUri: () => getSchemeUri,
50
+ getSchemeUri: () => getSchemeUri2,
51
51
  getTossAppVersion: () => getTossAppVersion,
52
52
  getTossShareLink: () => getTossShareLink,
53
+ iapCreateOneTimePurchaseOrder: () => iapCreateOneTimePurchaseOrder,
53
54
  isMinVersionSupported: () => isMinVersionSupported,
54
55
  onVisibilityChangedByTransparentServiceWeb: () => onVisibilityChangedByTransparentServiceWeb,
55
56
  openCamera: () => openCamera,
56
57
  openGameCenterLeaderboard: () => openGameCenterLeaderboard,
57
58
  openURL: () => openURL2,
59
+ processProductGrant: () => processProductGrant,
60
+ requestOneTimePurchase: () => requestOneTimePurchase,
58
61
  saveBase64Data: () => saveBase64Data,
59
62
  setClipboardText: () => setClipboardText,
60
63
  setDeviceOrientation: () => setDeviceOrientation,
@@ -68,22 +71,11 @@ __export(index_exports, {
68
71
  module.exports = __toCommonJS(index_exports);
69
72
 
70
73
  // src/AppsInTossModule/native-event-emitter/appsInTossEvent.ts
71
- var import_react_native9 = require("@granite-js/react-native");
72
-
73
- // src/AppsInTossModule/native-event-emitter/event-plugins/BackButtonClickHandleEvent.ts
74
- var import_react_native = require("@granite-js/react-native");
75
- var BackButtonClickHandleEvent = class extends import_react_native.GraniteEventDefinition {
76
- name = "backButtonClickEvent";
77
- remove() {
78
- }
79
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
80
- listener(_) {
81
- }
82
- };
74
+ var import_react_native7 = require("@granite-js/react-native");
83
75
 
84
76
  // src/AppsInTossModule/native-event-emitter/event-plugins/EntryMessageExitedEvent.ts
85
- var import_react_native2 = require("@granite-js/react-native");
86
- var EntryMessageExitedEvent = class extends import_react_native2.GraniteEventDefinition {
77
+ var import_react_native = require("@granite-js/react-native");
78
+ var EntryMessageExitedEvent = class extends import_react_native.GraniteEventDefinition {
87
79
  name = "entryMessageExited";
88
80
  remove() {
89
81
  }
@@ -92,24 +84,13 @@ var EntryMessageExitedEvent = class extends import_react_native2.GraniteEventDef
92
84
  }
93
85
  };
94
86
 
95
- // src/AppsInTossModule/native-event-emitter/event-plugins/HomeIconButtonClickHandleEvent.ts
96
- var import_react_native3 = require("@granite-js/react-native");
97
- var HomeIconButtonClickHandleEvent = class extends import_react_native3.GraniteEventDefinition {
98
- name = "homeIconButtonClickEvent";
99
- remove() {
100
- }
101
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
102
- listener(_) {
103
- }
104
- };
105
-
106
87
  // src/AppsInTossModule/native-event-emitter/event-plugins/UpdateLocationEvent.ts
107
88
  var import_types = require("@apps-in-toss/types");
108
- var import_react_native6 = require("@granite-js/react-native");
89
+ var import_react_native4 = require("@granite-js/react-native");
109
90
 
110
91
  // src/AppsInTossModule/native-modules/AppsInTossModule.ts
111
- var import_react_native4 = require("react-native");
112
- var Module = import_react_native4.TurboModuleRegistry.getEnforcing("AppsInTossModule");
92
+ var import_react_native2 = require("react-native");
93
+ var Module = import_react_native2.TurboModuleRegistry.getEnforcing("AppsInTossModule");
113
94
  var AppsInTossModuleInstance = Module;
114
95
  var AppsInTossModule = Module;
115
96
 
@@ -136,11 +117,11 @@ async function requestPermission(permission) {
136
117
  }
137
118
 
138
119
  // src/AppsInTossModule/native-event-emitter/nativeEventEmitter.ts
139
- var import_react_native5 = require("react-native");
140
- var nativeEventEmitter = new import_react_native5.NativeEventEmitter(AppsInTossModuleInstance);
120
+ var import_react_native3 = require("react-native");
121
+ var nativeEventEmitter = new import_react_native3.NativeEventEmitter(AppsInTossModuleInstance);
141
122
 
142
123
  // src/AppsInTossModule/native-event-emitter/event-plugins/UpdateLocationEvent.ts
143
- var UpdateLocationEvent = class extends import_react_native6.GraniteEventDefinition {
124
+ var UpdateLocationEvent = class extends import_react_native4.GraniteEventDefinition {
144
125
  name = "updateLocationEvent";
145
126
  subscriptionCount = 0;
146
127
  ref = {
@@ -170,7 +151,7 @@ var UpdateLocationEvent = class extends import_react_native6.GraniteEventDefinit
170
151
  };
171
152
 
172
153
  // src/AppsInTossModule/native-event-emitter/internal/AppBridgeCallbackEvent.ts
173
- var import_react_native7 = require("@granite-js/react-native");
154
+ var import_react_native5 = require("@granite-js/react-native");
174
155
 
175
156
  // src/utils/generateUUID.ts
176
157
  function generateUUID(placeholder) {
@@ -232,7 +213,7 @@ var INTERNAL__appBridgeHandler = {
232
213
 
233
214
  // src/AppsInTossModule/native-event-emitter/internal/AppBridgeCallbackEvent.ts
234
215
  var UNSAFE__nativeEventEmitter = nativeEventEmitter;
235
- var AppBridgeCallbackEvent = class _AppBridgeCallbackEvent extends import_react_native7.GraniteEventDefinition {
216
+ var AppBridgeCallbackEvent = class _AppBridgeCallbackEvent extends import_react_native5.GraniteEventDefinition {
236
217
  static INTERNAL__appBridgeSubscription;
237
218
  name = "appBridgeCallbackEvent";
238
219
  constructor() {
@@ -262,8 +243,8 @@ var AppBridgeCallbackEvent = class _AppBridgeCallbackEvent extends import_react_
262
243
  };
263
244
 
264
245
  // src/AppsInTossModule/native-event-emitter/internal/VisibilityChangedByTransparentServiceWebEvent.ts
265
- var import_react_native8 = require("@granite-js/react-native");
266
- var VisibilityChangedByTransparentServiceWebEvent = class extends import_react_native8.GraniteEventDefinition {
246
+ var import_react_native6 = require("@granite-js/react-native");
247
+ var VisibilityChangedByTransparentServiceWebEvent = class extends import_react_native6.GraniteEventDefinition {
267
248
  name = "onVisibilityChangedByTransparentServiceWeb";
268
249
  subscription = null;
269
250
  remove() {
@@ -288,12 +269,9 @@ var VisibilityChangedByTransparentServiceWebEvent = class extends import_react_n
288
269
  };
289
270
 
290
271
  // src/AppsInTossModule/native-event-emitter/appsInTossEvent.ts
291
- var appsInTossEvent = new import_react_native9.GraniteEvent([
272
+ var appsInTossEvent = new import_react_native7.GraniteEvent([
292
273
  new UpdateLocationEvent(),
293
274
  new EntryMessageExitedEvent(),
294
- // Navigation Bar events
295
- new HomeIconButtonClickHandleEvent(),
296
- new BackButtonClickHandleEvent(),
297
275
  // Internal events
298
276
  new AppBridgeCallbackEvent(),
299
277
  new VisibilityChangedByTransparentServiceWebEvent()
@@ -308,7 +286,7 @@ function getOperationalEnvironment() {
308
286
  }
309
287
 
310
288
  // src/AppsInTossModule/native-modules/isMinVersionSupported.ts
311
- var import_react_native10 = require("react-native");
289
+ var import_react_native8 = require("react-native");
312
290
 
313
291
  // src/utils/compareVersion.ts
314
292
  var SEMVER_REGEX = /^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\\-]+(?:\.[\da-z\\-]+)*))?(?:\+[\da-z\\-]+(?:\.[\da-z\\-]+)*)?)?)?$/i;
@@ -384,7 +362,7 @@ function isMinVersionSupported(minVersions) {
384
362
  return true;
385
363
  }
386
364
  const currentVersion = AppsInTossModule.tossAppVersion;
387
- const isIOS = import_react_native10.Platform.OS === "ios";
365
+ const isIOS = import_react_native8.Platform.OS === "ios";
388
366
  const minVersion = isIOS ? minVersions.ios : minVersions.android;
389
367
  if (minVersion === void 0) {
390
368
  return false;
@@ -502,16 +480,33 @@ showAdMobRewardedAd.isSupported = createIsSupported();
502
480
 
503
481
  // src/AppsInTossModule/native-modules/ads/googleAdMobV2.ts
504
482
  var import_es_toolkit2 = require("es-toolkit");
483
+
484
+ // src/utils/getReferrer.ts
485
+ var import_react_native9 = require("@granite-js/react-native");
486
+ function getReferrer() {
487
+ try {
488
+ return new URL((0, import_react_native9.getSchemeUri)()).searchParams.get("referrer");
489
+ } catch {
490
+ return null;
491
+ }
492
+ }
493
+
494
+ // src/AppsInTossModule/native-modules/ads/googleAdMobV2.ts
505
495
  function loadAppsInTossAdMob(params) {
506
496
  if (!loadAppsInTossAdMob.isSupported()) {
507
497
  params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE2));
508
498
  return import_es_toolkit2.noop;
509
499
  }
510
500
  const { onEvent, onError, options } = params;
511
- const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod("loadAppsInTossAdmob", options, {
512
- onSuccess: (result) => onEvent({ type: "loaded", data: result }),
513
- onError
514
- });
501
+ const referrer = getReferrer();
502
+ const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
503
+ "loadAppsInTossAdmob",
504
+ { ...options, referrer },
505
+ {
506
+ onSuccess: (result) => onEvent({ type: "loaded", data: result }),
507
+ onError
508
+ }
509
+ );
515
510
  return unregisterCallbacks;
516
511
  }
517
512
  function showAppsInTossAdMob(params) {
@@ -520,28 +515,33 @@ function showAppsInTossAdMob(params) {
520
515
  return import_es_toolkit2.noop;
521
516
  }
522
517
  const { onEvent, onError, options } = params;
523
- const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod("showAppsInTossAdmob", options, {
524
- onAdClicked: () => {
525
- onEvent({ type: "clicked" });
526
- },
527
- onAdDismissed: () => {
528
- onEvent({ type: "dismissed" });
529
- },
530
- onAdFailedToShow: () => {
531
- onEvent({ type: "failedToShow" });
532
- },
533
- onAdImpression: () => {
534
- onEvent({ type: "impression" });
535
- },
536
- onAdShow: () => {
537
- onEvent({ type: "show" });
538
- },
539
- onUserEarnedReward: (data) => {
540
- onEvent({ type: "userEarnedReward", data });
541
- },
542
- onSuccess: () => onEvent({ type: "requested" }),
543
- onError
544
- });
518
+ const referrer = getReferrer();
519
+ const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
520
+ "showAppsInTossAdmob",
521
+ { ...options, referrer },
522
+ {
523
+ onAdClicked: () => {
524
+ onEvent({ type: "clicked" });
525
+ },
526
+ onAdDismissed: () => {
527
+ onEvent({ type: "dismissed" });
528
+ },
529
+ onAdFailedToShow: () => {
530
+ onEvent({ type: "failedToShow" });
531
+ },
532
+ onAdImpression: () => {
533
+ onEvent({ type: "impression" });
534
+ },
535
+ onAdShow: () => {
536
+ onEvent({ type: "show" });
537
+ },
538
+ onUserEarnedReward: (data) => {
539
+ onEvent({ type: "userEarnedReward", data });
540
+ },
541
+ onSuccess: () => onEvent({ type: "requested" }),
542
+ onError
543
+ }
544
+ );
545
545
  return unregisterCallbacks;
546
546
  }
547
547
  var ANDROID_GOOGLE_AD_MOB_SUPPORTED_VERSION2 = "5.227.0";
@@ -734,15 +734,80 @@ async function getTossShareLink(path) {
734
734
  }
735
735
 
736
736
  // src/AppsInTossModule/native-modules/iap.ts
737
- async function createOneTimePurchaseOrder(params) {
738
- const isSupported = isMinVersionSupported({
737
+ var import_es_toolkit3 = require("es-toolkit");
738
+ function iapCreateOneTimePurchaseOrder(params) {
739
+ const sku = params.sku ?? params.productId;
740
+ return AppsInTossModule.iapCreateOneTimePurchaseOrder({ productId: sku });
741
+ }
742
+ function processProductGrant(params) {
743
+ return AppsInTossModule.processProductGrant({ orderId: params.orderId, isProductGranted: params.isProductGranted });
744
+ }
745
+ function requestOneTimePurchase(params) {
746
+ const { options, onEvent, onError } = params;
747
+ const sku = options.sku ?? options.productId;
748
+ const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
749
+ "requestOneTimePurchase",
750
+ { sku },
751
+ {
752
+ onPurchased: (params2) => {
753
+ onEvent({ type: "purchased", data: params2 });
754
+ },
755
+ onSuccess: (result) => {
756
+ onEvent({ type: "success", data: result });
757
+ },
758
+ onError: (error) => {
759
+ onError(error);
760
+ }
761
+ }
762
+ );
763
+ return unregisterCallbacks;
764
+ }
765
+ function createOneTimePurchaseOrder(params) {
766
+ const isIAPSupported = isMinVersionSupported({
739
767
  android: "5.219.0",
740
768
  ios: "5.219.0"
741
769
  });
742
- if (!isSupported) {
743
- return;
770
+ if (!isIAPSupported) {
771
+ return import_es_toolkit3.noop;
744
772
  }
745
- return AppsInTossModule.iapCreateOneTimePurchaseOrder(params);
773
+ const isProcessProductGrantSupported = isMinVersionSupported({
774
+ android: "5.231.1",
775
+ ios: "5.230.0"
776
+ });
777
+ const { options, onEvent, onError } = params;
778
+ const sku = options.sku ?? options.productId;
779
+ if (!isProcessProductGrantSupported) {
780
+ const v1 = () => {
781
+ AppsInTossModule.iapCreateOneTimePurchaseOrder({ productId: sku }).then((response) => {
782
+ Promise.resolve(options.processProductGrant({ orderId: response.orderId })).then(() => {
783
+ onEvent({ type: "success", data: response });
784
+ }).catch((error) => {
785
+ onError(error);
786
+ });
787
+ }).catch((error) => {
788
+ onError(error);
789
+ });
790
+ return import_es_toolkit3.noop;
791
+ };
792
+ return v1();
793
+ }
794
+ const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
795
+ "requestOneTimePurchase",
796
+ { sku },
797
+ {
798
+ onPurchased: async (params2) => {
799
+ const isProductGranted = await options.processProductGrant(params2);
800
+ await AppsInTossModule.processProductGrant({ orderId: params2.orderId, isProductGranted });
801
+ },
802
+ onSuccess: (result) => {
803
+ onEvent({ type: "success", data: result });
804
+ },
805
+ onError: (error) => {
806
+ onError(error);
807
+ }
808
+ }
809
+ );
810
+ return unregisterCallbacks;
746
811
  }
747
812
  async function getProductItemList() {
748
813
  const isSupported = isMinVersionSupported({
@@ -754,9 +819,31 @@ async function getProductItemList() {
754
819
  }
755
820
  return AppsInTossModule.iapGetProductItemList({});
756
821
  }
822
+ async function getPendingOrders() {
823
+ const isSupported = isMinVersionSupported({
824
+ android: "5.231.0",
825
+ ios: "5.231.0"
826
+ });
827
+ if (!isSupported) {
828
+ return;
829
+ }
830
+ return AppsInTossModule.getPendingOrders({});
831
+ }
832
+ async function getCompletedOrRefundedOrders(params) {
833
+ const isSupported = isMinVersionSupported({
834
+ android: "5.231.0",
835
+ ios: "5.231.0"
836
+ });
837
+ if (!isSupported) {
838
+ return;
839
+ }
840
+ return AppsInTossModule.getCompletedOrRefundedOrders(params ?? { key: null });
841
+ }
757
842
  var IAP = {
758
843
  createOneTimePurchaseOrder,
759
- getProductItemList
844
+ getProductItemList,
845
+ getPendingOrders,
846
+ getCompletedOrRefundedOrders
760
847
  };
761
848
 
762
849
  // src/AppsInTossModule/native-modules/saveBase64Data.ts
@@ -808,7 +895,7 @@ var Storage = {
808
895
  };
809
896
 
810
897
  // src/AppsInTossModule/native-modules/openGameCenterLeaderboard.ts
811
- var import_react_native11 = require("@granite-js/react-native");
898
+ var import_react_native10 = require("@granite-js/react-native");
812
899
 
813
900
  // src/AppsInTossModule/constants.ts
814
901
  var GAME_CENTER_MIN_VERSION = {
@@ -828,7 +915,7 @@ async function openGameCenterLeaderboard() {
828
915
  const url = new URL("servicetoss://game-center/leaderboard?_navbar=hide");
829
916
  url.searchParams.set("appName", appName);
830
917
  url.searchParams.set("referrer", `appsintoss.${appName}`);
831
- return (0, import_react_native11.openURL)(url.toString());
918
+ return (0, import_react_native10.openURL)(url.toString());
832
919
  }
833
920
 
834
921
  // src/AppsInTossModule/native-modules/getGameCenterGameProfile.ts
@@ -901,8 +988,8 @@ function onVisibilityChangedByTransparentServiceWeb(eventParams) {
901
988
  }
902
989
 
903
990
  // src/BedrockModule/native-modules/natives/BedrockModule.ts
904
- var import_react_native12 = require("react-native");
905
- var BedrockModule = import_react_native12.NativeModules.BedrockModule;
991
+ var import_react_native11 = require("react-native");
992
+ var BedrockModule = import_react_native11.NativeModules.BedrockModule;
906
993
 
907
994
  // src/BedrockModule/native-modules/natives/closeView.ts
908
995
  async function closeView() {
@@ -910,10 +997,10 @@ async function closeView() {
910
997
  }
911
998
 
912
999
  // src/BedrockModule/native-modules/natives/getLocale.ts
913
- var import_react_native13 = require("react-native");
1000
+ var import_react_native12 = require("react-native");
914
1001
  function getLocale() {
915
1002
  const locale = BedrockModule?.DeviceInfo?.locale ?? "ko-KR";
916
- if (import_react_native13.Platform.OS === "android") {
1003
+ if (import_react_native12.Platform.OS === "android") {
917
1004
  return replaceUnderbarToHypen(locale);
918
1005
  }
919
1006
  return locale;
@@ -923,7 +1010,7 @@ function replaceUnderbarToHypen(locale) {
923
1010
  }
924
1011
 
925
1012
  // src/BedrockModule/native-modules/natives/getSchemeUri.ts
926
- function getSchemeUri() {
1013
+ function getSchemeUri2() {
927
1014
  return BedrockModule.schemeUri;
928
1015
  }
929
1016
 
@@ -961,24 +1048,24 @@ async function setIosSwipeGestureEnabled(options) {
961
1048
  }
962
1049
 
963
1050
  // src/BedrockModule/native-modules/natives/openURL.ts
964
- var import_react_native14 = require("react-native");
1051
+ var import_react_native13 = require("react-native");
965
1052
  function openURL2(url) {
966
- return import_react_native14.Linking.openURL(url);
1053
+ return import_react_native13.Linking.openURL(url);
967
1054
  }
968
1055
 
969
1056
  // src/BedrockModule/native-modules/natives/getPlatformOS.ts
970
- var import_react_native15 = require("react-native");
1057
+ var import_react_native14 = require("react-native");
971
1058
  function getPlatformOS() {
972
- return import_react_native15.Platform.OS;
1059
+ return import_react_native14.Platform.OS;
973
1060
  }
974
1061
 
975
1062
  // src/BedrockModule/native-modules/core/BedrockCoreModule.ts
976
- var import_react_native16 = require("react-native");
977
- var BedrockCoreModule = import_react_native16.NativeModules.BedrockCoreModule;
1063
+ var import_react_native15 = require("react-native");
1064
+ var BedrockCoreModule = import_react_native15.NativeModules.BedrockCoreModule;
978
1065
 
979
1066
  // src/AppsInTossModule/native-modules/tossCore.ts
980
- var import_react_native17 = require("react-native");
981
- var TossCoreModule = import_react_native17.NativeModules.TossCoreModule;
1067
+ var import_react_native16 = require("react-native");
1068
+ var TossCoreModule = import_react_native16.NativeModules.TossCoreModule;
982
1069
  function tossCoreEventLog(params) {
983
1070
  const supported = isMinVersionSupported({ ios: "5.210.0", android: "5.210.0" });
984
1071
  const isSandbox = getOperationalEnvironment() === "sandbox";
@@ -1030,11 +1117,14 @@ var INTERNAL__module = {
1030
1117
  getSchemeUri,
1031
1118
  getTossAppVersion,
1032
1119
  getTossShareLink,
1120
+ iapCreateOneTimePurchaseOrder,
1033
1121
  isMinVersionSupported,
1034
1122
  onVisibilityChangedByTransparentServiceWeb,
1035
1123
  openCamera,
1036
1124
  openGameCenterLeaderboard,
1037
1125
  openURL,
1126
+ processProductGrant,
1127
+ requestOneTimePurchase,
1038
1128
  saveBase64Data,
1039
1129
  setClipboardText,
1040
1130
  setDeviceOrientation,