Compare commits

...

1016 Commits

Author SHA1 Message Date
Daniel Sogl
409a985142 chore(): update changelog 2019-10-18 16:08:54 +02:00
Daniel Sogl
8534061b2f 5.15.1 2019-10-18 16:08:48 +02:00
Daniel Sogl
275741faed chore(package): bump deps 2019-10-18 16:07:43 +02:00
jcesarmobile
4c5d70eacd Revert "fix(barcode-scanner): add missing shouldAutorotate property (#3096)" (#3192)
This reverts commit 8ce541ff9a.
2019-10-18 07:14:30 +02:00
San Leen
0b43c69993 fix(wechat): add missing cordova decorators (#3195)
fix wechat plugin
2019-10-18 07:13:51 +02:00
jing-zhou
fb5d47bff2 fix(alipay): adjust pay function properties (#3197)
* fix bug 'Success is not a function #158'
https://github.com/terikon/cordova-plugin-photo-library/issues/158

* alipay: add optional success, error callback
for pay()  method
2019-10-18 07:13:02 +02:00
Matt Netkow
7033a1822e fix(keyboard): add missing CordovaProperty import (#3201) 2019-10-18 07:11:39 +02:00
Daniel Sogl
a840a03e33 docs(secure-storage): replace deprecated repo with maintained repo
closes: #3157 #3125
2019-10-08 14:38:28 +02:00
Pavel Kroh
fb540f7774 docs(smartlook): add iOS platform (#3196) 2019-10-08 12:12:33 +02:00
Daniel Sogl
cb4d5b5064 chore(): update changelog 2019-10-04 16:35:56 +02:00
Daniel Sogl
265b4ba02f 5.15.0 2019-10-04 16:35:50 +02:00
Daniel Sogl
5fc13abb10 chore(package): bump deps 2019-10-04 16:35:32 +02:00
Matthew Harris
b7a4e44308 docs(camera): adjust example types (#3188)
It seems like these two definitions were switched around accidentally. I'm just going from the obvious logic of it. I don't know if there is some situation where the names are intentionally switched around? Please only accept PR if you can vouch for my change.
2019-10-04 16:32:20 +02:00
jcesarmobile
a1fb93707f fix(keyboard): Update types with new 2.2.0 methods (#3187) 2019-10-04 16:31:50 +02:00
Bryant P
a575233f23 fix(pro): Removing Pro native wrapper (#3186) 2019-10-04 16:31:31 +02:00
Min Yin
66f2e155f0 feat(web-socket-server): Add cordova plugin websocket server (#3183)
* Add Basic WebSocketServer Class

* Change for custom plugin fork

* Set cordova observable property

* Setup for custom fork of plugin

Using custom fork for better support for
observables. Use original repo when pull request
https://github.com/becvert/cordova-plugin-websocket-server/pull/64 is merged

* Add Documentation

* Remove double quotes with single quotes

* Fix lint issues

* Fix stop() docs
2019-10-04 16:30:42 +02:00
Simon
5f16fcd292 feat(emm-app-config): add plugin (#3181)
* Add Emm App Config plugin

Add [emm-app-config](https://github.com/oracle/cordova-plugin-emm-app-config) plugin to retrieve EMM application configuration

* Update index.ts
2019-10-04 16:29:59 +02:00
Sefa Ilkimen
fc6d1d0c7f feat(http): add type definitions for new features available in v2.2.0 (#3185)
- support uploading multiple files
- support response type `json
2019-09-30 07:48:22 +02:00
Min Yin
acec6cfb18 fix(web-server): add path to response (#3184) 2019-09-29 13:24:17 +02:00
MaximBelov
f5d94d824d docs(mobile-accessibility): adjust documentation (#3180)
* fix(mobile-accessibility): fix documentation

* Update index.ts
2019-09-29 13:23:45 +02:00
Stéphane JAIS
70d4fcd30e docs(wonderpush): fix usage example (#3177) 2019-09-29 13:22:47 +02:00
Srinidhi
5cea6141c4 docs(unvired-cordova-sdk): update doc (#3171)
* feat(unvired-cordova-sdk): support login via email

* fix(unvired-cordova-sdk): return typed promise object for user settings

* fix(unvired-cordova-sdk): change return type to string for guid()

* doc(unvired-cordova-sdk): doc update

* doc(unvired-cordova-sdk): update doc

* feat(unvired-cordova-sdk): add support for metadata JSON

* doc(unvired-cordova-sdk): update doc

* doc(unvired-cordova-sdk): update doc
2019-09-29 13:22:11 +02:00
nrikiji
cb543b9841 fix(line-login): adjustment parameter (#3172) 2019-09-29 13:21:49 +02:00
Daniel Sogl
3f172cc2b8 chore(): update changelog 2019-09-13 14:54:35 +02:00
Daniel Sogl
98b463b0d3 5.14.0 2019-09-13 14:54:30 +02:00
Daniel Sogl
8940301e87 Merge remote-tracking branch 'origin/master' 2019-09-13 14:54:03 +02:00
Daniel Sogl
493405426c chore(package): bump deps 2019-09-13 14:53:57 +02:00
Mostafa Mansour
fcec2d16b3 feat(preview-any-file): add new plugin to preview the … (#3156)
* feat(cordova-plugin-preview-any-file): add new plugin to preview the files in both ios and android

* fix lint error

* add missing descriptions

* add the reop link
2019-09-13 14:53:57 +02:00
Jose Andrés Pérez Arévalo
d9ded4d164 feat(ssh-connect): add new plugin for ssh connection (#3169) 2019-09-13 14:53:57 +02:00
Dalton Pearson
141f0e6e41 feat(document-scanner): add quality and base64 (#3168)
* feat(document-scanner): add quality and base64

* removed trailing whitespace
2019-09-13 14:53:57 +02:00
jcesarmobile
199380c0c3 fix(screen-orientation): add window element to eventObservable (#3166) 2019-09-13 14:53:57 +02:00
Alexander Vagner
a46e308ea8 fix(firebase-x): adjust typings for hasPermission (#3161)
Current version of plugin has change, described in https://github.com/dpa99c/cordova-plugin-firebasex#breaking-api-changes, this commit fixed `hasPermission()` method typings
2019-09-13 14:53:57 +02:00
Daniel Sogl
fb0ee819be chore(package): bump deps 2019-09-13 14:53:26 +02:00
Mostafa Mansour
1b6506f53a feat(preview-any-file): add new plugin to preview the … (#3156)
* feat(cordova-plugin-preview-any-file): add new plugin to preview the files in both ios and android

* fix lint error

* add missing descriptions

* add the reop link
2019-09-13 15:42:08 +03:00
Jose Andrés Pérez Arévalo
d539eb4f62 feat(ssh-connect): add new plugin for ssh connection (#3169) 2019-09-13 15:41:24 +03:00
Dalton Pearson
cfcd8d16a6 feat(document-scanner): add quality and base64 (#3168)
* feat(document-scanner): add quality and base64

* removed trailing whitespace
2019-09-13 15:40:28 +03:00
jcesarmobile
6bc1b932c8 fix(screen-orientation): add window element to eventObservable (#3166) 2019-09-13 15:39:52 +03:00
Alexander Vagner
650615e883 Fix typings for hasPermission() (#3161)
Current version of plugin has change, described in https://github.com/dpa99c/cordova-plugin-firebasex#breaking-api-changes, this commit fixed `hasPermission()` method typings
2019-09-13 15:38:23 +03:00
Domvel
8b3b2a4b27 fix(core): Return the window object as default instead of the boolean from the typeof comparison (#3160)
* Fixes #2972

https://github.com/ionic-team/ionic-native/issues/2972

* If window does not exist.

But is there a case where window does not exist? If ionic-native always runs in browsers enviroment (like Cordova / WebView) we could remove the `typeof` checks.
2019-09-13 15:38:01 +03:00
Bas ten Feld
2b347fe889 fix(app-rate) add missing locale properties (#3159) 2019-09-13 15:37:37 +03:00
Ken Sodemann
8032429faa doc(OCR): use the appropriate export name (#3158) 2019-09-05 12:20:20 +02:00
Daniel Sogl
4cb97eeec4 docs(ocr): update example 2019-09-04 22:56:01 +03:00
Daniel Sogl
1d878c6902 chore(): update changelog 2019-08-30 16:04:21 +02:00
Daniel Sogl
e65ce4a879 5.13.0 2019-08-30 16:04:15 +02:00
Daniel Sogl
bfa4f62e2b chore(package): use angular 8 and ts 3.5 2019-08-30 16:02:57 +02:00
Daniel Sogl
1af96d1369 chore(package): bump deps 2019-08-30 15:57:46 +02:00
Srinidhi
dcce3489f4 doc(unvired-cordova-sdk): update doc (#3147)
* feat(unvired-cordova-sdk): support login via email

* fix(unvired-cordova-sdk): return typed promise object for user settings

* fix(unvired-cordova-sdk): change return type to string for guid()

* doc(unvired-cordova-sdk): doc update

* doc(unvired-cordova-sdk): update doc

* feat(unvired-cordova-sdk): add support for metadata JSON

* doc(unvired-cordova-sdk): update doc
2019-08-30 15:55:27 +02:00
Saninn
3a5c790a56 bugfix: add response type to permission checking (#3149) 2019-08-30 15:53:47 +02:00
Ziyaddin Sadigov
73493e222f fix(network): rename onchange method name (#3146) 2019-08-30 15:52:55 +02:00
MaximBelov
26447d22ea fix(anyline): added official plugin (#3144) 2019-08-30 15:52:33 +02:00
Marius Backes
a55bb60d70 fix(theme-detection): added android platform (#3143) 2019-08-30 15:52:07 +02:00
jcesarmobile
4d1e0e6949 fix(in-app-browser): update types to match cordova-plugin-inappbrowser 3.1.0 (#3142)
* Update index.d.ts

Property comments are omitted if they are not marked with double asterisks. Added missing asterisks

* Update index.d.ts

Updated comments to match linter settings

* Fix lint errors and some missing comments

* add missing options and improve types
2019-08-30 15:51:38 +02:00
Alberto Varela
189570d255 feat(google-play-games-services): add new synchronous methods (#3138) 2019-08-30 15:51:29 +02:00
Stéphane JAIS
64ca73e5cc docs(wonderpush): fix usage formatting (#3137) 2019-08-12 06:52:03 +02:00
Daniel Sogl
4337515961 chore(): update changelog 2019-08-09 11:17:23 +02:00
Daniel Sogl
c0d4a2ee34 5.12.0 2019-08-09 11:17:15 +02:00
Daniel Sogl
1f7e6a5d02 chore(package): bump deps 2019-08-09 11:11:10 +02:00
Akshay Dwivedi
fd81a5e5b7 feat(file-chooser): add missing options param (#3136)
added missing optional parameter to support mime types
2019-08-09 11:09:22 +02:00
Eliran Assaraf
f3b8e34091 fix(chooser): @param accept is supposed to be optional (#3134) 2019-08-09 11:08:20 +02:00
Matthew Harris
5cc91bc79a fix(background-geolocation): enum not string (#3131)
based on [this stackoverflow issue](https://stackoverflow.com/questions/57293829/argument-of-type-location-is-not-assignable-to-parameter-of-type-backgroundge/57302110#57302110) it seems passing the string causes problems in (some / all) scenarios
2019-08-09 11:07:39 +02:00
Srinidhi
e37a7221b1 doc(unvired-cordova-sdk): update doc (#3130)
* feat(unvired-cordova-sdk): support login via email

* fix(unvired-cordova-sdk): return typed promise object for user settings

* fix(unvired-cordova-sdk): change return type to string for guid()

* doc(unvired-cordova-sdk): doc update
2019-08-09 11:07:11 +02:00
BultjerCMC
016023a7bb fix(ms-adal): use correct accessTokenType prop (#3128)
Removed a typo, which made the Access Token Type undefined all the time.
2019-08-09 11:06:38 +02:00
Matthew Harris
852df98647 docs(image-picker): set repo url to active repo (#3127)
Original repo hasn't had a commit since 2016. `Repo:` parameter already updated but intro docs wasn't.
2019-08-09 11:05:53 +02:00
jfgreffier
7696706080 feat(http): add sendRequest responseType option (#3120) 2019-08-09 11:05:17 +02:00
Daniel Sogl
2c0aa4f124 fix(intercom): added logout, displayHelpCenter, sendPushTokenToIntercom (#3119) 2019-08-09 11:05:05 +02:00
František Spurný
8bcbc955e0 feat(smartlook): add plugin (#3117) 2019-08-09 11:04:51 +02:00
Maxim Belov
3bb6b59112 fix(intercom): added logout, displayHelpCenter, sendPushTokenToIntercom 2019-07-29 22:50:13 +03:00
Daniel Sogl
f6e77db7b0 chore(): update changelog 2019-07-29 16:12:06 +02:00
Daniel Sogl
acc587aca2 5.11.0 2019-07-29 16:12:00 +02:00
Daniel Sogl
c77bdf17c1 chore(package): bump deps 2019-07-29 16:10:14 +02:00
Daniel Sogl
0c9bf3bf49 feat(urbanairship): add plugin (#3114)
feat(urbanairship): add plugin
2019-07-29 12:02:29 +02:00
Daniel Sogl
f54b9e0797 doc(unvired-cordova-sdk): improve doc (#3108)
* feat(unvired-cordova-sdk): add plugin

* style(unvired-cordova-sdk): fix style

* doc(unvired-cordova-sdk): add doc

* doc(unvired-cordova-sdk): update doc

* style(unvired-cordova-sdk): fix style

* doc(unvired-cordova-sdk): fix readme errors

* doc(unvired-cordova-sdk): update doc

* doc(unvired-cordova-sdk): improve doc

* doc(unvired-cordova-sdk): remove clearFunction
2019-07-29 12:00:01 +02:00
Stéphane JAIS
7e08680d31 feat(wonderpush): add plugin (#3107) 2019-07-29 11:59:51 +02:00
patryk-fuhrman
de83edb99b feat(cordova-plugin-firebasex): Add plugin (#3106) 2019-07-29 11:59:41 +02:00
Daniel Sogl
fac94485a0 Update index.ts 2019-07-29 11:58:04 +02:00
Maxim Belov
9c9ed3518f feat(urbanship): add plugin 2019-07-29 01:53:09 +03:00
Srinidhi Anand Rao
a0779de633 doc(unvired-cordova-sdk): remove clearFunction 2019-07-23 13:57:37 +05:30
Srinidhi Anand Rao
50408b08c6 Merge commit 'a2f5acb48c8d197fad55276ffcee7eee5cf3065f'
# Conflicts:
#	src/@ionic-native/plugins/unvired-cordova-sdk/index.ts
2019-07-21 19:32:45 +05:30
Srinidhi Anand Rao
767391a4b4 doc(unvired-cordova-sdk): improve doc 2019-07-21 19:27:25 +05:30
Daniel Sogl
a2f5acb48c chore(): update changelog 2019-07-12 20:27:59 +02:00
Daniel Sogl
3a3e9338e7 5.10.0 2019-07-12 20:27:53 +02:00
Daniel Sogl
8badd2943a feat(anyline): add plugin (#3101)
closes: #3074
Co-authored-by: niconaso
2019-07-12 20:26:22 +02:00
Daniel Sogl
9a46ab1a6d chore(build): remove "default" 2019-07-12 20:12:54 +02:00
Daniel Sogl
952a5c8e11 Merge remote-tracking branch 'origin/master' 2019-07-12 20:11:42 +02:00
Daniel Sogl
2a995d94ec chore(build): upgrate to node 12 and gulp 4 2019-07-12 20:11:26 +02:00
Daniel Sogl
941d394da9 chore(build): upgrate to node 12 and gulp 4 2019-07-12 20:09:33 +02:00
Daniel Sogl
cc1f25c38c chore(package): bump deps 2019-07-12 11:45:30 +02:00
nrikiji
7aa08109ce fix(line-login): add missing email prop (#3098) 2019-07-12 11:41:35 +02:00
reymav
8ce541ff9a fix(barcode-scanner): add missing shouldAutorotate property (#3096)
* Disable or enable Autorotate camera into barcode scanner plugin

* fix asterisks in jsdoc must be aligned
2019-07-12 11:40:52 +02:00
Patrick Bußmann
75190f5166 docs(deeplinks): Added informations about AASA (iOS) and Asset Links (Android) to documentation (#3094) 2019-07-12 11:40:36 +02:00
Srinidhi
c697139089 doc(unvired-cordova-sdk): doc update (#3090)
* feat(unvired-cordova-sdk): add plugin

* style(unvired-cordova-sdk): fix style

* doc(unvired-cordova-sdk): add doc

* doc(unvired-cordova-sdk): update doc

* style(unvired-cordova-sdk): fix style

* doc(unvired-cordova-sdk): fix readme errors

* doc(unvired-cordova-sdk): update doc
2019-07-12 11:40:19 +02:00
Anton Zagrebelny
717f6864f3 fix(biocatch): added android platform and updated repo (#3086) 2019-07-12 11:39:42 +02:00
Marius Backes
e9fa3ee6f2 feat(theme-detection): add plugin (#3082) 2019-07-12 11:39:23 +02:00
Srinidhi Anand Rao
28ce962677 doc(unvired-cordova-sdk): update doc 2019-07-12 14:57:43 +05:30
Srinidhi Anand Rao
f576c5f11e doc(unvired-cordova-sdk): fix readme errors 2019-07-05 17:14:52 +05:30
Srinidhi Anand Rao
f488a75e26 Merge commit '2b684fadb179af64ac179e0a878b4ffdec0e85aa'
# Conflicts:
#	src/@ionic-native/plugins/unvired-cordova-sdk/index.ts
2019-07-05 15:44:16 +05:30
Srinidhi Anand Rao
55fb503d81 style(unvired-cordova-sdk): fix style 2019-07-05 15:16:14 +05:30
Srinidhi Anand Rao
afe95a6752 doc(unvired-cordova-sdk): update doc 2019-07-05 13:15:01 +05:30
Srinidhi Anand Rao
2ca8bda8f7 doc(unvired-cordova-sdk): add doc 2019-07-04 18:12:29 +05:30
Daniel Sogl
2b684fadb1 chore(): update changelog 2019-07-01 19:34:57 +02:00
Daniel Sogl
7f2da56a28 5.9.0 2019-07-01 19:34:23 +02:00
Daniel Sogl
4a546bd11a 5.8.0 2019-07-01 19:34:20 +02:00
Daniel Sogl
a0f5254988 Revert "chore(build): use node 12"
This reverts commit 8521b32306.
2019-07-01 19:32:24 +02:00
Daniel Sogl
8521b32306 chore(build): use node 12 2019-07-01 19:30:30 +02:00
Daniel Sogl
d52278b2d1 chore(package): bump deps 2019-07-01 19:29:32 +02:00
Timo
2fadb6b0e1 fix(firebase): add missing decorator to clearAllNotifications (#3059) 2019-07-01 19:27:03 +02:00
Lars Mikkelsen
ad11ed21ac refactor(core): allow rxjs 5.5 as peer dependency (#3068)
This would allow Ionic v3 apps to use Ionic Native v5 wrappers.
2019-07-01 19:26:20 +02:00
Wasenshi
5857b9654c feat(calendar): add deleteEventById function (#3075)
* Update index.ts

Please add this function

* Update index.ts
2019-07-01 19:24:40 +02:00
jing-zhou
92d5764e01 fix(alipay): use correct pluginRef (#3081) 2019-07-01 19:20:22 +02:00
Marius Backes
a4db080786 feat(sum-up): add plugin (#3080) 2019-07-01 19:19:44 +02:00
Szymon Stasik
54ac2bfdf5 feat(diagnostic): add DENIED_ONCE introduced by diagnostic v5 (#3071)
cordova.plugins.diagnostic@5.0.0 introduced breaking change moving from `DENIED` to `DENIED_ONCE` and make the statuses semantically equal for iOS and Android. For backward compatibility `DENIED` is untouched in this PR but marked as deprecated
2019-07-01 19:18:11 +02:00
Srinidhi
9274083b24 feat(unvired-cordova-sdk): add plugin (#3061)
* feat(unvired-cordova-sdk): add plugin

* style(unvired-cordova-sdk): fix style
2019-07-01 19:17:38 +02:00
Cam Wiegert
d04396e631 chore(scripts): add installVariables to docs-json output (#3079) 2019-06-28 14:23:28 -05:00
perry
c4b4584d2d couchbase depreciation warning 2019-06-19 11:02:40 -05:00
Eliran Elnasi
1fc09098fe fix(in-app-purchase-2): add missing option to register function (#3063)
* Update TS type for register() method

It should accept also a list of IAPProductOptions

* Update index.ts
2019-06-17 14:52:19 +02:00
Zahid Mahmood
b217bdb62a docs(launch-review): add missing bracket (#3062) 2019-06-15 08:14:48 +02:00
Srinidhi Rao
1b60247807 style(unvired-cordova-sdk): fix style 2019-06-14 14:08:58 +05:30
Srinidhi Rao
b75f40c76e feat(unvired-cordova-sdk): add plugin 2019-06-14 13:41:48 +05:30
Daniel Sogl
09ca1a1843 chore(package): bump deps 2019-06-10 20:12:32 +02:00
hanatharesh2712
6cbb226ed2 feat(sms-retriever): add plugin (#3052)
* created index.ts file for sms retriver plugin wrapper for ionic native

created index.ts file for sms retriver plugin wrapper for ionic native
Plugin name : cordova-plugin-sms-retriever-manager

* resolved tslint errors

resolved tslint errors

* Update index.ts

* Update index.ts
2019-06-10 20:04:43 +02:00
Jean-Christophe Hoelt
ed80933b6c feat(in-app-purchase-2): add documentation (#3055)
Ported to typescript from the repo's README and API documentation.
2019-06-10 20:04:26 +02:00
Gyula Isoó
300d7c229c fix(music-control): use correct input type (#3054) 2019-06-10 20:03:34 +02:00
Hatem
43442ac4ea feat(apple-wallet): support plugin version 3.0 (#3053)
BREAKING: Requires `cordova-apple-wallet@3.0`
2019-06-10 20:00:44 +02:00
Szymon Stasik
12f2782fef feat(diagnostic): add requestRemoteNotificationsAuthorization method (#3051)
solves #3050

while diagnostic plugin docs may be confusing, the `requestRemoteNotificationsAuthorization(successCallback, errorCallback, types, omitRegistration)` signature is available in the sources:

0fac4a59d1/www/ios/diagnostic.notifications.js (L162)
2019-06-10 19:55:26 +02:00
Daniel Sogl
a586734b92 chore(): update changelog 2019-06-03 07:09:54 +02:00
Daniel Sogl
f58183260d 5.7.0 2019-06-03 07:09:06 +02:00
Daniel Sogl
a3c49fd17a chore(package): bump deps 2019-06-03 07:08:38 +02:00
Daniel Sogl
6ee94b93ba refactor(core): set rxjs version to 6.5
BREAKING: rxjs@6.5 is required
2019-06-03 07:06:55 +02:00
Anup Sharma
a0ec1252e0 feat(onesignal): add missing "setExternalUserId" and "removeExternalUserId" functions (#3049)
* Adding missing functions to index.ts file

The functions were missing, Please refer to the issue #2909 
https://github.com/ionic-team/ionic-native/issues/2909

* Updated comments

Updated comments which were failing tslint test

* removed trailing whitespace

removed trailing whitespace
2019-06-03 06:56:36 +02:00
Michael Fornaro
dfb0aa3d5d feat(device-accounts): add "getPermissionsByType" function (#3048) 2019-06-03 06:56:23 +02:00
Adam Duren
312c126cc8 docs(firebase-messaging): update docs to support requestPermission forceShow and getToken tokenType options (#3047) 2019-06-03 06:56:00 +02:00
Robert Coie
b79c8b1ea0 feat(ocr): add plugin (#3044) 2019-06-03 06:55:49 +02:00
Robert Coie
49e81cc414 feat(document-scanner): add plugin (#3043) 2019-06-03 06:55:40 +02:00
Jeff Julian
2942ebfae4 feat(blinkid): added support for card overlay (#3041) 2019-06-03 06:55:30 +02:00
Jean-Christophe Hoelt
4ae35cba9a feat(in-app-purchase-2): update TypeScript definitions (#3037) 2019-06-03 06:55:17 +02:00
Daniel Pereira
bb7b516c50 feat(full-screen-image): add plugin (#3026)
* feat(full-screen-image): add plugin

* Update index.ts
2019-06-03 06:55:00 +02:00
pranav9k
c0b092b242 feat(biometric-wrapper): add plugin (#3025) 2019-06-03 06:54:50 +02:00
Daniel Sogl
a2fe674a3f chore(): update changelog 2019-05-27 07:42:47 +02:00
Daniel Sogl
f12da1f4f5 5.6.1 2019-05-27 07:42:39 +02:00
Daniel Sogl
0e7bec3633 chore(package): bump deps 2019-05-27 07:22:40 +02:00
Adam Duren
7588eaf9fd refactor(firebase-config): update wrapper to latest release 2.0.0 (#3027)
* Remove deprecated namespace parameter

* Update for cordova-plugin-firebase-config@2.0.0
2019-05-27 07:20:12 +02:00
Robert Coie
c5a9d0d258 docs(developer): remove stale observation about methods being static (#3033) 2019-05-27 07:19:10 +02:00
Safery Hossain
18e4a9cda6 docs(music-controls): fix example code (#3036)
The function this.musicControls.subscribe().subscribe was not closed properly, I added the proper syntax for closing the tag.
2019-05-27 07:18:52 +02:00
perry
26f63c744d docs(rollbar): adding link to rollbar in description 2019-05-17 10:20:23 -05:00
Daniel Sogl
1cb4c989f9 chore(): update changelog 2019-05-16 07:07:12 +02:00
Daniel Sogl
c80d081c92 5.6.0 2019-05-16 07:07:04 +02:00
Daniel Sogl
3e0a7395ca chore(circle-ci): optim "npm install" 2019-05-16 07:04:44 +02:00
Daniel Sogl
4c6dc71cbe chore(package): bump deps 2019-05-16 07:04:01 +02:00
Daniel Sogl
81a10280cc feat(biocatch): add plugin #3019
feat(biocatch): add plugin
2019-05-16 06:56:16 +02:00
Daniel Sogl
56e4a7827f feat(camera-preview): add wrapper for camera preview snapshot #3018
feat(camera-preview): add wrapper for camera preview snapshot
2019-05-16 06:56:00 +02:00
Daniel Sogl
c4fe2b7203 feat(foreground-service): add plugin #3017
feat(foreground-service): add plugin
2019-05-16 06:55:42 +02:00
Daniel Sogl
0dc320bbd2 feat(FileOpener): add showOpenWithDialog function #3014
feat(FileOpener): Added method showOpenWithDialog
2019-05-16 06:55:27 +02:00
Daniel Sogl
b4201e1b52 fix(blinkid): correct issue with blink card #3011
fix(blinkid): correct issue with blink card
2019-05-16 06:55:02 +02:00
Daniel Sogl
9a4bef34bb refactor(device-accounts): update source #3010
refactor(device-accounts): update source
2019-05-16 06:54:45 +02:00
Daniel Sogl
2bc8bdc49c feat(firebase-crash): add plugin (#3003) 2019-05-16 06:54:24 +02:00
Romain
e363d98bd8 fix(firebase-crashlytics): update initialise method (#2990) (#2991) 2019-05-16 06:54:13 +02:00
Anton Zagrebelny
980447673b fix(biocatch): updateCustomerSessionID argument can be null 2019-05-14 19:00:24 +03:00
Anton Zagrebelny
7afed90b56 fix(biocatch): start publicKey is now required even if null 2019-05-14 18:46:30 +03:00
Anton Zagrebelny
0634e64b58 refactor(biocatch): fixed casing 2019-05-14 16:21:21 +03:00
Anton Zagrebelny
a42e7b8258 feat(biocatch): add Biocatch plugin 2019-05-14 15:40:43 +03:00
Marc Kassay
5b5c6e61ac feat(foreground-service): allows background services 2019-05-13 18:10:42 -04:00
max-in-to
79037743b8 feat(camera-preview): add wrapper for camera preview snapshot 2019-05-09 21:14:27 -07:00
nerdic-coder
ed36dc492d feat(FileOpener): Added method showOpenWithDialog 2019-05-08 16:32:53 +03:00
Jeff Julian
1f31954cb3 fix(blinkid): resolve issues with blink card 2019-05-03 19:16:55 -05:00
Jeff Julian
4601ea3e01 fix(blinkid): correct issue with blink card 2019-05-03 19:04:14 -05:00
Michael Fornaro
45c64b0394 Merge branch 'master' into master 2019-05-04 09:28:29 +10:00
Michael
591c290dbd Fixing pluginRef and plugin name to match maintained npm module 2019-05-04 09:23:12 +10:00
Julian Sanio
66b9d1a011 feat(firebase-crash): add plugin 2019-04-29 17:58:17 +02:00
Daniel Sogl
25ef7c98bc chore(): update changelog 2019-04-29 08:14:33 +02:00
Daniel Sogl
19ddf3fb93 5.5.1 2019-04-29 08:14:25 +02:00
Daniel Sogl
20a3791a88 chore(package): bump deps 2019-04-29 08:12:26 +02:00
Simone Colazzo
9800271352 feat(CameraPreview): add getHorizontalFOV callback (#3000) 2019-04-29 08:07:10 +02:00
Daniel Sogl
e288a5d757 fix(background-geolocation): update source
closes: #2979
2019-04-29 08:05:01 +02:00
Daniel Sogl
ab7c7fa491 chore(): update changelog 2019-04-19 19:06:25 +02:00
Daniel Sogl
9e306e7de1 5.5.0 2019-04-19 19:06:18 +02:00
Daniel Sogl
92e0cb2385 chore(package): bump deps 2019-04-19 19:03:43 +02:00
Niklas Merz
0800f4a414 docs(fingerprint-aio): change parameter description (#2995)
* docs(fingerprint-aio): change parameter description

* Update index.ts
2019-04-19 18:59:51 +02:00
Adam Duren
e47774b771 fix(firebase-messaging): fix the typings of the FCM message payload (#2998) 2019-04-19 18:58:38 +02:00
Tobias Kausch
c0ce17b170 fix(background-mode): update types definitions (#2997)
On the last PR https://github.com/ionic-team/ionic-native/pull/2982
there was a little typing problem for the .on event listener call.
2019-04-19 18:58:28 +02:00
Zac
c518c8114d fix(google-plus): mark login param as required (#2996) 2019-04-19 18:58:04 +02:00
Johan Dufour
21dc1f9a56 feat(spotify-auth): add Spotify OAuth plugin (#2989) 2019-04-19 18:56:52 +02:00
Cesar de la Vega
7ea51fcf06 feat(purchases): update plugin to v0.0.5 (#2988)
* Updates to Cordova plugin 0.0.5

* Makes underlyingErrorMessage optional
2019-04-19 18:56:28 +02:00
Michael Fornaro
c063652800 feat(device-accounts): update plugin source (#2976)
* feat: updating device account wrapper with maintained fork with android 8.0 compatibility

* updating func to include getPermission for email permissions on android 8.0+

* revert package-lock as per feedback

* fix conflicts in package-lock.json, revert back to commit 49d7ca7375
2019-04-19 18:56:17 +02:00
Daniel Sogl
9024ea516a fix(nfc): rename makeReadyOnly to makeReadOnly
fix: #2985
2019-04-11 20:20:36 +02:00
Michael
e92b7aeb74 fix conflicts in package-lock.json, revert back to commit 49d7ca7375 2019-04-08 08:07:33 +10:00
Michael
dc51c3e1e8 revert package-lock as per feedback 2019-04-08 08:04:23 +10:00
Daniel Sogl
4859387925 chore(): update changelog 2019-04-07 20:02:36 +02:00
Daniel Sogl
10787c8056 5.4.0 2019-04-07 20:02:29 +02:00
Wojciech Bubolka
f874185a35 feat(in-app-purchase-2): add manageSubscriptions() (#2980)
* feat(in-app-purchase-2): add manageSubscriptions()

* feat(in-app-purchase-2): add manageSubscriptions()
2019-04-07 19:59:58 +02:00
Daniel Sogl
00e34877f3 chore(package): bump deps 2019-04-07 19:59:37 +02:00
Daniel Sogl
4de49c37dd feat(nativegeocoder): update plugin to v3.2.0 (#2958) 2019-04-07 19:56:31 +02:00
Daniel Sogl
bd4b2e2bb4 feat(nativegeocoder): update plugin to v3.2.0 (#2958)
* feat(nativegeocoder): update plugin to v3.2.0

* update imports
2019-04-07 19:22:12 +02:00
malua
aa138c4cfe fix(facebook): use object notation, otherwise EVENTS is´ undefined (#2955)
* fix(facebook-events-object): use object notation, otherwise EVENTS is undefined

* reverted prettier double quotes to single quotes
2019-04-07 19:19:42 +02:00
Timur Girgin
4e60c631ae fix(in-app-purchase2): Registering a product with an alias is now optional (#2946)
According to the documentation, alias is optional
https://github.com/j3k0/cordova-plugin-purchase/blob/master/doc/api.md#storeregisterproduct
2019-04-07 19:15:17 +02:00
Arzan Bhorr
767d3b3dd4 feat(google-play-games-services): add getPlayerScore function (#2949) 2019-04-07 19:13:04 +02:00
Cesar de la Vega
39be27566b feat(purchases): add new plugin for purchases (#2940)
* feat(purchases): create new plugin

* style(purchases): fix double quotes linter warning

* Update instructions to add strip frameworks phase

* removes trailing space

* fixes jsdoc
2019-04-07 19:10:42 +02:00
selected-pixel-jameson
029f82f1fd feat(in-app-purchase-2): add missing property (#2961)
feat(in-app-purchase-2): add missing property
2019-04-07 19:09:59 +02:00
Julián Mesa Llopis
6a19509ded fix(ble): fix definitions (#2974)
* Fix bad definitions in blueooth-le module in initialize and enable funcions

* Fix MATCH_MODE_AGGRESSIVE

* Fix startScan return

* Fix connect return

* Fix rssi function return type

* Fix disconnect return.
Fix close return.
Fix discover return.
Fix services return.
Fix mtu return.
2019-04-07 19:09:22 +02:00
Johan Dufour
c75aeb9c39 fix(background-mode): update types definitions (#2982) 2019-04-07 19:07:48 +02:00
Michael
dcd95582d2 updating func to include getPermission for email permissions on android 8.0+ 2019-04-06 11:19:42 +11:00
Michael
354af9fe6f feat: updating device account wrapper with maintained fork with android 8.0 compatibility 2019-04-03 12:28:16 +11:00
Daniel Sogl
49d7ca7375 chore(): update changelog 2019-03-19 19:03:51 +01:00
Daniel Sogl
8d91856103 5.3.0 2019-03-19 19:03:39 +01:00
Daniel Sogl
5221c8cf41 Merge remote-tracking branch 'origin/master' 2019-03-19 18:36:42 +01:00
Daniel Sogl
d827db27b0 Revert "refactor(template): update Inject decorator"
BREAKING CHANGE: This reverts commit c5ae6362d7.
2019-03-19 18:36:21 +01:00
Daniel Sogl
b9e46730e3 Revert "refactor(template): update Inject decorator"
This reverts commit c5ae6362d7.
2019-03-19 18:35:00 +01:00
Daniel Sogl
fcda5ffcab Revert "refactor: optimize plugins for angular treeshaking"
This reverts commit 8b53c04dc5.
2019-03-19 18:34:54 +01:00
Daniel Sogl
6fde61d69c chore(package): bump deps 2019-03-19 18:34:22 +01:00
Daniel Sogl
c8ff885023 chore: fix linter 2019-03-19 18:25:24 +01:00
Cam Wiegert
06654afae3 fix(scripts): check for TypeDoc tags when selecting plugin class (#2963) 2019-03-14 13:35:32 -05:00
Cesar de la Vega
e1a25af0b5 chore(common): fix linter error (#2941)
fix linter error by using conditional expression instead of assigning to element in multiple places
2019-03-11 14:35:26 -04:00
Sebastian Baar
419b68217e update imports 2019-03-10 13:46:53 +01:00
Sebastian Baar
cd97375e63 feat(nativegeocoder): update plugin to v3.2.0 2019-03-10 13:45:30 +01:00
Cam Wiegert
b0dea6dc58 feat(scripts): add docs-json script (#2947) 2019-03-05 13:22:58 -06:00
Adam Bradley
7e090cc6f2 fix(ssr): remove cordova warning during ssr 2019-02-24 00:16:45 -06:00
Adam Bradley
c2029f7927 fix(ssr): fix window references 2019-02-23 17:05:19 -06:00
Adam Bradley
5b1bdc37e0 fix(ssr): fix window references 2019-02-23 16:54:09 -06:00
Adam Bradley
e3e8c85087 fix(ssr): check for window and document 2019-02-23 11:34:16 -06:00
Daniel Sogl
03c01c687e chore(): update changelog 2019-02-20 18:05:14 +01:00
Daniel Sogl
c0684cb3d8 5.2.0 2019-02-20 18:05:08 +01:00
Daniel Sogl
9a85a5cd62 chore(package): bump deps 2019-02-20 17:54:47 +01:00
Hatem
7ae2ad4e3e feat(apple-wallet): update wrapper to release 2.0 (#2935)
* Add AppleWallet class interface

* Update index.ts

* Update index.ts

* update readme

* feat (apple wallet ): add methods to check existence and ellibagility

* lint

* lint

* Update index.ts
2019-02-20 17:42:41 +01:00
Daniel Sogl
c5ae6362d7 refactor(template): update Inject decorator 2019-02-20 17:40:13 +01:00
Daniel Sogl
8b53c04dc5 refactor: optimize plugins for angular treeshaking
BREAKING CHANGE: You can remove the plugin import from the app.module.ts because of the changed Inject decorator
2019-02-20 17:37:39 +01:00
Daniel Sogl
64230319a2 feat(linkedin): delete plugin
BREAKING: Removes linked in plugin (https://engineering.linkedin.com/blog/2018/12/developer-program-updates)
closes: #2925
2019-02-14 16:54:40 +01:00
Daniel Sogl
3d8cdde7eb chore(): update changelog 2019-02-14 16:39:43 +01:00
Daniel Sogl
e1b7aca3a9 5.1.0 2019-02-14 16:39:37 +01:00
Daniel Sogl
9bdb2fac9d feat(app-launcher): add plugin
related: #2889
2019-02-14 16:37:41 +01:00
Daniel Sogl
41c6bcafe6 feat(firebase-crashlytics): add plugin
related: #2889
2019-02-14 16:34:26 +01:00
Daniel Sogl
d55d1d6f7f chore(build): set min core version 2019-02-14 16:29:31 +01:00
Darshan Pania
aed25a6642 feat(clevertap): update for latest CleverTap Cordova plugin (#2931)
* feat(clevertap): add CleverTap plugin

* style(clevertap): cleanup stray lint error

* refactor

* feat(clevertap): update for latest CleverTap Cordova plugin
2019-02-14 11:56:51 +01:00
Edmu
daf04566a1 feat(http): add sendRequest function (#2910)
Adds missing sendRequest feature that has been implemented to cordova-plugin-advanced
which allows overriding global options for single request being sent via this method

Closes #2824
2019-02-14 09:58:22 +01:00
Daniel Sogl
4cb2aee62b chore(package): bump deps 2019-02-14 09:58:03 +01:00
Daniel Sogl
63124f35fd fix(build): remove wrong jsdoc 2019-02-14 09:52:05 +01:00
Doumbia Mahamadou
632dec28ae feat(luxand): add plugin (#2883)
* add Luxand Face SDK plugin

* (fix): alphatize imports for luxand plugin

* fix: changes required

* add git repo url
2019-02-14 09:50:46 +01:00
Carson Chen Zoom
50e05349ec feat(zoom): add plugin (#2916) 2019-02-14 09:49:29 +01:00
Afshawn Lotfi
fd27136de7 feat(magnetometer): add plugin (#2917) 2019-02-14 09:49:00 +01:00
byrner75
2833da472a feat(quikkly): add plugin(#2923) 2019-02-14 09:48:29 +01:00
smelzer
c5ceba1aae feat(photo-viewer): add new params (#2895)
* Change for new 'headers' option

As of 1.1.19 of PhotoViewer, a new PhotoViewer option was added called 'headers' which allows for HTTP headers to be used when requesting the image.  This is useful for authenticated sites.

* Typo in example

* Added new PhotoViewerOptions

There are several other new PhotoViewerOptions besides 'headers' that need to be imported into the latest version.  I was selfishly only concerned about the one I needed, but the build really needs them all.
2019-02-14 09:47:03 +01:00
Keith D. Moore
e1a490357d fix(http): add 'legacy' as valid option to setSSLCertMode (#2913)
* Add 'legacy' as valid option to setSSLCertMode

Fixes #2912

* Add 'legacy' to params for setSSLCertMode

* Update index.ts
2019-02-14 09:46:07 +01:00
mysoret
959a9135e4 feat(abbyy-rtr): add new options (#2915)
* Update index.ts

cordova-plugin-abbyy-rtr-sdk has updated a new field of orientation as per the version 1.0.9

* Update index.ts
2019-02-14 09:45:37 +01:00
Cam Wiegert
fc0a238229 fix(google-play-games-services): correct Cordova plugin name typo (#2920)
closes ionic-team/ionic-docs#424
2019-02-14 09:44:44 +01:00
Daniel Sogl
eeb68f1706 docs(background-geolocation): update usage doc (#2924)
docs(background-geolocation): update usage doc
2019-02-14 09:44:24 +01:00
Daniel Sogl
bceb428690 fix(build): fixed duplicate import identifiers (#2914) 2019-02-14 09:41:26 +01:00
Daniel Sogl
242240c711 chore(lint): update lit-rules 2019-02-14 09:41:16 +01:00
arnauddrain
e9911aa4ad style(background-geolocation): remove trailing whitespace 2019-02-11 14:20:56 +01:00
arnauddrain
04798c7354 docs(background-geolocation): update usage doc 2019-02-11 14:10:53 +01:00
Justin Cuaresma
3aedde55d8 fix(build): fixed duplicate import identifiers 2019-02-01 23:09:50 -05:00
Daniel Sogl
92140cd2db refactor(): small changes 2019-01-26 20:20:55 +01:00
Daniel Sogl
184986f06b docs(readme-gen): remove beta tag 2019-01-24 20:01:57 +01:00
Daniel Sogl
2ce2725b2a docs(gene): remove beta tag 2019-01-24 20:01:03 +01:00
Daniel Sogl
3d8455ae35 docs(readme): remove beta notes 2019-01-24 19:58:56 +01:00
mhartington
bf7ba9bd01 chore(): remove beta flag from release 2019-01-23 14:53:15 -05:00
mhartington
0883240f60 chore(): bump 2019-01-23 14:37:02 -05:00
Nate Drake
b6f340ae82 fix(bluetooth-le): Fix typo in InitializeResult interface definition (#2891) 2019-01-23 16:35:25 +01:00
Daniel
0612aef725 chore(package): update deps 2019-01-23 08:10:51 +01:00
Daniel
4bf7ba6085 chore(build): update update_docs.sh 2019-01-23 08:06:04 +01:00
Daniel
707d40bd83 chore(build): fix lint errors 2019-01-23 08:04:14 +01:00
Daniel
b4e0764d71 chore(build): use node 10 2019-01-23 08:03:18 +01:00
Daniel
c1d7ce13dd chore(build): update utils.inc.sh 2019-01-23 08:02:24 +01:00
Daniel
999853eb32 chore(build): update prepare.sh 2019-01-23 07:58:54 +01:00
Daniel
dfd6714331 chore(package): refresh package-lock 2019-01-23 07:57:02 +01:00
Daniel
898c68bb5e Merge remote-tracking branch 'origin/v5' 2019-01-23 07:54:31 +01:00
Daniel Sogl
674e80ee61 chore(): update changelog 2019-01-20 17:49:40 +01:00
Daniel Sogl
7e817a0223 5.0.0-beta.24 2019-01-20 17:49:32 +01:00
Daniel Sogl
2efc5b2e2c chore(lint): ignore unused rule 2019-01-20 17:46:43 +01:00
Daniel Sogl
3f65ce1c7e chore(package): bump deps 2019-01-20 17:44:29 +01:00
Daniel Sogl
2d49671282 refactor(admob): add decorators 2019-01-20 17:40:40 +01:00
Daniel Sogl
a9dbb23b23 Merge branch 'master' into v5 2019-01-20 17:37:35 +01:00
Daniel Sogl
9250d49970 chore(): update changelog 2019-01-20 17:09:26 +01:00
Daniel Sogl
2397ef9d60 4.20.0 2019-01-20 17:09:14 +01:00
Daniel Sogl
dbd8b4c080 chore(package): bump deps 2019-01-20 17:06:51 +01:00
Daniel Sogl
1ba6f97082 feat(background-geolocation): add v3 functions and interfaces (#2393)
feat(background-geolocation): add v3 functions and interfaces
2019-01-19 09:42:59 +01:00
Nate Drake
c2f45616ac fix(bluetooth-le): Fix typo in interface definition (#2881) 2019-01-19 09:31:07 +01:00
Nicolas Naso
603d6943ef feat(lottie-splash-screen): add new plugin (#2880)
* feat(lottie-splash-screen): added new plugin

* Update index.ts
2019-01-19 09:30:41 +01:00
JaviRpo
3226f76ef9 feat(web-intent): Add missing type info (#2878) 2019-01-19 09:26:29 +01:00
Marc Kassay
34ecd29d9f feat(audio-management): add plugin for audio streams (#2877)
* feat(audio-management): add plugin for audio streams

* Update index.ts
2019-01-19 09:25:51 +01:00
TobyEb
874be0bb04 feat(colored-browser-tabs): added new plugin (#2876)
* feat(colored-browser-tabs): added new plugin

* feat(colored-browser-tabs): added new plugin

* feat(colored-browser-tabs): added new plugin

* Update index.ts

* Update index.ts
2019-01-19 09:23:32 +01:00
Srđan Tubin
9e6705df7f feat(adjust): add adjust sdk plugin (#2872)
* feat(adjust): add adjust sdk plugin

* Update index.ts
2019-01-19 09:15:44 +01:00
retreatnot
7c46d8c2fc feat(firebase): add clearAllNotifications method (#2867)
* feat(firebase): add clearAllNotifications method

Added new method clearAllNotifications()

https://github.com/arnesson/cordova-plugin-firebase/blob/master/docs/API.md#clearAllNotifications

* remove trailing whitespace
2019-01-19 09:15:35 +01:00
Ibby Hadeed
651a40f784 chore(): update changelog 2019-01-08 07:06:18 -05:00
Ibby Hadeed
f420d2b830 5.0.0-beta.23 2019-01-08 07:06:12 -05:00
Ibby Hadeed
e374b52c59 feat: add analytics-firebase plugin 2019-01-08 07:06:05 -05:00
Daniel
7d3ddf89ae chore(): update changelog 2019-01-04 22:22:17 +01:00
Daniel
19b3e8f521 4.19.0 2019-01-04 22:22:10 +01:00
Daniel
c14ea31a8a chore(package): bump deps 2019-01-04 22:21:43 +01:00
AppFeel
707ce1cad9 feat(admob): add plugin (#2864)
* feat(admob): add plugin

* Update index.ts
2019-01-04 22:08:49 +01:00
ewwwgiddings
d33bcb0220 feat(in-app-browser): add 'beforeload' as option (#2863)
Please see the issue I created here for more information: https://github.com/ionic-team/ionic-native/issues/2861

This allows Ionic-Native to be used with the latest features of Cordova InAppBrowser's github.
2019-01-04 22:08:20 +01:00
AppFeel
5df3de7dc0 feat(analytics-firebase): add plugin (#2862)
* feat(analytics-firebase): upload analytics-firebase plugin

* Update index.ts
2019-01-04 22:08:07 +01:00
Matthew Harris
d499a4db8d docs(camera): fix markup (#2858)
camera xml example wasn't wrapped in code brackets
2019-01-04 22:07:46 +01:00
waliu
e2b25deff6 feat(gao-de-location): add plugin (#2857)
* Add a gaode Map Location

* 增加详细的返回信息

* Return type has been added

* Update index.ts
2019-01-04 22:07:01 +01:00
Eric Horodyski
c3de8dfaba feat(baidu-push): add plugin (#2838)
* Initial push.

* Revert tslint.json and switch imports around to be alphabetical.

* Remove non-used plugins to decrease build time.

* Finish the BaiduPush interface.

* Add observables.

* Restore other plugins.

* Restore file formatting.

* Update documentation.

* Update index.ts
2019-01-04 22:06:52 +01:00
Dima Vishnevetsky
448e064012 docs(firebase): add onNotificationOpen usage example (#2835) 2019-01-04 22:06:37 +01:00
Andrew Crites
8e405cc3d3 feat(blinkid): add plugin (#2833)
* feat(blinkid): add plugin

* fix(blinkid): type name corrections
2019-01-04 22:06:25 +01:00
João Mourão
6ef854f4f1 docs(camera): update xml in warning part (#2832)
* Update xml in warning part

* Update index.ts
2019-01-04 22:06:17 +01:00
J-Loup
ea3150e99a fix(health): fix typos (#2831) 2019-01-04 22:05:58 +01:00
shinya.saiho
3edd62e56c chore(template): reorder imports (#2839) 2018-12-27 09:31:04 +01:00
Daniel
7483c3554c chore(): bump deps 2018-12-07 13:41:16 +01:00
Daniel
06634dc5f4 chore(): update changelog 2018-12-01 17:07:08 +01:00
Daniel
8879ffb789 5.0.0-beta.22 2018-12-01 17:06:42 +01:00
Daniel
649dca1ef4 chore: update deps
BREAKING CHANGE: Requires Angular 7.1 and TypeScript 3.1
2018-12-01 17:04:03 +01:00
Daniel
165c3cc211 Merge branch 'master' into v5 2018-12-01 16:55:01 +01:00
Daniel
b63102a5fa Fix random build errors 2018-12-01 16:34:42 +01:00
Daniel
df7ec0146c chore(): update changelog 2018-12-01 16:28:27 +01:00
Daniel
20878516b4 4.18.0 2018-12-01 16:28:20 +01:00
Simon Bang Terkildsen
b166cc51ea fix(local-notifications): update type of the every property (#2825) 2018-12-01 16:21:17 +01:00
Simon Bang Terkildsen
31e4058257 fix(local-notifications): update type of the every property (#2825) 2018-12-01 16:06:27 +01:00
Daniel
543fa64b35 Revert "bump deps"
This reverts commit dcac00e7ad.
2018-12-01 15:55:58 +01:00
Daniel
dcac00e7ad bump deps 2018-12-01 15:53:51 +01:00
Luka313
006570483d feat(downloader): add plugin (#2820)
* feat(downloader): add plugin

* Update index.ts
2018-12-01 15:49:50 +01:00
Ziyaddin Sadigov
b7594e201b docs(network): fix typo (#2828) 2018-12-01 15:48:53 +01:00
JMRMourao
1396b61215 docs(camera): improve docs (#2827) 2018-12-01 15:48:41 +01:00
Luka313
b9e9aa184e feat(downloader): add plugin (#2820)
* feat(downloader): add plugin

* Update index.ts
2018-12-01 15:48:11 +01:00
Fabrício Júnio
4f8779a969 refactor(card-io): allow number as type for guideColor (#2815)
* Change guide color to string|number type 

When the platform is Android, the cordova plugin wait for an Int value to set the guide color.

* Update index.ts
2018-11-15 20:11:01 +01:00
nrikiji
7145afa24f feat(line-login): add loginWeb function (#2810)
* add line-login

* Update index.ts

* add params and result type

* Update index.ts

* Update index.ts

* feat(line-login)add method
2018-11-15 07:36:49 +01:00
Appie
66316d29fe refactor(keyboard-setResizeMode): use explicit type (#2811)
This will ensure consumers of this plugin don't need to go on a quest of finding what the possible values are, the values are derived from [here](https://github.com/ionic-team/cordova-plugin-ionic-keyboard#keyboardresizemode)
2018-11-15 07:35:39 +01:00
Suraj Rao
7dcd6b27a0 docs(sqlite): update usage example (#2805)
executeSql takes array param not object according to the function declaration in code.
2018-11-07 08:37:49 +01:00
Daniel
b98393462d chore(): update changelog 2018-11-02 18:04:49 +01:00
Daniel
f9011c89c8 4.17.0 2018-11-02 18:04:43 +01:00
Daniel
4b4b2c45a0 chore: bump deps 2018-11-02 17:54:07 +01:00
Antonio José López
43bfeb487a feat(firebase-authentication): add plugin (#2797)
* feat(firebase-authentication): add plugin

* Update index.ts

* Update index.ts
2018-11-02 17:18:41 +01:00
Philip
accfba8a40 docs(file): update jsdoc (#2757)
* Update index.ts: Fix JSDoc

* Update index.ts

* Update index.ts
2018-11-02 17:17:38 +01:00
nrikiji
dc4183da07 feat(line-login): add plugin (#2782)
* add line-login

* Update index.ts

* add params and result type

* Update index.ts

* Update index.ts
2018-11-02 17:09:15 +01:00
duncan-c
b61b33987f fix(contacts plugin): add the rawId parameter (#2799)
* fix(contacts plugin): add the rawId parameter

This adds the rawId parameter to the contact class which allows the rawId value to be passed to Android which is required for saving contacts.

* Update index.ts
2018-11-02 17:08:43 +01:00
dominic-ks
39b4b85631 docs(social-sharing): update web share api link (#2794)
Just a tiny error in an anchor link there.
2018-10-28 09:38:54 +01:00
Rick Sollet
669dd02285 docs(mobile-accessibility): update usage (#2795) 2018-10-28 09:38:03 +01:00
Ahsan Ayaz
a3bd19769f feat(crashlytics): allow user to set userIdentifier for crashlytics (#2792)
setting user identifier is available since cordova-plugin-firebase@2.0.3 (https://github.com/arnesson/cordova-plugin-firebase/blob/master/CHANGELOG.md#features)
added the functionality to the firebase ionic native plugin
2018-10-27 11:18:04 +02:00
Martin Kausche
ff3ef094e0 docs(admob-plus): fix the Plugin Name, added repo (#2781)
The newly added wrapper for Admob __Plus__  had Admob __Free__ as its name.

This resulted in a broken docs-Page, _Admob Free_ occurred twice, both showing infos for _Admob Plus_
2018-10-18 16:24:46 +02:00
Daniel
2933d40cdc chore(): update changelog 2018-10-17 19:55:57 +02:00
Daniel
874ae88ff4 4.16.0 2018-10-17 19:55:52 +02:00
Marco
a02ca715e9 docs(one-signal): fix target url for notification icon (#2780)
The correct path is described at the official documentation from OneSignal. 
Link: https://documentation.onesignal.com/docs/customize-notification-icons
2018-10-17 19:53:44 +02:00
Daniel Sogl
336b3ff89b fix(local-notifications): add missing functions (#2779)
closes: #2778
2018-10-17 19:53:22 +02:00
Stephen Wolff
2aa73b5546 feat(nfc): add NFC readerMode (#2777)
* Work on NFC reader-mode

* Remove dist files, not needed in plugin development folder

* Revert package changes

This reverts part of commit 24a893fdcf.

* Update index.ts

* Correct the flags and return types for the wrapper

* Add reader flags.

Thanks @sfaizanh
2018-10-17 19:52:52 +02:00
Jordan Benge
99cebcba0b feat(lastCam): add plugin (#2759)
* feat(lastCam): add plugin

* feat: added watchRecordingTimer observer

* fix(lastCam): update plugin name

* refactor: lint file and refactor description
2018-10-17 19:52:39 +02:00
Paul Stelzer
6c99ec8033 feat(admob-plus): Add admob-plus (#2753) 2018-10-17 19:52:25 +02:00
Faizan Hasan
a167bd85aa fix(keyboard) isVisible property missing (#2751)
* isVisible property missing

* fix(lint)

* fix(lint) CI

* fix(CordovaProperty) Imported CordovaProperty from core
2018-10-14 13:31:01 +02:00
Niklas Merz
487acd603b refactor(network): add enum for connection types (#2754) 2018-10-14 13:30:34 +02:00
Sultan
fb4d2640c1 docs(apple-wallet): update example (#2755)
* Add AppleWallet class interface

* Update index.ts

* Update index.ts

* update readme
2018-10-14 13:30:25 +02:00
Markus Karileet
4468b520ad feat(speechkit): plugin updated with voice parameter (#2761) 2018-10-14 13:30:11 +02:00
BradyShober
1a2dc3ee73 feat(firebase-messaging): add revokeToken function (#2763) 2018-10-14 13:30:00 +02:00
mhartington
220e22b659 docs(): add ngx import path 2018-10-10 16:13:45 -05:00
Max Lynch
00a1674fd6 Merge pull request #2758 from ajcrites/geo-msg
docs(geolocation): use more generic / professional message
2018-10-03 18:07:12 -05:00
Andrew Crites
2b14bd979e docs(geolocation): use more generic / professional message 2018-10-03 18:59:43 -04:00
Perry Govier
ac78a1540c chore(tidy up): getting rid of redundant code to make TSDoc happy (#2747) 2018-09-27 08:05:08 +02:00
Daniel
bdd1755f8b chore(): update changelog 2018-09-25 20:37:32 +02:00
Daniel
3ed39c06ed 5.0.0-beta.21 2018-09-25 20:37:24 +02:00
Daniel
89a5ca7ec5 merge master into v5 2018-09-25 20:29:32 +02:00
Daniel
0422521db6 chore(package): bump deps 2018-09-25 20:12:57 +02:00
Ken Sodemann
8d57df3e64 fix(keyboard): include the mode parameter in setResizeMode() 2018-09-25 10:12:24 -05:00
Daniel Sogl
fcd6d26727 fix(keyboard): add missing property 2018-09-25 17:11:43 +02:00
Daniel
f95003cbe1 chore(): update changelog 2018-09-25 17:02:43 +02:00
Daniel
8e5f2e5ab3 4.15.0 2018-09-25 17:02:35 +02:00
Sultan
307477da78 feat(plugins): add AppleWallet (#2740)
* Add AppleWallet class interface

* Update index.ts

* Update index.ts
2018-09-25 16:57:01 +02:00
Daniel
f691883a29 disable failing unit test (tmp) 2018-09-25 16:54:58 +02:00
Daniel
0d5d4f30a9 docs(keyboard): fix small typo 2018-09-25 16:51:53 +02:00
Ken Sodemann
1457a1698b fix(keyboard): use cordova-plugin-ionic-keyboard (#2743)
Previous was using the deprecated keyboard plugin.

Fixes #2306
2018-09-25 16:50:29 +02:00
Ken Sodemann
fbf7463724 fix(keyboard): use cordova-plugin-ionic-keyboard (#2743)
Previous was using the deprecated keyboard plugin.

Fixes #2306
2018-09-25 16:45:43 +02:00
Rahul Pandey
bfd46eed16 feat(SqliteDbCopy):add plugin (#2731)
* feat(SqliteDbCopy):add plugin

* refactor(SqliteDbCopy):add success/error index

* Update index.ts
2018-09-25 16:44:53 +02:00
somq
cbeb4139d9 fix(bluetooth-le): Removed a wrong cordova decorator param (#2733)
* fix(bluetooth-le): Removed a wrong cordova decorator param (v5)

* fix(bluetooth-le): Fixed wrong return encapsulation - removed 'result' prop - for methods read and subscribe
2018-09-25 16:44:42 +02:00
Bart Wesselink
3eff280127 feat(siri-shortcuts): Add clear option for the activated shortcut (#2734)
* feat(siri-shortcuts): Add clear option for the getActivatedShortcutOperation

* Update index.ts
2018-09-25 16:43:47 +02:00
Tom Seldon
457d47cc16 fix(secure-storage): add missing "getPromise" import (#2727) 2018-09-25 16:42:31 +02:00
Benoit Perrin
8116ddd139 feat(plugins): add web-server plugin (#2726)
* feat(plugins): add web-server plugin

Add support of the cordova-plugin-webserver plugin, to start a
a dynamic content web server on iOS and android devices.

* Update index.ts
2018-09-25 16:42:07 +02:00
Daniel
358474dcfd fix(build): fix macos mojave build errors 2018-09-25 11:06:10 +02:00
Daniel
d6d9b54991 chore(package): cleanup deps 2018-09-25 11:04:22 +02:00
Daniel
93ff513bd8 chore(package): bump deps 2018-09-24 19:16:55 +02:00
Daniel
d3af51915e Revert "chore(pacakge): bump deps"
This reverts commit 276c88dea1.
2018-09-24 19:14:04 +02:00
Daniel
276c88dea1 chore(pacakge): bump deps 2018-09-24 19:08:57 +02:00
Daniel
653f5a2969 fix(secure-storage): import getPromise 2018-09-24 19:07:06 +02:00
Daniel
e661f2ece9 fix(screenshot): import getPromise 2018-09-24 19:06:55 +02:00
Daniel
15cd285ec6 fix(printer): import getPromise 2018-09-24 19:06:40 +02:00
Daniel Sogl
95b92623a6 fix(admob-free): fix duplicated class 2018-09-24 18:59:51 +02:00
Daniel
a6bcc9affd feat(taptic-engine): add missing functions and types 2018-09-18 22:35:58 +02:00
Daniel
c0d8c99e8d Merge remote-tracking branch 'origin/master' 2018-09-18 22:29:20 +02:00
Daniel
7aa5e00453 chore(): update changelog 2018-09-18 19:23:27 +02:00
Daniel
59fd0cc50d 5.0.0-beta.20 2018-09-18 19:23:22 +02:00
Max Lynch
c433317051 fix(build): Fix TypeScript bug, wrong type exported for wrap fn 2018-09-18 19:23:00 +02:00
Daniel
f223ed4fa1 chore(): update changelog 2018-09-18 16:25:35 +02:00
Daniel
7160953683 5.0.0-beta.19 2018-09-18 16:25:26 +02:00
Daniel
4c55212b8d chore(pacakge): bump deps 2018-09-18 16:24:57 +02:00
Daniel
38a1dd1187 Merge branch 'master' into v5 2018-09-18 16:24:05 +02:00
Daniel
fe9655ed84 chore(build): fix publish script 2018-09-18 16:08:49 +02:00
Daniel
41c034cc19 chore(): update changelog 2018-09-18 16:03:39 +02:00
Daniel
89631a9fa6 4.14.0 2018-09-18 16:03:29 +02:00
Daniel
04db233b33 feat(chooster): add plugin
closes: #2612
2018-09-18 15:58:57 +02:00
Daniel
10d222dcea feat(local-notifications): add missing functions 2018-09-18 15:37:39 +02:00
Daniel
640da1b618 docs(ibeacon): typo 2018-09-18 15:22:17 +02:00
Daniel
aecb0f9460 chore(package): bump dgeni 2018-09-18 15:17:21 +02:00
Daniel
d077c48205 fix(web-intent): add missing properties
closes: #2701
2018-09-18 11:08:45 +02:00
Daniel
49d27e816c refactor(email-composer): reorder code 2018-09-18 11:03:02 +02:00
Daniel Sogl
3699fa9b50 fix(mobile-accessibility): add correct pluginRef
closes: #1860
2018-09-18 10:12:27 +02:00
Daniel
ab4f1f5bbe docs(onesignal): hide option from docs
closes: #1969
2018-09-18 10:08:24 +02:00
Daniel
51006a76a0 feat(onesignal): add missing functions
closes: #2504
2018-09-18 10:05:34 +02:00
Rishi Hindocha
8bab32173a fix(onesignal): add missing setLocationShared method (#2723)
* fix(onesignal): add missing setLocationShared method

* Update index.ts
2018-09-18 09:40:55 +02:00
Daniel Sogl
3ef9593704 fix(push): add missing Chanel options
closes: #2712
2018-09-18 09:30:09 +02:00
Daniel
ffae843c0f chore(): update changelog 2018-09-17 18:54:45 +02:00
Daniel
7cff234c26 chore(): update changelog 2018-09-17 18:27:54 +02:00
Daniel
039c6d40af Merge branch 'master' into v5 2018-09-17 18:23:18 +02:00
Daniel
33e4392b63 refactor: remove unused lint rules 2018-09-17 17:59:41 +02:00
Daniel
9acbb9fcd6 refactor: follow only-arrow-functions lint rule 2018-09-17 17:56:35 +02:00
Daniel
c1e1c5cb79 refactor: follow order-imports lint rule 2018-09-17 17:50:36 +02:00
Daniel
46b1a7385c docs: add @beta tag to docs until v5 release 2018-09-17 17:24:17 +02:00
Daniel
0c7cfeeeb8 refactor: update lint rules 2018-09-17 17:09:46 +02:00
Daniel Sogl
737ad518c8 Update tslint.json 2018-09-17 16:36:18 +02:00
Daniel
89ed51cc49 refactor: follow callable-types lint rule 2018-09-17 16:18:31 +02:00
Daniel
26a8df9b7c refactor: follow no-angle-bracket-type-assertion lint rule 2018-09-17 16:14:23 +02:00
Daniel
84db491ead refactor(code-push): follow member-access lint rule 2018-09-17 16:09:15 +02:00
Daniel
d5011fb105 refactor: follow space-before-function-paren lint rule 2018-09-17 16:07:44 +02:00
Daniel
c9d41ebd8a refactor: follow array-type lint rule 2018-09-17 16:05:37 +02:00
Daniel
60a7190eda refactor(in-app-review): ignore no-irregular-whitespace rule 2018-09-17 15:52:39 +02:00
Daniel
261106131e fix(index-app-content): fix lint 2018-09-17 15:48:57 +02:00
Daniel
4803912350 fix(ms-adal): remove duplicate imports 2018-09-17 15:48:37 +02:00
Daniel
9feefe8454 fix(web-intent): fix lint 2018-09-17 15:43:27 +02:00
Daniel
81df665189 chore(package): bump jest and ts-node 2018-09-17 15:41:59 +02:00
Daniel
f2c8edecc4 chore(package): update ionic-lint-rules 2018-09-17 15:37:05 +02:00
Daniel
6c18a8bc4f chore(package): remove more unused packages 2018-09-17 15:25:40 +02:00
Daniel
ca7f872a3c chore(package): remove babelify 2018-09-17 15:22:15 +02:00
Daniel
2c04ae5985 chore(scripts): remove fs-extra-promise 2018-09-17 15:18:29 +02:00
Daniel
a7830693af chore(scripts): remove fs-extra-promise 2018-09-17 15:14:37 +02:00
Daniel
2e47de2ee3 chore(): update changelog 2018-09-15 11:53:31 +02:00
Daniel
384d1ea71e 5.0.0-beta.18 2018-09-15 11:53:21 +02:00
Daniel
f7e76c5f83 chore(package): bump deps 2018-09-15 11:48:44 +02:00
Daniel
d2d1f4889e Merge branch 'master' into v5 2018-09-15 11:46:46 +02:00
Daniel
b60d5d4851 chore(): update changelog 2018-09-15 11:15:09 +02:00
Daniel
0c4aeddd1b 4.13.0 2018-09-15 11:15:04 +02:00
Daniel
667de5ba26 Revert "chore(): update changelog"
This reverts commit 2c2c1e482c.
2018-09-15 11:14:49 +02:00
Daniel
2dc7ee8916 Revert "4.12.3"
This reverts commit 7c419b48ad.
2018-09-15 11:14:41 +02:00
Daniel
2c2c1e482c chore(): update changelog 2018-09-15 11:05:56 +02:00
Daniel
7c419b48ad 4.12.3 2018-09-15 11:05:48 +02:00
弄潮儿
0b9717636c feat(janalytics): add plugin (#2711)
* add janalytics native plugin

* add new plugin of wechat

* rm plugin wechat

* Update index.ts
2018-09-15 11:02:53 +02:00
弄潮儿
10ac9ff9de feat(wechat): add plugin (#2716)
* add janalytics native plugin

* add new plugin of wechat

* rm janalytics plugin

* Update index.ts

* Update index.ts

* Update index.ts
2018-09-15 11:01:10 +02:00
Paul Stelzer
90d75af9d1 feat(branch-io): Add branch.io attribution and invitation plugin (#2691)
* feat(branch-io): Add branch.io attribution and invitation plugin

* Update index.ts
2018-09-15 10:55:01 +02:00
Paul Stelzer
3b3f942ed5 feat(appsflyer): Added Appsflyer Cordova SDK as ionic native plugin (#2690)
* feat(appsflyer): Added Appsflyer Cordova SDK

* fix(appsflyer): Corrected promises

* fix(appsflyer): Add description

* fix(appsflyer): Missing semicolon

* Update index.ts
2018-09-15 10:48:17 +02:00
Niklas Merz
9601a64227 feat(calldirectory): add log function (#2708)
* feat(calldirectory): add log function

* Update index.ts
2018-09-15 10:43:11 +02:00
Paul Stelzer
22fd49b5d3 fix(in-app-review): Transfer Plugin to the correct folder (#2688) 2018-09-15 10:41:20 +02:00
ratnakar24
890129bfda fix(ms-adal): Update createAuthenticationContext (#2705)
* Update createAuthenticationContext

Update createAuthenticationContext to include validateAuthority flag since it is throwing Error: Fail to valid authority with errors: [50049].
Without the flag it is throwing Error: Fail to valid authority with errors: [50049].

* Update index.ts
2018-09-15 10:39:41 +02:00
Tyler Hall
6a9a871758 docs(onesignal): update incorrect path to hook file (#2715) 2018-09-15 10:39:14 +02:00
Todd Vrba
ac467c50ac feat(mixpanel): Update/add functions (#2697)
* Update mixpanel typings for Ionic native.

* Update index.ts
2018-09-15 10:37:52 +02:00
iAmMrHands
267149b16f feat(local-notifications): Added local additional local notification action fields (#2713) 2018-09-15 10:37:24 +02:00
somq
7047920a2a fix(bluetooth-le): Various methods fixes (#2707)
* feat(bluetooth-le): implemented all available methods and refactored existing ones

* fix(bluetooth-le): Removed @memberof jsdoc annotations to avoid ci check failure

* fix(bluetooth-le): Fixed multiple jsdocs typos/misformats preventing CI to pass checks while generating readmes

* fix(bluetooth-le): Removed package-lock.json

* Update index.ts

* fix(bluetooth-le): Fixed stringToBytes method, now properly takes a string as arg and return an Uint8Array

* fix(bluetooth-le): getAdapterInfo now returns an Observable for easier tracking of adapter states

* fix(bluetooth-le): Fixed missing cordova param (observable: true) in initializePeripheral method, fixed getAdapterInfo method, now return an adapterInfo object

* chore(bluetooth-le): Removed @description markup to allow a proper doc auto-format

* fix(bluetooth-le): Reverted getAdapterInfo method to a Promise return
2018-09-15 10:37:03 +02:00
Daniel
8f8aeb6e6a 5.0.0-beta.17 2018-08-31 20:31:56 +02:00
Daniel
f75243e10b chore(): update changelog 2018-08-31 19:34:07 +02:00
Daniel
0f5ae4726d 5.0.0-beta.16 2018-08-31 19:34:01 +02:00
Daniel
5462a2358c chore(package): bump deps 2018-08-31 19:30:57 +02:00
Daniel
9c75e53702 Merge branch 'master' into v5 2018-08-31 19:29:20 +02:00
Daniel
aad814fcf1 chore(): update changelog 2018-08-31 19:09:35 +02:00
Daniel
03d6b2373c 4.12.2 2018-08-31 19:09:24 +02:00
Daniel Kasper
d82e675442 fix(in-app-browser): fix mandatory options (#2684)
fix(in-app-browser): fix mandatory options
2018-08-31 19:05:33 +02:00
Daniel
1e84e23fd9 chore(): update changelog 2018-08-31 14:26:00 +02:00
Daniel
f3f12cb306 4.12.1 2018-08-31 14:25:53 +02:00
Daniel
b3bd0a83c7 chore(package): bump deps 2018-08-31 14:24:28 +02:00
rvdleun
03e4f0e439 feat(push): Added voip property to IOSPushOptions (#2681)
* feat(push): Added missing voip property to IOSPushOptions

* Update index.ts
2018-08-31 14:23:40 +02:00
Pandiarajan Nagarajan
a73146648f feat(aes256): Added new utility methods to generate secure key and secure IV (#2675) 2018-08-31 14:21:30 +02:00
Daniel Kasper
d90724ef70 feat(in-app-browser): Add missing InAppBrowserOptions-properties (#2669) 2018-08-31 14:21:19 +02:00
Brad Mallow
be0dc3dac4 fix(open-native-settings): allow supported input (#2666)
* allow supported input

* Update index.ts
2018-08-31 14:21:07 +02:00
Max Lynch
2213673055 Merge pull request #2679 from perrygovier/v5
fix(contacts): fixing builds
2018-08-30 14:41:13 -05:00
perry
c8d25a1fc5 fix(camera): fixing builds 2018-08-30 14:16:38 -05:00
Nicolas HENRY
bd345818f8 fix(core): wrapEventObservable (#2660)
* fix wrapEventObservable

* fix lint
2018-08-26 19:38:22 -04:00
Daniel
110fb7e8e1 chore(): update changelog 2018-08-25 12:11:37 +02:00
Daniel
c0d776cdd2 5.0.0-beta.15 2018-08-25 12:11:21 +02:00
Daniel
89140c1502 docs(bluetooth-le): fix jsdoc 2018-08-25 12:08:48 +02:00
Daniel
8f19719d2a chore(package): bump deps 2018-08-25 12:06:40 +02:00
Daniel
999aca1b8d Merge branch 'master' into v5 2018-08-25 12:05:57 +02:00
Daniel
a0a64da518 chore(package): bump deps 2018-08-25 12:02:03 +02:00
somq
591ee87e05 feat(bluetooth-le): add bluetooth-le plugin (#2651)
* feat(bluetooth-le): implemented all available methods and refactored existing ones

* fix(bluetooth-le): Removed @memberof jsdoc annotations to avoid ci check failure

* fix(bluetooth-le): Fixed multiple jsdocs typos/misformats preventing CI to pass checks while generating readmes

* fix(bluetooth-le): Removed package-lock.json

* Update index.ts
2018-08-25 12:01:05 +02:00
Paxton Hare
1ad4cc1375 fix(contacts): remove double import of checkAvailability (#2659) 2018-08-25 11:59:19 +02:00
Ibby Hadeed
38b6501612 chore(): handle identifiers in v5 build process
Closes #2652
2018-08-23 10:15:28 -04:00
Paxton Hare
fe87b68ccc chore(): fix CordovaInstanceProperty decorator (#2655)
This manifests in many plugins just not quite working right.
2018-08-23 09:40:00 -04:00
Paxton Hare
9e923fa8da chore(): fix path related issues with v5 build (#2654) 2018-08-23 09:37:10 -04:00
Daniel
5e9c92a773 fix(extended-device-information): fix wrong decorator 2018-08-21 21:12:43 +02:00
Daniel
5ac940d2bf chore(package): bump deps 2018-08-21 20:51:02 +02:00
Daniel
8db1dbef71 feat(http): add setSSLCertMode function 2018-08-21 20:39:21 +02:00
Daniel
73ae92d77c chore(): update changelog 2018-08-17 00:33:54 +02:00
Daniel
3c2753df64 4.12.0 2018-08-17 00:33:47 +02:00
Daniel
9035476833 chore(package): bump package-lock 2018-08-17 00:33:34 +02:00
Daniel
e47a3e1522 fix(clevertap): fix jsdoc 2018-08-16 22:46:34 +02:00
Daniel
1a1c665b18 chore(package): bump deps 2018-08-16 22:46:19 +02:00
Daniel
f2728f26fe merge master into v5 2018-08-16 22:43:50 +02:00
Daniel
5f5e605e66 Merge remote-tracking branch 'origin/master' 2018-08-16 22:23:09 +02:00
Daniel
ea6746d134 chore(build): refactor 2018-08-16 22:23:03 +02:00
Daniel Sogl
753fa4a7a4 Update CHANGELOG.md 2018-08-16 22:19:18 +02:00
Daniel
ff784a4377 Auto stash before revert of "4.12.0" 2018-08-16 22:18:20 +02:00
Daniel
0764e28408 Revert "4.12.0"
This reverts commit 5825932e03.
2018-08-16 22:18:04 +02:00
Daniel
0197c88a03 chore(): update changelog 2018-08-16 22:10:36 +02:00
Daniel
5825932e03 4.12.0 2018-08-16 22:10:23 +02:00
Daniel
bccc8ac379 chore(package): update package-lock 2018-08-16 22:10:15 +02:00
Daniel
3eb382d438 chore(package): bump deps 2018-08-16 22:06:19 +02:00
Ashwin Dinesh
ca9a702808 feat(webengage): add optional config with initialization (#2637)
* feat(webengage): add optional config with initialization

* Update index.ts
2018-08-16 22:01:54 +02:00
Daniel Sogl
3f415f9bef fix(photo-library): interface missing includeVideos
Co-authored-by: @devdaddy 

closes: #2624
2018-08-16 21:58:30 +02:00
Luis Enrique Perez Alvarez
0c6d1eabe2 docs(onesignal): fix typo
OneSignla -> OneSignal
2018-08-16 21:56:11 +02:00
Niklas Merz
61fecf511b docs(firebase-dynamic-links): Change example (#2646)
* docs(firebase-dynamic-links): Change example

* Update index.ts
2018-08-16 21:55:59 +02:00
Daniel Ehrhardt
2ac52822b8 fix(extended-device-information): Fixed Memory Display Bug (#2641)
* Fixed Memory Display Bug with ExtendedDeviceInformation Plugin

* Update index.ts

* Update index.ts
2018-08-16 21:55:51 +02:00
rupendraa
229b62c10b feat(local-notifications): add new foreground property (#2633)
* Update index.ts

* Update index.ts
2018-08-16 21:55:17 +02:00
Gordeev Artem
9b4fd02fa5 feat(fabric): add fabric plugin (#2618)
* feat(fabric): add fabric plugin

* Update index.ts
2018-08-16 21:54:39 +02:00
Marat Dyatko
d10777a33b fix(network): bind listener to document instead of window (#2622)
We noticed that in some cases network state listeners are stopped triggering, but `navigator.onLine` still reflects the state correctly. I used the following code to debug and found out an issue with `window` and `document` difference:

```js
window.addEventListener("online", ()=>console.warn('WINDOW ONLINE'), false); // won't be triggered
window.addEventListener("online", ()=>console.warn('WINDOW ONLINE'), false); // won't be triggered
document.addEventListener("online", ()=>console.warn('DOCUMENT ONLINE'), false); // triggered
document.addEventListener("online", ()=>console.warn('DOCUMENT ONLINE'), false); // triggered
```

Also, according to plugin documentation, listeners should be bound to `document`: https://github.com/apache/cordova-plugin-network-information#offline
2018-08-01 04:41:51 -04:00
Daniel
4f26069ca6 chore(): update changelog 2018-07-29 10:05:10 +02:00
Daniel
40571e5c99 4.11.0 2018-07-29 10:04:57 +02:00
Daniel
83194f616b Revert "chore(package): upgrade fs-extra"
This reverts commit 4297c3d43e.
2018-07-29 09:59:53 +02:00
Daniel
b1f4df530a rerun build 2018-07-29 09:57:03 +02:00
Daniel
4297c3d43e chore(package): upgrade fs-extra 2018-07-29 09:52:36 +02:00
Daniel
95d495b468 chore(package): bump deps 2018-07-29 09:44:22 +02:00
Daniel
f0989d1b96 chore(package): upgrade to angular 5
BREAKING: Ionic Native v4 requires now Angular 5
2018-07-29 09:21:43 +02:00
Daniel
c113417878 docs(readme): update readme 2018-07-29 09:20:23 +02:00
Daniel
cedd6df423 Merge remote-tracking branch 'origin/master' 2018-07-29 09:16:11 +02:00
Daniel
4b14ce2eec refactor(http): change return type to any 2018-07-29 09:16:00 +02:00
pwilkniss
27d380ef4b feat(clevertap): add CleverTap plugin (#2609)
* feat(clevertap): add CleverTap plugin

* style(clevertap): cleanup stray lint error

* refactor
2018-07-29 09:13:37 +02:00
Ashwin Dinesh
bd5bd7ea9d feat(webengage): add webengage plugin (#2604)
* feat(webengage): add webengage plugin

* refactor
2018-07-29 09:11:05 +02:00
Jan Piotrowski
c6713862c5 refactor: Improve Ionic Native warnings (#2611)
- Explicitly spell out that this is coming from "Ionic Native", instead of just "Native"
- Improve sentence that explains 2 most common reasons for missing Cordova
2018-07-29 09:10:48 +02:00
Daniel
3b32e19bf1 feat(facebook): add getDeferredApplink function
closes: #2510
2018-07-29 09:10:17 +02:00
Daniel
4092831754 fix(http): add correct return types for downloadFile and uploadFile
closes: #2615
2018-07-29 08:57:16 +02:00
Daniel Sogl
c2fe5f8336 docs(contacts): mark as deprecated 2018-07-27 21:39:58 +02:00
Daniel Sogl
2f560d619a docs(contacts): mark as deprecated 2018-07-27 21:39:22 +02:00
Daniel
3f9067d090 chore(): update changelog 2018-07-25 12:57:52 +02:00
Daniel
36a4e81fe4 4.10.1 2018-07-25 12:57:38 +02:00
Gustavo Maximiliano Cortez
79cb478c26 fix(user-agent): Plugin not installed (#2607)
fix(user-agent): Plugin not installed
2018-07-24 16:59:19 +02:00
Dominik Geng
b635ba99ea fix(nfs): Optional arguments for records like textRecord (#2605)
fix(nfs): Optional arguments for records like textRecord
2018-07-24 16:59:02 +02:00
Daniel
342b9dace5 chore(): update changelog 2018-07-18 22:21:56 +02:00
Daniel
07557e95ec chore(): update changelog 2018-07-18 22:20:12 +02:00
Daniel
b7be1bf9dd 5.0.0-beta.14 2018-07-18 22:19:46 +02:00
Daniel
b01c2ee1fb docs(build): fix lint 2018-07-18 22:17:37 +02:00
Daniel
bea5eaea1a Merge branch 'master' into v5 2018-07-18 22:12:44 +02:00
Daniel
0f84249b13 chore: update changelog 2018-07-18 21:53:13 +02:00
Daniel
80adfe0891 chore(): update changelog 2018-07-18 21:52:41 +02:00
Daniel
0550a4fcc1 4.10.0 2018-07-18 21:52:19 +02:00
Etienne BLANC-COQUAND
e50ef18e10 docs(network-interface): update example (#2602)
Don't need {
2018-07-18 21:50:30 +02:00
Moshe
b581a5b2b6 feat(ccm): replace plugin source (#2601) 2018-07-18 21:50:16 +02:00
jing-zhou
e640983340 feat(alipay): replace plugin (#2591)
BREAKING CHANGE: Replaced plugin with maintained Cordova plugin
2018-07-18 21:49:32 +02:00
Sebastian Baar
a6c8045593 feat(classkit): add ClassKit plugin (#2590)
* add classkit plugin

* refactor
2018-07-18 21:48:07 +02:00
Carsten Schindler
ecc698ee7a feat(abbyy-rtr): add ABBYY Real-Time Recognition plugin (#2580)
* feat(abbyy-rtr): add ABBYY Real-Time Recognition plugin

* refactor(abbyy-rtr) add CordovaCheck
2018-07-18 21:47:44 +02:00
Daniel
97b80b533b chore(package): bump deps 2018-07-18 21:46:58 +02:00
Daniel
b66d27b794 chore(): update changelog 2018-07-13 17:12:51 +02:00
Daniel
c3a9296a36 4.9.2 2018-07-13 17:12:38 +02:00
Gustav Bylund
565c766813 fix(sqlite): mark optional arguments for executeSql (#2592) 2018-07-13 17:06:51 +02:00
jasvindersingh-evon
1684202629 docs(document-picker): fix example (#2593) 2018-07-13 17:06:37 +02:00
Don Coleman
d95a359719 fix(ble): change signature for autoConnect (#2594)
* fix(ble): change signature for autoConnect (#2573)

* fix(ble): update usage for autoConnect (#2573)
2018-07-13 17:06:17 +02:00
Daniel
12ddf96705 chore(): update changelog 2018-07-09 19:51:19 +02:00
Daniel
fead657fbd 4.9.1 2018-07-09 19:50:51 +02:00
Daniel
f1d8d3b255 Revert "chore(package): bump deps"
This reverts commit 6af01d2dc1.
2018-07-09 19:48:52 +02:00
Daniel
6af01d2dc1 chore(package): bump deps 2018-07-09 19:45:23 +02:00
Shubham Pandey
006ba4425f docs(linkedin): fix example (#2588)
* added missing `)` in login code
2018-07-08 18:43:54 +02:00
Judson Neer
4f415892b1 feat(network-interface): match latest plugin release (#2587) 2018-07-08 18:43:44 +02:00
Matt
713efd7206 docs(sqlite): Add interface for transaction callback function argument (#2586)
The transaction callback function argument is currently typed as `any`, however this isn't very  helpful so I have added a base interface which contains only the `executeSql` function. This function is all that is available on the object returned by WebSQL, but is also available on the full SQLite implementation.
2018-07-08 18:43:31 +02:00
Sebastián Ramírez
3f9311090d docs(app-version): explain results (#2582)
* fix(app-version): fix getVersionCode to return number

as is in the actual implementation. Also update and clarify the method docs

* fix(app-version): fix getVersionCode for compatibility
with Android and iOS at the same time
2018-07-04 13:43:46 +02:00
Daniel Sogl
28a1b83d1d docs(readme): update examples 2018-07-02 10:59:40 +02:00
Cosmic Web Services
956e644fa4 fix(health-kit): add missing checkAuthStatus param (#2544)
* Fix checkAuthStatus

* Update index.ts

* Update index.ts
2018-07-02 10:51:10 +02:00
Timothy Shamilov
f62a123a34 feat(streaming-media): add new parameters & docs (#2576) 2018-07-02 10:47:28 +02:00
Daniel
8e1ca359ab refactor(build): remove decamelize 2018-07-01 13:16:55 +02:00
Daniel
6ea43ef5e4 refactor(scripts): fix typo 2018-07-01 13:12:27 +02:00
Daniel
f9c49dcd3f chore(package): bump deps 2018-07-01 12:55:00 +02:00
filippo
61714ff7ca fix(barcode-scanner): wrong barcode format identifier PDF417 -> PDF_417 (#2574) 2018-06-29 21:38:46 +02:00
Charles
9f9a3461f7 feat(ble): add missing functions (#2572) 2018-06-29 21:30:13 +02:00
Renjith VK
22ffb4914f docs(deeplinks): update example (#2570)
If it has only one argument, then no need function brackets. It would decrease the readability of the source code snippets.
2018-06-28 14:40:37 +02:00
Daniel Sogl
db70bbd765 Update CHANGELOG.md 2018-06-28 14:37:43 +02:00
Daniel
81287c9edf chore(): update changelog 2018-06-28 14:37:02 +02:00
Daniel
6398dcf479 set version 2018-06-28 14:22:47 +02:00
Daniel
0a758f85e6 Merge branch 'master' into v5 2018-06-28 14:20:20 +02:00
Daniel
3ed896960e chore(): update changelog 2018-06-28 14:12:07 +02:00
Daniel
249d62d4ba set version 2018-06-28 14:04:42 +02:00
Daniel
1d71bdc284 chore(build): test against node 8 2018-06-28 13:51:35 +02:00
Daniel
189d66cc47 fix(index-app-content): fix imports 2018-06-28 13:49:30 +02:00
Daniel
fe5b7ce0af docs(index-app-content): fix spelling and lint errors 2018-06-28 13:47:09 +02:00
Daniel
23e0977954 Merge remote-tracking branch 'origin/master' into v5 2018-06-28 13:37:10 +02:00
Daniel
95c8566d76 chore(package): bump deps 2018-06-28 13:25:37 +02:00
Perry Govier
7d5e7aaa7d fix(appodeal): removed bad imports 2018-06-25 15:57:26 -04:00
Adrian Savin
98d44e6294 fix(healt): add correct return type for query function (#2565)
* update query return type

query is always returning an array

* refactor
2018-06-25 20:09:46 +02:00
Daniel Sogl
8d571989d4 fix(index-app-content): add missing function 2018-06-25 20:08:28 +02:00
Simpler1
e61d574849 feat(plugin): add Sensors plugin (#2268)
* feat(sensors): New plugin for sensors

* refactor

* refactor
2018-06-25 14:35:37 +02:00
Pandiarajan Nagarajan
fdd63153e0 feat(aes-256): AES256 encryption and decryption plugin added (#2562)
* feat(aes-256): AES256 encryption and decryption plugin added

* refactor
2018-06-25 14:28:15 +02:00
Nicolas HENRY
406ad12232 fix(file-tramsfer): fix v5 imports for file-transfer plugin (#2537) 2018-06-23 17:20:00 +02:00
Florian Gouy
9dd4ecde9c docs(camera): Update docs to advise against DATA_URL (#2474)
DATA_URL can be very memory intensive and cause app crashes or out of memory errors.
Use FILE_URI or NATIVE_URI if possible
2018-06-23 17:18:34 +02:00
Rob
dd9ba0ad3f feat(image-picker): add DATA_URL as an option to ImagePicker (#2325)
As documented in the image picker plugin, it also supports a data url, just like the camera does. However, this option is not documented in Ionic Native currently. I've added this documentation, and have also added an enum with a naming pattern that matches the DestinationType in Camera.

Docs from the image picker plugin:
```
    ...
    // output type, defaults to FILE_URIs.
    // available options are 
    // window.imagePicker.OutputType.FILE_URI (0) or 
    // window.imagePicker.OutputType.BASE64_STRING (1)
    outputType: int
};
```
2018-06-23 17:14:55 +02:00
Sebastian Baar
9f662b6a04 feat(nativegeocoder): change return type to array and add options param (#2319)
* feat(nativegeocoder): add NativeGeocoder plugin

* add district

* update NativeGeocoderReverseResult & refactor code

* delete plugins

* delete index.ts

* type(feat): change return type to array and add options param

* Add 'defaultLocale' to options Object

* let options be optional
2018-06-23 17:14:14 +02:00
Gustav Bylund
1dc48e943c docs(pro): add types for return values in deploy (#2292) 2018-06-23 17:14:03 +02:00
Daniel
aff44e9fde chore(): update changelog 2018-06-23 13:28:13 +02:00
Daniel
ed515f7017 chore(package): bump deps 2018-06-22 18:24:09 +02:00
Daniel
f3ef2a877d Merge branch 'master' into v5 2018-06-22 18:13:47 +02:00
Daniel
15a334d87a Merge remote-tracking branch 'origin/master' 2018-06-22 17:54:46 +02:00
Daniel
4d742438b4 chore(): update changelog 2018-06-22 17:54:19 +02:00
Daniel
1013a7d38a 4.8.0 2018-06-22 17:38:17 +02:00
Daniel
c574428e0e chore(package): bump deps 2018-06-22 17:36:50 +02:00
Moshe
ce3591200e docs(card-io): fix example (#2560)
Property 'scan' does not exist on type 'typeof CardIO'
2018-06-21 07:45:44 +02:00
Jonathan Fernandez
fc088f8431 fix(onesignal): update OSPermissionState interface (#2561)
fix(onesignal): update OSPermissionState interface
2018-06-21 07:45:02 +02:00
Cristian Rivas Gómez
392bc5c80a docs(hotspot): add plugin description (#2555) 2018-06-16 11:36:36 +02:00
devdaddy
31fc892b70 feat(photo-library): add maxItems to limit items-iOS (#2554) 2018-06-15 18:14:39 +02:00
Cristian Rivas Gómez
5794d249c4 docs(spinner-dialog): add plugin description (#2553) 2018-06-15 17:45:01 +02:00
mhartington
f7afd1f066 bump 2018-06-14 19:15:34 -04:00
mhartington
74a65b039f bump() 2018-06-14 15:29:05 -04:00
Frank Königstein
3f8a6f2425 fix(background-geolocation): watchLocationMode returns observable (#2547)
* fix(background-geolocation): watchLocationMode returns observable

* fix(package): rm version change
2018-06-14 11:36:02 +02:00
Cristian Rivas Gómez
dd769b0226 docs(safari-view-controller): add plugin description (#2552) 2018-06-14 07:58:38 +02:00
GabrielTK
8460e6838a feat(hce): add hce plugin wrapper (#2534)
feat(hce): add hce plugin wrapper
2018-06-13 20:06:37 +02:00
Domvel
03e6afbad4 feat(ble): update wrapper to match latest plugin release (#2548)
feat(ble): update wrapper to match latest plugin release
2018-06-13 20:05:05 +02:00
Gaetan Wcz
be370a4f99 fix(healths): add missing attribute on HealthQueryOptionsAggregated (#2550) 2018-06-13 20:04:32 +02:00
Max Lynch
37f16ba5da Merge pull request #2549 from ionic-team/ionic-webview
feat(ionic-webview): plugin for cordova-plugin-ionic-webview 2.0
2018-06-12 16:59:00 -05:00
Daniel Imhoff
8beb1774b8 feat(ionic-webview): plugin for cordova-plugin-ionic-webview 2.0 2018-06-12 16:53:35 -05:00
Cristian Rivas Gómez
bb9c581f42 docs(qr-scanner): add plugin description (#2546) 2018-06-11 17:47:24 +02:00
Cristian Rivas Gómez
d988e12353 docs(pin-dialog): add plugin description (#2545) 2018-06-10 10:54:00 +02:00
Bart Wesselink
df254de88b feat(SiriShortcuts): implement Siri Shortcuts plugin in Ionic (#2542)
* feat(SiriShortcuts): implement Siri Shortcuts plugin in Ionic

* refactor
2018-06-09 09:26:15 +02:00
Cristian Rivas Gómez
5803c069a3 Add Media Capture plugin description to documentation (#2539) 2018-06-07 08:47:38 +02:00
Cristian Rivas Gómez
dfbbfc7bd5 docs(card-io): add plugin description (#2530)
* Add description to AdMob Free plugin documentation

* Add description to Card IO plugin documentation
2018-06-06 17:00:27 +02:00
Cristian Rivas Gómez
16980f1b6a docs(keyboard): add plugin description (#2533)
* Add description to AdMob Free plugin documentation

* Add plugin description to Keyboard plugin documentation
2018-06-06 13:46:12 +02:00
Cristian Rivas Gómez
3311d73730 docs(admob-free): add plugin description (#2529) 2018-06-04 11:29:55 +02:00
hiepxanh
a4cc7f7ae1 fix(themeable-browser): allow hidden and clear cache
it wrong from boolean to string, after 1 year i update it
2018-06-03 15:42:17 +02:00
Cristian Rivas Gómez
e6b02b1875 docs(three-dee-touch): add plugin description (#2524) 2018-06-03 15:41:07 +02:00
Adam Duren
c03b73f69c feat(firebase-messaging): add firebase-messaging (#2518)
* feat(firebase-messaging): add firebase-messaging

* refactor
2018-06-03 15:33:18 +02:00
Adam Duren
05423ce299 feat(firebase-config): add firebase-config wrapper (#2517)
* feat(firebase-config): add firebase-config wrapper

* refactor

* refactor
2018-06-03 15:32:04 +02:00
Wouter Klein Heerenbrink
34aeb19628 feat(send-result): add sendResult method for WebIntent plugin (#2495) 2018-05-27 19:01:36 +02:00
Geoff Tripoli
d6a9ed134e fix(stripe): fixed casing of postal code param (#2520) 2018-05-22 22:12:13 +02:00
Behrooz Shafiee
a0183811f6 fix(in-app-purchase-2): fix ready method signature (#2043) 2018-05-20 13:21:21 -04:00
Cristian Rivas Gómez
e6d4b41e7e docs(navigation-bar): fix typo
A small misspelling detected here 🙂
2018-05-19 16:56:04 +02:00
Dave Alden
400dbcb1fb feat(cloud-settings): add support for cordova-plugin-cloud-settings (#2494)
* feat(cloud-settings): add support for cordova-plugin-cloud-settings

* refactor
2018-05-19 12:16:14 +02:00
mino922
ae6e28de88 feat(local-notifications): added support for foreground option in version 0.9.0-beta.3 of cordova-plugin-local-notifications (#2506) 2018-05-19 12:15:22 +02:00
Geoff Tripoli
58615f1cab feat(star-prnt): Added support for connected to devices with barcode readers (#2509) 2018-05-19 12:14:30 +02:00
Kheva Mann
7c355350fe feat(onesignal): Added notification stacking (#2512)
* Added collapse_id

Added collapse_id to allow for notification stacking

* Update index.ts
2018-05-19 12:14:12 +02:00
Szymon Stasik
defb276b22 fix(native-geocoder): set response type to an array (#2505) 2018-05-16 19:16:39 -04:00
Kheva Mann
e6db28123d fix(onesignal): make params optional (#2507)
Made all properties in OSNotification optional because when you create a push notification the type is OSNotification but it does not have all the same properties required as the OSNotification as a response from a received notification. For example, you don't pass in isAppInFocus when you create a notification but it was causing issues when trying to post a notification because it was showing as required because OSNotification as a response will always have isAppInFocus.
2018-05-16 19:14:27 -04:00
Marty Alcala
714114d1e0 fix(android-fingerprint-auth): ensure ERRORS array is defined (#2508) 2018-05-16 19:13:24 -04:00
Nicolas HENRY
6662234894 fix(v5-builder): stop transforming "declare" classes (#2503) 2018-05-10 00:44:53 -04:00
mhartington
db32d2d520 chore(): bump 2018-05-09 12:55:19 -04:00
Andy
37ef2fc93f docs(file): fix example
docs(file): fix example
2018-05-09 18:11:55 +02:00
Eran Shmilovich
41a4a43c0c fix(docs) replace android platform with ios (#2500) 2018-05-09 18:11:26 +02:00
Daniel
aa90626116 chore(package): bump webpack 2018-05-05 10:33:19 +02:00
Daniel
5516165fb6 chore(lint): add rxjs 6 lint rules 2018-05-05 10:29:51 +02:00
Daniel Sogl
48714d72d6 fix(str-prnt): rxjs 6 import 2018-05-05 10:26:23 +02:00
Daniel
e0b0687004 fix(): fix rxjs 6 imports 2018-05-04 10:38:35 +02:00
Daniel
885d09d0ab chore(package): Angular 6 stable 2018-05-04 10:32:58 +02:00
Daniel
0b3d299a96 fix(): fix more lint errors 2018-05-04 10:31:06 +02:00
Daniel
f34b6e6664 fix(): fix tealium jsdoc 2018-05-04 10:28:43 +02:00
Daniel
3fbd475ed2 Merge remote-tracking branch 'origin/master' into v5 2018-05-04 10:22:32 +02:00
Craig Rouse
5f41ef1cbc feat(tealium): add tealium ionic wrappers (#2414) 2018-05-03 12:42:47 +02:00
Daniel Imhoff
cea1dc14d3 fix(site): no prepended slash 2018-05-02 11:28:40 -05:00
infoxicator
49ad2118a3 feat(star-prnt) add Encoding and CodePageType enum (#2488)
feat(star-prnt) add Encoding and CodePageType enum
2018-05-01 14:42:17 +02:00
Omar Ben brahim
bfe5ae9cf2 feat(InAppReview): add InAppReview plugin (#2483) 2018-05-01 14:41:57 +02:00
Darryn
47f739777e fix(web-intent): registerBroadcastReceiver as Observable (#2491)
* Correcting format of registerBroadcastReceiver, current implementation provides no way to receive the registered broadcasts.
Usage is as follows:
webintent.registerBroadcastReceiver({
      filterActions: [
        'com.example.ACTION'
      ],
      filterCategories: [
        'android.intent.category.DEFAULT'
      ]
    }).subscribe((intent) => {console.log('Received Intent: ' + JSON.stringify(intent.extras));});

* Resolving linting errors

* Resolving additional linting error
2018-05-01 14:41:09 +02:00
Perry Govier
a1c54f36b4 Merge pull request #2490 from ionic-team/google-maps-docs
docs(google-maps): add menu entry for google maps plugin
2018-04-30 10:17:00 -05:00
Daniel Imhoff
22d5d92dd3 docs(google-maps): add menu entry for google maps plugin 2018-04-30 10:09:23 -05:00
Rida Amirini
3fa2eff580 docs(android-full-screen): edit example 2018-04-29 18:35:00 +02:00
Brian Soumakian
567f525837 feat(firebase): add verifyPhoneNumber support for iOS
feat(firebase): verifyPhoneNumber now supports iOS
2018-04-26 08:14:14 +02:00
Daniel
3b43bd76fd chore(package): bump deps 2018-04-25 10:14:13 +02:00
Perry Govier
d3c2859d38 fix(linting): Fixing misc linting errors that typedoc complains about (#2476)
* fix(linting): Fixing misc linting errors that typedoc complains about

* angularJS safe promises

* fix(clibpoard): minor linting error
2018-04-24 22:12:21 +02:00
Silviu Bogdan Stroe
24cd0a91c4 docs(uptime): remove unnecessary line (#2479)
* docs(uptime): add cordova installation

* feat(uptime): add deep sleep parameter

* Update index.ts

* docs(Uptime): remove unnecessary line
2018-04-24 14:15:07 +02:00
Niklas Merz
50c8c154e3 docs(calldirectory): fix typo (#2478)
I have spotted some typos and added an example for reload.
2018-04-24 11:38:02 +02:00
Niklas Merz
1bfe82959b feat(calldirectory): add call directory plugin (#2473)
* feat(calldirectory): add call directory plugin

* feat(calldirectory): fix parameters and description

* fix typos
2018-04-23 19:36:33 +02:00
Niklas Merz
35e5cfe102 chore(plugin-generator): remove notice of /src/index.ts (#2459) 2018-04-23 18:33:37 +02:00
infoxicator
a1e6befbc0 feat(star-prnt): add StarPRNT plugin
* feat(star-prnt): create StarPRNT base class

* refactor(): refactor code

* refactor(): change JSDOC style
2018-04-23 18:30:58 +02:00
Daniel
fbaacfb572 refactor(iab): fix rxjs 6 import 2018-04-21 15:49:43 +02:00
Daniel
234b6ffd44 chore(build): fix build 2018-04-21 15:39:43 +02:00
Daniel
f348f95e56 WIP 2018-04-21 15:34:12 +02:00
Daniel
5387bc985a refactor(network): fix rxjs imports 2018-04-21 15:30:41 +02:00
Daniel
8b1bb3ba17 refactor(ftp): fix rxjs import 2018-04-21 15:29:59 +02:00
Daniel
a6450c6d07 refactor(appodeal): fix rxjs import 2018-04-21 15:29:47 +02:00
Daniel
d68a0373e8 refactor(admob-free): fix rxjs import 2018-04-21 15:29:34 +02:00
Daniel
8cd2da1c5b chore(package): bump rxjs and zone.js 2018-04-21 15:23:29 +02:00
David Dal Busco
633e9d8e9a refactor(facebook): remove deprecated function appInvite 2018-04-21 13:04:08 +02:00
Daniel
f13b31f074 chore(build): fix windows errors and bump deps 2018-04-21 10:34:54 +02:00
Angel Careaga
30f5b71f4a Added ability to clean clipboard (#2468)
-  Added the possibility to clean the clipboard on Android, iOS and Windows.
2018-04-20 22:58:39 -04:00
Nicolas HENRY
88fda657f4 chore(build): fix v5 imports (#2465) 2018-04-19 13:52:26 -04:00
Daniel Sogl
0dfbb386ff docs(iab): fix jsdoc 2018-04-16 21:32:03 +02:00
Daniel Sogl
5dede9b536 docs(google-nearby): rename plugin docs name 2018-04-15 15:07:04 +02:00
Daniel
213d77ffda Merge branch 'master' into v5 2018-04-15 12:15:08 +02:00
Daniel Sogl
8be98a0cc1 docs(firebase): add jsdoc types 2018-04-15 10:44:48 +02:00
Daniel Sogl
36450e13cf feat(firebase): add new functions 2018-04-15 10:43:13 +02:00
Daniel Sogl
d4c98362d9 docs(firebase): remove beta notice 2018-04-15 10:18:40 +02:00
Niklas Merz
ec69a0cbac docs(inappbrowser): add new option hidespinner (#2460) 2018-04-15 10:01:40 +02:00
Daniel Sogl
f49d2a964e fix(call-number): fix isCallSupported function
closes: #2428
2018-04-14 16:44:57 +02:00
Silviu Bogdan Stroe
91d22c5211 feat(uptime): add deep sleep parameter (#2456)
* docs(uptime): add cordova installation

* feat(uptime): add deep sleep parameter

* Update index.ts
2018-04-13 22:01:23 +02:00
Daniel
d55fd2a109 chore(package): bump deps 2018-04-13 16:05:31 +02:00
Daniel
b36a1f9df6 fix(): fix lint 2018-04-13 12:41:45 +02:00
Daniel
fa08b99bbc chore(package): bump deps 2018-04-13 12:39:08 +02:00
Daniel
f414e0e081 Merge remote-tracking branch 'origin/master' into v5 2018-04-13 12:34:16 +02:00
Daniel
86b637e85a refactor(core): remove lodash
closes: #2452
2018-04-13 12:33:45 +02:00
Sascha Merkofer
300db62731 fix(ibeacon): correct Type {Region} in some params (#2453)
Changes wrongly typed @param {BeaconRegion} to @param {Region}
2018-04-13 12:03:44 +02:00
mcelotti
23b760bb01 fix(web-intent): fix options param (#2450)
* fix(web-intent): fix options param for startService, sendBroadcast, startActivityForResult, startActivity

* Update index.ts

* Update index.ts
2018-04-12 17:09:19 +02:00
Andrew Lively
84e0aa1f94 fix(calendar): Fixes createCalendar parameter typing
The createCalendar should allow a string or `NameOrOptions`, not `CalendarOptions`
2018-04-12 17:07:03 +02:00
Mark
1d9c449b24 feat(file-picker): add missing options
feat(file-picker): add missing options
2018-04-12 08:24:00 +02:00
Ibby Hadeed
3b440c6df8 Must return promise to asyncify! 2018-04-11 12:59:41 -04:00
Ibby Hadeed
ad1848899d chore(): update changelog 2018-04-11 12:51:38 -04:00
Ibby Hadeed
242cd4b124 5.0.0-beta.9 2018-04-11 12:51:32 -04:00
Ibby Hadeed
abee240df5 Add cordova typings to dependencies 2018-04-11 12:51:18 -04:00
Ibby Hadeed
6d8b406471 Fix logging 2018-04-11 12:47:13 -04:00
Ibby Hadeed
29646d8da0 update changelog 2018-04-11 12:34:47 -04:00
Ibby Hadeed
9f70bf5727 5.0.0-beta.8 2018-04-11 12:34:31 -04:00
Ibby Hadeed
f21b63be47 Merge branch 'v5' of github.com:ionic-team/ionic-native into v5 2018-04-11 12:34:20 -04:00
Ibby Hadeed
7a1ff64bf2 Do not set rxjs version for now 2018-04-11 12:34:02 -04:00
Ibby Hadeed
c13a53ad45 Set explicit types 2018-04-11 12:32:16 -04:00
Ibby Hadeed
9e3f1cc0c6 fix publish command 2018-04-09 16:03:09 -04:00
Ibby Hadeed
4ce15c6cd7 5.0.0-beta.7 2018-04-09 16:01:47 -04:00
Daniel
c63895db19 refactor(scripts): use rxjs 6 syntax for plugin templates 2018-04-09 21:59:34 +02:00
Daniel
3aea3900bc chore(package): bump deps 2018-04-09 21:53:54 +02:00
Ibby Hadeed
d96c230b2e Update deps 2018-04-09 15:18:38 -04:00
Ibby Hadeed
bb6342b72a Fix NGC build with Angular 6 2018-04-09 15:18:30 -04:00
Ibby Hadeed
d56826f12d Fix decorators + remove duplicate implementations 2018-04-09 14:49:08 -04:00
Ibby Hadeed
b09eb06cb0 Update code style 2018-04-09 14:32:20 -04:00
Ibby Hadeed
fd87e968f0 Restore interfaces.ts file 2018-04-09 14:31:22 -04:00
Daniel
e12c90f890 chore(package): bump deps 2018-04-09 20:14:01 +02:00
Daniel
f70eaea71e fix(): build errors 2018-04-09 20:10:36 +02:00
Daniel
29d668ca2f Merge branch 'master' into v5 2018-04-09 20:06:25 +02:00
Ibby Hadeed
a3c46216f6 chore(): update changelog 2018-04-09 07:44:58 -04:00
Ibby Hadeed
1be1d5b577 4.7.0 2018-04-09 07:44:51 -04:00
Daniel Sogl
eb760a5136 Merge pull request #2441 from hahahannes/master
feat(plugin): Add google nearby plugin
2018-04-09 06:49:47 +02:00
Hannes
8f1854c180 refactor(GoogleNearby): add requested changes 2018-04-08 22:21:18 +02:00
Daniel
5d1c8c225b docs(ftp): fix jsdoc 2018-04-08 21:48:34 +02:00
Daniel
237ea0d90d docs(flurry-analytics): fix jsdoc 2018-04-08 21:47:25 +02:00
Daniel
bee3d639cb docs(firebase-analytics): fix jsdoc 2018-04-08 21:45:48 +02:00
Daniel
1cc7243ef9 docs(firebase): fix docs 2018-04-08 21:44:57 +02:00
Daniel
87f8505d93 docs(fingerprint-aio): typo 2018-04-08 21:39:33 +02:00
Daniel
7e0b9a488d docs(file-transfer): fix jsdoc 2018-04-08 21:33:19 +02:00
Daniel
3e9e578781 docs(file-path): fix jsdoc 2018-04-08 21:32:20 +02:00
Daniel
06094c2b53 docs(file-opener): typo 2018-04-08 21:31:06 +02:00
Daniel
d598bf3416 docs(file-encryption): typo 2018-04-08 21:30:20 +02:00
Daniel
624f94f9f6 docs(file): typo 2018-04-08 21:29:39 +02:00
Daniel
e70885ca2f docs(fcm): typo 2018-04-08 21:26:14 +02:00
Daniel
095a6c5cf7 docs(estimote-beacons): typos 2018-04-08 21:24:30 +02:00
Daniel
38e7e65557 docs(email-composer): fix jsdoc 2018-04-08 21:21:37 +02:00
Daniel
4ab4aaf178 docs(document-picker): fix docs 2018-04-08 21:20:35 +02:00
Daniel
fc9add88dc docs(dialogs): fix jsdoc 2018-04-08 21:05:44 +02:00
Daniel
9e744e7c29 docs(diagnostic): typo 2018-04-08 21:00:17 +02:00
Daniel
a235b2493f docs(device-orientation): fix jsodc 2018-04-08 20:51:53 +02:00
Daniel
48ccc4c24e docs(device-feedback): fix jsdoc 2018-04-08 20:50:25 +02:00
Daniel
18da591f03 docs(device-accounts): add missing docs 2018-04-08 20:49:46 +02:00
Daniel
bca7f38bbf docs(crop): add missing docs 2018-04-08 20:48:14 +02:00
Daniel
7f24f89fc4 docs(contacts): fix jsdoc 2018-04-08 20:47:18 +02:00
Daniel
62241105c8 docs(card-io): fix jsdoc 2018-04-08 20:44:06 +02:00
Daniel Sogl
1e8626c435 chore(travis): fix lint 2018-04-08 19:52:33 +02:00
Daniel
7520a96cc6 docs(camera-preview): fix typos 2018-04-08 19:32:19 +02:00
Daniel
0af33923a8 BREAKING CHANGE: Removed Google Maps Plugin
Use this repository instead: https://github.com/ionic-team/ionic-native-google-maps
2018-04-08 19:30:04 +02:00
Daniel
9b83615af6 docs(call-number): fix jsdoc 2018-04-08 19:28:24 +02:00
Daniel
7f274ba9a3 docs(call-log): fix jsdoc 2018-04-08 19:27:40 +02:00
Daniel
1e539f8cd9 docs(calendar): typos 2018-04-08 19:20:20 +02:00
Daniel
87ba4b4d32 docs(browser-tab): improve example 2018-04-08 19:18:36 +02:00
Daniel
7ed6ab894b docs(broadcaster): fix jsdocs 2018-04-08 19:17:17 +02:00
Daniel
e095eecf5b docs(brightness): add missing doc 2018-04-08 19:12:38 +02:00
Daniel
502203936c docs(braintree): typo 2018-04-08 19:11:52 +02:00
Daniel
7cbe7a6287 docs(ble): add missing documentations 2018-04-08 19:09:43 +02:00
Daniel
376d16904c docs(battery-status): typo 2018-04-08 19:06:48 +02:00
Daniel
7a6b8ac917 docs(barcode-scanner): fix wrong jsdocs 2018-04-08 19:05:45 +02:00
Daniel
64cbb6181a docs(background-mode): add missing return types 2018-04-08 19:04:37 +02:00
Daniel
c26735f366 docs(apple-pay): typos 2018-04-08 19:00:09 +02:00
Daniel
2e07a7c04e docs(app-update): add missing param 2018-04-08 18:56:49 +02:00
Daniel
3bfc95ed78 refactor(app-center-push): rename variable 2018-04-08 18:52:49 +02:00
Daniel
c0737feb41 Merge branch 'master' into v5 2018-04-08 18:51:08 +02:00
Daniel
4be721b8f5 refactor(core): beautify files and reorder imports 2018-04-08 18:48:55 +02:00
Daniel
15c73e46d0 docs(android-permissions): fix wrong jsdocs 2018-04-08 18:47:50 +02:00
Daniel
dd4d35d9e0 docs(android-fingerprint-auth): add missing interfaces 2018-04-08 18:46:21 +02:00
Daniel
d8f030b67d docs(android-exoplayer): fix typo and jsdocs 2018-04-08 18:39:07 +02:00
Daniel
3f82cfa527 docs(code-push): fix wrong jsdocs 2018-04-08 18:37:34 +02:00
Daniel
c4e8c2efbc Merge branch 'master' into v5 2018-04-08 18:29:41 +02:00
Daniel
348dbb85b3 docs(alipay): fix wrong jsdoc 2018-04-08 18:28:52 +02:00
Daniel
2fda70a3c6 docs(admob-pro): fix wrong jsdocs 2018-04-08 18:27:59 +02:00
Daniel
5648bfc70f docs(action-sheet): add missing param interface 2018-04-08 18:26:01 +02:00
Daniel
1c03c3ff3c docs(admob-free): add missing documentation 2018-04-08 18:24:41 +02:00
Daniel
31c696d59d docs(action-sheet): fix wrong jsdocs 2018-04-08 18:22:48 +02:00
Hannes
eb1bcdd078 feat(plugin): Add google nearby plugin 2018-04-07 14:47:33 +02:00
Daniel Sogl
f7b5e2f15f docs(uptime): add iOS support
docs(uptime): add iOS support
2018-04-07 11:06:03 +02:00
Daniel Sogl
2628798064 docs(uptime): remove unneeded lines of code 2018-04-07 11:01:53 +02:00
Daniel Sogl
b3082bf5ac refactor(uptime): beautify 2018-04-07 11:00:19 +02:00
Silviu Bogdan Stroe
e6f6158b43 feat(uptime): add iOS support 2018-04-07 11:49:53 +03:00
Daniel
548860b1ff Merge remote-tracking branch 'origin/master' 2018-04-06 23:14:28 +02:00
Daniel
9aff5eaa13 fix(speech-recognition): add missing options
fix:  #2165
2018-04-06 23:14:11 +02:00
Daniel
83680aad96 Merge branch 'master' into v5 2018-04-06 23:06:59 +02:00
Daniel
67cf61d2a8 fear(speech-recognition): add missing options
fix:  #2165
2018-04-06 23:05:07 +02:00
Daniel
707ca8ea3c docs(qr-scanner): improve example
fix: #1876
2018-04-06 22:57:43 +02:00
Daniel
4cb28c41c8 feat(social-sharing): add missing function
fix: #2209
2018-04-06 22:54:11 +02:00
Daniel
e828100a40 refactor(sms): reorder imports 2018-04-06 22:48:42 +02:00
Daniel
439960092e fix(email-composer): add missing options
#175
2018-04-06 22:38:59 +02:00
Daniel
a81a4d3edf fix(uuid): add correct plugin source
fix: #2324
2018-04-06 22:34:06 +02:00
Daniel
859cbfcfc6 fix(image-resizer): add missing option 2018-04-06 22:30:25 +02:00
Daniel Sogl
4b4eb76352 feat(plugin): add Uptime plugin
feat(plugin): add Uptime plugin
2018-04-06 16:34:35 +02:00
Daniel Sogl
bc7bdc60b7 refactor(uptime): beautify 2018-04-06 16:33:00 +02:00
Silviu Bogdan Stroe
35ad7f6387 style(uptime): remove the unneeded comments
perf(uptime): add promise return type
2018-04-06 16:11:55 +03:00
Daniel
cc9a980dc3 fix(build): fix ngx build errors 2018-04-06 09:43:57 +02:00
Daniel
3750cad793 chore(pacakge): fix deps 2018-04-06 09:33:10 +02:00
Daniel
4aca04a62e Merge remote-tracking branch 'origin/master' into v5 2018-04-05 22:05:19 +02:00
Daniel Sogl
399055b963 docs(camera): fix small typo
docs(camera): fix small typo
2018-04-05 22:03:51 +02:00
Daniel
3ced31ed2a fix(plugins): fix rxjs 6 build errors
#2439
2018-04-05 21:44:19 +02:00
Daniel
48b0f16ed9 fix(core): fix rxjs 6 build errors
#2439
2018-04-05 21:34:04 +02:00
Daniel
97a73ca369 chore(package): bump deps 2018-04-05 16:34:33 +02:00
Daniel
bf0eaf75b9 Merge branch 'master' into v5 2018-04-05 16:31:11 +02:00
Benjamin Morel
3a286b0243 Fix typo 2018-04-05 11:34:50 +02:00
Daniel Sogl
830b0e0ef9 feat(plugin): add Microsoft App Center Push plugin
feat(plugin): add Microsoft App Center Push plugin
2018-04-04 18:58:32 +02:00
Daniel
cdabebd487 feat(plugin): add Microsoft App Center Push plugin 2018-04-04 18:56:38 +02:00
Daniel Sogl
a38381d06c feat(plugin): add Microsoft App Center Analytics plugin
feat(plugin): add Microsoft App Center Analytics plugin
2018-04-04 18:34:37 +02:00
Daniel
44e0e2483a feat(plugin): add Microsoft App Center Crashes plugin 2018-04-04 18:25:34 +02:00
Daniel
a1ad658d05 Merge remote-tracking branch 'origin/master' into app-center-crashes 2018-04-04 18:07:31 +02:00
Daniel Sogl
7362a41b55 feat(plugin): add Microsoft App Center Analytics plugin
feat(plugin): add Microsoft App Center Analytics plugin
2018-04-04 18:06:58 +02:00
Daniel Sogl
b65946b1a8 feat(plugin): add Microdoft App Center Analytics plugin 2018-04-04 17:42:30 +02:00
Daniel
7a5bee914f feat(plugin): add Microdoft App Center Analytics plugin 2018-04-04 17:28:29 +02:00
Daniel
84c9bfbca3 feat(plugin): add Microdoft App Center Analytics plugin 2018-04-04 17:24:29 +02:00
Silviu Bogdan Stroe
6be38328b0 feat(plugin): add Uptime plugin 2018-04-04 16:53:19 +03:00
Daniel
0b08ce4395 Merge remote-tracking branch 'origin/master' into v5 2018-04-04 11:02:38 +02:00
Daniel Sogl
e27009e7b5 docs(autostart): add correct plugin description
docs(autostart): add correct plugin description
2018-04-04 10:56:06 +02:00
Daniel Sogl
fa1cb407dd fix(file-picker): use correct plugin ref
fix(file-picker): use correct plugin ref
2018-04-04 10:54:30 +02:00
Hanut Singh
6314c28aa8 Fixed the description text 2018-04-04 14:06:16 +05:30
Mark
7f55a8f963 Use Correct Plugin Ref 2018-04-04 14:17:47 +09:30
Daniel Sogl
25f158629d fix(card-io): Fix typo in the "suppressManual" property name
fix(card-io): Fix typo in the "suppressManual" property name.
2018-04-02 13:57:26 +02:00
Said A
5c81ff4875 Fix typo in the "suppressManual" property name. 2018-03-31 11:24:10 +05:00
Daniel Sogl
f33eaed266 docs(launch-review): fix example 2018-03-30 20:02:11 +02:00
Daniel Sogl
40807b8c8c docs(ble): fix typo
docs(ble): fix typo
2018-03-27 11:40:22 +02:00
Iván Pérez
17a3ac1b70 Small typo 2018-03-27 10:23:16 +02:00
Daniel Sogl
c8bce6fef9 feat(camera-preview): disable exif stripping conf
feat(camera-preview): disable exif stripping conf
2018-03-26 11:19:21 +02:00
David Quon
e231bf8507 feat(camera-preview): disable exif stripping conf 2018-03-26 02:00:13 -07:00
Daniel Sogl
50ac4e711e fix(firebase): optional params, callback indexes fix
fix(firebase): optional params, callback indexes fix
2018-03-25 10:14:52 +02:00
Vlado Velichkovski
22cb2e3f45 Merge branch 'master' into patch-1 2018-03-25 00:32:45 +01:00
Daniel
70f01fe528 Merge branch 'master' into v5 2018-03-24 21:14:09 +01:00
Daniel Sogl
3d081b5f60 feat(plugin): add OpenALPR plugin
feat(plugin): add OpenALPR plugin
2018-03-23 22:08:31 +01:00
Daniel Sogl
2ae2a683d2 lint 2018-03-23 22:06:20 +01:00
Perry Govier
6d68167530 fixing typo in install instructions 2018-03-23 12:40:03 -05:00
Daniel Sogl
b5e04cca20 refactor(device-feedback): rename interface 2018-03-23 15:38:45 +01:00
Daniel Sogl
3bd6135730 add CODE_OF_CONDUCT 2018-03-23 11:07:24 +01:00
Daniel
c15b78bab2 refactor(build): lint build scripts 2018-03-23 10:57:54 +01:00
Daniel
d7829e4012 refactor(): applied new lint rules 2018-03-23 10:42:10 +01:00
Daniel
28e95ea66e chore(package): bump deps 2018-03-23 10:41:27 +01:00
Daniel
9711061889 chore(package): bump deps 2018-03-23 10:07:47 +01:00
Daniel
a7c1dea6a1 BREAKING CHANGE: remove google-maps plugin 2018-03-23 10:05:08 +01:00
Daniel
12235cef2e chore(package): set correct version 2018-03-23 10:03:50 +01:00
Daniel
3a84aeec21 Merge remote-tracking branch 'origin/master' into v5 2018-03-23 10:01:37 +01:00
Daniel Sogl
0aaec10a3e feat(http): add support for new methods
feat(http): add support for new methods
2018-03-23 08:22:18 +01:00
Daniel Sogl
761ac4a328 feat(zeroconf): add watchAddressFamily and registerAddressFamily
feat(zeroconf): add watchAddressFamily and registerAddressFamily
2018-03-23 08:20:20 +01:00
Daniel Sogl
ff4a61d0ec feat(local-notifications): Support latest beta
feat(local-notifications): Support latest beta
2018-03-23 08:19:52 +01:00
Daniel Sogl
3c6122e503 feat(call-log): add operator 'like' and array of values
feat(call-log): add operator 'like' and array of values
2018-03-23 08:16:19 +01:00
Nicolas
84cecf7841 feat(call-log): add operator 'like' and array of values 2018-03-22 22:42:45 +01:00
Lorenz an Mey
37833fe41d docs(local-notifications): Complete sourcecode docs 2018-03-22 17:25:41 +01:00
Lorenz an Mey
8a2637789f fix(local-notifications): fixed linting errors 2018-03-22 17:18:44 +01:00
Thomas Linford
b05c9a4f8b feat(zeroconf) add watchAddressFamily and registerAddressFamily properties 2018-03-22 17:10:35 +01:00
Lorenz an Mey
e5034bf827 feat(local-notifications): Support version 0.9.0-beta.3 of cordova-plugin-local-notifications 2018-03-22 17:08:23 +01:00
Daniel Sogl
8b8ccfbdc3 docs(file-picker): change plugin name
fixes: #2413
2018-03-22 12:12:52 +01:00
Sefa Ilkimen
c2a62cd3c8 feat(http): add support for new properties (#2135) 2018-03-21 21:58:48 +01:00
Sefa Ilkimen
4497e00670 feat(http): add support for new methods (#2249) 2018-03-21 21:58:47 +01:00
Daniel Sogl
0e68bd91f2 fix(web-intent): rename onNewIntent to onIntent
fix(web-intent): rename `onNewIntent` to `onIntent`
2018-03-20 20:53:39 +01:00
Rodrigo Fernández
df7f629127 Merge branch 'master' into master 2018-03-20 20:29:46 +01:00
Daniel
0b1e8f9b9d chore(): update changelog 2018-03-19 19:42:12 +01:00
Max Lynch
560d708002 4.6.0 2018-03-19 13:37:30 -05:00
Daniel
acfaeac64b chhore(package): bump ts-node 2018-03-19 13:42:06 +01:00
Daniel
d35e790b1e chore(package): bump deps 2018-03-19 13:33:14 +01:00
Daniel
1e401682f6 Merge remote-tracking branch 'origin/v5' into v5 2018-03-19 13:14:19 +01:00
Daniel
1d7ee313a0 chore(package): bump webpack 2018-03-19 13:14:10 +01:00
Daniel
a1c4d48f54 chore(pacakge): bump webpack 2018-03-19 13:13:55 +01:00
Daniel
9e2e902b18 chore(package): bump lodash 2018-03-19 13:09:19 +01:00
Daniel
c99340d504 chore(package): bump fs-extra and fix angular versions 2018-03-19 13:07:12 +01:00
Daniel
9f19e2ba07 chore(package): bump jest 2018-03-19 13:03:38 +01:00
Daniel
b9d9f0bd54 fix sqlite property 2018-03-19 12:59:55 +01:00
Daniel Sogl
f700bb3817 Revert "fix(google-maps): wrong decorators"
This reverts commit e5b9d53b17.
2018-03-19 09:14:11 +01:00
Daniel Sogl
e5b9d53b17 fix(google-maps): wrong decorators 2018-03-19 09:10:25 +01:00
Daniel
a6d5d51489 Merge remote-tracking branch 'origin/master' into v5 2018-03-19 08:44:12 +01:00
Mick Vleeshouwer
bf88f6ee51 Update countries 2018-03-17 21:45:24 +01:00
Mick Vleeshouwer
11a402626c Update documentation 2018-03-17 20:44:56 +01:00
Mick Vleeshouwer
e27fbf47bd feat(plugin): add OpenALPR plugin 2018-03-17 20:37:57 +01:00
Daniel Sogl
f1bf2fa151 fix circle 2018-03-17 16:00:52 +01:00
Daniel Sogl
1bedb49152 docs(uid): add correct npm repository
fixes: #2105
2018-03-17 15:57:14 +01:00
Daniel Sogl
4948640db2 fix(Radmob-pro): add offsetTopBar option
fixes: #2100
2018-03-17 15:55:09 +01:00
Daniel Sogl
6862389651 docs(geolocation): add notes for iOS platform 2018-03-17 15:47:37 +01:00
Daniel
247a1a1d74 feat(appodeal): add new functions
fixes: #2065
2018-03-17 15:36:42 +01:00
Daniel
571df3a251 feat(plugin): add iOS File Picker 2018-03-17 14:33:21 +01:00
Daniel Sogl
1113bbad57 feat(plugin): add SpeechKit plugin
feat(plugin): add SpeechKit plugin
2018-03-17 11:51:38 +01:00
Daniel Sogl
c99524c5ec feat(plugin): add cordova-hot-code-push
feat(plugin): add cordova-hot-code-push
2018-03-17 11:49:21 +01:00
Daniel Sogl
33789b2d39 feat(DocumentPicker) adds DocumentPicker ios plugin
feat(DocumentPicker) adds DocumentPicker ios plugin
2018-03-17 11:46:33 +01:00
Daniel Sogl
67ea61a3cb rename plugin 2018-03-17 11:45:12 +01:00
Daniel Sogl
ab04cfe1d5 feat(BlinkupPlugin): added ElectricImp BlinkUp
feat(BlinkupPlugin): added ElectricImp BlinkUp
2018-03-17 11:44:01 +01:00
Daniel Sogl
500888e839 fix circle 2018-03-17 11:36:52 +01:00
Daniel Sogl
1c27474776 ref(globalization): change utf_offset to utc_offset
fixes: #2015
2018-03-17 11:27:16 +01:00
Daniel Sogl
a345e2c6f1 feat(camera-preview): add onBackButton function
fixes: #1967
2018-03-17 11:15:42 +01:00
Daniel Sogl
8dc5ad2ee6 fix(web-intent): allow extras
fix: #1959
2018-03-17 11:08:21 +01:00
Daniel Sogl
f7184325a7 fix(facebook): remove browserInit function
fix: #1901
2018-03-17 10:56:14 +01:00
Daniel Sogl
586c7e505f fix(badge): add correct requestPermission function
fixes: #105 #1856
2018-03-17 10:38:05 +01:00
Daniel Sogl
7c6b117643 docs(image-resize): add note about fileName for iOS platform 2018-03-17 10:03:06 +01:00
Daniel
1c95039c02 Merge remote-tracking branch 'origin/master' into v5 2018-03-17 01:29:14 +01:00
Daniel Sogl
a3f63a61b9 docs(fcm): improve example
docs(fcm): improve example
2018-03-17 01:24:42 +01:00
Daniel Sogl
b61c442fd2 fix example 2018-03-17 01:22:06 +01:00
Daniel Sogl
2e0ea0f50e feat(music-controls): add new optional parameters for icons
feat(music-controls): add new optional parameters for icons
2018-03-17 01:18:11 +01:00
Daniel Sogl
2e2c5fe82b feat(jins-meme): enable background mode data collection
feat(jins-meme): enable background mode data collection
2018-03-17 01:17:04 +01:00
Daniel Sogl
9aa73da537 fix(globalization): options as optional
fix(globalization): options as optional
2018-03-17 01:15:37 +01:00
Daniel Sogl
a6b9a9237a fix lint 2018-03-17 01:15:01 +01:00
Daniel Sogl
9816ca6650 add GlobalizationOptions interface 2018-03-17 01:11:55 +01:00
Daniel Sogl
82bc6d914d docs(broadcaster): add support for browser platform
docs(broadcaster): add support for browser platform
2018-03-17 01:07:00 +01:00
Daniel Sogl
292545dc6d docs(onesignal): change docs to match new Cordova hook specs
docs(onesignal): change docs to match new Cordova hook specs
2018-03-17 01:05:34 +01:00
Daniel Sogl
39017df2e3 docs(in-app-browser): insertCSS example update
docs(in-app-browser): insertCSS example update
2018-03-17 01:05:19 +01:00
Daniel Sogl
3841219dd5 Update index.ts 2018-03-17 01:03:46 +01:00
Daniel Sogl
ead0de9907 docs(background-mode): added push parameter description
docs(background-mode): added push parameter description
2018-03-17 01:00:30 +01:00
Daniel Sogl
00e42438aa Merge branch 'master' into patch-1 2018-03-17 00:58:32 +01:00
Daniel Sogl
54e8b90cdb docs(intercom): add deprecated notice for setSecureMode
docs(intercom): add deprecated notice for setSecureMode
2018-03-17 00:57:39 +01:00
Daniel Sogl
b9a254aa2b feat(firebase-dynamic-links): update to conform to the latest version of the plugin
feat(firebase-dynamic-links): update to conform to the latest version of the plugin
2018-03-17 00:52:55 +01:00
Daniel Sogl
9cabbd9c69 docs(navigation-bar): rename mismatched function
docs(navigation-bar): rename mismatched function
2018-03-17 00:51:41 +01:00
Daniel Sogl
0325d09472 feat(health-kit): add missing properties to HealthKitOptions
feat(health-kit): add missing properties to HealthKitOptions
2018-03-17 00:50:40 +01:00
Daniel Sogl
973888726d feat(call-log): add plugin
feat(call-log): add plugin
2018-03-17 00:49:45 +01:00
Daniel Sogl
a0a540c768 feat(in-app-browser): add new footer options for Android
feat(in-app-browser): add new footer options for Android
2018-03-17 00:49:28 +01:00
Daniel Sogl
5e40f3412a add CallLogObject interface 2018-03-17 00:47:46 +01:00
Daniel Sogl
c55998c5b6 feat(local-notifications) add silent configuration parameter
feat(local-notifications) add silent configuration parameter
2018-03-17 00:39:58 +01:00
Daniel Sogl
dfcc281e56 docs(cordova-file): added ArrayBuffer
docs(cordova-file): added ArrayBuffer
2018-03-17 00:37:48 +01:00
Daniel Sogl
0fe5102801 feat(push): add missing decorator option to channel
feat(push): add missing decorator option to channel
2018-03-17 00:37:14 +01:00
Daniel Sogl
c8361841f4 ref jsdocs 2018-03-17 00:35:41 +01:00
Daniel Sogl
09e7afb3b4 feat(mix panel): add missing events
feat(mix panel): add missing events
2018-03-17 00:31:08 +01:00
Daniel Sogl
3d9703bfe1 docs(http): linking Stackoverflow answer for .pem to .cer
docs(http): linking Stackoverflow answer for .pem to .cer
2018-03-17 00:27:09 +01:00
Daniel Sogl
76dee252aa fix lint 2018-03-17 00:26:07 +01:00
Daniel
6c938bfdb7 Revert "chore(package): bump dependencies and lint rules"
This reverts commit 21ad4734fa.
2018-03-17 00:13:08 +01:00
Daniel
21ad4734fa chore(package): bump dependencies and lint rules 2018-03-16 22:04:01 +01:00
Daniel
7547a94c80 fix(sqlite): remove trailing whitespaces 2018-03-16 20:48:02 +01:00
Daniel Sogl
f607a03c9b fix(contacts): refactor wrong ContactFieldTypes 2018-03-16 20:25:12 +01:00
Daniel Sogl
9ae9f19717 Merge pull request #2251 from Dellos7/patch-1
docs(code-push) updated example link to an up to date one
2018-03-16 19:10:51 +01:00
Daniel Sogl
72d78ec729 Merge pull request #2205 from JKH4/master
ref(local-notifications): Replace registerPermission by requestPermission
2018-03-16 18:18:19 +01:00
Daniel Sogl
f795b4f917 Merge pull request #2200 from fbaew/patch-1
correct typo
2018-03-16 18:17:22 +01:00
Daniel Sogl
dc5b58144c Merge pull request #2199 from mike-roberts/master
docs(GoogleMaps): GoogleMaps.prototype.create is deprecated
2018-03-16 18:17:03 +01:00
Daniel Sogl
241f0733ee feat(sqlite): add selfTest function
fix: #963
2018-03-16 17:55:42 +01:00
Daniel
92aff84e54 Merge remote-tracking branch 'upstream/master' into v5 2018-03-16 17:30:10 +01:00
Daniel Sogl
9cc3d8fd74 Merge pull request #2027 from qligier/master
docs(spinner-dialog): improve options documentation
2018-03-16 17:02:51 +01:00
Daniel Sogl
e58eb6e6b1 Merge pull request #2374 from andrewlively/master
Added setAnalyticsCollectionEnabled to Firebase plugin
2018-03-16 17:01:58 +01:00
Daniel Sogl
91288266cd Merge pull request #2376 from musou1500/fix-firebase-analytics
fix(firebase-analytics): add `sync` option for all methods
2018-03-16 17:01:32 +01:00
Daniel Sogl
7a31768f3d feat(device-accounts): add android account interface
feat(device-accounts): add android account interface
2018-03-16 16:58:53 +01:00
Daniel Sogl
1cf3d7da82 feat(device-feedback): add feedback interface
feat(device-feedback): add feedback interface
2018-03-16 16:58:27 +01:00
Daniel Sogl
50ae6f0888 feat(base64-to-gallery): add options interface
feat(base64-to-gallery): add options interface
2018-03-16 16:57:55 +01:00
Daniel Sogl
1bd0b591b4 docs(barcode-scanner): optimize example code
docs(barcode-scanner): optimize example code
2018-03-16 16:57:12 +01:00
Daniel Sogl
4fb73ca224 docs(battery-status): refactored example code
docs(battery-status): refactored example code
2018-03-16 16:56:33 +01:00
Daniel Sogl
11f4d208ad docs(call-number): add return values to example
docs(call-number): add return values to example
2018-03-16 16:56:05 +01:00
Daniel Sogl
020eec26b9 docs(db-meter): refactored example
docs(db-meter): refactored example
2018-03-16 16:55:45 +01:00
Daniel Sogl
73d6fa1998 docs(date-picker): fix some typos
docs(date-picker): fix some typos
2018-03-16 16:55:11 +01:00
Daniel Sogl
a9674f0348 feat(calendar): add getCreateCalendarOptions function
feat(calendar): add getCreateCalendarOptions function
2018-03-16 16:53:48 +01:00
Daniel Sogl
2536ef2009 docs(brightness): add correct types
docs(brightness): add correct types
2018-03-16 16:52:56 +01:00
Daniel Sogl
6066f9f8ad feat(ble): add scan options interface
feat(ble): add scan options interface
2018-03-16 16:52:20 +01:00
Daniel Sogl
c421d43155 ref(background-mode): fix wrong types
ref(background-mode): fix wrong types
2018-03-16 16:51:23 +01:00
Daniel Sogl
6fe3a5f90a ref(app-version): add corrent return types
ref(app-version): add corrent return types
2018-03-16 16:49:01 +01:00
Daniel Sogl
d1d7404a09 feat(app-update): add app update options
feat(app-update): add app update options
2018-03-16 16:48:35 +01:00
Daniel Sogl
c774466e62 feat(app-rate): add custom locale interface
feat(app-rate): add custom locale interface
2018-03-16 16:47:58 +01:00
Daniel Sogl
b8e101de5a ref(android-full-screen): remove unsupported flag
ref(android-full-screen): remove unsupported flag
2018-03-16 16:47:25 +01:00
Daniel Sogl
f3f83de008 ref(action-sheet): add corrent types
ref(action-sheet): add corrent types
2018-03-16 16:46:45 +01:00
Daniel Sogl
a456738d15 docs(debug): Improve example
docs(debug): Improve example
2018-03-16 16:46:27 +01:00
Daniel Sogl
428b36e948 fix(index-app-content): remove onItemPressed function
fix(index-app-content): remove onItemPressed function
2018-03-16 16:45:55 +01:00
Daniel Sogl
57696a9ade ref(crop): add options interface
ref(crop): add options interface
2018-03-16 16:41:42 +01:00
Daniel Sogl
91f66decab feat(one-signal): add clearOneSignalNotifications function
feat(one-signal): add clearOneSignalNotifications function
2018-03-16 16:41:01 +01:00
Daniel Sogl
d3dece4c52 fix(push): Android senderID as optional
fix(push): Android senderID as optional
2018-03-16 16:39:40 +01:00
Daniel Sogl
a8415dab39 feat(google-analytics): add missing functions
feat(google-analytics): add missing functions
2018-03-16 16:36:21 +01:00
Daniel Sogl
658bb75b42 fix(printer): add correct npm repository
fix(printer): add correct npm repository
2018-03-16 16:35:53 +01:00
Daniel Sogl
6dcebd03ef feat(badge) add isSupported function
feat(badge) add isSupported function
2018-03-16 16:35:27 +01:00
Daniel Sogl
c4eed9f362 Merge pull request #2379 from danielsogl/patch-12
feat(web-intent): add startService function
2018-03-16 16:34:33 +01:00
Daniel Sogl
be02f835bc Merge pull request #2378 from danielsogl/patch-11
refactor(WheelSelector): add union type for theme
2018-03-16 16:34:08 +01:00
Daniel Sogl
8d2681a9fc ref(device-orientation): add missing type 2018-03-16 16:32:43 +01:00
Daniel Sogl
7cafebd0e8 feat(device-feedback): add feedback interface 2018-03-16 15:17:29 +01:00
Daniel Sogl
d2261b6432 feat(device-accounts): add android account interface 2018-03-16 15:11:08 +01:00
Daniel Sogl
03c219936c docs(db-meter): refactored example 2018-03-16 15:00:45 +01:00
Daniel Sogl
a393e5c55d date-picker(date-picker): fix some typos 2018-03-16 14:56:22 +01:00
Daniel Sogl
ac303d6f7f docs(call-number): add return values to example 2018-03-16 14:45:03 +01:00
Daniel Sogl
13765d2d6a feat(calendar): add getCreateCalendarOptions function 2018-03-16 14:42:22 +01:00
Daniel Sogl
5f88ff02f2 Update index.ts 2018-03-16 14:35:12 +01:00
Daniel Sogl
447f00a202 docs(brightness): add correct types 2018-03-16 14:34:51 +01:00
Daniel Sogl
e345fed09f feat(ble): add scan options interface 2018-03-16 14:30:32 +01:00
Daniel Sogl
957f278738 docs(battery-status): refactored example code 2018-03-16 14:26:33 +01:00
Daniel Sogl
11d516fb28 feat(base64-to-gallery): add options interface 2018-03-16 14:23:50 +01:00
Daniel Sogl
1546cec694 doc(barcode-scanner): optimize example code 2018-03-16 14:19:16 +01:00
Daniel Sogl
7961768803 ref(background-mode): fix wront types 2018-03-16 14:13:26 +01:00
Daniel Sogl
7e1630f5e5 ref(app-versionn): add corrent return types 2018-03-16 13:57:44 +01:00
Daniel Sogl
0f325ed772 feat(app-update): add app update options 2018-03-16 13:53:28 +01:00
Daniel Sogl
2a18dbcf3e feat(app-rate): add custom locale interface 2018-03-16 13:46:08 +01:00
Daniel Sogl
bd72bbc87f ref(android-full-screen): remove unsupported flag 2018-03-16 13:36:12 +01:00
Daniel Sogl
e44229471e Update index.ts 2018-03-16 13:26:49 +01:00
Daniel Sogl
b616e0f0bf ref(action-sheet): add corrent types 2018-03-16 13:22:33 +01:00
Daniel Sogl
50f40bc46b docs(debug): Improve example 2018-03-16 11:29:20 +01:00
Daniel Sogl
679ad2cefc fix lint 2018-03-16 09:11:59 +01:00
Daniel Sogl
270678fb55 fix(index-app-content): remove onItemPressed function 2018-03-16 09:09:19 +01:00
Daniel Sogl
504838556e Update index.ts 2018-03-16 09:01:33 +01:00
Daniel Sogl
1e0d5ce30d ref(crop): add options interface 2018-03-16 09:00:47 +01:00
Daniel Sogl
fc0338a1c5 feat(one-signal): add clearOneSignalNotifications function 2018-03-16 08:49:49 +01:00
Daniel Sogl
1b237aa996 fix(push): Android senderID as optional 2018-03-15 22:12:36 +01:00
Daniel Sogl
ff0008e7eb feat(google-analytics): add missing functions 2018-03-15 22:02:58 +01:00
Daniel Sogl
4bf55d3b1a fix(printer): add correct npm repository 2018-03-15 21:30:07 +01:00
Daniel Sogl
bebc5c2a50 fix lint 2018-03-15 18:06:25 +01:00
Daniel Sogl
6d07cf1a84 fix lint 2018-03-15 18:05:09 +01:00
Daniel Sogl
95822aeac2 feat(badge) add isSupported function 2018-03-15 18:02:35 +01:00
Daniel Sogl
ec14e179c6 Update index.ts 2018-03-15 17:44:16 +01:00
Daniel Sogl
15bb350d8e feat(web-intent): add startService function 2018-03-15 17:42:38 +01:00
Daniel Sogl
e612c5fcc3 fix linter 2018-03-15 17:29:25 +01:00
Daniel Sogl
ee3a0c7c6a refactor(WheelSelector): add union type for theme 2018-03-15 17:00:54 +01:00
musou1500
42fd1f2400 fix(firebase-analytics): add sync option for all methods 2018-03-14 22:28:21 +09:00
Prabesh Niraula
7e0300a75f Added space after // 2018-03-12 14:20:40 -04:00
Andrew Lively
2e711b94bb Added setAnalyticsCollectionEnabled to Firebase plugin 2018-03-12 11:00:31 -04:00
pniraula
5fe579b2f3 Fixed whitespaces 2018-03-05 11:38:14 -05:00
KULDIP PIPALIYA
af75b49aa4 Update index.ts 2018-03-02 02:00:17 +05:30
Josh Babb
1932f2dd66 feat(jins-meme): enable background mode data collection
In order to enable background mode data collection we used the cordova-plugin-background-mode plugin in a new Cordova plugin repo, cordova-plugin-jins-meme (vs. cordova-plugin-jins-meme-es.)  We opted to maintain the old repository for backwards-compatibility as we have multiple apps using various versions; this is simplest.

Another unrelated change was made to silence unnecessary console logging.
2018-03-01 11:12:29 -06:00
Prabesh Niraula
8ece08379c Added new optional parameters for Icons in Interface 2018-03-01 12:03:14 -05:00
Pedro L.C.A
f11be24f74 feat(google-maps): update to match latest plugin version (#2320)
* Update index.ts

* Update index.ts

* Add missing features, and bug fix of methods

* update: classname must be in pascal case

* remove: duplicated class definition

* export encode and spherical static classes

* Add comma

* Fix Encoding and Spherical

* Add convenience methods

* Fix decorators for Encoding and Spherical

* Update: getMap() methods return the instance of the wrapper plugin

* Update: getMap() methods return the instance of the wrapper plugin

* Remove `@CordovaInstance` decorators from getMap()

* Update: GoogleMapOptions (all fields are not optional).

* Follow up:  version `2.0.0-beta2-20170719-2226` of cordova-plugin-googlemaps

* Fix: tslint error

* Fix: tslint error

* No more isAvailable() method.

* Bug fix: description is incorrect

* Bug fix: example code was wrong.

* Bug fix: HtmlInfoWindow does not work
https://github.com/ionic-team/ionic-native/pull/1815#issuecomment-318909795

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* Bug fix: HtmlInfoWindow does not work

* It seems the ionViewDidLoad() is enough delayed after platform.ready()

* Bug fix: map.setDiv()

* Bug fix: HtmlInfoWindow does not work

* Bug fix: BaseArrayClass definition is incorrect

* Bug fix: BaseArrayClass constructor is wrong

* Bug fix: Geocoder class does not work

* Bug fix: LatLngBounds constructor is wrong

* update: noNotify option is not declared

* Bug fix: Geocoder.geocode() returns array of GeocoderResult

* Update: clarify acceptable parameters of BaseArrayClass

* Add: AnimateCameraOption.padding is missing

* Revert: BaseClass.empty() method does not have the noNotify option

* Add `destruct` option to the CordovaOption.

- This allows BaseClass.on() is able to pass multiple retuned values from the cordova plugin side to the event lister.

* A semicolon is mixing

* update: event names

* Update: BaseClass.addEventListener(), addEventListenerOnce(), on(), and one()

* Add: destruct option for otherPromise
Change: inside event names (must use the version 2.0.0-beta3-20170808-1950 or higher)

* Build for working group

* Bug fix: map.getCameraTarget() definition is incorrect

* Bug fix: The definition of VisibleRegion interface is incorrect

* Fix: LatLng, LatLngBounds, and PolylineOptions classes
Update: map.getVisibleRegion()

Add: VisibleRegion class

* Bug fix: the definition of map.clear() method is incorrect

* Fix: map.fromLatLngToPoint()

* Ignore the dist directory on the master branch

* Remove the dist folder on the master branch

* fixes and tweaks

* use union types for CameraPosition

fixes issue mentioned on slack by @wf9a5m75

* fix types

* update AnimateCameraOptions interface

* remove AnimateCameraOptions interface

* add MarkerCluster class

* Bug fix: Can not create an instance of BaseArrayClass

* Bug fix: the icons property of MarkerClusterOptions

* Bug fix: the zoom option is missing

https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1712

* Update index.ts

* fix: need to convert instance type from the JS class to the wrapper class

https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1706

* remove test file

* fix: Error: Illegal use of "@private" tag.

* fix: The Environment, Encode, and Spherical  are static class

* fix:  convert JS instance to the ionic instance
add: BaseClass.destroy()
add: getId() method for all instance classes

* Documentation Error https://github.com/ionic-team/ionic-native/issues/1994

* Need to create another way to convert the instance for marker cluster

* save

* Remove the instance of wrapper class if the JS instance is removed.

* Bug fix: HtmlInfoWindow missing .on and .one methods
https://github.com/ionic-team/ionic-native/issues/2034

* Bug fix: HtmlInfoWindow constructor cause the error
https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1661

* Fix: Error when removing map
https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1823

* Add: the cssOptions argument for HtmlInfoWindow.setContent() method

* Bug fix: Polyline.getPoints(), Polygon.getPoints() and Polygon.getHoles()

Those methods need to create new instance of BaseArrayClass of wrapper plugin.

* Add: forEachAsync(), mapAsync(), and filterAsync() methods into BaseArray class

* update: use document.querySelector() instead of document.getElementById() if the passed element is string

update: map.setDiv()

Bug fix: can not create empty GoogleMap (pure JS version is available way)

* Fix: wait until the page is fully ready

* Fix: missing `clickable` option for PolygonOptions and PolylineOptions

* Add: accept own properties for `addMarker()` and others #2087

Fix: some properties are required, but specified as optional.

Add: descriptions for properties

* Bug fix: Static classes are defined as non static class
https://stackoverflow.com/questions/47083289/ionic-native-google-maps-plugin-set-app-background-color/47165721#47165721

* Add: poly class (plugin.google.maps.geometory.poly namespace)

* Bug fix: Ionic native googlemaps decodePath() returns undefined
https://forum.ionicframework.com/t/ionic-native-googlemaps-decodepath-returns-undefined/118624/

* PR #2254
https://github.com/ionic-team/ionic-native/pull/2254

* PR #2199
https://github.com/ionic-team/ionic-native/pull/2199

* Change defined event names for the cordova-plugin-googlemaps v2.0

* Change defined event names for the cordova-plugin-googlemaps v2.2.0

* Add Geolocation class

* Implement the `setMyLocationButtonEnabled()` method

* add: baseArrayClass.mapSeries() method
update: change internal methods

* update: implementation of the LocationService

* Implement the map.addKmlOverlay() method

* Update for the cordova-plugin-googlemaps v2.2.x
2018-02-26 07:52:58 -05:00
Attila Vago
8b829101ff insertCSS example update
The current example in the docs is incomplete and thus quite useless. Just on its own won't manipulate the CSS of a loaded page. It requires the InAppBrowserEvent, and using it in the callback.
2018-02-25 23:12:16 +00:00
Karri Rasinmäki
97d5d10c71 Updated to match new Cordova hook specs
- Script to match module definition (fixes paths)  
- Instructions to define hooks in recommend way
2018-02-25 00:46:08 +02:00
Markus Karileet
41e5a0f7fe feat(speechkit): plugin implementation 2018-02-22 22:02:44 +02:00
jeffreyramia
19c0b5812d Update index.ts
As stated in the plugin repo, the options field is optional. Also, the plugin returns a `iana_timezone` property such as 'America/New_York' which was not included.
2018-02-22 21:08:14 +02:00
bsorrentino
ee42cd3471 add support for Browser platform 2018-02-14 12:29:19 +01:00
Elian Cordoba
714bc46342 Update index.ts
Added missing descriptions taken from the plugin repo README.
2018-02-13 12:45:53 -03:00
Ionitron
7be82a40b5 Update Intercom docs to use setUserHash 2018-02-12 17:42:20 +08:00
Adam Duren
d50639fc55 Update firebase-dynamic-links to conform to the latest version of the plugin 2018-02-02 11:40:01 -05:00
Rajitha Kumara
84a8dbc9d2 Update index.ts
In line 20, "this.navigationBar.hide(autoHide);". But there is no such a function .hide(). It shoud be correct as "this.navigationBar.setUp(autoHide);".
2018-02-02 15:38:25 +05:30
Tyler VanZanten
f8e79cec5f fix(health-kit): add missing properties to HealthKitOptions 2018-02-01 15:07:28 -06:00
Niklas Merz
7db5492816 feat(inappbrowser) Add new footer options for Android 2018-02-01 19:28:45 +01:00
Guillaume Royer
04bdadedd8 feat(hot code push): add update events 2018-02-01 10:44:54 +00:00
Nicolas
61c0ecfa4f fix(call-log): update getCallLog signature 2018-01-30 22:35:48 +01:00
Nicolas
4b9cf17cbb fix(call-log): comments erratum 2018-01-28 13:53:16 +01:00
Nicolas
76a644d122 feat(call-log): add plugin 2018-01-28 02:19:09 +01:00
Max Lynch
954bd876de Tweaked pro constructor 2018-01-25 11:44:58 -06:00
Max Lynch
f419db5d80 fix(Pro): CordovaCheck should sync. #2136 #2127 2018-01-25 11:39:17 -06:00
Max Lynch
c8ecee01d6 fix(pro): Tweak to pro plugin. #2136 #2127 2018-01-25 11:35:39 -06:00
Max Lynch
eaa87fae9b chore(): update changelog 2018-01-25 11:35:39 -06:00
Ibby Hadeed
821d8222fa Merge w/ master 2018-01-25 12:31:38 -05:00
Ibby Hadeed
d0adae55cb Merge branch 'master' of github.com:ionic-team/ionic-native 2018-01-25 12:23:32 -05:00
Max Lynch
61293c33cc fix(pro): proper callback type and guard for plugin instantiate. #2136 #2127 2018-01-25 11:11:06 -06:00
Rory Standley
e4dd8dcb89 docs(): type of yes is boolean not string (#2290) 2018-01-25 06:18:18 -05:00
Guillaume Royer
e7968da7f4 feat(hot code push): add cordova-hot-code-push 2018-01-19 11:01:44 +00:00
Pedro Plasencia
6e58192630 feat(local-notifications): added a new param to specify if the notification will be silent 2018-01-18 10:47:04 -04:00
App Evangelist
288d6ed894 docs(cordova-file): added ArrayBuffer 2018-01-16 14:39:12 +01:00
Dominik García
03fc978db2 fix channels
fix channels

add sound to channels

fix channels
2018-01-15 16:42:37 -06:00
Miguel
4fc97037ac Update mixpanel
Added events: getSuperProperties, registerSuperPropertiesOnce, unregisterSuperProperty
2018-01-15 15:48:08 +01:00
Rodrigo Fernández
dbcb103adc fix(web-intent): rename onNewIntent to onIntent
The `onNewIntent` function doesn't exist in `darryncampbell-cordova-plugin-intent`, it's actually called `onIntent`.
2018-01-09 20:12:49 +01:00
David López Castellote
a413cf02e4 updated example link to an up to date one
The example: https://github.com/Dellos7/example-cordova-code-push-plugin contains an up-to-date example of how to use this plugin with Ionic; the current link is an outdated one.
2018-01-06 01:53:06 +01:00
JKH4
bfe9fadf5a Merge pull request #1 from JKH4/JKH4-patch-1-2
Replace registerPermission by requestPermission
2017-12-15 14:05:24 +01:00
JKH4
2714bcae7e Replace registerPermission by requestPermission
According to cordova-plugin-local-notifications update :
cordova.plugins.notification.local.requestPermission(function (granted) { ... });
2017-12-15 14:05:07 +01:00
Gregg Lewis
c309a3027f correct typo 2017-12-13 21:24:27 -07:00
Mike Roberts
2da568616d docs(GoogleMaps): GoogleMaps.prototype.create is deprecated, so updating docs to use static method. 2017-12-13 19:27:52 -05:00
Andrew Crites
adf10a301e docs(http): linking Stackoverflow answer for .pem to .cer 2017-12-13 14:52:45 -05:00
Ibby Hadeed
e480d296fe 4.5.2 2017-12-11 19:34:54 -05:00
Jonathan Tavares
e9580b46ef fix(DocumentPicker) uses String instead of DocumentPickerOptions 2017-11-02 16:38:18 +00:00
Jonathan Tavares
bfbbc2ee12 feat(DocumentPicker) adds DocumentPicker ios plugin 2017-11-02 16:21:51 +00:00
Vlado Velichkovski
2c5aed9619 fix,docs(firebase): make 'namespace' param optional in setDefault; remove callback indexes; docs fix
Add optional label for optional parameters in docs
remove wrong callback indexes
make 'namespace' param optional in setDefault
2017-10-09 19:25:50 +02:00
Paulo Vitor Magacho da Silva
38eaeffe7e Added Electric Imp Blinkup Plugin support 2017-10-08 10:44:50 -03:00
quentin
0daab8c31d docs(spinner-dialog): improve options documentation 2017-10-06 20:12:39 +02:00
309 changed files with 42842 additions and 14628 deletions

2
.gitignore vendored
View File

@@ -4,7 +4,9 @@ node_modules/
.tmp
aot/
scripts/ionic-native-bower
scripts/docs-json/*.json
dist/
src/@ionic-native/plugins/**/ngx
*.d.ts
injectable-classes.json

2620
CHANGELOG.md Normal file

File diff suppressed because it is too large Load Diff

11
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,11 @@
# Contributor Code of Conduct
As contributors and maintainers of the Ionic project, we pledge to respect everyone who contributes by posting issues, updating documentation, submitting pull requests, providing feedback in comments, and any other activities.
Communication through any of Ionic's channels (GitHub, Slack, Forum, IRC, mailing lists, Twitter, etc.) must be constructive and never resort to personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.
We promise to extend courtesy and respect to everyone involved in this project regardless of gender, gender identity, sexual orientation, disability, age, race, ethnicity, religion, or level of experience. We expect anyone contributing to the Ionic project to do the same.
If any member of the community violates this code of conduct, the maintainers of the Ionic project may take action, removing issues, comments, and PRs or blocking accounts as deemed appropriate.
If you are subject to or witness unacceptable behavior, or have any other concerns, please email us at [hi@ionicframework.com](mailto:hi@ionicframework.com).

View File

@@ -88,8 +88,6 @@ It's just a stub. The `return` is only there to keep the TypeScript type-checker
By default, the `@Cordova` decorator wraps the plugin callbacks in a Promise that resolves when the success callback is called and rejects when the error callback is called. It also ensures that Cordova and the underlying plugin are available, and prints helpful diagnostics if they aren't.
You'll also notice that `getCurrentPosition` is a static method. That's because the plugin class is just a utility class to call the underlying Cordova plugin methods, it's not an instance and has no state.
Next, let's look at the `watchPosition` method.
```
@@ -115,11 +113,11 @@ You need to run `npm run build` in the `ionic-native` project, this will create
### Cleaning the code
You need to run `npm run lint` to analyze the code and ensure it's consistency with the repository style. Fix any errors before submitting a PR.
You need to run `npm run lint` to analyze the code and ensure its consistency with the repository style. Fix any errors before submitting a PR.
### 'Wrapping' Up
That's it! The only thing left to do is rigorously document the plugin and it's usage. Take a look at some of the other plugins for good documentation styles.
That's it! The only thing left to do is rigorously document the plugin and its usage. Take a look at some of the other plugins for good documentation styles.
## Commit Message Format
@@ -194,7 +192,7 @@ Checks if the plugin and property exist before getting/setting the property's va
Example:
```ts
@CordovaProperty
@CordovaProperty()
someProperty: string;
```
@@ -218,4 +216,4 @@ Example:
```ts
@CordovaFunctionOverride()
someMethod(): Observable<any> { return; }
```
```

View File

@@ -1,6 +1,5 @@
[![Circle CI](https://circleci.com/gh/ionic-team/ionic-native.svg?style=shield)](https://circleci.com/gh/ionic-team/ionic-native) [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) ![](https://img.shields.io/npm/v/@ionic-native/core.svg)
# Ionic Native
Ionic Native is a curated set of wrappers for Cordova plugins that make adding any native functionality you need to your [Ionic](https://ionicframework.com/) mobile app easy.
@@ -10,14 +9,13 @@ Ionic Native wraps plugin callbacks in a Promise or Observable, providing a comm
## Installation
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/).
@@ -56,10 +54,10 @@ export class MyComponent {
constructor(private geolocation: Geolocation, private platform: Platform) {
platform.ready().then(() => {
this.platform.ready().then(() => {
// get position
geolocation.getCurrentPosition().then(pos => {
this.geolocation.getCurrentPosition().then(pos => {
console.log(`lat: ${pos.coords.latitude}, lon: ${pos.coords.longitude}`)
});
@@ -67,15 +65,14 @@ export class MyComponent {
// watch position
const watch = geolocation.watchPosition().subscribe(pos => {
console.log(`lat: ${pos.coords.latitude}, lon: ${pos.coords.longitude}`)
this.position = pos;
});
// to stop watching
watch.unsubscribe();
});
}
}
```
@@ -152,8 +149,8 @@ Then create a new class that extends the `Camera` class with a mock implementati
class CameraMock extends Camera {
getPicture(options) {
return new Promise((resolve, reject) => {
resolve("BASE_64_ENCODED_DATA_GOES_HERE");
})
resolve('BASE_64_ENCODED_DATA_GOES_HERE');
});
}
}
```
@@ -161,15 +158,13 @@ class CameraMock extends Camera {
Finally, override the previous `Camera` class in your `providers` for this module:
```typescript
providers: [
{ provide: Camera, useClass: CameraMock }
]
providers: [{ provide: Camera, useClass: CameraMock }];
```
Here's the full example:
```typescript
import { NgModule, ErrorHandler } from '@angular/core';
import { ErrorHandler, NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { MyApp } from './app.component';
@@ -177,28 +172,22 @@ import { HomePage } from '../pages/home/home';
import { Camera } from '@ionic-native/camera/ngx';
import { HomePage } from '../pages/home/home';
import { MyApp } from './app.component';
class CameraMock extends Camera {
getPicture(options) {
return new Promise((resolve, reject) => {
resolve("BASE_64_ENCODED_DATA_GOES_HERE");
})
resolve('BASE_64_ENCODED_DATA_GOES_HERE');
});
}
}
@NgModule({
declarations: [
MyApp,
HomePage
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp)
],
declarations: [MyApp, HomePage],
imports: [BrowserModule, IonicModule.forRoot(MyApp)],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
HomePage
],
entryComponents: [MyApp, HomePage],
providers: [
{ provide: ErrorHandler, useClass: IonicErrorHandler },
{ provide: Camera, useClass: CameraMock }
@@ -207,15 +196,14 @@ class CameraMock extends Camera {
export class AppModule {}
```
### Runtime Diagnostics
Spent way too long diagnosing an issue only to realize a plugin wasn't firing or installed? Ionic Native lets you know what the issue is and how you can resolve it.
![img](https://ionic-io-assets.s3.amazonaws.com/ionic-native-console.png)
## Plugin Missing?
Let us know or submit a PR! Take a look at [the Developer Guide](https://github.com/ionic-team/ionic-native/blob/master/DEVELOPER.md) for more on how to contribute. :heart:
@@ -223,6 +211,8 @@ Let us know or submit a PR! Take a look at [the Developer Guide](https://github.
Ibby Hadeed - [@ihadeed](https://github.com/ihadeed)
Daniel Sogl - [@sogldaniel](https://twitter.com/sogldaniel)
Tim Lancina - [@timlancina](https://twitter.com/timlancina)
Mike Hartington - [@mhartington](https://twitter.com/mhartington)

View File

@@ -3,7 +3,7 @@ jobs:
build:
working_directory: ~/ionic-native/
docker:
- image: node:8
- image: node:12
steps:
- checkout
- restore_cache:
@@ -22,7 +22,7 @@ jobs:
key: node_modules_{{ checksum "package.json" }}
- run:
name: Install node modules
command: npm i
command: npm ci
- save_cache:
key: node_modules_{{ checksum "package.json" }}
paths:

View File

@@ -1,51 +1,51 @@
"use strict";
'use strict';
const gulp = require('gulp'),
minimist = require('minimist'),
rename = require("gulp-rename"),
rename = require('gulp-rename'),
tslint = require('gulp-tslint'),
decamelize = require('decamelize'),
replace = require('gulp-replace'),
_ = require('lodash');
const flagConfig = {
string: ['port', 'version', 'ngVersion', 'animations'],
boolean: ['dry-run'],
alias: {'p': 'port', 'v': 'version', 'a': 'ngVersion'},
alias: { p: 'port', v: 'version', a: 'ngVersion' },
default: { port: 8000 }
},
flags = minimist(process.argv.slice(2), flagConfig);
/* Docs tasks */
require('./scripts/docs/gulp-tasks')(gulp, flags);
gulp.task('lint', () => {
return gulp.src('src/**/*.ts')
.pipe(tslint({
formatter: "verbose",
configuration: 'tslint.json'
}))
return gulp
.src('src/**/*.ts')
.pipe(
tslint({
formatter: 'verbose',
configuration: 'tslint.json'
})
)
.pipe(tslint.report());
});
gulp.task('plugin:create', () => {
if (flags.n && flags.n !== ''){
const src = flags.m ? './scripts/templates/wrap-min.tmpl':'./scripts/templates/wrap.tmpl',
if (flags.n && flags.n !== '') {
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);
return gulp.src(src)
return gulp
.src(src)
.pipe(replace('{{ PluginName }}', pluginName))
.pipe(replace('{{ Plugin_Name }}', spaced))
.pipe(replace('{{ pluginName }}', _.lowerFirst(pluginName)))
.pipe(replace('{{ plugin-name }}', kebabCase))
.pipe(rename('index.ts'))
.pipe(gulp.dest('./src/@ionic-native/plugins/' + kebabCase));
} else {
console.log("Usage is: gulp plugin:create -n PluginName");
console.log('Usage is: gulp plugin:create -n PluginName');
}
});

20202
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "ionic-native",
"version": "5.0.0-beta.4",
"version": "5.15.1",
"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)",
@@ -9,68 +9,63 @@
"test": "jest",
"test:watch": "jest --watch",
"build:core": "tsc -p tsconfig.core.json",
"build:esm": "ts-node -P scripts scripts/tasks/build-esm",
"build:es5": "ts-node -P scripts scripts/tasks/build-es5",
"build:ngx": "ts-node -P scripts scripts/tasks/build-ngx",
"build:esm": "ts-node -P scripts/tsconfig.json scripts/tasks/build-esm",
"build:es5": "ts-node -P scripts/tsconfig.json scripts/tasks/build-es5",
"build:ngx": "ts-node -P scripts/tsconfig.json scripts/tasks/build-ngx",
"build": "npm run build:core && npm run build:esm && npm run build:ngx && npm run build:es5",
"prebuild": "rm -rf dist",
"npmpub": "ts-node -P scripts scripts/tasks/publish",
"prebuild": "rimraf -rf dist",
"npmpub": "ts-node -P scripts/tsconfig.json scripts/tasks/publish",
"lint": "gulp lint",
"readmes": "gulp readmes",
"docs-json": "ts-node -P scripts/tsconfig.json scripts/docs-json",
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
"postchangelog": "git commit -am \"chore(): update changelog\"",
"shipit": "npm run build && npm run readmes && npm run npmpub"
},
"devDependencies": {
"@angular/common": "latest",
"@angular/compiler": "latest",
"@angular/compiler-cli": "latest",
"@angular/core": "latest",
"@angular/common": "^8.2.11",
"@angular/compiler": "^8.2.11",
"@angular/compiler-cli": "^8.2.11",
"@angular/core": "^8.2.11",
"@types/cordova": "0.0.34",
"@types/fs-extra": "^4.0.5",
"@types/jest": "21.1.5",
"@types/lodash": "4.14.85",
"@types/node": "8.0.47",
"@types/fs-extra": "^8.0.1",
"@types/jest": "^24.0.19",
"@types/lodash": "^4.14.144",
"@types/node": "^12.11.1",
"@types/rimraf": "^2.0.2",
"@types/webpack": "^3.8.1",
"async-promise-queue": "^1.0.4",
"babel-core": "^6.26.0",
"babel-preset-env": "^1.6.1",
"babelify": "^8.0.0",
"browserify": "^14.5.0",
"canonical-path": "0.0.2",
"conventional-changelog-cli": "1.3.4",
"cpr": "2.0.0",
"cz-conventional-changelog": "2.0.0",
"decamelize": "1.2.0",
"dgeni": "0.4.7",
"@types/webpack": "^4.39.3",
"ajv": "^6.10.2",
"async-promise-queue": "^1.0.5",
"conventional-changelog-cli": "^2.0.25",
"cz-conventional-changelog": "^3.0.2",
"dgeni": "^0.4.12",
"dgeni-packages": "0.16.10",
"fs-extra": "^4.0.3",
"fs-extra-promise": "^1.0.1",
"gulp": "3.9.1",
"gulp-rename": "1.2.2",
"gulp-replace": "0.6.1",
"gulp-tslint": "8.1.2",
"jest": "21.2.1",
"lodash": "4.17.4",
"fs-extra": "^8.1.0",
"gulp": "^4.0.2",
"gulp-rename": "^1.4.0",
"gulp-replace": "^1.0.0",
"gulp-tslint": "^8.1.4",
"jest": "^24.9.0",
"lodash": "^4.17.15",
"minimist": "1.2.0",
"nodemon": "1.12.1",
"rimraf": "^2.6.2",
"rxjs": "5.5.2",
"string-replace-webpack-plugin": "^0.1.3",
"ts-jest": "21.1.4",
"ts-node": "3.3.0",
"tslint": "5.8.0",
"tslint-ionic-rules": "0.0.11",
"typescript": "^2.6.2",
"uglifyjs-webpack-plugin": "^1.1.2",
"unminified-webpack-plugin": "^1.4.2",
"webpack": "^3.9.1",
"winston": "^3.0.0-rc1"
"natives": "^1.1.6",
"rimraf": "^3.0.0",
"rxjs": "^6.5.3",
"ts-jest": "^24.1.0",
"ts-node": "^8.4.1",
"tslint": "^5.20.0",
"tslint-ionic-rules": "0.0.21",
"typedoc": "^0.15.0",
"typescript": "~3.5.3",
"uglifyjs-webpack-plugin": "^2.2.0",
"unminified-webpack-plugin": "^2.0.0",
"webpack": "^4.41.2",
"winston": "^3.2.1",
"zone.js": "^0.9.1"
},
"jest": {
"transform": {
"^.+\\.tsx?$": "<rootDir>/node_modules/ts-jest/preprocessor.js"
"^.+\\.tsx?$": "ts-jest"
},
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(js?|ts?)$",
"moduleFileExtensions": [

View File

@@ -5,14 +5,16 @@ import { camelCase, clone } from 'lodash';
import { Logger } from '../logger';
export const ROOT = path.resolve(__dirname, '../../');
// tslint:disable-next-line:no-var-requires
export const TS_CONFIG = clone(require(path.resolve(ROOT, 'tsconfig.json')));
export const COMPILER_OPTIONS = TS_CONFIG.compilerOptions;
export const PLUGINS_ROOT = path.join(ROOT, 'src/@ionic-native/plugins/');
export const PLUGIN_PATHS = fs.readdirSync(PLUGINS_ROOT).map(d => path.join(PLUGINS_ROOT, d, 'index.ts'));
export function getDecorator(node: ts.Node, index: number = 0): ts.Decorator {
if (node.decorators && node.decorators[index])
export function getDecorator(node: ts.Node, index = 0): ts.Decorator {
if (node.decorators && node.decorators[index]) {
return node.decorators[index];
}
}
export function hasDecorator(decoratorName: string, node: ts.Node): boolean {
@@ -37,12 +39,12 @@ export function getDecoratorArgs(decorator: any) {
switch (prop.initializer.kind) {
case ts.SyntaxKind.StringLiteral:
case ts.SyntaxKind.Identifier:
val = prop.initializer.text;
// args[prop.name.escapedText] = val;
break;
case ts.SyntaxKind.ArrayLiteralExpression:
val = prop.initializer.elements.map(e => e.text);
val = prop.initializer.elements.map((e: any) => e.text);
break;
case ts.SyntaxKind.TrueKeyword:
@@ -59,7 +61,7 @@ export function getDecoratorArgs(decorator: any) {
default:
Logger.debug('Unexpected property value type: ' + prop.initializer.kind);
throw 'Unexpected property value type << helpers.ts >>';
throw new Error('Unexpected property value type << helpers.ts >>');
}
args[prop.name.text] = val;

View File

@@ -57,7 +57,7 @@ export function generateDeclarationFiles() {
// remove reference to @ionic-native/core decorators
export function modifyMetadata() {
PLUGIN_PATHS.map(p => p.replace('src', 'dist').replace('index.ts', 'ngx/index.metadata.json'))
PLUGIN_PATHS.map(p => p.replace(path.join(ROOT, 'src'), path.join(ROOT, 'dist')).replace('index.ts', 'ngx/index.metadata.json'))
.forEach(p => {
const content = fs.readJSONSync(p);
let _prop;

View File

@@ -1,6 +1,7 @@
import * as ts from 'typescript';
import * as fs from 'fs-extra';
import * as path from 'path';
import * as ts from 'typescript';
import { hasDecorator, ROOT } from '../helpers';
export interface InjectableClassEntry {
@@ -24,24 +25,28 @@ export function extractInjectables() {
return (ctx: ts.TransformationContext) => {
return tsSourceFile => {
if (tsSourceFile.fileName.indexOf('src/@ionic-native/plugins') > -1) {
ts.visitEachChild(tsSourceFile, node => {
if (node.kind !== ts.SyntaxKind.ClassDeclaration) {
return node;
}
ts.visitEachChild(
tsSourceFile,
node => {
if (node.kind !== ts.SyntaxKind.ClassDeclaration) {
return node;
}
const isInjectable: boolean = hasDecorator('Injectable', node);
if (isInjectable) {
injectableClasses.push({
file: tsSourceFile.path,
className: (node as ts.ClassDeclaration).name.text,
dirName: tsSourceFile.path.split(/[\\\/]+/).reverse()[1]
});
}
}, ctx);
const isInjectable: boolean = hasDecorator('Injectable', node);
if (isInjectable) {
injectableClasses.push({
file: tsSourceFile.path,
className: (node as ts.ClassDeclaration).name.text,
dirName: tsSourceFile.path.split(/[\\\/]+/).reverse()[1]
});
}
},
ctx
);
}
return tsSourceFile;
}
};
};
}

View File

@@ -15,11 +15,13 @@ function transformImports(file: ts.SourceFile, ctx: ts.TransformationContext, ng
// we're only interested in files containing @ionic-native/core import statement
if (!importStatement) return file;
let decorators: string[] = [];
const decorators: string[] = [];
const decoratorRegex: RegExp = /@([a-zA-Z]+)\(/g;
const ignored: string [] = ['Plugin', 'Component'];
const ignored: string [] = ['Plugin', 'Component', 'Injectable'];
const keep: string [] = ['getPromise', 'checkAvailability'];
let m;
@@ -35,10 +37,29 @@ 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))
...methodElements,
...importStatement.importClause.namedBindings.elements.filter(
el => keep.indexOf(el.name.text) !== -1 && methodNames.indexOf(el.name.text) === -1
)
];
if (ngcBuild) {
importStatement.importClause.namedBindings.elements = importStatement.importClause.namedBindings.elements.map(
binding => {
if (binding.escapedText) {
binding.name = {
text: binding.escapedText
};
}
return binding;
}
);
}
}
return file;
@@ -48,6 +69,6 @@ export function importsTransformer(ngcBuild?: boolean) {
return (ctx: ts.TransformationContext) => {
return tsSourceFile => {
return transformImports(tsSourceFile, ctx, ngcBuild);
}
};
};
}

View File

@@ -5,7 +5,7 @@ import { transformProperty } from './properties';
export function transformMembers(cls: ts.ClassDeclaration) {
const propertyIndices: number[] = [];
let members = cls.members.map((member: any, index: number) => {
const members = cls.members.map((member: any, index: number) => {
// only process decorated members
if (!member.decorators || !member.decorators.length) return member;

View File

@@ -1,58 +1,75 @@
import * as ts from 'typescript';
import { Logger } from '../../logger';
import { convertValueToLiteral, getDecorator, getDecoratorArgs, getDecoratorName } from '../helpers';
import {
convertValueToLiteral,
getDecorator,
getDecoratorArgs,
getDecoratorName
} from '../helpers';
import { transformMembers } from './members';
function transformClass(cls: any, ngcBuild?: boolean) {
Logger.profile('transformClass: ' + cls.name.text);
const pluginStatics = [];
const dec: any = getDecorator(cls);
const pluginStatics = [];
const dec: any = getDecorator(cls);
if (dec) {
const pluginDecoratorArgs = getDecoratorArgs(dec);
if (dec) {
const pluginDecoratorArgs = getDecoratorArgs(dec);
// add plugin decorator args as static properties of the plugin's class
for (let prop in pluginDecoratorArgs) {
pluginStatics.push(ts.createProperty(
// add plugin decorator args as static properties of the plugin's class
for (const prop in pluginDecoratorArgs) {
pluginStatics.push(
ts.createProperty(
undefined,
[ts.createToken(ts.SyntaxKind.StaticKeyword)],
ts.createIdentifier(prop),
undefined,
undefined,
convertValueToLiteral(pluginDecoratorArgs[prop])
));
}
)
);
}
}
cls = ts.createClassDeclaration(
ngcBuild && cls.decorators && cls.decorators.length? cls.decorators.filter(d => getDecoratorName(d) === 'Injectable') : undefined, // remove Plugin and Injectable decorators
[ts.createToken(ts.SyntaxKind.ExportKeyword)],
cls.name,
cls.typeParameters,
cls.heritageClauses,
[
...transformMembers(cls),
...pluginStatics
]
);
cls = ts.createClassDeclaration(
ngcBuild && cls.decorators && cls.decorators.length
? cls.decorators.filter(d => getDecoratorName(d) === 'Injectable')
: undefined, // remove Plugin and Injectable decorators
[ts.createToken(ts.SyntaxKind.ExportKeyword)],
cls.name,
cls.typeParameters,
cls.heritageClauses,
[...transformMembers(cls), ...pluginStatics]
);
Logger.profile('transformClass: ' + cls.name.text, { level: 'verbose' });
return cls;
Logger.profile('transformClass: ' + cls.name.text);
return cls;
}
function transformClasses(file: ts.SourceFile, ctx: ts.TransformationContext, ngcBuild?: boolean) {
function transformClasses(
file: ts.SourceFile,
ctx: ts.TransformationContext,
ngcBuild?: boolean
) {
Logger.silly('Transforming file: ' + file.fileName);
return ts.visitEachChild(file, node => {
if (node.kind !== ts.SyntaxKind.ClassDeclaration) {
return node;
}
return transformClass(node, ngcBuild);
}, ctx);
return ts.visitEachChild(
file,
node => {
if (node.kind !== ts.SyntaxKind.ClassDeclaration
|| (node.modifiers && node.modifiers.find(v => v.kind === ts.SyntaxKind.DeclareKeyword))) {
return node;
}
return transformClass(node, ngcBuild);
},
ctx
);
}
export function pluginClassTransformer(ngcBuild?: boolean): ts.TransformerFactory<ts.SourceFile> {
export function pluginClassTransformer(
ngcBuild?: boolean
): ts.TransformerFactory<ts.SourceFile> {
return (ctx: ts.TransformationContext) => {
return tsSourceFile => {
if (tsSourceFile.fileName.indexOf('src/@ionic-native/plugins') > -1)

View File

@@ -1,8 +1,8 @@
import * as ts from 'typescript';
import { getDecorator, getDecoratorName } from '../helpers';
export function transformProperty(members: any[], index: number) {
const property = members[index] as ts.PropertyDeclaration,
decorator = getDecorator(property),
decoratorName = getDecoratorName(decorator);
@@ -18,36 +18,50 @@ export function transformProperty(members: any[], index: number) {
type = 'instance';
break;
default: return property;
default:
return property;
}
const getter = ts.createGetAccessor(undefined, undefined, property.name, undefined, property.type, ts.createBlock([
ts.createReturn(
ts.createCall(
ts.createIdentifier(type + 'PropertyGet'),
undefined,
[
const getter = ts.createGetAccessor(
undefined,
undefined,
property.name,
undefined,
property.type,
ts.createBlock([
ts.createReturn(
ts.createCall(ts.createIdentifier(type + 'PropertyGet'), undefined, [
ts.createThis(),
ts.createLiteral((property.name as any).text)
]
])
)
)
]));
])
);
const setter = ts.createSetAccessor(undefined, undefined, property.name, [ts.createParameter(undefined, undefined, undefined, 'value', undefined, property.type)], ts.createBlock([
ts.createStatement(
ts.createCall(
ts.createIdentifier(type + 'PropertySet'),
const setter = ts.createSetAccessor(
undefined,
undefined,
property.name,
[
ts.createParameter(
undefined,
[
undefined,
undefined,
'value',
undefined,
property.type
)
],
ts.createBlock([
ts.createStatement(
ts.createCall(ts.createIdentifier(type + 'PropertySet'), undefined, [
ts.createThis(),
ts.createLiteral((property.name as any).text),
ts.createIdentifier('value')
]
])
)
)
]));
])
);
return [getter, setter];
}

View File

@@ -12,7 +12,7 @@ export function getCompilerHost() {
return host;
}
export function getProgram(declaration: boolean = false, pluginPaths: string[] = PLUGIN_PATHS) {
export function getProgram(declaration = false, pluginPaths: string[] = PLUGIN_PATHS) {
const compilerOptions: ts.CompilerOptions = clone(COMPILER_OPTIONS);
compilerOptions.declaration = declaration;
compilerOptions.moduleResolution = ts.ModuleResolutionKind.NodeJs;

101
scripts/docs-json/index.ts Normal file
View File

@@ -0,0 +1,101 @@
import * as fs from 'fs-extra';
import { Application } from 'typedoc';
import { basename, dirname, resolve } from 'path';
import { runInNewContext } from 'vm';
interface Plugin {
packageName: string;
displayName: string;
description: string;
platforms: string[];
usage: string;
repo: string;
installVariables: string[];
cordovaPlugin: {
name: string;
};
}
const rootDir = resolve(__dirname, '../..');
const typedocTmp = resolve(__dirname, 'typedoc.tmp.json');
const pluginsDir = resolve(rootDir, 'src/@ionic-native/plugins');
const typedoc = new Application({
mode: 'modules',
tsconfig: resolve(rootDir, 'tsconfig.json'),
ignoreCompilerErrors: true
});
run(pluginsDir);
async function run(pluginsDir: string) {
const typedocData = await generateTypedoc(pluginsDir);
const modules = typedocData.children.filter(isModule);
const plugins = modules.filter(hasPlugin).map(processPlugin);
await fs.outputJson(resolve(__dirname, 'plugins.json'), plugins, {
spaces: 2
});
}
async function generateTypedoc(root: string, outputPath = typedocTmp) {
const pluginDirs = await fs.readdir(root);
const paths = pluginDirs.map(dir => resolve(root, dir, 'index.ts'));
typedoc.generateJson(paths, outputPath);
return fs.readJson(outputPath);
}
function processPlugin(pluginModule): Plugin {
const pluginClass = pluginModule.children.find(isPlugin);
const decorator = getPluginDecorator(pluginClass);
const packageName = `@ionic-native/${basename(dirname(pluginModule.originalName))}`;
const displayName = getTag(pluginClass, 'name');
const usage = getTag(pluginClass, 'usage');
const description = getTag(pluginClass, 'description');
return {
packageName,
displayName,
description,
usage,
platforms: decorator.platforms,
repo: decorator.repo,
installVariables: decorator.installVariables,
cordovaPlugin: {
name: decorator.plugin
}
};
}
/**
* Typedoc only gives us the Plugin decorator internals
* as a string. So, rather than try to parse that with a RegExp,
* we evaluate it using Node's vm module.
*/
const getPluginDecorator = (child: any) => {
if (isPlugin(child)) {
const decorator = child.decorators.find(d => d.name === 'Plugin');
return runInNewContext(`(${decorator.arguments.config})`);
}
};
const getTag = (child: any, tagName: string): string => {
if (hasTags(child)) {
const tag = child.comment.tags.find(t => t.tag === tagName);
if (tag) {
return tag.text;
}
}
};
const isModule = (child: any): boolean =>
child.kind === 1;
const isClass = (child: any): boolean =>
child.kind === 128;
const isPlugin = (child: any): boolean =>
isClass(child) && hasTags(child) && Array.isArray(child.decorators) && child.decorators.some(d => d.name === 'Plugin');
const hasPlugin = (child: any): boolean =>
child.children.some(isPlugin);
const hasTags = (child: any): boolean =>
child.comment && Array.isArray(child.comment.tags);

View File

@@ -0,0 +1,3 @@
# docs-json
This script reads and generates [typedoc](https://github.com/TypeStrong/typedoc) data for each of the plugins in `src/@ionic-native/plugins`. That data is then formatted and output as `plugins.json` in this directory.

View File

@@ -10,6 +10,12 @@ module.exports = function jekyll(renderDocsProcessor) {
// pretty up and sort the docs object for menu generation
docs = docs.filter(doc => (!!doc.name && !!doc.outputPath) || doc.docType === 'index-page');
docs.push({
docType: 'class',
URL: 'https://github.com/ionic-team/ionic-native-google-maps/blob/master/documents/README.md',
name: 'Google Maps',
});
docs.sort((a, b) => {
const textA = a.name ? a.name.toUpperCase() : '',
textB = b.name ? b.name.toUpperCase() : '';
@@ -18,14 +24,20 @@ module.exports = function jekyll(renderDocsProcessor) {
});
docs.forEach(doc => {
if (!doc.outputPath) {
return;
}
doc.outputPath = doc.outputPath.toLowerCase().replace(/\s/g, '-');
doc.URL = doc.outputPath.replace('docs//', 'docs/')
.replace('/index.md', '')
.replace('content/', '');
// add trailing slash to plugin pages
if(!doc.URL.endsWith("/") && !doc.URL.endsWith(".html")) {
doc.URL = doc.URL+'/';
doc.URL = doc.URL + '/';
}
doc.URL = '/' + doc.URL;
});
const betaDocs = [];

View File

@@ -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('<', '&lt;').replace('>', '&gt;') $><@ else @>ionic cordova plugin add <$ prop.plugin $><@ endif @>
$ npm install --save @ionic-native/<$ doc.npmId $>
$ 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>

View File

@@ -6,5 +6,5 @@
</li>
<@- for doc in docs @><@ if doc.URL and doc.private != true @>
<li class="capitalize {% if page.id == '<$ doc.name|lower|dashify $>' %}active{% endif %}">
<a href="/<$ doc.URL $>"><$ doc.name $><@ if doc.paid == true @> <span class="paid">Paid</span><@ endif @><@ if doc.beta == true @> <span class="beta">&beta;</span><@ endif @></a>
<a href="<$ doc.URL $>"><$ doc.name $><@ if doc.paid == true @> <span class="paid">Paid</span><@ endif @><@ if doc.beta == true @> <span class="beta">&beta;</span><@ endif @></a>
</li><@ endif @><@ endfor @>

View File

@@ -17,7 +17,7 @@
```
$ <@ if prop.install @><$ prop.install $><@ else @>ionic cordova plugin add <$ prop.plugin $><@ endif @>
$ npm install --save @ionic-native/<$ doc.npmId $>
$ 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/','') $>)

View File

@@ -1,39 +1,34 @@
"use strict";
'use strict';
const config = require('./config.json'),
projectPackage = require('../../package.json'),
path = require('path'),
fs = require('fs-extra-promise').useFs(require('fs-extra')),
fs = require('fs-extra'),
Dgeni = require('dgeni');
module.exports = gulp => {
gulp.task('docs', [], () => {
gulp.task('docs', () => {
try {
const ionicPackage = require('./dgeni/dgeni-config')(projectPackage.version),
dgeni = new Dgeni([ionicPackage]);
return dgeni.generate().then(docs => console.log(docs.length + ' docs generated'));
} catch (err) {
console.log(err.stack);
}
});
gulp.task('readmes', [], function() {
fs.copySync(path.resolve(__dirname, '..', '..', 'README.md'), path.resolve(__dirname, '..', '..', config.pluginDir, 'core', 'README.md'));
gulp.task('readmes', () => {
fs.copySync(
path.resolve(__dirname, '..', '..', 'README.md'),
path.resolve(__dirname, '..', '..', config.pluginDir, 'core', 'README.md')
);
try {
const ionicPackage = require('./dgeni/dgeni-readmes-config')(projectPackage.version),
dgeni = new Dgeni([ionicPackage]);
return dgeni.generate().then(docs => console.log(docs.length + ' README files generated'));
} catch (err) {
console.log(err.stack);
}
});
};

View File

@@ -34,4 +34,4 @@ function run {
}
source $(dirname $0)/../utils.inc.sh
source $(dirname $0)/utils.inc.sh

View File

@@ -47,4 +47,4 @@ function run {
fi
}
source $(dirname $0)/../utils.inc.sh
source $(dirname $0)/utils.inc.sh

View File

@@ -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 "$@"

View File

@@ -1,13 +1,11 @@
import { createLogger, transports, format } from 'winston';
const { label, printf, prettyPrint, combine, colorize, simple } = format;
import { createLogger, format, transports } from 'winston';
const LOG_LEVEL = 'silly';
const { combine, colorize, simple } = format;
const LOG_LEVEL = 'verbose';
export const Logger = createLogger({
level: LOG_LEVEL,
format: combine(
colorize(),
simple(),
),
format: combine(colorize(), simple()),
transports: [new transports.Console({ level: LOG_LEVEL })]
});

View File

@@ -1,20 +1,33 @@
import * as fs from 'fs-extra';
import * as path from 'path';
import * as webpack from 'webpack';
import * as uglifyJsPlugin from 'uglifyjs-webpack-plugin';
import * as unminifiedPlugin from 'unminified-webpack-plugin';
import { cleanEmittedData, EMIT_PATH, InjectableClassEntry } from '../build/transformers/extract-injectables';
import * as webpack from 'webpack';
import { ROOT } from '../build/helpers';
import {
cleanEmittedData,
EMIT_PATH,
InjectableClassEntry
} from '../build/transformers/extract-injectables';
import { Logger } from '../logger';
const DIST = path.resolve(ROOT, 'dist');
const INDEX_PATH = path.resolve(DIST, 'index.js');
const INJECTABLE_CLASSES = fs.readJSONSync(EMIT_PATH).map((item: InjectableClassEntry) => {
item.file = './' + item.file.split(/[\/\\]+/).slice(-4, -1).join('/');
return item;
});
const INJECTABLE_CLASSES = fs
.readJSONSync(EMIT_PATH)
.map((item: InjectableClassEntry) => {
item.file =
'./' +
item.file
.split(/[\/\\]+/)
.slice(-4, -1)
.join('/');
return item;
});
const webpackConfig: webpack.Configuration = {
mode: 'production',
entry: INDEX_PATH,
devtool: 'source-map',
target: 'web',
@@ -30,14 +43,16 @@ const webpackConfig: webpack.Configuration = {
}
},
module: {
rules: [{
test: /\.js$/,
use: path.resolve(ROOT, 'scripts/build/remove-tslib-helpers.js')
}]
rules: [
{
test: /\.js$/,
use: path.resolve(ROOT, 'scripts/build/remove-tslib-helpers.js')
}
]
},
plugins: [
new webpack.ProvidePlugin({
'__extends': ['tslib', '__extends']
__extends: ['tslib', '__extends']
}),
new webpack.optimize.OccurrenceOrderPlugin(true),
new webpack.DefinePlugin({
@@ -51,7 +66,7 @@ const webpackConfig: webpack.Configuration = {
};
function getPluginImport(entry: InjectableClassEntry) {
return `import { ${ entry.className } } from '${ entry.file }';`;
return `import { ${entry.className} } from '${entry.file}';`;
}
function createIndexFile() {
@@ -69,7 +84,7 @@ function createIndexFile() {
function compile() {
Logger.profile('build-es5');
webpack(webpackConfig, (err, stats) => {
Logger.profile('build-es5', { level: 'verbose' });
Logger.profile('build-es5');
if (err) Logger.error('Error occurred while compiling with Webpack', err);
else {
Logger.info('Compiled ES5 file with Webpack successfully.');

View File

@@ -1,27 +1,44 @@
import { generateDeclarations, transpile } from '../build/transpile';
import { EMIT_PATH } from '../build/transformers/extract-injectables';
import { PLUGIN_PATHS } from '../build/helpers';
import * as fs from 'fs-extra';
import * as path from 'path';
import { PLUGIN_PATHS, ROOT } from '../build/helpers';
import { EMIT_PATH } from '../build/transformers/extract-injectables';
import { generateDeclarations, transpile } from '../build/transpile';
generateDeclarations();
transpile();
const outDirs = PLUGIN_PATHS.map(p => p.replace('src', 'dist').replace(/[\\/]index.ts/, ''));
const outDirs = PLUGIN_PATHS.map(p =>
p.replace(path.join(ROOT, 'src'), path.join(ROOT, 'dist')).replace(/[\\/]index.ts/, '')
);
const injectableClasses = fs.readJSONSync(EMIT_PATH);
outDirs.forEach(dir => {
const classes = injectableClasses.filter(entry => entry.dirName === dir.split(/[\\/]+/).pop());
const classes = injectableClasses.filter(
entry => entry.dirName === dir.split(/[\\/]+/).pop()
);
let jsFile: string = fs.readFileSync(path.join(dir, 'index.js'), 'utf-8'),
dtsFile: string = fs.readFileSync(path.join(dir, 'index.d.ts'), 'utf-8');
classes.forEach(entry => {
dtsFile = dtsFile.replace(`class ${ entry.className } `, 'class ' + entry.className + 'Original ');
dtsFile += `\nexport declare const ${ entry.className }: ${ entry.className }Original;`;
jsFile = jsFile.replace(new RegExp(`([\\s\\(])${ entry.className }([\\s\\.;\\(,])`, 'g'), '$1' + entry.className + 'Original$2');
jsFile = jsFile.replace(`export { ${ entry.className }Original }`, `var ${ entry.className } = new ${ entry.className }Original();\nexport { ${ entry.className } }`);
dtsFile = dtsFile.replace(
`class ${entry.className} `,
'class ' + entry.className + 'Original '
);
dtsFile += `\nexport declare const ${entry.className}: ${
entry.className
}Original;`;
jsFile = jsFile.replace(
new RegExp(`([\\s\\(])${entry.className}([\\s\\.;\\(,])`, 'g'),
'$1' + entry.className + 'Original$2'
);
jsFile = jsFile.replace(
`export { ${entry.className}Original }`,
`var ${entry.className} = new ${entry.className}Original();\nexport { ${
entry.className
} }`
);
});
fs.writeFileSync(path.join(dir, 'index.js'), jsFile, 'utf-8');

View File

@@ -1,4 +1,10 @@
import { generateDeclarationFiles, transpileNgx, transpileNgxCore, modifyMetadata, cleanupNgx } from '../build/ngx';
import {
cleanupNgx,
generateDeclarationFiles,
modifyMetadata,
transpileNgx,
transpileNgxCore
} from '../build/ngx';
transpileNgxCore();
transpileNgx();

View File

@@ -1,25 +1,27 @@
import * as fs from 'fs-extra';
import * as path from 'path';
import { merge } from 'lodash';
import { exec } from 'child_process';
import { PLUGIN_PATHS, ROOT } from '../build/helpers';
import { cpus } from 'os';
import * as Queue from 'async-promise-queue';
import { exec } from 'child_process';
import * as fs from 'fs-extra';
import { merge } from 'lodash';
import { cpus } from 'os';
import * as path from 'path';
import { PLUGIN_PATHS, ROOT } from '../build/helpers';
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',
'module': 'index.js',
'typings': 'index.d.ts',
'author': 'ionic',
'license': 'MIT',
'repository': {
'type': 'git',
'url': 'https://github.com/ionic-team/ionic-native.git'
description: 'Ionic Native - Native plugins for ionic apps',
module: 'index.js',
typings: 'index.d.ts',
author: 'ionic',
license: 'MIT',
repository: {
type: 'git',
url: 'https://github.com/ionic-team/ionic-native.git'
}
};
@@ -27,17 +29,18 @@ const DIST = path.resolve(ROOT, 'dist/@ionic-native');
const PACKAGES = [];
const RXJS_VEERSION = '^5.0.1';
const CORE_VERSION = '^5.0.0';
const MIN_CORE_VERSION = '^5.1.0';
const RXJS_VERSION = '^5.5.0 || ^6.5.0';
const PLUGIN_PEER_DEPENDENCIES = {
'@ionic-native/core': VERSION, // TODO change this in production
'rxjs': RXJS_VEERSION
'@ionic-native/core': MIN_CORE_VERSION,
rxjs: RXJS_VERSION
};
function getPackageJsonContent(name, peerDependencies = {}) {
function getPackageJsonContent(name: string, peerDependencies = {}, dependencies = {}) {
return merge(PACKAGE_JSON_BASE, {
name: '@ionic-native/' + name,
dependencies,
peerDependencies,
version: VERSION
});
@@ -52,7 +55,7 @@ function writePackageJson(data: any, dir: string) {
function prepare() {
// write @ionic-native/core package.json
writePackageJson(
getPackageJsonContent('core', { 'rxjs': RXJS_VEERSION }),
getPackageJsonContent('core', { rxjs: RXJS_VERSION }, { '@types/cordova': 'latest' }),
path.resolve(DIST, 'core')
);
@@ -66,28 +69,31 @@ function prepare() {
});
}
async function publish(ignoreErrors: boolean = false) {
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.log(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 {
await Queue(worker, PACKAGES, cpus().length);
@@ -96,7 +102,7 @@ async function publish(ignoreErrors: boolean = false) {
Logger.error('Error publishing!');
Logger.error(e);
}
Logger.profile('Publishing', { level: 'verbose' });
Logger.profile('Publishing');
}
prepare();

View File

@@ -5,14 +5,13 @@
* - Add/Change information below
* - Document usage (importing, executing main functionality)
* - Remove any imports that you are not using
* - Add this file to /src/index.ts (follow style of other plugins)
* - Remove all the comments included in this template, EXCEPT the @Plugin wrapper docs and any other docs you added
* - Remove this note
*
*/
import { Injectable } from '@angular/core';
import { Plugin, Cordova, CordovaProperty, CordovaInstance, InstanceProperty, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
import { Observable } from 'rxjs';
/**
* @name {{ Plugin_Name }}

View File

@@ -5,14 +5,13 @@
* - Add/Change information below
* - Document usage (importing, executing main functionality)
* - Remove any imports that you are not using
* - Add this file to /src/index.ts (follow style of other plugins)
* - Remove all the comments included in this template, EXCEPT the @Plugin wrapper docs and any other docs you added
* - Remove this note
*
*/
import { Injectable } from '@angular/core';
import { Plugin, Cordova, CordovaProperty, CordovaInstance, InstanceProperty, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
import { Observable } from 'rxjs';
/**
* @name {{ Plugin_Name }}

View File

@@ -1,21 +1,26 @@
export function checkReady() {
const DEVICE_READY_TIMEOUT = 5000;
if (typeof process === 'undefined') {
const win: any = typeof window !== 'undefined' ? window : {};
const DEVICE_READY_TIMEOUT = 5000;
// To help developers using cordova, we listen for the device ready event and
// log an error if it didn't fire in a reasonable amount of time. Generally,
// when this happens, developers should remove and reinstall plugins, since
// an inconsistent plugin is often the culprit.
const before = Date.now();
// To help developers using cordova, we listen for the device ready event and
// log an error if it didn't fire in a reasonable amount of time. Generally,
// when this happens, developers should remove and reinstall plugins, since
// an inconsistent plugin is often the culprit.
const before = Date.now();
let didFireReady = false;
document.addEventListener('deviceready', () => {
console.log(`Ionic Native: deviceready event fired after ${(Date.now() - before)} ms`);
didFireReady = true;
});
let didFireReady = false;
win.document.addEventListener('deviceready', () => {
console.log(`Ionic Native: deviceready event fired after ${Date.now() - before} ms`);
didFireReady = true;
});
setTimeout(() => {
if (!didFireReady && !!window.cordova) {
console.warn(`Ionic Native: deviceready did not fire within ${DEVICE_READY_TIMEOUT}ms. This can happen when plugins are in an inconsistent state. Try removing plugins from plugins/ and reinstalling them.`);
}
}, DEVICE_READY_TIMEOUT);
setTimeout(() => {
if (!didFireReady && win.cordova) {
console.warn(
`Ionic Native: deviceready did not fire within ${DEVICE_READY_TIMEOUT}ms. This can happen when plugins are in an inconsistent state. Try removing plugins from plugins/ and reinstalling them.`
);
}
}, DEVICE_READY_TIMEOUT);
}
}

View File

@@ -1,5 +1,4 @@
import { callCordovaPlugin, wrapInstance, wrapPromise } from './common';
import 'rxjs/add/observable/of';
import { callCordovaPlugin, wrapPromise } from './common';
declare const window: any;
@@ -31,16 +30,13 @@ class MockInstancePluginObject {
class MockCordovaPlugin {
static ping = jest.fn((arg: string) => 'pong');
ping = jest.fn((arg: string) => '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'));
}
describe('Common decorator functions', () => {
let plugin: MockPlugin,
instancePluginObject: MockInstancePluginObject;
let plugin: MockPlugin, instancePluginObject: MockInstancePluginObject;
beforeAll(() => {
window.mockPlugin = MockCordovaPlugin;
@@ -79,9 +75,7 @@ describe('Common decorator functions', () => {
});
describe('wrapObservable', () => {
test('should return an observable that emits a value', async () => {
});
test('should return an observable that emits a value', async () => {});
test('original method should have been called', () => {});
@@ -93,8 +87,7 @@ describe('Common decorator functions', () => {
});
describe('callInstance', () => {
test('should call an instance method', async () => {
});
test('should call an instance method', async () => {});
test('original method should have been called', () => {
// expect(instancePluginObject._pluginInstance.ping.mock.calls.length).toBe(1);
@@ -104,5 +97,4 @@ describe('Common decorator functions', () => {
// expect(instancePluginObject._pluginInstance.ping.mock.calls[0][0]).toBe('pingpong');
});
});
});

View File

@@ -1,6 +1,6 @@
import { fromEvent, Observable } from 'rxjs';
import { CordovaOptions } from './interfaces';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromEvent';
declare const window: any;
@@ -14,29 +14,48 @@ export function getPromise<T>(callback: (resolve: Function, reject?: Function) =
callback(resolve, reject);
});
} else {
console.error('No Promise support or polyfill found. To enable Ionic Native support, please add the es6-promise polyfill before this script, or run with a library like Angular or on a recent browser.');
console.error(
'No Promise support or polyfill found. To enable Ionic Native support, please add the es6-promise polyfill before this script, or run with a library like Angular or on a recent browser.'
);
}
};
if (window.angular) {
const injector = window.angular.element(document.querySelector('[ng-app]') || document.body).injector();
if (typeof window !== 'undefined' && window.angular) {
const doc = window.document;
const injector = window.angular
.element(doc.querySelector('[ng-app]') || doc.body)
.injector();
if (injector) {
let $q = injector.get('$q');
const $q = injector.get('$q');
return $q((resolve: Function, reject: Function) => {
callback(resolve, reject);
});
}
console.warn('Angular 1 was detected but $q couldn\'t be retrieved. This is usually when the app is not bootstrapped on the html or body tag. Falling back to native promises which won\'t trigger an automatic digest when promises resolve.');
console.warn(
`Angular 1 was detected but $q couldn't be retrieved. This is usually when the app is not bootstrapped on the html or body tag. Falling back to native promises which won't trigger an automatic digest when promises resolve.`
);
}
return tryNativePromise();
}
export function wrapPromise(pluginObj: any, methodName: string, args: any[], opts: CordovaOptions = {}) {
export function wrapPromise(
pluginObj: any,
methodName: string,
args: any[],
opts: CordovaOptions = {}
) {
let pluginResult: any, rej: Function;
const p = getPromise((resolve: Function, reject: Function) => {
if (opts.destruct) {
pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, (...args: any[]) => resolve(args), (...args: any[]) => reject(args));
pluginResult = callCordovaPlugin(
pluginObj,
methodName,
args,
opts,
(...args: any[]) => resolve(args),
(...args: any[]) => reject(args)
);
} else {
pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, resolve, reject);
}
@@ -46,7 +65,7 @@ export function wrapPromise(pluginObj: any, methodName: string, args: any[], opt
// a warning that Cordova is undefined or the plugin is uninstalled, so there is no reason
// to error
if (pluginResult && pluginResult.error) {
p.catch(() => { });
p.catch(() => {});
typeof rej === 'function' && rej(pluginResult.error);
}
return p;
@@ -72,9 +91,23 @@ function wrapObservable(pluginObj: any, methodName: string, args: any[], opts: a
let pluginResult;
if (opts.destruct) {
pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, (...args: any[]) => observer.next(args), (...args: any[]) => observer.error(args));
pluginResult = callCordovaPlugin(
pluginObj,
methodName,
args,
opts,
(...args: any[]) => observer.next(args),
(...args: any[]) => observer.error(args)
);
} else {
pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, observer.next.bind(observer), observer.error.bind(observer));
pluginResult = callCordovaPlugin(
pluginObj,
methodName,
args,
opts,
observer.next.bind(observer),
observer.error.bind(observer)
);
}
if (pluginResult && pluginResult.error) {
@@ -85,12 +118,23 @@ function wrapObservable(pluginObj: any, methodName: string, args: any[], opts: a
try {
if (opts.clearFunction) {
if (opts.clearWithArgs) {
return callCordovaPlugin(pluginObj, opts.clearFunction, args, opts, observer.next.bind(observer), observer.error.bind(observer));
return callCordovaPlugin(
pluginObj,
opts.clearFunction,
args,
opts,
observer.next.bind(observer),
observer.error.bind(observer)
);
}
return callCordovaPlugin(pluginObj, opts.clearFunction, []);
}
} catch (e) {
console.warn('Unable to clear the previous observable watch for', pluginObj.constructor.getPluginName(), methodName);
console.warn(
'Unable to clear the previous observable watch for',
pluginObj.constructor.getPluginName(),
methodName
);
console.warn(e);
}
};
@@ -100,29 +144,35 @@ function wrapObservable(pluginObj: any, methodName: string, args: any[], opts: a
/**
* Wrap the event with an observable
* @private
* @param event even name
* @param event event name
* @param element The element to attach the event listener to
* @returns {Observable}
*/
function wrapEventObservable(event: string, element: any): Observable<any> {
if (element) {
get(window, element);
} else {
element = window;
}
return Observable.fromEvent(element, event);
element = (typeof window !== 'undefined' && element) ? get(window, element) : element || (typeof window !== 'undefined' ? window : {});
return fromEvent(element, event);
}
/**
* Checks if plugin/cordova is available
* @return {boolean | { error: string } }
* @private
*/
export function checkAvailability(pluginRef: string, methodName?: string, pluginName?: string): boolean | { error: string };
export function checkAvailability(pluginObj: any, methodName?: string, pluginName?: string): boolean | { error: string };
export function checkAvailability(plugin: any, methodName?: string, pluginName?: string): boolean | { error: string } {
export function checkAvailability(
pluginRef: string,
methodName?: string,
pluginName?: string
): boolean | { error: string };
export function checkAvailability(
pluginObj: any,
methodName?: string,
pluginName?: string
): boolean | { error: string };
export function checkAvailability(
plugin: any,
methodName?: string,
pluginName?: string
): boolean | { error: string } {
let pluginRef, pluginInstance, pluginPackage;
if (typeof plugin === 'string') {
@@ -136,7 +186,7 @@ export function checkAvailability(plugin: any, methodName?: string, pluginName?:
pluginInstance = getPlugin(pluginRef);
if (!pluginInstance || (!!methodName && typeof pluginInstance[methodName] === 'undefined')) {
if (!window.cordova) {
if (typeof window === 'undefined' || !window.cordova) {
cordovaWarn(pluginName, methodName);
return ERR_CORDOVA_NOT_AVAILABLE;
}
@@ -153,7 +203,10 @@ export function checkAvailability(plugin: any, methodName?: string, pluginName?:
* @private
*/
export function instanceAvailability(pluginObj: any, methodName?: string): boolean {
return pluginObj._objectInstance && (!methodName || typeof pluginObj._objectInstance[methodName] !== 'undefined');
return (
pluginObj._objectInstance &&
(!methodName || typeof pluginObj._objectInstance[methodName] !== 'undefined')
);
}
export function setIndex(args: any[], opts: any = {}, resolve?: Function, reject?: Function): any {
@@ -176,7 +229,7 @@ export function setIndex(args: any[], opts: any = {}, resolve?: Function, reject
}
});
} else if (opts.callbackStyle === 'object' && opts.successName && opts.errorName) {
let obj: any = {};
const obj: any = {};
obj[opts.successName] = resolve;
obj[opts.errorName] = reject;
args.push(obj);
@@ -191,7 +244,8 @@ export function setIndex(args: any[], opts: any = {}, resolve?: Function, reject
};
const setErrorIndex = () => {
// We don't want that the reject cb gets spliced into the position of an optional argument that has not been defined and thus causing non expected behaviour.
// We don't want that the reject cb gets spliced into the position of an optional argument that has not been
// defined and thus causing non expected behavior.
if (opts.errorIndex > args.length) {
args[opts.errorIndex] = reject; // insert the reject fn at the correct specific index
} else {
@@ -206,8 +260,6 @@ export function setIndex(args: any[], opts: any = {}, resolve?: Function, reject
setSuccessIndex();
setErrorIndex();
}
} else {
// Otherwise, let's tack them on to the end of the argument list
// which is 90% of cases
@@ -217,7 +269,14 @@ export function setIndex(args: any[], opts: any = {}, resolve?: Function, reject
return args;
}
export function callCordovaPlugin(pluginObj: any, methodName: string, args: any[], opts: any = {}, resolve?: Function, reject?: Function) {
export function callCordovaPlugin(
pluginObj: any,
methodName: string,
args: any[],
opts: any = {},
resolve?: Function,
reject?: Function
) {
// Try to figure out where the success/error callbacks need to be bound
// to our promise resolve/reject handlers.
args = setIndex(args, opts, resolve, reject);
@@ -230,28 +289,37 @@ export function callCordovaPlugin(pluginObj: any, methodName: string, args: any[
} else {
return availabilityCheck;
}
}
export function callInstance(pluginObj: any, methodName: string, args: any[], opts: any = {}, resolve?: Function, reject?: Function) {
export function callInstance(
pluginObj: any,
methodName: string,
args: any[],
opts: any = {},
resolve?: Function,
reject?: Function
) {
args = setIndex(args, opts, resolve, reject);
if (instanceAvailability(pluginObj, methodName)) {
return pluginObj._objectInstance[methodName].apply(pluginObj._objectInstance, args);
}
}
export function getPlugin(pluginRef: string): any {
return get(window, pluginRef);
if (typeof window !== 'undefined') {
return get(window, pluginRef);
}
return null;
}
export function get(element: Element | Window, path: string) {
const paths: string[] = path.split('.');
let obj: any = element;
for (let i: number = 0; i < paths.length; i++) {
if (!obj) { return null; }
for (let i = 0; i < paths.length; i++) {
if (!obj) {
return null;
}
obj = obj[paths[i]];
}
return obj;
@@ -259,12 +327,20 @@ export function get(element: Element | Window, path: string) {
export function pluginWarn(pluginName: string, plugin?: string, method?: string): void {
if (method) {
console.warn('Native: tried calling ' + pluginName + '.' + method + ', but the ' + pluginName + ' plugin is not installed.');
console.warn(
'Native: tried calling ' +
pluginName +
'.' +
method +
', but the ' +
pluginName +
' 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}'`);
}
}
@@ -274,17 +350,33 @@ export function pluginWarn(pluginName: string, plugin?: string, method?: string)
* @param method
*/
export function cordovaWarn(pluginName: string, method?: string): void {
if (method) {
console.warn('Native: tried calling ' + pluginName + '.' + method + ', but Cordova is not available. Make sure to include cordova.js or run in a device/simulator');
} else {
console.warn('Native: tried accessing the ' + pluginName + ' plugin but Cordova is not available. Make sure to include cordova.js or run in a device/simulator');
if (typeof process === 'undefined') {
if (method) {
console.warn(
'Native: tried calling ' +
pluginName +
'.' +
method +
', but Cordova is not available. Make sure to include cordova.js or run in a device/simulator'
);
} else {
console.warn(
'Native: tried accessing the ' +
pluginName +
' plugin but Cordova is not available. Make sure to include cordova.js or run in a device/simulator'
);
}
}
}
// Fixes a bug in TypeScript 2.9.2 where the ...args is being converted into args: {} and
// causing compilation issues
export type WrapFn = (...args: any[]) => any;
/**
* @private
*/
export const wrap = function(pluginObj: any, methodName: string, opts: CordovaOptions = {}) {
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
@@ -304,22 +396,32 @@ export const wrap = function(pluginObj: any, methodName: string, opts: CordovaOp
/**
* @private
*/
export function wrapInstance(pluginObj: any, methodName: string, opts: any = {}) {
export function wrapInstance(pluginObj: any, methodName: string, opts: any = {}): Function {
return (...args: any[]) => {
if (opts.sync) {
return callInstance(pluginObj, methodName, args, opts);
} else if (opts.observable) {
return new Observable(observer => {
let pluginResult;
if (opts.destruct) {
pluginResult = callInstance(pluginObj, methodName, args, opts, (...args: any[]) => observer.next(args), (...args: any[]) => observer.error(args));
pluginResult = callInstance(
pluginObj,
methodName,
args,
opts,
(...args: any[]) => observer.next(args),
(...args: any[]) => observer.error(args)
);
} else {
pluginResult = callInstance(pluginObj, methodName, args, opts, observer.next.bind(observer), observer.error.bind(observer));
pluginResult = callInstance(
pluginObj,
methodName,
args,
opts,
observer.next.bind(observer),
observer.error.bind(observer)
);
}
if (pluginResult && pluginResult.error) {
@@ -329,36 +431,59 @@ export function wrapInstance(pluginObj: any, methodName: string, opts: any = {})
return () => {
try {
if (opts.clearWithArgs) {
return callInstance(pluginObj, opts.clearFunction, args, opts, observer.next.bind(observer), observer.error.bind(observer));
return callInstance(
pluginObj,
opts.clearFunction,
args,
opts,
observer.next.bind(observer),
observer.error.bind(observer)
);
}
return callInstance(pluginObj, opts.clearFunction, []);
} catch (e) {
console.warn('Unable to clear the previous observable watch for', pluginObj.constructor.getPluginName(), methodName);
console.warn(
'Unable to clear the previous observable watch for',
pluginObj.constructor.getPluginName(),
methodName
);
console.warn(e);
}
};
});
} else if (opts.otherPromise) {
return getPromise((resolve: Function, reject: Function) => {
let result;
if (opts.destruct) {
result = callInstance(pluginObj, methodName, args, opts, (...args: any[]) => resolve(args), (...args: any[]) => reject(args));
result = callInstance(
pluginObj,
methodName,
args,
opts,
(...args: any[]) => resolve(args),
(...args: any[]) => reject(args)
);
} else {
result = callInstance(pluginObj, methodName, args, opts, resolve, reject);
}
if (result && !!result.then) {
if (result && result.then) {
result.then(resolve, reject);
} else {
reject();
}
});
} else {
let pluginResult: any, rej: Function;
const p = getPromise((resolve: Function, reject: Function) => {
if (opts.destruct) {
pluginResult = callInstance(pluginObj, methodName, args, opts, (...args: any[]) => resolve(args), (...args: any[]) => reject(args));
pluginResult = callInstance(
pluginObj,
methodName,
args,
opts,
(...args: any[]) => resolve(args),
(...args: any[]) => reject(args)
);
} else {
pluginResult = callInstance(pluginObj, methodName, args, opts, resolve, reject);
}
@@ -368,12 +493,10 @@ export function wrapInstance(pluginObj: any, methodName: string, opts: any = {})
// a warning that Cordova is undefined or the plugin is uninstalled, so there is no reason
// to error
if (pluginResult && pluginResult.error) {
p.catch(() => { });
p.catch(() => {});
typeof rej === 'function' && rej(pluginResult.error);
}
return p;
}
};
}

View File

@@ -1,23 +1,26 @@
import { Observable, Observer } from 'rxjs';
import { checkAvailability, getPlugin } from './common';
import { Observable } from 'rxjs/Observable';
function overrideFunction(pluginObj: any, methodName: string): Observable<any> {
return new Observable(observer => {
return new Observable((observer: Observer<any>) => {
const availabilityCheck = checkAvailability(pluginObj, methodName);
if (availabilityCheck === true) {
const pluginInstance = getPlugin(pluginObj.constructor.getPluginRef());
pluginInstance[methodName] = observer.next.bind(observer);
return () => pluginInstance[methodName] = () => { };
return () => (pluginInstance[methodName] = () => {});
} else {
observer.error(availabilityCheck);
observer.complete();
}
});
}
export function cordovaFunctionOverride(pluginObj: any, methodName: string, args: IArguments | Array<any> = []) {
export function cordovaFunctionOverride(
pluginObj: any,
methodName: string,
args: IArguments | any[] = []
) {
return overrideFunction(pluginObj, methodName);
}

View File

@@ -1,7 +1,12 @@
import { CordovaOptions } from './interfaces';
import { wrapInstance } from './common';
import { CordovaOptions } from './interfaces';
export function cordovaInstance(pluginObj: any, methodName: string, config: CordovaOptions, args: IArguments | Array<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);
}

View File

@@ -1,6 +1,11 @@
import { CordovaOptions } from './interfaces';
import { wrap } from './common';
import { CordovaOptions } from './interfaces';
export function cordova(pluginObj: any, methodName: string, config: CordovaOptions, args: IArguments | Array<any>) {
export function cordova(
pluginObj: any,
methodName: string,
config: CordovaOptions,
args: IArguments | any[]
) {
return wrap(pluginObj, methodName, config).apply(this, args);
}

View File

@@ -1,12 +1,12 @@
export function instancePropertyGet(pluginObj: any, key: string) {
if (!!pluginObj._objectInstance && !!pluginObj._objectInstance[key]) {
if (pluginObj._objectInstance && pluginObj._objectInstance[key]) {
return pluginObj._objectInstance[key];
}
return null;
}
export function instancePropertySet(pluginObj: any, key: string, value: any) {
if (!!pluginObj._objectInstance && !!pluginObj._objectInstance[key]) {
if (pluginObj._objectInstance) {
pluginObj._objectInstance[key] = value;
}
}

View File

@@ -38,7 +38,8 @@ export interface CordovaOptions {
*/
sync?: boolean;
/**
* Callback order. Set to reverse if the success/error callbacks are the first 2 arguments that the wrapped method takes.
* Callback order. Set to reverse if the success/error callbacks are the first 2 arguments that the wrapped method
* takes.
*/
callbackOrder?: 'reverse';
/**
@@ -70,7 +71,8 @@ export interface CordovaOptions {
*/
clearFunction?: string;
/**
* This can be used if clearFunction is set. Set this to true to call the clearFunction with the same arguments used in the initial function.
* This can be used if clearFunction is set. Set this to true to call the clearFunction with the same arguments used
* in the initial function.
*/
clearWithArgs?: boolean;
/**

View File

@@ -2,7 +2,6 @@ import { checkAvailability } from './decorators/common';
import { get } from './util';
export class IonicNativePlugin {
static pluginName: string;
static pluginRef: string;
@@ -19,31 +18,45 @@ 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 {
if (typeof window !== 'undefined') {
return get(window, this.pluginRef);
}
return null;
}
/**
* 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 || [];
}
}

View File

@@ -6,19 +6,21 @@ declare const window: any;
* creates Angular 1 services of the form $cordovaSERVICE, ex: $cordovaStatusBar.
*/
export function initAngular1(plugins: any) {
if (window.angular) {
if (typeof window !== 'undefined' && window.angular) {
const ngModule = window.angular.module('ionic.native', []);
for (const name in plugins) {
let serviceName = '$cordova' + name;
let cls = plugins[name];
const serviceName = '$cordova' + name;
const cls = plugins[name];
(function(serviceName, cls, name) {
ngModule.service(serviceName, [function() {
const funcs = window.angular.copy(cls);
funcs.__proto__['name'] = name;
return funcs;
}]);
((serviceName, cls, name) => {
ngModule.service(serviceName, [
() => {
const funcs = window.angular.copy(cls);
funcs.__proto__['name'] = name;
return funcs;
}
]);
})(serviceName, cls, name);
}
}

View File

@@ -6,26 +6,28 @@ declare const window: any;
export function get(element: Element | Window, path: string) {
const paths: string[] = path.split('.');
let obj: any = element;
for (let i: number = 0; i < paths.length; i++) {
if (!obj) { return null; }
for (let i = 0; i < paths.length; i++) {
if (!obj) {
return null;
}
obj = obj[paths[i]];
}
return obj;
}
/**
* @private
*/
export function getPromise(callback: Function = () => {}): Promise<any> {
const tryNativePromise = () => {
if (window.Promise) {
if (typeof Promise === 'function' || (typeof window !== 'undefined' && window.Promise)) {
return new Promise<any>((resolve, reject) => {
callback(resolve, reject);
});
} else {
console.error('No Promise support or polyfill found. To enable Ionic Native support, please add the es6-promise polyfill before this script, or run with a library like Angular or on a recent browser.');
console.error(
'No Promise support or polyfill found. To enable Ionic Native support, please add the es6-promise polyfill before this script, or run with a library like Angular or on a recent browser.'
);
}
};

View File

@@ -0,0 +1,341 @@
import { Injectable } from '@angular/core';
import { CordovaCheck, IonicNativePlugin, Plugin } from '@ionic-native/core';
declare const AbbyyRtrSdk: any;
/**
* JSON object that you can pass as the options argument to change text
* capture settings. All keys are optional. Omitting a key means that a
* 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.
*/
licenseFileName?: string;
/**
* Recognition languages which can be selected by the user,
* for example: ["English", "French", "German"]. Empty array
* disables language selection.
*/
selectableRecognitionLanguages?: string[];
/**
* Recognition language selected by default.
*/
recognitionLanguages?: string[];
/**
* Width and height of the recognition area, separated by a
* whitespace — for example: "0.8 0.3". The area of interest is
* centered in the preview frame, its width and height are
* relative to the preview frame size and should be in the [0.0, 1.0] range.
*/
areaOfInterest?: string;
/**
* Whether to stop the plugin as soon as the result status is
* "Stable" (see Result status). When enabled (true), the
* recognition process can be stopped automatically. When
* disabled (false), recognition can be stopped only manually
* by user.
*/
stopWhenStable?: boolean;
/**
* Show (true) or hide (false) the flashlight button in the text
* capture dialog.
*/
isFlashlightVisible?: boolean;
/**
* Show (true) or hide (false) the stop button in the text
* capture dialog. When the user taps stop, RTR SDK returns
* the latest recognition result.
*/
isStopButtonVisible?: boolean;
/**
* Specify the orientation, possible values 'landscape' or 'portrait'.
*/
orientation?: string;
}
/**
* JSON object that represents text recognition results.
* 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:
* · text (string): the recognized text.
* · quadrangle (string): vertex coordinates of the bounding quadrangle,
* a string of 8 integers separated with whitespaces ("x1 y1 ... x4 y4"),
* goes clockwise starting from the bottom left.
* · 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 }[];
/**
* Additional information. This object has the following keys:
* · stabilityStatus (string): result stability status.
* See Result status for details.
* · userAction (string): the user's action which stopped the plugin,
* if any. Can be "Manually Stopped" if the stop button has been used,
* and "Canceled" if the user canceled processing. If the plugin has
* stopped automatically, the userAction key is not present in resultInfo.
* · frameSize (string): full size of the preview frame, a string
* with 2 integers separated with a whitespace ("720 1280").
* · recognitionLanguages (string array): languages used for recognition,
* the array contains language identifiers (["English", "French", "German"]).
*/
resultInfo: {
stabilityStatus: string;
userAction: string;
frameSize: string;
recognitionLanguages: string[];
};
/**
* Error details. This key is present only if an error occurs.
* The value is an object which has a single key:
* · description (string): human-readable error description.
*/
error?: {
description: string;
};
}
/**
* JSON object that you can pass as the options argument to change data
* capture settings. All keys are optional. Omitting a key means that a default
* setting will be used, except the profile and customDataCaptureScenario
* 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
* Capture Profiles in the ABBYY Real-Time Recognition SDK 1 Developer's Guide.
*/
profile?: string;
/**
* Custom data capture settings. This object has the following keys:
* · name (string): the name of your custom data capture scenario, required.
* · description (string): a more detailed description. This key is optional;
* if not given, it will be assigned the same value as name.
* · recognitionLanguages (string array): recognition languages to use.
* Default is ["English"].
* · fields (object array): describes data fields to capture. Each object
* in this array has a single regEx key; its value is a string containing
* the regular expression that should be matched when capturing a field.
*/
customDataCaptureScenario?: {
name: string;
description: string;
recognitionLanguages: string[];
fields: { regEx: string }[];
};
/**
* The name of the license file. This file must be located in the
* www/rtr_assets/ directory in your project.
*/
licenseFileName?: string;
/**
* Width and height of the recognition area, separated by a
* whitespace — for example: "0.8 0.3". The area of interest is
* centered in the preview frame, its width and height are
* relative to the preview frame size and should be in the [0.0, 1.0] range.
*/
areaOfInterest?: string;
/**
* Whether to stop the plugin as soon as the result status is
* "Stable" (see Result status). When enabled (true), the
* recognition process can be stopped automatically. When
* disabled (false), recognition can be stopped only manually
* by user.
*/
stopWhenStable?: boolean;
/**
* Show (true) or hide (false) the flashlight button in the text
* capture dialog.
*/
isFlashlightVisible?: boolean;
/**
* Show (true) or hide (false) the stop button in the text
* capture dialog. When the user taps stop, RTR SDK returns
* the latest recognition result.
*/
isStopButtonVisible?: boolean;
/**
* Specify the orientation, possible values 'landscape' or 'portrait'.
*/
orientation?: string;
}
/**
* JSON object that represents data recognition results. The callback you
* 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:
* · id (string): the internal scheme identifier.
* · name (string): the scheme name.
* If you had defined a custom data capture scenario in options, both the
* id and name will be the same as the scenario name you specified. If
* you selected a predefined profile, the id and name are specified by the
* profile. If an error occurs during processing, the dataScheme key is not
* present in the result.
*/
dataScheme?: {
id: string;
name: string;
};
/**
* Recognized data fields. Each object in the array represents a separate
* data field. The data field objects have the following keys:
* · id (string): the internal identifier of the field.
* · name (string): the field name.
* Similarly to dataScheme, in custom scenarios both id and name are the same
* as the scenario name you specified (currently custom scenarios allow
* only 1 recognized field).
* · text (string): full text of the field.
* · quadrangle (string): vertex coordinates of the bounding quadrangle, a
* string of 8 integers separated with whitespaces ("x1 y1 ... x4 y4"),
* goes clockwise starting from the bottom left.
* · components (object array): an array of objects representing field
* components, that is, the text fragments found on the image, which
* constitute the field.
* In the components array each element is an object with the following keys:
* · text (string): text of this fragment.
* · quadrangle (string): vertex coordinates of the bounding quadrangle of
* this fragment, similar to the field's quadrangle.
* · rect (string): position and size of the bounding rectangle, a string
* of 4 integers separated with whitespaces ("x y width height").
*/
dataFields: {
id: string;
name: string;
text: string;
quadrangle: string;
components: {
text: string;
quadrangle: string;
rect: string;
};
};
/**
* Additional information. This object has the following keys:
* · stabilityStatus (string): result stability status.
* See Result status for details.
* · userAction (string): the user's action which stopped the plugin,
* if any. Can be "Manually Stopped" if the stop button has been used,
* and "Canceled" if the user canceled processing. If the plugin has
* stopped automatically, the userAction key is not present in resultInfo.
* · frameSize (string): full size of the preview frame, a string
* with 2 integers separated with a whitespace ("720 1280").
*/
resultInfo: {
stabilityStatus: string;
userAction: string;
frameSize: string;
};
/**
* Error details. This key is present only if an error occurs.
* The value is an object which has a single key:
* · description (string): human-readable error description.
*/
error?: {
description: string;
};
}
/**
* @name ABBYY Real-Time Recognition
* @description
* This plugin allows to use the Text Capture and Data Capture features of
* ABBYY Real-Time Recognition SDK (RTR SDK) in apps.
*
* @usage
* ```typescript
* import { AbbyyRTR } from '@ionic-native/abbyy-rtr/ngx';
*
*
* constructor(private abbyyRTR: AbbyyRTR) { }
*
* ...
*
*
* this.abbyyRTR.startTextCapture(options)
* .then((res: any) => console.log(res))
* .catch((error: any) => console.error(error));
*
*
* this.abbyyRTR.startDataCapture(options)
* .then((res: any) => console.log(res))
* .catch((error: any) => console.error(error));
*
* ```
*/
@Plugin({
pluginName: 'AbbyyRTR',
plugin: 'cordova-plugin-abbyy-rtr-sdk',
pluginRef: 'AbbyyRtrSdk',
repo: 'https://github.com/abbyysdk/RTR-SDK.Cordova',
install: 'ionic cordova plugin add cordova-plugin-abbyy-rtr-sdk',
platforms: ['Android', 'iOS']
})
@Injectable()
export class AbbyyRTR extends IonicNativePlugin {
/**
* Opens a modal dialog with controls for the Text Capture scenario.
* @param {TextCaptureOptions} options
* @return {Promise<TextCaptureResult>}
*/
@CordovaCheck()
startTextCapture(options: TextCaptureOptions): Promise<TextCaptureResult> {
return new Promise<any>((resolve, reject) => {
AbbyyRtrSdk.startTextCapture((result: DataCaptureResult) => {
if (result.error) {
reject(result);
} else {
resolve(result);
}
}, options);
});
}
/**
* Opens a modal dialog with controls for the Data Capture scenario.
* @param {DataCaptureOptions} options
* @return {Promise<DataCaptureResult>}
*/
@CordovaCheck()
startDataCapture(options: DataCaptureOptions): Promise<DataCaptureResult> {
return new Promise<any>((resolve, reject) => {
AbbyyRtrSdk.startDataCapture((result: DataCaptureResult) => {
if (result.error) {
reject(result);
} else {
resolve(result);
}
}, options);
});
}
}

View File

@@ -2,7 +2,6 @@ import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface ActionSheetOptions {
/**
* The labels for the buttons. Uses the index x
*/
@@ -21,7 +20,7 @@ export interface ActionSheetOptions {
/**
* Theme to be used on Android
*/
androidTheme?: number;
androidTheme?: 1 | 2 | 3 | 4 | 5;
/**
* Enable a cancel on Android
@@ -46,7 +45,7 @@ export interface ActionSheetOptions {
/**
* On an iPad, set the X,Y position
*/
position?: number[];
position?: [number, number];
/**
* Choose if destructive button will be the last
@@ -63,7 +62,7 @@ export interface ActionSheetOptions {
*
* @usage
* ```typescript
* import { ActionSheet, ActionSheetOptions } from '@ionic-native/action-sheet';
* import { ActionSheet, ActionSheetOptions } from '@ionic-native/action-sheet/ngx';
*
* constructor(private actionSheet: ActionSheet) { }
*
@@ -98,7 +97,6 @@ export interface ActionSheetOptions {
})
@Injectable()
export class ActionSheet extends IonicNativePlugin {
/**
* Convenience property to select an Android theme value
*/
@@ -118,22 +116,22 @@ export class ActionSheet extends IonicNativePlugin {
/**
* Show a native ActionSheet component. See below for options.
* @param options {ActionSheetOptions} Options See table below
* @param {ActionSheetOptions} [options] Options See table below
* @returns {Promise<any>} Returns a Promise that resolves with the index of the
* button pressed (1 based, so 1, 2, 3, etc.)
*/
@Cordova()
show(options?: ActionSheetOptions): Promise<any> {
show(options?: ActionSheetOptions): Promise<number> {
return;
}
/**
* Progamtically hide the native ActionSheet
* Programmatically hide the native ActionSheet
* @param {ActionSheetOptions} [options] Options See table below
* @returns {Promise<any>} Returns a Promise that resolves when the actionsheet is closed
*/
@Cordova()
hide(options?: any): Promise<any> {
hide(options?: ActionSheetOptions): Promise<any> {
return;
}
}

View File

@@ -0,0 +1,461 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export class AdjustEvent {
private eventToken: string;
private revenue: number;
private currency: string;
private transactionId: string;
private callbackId: string;
private callbackParameters: string[] = [];
private partnerParameters: string[] = [];
constructor(eventToken: string) {
this.eventToken = eventToken;
}
setRevenue(revenue: number, currency: string): void {
this.revenue = revenue;
this.currency = currency;
}
addCallbackParameter(key: string, value: string): void {
this.callbackParameters.push(key);
this.callbackParameters.push(value);
}
addPartnerParameter(key: string, value: string): void {
this.partnerParameters.push(key);
this.partnerParameters.push(value);
}
setTransactionId(transactionId: string) {
this.transactionId = transactionId;
}
setCallbackId(callbackId: string) {
this.callbackId = callbackId;
}
}
export class AdjustConfig {
private appToken: string;
private environment: AdjustEnvironment;
private sdkPrefix: string;
private delayStart = 0.0;
private logLevel: AdjustLogLevel = null;
private defaultTracker: string = null;
private sendInBackground: boolean = null;
private shouldLaunchDeeplink: boolean = null;
private eventBufferingEnabled: boolean = null;
private userAgent: string = null;
private isDeviceKnown: boolean = null;
private secretId: number = null;
private info1: number = null;
private info2: number = null;
private info3: number = null;
private info4: number = null;
private processName: string = null; // Android only
private attributionCallback: (attribution: AdjustAttribution) => void = null;
private eventTrackingSucceededCallback: (event: AdjustEventSuccess) => void = null;
private eventTrackingFailedCallback: (event: AdjustEventFailure) => void = null;
private sessionTrackingSucceededCallback: (session: AdjustSessionSuccess) => void = null;
private sessionTrackingFailedCallback: (session: AdjustSessionFailure) => void = null;
private deferredDeeplinkCallback: (uri: string) => void = null;
constructor(appToken: string, environment: AdjustEnvironment) {
this.appToken = appToken;
this.environment = environment;
}
setAppSecret(secretId: number, info1: number, info2: number, info3: number, info4: number): void {
this.secretId = secretId;
this.info1 = info1;
this.info2 = info2;
this.info3 = info3;
this.info4 = info4;
}
setDelayStart(delayStart: number) {
this.delayStart = delayStart;
}
setLogLevel(logLevel: AdjustLogLevel) {
this.logLevel = logLevel;
}
setDefaultTracker(defaultTracker: string) {
this.defaultTracker = defaultTracker;
}
setSendInBackground(sendInBackground: boolean) {
this.sendInBackground = sendInBackground;
}
setShouldLaunchDeeplink(shouldLaunchDeeplink: boolean) {
this.shouldLaunchDeeplink = shouldLaunchDeeplink;
}
setEventBufferingEnabled(eventBufferingEnabled: boolean) {
this.eventBufferingEnabled = eventBufferingEnabled;
}
setUserAgent(userAgent: string) {
this.userAgent = userAgent;
}
setDeviceKnown(isDeviceKnown: boolean) {
this.isDeviceKnown = isDeviceKnown;
}
setProcessName(processName: string) {
this.processName = processName;
}
setAttributionCallbackListener(attributionCallback: (attribution: AdjustAttribution) => void) {
this.attributionCallback = attributionCallback;
}
setEventTrackingSucceededCallbackListener(
eventTrackingSucceededCallback: (event: AdjustEventSuccess) => void
) {
this.eventTrackingSucceededCallback = eventTrackingSucceededCallback;
}
setEventTrackingFailedCallbackListener(
eventTrackingFailedCallback: (event: AdjustEventFailure) => void
) {
this.eventTrackingFailedCallback = eventTrackingFailedCallback;
}
setSessionTrackingSucceededCallbackListener(
sessionTrackingSucceededCallback: (session: AdjustSessionSuccess) => void
) {
this.sessionTrackingSucceededCallback = sessionTrackingSucceededCallback;
}
setSessionTrackingFailedCallbackListener(
sessionTrackingFailedCallback: (session: AdjustSessionFailure) => void
) {
this.sessionTrackingFailedCallback = sessionTrackingFailedCallback;
}
setDeferredDeeplinkCallbackListener(deferredDeeplinkCallback: (uri: string) => void) {
this.deferredDeeplinkCallback = deferredDeeplinkCallback;
}
private getAttributionCallback() {
return this.attributionCallback;
}
private getEventTrackingSucceededCallback() {
return this.eventTrackingSucceededCallback;
}
private getEventTrackingFailedCallback() {
return this.eventTrackingFailedCallback;
}
private getSessionTrackingSucceededCallback() {
return this.sessionTrackingSucceededCallback;
}
private getSessionTrackingFailedCallback() {
return this.sessionTrackingFailedCallback;
}
private getDeferredDeeplinkCallback() {
return this.deferredDeeplinkCallback;
}
private hasAttributionListener() {
return this.attributionCallback !== null;
}
private hasEventTrackingSucceededListener() {
return this.eventTrackingSucceededCallback !== null;
}
private hasEventTrackingFailedListener() {
return this.eventTrackingFailedCallback !== null;
}
private hasSessionTrackingSucceededListener() {
return this.sessionTrackingSucceededCallback !== null;
}
private hasSessionTrackingFailedListener() {
return this.sessionTrackingFailedCallback !== null;
}
private hasDeferredDeeplinkCallbackListener() {
return this.deferredDeeplinkCallback !== null;
}
}
export interface AdjustAttribution {
trackerToken: string;
trackerName: string;
network: string;
campaign: string;
adgroup: string;
creative: string;
clickLabel: string;
adid: string;
}
export interface AdjustSessionSuccess {
message: string;
timestamp: string;
adid: string;
jsonResponse: string;
}
export interface AdjustSessionFailure {
message: string;
timestamp: string;
adid: string;
willRetry: boolean;
jsonResponse: string;
}
export interface AdjustEventSuccess {
message: string;
timestamp: string;
adid: string;
eventToken: string;
callbackId: string;
jsonResponse: string;
}
export interface AdjustEventFailure {
message: string;
timestamp: string;
adid: string;
eventToken: string;
willRetry: boolean;
callbackId: string;
jsonResponse: string;
}
export enum AdjustEnvironment {
Sandbox = 'sandbox',
Production = 'production'
}
export enum AdjustLogLevel {
Verbose = 'VERBOSE',
Debug = 'DEBUG',
Info = 'INFO',
Warn = 'WARN',
Error = 'ERROR',
Assert = 'ASSERT',
Suppress = 'SUPPRESS'
}
/**
* @name Adjust
* @description
* This is the Ionic Cordova SDK of Adjust™. You can read more about Adjust™ at adjust.com.
*
* Requires Cordova plugin: `com.adjust.sdk`. For more info, please see the [Adjust Cordova SDK](https://github.com/adjust/cordova_sdk)
*
* @usage
* ```typescript
* import { Adjust, AdjustConfig, AdjustEnvironment } from '@ionic-native/adjust/ngx';
*
* constructor(private adjust: Adjust) { }
*
* ...
*
* const config = new AdjustConfig('APP-TOKEN-HERE', AdjustEnvironment.Sandbox);
* config.logLevel = AdjustLogLevel.Verbose;
* // Set other config properties.
* adjust.create(config);
*
* ```
* @interfaces
* AdjustAttribution
* AdjustSessionSuccess
* AdjustSessionFailure
* AdjustEventSuccess
* AdjustEventFailure
* @classes
* AdjustEvent
* AdjustConfig
* @enums
* AdjustEnvironment
* AdjustLogLevel
*/
@Plugin({
pluginName: 'Adjust',
plugin: 'com.adjust.sdk',
pluginRef: 'Adjust',
repo: 'https://github.com/adjust/cordova_sdk',
platforms: ['Android', 'iOS']
})
@Injectable()
export class Adjust extends IonicNativePlugin {
/**
* This method initializes Adjust SDK
* @param {AdjustConig} config Adjust config object used as starting options
*/
@Cordova({ sync: true })
create(config: AdjustConfig): void {}
/**
* This method tracks an event
* @param {AdjustEvent} event Adjust event object to be tracked
*/
@Cordova({ sync: true })
trackEvent(event: AdjustEvent): void {}
/**
* This method sets offline mode on or off
* @param {boolean} enabled set to true for offline mode on
*/
@Cordova({ sync: true })
setOfflineMode(enabled: boolean): void {}
/**
* By making this call, the Adjust SDK will try to find if there is any new attribution info inside of the deep link and if any, it will be sent to the Adjust backend.
* @param {string} url URL of the deeplink
*/
@Cordova({ sync: true })
appWillOpenUrl(url: string): void {}
/**
* You can disable/enable the Adjust SDK from tracking by invoking this method
* @param {boolean} enabled set to false to disable SDK
*/
@Cordova({ sync: true })
setEnabled(enabled: boolean): void {}
/**
* To send us the push notification token, add the following call to Adjust whenever you get your token in the app or when it gets updated.
* Push tokens are used for Audience Builder and client callbacks, and they are required for the upcoming uninstall tracking feature.
* @param {string} pushToken push token value
*/
@Cordova({ sync: true })
setPushToken(pushToken: string): void {}
/**
* Check if the Adjust SDK is currently enabled by calling this function
* @returns {Promise<boolean>}
*/
@Cordova()
isEnabled(): Promise<boolean> {
return;
}
/**
* In accordance with article 17 of the EU's General Data Protection Regulation (GDPR), you can notify Adjust when a user has exercised their right to be forgotten.
* Calling the following method will instruct the Adjust SDK to communicate the user's choice to be forgotten to the Adjust backend
*/
@Cordova({ sync: true })
gdprForgetMe(): void {}
/**
* Function used to get Google AdId
* @return {Promise<string>} Returns a promise with google AdId value
*/
@Cordova()
getGoogleAdId(): Promise<string> {
return;
}
/**
* If you need to obtain the Amazon Advertising ID, you can make a call to this function.
* @return {Promise<string>} Returns a promise with anazib adv. ID
*/
@Cordova()
getAmazonAdId(): Promise<string> {
return;
}
/**
* To obtain the IDFA, call this function
* @return {Promise<string>} Returns a promise with IDFA string value
*/
@Cordova()
getIdfa(): Promise<string> {
return;
}
/**
* For every device with your app installed on it, the Adjust backend generates a unique Adjust device identifier (adid).
* In order to obtain this identifier, call this function
* @return {Promise<string>} Returns a promise with adid value
*/
@Cordova()
getAdid(): Promise<string> {
return;
}
/**
* If you want to access information about a user's current attribution whenever you need it, you can make a call to this function
* @return {Promise<AdjustAttribution>} Returns a promise with AdjustAttribution object
*/
@Cordova()
getAttribution(): Promise<AdjustAttribution> {
return;
}
/**
* Get the information about version of the SDK used
* @return {Promise<string>} Returns a promise with sdk version information
*/
@Cordova()
getSdkVersion(): Promise<string> {
return;
}
/**
* Method used to add session callback parameters
* @param key key
* @param value value
*/
@Cordova({ sync: true })
addSessionCallbackParameter(key: string, value: string): void {}
/**
* Remove a specific session callback parameter by passing the desiring key to this method
* @param key key
*/
@Cordova({ sync: true })
removeSessionCallbackParameter(key: string): void {}
/**
* If all keys and values from the session callback parameters have to be removed, call this method
*/
@Cordova({ sync: true })
resetSessionCallbackParameters(): void {}
/**
* Method used to add session partner parameters
* @param key key
* @param value value
*/
@Cordova({ sync: true })
addSessionPartnerParameter(key: string, value: string): void {}
/**
* Remove a specific session partner parameter by passing the desiring key to this method
* @param key key
*/
@Cordova({ sync: true })
removeSessionPartnerParameter(key: string): void {}
/**
* If all keys and values from the session partner parameters have to be removed, call this method
*/
@Cordova({ sync: true })
resetSessionPartnerParameters(): void {}
/**
* This method call will make the Adjust SDK send the initial install session and any events created, if they were not sent after delay start was set and it's delay expired.
*/
@Cordova({ sync: true })
sendFirstPackages(): void {}
}

View File

@@ -1,7 +1,6 @@
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromEvent';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable, fromEvent } from 'rxjs';
export interface AdMobFreeBannerConfig {
/**
@@ -64,18 +63,124 @@ export interface AdMobFreeRewardVideoConfig {
autoShow?: boolean;
}
/**
* @name AdMob Free
* @description
* A free, no ad-sharing version of Google AdMob plugin for Cordova.
*
* Requires Cordova plugin: `cordova-plugin-admob-free`. For more info, please see the [AdMob Free plugin docs](https://github.com/ratson/cordova-plugin-admob-free).
*
* @usage
* ```typescript
* import { AdMobFree, AdMobFreeBannerConfig } from '@ionic-native/admob-free/ngx';
*
*
* constructor(private admobFree: AdMobFree) { }
*
*
* ...
*
*
* const bannerConfig: AdMobFreeBannerConfig = {
* // add your config here
* // for the sake of this example we will just use the test config
* isTesting: true,
* autoShow: true
* };
* this.admobFree.banner.config(bannerConfig);
*
* this.admobFree.banner.prepare()
* .then(() => {
* // banner Ad is ready
* // if we set autoShow to false, then we will need to call the show method here
* })
* .catch(e => console.log(e));
*
*
* ```
* @interfaces
* AdMobFreeBannerConfig
* AdMobFreeInterstitialConfig
* AdMobFreeRewardVideoConfig
* @classes
* AdMobFreeBanner
* AdMobFreeInterstitial
* AdMobFreeRewardVideo
*/
@Plugin({
pluginName: 'AdMobFree',
plugin: 'cordova-plugin-admob-free',
pluginRef: 'admob',
repo: 'https://github.com/ratson/cordova-plugin-admob-free',
platforms: ['Android', 'iOS']
})
@Injectable()
export class AdMobFree extends IonicNativePlugin {
/**
* Convenience object to get event names
* @type {Object}
*/
events = {
BANNER_LOAD: 'admob.banner.events.LOAD',
BANNER_LOAD_FAIL: 'admob.banner.events.LOAD_FAIL',
BANNER_OPEN: 'admob.banner.events.OPEN',
BANNER_CLOSE: 'admob.banner.events.CLOSE',
BANNER_EXIT_APP: 'admob.banner.events.EXIT_APP',
INTERSTITIAL_LOAD: 'admob.interstitial.events.LOAD',
INTERSTITIAL_LOAD_FAIL: 'admob.interstitial.events.LOAD_FAIL',
INTERSTITIAL_OPEN: 'admob.interstitial.events.OPEN',
INTERSTITIAL_CLOSE: 'admob.interstitial.events.CLOSE',
INTERSTITIAL_EXIT_APP: 'admob.interstitial.events.EXIT_APP',
REWARD_VIDEO_LOAD: 'admob.rewardvideo.events.LOAD',
REWARD_VIDEO_LOAD_FAIL: 'admob.rewardvideo.events.LOAD_FAIL',
REWARD_VIDEO_OPEN: 'admob.rewardvideo.events.OPEN',
REWARD_VIDEO_CLOSE: 'admob.rewardvideo.events.CLOSE',
REWARD_VIDEO_EXIT_APP: 'admob.rewardvideo.events.EXIT_APP',
REWARD_VIDEO_START: 'admob.rewardvideo.events.START',
REWARD_VIDEO_REWARD: 'admob.rewardvideo.events.REWARD'
};
/**
* Watch an event
* @param event {string} event name
* @return {Observable<any>}
*/
on(event: string): Observable<any> {
return fromEvent(document, event);
}
/**
* Returns the AdMobFreeBanner object
* @type {AdMobFreeBanner}
*/
banner: AdMobFreeBanner = new AdMobFreeBanner();
/**
* Returns the AdMobFreeInterstitial object
* @type {AdMobFreeInterstitial}
*/
interstitial: AdMobFreeInterstitial = new AdMobFreeInterstitial();
/**
* Returns the AdMobFreeRewardVideo object
* @type {AdMobFreeRewardVideo}
*/
rewardVideo: AdMobFreeRewardVideo = new AdMobFreeRewardVideo();
}
/**
* @hidden
*/
@Plugin({
pluginName: 'AdMobFree',
plugin: 'cordova-plugin-admob-free',
pluginRef: 'admob.banner',
pluginRef: 'admob.banner'
})
export class AdMobFreeBanner extends IonicNativePlugin {
/**
* Update config.
* Update config
* @param options
* @return {AdMobFreeBannerConfig}
*/
@@ -85,7 +190,7 @@ export class AdMobFreeBanner extends IonicNativePlugin {
}
/**
* Hide the banner.
* Hide the banner
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
@@ -94,7 +199,7 @@ export class AdMobFreeBanner extends IonicNativePlugin {
}
/**
* Create banner.
* Create banner
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
@@ -103,7 +208,7 @@ export class AdMobFreeBanner extends IonicNativePlugin {
}
/**
* Remove the banner.
* Remove the banner
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
@@ -112,14 +217,13 @@ export class AdMobFreeBanner extends IonicNativePlugin {
}
/**
* Show the banner.
* Show the banner
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
show(): Promise<any> {
return;
}
}
/**
@@ -128,12 +232,11 @@ export class AdMobFreeBanner extends IonicNativePlugin {
@Plugin({
pluginName: 'AdMobFree',
plugin: 'cordova-plugin-admob-free',
pluginRef: 'admob.interstitial',
pluginRef: 'admob.interstitial'
})
export class AdMobFreeInterstitial extends IonicNativePlugin {
/**
* Update config.
* Update config
* @param options
* @return {AdMobFreeInterstitialConfig}
*/
@@ -168,7 +271,6 @@ export class AdMobFreeInterstitial extends IonicNativePlugin {
show(): Promise<any> {
return;
}
}
/**
@@ -177,13 +279,12 @@ export class AdMobFreeInterstitial extends IonicNativePlugin {
@Plugin({
pluginName: 'AdMobFree',
plugin: 'cordova-plugin-admob-free',
pluginRef: 'admob.rewardvideo',
pluginRef: 'admob.rewardvideo'
})
export class AdMobFreeRewardVideo extends IonicNativePlugin {
/**
* Update config.
* @param options
* Update config
* @param {AdMobFreeRewardVideoConfig} options Admob reward config
* @return {AdMobFreeRewardVideoConfig}
*/
@Cordova({ sync: true })
@@ -217,108 +318,4 @@ export class AdMobFreeRewardVideo extends IonicNativePlugin {
show(): Promise<any> {
return;
}
}
/**
* @name AdMob Free
* @description
*
* @usage
* ```typescript
* import { AdMobFree, AdMobFreeBannerConfig } from '@ionic-native/admob-free';
*
*
* constructor(private admobFree: AdMobFree) { }
*
*
* ...
*
*
* const bannerConfig: AdMobFreeBannerConfig = {
* // add your config here
* // for the sake of this example we will just use the test config
* isTesting: true,
* autoShow: true
* }
* this.admobFree.banner.config(bannerConfig);
*
* this.admobFree.banner.prepare()
* .then(() => {
* // banner Ad is ready
* // if we set autoShow to false, then we will need to call the show method here
* })
* .catch(e => console.log(e));
*
*
* ```
* @interfaces
* AdMobFreeBannerConfig
* AdMobFreeInterstitialConfig
* AdMobFreeRewardVideoConfig
* @classes
* AdMobFreeBanner
* AdMobFreeInterstitial
* AdMobFreeRewardVideo
*/
@Plugin({
pluginName: 'AdMobFree',
plugin: 'cordova-plugin-admob-free',
pluginRef: 'admob',
repo: 'https://github.com/ratson/cordova-plugin-admob-free',
platforms: ['Android', 'iOS']
})
@Injectable()
export class AdMobFree extends IonicNativePlugin {
/**
* Convenience object to get event names
* @type {Object}
*/
events: any = {
BANNER_LOAD: 'admob.banner.events.LOAD',
BANNER_LOAD_FAIL: 'admob.banner.events.LOAD_FAIL',
BANNER_OPEN: 'admob.banner.events.OPEN',
BANNER_CLOSE: 'admob.banner.events.CLOSE',
BANNER_EXIT_APP: 'admob.banner.events.EXIT_APP',
INTERSTITIAL_LOAD: 'admob.interstitial.events.LOAD',
INTERSTITIAL_LOAD_FAIL: 'admob.interstitial.events.LOAD_FAIL',
INTERSTITIAL_OPEN: 'admob.interstitial.events.OPEN',
INTERSTITIAL_CLOSE: 'admob.interstitial.events.CLOSE',
INTERSTITIAL_EXIT_APP: 'admob.interstitial.events.EXIT_APP',
REWARD_VIDEO_LOAD: 'admob.rewardvideo.events.LOAD',
REWARD_VIDEO_LOAD_FAIL: 'admob.rewardvideo.events.LOAD_FAIL',
REWARD_VIDEO_OPEN: 'admob.rewardvideo.events.OPEN',
REWARD_VIDEO_CLOSE: 'admob.rewardvideo.events.CLOSE',
REWARD_VIDEO_EXIT_APP: 'admob.rewardvideo.events.EXIT_APP',
REWARD_VIDEO_START: 'admob.rewardvideo.events.START',
REWARD_VIDEO_REWARD: 'admob.rewardvideo.events.REWARD'
};
/**
* Returns the AdMobFreeBanner object
* @type {AdMobFreeBanner}
*/
banner: AdMobFreeBanner = new AdMobFreeBanner();
/**
* Returns the AdMobFreeInterstitial object
* @type {AdMobFreeInterstitial}
*/
interstitial: AdMobFreeInterstitial = new AdMobFreeInterstitial();
/**
* Returns the AdMobFreeRewardVideo object
* @type {AdMobFreeRewardVideo}
*/
rewardVideo: AdMobFreeRewardVideo = new AdMobFreeRewardVideo();
/**
* Watch an event
* @param event {string} event name
* @return {Observable<any>}
*/
on(event: string): Observable<any> {
return Observable.fromEvent(document, event);
}
}

View File

@@ -0,0 +1,94 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable, fromEvent } from 'rxjs';
export type AdUnitIDOption = string | {
android: string;
ios: string;
};
/**
* @name AdMob Plus
* @description
* AdMob Plus is the successor of cordova-plugin-admob-free, which provides a cleaner API and build with modern tools.
*/
@Plugin({
plugin: 'cordova-admob-plus',
pluginName: 'AdMob',
pluginRef: 'admob.banner',
repo: 'https://github.com/admob-plus/admob-plus',
platforms: ['Android', 'iOS']
})
export class Banner {
@Cordova({ otherPromise: true })
hide(): Promise<any> {
return Promise.resolve();
}
@Cordova({ otherPromise: true })
show(opts: { id?: AdUnitIDOption }): Promise<any> {
return Promise.resolve();
}
}
@Plugin({
plugin: 'cordova-admob-plus',
pluginName: 'AdMob',
pluginRef: 'admob.interstitial',
})
export class Interstitial {
@Cordova({ otherPromise: true })
load(opts: { id?: AdUnitIDOption }): Promise<any> {
return Promise.resolve();
}
@Cordova({ otherPromise: true })
show(): Promise<any> {
return Promise.resolve();
}
}
@Plugin({
plugin: 'cordova-admob-plus',
pluginName: 'AdMob',
pluginRef: 'admob.rewardVideo',
})
export class RewardVideo {
@Cordova({ otherPromise: true })
load(opts: { id?: AdUnitIDOption }): Promise<any> {
return Promise.resolve();
}
@Cordova({ otherPromise: true })
show(): Promise<any> {
return Promise.resolve();
}
}
@Plugin({
platforms: ['Android', 'iOS'],
plugin: 'cordova-admob-plus',
pluginName: 'AdMob',
pluginRef: 'admob',
repo: 'https://github.com/admob-plus/admob-plus',
})
@Injectable()
export class AdMob extends IonicNativePlugin {
banner = new Banner();
interstitial = new Interstitial();
rewardVideo = new RewardVideo();
@Cordova({ otherPromise: true })
setAppMuted(value: boolean): Promise<any> {
return Promise.resolve();
}
@Cordova({ otherPromise: true })
setAppVolume(value: number): Promise<any> {
return Promise.resolve();
}
on(event: string): Observable<any> {
return fromEvent(document, event);
}
}

View File

@@ -1,9 +1,9 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
import { Observable } from 'rxjs';
export type AdSize =
'SMART_BANNER'
| 'SMART_BANNER'
| 'BANNER'
| 'MEDIUM_RECTANGLE'
| 'FULL_BANNER'
@@ -12,7 +12,6 @@ export type AdSize =
| 'CUSTOM';
export interface AdMobOptions {
/**
* Banner ad ID
*/
@@ -78,10 +77,13 @@ export interface AdMobOptions {
*/
license?: any;
/**
* Set offset
*/
offsetTopBar?: boolean;
}
export interface AdExtras {
color_bg: string;
color_bg_top: string;
@@ -93,7 +95,6 @@ export interface AdExtras {
color_text: string;
color_url: string;
}
/**
@@ -105,8 +106,8 @@ export interface AdExtras {
* IMPORTANT NOTICE: this plugin takes a percentage out of your earnings if you profit more than $1,000. Read more about this on the plugin's repo. For a completely free alternative, see [AdMobPro Free](../admob-free).
* @usage
* ```typescript
* import { AdMobPro } from '@ionic-native/admob-pro';
* import { Platform } from 'ionic-angular';
* import { AdMobPro } from '@ionic-native/admob-pro/ngx';
* import { Platform } from '@ionic/angular';
*
* constructor(private admob: AdMobPro, private platform: Platform ) { }
*
@@ -141,7 +142,6 @@ export interface AdExtras {
})
@Injectable()
export class AdMobPro extends IonicNativePlugin {
AD_POSITION: {
NO_CHANGE: number;
TOP_LEFT: number;
@@ -170,7 +170,7 @@ export class AdMobPro extends IonicNativePlugin {
/**
* Create a banner
* @param adIdOrOptions {string | AdMobOptions} Ad ID or Options
* @param {string | AdMobOptions} adIdOrOptions Ad ID or Options
* @returns {Promise<any>} Returns a Promise that resolves when the banner is created
*/
@Cordova()
@@ -184,29 +184,26 @@ export class AdMobPro extends IonicNativePlugin {
@Cordova({
sync: true
})
removeBanner(): void {
}
removeBanner(): void {}
/**
* Show banner at position
* @param position {number} Position. Use `AdMobPro.AD_POSITION` to set values.
* @param {number} position Position. Use `AdMobPro.AD_POSITION` to set values.
*/
@Cordova({
sync: true
})
showBanner(position: number): void {
}
showBanner(position: number): void {}
/**
* Show banner at custom position
* @param x {number} Offset from screen left.
* @param y {number} Offset from screen top.
* @param {number} x Offset from screen left.
* @param {number} y Offset from screen top.
*/
@Cordova({
sync: true
})
showBannerAtXY(x: number, y: number): void {
}
showBannerAtXY(x: number, y: number): void {}
/**
* Hide the banner, remove it from screen, but can show it later
@@ -214,12 +211,11 @@ export class AdMobPro extends IonicNativePlugin {
@Cordova({
sync: true
})
hideBanner(): void {
}
hideBanner(): void {}
/**
* Prepare interstitial banner
* @param adIdOrOptions {string | AdMobOptions} Ad ID or Options
* @param {string | AdMobOptions} adIdOrOptions Ad ID or Options
* @returns {Promise<any>} Returns a Promise that resolves when interstitial is prepared
*/
@Cordova()
@@ -233,12 +229,11 @@ export class AdMobPro extends IonicNativePlugin {
@Cordova({
sync: true
})
showInterstitial(): void {
}
showInterstitial(): void {}
/**
* Prepare a reward video ad
* @param adIdOrOptions {string | AdMobOptions} Ad ID or Options
* @param {string | AdMobOptions} adIdOrOptions Ad ID or Options
* @returns {Promise<any>} Returns a Promise that resolves when the ad is prepared
*/
@Cordova()
@@ -252,12 +247,11 @@ export class AdMobPro extends IonicNativePlugin {
@Cordova({
sync: true
})
showRewardVideoAd(): void {
}
showRewardVideoAd(): void {}
/**
* Sets the values for configuration and targeting
* @param options {AdMobOptions} Options
* @param {AdMobOptions} options Options
* @returns {Promise<any>} Returns a Promise that resolves when the options have been set
*/
@Cordova()
@@ -338,5 +332,4 @@ export class AdMobPro extends IonicNativePlugin {
onAdDismiss(): Observable<any> {
return;
}
}

View File

@@ -0,0 +1,456 @@
import { Injectable } from '@angular/core';
import { Cordova, CordovaProperty, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs';
export interface AdmobOptions {
/**
* Your publisher id code from your AdMob account
*/
publisherId: string;
/**
* (Optional) Your interstitial id code from your AdMob account. Defaults to publisherId
*/
interstitialAdId?: string;
/**
* (Optional) Your rewarded id code from your AdMob account. Defaults to publisherId
*/
rewardedAdId?: string;
/**
* (Optional) Your tappx id for iOS apps. If Admob is configured, it is also used to backfill your lost inventory when there are no Admob ads available
*/
tappxIdiOS?: string;
/**
* (Optional) Your tappx id for Android apps. Admob is configured, it is also used to backfill your lost inventory when there are no Admob ads available
*/
tappxIdAndroid?: string;
/**
* (Optional) If any of tappxId is present, it tells the percentage of traffic diverted to tappx. Defaults to 0.5 (50% of the traffic will be requested to Tappx)
*/
tappxShare?: number;
/**
* (Optional) Indicates whether to put banner ads at top when set to true or at bottom when set to false. Defaults to false
*/
bannerAtTop?: boolean;
/**
* (Optional) Indicates the size of banner ads
*/
adSize?: string;
/**
* (Optional) Allow banner overlap webview. Default false
*/
overlap?: boolean;
/**
* (Optional) Set to true to avoid ios7 status bar overlap. Default false
*/
offsetStatusBar?: boolean;
/**
* (Optional) Set to true to receive test ads (do not test with real ads as your account may be banned). Defaults to false
*/
isTesting?: boolean;
/**
* (Options) A JSON object with additional {key: value} pairs
*/
adExtras?: any;
/**
* (Optional) Auto show banner ads when available (onAdLoaded event is called). Defaults to true
*/
autoShowBanner?: boolean;
/**
* (Optional) Auto show interstitial asd when available (onAdLoaded event is called). Defaults to true
*/
autoShowInterstitial?: boolean;
/**
* (Optional) Auto show rewarded ads when available (onAdLoaded event is called). Defaults to true
*/
autoShowRewarded?: boolean;
}
/**
* @name Admob
* @description
* Most complete Admob plugin with support for [Tappx](http://www.tappx.com/?h=dec334d63287772de859bdb4e977fce6) ads.
* Monetize your apps and games with AdMob ads, using latest Google AdMob SDK. With this plugin you can show AdMob ads easily!
*
* **Supports:**
* - Banner ads (top and bottom)
* - Interstitial ads
* - Rewarded ads
* - [Tappx](http://www.tappx.com/?h=dec334d63287772de859bdb4e977fce6) ads
*
* @usage
* ```typescript
* import { Admob, AdmobOptions } from '@ionic-native/admob/ngx';
*
*
* constructor(private admob: Admob) {
* // Admob options config
* const admobOptions: AdmobOptions = {
* publisherId: 'XXX-XXXX-XXXX',
* interstitialAdId: 'XXX-XXXX-XXXX',
* rewardedAdId: 'XXX-XXXX-XXXX',
* isTesting: true,
* autoShowBanner: false,
* autoShowInterstitial: false,
* autoShowRewarded: false,
* adSize: this.admob.AD_SIZE.BANNER
* };
*
* // Set admob options
* this.admob.setOptions(admobOptions)
* .then(() => console.log('Admob options have been successfully set'))
* .catch(err => console.error('Error setting admob options:', err));
* }
*
*
*
* // (Optionally) Load banner ad, in order to have it ready to show
* this.admob.createBannerView()
* .then(() => console.log('Banner ad loaded'))
* .catch(err => console.error('Error loading banner ad:', err));
*
*
* // Show banner ad (createBannerView must be called before and onAdLoaded() event raised)
* this.admob.onAdLoaded().subscribe((ad) => {
* if (ad.adType === this.admob.AD_TYPE.BANNER) {
* this.admob.showBannerAd()
* .then(() => console.log('Banner ad shown'))
* .catch(err => console.error('Error showing banner ad:', err));
* }
* });
*
*
* // Hide banner ad, but do not destroy it, so it can be shown later on
* // See destroyBannerView in order to hide and destroy banner ad
* this.admob.showBannerAd(false)
* .then(() => console.log('Banner ad hidden'))
* .catch(err => console.error('Error hiding banner ad:', err));
*
*
*
* // Request an interstitial ad, in order to be shown later on
* // It is possible to autoshow it via options parameter, see docs
* this.admob.requestInterstitialAd()
* .then(() => console.log('Interstitial ad loaded'))
* .catch(err => console.error('Error loading interstitial ad:', err));
*
*
* // Show an interstitial ad (requestInterstitialAd must be called before)
* this.admob.onAdLoaded().subscribe((ad) => {
* if (ad.adType === this.admob.AD_TYPE.INTERSTITIAL) {
* this.admob.showInterstitialAd()
* .then(() => console.log('Interstitial ad shown'))
* .catch(err => console.error('Error showing interstitial ad:', err));
* }
* });
*
*
* // Request a rewarded ad
* this.admob.requestRewardedAd()
* .then(() => console.log('Rewarded ad loaded'))
* .catch(err => console.error('Error loading rewarded ad:', err));
*
*
* // Show rewarded ad (requestRewardedAd must be called before)
* this.admob.onAdLoaded().subscribe((ad) => {
* if (ad.adType === this.admob.AD_TYPE.REWARDED) {
* this.admob.showRewardedAd()
* .then(() => console.log('Rewarded ad shown'))
* .catch(err => console.error('Error showing rewarded ad:', err));
* }
* });
*
*
* // Hide and destroy banner or interstitial ad
* this.admob.destroyBannerView()
* .then(() => console.log('Banner or interstitial ad destroyed'))
* .catch(err => console.error('Error destroying banner or interstitial ad:', err));
*
*
*
* // On Ad loaded event
* this.admob.onAdLoaded().subscribe((ad) => {
* if (ad.adType === this.admob.AD_TYPE.BANNER) {
* console.log('Banner ad is loaded');
* this.admob.showBannerAd();
* } else if (ad.adType === this.admob.AD_TYPE.INTERSTITIAL) {
* console.log('Interstitial ad is loaded');
* this.admob.showInterstitialAd();
* } else if (ad.adType === this.admob.AD_TYPE.REWARDED) {
* console.log('Rewarded ad is loaded');
* this.admob.showRewardedAd();
* }
* });
*
*
*
* // On ad failed to load
* this.admob.onAdFailedToLoad().subscribe(err => console.log('Error loading ad:', err));
*
*
*
* // On interstitial ad opened
* this.admob.onAdOpened().subscribe(() => console.log('Interstitial ad opened'));
*
*
*
* // On interstitial ad closed
* this.admob.onAdClosed().subscribe(() => console.log('Interstitial ad closed'));
*
*
*
* // On ad clicked and left application
* this.admob.onAdLeftApplication().subscribe(() => console.log('Ad lefted application'));
*
*
*
* // On user ad rewarded
* this.admob.onRewardedAd().subscribe(() => console.log('The user has been rewarded'));
*
*
*
* // On rewarded ad video started
* this.admob.onRewardedAdVideoStarted().subscribe(() => console.log('Rewarded ad vieo started'));
*
*
*
* // On rewarded ad video completed
* this.admob.onRewardedAdVideoCompleted().subscribe(() => console.log('Rewarded ad video completed'));
*
* ```
*/
@Plugin({
pluginName: 'Admob',
plugin: 'cordova-admob',
pluginRef: 'admob',
repo: 'https://github.com/appfeel/admob-google-cordova',
platforms: ['Android', 'iOS']
})
@Injectable()
export class Admob extends IonicNativePlugin {
/**
* This enum represents AdMob's supported ad sizes.
* Use one of these constants as adSize option when calling createBannerView
* @readonly
*/
@CordovaProperty()
readonly AD_SIZE: {
BANNER: string;
IAB_MRECT: string;
IAB_BANNER: string;
IAB_LEADERBOARD: string;
SMART_BANNER: string;
};
/**
* This enum represents AdMob's supported ad types
* @readonly
*/
@CordovaProperty()
readonly AD_TYPE: {
BANNER: string;
INTERSTITIAL: string;
REWARDED: string;
};
/**
* Set the options to start displaying ads.
* Although it is not required to call this method, as options can be specified in other methods, it is highly recommended
* @param options {AdmobOptions} Some param to configure something
* @return {Promise<any>} Returns a promise that resolves when the options are set
*/
@Cordova()
setOptions(options: AdmobOptions): Promise<any> {
return;
}
/**
* Creates a new banner ad view. Call this method in order to be able to start showing banners
* @param options {AdmobOptions} (Optional) Setup options
* @return {Promise<any>} Returns a promise that resolves when the banner view is created
*/
@Cordova()
createBannerView(options?: AdmobOptions): Promise<any> {
return;
}
/**
* Show banner ads. You must call createBannerView first, otherwise it will result in failure callback and no ads will be shown
* @param show {boolean} (Optional) Indicates whether to show or hide banner ads. Defaults to `true`
* @return {Promise<any>} Returns a promise that resolves when the banner shown or hidden
*/
@Cordova()
showBannerAd(show?: boolean): Promise<any> {
return;
}
/**
* Hide and destroy banner view. Call this method when you want to destroy banner view.
* It is not necessary to call this method when the app closed, as it will be automatically called by the plugin
*/
@Cordova()
destroyBannerView() {}
/**
* Request an interstitial ad
* If `options.autoShowInterstitial` is set to `true` (default), the ad will automatically be displayed.
* Otherwise you need to subscribe to `onAdLoaded()` event and call `showInterstitialAd()` after it will be raised specifying that an interstitial ad is available.
* If you already called `requestInterstitialAd()` but the interstitial has never been shown, the successive calls to `requestInterstitialAd()` will result in the ad being inmediately available (the one that was obtained on the first call)
* @param options {AdmobOptions} (Optional) Setup options
* @return {Promise<any>} Returns a promise that resolves when the interstitial ad is loaded
*/
@Cordova()
requestInterstitialAd(options?: AdmobOptions): Promise<any> {
return;
}
/**
* Show an interstitial ad. Call it after `requestInterstitialAd()` and `onAdLoaded()` event raised.
* @return {Promise<any>} Returns a promise that resolves when the interstitial ad is shown
*/
@Cordova()
showInterstitialAd(): Promise<any> {
return;
}
/**
* Request an rewarded ad
* If `options.autoShowRewarded` is set to `true` (default), the ad will automatically be displayed.
* Otherwise you need to subscribe to `onAdLoaded()` enent and call `showRewardedAd()` after it will be raised specifying that a rewarded ad is available.
* If you already called `requestRewardedAd()` but the rewarded has never been shown, the successive calls to `requestRewardedAd()` will result in the ad being inmediately available (the one that was obtained on the first call)
* @param options {AdmobOptions} (Optional) Setup options
* @return {Promise<any>} Returns a promise that resolves when the rewarded ad is loaded
*/
@Cordova()
requestRewardedAd(options?: AdmobOptions): Promise<any> {
return;
}
/**
* Show a rewarded ad
* @return {Promise<any>} Returns a promise that resolves when the rewarded ad is shown
*/
@Cordova()
showRewardedAd(): Promise<any> {
return;
}
/**
* Called when an ad is received
* @returns {Observable<any>} Returns an observable when an ad is received
*/
@Cordova({
eventObservable: true,
event: 'appfeel.cordova.admob.onAdLoaded',
element: document
})
onAdLoaded(): Observable<any> {
return;
}
/**
* Called when an ad request failed
* @returns {Observable<any>} Returns an observable when an ad request is failed
*/
@Cordova({
eventObservable: true,
event: 'appfeel.cordova.admob.onAdFailedToLoad',
element: document
})
onAdFailedToLoad(): Observable<any> {
return;
}
/**
* Called when an ad opens an overlay that covers the screen.
* Please note that onPause cordova event is raised when an interstitial is shown
* @returns {Observable<any>} Returns an observable when an ad is opened
*/
@Cordova({
eventObservable: true,
event: 'appfeel.cordova.admob.onAdOpened',
element: document
})
onAdOpened(): Observable<any> {
return;
}
/**
* Called when the user is about to return to the application after clicking on an ad.
* Please note that onResume cordova event is raised when an interstitial is closed
* @returns {Observable<any>} Returns an observable when an ad is closed
*/
@Cordova({
eventObservable: true,
event: 'appfeel.cordova.admob.onAdClosed',
element: document
})
onAdClosed(): Observable<any> {
return;
}
/**
* Called when the user leaves the application after clicking an ad (e.g., to go to the browser)
* @returns {Observable<any>} Returns an observable when an ad leaves the application
*/
@Cordova({
eventObservable: true,
event: 'appfeel.cordova.admob.onAdLeftApplication',
element: document
})
onAdLeftApplication(): Observable<any> {
return;
}
/**
* Called when the user has been rewarded by an ad
* @returns {Observable<any>} Returns an observable when the user rewards an ad
*/
@Cordova({
eventObservable: true,
event: 'appfeel.cordova.admob.onRewardedAd',
element: document
})
onRewardedAd(): Observable<any> {
return;
}
/**
* Called when the video of a rewarded ad started
* @returns {Observable<any>} Returns an observable when the video is started
*/
@Cordova({
eventObservable: true,
event: 'appfeel.cordova.admob.onRewardedAdVideoStarted',
element: document
})
onRewardedAdVideoStarted(): Observable<any> {
return;
}
/**
* Called when the video of a rewarded ad has completed
* @returns {Observable<any>} Returns an observable when the video is completed
*/
@Cordova({
eventObservable: true,
event: 'appfeel.cordova.admob.onRewardedAdVideoCompleted',
element: document
})
onRewardedAdVideoCompleted(): Observable<any> {
return;
}
}

View File

@@ -0,0 +1,105 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name AES256
* @description
* This cordova ionic plugin allows you to perform AES 256 encryption and decryption on the plain text.
* It's a cross-platform plugin which supports both Android and iOS.
* The encryption and decryption are performed on the device native layer so that the performance is much faster.
*
* @usage
* ```typescript
* import { AES256 } from '@ionic-native/aes-256/ngx';
*
* private secureKey: string;
* private secureIV: string;
*
* constructor(private aes256: AES256) {
* this.generateSecureKeyAndIV(); // To generate the random secureKey and secureIV
* }
*
* ...
*
* async generateSecureKeyAndIV() {
* this.secureKey = await this.aes256.generateSecureKey('random password 12345'); // Returns a 32 bytes string
* this.secureIV = await this.aes256.generateSecureIV('random password 12345'); // Returns a 16 bytes string
* }
*
* this.aes256.encrypt(this.secureKey, this.secureIV, 'testdata')
* .then(res => console.log('Encrypted Data: ',res))
* .catch((error: any) => console.error(error));
*
* this.aes256.decrypt(this.secureKey, this.secureIV, 'encryptedData')
* .then(res => console.log('Decrypted Data : ',res))
* .catch((error: any) => console.error(error));
*
*
* * this.aes256.generateSecureKey('random password 12345')
* .then(res => console.log('Secure Key : ',res))
* .catch((error: any) => console.error(error));
*
*
* * this.aes256.generateSecureIV('random password 12345')
* .then(res => console.log('Secure IV : ',res))
* .catch((error: any) => console.error(error));
*
* ```
*/
@Plugin({
pluginName: 'AES256',
plugin: 'cordova-plugin-aes256-encryption',
pluginRef: 'cordova.plugins.AES256',
repo: 'https://github.com/Ideas2IT/cordova-aes256',
platforms: ['Android', 'iOS'],
install: 'ionic cordova plugin add cordova-plugin-aes256-encryption'
})
@Injectable()
export class AES256 extends IonicNativePlugin {
/**
* This function used to perform the aes256 encryption
* @param {string} secureKey A 32 bytes string, which will used as input key for AES256 encryption.
* @param {string} secureIV A 16 bytes string, which will used as initial vector for AES256 encryption.
* @param {string} data A string which will be encrypted
* @return {Promise<string>} Returns a promise that resolves when encryption happens. The success response will returns encrypted data.
*/
@Cordova()
encrypt(secureKey: string, secureIV: string, data: string): Promise<string> {
return;
}
/**
* This function used to perform the aes256 decryption
* @param {string} secureKey A 32 bytes string, which will used as input key for AES256 decryption.
* @param {string} secureIV A 16 bytes string, which will used as initial vector for AES256 decryption.
* @param {string} data An AES256 encrypted data which will be decrypted.
* @return {Promise<string>} Returns a promise that resolves when decryption happens. The success response will returns decrypted data.
*/
@Cordova()
decrypt(secureKey: string, secureIV: string, data: string): Promise<string> {
return;
}
/**
* This function used to generate a secure key based on an password. Perfect if you want to delegate the key generation for encryption to the plugin.
* Make sure to save the return value of this function somewhere so your encrypted data can be decrypted in the future.
* @param {string} password A random string, which will be used as input for a PBKDF2 function
* @return {Promise<string>} Returns a promise that resolves when key is generated.
*/
@Cordova()
generateSecureKey(password: string): Promise<string> {
return;
}
/**
* This function used to generate a secure IV based on an password. Perfect if you want to delegate the IV generation for encryption to the plugin.
* Make sure to save the return value of this function somewhere so your encrypted data can be decrypted in the future.
* @param {string} password A random string, which will be used as input for a PBKDF2 function
* @return {Promise<string>} Returns a promise that resolves when IV is generated.
*/
@Cordova()
generateSecureIV(password: string): Promise<string> {
return;
}
}

View File

@@ -1,85 +1,21 @@
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
export interface AlipayOrder {
/**
* appId assigned by Alipay
*/
app_id: string;
/**
* Api name.
* Should be: alipay.trade.app.pay
*/
method: string;
/**
* Data format
* Default: "JSON"
*/
format?: string;
/**
* Charset
* Possible values: "UTF-8", "GBK"
* Default: "UTF-8"
*/
charset: string;
/**
* Sign method
* Default: 'RSA'
*/
sign_type: string;
/**
* Sign value. Should be got from server side.
* Default: 'RSA'
*/
sign: string;
/**
* Timestamp, formated like "yyyy-MM-dd HH:mm:ss", e.g. 2014-07-24 03:07:50
*/
timestamp: string;
/**
* Api version. Fixed value '1.0'
*/
version: string;
/**
* Notify url.
*/
notify_url: string;
/**
* biz content. formated in json. see alipay doc for detail.
*/
biz_content: string;
}
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name Alipay
* @description
* This plugin is used for Alipay APP support. Integrated with the latest SDK.
* This plugin facilitates the usage of Alipay 支付宝 in an Ionic apps with the integrated AlipaySDK dated on 20180601.
*
* Requires Cordova plugin: `cordova-alipay-base`. For more info, please see the [Alipay plugin docs](https://github.com/xueron/cordova-alipay-base).
* Requires Cordova plugin: `cordova-plugin-gubnoi-alipay`. For more info, please see https://github.com/jing-zhou/cordova-plugin-alipay .
*
* @usage
* ```typescript
* import { Alipay, AlipayOrder } from '@ionic-native/alipay';
* import { Alipay } from '@ionic-native/alipay/ngx';
*
* constructor(private alipay: Alipay) {
*
* // Should get from server side with sign.
* const alipayOrder: AlipayOrder = {
* ...
* }
*
*
* this.alipay.pay(alipayOrder)
* //alipayOrder is a string that has been generated and signed by the server side.
* this.alipay.pay(alipayOrder, success, error)
* .then(result => {
* console.log(result); // Success
* })
@@ -89,30 +25,26 @@ export interface AlipayOrder {
*
* }
*
*
* ```
*
* @interfaces
* AlipayOrder
*/
@Plugin({
pluginName: 'Alipay',
plugin: 'cordova-alipay-base',
pluginRef: 'Alipay.Base',
repo: 'https://github.com/xueron/cordova-alipay-base',
install: 'ionic cordova plugin add cordova-alipay-base --variable ALI_PID=your_app_id',
installVariables: ['ALI_PID'],
plugin: 'cordova-plugin-gubnoi-alipay',
pluginRef: 'cordova.plugins.alipay',
repo: 'https://github.com/jing-zhou/cordova-plugin-alipay',
install: 'ionic cordova plugin add cordova-plugin-gubnoi-alipay --variable APP_ID=your_app_id',
installVariables: ['APP_ID'],
platforms: ['Android', 'iOS']
})
@Injectable()
export class Alipay extends IonicNativePlugin {
/**
* Open Alipay to perform App pay
* @param order { AlipayOrder | string } alipay options
* @param {string} order alipay order string
* @returns {Promise<any>} Returns a Promise that resolves with the success return, or rejects with an error.
*/
@Cordova()
pay(order: AlipayOrder | string): Promise<any> {
pay(order: string, success?: (res?: any) => void, error?: (err?: any) => void): Promise<any> {
return;
}
}

View File

@@ -0,0 +1,248 @@
import { Injectable } from '@angular/core';
import { Cordova, CordovaProperty, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name Analytics Firebase
* @description
* Google Analytics Firebase plugin for Ionic Native apps.
*
* @usage
* ```typescript
* import { AnalyticsFirebase } from '@ionic-native/analytics-firebase';
*
*
* constructor(private analyticsFirebase: AnalyticsFirebase) { }
*
* // Track an event with default events and params
* const eventParams = {};
* eventParams[this.analyticsFirebase.DEFAULT_PARAMS.LEVEL] = 29;
* this.analyticsFirebase.logEvent(this.analyticsFirebase.DEFAULT_EVENTS.LEVEL_UP, eventParams)
* .then(() => console.log('Event successfully tracked'))
* .catch(err => console.log('Error tracking event:', err));
*
* // Track an event with custom events and params
* const eventParams = {};
* eventParams['my-prop'] = 29;
* this.analyticsFirebase.logEvent('my-event', eventParams)
* .then(() => console.log('Event successfully tracked'))
* .catch(err => console.log('Error tracking event:', err));
*
*
* // Reset analytics data
* this.analyticsFirebase.resetAnalyticsData()
* .then(() => console.log('Analytics data have been reset'))
* .catch(err => console.log('Error resetting analytics data:', err));
*
*
* // Track a screen view
* this.analyticsFirebase.setCurrentScreen('Home')
* .then(() => console.log('View successfully tracked'))
* .catch(err => console.log('Error tracking view:', err));
*
*
* // Set user id
* this.analyticsFirebase.setUserId('USER-ID')
* .then(() => console.log('User id successfully set'))
* .catch(err => console.log('Error setting user id:', err));
*
*
* // Set user property from default properties
* this.analyticsFirebase.setUserProperty('KEY', 'VALUE')
* .then(() => console.log('User property successfully set'))
* .catch(err => console.log('Error setting user property:', err));
*
* ```
*/
@Plugin({
pluginName: 'AnalyticsFirebase',
plugin: 'cordova-plugin-analytics',
pluginRef: 'analytics',
repo: 'https://github.com/appfeel/analytics-google',
platforms: ['Android', 'iOS']
})
@Injectable()
export class AnalyticsFirebase extends IonicNativePlugin {
/**
* This enum represents AnalyticsFirebase default events.
* Use one of these default events or a custom event
* @readonly
*/
@CordovaProperty()
readonly DEFAULT_EVENTS: {
ADD_PAYMENT_INFO: string;
ADD_TO_CART: string;
ADD_TO_WISHLIST: string;
APP_OPEN: string;
BEGIN_CHECKOUT: string;
CAMPAIGN_DETAILS: string;
CHECKOUT_PROGRESS: string;
EARN_VIRTUAL_CURRENCY: string;
ECOMMERCE_PURCHASE: string;
GENERATE_LEAD: string;
JOIN_GROUP: string;
LEVEL_END: string;
LEVEL_START: string;
LEVEL_UP: string;
LOGIN: string;
POST_SCORE: string;
PRESENT_OFFER: string;
PURCHASE_REFUND: string;
REMOVE_FROM_CART: string;
SEARCH: string;
SELECT_CONTENT: string;
SET_CHECKOUT_OPTION: string;
SHARE: string;
SIGN_UP: string;
SPEND_VIRTUAL_CURRENCY: string;
TUTORIAL_BEGIN: string;
TUTORIAL_COMPLETE: string;
UNLOCK_ACHIEVEMENT: string;
VIEW_ITEM: string;
VIEW_ITEM_LIST: string;
VIEW_SEARCH_RESULTS: string;
};
/**
* This enum represents AnalyticsFirebase default params.
* Use one of these default params or a custom param
* @readonly
*/
@CordovaProperty()
readonly DEFAULT_PARAMS: {
ACHIEVEMENT_ID: string;
ACLID: string;
AFFILIATION: string;
CAMPAIGN: string;
CHARACTER: string;
CHECKOUT_OPTION: string;
CHECKOUT_STEP: string;
CONTENT: string;
CONTENT_TYPE: string;
COUPON: string;
CP1: string;
CREATIVE_NAME: string;
CREATIVE_SLOT: string;
CURRENCY: string;
DESTINATION: string;
END_DATE: string;
FLIGHT_NUMBER: string;
GROUP_ID: string;
INDEX: string;
ITEM_BRAND: string;
ITEM_CATEGORY: string;
ITEM_ID: string;
ITEM_LIST: string;
ITEM_LOCATION_ID: string;
ITEM_NAME: string;
ITEM_VARIANT: string;
LEVEL: string;
LEVEL_NAME: string;
LOCATION: string;
MEDIUM: string;
METHOD: string;
NUMBER_OF_NIGHTS: string;
NUMBER_OF_PASSENGERS: string;
NUMBER_OF_ROOMS: string;
ORIGIN: string;
PRICE: string;
QUANTITY: string;
SCORE: string;
SEARCH_TERM: string;
SHIPPING: string;
SOURCE: string;
START_DATE: string;
SUCCESS: string;
TAX: string;
TERM: string;
TRANSACTION_ID: string;
TRAVEL_CLASS: string;
VALUE: string;
VIRTUAL_CURRENCY_NAME: string;
};
/**
* Logs an app event. The event can have up to 25 parameters.
* Events with the same name must have the same parameters.
* Up to 500 event names are supported.
* Using predefined [FirebaseAnalytics.Event](https://firebase.google.com/docs/reference/android/com/google/firebase/analytics/FirebaseAnalytics.Event.html) and/or [FirebaseAnalytics.Param](https://firebase.google.com/docs/reference/android/com/google/firebase/analytics/FirebaseAnalytics.Param.html) is recommended for optimal reporting.
*
* @param eventName {string} The event name
* @param eventParams {object} (Optional) The event params
* @return {Promise<any>} Returns a promise that resolves when the event is logged
*/
@Cordova()
logEvent(eventName: string, eventParams?: object): Promise<any> {
return;
}
/**
* Clears all analytics data for this app from the device and resets the app instance id
* @return {Promise<any>} Returns a promise that resolves when the analytics data is cleared
*/
@Cordova()
resetAnalyticsData(): Promise<any> {
return;
}
/**
* Sets whether analytics collection is enabled for this app on this device. This setting is persisted across app sessions. By default it is enabled
* @param screenName {boolean} The value of the collection
* @return {Promise<any>} Returns a promise that resolves when the collection is enabled/disabled
*/
@Cordova()
setAnalyticsCollectionEnabled(enabled: boolean): Promise<any> {
return;
}
/**
* Sets the current screen name, which specifies the current visual context in your app.
* This helps identify the areas in your app where users spend their time and how they interact with your app
* @param screenName {string} The screen name
* @return {Promise<any>} Returns a promise that resolves when the current screen is setted
*/
@Cordova()
setCurrentScreen(screenName: string): Promise<any> {
return;
}
/**
* Sets the minimum engagement time required before starting a session. The default value is 10000 (10 seconds)
* @param screenName {number} The duration in milliseconds
* @return {Promise<any>} Returns a promise that resolves when the minimum session duration is set
*/
@Cordova()
setMinimumSessionDuration(milliseconds: number): Promise<any> {
return;
}
/**
* Sets the duration of inactivity that terminates the current session. The default value is 1800000 (30 minutes)
* @param screenName {number} The duration in milliseconds
* @return {Promise<any>} Returns a promise that resolves when the session timeout duration is set
*/
@Cordova()
setSessionTimeoutDuration(milliseconds: number): Promise<any> {
return;
}
/**
* Sets the user ID property. This feature must be used in accordance with Google's Privacy Policy
* @param userId {string} The user id
* @return {Promise<any>} Returns a promise that resolves when the user id is setted
*/
@Cordova()
setUserId(userId: string): Promise<any> {
return;
}
/**
* Sets a user property to a given value. Up to 25 user property names are supported. Once set, user property values persist throughout the app lifecycle and across sessions
* @param userPropertyName {string} The user property name
* @param userPropertyValue {string} The user property value
* @return {Promise<any>} Returns a promise that resolves when the user property setted
*/
@Cordova()
setUserProperty(userPropertyName: string, userPropertyValue: string): Promise<any> {
return;
}
}

View File

@@ -1,6 +1,6 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
import { Observable } from 'rxjs';
export type AndroidExoPlayerAspectRatio = 'FILL_SCREEN' | 'FIT_SCREEN';
@@ -138,7 +138,7 @@ export interface AndroidExoPlayerControllerConfig {
exo_play: string;
/**
* Payse button icon.
* Pause button icon.
*/
exo_pause: string;
@@ -158,7 +158,7 @@ export interface AndroidExoPlayerControllerConfig {
*
* @usage
* ```typescript
* import { AndroidExoPlayer } from '@ionic-native/android-exoplayer';
* import { AndroidExoPlayer } from '@ionic-native/android-exoplayer/ngx';
*
* constructor(private androidExoPlayer: AndroidExoPlayer) { }
*
@@ -184,7 +184,7 @@ export interface AndroidExoPlayerControllerConfig {
export class AndroidExoplayer extends IonicNativePlugin {
/**
* Show the player.
* @param parameters {AndroidExoPlayerParams} Parameters
* @param {AndroidExoPlayerParams} parameters Parameters
* @return {Observable<AndroidExoplayerState>}
*/
@Cordova({
@@ -200,12 +200,15 @@ export class AndroidExoplayer extends IonicNativePlugin {
/**
* Switch stream without disposing of the player.
* @param url {string} The url of the new stream.
* @param controller {AndroidExoPlayerControllerConfig} Configuration of the controller.
* @param {string} url The url of the new stream.
* @param {AndroidExoPlayerControllerConfig} controller Configuration of the controller.
* @return {Promise<void>}
*/
@Cordova()
setStream(url: string, controller: AndroidExoPlayerControllerConfig): Promise<void> {
setStream(
url: string,
controller: AndroidExoPlayerControllerConfig
): Promise<void> {
return;
}
@@ -229,7 +232,7 @@ export class AndroidExoplayer extends IonicNativePlugin {
/**
* Jump to a particular position.
* @param milliseconds {number} Position in stream in milliseconds
* @param {number} milliseconds Position in stream in milliseconds
* @return {Promise<void>}
*/
@Cordova()
@@ -239,7 +242,7 @@ export class AndroidExoplayer extends IonicNativePlugin {
/**
* Jump to a particular time relative to the current position.
* @param milliseconds {number} Time in milliseconds
* @param {number} milliseconds Time in milliseconds
* @return {Promise<void>}
*/
@Cordova()
@@ -276,7 +279,7 @@ export class AndroidExoplayer extends IonicNativePlugin {
/**
* Update the controller configuration.
* @param controller {AndroidExoPlayerControllerConfig} Configuration of the controller.
* @param {AndroidExoPlayerControllerConfig} controller Configuration of the controller.
* @return {Promise<void>}
*/
@Cordova()

View File

@@ -1,9 +1,7 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface AFAAuthOptions {
/**
* Required
* Used as the alias for your key in the Android Key Store.
@@ -62,7 +60,6 @@ export interface AFAAuthOptions {
* Set the hint displayed by the fingerprint icon on the fingerprint authentication dialog.
*/
dialogHint?: string;
}
export interface AFADecryptOptions {
@@ -96,13 +93,24 @@ export interface AFAEncryptResponse {
token: string;
}
export interface AFAAvailableResponse {
isAvailable: boolean;
isHardwareDetected: boolean;
hasEnrolledFingerprints: boolean;
}
export interface AFADeleteOptions {
clientId: string;
username: string;
}
/**
* @name Android Fingerprint Auth
* @description
* This plugin will open a native dialog fragment prompting the user to authenticate using their fingerprint. If the device has a secure lockscreen (pattern, PIN, or password), the user may opt to authenticate using that method as a backup.
* @usage
* ```typescript
* import { AndroidFingerprintAuth } from '@ionic-native/android-fingerprint-auth';
* import { AndroidFingerprintAuth } from '@ionic-native/android-fingerprint-auth/ngx';
*
* constructor(private androidFingerprintAuth: AndroidFingerprintAuth) { }
*
@@ -139,6 +147,8 @@ export interface AFAEncryptResponse {
* AFAAuthOptions
* AFAEncryptResponse
* AFADecryptOptions
* AFAAvailableResponse
* AFADeleteOptions
*/
@Plugin({
pluginName: 'AndroidFingerprintAuth',
@@ -149,8 +159,29 @@ export interface AFAEncryptResponse {
})
@Injectable()
export class AndroidFingerprintAuth extends IonicNativePlugin {
/**
* Convenience property containing all possible errors
*/
ERRORS: {
BAD_PADDING_EXCEPTION: string;
CERTIFICATE_EXCEPTION: string;
FINGERPRINT_CANCELLED: string;
FINGERPRINT_DATA_NOT_DELETED: string;
FINGERPRINT_ERROR: string;
FINGERPRINT_NOT_AVAILABLE: string;
FINGERPRINT_PERMISSION_DENIED: string;
FINGERPRINT_PERMISSION_DENIED_SHOW_REQUEST: string;
ILLEGAL_BLOCK_SIZE_EXCEPTION: string;
INIT_CIPHER_FAILED: string;
INVALID_ALGORITHM_PARAMETER_EXCEPTION: string;
IO_EXCEPTION: string;
JSON_EXCEPTION: string;
MINIMUM_SDK: string;
MISSING_ACTION_PARAMETERS: string;
MISSING_PARAMETERS: string;
NO_SUCH_ALGORITHM_EXCEPTION: string;
SECURITY_EXCEPTION: string;
} = {
BAD_PADDING_EXCEPTION: 'BAD_PADDING_EXCEPTION',
CERTIFICATE_EXCEPTION: 'CERTIFICATE_EXCEPTION',
FINGERPRINT_CANCELLED: 'FINGERPRINT_CANCELLED',
@@ -173,8 +204,8 @@ export class AndroidFingerprintAuth extends IonicNativePlugin {
/**
* Opens a native dialog fragment to use the device hardware fingerprint scanner to authenticate against fingerprints registered for the device.
* @param options {AFAAuthOptions} Options
* @returns {Promise<any>}
* @param {AFAAuthOptions} options Options
* @returns {Promise<AFAEncryptResponse>}
*/
@Cordova()
encrypt(options: AFAAuthOptions): Promise<AFAEncryptResponse> {
@@ -183,8 +214,8 @@ export class AndroidFingerprintAuth extends IonicNativePlugin {
/**
* Opens a native dialog fragment to use the device hardware fingerprint scanner to authenticate against fingerprints registered for the device.
* @param options {AFAAuthOptions} Options
* @returns {Promise<any>}
* @param {AFAAuthOptions} options Options
* @returns {Promise<AFADecryptOptions>}
*/
@Cordova()
decrypt(options: AFAAuthOptions): Promise<AFADecryptOptions> {
@@ -193,19 +224,20 @@ export class AndroidFingerprintAuth extends IonicNativePlugin {
/**
* Check if service is available
* @returns {Promise<any>} Returns a Promise that resolves if fingerprint auth is available on the device
* @returns {Promise<AFAAvailableResponse>} Returns a Promise that resolves if fingerprint auth is available on the device
*/
@Cordova()
isAvailable(): Promise<{ isAvailable: boolean, isHardwareDetected: boolean, hasEnrolledFingerprints: boolean }> {
isAvailable(): Promise<AFAAvailableResponse> {
return;
}
/**
* Delete the cipher used for encryption and decryption by username
* @returns {Promise<any>} Returns a Promise that resolves if the cipher was successfully deleted
* @param {AFADeleteOptions} options Options
* @returns {Promise<{ deleted: boolean }>} Returns a Promise that resolves if the cipher was successfully deleted
*/
@Cordova()
delete(options: { clientId: string; username: string; }): Promise<{ deleted: boolean }> {
delete(options: AFADeleteOptions): Promise<{ deleted: boolean }> {
return;
}
}

View File

@@ -14,8 +14,6 @@ export enum AndroidSystemUiFlags {
HideNavigation = 2,
/** View has requested to go into the normal fullscreen mode so that its content can take over the screen while still allowing the user to interact with the application. SYSTEM_UI_FLAG_FULLSCREEN */
Fullscreen = 4,
/** Requests the navigation bar to draw in a mode that is compatible with light navigation bar backgrounds. SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR */
LightNavigationBar = 16,
/** When using other layout flags, we would like a stable view of the content insets given to fitSystemWindows(Rect). SYSTEM_UI_FLAG_LAYOUT_STABLE */
LayoutStable = 256,
/** View would like its window to be laid out as if it has requested SYSTEM_UI_FLAG_HIDE_NAVIGATION, even if it currently hasn't. SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION */
@@ -38,15 +36,15 @@ export enum AndroidSystemUiFlags {
* In Android 4.4+, however, you can now enter true full screen, fully interactive immersive mode. In this mode, your app will remain in true full screen until you choose otherwise; users can swipe down from the top of the screen to temporarily display the system UI.
* @usage
* ```typescript
* import { AndroidFullScreen } from '@ionic-native/android-full-screen';
* import { AndroidFullScreen } from '@ionic-native/android-full-screen/ngx';
*
* constructor(private androidFullScreen: AndroidFullScreen) { }
*
* ...
*
* this.androidFullScreen.isImmersiveModeSupported()
* .then(() => this.androidFullScreen.immersiveMode())
* .catch((error: any) => console.log(error));
* .then(() => console.log('Immersive mode supported'))
* .catch(err => console.log(err));
*
* ```
*/

View File

@@ -1,5 +1,5 @@
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name Android Permissions
@@ -10,7 +10,7 @@ import { Injectable } from '@angular/core';
*
* @usage
* ```
* import { AndroidPermissions } from '@ionic-native/android-permissions';
* import { AndroidPermissions } from '@ionic-native/android-permissions/ngx';
*
*
* constructor(private androidPermissions: AndroidPermissions) { }
@@ -37,12 +37,12 @@ import { Injectable } from '@angular/core';
})
@Injectable()
export class AndroidPermissions extends IonicNativePlugin {
PERMISSION: any = {
ACCESS_CHECKIN_PROPERTIES: 'android.permission.ACCESS_CHECKIN_PROPERTIES',
ACCESS_COARSE_LOCATION: 'android.permission.ACCESS_COARSE_LOCATION',
ACCESS_FINE_LOCATION: 'android.permission.ACCESS_FINE_LOCATION',
ACCESS_LOCATION_EXTRA_COMMANDS: 'android.permission.ACCESS_LOCATION_EXTRA_COMMANDS',
ACCESS_LOCATION_EXTRA_COMMANDS:
'android.permission.ACCESS_LOCATION_EXTRA_COMMANDS',
ACCESS_MOCK_LOCATION: 'android.permission.ACCESS_MOCK_LOCATION',
ACCESS_NETWORK_STATE: 'android.permission.ACCESS_NETWORK_STATE',
ACCESS_SURFACE_FLINGER: 'android.permission.ACCESS_SURFACE_FLINGER',
@@ -53,12 +53,14 @@ export class AndroidPermissions extends IonicNativePlugin {
BATTERY_STATS: 'android.permission.BATTERY_STATS',
BIND_ACCESSIBILITY_SERVICE: 'android.permission.BIND_ACCESSIBILITY_SERVICE',
BIND_APPWIDGET: 'android.permission.BIND_APPWIDGET',
BIND_CARRIER_MESSAGING_SERVICE: 'android.permission.BIND_CARRIER_MESSAGING_SERVICE',
BIND_CARRIER_MESSAGING_SERVICE:
'android.permission.BIND_CARRIER_MESSAGING_SERVICE',
BIND_DEVICE_ADMIN: 'android.permission.BIND_DEVICE_ADMIN',
BIND_DREAM_SERVICE: 'android.permission.BIND_DREAM_SERVICE',
BIND_INPUT_METHOD: 'android.permission.BIND_INPUT_METHOD',
BIND_NFC_SERVICE: 'android.permission.BIND_NFC_SERVICE',
BIND_NOTIFICATION_LISTENER_SERVICE: 'android.permission.BIND_NOTIFICATION_LISTENER_SERVICE',
BIND_NOTIFICATION_LISTENER_SERVICE:
'android.permission.BIND_NOTIFICATION_LISTENER_SERVICE',
BIND_PRINT_SERVICE: 'android.permission.BIND_PRINT_SERVICE',
BIND_REMOTEVIEWS: 'android.permission.BIND_REMOTEVIEWS',
BIND_TEXT_SERVICE: 'android.permission.BIND_TEXT_SERVICE',
@@ -79,12 +81,15 @@ export class AndroidPermissions extends IonicNativePlugin {
CALL_PRIVILEGED: 'android.permission.CALL_PRIVILEGED',
CAMERA: 'android.permission.CAMERA',
CAPTURE_AUDIO_OUTPUT: 'android.permission.CAPTURE_AUDIO_OUTPUT',
CAPTURE_SECURE_VIDEO_OUTPUT: 'android.permission.CAPTURE_SECURE_VIDEO_OUTPUT',
CAPTURE_SECURE_VIDEO_OUTPUT:
'android.permission.CAPTURE_SECURE_VIDEO_OUTPUT',
CAPTURE_VIDEO_OUTPUT: 'android.permission.CAPTURE_VIDEO_OUTPUT',
CHANGE_COMPONENT_ENABLED_STATE: 'android.permission.CHANGE_COMPONENT_ENABLED_STATE',
CHANGE_COMPONENT_ENABLED_STATE:
'android.permission.CHANGE_COMPONENT_ENABLED_STATE',
CHANGE_CONFIGURATION: 'android.permission.CHANGE_CONFIGURATION',
CHANGE_NETWORK_STATE: 'android.permission.CHANGE_NETWORK_STATE',
CHANGE_WIFI_MULTICAST_STATE: 'android.permission.CHANGE_WIFI_MULTICAST_STATE',
CHANGE_WIFI_MULTICAST_STATE:
'android.permission.CHANGE_WIFI_MULTICAST_STATE',
CHANGE_WIFI_STATE: 'android.permission.CHANGE_WIFI_STATE',
CLEAR_APP_CACHE: 'android.permission.CLEAR_APP_CACHE',
CLEAR_APP_USER_DATA: 'android.permission.CLEAR_APP_USER_DATA',
@@ -130,7 +135,8 @@ export class AndroidPermissions extends IonicNativePlugin {
READ_CONTACTS: 'android.permission.READ_CONTACTS',
READ_EXTERNAL_STORAGE: 'android.permission.READ_EXTERNAL_STORAGE',
READ_FRAME_BUFFER: 'android.permission.READ_FRAME_BUFFER',
READ_HISTORY_BOOKMARKS: 'com.android.browser.permission.READ_HISTORY_BOOKMARKS',
READ_HISTORY_BOOKMARKS:
'com.android.browser.permission.READ_HISTORY_BOOKMARKS',
READ_INPUT_STATE: 'android.permission.READ_INPUT_STATE',
READ_LOGS: 'android.permission.READ_LOGS',
READ_PHONE_STATE: 'android.permission.READ_PHONE_STATE',
@@ -164,7 +170,8 @@ export class AndroidPermissions extends IonicNativePlugin {
SET_TIME_ZONE: 'android.permission.SET_TIME_ZONE',
SET_WALLPAPER: 'android.permission.SET_WALLPAPER',
SET_WALLPAPER_HINTS: 'android.permission.SET_WALLPAPER_HINTS',
SIGNAL_PERSISTENT_PROCESSES: 'android.permission.SIGNAL_PERSISTENT_PROCESSES',
SIGNAL_PERSISTENT_PROCESSES:
'android.permission.SIGNAL_PERSISTENT_PROCESSES',
STATUS_BAR: 'android.permission.STATUS_BAR',
SUBSCRIBED_FEEDS_READ: 'android.permission.SUBSCRIBED_FEEDS_READ',
SUBSCRIBED_FEEDS_WRITE: 'android.permission.SUBSCRIBED_FEEDS_WRITE',
@@ -182,7 +189,8 @@ export class AndroidPermissions extends IonicNativePlugin {
WRITE_CONTACTS: 'android.permission.WRITE_CONTACTS',
WRITE_EXTERNAL_STORAGE: 'android.permission.WRITE_EXTERNAL_STORAGE',
WRITE_GSERVICES: 'android.permission.WRITE_GSERVICES',
WRITE_HISTORY_BOOKMARKS: 'com.android.browser.permission.WRITE_HISTORY_BOOKMARKS',
WRITE_HISTORY_BOOKMARKS:
'com.android.browser.permission.WRITE_HISTORY_BOOKMARKS',
WRITE_PROFILE: 'android.permission.WRITE_PROFILE',
WRITE_SECURE_SETTINGS: 'android.permission.WRITE_SECURE_SETTINGS',
WRITE_SETTINGS: 'android.permission.WRITE_SETTINGS',
@@ -190,32 +198,32 @@ export class AndroidPermissions extends IonicNativePlugin {
WRITE_SOCIAL_STREAM: 'android.permission.WRITE_SOCIAL_STREAM',
WRITE_SYNC_SETTINGS: 'android.permission.WRITE_SYNC_SETTINGS',
WRITE_USER_DICTIONARY: 'android.permission.WRITE_USER_DICTIONARY',
WRITE_VOICEMAIL: 'com.android.voicemail.permission.WRITE_VOICEMAIL',
WRITE_VOICEMAIL: 'com.android.voicemail.permission.WRITE_VOICEMAIL'
};
/**
* Check permission
* @param permission {string} The name of the permission
* @return {Promise<any>} Returns a promise
* @param {string} permission The name of the permission
* @return {Promise<AndroidPermissionResponse>} Returns a promise
*/
@Cordova()
checkPermission(permission: string): Promise<any> {
checkPermission(permission: string): Promise<AndroidPermissionResponse> {
return;
}
/**
* Request permission
* @param permission {string} The name of the permission to request
* @return {Promise<any>}
* @param {string} permission The name of the permission to request
* @return {Promise<AndroidPermissionResponse>}
*/
@Cordova()
requestPermission(permission: string): Promise<any> {
requestPermission(permission: string): Promise<AndroidPermissionResponse> {
return;
}
/**
* Request permissions
* @param permissions {Array<string>} An array with permissions
* @param {string[]} permissions An array with permissions
* @return {Promise<any>} Returns a promise
*/
@Cordova()
@@ -225,12 +233,15 @@ export class AndroidPermissions extends IonicNativePlugin {
/**
* This function still works now, will not support in the future.
* @param permission {string} The name of the permission
* @return {Promise<any>} Returns a promise
* @param {string} permission The name of the permission
* @return {Promise<AndroidPermissionResponse>} Returns a promise
*/
@Cordova()
hasPermission(permission: string): Promise<any> {
hasPermission(permission: string): Promise<AndroidPermissionResponse> {
return;
}
}
export interface AndroidPermissionResponse {
hasPermission: boolean;
}

View File

@@ -0,0 +1,51 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface AnylineOptions {
// Valid License Key
licenseKey: string;
// Scanning options
config: any;
}
/**
* @name Anyline
* @description
* Anyline provides an easy-to-use SDK for applications to enable Optical Character Recognition (OCR) on mobile devices.
*
* @usage
* ```typescript
* import { Anyline } from '@ionic-native/anyline/ngx';
*
*
* constructor(private anyline: Anyline) { }
*
* ...
*
*
* this.anyline.scan(options)
* .then((res: any) => console.log(res))
* .catch((error: any) => console.error(error));
*
* ```
*/
@Plugin({
pluginName: 'Anyline',
plugin: 'io-anyline-cordova',
pluginRef: 'Anyline',
repo: 'https://github.com/Anyline/anyline-ocr-cordova-module',
platforms: ['Android', 'iOS']
})
@Injectable()
export class Anyline extends IonicNativePlugin {
/**
* Scan
* @param options {AnylineOptions} Scanning options
* @return {Promise<any>} Returns a promise that resolves when Code is captured
*/
@Cordova()
scan(options: AnylineOptions): Promise<any> {
return;
}
}

View File

@@ -10,7 +10,7 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
*
* @usage
* ```typescript
* import { AppAvailability } from '@ionic-native/app-availability';
* import { AppAvailability } from '@ionic-native/app-availability/ngx';
* import { Platform } from 'ionic-angular';
*
* constructor(private appAvailability: AppAvailability, private platform: Platform) { }
@@ -27,8 +27,8 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
*
* this.appAvailability.check(app)
* .then(
* (yes: string) => console.log(app + ' is available'),
* (no: string) => console.log(app + ' is NOT available')
* (yes: boolean) => console.log(app + ' is available'),
* (no: boolean) => console.log(app + ' is NOT available')
* );
* ```
*/

View File

@@ -0,0 +1,78 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface StringMap {
[s: string]: string;
}
/**
* @name App Center Analytics
* @description
* App Center Analytics helps you understand user behavior and customer engagement to improve your app.
* The SDK automatically captures session count and device properties like model, OS version, etc.
* You can define your own custom events to measure things that matter to you.
* All the information captured is available in the App Center portal for you to analyze the data.
*
* For more info, please see https://docs.microsoft.com/en-us/appcenter/sdk/analytics/cordova
*
* @usage
* ```typescript
* import { AppCenterAnalytics } from '@ionic-native/app-center-analytics/ngx';
*
*
* constructor(private appCenterAnalytics: AppCenterAnalytics) { }
*
* ...
*
* this.appCenterAnalytics.setEnabled(true).then(() => {
* this.appCenterAnalytics.trackEvent('My Event', { TEST: 'HELLO_WORLD' }).then(() => {
* console.log('Custom event tracked');
* });
* });
*
* ```
* @interfaces
* StringMap
*/
@Plugin({
pluginName: 'AppCenterAnalytics',
plugin: 'cordova-plugin-appcenter-analytics',
pluginRef: 'AppCenter.Analytics',
repo:
'https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-analytics',
platforms: ['Android', 'iOS']
})
@Injectable()
export class AppCenterAnalytics extends IonicNativePlugin {
/**
* Tracks an custom event.
* You can send up to 200 distinct event names. Also, there is a maximum limit of 256 characters per event name
* and 64 characters per event property name and event property value.
* @param {string} eventName Event name
* @param {StringMap} properties Event properties
* @returns {Promise<void>}
*/
@Cordova()
trackEvent(eventName: string, properties: StringMap): Promise<void> {
return;
}
/**
* Check if App Center Analytics is enabled
* @returns {Promise<boolean>}
*/
@Cordova()
isEnabled(): Promise<boolean> {
return;
}
/**
* Enable or disable App Center Analytics at runtime
* @param {boolean} shouldEnable Set value
* @returns {Promise<void>}
*/
@Cordova()
setEnabled(shouldEnable: boolean): Promise<void> {
return;
}
}

View File

@@ -0,0 +1,115 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface AppCenterCrashReport {
id: string;
device: AppCenterCrashReportDevice;
appStartTime: number;
appErrorTime: number;
signal: string;
appProcessIdentifier: number;
}
export interface AppCenterCrashReportDevice {
oem_name: string;
os_name: string;
app_version: string;
time_zone_offset: number;
carrier_name: string;
screen_size: string;
locale: string;
sdk_version: string;
carrier_country: string;
os_build: string;
app_namespace: string;
os_version: string;
sdk_name: string;
model: string;
app_build: string;
}
/**
* @name App Center Crashes
* @description
* App Center Analytics helps you understand user behavior and customer engagement to improve your app.
* The SDK automatically captures session count and device properties like model, OS version, etc.
* You can define your own custom events to measure things that matter to you.
* All the information captured is available in the App Center portal for you to analyze the data.
*
* For more info, please see https://docs.microsoft.com/en-us/appcenter/sdk/crashes/cordova
*
* @usage
* ```typescript
* import { AppCenterCrashes } from '@ionic-native/app-center-crashes/ngx';
*
*
* constructor(private AppCenterCrashes: AppCenterCrashes) { }
*
* ...
*
* this.AppCenterCrashes.setEnabled(true).then(() => {
* this.AppCenterCrashes.lastSessionCrashReport().then(report => {
* console.log('Crash report', report);
* });
* });
*
* ```
* @interfaces
* AppCenterCrashReport
* AppCenterCrashReportDevice
*/
@Plugin({
pluginName: 'AppCenterCrashes',
plugin: 'cordova-plugin-appcenter-crashes',
pluginRef: 'AppCenter.Crashes',
repo:
'https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-crashes',
platforms: ['Android', 'iOS']
})
@Injectable()
export class AppCenterCrashes extends IonicNativePlugin {
/**
* App Center Crashes provides you with an API to generate a test crash for easy testing of the SDK.
* This API can only be used in test/beta apps and won't do anything in production apps.
* @returns void
*/
@Cordova()
generateTestCrash(): void {}
/**
* At any time after starting the SDK, you can check if the app crashed in the previous launch
* @returns {Promise<boolean>}
*/
@Cordova()
hasCrashedInLastSession(): Promise<boolean> {
return;
}
/**
* Details about the last crash
* @returns {Promise<AppCenterCrashReport>}
*/
@Cordova()
lastSessionCrashReport(): Promise<AppCenterCrashReport> {
return;
}
/**
* Check if App Center Crashes is enabled
* @returns {Promise<boolean>}
*/
@Cordova()
isEnabled(): Promise<boolean> {
return;
}
/**
* Enable or disable App Center Crashes at runtime
* @param {boolean} shouldEnable Set value
* @returns {Promise<void>}
*/
@Cordova()
setEnabled(shouldEnable: boolean): Promise<void> {
return;
}
}

View File

@@ -0,0 +1,68 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs';
/**
* @name App Center Push
* @description
*
* For more info, please see https://docs.microsoft.com/en-us/appcenter/sdk/push/cordova
*
* @usage
* ```typescript
* import { AppCenterPush } from '@ionic-native/app-center-push/ngx';
*
*
* constructor(private appCenterPush: AppCenterPush) { }
*
* ...
*
* this.appCenterPush.setEnabled(true).then(() => {
* this.appCenterPush.addEventListener('My Event').subscribe(pushNotification => {
* console.log('Recived push notification', pushNotification);
* });
* });
*
* ```
*/
@Plugin({
pluginName: 'AppCenterPush',
plugin: 'cordova-plugin-appcenter-push',
pluginRef: 'AppCenter.Push',
repo:
'https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-push',
platforms: ['Android', 'iOS']
})
@Injectable()
export class AppCenterPush extends IonicNativePlugin {
/**
* Subscribe to an event
* @param {string} eventName Event name
* @returns {Observable<any>}
*/
@Cordova({
observable: true,
clearFunction: 'removeEventListener'
})
addEventListener(eventName: string): Observable<any> {
return;
}
/**
* Check if App Center Push is enabled
* @returns {Promise<boolean>}
*/
@Cordova()
isEnabled(): Promise<boolean> {
return;
}
/**
* Enable or disable App Center Push at runtime
* @param {boolean} shouldEnable Set value
* @returns {Promise<void>}
*/
@Cordova()
setEnabled(shouldEnable: boolean): Promise<void> {
return;
}
}

View 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;
}
}

View File

@@ -8,8 +8,8 @@ import { Injectable } from '@angular/core';
*
* @usage
* ```typescript
* import { Platfrom } from 'ionic-angular';
* import { AppMinimize } from '@ionic-native/app-minimize';
* import { Platfrom } from '@ionic/angular';
* import { AppMinimize } from '@ionic-native/app-minimize/ngx';
*
*
* constructor(private platform: Platform, private appMinimize: AppMinimize) { }

View File

@@ -1,5 +1,5 @@
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
import { Observable } from 'rxjs';
import { Injectable } from '@angular/core';
/**
@@ -9,7 +9,7 @@ import { Injectable } from '@angular/core';
*
* @usage
* ```typescript
* import { AppPreferences } from '@ionic-native/app-preferences';
* import { AppPreferences } from '@ionic-native/app-preferences/ngx';
*
* constructor(private appPreferences: AppPreferences) { }
*
@@ -25,11 +25,18 @@ import { Injectable } from '@angular/core';
plugin: 'cordova-plugin-app-preferences',
pluginRef: 'plugins.appPreferences',
repo: 'https://github.com/apla/me.apla.cordova.app-preferences',
platforms: ['Android', 'BlackBerry 10', 'Browser', 'iOS', 'macOS', 'Windows 8', 'Windows Phone']
platforms: [
'Android',
'BlackBerry 10',
'Browser',
'iOS',
'macOS',
'Windows 8',
'Windows Phone'
]
})
@Injectable()
export class AppPreferences extends IonicNativePlugin {
/**
* Get a preference value
*
@@ -156,5 +163,4 @@ export class AppPreferences extends IonicNativePlugin {
defaults(): Object {
return;
}
}

View File

@@ -2,7 +2,6 @@ import { Injectable } from '@angular/core';
import { Cordova, CordovaProperty, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface AppRatePreferences {
/**
* Custom BCP 47 language tag
*/
@@ -41,7 +40,7 @@ export interface AppRatePreferences {
/**
* Custom locale object
*/
customLocale?: any;
customLocale?: AppRateCustomLocale;
/**
* Callbacks for events
@@ -52,11 +51,44 @@ export interface AppRatePreferences {
* App Store URLS
*/
storeAppURL?: AppUrls;
}
export interface AppRateCustomLocale {
/** Title */
title?: string;
/** Message */
message?: string;
/** Cancel button label */
cancelButtonLabel?: string;
/** Later button label */
laterButtonLabel?: string;
/** Rate button label */
rateButtonLabel?: string;
/** Yes button label */
yesButtonLabel?: string;
/** No button label */
noButtonLabel?: string;
/** App rate prompt title */
appRatePromptTitle?: string;
/** Feedback prompt title */
feedbackPromptTitle?: string;
/** Feedback prompt message */
appRatePromptMessage?: string;
/** Feedback prompt message */
feedbackPromptMessage?: string;
}
export interface AppRateCallbacks {
/**
* call back function. called when user clicked on rate-dialog buttons
*/
@@ -70,11 +102,9 @@ export interface AppRateCallbacks {
* call back function. called when user clicked on negative feedback
*/
handleNegativeFeedback?: Function;
}
export interface AppUrls {
/**
* application id in AppStore
*/
@@ -99,7 +129,6 @@ export interface AppUrls {
* application URL in WindowsStore
*/
windows8?: string;
}
/**
@@ -111,7 +140,7 @@ export interface AppUrls {
*
* @usage
* ```typescript
* import { AppRate } from '@ionic-native/app-rate';
* import { AppRate } from '@ionic-native/app-rate/ngx';
*
* constructor(private appRate: AppRate) { }
*
@@ -142,6 +171,7 @@ export interface AppUrls {
* AppRatePreferences
* AppUrls
* AppRateCallbacks
* AppRateCustomLocal
*
*/
@Plugin({
@@ -153,7 +183,6 @@ export interface AppUrls {
})
@Injectable()
export class AppRate extends IonicNativePlugin {
/**
* Configure various settings for the Rating View.
* See table below for options
@@ -166,14 +195,11 @@ export class AppRate extends IonicNativePlugin {
* @param {boolean} immediately Show the rating prompt immediately.
*/
@Cordova()
promptForRating(immediately: boolean): void {
}
promptForRating(immediately: boolean): void {}
/**
* Immediately send the user to the app store rating page
*/
@Cordova()
navigateToAppStore(): void {
}
navigateToAppStore(): void {}
}

View File

@@ -1,5 +1,11 @@
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface AppUpdateOptions {
authType: string;
username?: string;
password?: string;
}
/**
* @name App Update
@@ -20,17 +26,19 @@ import { Injectable } from '@angular/core';
* Then use the following code:
*
* ```typescript
* import { AppUpdate } from '@ionic-native/app-update';
* import { AppUpdate } from '@ionic-native/app-update/ngx';
*
* constructor(private appUpdate: AppUpdate) {
*
* const updateUrl = 'http://your-remote-api.com/update.xml';
* this.appUpdate.checkAppUpdate(updateUrl);
* const updateUrl = 'https://your-remote-api.com/update.xml';
* this.appUpdate.checkAppUpdate(updateUrl).then(() => { console.log('Update available') });
*
* }
* ```
*
* The plugin will compare the app version and update it automatically if the API has a newer version to install.
* @interfaces
* AppUpdateOptions
*/
@Plugin({
pluginName: 'AppUpdate',
@@ -43,13 +51,14 @@ import { Injectable } from '@angular/core';
export class AppUpdate extends IonicNativePlugin {
/**
* Check and update
* @param updateUrl {string} update api url
* @param {string} updateUrl update api url
* @param {AppUpdateOptions} [options] options
* @return {Promise<any>} Returns a promise that resolves when something happens
*/
@Cordova({
callbackOrder: 'reverse'
})
checkAppUpdate(updateUrl: string): Promise<any> {
checkAppUpdate(updateUrl: string, options?: AppUpdateOptions): Promise<any> {
return;
}
}

View File

@@ -11,7 +11,7 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
*
* @usage
* ```typescript
* import { AppVersion } from '@ionic-native/app-version';
* import { AppVersion } from '@ionic-native/app-version/ngx';
*
* constructor(private appVersion: AppVersion) { }
*
@@ -36,39 +36,33 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export class AppVersion extends IonicNativePlugin {
/**
* Returns the name of the app
* @returns {Promise<any>}
* Returns the name of the app, e.g.: "My Awesome App"
* @returns {Promise<string>}
*/
@Cordova()
getAppName(): Promise<any> {
return;
}
getAppName(): Promise<string> { return; }
/**
* Returns the package name of the app
* @returns {Promise<any>}
* Returns the package name of the app, e.g.: "com.example.myawesomeapp"
* @returns {Promise<string>}
*/
@Cordova()
getPackageName(): Promise<any> {
return;
}
getPackageName(): Promise<string> { return; }
/**
* Returns the build identifier of the app
* @returns {Promise<any>}
* Returns the build identifier of the app.
* In iOS a string with the build version like "1.6095"
* In Android a number generated from the version string, like 10203 for version "1.2.3"
* @returns {Promise<string | number>}
*/
@Cordova()
getVersionCode(): Promise<any> {
return;
}
getVersionCode(): Promise<string | number> { return; }
/**
* Returns the version of the app
* @returns {Promise<any>}
* Returns the version of the app, e.g.: "1.2.3"
* @returns {Promise<string>}
*/
@Cordova()
getVersionNumber(): Promise<any> {
return;
}
getVersionNumber(): Promise<string> { return; }
}

View File

@@ -1,15 +1,21 @@
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs';
export type IMakePayments =
'This device can make payments and has a supported card'
| 'This device can make payments and has a supported card'
| 'This device cannot make payments.'
| 'This device can make payments but has no supported cards';
export type IShippingType = 'shipping' | 'delivery' | 'store' | 'service';
export type IBillingRequirement = 'none' | 'all' | 'postcode' | 'name' | 'email' | 'phone';
export type IBillingRequirement =
| 'none'
| 'all'
| 'postcode'
| 'name'
| 'email'
| 'phone';
export type ITransactionStatus =
'success'
| 'success'
| 'failure'
| 'invalid-billing-address'
| 'invalid-shipping-address'
@@ -18,7 +24,9 @@ export type ITransactionStatus =
| 'incorrect-pin'
| 'locked-pin';
export type ICompleteTransaction = 'Payment status applied.';
export type IUpdateItemsAndShippingStatus = 'Updated List Info' | 'Did you make a payment request?';
export type IUpdateItemsAndShippingStatus =
| 'Updated List Info'
| 'Did you make a payment request?';
export interface IPaymentResponse {
billingNameFirst?: string;
@@ -57,7 +65,6 @@ export interface IOrderItem {
label: string;
amount: number;
}
export interface IShippingMethod {
identifier: string;
label: string;
@@ -93,7 +100,7 @@ export interface ISelectedShippingContact {
*
* @usage
* ```typescript
* import { ApplePay } from '@ionic-native/apple-pay';
* import { ApplePay } from '@ionic-native/apple-pay/ngx';
*
*
* constructor(private applePay: ApplePay) { }
@@ -144,11 +151,10 @@ export interface ISelectedShippingContact {
plugin: 'cordova-plugin-applepay',
pluginRef: 'ApplePay',
repo: 'https://github.com/samkelleher/cordova-plugin-applepay',
platforms: ['iOS'],
platforms: ['iOS']
})
@Injectable()
export class ApplePay extends IonicNativePlugin {
/**
* Detects if the current device supports Apple Pay and has any capable cards registered.
* @return {Promise<IMakePayments>} Returns a promise
@@ -183,7 +189,9 @@ export class ApplePay extends IonicNativePlugin {
observable: true,
clearFunction: 'stopListeningForShippingContactSelection'
})
startListeningForShippingContactSelection(): Observable<ISelectedShippingContact> {
startListeningForShippingContactSelection(): Observable<
ISelectedShippingContact
> {
return;
}
@@ -205,9 +213,9 @@ export class ApplePay extends IonicNativePlugin {
* any shipping contact selection event or else the user will not be able
* to complete a transaction on the pay sheet. Do not call without
* subscribing to shipping contact selection events first
* @returns {Promise}
*
* @param {Object} including `items` and `shippingMethods` properties.
* @param {IOrderItemsAndShippingMethods} list `items` and `shippingMethods` properties.
* @returns {Promise<IUpdateItemsAndShippingStatus>}
*
* @usage
* this.applePay.startListeningForShippingContactSelection().pluck('shippingAddressState').subscribe(shippingAddressState => {
@@ -237,15 +245,17 @@ export class ApplePay extends IonicNativePlugin {
@Cordova({
otherPromise: true
})
updateItemsAndShippingMethods(list: IOrderItemsAndShippingMethods): Promise<IUpdateItemsAndShippingStatus> {
updateItemsAndShippingMethods(
list: IOrderItemsAndShippingMethods
): Promise<IUpdateItemsAndShippingStatus> {
return;
}
/**
* Request a payment with Apple Pay
* @return {Promise<IPaymentResponse>} Returns a promise that resolves when something happens
*
* @param order {IOrder}
* @param {IOrder} order
* @return {Promise<IPaymentResponse>} Returns a promise that resolves when something happens
*
* @usage
* try {
@@ -320,17 +330,19 @@ export class ApplePay extends IonicNativePlugin {
/**
* Once the makePaymentRequest has been resolved successfully, the device will be waiting for a completion event.
* This means, that the application must proceed with the token authorisation and return a success, failure,
* This means, that the application must proceed with the token authorization and return a success, failure,
* or other validation error. Once this has been passed back, the Apple Pay sheet will be dismissed via an animation.
* @return {Promise<ICompleteTransaction>} Returns a promise that resolves after confirmation of payment authorization completion
*
* @param complete {ITransactionStatus}
* @param {ITransactionStatus} complete
* @return {Promise<ICompleteTransaction>} Returns a promise that resolves after confirmation of payment authorization completion
*
*/
@Cordova({
otherPromise: true
})
completeLastTransaction(complete: ITransactionStatus): Promise<ICompleteTransaction> {
completeLastTransaction(
complete: ITransactionStatus
): Promise<ICompleteTransaction> {
return;
}
}

View File

@@ -0,0 +1,224 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface EncryptedCardData {
activationData: string;
encryptedPassData: string;
wrappedKey: string;
}
export interface SignatureCertificatesData {
certificateSubCA: string;
certificateLeaf: string;
nonce: string;
nonceSignature: string;
}
export interface CardData {
cardholderName: string;
primaryAccountNumberSuffix: string;
localizedDescription?: string;
paymentNetwork?: string;
}
export interface PairedDevicesFlags {
isInWallet: boolean;
isInWatch: boolean;
FPANID: string;
}
export interface WatchExistData {
isWatchPaired: boolean;
}
/**
* @name Apple Wallet
* @description
* A Cordova plugin that enables users from Add Payment Cards to their Apple Wallet.
*
* @usage
* ```typescript
* import { AppleWallet } from '@ionic-native/apple-wallet/ngx';
*
*
* constructor(private appleWallet: AppleWallet) { }
*
*
* ...
*
*
* // Simple call to determine if the current device supports Apple Pay and has a supported card installed.
* this.appleWallet.isAvailable()
* .then((res: boolean) => {
* // Expect res to be boolean
* })
* .catch((err) => {
* // Catch {{err}} here
* });
*
* ...
*
*
* // Simple call to check Card Eligibility
* this.appleWallet.checkCardEligibility(primaryAccountIdentifier: string)
* .then((res: boolean) => {
* // Expect res to be boolean
* })
* .catch((err) => {
* // Catch {{err}} here
* });
*
*
* ...
*
*
* // Simple call to checkCardEligibilityBySuffix
* this.appleWallet.checkCardEligibilityBySuffix(cardSuffix: string)
* .then((res: boolean) => {
* // Expect res to be boolean
* })
* .catch((err) => {
* // Catch {{err}} here
* });
*
*
* ...
*
* // Simple call to check out if there is any paired Watches so that you can toggle visibility of 'Add to Watch' button
* this.appleWallet.checkPairedDevices()
* .then((res: WatchExistData) => {
* // object contains boolean flags showing paired devices
* })
* .catch((err) => {
* // Catch {{err}} here
* });
*
*
* ...
*
*
*
* // Simple call to check paired devices with a card by its suffix
* this.appleWallet.checkPairedDevicesBySuffix(cardSuffix: string)
* .then((res: PairedDevicesFlags) => {
* // object contains boolean values that ensure that card is already exists in wallet or paired-watch
* })
* .catch((err) => {
* // Catch {{err}} here
* });
*
*
* ...
*
*
* // Simple call with the configuration data needed to instantiate a new PKAddPaymentPassViewController object.
* // This method provides the data needed to create a request to add your payment pass (credit/debit card). After a successful callback, pass the certificate chain to your issuer server-side using our callback delegate method `AppleWallet.completeAddPaymentPass`. The issuer server-side should returns an encrypted JSON payload containing the encrypted card data, which is required to be get the final response
*
* this.appleWallet.startAddPaymentPass(data: cardData)
* .then((res: SignatureCertificatesData) => {
* // User proceed and successfully asked to add card to his wallet
* // Use the callback response JSON payload to complete addition process
* })
* .catch((err) => {
* // Catch {{err}} here
* });
*
*
* ...
*
*
* this.appleWallet.completeAddPaymentPass(data: encryptedCardData)
* .then((res: string) => {
* // Expect res to be string either 'success' or 'error'
* })
* .catch((err) => {
* // Catch {{err}} here
* // Error and can not add the card, or something wrong happend
* // PKAddPaymentPassViewController will be dismissed
* });
*
* ```
* @Interfaces
* EncryptedCardData
* SignatureCertificatesData
* CardData
* PairedDevicesFlags
* WatchExistData
*/
@Plugin({
pluginName: 'AppleWallet',
plugin: 'cordova-apple-wallet',
pluginRef: 'AppleWallet',
repo: 'https://github.com/tomavic/cordova-apple-wallet',
platforms: ['iOS']
})
@Injectable()
export class AppleWallet extends IonicNativePlugin {
/**
* Simple call to determine if the current device supports Apple Pay and has a supported card installed.
* @return {Promise<boolean>}
*/
@Cordova()
isAvailable(): Promise<boolean> {
return;
}
/**
* Simple call to check Card Eligibility
* @param {string} primaryAccountIdentifier
* @return {Promise<boolean>}
*/
@Cordova()
checkCardEligibility(primaryAccountIdentifier: string): Promise<boolean> {
return;
}
/**
* Simple call to checkCardEligibilityBySuffix
* @param {string} cardSuffix
* @return {Promise<PairedDevicesFlags>}
*/
@Cordova()
checkCardEligibilityBySuffix(cardSuffix: string): Promise<boolean> {
return;
}
/**
* Simple call to check out if there is any paired Watches so that you can toggle visibility of 'Add to Watch' button
* @return {Promise<WatchExistData>}
*/
@Cordova()
checkPairedDevices(): Promise<WatchExistData> {
return;
}
/**
* Simple call to check paired devices with a card by its suffix
* @param {string} cardSuffix
* @return {Promise<PairedDevicesFlags>}
*/
@Cordova()
checkPairedDevicesBySuffix(cardSuffix: string): Promise<PairedDevicesFlags> {
return;
}
/**
* Simple call with the configuration data needed to instantiate a new PKAddPaymentPassViewController object.
* @param {cardData} data
* @return {Promise<SignatureCertificatesData>}
*/
@Cordova()
startAddPaymentPass(data: CardData): Promise<SignatureCertificatesData> {
return;
}
/**
* Simple completion handler that takes encrypted card data returned from your server side, in order to get the final response from Apple to know if the card is added succesfully or not.
* @param {encryptedCardData} data
* @return {Promise<string>}
*/
@Cordova()
completeAddPaymentPass(data: EncryptedCardData): Promise<string> {
return;
}
}

View File

@@ -1,6 +1,6 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs';
import { Injectable } from '@angular/core';
/**
* @name Appodeal
@@ -9,7 +9,7 @@ import { Injectable } from '@angular/core';
*
* @usage
* ```typescript
* import { Appodeal } from '@ionic-native/appodeal';
* import { Appodeal } from '@ionic-native/appodeal/ngx';
*
* constructor(private appodeal: Appodeal) {
*
@@ -46,8 +46,7 @@ export class Appodeal extends IonicNativePlugin {
* @param {number} adType
*/
@Cordova()
initialize(appKey: string, adType: number): void {
}
initialize(appKey: string, adType: number): void {}
/**
* check if SDK has been initialized
@@ -75,8 +74,7 @@ export class Appodeal extends IonicNativePlugin {
* @returns {Promise<boolean>}
*/
@Cordova()
showWithPlacement(adType: number,
placement: any): Promise<any> {
showWithPlacement(adType: number, placement: any): Promise<any> {
return;
}
@@ -85,15 +83,16 @@ export class Appodeal extends IonicNativePlugin {
* @param {number} adType
*/
@Cordova()
hide(adType: number): void {
}
hide(adType: number): void {}
/**
* confirm use of ads of specified type
* @param {number} adType
* @returns {Promise<any>}
*/
@Cordova()
confirm(adType: number): void {
canShow(adType: number): Promise<any> {
return;
}
/**
@@ -122,79 +121,69 @@ export class Appodeal extends IonicNativePlugin {
* @param autoCache
*/
@Cordova()
setAutoCache(adType: number, autoCache: any): void {
}
setAutoCache(adType: number, autoCache: any): void {}
/**
* forcefully cache an ad by type
* @param {number} adType
*/
@Cordova()
cache(adType: number): void {
}
cache(adType: number): void {}
/**
*
* @param {boolean} set
*/
@Cordova()
setOnLoadedTriggerBoth(set: boolean): void {
}
setTriggerOnLoadedOnPrecache(set: boolean): void {}
/**
* enable or disable Smart Banners
* @param {boolean} enabled
*/
@Cordova()
setSmartBanners(enabled: boolean): void {
}
setSmartBanners(enabled: boolean): void {}
/**
* enable or disable banner backgrounds
* @param {boolean} enabled
*/
@Cordova()
setBannerBackground(enabled: boolean): void {
}
setBannerBackground(enabled: boolean): void {}
/**
* enable or disable banner animations
* @param {boolean} enabled
*/
@Cordova()
setBannerAnimation(enabled: boolean): void {
}
setBannerAnimation(enabled: boolean): void {}
/**
*
* @param value
*/
@Cordova()
set728x90Banners(value: any): void {
}
set728x90Banners(value: any): void {}
/**
* enable or disable logging
* @param {boolean} logging
*/
@Cordova()
setLogging(logging: boolean): void {
}
setLogLevel(logging: boolean): void {}
/**
* enable or disable testing mode
* @param {boolean} testing
*/
@Cordova()
setTesting(testing: boolean): void {
}
setTesting(testing: boolean): void {}
/**
* reset device ID
*/
@Cordova()
resetUUID(): void {
}
resetUUID(): void {}
/**
* get version of Appdeal SDK
@@ -210,8 +199,7 @@ export class Appodeal extends IonicNativePlugin {
* @param {number} adType
*/
@Cordova()
disableNetwork(network?: string, adType?: number): void {
}
disableNetwork(network?: string, adType?: number): void {}
/**
*
@@ -219,62 +207,54 @@ export class Appodeal extends IonicNativePlugin {
* @param {number} adType
*/
@Cordova()
disableNetworkType(network?: string, adType?: number): void {
}
disableNetworkType(network?: string, adType?: number): void {}
/**
* disable Location permissions for Appodeal SDK
*/
@Cordova()
disableLocationPermissionCheck(): void {
}
disableLocationPermissionCheck(): void {}
/**
* disable Storage permissions for Appodeal SDK
*/
@Cordova()
disableWriteExternalStoragePermissionCheck(): void {
}
disableWriteExternalStoragePermissionCheck(): void {}
/**
* enable event listeners
* @param {boolean} enabled
*/
@Cordova()
enableInterstitialCallbacks(enabled: boolean): void {
}
enableInterstitialCallbacks(enabled: boolean): void {}
/**
* enable event listeners
* @param {boolean} enabled
*/
@Cordova()
enableSkippableVideoCallbacks(enabled: boolean): void {
}
enableSkippableVideoCallbacks(enabled: boolean): void {}
/**
* enable event listeners
* @param {boolean} enabled
*/
@Cordova()
enableNonSkippableVideoCallbacks(enabled: boolean): void {
}
enableNonSkippableVideoCallbacks(enabled: boolean): void {}
/**
* enable event listeners
* @param {boolean} enabled
*/
@Cordova()
enableBannerCallbacks(enabled: boolean): void {
}
enableBannerCallbacks(enabled: boolean): void {}
/**
* enable event listeners
* @param {boolean} enabled
*/
@Cordova()
enableRewardedVideoCallbacks(enabled: boolean): void {
}
enableRewardedVideoCallbacks(enabled: boolean): void {}
/**
*
@@ -282,8 +262,7 @@ export class Appodeal extends IonicNativePlugin {
* @param {boolean} value
*/
@Cordova()
setCustomBooleanRule(name: string, value: boolean): void {
}
setCustomBooleanRule(name: string, value: boolean): void {}
/**
*
@@ -291,8 +270,7 @@ export class Appodeal extends IonicNativePlugin {
* @param {number} value
*/
@Cordova()
setCustomIntegerRule(name: string, value: number): void {
}
setCustomIntegerRule(name: string, value: number): void {}
/**
* set rule with float value
@@ -300,8 +278,7 @@ export class Appodeal extends IonicNativePlugin {
* @param {number} value
*/
@Cordova()
setCustomDoubleRule(name: string, value: number): void {
}
setCustomDoubleRule(name: string, value: number): void {}
/**
* set rule with string value
@@ -309,88 +286,77 @@ export class Appodeal extends IonicNativePlugin {
* @param {string} value
*/
@Cordova()
setCustomStringRule(name: string, value: string): void {
}
setCustomStringRule(name: string, value: string): void {}
/**
* set ID preference in Appodeal for current user
* @param id
*/
@Cordova()
setUserId(id: any): void {
}
setUserId(id: any): void {}
/**
* set Email preference in Appodeal for current user
* @param email
*/
@Cordova()
setEmail(email: any): void {
}
setEmail(email: any): void {}
/**
* set Birthday preference in Appodeal for current user
* @param birthday
*/
@Cordova()
setBirthday(birthday: any): void {
}
setBirthday(birthday: any): void {}
/**
* et Age preference in Appodeal for current user
* @param age
*/
@Cordova()
setAge(age: any): void {
}
setAge(age: any): void {}
/**
* set Gender preference in Appodeal for current user
* @param gender
*/
@Cordova()
setGender(gender: any): void {
}
setGender(gender: any): void {}
/**
* set Occupation preference in Appodeal for current user
* @param occupation
*/
@Cordova()
setOccupation(occupation: any): void {
}
setOccupation(occupation: any): void {}
/**
* set Relation preference in Appodeal for current user
* @param relation
*/
@Cordova()
setRelation(relation: any): void {
}
setRelation(relation: any): void {}
/**
* set Smoking preference in Appodeal for current user
* @param smoking
*/
@Cordova()
setSmoking(smoking: any): void {
}
setSmoking(smoking: any): void {}
/**
* set Alcohol preference in Appodeal for current user
* @param alcohol
*/
@Cordova()
setAlcohol(alcohol: any): void {
}
setAlcohol(alcohol: any): void {}
/**
* set Interests preference in Appodeal for current user
* @param interests
*/
@Cordova()
setInterests(interests: any): void {
}
setInterests(interests: any): void {}
@Cordova({
eventObservable: true,
@@ -607,4 +573,34 @@ export class Appodeal extends IonicNativePlugin {
onBannerShown(): Observable<any> {
return;
}
@Cordova()
getRewardParametersForPlacement(placement: string): Promise<any> {
return;
}
@Cordova()
getRewardParameters(): Promise<any> {
return;
}
@Cordova()
canShowWithPlacement(adType: string, placement: string): Promise<any> {
return;
}
@Cordova({
platforms: ['Android']
})
showTestScreen(value: any): void {}
@Cordova()
muteVideosIfCallsMuted(value: any): Promise<any> {
return;
}
@Cordova()
setChildDirectedTreatment(value: boolean): Promise<any> {
return;
}
}

View File

@@ -0,0 +1,188 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface AppsflyerOptions {
/**
* Appsflyer Dev key
*/
devKey: string;
/**
* Apple Application ID(for iOS only)
*/
appId?: string;
/**
* debug mode
*/
isDebug?: boolean;
/**
* optout of collection of IMEI
*/
collectIMEI?: boolean;
/**
* optout of collection of collectAndroidID
*/
collectAndroidID?: boolean;
/**
* default false Accessing AppsFlyer Attribution / Conversion Data from the SDK (Deferred Deeplinking). Read more: Android, iOS. AppsFlyer plugin will return attribution data in onSuccess callback.
*/
onInstallConversionDataListener?: boolean;
}
export interface AppsflyerEvent {
[x: string]: any;
}
export interface AppsflyerInviteOptions {
channel?: string;
campaign?: string;
userParams?: {
[x: string]: any;
};
}
/**
* @name Appsflyer
* @description
* Appsflyer Cordova SDK support for Attribution
*
* @usage
* ```typescript
* import { Appsflyer } from '@ionic-native/appsflyer/ngx';
*
*
* constructor(private appsflyer: Appsflyer) { }
*
* ...
*
*
* this.appsflyer.initSdk(options);
*
* ```
*
* @interfaces
* AppsflyerOptions
* AppsflyerEvent
* AppsflyerInviteOptions
*/
@Plugin({
pluginName: 'Appsflyer',
plugin: 'cordova-plugin-appsflyer-sdk',
pluginRef: 'window.plugins.appsFlyer',
repo: 'https://github.com/AppsFlyerSDK/cordova-plugin-appsflyer-sdk',
platforms: ['iOS', 'Android'],
install: 'Add to config.xml like stated on github and then start'
})
@Injectable()
export class Appsflyer extends IonicNativePlugin {
/**
* initialize the SDK
* @param {AppsflyerOptions} options
* @returns {Promise<any>}
*/
@Cordova()
initSdk(options: AppsflyerOptions): Promise<any> {
return;
}
/**
* These in-app events help you track how loyal users discover your app, and attribute them to specific campaigns/media-sources. Please take the time define the event/s you want to measure to allow you to track ROI (Return on Investment) and LTV (Lifetime Value).
* @param {string} eventName custom event name, is presented in your dashboard
* @param {AppsflyerEvent} eventValues event details
*/
@Cordova({ sync: true })
trackEvent(eventName: string, eventValues: AppsflyerEvent): void {}
/**
* Setting your own Custom ID enables you to cross-reference your own unique ID with AppsFlyers user ID and the other devices IDs. This ID is available in AppsFlyer CSV reports along with postbacks APIs for cross-referencing with you internal IDs.
* @param {string} customerUserId user id
*/
@Cordova({ sync: true })
setAppUserId(customerUserId: string): void {}
/**
* Setting your own Custom ID enables you to cross-reference your own unique ID with AppsFlyers user ID and the other devices IDs. This ID is available in AppsFlyer CSV reports along with postbacks APIs for cross-referencing with you internal IDs.
* @param {boolean} customerUserId In some extreme cases you might want to shut down all SDK tracking due to legal and privacy compliance. This can be achieved with the isStopTracking API. Once this API is invoked, our SDK will no longer communicate with our servers and stop functioning.
*/
@Cordova({ sync: true })
stopTracking(isStopTracking: boolean): void {}
/**
* Get the data from Attribution
* @returns {Promise<any>}
*/
@Cordova()
registerOnAppOpenAttribution(): Promise<any> {
return;
}
/**
* Enables app uninstall tracking
* @param {string} token GCM/FCM ProjectNumber
* @returns {Promise<any>}
*/
@Cordova()
enableUninstallTracking(token: string): Promise<any> {
return;
}
/**
* Allows to pass GCM/FCM Tokens that where collected by third party plugins to the AppsFlyer server. Can be used for Uninstall Tracking.
* @param {string} token GCM/FCM ProjectNumber
*/
@Cordova({ sync: true })
updateServerUninstallToken(token: string): void {}
/**
* Get AppsFlyers proprietary Device ID. The AppsFlyer Device ID is the main ID used by AppsFlyer in Reports and APIs.
*/
@Cordova()
getAppsFlyerUID(): Promise<any> {
return;
}
/**
* End User Opt-Out (Optional) AppsFlyer provides you a method to optout specific users from AppsFlyer analytics. This method complies with the latest privacy requirements and complies with Facebook data and privacy policies. Default is FALSE, meaning tracking is enabled by default.
* @param {boolean} disable Set to true to opt-out user from tracking
*/
@Cordova({ sync: true })
deviceTrackingDisabled(disable: boolean): void {}
/**
* Set AppsFlyers OneLink ID. Setting a valid OneLink ID will result in shortened User Invite links, when one is generated. The OneLink ID can be obtained on the AppsFlyer Dashboard.
* @param {string} oneLinkId OneLink ID
*/
@Cordova({ sync: true })
setAppInviteOneLinkID(oneLinkId: string): void {}
/**
* Allowing your existing users to invite their friends and contacts as new users to your app can be a key growth factor for your app. AppsFlyer allows you to track and attribute new installs originating from user invites within your app.
* @param {AppsflyerInviteOptions} options Parameters for Invite link
* @returns {Promise<any>}
*/
@Cordova()
generateInviteLink(options: AppsflyerInviteOptions): Promise<any> {
return;
}
/**
* Use this call to track an impression use the following API call. Make sure to use the promoted App ID as it appears within the AppsFlyer dashboard.
* @param {string} appId Promoted Application ID
* @param {string} campaign Promoted Campaign
*/
@Cordova({ sync: true })
trackCrossPromotionImpression(appId: string, campaign: string): void {}
/**
* Use this call to track the click and launch the app store's app page (via Browser)
* @param {string} appId Promoted Application ID
* @param {string} campaign Promoted Campaign
* @param {Object} options Additional Parameters to track
*/
@Cordova({ sync: true })
trackAndOpenStore(appId: string, campaign: string, options: Object): void {}
}

View File

@@ -0,0 +1,141 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name Audio Management
* @description
* A Cordova plugin to manage volume of audio streams for: ring, music, notification and system. Possible
* ringer values for those streams are: silent, vibrate and normal.
*
* @usage
* ```typescript
* import { AudioManagement } from '@ionic-native/audio-management/ngx';
*
*
* constructor(public audioman: AudioManagement) { }
*
* ...
*
* setAudioMode() {
* this.audioman.setAudioMode(AudioManagement.AudioMode.NORMAL)
* .then(() => {
* console.log('Device audio mode is now NORMAL');
* })
* .catch((reason) => {
* console.log(reason);
* });
* }
*
* getAudioMode() {
* this.audioman.getAudioMode()
* .then((value: AudioManagement.AudioModeReturn) => {
* console.log('Device audio mode is ' + value.label + ' (' + value.audioMode + ')');
* })
* .catch((reason) => {
* console.log(reason);
* });
* }
*
* ```
* @interfaces
* AudioModeReturn
*/
@Plugin({
pluginName: 'AudioManagement',
plugin: 'clovelced-plugin-audiomanagement',
pluginRef: 'AudioManagement',
repo: 'https://github.com/clovelCed/cordova-plugin-audiomanagement',
platforms: ['Android']
})
@Injectable()
export class AudioManagement extends IonicNativePlugin {
/**
* Sets the `AudioManagement.AudioMode` for the device.
*
* @param {AudioManagement.AudioMode} mode the device can be set to: Silent, Normal, Vibrate
* @returns {Promise<void>}
*/
@Cordova({
successIndex: 1,
errorIndex: 2
})
setAudioMode(mode: AudioManagement.AudioMode): Promise<void> {
return;
}
/**
* Gets the current `AudioManagement.AudioMode` of the device. Thenable returns an object with
* `label` and `audioMode` values.
*
* @returns {Promise<AudioManagement.AudioModeReturn>}
*/
@Cordova()
getAudioMode(): Promise<AudioManagement.AudioModeReturn> {
return;
}
/**
* Sets the specified `AudioManagement.VolumeType` for the device with the value from `volume`.
*
* @param {AudioManagement.VolumeType} type the `AudioManagement.VolumeType` to set
* @param {number} volume the volume value
* @returns {Promise<void>}
*/
@Cordova({
successIndex: 2,
errorIndex: 3
})
setVolume(type: AudioManagement.VolumeType, volume: number): Promise<void> {
return;
}
/**
* Gets the specified `AudioManagement.VolumeType`'s `volume`. Thenable returns an object with
* a numeric property for volume, `volume`.
*
* @param {AudioManagement.VolumeType} type the `AudioManagement.VolumeType` to get
* @returns {Promise<{volume: number}>}
*/
@Cordova({
successIndex: 1,
errorIndex: 2
})
getVolume(type: AudioManagement.VolumeType): Promise<{ volume: number }> {
return;
}
/**
* Gets the specified `AudioManagement.VolumeType`'s maximum `volume`. Thenable returns an
* object with a numeric property, `maxVolume`.
*
* @param {AudioManagement.VolumeType} type the `AudioManagement.VolumeType` to get
* @returns {Promise<{maxVolume: number}>}
*/
@Cordova({
successIndex: 1,
errorIndex: 2
})
getMaxVolume(type: AudioManagement.VolumeType): Promise<{ maxVolume: number }> {
return;
}
}
export namespace AudioManagement {
export enum AudioMode {
SILENT = 0,
VIBRATE,
NORMAL
}
export enum VolumeType {
RING = 0,
MUSIC,
NOTIFICATION,
SYSTEM
}
export interface AudioModeReturn {
audioMode: AudioManagement.AudioMode;
label: string;
}
}

View File

@@ -1,15 +1,15 @@
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name Autostart
* @description
* This plugin will start automatically your Android app after the every boot or the auto-update of your application.
* This plugin automatically starts your Android app after every boot or auto-update.
* You can enable or disable the autostart function in your app.
*
* @usage
* ```typescript
* import { Autostart } from '@ionic-native/autostart';
* import { Autostart } from '@ionic-native/autostart/ngx';
*
*
* constructor(private autostart: Autostart) { }

View File

@@ -20,7 +20,7 @@ export interface BackgroundFetchConfig {
* @usage
*
* ```typescript
* import { BackgroundFetch, BackgroundFetchConfig } from '@ionic-native/background-fetch';
* import { BackgroundFetch, BackgroundFetchConfig } from '@ionic-native/background-fetch/ngx';
*
*
* constructor(private backgroundFetch: BackgroundFetch) {

View File

@@ -1,256 +1,491 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
import { Observable } from 'rxjs';
export enum BackgroundGeolocationLocationCode {
PERMISSION_DENIED = 1,
LOCATION_UNAVAILABLE = 2,
TIMEOUT = 3
}
export enum BackgroundGeolocationNativeProvider {
gps = 'gps',
network = 'network',
passive = 'passive',
fused = 'fused'
}
export enum BackgroundGeolocationLocationProvider {
DISTANCE_FILTER_PROVIDER = 0,
ACTIVITY_PROVIDER = 1,
RAW_PROVIDER = 2
}
export enum BackgroundGeolocationEvents {
http_authorization = 'http_authorization', // Triggered when server responded with "<code>401 Unauthorized</code>" to post/sync request.
abort_requested = 'abort_requested', // Triggered when server responded with "<code>285 Updates Not Required</code>" to post/sync request.
background = 'background', // Triggered when app entered background state and (not visible to the user).
foreground = 'foreground', // Triggered when app entered foreground state and (visible to the user).
authorization = 'authorization', // Triggered when user changes authorization/permissions for the app or toggles location services.
error = 'error', // Register error listener.
stop = 'stop', // Triggered when background service has been stopped succesfully.
start = 'start', // Event is triggered when background service has been started succesfully.
activity = 'activity', // Register activity monitoring listener.
stationary = 'stationary', // Register stationary location event listener.
location = 'location' // Register location event listener.
}
export enum BackgroundGeolocationAuthorizationStatus {
NOT_AUTHORIZED = 0,
AUTHORIZED = 1,
AUTHORIZED_FOREGROUND = 2
}
export enum BackgroundGeolocationLogLevel {
TRACE = 'TRACE',
DEBUG = 'DEBUG',
INFO = 'INFO',
WARN = 'WARN',
ERROR = 'ERROR'
}
export interface BackgroundGeolocationLogEntry {
/** ID of log entry as stored in db. */
id: number;
/** Timestamp in milliseconds since beginning of UNIX epoch. */
timestamp: number;
/** Log level */
level: BackgroundGeolocationLogLevel;
/** Log message */
message: string;
/** Recorded stacktrace. (Android only, on iOS part of message) */
stackTrace: string;
}
export interface ServiceStatus {
/** TRUE if service is running. */
isRunning: boolean;
/** TRUE if location services are enabled */
locationServicesEnabled: boolean;
/**
* Authorization status.
*
* Posible values:
* NOT_AUTHORIZED, AUTHORIZED, AUTHORIZED_FOREGROUND
*
* @example
* if (authorization == BackgroundGeolocation.NOT_AUTHORIZED) {...}
*/
authorization: BackgroundGeolocationAuthorizationStatus;
}
export interface BackgroundGeolocation {
code: BackgroundGeolocationLocationCode;
message: string;
}
export interface BackgroundGeolocationCurrentPositionConfig {
timeout: number;
maximumAge: number;
enableHighAccuracy: boolean;
}
export interface BackgroundGeolocationResponse {
/** ID of location as stored in DB (or null) */
id: number;
/**
* ID of location as stored in DB (or null)
* Native provider reponsible for location.
*
* Possible values:
* "gps", "network", "passive" or "fused"
*/
locationId: number;
provider: BackgroundGeolocationNativeProvider;
/**
* Service provider
*/
serviceProvider: string;
/** Configured location provider. */
locationProvider: BackgroundGeolocationLocationProvider;
/**
* true if location recorded as part of debug
*/
debug: boolean;
/**
* UTC time of this fix, in milliseconds since January 1, 1970.
*/
/** UTC time of this fix, in milliseconds since January 1, 1970. */
time: number;
/**
* latitude, in degrees.
*/
/** Latitude, in degrees. */
latitude: number;
/**
* longitude, in degrees.
*/
/** Longitude, in degrees. */
longitude: number;
/**
* estimated accuracy of this location, in meters.
*/
/** Estimated accuracy of this location, in meters. */
accuracy: number;
/**
* speed if it is available, in meters/second over ground.
* Speed if it is available, in meters/second over ground.
*
* Note: Not all providers are capable of providing speed.
* Typically network providers are not able to do so.
*/
speed: number;
/**
* altitude if available, in meters above the WGS 84 reference ellipsoid.
*/
/** Altitude if available, in meters above the WGS 84 reference ellipsoid. */
altitude: number;
/**
* accuracy of the altitude if available.
*/
altitudeAccuracy: number;
/**
* bearing, in degrees.
*/
/** Bearing, in degrees. */
bearing: number;
/**
* A Coordinates object defining the current location
* True if location was recorded by mock provider. (ANDROID ONLY)
*
* Note: this property is not enabled by default!
* You can enable it "postTemplate" configure option.
*/
coords: Coordinates;
isFromMockProvider?: boolean;
/**
* A timestamp representing the time at which the location was retrieved.
* True if device has mock locations enabled. (ANDROID ONLY)
*
* Note: this property is not enabled by default!
* You can enable it "postTemplate" configure option.
*/
timestamp: number;
mockLocationsEnabled?: boolean;
}
export interface BackgroundGeolocationConfig {
/**
* Desired accuracy in meters. Possible values [0, 10, 100, 1000]. The lower
* the number, the more power devoted to GeoLocation resulting in higher
* accuracy readings. 1000 results in lowest power drain and least accurate
* readings. @see Apple docs (https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/index.html#//apple_ref/occ/instp/CLLocationManager/desiredAccuracy)
*/
desiredAccuracy: number;
/**
* Stationary radius in meters. When stopped, the minimum distance the device
* must move beyond the stationary location for aggressive background-tracking
* to engage.
*/
stationaryRadius: number;
/**
* When enabled, the plugin will emit sounds for life-cycle events of
* background-geolocation! See debugging sounds table.
*/
debug?: boolean;
/**
* The minimum distance (measured in meters) a device must move horizontally
* before an update event is generated. @see Apple docs. (https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html#//apple_ref/occ/instp/CLLocationManager/distanceFilter)
*/
distanceFilter: number;
/**
* IOS, ANDROID ONLY
* Enable this in order to force a stop() when the application terminated
* (e.g. on iOS, double-tap home button, swipe away the app).o
* Set location provider
*
* Defaults to true
*/
stopOnTerminate?: boolean;
/**
* ANDROID ONLY
* Start background service on device boot.
* Platform: all
* Available providers:
* DISTANCE_FILTER_PROVIDER,
* ACTIVITY_PROVIDER
* RAW_PROVIDER
*
* Defaults to false
*/
startOnBoot?: boolean;
/**
* ANDROID ONLY
* If false location service will not be started in foreground and no notification will be shown.
*
* Defaults to true
*/
startForeground?: boolean;
/**
* ANDROID ONLY
* When using BackgroundGeolocation.LocationProvider.ANDROID_DISTANCE_FILTER_PROVIDER:
* The minimum time interval between location updates in milliseconds.
* @see Android docs (http://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates(long,%20float,%20android.location.Criteria,%20android.app.PendingIntent))
* and the MS doc (http://msdn.microsoft.com/en-us/library/windows/apps/windows.devices.geolocation.geolocator.reportinterval)
* for more information
* When using BackgroundGeolocation.LocationProvider.ANDROID_ACTIVITY_PROVIDER:
* Rate in milliseconds at which your app prefers to receive location updates.
* @see Android docs (https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html#getInterval())
*/
interval?: number;
/**
* ANDROID ONLY
* Custom notification title in the drawer.
*/
notificationTitle?: string;
/**
* ANDROID ONLY
* Custom notification text in the drawer.
*/
notificationText?: string;
/**
* ANDROID ONLY
* The accent color to use for notification. Eg. #4CAF50.
*/
notificationIconColor?: string;
/**
* ANDROID ONLY
* The filename of a custom notification icon. See android quirks.
* NOTE: Only available for API Level >=21.
*/
notificationIconLarge?: string;
/**
* ANDROID ONLY
* The filename of a custom notification icon. See android quirks.
* NOTE: Only available for API Level >=21.
*/
notificationIconSmall?: string;
/**
* ANDROID ONLY
* Set location service provider @see wiki (https://github.com/mauron85/cordova-plugin-background-geolocation/wiki/Android-providers)
* @default DISTANCE_FILTER_PROVIDER
* @example
* { locationProvider: LocationProvider.RAW_PROVIDER }
*/
locationProvider?: number;
/**
* IOS ONLY
* [AutomotiveNavigation, OtherNavigation, Fitness, Other] Presumably,
* this affects iOS GPS algorithm. @see Apple docs for more information
* (https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html#//apple_ref/occ/instp/CLLocationManager/activityType)
*/
activityType?: string;
/**
* IOS ONLY
* Pauses location updates when app is paused
* Desired accuracy in meters.
*
* Defaults to true
* Platform: all
* Provider: all
* Possible values:
* HIGH_ACCURACY,
* MEDIUM_ACCURACY,
* LOW_ACCURACY,
* PASSIVE_ACCURACY
* Note: Accuracy has direct effect on power drain. Lower accuracy = lower power drain.
*
* @default MEDIUM_ACCURACY
* @example
* { desiredAccuracy: BackgroundGeolocationAccuracy.LOW }
*/
pauseLocationUpdates?: boolean;
/**
* Server url where to send HTTP POST with recorded locations
* @see https://github.com/mauron85/cordova-plugin-background-geolocation#http-locations-posting
*/
url?: string;
/**
* Server url where to send fail to post locations
* @see https://github.com/mauron85/cordova-plugin-background-geolocation#http-locations-posting
*/
syncUrl?: string;
desiredAccuracy?: number;
/**
* Specifies how many previously failed locations will be sent to server at once
* Stationary radius in meters.
*
* Defaults to 100
* When stopped, the minimum distance the device must move beyond the stationary location for aggressive background-tracking to engage.
* Platform: all
* Provider: DISTANCE_FILTER
*
* @default 50
*/
syncThreshold?: number;
/**
* Optional HTTP headers sent along in HTTP request
*/
httpHeaders?: any;
stationaryRadius?: number;
/**
* IOS ONLY
* Switch to less accurate significant changes and region monitory when in background (default)
* When enabled, the plugin will emit sounds for life-cycle events of background-geolocation! See debugging sounds table.
*
* Defaults to 100
*/
saveBatteryOnBackground?: boolean;
/**
* Limit maximum number of locations stored into db
* Platform: all
* Provider: all
*
* Defaults to 10000
* @default false
*/
maxLocations?: number;
debug?: boolean;
/**
* ANDROID ONLY with BackgroundGeolocation.LocationProvider.ANDROID_ACTIVITY_PROVIDER
* The minimum distance (measured in meters) a device must move horizontally before an update event is generated.
*
* Platform: all
* Provider: DISTANCE_FILTER, RAW
*
* @default 500
* @see {@link https://apple.co/2oHo2CV|Apple docs}
*/
distanceFilter?: number;
/**
* Enable this in order to force a stop() when the application terminated.
* E.g. on iOS, double-tap home button, swipe away the app.
*
* Platform: all
* Provider: all
*
* @default true
*/
stopOnTerminate?: boolean;
/**
* Start background service on device boot.
*
* Platform: Android
* Provider: all
*
* @default false
*/
startOnBoot?: boolean;
/**
* The minimum time interval between location updates in milliseconds.
*
* Platform: Android
* Provider: all
*
* @default 60000
* @see {@link https://bit.ly/1x00RUu|Android docs}
*/
interval?: number;
/**
* Fastest rate in milliseconds at which your app can handle location updates.
* @see Android docs (https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html#getFastestInterval())
*
* Platform: Android
* Provider: ACTIVITY
*
* @default 120000
* @see {@link https://bit.ly/1x00RUu|Android docs}
*/
fastestInterval?: number;
/**
* ANDROID ONLY with BackgroundGeolocation.LocationProvider.ANDROID_ACTIVITY_PROVIDER
* Rate in milliseconds at which activity recognition occurs.
* Larger values will result in fewer activity detections while improving battery life.
*
* Rate in milliseconds at which activity recognition occurs. Larger values will result in fewer activity detections while improving battery life.
* Platform: Android
* Provider: ACTIVITY
*
* @default 10000
*/
activitiesInterval?: number;
/**
* ANDROID ONLY with BackgroundGeolocation.LocationProvider.ANDROID_ACTIVITY_PROVIDER
*
* stop() is forced, when the STILL activity is detected (default is true)
* @deprecated Stop location updates, when the STILL activity is detected.
*/
stopOnStillActivity?: boolean;
/**
* Enable/disable local notifications when tracking and syncing locations.
*
* Platform: Android
* Provider: all
*
* @default true
*/
notificationsEnabled?: boolean;
/**
* Allow location sync service to run in foreground state.
* Foreground state also requires a notification to be presented to the user.
*
* Platform: Android
* Provider: all
*
* @default false
*/
startForeground?: boolean;
/**
* Custom notification title in the drawer.
*
* Platform: Android
* Provider: all
* @default "Background tracking"
*/
notificationTitle?: string;
/**
* Custom notification text in the drawer.
*
* Platform: Android
* Provider: all
*
* @default "ENABLED"
*/
notificationText?: string;
/**
* The accent color (hex triplet) to use for notification.
* Eg. <code>#4CAF50</code>.
*
* Platform: Android
* Provider: all
*/
notificationIconColor?: string;
/**
* The filename of a custom notification icon.
*
* Platform: Android
* Provider: all
*/
notificationIconLarge?: string;
/**
* The filename of a custom notification icon.
*
* Platform: Android
* Provider: all
*/
notificationIconSmall?: string;
/**
* Activity type.
* Presumably, this affects iOS GPS algorithm.
*
* Possible values:
* "AutomotiveNavigation", "OtherNavigation", "Fitness", "Other"
*
* Platform: iOS
* Provider: all
*
* @default "OtherNavigation"
* @see {@link https://apple.co/2oHofpH|Apple docs}
*/
activityType?: string;
/**
* Pauses location updates when app is paused.
*
* Platform: iOS
* Provider: all
*
* @default false
* @see {@link https://apple.co/2CbjEW2|Apple docs}
*/
pauseLocationUpdates?: boolean;
/**
* Switch to less accurate significant changes and region monitory when in background.
*
* Platform: iOS
* Provider: all
*
* @default false
*/
saveBatteryOnBackground?: boolean;
/**
* Server url where to send HTTP POST with recorded locations
*
* Platform: all
* Provider: all
*/
url?: string;
/**
* Server url where to send fail to post locations
*
* Platform: all
* Provider: all
*/
syncUrl?: string;
/**
* Specifies how many previously failed locations will be sent to server at once.
*
* Platform: all
* Provider: all
*
* @default 100
*/
syncThreshold?: string;
/**
* Optional HTTP headers sent along in HTTP request.
*
* Platform: all
* Provider: all
*/
httpHeaders?: any;
/**
* Limit maximum number of locations stored into db.
*
* Platform: all
* Provider: all
*
* @default 10000
*/
maxLocations?: number;
/**
* Customization post template.
*
* Platform: all
* Provider: all
*/
postTemplate?: any;
}
/**
* Set location service provider @see https://github.com/mauron85/cordova-plugin-background-geolocation/wiki/Android-providers
*
* Possible values:
* ANDROID_DISTANCE_FILTER_PROVIDER: 0,
* ANDROID_ACTIVITY_PROVIDER: 1
*
* @enum {number}
*/
export declare enum BackgroundGeolocationProvider {
ANDROID_DISTANCE_FILTER_PROVIDER = 0,
ANDROID_ACTIVITY_PROVIDER = 1
}
/**
* Desired accuracy in meters. Possible values [0, 10, 100, 1000].
* The lower the number, the more power devoted to GeoLocation resulting in higher accuracy readings.
* 1000 results in lowest power drain and least accurate readings.
*
* Possible values:
* HIGH: 0
* MEDIUM: 10
* LOW: 100
* PASSIVE: 1000
*
* enum {number}
*/
export declare enum BackgroundGeolocationAccuracy {
HIGH = 0,
MEDIUM = 10,
LOW = 100,
PASSIVE = 1000
}
/**
* Used in the switchMode function
*
* Possible values:
* BACKGROUND: 0
* FOREGROUND: 1
*
* @enum {number}
*/
export declare enum BackgroundGeolocationMode {
BACKGROUND = 0,
FOREGROUND = 1
}
export declare enum BackgroundGeolocationIOSActivity {
AutomotiveNavigation = 'AutomotiveNavigation',
OtherNavigation = 'OtherNavigation',
Fitness = 'Fitness',
Other = 'Other'
}
/**
@@ -264,7 +499,7 @@ export interface BackgroundGeolocationConfig {
* BackgroundGeolocation must be called within app.ts and or before Geolocation. Otherwise the platform will not ask you for background tracking permission.
*
* ```typescript
* import { BackgroundGeolocation, BackgroundGeolocationConfig, BackgroundGeolocationResponse } from '@ionic-native/background-geolocation';
* import { BackgroundGeolocation, BackgroundGeolocationConfig, BackgroundGeolocationEvents, BackgroundGeolocationResponse } from '@ionic-native/background-geolocation';
*
* constructor(private backgroundGeolocation: BackgroundGeolocation) { }
*
@@ -276,17 +511,19 @@ export interface BackgroundGeolocationConfig {
* distanceFilter: 30,
* debug: true, // enable this hear sounds for background-geolocation life-cycle.
* stopOnTerminate: false, // enable this to clear background location settings when the app terminates
* }
* };
*
* this.backgroundGeolocation.configure(config)
* .subscribe((location: BackgroundGeolocationResponse) => {
* .then(() => {
*
* console.log(location);
* this.backgroundGeolocation.on(BackgroundGeolocationEvents.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
* });
*
* });
*
@@ -303,73 +540,21 @@ export interface BackgroundGeolocationConfig {
*/
@Plugin({
pluginName: 'BackgroundGeolocation',
plugin: 'cordova-plugin-mauron85-background-geolocation',
pluginRef: 'backgroundGeolocation',
plugin: '@mauron85/cordova-plugin-background-geolocation',
pluginRef: 'BackgroundGeolocation',
repo: 'https://github.com/mauron85/cordova-plugin-background-geolocation',
platforms: ['Android', 'iOS']
})
@Injectable()
export class BackgroundGeolocation extends IonicNativePlugin {
/**
* Set location service provider @see https://github.com/mauron85/cordova-plugin-background-geolocation/wiki/Android-providers
*
* Possible values:
* ANDROID_DISTANCE_FILTER_PROVIDER: 0,
* ANDROID_ACTIVITY_PROVIDER: 1
*
* @enum {number}
*/
LocationProvider: any = {
ANDROID_DISTANCE_FILTER_PROVIDER: 0,
ANDROID_ACTIVITY_PROVIDER: 1
};
/**
* Desired accuracy in meters. Possible values [0, 10, 100, 1000].
* The lower the number, the more power devoted to GeoLocation resulting in higher accuracy readings.
* 1000 results in lowest power drain and least accurate readings.
*
* Possible values:
* HIGH: 0
* MEDIUM: 10
* LOW: 100
* PASSIVE: 1000
*
* enum {number}
*/
Accuracy: any = {
HIGH: 0,
MEDIUM: 10,
LOW: 100,
PASSIVE: 1000
};
/**
* Used in the switchMode function
*
* Possible values:
* BACKGROUND: 0
* FOREGROUND: 1
*
* @enum {number}
*/
Mode: any = {
BACKGROUND: 0,
FOREGROUND: 1
};
/**
* Configure the plugin.
*
* @param options {BackgroundGeolocationConfig} options An object of type Config
* @return {Observable<BackgroundGeolocationResponse>}
* @return {Promise<any>}
*/
@Cordova({
callbackOrder: 'reverse',
observable: true
})
configure(options: BackgroundGeolocationConfig): Observable<BackgroundGeolocationResponse> {
@Cordova()
configure(options: BackgroundGeolocationConfig): Promise<any> {
return;
}
@@ -465,26 +650,25 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* Display app settings to change permissions
*/
@Cordova({ sync: true })
showAppSettings(): void {
}
showAppSettings(): void {}
/**
* Display device location settings
*/
@Cordova({ sync: true })
showLocationSettings(): void {
}
showLocationSettings(): void {}
/**
* Method can be used to detect user changes in location services settings.
* If user enable or disable location services then success callback will be executed.
* In case or error (SettingNotFoundException) fail callback will be executed.
* @returns {Promise<boolean>}
* In case or (SettingNotFoundException) fail callback will be executed.
* @returns {Observable<number>}
*/
@Cordova({
platforms: ['Android']
platforms: ['Android'],
observable: true
})
watchLocationMode(): Promise<boolean> {
watchLocationMode(): Observable<number> {
return;
}
@@ -515,8 +699,8 @@ export class BackgroundGeolocation extends IonicNativePlugin {
return;
}
/**
* Method will return locations, which has not been yet posted to server. NOTE: Locations does contain locationId.
/**
* Method will return locations, which has not been yet posted to server. NOTE: Locations does contain locationId.
* @returns {Promise<any>}
*/
@Cordova()
@@ -552,11 +736,11 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* Calling switchMode you can override plugin behavior and force plugin to switch into other mode.
*
* In FOREGROUND mode plugin uses iOS local manager to receive locations and behavior is affected by option.desiredAccuracy and option.distanceFilter.
* In BACKGROUND mode plugin uses significant changes and region monitoring to receive locations and uses option.stationaryRadius only.
* In BACKGROUND mode plugin uses significant changes and region monitoring to receive locations and uses option.stationaryRadius only.
*
* BackgroundGeolocation.Mode.FOREGROUND
* BackgroundGeolocation.Mode.BACKGROUND
**
* BackgroundGeolocation.Mode.BACKGROUND
*
* @param modeId {number}
* @returns {Promise<any>}
*/
@@ -567,16 +751,144 @@ export class BackgroundGeolocation extends IonicNativePlugin {
return;
}
/**
* Return all logged events. Useful for plugin debugging. Parameter limit limits number of returned entries.
* @see https://github.com/mauron85/cordova-plugin-background-geolocation/tree/v2.2.1#debugging for more information.
/**
* Return all logged events. Useful for plugin debugging. Parameter limit limits number of returned entries.
* @see https://github.com/mauron85/cordova-plugin-background-geolocation/tree/v2.2.1#debugging for more information.
*
* @param limit {number} Limits the number of entries
* @param limit {number} Limits the number of entries
* @returns {Promise<any>}
*/
@Cordova()
getLogEntries(limit: number): Promise<any> {
getLogEntries(
limit: number,
fromId: number,
minLevel: BackgroundGeolocationLogLevel
): Promise<BackgroundGeolocationLogEntry[]> {
return;
}
/**
* Return all logged events. Useful for plugin debugging. Parameter limit limits number of returned entries.
* @see https://github.com/mauron85/cordova-plugin-background-geolocation/tree/v2.2.1#debugging for more information.
*
* @returns {Promise<any>}
*/
@Cordova()
getConfig(): Promise<any> {
return;
}
/**
* One time location check to get current location of the device.
* {timeout: Maximum time in milliseconds device will wait for location,
* maximumAge: Maximum age in milliseconds of a possible cached location that is acceptable to return;
* enableHighAccuracy: if true and if the device is able to provide a more accurate position, it will do so}
*
* @param {BackgroundGeolocationCurrentPositionConfig} options
* @returns {Promise<any>}
*/
@Cordova({
callbackOrder: 'reverse'
})
getCurrentLocation(
options?: BackgroundGeolocationCurrentPositionConfig
): Promise<BackgroundGeolocationResponse> {
return;
}
/**
* Check status of the service
*/
@Cordova()
checkStatus(): Promise<ServiceStatus> {
return;
}
/**
* Start background task (iOS only)
*
* To perform any long running operation on iOS
* you need to create background task
* IMPORTANT: task has to be ended by endTask
*
* @returns {Promise<number>} taskKey
*/
@Cordova({
platforms: ['IOS']
})
startTask(): Promise<number> {
return;
}
/**
* End background task indentified by taskKey (iOS only)
*/
@Cordova({
platforms: ['IOS']
})
endTask(taskKey: number): Promise<any> {
return;
}
/**
* A special task that gets executed when the app is terminated, but
* the plugin was configured to continue running in the background
* (option <code>stopOnTerminate: false</code>).
*
* In this scenario the Activity was killed by the system and all registered
* event listeners will not be triggered until the app is relaunched.
*
* @example
* BackgroundGeolocation.headlessTask(function(event) {
*
* if (event.name === 'location' || event.name === 'stationary') {
* var xhr = new XMLHttpRequest();
* xhr.open('POST', 'http://192.168.81.14:3000/headless');
* xhr.setRequestHeader('Content-Type', 'application/json');
* xhr.send(JSON.stringify(event.params));
* }
*
* return 'Processing event: ' + event.name; // will be logged
* });
* @param func
*/
@Cordova()
headlessTask(func: any): Promise<any> {
return;
}
/**
* Force sync of pending locations.
* Option <code>syncThreshold</code> will be ignored and all pending locations will be immediately posted to <code>syncUrl</code> in single batch.
*
* Platform: Android, iOS
*/
@Cordova()
forceSync(): Promise<any> {
return;
}
/**
* Register event listener.
*
* Triggered when server responded with "<code>285 Updates Not Required</code>" to post/sync request.
* @param event
* @param callbackFn
*/
@Cordova({
observable: true
})
on(event: BackgroundGeolocationEvents): Observable<BackgroundGeolocationResponse> {
return;
}
/**
* Unregister all event listeners for given event.
*
* If parameter <code>event</code> is not provided then all event listeners will be removed.
*/
@Cordova()
removeAllListeners(event?: BackgroundGeolocationEvents): Promise<any> {
return;
}
}

View File

@@ -1,49 +1,53 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
import { Observable } from 'rxjs';
/**
* Configurations items that can be updated.
*/
export interface BackgroundModeConfiguration {
/**
* Title of the background task
*/
title?: String;
title?: string;
/**
* Description of background task
*/
text?: String;
text?: string;
/**
* This will look for `<icon name>.png` in platforms/android/res/drawable|mipmap
*/
icon?: string;
/**
* Set the background color of the notification circle
*/
color?: string;
/**
* By default the app will come to foreground when taping on the notification. If false, plugin won't come to foreground when tapped.
* By default the app will come to foreground when tapping on the notification. If false, plugin won't come to foreground when tapped.
*/
resume?: boolean;
/**
* When set to false makes the notifications visible on lock screen (Android 5.0+)
*/
hidden?: boolean;
/** Big text */
bigText?: boolean;
/**
* The text that scrolls itself on statusbar
*/
ticker?: String;
ticker?: string;
/**
* if true plugin will not display a notification. Default is false.
*/
silent?: boolean;
}
/**
@@ -51,9 +55,9 @@ export interface BackgroundModeConfiguration {
* @description
* Cordova plugin to prevent the app from going to sleep while in background.
* Requires Cordova plugin: cordova-plugin-background-mode. For more info about plugin, visit: https://github.com/katzer/cordova-plugin-background-mode
*@usage
* @usage
* ```typescript
* import { BackgroundMode } from '@ionic-native/background-mode';
* import { BackgroundMode } from '@ionic-native/background-mode/ngx';
*
* constructor(private backgroundMode: BackgroundMode) { }
*
@@ -74,7 +78,6 @@ export interface BackgroundModeConfiguration {
})
@Injectable()
export class BackgroundMode extends IonicNativePlugin {
/**
* Enable the background mode.
* Once called, prevents the app from being paused while in background.
@@ -82,15 +85,43 @@ export class BackgroundMode extends IonicNativePlugin {
@Cordova({
sync: true
})
enable(): void {
}
enable(): void {}
/**
* Disable the background mode.
* Once the background mode has been disabled, the app will be paused when in background.
*/
@Cordova()
disable(): Promise<any> {
@Cordova({
sync: true
})
disable(): void {
return;
}
/**
* Enable or disable the background mode.
*
* @param enable {boolean} The status to set for.
*
* @return {void}
*/
@Cordova({
sync: true
})
setEnabled(enable: boolean): void {}
/**
* Fire event with given arguments.
*
* @param event {string} event The event's name.
* @param args {array} The callback's arguments.
*
* @return {string}
*/
@Cordova({
sync: true
})
fireEvent(event: string, ...args: any[]): string {
return;
}
@@ -117,31 +148,30 @@ export class BackgroundMode extends IonicNativePlugin {
}
/**
* Override the default title, ticker and text.
* Overwrite the default settings.
* Available only for Android platform.
* @param {BackgroundModeConfiguration} options List of option to configure. See table below
* @param overrides {BackgroundModeConfiguration} Dict of options to be overridden.
* @returns {Promise<any>}
*/
@Cordova({
platforms: ['Android']
})
setDefaults(options?: BackgroundModeConfiguration): Promise<any> {
return;
}
setDefaults(overrides?: BackgroundModeConfiguration): void {}
/**
* Modify the displayed information.
* Available only for Android platform.
* @param {BackgroundModeConfiguration} options Any options you want to update. See table below.
* @param {BackgroundModeConfiguration} [options] Any options you want to update. See table below.
*/
@Cordova({
platforms: ['Android'],
sync: true
})
configure(options?: BackgroundModeConfiguration): void {
}
configure(options?: BackgroundModeConfiguration): void {}
/**
* Listen for events that the plugin fires. Available events are `enable`, `disable`, `activate`, `deactivate` and `failure`.
* Register callback for given event.
* > Available events are `enable`, `disable`, `activate`, `deactivate` and `failure`.
* @param event {string} Event name
* @returns {Observable<any>}
*/
@@ -154,6 +184,17 @@ export class BackgroundMode extends IonicNativePlugin {
return;
}
/**
* Listen for events that the plugin fires. Available events are `enable`, `disable`, `activate`, `deactivate` and `failure`.
* @param event {string} Event name
* @param callback {function} The function to be exec as callback.
* @returns {Observable<any>}
*/
@Cordova()
un(event: string, callback: (...args: any[]) => void): void {
return;
}
/**
* Android allows to programmatically move from foreground to background.
*/
@@ -161,8 +202,7 @@ export class BackgroundMode extends IonicNativePlugin {
platforms: ['Android'],
sync: true
})
moveToBackground(): void {
}
moveToBackground(): void {}
/**
* Enable GPS-tracking in background (Android).
@@ -171,8 +211,7 @@ export class BackgroundMode extends IonicNativePlugin {
platforms: ['Android'],
sync: true
})
disableWebViewOptimizations(): void {
}
disableWebViewOptimizations(): void {}
/**
* Android allows to programmatically move from background to foreground.
@@ -181,8 +220,7 @@ export class BackgroundMode extends IonicNativePlugin {
platforms: ['Android'],
sync: true
})
moveToForeground(): void {
}
moveToForeground(): void {}
/**
* Override the back button on Android to go to background instead of closing the app.
@@ -191,8 +229,7 @@ export class BackgroundMode extends IonicNativePlugin {
platforms: ['Android'],
sync: true
})
overrideBackButton(): void {
}
overrideBackButton(): void {}
/**
* Exclude the app from the recent task list. Works on Android 5.0+.
@@ -201,18 +238,17 @@ export class BackgroundMode extends IonicNativePlugin {
platforms: ['Android'],
sync: true
})
excludeFromTaskList(): void {
}
excludeFromTaskList(): void {}
/**
* The method works async instead of isActive() or isEnabled().
* If the screen is off.
* @param fn {function} Callback function to invoke with boolean arg.
* @returns {Promise<boolean>}
*/
@Cordova({
platforms: ['Android']
})
isScreenOff(): Promise<boolean> {
return;
}
isScreenOff(fn: (arg0: boolean) => void): void {}
/**
* Turn screen on
@@ -221,8 +257,7 @@ export class BackgroundMode extends IonicNativePlugin {
platforms: ['Android'],
sync: true
})
wakeUp(): void {
}
wakeUp(): void {}
/**
* Turn screen on and show app even locked
@@ -231,7 +266,5 @@ export class BackgroundMode extends IonicNativePlugin {
platforms: ['Android'],
sync: true
})
unlock(): void {
}
unlock(): void {}
}

View File

@@ -10,7 +10,7 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
*
* @usage
* ```typescript
* import { Backlight } from '@ionic-native/backlight';
* import { Backlight } from '@ionic-native/backlight/ngx';
*
* constructor(private backlight: Backlight) { }
*

View File

@@ -1,7 +1,6 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name Badge
* @description
@@ -11,7 +10,7 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
*
* @usage
* ```typescript
* import { Badge } from '@ionic-native/badge';
* import { Badge } from '@ionic-native/badge/ngx';
*
* constructor(private badge: Badge) { }
*
@@ -31,7 +30,6 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
})
@Injectable()
export class Badge extends IonicNativePlugin {
/**
* Clear the badge of the app icon.
* @returns {Promise<boolean>}
@@ -80,6 +78,15 @@ export class Badge extends IonicNativePlugin {
return;
}
/**
* Check support to show badges.
* @returns {Promise<any>}
*/
@Cordova()
isSupported(): Promise<any> {
return;
}
/**
* Determine if the app has permission to show badges.
* @returns {Promise<any>}
@@ -94,8 +101,7 @@ export class Badge extends IonicNativePlugin {
* @returns {Promise<any>}
*/
@Cordova()
registerPermission(): Promise<any> {
requestPermission(): Promise<any> {
return;
}
}

View File

@@ -0,0 +1,187 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs';
declare const baiduPush: any;
export interface BaiduResponse<T> {
/**
* The corresponding Baidu SDK method called.
*/
type: string;
/**
* The error code corresponding to Baidu's request.
*/
errorCode?: string;
/**
* Registration data revelvant to subsequent actions.
*/
data: T;
}
export interface RegistrationData {
/**
* The ID registered to Baidu for the app.
*/
appId: string;
/**
* The ID registered to Baidu for the device.
*/
userId: string;
/**
* The channel ID registered to Baidu for the app.
*/
channelId: string;
}
export interface UnregistrationData {
/**
* The ID corresponding to the Baidu request.
*/
requestId: string;
}
export interface TagData {
/**
* The ID corresponding to the Baidu request.
*/
requestId: string;
/**
* The channel ID registered to Baidu for the app.
*/
channelId: string;
/**
* The list of successfully set/deleted tags.
*/
sucessTags: string[];
/**
* The list of unsuccessfully set/deleted tags.
*/
failTags: string[];
}
export interface NotificationData {
/**
* The title of the notification.
*/
title: string;
/**
* The description of the notification.
*/
description: string;
/**
* Custom content for the notification.
*/
customContentString?: string;
}
/**
* @name Baidu Push
* @description
* This plugin faciliates the use of Baidu Push notifications.
*
* @usage
* ```typescript
* import { BaiduPush } from '@ionic-native/baidu-push/ngx';
*
*
* constructor(private baiduPush: BaiduPush) { }
*
* ...
*
* this.baiduPush.startWork('xxxxxx')
* .then((res: any) => console.log(res))
* .catch((error: any) => console.error(error));
*
* ```
* @interfaces
* BaiduResponse
* RegistrationData
* UnregistrationData
* TagData
* NotificationData
*/
@Plugin({
pluginName: 'BaiduPush',
plugin: 'cordova-plugin-push-baidu',
pluginRef: 'baiduPush',
repo: 'https://github.com/Ti-webdev/cordova-plugin-push-baidu.git',
platforms: ['Android', 'iOS']
})
@Injectable()
export class BaiduPush extends IonicNativePlugin {
/**
* This method registers the device to Baidu Cloud Push services.
* @param {string} apiKey Baidu Cloud Push API key.
* @return {Promise<BaiduResponse<RegistrationData>>} Returns a Promise that resolves with a BaiduResponse.
*/
@Cordova()
startWork(apiKey: string): Promise<BaiduResponse<RegistrationData>> {
return;
}
/**
* This method unregisters the device to Baidu Cloud Push services.
* @return {Promise<BaiduResponse<UnregistrationData>>} Returns a Promise that resolves with a BaiduResponse.
*/
@Cordova()
stopWork(): Promise<BaiduResponse<UnregistrationData>> {
return;
}
/**
* This method re-binds the device to Baidu Cloud Push services.
* @return {Promise<BaiduResponse<RegistrationData>>} Returns a Promise that resolves with a BaiduResponse.
*/
@Cordova()
resumeWork(): Promise<BaiduResponse<RegistrationData>> {
return;
}
/**
* This sets tags in the Baidu Cloud Push services.
* @param tags {any} tags The tags to set.
* @return {Promise<BaiduResponse<TagData>>} Returns a Promise that resolves with a BaiduResponse.
*/
@Cordova()
setTags(tags: any): Promise<BaiduResponse<TagData>> {
return;
}
/**
* This sets tags in the Baidu Cloud Push services.
* @param tags {any} tags The tags to set.
* @return {Promise<BaiduResponse<TagData>>} Returns a Promise that resolves with a BaiduResponse.
*/
@Cordova()
delTags(tags: any): Promise<BaiduResponse<TagData>> {
return;
}
/**
* This method is called when a notification is recieved on the foreground.
* @return {Promise<BaiduResponse<NotificationData>>} Returns a Promise that resolves with a BaiduResponse.
*/
@Cordova({ observable: true })
onMessage(): Observable<BaiduResponse<NotificationData>> {
return;
}
/**
* This method is called when the user taps a notification.
* @return {Promise<BaiduResponse<NotificationData>>} Returns a Promise that resolves with a BaiduResponse.
*/
@Cordova({ observable: true })
onNotificationClicked(): Observable<BaiduResponse<NotificationData>> {
return;
}
/**
* This method is called when a notification is recieved.
* @return {Promise<BaiduResponse<NotificationData>>} Returns a Promise that resolves with a BaiduResponse.
*/
@Cordova({ observable: true })
onNotificationArrived(): Observable<BaiduResponse<NotificationData>> {
return;
}
}

View File

@@ -2,7 +2,6 @@ import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface BarcodeScannerOptions {
/**
* Prefer front camera. Supported on iOS and Android.
*/
@@ -52,11 +51,26 @@ export interface BarcodeScannerOptions {
* Display scanned text for X ms. 0 suppresses it entirely, default 1500. Supported on Android only.
*/
resultDisplayDuration?: number;
}
export interface BarcodeScanResult {
format: 'QR_CODE' | 'DATA_MATRIX' | 'UPC_E' | 'UPC_A' | 'EAN_8' | 'EAN_13' | 'CODE_128' | 'CODE_39' | 'CODE_93' | 'CODABAR' | 'ITF' | 'RSS14' | 'RSS_EXPANDED' | 'PDF417' | 'AZTEC' | 'MSI';
format:
| 'QR_CODE'
| 'DATA_MATRIX'
| 'UPC_E'
| 'UPC_A'
| 'EAN_8'
| 'EAN_13'
| 'CODE_128'
| 'CODE_39'
| 'CODE_93'
| 'CODABAR'
| 'ITF'
| 'RSS14'
| 'RSS_EXPANDED'
| 'PDF_417'
| 'AZTEC'
| 'MSI';
cancelled: boolean;
text: string;
}
@@ -70,17 +84,17 @@ export interface BarcodeScanResult {
*
* @usage
* ```typescript
* import { BarcodeScanner } from '@ionic-native/barcode-scanner';
* import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
*
* constructor(private barcodeScanner: BarcodeScanner) { }
*
* ...
*
*
* this.barcodeScanner.scan().then((barcodeData) => {
* // Success! Barcode data is here
* }, (err) => {
* // An error occurred
* this.barcodeScanner.scan().then(barcodeData => {
* console.log('Barcode data', barcodeData);
* }).catch(err => {
* console.log('Error', err);
* });
* ```
* @interfaces
@@ -96,7 +110,6 @@ export interface BarcodeScanResult {
})
@Injectable()
export class BarcodeScanner extends IonicNativePlugin {
Encode: {
TEXT_TYPE: string;
EMAIL_TYPE: string;
@@ -111,7 +124,7 @@ export class BarcodeScanner extends IonicNativePlugin {
/**
* Open the barcode scanner.
* @param options {BarcodeScannerOptions} Optional options to pass to the scanner
* @param {BarcodeScannerOptions} [options] Optional options to pass to the scanner
* @returns {Promise<any>} Returns a Promise that resolves with scanner data, or rejects with an error.
*/
@Cordova({
@@ -124,13 +137,12 @@ export class BarcodeScanner extends IonicNativePlugin {
/**
* Encodes data into a barcode.
* NOTE: not well supported on Android
* @param type {string} Type of encoding
* @param data {any} Data to encode
* @param {string} type Type of encoding
* @param {any} data Data to encode
* @returns {Promise<any>}
*/
@Cordova()
encode(type: string, data: any): Promise<any> {
return;
}
}

View File

@@ -1,12 +1,22 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface Base64ToGalleryOptions {
/** Saved file name prefix */
prefix: string;
/**
* On Android runs Media Scanner after file creation.
* On iOS if true the file will be added to camera roll, otherwise will be saved to a library folder.
*/
mediaScanner: boolean;
}
/**
* @name Base64 To Gallery
* @description This plugin allows you to save base64 data as a png image into the device
* @usage
* ```typescript
* import { Base64ToGallery } from '@ionic-native/base64-to-gallery';
* import { Base64ToGallery } from '@ionic-native/base64-to-gallery/ngx';
*
* constructor(private base64ToGallery: Base64ToGallery) { }
*
@@ -19,6 +29,8 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
* err => console.log('Error saving image to gallery ', err)
* );
* ```
* @interfaces
* Base64ToGalleryOptions
*/
@Plugin({
pluginName: 'Base64ToGallery',
@@ -29,19 +41,20 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
})
@Injectable()
export class Base64ToGallery extends IonicNativePlugin {
/**
* Converts a base64 string to an image file in the device gallery
* @param {string} data The actual base64 string that you want to save
* @param {any} [options] An object with properties: prefix: string, mediaScanner: boolean. Prefix will be prepended to the filename. If true, mediaScanner runs Media Scanner on Android and saves to Camera Roll on iOS; if false, saves to Library folder on iOS.
* @param {any} [options] An object with properties
* @returns {Promise<any>} returns a promise that resolves when the image is saved.
*/
@Cordova({
successIndex: 2,
errorIndex: 3
})
base64ToGallery(data: string, options?: { prefix?: string; mediaScanner?: boolean }): Promise<any> {
base64ToGallery(
data: string,
options?: Base64ToGalleryOptions
): Promise<any> {
return;
}
}

View File

@@ -9,7 +9,7 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
*
* @usage
* ```typescript
* import { Base64 } from '@ionic-native/base64';
* import { Base64 } from '@ionic-native/base64/ngx';
*
* constructor(private base64: Base64) { }
*

View File

@@ -1,9 +1,8 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
import { Observable } from 'rxjs';
export interface BatteryStatusResponse {
/**
* The battery charge percentage
*/
@@ -13,7 +12,6 @@ export interface BatteryStatusResponse {
* A boolean that indicates whether the device is plugged in
*/
isPlugged: boolean;
}
/**
@@ -23,7 +21,7 @@ export interface BatteryStatusResponse {
*
* @usage
* ```typescript
* import { BatteryStatus } from '@ionic-native/battery-status';
* import { BatteryStatus } from '@ionic-native/battery-status/ngx';
*
* constructor(private batteryStatus: BatteryStatus) { }
*
@@ -31,11 +29,9 @@ export interface BatteryStatusResponse {
*
*
* // watch change in battery status
* let subscription = this.batteryStatus.onChange().subscribe(
* (status: BatteryStatusResponse) => {
* const subscription = this.batteryStatus.onChange().subscribe(status => {
* console.log(status.level, status.isPlugged);
* }
* );
* });
*
* // stop watch
* subscription.unsubscribe();
@@ -53,7 +49,6 @@ export interface BatteryStatusResponse {
})
@Injectable()
export class BatteryStatus extends IonicNativePlugin {
/**
* Watch the change in battery level
* @returns {Observable<BatteryStatusResponse>} Returns an observable that pushes a status object
@@ -79,7 +74,7 @@ export class BatteryStatus extends IonicNativePlugin {
}
/**
* Watch when the battery level goes to critial
* Watch when the battery level goes to critical
* @returns {Observable<BatteryStatusResponse>} Returns an observable that pushes a status object
*/
@Cordova({
@@ -89,5 +84,4 @@ export class BatteryStatus extends IonicNativePlugin {
onCritical(): Observable<BatteryStatusResponse> {
return;
}
}

View File

@@ -0,0 +1,102 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name BioCatch
* @description
* BioCatch SDK Cordova support
*
* @usage
* ```typescript
* import { BioCatch } from '@ionic-native/biocatch';
*
*
* constructor(private biocatch: BioCatch) { }
*
* ...
*
*
* this.biocatch.start('customer-session-1', 'http://example.com', 'some-public-key')
* .then((res: any) => console.log(res))
* .catch((error: any) => console.error(error));
*
* ```
*/
@Plugin({
pluginName: 'BioCatch',
plugin: 'cordova-plugin-biocatch',
pluginRef: 'BioCatch',
repo: 'https://bitbucket.org/carlos_orellana/ionic-plugin',
platforms: ['iOS', 'Android'],
})
@Injectable()
export class BioCatch extends IonicNativePlugin {
/**
* Start a session
* @param customerSessionID {String} Customer session id
* @param wupUrl {String} WUP server URL
* @param publicKey {String} Public Key
* @return {Promise<void>} Returns a promise
*/
@Cordova()
start(customerSessionID: string | null, wupUrl: string, publicKey: string | null): Promise<void> {
return;
}
/**
* Pause the session
* @return {Promise<void>} Returns a promise
*/
@Cordova()
pause(): Promise<void> {
return;
}
/**
* Resume the session
* @return {Promise<void>} Returns a promise
*/
@Cordova()
resume(): Promise<void> {
return;
}
/**
* Stop the session
* @return {Promise<void>} Returns a promise
*/
@Cordova()
stop(): Promise<void> {
return;
}
/**
* Reset the session
* @return {Promise<void>} Returns a promise
*/
@Cordova()
resetSession(): Promise<void> {
return;
}
/**
* Change the session context
* @param contextName {String} Context name
* @return {Promise<void>} Returns a promise
*/
@Cordova()
changeContext(contextName: string): Promise<void> {
return;
}
/**
* Update the customer session ID
* @param customerSessionID {String}
* @return {Promise<void>} Returns a promise
*/
@Cordova()
updateCustomerSessionID(customerSessionID: string | null): Promise<void> {
return;
}
}

View File

@@ -0,0 +1,59 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
/**
* @name BiometricWrapper
* @description
* This plugin capture biometric(Iris and Fingerprint) and validate the user.
* May be used in Banking domain
*
* @usage
* ```typescript
* import { BiometricWrapper } from '@ionic-native/biometric-wrapper/ngx';
*
*
* constructor(private biometricWrapper: BiometricWrapper) { }
*
* ...
*
*
* this.biometricWrapper.activateIris({'PID_XML': '<pid-xml/>'})
* .then((res: any) => )
* .catch((error: any) => );
*
* ```
*/
@Plugin({
pluginName: 'BiometricWrapper',
plugin: 'cordova-plugin-biometric',
pluginRef: 'cordova.plugins.BiometricWrapper',
repo: '',
install: '',
installVariables: [],
platforms: ['Android']
})
@Injectable()
export class BiometricWrapper extends IonicNativePlugin {
/**
* This function activate iris activity
* @return {Promise<any>} Returns a promise that resolves when iris data captured
*/
@Cordova()
activateIris(args: any): Promise<any> {
return;
}
/**
* This function activate fingerprint activity
* @return {Promise<any>} Returns a promise that resolves when FP data captured
*/
@Cordova()
activateFingerprint(args: any): Promise<any> {
return;
}
}

View File

@@ -1,6 +1,11 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
import { Observable } from 'rxjs';
export interface BLEScanOptions {
/** true if duplicate devices should be reported, false (default) if devices should only be reported once. */
reportDuplicates?: boolean;
}
/**
* @name BLE
@@ -23,7 +28,7 @@ import { Observable } from 'rxjs/Observable';
*
* ```typescript
*
* import { BLE } from '@ionic-native/ble';
* import { BLE } from '@ionic-native/ble/ngx';
*
* constructor(private ble: BLE) { }
*
@@ -96,7 +101,7 @@ import { Observable } from 'rxjs/Observable';
* ```
*
* ## Advertising Data
* Bluetooth advertising data is returned in when scanning for devices. The format format varies depending on your platform. On Android advertising data will be the raw advertising bytes. iOS does not allow access to raw advertising data, so a dictionary of data is returned.
* Bluetooth advertising data is returned in when scanning for devices. The format varies depending on your platform. On Android advertising data will be the raw advertising bytes. iOS does not allow access to raw advertising data, so a dictionary of data is returned.
*
* The advertising information for both Android and iOS appears to be a combination of advertising data and scan response data.
*
@@ -167,6 +172,8 @@ import { Observable } from 'rxjs/Observable';
*
* UUIDs are always strings and not numbers. Some 16-bit UUIDs, such as '2220' look like integers, but they're not. (The integer 2220 is 0x8AC in hex.) This isn't a problem with 128 bit UUIDs since they look like strings 82b9e6e1-593a-456f-be9b-9215160ebcac. All 16-bit UUIDs should also be passed to methods as strings.
*
* @interfaces
* BLEScanOptions
*/
@Plugin({
pluginName: 'BLE',
@@ -177,7 +184,6 @@ import { Observable } from 'rxjs/Observable';
})
@Injectable()
export class BLE extends IonicNativePlugin {
/**
* Scan and discover BLE peripherals for the specified amount of time.
*
@@ -226,7 +232,7 @@ export class BLE extends IonicNativePlugin {
/**
* Scans for BLE devices. This function operates similarly to the `startScan` function, but allows you to specify extra options (like allowing duplicate device reports).
* @param {string[]} services List of service UUIDs to discover, or `[]` to find all devices
* @param options {any}
* @param {BLEScanOptions} options Options
* @returns {Observable<any>} Returns an Observable that notifies of each peripheral discovered.
*/
@Cordova({
@@ -234,7 +240,10 @@ export class BLE extends IonicNativePlugin {
clearFunction: 'stopScan',
clearWithArgs: false
})
startScanWithOptions(services: string[], options: { reportDuplicates?: boolean } | any): Observable<any> {
startScanWithOptions(
services: string[],
options: BLEScanOptions
): Observable<any> {
return;
}
@@ -250,7 +259,7 @@ export class BLE extends IonicNativePlugin {
* BLE.stopScan().then(() => { console.log('scan stopped'); });
* }, 5000);
* ```
* @return returns a Promise.
* @returns {Promise<any>}
*/
@Cordova()
stopScan(): Promise<any> {
@@ -268,8 +277,8 @@ export class BLE extends IonicNativePlugin {
* console.log('disconnected');
* });
* ```
* @param deviceId {string} UUID or MAC address of the peripheral
* @return Returns an Observable that notifies of connect/disconnect.
* @param {string} deviceId UUID or MAC address of the peripheral
* @return {Observable<any>} Returns an Observable that notifies of connect/disconnect.
*/
@Cordova({
observable: true,
@@ -280,6 +289,80 @@ export class BLE extends IonicNativePlugin {
return;
}
/**
* Establish an automatic connection to a peripheral. The phone will automatically connect to the Bluetooth peripheral
* whenever it is in range. The autoConnect function uses callbacks instead of observables because connect and
* disconnect can each be called many times as a devices connects and disconnects.
*
* On Android you can pass a MAC address directly to autoConnect. With iOS, you need to get a device id by scanning,
* calling ble.peripheralsWithIdentifiers, or calling ble.connectedPeripheralsWithServices.
*
* @usage
* ```
* someFunction() {
* this.ble.autoConnect(deviceId, onConnected.bind(this), onDisconnected.bind(this));
* }
*
* onConnected(peripheral) {
* console.log(`Connected to ${peripheral.id}`)l
* }
*
* onDisconnected(peripheral) {
* console.log(`Disconnected from ${peripheral.id}`)l
* }
*
* ```
* @param {string} deviceId UUID or MAC address of the peripheral
* @param {function} connectCallback function that is called with peripheral data when the devices connects
* @param {function} disconnectCallback function that is called with peripheral data when the devices disconnects
*/
@Cordova({ sync: true })
autoConnect(deviceId: string, connectCallback: any, disconnectCallback: any) {
return;
}
/**
* Request MTU size.
* May be used to fix the Error 14 "Unlikely" on write requests with more than 20 bytes.
* @usage
* ```
* BLE.requestMtu('12:34:56:78:9A:BC', 512).then(() => {
* console.log('MTU Size Accepted');
* }, error => {
* console.log('MTU Size Failed');
* });
* ```
* @param {string} deviceId UUID or MAC address of the peripheral
* @param {number} mtuSize The new MTU size. (23 - 517, default is usually 23. Max recommended: 512)
* @return {Promise<any>} Returns a Promise.
*/
@Cordova()
requestMtu(deviceId: string, mtuSize: number): Promise<any> {
return;
}
/**
* Refresh Device Cache
* This method may fix a issue of old cached services and characteristics.
* NOTE Since this uses an undocumented API it's not guaranteed to work.
* If you choose a too low delay time (timeoutMillis) the method could fail.
* @usage
* ```
* BLE.refreshDeviceCache('12:34:56:78:9A:BC', 10000).then(discoveredServices => {
* console.log('The new discovered services after the clean: ', discoveredServices);
* }, error => {
* console.log('Refresh device cache failed.');
* });
* ```
* @param {string} deviceId UUID or MAC address of the peripheral
* @param {number} timeoutMillis Delay in milliseconds after refresh before discovering services.
* @return {Promise<any>} Returns a Promise.
*/
@Cordova()
refreshDeviceCache(deviceId: string, timeoutMillis: number): Promise<any> {
return;
}
/**
* Disconnect from a peripheral.
* @usage
@@ -288,8 +371,8 @@ export class BLE extends IonicNativePlugin {
* console.log('Disconnected');
* });
* ```
* @param deviceId {string} UUID or MAC address of the peripheral
* @return Returns a Promise
* @param {string} deviceId UUID or MAC address of the peripheral
* @return {Promise<any>} Returns a Promise
*/
@Cordova()
disconnect(deviceId: string): Promise<any> {
@@ -302,12 +385,14 @@ export class BLE extends IonicNativePlugin {
* @param {string} deviceId UUID or MAC address of the peripheral
* @param {string} serviceUUID UUID of the BLE service
* @param {string} characteristicUUID UUID of the BLE characteristic
* @return Returns a Promise
* @return {Promise<any>} Returns a Promise
*/
@Cordova()
read(deviceId: string,
serviceUUID: string,
characteristicUUID: string): Promise<any> {
read(
deviceId: string,
serviceUUID: string,
characteristicUUID: string
): Promise<any> {
return;
}
@@ -337,13 +422,15 @@ export class BLE extends IonicNativePlugin {
* @param {string} serviceUUID UUID of the BLE service
* @param {string} characteristicUUID UUID of the BLE characteristic
* @param {ArrayBuffer} value Data to write to the characteristic, as an ArrayBuffer.
* @return Returns a Promise
* @return {Promise<any>} Returns a Promise
*/
@Cordova()
write(deviceId: string,
serviceUUID: string,
characteristicUUID: string,
value: ArrayBuffer): Promise<any> {
write(
deviceId: string,
serviceUUID: string,
characteristicUUID: string,
value: ArrayBuffer
): Promise<any> {
return;
}
@@ -354,13 +441,15 @@ export class BLE extends IonicNativePlugin {
* @param {string} serviceUUID UUID of the BLE service
* @param {string} characteristicUUID UUID of the BLE characteristic
* @param {ArrayBuffer} value Data to write to the characteristic, as an ArrayBuffer.
* @return Returns a Promise
* @return {Promise<any>} Returns a Promise
*/
@Cordova()
writeWithoutResponse(deviceId: string,
serviceUUID: string,
characteristicUUID: string,
value: ArrayBuffer): Promise<any> {
writeWithoutResponse(
deviceId: string,
serviceUUID: string,
characteristicUUID: string,
value: ArrayBuffer
): Promise<any> {
return;
}
@@ -377,16 +466,18 @@ export class BLE extends IonicNativePlugin {
* @param {string} deviceId UUID or MAC address of the peripheral
* @param {string} serviceUUID UUID of the BLE service
* @param {string} characteristicUUID UUID of the BLE characteristic
* @return Returns an Observable that notifies of characteristic changes.
* @return {Observable<any>} Returns an Observable that notifies of characteristic changes.
*/
@Cordova({
observable: true,
clearFunction: 'stopNotification',
clearWithArgs: true
})
startNotification(deviceId: string,
serviceUUID: string,
characteristicUUID: string): Observable<any> {
startNotification(
deviceId: string,
serviceUUID: string,
characteristicUUID: string
): Observable<any> {
return;
}
@@ -399,9 +490,11 @@ export class BLE extends IonicNativePlugin {
* @returns {Promise<any>}
*/
@Cordova()
stopNotification(deviceId: string,
serviceUUID: string,
characteristicUUID: string): Promise<any> {
stopNotification(
deviceId: string,
serviceUUID: string,
characteristicUUID: string
): Promise<any> {
return;
}
@@ -443,7 +536,7 @@ export class BLE extends IonicNativePlugin {
* });
* ```
*
* @return Returns an Observable that notifies when the Bluetooth is enabled or disabled on the device.
* @return {Observable<any>} Returns an Observable that notifies when the Bluetooth is enabled or disabled on the device.
*/
@Cordova({
observable: true,
@@ -489,10 +582,46 @@ export class BLE extends IonicNativePlugin {
*
* @param {string} deviceId UUID or MAC address of the peripheral
*
*@returns {Promise<any>}
* @returns {Promise<any>}
*/
@Cordova()
readRSSI(deviceId: string): Promise<any> {
return;
}
/**
* Retrieves a list of the peripherals (containing any of the specified services)
* currently connected to the system. The peripheral list is sent to the success callback.
* iOS only
*
* @param {string[]} services List of services to discover
* @returns {Promise<any>} Returns a promise with a list of peripheral objects
*/
@Cordova()
connectedPeripheralsWithServices(services: string[]): Promise<any[]> {
return;
}
/**
* Find the connected peripherals offering the listed service UUIDs.
* iOS only
*
* @param {string[]} uuids List of peripheral UUIDs
* @returns {Promise<any>} Returns a promise with a list of peripheral objects
*/
@Cordova()
peripheralsWithIdentifiers(uuids: string[]): Promise<any[]> {
return;
}
/**
* Find the bonded devices
* Android only
*
* @returns {Promise<any>} Returns a promise with a list of peripheral objects
*/
@Cordova()
bondedDevices(): Promise<any[]> {
return;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,124 @@
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs';
import { Injectable } from '@angular/core';
/**
* Interface of a blink up options.
*/
export interface BlinkUpOptions {
apiKey: string;
developmentPlanId?: string;
isInDevelopment?: boolean;
timeoutMs?: number;
}
/**
* Interface of a blink up wifi options.
*/
export interface BlinkUpWifiOptions {
apiKey: string;
timeoutMs?: number;
ssid: string;
password: string;
}
/**
* Interface of a blink up wps options.
*/
export interface BlinkUpWPSOptions {
apiKey: string;
timeoutMs?: number;
wpsPin: string;
}
/**
* @name BlinkUp
* @description
* Electric Imp BlinkUp ionic plugin.
*
* @usage
* ```typescript
* import { BlinkUp } from '@ionic-native/blinkup/ngx';
*
* const options = <BlinkUpWifiOptions>{
* apiKey: 'API_KEY',
* timeoutMs: 60000,
* ssid: 'MY_SSID',
* password: 'MY_PASSWORD'
* }
* BlinkUp.flashWifiBlinkUp(options).subscribe(
* (result) => console.log('Done'),
* (error) => console.log(error)
* )
* ```
*/
@Plugin({
pluginName: 'BlinkUp',
plugin: 'cordova-plugin-blinkup',
pluginRef: 'blinkup',
repo: 'https://github.com/SensorShare/cordova-plugin-blinkup',
platforms: ['Android', 'iOS']
})
@Injectable()
export class BlinkUp extends IonicNativePlugin {
/**
* startBlinkUp - starts the blinkup process
* @param {module:blinkup.BlinkUpOptions} options BlinkUp Options
* @return {Observable<any>} Returns an Observable
*/
@Cordova({
callbackOrder: 'reverse',
observable: true
})
startBlinkUp(options: BlinkUpOptions): Observable<any> {
return;
}
/**
* flashWifiBlinkUp - invokes the flash wifi process
* @param {module:blinkup.BlinkUpWifiOptions} options BlinkUp Wifi Options
* @return {Observable<any>} Returns an Observable
*/
@Cordova({
callbackOrder: 'reverse',
observable: true
})
flashWifiBlinkUp(options: BlinkUpWifiOptions): Observable<any> {
return;
}
/**
* flashWPSBlinkUp - invokes the flash wps process
* @param {module:blinkup.BlinkUpWPSOptions} options BlinkUp WPS Options
* @return {Observable<any>} Returns an Observable
*/
@Cordova({
callbackOrder: 'reverse',
observable: true
})
flashWPSBlinkUp(options: BlinkUpWPSOptions): Observable<any> {
return;
}
/**
* abortBlinkUp - abort blinkup process
* @return {Observable<any>} Returns an Observable
*/
@Cordova({
observable: true
})
abortBlinkUp(): Observable<any> {
return;
}
/**
* clearBlinkUpData - clear wifi data
* @return {Observable<any>} Returns an Observable
*/
@Cordova({
observable: true
})
clearBlinkUpData(): Observable<any> {
return;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +1,13 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
import { Observable } from 'rxjs';
/**
* @name Bluetooth Serial
* @description This plugin enables serial communication over Bluetooth. It was written for communicating between Android or iOS and an Arduino (not Android to Android or iOS to iOS).
* @usage
* ```typescript
* import { BluetoothSerial } from '@ionic-native/bluetooth-serial';
* import { BluetoothSerial } from '@ionic-native/bluetooth-serial/ngx';
*
* constructor(private bluetoothSerial: BluetoothSerial) { }
*
@@ -39,7 +39,6 @@ import { Observable } from 'rxjs/Observable';
})
@Injectable()
export class BluetoothSerial extends IonicNativePlugin {
/**
* Connect to a Bluetooth device
* @param {string} macAddress_or_uuid Identifier of the remote device
@@ -259,8 +258,7 @@ export class BluetoothSerial extends IonicNativePlugin {
platforms: ['Android'],
sync: true
})
setName(newName: string): void {
}
setName(newName: string): void {}
/**
* Makes the device discoverable by other devices
@@ -270,7 +268,5 @@ export class BluetoothSerial extends IonicNativePlugin {
platforms: ['Android'],
sync: true
})
setDiscoverable(discoverableDuration: number): void {
}
setDiscoverable(discoverableDuration: number): void {}
}

View File

@@ -139,7 +139,7 @@ export interface PaymentUIResult {
* @description
* This plugin enables the use of the Braintree Drop-In Payments UI in your Ionic applications on Android and iOS, using the native Drop-In UI for each platform (not the Javascript SDK).
*
* Ionic Native utilizes [a maintaned fork](https://github.com/taracque/cordova-plugin-braintree) of the original `cordova-plugin-braintree`
* Ionic Native utilizes [a maintained fork](https://github.com/taracque/cordova-plugin-braintree) of the original `cordova-plugin-braintree`
*
* For information on how to use Apple Pay with this plugin, please refer to the [plugin documentation](https://github.com/Taracque/cordova-plugin-braintree#apple-pay-ios-only)
*
@@ -148,7 +148,7 @@ export interface PaymentUIResult {
*
* @usage
* ```typescript
* import { Braintree, ApplePayOptions, PaymentUIOptions } from '@ionic-native/braintree';
* import { Braintree, ApplePayOptions, PaymentUIOptions } from '@ionic-native/braintree/ngx';
*
* constructor(private braintree: Braintree) { }
*
@@ -200,21 +200,21 @@ export interface PaymentUIResult {
pluginRef: 'BraintreePlugin',
repo: 'https://github.com/taracque/cordova-plugin-braintree',
platforms: ['Android', 'iOS'],
install: 'ionic cordova plugin add https://github.com/taracque/cordova-plugin-braintree',
installVariables: [],
install:
'ionic cordova plugin add https://github.com/taracque/cordova-plugin-braintree',
installVariables: []
})
@Injectable()
export class Braintree extends IonicNativePlugin {
/**
* Used to initialize the Braintree client. This function must be called before other methods can be used.
* As the initialize code is async, be sure you call all Braintree related methods after the initialize promise has resolved.
*
* @param token {string} The client token or tokenization key to use with the Braintree client.
* @param {string} token The client token or tokenization key to use with the Braintree client.
* @return {Promise<undefined | string>} Returns a promise that resolves with undefined on successful initialization, or rejects with a string message describing the failure.
*/
@Cordova({
platforms: ['Android', 'iOS'],
platforms: ['Android', 'iOS']
})
initialize(token: string): Promise<undefined | string> {
return;
@@ -229,11 +229,11 @@ export class Braintree extends IonicNativePlugin {
*
* Calling this function on Android is a `noop` so you can call it without having to check which cordova platform you are on! :D
*
* @param options {ApplePayOptions} The options used to configure Apple Pay.
* @param {ApplePayOptions}options The options used to configure Apple Pay.
* @return {Promise<undefined | string>} Returns a promise that resolves with undefined on successful initialization, or rejects with a string message describing the failure.
*/
@Cordova({
platforms: ['iOS'],
platforms: ['iOS']
})
setupApplePay(options: ApplePayOptions): Promise<undefined | string> {
return;
@@ -247,9 +247,11 @@ export class Braintree extends IonicNativePlugin {
* @return {Promise<PaymentUIResult | string>} Returns a promise that resolves with a PaymentUIResult object on successful payment (or the user cancels), or rejects with a string message describing the failure.
*/
@Cordova({
platforms: ['Android', 'iOS'],
platforms: ['Android', 'iOS']
})
presentDropInPaymentUI(options?: PaymentUIOptions): Promise<PaymentUIResult | string> {
presentDropInPaymentUI(
options?: PaymentUIOptions
): Promise<PaymentUIResult | string> {
return;
}
}

View File

@@ -0,0 +1,235 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface BranchIoPromise {
$identity_id?: number;
$one_time_use?: boolean;
'+click_timestamp'?: number;
'+clicked_branch_link'?: boolean;
'+is_first_session'?: boolean;
'+match_guaranteed'?: boolean;
contentMetadata?: string;
source?: string;
'~campaign'?: string;
'~channel'?: string;
'~creation_source'?: string;
'~feature'?: string;
'~id'?: number;
'~referring_link:'?: string;
[x: string]: any;
}
export interface BranchIoAnalytics {
channel?: string;
feature?: string;
campaign?: string;
stage?: string;
tags?: string[];
[x: string]: any;
}
export interface BranchIoProperties {
contentMetadata?: {
[x: string]: any;
};
[x: string]: any;
}
export interface BranchUniversalObject {
generateShortUrl(
analytics: BranchIoAnalytics,
properties: BranchIoProperties
): Promise<any>;
registerView(): Promise<any>;
showShareSheet(
analytics: BranchIoAnalytics,
properties: BranchIoProperties,
shareText: string
): Promise<any>;
onShareSheetLaunched(callback: any): void;
onShareSheetDismissed(callback: any): void;
onLinkShareResponse(callback: any): void;
onChannelSelected(callback: any): void;
listOnSpotlight(): Promise<any>;
}
/**
* @name BranchIo
* @description
* Branch.io is an attribution service for deeplinking and invitation links
*
* @usage
* ```
* import { BranchIo } from '@ionic-native/branch-io/ngx';
*
*
* constructor(private branch: BranchIo) { }
*
* ```
*
* @interfaces
* BranchIoPromise
* BranchIoAnalytics
* BranchIoProperties
* BranchUniversalObject
*
*/
@Plugin({
pluginName: 'BranchIo',
plugin: 'branch-cordova-sdk',
pluginRef: 'Branch',
repo:
'https://github.com/BranchMetrics/cordova-ionic-phonegap-branch-deep-linking',
platforms: ['iOS', 'Android']
})
@Injectable()
export class BranchIo extends IonicNativePlugin {
/**
* for development and debugging only
* @param {boolean} enable Enable debug
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
setDebug(enable: boolean): Promise<any> {
return;
}
/**
* Disable tracking
* @param {boolean} disable disable tracking
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
disableTracking(disable: boolean): Promise<any> {
return;
}
/**
* Initializes Branch
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
initSession(): Promise<BranchIoPromise> {
return;
}
/**
* Set Request Metadata
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
setRequestMetadata(): Promise<any> {
return;
}
/**
* for better Android matching
* @param {string} linkDomain LinkDomain at branch
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
setCookieBasedMatching(linkDomain: string): Promise<any> {
return;
}
/**
* First data
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
getFirstReferringParams(): Promise<any> {
return;
}
/**
* Latest data
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
getLatestReferringParams(): Promise<any> {
return;
}
/**
* Set identy of user
* @param {string} userId
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
setIdentity(userId: string): Promise<any> {
return;
}
/**
* Logout user
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
logout(): Promise<any> {
return;
}
/**
* Registers a custom event
* @param {string} eventName
* @param {any} metaData
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
userCompletedAction(eventName: string, metaData: any): Promise<any> {
return;
}
/**
* Send Commerce Event
* @param {string} event
* @param {any} metaData
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
sendCommerceEvent(event: string, metaData: any): Promise<any> {
return;
}
/**
* create a branchUniversalObj variable to reference with other Branch methods
* @param {BranchIoProperties} properties
* @return {Promise<BranchUniversalObject>}
*/
@Cordova({ otherPromise: true })
createBranchUniversalObject(
properties: BranchIoProperties
): Promise<BranchUniversalObject> {
return;
}
/**
* Load credits
* @param {any} bucket
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
loadRewards(bucket: any): Promise<any> {
return;
}
/**
* Redeem Rewards
* @param {string} value
* @param {any} bucket
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
redeemRewards(value: string, bucket: any): Promise<any> {
return;
}
/**
* Show credit history
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
creditHistory(): Promise<any> {
return;
}
}

View File

@@ -1,7 +1,6 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name Brightness
* @description
@@ -11,13 +10,13 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
*
* @usage
* ```typescript
* import { Brightness } from '@ionic-native/brightness';
* import { Brightness } from '@ionic-native/brightness/ngx';
*
* constructor(private brightness: Brightness) { }
*
* ...
*
* let brightnessValue: number = 0.8;
* let brightnessValue = 0.8;
* this.brightness.setBrightness(brightnessValue);
* ```
*
@@ -31,11 +30,10 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
})
@Injectable()
export class Brightness extends IonicNativePlugin {
/**
* Sets the brightness of the display.
*
* @param {value} Floating number between 0 and 1 in which case 1 means 100% brightness and 0 means 0% brightness.
* @param {number} value Floating number between 0 and 1 in which case 1 means 100% brightness and 0 means 0% brightness.
* @returns {Promise<any>} Returns a Promise that resolves if setting brightness was successful.
*/
@Cordova()
@@ -56,9 +54,8 @@ export class Brightness extends IonicNativePlugin {
/**
* Keeps the screen on. Prevents the device from setting the screen to sleep.
* @param {boolean} value
*/
@Cordova()
setKeepScreenOn(value: boolean): void {
}
setKeepScreenOn(value: boolean): void {}
}

View File

@@ -1,6 +1,6 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
import { Observable } from 'rxjs';
/**
* @name Broadcaster
@@ -9,7 +9,7 @@ import { Observable } from 'rxjs/Observable';
*
* @usage
* ```typescript
* import { Broadcaster } from '@ionic-native/broadcaster';
* import { Broadcaster } from '@ionic-native/broadcaster/ngx';
*
* constructor(private broadcaster: Broadcaster) { }
*
@@ -28,14 +28,13 @@ import { Observable } from 'rxjs/Observable';
plugin: 'cordova-plugin-broadcaster',
pluginRef: 'broadcaster',
repo: 'https://github.com/bsorrentino/cordova-broadcaster',
platforms: ['Android', 'iOS']
platforms: ['Android', 'iOS', 'Browser']
})
@Injectable()
export class Broadcaster extends IonicNativePlugin {
/**
* This function listen to an event sent from the native code
* @param eventName {string}
* @param {string} eventName
* @return {Observable<any>} Returns an observable to watch when an event is received
*/
@Cordova({
@@ -49,13 +48,12 @@ export class Broadcaster extends IonicNativePlugin {
/**
* This function sends data to the native code
* @param eventName {string}
* @param eventData {any}
* @param {string} eventName
* @param {any} eventData
* @return {Promise<any>} Returns a promise that resolves when an event is successfully fired
*/
@Cordova()
fireNativeEvent(eventName: string, eventData: any): Promise<any> {
return;
}
}

View File

@@ -1,5 +1,5 @@
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name Browser Tab
@@ -8,26 +8,18 @@ import { Injectable } from '@angular/core';
*
* @usage
* ```typescript
* import { BrowserTab } from '@ionic-native/browser-tab';
* import { BrowserTab } from '@ionic-native/browser-tab/ngx';
*
* constructor(private browserTab: BrowserTab) {
*
* browserTab.isAvailable()
* .then((isAvailable: boolean) => {
*
* .then(isAvailable => {
* if (isAvailable) {
*
* browserTab.openUrl('https://ionic.io');
*
* } else {
*
* // open URL with InAppBrowser instead or SafariViewController
*
* }
*
* });
*
*
* }
*
* ```
@@ -41,7 +33,6 @@ import { Injectable } from '@angular/core';
})
@Injectable()
export class BrowserTab extends IonicNativePlugin {
/**
* Check if BrowserTab option is available
* @return {Promise<any>} Returns a promise that resolves when check is successful and returns true or false

View File

@@ -2,7 +2,6 @@ import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface CalendarOptions {
/**
* Id
*/
@@ -47,7 +46,14 @@ export interface CalendarOptions {
* URL
*/
url?: string;
}
export interface NameOrOptions {
/** Calendar name */
calendarName?: string;
/** Calendar color as a HEX string */
calendarColor?: string;
}
/**
@@ -60,7 +66,7 @@ export interface CalendarOptions {
*
* @usage
* ```typescript
* import { Calendar } from '@ionic-native/calendar';
* import { Calendar } from '@ionic-native/calendar/ngx';
*
* constructor(private calendar: Calendar) { }
*
@@ -72,6 +78,7 @@ export interface CalendarOptions {
* ```
* @interfaces
* CalendarOptions
* NameOrOptions
*/
@Plugin({
pluginName: 'Calendar',
@@ -82,12 +89,11 @@ export interface CalendarOptions {
})
@Injectable()
export class Calendar extends IonicNativePlugin {
/**
* This function checks if we have permission to read/write from/to the calendar.
* The promise will resolve with `true` when:
* - You're running on iOS, or
* - You're targetting API level lower than 23, or
* - You're targeting API level lower than 23, or
* - You're using Android < 6, or
* - You've already granted permission
*
@@ -147,11 +153,11 @@ export class Calendar extends IonicNativePlugin {
/**
* Create a calendar. (iOS only)
*
* @param {string | Object} nameOrOptions either a string name or a options object. If string, provide the calendar name. IF an object, provide a calendar name as a string and a calendar color in hex format as a string
* @param {string | NameOrOptions} nameOrOptions either a string name or a options object. If string, provide the calendar name. IF an object, provide a calendar name as a string and a calendar color in hex format as a string
* @returns {Promise<any>} Returns a Promise
*/
@Cordova()
createCalendar(nameOrOptions: string | any): Promise<any> {
createCalendar(nameOrOptions: string | NameOrOptions): Promise<any> {
return;
}
@@ -177,6 +183,18 @@ export class Calendar extends IonicNativePlugin {
return;
}
/**
* Returns options for a custom calender with specific color
*
* @return {NameOrOptions} Returns an object with the default options
*/
@Cordova({
sync: true
})
getCreateCalendarOptions(): NameOrOptions {
return;
}
/**
* Silently create an event.
* @param {string} [title] The event title
@@ -187,11 +205,13 @@ export class Calendar extends IonicNativePlugin {
* @returns {Promise<any>} Returns a Promise
*/
@Cordova()
createEvent(title?: string,
location?: string,
notes?: string,
startDate?: Date,
endDate?: Date): Promise<any> {
createEvent(
title?: string,
location?: string,
notes?: string,
startDate?: Date,
endDate?: Date
): Promise<any> {
return;
}
@@ -207,12 +227,14 @@ export class Calendar extends IonicNativePlugin {
* @returns {Promise<any>} Returns a Promise
*/
@Cordova()
createEventWithOptions(title?: string,
location?: string,
notes?: string,
startDate?: Date,
endDate?: Date,
options?: CalendarOptions): Promise<any> {
createEventWithOptions(
title?: string,
location?: string,
notes?: string,
startDate?: Date,
endDate?: Date,
options?: CalendarOptions
): Promise<any> {
return;
}
@@ -227,11 +249,13 @@ export class Calendar extends IonicNativePlugin {
* @returns {Promise<any>} Returns a Promise
*/
@Cordova()
createEventInteractively(title?: string,
location?: string,
notes?: string,
startDate?: Date,
endDate?: Date): Promise<any> {
createEventInteractively(
title?: string,
location?: string,
notes?: string,
startDate?: Date,
endDate?: Date
): Promise<any> {
return;
}
@@ -247,12 +271,14 @@ export class Calendar extends IonicNativePlugin {
* @returns {Promise<any>}
*/
@Cordova()
createEventInteractivelyWithOptions(title?: string,
location?: string,
notes?: string,
startDate?: Date,
endDate?: Date,
options?: CalendarOptions): Promise<any> {
createEventInteractivelyWithOptions(
title?: string,
location?: string,
notes?: string,
startDate?: Date,
endDate?: Date,
options?: CalendarOptions
): Promise<any> {
return;
}
@@ -267,11 +293,13 @@ export class Calendar extends IonicNativePlugin {
* @returns {Promise<any>}
*/
@Cordova()
findEvent(title?: string,
location?: string,
notes?: string,
startDate?: Date,
endDate?: Date): Promise<any> {
findEvent(
title?: string,
location?: string,
notes?: string,
startDate?: Date,
endDate?: Date
): Promise<any> {
return;
}
@@ -286,12 +314,14 @@ export class Calendar extends IonicNativePlugin {
* @returns {Promise<any>} Returns a Promise that resolves with the event, or rejects with an error.
*/
@Cordova()
findEventWithOptions(title?: string,
location?: string,
notes?: string,
startDate?: Date,
endDate?: Date,
options?: CalendarOptions): Promise<any> {
findEventWithOptions(
title?: string,
location?: string,
notes?: string,
startDate?: Date,
endDate?: Date,
options?: CalendarOptions
): Promise<any> {
return;
}
@@ -347,16 +377,18 @@ export class Calendar extends IonicNativePlugin {
@Cordova({
platforms: ['iOS']
})
modifyEvent(title?: string,
location?: string,
notes?: string,
startDate?: Date,
endDate?: Date,
newTitle?: string,
newLocation?: string,
newNotes?: string,
newStartDate?: Date,
newEndDate?: Date): Promise<any> {
modifyEvent(
title?: string,
location?: string,
notes?: string,
startDate?: Date,
endDate?: Date,
newTitle?: string,
newLocation?: string,
newNotes?: string,
newStartDate?: Date,
newEndDate?: Date
): Promise<any> {
return;
}
@@ -380,18 +412,20 @@ export class Calendar extends IonicNativePlugin {
@Cordova({
platforms: ['iOS']
})
modifyEventWithOptions(title?: string,
location?: string,
notes?: string,
startDate?: Date,
endDate?: Date,
newTitle?: string,
newLocation?: string,
newNotes?: string,
newStartDate?: Date,
newEndDate?: Date,
filterOptions?: CalendarOptions,
newOptions?: CalendarOptions): Promise<any> {
modifyEventWithOptions(
title?: string,
location?: string,
notes?: string,
startDate?: Date,
endDate?: Date,
newTitle?: string,
newLocation?: string,
newNotes?: string,
newStartDate?: Date,
newEndDate?: Date,
filterOptions?: CalendarOptions,
newOptions?: CalendarOptions
): Promise<any> {
return;
}
@@ -406,11 +440,13 @@ export class Calendar extends IonicNativePlugin {
* @return Returns a Promise
*/
@Cordova()
deleteEvent(title?: string,
location?: string,
notes?: string,
startDate?: Date,
endDate?: Date): Promise<any> {
deleteEvent(
title?: string,
location?: string,
notes?: string,
startDate?: Date,
endDate?: Date
): Promise<any> {
return;
}
@@ -428,12 +464,29 @@ export class Calendar extends IonicNativePlugin {
@Cordova({
platforms: ['iOS']
})
deleteEventFromNamedCalendar(title?: string,
location?: string,
notes?: string,
startDate?: Date,
endDate?: Date,
calendarName?: string): Promise<any> {
deleteEventFromNamedCalendar(
title?: string,
location?: string,
notes?: string,
startDate?: Date,
endDate?: Date,
calendarName?: string
): Promise<any> {
return;
}
/**
* Delete an event by id.
*
* @param {string} [id] The event id
* @param {Date} [fromDate] The date where it start deleting from
* @return Returns a Promise
*/
@Cordova()
deleteEventById(
id: string,
fromDate?: Date
): Promise<any> {
return;
}
@@ -446,5 +499,4 @@ export class Calendar extends IonicNativePlugin {
openCalendar(date: Date): Promise<any> {
return;
}
}

View File

@@ -0,0 +1,118 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface CallDirectoryItem {
label: string;
number: string;
}
export interface CallDirectoryLog {
plugin: string[];
extension: string[];
}
/**
* @name Call Directory
* @description
* This plugin can add phone numbers to an Callkit call directory extension. Call `reloadExtension` after using `addIdentification` and `removeIdentification`
* to process the changes in the call directory extension.
*
* @usage
* ```typescript
* import { CallDirectory } from '@ionic-native/call-directory/ngx';
*
*
* constructor(private callDirectory: CallDirectory) { }
*
*
* let items = [{label: "Hello", number: "123"}];
* this.callDirectory.addIdentification(items)
* .then((res: any) => console.log(res))
* .catch((error: any) => console.error(error));
*
* this.callDirectory.reloadExtension()
* .then(res: string) => console.log(res))
* .catch((error: any) => console.error(error));
* ```
*
* @Interfaces
* CallDirectoryItem
* CallDirectoryLog
*/
@Plugin({
pluginName: 'CallDirectory',
plugin: 'cordova-plugin-call-directory',
pluginRef: 'CallDirectory',
repo: 'https://github.com/GEDYSIntraWare/cordova-plugin-call-directory',
install: 'cordova plugin add cordova-plugin-call-directory --variable EXT_NAME="Cordova-Directory" --variable ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES="NO"',
installVariables: ['EXT_NAME', 'ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'],
platforms: ['iOS']
})
@Injectable()
export class CallDirectory extends IonicNativePlugin {
/**
* Check if the call directory extension is available and enabled
* @return {Promise<boolean>} Returns a promise with result
*/
@Cordova()
isAvailable(): Promise<boolean> {
return;
}
/**
* Add identification numbers
* @param {CallDirectoryItem[]} items Set of numbers with labels
* @return {Promise<any>} Returns a promise that resolves when numbers are added
*/
@Cordova()
addIdentification(items: CallDirectoryItem[]): Promise<any> {
return;
}
/**
* Remove identification numbers
* @param {CallDirectoryItem[]} items Set of numbers with arbitrary label
* @return {Promise<any>} Returns a promise that resolves when numbers are removed
*/
@Cordova()
removeIdentification(items: CallDirectoryItem[]): Promise<any> {
return;
}
/**
* Remove all items from call directory. Refreshes immediately.
* @return {Promise<any>} Returns a promise after refresh with message
*/
@Cordova()
removeAllIdentification(): Promise<any> {
return;
}
/**
* Get all numbers and labels in call directory
* @return {CallDirectoryItem[]} Returns a promise that resolves with an array of all items
*/
@Cordova()
getAllItems(): Promise<CallDirectoryItem[]> {
return;
}
/**
* Reload extension to process queued changes
* @return {Promise<string>} Returns a promise after refresh with message
*/
@Cordova()
reloadExtension(): Promise<string> {
return;
}
/**
* Get log from plugin and call directory extension
* @return {Promise<CallDirectoryLog>} Returns a promise with an object of log messages
*/
@Cordova()
getLog(): Promise<CallDirectoryLog> {
return;
}
}

Some files were not shown because too many files have changed in this diff Show More