react-native-rate-app 0.0.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.
Files changed (87) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +130 -0
  3. package/android/build.gradle +91 -0
  4. package/android/generated/java/com/rateapp/NativeRateAppSpec.java +38 -0
  5. package/android/generated/jni/CMakeLists.txt +49 -0
  6. package/android/generated/jni/RNRateAppSpec-generated.cpp +32 -0
  7. package/android/generated/jni/RNRateAppSpec.h +31 -0
  8. package/android/generated/jni/react/renderer/components/RNRateAppSpec/ComponentDescriptors.cpp +22 -0
  9. package/android/generated/jni/react/renderer/components/RNRateAppSpec/ComponentDescriptors.h +24 -0
  10. package/android/generated/jni/react/renderer/components/RNRateAppSpec/EventEmitters.cpp +16 -0
  11. package/android/generated/jni/react/renderer/components/RNRateAppSpec/EventEmitters.h +17 -0
  12. package/android/generated/jni/react/renderer/components/RNRateAppSpec/Props.cpp +19 -0
  13. package/android/generated/jni/react/renderer/components/RNRateAppSpec/Props.h +18 -0
  14. package/android/generated/jni/react/renderer/components/RNRateAppSpec/RNRateAppSpecJSI-generated.cpp +26 -0
  15. package/android/generated/jni/react/renderer/components/RNRateAppSpec/RNRateAppSpecJSI.h +67 -0
  16. package/android/generated/jni/react/renderer/components/RNRateAppSpec/ShadowNodes.cpp +17 -0
  17. package/android/generated/jni/react/renderer/components/RNRateAppSpec/ShadowNodes.h +23 -0
  18. package/android/generated/jni/react/renderer/components/RNRateAppSpec/States.cpp +16 -0
  19. package/android/generated/jni/react/renderer/components/RNRateAppSpec/States.h +19 -0
  20. package/android/gradle.properties +5 -0
  21. package/android/src/main/AndroidManifest.xml +1 -0
  22. package/android/src/main/AndroidManifestNew.xml +2 -0
  23. package/android/src/main/java/com/rateapp/RateAppModule.kt +46 -0
  24. package/android/src/main/java/com/rateapp/RateAppPackage.kt +34 -0
  25. package/android/src/newarch/RateAppSpec.kt +7 -0
  26. package/android/src/oldarch/RateAppSpec.kt +11 -0
  27. package/ios/RateApp.h +12 -0
  28. package/ios/RateApp.mm +39 -0
  29. package/ios/generated/RNRateAppSpec/ComponentDescriptors.cpp +22 -0
  30. package/ios/generated/RNRateAppSpec/ComponentDescriptors.h +24 -0
  31. package/ios/generated/RNRateAppSpec/EventEmitters.cpp +16 -0
  32. package/ios/generated/RNRateAppSpec/EventEmitters.h +17 -0
  33. package/ios/generated/RNRateAppSpec/Props.cpp +19 -0
  34. package/ios/generated/RNRateAppSpec/Props.h +18 -0
  35. package/ios/generated/RNRateAppSpec/RCTComponentViewHelpers.h +18 -0
  36. package/ios/generated/RNRateAppSpec/RNRateAppSpec-generated.mm +29 -0
  37. package/ios/generated/RNRateAppSpec/RNRateAppSpec.h +50 -0
  38. package/ios/generated/RNRateAppSpec/ShadowNodes.cpp +17 -0
  39. package/ios/generated/RNRateAppSpec/ShadowNodes.h +23 -0
  40. package/ios/generated/RNRateAppSpec/States.cpp +16 -0
  41. package/ios/generated/RNRateAppSpec/States.h +19 -0
  42. package/ios/generated/RNRateAppSpecJSI-generated.cpp +26 -0
  43. package/ios/generated/RNRateAppSpecJSI.h +67 -0
  44. package/lib/commonjs/NativeRateApp.js +9 -0
  45. package/lib/commonjs/NativeRateApp.js.map +1 -0
  46. package/lib/commonjs/constants.js +15 -0
  47. package/lib/commonjs/constants.js.map +1 -0
  48. package/lib/commonjs/index.js +120 -0
  49. package/lib/commonjs/index.js.map +1 -0
  50. package/lib/commonjs/types.js +14 -0
  51. package/lib/commonjs/types.js.map +1 -0
  52. package/lib/module/NativeRateApp.js +5 -0
  53. package/lib/module/NativeRateApp.js.map +1 -0
  54. package/lib/module/constants.js +11 -0
  55. package/lib/module/constants.js.map +1 -0
  56. package/lib/module/index.js +88 -0
  57. package/lib/module/index.js.map +1 -0
  58. package/lib/module/types.js +10 -0
  59. package/lib/module/types.js.map +1 -0
  60. package/lib/typescript/commonjs/package.json +1 -0
  61. package/lib/typescript/commonjs/setupJest.d.ts +1 -0
  62. package/lib/typescript/commonjs/setupJest.d.ts.map +1 -0
  63. package/lib/typescript/commonjs/src/NativeRateApp.d.ts +7 -0
  64. package/lib/typescript/commonjs/src/NativeRateApp.d.ts.map +1 -0
  65. package/lib/typescript/commonjs/src/constants.d.ts +4 -0
  66. package/lib/typescript/commonjs/src/constants.d.ts.map +1 -0
  67. package/lib/typescript/commonjs/src/index.d.ts +26 -0
  68. package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
  69. package/lib/typescript/commonjs/src/types.d.ts +22 -0
  70. package/lib/typescript/commonjs/src/types.d.ts.map +1 -0
  71. package/lib/typescript/module/package.json +1 -0
  72. package/lib/typescript/module/setupJest.d.ts +1 -0
  73. package/lib/typescript/module/setupJest.d.ts.map +1 -0
  74. package/lib/typescript/module/src/NativeRateApp.d.ts +7 -0
  75. package/lib/typescript/module/src/NativeRateApp.d.ts.map +1 -0
  76. package/lib/typescript/module/src/constants.d.ts +4 -0
  77. package/lib/typescript/module/src/constants.d.ts.map +1 -0
  78. package/lib/typescript/module/src/index.d.ts +26 -0
  79. package/lib/typescript/module/src/index.d.ts.map +1 -0
  80. package/lib/typescript/module/src/types.d.ts +22 -0
  81. package/lib/typescript/module/src/types.d.ts.map +1 -0
  82. package/package.json +156 -0
  83. package/react-native-rate-app.podspec +23 -0
  84. package/src/NativeRateApp.ts +8 -0
  85. package/src/constants.ts +10 -0
  86. package/src/index.tsx +91 -0
  87. package/src/types.ts +22 -0
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {
7
+ requestReview: true,
8
+ openStoreForReview: true,
9
+ getAndroidMarketUrl: true
10
+ };
11
+ exports.requestReview = exports.openStoreForReview = exports.getAndroidMarketUrl = exports.default = void 0;
12
+ var _reactNative = require("react-native");
13
+ var _NativeRateApp = _interopRequireDefault(require("./NativeRateApp.js"));
14
+ var _constants = require("./constants.js");
15
+ Object.keys(_constants).forEach(function (key) {
16
+ if (key === "default" || key === "__esModule") return;
17
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
18
+ if (key in exports && exports[key] === _constants[key]) return;
19
+ Object.defineProperty(exports, key, {
20
+ enumerable: true,
21
+ get: function () {
22
+ return _constants[key];
23
+ }
24
+ });
25
+ });
26
+ var _types = require("./types.js");
27
+ Object.keys(_types).forEach(function (key) {
28
+ if (key === "default" || key === "__esModule") return;
29
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
30
+ if (key in exports && exports[key] === _types[key]) return;
31
+ Object.defineProperty(exports, key, {
32
+ enumerable: true,
33
+ get: function () {
34
+ return _types[key];
35
+ }
36
+ });
37
+ });
38
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
39
+ /**
40
+ * Custom error for rate app operations
41
+ */
42
+ class RateAppError extends Error {
43
+ constructor(message) {
44
+ super(message);
45
+ this.name = "RateAppError";
46
+ }
47
+ }
48
+ const RateApp = {
49
+ /**
50
+ * Requests a review from the user.
51
+ * @returns A promise that resolves to a boolean indicating whether the review was successfully requested.
52
+ */
53
+ async requestReview() {
54
+ try {
55
+ return await _NativeRateApp.default.requestReview();
56
+ } catch (error) {
57
+ throw new RateAppError(`Failed to request review: ${error}`);
58
+ }
59
+ },
60
+ /**
61
+ * Opens the store listing for the app.
62
+ * @param props The properties for the store listing.
63
+ * @returns A promise that resolves to a boolean indicating whether the store listing was successfully opened.
64
+ */
65
+ async openStoreForReview({
66
+ iOSAppId,
67
+ androidPackageName,
68
+ androidMarket = _types.AndroidMarket.GOOGLE
69
+ }) {
70
+ const isIOS = _reactNative.Platform.OS === "ios";
71
+ const ismacOS = _reactNative.Platform.OS === "macos";
72
+ const isAndroid = _reactNative.Platform.OS === "android";
73
+ let url = "";
74
+ if (isIOS || ismacOS) {
75
+ if (!iOSAppId) {
76
+ throw new RateAppError("iOSAppId is required for iOS and macOS");
77
+ }
78
+ url = `${_constants.IOS_REVIEW_URL}${iOSAppId}?action=write-review`;
79
+ } else if (isAndroid) {
80
+ if (!androidPackageName) {
81
+ throw new RateAppError("androidPackageName is required for Android");
82
+ }
83
+ url = this.getAndroidMarketUrl(androidMarket, androidPackageName);
84
+ } else {
85
+ throw new RateAppError(`Unsupported platform: ${_reactNative.Platform.OS}`);
86
+ }
87
+ try {
88
+ const canOpenURL = await _reactNative.Linking.canOpenURL(url);
89
+ if (canOpenURL) {
90
+ await _reactNative.Linking.openURL(url);
91
+ }
92
+ return canOpenURL;
93
+ } catch (error) {
94
+ throw new RateAppError(`Failed to open store for review: ${error}`);
95
+ }
96
+ },
97
+ /**
98
+ * Gets the URL for the Android market.
99
+ * @param androidMarket The market where the app's store listing should be opened on Android.
100
+ * @param androidPackageName The package name of the app to open the store listing for on Android.
101
+ * @returns The URL for the Android market.
102
+ */
103
+ getAndroidMarketUrl(androidMarket, androidPackageName) {
104
+ const urlTemplate = _constants.ANDROID_MARKET_URLS[androidMarket];
105
+ if (!urlTemplate) {
106
+ throw new RateAppError(`Unsupported Android market: ${androidMarket}`);
107
+ }
108
+ return urlTemplate.replace("{packageName}", androidPackageName);
109
+ }
110
+ };
111
+ const {
112
+ requestReview,
113
+ openStoreForReview,
114
+ getAndroidMarketUrl
115
+ } = RateApp;
116
+ exports.getAndroidMarketUrl = getAndroidMarketUrl;
117
+ exports.openStoreForReview = openStoreForReview;
118
+ exports.requestReview = requestReview;
119
+ var _default = exports.default = RateApp;
120
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_NativeRateApp","_interopRequireDefault","_constants","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_types","e","__esModule","default","RateAppError","Error","constructor","message","name","RateApp","requestReview","NativeRateApp","error","openStoreForReview","iOSAppId","androidPackageName","androidMarket","AndroidMarket","GOOGLE","isIOS","Platform","OS","ismacOS","isAndroid","url","IOS_REVIEW_URL","getAndroidMarketUrl","canOpenURL","Linking","openURL","urlTemplate","ANDROID_MARKET_URLS","replace","_default"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AndroidMarket = void 0;
7
+ let AndroidMarket = exports.AndroidMarket = /*#__PURE__*/function (AndroidMarket) {
8
+ AndroidMarket["GOOGLE"] = "google";
9
+ AndroidMarket["AMAZON"] = "amazon";
10
+ AndroidMarket["SAMSUNG"] = "samsung";
11
+ AndroidMarket["HUAWEI"] = "huawei";
12
+ return AndroidMarket;
13
+ }({});
14
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AndroidMarket","exports"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;;;;;IAAYA,aAAa,GAAAC,OAAA,CAAAD,aAAA,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ import { TurboModuleRegistry } from "react-native";
4
+ export default TurboModuleRegistry.getEnforcing("RateApp");
5
+ //# sourceMappingURL=NativeRateApp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeRateApp.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAMlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,SAAS,CAAC","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import { AndroidMarket } from "./types.js";
4
+ export const IOS_REVIEW_URL = "itms-apps://apps.apple.com/app/id";
5
+ export const ANDROID_MARKET_URLS = {
6
+ [AndroidMarket.GOOGLE]: "market://details?id={packageName}",
7
+ [AndroidMarket.AMAZON]: "amzn://apps/android?p={packageName}",
8
+ [AndroidMarket.SAMSUNG]: "samsungapps://ProductDetail/{packageName}",
9
+ [AndroidMarket.HUAWEI]: "appmarket://details?id={packageName}"
10
+ };
11
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AndroidMarket","IOS_REVIEW_URL","ANDROID_MARKET_URLS","GOOGLE","AMAZON","SAMSUNG","HUAWEI"],"sourceRoot":"../../src","sources":["constants.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,YAAS;AAEvC,OAAO,MAAMC,cAAc,GAAG,mCAAmC;AAEjE,OAAO,MAAMC,mBAAkD,GAAG;EAChE,CAACF,aAAa,CAACG,MAAM,GAAG,mCAAmC;EAC3D,CAACH,aAAa,CAACI,MAAM,GAAG,qCAAqC;EAC7D,CAACJ,aAAa,CAACK,OAAO,GAAG,2CAA2C;EACpE,CAACL,aAAa,CAACM,MAAM,GAAG;AAC1B,CAAC","ignoreList":[]}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+
3
+ import { Linking, Platform } from "react-native";
4
+ import NativeRateApp from "./NativeRateApp.js";
5
+ import { ANDROID_MARKET_URLS, IOS_REVIEW_URL } from "./constants.js";
6
+ import { AndroidMarket } from "./types.js";
7
+
8
+ /**
9
+ * Custom error for rate app operations
10
+ */
11
+ class RateAppError extends Error {
12
+ constructor(message) {
13
+ super(message);
14
+ this.name = "RateAppError";
15
+ }
16
+ }
17
+ const RateApp = {
18
+ /**
19
+ * Requests a review from the user.
20
+ * @returns A promise that resolves to a boolean indicating whether the review was successfully requested.
21
+ */
22
+ async requestReview() {
23
+ try {
24
+ return await NativeRateApp.requestReview();
25
+ } catch (error) {
26
+ throw new RateAppError(`Failed to request review: ${error}`);
27
+ }
28
+ },
29
+ /**
30
+ * Opens the store listing for the app.
31
+ * @param props The properties for the store listing.
32
+ * @returns A promise that resolves to a boolean indicating whether the store listing was successfully opened.
33
+ */
34
+ async openStoreForReview({
35
+ iOSAppId,
36
+ androidPackageName,
37
+ androidMarket = AndroidMarket.GOOGLE
38
+ }) {
39
+ const isIOS = Platform.OS === "ios";
40
+ const ismacOS = Platform.OS === "macos";
41
+ const isAndroid = Platform.OS === "android";
42
+ let url = "";
43
+ if (isIOS || ismacOS) {
44
+ if (!iOSAppId) {
45
+ throw new RateAppError("iOSAppId is required for iOS and macOS");
46
+ }
47
+ url = `${IOS_REVIEW_URL}${iOSAppId}?action=write-review`;
48
+ } else if (isAndroid) {
49
+ if (!androidPackageName) {
50
+ throw new RateAppError("androidPackageName is required for Android");
51
+ }
52
+ url = this.getAndroidMarketUrl(androidMarket, androidPackageName);
53
+ } else {
54
+ throw new RateAppError(`Unsupported platform: ${Platform.OS}`);
55
+ }
56
+ try {
57
+ const canOpenURL = await Linking.canOpenURL(url);
58
+ if (canOpenURL) {
59
+ await Linking.openURL(url);
60
+ }
61
+ return canOpenURL;
62
+ } catch (error) {
63
+ throw new RateAppError(`Failed to open store for review: ${error}`);
64
+ }
65
+ },
66
+ /**
67
+ * Gets the URL for the Android market.
68
+ * @param androidMarket The market where the app's store listing should be opened on Android.
69
+ * @param androidPackageName The package name of the app to open the store listing for on Android.
70
+ * @returns The URL for the Android market.
71
+ */
72
+ getAndroidMarketUrl(androidMarket, androidPackageName) {
73
+ const urlTemplate = ANDROID_MARKET_URLS[androidMarket];
74
+ if (!urlTemplate) {
75
+ throw new RateAppError(`Unsupported Android market: ${androidMarket}`);
76
+ }
77
+ return urlTemplate.replace("{packageName}", androidPackageName);
78
+ }
79
+ };
80
+ export * from "./types.js";
81
+ export * from "./constants.js";
82
+ export const {
83
+ requestReview,
84
+ openStoreForReview,
85
+ getAndroidMarketUrl
86
+ } = RateApp;
87
+ export default RateApp;
88
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Linking","Platform","NativeRateApp","ANDROID_MARKET_URLS","IOS_REVIEW_URL","AndroidMarket","RateAppError","Error","constructor","message","name","RateApp","requestReview","error","openStoreForReview","iOSAppId","androidPackageName","androidMarket","GOOGLE","isIOS","OS","ismacOS","isAndroid","url","getAndroidMarketUrl","canOpenURL","openURL","urlTemplate","replace"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,OAAO,EAAEC,QAAQ,QAAQ,cAAc;AAChD,OAAOC,aAAa,MAAM,oBAAiB;AAC3C,SAASC,mBAAmB,EAAEC,cAAc,QAAQ,gBAAa;AACjE,SAASC,aAAa,QAAsC,YAAS;;AAErE;AACA;AACA;AACA,MAAMC,YAAY,SAASC,KAAK,CAAC;EAC/BC,WAAWA,CAACC,OAAe,EAAE;IAC3B,KAAK,CAACA,OAAO,CAAC;IACd,IAAI,CAACC,IAAI,GAAG,cAAc;EAC5B;AACF;AAEA,MAAMC,OAAO,GAAG;EACd;AACF;AACA;AACA;EACE,MAAMC,aAAaA,CAAA,EAAqB;IACtC,IAAI;MACF,OAAO,MAAMV,aAAa,CAACU,aAAa,CAAC,CAAC;IAC5C,CAAC,CAAC,OAAOC,KAAK,EAAE;MACd,MAAM,IAAIP,YAAY,CAAC,6BAA6BO,KAAK,EAAE,CAAC;IAC9D;EACF,CAAC;EAED;AACF;AACA;AACA;AACA;EACE,MAAMC,kBAAkBA,CAAC;IACvBC,QAAQ;IACRC,kBAAkB;IAClBC,aAAa,GAAGZ,aAAa,CAACa;EACP,CAAC,EAAoB;IAC5C,MAAMC,KAAK,GAAGlB,QAAQ,CAACmB,EAAE,KAAK,KAAK;IACnC,MAAMC,OAAO,GAAGpB,QAAQ,CAACmB,EAAE,KAAK,OAAO;IACvC,MAAME,SAAS,GAAGrB,QAAQ,CAACmB,EAAE,KAAK,SAAS;IAC3C,IAAIG,GAAG,GAAG,EAAE;IAEZ,IAAIJ,KAAK,IAAIE,OAAO,EAAE;MACpB,IAAI,CAACN,QAAQ,EAAE;QACb,MAAM,IAAIT,YAAY,CAAC,wCAAwC,CAAC;MAClE;MACAiB,GAAG,GAAG,GAAGnB,cAAc,GAAGW,QAAQ,sBAAsB;IAC1D,CAAC,MAAM,IAAIO,SAAS,EAAE;MACpB,IAAI,CAACN,kBAAkB,EAAE;QACvB,MAAM,IAAIV,YAAY,CAAC,4CAA4C,CAAC;MACtE;MACAiB,GAAG,GAAG,IAAI,CAACC,mBAAmB,CAACP,aAAa,EAAED,kBAAkB,CAAC;IACnE,CAAC,MAAM;MACL,MAAM,IAAIV,YAAY,CAAC,yBAAyBL,QAAQ,CAACmB,EAAE,EAAE,CAAC;IAChE;IAEA,IAAI;MACF,MAAMK,UAAU,GAAG,MAAMzB,OAAO,CAACyB,UAAU,CAACF,GAAG,CAAC;MAChD,IAAIE,UAAU,EAAE;QACd,MAAMzB,OAAO,CAAC0B,OAAO,CAACH,GAAG,CAAC;MAC5B;MACA,OAAOE,UAAU;IACnB,CAAC,CAAC,OAAOZ,KAAK,EAAE;MACd,MAAM,IAAIP,YAAY,CAAC,oCAAoCO,KAAK,EAAE,CAAC;IACrE;EACF,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEW,mBAAmBA,CACjBP,aAA4B,EAC5BD,kBAA0B,EAClB;IACR,MAAMW,WAAW,GAAGxB,mBAAmB,CAACc,aAAa,CAAC;IACtD,IAAI,CAACU,WAAW,EAAE;MAChB,MAAM,IAAIrB,YAAY,CAAC,+BAA+BW,aAAa,EAAE,CAAC;IACxE;IACA,OAAOU,WAAW,CAACC,OAAO,CAAC,eAAe,EAAEZ,kBAAkB,CAAC;EACjE;AACF,CAAC;AAED,cAAc,YAAS;AACvB,cAAc,gBAAa;AAC3B,OAAO,MAAM;EAAEJ,aAAa;EAAEE,kBAAkB;EAAEU;AAAoB,CAAC,GACrEb,OAAO;AACT,eAAeA,OAAO","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ export let AndroidMarket = /*#__PURE__*/function (AndroidMarket) {
4
+ AndroidMarket["GOOGLE"] = "google";
5
+ AndroidMarket["AMAZON"] = "amazon";
6
+ AndroidMarket["SAMSUNG"] = "samsung";
7
+ AndroidMarket["HUAWEI"] = "huawei";
8
+ return AndroidMarket;
9
+ }({});
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AndroidMarket"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;AAAA,WAAYA,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=setupJest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupJest.d.ts","sourceRoot":"","sources":["../../../setupJest.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { TurboModule } from "react-native";
2
+ export interface Spec extends TurboModule {
3
+ requestReview(): Promise<boolean>;
4
+ }
5
+ declare const _default: Spec;
6
+ export default _default;
7
+ //# sourceMappingURL=NativeRateApp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeRateApp.d.ts","sourceRoot":"","sources":["../../../../src/NativeRateApp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACnC;;AAED,wBAAiE"}
@@ -0,0 +1,4 @@
1
+ import { AndroidMarket } from "./types";
2
+ export declare const IOS_REVIEW_URL = "itms-apps://apps.apple.com/app/id";
3
+ export declare const ANDROID_MARKET_URLS: Record<AndroidMarket, string>;
4
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,eAAO,MAAM,cAAc,sCAAsC,CAAC;AAElE,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAK7D,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { AndroidMarket, type OpenStoreForReviewProps } from "./types";
2
+ declare const RateApp: {
3
+ /**
4
+ * Requests a review from the user.
5
+ * @returns A promise that resolves to a boolean indicating whether the review was successfully requested.
6
+ */
7
+ requestReview(): Promise<boolean>;
8
+ /**
9
+ * Opens the store listing for the app.
10
+ * @param props The properties for the store listing.
11
+ * @returns A promise that resolves to a boolean indicating whether the store listing was successfully opened.
12
+ */
13
+ openStoreForReview({ iOSAppId, androidPackageName, androidMarket, }: OpenStoreForReviewProps): Promise<boolean>;
14
+ /**
15
+ * Gets the URL for the Android market.
16
+ * @param androidMarket The market where the app's store listing should be opened on Android.
17
+ * @param androidPackageName The package name of the app to open the store listing for on Android.
18
+ * @returns The URL for the Android market.
19
+ */
20
+ getAndroidMarketUrl(androidMarket: AndroidMarket, androidPackageName: string): string;
21
+ };
22
+ export * from "./types";
23
+ export * from "./constants";
24
+ export declare const requestReview: () => Promise<boolean>, openStoreForReview: ({ iOSAppId, androidPackageName, androidMarket, }: OpenStoreForReviewProps) => Promise<boolean>, getAndroidMarketUrl: (androidMarket: AndroidMarket, androidPackageName: string) => string;
25
+ export default RateApp;
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,KAAK,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAYtE,QAAA,MAAM,OAAO;IACX;;;OAGG;qBACoB,OAAO,CAAC,OAAO,CAAC;IAQvC;;;;OAIG;yEAKA,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC;IA+B7C;;;;;OAKG;uCAEc,aAAa,sBACR,MAAM,GACzB,MAAM;CAOV,CAAC;AAEF,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,eAAO,MAAQ,aAAa,QApEH,OAAO,CAAC,OAAO,CAAC,EAoEX,kBAAkB,qDAnD3C,uBAAuB,KAAG,OAAO,CAAC,OAAO,CAAC,EAmDG,mBAAmB,kBAblD,aAAa,sBACR,MAAM,KACzB,MAYI,CAAC;AACV,eAAe,OAAO,CAAC"}
@@ -0,0 +1,22 @@
1
+ export declare enum AndroidMarket {
2
+ GOOGLE = "google",
3
+ AMAZON = "amazon",
4
+ SAMSUNG = "samsung",
5
+ HUAWEI = "huawei"
6
+ }
7
+ export interface OpenStoreForReviewProps {
8
+ /**
9
+ * The App Store ID of the app to open the store listing for on iOS.
10
+ */
11
+ iOSAppId?: string;
12
+ /**
13
+ * The package name of the app to open the store listing for on Android.
14
+ */
15
+ androidPackageName?: string;
16
+ /**
17
+ * The market where the app's store listing should be opened on Android.
18
+ * @default AndroidMarket.GOOGLE
19
+ */
20
+ androidMarket?: AndroidMarket;
21
+ }
22
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IACvB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B"}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=setupJest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupJest.d.ts","sourceRoot":"","sources":["../../../setupJest.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { TurboModule } from "react-native";
2
+ export interface Spec extends TurboModule {
3
+ requestReview(): Promise<boolean>;
4
+ }
5
+ declare const _default: Spec;
6
+ export default _default;
7
+ //# sourceMappingURL=NativeRateApp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeRateApp.d.ts","sourceRoot":"","sources":["../../../../src/NativeRateApp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACnC;;AAED,wBAAiE"}
@@ -0,0 +1,4 @@
1
+ import { AndroidMarket } from "./types";
2
+ export declare const IOS_REVIEW_URL = "itms-apps://apps.apple.com/app/id";
3
+ export declare const ANDROID_MARKET_URLS: Record<AndroidMarket, string>;
4
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,eAAO,MAAM,cAAc,sCAAsC,CAAC;AAElE,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAK7D,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { AndroidMarket, type OpenStoreForReviewProps } from "./types";
2
+ declare const RateApp: {
3
+ /**
4
+ * Requests a review from the user.
5
+ * @returns A promise that resolves to a boolean indicating whether the review was successfully requested.
6
+ */
7
+ requestReview(): Promise<boolean>;
8
+ /**
9
+ * Opens the store listing for the app.
10
+ * @param props The properties for the store listing.
11
+ * @returns A promise that resolves to a boolean indicating whether the store listing was successfully opened.
12
+ */
13
+ openStoreForReview({ iOSAppId, androidPackageName, androidMarket, }: OpenStoreForReviewProps): Promise<boolean>;
14
+ /**
15
+ * Gets the URL for the Android market.
16
+ * @param androidMarket The market where the app's store listing should be opened on Android.
17
+ * @param androidPackageName The package name of the app to open the store listing for on Android.
18
+ * @returns The URL for the Android market.
19
+ */
20
+ getAndroidMarketUrl(androidMarket: AndroidMarket, androidPackageName: string): string;
21
+ };
22
+ export * from "./types";
23
+ export * from "./constants";
24
+ export declare const requestReview: () => Promise<boolean>, openStoreForReview: ({ iOSAppId, androidPackageName, androidMarket, }: OpenStoreForReviewProps) => Promise<boolean>, getAndroidMarketUrl: (androidMarket: AndroidMarket, androidPackageName: string) => string;
25
+ export default RateApp;
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,KAAK,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAYtE,QAAA,MAAM,OAAO;IACX;;;OAGG;qBACoB,OAAO,CAAC,OAAO,CAAC;IAQvC;;;;OAIG;yEAKA,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC;IA+B7C;;;;;OAKG;uCAEc,aAAa,sBACR,MAAM,GACzB,MAAM;CAOV,CAAC;AAEF,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,eAAO,MAAQ,aAAa,QApEH,OAAO,CAAC,OAAO,CAAC,EAoEX,kBAAkB,qDAnD3C,uBAAuB,KAAG,OAAO,CAAC,OAAO,CAAC,EAmDG,mBAAmB,kBAblD,aAAa,sBACR,MAAM,KACzB,MAYI,CAAC;AACV,eAAe,OAAO,CAAC"}
@@ -0,0 +1,22 @@
1
+ export declare enum AndroidMarket {
2
+ GOOGLE = "google",
3
+ AMAZON = "amazon",
4
+ SAMSUNG = "samsung",
5
+ HUAWEI = "huawei"
6
+ }
7
+ export interface OpenStoreForReviewProps {
8
+ /**
9
+ * The App Store ID of the app to open the store listing for on iOS.
10
+ */
11
+ iOSAppId?: string;
12
+ /**
13
+ * The package name of the app to open the store listing for on Android.
14
+ */
15
+ androidPackageName?: string;
16
+ /**
17
+ * The market where the app's store listing should be opened on Android.
18
+ * @default AndroidMarket.GOOGLE
19
+ */
20
+ androidMarket?: AndroidMarket;
21
+ }
22
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IACvB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B"}
package/package.json ADDED
@@ -0,0 +1,156 @@
1
+ {
2
+ "name": "react-native-rate-app",
3
+ "version": "0.0.1",
4
+ "description": "In-App Rating on Android & iOS",
5
+ "source": "./src/index.tsx",
6
+ "main": "./lib/commonjs/index.js",
7
+ "module": "./lib/module/index.js",
8
+ "exports": {
9
+ ".": {
10
+ "import": {
11
+ "types": "./lib/typescript/module/src/index.d.ts",
12
+ "default": "./lib/module/index.js"
13
+ },
14
+ "require": {
15
+ "types": "./lib/typescript/commonjs/src/index.d.ts",
16
+ "default": "./lib/commonjs/index.js"
17
+ }
18
+ }
19
+ },
20
+ "files": [
21
+ "src",
22
+ "lib",
23
+ "android",
24
+ "ios",
25
+ "cpp",
26
+ "*.podspec",
27
+ "!ios/build",
28
+ "!android/build",
29
+ "!android/gradle",
30
+ "!android/gradlew",
31
+ "!android/gradlew.bat",
32
+ "!android/local.properties",
33
+ "!**/__tests__",
34
+ "!**/__fixtures__",
35
+ "!**/__mocks__",
36
+ "!**/.*"
37
+ ],
38
+ "scripts": {
39
+ "example": "yarn workspace react-native-rate-app-example",
40
+ "test": "jest",
41
+ "lint": "npx biome check ./src && npx biome format ./src && yarn lint:example",
42
+ "lint:example": "npx biome check ./example/src && npx biome format ./example/src",
43
+ "lint:fix": "npx biome lint --write ./src && npx biome format --write ./src && npx biome check --write ./src && yarn lint:fix:example",
44
+ "lint:fix:example": "npx biome lint --write ./example/src && npx biome format --write ./example/src && npx biome check --write ./example/src",
45
+ "clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib",
46
+ "prepare": "bob build",
47
+ "release": "semantic-release"
48
+ },
49
+ "keywords": [
50
+ "react-native",
51
+ "ios",
52
+ "android"
53
+ ],
54
+ "repository": {
55
+ "type": "git",
56
+ "url": "git+https://github.com/huextrat/react-native-rate-app.git"
57
+ },
58
+ "author": "Hugo EXTRAT <extrat.h@gmail.com> (https://github.com/huextrat)",
59
+ "license": "MIT",
60
+ "bugs": {
61
+ "url": "https://github.com/huextrat/react-native-rate-app/issues"
62
+ },
63
+ "homepage": "https://github.com/huextrat/react-native-rate-app#readme",
64
+ "publishConfig": {
65
+ "registry": "https://registry.npmjs.org/"
66
+ },
67
+ "devDependencies": {
68
+ "@biomejs/biome": "1.9.1",
69
+ "@commitlint/cli": "19.5.0",
70
+ "@commitlint/config-conventional": "19.5.0",
71
+ "@semantic-release/changelog": "6.0.3",
72
+ "@semantic-release/git": "10.0.1",
73
+ "@types/jest": "29.5.13",
74
+ "@types/react": "18.3.7",
75
+ "commitlint": "19.5.0",
76
+ "del-cli": "5.1.0",
77
+ "husky": "9.1.6",
78
+ "jest": "29.7.0",
79
+ "react": "18.3.1",
80
+ "react-native": "0.75.3",
81
+ "react-native-builder-bob": "0.30.2",
82
+ "semantic-release": "24.1.1",
83
+ "turbo": "2.1.2",
84
+ "typescript": "5.6.2"
85
+ },
86
+ "resolutions": {
87
+ "@types/react": "18.3.7"
88
+ },
89
+ "peerDependencies": {
90
+ "react": "*",
91
+ "react-native": "*"
92
+ },
93
+ "workspaces": [
94
+ "example"
95
+ ],
96
+ "packageManager": "yarn@4.5.0",
97
+ "jest": {
98
+ "preset": "react-native",
99
+ "modulePathIgnorePatterns": [
100
+ "<rootDir>/example/node_modules",
101
+ "<rootDir>/lib/"
102
+ ],
103
+ "setupFilesAfterEnv": [
104
+ "<rootDir>/setupJest.ts"
105
+ ]
106
+ },
107
+ "commitlint": {
108
+ "extends": [
109
+ "@commitlint/config-conventional"
110
+ ]
111
+ },
112
+ "react-native-builder-bob": {
113
+ "source": "src",
114
+ "output": "lib",
115
+ "targets": [
116
+ "codegen",
117
+ [
118
+ "commonjs",
119
+ {
120
+ "esm": true
121
+ }
122
+ ],
123
+ [
124
+ "module",
125
+ {
126
+ "esm": true
127
+ }
128
+ ],
129
+ [
130
+ "typescript",
131
+ {
132
+ "project": "tsconfig.build.json",
133
+ "esm": true
134
+ }
135
+ ]
136
+ ]
137
+ },
138
+ "codegenConfig": {
139
+ "name": "RNRateAppSpec",
140
+ "type": "all",
141
+ "jsSrcsDir": "src",
142
+ "outputDir": {
143
+ "ios": "ios/generated",
144
+ "android": "android/generated"
145
+ },
146
+ "android": {
147
+ "javaPackageName": "com.rateapp"
148
+ },
149
+ "includesGeneratedCode": true
150
+ },
151
+ "create-react-native-library": {
152
+ "type": "module-mixed",
153
+ "languages": "kotlin-objc",
154
+ "version": "0.41.2"
155
+ }
156
+ }
@@ -0,0 +1,23 @@
1
+ require "json"
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
+
5
+ Pod::Spec.new do |s|
6
+ s.name = "react-native-rate-app"
7
+ s.version = package["version"]
8
+ s.summary = package["description"]
9
+ s.homepage = package["homepage"]
10
+ s.license = package["license"]
11
+ s.authors = package["author"]
12
+
13
+ s.platforms = { :ios => "14.0" }
14
+ s.source = { :git => "https://github.com/huextrat/react-native-rate-app.git", :tag => "#{s.version}" }
15
+
16
+ s.source_files = "ios/**/*.{h,m,mm,cpp}"
17
+
18
+ if defined?(install_modules_dependencies()) != nil
19
+ install_modules_dependencies(s)
20
+ else
21
+ s.dependency "React-Core"
22
+ end
23
+ end