mirror of
https://github.com/danielsogl/awesome-cordova-plugins.git
synced 2026-02-16 00:00:02 +08:00
Compare commits
201 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3d8cdde7eb | ||
|
|
e1b7aca3a9 | ||
|
|
9bdb2fac9d | ||
|
|
41c6bcafe6 | ||
|
|
d55d1d6f7f | ||
|
|
aed25a6642 | ||
|
|
daf04566a1 | ||
|
|
4cb2aee62b | ||
|
|
63124f35fd | ||
|
|
632dec28ae | ||
|
|
50e05349ec | ||
|
|
fd27136de7 | ||
|
|
2833da472a | ||
|
|
c5ceba1aae | ||
|
|
e1a490357d | ||
|
|
959a9135e4 | ||
|
|
fc0a238229 | ||
|
|
eeb68f1706 | ||
|
|
bceb428690 | ||
|
|
242240c711 | ||
|
|
e9911aa4ad | ||
|
|
04798c7354 | ||
|
|
3aedde55d8 | ||
|
|
92140cd2db | ||
|
|
184986f06b | ||
|
|
2ce2725b2a | ||
|
|
3d8455ae35 | ||
|
|
bf7ba9bd01 | ||
|
|
0883240f60 | ||
|
|
b6f340ae82 | ||
|
|
0612aef725 | ||
|
|
4bf7ba6085 | ||
|
|
707d40bd83 | ||
|
|
b4e0764d71 | ||
|
|
c1d7ce13dd | ||
|
|
999853eb32 | ||
|
|
dfd6714331 | ||
|
|
898c68bb5e | ||
|
|
9250d49970 | ||
|
|
2397ef9d60 | ||
|
|
dbd8b4c080 | ||
|
|
1ba6f97082 | ||
|
|
c2f45616ac | ||
|
|
603d6943ef | ||
|
|
3226f76ef9 | ||
|
|
874be0bb04 | ||
|
|
9e6705df7f | ||
|
|
7c46d8c2fc | ||
|
|
7d3ddf89ae | ||
|
|
19b3e8f521 | ||
|
|
c14ea31a8a | ||
|
|
707ce1cad9 | ||
|
|
d33bcb0220 | ||
|
|
5df3de7dc0 | ||
|
|
d499a4db8d | ||
|
|
e2b25deff6 | ||
|
|
c3de8dfaba | ||
|
|
448e064012 | ||
|
|
6ef854f4f1 | ||
|
|
ea3150e99a | ||
|
|
3edd62e56c | ||
|
|
b63102a5fa | ||
|
|
df7ec0146c | ||
|
|
20878516b4 | ||
|
|
b166cc51ea | ||
|
|
543fa64b35 | ||
|
|
dcac00e7ad | ||
|
|
006570483d | ||
|
|
b7594e201b | ||
|
|
1396b61215 | ||
|
|
4f8779a969 | ||
|
|
7145afa24f | ||
|
|
66316d29fe | ||
|
|
7dcd6b27a0 | ||
|
|
b98393462d | ||
|
|
f9011c89c8 | ||
|
|
4b4b2c45a0 | ||
|
|
43bfeb487a | ||
|
|
accfba8a40 | ||
|
|
dc4183da07 | ||
|
|
b61b33987f | ||
|
|
39b4b85631 | ||
|
|
669dd02285 | ||
|
|
a3bd19769f | ||
|
|
ff3ef094e0 | ||
|
|
2933d40cdc | ||
|
|
874ae88ff4 | ||
|
|
a02ca715e9 | ||
|
|
336b3ff89b | ||
|
|
2aa73b5546 | ||
|
|
99cebcba0b | ||
|
|
6c99ec8033 | ||
|
|
a167bd85aa | ||
|
|
487acd603b | ||
|
|
fb4d2640c1 | ||
|
|
4468b520ad | ||
|
|
1a2dc3ee73 | ||
|
|
00a1674fd6 | ||
|
|
2b14bd979e | ||
|
|
fcd6d26727 | ||
|
|
f95003cbe1 | ||
|
|
8e5f2e5ab3 | ||
|
|
307477da78 | ||
|
|
f691883a29 | ||
|
|
0d5d4f30a9 | ||
|
|
1457a1698b | ||
|
|
bfd46eed16 | ||
|
|
3eff280127 | ||
|
|
8116ddd139 | ||
|
|
a6bcc9affd | ||
|
|
c0d8c99e8d | ||
|
|
fe9655ed84 | ||
|
|
41c034cc19 | ||
|
|
89631a9fa6 | ||
|
|
04db233b33 | ||
|
|
10d222dcea | ||
|
|
640da1b618 | ||
|
|
aecb0f9460 | ||
|
|
d077c48205 | ||
|
|
49d27e816c | ||
|
|
3699fa9b50 | ||
|
|
ab4f1f5bbe | ||
|
|
51006a76a0 | ||
|
|
8bab32173a | ||
|
|
3ef9593704 | ||
|
|
ffae843c0f | ||
|
|
33e4392b63 | ||
|
|
9acbb9fcd6 | ||
|
|
c1e1c5cb79 | ||
|
|
0c7cfeeeb8 | ||
|
|
a7830693af | ||
|
|
b60d5d4851 | ||
|
|
0c4aeddd1b | ||
|
|
667de5ba26 | ||
|
|
2dc7ee8916 | ||
|
|
2c2c1e482c | ||
|
|
7c419b48ad | ||
|
|
0b9717636c | ||
|
|
10ac9ff9de | ||
|
|
90d75af9d1 | ||
|
|
3b3f942ed5 | ||
|
|
9601a64227 | ||
|
|
22fd49b5d3 | ||
|
|
890129bfda | ||
|
|
6a9a871758 | ||
|
|
ac467c50ac | ||
|
|
267149b16f | ||
|
|
7047920a2a | ||
|
|
aad814fcf1 | ||
|
|
03d6b2373c | ||
|
|
d82e675442 | ||
|
|
1e84e23fd9 | ||
|
|
f3f12cb306 | ||
|
|
b3bd0a83c7 | ||
|
|
03e4f0e439 | ||
|
|
a73146648f | ||
|
|
d90724ef70 | ||
|
|
be0dc3dac4 | ||
|
|
a0a64da518 | ||
|
|
591ee87e05 | ||
|
|
8db1dbef71 | ||
|
|
73ae92d77c | ||
|
|
3c2753df64 | ||
|
|
9035476833 | ||
|
|
5f5e605e66 | ||
|
|
ea6746d134 | ||
|
|
753fa4a7a4 | ||
|
|
ff784a4377 | ||
|
|
0764e28408 | ||
|
|
0197c88a03 | ||
|
|
5825932e03 | ||
|
|
bccc8ac379 | ||
|
|
3eb382d438 | ||
|
|
ca9a702808 | ||
|
|
3f415f9bef | ||
|
|
0c6d1eabe2 | ||
|
|
61fecf511b | ||
|
|
2ac52822b8 | ||
|
|
229b62c10b | ||
|
|
9b4fd02fa5 | ||
|
|
d10777a33b | ||
|
|
4f26069ca6 | ||
|
|
40571e5c99 | ||
|
|
83194f616b | ||
|
|
b1f4df530a | ||
|
|
4297c3d43e | ||
|
|
95d495b468 | ||
|
|
f0989d1b96 | ||
|
|
c113417878 | ||
|
|
cedd6df423 | ||
|
|
4b14ce2eec | ||
|
|
27d380ef4b | ||
|
|
bd5bd7ea9d | ||
|
|
c6713862c5 | ||
|
|
3b32e19bf1 | ||
|
|
4092831754 | ||
|
|
c2fe5f8336 | ||
|
|
3f9067d090 | ||
|
|
36a4e81fe4 | ||
|
|
79cb478c26 | ||
|
|
b635ba99ea |
312
CHANGELOG.md
312
CHANGELOG.md
@@ -1,24 +1,74 @@
|
||||
# [5.0.0-beta.24](https://github.com/ionic-team/ionic-native/compare/v5.0.0-beta.23...v5.0.0-beta.24) (2019-01-20)
|
||||
# [5.1.0](https://github.com/ionic-team/ionic-native/compare/v5.0.0-beta.24...v5.1.0) (2019-02-14)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **bluetooth-le:** Fix typo in InitializeResult interface definition ([#2891](https://github.com/ionic-team/ionic-native/issues/2891)) ([b6f340a](https://github.com/ionic-team/ionic-native/commit/b6f340a))
|
||||
* **build:** fixed duplicate import identifiers ([3aedde5](https://github.com/ionic-team/ionic-native/commit/3aedde5))
|
||||
* **build:** remove wrong jsdoc ([63124f3](https://github.com/ionic-team/ionic-native/commit/63124f3))
|
||||
* **google-play-games-services:** correct Cordova plugin name typo ([#2920](https://github.com/ionic-team/ionic-native/issues/2920)) ([fc0a238](https://github.com/ionic-team/ionic-native/commit/fc0a238)), closes [ionic-team/ionic-docs#424](https://github.com/ionic-team/ionic-docs/issues/424)
|
||||
* **http:** add 'legacy' as valid option to setSSLCertMode ([#2913](https://github.com/ionic-team/ionic-native/issues/2913)) ([e1a4903](https://github.com/ionic-team/ionic-native/commit/e1a4903)), closes [#2912](https://github.com/ionic-team/ionic-native/issues/2912)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **abbyy-rtr:** add new options ([#2915](https://github.com/ionic-team/ionic-native/issues/2915)) ([959a913](https://github.com/ionic-team/ionic-native/commit/959a913))
|
||||
* **app-launcher:** add plugin ([9bdb2fa](https://github.com/ionic-team/ionic-native/commit/9bdb2fa)), closes [#2889](https://github.com/ionic-team/ionic-native/issues/2889)
|
||||
* **clevertap:** update for latest CleverTap Cordova plugin ([#2931](https://github.com/ionic-team/ionic-native/issues/2931)) ([aed25a6](https://github.com/ionic-team/ionic-native/commit/aed25a6))
|
||||
* **firebase-crashlytics:** add plugin ([41c6bca](https://github.com/ionic-team/ionic-native/commit/41c6bca)), closes [#2889](https://github.com/ionic-team/ionic-native/issues/2889)
|
||||
* **http:** add sendRequest function ([#2910](https://github.com/ionic-team/ionic-native/issues/2910)) ([daf0456](https://github.com/ionic-team/ionic-native/commit/daf0456)), closes [#2824](https://github.com/ionic-team/ionic-native/issues/2824)
|
||||
* **luxand:** add plugin ([#2883](https://github.com/ionic-team/ionic-native/issues/2883)) ([632dec2](https://github.com/ionic-team/ionic-native/commit/632dec2))
|
||||
* **magnetometer:** add plugin ([#2917](https://github.com/ionic-team/ionic-native/issues/2917)) ([fd27136](https://github.com/ionic-team/ionic-native/commit/fd27136))
|
||||
* **photo-viewer:** add new params ([#2895](https://github.com/ionic-team/ionic-native/issues/2895)) ([c5ceba1](https://github.com/ionic-team/ionic-native/commit/c5ceba1))
|
||||
* **quikkly:** add plugin([#2923](https://github.com/ionic-team/ionic-native/issues/2923)) ([2833da4](https://github.com/ionic-team/ionic-native/commit/2833da4))
|
||||
* **zoom:** add plugin ([#2916](https://github.com/ionic-team/ionic-native/issues/2916)) ([50e0534](https://github.com/ionic-team/ionic-native/commit/50e0534))
|
||||
|
||||
|
||||
|
||||
# [5.0.0-beta.24](https://github.com/ionic-team/ionic-native/compare/v4.20.0...v5.0.0-beta.24) (2019-01-20)
|
||||
|
||||
|
||||
|
||||
# [4.20.0](https://github.com/ionic-team/ionic-native/compare/v5.0.0-beta.23...v4.20.0) (2019-01-20)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **bluetooth-le:** Fix typo in interface definition ([#2881](https://github.com/ionic-team/ionic-native/issues/2881)) ([c2f4561](https://github.com/ionic-team/ionic-native/commit/c2f4561))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **background-geolocation:** add v3 functions and interfaces ([#2393](https://github.com/ionic-team/ionic-native/issues/2393)) ([1ba6f97](https://github.com/ionic-team/ionic-native/commit/1ba6f97))
|
||||
* **lottie-splash-screen:** add new plugin ([#2880](https://github.com/ionic-team/ionic-native/issues/2880)) ([603d694](https://github.com/ionic-team/ionic-native/commit/603d694))
|
||||
* **web-intent:** Add missing type info ([#2878](https://github.com/ionic-team/ionic-native/issues/2878)) ([3226f76](https://github.com/ionic-team/ionic-native/commit/3226f76))
|
||||
|
||||
|
||||
|
||||
# [5.0.0-beta.23](https://github.com/ionic-team/ionic-native/compare/v5.0.0-beta.22...v5.0.0-beta.23) (2019-01-19)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add analytics-firebase plugin ([e374b52](https://github.com/ionic-team/ionic-native/commit/e374b52))
|
||||
* **audio-management:** add plugin for audio streams ([#2877](https://github.com/ionic-team/ionic-native/issues/2877)) ([34ecd29](https://github.com/ionic-team/ionic-native/commit/34ecd29))
|
||||
* **blinkid:** add plugin ([#2833](https://github.com/ionic-team/ionic-native/issues/2833)) ([8e405cc](https://github.com/ionic-team/ionic-native/commit/8e405cc))
|
||||
|
||||
|
||||
|
||||
# [5.0.0-beta.22](https://github.com/ionic-team/ionic-native/compare/v5.0.0-beta.21...v5.0.0-beta.22) (2018-12-01)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **local-notifications:** update type of the every property ([#2825](https://github.com/ionic-team/ionic-native/issues/2825)) ([31e4058](https://github.com/ionic-team/ionic-native/commit/31e4058))
|
||||
* **health:** fix typos ([#2831](https://github.com/ionic-team/ionic-native/issues/2831)) ([ea3150e](https://github.com/ionic-team/ionic-native/commit/ea3150e))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **adjust:** add adjust sdk plugin ([#2872](https://github.com/ionic-team/ionic-native/issues/2872)) ([9e6705d](https://github.com/ionic-team/ionic-native/commit/9e6705d))
|
||||
* **admob:** add plugin ([#2864](https://github.com/ionic-team/ionic-native/issues/2864)) ([707ce1c](https://github.com/ionic-team/ionic-native/commit/707ce1c))
|
||||
* **analytics-firebase:** add plugin ([#2862](https://github.com/ionic-team/ionic-native/issues/2862)) ([5df3de7](https://github.com/ionic-team/ionic-native/commit/5df3de7))
|
||||
* **audio-management:** add plugin for audio streams ([#2877](https://github.com/ionic-team/ionic-native/issues/2877)) ([34ecd29](https://github.com/ionic-team/ionic-native/commit/34ecd29))
|
||||
* **baidu-push:** add plugin ([#2838](https://github.com/ionic-team/ionic-native/issues/2838)) ([c3de8df](https://github.com/ionic-team/ionic-native/commit/c3de8df))
|
||||
* **firebase:** add clearAllNotifications method ([#2867](https://github.com/ionic-team/ionic-native/issues/2867)) ([7c46d8c](https://github.com/ionic-team/ionic-native/commit/7c46d8c))
|
||||
* add analytics-firebase plugin ([e374b52](https://github.com/ionic-team/ionic-native/commit/e374b52))
|
||||
* **blinkid:** add plugin ([#2833](https://github.com/ionic-team/ionic-native/issues/2833)) ([8e405cc](https://github.com/ionic-team/ionic-native/commit/8e405cc))
|
||||
* **gao-de-location:** add plugin ([#2857](https://github.com/ionic-team/ionic-native/issues/2857)) ([e2b25de](https://github.com/ionic-team/ionic-native/commit/e2b25de))
|
||||
* **in-app-browser:** add 'beforeload' as option ([#2863](https://github.com/ionic-team/ionic-native/issues/2863)) ([d33bcb0](https://github.com/ionic-team/ionic-native/commit/d33bcb0))
|
||||
|
||||
|
||||
|
||||
# [5.0.0-beta.22](https://github.com/ionic-team/ionic-native/compare/v4.18.0...v5.0.0-beta.22) (2018-12-01)
|
||||
|
||||
|
||||
### chore
|
||||
@@ -26,18 +76,74 @@
|
||||
* update deps ([649dca1](https://github.com/ionic-team/ionic-native/commit/649dca1))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **downloader:** add plugin ([#2820](https://github.com/ionic-team/ionic-native/issues/2820)) ([b9e9aa1](https://github.com/ionic-team/ionic-native/commit/b9e9aa1))
|
||||
|
||||
|
||||
### BREAKING CHANGES
|
||||
|
||||
* Requires Angular 7.1 and TypeScript 3.1
|
||||
|
||||
|
||||
|
||||
# [5.0.0-beta.21](https://github.com/ionic-team/ionic-native/compare/v5.0.0-beta.20...v5.0.0-beta.21) (2018-09-25)
|
||||
# [4.18.0](https://github.com/ionic-team/ionic-native/compare/v4.17.0...v4.18.0) (2018-12-01)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **local-notifications:** update type of the every property ([#2825](https://github.com/ionic-team/ionic-native/issues/2825)) ([b166cc5](https://github.com/ionic-team/ionic-native/commit/b166cc5))
|
||||
* **local-notifications:** update type of the every property ([#2825](https://github.com/ionic-team/ionic-native/issues/2825)) ([31e4058](https://github.com/ionic-team/ionic-native/commit/31e4058))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **downloader:** add plugin ([#2820](https://github.com/ionic-team/ionic-native/issues/2820)) ([0065704](https://github.com/ionic-team/ionic-native/commit/0065704))
|
||||
* **downloader:** add plugin ([#2820](https://github.com/ionic-team/ionic-native/issues/2820)) ([b9e9aa1](https://github.com/ionic-team/ionic-native/commit/b9e9aa1))
|
||||
* **line-login:** add loginWeb function ([#2810](https://github.com/ionic-team/ionic-native/issues/2810)) ([7145afa](https://github.com/ionic-team/ionic-native/commit/7145afa))
|
||||
|
||||
|
||||
|
||||
# [4.17.0](https://github.com/ionic-team/ionic-native/compare/v4.16.0...v4.17.0) (2018-11-02)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **contacts plugin:** add the rawId parameter ([#2799](https://github.com/ionic-team/ionic-native/issues/2799)) ([b61b339](https://github.com/ionic-team/ionic-native/commit/b61b339))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **crashlytics:** allow user to set userIdentifier for crashlytics ([#2792](https://github.com/ionic-team/ionic-native/issues/2792)) ([a3bd197](https://github.com/ionic-team/ionic-native/commit/a3bd197))
|
||||
* **firebase-authentication:** add plugin ([#2797](https://github.com/ionic-team/ionic-native/issues/2797)) ([43bfeb4](https://github.com/ionic-team/ionic-native/commit/43bfeb4))
|
||||
* **line-login:** add plugin ([#2782](https://github.com/ionic-team/ionic-native/issues/2782)) ([dc4183d](https://github.com/ionic-team/ionic-native/commit/dc4183d))
|
||||
|
||||
|
||||
|
||||
# [4.16.0](https://github.com/ionic-team/ionic-native/compare/v5.0.0-beta.21...v4.16.0) (2018-10-17)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **local-notifications:** add missing functions ([#2779](https://github.com/ionic-team/ionic-native/issues/2779)) ([336b3ff](https://github.com/ionic-team/ionic-native/commit/336b3ff)), closes [#2778](https://github.com/ionic-team/ionic-native/issues/2778)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **admob-plus:** Add admob-plus ([#2753](https://github.com/ionic-team/ionic-native/issues/2753)) ([6c99ec8](https://github.com/ionic-team/ionic-native/commit/6c99ec8))
|
||||
* **firebase-messaging:** add revokeToken function ([#2763](https://github.com/ionic-team/ionic-native/issues/2763)) ([1a2dc3e](https://github.com/ionic-team/ionic-native/commit/1a2dc3e))
|
||||
* **lastCam:** add plugin ([#2759](https://github.com/ionic-team/ionic-native/issues/2759)) ([99cebcb](https://github.com/ionic-team/ionic-native/commit/99cebcb))
|
||||
* **nfc:** add NFC readerMode ([#2777](https://github.com/ionic-team/ionic-native/issues/2777)) ([2aa73b5](https://github.com/ionic-team/ionic-native/commit/2aa73b5))
|
||||
* **speechkit:** plugin updated with voice parameter ([#2761](https://github.com/ionic-team/ionic-native/issues/2761)) ([4468b52](https://github.com/ionic-team/ionic-native/commit/4468b52))
|
||||
|
||||
|
||||
|
||||
# [5.0.0-beta.21](https://github.com/ionic-team/ionic-native/compare/v4.15.0...v5.0.0-beta.21) (2018-09-25)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **keyboard:** add missing property ([fcd6d26](https://github.com/ionic-team/ionic-native/commit/fcd6d26))
|
||||
* **keyboard:** include the mode parameter in setResizeMode() ([8d57df3](https://github.com/ionic-team/ionic-native/commit/8d57df3))
|
||||
|
||||
|
||||
|
||||
# [4.15.0](https://github.com/ionic-team/ionic-native/compare/v5.0.0-beta.20...v4.15.0) (2018-09-25)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
@@ -45,7 +151,7 @@
|
||||
* **admob-free:** fix duplicated class ([95b9262](https://github.com/ionic-team/ionic-native/commit/95b9262))
|
||||
* **bluetooth-le:** Removed a wrong cordova decorator param ([#2733](https://github.com/ionic-team/ionic-native/issues/2733)) ([cbeb413](https://github.com/ionic-team/ionic-native/commit/cbeb413))
|
||||
* **build:** fix macos mojave build errors ([358474d](https://github.com/ionic-team/ionic-native/commit/358474d))
|
||||
* **keyboard:** include the mode parameter in setResizeMode() ([8d57df3](https://github.com/ionic-team/ionic-native/commit/8d57df3))
|
||||
* **keyboard:** use cordova-plugin-ionic-keyboard ([#2743](https://github.com/ionic-team/ionic-native/issues/2743)) ([1457a16](https://github.com/ionic-team/ionic-native/commit/1457a16)), closes [#2306](https://github.com/ionic-team/ionic-native/issues/2306)
|
||||
* **keyboard:** use cordova-plugin-ionic-keyboard ([#2743](https://github.com/ionic-team/ionic-native/issues/2743)) ([fbf7463](https://github.com/ionic-team/ionic-native/commit/fbf7463)), closes [#2306](https://github.com/ionic-team/ionic-native/issues/2306)
|
||||
* **printer:** import getPromise ([15cd285](https://github.com/ionic-team/ionic-native/commit/15cd285))
|
||||
* **screenshot:** import getPromise ([e661f2e](https://github.com/ionic-team/ionic-native/commit/e661f2e))
|
||||
@@ -53,6 +159,14 @@
|
||||
* **secure-storage:** import getPromise ([653f5a2](https://github.com/ionic-team/ionic-native/commit/653f5a2))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **plugins:** add AppleWallet ([#2740](https://github.com/ionic-team/ionic-native/issues/2740)) ([307477d](https://github.com/ionic-team/ionic-native/commit/307477d))
|
||||
* **plugins:** add web-server plugin ([#2726](https://github.com/ionic-team/ionic-native/issues/2726)) ([8116ddd](https://github.com/ionic-team/ionic-native/commit/8116ddd))
|
||||
* **siri-shortcuts:** Add clear option for the activated shortcut ([#2734](https://github.com/ionic-team/ionic-native/issues/2734)) ([3eff280](https://github.com/ionic-team/ionic-native/commit/3eff280))
|
||||
* **taptic-engine:** add missing functions and types ([a6bcc9a](https://github.com/ionic-team/ionic-native/commit/a6bcc9a))
|
||||
|
||||
|
||||
|
||||
# [5.0.0-beta.20](https://github.com/ionic-team/ionic-native/compare/v5.0.0-beta.19...v5.0.0-beta.20) (2018-09-18)
|
||||
|
||||
@@ -63,29 +177,145 @@
|
||||
|
||||
|
||||
|
||||
# [5.0.0-beta.19](https://github.com/ionic-team/ionic-native/compare/v5.0.0-beta.18...v5.0.0-beta.19) (2018-09-18)
|
||||
# [5.0.0-beta.19](https://github.com/ionic-team/ionic-native/compare/v4.14.0...v5.0.0-beta.19) (2018-09-18)
|
||||
|
||||
|
||||
|
||||
# [4.14.0](https://github.com/ionic-team/ionic-native/compare/v5.0.0-beta.18...v4.14.0) (2018-09-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **index-app-content:** fix lint ([2611061](https://github.com/ionic-team/ionic-native/commit/2611061))
|
||||
* **mobile-accessibility:** add correct pluginRef ([3699fa9](https://github.com/ionic-team/ionic-native/commit/3699fa9)), closes [#1860](https://github.com/ionic-team/ionic-native/issues/1860)
|
||||
* **ms-adal:** remove duplicate imports ([4803912](https://github.com/ionic-team/ionic-native/commit/4803912))
|
||||
* **onesignal:** add missing setLocationShared method ([#2723](https://github.com/ionic-team/ionic-native/issues/2723)) ([8bab321](https://github.com/ionic-team/ionic-native/commit/8bab321))
|
||||
* **push:** add missing Chanel options ([3ef9593](https://github.com/ionic-team/ionic-native/commit/3ef9593)), closes [#2712](https://github.com/ionic-team/ionic-native/issues/2712)
|
||||
* **web-intent:** add missing properties ([d077c48](https://github.com/ionic-team/ionic-native/commit/d077c48)), closes [#2701](https://github.com/ionic-team/ionic-native/issues/2701)
|
||||
* **web-intent:** fix lint ([9feefe8](https://github.com/ionic-team/ionic-native/commit/9feefe8))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
# [5.0.0-beta.18](https://github.com/ionic-team/ionic-native/compare/v5.0.0-beta.14...v5.0.0-beta.18) (2018-09-15)
|
||||
* **chooster:** add plugin ([04db233](https://github.com/ionic-team/ionic-native/commit/04db233)), closes [#2612](https://github.com/ionic-team/ionic-native/issues/2612)
|
||||
* **local-notifications:** add missing functions ([10d222d](https://github.com/ionic-team/ionic-native/commit/10d222d))
|
||||
* **onesignal:** add missing functions ([51006a7](https://github.com/ionic-team/ionic-native/commit/51006a7)), closes [#2504](https://github.com/ionic-team/ionic-native/issues/2504)
|
||||
|
||||
|
||||
|
||||
# [5.0.0-beta.18](https://github.com/ionic-team/ionic-native/compare/v4.13.0...v5.0.0-beta.18) (2018-09-15)
|
||||
|
||||
|
||||
|
||||
# [4.13.0](https://github.com/ionic-team/ionic-native/compare/v5.0.0-beta.17...v4.13.0) (2018-09-15)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **bluetooth-le:** Various methods fixes ([#2707](https://github.com/ionic-team/ionic-native/issues/2707)) ([7047920](https://github.com/ionic-team/ionic-native/commit/7047920))
|
||||
* **in-app-review:** Transfer Plugin to the correct folder ([#2688](https://github.com/ionic-team/ionic-native/issues/2688)) ([22fd49b](https://github.com/ionic-team/ionic-native/commit/22fd49b))
|
||||
* **ms-adal:** Update createAuthenticationContext ([#2705](https://github.com/ionic-team/ionic-native/issues/2705)) ([890129b](https://github.com/ionic-team/ionic-native/commit/890129b))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **appsflyer:** Added Appsflyer Cordova SDK as ionic native plugin ([#2690](https://github.com/ionic-team/ionic-native/issues/2690)) ([3b3f942](https://github.com/ionic-team/ionic-native/commit/3b3f942))
|
||||
* **branch-io:** Add branch.io attribution and invitation plugin ([#2691](https://github.com/ionic-team/ionic-native/issues/2691)) ([90d75af](https://github.com/ionic-team/ionic-native/commit/90d75af))
|
||||
* **calldirectory:** add log function ([#2708](https://github.com/ionic-team/ionic-native/issues/2708)) ([9601a64](https://github.com/ionic-team/ionic-native/commit/9601a64))
|
||||
* **janalytics:** add plugin ([#2711](https://github.com/ionic-team/ionic-native/issues/2711)) ([0b97176](https://github.com/ionic-team/ionic-native/commit/0b97176))
|
||||
* **local-notifications:** Added local additional local notification action fields ([#2713](https://github.com/ionic-team/ionic-native/issues/2713)) ([267149b](https://github.com/ionic-team/ionic-native/commit/267149b))
|
||||
* **mixpanel:** Update/add functions ([#2697](https://github.com/ionic-team/ionic-native/issues/2697)) ([ac467c5](https://github.com/ionic-team/ionic-native/commit/ac467c5))
|
||||
* **wechat:** add plugin ([#2716](https://github.com/ionic-team/ionic-native/issues/2716)) ([10ac9ff](https://github.com/ionic-team/ionic-native/commit/10ac9ff))
|
||||
|
||||
|
||||
|
||||
# [5.0.0-beta.17](https://github.com/ionic-team/ionic-native/compare/v5.0.0-beta.16...v5.0.0-beta.17) (2018-08-31)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **in-app-browser:** fix mandatory options ([#2684](https://github.com/ionic-team/ionic-native/issues/2684)) ([d82e675](https://github.com/ionic-team/ionic-native/commit/d82e675))
|
||||
|
||||
|
||||
|
||||
## [4.12.1](https://github.com/ionic-team/ionic-native/compare/v5.0.0-beta.15...v4.12.1) (2018-08-31)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **camera:** fixing builds ([c8d25a1](https://github.com/ionic-team/ionic-native/commit/c8d25a1))
|
||||
* **clevertap:** fix jsdoc ([e47a3e1](https://github.com/ionic-team/ionic-native/commit/e47a3e1))
|
||||
* **contacts:** remove double import of checkAvailability ([#2659](https://github.com/ionic-team/ionic-native/issues/2659)) ([1ad4cc1](https://github.com/ionic-team/ionic-native/commit/1ad4cc1))
|
||||
* **core:** wrapEventObservable ([#2660](https://github.com/ionic-team/ionic-native/issues/2660)) ([bd34581](https://github.com/ionic-team/ionic-native/commit/bd34581))
|
||||
* **open-native-settings:** allow supported input ([#2666](https://github.com/ionic-team/ionic-native/issues/2666)) ([be0dc3d](https://github.com/ionic-team/ionic-native/commit/be0dc3d))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **aes256:** Added new utility methods to generate secure key and secure IV ([#2675](https://github.com/ionic-team/ionic-native/issues/2675)) ([a731466](https://github.com/ionic-team/ionic-native/commit/a731466))
|
||||
* **in-app-browser:** Add missing InAppBrowserOptions-properties ([#2669](https://github.com/ionic-team/ionic-native/issues/2669)) ([d90724e](https://github.com/ionic-team/ionic-native/commit/d90724e))
|
||||
* **push:** Added voip property to IOSPushOptions ([#2681](https://github.com/ionic-team/ionic-native/issues/2681)) ([03e4f0e](https://github.com/ionic-team/ionic-native/commit/03e4f0e))
|
||||
|
||||
|
||||
|
||||
# [5.0.0-beta.15](https://github.com/ionic-team/ionic-native/compare/v4.12.0...v5.0.0-beta.15) (2018-08-25)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **contacts:** remove double import of checkAvailability ([#2659](https://github.com/ionic-team/ionic-native/issues/2659)) ([1ad4cc1](https://github.com/ionic-team/ionic-native/commit/1ad4cc1))
|
||||
* **extended-device-information:** fix wrong decorator ([5e9c92a](https://github.com/ionic-team/ionic-native/commit/5e9c92a))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **bluetooth-le:** add bluetooth-le plugin ([#2651](https://github.com/ionic-team/ionic-native/issues/2651)) ([591ee87](https://github.com/ionic-team/ionic-native/commit/591ee87))
|
||||
* **http:** add setSSLCertMode function ([8db1dbe](https://github.com/ionic-team/ionic-native/commit/8db1dbe))
|
||||
|
||||
|
||||
|
||||
# [4.12.0](https://github.com/ionic-team/ionic-native/compare/v4.11.0...v4.12.0) (2018-08-16)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **clevertap:** fix jsdoc ([e47a3e1](https://github.com/ionic-team/ionic-native/commit/e47a3e1))
|
||||
* **extended-device-information:** Fixed Memory Display Bug ([#2641](https://github.com/ionic-team/ionic-native/issues/2641)) ([2ac5282](https://github.com/ionic-team/ionic-native/commit/2ac5282))
|
||||
* **network:** bind listener to document instead of window ([#2622](https://github.com/ionic-team/ionic-native/issues/2622)) ([d10777a](https://github.com/ionic-team/ionic-native/commit/d10777a))
|
||||
* **photo-library:** interface missing includeVideos ([3f415f9](https://github.com/ionic-team/ionic-native/commit/3f415f9)), closes [#2624](https://github.com/ionic-team/ionic-native/issues/2624)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **fabric:** add fabric plugin ([#2618](https://github.com/ionic-team/ionic-native/issues/2618)) ([9b4fd02](https://github.com/ionic-team/ionic-native/commit/9b4fd02))
|
||||
* **local-notifications:** add new foreground property ([#2633](https://github.com/ionic-team/ionic-native/issues/2633)) ([229b62c](https://github.com/ionic-team/ionic-native/commit/229b62c))
|
||||
* **webengage:** add optional config with initialization ([#2637](https://github.com/ionic-team/ionic-native/issues/2637)) ([ca9a702](https://github.com/ionic-team/ionic-native/commit/ca9a702))
|
||||
|
||||
|
||||
|
||||
# [4.11.0](https://github.com/ionic-team/ionic-native/compare/v4.10.1...v4.11.0) (2018-07-29)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **http:** add correct return types for downloadFile and uploadFile ([4092831](https://github.com/ionic-team/ionic-native/commit/4092831)), closes [#2615](https://github.com/ionic-team/ionic-native/issues/2615)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **clevertap:** add CleverTap plugin ([#2609](https://github.com/ionic-team/ionic-native/issues/2609)) ([27d380e](https://github.com/ionic-team/ionic-native/commit/27d380e))
|
||||
* **facebook:** add getDeferredApplink function ([3b32e19](https://github.com/ionic-team/ionic-native/commit/3b32e19)), closes [#2510](https://github.com/ionic-team/ionic-native/issues/2510)
|
||||
* **webengage:** add webengage plugin ([#2604](https://github.com/ionic-team/ionic-native/issues/2604)) ([bd5bd7e](https://github.com/ionic-team/ionic-native/commit/bd5bd7e))
|
||||
|
||||
|
||||
|
||||
## [4.10.1](https://github.com/ionic-team/ionic-native/compare/v5.0.0-beta.14...v4.10.1) (2018-07-25)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **nfs:** Optional arguments for records like textRecord ([#2605](https://github.com/ionic-team/ionic-native/issues/2605)) ([b635ba9](https://github.com/ionic-team/ionic-native/commit/b635ba9))
|
||||
* **user-agent:** Plugin not installed ([#2607](https://github.com/ionic-team/ionic-native/issues/2607)) ([79cb478](https://github.com/ionic-team/ionic-native/commit/79cb478))
|
||||
|
||||
|
||||
|
||||
# [5.0.0-beta.14](https://github.com/ionic-team/ionic-native/compare/v4.10.0...v5.0.0-beta.14) (2018-07-18)
|
||||
|
||||
@@ -156,10 +386,6 @@
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* build errors ([f70eaea](https://github.com/ionic-team/ionic-native/commit/f70eaea))
|
||||
* fix lint ([b36a1f9](https://github.com/ionic-team/ionic-native/commit/b36a1f9))
|
||||
* fix more lint errors ([0b3d299](https://github.com/ionic-team/ionic-native/commit/0b3d299))
|
||||
* fix rxjs 6 imports ([e0b0687](https://github.com/ionic-team/ionic-native/commit/e0b0687))
|
||||
* **android-fingerprint-auth:** ensure ERRORS array is defined ([#2508](https://github.com/ionic-team/ionic-native/issues/2508)) ([714114d](https://github.com/ionic-team/ionic-native/commit/714114d))
|
||||
* **background-geolocation:** watchLocationMode returns observable ([#2547](https://github.com/ionic-team/ionic-native/issues/2547)) ([3f8a6f2](https://github.com/ionic-team/ionic-native/commit/3f8a6f2))
|
||||
* **calendar:** Fixes createCalendar parameter typing ([84e0aa1](https://github.com/ionic-team/ionic-native/commit/84e0aa1))
|
||||
@@ -168,7 +394,6 @@
|
||||
* **ibeacon:** correct Type {Region} in some params ([#2453](https://github.com/ionic-team/ionic-native/issues/2453)) ([300db62](https://github.com/ionic-team/ionic-native/commit/300db62))
|
||||
* **in-app-purchase-2:** fix ready method signature ([#2043](https://github.com/ionic-team/ionic-native/issues/2043)) ([a018381](https://github.com/ionic-team/ionic-native/commit/a018381))
|
||||
* **linting:** Fixing misc linting errors that typedoc complains about ([#2476](https://github.com/ionic-team/ionic-native/issues/2476)) ([d3c2859](https://github.com/ionic-team/ionic-native/commit/d3c2859))
|
||||
* fix tealium jsdoc ([f34b6e6](https://github.com/ionic-team/ionic-native/commit/f34b6e6))
|
||||
* **native-geocoder:** set response type to an array ([#2505](https://github.com/ionic-team/ionic-native/issues/2505)) ([defb276](https://github.com/ionic-team/ionic-native/commit/defb276))
|
||||
* **onesignal:** make params optional ([#2507](https://github.com/ionic-team/ionic-native/issues/2507)) ([e6db281](https://github.com/ionic-team/ionic-native/commit/e6db281))
|
||||
* **onesignal:** update OSPermissionState interface ([#2561](https://github.com/ionic-team/ionic-native/issues/2561)) ([fc088f8](https://github.com/ionic-team/ionic-native/commit/fc088f8))
|
||||
@@ -177,6 +402,11 @@
|
||||
* **stripe:** fixed casing of postal code param ([#2520](https://github.com/ionic-team/ionic-native/issues/2520)) ([d6a9ed1](https://github.com/ionic-team/ionic-native/commit/d6a9ed1))
|
||||
* **themeable-browser:** allow hidden and clear cache ([a4cc7f7](https://github.com/ionic-team/ionic-native/commit/a4cc7f7))
|
||||
* **v5-builder:** stop transforming "declare" classes ([#2503](https://github.com/ionic-team/ionic-native/issues/2503)) ([6662234](https://github.com/ionic-team/ionic-native/commit/6662234))
|
||||
* build errors ([f70eaea](https://github.com/ionic-team/ionic-native/commit/f70eaea))
|
||||
* fix lint ([b36a1f9](https://github.com/ionic-team/ionic-native/commit/b36a1f9))
|
||||
* fix more lint errors ([0b3d299](https://github.com/ionic-team/ionic-native/commit/0b3d299))
|
||||
* fix rxjs 6 imports ([e0b0687](https://github.com/ionic-team/ionic-native/commit/e0b0687))
|
||||
* fix tealium jsdoc ([f34b6e6](https://github.com/ionic-team/ionic-native/commit/f34b6e6))
|
||||
* **web-intent:** fix options param ([#2450](https://github.com/ionic-team/ionic-native/issues/2450)) ([23b760b](https://github.com/ionic-team/ionic-native/commit/23b760b))
|
||||
* **web-intent:** registerBroadcastReceiver as Observable ([#2491](https://github.com/ionic-team/ionic-native/issues/2491)) ([47f7397](https://github.com/ionic-team/ionic-native/commit/47f7397))
|
||||
|
||||
@@ -265,9 +495,9 @@
|
||||
* **one-signal:** add clearOneSignalNotifications function ([fc0338a](https://github.com/ionic-team/ionic-native/commit/fc0338a))
|
||||
* **plugin:** Add google nearby plugin ([eb1bcdd](https://github.com/ionic-team/ionic-native/commit/eb1bcdd))
|
||||
* **plugin:** add iOS File Picker ([571df3a](https://github.com/ionic-team/ionic-native/commit/571df3a))
|
||||
* **plugin:** add Microdoft App Center Analytics plugin ([b65946b](https://github.com/ionic-team/ionic-native/commit/b65946b))
|
||||
* **plugin:** add Microdoft App Center Analytics plugin ([7a5bee9](https://github.com/ionic-team/ionic-native/commit/7a5bee9))
|
||||
* **plugin:** add Microdoft App Center Analytics plugin ([84c9bfb](https://github.com/ionic-team/ionic-native/commit/84c9bfb))
|
||||
* **plugin:** add Microdoft App Center Analytics plugin ([b65946b](https://github.com/ionic-team/ionic-native/commit/b65946b))
|
||||
* **plugin:** add Microsoft App Center Crashes plugin ([44e0e24](https://github.com/ionic-team/ionic-native/commit/44e0e24))
|
||||
* **plugin:** add Microsoft App Center Push plugin ([cdabebd](https://github.com/ionic-team/ionic-native/commit/cdabebd))
|
||||
* **plugin:** add OpenALPR plugin ([e27fbf4](https://github.com/ionic-team/ionic-native/commit/e27fbf4))
|
||||
@@ -789,8 +1019,8 @@ renamed to `FileTransfer`. Also, `TransferObject` class has been renamed to `Fil
|
||||
|
||||
### Features
|
||||
|
||||
* **keychain:** add Keychain plugin ([#1420](https://github.com/ionic-team/ionic-native/issues/1420)) ([16dc71a](https://github.com/ionic-team/ionic-native/commit/16dc71a))
|
||||
* add IonicNativePlugin base class ([#1425](https://github.com/ionic-team/ionic-native/issues/1425)) ([17366a2](https://github.com/ionic-team/ionic-native/commit/17366a2))
|
||||
* **keychain:** add Keychain plugin ([#1420](https://github.com/ionic-team/ionic-native/issues/1420)) ([16dc71a](https://github.com/ionic-team/ionic-native/commit/16dc71a))
|
||||
|
||||
|
||||
|
||||
@@ -1159,12 +1389,12 @@ renamed to `FileTransfer`. Also, `TransferObject` class has been renamed to `Fil
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* add clearAllNotifications() ([8c021bc](https://github.com/ionic-team/ionic-native/commit/8c021bc))
|
||||
* **battery-status:** add missing pluginRef ([3da0efe](https://github.com/ionic-team/ionic-native/commit/3da0efe))
|
||||
* **core:** fix exception in CordovaProperty ([#998](https://github.com/ionic-team/ionic-native/issues/998)) ([cb29363](https://github.com/ionic-team/ionic-native/commit/cb29363)), closes [#992](https://github.com/ionic-team/ionic-native/issues/992)
|
||||
* **core:** fix plugin check ([da7a370](https://github.com/ionic-team/ionic-native/commit/da7a370))
|
||||
* **googlemaps:** fix GoogleMapsLaLngBounds ([c3127d3](https://github.com/ionic-team/ionic-native/commit/c3127d3)), closes [#972](https://github.com/ionic-team/ionic-native/issues/972)
|
||||
* **plugin:** adds subscribe() and unsubscribe() ([94025a7](https://github.com/ionic-team/ionic-native/commit/94025a7))
|
||||
* add clearAllNotifications() ([8c021bc](https://github.com/ionic-team/ionic-native/commit/8c021bc))
|
||||
|
||||
|
||||
### Features
|
||||
@@ -1322,8 +1552,8 @@ renamed to `FileTransfer`. Also, `TransferObject` class has been renamed to `Fil
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* add return ([3fdc4a8](https://github.com/ionic-team/ionic-native/commit/3fdc4a8))
|
||||
* **card-io:** fix typo in options ([e6700a3](https://github.com/ionic-team/ionic-native/commit/e6700a3))
|
||||
* add return ([3fdc4a8](https://github.com/ionic-team/ionic-native/commit/3fdc4a8))
|
||||
* **globalization:** add missing parameter to numberToString function ([1072ab1](https://github.com/ionic-team/ionic-native/commit/1072ab1)), closes [#835](https://github.com/ionic-team/ionic-native/issues/835)
|
||||
* **headercolor:** solve typo in usage and chore ([bab2971](https://github.com/ionic-team/ionic-native/commit/bab2971))
|
||||
|
||||
@@ -1576,6 +1806,7 @@ renamed to `FileTransfer`. Also, `TransferObject` class has been renamed to `Fil
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* remove CanvasCamera plugin ([c75f898](https://github.com/ionic-team/ionic-native/commit/c75f898))
|
||||
* **base64togallery:** fixes callbacks ([#513](https://github.com/ionic-team/ionic-native/issues/513)) ([1db1374](https://github.com/ionic-team/ionic-native/commit/1db1374))
|
||||
* **diagnostic:** Add DENIED_ALWAYS to permissionStatus, also some code formatting ([9d573a9](https://github.com/ionic-team/ionic-native/commit/9d573a9))
|
||||
* **diagnostic:** Fix diagnostic objects ([cb176aa](https://github.com/ionic-team/ionic-native/commit/cb176aa))
|
||||
@@ -1589,7 +1820,6 @@ renamed to `FileTransfer`. Also, `TransferObject` class has been renamed to `Fil
|
||||
* **mixpanel:** Make eventProperties optional ([#501](https://github.com/ionic-team/ionic-native/issues/501)) ([51364f8](https://github.com/ionic-team/ionic-native/commit/51364f8))
|
||||
* **ng1:** fail gracefully when angular 1 promises can't be retrieved ([d135dc2](https://github.com/ionic-team/ionic-native/commit/d135dc2))
|
||||
* **ng1:** grab injector from app. [#451](https://github.com/ionic-team/ionic-native/issues/451) ([2dc68a4](https://github.com/ionic-team/ionic-native/commit/2dc68a4))
|
||||
* remove CanvasCamera plugin ([c75f898](https://github.com/ionic-team/ionic-native/commit/c75f898))
|
||||
* **social-sharing:** shareViaEmail now resolves/rejects when not providing optional args ([c76de34](https://github.com/ionic-team/ionic-native/commit/c76de34))
|
||||
* **social-sharing:** various fixes ([#520](https://github.com/ionic-team/ionic-native/issues/520)) ([4f97164](https://github.com/ionic-team/ionic-native/commit/4f97164))
|
||||
|
||||
@@ -1666,11 +1896,11 @@ renamed to `FileTransfer`. Also, `TransferObject` class has been renamed to `Fil
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* add the reject function at the expected errorIndex position in the args array ([#436](https://github.com/ionic-team/ionic-native/issues/436)) ([4e87ac7](https://github.com/ionic-team/ionic-native/commit/4e87ac7))
|
||||
* **camera-preview:** changes implementation to match Cordova plugin ([#441](https://github.com/ionic-team/ionic-native/issues/441)) ([55ba65a](https://github.com/ionic-team/ionic-native/commit/55ba65a))
|
||||
* **file:** fixes exclusive option ([#459](https://github.com/ionic-team/ionic-native/issues/459)) ([14e41a3](https://github.com/ionic-team/ionic-native/commit/14e41a3))
|
||||
* **file:** initialize writeFile options ([#468](https://github.com/ionic-team/ionic-native/issues/468)) ([16628a4](https://github.com/ionic-team/ionic-native/commit/16628a4))
|
||||
* **nativeaudio:** fix plugin reference ([2510c5f](https://github.com/ionic-team/ionic-native/commit/2510c5f))
|
||||
* add the reject function at the expected errorIndex position in the args array ([#436](https://github.com/ionic-team/ionic-native/issues/436)) ([4e87ac7](https://github.com/ionic-team/ionic-native/commit/4e87ac7))
|
||||
|
||||
|
||||
### Features
|
||||
@@ -1869,12 +2099,12 @@ renamed to `FileTransfer`. Also, `TransferObject` class has been renamed to `Fil
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* remove unnecessary decorator ([#257](https://github.com/ionic-team/ionic-native/issues/257)) ([25fab64](https://github.com/ionic-team/ionic-native/commit/25fab64))
|
||||
* **actionsheet:** add missing optional parameter for hide function ([#262](https://github.com/ionic-team/ionic-native/issues/262)) ([644e999](https://github.com/ionic-team/ionic-native/commit/644e999))
|
||||
* **background-geolocation:** fix pluginref again ([b8a5133](https://github.com/ionic-team/ionic-native/commit/b8a5133))
|
||||
* **geolocation:** fix plugin reference ([4f0cd24](https://github.com/ionic-team/ionic-native/commit/4f0cd24)), closes [#258](https://github.com/ionic-team/ionic-native/issues/258)
|
||||
* **googlemaps:** use correct methods for addGroundOverlay and addKmlOverlay ([#268](https://github.com/ionic-team/ionic-native/issues/268)) ([b8be1de](https://github.com/ionic-team/ionic-native/commit/b8be1de))
|
||||
* **socialsharing:** all methods return Promises now ([e150224](https://github.com/ionic-team/ionic-native/commit/e150224)), closes [#275](https://github.com/ionic-team/ionic-native/issues/275)
|
||||
* remove unnecessary decorator ([#257](https://github.com/ionic-team/ionic-native/issues/257)) ([25fab64](https://github.com/ionic-team/ionic-native/commit/25fab64))
|
||||
|
||||
|
||||
### Features
|
||||
@@ -2010,8 +2240,8 @@ renamed to `FileTransfer`. Also, `TransferObject` class has been renamed to `Fil
|
||||
|
||||
* **datepicker:** datepicker options are optional ([c3cfd14](https://github.com/ionic-team/ionic-native/commit/c3cfd14))
|
||||
* **datepicker:** dates are Dates ([ce6adcc](https://github.com/ionic-team/ionic-native/commit/ce6adcc))
|
||||
* **datepicker:** fix plugin functionality ([91de971](https://github.com/ionic-team/ionic-native/commit/91de971))
|
||||
* **datepicker:** fix plugin functionality ([1a778e7](https://github.com/ionic-team/ionic-native/commit/1a778e7))
|
||||
* **datepicker:** fix plugin functionality ([91de971](https://github.com/ionic-team/ionic-native/commit/91de971))
|
||||
* **devicemotion:** combine watch and clear into one function ([d17f62d](https://github.com/ionic-team/ionic-native/commit/d17f62d))
|
||||
* **geolocation:** set callback order to reverse on getCurrentPosition ([1fac387](https://github.com/ionic-team/ionic-native/commit/1fac387))
|
||||
* **imagepicker:** pluginRef ([01d7972](https://github.com/ionic-team/ionic-native/commit/01d7972))
|
||||
@@ -2069,18 +2299,15 @@ renamed to `FileTransfer`. Also, `TransferObject` class has been renamed to `Fil
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* datepicker plugin, pluginref, and @Cordova wrapper ([499ead3](https://github.com/ionic-team/ionic-native/commit/499ead3))
|
||||
* **calendar:** make getCalendarOptions sync ([78c5408](https://github.com/ionic-team/ionic-native/commit/78c5408))
|
||||
* **geolocation:** call correct clearFunction ([9e86a40](https://github.com/ionic-team/ionic-native/commit/9e86a40))
|
||||
* **plugin:** return originalMethod return value ([240f0f8](https://github.com/ionic-team/ionic-native/commit/240f0f8))
|
||||
* **plugin:** use call for id based clearFunction ([c2fdf39](https://github.com/ionic-team/ionic-native/commit/c2fdf39))
|
||||
* datepicker plugin, pluginref, and @Cordova wrapper ([499ead3](https://github.com/ionic-team/ionic-native/commit/499ead3))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **DatePicker:** Added DatePicker ([5afa58f](https://github.com/ionic-team/ionic-native/commit/5afa58f))
|
||||
* **plugin:** add sync option to @Cordova for sync functions ([17e3827](https://github.com/ionic-team/ionic-native/commit/17e3827))
|
||||
* **plugin:** call clearFunction with original fn args ([8f27fc9](https://github.com/ionic-team/ionic-native/commit/8f27fc9))
|
||||
* add app version plugin ([20cb01f](https://github.com/ionic-team/ionic-native/commit/20cb01f))
|
||||
* add app version plugin ([8b78521](https://github.com/ionic-team/ionic-native/commit/8b78521))
|
||||
* add apprate ([0dd4fec](https://github.com/ionic-team/ionic-native/commit/0dd4fec))
|
||||
@@ -2088,6 +2315,9 @@ renamed to `FileTransfer`. Also, `TransferObject` class has been renamed to `Fil
|
||||
* add badge plugin ([3088df4](https://github.com/ionic-team/ionic-native/commit/3088df4))
|
||||
* add clipboard plugin ([0b6cca7](https://github.com/ionic-team/ionic-native/commit/0b6cca7))
|
||||
* add clipboard plugin ([fa4c266](https://github.com/ionic-team/ionic-native/commit/fa4c266))
|
||||
* **DatePicker:** Added DatePicker ([5afa58f](https://github.com/ionic-team/ionic-native/commit/5afa58f))
|
||||
* **plugin:** add sync option to @Cordova for sync functions ([17e3827](https://github.com/ionic-team/ionic-native/commit/17e3827))
|
||||
* **plugin:** call clearFunction with original fn args ([8f27fc9](https://github.com/ionic-team/ionic-native/commit/8f27fc9))
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -11,13 +11,11 @@ Ionic Native wraps plugin callbacks in a Promise or Observable, providing a comm
|
||||
Run following command to install Ionic Native in your project.
|
||||
|
||||
```bash
|
||||
npm install @ionic-native/core@beta --save
|
||||
npm install @ionic-native/core --save
|
||||
```
|
||||
|
||||
You also need to install the Ionic Native package for each plugin you want to add. Please see the [Ionic Native documentation](https://ionicframework.com/docs/native/) for complete instructions on how to add and use the plugins.
|
||||
|
||||
**NOTE: to use Ionic Native v5, you must use the `@beta` tag when installing any NPM package.**
|
||||
|
||||
## Documentation
|
||||
|
||||
For the full Ionic Native documentation, please visit [https://ionicframework.com/docs/native/](https://ionicframework.com/docs/native/).
|
||||
|
||||
@@ -3,7 +3,7 @@ jobs:
|
||||
build:
|
||||
working_directory: ~/ionic-native/
|
||||
docker:
|
||||
- image: node:8
|
||||
- image: node:10
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
|
||||
@@ -32,9 +32,7 @@ gulp.task('lint', () => {
|
||||
|
||||
gulp.task('plugin:create', () => {
|
||||
if (flags.n && flags.n !== '') {
|
||||
const src = flags.m
|
||||
? './scripts/templates/wrap-min.tmpl'
|
||||
: './scripts/templates/wrap.tmpl',
|
||||
const src = flags.m ? './scripts/templates/wrap-min.tmpl' : './scripts/templates/wrap.tmpl',
|
||||
pluginName = flags.n,
|
||||
spaced = pluginName.replace(/(?!^)([A-Z])/g, ' $1'),
|
||||
kebabCase = _.kebabCase(pluginName);
|
||||
|
||||
493
package-lock.json
generated
493
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
32
package.json
32
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ionic-native",
|
||||
"version": "5.0.0-beta.24",
|
||||
"version": "5.1.0",
|
||||
"description": "Native plugin wrappers for Cordova and Ionic with TypeScript, ES6+, Promise and Observable support",
|
||||
"homepage": "https://ionicframework.com/",
|
||||
"author": "Ionic Team <hi@ionic.io> (https://ionic.io)",
|
||||
@@ -22,18 +22,18 @@
|
||||
"shipit": "npm run build && npm run readmes && npm run npmpub"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular/common": "^7.2.1",
|
||||
"@angular/compiler": "^7.2.1",
|
||||
"@angular/compiler-cli": "^7.2.1",
|
||||
"@angular/core": "^7.2.1",
|
||||
"@angular/common": "^7.2.4",
|
||||
"@angular/compiler": "^7.2.4",
|
||||
"@angular/compiler-cli": "^7.2.4",
|
||||
"@angular/core": "^7.2.4",
|
||||
"@types/cordova": "0.0.34",
|
||||
"@types/fs-extra": "^5.0.4",
|
||||
"@types/jest": "^23.3.13",
|
||||
"@types/lodash": "^4.14.120",
|
||||
"@types/node": "^10.12.18",
|
||||
"@types/fs-extra": "^5.0.5",
|
||||
"@types/jest": "23.3.14",
|
||||
"@types/lodash": "^4.14.121",
|
||||
"@types/node": "^10.12.26",
|
||||
"@types/rimraf": "^2.0.2",
|
||||
"@types/webpack": "^4.4.23",
|
||||
"ajv": "^6.7.0",
|
||||
"@types/webpack": "^4.4.24",
|
||||
"ajv": "^6.9.1",
|
||||
"async-promise-queue": "^1.0.4",
|
||||
"conventional-changelog-cli": "^2.0.11",
|
||||
"cz-conventional-changelog": "^2.1.0",
|
||||
@@ -49,17 +49,17 @@
|
||||
"minimist": "1.2.0",
|
||||
"natives": "^1.1.6",
|
||||
"rimraf": "^2.6.3",
|
||||
"rxjs": "^6.3.3",
|
||||
"rxjs": "^6.4.0",
|
||||
"ts-jest": "^23.10.5",
|
||||
"ts-node": "^7.0.1",
|
||||
"ts-node": "^8.0.2",
|
||||
"tslint": "^5.12.1",
|
||||
"tslint-ionic-rules": "0.0.21",
|
||||
"typescript": "3.2.4",
|
||||
"uglifyjs-webpack-plugin": "^2.1.1",
|
||||
"unminified-webpack-plugin": "^2.0.0",
|
||||
"webpack": "^4.28.4",
|
||||
"winston": "^3.1.0",
|
||||
"zone.js": "^0.8.26"
|
||||
"webpack": "^4.29.3",
|
||||
"winston": "^3.2.1",
|
||||
"zone.js": "^0.8.29"
|
||||
},
|
||||
"jest": {
|
||||
"transform": {
|
||||
|
||||
@@ -37,10 +37,15 @@ function transformImports(file: ts.SourceFile, ctx: ts.TransformationContext, ng
|
||||
|
||||
decorators.forEach(d => methods = getMethodsForDecorator(d).concat(methods));
|
||||
|
||||
const methodElements = methods.map(m => ts.createIdentifier(m));
|
||||
const methodNames = methodElements.map((el) => el.escapedText);
|
||||
|
||||
importStatement.importClause.namedBindings.elements = [
|
||||
ts.createIdentifier('IonicNativePlugin'),
|
||||
...methods.map(m => ts.createIdentifier(m)),
|
||||
...importStatement.importClause.namedBindings.elements.filter(el => keep.indexOf(el.name.text) !== -1)
|
||||
...methodElements,
|
||||
...importStatement.importClause.namedBindings.elements.filter(
|
||||
el => keep.indexOf(el.name.text) !== -1 && methodNames.indexOf(el.name.text) === -1
|
||||
)
|
||||
];
|
||||
|
||||
if (ngcBuild) {
|
||||
|
||||
@@ -187,7 +187,7 @@ docType: "<$ doc.docType $>"
|
||||
<ol class="installation">
|
||||
<li>Install the Cordova and Ionic Native plugins:<br>
|
||||
<pre><code class="nohighlight">$ <@ if prop.install @><$ prop.install | replace('<', '<').replace('>', '>') $><@ else @>ionic cordova plugin add <$ prop.plugin $><@ endif @>
|
||||
$ npm install @ionic-native/<$ doc.npmId $>@beta
|
||||
$ npm install @ionic-native/<$ doc.npmId $>
|
||||
</code></pre>
|
||||
</li>
|
||||
<li><a href="https://ionicframework.com/docs/native/#Add_Plugins_to_Your_App_Module">Add this plugin to your app's module</a></li>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
```
|
||||
$ <@ if prop.install @><$ prop.install $><@ else @>ionic cordova plugin add <$ prop.plugin $><@ endif @>
|
||||
$ npm install @ionic-native/<$ doc.npmId $>@beta
|
||||
$ npm install @ionic-native/<$ doc.npmId $>
|
||||
```
|
||||
|
||||
## [Usage Documentation](https://ionicframework.com/docs/native/<$ doc.fileInfo.relativePath|replace('/home/ubuntu/ionic-native/', '')|replace('//','/')|replace('index.ts','')|replace('src/@ionic-native/plugins/','') $>)
|
||||
|
||||
@@ -34,4 +34,4 @@ function run {
|
||||
|
||||
}
|
||||
|
||||
source $(dirname $0)/../utils.inc.sh
|
||||
source $(dirname $0)/utils.inc.sh
|
||||
|
||||
@@ -47,4 +47,4 @@ function run {
|
||||
fi
|
||||
}
|
||||
|
||||
source $(dirname $0)/../utils.inc.sh
|
||||
source $(dirname $0)/utils.inc.sh
|
||||
|
||||
@@ -1,244 +1,241 @@
|
||||
# bash utils from angularjs
|
||||
|
||||
# This file provides:
|
||||
# - a default control flow
|
||||
# * initializes the environment
|
||||
# * call a function in your script based on the arguments
|
||||
# - named argument parsing and automatic generation of the "usage" for your script
|
||||
# - utility functions
|
||||
#
|
||||
# Usage:
|
||||
# - define the variable ARGS_DEF (see below) with the arguments for your script
|
||||
# - include this file using `source utils.inc` at the end of your script.
|
||||
#
|
||||
# Default control flow:
|
||||
# 0. Set the current directory to the directory of the script. By this
|
||||
# the script can be called from anywhere.
|
||||
# 1. Parse the named arguments
|
||||
# 2. [Redacted]
|
||||
# 3. If the parameter "verbose" is set, the `-x` flag will be set in bash.
|
||||
# 4. The function "init" will be called if it exists
|
||||
# 5. If the parameter "action" is set, it will call the function with the name of that parameter.
|
||||
# Otherwise the function "run" will be called.
|
||||
#
|
||||
# Named Argument Parsing:
|
||||
# - The variable ARGS_DEF defines the valid command arguments
|
||||
# * Required args syntax: --paramName=paramRegex
|
||||
# * Optional args syntax: [--paramName=paramRegex]
|
||||
# * e.g. ARG_DEFS=("--required_param=(.+)" "[--optional_param=(.+)]")
|
||||
# - Checks that:
|
||||
# * all arguments match to an entry in ARGS_DEF
|
||||
# * all required arguments are present
|
||||
# * all arguments match their regex
|
||||
# - Afterwards, every paramter value will be stored in a variable
|
||||
# with the name of the parameter in upper case (with dash converted to underscore).
|
||||
#
|
||||
# Special arguments that are always available:
|
||||
# - "--action=.*": This parameter will be used to dispatch to a function with that name when the
|
||||
# script is started
|
||||
|
||||
# - "--verbose=true": This will set the `-x` flag in bash so that all calls will be logged
|
||||
#
|
||||
# Utility functions:
|
||||
# - readJsonProp
|
||||
# - replaceJsonProp
|
||||
# - resolveDir
|
||||
# - getVar
|
||||
# - serVar
|
||||
# - isFunction
|
||||
|
||||
# always stop on errors
|
||||
set -e
|
||||
|
||||
function usage {
|
||||
echo "Usage: ${0} ${ARG_DEFS[@]}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
function parseArgs {
|
||||
local REQUIRED_ARG_NAMES=()
|
||||
|
||||
# -- helper functions
|
||||
function varName {
|
||||
# everything to upper case and dash to underscore
|
||||
echo ${1//-/_} | tr '[:lower:]' '[:upper:]'
|
||||
}
|
||||
|
||||
function readArgDefs {
|
||||
local ARG_DEF
|
||||
local AD_OPTIONAL
|
||||
local AD_NAME
|
||||
local AD_RE
|
||||
|
||||
# -- helper functions
|
||||
function parseArgDef {
|
||||
local ARG_DEF_REGEX="(\[?)--([^=]+)=(.*)"
|
||||
if [[ ! $1 =~ $ARG_DEF_REGEX ]]; then
|
||||
echo "Internal error: arg def has wrong format: $ARG_DEF"
|
||||
exit 1
|
||||
fi
|
||||
AD_OPTIONAL="${BASH_REMATCH[1]}"
|
||||
AD_NAME="${BASH_REMATCH[2]}"
|
||||
AD_RE="${BASH_REMATCH[3]}"
|
||||
if [[ $AD_OPTIONAL ]]; then
|
||||
# Remove last bracket for optional args.
|
||||
# Can't put this into the ARG_DEF_REGEX somehow...
|
||||
AD_RE=${AD_RE%?}
|
||||
fi
|
||||
}
|
||||
|
||||
# -- run
|
||||
for ARG_DEF in "${ARG_DEFS[@]}"
|
||||
do
|
||||
parseArgDef $ARG_DEF
|
||||
|
||||
local AD_NAME_UPPER=$(varName $AD_NAME)
|
||||
setVar "${AD_NAME_UPPER}_OPTIONAL" "$AD_OPTIONAL"
|
||||
setVar "${AD_NAME_UPPER}_RE" "$AD_RE"
|
||||
if [[ ! $AD_OPTIONAL ]]; then
|
||||
REQUIRED_ARG_NAMES+=($AD_NAME)
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
function readAndValidateArgs {
|
||||
local ARG_NAME
|
||||
local ARG_VALUE
|
||||
local ARG_NAME_UPPER
|
||||
|
||||
# -- helper functions
|
||||
function parseArg {
|
||||
local ARG_REGEX="--([^=]+)=?(.*)"
|
||||
|
||||
if [[ ! $1 =~ $ARG_REGEX ]]; then
|
||||
echo "Can't parse argument $i"
|
||||
usage
|
||||
fi
|
||||
|
||||
ARG_NAME="${BASH_REMATCH[1]}"
|
||||
ARG_VALUE="${BASH_REMATCH[2]}"
|
||||
ARG_NAME_UPPER=$(varName $ARG_NAME)
|
||||
}
|
||||
|
||||
function validateArg {
|
||||
local AD_RE=$(getVar ${ARG_NAME_UPPER}_RE)
|
||||
|
||||
if [[ ! $AD_RE ]]; then
|
||||
echo "Unknown option: $ARG_NAME"
|
||||
usage
|
||||
fi
|
||||
|
||||
if [[ ! $ARG_VALUE =~ ^${AD_RE}$ ]]; then
|
||||
echo "Wrong format: $ARG_NAME"
|
||||
usage;
|
||||
fi
|
||||
|
||||
# validate that the "action" option points to a valid function
|
||||
if [[ $ARG_NAME == "action" ]] && ! isFunction $ARG_VALUE; then
|
||||
echo "No action $ARG_VALUE defined in this script"
|
||||
usage;
|
||||
fi
|
||||
}
|
||||
|
||||
# -- run
|
||||
for i in "$@"
|
||||
do
|
||||
parseArg $i
|
||||
validateArg
|
||||
setVar "${ARG_NAME_UPPER}" "$ARG_VALUE"
|
||||
done
|
||||
}
|
||||
|
||||
function checkMissingArgs {
|
||||
local ARG_NAME
|
||||
for ARG_NAME in "${REQUIRED_ARG_NAMES[@]}"
|
||||
do
|
||||
ARG_VALUE=$(getVar $(varName $ARG_NAME))
|
||||
|
||||
if [[ ! $ARG_VALUE ]]; then
|
||||
echo "Missing: $ARG_NAME"
|
||||
usage;
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# -- run
|
||||
readArgDefs
|
||||
readAndValidateArgs "$@"
|
||||
checkMissingArgs
|
||||
|
||||
}
|
||||
|
||||
# getVar(varName)
|
||||
function getVar {
|
||||
echo ${!1}
|
||||
}
|
||||
|
||||
# setVar(varName, varValue)
|
||||
function setVar {
|
||||
eval "$1=\"$2\""
|
||||
}
|
||||
|
||||
# isFunction(name)
|
||||
# - to be used in an if, so return 0 if successful and 1 if not!
|
||||
function isFunction {
|
||||
if [[ $(type -t $1) == "function" ]]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# readJsonProp(jsonFile, property)
|
||||
# - restriction: property needs to be on an own line!
|
||||
function readJsonProp {
|
||||
echo $(sed -En 's/.*"'$2'"[ ]*:[ ]*"(.*)".*/\1/p' $1)
|
||||
}
|
||||
|
||||
# replaceJsonProp(jsonFile, property, newValue)
|
||||
# - note: propertyRegex will be automatically placed into a
|
||||
# capturing group! -> all other groups start at index 2!
|
||||
function replaceJsonProp {
|
||||
replaceInFile $1 "\"$2\": \".*?\"" "\"$2\": \"$3\""
|
||||
}
|
||||
|
||||
# replaceInFile(file, findPattern, replacePattern)
|
||||
function replaceInFile {
|
||||
perl -pi -e "s/$2/$3/g;" $1
|
||||
}
|
||||
|
||||
# resolveDir(relativeDir)
|
||||
# - resolves a directory relative to the current script
|
||||
function resolveDir {
|
||||
echo $(cd $SCRIPT_DIR; cd $1; pwd)
|
||||
}
|
||||
|
||||
function main {
|
||||
# normalize the working dir to the directory of the script
|
||||
cd $(dirname $0);SCRIPT_DIR=$(pwd)
|
||||
|
||||
ARG_DEFS+=("[--verbose=(true|false)]")
|
||||
parseArgs "$@"
|
||||
|
||||
|
||||
# --verbose argument
|
||||
if [[ $VERBOSE == "true" ]]; then
|
||||
set -x
|
||||
fi
|
||||
|
||||
if isFunction init; then
|
||||
init "$@"
|
||||
fi
|
||||
|
||||
# jump to the function denoted by the --action argument,
|
||||
# otherwise call the "run" function
|
||||
if [[ $ACTION ]]; then
|
||||
$ACTION "$@"
|
||||
else
|
||||
run "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
main "$@"
|
||||
# bash utils from angularjs
|
||||
# This file provides:
|
||||
# - a default control flow
|
||||
# * initializes the environment
|
||||
# * call a function in your script based on the arguments
|
||||
# - named argument parsing and automatic generation of the "usage" for your script
|
||||
# - utility functions
|
||||
#
|
||||
# Usage:
|
||||
# - define the variable ARGS_DEF (see below) with the arguments for your script
|
||||
# - include this file using `source utils.inc` at the end of your script.
|
||||
#
|
||||
# Default control flow:
|
||||
# 0. Set the current directory to the directory of the script. By this
|
||||
# the script can be called from anywhere.
|
||||
# 1. Parse the named arguments
|
||||
# 2. [Redacted]
|
||||
# 3. If the parameter "verbose" is set, the `-x` flag will be set in bash.
|
||||
# 4. The function "init" will be called if it exists
|
||||
# 5. If the parameter "action" is set, it will call the function with the name of that parameter.
|
||||
# Otherwise the function "run" will be called.
|
||||
#
|
||||
# Named Argument Parsing:
|
||||
# - The variable ARGS_DEF defines the valid command arguments
|
||||
# * Required args syntax: --paramName=paramRegex
|
||||
# * Optional args syntax: [--paramName=paramRegex]
|
||||
# * e.g. ARG_DEFS=("--required_param=(.+)" "[--optional_param=(.+)]")
|
||||
# - Checks that:
|
||||
# * all arguments match to an entry in ARGS_DEF
|
||||
# * all required arguments are present
|
||||
# * all arguments match their regex
|
||||
# - Afterwards, every paramter value will be stored in a variable
|
||||
# with the name of the parameter in upper case (with dash converted to underscore).
|
||||
#
|
||||
# Special arguments that are always available:
|
||||
# - "--action=.*": This parameter will be used to dispatch to a function with that name when the
|
||||
# script is started
|
||||
# - "--verbose=true": This will set the `-x` flag in bash so that all calls will be logged
|
||||
#
|
||||
# Utility functions:
|
||||
# - readJsonProp
|
||||
# - replaceJsonProp
|
||||
# - resolveDir
|
||||
# - getVar
|
||||
# - serVar
|
||||
# - isFunction
|
||||
# always stop on errors
|
||||
set -e
|
||||
|
||||
function usage {
|
||||
echo "Usage: ${0} ${ARG_DEFS[@]}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
function parseArgs {
|
||||
local REQUIRED_ARG_NAMES=()
|
||||
|
||||
# -- helper functions
|
||||
function varName {
|
||||
# everything to upper case and dash to underscore
|
||||
echo ${1//-/_} | tr '[:lower:]' '[:upper:]'
|
||||
}
|
||||
|
||||
function readArgDefs {
|
||||
local ARG_DEF
|
||||
local AD_OPTIONAL
|
||||
local AD_NAME
|
||||
local AD_RE
|
||||
|
||||
# -- helper functions
|
||||
function parseArgDef {
|
||||
local ARG_DEF_REGEX="(\[?)--([^=]+)=(.*)"
|
||||
if [[ ! $1 =~ $ARG_DEF_REGEX ]]; then
|
||||
echo "Internal error: arg def has wrong format: $ARG_DEF"
|
||||
exit 1
|
||||
fi
|
||||
AD_OPTIONAL="${BASH_REMATCH[1]}"
|
||||
AD_NAME="${BASH_REMATCH[2]}"
|
||||
AD_RE="${BASH_REMATCH[3]}"
|
||||
if [[ $AD_OPTIONAL ]]; then
|
||||
# Remove last bracket for optional args.
|
||||
# Can't put this into the ARG_DEF_REGEX somehow...
|
||||
AD_RE=${AD_RE%?}
|
||||
fi
|
||||
}
|
||||
|
||||
# -- run
|
||||
for ARG_DEF in "${ARG_DEFS[@]}"
|
||||
do
|
||||
parseArgDef $ARG_DEF
|
||||
|
||||
local AD_NAME_UPPER=$(varName $AD_NAME)
|
||||
setVar "${AD_NAME_UPPER}_OPTIONAL" "$AD_OPTIONAL"
|
||||
setVar "${AD_NAME_UPPER}_RE" "$AD_RE"
|
||||
if [[ ! $AD_OPTIONAL ]]; then
|
||||
REQUIRED_ARG_NAMES+=($AD_NAME)
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
function readAndValidateArgs {
|
||||
local ARG_NAME
|
||||
local ARG_VALUE
|
||||
local ARG_NAME_UPPER
|
||||
|
||||
# -- helper functions
|
||||
function parseArg {
|
||||
local ARG_REGEX="--([^=]+)=?(.*)"
|
||||
|
||||
if [[ ! $1 =~ $ARG_REGEX ]]; then
|
||||
echo "Can't parse argument $i"
|
||||
usage
|
||||
fi
|
||||
|
||||
ARG_NAME="${BASH_REMATCH[1]}"
|
||||
ARG_VALUE="${BASH_REMATCH[2]}"
|
||||
ARG_NAME_UPPER=$(varName $ARG_NAME)
|
||||
}
|
||||
|
||||
function validateArg {
|
||||
local AD_RE=$(getVar ${ARG_NAME_UPPER}_RE)
|
||||
|
||||
if [[ ! $AD_RE ]]; then
|
||||
echo "Unknown option: $ARG_NAME"
|
||||
usage
|
||||
fi
|
||||
|
||||
if [[ ! $ARG_VALUE =~ ^${AD_RE}$ ]]; then
|
||||
echo "Wrong format: $ARG_NAME"
|
||||
usage;
|
||||
fi
|
||||
|
||||
# validate that the "action" option points to a valid function
|
||||
if [[ $ARG_NAME == "action" ]] && ! isFunction $ARG_VALUE; then
|
||||
echo "No action $ARG_VALUE defined in this script"
|
||||
usage;
|
||||
fi
|
||||
}
|
||||
|
||||
# -- run
|
||||
for i in "$@"
|
||||
do
|
||||
parseArg $i
|
||||
validateArg
|
||||
setVar "${ARG_NAME_UPPER}" "$ARG_VALUE"
|
||||
done
|
||||
}
|
||||
|
||||
function checkMissingArgs {
|
||||
local ARG_NAME
|
||||
for ARG_NAME in "${REQUIRED_ARG_NAMES[@]}"
|
||||
do
|
||||
ARG_VALUE=$(getVar $(varName $ARG_NAME))
|
||||
|
||||
if [[ ! $ARG_VALUE ]]; then
|
||||
echo "Missing: $ARG_NAME"
|
||||
usage;
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# -- run
|
||||
readArgDefs
|
||||
readAndValidateArgs "$@"
|
||||
checkMissingArgs
|
||||
|
||||
}
|
||||
|
||||
# getVar(varName)
|
||||
function getVar {
|
||||
echo ${!1}
|
||||
}
|
||||
|
||||
# setVar(varName, varValue)
|
||||
function setVar {
|
||||
eval "$1=\"$2\""
|
||||
}
|
||||
|
||||
# isFunction(name)
|
||||
# - to be used in an if, so return 0 if successful and 1 if not!
|
||||
function isFunction {
|
||||
if [[ $(type -t $1) == "function" ]]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# readJsonProp(jsonFile, property)
|
||||
# - restriction: property needs to be on an own line!
|
||||
function readJsonProp {
|
||||
echo $(sed -En 's/.*"'$2'"[ ]*:[ ]*"(.*)".*/\1/p' $1)
|
||||
}
|
||||
|
||||
# replaceJsonProp(jsonFile, property, newValue)
|
||||
# - note: propertyRegex will be automatically placed into a
|
||||
# capturing group! -> all other groups start at index 2!
|
||||
function replaceJsonProp {
|
||||
replaceInFile $1 "\"$2\": \".*?\"" "\"$2\": \"$3\""
|
||||
}
|
||||
|
||||
# replaceInFile(file, findPattern, replacePattern)
|
||||
function replaceInFile {
|
||||
perl -pi -e "s/$2/$3/g;" $1
|
||||
}
|
||||
|
||||
# resolveDir(relativeDir)
|
||||
# - resolves a directory relative to the current script
|
||||
function resolveDir {
|
||||
echo $(cd $SCRIPT_DIR; cd $1; pwd)
|
||||
}
|
||||
|
||||
function main {
|
||||
# normalize the working dir to the directory of the script
|
||||
cd $(dirname $0);SCRIPT_DIR=$(pwd)
|
||||
|
||||
ARG_DEFS+=("[--verbose=(true|false)]")
|
||||
parseArgs "$@"
|
||||
|
||||
|
||||
# --verbose argument
|
||||
if [[ $VERBOSE == "true" ]]; then
|
||||
set -x
|
||||
fi
|
||||
|
||||
if isFunction init; then
|
||||
init "$@"
|
||||
fi
|
||||
|
||||
# jump to the function denoted by the --action argument,
|
||||
# otherwise call the "run" function
|
||||
if [[ $ACTION ]]; then
|
||||
$ACTION "$@"
|
||||
else
|
||||
run "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
main "$@"
|
||||
|
||||
@@ -11,7 +11,7 @@ import { Logger } from '../logger';
|
||||
// tslint:disable-next-line:no-var-requires
|
||||
const MAIN_PACKAGE_JSON = require('../../package.json');
|
||||
const VERSION = MAIN_PACKAGE_JSON.version;
|
||||
const FLAGS = '--access public --tag beta';
|
||||
const FLAGS = '--access public';
|
||||
|
||||
const PACKAGE_JSON_BASE = {
|
||||
description: 'Ionic Native - Native plugins for ionic apps',
|
||||
@@ -29,14 +29,15 @@ const DIST = path.resolve(ROOT, 'dist/@ionic-native');
|
||||
|
||||
const PACKAGES = [];
|
||||
|
||||
const RXJS_VERSION = '*';
|
||||
const MIN_CORE_VERSION = '^5.1.0';
|
||||
const RXJS_VERSION = '^6.3.0';
|
||||
|
||||
const PLUGIN_PEER_DEPENDENCIES = {
|
||||
'@ionic-native/core': VERSION, // TODO change this in production
|
||||
'@ionic-native/core': MIN_CORE_VERSION,
|
||||
rxjs: RXJS_VERSION
|
||||
};
|
||||
|
||||
function getPackageJsonContent(name, peerDependencies = {}, dependencies = {}) {
|
||||
function getPackageJsonContent(name: string, peerDependencies = {}, dependencies = {}) {
|
||||
return merge(PACKAGE_JSON_BASE, {
|
||||
name: '@ionic-native/' + name,
|
||||
dependencies,
|
||||
@@ -61,10 +62,7 @@ function prepare() {
|
||||
// write plugin package.json files
|
||||
PLUGIN_PATHS.forEach((pluginPath: string) => {
|
||||
const pluginName = pluginPath.split(/[\/\\]+/).slice(-2)[0];
|
||||
const packageJsonContents = getPackageJsonContent(
|
||||
pluginName,
|
||||
PLUGIN_PEER_DEPENDENCIES
|
||||
);
|
||||
const packageJsonContents = getPackageJsonContent(pluginName, PLUGIN_PEER_DEPENDENCIES);
|
||||
const dir = path.resolve(DIST, 'plugins', pluginName);
|
||||
|
||||
writePackageJson(packageJsonContents, dir);
|
||||
@@ -74,28 +72,27 @@ function prepare() {
|
||||
async function publish(ignoreErrors = false) {
|
||||
Logger.profile('Publishing');
|
||||
// upload 1 package per CPU thread at a time
|
||||
const worker = Queue.async.asyncify((pkg: any) =>
|
||||
new Promise<any>((resolve, reject) => {
|
||||
exec(`npm publish ${pkg} ${FLAGS}`, (err, stdout) => {
|
||||
if (stdout) {
|
||||
Logger.verbose(stdout.trim());
|
||||
resolve(stdout);
|
||||
}
|
||||
if (err) {
|
||||
if (!ignoreErrors) {
|
||||
if (
|
||||
err.message.includes(
|
||||
'You cannot publish over the previously published version'
|
||||
)
|
||||
) {
|
||||
Logger.verbose('Ignoring duplicate version error.');
|
||||
return resolve();
|
||||
}
|
||||
reject(err);
|
||||
const worker = Queue.async.asyncify(
|
||||
(pkg: any) =>
|
||||
new Promise<any>((resolve, reject) => {
|
||||
exec(`npm publish ${pkg} ${FLAGS}`, (err, stdout) => {
|
||||
if (stdout) {
|
||||
Logger.verbose(stdout.trim());
|
||||
resolve(stdout);
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
if (err) {
|
||||
if (!ignoreErrors) {
|
||||
if (
|
||||
err.message.includes('You cannot publish over the previously published version')
|
||||
) {
|
||||
Logger.verbose('Ignoring duplicate version error.');
|
||||
return resolve();
|
||||
}
|
||||
reject(err);
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
);
|
||||
|
||||
try {
|
||||
|
||||
@@ -9,9 +9,7 @@ export function checkReady() {
|
||||
|
||||
let didFireReady = false;
|
||||
document.addEventListener('deviceready', () => {
|
||||
console.log(
|
||||
`Ionic Native: deviceready event fired after ${Date.now() - before} ms`
|
||||
);
|
||||
console.log(`Ionic Native: deviceready event fired after ${Date.now() - before} ms`);
|
||||
didFireReady = true;
|
||||
});
|
||||
|
||||
|
||||
@@ -30,13 +30,9 @@ class MockInstancePluginObject {
|
||||
|
||||
class MockCordovaPlugin {
|
||||
static ping = jest.fn((arg: string) => 'pong');
|
||||
static pingAsync = jest.fn(
|
||||
(arg: string, success: Function, error: Function) => success('pong')
|
||||
);
|
||||
static pingAsync = jest.fn((arg: string, success: Function, error: Function) => success('pong'));
|
||||
ping = jest.fn((arg: string) => 'pong');
|
||||
pingAsync = jest.fn((arg: string, success: Function, error: Function) =>
|
||||
success('pong')
|
||||
);
|
||||
pingAsync = jest.fn((arg: string, success: Function, error: Function) => success('pong'));
|
||||
}
|
||||
|
||||
describe('Common decorator functions', () => {
|
||||
@@ -73,12 +69,8 @@ describe('Common decorator functions', () => {
|
||||
|
||||
test('original method should have received args', () => {
|
||||
expect(MockCordovaPlugin.pingAsync.mock.calls[0][0]).toBe('pingpong');
|
||||
expect(typeof MockCordovaPlugin.pingAsync.mock.calls[0][1]).toBe(
|
||||
'function'
|
||||
);
|
||||
expect(typeof MockCordovaPlugin.pingAsync.mock.calls[0][2]).toBe(
|
||||
'function'
|
||||
);
|
||||
expect(typeof MockCordovaPlugin.pingAsync.mock.calls[0][1]).toBe('function');
|
||||
expect(typeof MockCordovaPlugin.pingAsync.mock.calls[0][2]).toBe('function');
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Observable, fromEvent } from 'rxjs';
|
||||
import { fromEvent, Observable } from 'rxjs';
|
||||
|
||||
import { CordovaOptions } from './interfaces';
|
||||
|
||||
@@ -7,9 +7,7 @@ declare const window: any;
|
||||
export const ERR_CORDOVA_NOT_AVAILABLE = { error: 'cordova_not_available' };
|
||||
export const ERR_PLUGIN_NOT_INSTALLED = { error: 'plugin_not_installed' };
|
||||
|
||||
export function getPromise<T>(
|
||||
callback: (resolve: Function, reject?: Function) => any
|
||||
): Promise<T> {
|
||||
export function getPromise<T>(callback: (resolve: Function, reject?: Function) => any): Promise<T> {
|
||||
const tryNativePromise = () => {
|
||||
if (Promise) {
|
||||
return new Promise<T>((resolve, reject) => {
|
||||
@@ -58,14 +56,7 @@ export function wrapPromise(
|
||||
(...args: any[]) => reject(args)
|
||||
);
|
||||
} else {
|
||||
pluginResult = callCordovaPlugin(
|
||||
pluginObj,
|
||||
methodName,
|
||||
args,
|
||||
opts,
|
||||
resolve,
|
||||
reject
|
||||
);
|
||||
pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, resolve, reject);
|
||||
}
|
||||
rej = reject;
|
||||
});
|
||||
@@ -79,12 +70,7 @@ export function wrapPromise(
|
||||
return p;
|
||||
}
|
||||
|
||||
function wrapOtherPromise(
|
||||
pluginObj: any,
|
||||
methodName: string,
|
||||
args: any[],
|
||||
opts: any = {}
|
||||
) {
|
||||
function wrapOtherPromise(pluginObj: any, methodName: string, args: any[], opts: any = {}) {
|
||||
return getPromise((resolve: Function, reject: Function) => {
|
||||
const pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts);
|
||||
if (pluginResult) {
|
||||
@@ -99,12 +85,7 @@ function wrapOtherPromise(
|
||||
});
|
||||
}
|
||||
|
||||
function wrapObservable(
|
||||
pluginObj: any,
|
||||
methodName: string,
|
||||
args: any[],
|
||||
opts: any = {}
|
||||
) {
|
||||
function wrapObservable(pluginObj: any, methodName: string, args: any[], opts: any = {}) {
|
||||
return new Observable(observer => {
|
||||
let pluginResult;
|
||||
|
||||
@@ -203,10 +184,7 @@ export function checkAvailability(
|
||||
|
||||
pluginInstance = getPlugin(pluginRef);
|
||||
|
||||
if (
|
||||
!pluginInstance ||
|
||||
(!!methodName && typeof pluginInstance[methodName] === 'undefined')
|
||||
) {
|
||||
if (!pluginInstance || (!!methodName && typeof pluginInstance[methodName] === 'undefined')) {
|
||||
if (!window.cordova) {
|
||||
cordovaWarn(pluginName, methodName);
|
||||
return ERR_CORDOVA_NOT_AVAILABLE;
|
||||
@@ -223,23 +201,14 @@ export function checkAvailability(
|
||||
* Checks if _objectInstance exists and has the method/property
|
||||
* @private
|
||||
*/
|
||||
export function instanceAvailability(
|
||||
pluginObj: any,
|
||||
methodName?: string
|
||||
): boolean {
|
||||
export function instanceAvailability(pluginObj: any, methodName?: string): boolean {
|
||||
return (
|
||||
pluginObj._objectInstance &&
|
||||
(!methodName ||
|
||||
typeof pluginObj._objectInstance[methodName] !== 'undefined')
|
||||
(!methodName || typeof pluginObj._objectInstance[methodName] !== 'undefined')
|
||||
);
|
||||
}
|
||||
|
||||
export function setIndex(
|
||||
args: any[],
|
||||
opts: any = {},
|
||||
resolve?: Function,
|
||||
reject?: Function
|
||||
): any {
|
||||
export function setIndex(args: any[], opts: any = {}, resolve?: Function, reject?: Function): any {
|
||||
// ignore resolve and reject in case sync
|
||||
if (opts.sync) {
|
||||
return args;
|
||||
@@ -258,19 +227,12 @@ export function setIndex(
|
||||
resolve(result);
|
||||
}
|
||||
});
|
||||
} else if (
|
||||
opts.callbackStyle === 'object' &&
|
||||
opts.successName &&
|
||||
opts.errorName
|
||||
) {
|
||||
} else if (opts.callbackStyle === 'object' && opts.successName && opts.errorName) {
|
||||
const obj: any = {};
|
||||
obj[opts.successName] = resolve;
|
||||
obj[opts.errorName] = reject;
|
||||
args.push(obj);
|
||||
} else if (
|
||||
typeof opts.successIndex !== 'undefined' ||
|
||||
typeof opts.errorIndex !== 'undefined'
|
||||
) {
|
||||
} else if (typeof opts.successIndex !== 'undefined' || typeof opts.errorIndex !== 'undefined') {
|
||||
const setSuccessIndex = () => {
|
||||
// If we've specified a success/error index
|
||||
if (opts.successIndex > args.length) {
|
||||
@@ -339,10 +301,7 @@ export function callInstance(
|
||||
args = setIndex(args, opts, resolve, reject);
|
||||
|
||||
if (instanceAvailability(pluginObj, methodName)) {
|
||||
return pluginObj._objectInstance[methodName].apply(
|
||||
pluginObj._objectInstance,
|
||||
args
|
||||
);
|
||||
return pluginObj._objectInstance[methodName].apply(pluginObj._objectInstance, args);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -362,11 +321,7 @@ export function get(element: Element | Window, path: string) {
|
||||
return obj;
|
||||
}
|
||||
|
||||
export function pluginWarn(
|
||||
pluginName: string,
|
||||
plugin?: string,
|
||||
method?: string
|
||||
): void {
|
||||
export function pluginWarn(pluginName: string, plugin?: string, method?: string): void {
|
||||
if (method) {
|
||||
console.warn(
|
||||
'Native: tried calling ' +
|
||||
@@ -378,14 +333,10 @@ export function pluginWarn(
|
||||
' plugin is not installed.'
|
||||
);
|
||||
} else {
|
||||
console.warn(
|
||||
`Native: tried accessing the ${pluginName} plugin but it's not installed.`
|
||||
);
|
||||
console.warn(`Native: tried accessing the ${pluginName} plugin but it's not installed.`);
|
||||
}
|
||||
if (plugin) {
|
||||
console.warn(
|
||||
`Install the ${pluginName} plugin: 'ionic cordova plugin add ${plugin}'`
|
||||
);
|
||||
console.warn(`Install the ${pluginName} plugin: 'ionic cordova plugin add ${plugin}'`);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -419,11 +370,7 @@ export type WrapFn = (...args: any[]) => any;
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
export const wrap = (
|
||||
pluginObj: any,
|
||||
methodName: string,
|
||||
opts: CordovaOptions = {}
|
||||
): WrapFn => {
|
||||
export const wrap = (pluginObj: any, methodName: string, opts: CordovaOptions = {}): WrapFn => {
|
||||
return (...args: any[]) => {
|
||||
if (opts.sync) {
|
||||
// Sync doesn't wrap the plugin with a promise or observable, it returns the result as-is
|
||||
@@ -443,11 +390,7 @@ export const wrap = (
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
export function wrapInstance(
|
||||
pluginObj: any,
|
||||
methodName: string,
|
||||
opts: any = {}
|
||||
): Function {
|
||||
export function wrapInstance(pluginObj: any, methodName: string, opts: any = {}): Function {
|
||||
return (...args: any[]) => {
|
||||
if (opts.sync) {
|
||||
return callInstance(pluginObj, methodName, args, opts);
|
||||
@@ -515,14 +458,7 @@ export function wrapInstance(
|
||||
(...args: any[]) => reject(args)
|
||||
);
|
||||
} else {
|
||||
result = callInstance(
|
||||
pluginObj,
|
||||
methodName,
|
||||
args,
|
||||
opts,
|
||||
resolve,
|
||||
reject
|
||||
);
|
||||
result = callInstance(pluginObj, methodName, args, opts, resolve, reject);
|
||||
}
|
||||
if (result && result.then) {
|
||||
result.then(resolve, reject);
|
||||
@@ -543,14 +479,7 @@ export function wrapInstance(
|
||||
(...args: any[]) => reject(args)
|
||||
);
|
||||
} else {
|
||||
pluginResult = callInstance(
|
||||
pluginObj,
|
||||
methodName,
|
||||
args,
|
||||
opts,
|
||||
resolve,
|
||||
reject
|
||||
);
|
||||
pluginResult = callInstance(pluginObj, methodName, args, opts, resolve, reject);
|
||||
}
|
||||
rej = reject;
|
||||
});
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Observable, Observer } from 'rxjs';
|
||||
|
||||
import { checkAvailability, getPlugin } from './common';
|
||||
|
||||
function overrideFunction(pluginObj: any, methodName: string): Observable<any> {
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
import { wrapInstance } from './common';
|
||||
import { CordovaOptions } from './interfaces';
|
||||
|
||||
export function cordovaInstance(pluginObj: any, methodName: string, config: CordovaOptions, args: IArguments | any[]) {
|
||||
export function cordovaInstance(
|
||||
pluginObj: any,
|
||||
methodName: string,
|
||||
config: CordovaOptions,
|
||||
args: IArguments | any[]
|
||||
) {
|
||||
args = Array.from(args);
|
||||
return wrapInstance(pluginObj, methodName, config).apply(this, args);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
import { wrap } from './common';
|
||||
import { CordovaOptions } from './interfaces';
|
||||
|
||||
export function cordova(pluginObj: any, methodName: string, config: CordovaOptions, args: IArguments | any[]) {
|
||||
export function cordova(
|
||||
pluginObj: any,
|
||||
methodName: string,
|
||||
config: CordovaOptions,
|
||||
args: IArguments | any[]
|
||||
) {
|
||||
return wrap(pluginObj, methodName, config).apply(this, args);
|
||||
}
|
||||
|
||||
@@ -18,31 +18,42 @@ export class IonicNativePlugin {
|
||||
* Returns a boolean that indicates whether the plugin is installed
|
||||
* @return {boolean}
|
||||
*/
|
||||
static installed(): boolean { return checkAvailability(this.pluginRef) === true; }
|
||||
static installed(): boolean {
|
||||
return checkAvailability(this.pluginRef) === true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the original plugin object
|
||||
*/
|
||||
static getPlugin(): any { return get(window, this.pluginRef); }
|
||||
static getPlugin(): any {
|
||||
return get(window, this.pluginRef);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the plugin's name
|
||||
*/
|
||||
static getPluginName(): string { return this.pluginName; }
|
||||
static getPluginName(): string {
|
||||
return this.pluginName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the plugin's reference
|
||||
*/
|
||||
static getPluginRef(): string { return this.pluginRef; }
|
||||
static getPluginRef(): string {
|
||||
return this.pluginRef;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the plugin's install name
|
||||
*/
|
||||
static getPluginInstallName(): string { return this.plugin; }
|
||||
static getPluginInstallName(): string {
|
||||
return this.plugin;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the plugin's supported platforms
|
||||
*/
|
||||
static getSupportedPlatforms(): string[] { return this.platforms || []; }
|
||||
|
||||
static getSupportedPlatforms(): string[] {
|
||||
return this.platforms || [];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,9 @@ export function get(element: Element | Window, path: string) {
|
||||
const paths: string[] = path.split('.');
|
||||
let obj: any = element;
|
||||
for (let i = 0; i < paths.length; i++) {
|
||||
if (!obj) { return null; }
|
||||
if (!obj) {
|
||||
return null;
|
||||
}
|
||||
obj = obj[paths[i]];
|
||||
}
|
||||
return obj;
|
||||
@@ -17,7 +19,6 @@ export function get(element: Element | Window, path: string) {
|
||||
* @private
|
||||
*/
|
||||
export function getPromise(callback: Function = () => {}): Promise<any> {
|
||||
|
||||
const tryNativePromise = () => {
|
||||
if (window.Promise) {
|
||||
return new Promise<any>((resolve, reject) => {
|
||||
|
||||
@@ -9,7 +9,6 @@ declare const AbbyyRtrSdk: any;
|
||||
* default setting will be used.
|
||||
*/
|
||||
export interface TextCaptureOptions {
|
||||
|
||||
/**
|
||||
* The name of the license file. This file must be located in the
|
||||
* www/rtr_assets/ directory in your project.
|
||||
@@ -57,6 +56,11 @@ export interface TextCaptureOptions {
|
||||
* the latest recognition result.
|
||||
*/
|
||||
isStopButtonVisible?: boolean;
|
||||
|
||||
/**
|
||||
* Specify the orientation, possible values 'landscape' or 'portrait'.
|
||||
*/
|
||||
orientation?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -64,7 +68,6 @@ export interface TextCaptureOptions {
|
||||
* The callback you implement should parse this object and show results to user.
|
||||
*/
|
||||
export interface TextCaptureResult {
|
||||
|
||||
/**
|
||||
* An array of objects representing recognized lines of text.
|
||||
* These objects have the following keys:
|
||||
@@ -75,7 +78,7 @@ export interface TextCaptureResult {
|
||||
* · rect (string): position and size of the bounding rectangle,
|
||||
* a string of 4 integers separated with whitespaces ("x y width height").
|
||||
*/
|
||||
textLines: { text: string, quadrangle: string, rect?: string }[];
|
||||
textLines: { text: string; quadrangle: string; rect?: string }[];
|
||||
|
||||
/**
|
||||
* Additional information. This object has the following keys:
|
||||
@@ -91,10 +94,10 @@ export interface TextCaptureResult {
|
||||
* the array contains language identifiers (["English", "French", "German"]).
|
||||
*/
|
||||
resultInfo: {
|
||||
stabilityStatus: string,
|
||||
userAction: string,
|
||||
frameSize: string,
|
||||
recognitionLanguages: string[]
|
||||
stabilityStatus: string;
|
||||
userAction: string;
|
||||
frameSize: string;
|
||||
recognitionLanguages: string[];
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -114,7 +117,6 @@ export interface TextCaptureResult {
|
||||
* keys: you must specify either one of them, but not both at the same time.
|
||||
*/
|
||||
export interface DataCaptureOptions {
|
||||
|
||||
/**
|
||||
* The predefined data capture profile to use, for example: "MRZ".
|
||||
* Note: For the list of supported documents, see Specifications — Data
|
||||
@@ -134,10 +136,10 @@ export interface DataCaptureOptions {
|
||||
* the regular expression that should be matched when capturing a field.
|
||||
*/
|
||||
customDataCaptureScenario?: {
|
||||
name: string,
|
||||
description: string,
|
||||
recognitionLanguages: string[],
|
||||
fields: { regEx: string }[]
|
||||
name: string;
|
||||
description: string;
|
||||
recognitionLanguages: string[];
|
||||
fields: { regEx: string }[];
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -175,6 +177,11 @@ export interface DataCaptureOptions {
|
||||
* the latest recognition result.
|
||||
*/
|
||||
isStopButtonVisible?: boolean;
|
||||
|
||||
/**
|
||||
* Specify the orientation, possible values 'landscape' or 'portrait'.
|
||||
*/
|
||||
orientation?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -182,7 +189,6 @@ export interface DataCaptureOptions {
|
||||
* implement should parse this object and show results to user.
|
||||
*/
|
||||
export interface DataCaptureResult {
|
||||
|
||||
/**
|
||||
* The data scheme which was applied during data capture.
|
||||
* The value is an object which has two keys:
|
||||
@@ -195,8 +201,8 @@ export interface DataCaptureResult {
|
||||
* present in the result.
|
||||
*/
|
||||
dataScheme?: {
|
||||
id: string,
|
||||
name: string
|
||||
id: string;
|
||||
name: string;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -222,15 +228,15 @@ export interface DataCaptureResult {
|
||||
* of 4 integers separated with whitespaces ("x y width height").
|
||||
*/
|
||||
dataFields: {
|
||||
id: string,
|
||||
name: string,
|
||||
text: string,
|
||||
quadrangle: string,
|
||||
id: string;
|
||||
name: string;
|
||||
text: string;
|
||||
quadrangle: string;
|
||||
components: {
|
||||
text: string,
|
||||
quadrangle: string,
|
||||
rect: string
|
||||
}
|
||||
text: string;
|
||||
quadrangle: string;
|
||||
rect: string;
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -245,9 +251,9 @@ export interface DataCaptureResult {
|
||||
* with 2 integers separated with a whitespace ("720 1280").
|
||||
*/
|
||||
resultInfo: {
|
||||
stabilityStatus: string,
|
||||
userAction: string,
|
||||
frameSize: string
|
||||
stabilityStatus: string;
|
||||
userAction: string;
|
||||
frameSize: string;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -297,7 +303,6 @@ export interface DataCaptureResult {
|
||||
})
|
||||
@Injectable()
|
||||
export class AbbyyRTR extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Opens a modal dialog with controls for the Text Capture scenario.
|
||||
* @param {TextCaptureOptions} options
|
||||
|
||||
66
src/@ionic-native/plugins/app-launcher/index.ts
Normal file
66
src/@ionic-native/plugins/app-launcher/index.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface AppLauncherOptions {
|
||||
uri?: string;
|
||||
packageName?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name App Launcher
|
||||
* @description
|
||||
* Simple Cordova plugin to see if other apps are installed and launch them.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { AppLauncher, AppLauncherOptions } from '@ionic-native/app-launcher/ngx';
|
||||
* import { Platform } from '@ionic/angular';
|
||||
*
|
||||
* constructor(private appLauncher: AppLauncher, private platform: Platform) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* const options: AppLauncherOptions = {
|
||||
* }
|
||||
*
|
||||
* if(this.platform.is('ios')) {
|
||||
* options.uri = 'fb://'
|
||||
* } else {
|
||||
* options.packageName = 'com.facebook.katana'
|
||||
* }
|
||||
*
|
||||
* this.appLauncher.canLaunch(options)
|
||||
* .then((canLaunch: boolean) => console.log('Facebook is available'))
|
||||
* .catch((error: any) => console.error('Facebook is not available'));
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'AppLauncher',
|
||||
plugin: 'cordova-plugin-app-launcher',
|
||||
pluginRef: 'window.plugins.launcher',
|
||||
repo: 'https://github.com/nchutchind/cordova-plugin-app-launcher',
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class AppLauncher extends IonicNativePlugin {
|
||||
/**
|
||||
* Check if any apps are installed that can launch via a specified URI or Package Name.
|
||||
* @param options App Launcher options
|
||||
* @return {Promise<any>} Returns a promise that resolves if the app is installed
|
||||
*/
|
||||
@Cordova()
|
||||
canLaunch(options: AppLauncherOptions): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Launches the app via a specified URI or Package Name
|
||||
* @param options App Launcher options
|
||||
* @return {Promise<any>} Returns a promise that resolves the launched app
|
||||
*/
|
||||
@Cordova()
|
||||
launch(options: AppLauncherOptions): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -514,14 +514,16 @@ export declare enum BackgroundGeolocationIOSActivity {
|
||||
* };
|
||||
*
|
||||
* this.backgroundGeolocation.configure(config)
|
||||
* .subscribe((location: BackgroundGeolocationResponse) => {
|
||||
* .then(() => {
|
||||
*
|
||||
* console.log(location);
|
||||
* this.backgroundGeolocation.on('location').subscribe((location: BackgroundGeolocationResponse) => {
|
||||
* console.log(location);
|
||||
*
|
||||
* // IMPORTANT: You must execute the finish method here to inform the native plugin that you're finished,
|
||||
* // and the background-task may be completed. You must do this regardless if your HTTP request is successful or not.
|
||||
* // IF YOU DON'T, ios will CRASH YOUR APP for spending too much time in the background.
|
||||
* this.backgroundGeolocation.finish(); // FOR IOS ONLY
|
||||
* // IMPORTANT: You must execute the finish method here to inform the native plugin that you're finished,
|
||||
* // and the background-task may be completed. You must do this regardless if your operations are successful or not.
|
||||
* // IF YOU DON'T, ios will CRASH YOUR APP for spending too much time in the background.
|
||||
* this.backgroundGeolocation.finish(); // FOR IOS ONLY
|
||||
* });
|
||||
*
|
||||
* });
|
||||
*
|
||||
@@ -549,7 +551,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
|
||||
* Configure the plugin.
|
||||
*
|
||||
* @param options {BackgroundGeolocationConfig} options An object of type Config
|
||||
* @return {Observable<BackgroundGeolocationResponse>}
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
configure(options: BackgroundGeolocationConfig): Promise<any> {
|
||||
|
||||
@@ -339,7 +339,7 @@ export interface InitializeResult {
|
||||
/** Service's UUID */
|
||||
service: string;
|
||||
/** Characteristic UUID */
|
||||
characterisitc: string;
|
||||
characteristic: string;
|
||||
/** This integer value will be incremented every read/writeRequested */
|
||||
requestId: number;
|
||||
/** Offset value */
|
||||
|
||||
@@ -577,6 +577,43 @@ export class CleverTap extends IonicNativePlugin {
|
||||
return;
|
||||
}
|
||||
|
||||
/****************************
|
||||
* Notification Inbox methods
|
||||
****************************/
|
||||
/**
|
||||
* Call this method to initialize the App Inbox
|
||||
*/
|
||||
@Cordova()
|
||||
initializeInbox(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Call this method to get the count of unread Inbox messages
|
||||
*/
|
||||
@Cordova()
|
||||
getInboxMessageUnreadCount(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Call this method to get the count of total Inbox messages
|
||||
*/
|
||||
@Cordova()
|
||||
getInboxMessageCount(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Call this method to open the App Inbox
|
||||
* @param styleConfig : any or empty object
|
||||
*/
|
||||
@Cordova()
|
||||
showInbox(styleConfig: any): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*******************
|
||||
* Developer Options
|
||||
******************/
|
||||
|
||||
182
src/@ionic-native/plugins/firebase-crashlytics/index.ts
Normal file
182
src/@ionic-native/plugins/firebase-crashlytics/index.ts
Normal file
@@ -0,0 +1,182 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
/**
|
||||
* @name Firebase Crashlytics
|
||||
* @description
|
||||
* A Google Firebase Crashlytics plugin to enable capture of crash reports.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { FirebaseCrashlytics } from '@ionic-native/firebase-crashlytics/ngx';
|
||||
*
|
||||
*
|
||||
* constructor(private firebaseCrashlytics: FirebaseCrashlytics) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
*
|
||||
* const crashlytics = this.firebaseCrashlytics.initialize();
|
||||
* crashlytics.logException('my caught exception');
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'FirebaseCrashlytics',
|
||||
plugin: 'cordova-plugin-firebase-crashlytics',
|
||||
pluginRef: 'FirebaseCrashlytics',
|
||||
repo: 'https://github.com/ReallySmallSoftware/cordova-plugin-firebase-crashlytics',
|
||||
install: 'ionic cordova plugin add cordova-plugin-firebase-crashlytics --variable ANDROID_FIREBASE_CORE_VERSION=16.0.0',
|
||||
installVariables: ['ANDROID_FIREBASE_CORE_VERSION'],
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class FirebaseCrashlytics extends IonicNativePlugin {
|
||||
/**
|
||||
* Simply add the plugin to get the default Crashlytics functionality. Note that crashes and logged exceptions will only be reported when the application restarts. In order to log caught exceptions the following can be used:
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
initialize(): void {
|
||||
return; // We add return; here to avoid any IDE / Compiler errors
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a forced crash. Visible in console after restart of application.
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
crash(): void {
|
||||
return; // We add return; here to avoid any IDE / Compiler errors
|
||||
}
|
||||
|
||||
/**
|
||||
* Log a priority message. Will only be logged in the event of a crash.
|
||||
*
|
||||
* @param {number} priority
|
||||
* @param {string} tag
|
||||
* @param {string} message
|
||||
* @returns {void}
|
||||
*/
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
logPriority(priority: number, tag: string, message: string): void {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Log a message. Will only be logged in the event of a crash.
|
||||
*
|
||||
* @param {string} message
|
||||
* @returns {void}
|
||||
*/
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
log(message: string): void {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Log when a handled exception has happened. Visible in console after restart of application.
|
||||
*
|
||||
* @param {string} message
|
||||
* @returns {void}
|
||||
*/
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
logException(message: string): void {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set extra key/value string value. Will only be logged in the event of a crash.
|
||||
*
|
||||
* @param {string} key
|
||||
* @param {string} value
|
||||
* @returns {void}
|
||||
*/
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
setString(key: string, value: string): void {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set extra key/value bool value. Will only be logged in the event of a crash.
|
||||
*
|
||||
* @param {string} key
|
||||
* @param {boolean} value
|
||||
* @returns {void}
|
||||
*/
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
setBool(key: string, value: boolean): void {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set extra key/value double value. Will only be logged in the event of a crash.
|
||||
*
|
||||
* @param {string} key
|
||||
* @param {number} value
|
||||
* @returns {void}
|
||||
*/
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
setDouble(key: string, value: number): void {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set extra key/value float value. Will only be logged in the event of a crash.
|
||||
*
|
||||
* @param {string} key
|
||||
* @param {number} value
|
||||
* @returns {void}
|
||||
*/
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
setFloat(key: string, value: number): void {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set extra key/value integer value. Will only be logged in the event of a crash.
|
||||
*
|
||||
* @param {string} key
|
||||
* @param {number} value
|
||||
* @returns {void}
|
||||
*/
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
setInt(key: string, value: number): void {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the identifier for the user. Take care when using this method and ensure you privacy policy is updated accordingly.
|
||||
*
|
||||
* @param {string} identifier
|
||||
* @returns {void}
|
||||
*/
|
||||
@Cordova({
|
||||
sync: true
|
||||
})
|
||||
setUserIdentifier(identifier: string): void {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -154,7 +154,7 @@ export interface Player {
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'GooglePlayGamesServices',
|
||||
plugin: 'cordova-plugin-play-games-service',
|
||||
plugin: 'cordova-plugin-play-games-services',
|
||||
pluginRef: 'plugins.playGamesServices',
|
||||
repo: 'https://github.com/artberri/cordova-plugin-play-games-services',
|
||||
platforms: ['Android'],
|
||||
|
||||
@@ -77,10 +77,7 @@ export class HTTP extends IonicNativePlugin {
|
||||
* @returns {Object} an object representing a basic HTTP Authorization header of the form {'Authorization': 'Basic base64EncodedUsernameAndPassword'}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
getBasicAuthHeader(
|
||||
username: string,
|
||||
password: string
|
||||
): { Authorization: string } {
|
||||
getBasicAuthHeader(username: string, password: string): { Authorization: string } {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -177,13 +174,14 @@ export class HTTP extends IonicNativePlugin {
|
||||
/**
|
||||
* Set SSL Cert handling mode, being one of the following values
|
||||
* default: default SSL cert handling using system's CA certs
|
||||
* legacy: use legacy default behavior (< 2.0.3), excluding user installed CA certs (only for Android)
|
||||
* nocheck: disable SSL cert checking, trusting all certs (meant to be used only for testing purposes)
|
||||
* pinned: trust only provided certs
|
||||
* @see https://github.com/silkimen/cordova-plugin-advanced-http#setsslcertmode
|
||||
* @param {'default' | 'nocheck' | 'pinned'} mode SSL Cert handling mode
|
||||
* @param {'default' | 'legacy' | 'nocheck' | 'pinned'} mode SSL Cert handling mode
|
||||
*/
|
||||
@Cordova()
|
||||
setSSLCertMode(mode: 'default' | 'nocheck' | 'pinned'): Promise<void> {
|
||||
setSSLCertMode(mode: 'default' | 'legacy' | 'nocheck' | 'pinned'): Promise<void> {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -279,13 +277,7 @@ export class HTTP extends IonicNativePlugin {
|
||||
* @returns {Promise<any>} returns a FileEntry promise that resolve on success, and reject on failure
|
||||
*/
|
||||
@Cordova()
|
||||
uploadFile(
|
||||
url: string,
|
||||
body: any,
|
||||
headers: any,
|
||||
filePath: string,
|
||||
name: string
|
||||
): Promise<any> {
|
||||
uploadFile(url: string, body: any, headers: any, filePath: string, name: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -298,12 +290,39 @@ export class HTTP extends IonicNativePlugin {
|
||||
* @returns {Promise<any>} returns a FileEntry promise that resolve on success, and reject on failure
|
||||
*/
|
||||
@Cordova()
|
||||
downloadFile(
|
||||
downloadFile(url: string, body: any, headers: any, filePath: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param url {string} The url to send the request to
|
||||
* @param options {Object} options for individual request
|
||||
* @param options.method {string} request method
|
||||
* @param options.data {Object} payload to be send to the server (only applicable on post, put or patch methods)
|
||||
* @param options.params {Object} query params to be appended to the URL (only applicable on get, head, delete, upload or download methods)
|
||||
* @param options.serializer {string} data serializer to be used (only applicable on post, put or patch methods), defaults to global serializer value, see setDataSerializer for supported values
|
||||
* @param options.timeout {number} timeout value for the request in seconds, defaults to global timeout value
|
||||
* @param options.headers {Object} headers object (key value pair), will be merged with global values
|
||||
* @param options.filePath {string} filePath to be used during upload and download see uploadFile and downloadFile for detailed information
|
||||
* @param options.name {string} name to be used during upload see uploadFile for detailed information
|
||||
*
|
||||
* @returns {Promise<HTTPResponse>} returns a promise that resolve on success, and reject on failure
|
||||
*/
|
||||
@Cordova()
|
||||
sendRequest(
|
||||
url: string,
|
||||
body: any,
|
||||
headers: any,
|
||||
filePath: string
|
||||
): Promise<any> {
|
||||
options: {
|
||||
method: 'get' | 'post' | 'put' | 'patch' | 'head' | 'delete' | 'upload' | 'download';
|
||||
data?: { [index: string]: any };
|
||||
params?: { [index: string]: string | number };
|
||||
serializer?: 'json' | 'urlencoded' | 'utf8';
|
||||
timeout?: number;
|
||||
headers?: { [index: string]: string };
|
||||
filePath?: string;
|
||||
name?: string;
|
||||
}
|
||||
): Promise<HTTPResponse> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
140
src/@ionic-native/plugins/luxand/index.ts
Normal file
140
src/@ionic-native/plugins/luxand/index.ts
Normal file
@@ -0,0 +1,140 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface LuxandConfig {
|
||||
/** The licence key got from Luxand */
|
||||
licence: string;
|
||||
/** The internal database name the tracker should use */
|
||||
dbname: string;
|
||||
/** the number of retry when registering of identifying a face */
|
||||
loginTryCount: number;
|
||||
}
|
||||
|
||||
export interface OMLFacialData {
|
||||
/** The status message */
|
||||
status: string;
|
||||
/** The message returned by the plugin */
|
||||
message: string;
|
||||
/** The unique name generated and associated to a face when registering */
|
||||
name: string;
|
||||
/** The unique id Luxand Face SDK tracker associate to a face in it's internal database */
|
||||
id: number;
|
||||
/** Extra information about the face including age, expressions */
|
||||
extra: {
|
||||
AGE?: any;
|
||||
GENDER?: any;
|
||||
EYESOPENED?: any;
|
||||
SMILE: any;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Luxand
|
||||
* @description
|
||||
* This plugin let you integrat Luxand Face SDK into your ionic projects, so you can implements face authentication easily in your applications.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { Luxand } from '@ionic-native/luxand';
|
||||
*
|
||||
*
|
||||
* constructor(private luxand: Luxand) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* //init Luxand Face SDK
|
||||
*
|
||||
* this.luxand.init({
|
||||
* licence: "",
|
||||
* dbname: "data.dat",
|
||||
* loginTryCount: 3
|
||||
* })
|
||||
* .then((res: any) => console.log(res))
|
||||
* .catch((error: any) => console.error(error));
|
||||
* // register a face
|
||||
* this.luxand.register({
|
||||
* timeout: 20000//20 seconds
|
||||
* })
|
||||
* .then(r=>{
|
||||
* console.log("Your FACE ID:", r.id);
|
||||
* console.log("Your AGE:", r.extra.AGE);
|
||||
* console.log("Your GENDER:", r.extra.GENDER);
|
||||
* console.log("SIMILING:", r.extra.SMILE>35? "YES": "NO");
|
||||
* console.log("EYE OPENED:", r.extra.EYESOPENED>45? "YES": "NO");
|
||||
* })
|
||||
* .catch(err=>{
|
||||
* if(err.messgae === "Already registered") {
|
||||
* //extra data available
|
||||
* console.log("Your AGE:", r.extra.AGE);
|
||||
* console.log("Your GENDER:", r.extra.GENDER);
|
||||
* console.log("SIMILING:", r.extra.SMILE>35? "YES": "NO");
|
||||
* console.log("EYE OPENED:", r.extra.EYESOPENED>45? "YES": "NO");
|
||||
* }
|
||||
* })
|
||||
* //to login using a face
|
||||
* this.luxand.login({
|
||||
* timeout: 20000
|
||||
* }).then(r=>console.log(r))
|
||||
* .catch(err=>console.log(err));
|
||||
*
|
||||
* ```
|
||||
* @interfaces
|
||||
* OMLFacialData
|
||||
* LuxandConfig
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'Luxand',
|
||||
plugin: 'codova-plugin-luxand',
|
||||
pluginRef: 'window.Luxand',
|
||||
repo: 'https://github.com/molobala/cordova-plugin-luxand',
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class Luxand extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Initialize Luxand SDK
|
||||
* @param config {LuxandConfig} LuxandConfig configuration object to use to init the SDK
|
||||
* @return {Promise<any>} // Returns a promise that resolves if Luxand FaceSDK is initialized succesffully
|
||||
*/
|
||||
@Cordova()
|
||||
init(config: LuxandConfig): Promise<any> {
|
||||
return;
|
||||
}
|
||||
/**
|
||||
* Identify methode, try to register a face in internal data base
|
||||
* @param params {any} Allow to specify the timeout value
|
||||
* @return {Promise<OMLFacialData>} // Returns a promise that resolve if a face has been detected and saved by the tracker in the internal database
|
||||
*/
|
||||
@Cordova()
|
||||
register(params: {timeout: number}): Promise<OMLFacialData> {
|
||||
return;
|
||||
}
|
||||
/**
|
||||
* Login method, try to authenticated a face
|
||||
* @param params {any} Allow to specify the timeout value
|
||||
* @return {Promise<OMLFacialData>}
|
||||
*/
|
||||
@Cordova()
|
||||
login(params: {timeout: number}): Promise<OMLFacialData> {
|
||||
return; // Returns a promise that resolve if a face is recognize successfully
|
||||
}
|
||||
/**
|
||||
* clear method, try to remove a face from internal database
|
||||
* @param id {number}
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
clear(id: number): Promise<any> {
|
||||
return;
|
||||
}
|
||||
/**
|
||||
* clearMemory method, try to clear internal database
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
clearMemory(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
96
src/@ionic-native/plugins/magnetometer/index.ts
Normal file
96
src/@ionic-native/plugins/magnetometer/index.ts
Normal file
@@ -0,0 +1,96 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
import { Observable } from 'rxjs';
|
||||
|
||||
export interface MagnetometerReading {
|
||||
/**
|
||||
* X reading of magnetometer. (Number)
|
||||
*/
|
||||
x: number;
|
||||
|
||||
/**
|
||||
* Y reading of magnetometer. (Number)
|
||||
*/
|
||||
y: number;
|
||||
|
||||
/**
|
||||
* Z reading of magnetometer. (Number)
|
||||
*/
|
||||
z: number;
|
||||
|
||||
/**
|
||||
* Calculated total - always positive of magnetometer. (Number)
|
||||
*/
|
||||
magnitude: number;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Device eMagnetometer
|
||||
* @description
|
||||
* Requires Cordova plugin: `cordova-plugin-magnetometer`. For more info, please see the [Device Orientation docs](https://github.com/sdesalas/cordova-plugin-magnetometer).
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* // DeviceOrientationCompassHeading is an interface for compass
|
||||
* import { Magnetometer, MagnetometerReading } from '@ionic-native/device-orientation/ngx';
|
||||
*
|
||||
* constructor(private magnetometer: Magnetometer) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* // Get the device current compass heading
|
||||
* this.deviceOrientation.getReading().then(
|
||||
* (data: MagnetometerReading) => console.log(data),
|
||||
* (error: any) => console.log(error)
|
||||
* );
|
||||
*
|
||||
* // Watch the device compass heading change
|
||||
* var subscription = this.deviceOrientation.watchReadings().subscribe(
|
||||
* (data: MagnetometerReading) => console.log(data)
|
||||
* );
|
||||
*
|
||||
* // Stop watching heading change
|
||||
* subscription.unsubscribe();
|
||||
* ```
|
||||
* @interfaces
|
||||
* MagnetometerReading
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'Magnetometer',
|
||||
plugin: 'cordova-plugin-magnetometer',
|
||||
pluginRef: 'cordova.plugins.magnetometer',
|
||||
repo: 'https://github.com/sdesalas/cordova-plugin-magnetometer',
|
||||
platforms: [
|
||||
'Android',
|
||||
'iOS',
|
||||
]
|
||||
})
|
||||
@Injectable()
|
||||
export class Magnetometer extends IonicNativePlugin {
|
||||
/**
|
||||
* Get the current compass reading.
|
||||
* @returns {Promise<MagnetometerReading>}
|
||||
*/
|
||||
@Cordova()
|
||||
getReading(): Promise<MagnetometerReading> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the device current heading at a regular interval
|
||||
*
|
||||
* Stop the watch by unsubscribing from the observable
|
||||
* @param {DeviceOrientationCompassOptions} [options] Options for compass. Frequency and Filter. Optional
|
||||
* @returns {Observable<DeviceOrientationCompassHeading>} Returns an observable that contains the compass heading
|
||||
*/
|
||||
@Cordova({
|
||||
callbackOrder: 'reverse',
|
||||
observable: true,
|
||||
clearFunction: 'stop'
|
||||
})
|
||||
watchReadings(
|
||||
): Observable<MagnetometerReading> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,27 @@ export interface PhotoViewerOptions {
|
||||
* Set to false to disable the share button (Android only). Default: true
|
||||
*/
|
||||
share?: boolean;
|
||||
/**
|
||||
* Add HTTP headers to the request. Useful for authenticated pages.
|
||||
* The value is a string in a JSON format. Default: ''
|
||||
*/
|
||||
headers?: string;
|
||||
/**
|
||||
* Option for close button visibility when share false [ONLY FOR iOS]
|
||||
*/
|
||||
closeButton?: boolean;
|
||||
/**
|
||||
* If you need to copy image to reference before show then set it true [ONLY FOR iOS]
|
||||
*/
|
||||
copyToReference?: boolean;
|
||||
/**
|
||||
* Enable or Disable Picasso Options ( Only Android ): fit, centerInside, centerCrop.
|
||||
*/
|
||||
piccasoOptions?: {
|
||||
fit?: boolean;
|
||||
centerInside?: boolean;
|
||||
centerCrop?: boolean;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -22,6 +43,8 @@ export interface PhotoViewerOptions {
|
||||
* this.photoViewer.show('https://mysite.com/path/to/image.jpg');
|
||||
*
|
||||
* this.photoViewer.show('https://mysite.com/path/to/image.jpg', 'My image title', {share: false});
|
||||
*
|
||||
* this.photoViewer.show('https://mysecuresite.com/path/to/image.jpg', 'My image title', {share: false, headers: '{username:foo,password:bar}'});
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
|
||||
21
src/@ionic-native/plugins/quikkly/index.ts
Normal file
21
src/@ionic-native/plugins/quikkly/index.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
/**
|
||||
* @name QuikklyPlugin
|
||||
* @description ionic wrapper for cordova-plugin-quikkly
|
||||
* Use the quikkly scanner in your ionic app
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'QuikklyPlugin',
|
||||
plugin: 'cordova-plugin-quikkly',
|
||||
pluginRef: 'cordova.plugins.quikkly',
|
||||
repo: 'https://github.com/quikkly/cordova-plugin-quikkly.git',
|
||||
platforms: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class QuikklyPlugin extends IonicNativePlugin {
|
||||
@Cordova()
|
||||
openScanner(): Promise<string[]> { return ; }
|
||||
}
|
||||
|
||||
170
src/@ionic-native/plugins/zoom/index.ts
Executable file
170
src/@ionic-native/plugins/zoom/index.ts
Executable file
@@ -0,0 +1,170 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
/**
|
||||
* @name Zoom
|
||||
* @description
|
||||
* A Cordova plugin to use Zoom Video Conferencing services on Cordova applications.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { Zoom } from '@ionic-native/zoom';
|
||||
*
|
||||
*
|
||||
* constructor(private zoomService: Zoom) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* // Initialize Zoom SDK, need to be called when app fired up.
|
||||
* this.zoomService.initialize(API_KEY, API_SECRET)
|
||||
* .then((success: any) => console.log(success))
|
||||
* .catch((error: any) => console.log(error));
|
||||
*
|
||||
* // Log user in with Zoom username and password.
|
||||
* this.zoomService.login(userName, password)
|
||||
* .then((success: any) => console.log(success))
|
||||
* .catch((error: any) => console.log(error));
|
||||
*
|
||||
* // Log user out.
|
||||
* this.zoomService.logout()
|
||||
* .then((success: boolean) => console.log(success))
|
||||
* .catch((error: any) => console.log(error));
|
||||
*
|
||||
* // Check whether user is logged in.
|
||||
* this.zoomService.isLoggedIn()
|
||||
* .then((success: boolean) => console.log(success))
|
||||
* .catch((error: any) => console.log(error));
|
||||
*
|
||||
* // meeting options (Only available for Android)
|
||||
* let options = {
|
||||
* "no_driving_mode":true,
|
||||
* "no_invite":true,
|
||||
* "no_meeting_end_message":true,
|
||||
* "no_titlebar":false,
|
||||
* "no_bottom_toolbar":false,
|
||||
* "no_dial_in_via_phone":true,
|
||||
* "no_dial_out_to_phone":true,
|
||||
* "no_disconnect_audio":true,
|
||||
* "no_share":true,
|
||||
* "no_audio":true,
|
||||
* "no_video":true,
|
||||
* "no_meeting_error_message":true
|
||||
* };
|
||||
*
|
||||
* // Join meeting.
|
||||
* this.zoomService.joinMeeting(meetingNumber, meetingPassword, displayName, options)
|
||||
* .then((success: any) => console.log(success))
|
||||
* .catch((error: any) => console.log(error));
|
||||
*
|
||||
* // Start an existing meeting for non-login user.
|
||||
* this.zoomService.startMeetingWithZAK(meetingNumber, displayName, zoomToken, zoomAccessToken, userId, options)
|
||||
* .then((success: any) => console.log(success))
|
||||
* .catch((error: any) => console.log(error));
|
||||
*
|
||||
* // Start an existing meeting for logged in user.
|
||||
* this.zoomService.startMeeting(meetingNumber, vanityId, options)
|
||||
* .then((success: any) => console.log(success))
|
||||
* .catch((error: any) => console.log(error));
|
||||
*
|
||||
* // Start an instant meeting for logged in user.
|
||||
* this.zoomService.startInstantMeeting()
|
||||
* .then((success: anu) => console.log(success))
|
||||
* .catch((error: any) => console.log(error));
|
||||
*
|
||||
* // Set language.
|
||||
* this.zoomService.setLanguage("en-US")
|
||||
* .then((success: any) => console.log(success))
|
||||
* .catch((error: any) => console.log(error));
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'Zoom',
|
||||
plugin: 'cordova.plugin.zoom', // npm package name, example: cordova-plugin-camera
|
||||
pluginRef: 'cordova.plugins.Zoom', // the variable reference to call the plugin, example: navigator.geolocation
|
||||
repo: 'https://github.com/zoom/zoom-sdk-ionic', // the github repository URL for the plugin
|
||||
platforms: ['Android', 'iOS'] // Array of platforms supported, example: ['Android', 'iOS']
|
||||
})
|
||||
@Injectable()
|
||||
export class Zoom extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Initialize Zoom SDK.
|
||||
* @param appKey Zoom SDK app key.
|
||||
* @param appSecret Zoom SDK app secret.
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
initialize(appKey: string, appSecret: string): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Log user in with Zoom username and password.
|
||||
* @param username user's Zoom username.
|
||||
* @param password user's Zoom password.
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
login(username: string, password: string): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Log user out.
|
||||
* @return {Promise<any>} true if logout success / false if failed.
|
||||
*/
|
||||
@Cordova()
|
||||
logout(): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Check whether the user is logged in.
|
||||
* @return {Promise<boolean>} true if is logged in / false if not.
|
||||
*/
|
||||
@Cordova()
|
||||
isLoggedIn(): Promise<boolean> { return; }
|
||||
|
||||
/**
|
||||
* Join a meeting for logged in user.
|
||||
* @param meetingNo meeting number.
|
||||
* @param meetingPassword meeting password.
|
||||
* @param options meeting options.
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
joinMeeting(meetingNo: string, meetingPassword: string, displayName: string, options: any): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Start a meeting for non-login user.
|
||||
* @param meetingNo meeting number.
|
||||
* @param displayName display name shown in meeting.
|
||||
* @param zoomToken zoom token retrieved from Zoom Rest API.
|
||||
* @param zoomAccessToken zoom access token retrieved from Zoom Rest API.
|
||||
* @param userId user ID retrieved from Zoom Rest API.
|
||||
* @param options meeting options.
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
startMeetingWithZAK(meetingNo: string, displayName: string, zoomToken: string, zoomAccessToken: string, userId: string, options: any): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Start a meeting for logged in user.
|
||||
* @param meetingNo meeting number.
|
||||
* @param options meeting option.
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
startMeeting(meetingNo: string, options: any): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Start an instant meeting for logged in user.
|
||||
* @param options meeting option.
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
startInstantMeeting(options: any): Promise<any> { return; }
|
||||
|
||||
/**
|
||||
* Set language.
|
||||
* @param languageTag language name.
|
||||
* @return {Promise<any>}
|
||||
*/
|
||||
@Cordova()
|
||||
setLocale(languageTag: string): Promise<any> { return; }
|
||||
|
||||
}
|
||||
@@ -10,6 +10,7 @@
|
||||
"no-extra-boolean-cast": false,
|
||||
"adjacent-overload-signatures": false,
|
||||
"ter-no-proto": false,
|
||||
"callable-types": false
|
||||
"callable-types": false,
|
||||
"ordered-imports": false
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user