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.
- package/LICENSE +20 -0
- package/README.md +130 -0
- package/android/build.gradle +91 -0
- package/android/generated/java/com/rateapp/NativeRateAppSpec.java +38 -0
- package/android/generated/jni/CMakeLists.txt +49 -0
- package/android/generated/jni/RNRateAppSpec-generated.cpp +32 -0
- package/android/generated/jni/RNRateAppSpec.h +31 -0
- package/android/generated/jni/react/renderer/components/RNRateAppSpec/ComponentDescriptors.cpp +22 -0
- package/android/generated/jni/react/renderer/components/RNRateAppSpec/ComponentDescriptors.h +24 -0
- package/android/generated/jni/react/renderer/components/RNRateAppSpec/EventEmitters.cpp +16 -0
- package/android/generated/jni/react/renderer/components/RNRateAppSpec/EventEmitters.h +17 -0
- package/android/generated/jni/react/renderer/components/RNRateAppSpec/Props.cpp +19 -0
- package/android/generated/jni/react/renderer/components/RNRateAppSpec/Props.h +18 -0
- package/android/generated/jni/react/renderer/components/RNRateAppSpec/RNRateAppSpecJSI-generated.cpp +26 -0
- package/android/generated/jni/react/renderer/components/RNRateAppSpec/RNRateAppSpecJSI.h +67 -0
- package/android/generated/jni/react/renderer/components/RNRateAppSpec/ShadowNodes.cpp +17 -0
- package/android/generated/jni/react/renderer/components/RNRateAppSpec/ShadowNodes.h +23 -0
- package/android/generated/jni/react/renderer/components/RNRateAppSpec/States.cpp +16 -0
- package/android/generated/jni/react/renderer/components/RNRateAppSpec/States.h +19 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +1 -0
- package/android/src/main/AndroidManifestNew.xml +2 -0
- package/android/src/main/java/com/rateapp/RateAppModule.kt +46 -0
- package/android/src/main/java/com/rateapp/RateAppPackage.kt +34 -0
- package/android/src/newarch/RateAppSpec.kt +7 -0
- package/android/src/oldarch/RateAppSpec.kt +11 -0
- package/ios/RateApp.h +12 -0
- package/ios/RateApp.mm +39 -0
- package/ios/generated/RNRateAppSpec/ComponentDescriptors.cpp +22 -0
- package/ios/generated/RNRateAppSpec/ComponentDescriptors.h +24 -0
- package/ios/generated/RNRateAppSpec/EventEmitters.cpp +16 -0
- package/ios/generated/RNRateAppSpec/EventEmitters.h +17 -0
- package/ios/generated/RNRateAppSpec/Props.cpp +19 -0
- package/ios/generated/RNRateAppSpec/Props.h +18 -0
- package/ios/generated/RNRateAppSpec/RCTComponentViewHelpers.h +18 -0
- package/ios/generated/RNRateAppSpec/RNRateAppSpec-generated.mm +29 -0
- package/ios/generated/RNRateAppSpec/RNRateAppSpec.h +50 -0
- package/ios/generated/RNRateAppSpec/ShadowNodes.cpp +17 -0
- package/ios/generated/RNRateAppSpec/ShadowNodes.h +23 -0
- package/ios/generated/RNRateAppSpec/States.cpp +16 -0
- package/ios/generated/RNRateAppSpec/States.h +19 -0
- package/ios/generated/RNRateAppSpecJSI-generated.cpp +26 -0
- package/ios/generated/RNRateAppSpecJSI.h +67 -0
- package/lib/commonjs/NativeRateApp.js +9 -0
- package/lib/commonjs/NativeRateApp.js.map +1 -0
- package/lib/commonjs/constants.js +15 -0
- package/lib/commonjs/constants.js.map +1 -0
- package/lib/commonjs/index.js +120 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/types.js +14 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/module/NativeRateApp.js +5 -0
- package/lib/module/NativeRateApp.js.map +1 -0
- package/lib/module/constants.js +11 -0
- package/lib/module/constants.js.map +1 -0
- package/lib/module/index.js +88 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/types.js +10 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/setupJest.d.ts +1 -0
- package/lib/typescript/commonjs/setupJest.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/NativeRateApp.d.ts +7 -0
- package/lib/typescript/commonjs/src/NativeRateApp.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/constants.d.ts +4 -0
- package/lib/typescript/commonjs/src/constants.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +26 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types.d.ts +22 -0
- package/lib/typescript/commonjs/src/types.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/setupJest.d.ts +1 -0
- package/lib/typescript/module/setupJest.d.ts.map +1 -0
- package/lib/typescript/module/src/NativeRateApp.d.ts +7 -0
- package/lib/typescript/module/src/NativeRateApp.d.ts.map +1 -0
- package/lib/typescript/module/src/constants.d.ts +4 -0
- package/lib/typescript/module/src/constants.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +26 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -0
- package/lib/typescript/module/src/types.d.ts +22 -0
- package/lib/typescript/module/src/types.d.ts.map +1 -0
- package/package.json +156 -0
- package/react-native-rate-app.podspec +23 -0
- package/src/NativeRateApp.ts +8 -0
- package/src/constants.ts +10 -0
- package/src/index.tsx +91 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|