Compare commits

...

229 Commits

Author SHA1 Message Date
Daniel Sogl
f1c7afd583 5.33.0 2021-05-11 08:22:23 +02:00
Daniel Sogl
8d8608bbfa chore(package): bump deps 2021-05-11 08:21:55 +02:00
Srinidhi
b2da307837 fix(unvired-cordova-sdk): Update the return type for startDiscoveryService api (#3647)
* 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

* feat(unvired-cordova-sdk): add methods to get and set log level

* fix(unvired-cordova-sdk): update the return type for getLog()

* feat(unvired-cordova-sdk): return platform name

* feat(unvired-cordova-sdk): add method to get log file path

* feat(unvired-cordova-sdk): test push notifications

* fix(unvired-cordova-sdk): define return for logRead

* doc(unvired-cordova-sdk): remove mobile only restriction for some apis

* feat(unvired-cordova-sdk): add new property containing HTTP status code.

* feat(unvired-cordova-sdk): add new functions to lock & unlock sending of data

* fix(unvired-cordova-sdk): update the return type for lock and unlock functions.

* fix(unvired-cordova-sdk): change the return type for lockDataSender api

* fix(unvired-cordova-sdk): fix the data type for ResultType and OutboxLockStatus

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

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

* feat(unvired-cordova-sdk): Added new notification type

* feat(unvired-cordova-sdk): delete outbox item based on lid

* fix(unvired-cordova-sdk): Update doc

* doc(unvired-cordova-sdk): Update doc for userSettings()

* feat(unvired-cordova-sdk): add new discovery api

* fix(unvired-cordova-sdk): rename the property

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

* fix(unvired-cordova-sdk): Update the return type for startDiscoveryService api

* doc(unvired-cordova-sdk): Rename the loginParameter languageCode to loginLanguage.

* changes after doing npm install

Co-authored-by: Srinidhi Anand Rao <srinidhi.rao@unvired.io>
2021-05-11 08:06:47 +02:00
Nandan B N
da4ce96be4 feat(ble): update with setPin to allow set device pin (#3652) 2021-05-11 08:06:11 +02:00
Noah Cooper
826f8085a4 feat(facebook): add new methods (#3654)
* Add new methods

* Update reauthorizeDataAccess response type
2021-05-11 08:05:45 +02:00
MaximBelov
c05b3e9672 feat(local-backup): add plugin (#3656) 2021-05-11 08:05:18 +02:00
MaximBelov
575229412b feat(restart): add plugin (#3657) 2021-05-11 08:04:58 +02:00
MaximBelov
065e80cccf feat(background-upload): add INITIALIZED state (#3658) 2021-05-11 08:03:31 +02:00
MaximBelov
50f8a452ad feat(system-alert-window-permission): add plugin (#3659) 2021-05-11 08:03:00 +02:00
MaximBelov
443515582b feat(branch-io): add initSessionWithCallback method (#3660) 2021-05-11 08:02:23 +02:00
dependabot[bot]
380a7f77d7 chore(deps): bump ssri from 6.0.1 to 6.0.2 (#3653)
Bumps [ssri](https://github.com/npm/ssri) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/npm/ssri/releases)
- [Changelog](https://github.com/npm/ssri/blob/v6.0.2/CHANGELOG.md)
- [Commits](https://github.com/npm/ssri/compare/v6.0.1...v6.0.2)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-11 08:01:31 +02:00
dependabot[bot]
96162c07df chore(deps): bump hosted-git-info from 2.8.8 to 2.8.9 (#3664)
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-11 08:01:16 +02:00
dependabot[bot]
a2511f5994 chore(deps): bump handlebars from 4.7.6 to 4.7.7 (#3663)
Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.7.6 to 4.7.7.
- [Release notes](https://github.com/wycats/handlebars.js/releases)
- [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/master/release-notes.md)
- [Commits](https://github.com/wycats/handlebars.js/compare/v4.7.6...v4.7.7)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-11 08:00:57 +02:00
Daniel Sogl
4d53d6d720 5.32.1 2021-04-15 22:48:12 +02:00
Daniel Sogl
3450399552 chore(package): bump deps 2021-04-15 22:47:57 +02:00
Hans Krywalsky
16fee2268a fix(network): onChange no longer causes error (#3651)
closes #3649
2021-04-15 22:42:29 +02:00
Daniel Sogl
6c99c3be03 5.32.0 2021-04-05 23:41:43 +02:00
Daniel Sogl
9b2374b3bc chore(package): bump deps 2021-04-05 23:41:28 +02:00
Laurent Goudet
b4227f2114 fix(build): publish Node (server) friendly bundles (#3483)
Co-authored-by: Daniel Sogl <mytechde@outlook.com>
2021-04-05 23:38:19 +02:00
Uglješa Erceg
0932e113b2 feat(adjust): add missing wrappers for cordova api (#3528)
* feat(adjust): add missing wrappers for cordova api

* feat(adjust): add missing wrappers for Adjust Cordova v4.26.0 API
2021-04-05 23:35:22 +02:00
Olyster
bbb96ed765 feat(sqlite):add androidDatabaseLocation Support (#3564)
* Update index.ts

* Update index.ts

Fix aterisk alignment to pass test
2021-04-05 23:34:28 +02:00
timkovik
31ee7efc22 feat(network): update Network plugin (#3608)
Extends onChange Observable with types of connection to which it changed
2021-04-05 23:33:36 +02:00
sertal70
2f69dd88cb feat(shortcuts-android): add cordova-plugin-shortcuts-android (#3609)
Co-authored-by: Sergio Talente <sergio@soundsofthings.com>
2021-04-05 23:32:58 +02:00
Luca Pawlik
f32da73a87 fix(bluetooth-le): add missing status type value and add missing (optional) address property to NotifyParams interface (#3613) 2021-04-05 23:32:25 +02:00
John Borges
cc79a1edb7 refactor(keychain-touch-id): more specific return types (#3615)
* chore: fixing typescript return types

* refactor(keychain-touch-id): more specific return types
2021-04-05 23:31:59 +02:00
Dominik Schwank
4fb07fa809 fix(app-rate): add missing types for onButtonClicked callback (#3616) 2021-04-05 23:31:43 +02:00
John Borges
3d7b777b19 feat(plugin): add MS App Center shared plugin (#3618)
* feat(plugin): add MS App Center shared plugin

* docs(app-center-shared): add incompatible doc
2021-04-05 23:31:29 +02:00
John Borges
2cb5f5c010 feat(plugin): add MS App Center LowMemory plugin (#3619)
* feat(plugin): add MS App Center LowMemory plugin

* refactor(app-center-low-memory): plugin decorator
2021-04-05 23:31:14 +02:00
Nico Lueg
46d0cecb27 feat(in-app-purchase-2): adds typings for transaction (#3621) 2021-04-05 23:30:53 +02:00
Sebastiaan Pasma
ca190db829 feat(plugin): Text to Speech Advanced (#3627)
* Text to speech advanced plugin

* Add @interface

* docs update

* jsdoc fix

* jsdoc fix
2021-04-05 23:30:28 +02:00
Noel De Martin
d698d5985b feat(network): declare connection enum with strings(#3630) 2021-04-05 23:30:07 +02:00
Adam Duren
8dcb6be4ea fix(in-app-purchase-2): fix typings for refresh (#3632)
Fixes the typings for the return value of `refresh` as described [here](https://github.com/j3k0/cordova-plugin-purchase/blob/dd6bf6f/doc/api.md#return-value-3)
2021-04-05 23:29:27 +02:00
Srinidhi
158bf637cd fix(unvired-cordova-sdk): changes to the property names and updated documentation (#3633)
* 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

* feat(unvired-cordova-sdk): add methods to get and set log level

* fix(unvired-cordova-sdk): update the return type for getLog()

* feat(unvired-cordova-sdk): return platform name

* feat(unvired-cordova-sdk): add method to get log file path

* feat(unvired-cordova-sdk): test push notifications

* fix(unvired-cordova-sdk): define return for logRead

* doc(unvired-cordova-sdk): remove mobile only restriction for some apis

* feat(unvired-cordova-sdk): add new property containing HTTP status code.

* feat(unvired-cordova-sdk): add new functions to lock & unlock sending of data

* fix(unvired-cordova-sdk): update the return type for lock and unlock functions.

* fix(unvired-cordova-sdk): change the return type for lockDataSender api

* fix(unvired-cordova-sdk): fix the data type for ResultType and OutboxLockStatus

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

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

* feat(unvired-cordova-sdk): Added new notification type

* feat(unvired-cordova-sdk): delete outbox item based on lid

* fix(unvired-cordova-sdk): Update doc

* doc(unvired-cordova-sdk): Update doc for userSettings()

* feat(unvired-cordova-sdk): add new discovery api

* fix(unvired-cordova-sdk): rename the property

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

Co-authored-by: Srinidhi Anand Rao <srinidhi.rao@unvired.io>
2021-04-05 23:29:10 +02:00
Fedello
9b7db588a1 feat(power-optimization): plugin initial wrapper (#3642)
* feat(power-optimization):  plugin initial wrapper

* fix(power-optimization): Sync methods
2021-04-05 23:28:39 +02:00
aboedo
5d71d0d2bb feat(purchases): bump cordova-plugin-purchases from 2.0.0 to 2.1.1 (#3639)
* feat(purchases): bump cordova-plugin-purchases from 2.0.0 to 2.1.0

* bump version number to 2.1.1
2021-04-05 23:28:23 +02:00
dependabot[bot]
c6ad5e41ff chore(deps): bump elliptic from 6.5.3 to 6.5.4 (#3635)
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.3 to 6.5.4.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.3...v6.5.4)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-05 23:28:08 +02:00
Philip Cesar Garay
b8de7f0721 feat(preview-any-file): add new methods for preview-any-file cordova (#3643)
* feat(adjust): add missing wrappers for cordova api

* feat(adjust): add missing wrappers for cordova api
2021-04-05 23:27:56 +02:00
dependabot[bot]
e5f710c8bb chore(deps): bump y18n from 3.2.1 to 3.2.2 (#3645)
Bumps [y18n](https://github.com/yargs/y18n) from 3.2.1 to 3.2.2.
- [Release notes](https://github.com/yargs/y18n/releases)
- [Changelog](https://github.com/yargs/y18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yargs/y18n/commits)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-05 23:27:23 +02:00
Daniel Sogl
239ae32ad3 5.31.1 2021-01-23 18:53:33 +01:00
Daniel Sogl
f7a3c7127a fix(build): add correct build script typings
Co-Authored-By: Daniel Sogl <mytechde@outlook.com>
2021-01-23 18:53:12 +01:00
Daniel Sogl
80a537c0db 5.31.0 2021-01-23 18:43:43 +01:00
Daniel Sogl
2ae986727a Merge branch 'master' of https://github.com/ionic-team/ionic-native 2021-01-23 18:43:24 +01:00
Daniel Sogl
7a4df59189 docs(android-notch): adjust example
Co-Authored-By: Daniel Sogl <mytechde@outlook.com>
2021-01-23 18:43:16 +01:00
Daniel Sogl
337bba62c5 Delete rebase.yml 2021-01-23 18:42:09 +01:00
Daniel Sogl
a96faf1378 chore(package): upgrade to angular 11
BREAKING CHANGE: ionic-native now requires at least Angular 10 with ts-lib 2.0

Co-Authored-By: Daniel Sogl <mytechde@outlook.com>
2021-01-23 18:33:36 +01:00
Daniel Sogl
0467787085 chore(package): bump deps 2021-01-23 18:21:10 +01:00
Hans Krywalsky
0efa33f257 feat(advanced-http): duplicate methods sync to be able to abort requests (#3575)
* initial

* finish http-changes
2021-01-23 18:17:45 +01:00
Stéphane JAIS
182b403f69 feat(wonderpush): remove isReady method. (#3580)
Co-authored-by: Stéphane JAIS <stephane@wonderpush.com>
2021-01-23 18:17:11 +01:00
Sebastiaan Pasma
ddd269e7ab feat(in-app-purchase-2): add redeem() for opening redeem code dialog in iOS (#3581) 2021-01-23 18:16:58 +01:00
capc0
6b18c3d061 fix(launch-navigator): enableGeolocation and enableGeocoding typings (#3584)
based of https://github.com/dpa99c/phonegap-launch-navigator/blob/master/uk.co.workingedge.phonegap.plugin.launchnavigator.d.ts

Co-authored-by: Daniel Sogl <mytechde@outlook.com>
2021-01-23 18:16:34 +01:00
Olga Koroleva
bd8fbb3e1f feat(mobile-messaging): add Lists and date time for customAttributes (#3586) 2021-01-23 18:15:05 +01:00
weichunlai
3d1a73ebcb refactor(blink) id by adding blink id recognizer(#3555) (#3590) 2021-01-23 18:14:46 +01:00
CrisPRuz
96890c7b92 feat(android-notch): add cordova plugin wrapper (#3592)
* feat(android-notch): cordova plugin wrapper

* Update index.ts

Co-authored-by: Cristina <cape@gft.com>
Co-authored-by: Daniel Sogl <daniel@sogls.de>
2021-01-23 18:13:09 +01:00
Niklas Merz
26fd76dad0 fix(launchnavigator): make appSelection accessible (#3594) 2021-01-23 18:12:30 +01:00
capc0
72c99603db fix(firebase-messaging): adjust deleteToken/removeToken signature
fix token remove function name according to https://github.com/chemerisuk/cordova-plugin-firebase-messaging#deletetoken
2021-01-23 18:12:12 +01:00
Jonathan Fernandez
e7bc1b6709 feat(firebase-authentication): add signInWithApple method (#3597) 2021-01-23 18:11:26 +01:00
Evgeniy
3e92f64484 feat(app-rate): update plugin functions (#3598)
* cordova-plugin-apprate

* Update index.ts
2021-01-23 18:11:14 +01:00
dependabot[bot]
de6dee7de4 chore(deps): bump node-notifier from 8.0.0 to 8.0.1 (#3599)
Bumps [node-notifier](https://github.com/mikaelbr/node-notifier) from 8.0.0 to 8.0.1.
- [Release notes](https://github.com/mikaelbr/node-notifier/releases)
- [Changelog](https://github.com/mikaelbr/node-notifier/blob/v8.0.1/CHANGELOG.md)
- [Commits](https://github.com/mikaelbr/node-notifier/compare/v8.0.0...v8.0.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-01-23 18:10:40 +01:00
aboedo
bed8797a60 feat(purchases): bump cordova-plugin-purchases from 1.3.2 to 2.0.0 (#3601) 2021-01-23 18:10:31 +01:00
Hans Krywalsky
b4f0f07064 feat(facebook): add setAutoLogAppEventsEnabled method (#3606) 2021-01-23 18:10:13 +01:00
Noah Cooper
e4b171930d feat(facebook): update api and logPurchase methods to include additional arguments(#3607) 2021-01-23 18:09:57 +01:00
Noah Cooper
4a796cafe9 refactor(facebook): use cordova-plugin-facebook-connect (#3603) 2021-01-19 12:50:07 +01:00
dependabot[bot]
2950ff14d7 chore(deps): bump highlight.js from 10.1.2 to 10.4.1 (#3588)
Bumps [highlight.js](https://github.com/highlightjs/highlight.js) from 10.1.2 to 10.4.1.
- [Release notes](https://github.com/highlightjs/highlight.js/releases)
- [Changelog](https://github.com/highlightjs/highlight.js/blob/master/CHANGES.md)
- [Commits](https://github.com/highlightjs/highlight.js/compare/10.1.2...10.4.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-12-11 11:49:37 +01:00
dependabot[bot]
376501ef7e chore(deps): bump ini from 1.3.5 to 1.3.7 (#3595)
Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.7.
- [Release notes](https://github.com/isaacs/ini/releases)
- [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.7)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-12-11 11:49:19 +01:00
Daniel
6b468662b6 5.30.0 2020-11-20 23:54:23 +01:00
Daniel Sogl
a209c61547 chore(package): bump deps 2020-11-20 23:54:04 +01:00
Hans Krywalsky
07d7ace97d feat(dfu-update): add DfuUpdate Plugin Wrapper (#3514)
* feat(dfu-update): add DfuUpdate Plugin Wrapper

* repo url changed

* updateFirmware options are now presented via Object

* import fixed
2020-11-19 08:40:46 +01:00
MaximBelov
13f6da69ef feat(background-upload): add plugin (#3539)
* feat(background-upload): add plugin

* fix(background-upload): update usage
2020-11-19 08:40:22 +01:00
rajgoenka
bb1064225d feat(CustomUiSDK): add plugin for Paytm Custom UI SDK (#3546)
* added custom-uisdk index file

* feat(CustomUiSDK): add plugin for Paytm Custom UI SDK

* removed template generated comments and added ngx at the end to the import
2020-11-19 08:40:00 +01:00
agarwalnaveen22
78e92422ab feat(multiple-document-picker): add plugin (#3551)
* feat(multiple-document-picker): add plugin

* removed package json related changes
2020-11-19 08:39:32 +01:00
Hans Krywalsky
46853b4212 feat(core): add methodName to Cordova Decorator (#3558)
closes #3557
2020-11-19 08:38:39 +01:00
František Spurný
f71b65d6a7 feat(smartlook): update to 1.6.0 (#3562) 2020-11-19 08:38:04 +01:00
amit-kremer93
e486cfd9bf feat(AppsFlyer): update to 6.x.x (#3563)
* align with AppsFlyer Cordova plugin V6

* Update index.ts

Co-authored-by: Daniel Sogl <daniel@sogls.de>
2020-11-19 08:37:36 +01:00
Tomás Novau
7897f28d26 Update index.ts (#3565)
Adding to README.md instructions for capacitor support on Android.
2020-11-19 08:36:12 +01:00
aboedo
0f197ad9fc feat(purchases): update to plugin version 1.3.2 (#3566) 2020-11-19 08:35:49 +01:00
Eric Gopak
d7c6f8628d feat(firebase-dynamic-links): Add missing method getDynamicLink() (#3567) 2020-11-19 08:35:29 +01:00
Rubén Alonso Silvestre
af114f48e4 feat(firebase-vision): add image labelling (#3569)
* feat(firebase-vision): add image labelling

* style(firebase-vision): update asterisks to pass lint

* fix(firebase-vision): fix interfaces
2020-11-19 08:35:04 +01:00
adarsh-chaudhary
fd0cddc9d0 feat(AllInOneSDK): add check to restrict app invocation (#3570)
* feat(AllInOneSDK): add plugin for Paytm All-in-One SDK

* feat(all-in-one-sdk): add check to restrict app invocation
2020-11-19 08:34:45 +01:00
Hans Krywalsky
b3d5baa46e feat(bluetooth-le): Allow specifying transport mode for Android (#3571) 2020-11-19 08:34:14 +01:00
MaximBelov
68d245ef2c feat(intercom): added displayCarousel, displayArticle, setBottomPadding (#3572) 2020-11-19 08:33:45 +01:00
Aleksandar Noveski
4dda714761 feat(cordova-plugin-imap) initial 'native wrapper' commit (#3573) 2020-11-19 08:33:16 +01:00
Peter Wilkniss
ba39f7e9f2 fix(clevertap): remove duplicated methods
Closes #3517. Closes #3491
2020-11-16 13:15:17 -05:00
Daniel Sogl
52da729b8c chore(ci): use node 14.x 2020-11-05 13:27:38 +01:00
Daniel Sogl
46e0d6d396 chore(ci): use node 14.x 2020-11-05 13:26:49 +01:00
Daniel Sogl
5fc4ceada4 chore(ci): use node 14.x 2020-11-05 13:26:23 +01:00
Daniel Sogl
f04f1f479f 5.29.0 2020-10-16 19:29:23 +02:00
Daniel Sogl
da72795081 chore(package): bump deps 2020-10-16 19:25:41 +02:00
Sidnei Luiz Becker
f3ce3c4930 feat(social-sharing): Add missing method shareViaWhatsAppToPhone(#3513) 2020-10-16 19:22:25 +02:00
Ryan Gibbs
5a77eabf76 feat(adjust): updating to match official typings (#3523) 2020-10-16 19:21:38 +02:00
Pawel86400
99e6a5398f feat(fingerprint-air): add new functions (#3530)
* Add the new "registerBiometricSecret" and "loadBiometricSecret" methods for 'fingerprint-aio' plugin

* Update the response type for `loadBiometricSecret`

* Add new error msg for Secret not Found
2020-10-16 19:21:10 +02:00
Konstantin
14ec32b83c feat(mobile-messaging): add new fields to Message type and new method to display chat view (#3531)
Co-authored-by: Konstantin Latypov <Konstantin.Latypov@infobip.com>
2020-10-16 19:20:20 +02:00
Matt Barr
7b0195bdf4 fix(http): add missing type to serialiser property (#3532)
cordova http API allows for 'raw' serializer, and in fact 'raw' is referenced in several places in this file. It is even possible to set the serializer using `setDataSerializer('raw')`

This serializer is required for sending binary data.
2020-10-16 19:19:49 +02:00
adarsh-chaudhary
1f48c31a8e feat(all-in-one-sdk): add plugin for Paytm All-in-One SDK (#3536) 2020-10-16 19:19:05 +02:00
Hans Krywalsky
c62c137723 fix(diagnostics): locationAccuracyAuthorization Property missing in build (#3540) 2020-10-16 19:17:36 +02:00
Marius C. Bolik
3340e9a694 feat(appsfyler): add property waitForATTUserAuthorization to AppsflyerOptions (#3541) 2020-10-16 19:17:16 +02:00
Rodolfo Patane
4766ec7a35 fix(music-controls): update associated cordova plugin (#3543)
The original project message in github.com:

No longer maintained.
Gavin Henry (ghenry22) has been maintaining a fork that should be updated and working better than this one. Please use his fork.
2020-10-16 19:15:50 +02:00
MaximBelov
a37ea81488 chore(file-transfer): undeprecate (#3542) 2020-10-16 19:15:34 +02:00
aboedo
b5f7f952df feat(purchases): update to plugin version 1.3.0 (#3547) 2020-10-16 19:13:20 +02:00
David
5d1b5d5fda feat(firebase-x): add setLanguageCode method for auth (#3548)
Co-authored-by: david <david@192.168.1.36>
2020-10-16 19:12:52 +02:00
Erik
b2e82bea62 fix(in-App-purchase2) Correct type definition for date fields (#3549) 2020-10-16 19:09:38 +02:00
Pataar
d2a6b13059 docs(luxand): improve docs (#3550) 2020-10-16 19:09:13 +02:00
jcesarmobile
ce9db34e24 fix(in-app-purchase-2): change in-app-purchase-2 plugin id (#3553)
it was renamed from cc.fovea.cordova.purchase to cordova-plugin-purchase
2020-10-16 19:07:56 +02:00
Ville Raikko
36ae7dcad9 firebase-x: Add missing function reloadCurrentUser() (#3527) 2020-09-10 08:28:32 -04:00
Nicholas Hyatt
adca021f39 Merge pull request #3519 from ionic-team/remove-premier-apple-wallet-cta
remove the apple wallet premier decorator
2020-08-28 10:03:29 -05:00
Nicholas Hyatt
308e0f3f33 remove the apple wallet premier decorator 2020-08-28 09:59:25 -05:00
Daniel Sogl
8ce71132b0 5.28.0 2020-08-14 17:56:09 +02:00
Daniel Sogl
f6bf48d9b2 chore(package): bump deps 2020-08-14 17:53:47 +02:00
David Boho
579170a99e fix(geolocation): #3303 geolocation watchPosition return type (#3470)
* fix #3303 geolocation watchPosition return type

* watchPosition align docs
2020-08-14 17:38:14 +02:00
MohammadAli Zarei Matin
b0ffb0ec4a fix(metrix): change firebase api (#3473) 2020-08-14 17:37:21 +02:00
Cristiano Fromagio
eec3fec7ff feat(onesignal): add in-app messages methods (#3481) 2020-08-14 17:35:32 +02:00
Cesar de la Vega
a010bb1869 feat(purchases): update to plugin version 1.2.0 (#3482)
* updates to 1.2.0

* fixes linter errors
2020-08-14 17:35:06 +02:00
Aditya Sharma
26d10ef633 feat(clover-go): add support to pass signature and void payment (#3485)
Added support to pass signature incase the card payment require signature for authorisation
Added support to void any payment
Removed iOS platform for now as it will be supported in coming releases
2020-08-14 17:34:04 +02:00
Don Coleman
d7ccd454fb feat(nfc): update to phonegap-nfc@1.2.0 (#3486) 2020-08-14 17:33:43 +02:00
Nico Lueg
fab667f22c removed interface that doesn't apply to the api (#3487) 2020-08-14 17:33:22 +02:00
Hans Krywalsky
ccca644134 feat(diagnostics): Add support for new iOS14-LocationAccuracy Permission (#3490)
* feat(diagnostics): add support for new iOS14-LocationAccuracy Permission

* linting fixed
2020-08-14 17:32:47 +02:00
陈龙明
b4462d5e6c fix(ble): add missing method "isLocationEnabled" (#3495) 2020-08-14 17:32:01 +02:00
František Spurný
5aa5757795 feat(smartlook): update to 1.5.2 (#3498) 2020-08-14 17:31:40 +02:00
Carl Poole
85eaf92e58 docs(android): badges fyi for android docs (#3502) 2020-08-14 17:31:22 +02:00
Stefanic
1ffad79320 fix(ibeacon): undefined locationManager (#3505)
Change some cordova.plugins calls to window.cordova.plugins to
prevent 'Cannot read property 'locationManager' of undefined'
2020-08-14 17:31:03 +02:00
deniszpua
44f86f3ce5 fix(hyper-track): update to the modern sdk (#3508)
* Lint warnings fixed

* Misleading and unnecessary log statement removed
2020-08-14 17:30:41 +02:00
CodeTroopers
25bf7437b5 fix(ble) #3506 : leave a chance to client to reorder sequences (#3509)
* Fix #3506

* Update documenation
2020-08-14 17:30:18 +02:00
Matt Netkow
f413dab4e2 docs(spotify): Spotify Auth & Firebase Crashlytics 2020-08-10 09:10:32 -05:00
Matt Netkow
68c11192cd update 2020-08-10 09:02:32 -05:00
Daniel Sogl
5ec63841c3 chore(deps-dev): bump lodash from 4.17.15 to 4.17.19 (#3489)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-07 10:47:30 +02:00
dependabot[bot]
a9294ecb51 chore(deps): bump elliptic from 6.5.2 to 6.5.3 (#3496)
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.2 to 6.5.3.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.2...v6.5.3)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-07 10:47:17 +02:00
dependabot[bot]
c12aa6c9fa chore(deps-dev): bump lodash from 4.17.15 to 4.17.19
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-15 21:52:19 +00:00
Daniel Sogl
9f27d54f0e 5.27.0 2020-06-23 19:09:13 +02:00
Daniel Sogl
343cf7356f chore(package): bump deps 2020-06-23 19:06:37 +02:00
Konstantinos Tsanakas
7c95e66021 fix(camera-preview): tapFocus (#3467) 2020-06-23 19:03:42 +02:00
Edem Morny
9bf1eafc4e feat(vibes): add support for inbox messaging (#3466) 2020-06-23 19:03:09 +02:00
Knut Erik Langdahl
7b998b9644 feat(build-info): add plugin (#3465)
* feat(build-info): add plugin

* Update index.ts

Co-authored-by: Knut Erik Langdahl <knut.erik.langdahl@bekk.no>
Co-authored-by: Daniel Sogl <daniel@sogls.de>
2020-06-23 19:02:12 +02:00
Praveen Challa
7ae1df2489 feat(camera-preview): add record video functions (#3463)
* Update index.ts

Added video instance

* Fixed lints

Fixed lints
2020-06-23 19:01:14 +02:00
Miquel
b2afc131ca feat(admob): add interfaces and method typings (#3461)
* Update docs

* feat(cordova-admob) add interfaces and methods

Co-authored-by: Miquel Martín <miquel.martin@appfeel.com>
2020-06-23 19:00:31 +02:00
Victor Dias
32203e9ac1 feat(firebase-x): add missing methods from plugin, incl. authenticateUserWithApple (#3458) 2020-06-23 19:00:06 +02:00
Victor Dias
66896b2632 fix(firebase-x): indicate callback methods to verifyPhoneNumber (#3457)
- and remove callbacks methods on verifyNumber and signInWithCredential functions
2020-06-23 18:59:45 +02:00
Calum Murray
fe21b5b97c fix(app-rate): Add missing "openUrl" property to AppRatePreferences object (#3456) 2020-06-23 18:59:02 +02:00
Calum Murray
40b9295de6 fix(launch-review): Allow rating() callback to be invoked multiple times (#3455) 2020-06-23 18:58:22 +02:00
Daniel Sogl
2923504c7d chore(GitHub): pass trough GitHub variables 2020-06-11 19:30:09 +02:00
Daniel Sogl
030a78fc1b chore(docs): use GitHub variables 2020-06-11 19:27:38 +02:00
Daniel Sogl
aa535844b0 chore(GitHub): cache ionic site files 2020-06-11 18:59:40 +02:00
Daniel Sogl
be3f73a921 chore(GitHub): run docs deploy script on master 2020-06-11 18:53:25 +02:00
Daniel Sogl
809d664cf4 chore(GitHub): run docs prepare script on master 2020-06-11 18:47:26 +02:00
Daniel Sogl
4f2f8894d5 chore(GitHub): run git config script 2020-06-11 18:41:20 +02:00
philkry
742ff65596 feat(ios-aswebauthenticationsession): add plugin (#3421)
* feat(ios-aswebauthenticationsession): add plugin

* Update index.ts

* returning string instead of any

Co-authored-by: Daniel Sogl <daniel@sogls.de>
2020-06-11 18:14:21 +02:00
mcelikdev
79c3284434 feat(chooser): add getFileMetadata (#3425) 2020-06-11 18:13:34 +02:00
Rubén Alonso Silvestre
1aacb487a4 feat(firebase-vision): add barcodeDetector (#3426) 2020-06-11 18:10:08 +02:00
André Tissot
ef17dc5d07 feat(fcm): add requestPushPermissionIOS and createNotificationChannelAndroid functions (#3430) 2020-06-11 18:09:47 +02:00
bsorrentino
324334eb28 feat(broadcaster): align plugin API to version 4.1.0 (#3432) 2020-06-11 18:08:35 +02:00
Daniel Zen
389a3fb215 fix(jumio): update plugin reference and source (#3428)
* feat(jumio): add plugin

* Update index.ts

* docs(example & cordova repo)

* remove space at end of plugin name

* Readme description doesn't generate md file properly under certain conditions

Co-authored-by: Daniel Sogl <daniel@sogls.de>
2020-06-11 18:01:55 +02:00
SuryaClevertap
3df35b40ce feat(CleverTap): Update Plugin for Parity Support (#3435)
* feat(clevertap): add CleverTap plugin

* style(clevertap): cleanup stray lint error

* refactor

* feat(clevertap): update for latest CleverTap Cordova plugin

* chore: Update Repo from Ionic Native Repo

* fix: Code Changes for parity SDK-155

* fix: Indentation fixes for SDK-155

* fix: Code Repo fix while updating fork branch

* fix: Remove unnecessary adder .scripts Folder

* fix: Remove unwanted added folder .circleci

* fix: Remove unwanted added File .npmrc

* fix: Revert .Github Folder Changes to as per Ionic-Native master

* fix: Update changes as per ionic-native master

* fix: Code Repo fix while updating fork branch

fix: Remove unnecessary adder .scripts Folder

fix: Remove unwanted added folder .circleci

fix: Remove unwanted added File .npmrc

fix: Revert .Github Folder Changes to as per Ionic-Native master

fix: Update changes as per ionic-native master

Co-authored-by: Peter Wilkniss <peter@clevertap.com>
Co-authored-by: Daniel Sogl <mytechde@outlook.com>
Co-authored-by: Darshan Pania <darshan@clevertap.com>
2020-06-11 18:00:48 +02:00
Keenan Hawekotte
7f0975803f feat(firebase-dynamic-links): Update plugin for parity (#3437)
* Include other methods from cordova-firebase-dynamiclinks plugin

* Remove unnecessary dependency

* Run update to reset package lockfile
2020-06-11 18:00:11 +02:00
Jakob Engelbrecht
dc6e3313bb docs(our): add deprecation warning (#3439) 2020-06-11 17:59:34 +02:00
Frank Noorloos
4575cb6050 docs(mixpanel): add deprecated on identify (#3444) 2020-06-11 17:58:20 +02:00
Victor Dias
191c7a044d fix(firebase-x): add fakeVerificationCode param to verifyPhoneNumber (#3451)
- also fix misspelled timeOutDuration required param
2020-06-11 17:57:55 +02:00
Matt Netkow
46bbf633e4 Add premier and capIncompat metadata to plugins (#3453) 2020-06-11 17:56:34 +02:00
Matt Netkow
1567e8ff2f chore(readme): add community vs enterprise distinction 2020-06-09 10:38:08 -05:00
Daniel Sogl
69117131bd chore(package): bump deps 2020-05-20 09:39:50 +02:00
Daniel Sogl
8f20fc82f3 5.26.0 2020-05-16 14:51:11 +02:00
Daniel Sogl
3ddd672e00 chore(GitHub): add rebase action 2020-05-16 14:47:26 +02:00
Daniel Sogl
0f1cde634f chore(lint): run hook on all files 2020-05-16 14:44:54 +02:00
Daniel Sogl
4338c1c5ed chore(lint): extend prettier rules 2020-05-16 14:44:16 +02:00
Daniel Sogl
511a02d50b refactor(lib): run prettier 2020-05-16 14:40:49 +02:00
Daniel Sogl
f5133c691d feat(lib): add prettier 2020-05-16 14:40:25 +02:00
Daniel Sogl
12606198f6 chore(package): bump deps 2020-05-16 14:31:42 +02:00
Daniel Zen
13a8a6f1d9 feat(jumio): add plugin (#3423)
* feat(jumio): add plugin

* Update index.ts

Co-authored-by: Daniel Sogl <daniel@sogls.de>
2020-05-16 13:41:03 +02:00
Daniel Zen
e59a989fab fix(secure-storage-echo): method is inaccessible when device is not secure #3322 (#3424) 2020-05-16 13:35:54 +02:00
Daniel Sogl
fd8d83a48a chore(deps): bump typedoc to 0.17 2020-05-15 12:23:01 +02:00
Daniel Sogl
1dfd8a017a chore(package): bump deps 2020-05-15 12:13:28 +02:00
Daniel Zen
e715498d33 fix(secure-storage-echo): method is inaccessible when device is not secure #3322 (#3413) 2020-05-15 12:05:14 +02:00
Akshay Dwivedi
809e5ac14d feat(firebase-x): add getCurrentUser (#3389)
* feat(firebase-x): add getCurrentUser

add getCurrentUser method. fixes #3356

* Update index.ts

* resolve merge conflict

* resolve merge conflicts

Co-authored-by: Daniel Sogl <mytechde@outlook.com>
2020-05-15 12:04:15 +02:00
sync667
9892ce7a61 feat(in-app-purchase-2): add update function (#3416)
* feat(in-app-purchase-2): add update

Add update method from plugin. Fixes: #3411

* Trailing fix.

Whitespace removed.
2020-05-15 12:03:37 +02:00
Joshua Sherer
180b665c4b feat(native-view): add plugin (#3418)
* feat(native-view): add plugin

* feat(native-view): add plugin
2020-05-15 12:02:47 +02:00
MohammadAli Zarei Matin
26c912092c feat(metrix): add plugin (#3419) 2020-05-15 12:02:09 +02:00
Daniel Sogl
40e2a2e291 5.25.0 2020-05-05 11:19:34 +02:00
Daniel Sogl
85c3c47998 chore(package): bump deps 2020-05-05 11:16:27 +02:00
Paolo Tesser
825b2d6970 feat(pushape-push): add plugin (#3405) 2020-05-05 11:09:58 +02:00
František Spurný
ea053ccbe6 feat(smartlook): new api methods (#3402) 2020-05-05 11:06:55 +02:00
Alexander Bogdanov
c403330c0a feat(appsflyer): added registerUninstall function (#3401)
* fix(appsflyer): added missing registerUninstall()

According to appsflyer docs, there should be *registerUninstall()* method to allow tracking uninstalls for iOS:

https://github.com/AppsFlyerSDK/appsflyer-cordova-plugin/blob/master/docs/API.md#-registeruninstalltoken-void

* fixed asterisk alignment to pass CI test

* removed whitespace to pass CI test
2020-05-05 11:06:25 +02:00
Rubén Alonso Silvestre
a3d54a34b8 feat(firebase-vision): add plugin (#3400) 2020-05-05 11:04:21 +02:00
dependabot[bot]
3099b8c76c chore(deps): bump jquery from 3.4.1 to 3.5.0 (#3397)
Bumps [jquery](https://github.com/jquery/jquery) from 3.4.1 to 3.5.0.
- [Release notes](https://github.com/jquery/jquery/releases)
- [Commits](https://github.com/jquery/jquery/compare/3.4.1...3.5.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-05-05 11:03:37 +02:00
ebeling
8eacf8817c fix(bluetooth-le): change reconnect return signature to Observable<DeviceInfo> fixes #3374 (#3394) 2020-05-05 11:03:27 +02:00
Akshay Dwivedi
eceb7ca1fc feat(background-fetch): add taskId to finish method (#3390)
add taskId to finish method in background fetch. fixes #3361
2020-05-05 11:03:03 +02:00
Akshay Dwivedi
3d46715b9c feat(firebase-x): add getId (#3388)
* feat(firebase-x): add getId

add getId to get app instance id. fixes #3378

* Update index.ts
2020-05-05 11:01:26 +02:00
Akshay Dwivedi
e09592d2b9 feat(admob-plus): add setDevMode (#3387)
* feat(admob-plus): add setDevMode

fixes #3384 . add setDevode for admob-plus

* Update index.ts
2020-05-05 11:01:10 +02:00
aalshberi
61bbe3980c fix(firebase-x): return document id (#3386)
* fix for #3385

* adding spaces
2020-05-05 11:00:37 +02:00
Ashaba John
1db0ff741f feat(vibes-push-plugin): add Vibes Push plugin wrapper (#3368) 2020-05-05 10:59:44 +02:00
tatham
a391e37f90 feat(native-storage): add initWithSuiteName (#3365)
* feat(native-storage): add initWithSuiteName

* feat(native-storage): add initWithSuiteName

Co-authored-by: Colin Tatham <colin.tatham@melbournewater.com.au>
2020-05-05 10:59:13 +02:00
Daniel Sogl
3e0b0750d8 5.24.0 2020-04-17 05:32:35 +02:00
Daniel Sogl
b426819f92 chore(package): bump deps 2020-04-17 05:29:57 +02:00
Hitesh Jain
9e2f670d9d feat(usabilla-cordova-sdk): add plugin (#3362)
* feat(usabilla-cordova-sdk): add plugin

* fix(usabilla-cordova-sdk): Added interface for correct response
2020-04-17 05:21:50 +02:00
Don Coleman
8c25d1e311 feat(nfc): update to phonegap-nfc@1.1.1 (#3381) 2020-04-17 05:21:01 +02:00
San Leen
6458640ba7 feat(wechat): add openMiniProgram method (#3380) 2020-04-16 14:11:59 +02:00
Aditya Sharma
be05235a6e feat(clover-go): add CloverGo plugin (#3376)
* feat(clovergo): add CloverGo plugin

* fix(clovergo): remove template comments and added dscription

* fix(clovergo): Remove template comments, empty property and returned response interface

* fix(clovergo): Updated comments with correct returned response interface
2020-04-16 14:10:22 +02:00
Onyemaechi Okafor
83196bc947 feat(shop-checkout): add plugin (#3337)
* feat(plugin): ShopCheckout

* Add typings for returned promises
2020-04-15 21:33:06 +02:00
Kaspar
d2d5a5a96c docs(validateExpiryDate): expMonth param month 0 to 11 (#3349) 2020-04-15 21:30:49 +02:00
xtarx
bb80d00f58 signInWithVerificationId parameter mismatch (#3354)
by.chemerisuk.cordova.firebase.FirebaseAuthenticationPlugin.signInWithVerificationId argument 2 has type java.lang.String, got java.lang.Integer

smsCode has to be string instead of number
2020-04-15 21:29:46 +02:00
waliu
bfee712cdc feat(gao-de-location): update wrapper to match version 2.0.5 (#3358)
* Plug in update to 2.0.5

* Plug in update to 2.0.5
2020-04-15 21:29:07 +02:00
Ales Rosina
83bb4a96f9 fix(in-app-browser): add missing 'no' type (#3359) 2020-04-15 21:26:40 +02:00
Andrew Decker
e1350a2e7e feat(firebase-messaging): add getInstanceId (#3364) 2020-04-15 21:24:04 +02:00
Mark de Groot
96e9b19732 fix(health): HealthQueryOptionsAggregated bucket optional (#3370)
As said in the comment: `if specified, aggregation is grouped an array of "buckets" (windows of time),` the `bucket` field in `HealthQueryOptionsAggregated` should be optional.
2020-04-15 21:21:18 +02:00
Matt Netkow
3e78462163 docs(README): Add Ionic React and Capacitor usage instructions 2020-04-10 09:12:27 -05:00
Solee Choi
47b85a80a9 fix(iamport-cordova): fix data type of card_quota(#3372) 2020-04-09 13:35:49 +02:00
Konstantin
3af9c48f05 feat(MobileMessaging): add support for CustomEvents (#3373)
* feat(MobileMessaging): add methods for CustomEvents support

* fix(MobileMessaging) change customAttributes type

* fix(MobileMessaging): change methods return type

Co-authored-by: Konstantin Latypov <Konstantin.Latypov@infobip.com>
2020-04-09 13:34:19 +02:00
aboedo
739fe89400 feat(purchases): update to the latest plugin version (#3371) 2020-04-09 13:33:33 +02:00
Daniel Sogl
1f3bc1208c 5.23.0 2020-03-22 11:11:50 +01:00
Daniel Sogl
f896440ae2 chore(package): bump deps 2020-03-22 11:09:42 +01:00
kostap13
96e6711776 feat(mobile-messaging): add plugin (#3338)
* feat(MobileMessaging): add MobileMessaging plugin

* Update index.ts

* Update index.ts

Co-authored-by: Konstantin Latypov <Konstantin.Latypov@infobip.com>
Co-authored-by: Daniel Sogl <daniel@sogls.de>
2020-03-22 11:04:09 +01:00
Nick Vahalik
664e257442 feat(in-app-purchase-2): feat(in-app-purchase-2): update types and add getApplicationUsername function (#3320)
* Fixing interface types.

* Adding applicationUsername.
2020-03-22 11:00:42 +01:00
Srinidhi
2d1e2db9cd fix(unvired-cordova-sdk): fix the data type for ResultType and OutboxLockStatus (#3334)
* 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

* feat(unvired-cordova-sdk): add methods to get and set log level

* fix(unvired-cordova-sdk): update the return type for getLog()

* feat(unvired-cordova-sdk): return platform name

* feat(unvired-cordova-sdk): add method to get log file path

* feat(unvired-cordova-sdk): test push notifications

* fix(unvired-cordova-sdk): define return for logRead

* doc(unvired-cordova-sdk): remove mobile only restriction for some apis

* feat(unvired-cordova-sdk): add new property containing HTTP status code.

* feat(unvired-cordova-sdk): add new functions to lock & unlock sending of data

* fix(unvired-cordova-sdk): update the return type for lock and unlock functions.

* fix(unvired-cordova-sdk): change the return type for lockDataSender api

* fix(unvired-cordova-sdk): fix the data type for ResultType and OutboxLockStatus

Co-authored-by: Srinidhi Anand Rao <srinidhi.rao@unvired.io>
2020-03-22 10:59:56 +01:00
Daniel Sogl
58ea528ee5 Merge remote-tracking branch 'origin/master' 2020-03-22 10:55:15 +01:00
mkw
5471696664 fix(cordova-firebase-x): updated methods (#3339)
* fixed firebase-x ts file

* formatting

* remove config file

* spacing
2020-03-22 10:55:11 +01:00
mkw
5d768b2b9e fix(cordova-firebase-x) updated methods (#3339)
* fixed firebase-x ts file

* formatting

* remove config file

* spacing
2020-03-22 10:54:58 +01:00
Lucas
a0f91635fc feat(admob-free): add missing config properties (#3344) 2020-03-22 10:54:32 +01:00
Nick Vanselow
7bcbca7696 fix(email-composer): fix error when no mail apps (#3347)
When there are no apps installed that can handle "mail" then the "apps" array is returned as `null` from the plugin. Ensure we don't try to call `length` on `null`.
2020-03-22 10:54:00 +01:00
Daniel Sogl
52fc9f85ad Merge remote-tracking branch 'origin/master' 2020-03-22 10:53:26 +01:00
Miquel
fe89f2bf96 fix(admob): fix interstitialAdId parameter typo (#3348)
Co-authored-by: Miquel Martín <miquel.martin@appfeel.com>
2020-03-22 10:53:12 +01:00
Miquel
a57000a55a Update docs (#3348)
Co-authored-by: Miquel Martín <miquel.martin@appfeel.com>
2020-03-22 10:52:56 +01:00
dependabot[bot]
4091b1b37a chore(deps): bump acorn from 6.4.0 to 6.4.1 (#3345)
Bumps [acorn](https://github.com/acornjs/acorn) from 6.4.0 to 6.4.1.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/6.4.0...6.4.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-03-14 12:03:51 +01:00
dependabot[bot]
78c3be4c9b chore(deps-dev): bump minimist from 1.2.0 to 1.2.2 (#3346)
Bumps [minimist](https://github.com/substack/minimist) from 1.2.0 to 1.2.2.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.0...1.2.2)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-03-14 12:03:37 +01:00
Daniel Sogl
8e9575b6aa 5.22.0 2020-02-28 19:03:14 +01:00
Daniel Sogl
83eace835a chore(package): bump deps 2020-02-28 19:02:58 +01:00
Solee Choi
6277d8e997 feat(iamport-cordova): add iamport-cordova plugin on ionic-native (#3285)
* feat(iamport-cordova): add iamport-cordova plugin on ionic-native

* Update index.ts

* document cordova functions specifically

* fix lint error

* add document befroe function declarations

* Update index.ts

Co-authored-by: Daniel Sogl <daniel@sogls.de>
2020-02-28 19:01:23 +01:00
Srinidhi
53213bb57a feat(unvired-cordova-sdk): add new functions to lock and unlock sending of data (#3329)
* 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

* feat(unvired-cordova-sdk): add methods to get and set log level

* fix(unvired-cordova-sdk): update the return type for getLog()

* feat(unvired-cordova-sdk): return platform name

* feat(unvired-cordova-sdk): add method to get log file path

* feat(unvired-cordova-sdk): test push notifications

* fix(unvired-cordova-sdk): define return for logRead

* doc(unvired-cordova-sdk): remove mobile only restriction for some apis

* feat(unvired-cordova-sdk): add new property containing HTTP status code.

* feat(unvired-cordova-sdk): add new functions to lock & unlock sending of data

* fix(unvired-cordova-sdk): update the return type for lock and unlock functions.

* fix(unvired-cordova-sdk): change the return type for lockDataSender api
2020-02-28 18:56:54 +01:00
Amine
18bee4e298 fix(fcm): add missing clearAllNotifications, hasPermission and getAPNSToken (#3331)
* fix(fcm): add missing clearAllNotifications

* getAPNSToken method added

New version of `cordova-plugin-fcm-with-dependecy-updated` released: v4.0.0

_“The old FCMPlugin.getToken is focused on retrieving the FCM Token. For the IOS, APNS token can now be retrieved by the new method”_ (Show readme)[https://github.com/andrehtissot/cordova-plugin-fcm-with-dependecy-updated#version-400-12102019]

* hasPermission added

[Show readme.md](https://github.com/andrehtissot/cordova-plugin-fcm-with-dependecy-updated#version-320-16092019)

#### Checking for permissions
Useful for IOS. On android, it will always return `true`.

```javascript
FCMPlugin.hasPermission(function(doesIt){
    // doesIt === true => yes, push was allowed
    // doesIt === false => nope, push will not be available
    // doesIt === null => still not answered, recommended checking again later
    if(doesIt) {
        haveFun();
    }
});
```
# Conflicts:
#	src/@ionic-native/plugins/fcm/index.ts

Co-authored-by: Alexis Caffa <AlexisCaffa@users.noreply.github.com>
2020-02-28 18:56:08 +01:00
Daniel Sogl
7277c0fbe5 5.21.6 2020-02-22 12:36:15 +01:00
Daniel Sogl
b274a70ed9 chore(package): bump deps 2020-02-22 12:32:53 +01:00
Ray Chavez
a8eebb9212 fix(apple-pay): fix PKPaymentRequest must have valid merchantCapabilities in iOS 12 & 13 #3314
add missing IMerchantCapabilities and ISupportedNetworks types
2020-02-22 12:28:03 +01:00
gine
300f75ef92 fix(secure-storage): method is inaccessible when device is not secure #3322 2020-02-22 12:25:59 +01:00
mkw
45218102f3 feat(keychain-touch-id): added userAuthenticationRequired parameter to save method (#3324)
* added userAuthenticationRequired parameter to save method

* fixed whitespace
2020-02-22 12:23:38 +01:00
358 changed files with 16168 additions and 7181 deletions

View File

@@ -9,7 +9,7 @@ jobs:
strategy:
matrix:
node-version: [12.x]
node-version: [14.x]
steps:
- uses: actions/checkout@v1
@@ -17,6 +17,17 @@ jobs:
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Cache ionic site
id: ionic-site
uses: actions/cache@v2
with:
path: ~/ionic-site/
key: ionic-site-${{ hashFiles('**/package-lock.json') }}
- name: Setup git
run: bash ./scripts/git/config.sh
- name: Prepare ionic-site repo
if: github.ref == 'refs/heads/master'
run: bash ./scripts/docs/prepare.sh
- name: Install dependencies
run: npm ci
- name: Lint
@@ -27,5 +38,9 @@ jobs:
run: npm run test
- name: Readmes
run: npm run readmes
- name: Deploy doc
if: github.ref == 'refs/heads/master'
run: bash ./scripts/docs/update_docs.sh
env:
CI: true
GITHUB_PROJECT_REPONAME: ${{ github.repository }}
GITHUB_SHA1: ${{ github.sha }}

View File

@@ -11,7 +11,7 @@ jobs:
- uses: actions/checkout@v1
- uses: actions/setup-node@v1
with:
node-version: 12
node-version: 14
- name: Install dependencies
run: npm ci
- name: Lint
@@ -30,7 +30,7 @@ jobs:
- uses: actions/checkout@v1
- uses: actions/setup-node@v1
with:
node-version: 12
node-version: 14
registry-url: https://registry.npmjs.org/
- run: npm ci
- run: npm run shipit

1
.husky/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
_

4
.husky/pre-commit Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no-install lint-staged

4
.husky/pre-push Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npm test

9
.prettierignore Normal file
View File

@@ -0,0 +1,9 @@
package.json
node_modules
.github
.vscode
dist
CHANGELOG.md
.husky
.prettierignore
LICENSE

View File

@@ -1,3 +1,325 @@
# [5.33.0](https://github.com/ionic-team/ionic-native/compare/v5.32.1...v5.33.0) (2021-05-11)
### Bug Fixes
* **unvired-cordova-sdk:** Update the return type for startDiscoveryService api ([#3647](https://github.com/ionic-team/ionic-native/issues/3647)) ([b2da307](https://github.com/ionic-team/ionic-native/commit/b2da3078372c336864ab78528c5ae0c13a81a27b))
### Features
* **background-upload:** add INITIALIZED state ([#3658](https://github.com/ionic-team/ionic-native/issues/3658)) ([065e80c](https://github.com/ionic-team/ionic-native/commit/065e80cccf142d283075a800bdd46656cb613a0f))
* **ble:** update with setPin to allow set device pin ([#3652](https://github.com/ionic-team/ionic-native/issues/3652)) ([da4ce96](https://github.com/ionic-team/ionic-native/commit/da4ce96be4fc0dd763405f53498b11b00974f771))
* **branch-io:** add initSessionWithCallback method ([#3660](https://github.com/ionic-team/ionic-native/issues/3660)) ([4435155](https://github.com/ionic-team/ionic-native/commit/443515582b380fe6643c6db19a5f17999e979d5b))
* **facebook:** add new methods ([#3654](https://github.com/ionic-team/ionic-native/issues/3654)) ([826f808](https://github.com/ionic-team/ionic-native/commit/826f8085a45c39eb2c43d60bd98d34ff5619ce82))
* **local-backup:** add plugin ([#3656](https://github.com/ionic-team/ionic-native/issues/3656)) ([c05b3e9](https://github.com/ionic-team/ionic-native/commit/c05b3e96722ee85c4771aa70236a77e1b60f60e2))
* **restart:** add plugin ([#3657](https://github.com/ionic-team/ionic-native/issues/3657)) ([5752294](https://github.com/ionic-team/ionic-native/commit/575229412b335a720a284ffe67839488f3de2996))
* **system-alert-window-permission:** add plugin ([#3659](https://github.com/ionic-team/ionic-native/issues/3659)) ([50f8a45](https://github.com/ionic-team/ionic-native/commit/50f8a452ad4e36e3554a417d2051f0389bf7d7d2))
## [5.32.1](https://github.com/ionic-team/ionic-native/compare/v5.32.0...v5.32.1) (2021-04-15)
### Bug Fixes
* **network:** onChange no longer causes error ([#3651](https://github.com/ionic-team/ionic-native/issues/3651)) ([16fee22](https://github.com/ionic-team/ionic-native/commit/16fee2268aed8c8bf26ef36f236349e222da3375)), closes [#3649](https://github.com/ionic-team/ionic-native/issues/3649)
# [5.32.0](https://github.com/ionic-team/ionic-native/compare/v5.31.1...v5.32.0) (2021-04-05)
### Bug Fixes
* **app-rate:** add missing types for onButtonClicked callback ([#3616](https://github.com/ionic-team/ionic-native/issues/3616)) ([4fb07fa](https://github.com/ionic-team/ionic-native/commit/4fb07fa8095419178fb0867940c47ea9a85b0f94))
* **bluetooth-le:** add missing status type value and add missing (optional) address property to NotifyParams interface ([#3613](https://github.com/ionic-team/ionic-native/issues/3613)) ([f32da73](https://github.com/ionic-team/ionic-native/commit/f32da73a875f87c5c3add3ddb9abb274bec6e0e5))
* **build:** publish Node (server) friendly bundles ([#3483](https://github.com/ionic-team/ionic-native/issues/3483)) ([b4227f2](https://github.com/ionic-team/ionic-native/commit/b4227f2114706276d63fcd5303ab992710d58472))
* **in-app-purchase-2:** fix typings for refresh ([#3632](https://github.com/ionic-team/ionic-native/issues/3632)) ([8dcb6be](https://github.com/ionic-team/ionic-native/commit/8dcb6be4ea76f650c16e38c573f18a8f56d16911)), closes [/github.com/j3k0/cordova-plugin-purchase/blob/dd6bf6f/doc/api.md#return-value-3](https://github.com//github.com/j3k0/cordova-plugin-purchase/blob/dd6bf6f/doc/api.md/issues/return-value-3)
* **unvired-cordova-sdk:** changes to the property names and updated documentation ([#3633](https://github.com/ionic-team/ionic-native/issues/3633)) ([158bf63](https://github.com/ionic-team/ionic-native/commit/158bf637cdf0ee6776ff82dc2109c6d11d2e1d33))
### Features
* **adjust:** add missing wrappers for cordova api ([#3528](https://github.com/ionic-team/ionic-native/issues/3528)) ([0932e11](https://github.com/ionic-team/ionic-native/commit/0932e113b266e835acf34a2ae09ce0f75a3890ee))
* **in-app-purchase-2:** adds typings for transaction ([#3621](https://github.com/ionic-team/ionic-native/issues/3621)) ([46d0cec](https://github.com/ionic-team/ionic-native/commit/46d0cecb271ed425856a08453a94e4568ce83878))
* **network:** declare connection enum with strings([#3630](https://github.com/ionic-team/ionic-native/issues/3630)) ([d698d59](https://github.com/ionic-team/ionic-native/commit/d698d5985b764f7ab8e143b163c45a3617da5e0e))
* **network:** update Network plugin ([#3608](https://github.com/ionic-team/ionic-native/issues/3608)) ([31ee7ef](https://github.com/ionic-team/ionic-native/commit/31ee7efc22faf8276db5d64a579b8ec44a29f457))
* **plugin:** add MS App Center LowMemory plugin ([#3619](https://github.com/ionic-team/ionic-native/issues/3619)) ([2cb5f5c](https://github.com/ionic-team/ionic-native/commit/2cb5f5c01065987c900f413dbb306c052bd1de86))
* **plugin:** add MS App Center shared plugin ([#3618](https://github.com/ionic-team/ionic-native/issues/3618)) ([3d7b777](https://github.com/ionic-team/ionic-native/commit/3d7b777b19183cbf9d274b24ac0106e3f45fce88))
* **plugin:** Text to Speech Advanced ([#3627](https://github.com/ionic-team/ionic-native/issues/3627)) ([ca190db](https://github.com/ionic-team/ionic-native/commit/ca190db829ae125d2da6d79e2c8673d5c7f5da9d))
* **power-optimization:** plugin initial wrapper ([#3642](https://github.com/ionic-team/ionic-native/issues/3642)) ([9b7db58](https://github.com/ionic-team/ionic-native/commit/9b7db588a1f7608e7a7c9e8b4db7951dc98bd816))
* **preview-any-file:** add new methods for preview-any-file cordova ([#3643](https://github.com/ionic-team/ionic-native/issues/3643)) ([b8de7f0](https://github.com/ionic-team/ionic-native/commit/b8de7f0721da32faa67a1aa0d8a72846737018c7))
* **purchases:** bump cordova-plugin-purchases from 2.0.0 to 2.1.1 ([#3639](https://github.com/ionic-team/ionic-native/issues/3639)) ([5d71d0d](https://github.com/ionic-team/ionic-native/commit/5d71d0d2bbbbf8696a0d42e1e8b99fc1ee63ce16))
* **shortcuts-android:** add cordova-plugin-shortcuts-android ([#3609](https://github.com/ionic-team/ionic-native/issues/3609)) ([2f69dd8](https://github.com/ionic-team/ionic-native/commit/2f69dd88cbb798f7fdc21c98f99f55bc6a8e88a7))
## [5.31.1](https://github.com/ionic-team/ionic-native/compare/v5.31.0...v5.31.1) (2021-01-23)
### Bug Fixes
* **build:** add correct build script typings ([f7a3c71](https://github.com/ionic-team/ionic-native/commit/f7a3c7127a17a53e911119fc87c7149d356315bb))
# [5.31.0](https://github.com/ionic-team/ionic-native/compare/v5.30.0...v5.31.0) (2021-01-23)
### Bug Fixes
* **firebase-messaging:** adjust deleteToken/removeToken signature ([72c9960](https://github.com/ionic-team/ionic-native/commit/72c99603db5b1b2998c3d1e9a920e38f75e0f47b))
* **launch-navigator:** enableGeolocation and enableGeocoding typings ([#3584](https://github.com/ionic-team/ionic-native/issues/3584)) ([6b18c3d](https://github.com/ionic-team/ionic-native/commit/6b18c3d0614db1f525aaecfb9e09067537061ba9))
* **launchnavigator:** make appSelection accessible ([#3594](https://github.com/ionic-team/ionic-native/issues/3594)) ([26fd76d](https://github.com/ionic-team/ionic-native/commit/26fd76dad06764c288e2902c0edbe0dbb5e668c7))
### chore
* **package:** upgrade to angular 11 ([a96faf1](https://github.com/ionic-team/ionic-native/commit/a96faf13784ed30a5fc645dc769e44960242cb4f))
### Features
* **advanced-http:** duplicate methods sync to be able to abort requests ([#3575](https://github.com/ionic-team/ionic-native/issues/3575)) ([0efa33f](https://github.com/ionic-team/ionic-native/commit/0efa33f25746437cd3dc97585d380f177ed40e0b))
* **android-notch:** add cordova plugin wrapper ([#3592](https://github.com/ionic-team/ionic-native/issues/3592)) ([96890c7](https://github.com/ionic-team/ionic-native/commit/96890c7b92f34cf8d87eb98c0e4b5ddf9b68c6dc))
* **app-rate:** update plugin functions ([#3598](https://github.com/ionic-team/ionic-native/issues/3598)) ([3e92f64](https://github.com/ionic-team/ionic-native/commit/3e92f64484be0c949896b5fac7023ef0bd2fc746))
* **facebook:** add setAutoLogAppEventsEnabled method ([#3606](https://github.com/ionic-team/ionic-native/issues/3606)) ([b4f0f07](https://github.com/ionic-team/ionic-native/commit/b4f0f0706400f6500e48cd1305c20371977a6869))
* **facebook:** update api and logPurchase methods to include additional arguments([#3607](https://github.com/ionic-team/ionic-native/issues/3607)) ([e4b1719](https://github.com/ionic-team/ionic-native/commit/e4b171930dca0ebd3824cfa08861cfb80bf715d3))
* **firebase-authentication:** add signInWithApple method ([#3597](https://github.com/ionic-team/ionic-native/issues/3597)) ([e7bc1b6](https://github.com/ionic-team/ionic-native/commit/e7bc1b67095fc0c0dbb96b98f3dd39ecb255ec88))
* **in-app-purchase-2:** add redeem() for opening redeem code dialog in iOS ([#3581](https://github.com/ionic-team/ionic-native/issues/3581)) ([ddd269e](https://github.com/ionic-team/ionic-native/commit/ddd269e7ab2df69555ad7eec29bf0ed5a6c8fd04))
* **mobile-messaging:** add Lists and date time for customAttributes ([#3586](https://github.com/ionic-team/ionic-native/issues/3586)) ([bd8fbb3](https://github.com/ionic-team/ionic-native/commit/bd8fbb3e1fb4bfc84a7c9ba67e879d18868db8b5))
* **purchases:** bump cordova-plugin-purchases from 1.3.2 to 2.0.0 ([#3601](https://github.com/ionic-team/ionic-native/issues/3601)) ([bed8797](https://github.com/ionic-team/ionic-native/commit/bed8797a603398a047a97070fadd99b36e65a9be))
* **wonderpush:** remove isReady method. ([#3580](https://github.com/ionic-team/ionic-native/issues/3580)) ([182b403](https://github.com/ionic-team/ionic-native/commit/182b403f69492b96375a7be895da4ff486eccf7b))
### BREAKING CHANGES
* **package:** ionic-native now requires at least Angular 10 with ts-lib 2.0
Co-Authored-By: Daniel Sogl <mytechde@outlook.com>
# [5.30.0](https://github.com/ionic-team/ionic-native/compare/v5.29.0...v5.30.0) (2020-11-20)
### Bug Fixes
* **clevertap:** remove duplicated methods ([ba39f7e](https://github.com/ionic-team/ionic-native/commit/ba39f7e9f217ebe72e78bcfeae3d7e9ac07187ae)), closes [#3517](https://github.com/ionic-team/ionic-native/issues/3517) [#3491](https://github.com/ionic-team/ionic-native/issues/3491)
### Features
* **AllInOneSDK:** add check to restrict app invocation ([#3570](https://github.com/ionic-team/ionic-native/issues/3570)) ([fd0cddc](https://github.com/ionic-team/ionic-native/commit/fd0cddc9d0abdc3006e6cf16c1f80d0551b71cd2))
* **AppsFlyer:** update to 6.x.x ([#3563](https://github.com/ionic-team/ionic-native/issues/3563)) ([e486cfd](https://github.com/ionic-team/ionic-native/commit/e486cfd9bff2fd0bdd4ccfc9cb91b450b7218aef))
* **background-upload:** add plugin ([#3539](https://github.com/ionic-team/ionic-native/issues/3539)) ([13f6da6](https://github.com/ionic-team/ionic-native/commit/13f6da69ef622923bf2c746fbecb18a7cf959b82))
* **bluetooth-le:** Allow specifying transport mode for Android ([#3571](https://github.com/ionic-team/ionic-native/issues/3571)) ([b3d5baa](https://github.com/ionic-team/ionic-native/commit/b3d5baa46ed695344b08bd3e27be3b9f84bf6f0d))
* **core:** add `methodName` to Cordova Decorator ([#3558](https://github.com/ionic-team/ionic-native/issues/3558)) ([46853b4](https://github.com/ionic-team/ionic-native/commit/46853b42120b4b34b727ef0ae0274d1c8cb7bcd1)), closes [#3557](https://github.com/ionic-team/ionic-native/issues/3557)
* **CustomUiSDK:** add plugin for Paytm Custom UI SDK ([#3546](https://github.com/ionic-team/ionic-native/issues/3546)) ([bb10642](https://github.com/ionic-team/ionic-native/commit/bb1064225d276cffcd40ff9176b77ffb9d56ed8a))
* **dfu-update:** add DfuUpdate Plugin Wrapper ([#3514](https://github.com/ionic-team/ionic-native/issues/3514)) ([07d7ace](https://github.com/ionic-team/ionic-native/commit/07d7ace97d1b122424964f6e7330bf97710dcc8f))
* **firebase-dynamic-links:** Add missing method getDynamicLink() ([#3567](https://github.com/ionic-team/ionic-native/issues/3567)) ([d7c6f86](https://github.com/ionic-team/ionic-native/commit/d7c6f8628d176119cabae444c02f285a8c36997d))
* **firebase-vision:** add image labelling ([#3569](https://github.com/ionic-team/ionic-native/issues/3569)) ([af114f4](https://github.com/ionic-team/ionic-native/commit/af114f48e46b4f7f1ce66bb2906585158aa5cff0))
* **intercom:** added displayCarousel, displayArticle, setBottomPadding ([#3572](https://github.com/ionic-team/ionic-native/issues/3572)) ([68d245e](https://github.com/ionic-team/ionic-native/commit/68d245ef2c85dfff0aedb444db629d59986e06b4))
* **multiple-document-picker:** add plugin ([#3551](https://github.com/ionic-team/ionic-native/issues/3551)) ([78e9242](https://github.com/ionic-team/ionic-native/commit/78e92422abb5a645ed09bf61b7dc250462ccc742))
* **purchases:** update to plugin version 1.3.2 ([#3566](https://github.com/ionic-team/ionic-native/issues/3566)) ([0f197ad](https://github.com/ionic-team/ionic-native/commit/0f197ad9fcd4e56c0c61bd87c6aec76889af6ab2))
* **smartlook:** update to 1.6.0 ([#3562](https://github.com/ionic-team/ionic-native/issues/3562)) ([f71b65d](https://github.com/ionic-team/ionic-native/commit/f71b65d6a79d22175c27b960f27ef51ea6a87ed4))
# [5.29.0](https://github.com/ionic-team/ionic-native/compare/v5.28.0...v5.29.0) (2020-10-16)
### Bug Fixes
* **diagnostics:** locationAccuracyAuthorization Property missing in build ([#3540](https://github.com/ionic-team/ionic-native/issues/3540)) ([c62c137](https://github.com/ionic-team/ionic-native/commit/c62c13772307c02e7581c15ec6f5c94309927cc6))
* **http:** add missing type to serialiser property ([#3532](https://github.com/ionic-team/ionic-native/issues/3532)) ([7b0195b](https://github.com/ionic-team/ionic-native/commit/7b0195bdf441532106df6eb2baf5a9ada1068761))
* **in-app-purchase-2:** change in-app-purchase-2 plugin id ([#3553](https://github.com/ionic-team/ionic-native/issues/3553)) ([ce9db34](https://github.com/ionic-team/ionic-native/commit/ce9db34e2439d4fefd1b4071bffb6e5c8daab634))
* **music-controls:** update associated cordova plugin ([#3543](https://github.com/ionic-team/ionic-native/issues/3543)) ([4766ec7](https://github.com/ionic-team/ionic-native/commit/4766ec7a35d7e7b0ab31d3db8953f2ef4bdcb6df))
### Features
* **adjust:** updating to match official typings ([#3523](https://github.com/ionic-team/ionic-native/issues/3523)) ([5a77eab](https://github.com/ionic-team/ionic-native/commit/5a77eabf7644a79369da40eb929b6edfcb83de07))
* **all-in-one-sdk:** add plugin for Paytm All-in-One SDK ([#3536](https://github.com/ionic-team/ionic-native/issues/3536)) ([1f48c31](https://github.com/ionic-team/ionic-native/commit/1f48c31a8eaf5079ec8e391b21ea5ce3fa9e1446))
* **appsfyler:** add property waitForATTUserAuthorization to AppsflyerOptions ([#3541](https://github.com/ionic-team/ionic-native/issues/3541)) ([3340e9a](https://github.com/ionic-team/ionic-native/commit/3340e9a6949f798d5ec540a78c7ac46a5dc884b2))
* **fingerprint-air:** add new functions ([#3530](https://github.com/ionic-team/ionic-native/issues/3530)) ([99e6a53](https://github.com/ionic-team/ionic-native/commit/99e6a5398fb2923991d7236475913eb17e8640c0))
* **firebase-x:** add setLanguageCode method for auth ([#3548](https://github.com/ionic-team/ionic-native/issues/3548)) ([5d1b5d5](https://github.com/ionic-team/ionic-native/commit/5d1b5d5fda311003d0ae20e27a06d6bd443554be))
* **mobile-messaging:** add new fields to Message type and new method to display chat view ([#3531](https://github.com/ionic-team/ionic-native/issues/3531)) ([14ec32b](https://github.com/ionic-team/ionic-native/commit/14ec32b83c603fc5a079eabf794b7dadce867358))
* **purchases:** update to plugin version 1.3.0 ([#3547](https://github.com/ionic-team/ionic-native/issues/3547)) ([b5f7f95](https://github.com/ionic-team/ionic-native/commit/b5f7f952df06828a07f4ab013ce52fddc8ccafdf))
* **social-sharing:** Add missing method shareViaWhatsAppToPhone([#3513](https://github.com/ionic-team/ionic-native/issues/3513)) ([f3ce3c4](https://github.com/ionic-team/ionic-native/commit/f3ce3c4930f87f6f2dd023dc28ef924faee05a84))
# [5.28.0](https://github.com/ionic-team/ionic-native/compare/v5.27.0...v5.28.0) (2020-08-14)
### Bug Fixes
* **ble:** add missing method "isLocationEnabled" ([#3495](https://github.com/ionic-team/ionic-native/issues/3495)) ([b4462d5](https://github.com/ionic-team/ionic-native/commit/b4462d5e6c12f144412001cade1020b5f88b4ae5))
* **geolocation:** [#3303](https://github.com/ionic-team/ionic-native/issues/3303) geolocation watchPosition return type ([#3470](https://github.com/ionic-team/ionic-native/issues/3470)) ([579170a](https://github.com/ionic-team/ionic-native/commit/579170a99ea8a53634631b76ffa19b6b635c1d03))
* **hyper-track:** update to the modern sdk ([#3508](https://github.com/ionic-team/ionic-native/issues/3508)) ([44f86f3](https://github.com/ionic-team/ionic-native/commit/44f86f3ce5f6912f1cc0b4596e43066571c96b44))
* **ibeacon:** undefined locationManager ([#3505](https://github.com/ionic-team/ionic-native/issues/3505)) ([1ffad79](https://github.com/ionic-team/ionic-native/commit/1ffad79320f83038d1fc09e9112c40c86d948416))
* **metrix:** change firebase api ([#3473](https://github.com/ionic-team/ionic-native/issues/3473)) ([b0ffb0e](https://github.com/ionic-team/ionic-native/commit/b0ffb0ec4a035097c8a413f31b2382dae1eda4c7))
### Features
* **clover-go:** add support to pass signature and void payment ([#3485](https://github.com/ionic-team/ionic-native/issues/3485)) ([26d10ef](https://github.com/ionic-team/ionic-native/commit/26d10ef63346782e6d8ed37ca89bd2dd7402aa0a))
* **diagnostics:** Add support for new iOS14-LocationAccuracy Permission ([#3490](https://github.com/ionic-team/ionic-native/issues/3490)) ([ccca644](https://github.com/ionic-team/ionic-native/commit/ccca644134999365a729b4a7d554da6a011eb693))
* **nfc:** update to phonegap-nfc@1.2.0 ([#3486](https://github.com/ionic-team/ionic-native/issues/3486)) ([d7ccd45](https://github.com/ionic-team/ionic-native/commit/d7ccd454fb757d8d3be57a70bfa7fb3c269e3318))
* **onesignal:** add in-app messages methods ([#3481](https://github.com/ionic-team/ionic-native/issues/3481)) ([eec3fec](https://github.com/ionic-team/ionic-native/commit/eec3fec7ff820e96443e6e3f0d7bf96dac359038))
* **purchases:** update to plugin version 1.2.0 ([#3482](https://github.com/ionic-team/ionic-native/issues/3482)) ([a010bb1](https://github.com/ionic-team/ionic-native/commit/a010bb186964b8b825ab80f9cf6092794ee2e4b1))
* **smartlook:** update to 1.5.2 ([#3498](https://github.com/ionic-team/ionic-native/issues/3498)) ([5aa5757](https://github.com/ionic-team/ionic-native/commit/5aa57577956c13e8fe34d2c658690df7daf86ef4))
# [5.27.0](https://github.com/ionic-team/ionic-native/compare/v5.26.0...v5.27.0) (2020-06-23)
### Bug Fixes
* **app-rate:** Add missing "openUrl" property to AppRatePreferences object ([#3456](https://github.com/ionic-team/ionic-native/issues/3456)) ([fe21b5b](https://github.com/ionic-team/ionic-native/commit/fe21b5b97c150e16740b91bf958f7110b2e35664))
* **camera-preview:** tapFocus ([#3467](https://github.com/ionic-team/ionic-native/issues/3467)) ([7c95e66](https://github.com/ionic-team/ionic-native/commit/7c95e660215e96ce238c0194bbe91ba16886a78a))
* **firebase-x:** add fakeVerificationCode param to verifyPhoneNumber ([#3451](https://github.com/ionic-team/ionic-native/issues/3451)) ([191c7a0](https://github.com/ionic-team/ionic-native/commit/191c7a044d15c31a4bba4c23010cdd728398eb89))
* **firebase-x:** indicate callback methods to verifyPhoneNumber ([#3457](https://github.com/ionic-team/ionic-native/issues/3457)) ([66896b2](https://github.com/ionic-team/ionic-native/commit/66896b2632250ee8a33af909f7c0e008c6abc872))
* **jumio:** update plugin reference and source ([#3428](https://github.com/ionic-team/ionic-native/issues/3428)) ([389a3fb](https://github.com/ionic-team/ionic-native/commit/389a3fb215711deb5e5404fd5b268b20825af958))
* **launch-review:** Allow rating() callback to be invoked multiple times ([#3455](https://github.com/ionic-team/ionic-native/issues/3455)) ([40b9295](https://github.com/ionic-team/ionic-native/commit/40b9295de64e27c652f58fa37a4bb50c6bc2cdc4))
### Features
* **admob:** add interfaces and method typings ([#3461](https://github.com/ionic-team/ionic-native/issues/3461)) ([b2afc13](https://github.com/ionic-team/ionic-native/commit/b2afc131caeea56b9e01edc6169fdce9b57e9569))
* **broadcaster:** align plugin API to version 4.1.0 ([#3432](https://github.com/ionic-team/ionic-native/issues/3432)) ([324334e](https://github.com/ionic-team/ionic-native/commit/324334eb287dd8e3e82b2d5d64e8fb06b496a1f0))
* **build-info:** add plugin ([#3465](https://github.com/ionic-team/ionic-native/issues/3465)) ([7b998b9](https://github.com/ionic-team/ionic-native/commit/7b998b96449cdc1abf90548115caa0435ee89a84))
* **camera-preview:** add record video functions ([#3463](https://github.com/ionic-team/ionic-native/issues/3463)) ([7ae1df2](https://github.com/ionic-team/ionic-native/commit/7ae1df2489b8ff524c1ba1bfa7624dcb50247905))
* **chooser:** add getFileMetadata ([#3425](https://github.com/ionic-team/ionic-native/issues/3425)) ([79c3284](https://github.com/ionic-team/ionic-native/commit/79c3284434fbb580642b44d3d91cf01c82e52d0f))
* **CleverTap:** Update Plugin for Parity Support ([#3435](https://github.com/ionic-team/ionic-native/issues/3435)) ([3df35b4](https://github.com/ionic-team/ionic-native/commit/3df35b40ce49b1a176ae03a3516df37ceb7cdec6))
* **fcm:** add requestPushPermissionIOS and createNotificationChannelAndroid functions ([#3430](https://github.com/ionic-team/ionic-native/issues/3430)) ([ef17dc5](https://github.com/ionic-team/ionic-native/commit/ef17dc5d07e401369fa8353913a80b36f3cfdc4c))
* **firebase-dynamic-links:** Update plugin for parity ([#3437](https://github.com/ionic-team/ionic-native/issues/3437)) ([7f09758](https://github.com/ionic-team/ionic-native/commit/7f0975803f2e84ed536922dde542e4d50549f919))
* **firebase-vision:** add barcodeDetector ([#3426](https://github.com/ionic-team/ionic-native/issues/3426)) ([1aacb48](https://github.com/ionic-team/ionic-native/commit/1aacb487a4577e2f6854e59f30f215c301ad60ee))
* **firebase-x:** add missing methods from plugin, incl. authenticateUserWithApple ([#3458](https://github.com/ionic-team/ionic-native/issues/3458)) ([32203e9](https://github.com/ionic-team/ionic-native/commit/32203e9ac1a0ca5368b320d1b05f44da3addd2bf))
* **ios-aswebauthenticationsession:** add plugin ([#3421](https://github.com/ionic-team/ionic-native/issues/3421)) ([742ff65](https://github.com/ionic-team/ionic-native/commit/742ff655968c908911b3174d8a9893c6716b20d8))
* **vibes:** add support for inbox messaging ([#3466](https://github.com/ionic-team/ionic-native/issues/3466)) ([9bf1eaf](https://github.com/ionic-team/ionic-native/commit/9bf1eafc4eb1e3562dfeff54f87f1da95d0a9fe4))
# [5.26.0](https://github.com/ionic-team/ionic-native/compare/v5.25.0...v5.26.0) (2020-05-16)
### Bug Fixes
* **secure-storage-echo:** method is inaccessible when device is not secure [#3322](https://github.com/ionic-team/ionic-native/issues/3322) ([#3413](https://github.com/ionic-team/ionic-native/issues/3413)) ([e715498](https://github.com/ionic-team/ionic-native/commit/e715498d3323975ea34951c933d4ad6b0b8f3b10))
* **secure-storage-echo:** method is inaccessible when device is not secure [#3322](https://github.com/ionic-team/ionic-native/issues/3322) ([#3424](https://github.com/ionic-team/ionic-native/issues/3424)) ([e59a989](https://github.com/ionic-team/ionic-native/commit/e59a989fab7abfc08d8cafdd3151ec0d9f868a2b))
### Features
* **firebase-x:** add getCurrentUser ([#3389](https://github.com/ionic-team/ionic-native/issues/3389)) ([809e5ac](https://github.com/ionic-team/ionic-native/commit/809e5ac14d3f08b51884d846f7de1d731b8b9c0a)), closes [#3356](https://github.com/ionic-team/ionic-native/issues/3356)
* **in-app-purchase-2:** add update function ([#3416](https://github.com/ionic-team/ionic-native/issues/3416)) ([9892ce7](https://github.com/ionic-team/ionic-native/commit/9892ce7a615d68dc33126705fd6211c0ce2d4fef)), closes [#3411](https://github.com/ionic-team/ionic-native/issues/3411)
* **jumio:** add plugin ([#3423](https://github.com/ionic-team/ionic-native/issues/3423)) ([13a8a6f](https://github.com/ionic-team/ionic-native/commit/13a8a6f1d9c23fdff9421a7f851ba0e8f4f3e1e6))
* **lib:** add prettier ([f5133c6](https://github.com/ionic-team/ionic-native/commit/f5133c691dc3803542a42e47ac0ca78b95d38a54))
* **metrix:** add plugin ([#3419](https://github.com/ionic-team/ionic-native/issues/3419)) ([26c9120](https://github.com/ionic-team/ionic-native/commit/26c912092c571aa7ffd31a8303f3819e8780644b))
* **native-view:** add plugin ([#3418](https://github.com/ionic-team/ionic-native/issues/3418)) ([180b665](https://github.com/ionic-team/ionic-native/commit/180b665c4b2071233b50de0c5e792df09f17e36f))
# [5.25.0](https://github.com/ionic-team/ionic-native/compare/v5.24.0...v5.25.0) (2020-05-05)
### Bug Fixes
* **bluetooth-le:** change reconnect return signature to Observable<DeviceInfo> fixes [#3374](https://github.com/ionic-team/ionic-native/issues/3374) ([#3394](https://github.com/ionic-team/ionic-native/issues/3394)) ([8eacf88](https://github.com/ionic-team/ionic-native/commit/8eacf8817cbd718f8286d81c4de96860b959866d))
* **firebase-x:** return document id ([#3386](https://github.com/ionic-team/ionic-native/issues/3386)) ([61bbe39](https://github.com/ionic-team/ionic-native/commit/61bbe3980ce8f13a92ea5c9f4eaee8311ef5c23b)), closes [#3385](https://github.com/ionic-team/ionic-native/issues/3385)
### Features
* **admob-plus:** add setDevMode ([#3387](https://github.com/ionic-team/ionic-native/issues/3387)) ([e09592d](https://github.com/ionic-team/ionic-native/commit/e09592d2b94332ba1932cac125c0b8c4ce457ac7)), closes [#3384](https://github.com/ionic-team/ionic-native/issues/3384)
* **appsflyer:** added registerUninstall function ([#3401](https://github.com/ionic-team/ionic-native/issues/3401)) ([c403330](https://github.com/ionic-team/ionic-native/commit/c403330c0a1e8b2fa7cb53b3dfe4dd66f2b29d24))
* **background-fetch:** add taskId to finish method ([#3390](https://github.com/ionic-team/ionic-native/issues/3390)) ([eceb7ca](https://github.com/ionic-team/ionic-native/commit/eceb7ca1fcc8516ff3ede2115a5fadcfc47a0601)), closes [#3361](https://github.com/ionic-team/ionic-native/issues/3361)
* **firebase-vision:** add plugin ([#3400](https://github.com/ionic-team/ionic-native/issues/3400)) ([a3d54a3](https://github.com/ionic-team/ionic-native/commit/a3d54a34b83d1c0515839cfbc39021dedccb3454))
* **firebase-x:** add getId ([#3388](https://github.com/ionic-team/ionic-native/issues/3388)) ([3d46715](https://github.com/ionic-team/ionic-native/commit/3d46715b9c2427b7b5277bd13c780cb1f87df727)), closes [#3378](https://github.com/ionic-team/ionic-native/issues/3378)
* **native-storage:** add initWithSuiteName ([#3365](https://github.com/ionic-team/ionic-native/issues/3365)) ([a391e37](https://github.com/ionic-team/ionic-native/commit/a391e37f9045769219883688023de8d14181c04f))
* **pushape-push:** add plugin ([#3405](https://github.com/ionic-team/ionic-native/issues/3405)) ([825b2d6](https://github.com/ionic-team/ionic-native/commit/825b2d6970c40e473b3db8f774bb6a8c3acb41cb))
* **smartlook:** new api methods ([#3402](https://github.com/ionic-team/ionic-native/issues/3402)) ([ea053cc](https://github.com/ionic-team/ionic-native/commit/ea053ccbe63308a6d9cd9fd6b84a7bfaf188f487))
* **vibes-push-plugin:** add Vibes Push plugin wrapper ([#3368](https://github.com/ionic-team/ionic-native/issues/3368)) ([1db0ff7](https://github.com/ionic-team/ionic-native/commit/1db0ff741f17f87a583e5c84307ef63efdf82c76))
# [5.24.0](https://github.com/ionic-team/ionic-native/compare/v5.23.0...v5.24.0) (2020-04-17)
### Bug Fixes
* **health:** HealthQueryOptionsAggregated bucket optional ([#3370](https://github.com/ionic-team/ionic-native/issues/3370)) ([96e9b19](https://github.com/ionic-team/ionic-native/commit/96e9b19732f4bc59c7525a12083e002ee2f75616))
* **iamport-cordova:** fix data type of card_quota([#3372](https://github.com/ionic-team/ionic-native/issues/3372)) ([47b85a8](https://github.com/ionic-team/ionic-native/commit/47b85a80a9fa8d22804f1dae78b6a15a31307f17))
* **in-app-browser:** add missing 'no' type ([#3359](https://github.com/ionic-team/ionic-native/issues/3359)) ([83bb4a9](https://github.com/ionic-team/ionic-native/commit/83bb4a96f940d162233807f4f3312b00b7243e41))
### Features
* **clover-go:** add CloverGo plugin ([#3376](https://github.com/ionic-team/ionic-native/issues/3376)) ([be05235](https://github.com/ionic-team/ionic-native/commit/be05235a6e206e25b2d6f1af4bb9bf1ef832bbf8))
* **firebase-messaging:** add getInstanceId ([#3364](https://github.com/ionic-team/ionic-native/issues/3364)) ([e1350a2](https://github.com/ionic-team/ionic-native/commit/e1350a2e7ea7bcab1ffd27d2f5508b46c47e31b9))
* **gao-de-location:** update wrapper to match version 2.0.5 ([#3358](https://github.com/ionic-team/ionic-native/issues/3358)) ([bfee712](https://github.com/ionic-team/ionic-native/commit/bfee712cdcc844554524b332d2f65678b1b0992d))
* **MobileMessaging:** add support for CustomEvents ([#3373](https://github.com/ionic-team/ionic-native/issues/3373)) ([3af9c48](https://github.com/ionic-team/ionic-native/commit/3af9c48f05d81050c9794da09f720587ebc40f65))
* **nfc:** update to phonegap-nfc@1.1.1 ([#3381](https://github.com/ionic-team/ionic-native/issues/3381)) ([8c25d1e](https://github.com/ionic-team/ionic-native/commit/8c25d1e311d29394eb1cf86b65fcc11aa4ea8804))
* **purchases:** update to the latest plugin version ([#3371](https://github.com/ionic-team/ionic-native/issues/3371)) ([739fe89](https://github.com/ionic-team/ionic-native/commit/739fe8940000ddbe843ca821dbcc2c928850cf48))
* **shop-checkout:** add plugin ([#3337](https://github.com/ionic-team/ionic-native/issues/3337)) ([83196bc](https://github.com/ionic-team/ionic-native/commit/83196bc947f18f1c3ffd7f7b6ad4431e05516527))
* **usabilla-cordova-sdk:** add plugin ([#3362](https://github.com/ionic-team/ionic-native/issues/3362)) ([9e2f670](https://github.com/ionic-team/ionic-native/commit/9e2f670d9d43a2cb63ec400b6c8e0f45b3a6991a))
* **wechat:** add openMiniProgram method ([#3380](https://github.com/ionic-team/ionic-native/issues/3380)) ([6458640](https://github.com/ionic-team/ionic-native/commit/6458640ba7c0af5c4a16ad3bfbdc78447719f147))
# [5.23.0](https://github.com/ionic-team/ionic-native/compare/v5.22.0...v5.23.0) (2020-03-22)
### Bug Fixes
* **admob:** fix interstitialAdId parameter typo ([#3348](https://github.com/ionic-team/ionic-native/issues/3348)) ([fe89f2b](https://github.com/ionic-team/ionic-native/commit/fe89f2bf96ae4acf85edbff22ea2b0f4c69206a2))
* **cordova-firebase-x:** updated methods ([#3339](https://github.com/ionic-team/ionic-native/issues/3339)) ([5471696](https://github.com/ionic-team/ionic-native/commit/5471696664b82ee4c42614927717dc664aafae6c))
* **email-composer:** fix error when no mail apps ([#3347](https://github.com/ionic-team/ionic-native/issues/3347)) ([7bcbca7](https://github.com/ionic-team/ionic-native/commit/7bcbca7696af7020191ed36c814aefde28398bd0))
* **unvired-cordova-sdk:** fix the data type for ResultType and OutboxLockStatus ([#3334](https://github.com/ionic-team/ionic-native/issues/3334)) ([2d1e2db](https://github.com/ionic-team/ionic-native/commit/2d1e2db9cdc885cda3fe2fe448857bb148efe219))
### Features
* **admob-free:** add missing config properties ([#3344](https://github.com/ionic-team/ionic-native/issues/3344)) ([a0f9163](https://github.com/ionic-team/ionic-native/commit/a0f91635fc4091af9dcb9b245041cdd7eea86a60))
* **in-app-purchase-2): feat(in-app-purchase-2:** update types and add getApplicationUsername function ([#3320](https://github.com/ionic-team/ionic-native/issues/3320)) ([664e257](https://github.com/ionic-team/ionic-native/commit/664e2574424930c3220ee579a657bda226a0c2e9))
* **mobile-messaging:** add plugin ([#3338](https://github.com/ionic-team/ionic-native/issues/3338)) ([96e6711](https://github.com/ionic-team/ionic-native/commit/96e6711776cc5a774d4e32abd1fd752fa20f4881))
# [5.22.0](https://github.com/ionic-team/ionic-native/compare/v5.21.6...v5.22.0) (2020-02-28)
### Bug Fixes
* **fcm:** add missing clearAllNotifications, hasPermission and getAPNSToken ([#3331](https://github.com/ionic-team/ionic-native/issues/3331)) ([18bee4e](https://github.com/ionic-team/ionic-native/commit/18bee4e2982fd55bff4918758619a42b2be3916c)), closes [/github.com/andrehtissot/cordova-plugin-fcm-with-dependecy-updated#version-400-12102019](https://github.com//github.com/andrehtissot/cordova-plugin-fcm-with-dependecy-updated/issues/version-400-12102019) [/github.com/andrehtissot/cordova-plugin-fcm-with-dependecy-updated#version-320-16092019](https://github.com//github.com/andrehtissot/cordova-plugin-fcm-with-dependecy-updated/issues/version-320-16092019)
### Features
* **iamport-cordova:** add iamport-cordova plugin on ionic-native ([#3285](https://github.com/ionic-team/ionic-native/issues/3285)) ([6277d8e](https://github.com/ionic-team/ionic-native/commit/6277d8e9978f77fa0b92ff2129a79ae2834b280d))
* **unvired-cordova-sdk:** add new functions to lock and unlock sending of data ([#3329](https://github.com/ionic-team/ionic-native/issues/3329)) ([53213bb](https://github.com/ionic-team/ionic-native/commit/53213bb57ab8ef2896504f2d21231276cf3eb6b6))
## [5.21.6](https://github.com/ionic-team/ionic-native/compare/v5.21.5...v5.21.6) (2020-02-22)
### Bug Fixes
* **apple-pay:** fix PKPaymentRequest must have valid merchantCapabilities in iOS 12 & 13 [#3314](https://github.com/ionic-team/ionic-native/issues/3314) ([a8eebb9](https://github.com/ionic-team/ionic-native/commit/a8eebb9212b23fb1fe9ba00a5981a81e46dcdbad))
* **secure-storage:** method is inaccessible when device is not secure [#3322](https://github.com/ionic-team/ionic-native/issues/3322) ([300f75e](https://github.com/ionic-team/ionic-native/commit/300f75ef929688783563d0070e723f23bd76c728))
### Features
* **keychain-touch-id:** added userAuthenticationRequired parameter to save method ([#3324](https://github.com/ionic-team/ionic-native/issues/3324)) ([4521810](https://github.com/ionic-team/ionic-native/commit/45218102f3d9e9d5b3e9f53ba85af2f9d9926ec1))
## [5.21.5](https://github.com/ionic-team/ionic-native/compare/v5.21.4...v5.21.5) (2020-02-12)

View File

@@ -2,15 +2,14 @@
This is a short guide on creating new plugin wrappers for Ionic Native.
## Creating Plugin Wrappers
First, let's start by creating a new plugin wrapper from template.
```
// Call this command, and replace PluginName with the name of the plugin you wish to add
// Make sure to capitalize the first letter, or use CamelCase if necessary.
gulp plugin:create -n PluginName
// add -m flag to get a minimal template to start with
@@ -71,7 +70,7 @@ export class Geolocation {
Here, `plugin` is the name of the plugin package on npm and used when calling `cordova plugin add`.
`pluginRef` refers to the where on `window` the underlying Cordova plugin is normally exposed. For example, in the case of the Cordova Geolocation plugin, normally you would make calls like `window.navigator.geolocation.getCurrentPosition({}, success, error)`, so the `pluginRef` in this case is `navigator.geolocation`.
`pluginRef` refers to the where on `window` the underlying Cordova plugin is normally exposed. For example, in the case of the Cordova Geolocation plugin, normally you would make calls like `window.navigator.geolocation.getCurrentPosition({}, success, error)`, so the `pluginRef` in this case is `navigator.geolocation`.
#### Class Methods
@@ -86,7 +85,7 @@ Let's take a look at `getCurrentPosition` first.
It's just a stub. The `return` is only there to keep the TypeScript type-checker from complaining since we indicate that `getCurrentPosition` returns a `Promise<Geoposition>`.
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.
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.
Next, let's look at the `watchPosition` method.
@@ -103,7 +102,7 @@ The `@Cordova` decorator has a few more options now.
`observable` indicates that this method may call its callbacks multiple times, so `@Cordova` wraps it in an [`Observable`](https://github.com/ionic-team/ionic-native#promises-and-observables) instead of a Promise.
`callbackOrder` refers to the method signature of the underlying Cordova plugin, and tells Ionic Native which arguments are the callbacks to map to the wrapping Promise or Observable. In this case, the signature is [`watchPosition(success, error, options)`](https://github.com/apache/cordova-plugin-geolocation#navigatorgeolocationwatchposition), so we need to tell `@Cordova` that the callbacks are the first arguments, not the last arguments. For rare cases, you can also specify the options `successIndex` and `errorIndex` to indicate where in the argument list the callbacks are located.
`callbackOrder` refers to the method signature of the underlying Cordova plugin, and tells Ionic Native which arguments are the callbacks to map to the wrapping Promise or Observable. In this case, the signature is [`watchPosition(success, error, options)`](https://github.com/apache/cordova-plugin-geolocation#navigatorgeolocationwatchposition), so we need to tell `@Cordova` that the callbacks are the first arguments, not the last arguments. For rare cases, you can also specify the options `successIndex` and `errorIndex` to indicate where in the argument list the callbacks are located.
`clearFunction` is used in conjunction with the `observable` option and indicates the function to be called when the Observable is disposed.
@@ -126,43 +125,50 @@ We have very precise rules over how our git commit messages can be formatted. Th
`type(scope): subject`
#### Type
Must be one of the following:
* **fix**: A bug fix
* **feat**: A new feature
* **docs**: Documentation only changes
* **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
* **refactor**: A code change that neither fixes a bug nor adds a feature
* **perf**: A code change that improves performance
* **test**: Adding missing tests
* **chore**: Changes to the build process or auxiliary tools and libraries such as documentation generation
- **fix**: A bug fix
- **feat**: A new feature
- **docs**: Documentation only changes
- **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
- **refactor**: A code change that neither fixes a bug nor adds a feature
- **perf**: A code change that improves performance
- **test**: Adding missing tests
- **chore**: Changes to the build process or auxiliary tools and libraries such as documentation generation
#### Scope
The scope could be anything specifying place of the commit change. For example, the name of the plugin being changed
#### Subject
The subject contains succinct description of the change:
* use the imperative, present tense: "change" not "changed" nor "changes"
* do not capitalize first letter
* do not place a period (.) at the end
* entire length of the commit message must not go over 50 characters
- use the imperative, present tense: "change" not "changed" nor "changes"
- do not capitalize first letter
- do not place a period (.) at the end
- entire length of the commit message must not go over 50 characters
### Ionic Native Decorators
#### Plugin
A decorator to wrap the main plugin class, and any other classes that will use `@Cordova` or `@CordovaProperty` decorators. This decorator accepts the following configuration:
- *pluginName*: Plugin name, this should match the class name
- *plugin*: The plugin's NPM package, or Github URL if NPM is not available.
- *pluginRef*: The plugin object reference. Example: 'cordova.file'.
- *repo*: The plugin's Github Repository URL
- *install*: (optional) Install command. This is used in case a plugin has a custom install command (takes variables).
- *platforms*: An array of strings indicating the supported platforms.
- _pluginName_: Plugin name, this should match the class name
- _plugin_: The plugin's NPM package, or Github URL if NPM is not available.
- _pluginRef_: The plugin object reference. Example: 'cordova.file'.
- _repo_: The plugin's Github Repository URL
- _install_: (optional) Install command. This is used in case a plugin has a custom install command (takes variables).
- _platforms_: An array of strings indicating the supported platforms.
#### Cordova
Checks if the plugin and the method are available before executing. By default, the decorator will wrap the callbacks of the function and return a Promise. This decorator takes the following configuration options:
- **observable**: set to true to return an Observable
- **methodName**: an optional name of the cordova plugins method name (if different from wrappers method name)
- **clearFunction**: an optional name of a method to clear the observable we returned
- **clearWithArgs**: 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.
- **sync**: set to true if the method should return the value as-is without wrapping with Observable/Promise
@@ -179,6 +185,7 @@ Checks if the plugin and the method are available before executing. By default,
- **platforms**: array of strings indicating supported platforms. Specify this if the supported platforms doesn't match the plugin's supported platforms.
Example:
```ts
@Cordova()
someMethod(): Promise<any> { return; }
@@ -188,20 +195,25 @@ syncMethod(): number { }
```
#### CordovaProperty
Checks if the plugin and property exist before getting/setting the property's value
Example:
```ts
@CordovaProperty()
someProperty: string;
```
#### CordovaCheck
Checks if the plugin exists before performing a custom written method. By default, the method will return a promise that will reject with an error if the plugin is not available. This wrapper accepts two optional configurations:
Checks if the plugin exists before performing a custom written method. By default, the method will return a promise that will reject with an error if the plugin is not available. This wrapper accepts two optional configurations:
- **observable**: set to true to return an empty Observable if the plugin isn't available
- **sync**: set to true to return nothing if the plugin isn't available
Example:
```ts
@CordovaCheck()
someMethod(): Promise<any> {
@@ -210,9 +222,11 @@ someMethod(): Promise<any> {
```
#### CordovaFunctionOverride
Wrap a stub function in a call to a Cordova plugin, checking if both Cordova and the required plugin are installed.
Example:
```ts
@CordovaFunctionOverride()
someMethod(): Observable<any> { return; }

111
README.md
View File

@@ -6,6 +6,14 @@ Ionic Native is a curated set of wrappers for Cordova plugins that make adding a
Ionic Native wraps plugin callbacks in a Promise or Observable, providing a common interface for all plugins and making it easy to use plugins with Angular change detection.
Ionic Native is available in two versions:
1. Ionic Native [Community Edition](https://ionicframework.com/docs/native/community), featuring open source, community-maintained Cordova and Capacitor plugins and APIs.
2. Ionic Native [Enterprise Edition](https://ionicframework.com/docs/enterprise), featuring a library of Premier plugins and solutions that are fully supported and maintained by the Ionic team, with access to Ionic experts and a guaranteed response SLA to mission-critical app development.
## Capacitor Support
In addition to Cordova, Ionic Native also works with [Capacitor](https://capacitor.ionicframework.com), Ionic's official native runtime. Basic usage below. For complete details, [see the Capacitor documentation](https://capacitor.ionicframework.com/docs/cordova/using-cordova-plugins).
## Installation
Run following command to install Ionic Native in your project.
@@ -23,7 +31,8 @@ For the full Ionic Native documentation, please visit [https://ionicframework.co
### Basic Usage
#### Ionic/Angular apps
To use a plugin, import and add the plugin provider to your `@NgModule`, and then inject it where you wish to use it.
To use a plugin, import and add the plugin provider to your `@NgModule`, and then inject it where you wish to use it.
Make sure to import the injectable class from the `/ngx` directory as shown in the following examples:
```typescript
@@ -76,61 +85,106 @@ export class MyComponent {
}
```
#### Ionic/React apps
React apps must use Capacitor to build native mobile apps. However, Ionic Native (and therefore, Cordova plugins) can still be used.
```bash
# Install Core library (once per project)
npm install @ionic-native/core
# Install Ionic Native TypeScript wrapper
npm install @ionic-native/barcode-scanner
# Install Cordova plugin
npm install phonegap-plugin-barcodescanner
# Update native platform project(s) to include newly added plugin
ionic cap sync
```
Import the plugin object then use its static methods:
```typescript
import { BarcodeScanner } from '@ionic-native/barcode-scanner';
const Tab1: React.FC = () => {
const openScanner = async () => {
const data = await BarcodeScanner.scan();
console.log(`Barcode data: ${data.text}`);
};
return (
<IonPage>
<IonHeader>
<IonToolbar>
<IonTitle>Tab 1</IonTitle>
</IonToolbar>
</IonHeader>
<IonContent>
<IonButton onClick={openScanner}>Scan barcode</IonButton>
</IonContent>
</IonPage>
);
};
```
#### ES2015+/TypeScript
These modules can work in any ES2015+/TypeScript app (including Angular/Ionic apps). To use any plugin, import the class from the appropriate package, and use it's static methods.
```js
import { Camera } from '@ionic-native/camera';
document.addEventListener('deviceready', () => {
Camera.getPicture()
.then((data) => console.log('Took a picture!', data))
.catch((e) => console.log('Error occurred while taking a picture', e));
.then(data => console.log('Took a picture!', data))
.catch(e => console.log('Error occurred while taking a picture', e));
});
```
#### AngularJS
Ionic Native generates an AngularJS module in runtime and prepares a service for each plugin. To use the plugins in your AngularJS app:
1. Download the latest bundle from the [Github releases](https://github.com/ionic-team/ionic-native/releases) page.
2. Include it in `index.html` before your app's code.
3. Inject `ionic.native` module in your app.
4. Inject any plugin you would like to use with a `$cordova` prefix.
```js
angular.module('myApp', ['ionic.native'])
.controller('MyPageController', function($cordovaCamera) {
$cordovaCamera.getPicture()
.then(
function(data) {
console.log('Took a picture!', data);
},
function(err) {
console.log('Error occurred while taking a picture', err);
}
);
});
angular.module('myApp', ['ionic.native']).controller('MyPageController', function ($cordovaCamera) {
$cordovaCamera.getPicture().then(
function (data) {
console.log('Took a picture!', data);
},
function (err) {
console.log('Error occurred while taking a picture', err);
}
);
});
```
#### Vanilla JS
To use Ionic Native in any other setup:
1. Download the latest bundle from the [Github releases](https://github.com/ionic-team/ionic-native/releases) page.
2. Include it in `index.html` before your app's code.
3. Access any plugin using the global `IonicNative` variable.
```js
document.addEventListener('deviceready', function() {
IonicNative.Camera.getPicture()
.then(
function(data) {
console.log('Took a picture!', data);
},
function(err) {
console.log('Error occurred while taking a picture', err);
}
);
document.addEventListener('deviceready', function () {
IonicNative.Camera.getPicture().then(
function (data) {
console.log('Took a picture!', data);
},
function (err) {
console.log('Error occurred while taking a picture', err);
}
);
});
```
### Mocking and Browser Development (Ionic/Angular apps only)
Ionic Native makes it possible to mock plugins and develop nearly the entirety of your app in the browser or in `ionic serve`.
@@ -190,8 +244,8 @@ class CameraMock extends Camera {
entryComponents: [MyApp, HomePage],
providers: [
{ provide: ErrorHandler, useClass: IonicErrorHandler },
{ provide: Camera, useClass: CameraMock }
]
{ provide: Camera, useClass: CameraMock },
],
})
export class AppModule {}
```
@@ -206,7 +260,6 @@ Spent way too long diagnosing an issue only to realize a plugin wasn't firing or
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:
# Credits
Ibby Hadeed - [@ihadeed](https://github.com/ihadeed)

View File

@@ -3,7 +3,7 @@ jobs:
build:
working_directory: ~/ionic-native/
docker:
- image: node:12
- image: node:14
steps:
- checkout
- restore_cache:

View File

@@ -11,7 +11,7 @@ const flagConfig = {
string: ['port', 'version', 'ngVersion', 'animations'],
boolean: ['dry-run'],
alias: { p: 'port', v: 'version', a: 'ngVersion' },
default: { port: 8000 }
default: { port: 8000 },
},
flags = minimist(process.argv.slice(2), flagConfig);
@@ -24,7 +24,7 @@ gulp.task('lint', () => {
.pipe(
tslint({
formatter: 'verbose',
configuration: 'tslint.json'
configuration: 'tslint.json',
})
)
.pipe(tslint.report());

6492
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +1,12 @@
{
"name": "ionic-native",
"version": "5.21.5",
"version": "5.33.0",
"description": "Native plugin wrappers for Cordova and Ionic with TypeScript, ES6+, Promise and Observable support",
"homepage": "https://ionicframework.com/",
"author": "Ionic Team <hi@ionic.io> (https://ionic.io)",
"license": "MIT",
"scripts": {
"prepare": "is-ci || husky install",
"test": "jest",
"test:watch": "jest --watch",
"build:core": "tsc -p tsconfig.core.json",
@@ -19,49 +20,58 @@
"readmes": "gulp readmes",
"docs-json": "ts-node -P scripts/tsconfig.json scripts/docs-json",
"version": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0 && git add CHANGELOG.md",
"shipit": "npm run build && npm run readmes && npm run npmpub"
"shipit": "npm run build && npm run readmes && npm run npmpub",
"prettier": "prettier src/**/* --write"
},
"dependencies": {
"tslib": "^2.2.0"
},
"devDependencies": {
"@angular/common": "~9.0.0",
"@angular/compiler": "~9.0.0",
"@angular/compiler-cli": "~9.0.0",
"@angular/core": "~9.0.0",
"@angular/common": "^11.2.13",
"@angular/compiler": "^11.2.13",
"@angular/compiler-cli": "^11.2.13",
"@angular/core": "^11.2.13",
"@types/cordova": "0.0.34",
"@types/fs-extra": "^8.0.1",
"@types/jest": "^25.1.2",
"@types/lodash": "^4.14.149",
"@types/node": "^12.12.27",
"@types/rimraf": "^2.0.3",
"@types/webpack": "^4.41.6",
"ajv": "^6.11.0",
"@types/fs-extra": "^9.0.11",
"@types/jest": "^26.0.23",
"@types/lodash": "^4.14.168",
"@types/node": "^12.20.12",
"@types/rimraf": "^3.0.0",
"@types/webpack": "^4.41.28",
"async-promise-queue": "^1.0.5",
"conventional-changelog-cli": "^2.0.31",
"cz-conventional-changelog": "^3.1.0",
"dgeni": "^0.4.12",
"conventional-changelog-cli": "^2.1.1",
"cz-conventional-changelog": "^3.3.0",
"dgeni": "^0.4.14",
"dgeni-packages": "0.16.10",
"fs-extra": "^8.1.0",
"fs-extra": "^10.0.0",
"gulp": "^4.0.2",
"gulp-rename": "^2.0.0",
"gulp-replace": "^1.0.0",
"gulp-replace": "^1.1.3",
"gulp-tslint": "^8.1.4",
"jest": "^25.1.0",
"lodash": "^4.17.15",
"minimist": "1.2.0",
"husky": "^6.0.0",
"is-ci": "^3.0.0",
"jest": "^26.6.3",
"lint-staged": "^11.0.0",
"lodash": "^4.17.21",
"minimist": "^1.2.5",
"natives": "^1.1.6",
"prettier": "^2.3.0",
"rimraf": "^3.0.2",
"rxjs": "~6.5.4",
"ts-jest": "^25.2.0",
"ts-node": "^8.6.2",
"tslint": "~5.18.0",
"rollup": "^2.47.0",
"rxjs": "^6.6.7",
"ts-jest": "^26.5.6",
"ts-node": "~8.3.0",
"tslint": "~6.1.0",
"tslint-config-prettier": "^1.18.0",
"tslint-ionic-rules": "0.0.21",
"typedoc": "^0.16.9",
"typescript": "~3.7.5",
"typescript-tslint-plugin": "0.5.5",
"typedoc": "^0.18.0",
"typescript": "~4.1.5",
"typescript-tslint-plugin": "^1.0.1",
"uglifyjs-webpack-plugin": "^2.2.0",
"unminified-webpack-plugin": "^2.0.0",
"webpack": "^4.41.6",
"winston": "^3.2.1",
"zone.js": "~0.10.2"
"webpack": "^4.46.0",
"winston": "^3.3.3",
"zone.js": "^0.11.4"
},
"jest": {
"transform": {
@@ -88,7 +98,9 @@
"path": "./node_modules/cz-conventional-changelog"
}
},
"dependencies": {
"tslib": "1.10.0"
"lint-staged": {
"*": [
"prettier src/**/* --write"
]
}
}

16
prettier.config.js Normal file
View File

@@ -0,0 +1,16 @@
module.exports = {
printWidth: 120,
tabWidth: 2,
useTabs: false,
semi: true,
singleQuote: true,
trailingComma: 'es5',
bracketSpacing: true,
jsxBracketSameLine: false,
arrowParens: 'avoid',
rangeStart: 0,
rangeEnd: Infinity,
requirePragma: false,
insertPragma: false,
proseWrap: 'preserve',
};

View File

@@ -18,7 +18,11 @@ export function getDecorator(node: ts.Node, index = 0): ts.Decorator {
}
export function hasDecorator(decoratorName: string, node: ts.Node): boolean {
return node.decorators && node.decorators.length && node.decorators.findIndex(d => getDecoratorName(d) === decoratorName) > -1;
return (
node.decorators &&
node.decorators.length &&
node.decorators.findIndex(d => getDecoratorName(d) === decoratorName) > -1
);
}
export function getDecoratorName(decorator: any) {
@@ -96,9 +100,11 @@ export function convertValueToLiteral(val: any) {
* @returns Typescript Object Literal Expression
*/
function objectToObjectLiteral(obj: { [key: string]: any }): ts.ObjectLiteralExpression {
const newProperties: ts.ObjectLiteralElementLike[] = Object.keys(obj).map((key: string): ts.ObjectLiteralElementLike => {
return ts.createPropertyAssignment(ts.createLiteral(key), convertValueToLiteral(obj[key]) as ts.Expression);
});
const newProperties: ts.ObjectLiteralElementLike[] = Object.keys(obj).map(
(key: string): ts.ObjectLiteralElementLike => {
return ts.createPropertyAssignment(ts.createLiteral(key), convertValueToLiteral(obj[key]) as ts.Expression);
}
);
return ts.createObjectLiteral(newProperties);
}
@@ -116,10 +122,14 @@ function arrayToArrayLiteral(list: any[]): ts.ArrayLiteralExpression {
export function getMethodsForDecorator(decoratorName: string) {
switch (decoratorName) {
case 'CordovaProperty': return ['cordovaPropertyGet', 'cordovaPropertySet'];
case 'InstanceProperty': return ['instancePropertyGet', 'instancePropertySet'];
case 'CordovaCheck': return ['checkAvailability'];
case 'InstanceCheck': return ['instanceAvailability'];
case 'CordovaProperty':
return ['cordovaPropertyGet', 'cordovaPropertySet'];
case 'InstanceProperty':
return ['instancePropertyGet', 'instancePropertySet'];
case 'CordovaCheck':
return ['checkAvailability'];
case 'InstanceCheck':
return ['instanceAvailability'];
}
return [camelCase(decoratorName)];

View File

@@ -2,6 +2,7 @@ import * as ts from 'typescript';
import * as fs from 'fs-extra';
import * as path from 'path';
import * as rimraf from 'rimraf';
import * as rollup from 'rollup';
import { generateDeclarations } from './transpile';
import { clone } from 'lodash';
import { EmitFlags, createCompilerHost, CompilerOptions, CompilerHost, createProgram } from '@angular/compiler-cli';
@@ -27,7 +28,7 @@ export function getProgram(rootNames: string[] = createSourceFiles()) {
return createProgram({
rootNames,
options,
host
host,
});
}
@@ -37,7 +38,7 @@ export function transpileNgxCore() {
emitFlags: EmitFlags.Metadata,
emitCallback: ({ program, writeFile, customTransformers, cancellationToken, targetSourceFile }) => {
return program.emit(targetSourceFile, writeFile, cancellationToken, true, customTransformers);
}
},
});
}
@@ -45,11 +46,8 @@ export function transpileNgx() {
getProgram().emit({
emitFlags: EmitFlags.Metadata,
customTransformers: {
beforeTs: [
importsTransformer(true),
pluginClassTransformer(true)
]
}
beforeTs: [importsTransformer(true), pluginClassTransformer(true)],
},
});
}
@@ -57,31 +55,59 @@ export function generateDeclarationFiles() {
generateDeclarations(PLUGIN_PATHS.map(p => p.replace('index.ts', 'ngx/index.ts')));
}
export function generateLegacyBundles() {
[
path.resolve(ROOT, 'dist/@ionic-native/core/index.js'),
...PLUGIN_PATHS.map(p =>
p.replace(path.join(ROOT, 'src'), path.join(ROOT, 'dist')).replace('index.ts', 'ngx/index.js')
),
].forEach(p =>
rollup
.rollup({
input: p,
onwarn(warning, warn) {
if (warning.code === 'UNUSED_EXTERNAL_IMPORT') return;
warn(warning);
},
external: ['@angular/core', '@ionic-native/core', 'rxjs', 'tslib'],
})
.then(bundle =>
bundle.write({
file: path.join(path.dirname(p), 'bundle.js'),
format: 'cjs',
})
)
);
}
// remove reference to @ionic-native/core decorators
export function modifyMetadata() {
debugger;
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: { members: { [x: string]: any[]; }; };
for (const prop in content[0].metadata) {
_prop = content[0].metadata[prop];
removeIonicNativeDecorators(_prop);
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: { members: { [x: string]: any[] } };
for (const prop in content[0].metadata) {
_prop = content[0].metadata[prop];
removeIonicNativeDecorators(_prop);
if (_prop.members) {
for (const memberProp in _prop.members) {
removeIonicNativeDecorators(_prop.members[memberProp][0]);
}
if (_prop.members) {
for (const memberProp in _prop.members) {
removeIonicNativeDecorators(_prop.members[memberProp][0]);
}
}
}
fs.writeJSONSync(p, content);
});
fs.writeJSONSync(p, content);
});
}
function removeIonicNativeDecorators(node: any) {
if (node.decorators && node.decorators.length) {
node.decorators = node.decorators.filter((d: { expression: { module: string; }; }) => d.expression.module !== '@ionic-native/core');
node.decorators = node.decorators.filter(
(d: { expression: { module: string } }) => d.expression.module !== '@ionic-native/core'
);
}
if (node.decorators && !node.decorators.length) delete node.decorators;
@@ -102,7 +128,5 @@ function createSourceFiles(): string[] {
}
export function cleanupNgx() {
PLUGIN_PATHS.forEach((indexPath: string) =>
rimraf.sync(indexPath.replace('index.ts', 'ngx'))
);
PLUGIN_PATHS.forEach((indexPath: string) => rimraf.sync(indexPath.replace('index.ts', 'ngx')));
}

View File

@@ -37,7 +37,7 @@ export function extractInjectables() {
injectableClasses.push({
file: tsSourceFile.path,
className: (node as ts.ClassDeclaration).name.text,
dirName: tsSourceFile.path.split(/[\\\/]+/).reverse()[1]
dirName: tsSourceFile.path.split(/[\\\/]+/).reverse()[1],
});
}
},

View File

@@ -4,7 +4,10 @@ import { getMethodsForDecorator } from '../helpers';
function transformImports(file: ts.SourceFile, ctx: ts.TransformationContext, ngcBuild?: boolean) {
// remove angular imports
if (!ngcBuild) {
file.statements = (file.statements as any).filter((s: any) => !(s.kind === ts.SyntaxKind.ImportDeclaration && s.moduleSpecifier.text === '@angular/core'));
// @ts-expect-error
file.statements = (file.statements as any).filter(
(s: any) => !(s.kind === ts.SyntaxKind.ImportDeclaration && s.moduleSpecifier.text === '@angular/core')
);
}
// find the @ionic-native/core import statement
@@ -19,9 +22,9 @@ function transformImports(file: ts.SourceFile, ctx: ts.TransformationContext, ng
const decoratorRegex: RegExp = /@([a-zA-Z]+)\(/g;
const ignored: string [] = ['Plugin', 'Component', 'Injectable'];
const ignored: string[] = ['Plugin', 'Component', 'Injectable'];
const keep: string [] = ['getPromise', 'checkAvailability'];
const keep: string[] = ['getPromise', 'checkAvailability'];
let m;
@@ -35,17 +38,17 @@ function transformImports(file: ts.SourceFile, ctx: ts.TransformationContext, ng
if (decorators.length) {
let methods = [];
decorators.forEach(d => methods = getMethodsForDecorator(d).concat(methods));
decorators.forEach(d => (methods = getMethodsForDecorator(d).concat(methods)));
const methodElements = methods.map(m => ts.createIdentifier(m));
const methodNames = methodElements.map((el) => el.escapedText);
const methodNames = methodElements.map(el => el.escapedText);
importStatement.importClause.namedBindings.elements = [
ts.createIdentifier('IonicNativePlugin'),
...methodElements,
...importStatement.importClause.namedBindings.elements.filter(
el => keep.indexOf(el.name.text) !== -1 && methodNames.indexOf(el.name.text) === -1
)
),
];
if (ngcBuild) {
@@ -53,7 +56,7 @@ function transformImports(file: ts.SourceFile, ctx: ts.TransformationContext, ng
binding => {
if (binding.escapedText) {
binding.name = {
text: binding.escapedText
text: binding.escapedText,
};
}
return binding;

View File

@@ -31,7 +31,3 @@ export function transformMembers(cls: ts.ClassDeclaration) {
return members;
}

View File

@@ -1,6 +1,12 @@
import * as ts from 'typescript';
import { Logger } from '../../logger';
import { convertValueToLiteral, getDecorator, getDecoratorArgs, getDecoratorName, getMethodsForDecorator } from '../helpers';
import {
convertValueToLiteral,
getDecorator,
getDecoratorArgs,
getDecoratorName,
getMethodsForDecorator,
} from '../helpers';
export function transformMethod(method: ts.MethodDeclaration) {
if (!method) return;
@@ -10,11 +16,17 @@ export function transformMethod(method: ts.MethodDeclaration) {
decoratorArgs = getDecoratorArgs(decorator);
try {
return ts.createMethod(undefined, undefined, undefined, method.name, undefined, method.typeParameters, method.parameters, method.type, ts.createBlock([
ts.createReturn(
getMethodBlock(method, decoratorName, decoratorArgs)
)
]));
return ts.createMethod(
undefined,
undefined,
undefined,
method.name,
undefined,
method.typeParameters,
method.parameters,
method.type,
ts.createBlock([ts.createReturn(getMethodBlock(method, decoratorName, decoratorArgs))])
);
} catch (e) {
Logger.error('Error transforming method: ' + (method.name as any).text);
Logger.error(e.message);
@@ -28,22 +40,23 @@ function getMethodBlock(method: ts.MethodDeclaration, decoratorName: string, dec
case 'CordovaCheck':
case 'InstanceCheck':
// TODO remove function wrapper
return ts.createImmediatelyInvokedArrowFunction([ts.createIf(
ts.createBinary(
ts.createCall(ts.createIdentifier(decoratorMethod), undefined, [ts.createThis()]),
ts.SyntaxKind.EqualsEqualsEqualsToken,
ts.createTrue()
return ts.createImmediatelyInvokedArrowFunction([
ts.createIf(
ts.createBinary(
ts.createCall(ts.createIdentifier(decoratorMethod), undefined, [ts.createThis()]),
ts.SyntaxKind.EqualsEqualsEqualsToken,
ts.createTrue()
),
method.body
),
method.body
)]);
]);
default:
return ts.createCall(ts.createIdentifier(decoratorMethod), undefined, [
ts.createThis(),
ts.createLiteral((method.name as any).text),
ts.createLiteral(decoratorArgs?.methodName || (method.name as any).text),
convertValueToLiteral(decoratorArgs),
ts.createIdentifier('arguments')
ts.createIdentifier('arguments'),
]);
}
}

View File

@@ -1,12 +1,7 @@
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) {
@@ -48,17 +43,15 @@ function transformClass(cls: any, ngcBuild?: boolean) {
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
|| (node.modifiers && node.modifiers.find(v => v.kind === ts.SyntaxKind.DeclareKeyword))) {
if (
node.kind !== ts.SyntaxKind.ClassDeclaration ||
(node.modifiers && node.modifiers.find(v => v.kind === ts.SyntaxKind.DeclareKeyword))
) {
return node;
}
return transformClass(node, ngcBuild);
@@ -67,9 +60,7 @@ function transformClasses(
);
}
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

@@ -32,9 +32,9 @@ export function transformProperty(members: any[], index: number) {
ts.createReturn(
ts.createCall(ts.createIdentifier(type + 'PropertyGet'), undefined, [
ts.createThis(),
ts.createLiteral((property.name as any).text)
ts.createLiteral((property.name as any).text),
])
)
),
])
);
@@ -42,24 +42,15 @@ export function transformProperty(members: any[], index: number) {
undefined,
undefined,
property.name,
[
ts.createParameter(
undefined,
undefined,
undefined,
'value',
undefined,
property.type
)
],
[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')
ts.createIdentifier('value'),
])
)
),
])
);

View File

@@ -13,22 +13,16 @@ export function getCompilerHost() {
}
export function getProgram(declaration = false, pluginPaths: string[] = PLUGIN_PATHS) {
const compilerOptions: ts.CompilerOptions = clone(COMPILER_OPTIONS);
compilerOptions.declaration = declaration;
compilerOptions.moduleResolution = ts.ModuleResolutionKind.NodeJs;
compilerOptions.target = ts.ScriptTarget.ES5;
compilerOptions.module = ts.ModuleKind.ES2015;
compilerOptions.inlineSourceMap = true;
compilerOptions.inlineSources = true;
compilerOptions.lib = [
'lib.dom.d.ts',
'lib.es5.d.ts',
'lib.es2015.d.ts',
'lib.es2016.d.ts',
'lib.es2017.d.ts'
];
const compilerOptions: ts.CompilerOptions = clone(COMPILER_OPTIONS);
compilerOptions.declaration = declaration;
compilerOptions.moduleResolution = ts.ModuleResolutionKind.NodeJs;
compilerOptions.target = ts.ScriptTarget.ES5;
compilerOptions.module = ts.ModuleKind.ES2015;
compilerOptions.inlineSourceMap = true;
compilerOptions.inlineSources = true;
compilerOptions.lib = ['lib.dom.d.ts', 'lib.es5.d.ts', 'lib.es2015.d.ts', 'lib.es2016.d.ts', 'lib.es2017.d.ts'];
return ts.createProgram(pluginPaths, compilerOptions, getCompilerHost());
return ts.createProgram(pluginPaths, compilerOptions, getCompilerHost());
}
export function generateDeclarations(sourceFiles?: string[]) {
@@ -37,15 +31,10 @@ export function generateDeclarations(sourceFiles?: string[]) {
export function transpile() {
const emitResult = getProgram().emit(undefined, getCompilerHost().writeFile, undefined, false, {
before: [
extractInjectables(),
importsTransformer(),
pluginClassTransformer(),
]
before: [extractInjectables(), importsTransformer(), pluginClassTransformer()],
});
emitInjectableClasses();
return emitResult;
}

View File

@@ -1,9 +1,8 @@
import * as fs from 'fs-extra';
import { basename, dirname, resolve } from 'path';
import { Application } from 'typedoc';
import { runInNewContext } from 'vm';
import TypeDoc = require('typedoc');
import { runInNewContext } from 'vm';
interface Plugin {
packageName: string;
@@ -16,6 +15,8 @@ interface Plugin {
cordovaPlugin: {
name: string;
};
premierSlug: string;
capacitorIncompatible: boolean;
}
const rootDir = resolve(__dirname, '../..');
@@ -28,7 +29,7 @@ typedoc.options.addReader(new TypeDoc.TypeDocReader());
typedoc.bootstrap({
mode: 'modules',
ignoreCompilerErrors: true
ignoreCompilerErrors: true,
});
run(pluginsDir);
@@ -38,7 +39,7 @@ async function run(pluginsDir: string) {
const modules = typedocData.children.filter(isModule);
const plugins = modules.filter(hasPlugin).map(processPlugin);
await fs.outputJson(resolve(__dirname, 'plugins.json'), plugins, {
spaces: 2
spaces: 2,
});
}
@@ -52,12 +53,13 @@ async function generateTypedoc(root: string, outputPath = typedocTmp) {
function processPlugin(pluginModule): Plugin {
const pluginClass = pluginModule.children.find(isPlugin);
const decorator = getPluginDecorator(pluginClass);
const packageName = `@ionic-native/${basename(
dirname(pluginModule.originalName)
)}`;
const packageName = `@ionic-native/${basename(dirname(pluginModule.originalName))}`;
const displayName = getTag(pluginClass, 'name');
const usage = getTag(pluginClass, 'usage');
const description = getTag(pluginClass, 'description');
const premierSlug = getTag(pluginClass, 'premier');
const capIncompat = getTag(pluginClass, 'capacitorincompatible');
const capacitorIncompatible = capIncompat ? true : undefined;
return {
packageName,
displayName,
@@ -67,8 +69,10 @@ function processPlugin(pluginModule): Plugin {
repo: decorator.repo,
installVariables: decorator.installVariables,
cordovaPlugin: {
name: decorator.plugin
}
name: decorator.plugin,
},
premierSlug,
capacitorIncompatible,
};
}
@@ -105,5 +109,4 @@ const isPlugin = (child: any): boolean =>
const hasPlugin = (child: any): boolean => child.children.some(isPlugin);
const hasTags = (child: any): boolean =>
child.comment && Array.isArray(child.comment.tags);
const hasTags = (child: any): boolean => child.comment && Array.isArray(child.comment.tags);

View File

@@ -1,3 +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.
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

@@ -1,3 +1,3 @@
module.exports = function(getLinkInfo) {
module.exports = function (getLinkInfo) {
getLinkInfo.useFirstAmbiguousLink = false;
};

View File

@@ -1,3 +1,3 @@
module.exports = function(log) {
module.exports = function (log) {
log.level = 'error'; //'silly', 'debug', 'info', 'warn', 'error'
};

View File

@@ -1,4 +1,3 @@
module.exports = function(parseTagsProcessor) {
parseTagsProcessor.tagDefinitions = parseTagsProcessor.tagDefinitions
.concat(require('../tag-defs/tag-defs'));
module.exports = function (parseTagsProcessor) {
parseTagsProcessor.tagDefinitions = parseTagsProcessor.tagDefinitions.concat(require('../tag-defs/tag-defs'));
};

View File

@@ -1,4 +1,4 @@
module.exports = function(templateEngine) {
module.exports = function (templateEngine) {
// Nunjucks and Angular conflict in their template bindings so change the Nunjucks
// Also conflict with Jekyll
templateEngine.config.tags = {
@@ -7,6 +7,6 @@ module.exports = function(templateEngine) {
blockStart: '<@',
blockEnd: '@>',
commentStart: '<#',
commentEnd: '#>'
commentEnd: '#>',
};
};

View File

@@ -1,4 +1,4 @@
module.exports = function(templateEngine) {
module.exports = function (templateEngine) {
// add custom filters to nunjucks
templateEngine.filters.push(
require('../filters/capital'),

View File

@@ -1,4 +1,4 @@
"use strict";
'use strict';
const Package = require('dgeni').Package,
jsdocPackage = require('dgeni-packages/jsdoc'),
nunjucksPackage = require('dgeni-packages/nunjucks'),
@@ -8,72 +8,68 @@ const Package = require('dgeni').Package,
config = require('../config.json');
module.exports = currentVersion => {
return (
new Package('ionic-native-docs', [jsdocPackage, nunjucksPackage, typescriptPackage, linksPackage])
return new Package('ionic-native-docs', [jsdocPackage, nunjucksPackage, typescriptPackage, linksPackage])
.processor(require('./processors/remove-private-members'))
.processor(require('./processors/hide-private-api'))
.processor(require('./processors/parse-optional'))
.processor(require('./processors/mark-properties'))
.processor(require('./processors/npm-id'))
.processor(require('./processors/jekyll'))
.processor(require('./processors/remove-private-members'))
.processor(require('./processors/hide-private-api'))
.processor(require('./processors/parse-optional'))
.processor(require('./processors/mark-properties'))
.processor(require('./processors/npm-id'))
.processor(require('./processors/jekyll'))
.config(require('./configs/log'))
.config(require('./configs/template-filters'))
.config(require('./configs/template-tags'))
.config(require('./configs/tag-defs'))
.config(require('./configs/links'))
.config(require('./configs/log'))
.config(require('./configs/template-filters'))
.config(require('./configs/template-tags'))
.config(require('./configs/tag-defs'))
.config(require('./configs/links'))
.config(function (renderDocsProcessor, computePathsProcessor) {
currentVersion = {
href: '/' + config.v2DocsDir.replace('content/', ''),
folder: '',
name: currentVersion,
};
.config(function(renderDocsProcessor, computePathsProcessor) {
renderDocsProcessor.extraData.version = {
list: [currentVersion],
current: currentVersion,
latest: currentVersion,
};
currentVersion = {
href: '/' + config.v2DocsDir.replace('content/', ''),
folder: '',
name: currentVersion
};
computePathsProcessor.pathTemplates = [
{
docTypes: ['class'],
getOutputPath: doc => 'content/' + config.v2DocsDir + '/' + doc.name + '/index.md',
},
];
})
renderDocsProcessor.extraData.version = {
list: [currentVersion],
current: currentVersion,
latest: currentVersion
};
//configure file reading
.config(function (readFilesProcessor, readTypeScriptModules) {
// Don't run unwanted processors since we are not using the normal file reading processor
readFilesProcessor.$enabled = false;
readFilesProcessor.basePath = path.resolve(__dirname, '../../..');
computePathsProcessor.pathTemplates = [{
docTypes: ['class'],
getOutputPath: doc => 'content/' + config.v2DocsDir + '/' + doc.name + '/index.md'
}];
readTypeScriptModules.basePath = path.resolve(__dirname, '../../..');
readTypeScriptModules.sourceFiles = ['./src/@ionic-native/plugins/**/*.ts'];
})
})
// Configure file writing
.config(function (writeFilesProcessor) {
writeFilesProcessor.outputFolder = '../ionic-site/';
})
//configure file reading
.config(function(readFilesProcessor, readTypeScriptModules) {
// Don't run unwanted processors since we are not using the normal file reading processor
readFilesProcessor.$enabled = false;
readFilesProcessor.basePath = path.resolve(__dirname, '../../..');
readTypeScriptModules.basePath = path.resolve(__dirname, '../../..');
readTypeScriptModules.sourceFiles = [
'./src/@ionic-native/plugins/**/*.ts'
];
})
// Configure file writing
.config(function(writeFilesProcessor) {
writeFilesProcessor.outputFolder = '../ionic-site/';
})
// Configure rendering
.config(function(templateFinder) {
templateFinder.templateFolders.unshift(path.resolve(__dirname, 'templates'));
// Specify how to match docs to templates.
templateFinder.templatePatterns = [
'${ doc.template }',
'${ doc.docType }.template.html',
'common.template.html'
];
});
// Configure rendering
.config(function (templateFinder) {
templateFinder.templateFolders.unshift(path.resolve(__dirname, 'templates'));
// Specify how to match docs to templates.
templateFinder.templatePatterns = [
'${ doc.template }',
'${ doc.docType }.template.html',
'common.template.html',
];
})
);
};

View File

@@ -1,4 +1,4 @@
"use strict";
'use strict';
const Package = require('dgeni').Package,
jsdocPackage = require('dgeni-packages/jsdoc'),
nunjucksPackage = require('dgeni-packages/nunjucks'),
@@ -8,68 +8,63 @@ const Package = require('dgeni').Package,
config = require('../config.json');
module.exports = currentVersion => {
return (
new Package('ionic-native-readmes', [jsdocPackage, nunjucksPackage, typescriptPackage, linksPackage])
return new Package('ionic-native-readmes', [jsdocPackage, nunjucksPackage, typescriptPackage, linksPackage])
.processor(require('./processors/readmes'))
.processor(require('./processors/remove-private-members'))
.processor(require('./processors/hide-private-api'))
.processor(require('./processors/npm-id'))
.processor(require('./processors/readmes'))
.processor(require('./processors/remove-private-members'))
.processor(require('./processors/hide-private-api'))
.processor(require('./processors/npm-id'))
.config(require('./configs/log'))
.config(require('./configs/template-filters'))
.config(require('./configs/template-tags'))
.config(require('./configs/tag-defs'))
.config(require('./configs/links'))
.config(require('./configs/log'))
.config(require('./configs/template-filters'))
.config(require('./configs/template-tags'))
.config(require('./configs/tag-defs'))
.config(require('./configs/links'))
.config(function (renderDocsProcessor, computePathsProcessor) {
currentVersion = {
href: '/' + config.v2DocsDir.replace('content/', ''),
folder: '',
name: currentVersion,
};
renderDocsProcessor.extraData.version = {
list: [currentVersion],
current: currentVersion,
latest: currentVersion,
};
.config(function(renderDocsProcessor, computePathsProcessor) {
computePathsProcessor.pathTemplates = [
{
docTypes: ['class'],
getOutputPath: doc =>
doc.originalModule.replace(config.pluginDir + '/', '').replace(/\/index$/, '/README.md'),
},
];
})
currentVersion = {
href: '/' + config.v2DocsDir.replace('content/', ''),
folder: '',
name: currentVersion
};
//configure file reading
.config(function (readFilesProcessor, readTypeScriptModules) {
// Don't run unwanted processors since we are not using the normal file reading processor
readFilesProcessor.$enabled = false;
readFilesProcessor.basePath = path.resolve(__dirname, '../../..');
renderDocsProcessor.extraData.version = {
list: [currentVersion],
current: currentVersion,
latest: currentVersion
};
readTypeScriptModules.basePath = path.resolve(path.resolve(__dirname, '../../..'));
readTypeScriptModules.sourceFiles = ['./src/@ionic-native/plugins/**/*.ts'];
})
computePathsProcessor.pathTemplates = [{
docTypes: ['class'],
getOutputPath: doc => doc.originalModule.replace(config.pluginDir + '/', '')
.replace(/\/index$/, '/README.md')
}];
// Configure file writing
.config(function (writeFilesProcessor) {
writeFilesProcessor.outputFolder = './dist/@ionic-native/';
})
})
//configure file reading
.config(function(readFilesProcessor, readTypeScriptModules) {
// Don't run unwanted processors since we are not using the normal file reading processor
readFilesProcessor.$enabled = false;
readFilesProcessor.basePath = path.resolve(__dirname, '../../..');
readTypeScriptModules.basePath = path.resolve(path.resolve(__dirname, '../../..'));
readTypeScriptModules.sourceFiles = ['./src/@ionic-native/plugins/**/*.ts'];
})
// Configure file writing
.config(function(writeFilesProcessor) {
writeFilesProcessor.outputFolder = './dist/@ionic-native/';
})
// Configure rendering
.config(function(templateFinder) {
templateFinder.templateFolders.unshift(path.resolve(__dirname, 'templates'));
// Specify how to match docs to templates.
templateFinder.templatePatterns = [
'${ doc.template }',
'${ doc.docType }.template.md',
'readme.template.md'
];
});
// Configure rendering
.config(function (templateFinder) {
templateFinder.templateFolders.unshift(path.resolve(__dirname, 'templates'));
// Specify how to match docs to templates.
templateFinder.templatePatterns = ['${ doc.template }', '${ doc.docType }.template.md', 'readme.template.md'];
})
);
};

View File

@@ -1,5 +1,5 @@
"use strict";
'use strict';
module.exports = {
name: 'capital',
process: str => str? str.charAt(0).toUpperCase() + str.substring(1) : ''
process: str => (str ? str.charAt(0).toUpperCase() + str.substring(1) : ''),
};

View File

@@ -1,4 +1,4 @@
"use strict";
'use strict';
const encoder = new require('node-html-encoder').Encoder();
function code(str, inline, lang) {
@@ -20,5 +20,5 @@ function code(str, inline, lang) {
module.exports = {
name: 'code',
process: (str, lang) => code(str, true, lang)
process: (str, lang) => code(str, true, lang),
};

View File

@@ -1,5 +1,5 @@
"use strict";
'use strict';
module.exports = {
name: 'dashify',
process: str => str? str.replace(/\s/g, '-') : ''
process: str => (str ? str.replace(/\s/g, '-') : ''),
};

View File

@@ -1,5 +1,5 @@
"use strict";
'use strict';
module.exports = {
name: 'dump',
process: obj => console.log(obj)
process: obj => console.log(obj),
};

View File

@@ -1,43 +1,39 @@
"use strict";
module.exports = function test(){
'use strict';
module.exports = function test() {
return {
name: 'debug',
$runBefore: ['rendering-docs'],
$process: function(docs){
docs.forEach(function(doc){
if (doc.name == "Camera"){
$process: function (docs) {
docs.forEach(function (doc) {
if (doc.name == 'Camera') {
console.log(doc.tags);
doc.tags.forEach(function(tag){
if(tag.tagName == 'classes'){
doc.tags.forEach(function (tag) {
if (tag.tagName == 'classes') {
}
});
doc.moduleDoc.exports.forEach(function(d,i){
if(d.name === 'CameraOptions') {
doc.moduleDoc.exports.forEach(function (d, i) {
if (d.name === 'CameraOptions') {
console.log('Name: ' + d.name);
console.log('Type: ' + d.docType);
console.log('First member: ', d.members[0]);
}
});
var exports = doc.exportSymbol.parent.exports;
for(var p in exports) {
if(p == 'CameraOptions')
{
for (var p in exports) {
if (p == 'CameraOptions') {
var x = exports[p];
console.log(x.members.quality);
}
}
doc.members.forEach(function(method){
if (method.name === "getPicture") {
doc.members.forEach(function (method) {
if (method.name === 'getPicture') {
console.log(method);
}
})
});
}
})
}
}
}
});
},
};
};

View File

@@ -1,9 +1,9 @@
"use strict";
'use strict';
module.exports = function removePrivateApi() {
return {
name: 'remove-private-api',
description: 'Prevent the private apis from being rendered',
$runBefore: ['rendering-docs'],
$process: docs => docs.filter(doc => !doc.private && (!doc.tags || !doc.tags.tagsByName.get('hidden')))
$process: docs => docs.filter(doc => !doc.private && (!doc.tags || !doc.tags.tagsByName.get('hidden'))),
};
};

View File

@@ -1,4 +1,4 @@
"use strict";
'use strict';
module.exports = function jekyll(renderDocsProcessor) {
return {
name: 'jekyll',
@@ -6,7 +6,6 @@ module.exports = function jekyll(renderDocsProcessor) {
$runAfter: ['paths-computed'],
$runBefore: ['rendering-docs'],
$process: docs => {
// pretty up and sort the docs object for menu generation
docs = docs.filter(doc => (!!doc.name && !!doc.outputPath) || doc.docType === 'index-page');
@@ -20,7 +19,7 @@ module.exports = function jekyll(renderDocsProcessor) {
const textA = a.name ? a.name.toUpperCase() : '',
textB = b.name ? b.name.toUpperCase() : '';
return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;
return textA < textB ? -1 : textA > textB ? 1 : 0;
});
docs.forEach(doc => {
@@ -29,11 +28,9 @@ module.exports = function jekyll(renderDocsProcessor) {
}
doc.outputPath = doc.outputPath.toLowerCase().replace(/\s/g, '-');
doc.URL = doc.outputPath.replace('docs//', 'docs/')
.replace('/index.md', '')
.replace('content/', '');
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")) {
if (!doc.URL.endsWith('/') && !doc.URL.endsWith('.html')) {
doc.URL = doc.URL + '/';
}
@@ -57,10 +54,10 @@ module.exports = function jekyll(renderDocsProcessor) {
docType: 'nativeMenu',
id: 'native_menu',
template: 'native_menu.template.html',
outputPath: 'content/_includes/fluid/native_menu.html'
outputPath: 'content/_includes/fluid/native_menu.html',
});
return docs;
}
},
};
};

View File

@@ -1,15 +1,16 @@
"use strict";
'use strict';
module.exports = function markProperties() {
return {
name: 'mark-properties',
$runBefore: ['rendering-docs'],
$process: docs => docs.map(doc => {
for (let i in doc.members) {
if (doc.members.hasOwnProperty(i) && typeof doc.members[i].parameters === 'undefined') {
doc.members[i].isProperty = true;
$process: docs =>
docs.map(doc => {
for (let i in doc.members) {
if (doc.members.hasOwnProperty(i) && typeof doc.members[i].parameters === 'undefined') {
doc.members[i].isProperty = true;
}
}
}
return doc;
})
}
return doc;
}),
};
};

View File

@@ -1,4 +1,4 @@
"use strict";
'use strict';
module.exports = function npmId(renderDocsProcessor) {
return {
name: 'npm-id',
@@ -6,7 +6,7 @@ module.exports = function npmId(renderDocsProcessor) {
$runBefore: ['rendering-docs'],
$process: docs => {
// pretty up and sort the docs object for menu generation
docs = docs.filter(function(doc) {
docs = docs.filter(function (doc) {
return (!!doc.name && !!doc.outputPath) || doc.docType === 'index-page';
});
@@ -15,6 +15,6 @@ module.exports = function npmId(renderDocsProcessor) {
});
return docs;
}
},
};
};

View File

@@ -1,4 +1,4 @@
"use strict";
'use strict';
module.exports = function parseOptional() {
return {
$runBefore: ['rendering-docs'],
@@ -17,6 +17,6 @@ module.exports = function parseOptional() {
}
});
return docs;
}
}
},
};
};

View File

@@ -1,4 +1,4 @@
"use strict";
'use strict';
module.exports = function readmes(renderDocsProcessor) {
return {
name: 'readmes',
@@ -14,6 +14,6 @@ module.exports = function readmes(renderDocsProcessor) {
});
return docs;
}
},
};
};

View File

@@ -1,4 +1,4 @@
"use strict";
'use strict';
module.exports = function removePrivateMembers() {
return {
name: 'remove-private-members',
@@ -7,7 +7,6 @@ module.exports = function removePrivateMembers() {
$runBefore: ['rendering-docs'],
$process: docs => {
docs.forEach(doc => {
if (doc.members) {
doc.members = doc.members.filter(member => !member.tags.tagsByName.get('hidden'));
}
@@ -15,10 +14,9 @@ module.exports = function removePrivateMembers() {
if (doc.statics) {
doc.statics = doc.statics.filter(staticMethod => !staticMethod.tags.tagsByName.get('hidden'));
}
});
return docs;
}
},
};
};

View File

@@ -1,11 +1,11 @@
"use strict";
'use strict';
module.exports = [
{'name': 'advanced'},
{'name': 'demo'},
{'name': 'beta', transforms: (doc, tag, value) => typeof value !== 'undefined'}, // make the value true or undefined instead of '' or undefined
{'name': 'usage'},
{'name': 'hidden'}, // hide from docs
{'name': 'classes'}, // related classes
{'name': 'interfaces'}, // related interfaces
{'name': 'paid', transforms: (doc, tag, value) => typeof value !== 'undefined'} // paid plugin, set value to true
{ name: 'advanced' },
{ name: 'demo' },
{ name: 'beta', transforms: (doc, tag, value) => typeof value !== 'undefined' }, // make the value true or undefined instead of '' or undefined
{ name: 'usage' },
{ name: 'hidden' }, // hide from docs
{ name: 'classes' }, // related classes
{ name: 'interfaces' }, // related interfaces
{ name: 'paid', transforms: (doc, tag, value) => typeof value !== 'undefined' }, // paid plugin, set value to true
];

View File

@@ -11,172 +11,124 @@ doc: "<$ doc.name $>"
docType: "<$ doc.docType $>"
---
<@- macro interfaceTable(interface) -@>
<@ for export in doc.moduleDoc.exports -@>
<@ if export.name == interface @>
<table class="table param-table" style="margin:0;">
<@- macro interfaceTable(interface) -@> <@ for export in doc.moduleDoc.exports -@> <@ if export.name == interface @>
<table class="table param-table" style="margin: 0;">
<thead>
<tr>
<th>Param</th>
<th>Type</th>
<th>Details</th>
</tr>
<tr>
<th>Param</th>
<th>Type</th>
<th>Details</th>
</tr>
</thead>
<tbody>
<@ for param in export.members @>
<tr>
<td>
<$ param.name $>
</td>
<td>
<code><$ param.returnType | escape $></code>
</td>
<td>
<$ param.description | marked $>
<@ if param.optional @><em>(optional)</em><@ endif @>
</td>
</tr>
<@ endfor @>
<@ for param in export.members @>
<tr>
<td>
<$ param.name $>
</td>
<td>
<code><$ param.returnType | escape $></code>
</td>
<td>
<$ param.description | marked $> <@ if param.optional @><em>(optional)</em><@ endif @>
</td>
</tr>
<@ endfor @>
</tbody>
</table>
<@ endif @>
<@- endfor @>
<@- endmacro -@>
<@- macro githubViewLink(doc) -@>
<a href="https://github.com/ionic-team/ionic-native/tree/master/<$ doc.fileInfo.relativePath $>#L<$ doc.location.start.line+1 $>-L<$ doc.location.end.line+1 $>"><$ doc.fileInfo.relativePath $> (line <$ doc.location.start.line+1 $>)</a>
<@- endmacro -@>
<@- macro paramTable(params, isDirective) -@>
<table class="table param-table" style="margin:0;">
<@ endif @> <@- endfor @> <@- endmacro -@> <@- macro githubViewLink(doc) -@>
<a
href="https://github.com/ionic-team/ionic-native/tree/master/<$ doc.fileInfo.relativePath $>#L<$ doc.location.start.line+1 $>-L<$ doc.location.end.line+1 $>"
><$ doc.fileInfo.relativePath $> (line <$ doc.location.start.line+1 $>)</a
>
<@- endmacro -@> <@- macro paramTable(params, isDirective) -@>
<table class="table param-table" style="margin: 0;">
<thead>
<tr>
<th><@ if isDirective @>Attr<@ else @>Param<@ endif @></th>
<th>Type</th>
<th>Details</th>
</tr>
<tr>
<th><@ if isDirective @>Attr<@ else @>Param<@ endif @></th>
<th>Type</th>
<th>Details</th>
</tr>
</thead>
<tbody>
<@- for param in params @>
<tr>
<td>
<$ param.name $>
<@- if param.alias @>| <$ param.alias $><@ endif -@>
</td>
<td>
<$ typeList(param.typeList) $>
</td>
<td>
<$ param.description | marked $>
<@- if param.defaultValue @><p><em>(default: <$ param.defaultValue $>)</em></p><@ endif -@>
</td>
</tr>
<@ endfor -@>
<@- for param in params @>
<tr>
<td>
<$ param.name $> <@- if param.alias @>| <$ param.alias $><@ endif -@>
</td>
<td>
<$ typeList(param.typeList) $>
</td>
<td>
<$ param.description | marked $> <@- if param.defaultValue @>
<p><em>(default: <$ param.defaultValue $>)</em></p>
<@ endif -@>
</td>
</tr>
<@ endfor -@>
</tbody>
</table>
<@- endmacro -@>
<@- macro functionSyntax(fn) @>
<@- set sep = joiner(',&nbsp;') -@>
<code><$ fn.name $><@- if not fn.isProperty @>(<@ endif -@><@- for param in fn.params @><$ sep() $>
<@- if param.type.optional @>[<@- endif -@>
<$ param.name $>
<@- if param.type.optional -@>]<@- endif -@>
<@- endfor -@><@- if not fn.isProperty @>)<@- endif -@></code>
<@- endmacro -@>
<@- macro typeList(types) -@>
<@ set separator = joiner("|") @>
<@- for type in types @><$ separator() $><$ type | code $><@ endfor -@>
<@- endmacro -@>
<@- macro typeInfo(fn) -@>
<$ typeList(fn.typeList) $> <$ fn.description $>
<@- endmacro -@>
<@- macro documentPlatforms(method) -@>
<@- if method.decorators @>
<@ for prop in method.decorators[0].argumentInfo @>
<@ if prop.platforms @>
<@- endmacro -@> <@- macro functionSyntax(fn) @> <@- set sep = joiner(',&nbsp;') -@>
<code
><$ fn.name $><@- if not fn.isProperty @>(<@ endif -@><@- for param in fn.params @><$ sep() $> <@- if
param.type.optional @>[<@- endif -@> <$ param.name $> <@- if param.type.optional -@>]<@- endif -@> <@- endfor -@><@-
if not fn.isProperty @>)<@- endif -@></code
>
<@- endmacro -@> <@- macro typeList(types) -@> <@ set separator = joiner("|") @> <@- for type in types @><$ separator()
$><$ type | code $><@ endfor -@> <@- endmacro -@> <@- macro typeInfo(fn) -@> <$ typeList(fn.typeList) $> <$
fn.description $> <@- endmacro -@> <@- macro documentPlatforms(method) -@> <@- if method.decorators @> <@ for prop in
method.decorators[0].argumentInfo @> <@ if prop.platforms @>
<p>
<strong>Platforms:</strong>
<@- for platform in prop.platforms -@>
<strong class="tag"><$ platform $></strong>&nbsp;
<@- endfor -@>
<strong class="tag"><$ platform $></strong>&nbsp; <@- endfor -@>
</p>
<@ endif @>
<@ endfor @>
<@- endif @>
<@- endmacro -@>
<@ macro documentMethod(method) -@>
<@ endif @> <@ endfor @> <@- endif @> <@- endmacro -@> <@ macro documentMethod(method) -@>
<h3><a class="anchor" name="<$ method.name $>" href="#<$ method.name $>"></a><$ functionSyntax(method) $></h3>
<$ documentPlatforms(method) $>
<$ method.description $>
<@ if method.params -@>
<$ paramTable(method.params) $>
<@- endif @>
<@ if method.returns -@>
<$ documentPlatforms(method) $> <$ method.description $> <@ if method.params -@> <$ paramTable(method.params) $> <@-
endif @> <@ if method.returns -@>
<div class="return-value" markdown="1">
<i class="icon ion-arrow-return-left"></i>
<b>Returns:</b> <$ typeInfo(method.returns) $>
</div>
<@- endif @>
<@- endmacro -@>
<@- macro documentClass(doc) @>
<@- if doc.statics.length -@>
<@- endif @> <@- endmacro -@> <@- macro documentClass(doc) @> <@- if doc.statics.length -@>
<h2><a class="anchor" name="static-members" href="#static-members"></a>Static Members</h2>
<@ for method in doc.statics -@>
<$ documentMethod(method) $>
<@ endfor -@>
<@ endif @>
<# --- methods in class --- #>
<@ for method in doc.statics -@> <$ documentMethod(method) $> <@ endfor -@> <@ endif @> <# --- methods in class --- #>
<@- if doc.members and doc.members.length @>
<h2><a class="anchor" name="instance-members" href="#instance-members"></a>Instance Members</h2>
<@ for method in doc.members -@>
<$ documentMethod(method) $>
<@- endfor @>
<@- endif -@>
<@ endmacro @>
<@ for method in doc.members -@> <$ documentMethod(method) $> <@- endfor @> <@- endif -@> <@ endmacro @>
<h1 class="api-title"><$ doc.name $>
<@- if doc.beta == true -@>
<span class="beta" title="beta">&beta;</span>
<@- endif -@>
<@- if doc.paid == true -@>
<span class="paid" title="paid">Paid</span>
<h1 class="api-title">
<$ doc.name $> <@- if doc.beta == true -@>
<span class="beta" title="beta">&beta;</span>
<@- endif -@> <@- if doc.paid == true -@>
<span class="paid" title="paid">Paid</span>
<@- endif -@>
</h1>
<a class="improve-v2-docs" href="http://github.com/ionic-team/ionic-native/edit/master/<$ doc.fileInfo.relativePath|replace('/home/ubuntu/ionic-native/', '')|replace('//','/') $>#L<$ doc.location.start.line $>">
<a
class="improve-v2-docs"
href="http://github.com/ionic-team/ionic-native/edit/master/<$ doc.fileInfo.relativePath|replace('/home/ubuntu/ionic-native/', '')|replace('//','/') $>#L<$ doc.location.start.line $>"
>
Improve this doc
</a>
<# --- Decorators --- #>
<@- if doc.decorators @>
<@ for prop in doc.decorators[0].argumentInfo @>
<@ if doc.beta == true @>
<# --- Decorators --- #> <@- if doc.decorators @> <@ for prop in doc.decorators[0].argumentInfo @> <@ if doc.beta ==
true @>
<p class="beta-notice">
This plugin is still in beta stage and may not work as expected. Please
submit any issues to the <a target="_blank"
href="<$ prop.repo $>/issues">plugin repo</a>.
This plugin is still in beta stage and may not work as expected. Please submit any issues to the
<a target="_blank" href="<$ prop.repo $>/issues">plugin repo</a>.
</p>
<@ endif @>
<@ if doc.paid == true @>
<@ endif @> <@ if doc.paid == true @>
<p class="paid-notice">
This plugin might require a paid license, or might take a share of your app's earnings.
Check the <a target="_blank" rel="nofollow" href="<$ prop.repo $>">plugin's repo</a> for more information.
This plugin might require a paid license, or might take a share of your app's earnings. Check the
<a target="_blank" rel="nofollow" href="<$ prop.repo $>">plugin's repo</a> for more information.
</p>
<@ endif @>
<@ endif @> <# --- Plugin description --- #> <$ doc.description | marked $>
<# --- Plugin description --- #>
<$ doc.description | marked $>
<p>Repo:
<p>
Repo:
<a href="<$ prop.repo $>">
<$ prop.repo $>
</a>
@@ -185,115 +137,72 @@ docType: "<$ doc.docType $>"
<# --- Install commands --- #>
<h2><a class="anchor" name="installation" href="#installation"></a>Installation</h2>
<ol class="installation">
<li>Install the Cordova and Ionic Native plugins:<br>
<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 @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>
<li>
<a href="https://ionicframework.com/docs/native/#Add_Plugins_to_Your_App_Module"
>Add this plugin to your app's module</a
>
</li>
</ol>
<# --- Plugin supported platforms --- #>
<@ if prop.platforms @>
<# --- Plugin supported platforms --- #> <@ if prop.platforms @>
<h2><a class="anchor" name="platforms" href="#platforms"></a>Supported platforms</h2>
<ul>
<@ for platform in prop.platforms -@>
<li><$ platform $></li>
<@- endfor @>
</ul>
<@ endif @>
<@ endfor @>
<@ endif -@> <# --- end of: if doc.decorators --- #>
<# --- Plugin usage --- #>
<@ if doc.usage @>
<@ endif @> <@ endfor @> <@ endif -@> <# --- end of: if doc.decorators --- #> <# --- Plugin usage --- #> <@ if doc.usage
@>
<h2><a class="anchor" name="usage" href="#usage"></a>Usage</h2>
<$ doc.usage | marked $>
<@ endif @>
<# --- Plugin attributes --- #>
<@- if doc.properties -@>
<$ doc.usage | marked $> <@ endif @> <# --- Plugin attributes --- #> <@- if doc.properties -@>
<h2><a class="anchor" name="attributes" href="#attributes"></a>Attributes:</h2>
<table class="table" style="margin:0;">
<table class="table" style="margin: 0;">
<thead>
<tr>
<th>Attribute</th>
<@ set hasTypes = false @>
<@ for prop in doc.properties @>
<@ if prop.type @>
<@ set hasTypes = true @>
<@ endif @>
<@ endfor @>
<@ if hasTypes @>
<th>Type</th>
<@ endif @>
<th>Description</th>
</tr>
<tr>
<th>Attribute</th>
<@ set hasTypes = false @> <@ for prop in doc.properties @> <@ if prop.type @> <@ set hasTypes = true @> <@ endif
@> <@ endfor @> <@ if hasTypes @>
<th>Type</th>
<@ endif @>
<th>Description</th>
</tr>
</thead>
<tbody>
<@- for prop in doc.properties -@>
<tr>
<td>
<$ prop.name $>
</td>
<@ if hasTypes @>
<td>
<$ prop.type.name $>
</td>
<@ endif @>
<td>
<$ prop.description $>
</td>
</tr>
<@ endfor -@>
<@- for prop in doc.properties -@>
<tr>
<td>
<$ prop.name $>
</td>
<@ if hasTypes @>
<td>
<$ prop.type.name $>
</td>
<@ endif @>
<td>
<$ prop.description $>
</td>
</tr>
<@ endfor -@>
</tbody>
</table>
<@- endif -@>
<# --- Plugin class documentation --- #>
<$ documentClass(doc) $>
<# --- Advanced usage --- #>
<@- if doc.advanced -@>
<@- endif -@> <# --- Plugin class documentation --- #> <$ documentClass(doc) $> <# --- Advanced usage --- #> <@- if
doc.advanced -@>
<h2><a class="anchor" name="advanced" href="#advanced"></a>Advanced</h2>
<$ doc.advanced | marked $>
<@- endif -@>
<# --- Other classes --- #>
<@- for tag in doc.tags.tags -@>
<@- if tag.tagName == 'classes' -@>
<@- set classes = tag.description.split('\n') -@>
<@- for item in classes -@>
<@- if item.length > 1 -@>
<@- for export in doc.moduleDoc.exports -@>
<@- if export.name == item -@>
<$ doc.advanced | marked $> <@- endif -@> <# --- Other classes --- #> <@- for tag in doc.tags.tags -@> <@- if
tag.tagName == 'classes' -@> <@- set classes = tag.description.split('\n') -@> <@- for item in classes -@> <@- if
item.length > 1 -@> <@- for export in doc.moduleDoc.exports -@> <@- if export.name == item -@>
<h2><a class="anchor" name="<$ item $>" href="#<$ item $>"></a><$ item $></h2>
<$ documentClass(export) $>
<@- endif -@>
<@- endfor -@>
<@- endif -@>
<@- endfor -@>
<@- endif -@>
<@- endfor -@>
<# --- Other interfaces --- #>
<@ for tag in doc.tags.tags -@>
<@ if tag.tagName == 'interfaces' @>
<@ set interfaces = tag.description.split('\n') @>
<@ for item in interfaces -@>
<@ if item.length > 1 @>
<$ documentClass(export) $> <@- endif -@> <@- endfor -@> <@- endif -@> <@- endfor -@> <@- endif -@> <@- endfor -@> <#
--- Other interfaces --- #> <@ for tag in doc.tags.tags -@> <@ if tag.tagName == 'interfaces' @> <@ set interfaces =
tag.description.split('\n') @> <@ for item in interfaces -@> <@ if item.length > 1 @>
<h2><a class="anchor" name="<$ item $>" href="#<$ item $>"></a><$ item $></h2>
<$ interfaceTable(item) $>
<@ endif @>
<@- endfor @>
<@ endif @>
<@- endfor @>
<# --- Related links --- #>
<@- if doc.see @>
<$ interfaceTable(item) $> <@ endif @> <@- endfor @> <@ endif @> <@- endfor @> <# --- Related links --- #> <@- if
doc.see @>
<h2><a class="anchor" name="related" href="#related"></a>Related</h2>
<@ for s in doc.see @>
<$ s | safe $>
<@- endfor -@>
<@- endif -@>
<@ for s in doc.see @> <$ s | safe $> <@- endfor -@> <@- endif -@>

View File

@@ -6,5 +6,9 @@
</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>
</li><@ endif @><@ endfor @>
<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

@@ -5,6 +5,7 @@
# <$ doc.name $>
<@- if doc.beta == true @>
<p style="color:orange">
This plugin is still in beta stage and may not work as expected. Please
submit any issues to the <a target="_blank"
@@ -12,7 +13,6 @@
</p>
<@ endif -@>
<@ for prop in doc.decorators[0].argumentInfo @>
```
@@ -29,9 +29,11 @@ Plugin Repo: [<$ prop.repo $>](<$ prop.repo $>)
<@- if prop.platforms @>
## Supported platforms
<@ for platform in prop.platforms -@>
- <$ platform $>
<@ endfor @>
<@ endfor @>
<@ endif -@>

View File

@@ -31,11 +31,11 @@ function run {
if [ $CHANGED -eq 0 ];
then
echo "-- No changes detected for the following commit, docs not updated."
echo "https://github.com/ionic-team/$CIRCLE_PROJECT_REPONAME/commit/$CIRCLE_SHA1"
echo "https://github.com/ionic-team/$GITHUB_PROJECT_REPONAME/commit/$GITHUB_SHA1"
else
git config --global user.email "hi@ionicframework.com"
git config --global user.name "Ionitron"
git commit -am "Automated build of native docs ionic-team/$CIRCLE_PROJECT_REPONAME@$CIRCLE_SHA1"
git commit -am "Automated build of native docs ionic-team/$GITHUB_PROJECT_REPONAME@$GITHUB_SHA1"
# in case a different commit was pushed to ionic-site during doc/demo gen,
# try to rebase around it before pushing
git fetch

View File

@@ -7,5 +7,5 @@ const LOG_LEVEL = 'verbose';
export const Logger = createLogger({
level: LOG_LEVEL,
format: combine(colorize(), simple()),
transports: [new transports.Console({ level: LOG_LEVEL })]
transports: [new transports.Console({ level: LOG_LEVEL })],
});

View File

@@ -5,26 +5,20 @@ import * as unminifiedPlugin from 'unminified-webpack-plugin';
import * as webpack from 'webpack';
import { ROOT } from '../build/helpers';
import {
cleanEmittedData,
EMIT_PATH,
InjectableClassEntry
} from '../build/transformers/extract-injectables';
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',
@@ -33,36 +27,36 @@ const webpackConfig: webpack.Configuration = {
target: 'web',
output: {
path: DIST,
filename: 'ionic-native.min.js'
filename: 'ionic-native.min.js',
},
resolve: {
modules: ['node_modules'],
extensions: ['.js'],
alias: {
'@ionic-native/core': path.resolve(DIST, '@ionic-native/core/index.js')
}
'@ionic-native/core': path.resolve(DIST, '@ionic-native/core/index.js'),
},
},
module: {
rules: [
{
test: /\.js$/,
use: path.resolve(ROOT, 'scripts/build/remove-tslib-helpers.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({
'process.env.NODE_ENV': JSON.stringify('production')
'process.env.NODE_ENV': JSON.stringify('production'),
}),
new uglifyJsPlugin({
sourceMap: true
sourceMap: true,
}),
new unminifiedPlugin()
]
new unminifiedPlugin(),
],
};
function getPluginImport(entry: InjectableClassEntry) {

View File

@@ -14,30 +14,21 @@ const outDirs = PLUGIN_PATHS.map(p =>
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;`;
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
} }`
`var ${entry.className} = new ${entry.className}Original();\nexport { ${entry.className} }`
);
});

View File

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

View File

@@ -15,14 +15,15 @@ const FLAGS = '--access public';
const PACKAGE_JSON_BASE = {
description: 'Ionic Native - Native plugins for ionic apps',
main: 'bundle.js',
module: 'index.js',
typings: 'index.d.ts',
author: 'ionic',
license: 'MIT',
repository: {
type: 'git',
url: 'https://github.com/ionic-team/ionic-native.git'
}
url: 'https://github.com/ionic-team/ionic-native.git',
},
};
const DIST = path.resolve(ROOT, 'dist/@ionic-native');
@@ -34,16 +35,15 @@ const RXJS_VERSION = '^5.5.0 || ^6.5.0';
const PLUGIN_PEER_DEPENDENCIES = {
'@ionic-native/core': MIN_CORE_VERSION,
rxjs: RXJS_VERSION
rxjs: RXJS_VERSION,
};
function getPackageJsonContent(name: string, peerDependencies = {}, dependencies = {}) {
return merge(PACKAGE_JSON_BASE, {
name: '@ionic-native/' + name,
dependencies,
peerDependencies,
version: VERSION
version: VERSION,
});
}
@@ -52,7 +52,7 @@ function writePackageJson(data: any, dir: string) {
fs.writeJSONSync(filePath, data);
PACKAGES.push(dir);
}
function writeNGXPackageJson(data: any, dir: string){
function writeNGXPackageJson(data: any, dir: string) {
const filePath = path.resolve(dir, 'package.json');
fs.writeJSONSync(filePath, data);
}
@@ -79,7 +79,7 @@ async function publish(ignoreErrors = false) {
// upload 1 package per CPU thread at a time
const worker = Queue.async.asyncify(
(pkg: any) =>
new Promise<any>((resolve, reject) => {
new Promise<string | void>((resolve, reject) => {
exec(`npm publish ${pkg} ${FLAGS}`, (err, stdout) => {
if (stdout) {
Logger.verbose(stdout.trim());
@@ -87,9 +87,7 @@ async function publish(ignoreErrors = false) {
}
if (err) {
if (!ignoreErrors) {
if (
err.message.includes('You cannot publish over the previously published version')
) {
if (err.message.includes('You cannot publish over the previously published version')) {
Logger.verbose('Ignoring duplicate version error.');
return resolve();
}

View File

@@ -6,7 +6,5 @@
"noImplicitAny": false,
"lib": ["es6"]
},
"exclude": [
"node_modules"
]
"exclude": ["node_modules"]
}

View File

@@ -22,9 +22,7 @@ export function getPromise<T>(callback: (resolve: Function, reject?: Function) =
if (typeof window !== 'undefined' && window.angular) {
const doc = window.document;
const injector = window.angular
.element(doc.querySelector('[ng-app]') || doc.body)
.injector();
const injector = window.angular.element(doc.querySelector('[ng-app]') || doc.body).injector();
if (injector) {
const $q = injector.get('$q');
return $q((resolve: Function, reject: Function) => {
@@ -39,12 +37,7 @@ export function getPromise<T>(callback: (resolve: Function, reject?: Function) =
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) {
@@ -149,7 +142,10 @@ function wrapObservable(pluginObj: any, methodName: string, args: any[], opts: a
* @returns {Observable}
*/
function wrapEventObservable(event: string, element: any): Observable<any> {
element = (typeof window !== 'undefined' && element) ? get(window, element) : element || (typeof window !== 'undefined' ? window : {});
element =
typeof window !== 'undefined' && element
? get(window, element)
: element || (typeof window !== 'undefined' ? window : {});
return fromEvent(element, event);
}
@@ -168,11 +164,7 @@ export function checkAvailability(
methodName?: string,
pluginName?: string
): boolean | { error: string };
export function checkAvailability(
plugin: 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') {
@@ -203,10 +195,7 @@ export function checkAvailability(
* @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 {
@@ -328,13 +317,7 @@ 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.'
'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.`);

View File

@@ -17,10 +17,6 @@ function overrideFunction(pluginObj: any, methodName: string): Observable<any> {
});
}
export function cordovaFunctionOverride(
pluginObj: any,
methodName: string,
args: IArguments | any[] = []
) {
export function cordovaFunctionOverride(pluginObj: any, methodName: string, args: IArguments | any[] = []) {
return overrideFunction(pluginObj, methodName);
}

View File

@@ -1,12 +1,7 @@
import { wrapInstance } from './common';
import { CordovaOptions } from './interfaces';
export function cordovaInstance(
pluginObj: any,
methodName: string,
config: CordovaOptions,
args: IArguments | any[]
) {
export function cordovaInstance(pluginObj: any, methodName: string, config: CordovaOptions, args: IArguments | any[]) {
args = Array.from(args);
return wrapInstance(pluginObj, methodName, config).apply(this, args);
}

View File

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

View File

@@ -33,6 +33,10 @@ export interface PluginConfig {
export interface CordovaOptions {
destruct?: boolean;
/**
* If the method-name of the cordova plugin is different from the wrappers one, it can be defined here
*/
methodName?: string;
/**
* Set to true if the wrapped method is a sync function
*/

View File

@@ -19,7 +19,7 @@ export function initAngular1(plugins: any) {
const funcs = window.angular.copy(cls);
funcs.__proto__['name'] = name;
return funcs;
}
},
]);
})(serviceName, cls, name);
}

View File

@@ -299,7 +299,7 @@ export interface DataCaptureResult {
pluginRef: 'AbbyyRtrSdk',
repo: 'https://github.com/abbyysdk/RTR-SDK.Cordova',
install: 'ionic cordova plugin add cordova-plugin-abbyy-rtr-sdk',
platforms: ['Android', 'iOS']
platforms: ['Android', 'iOS'],
})
@Injectable()
export class AbbyyRTR extends IonicNativePlugin {

View File

@@ -93,7 +93,7 @@ export interface ActionSheetOptions {
plugin: 'cordova-plugin-actionsheet',
pluginRef: 'plugins.actionsheet',
repo: 'https://github.com/EddyVerbruggen/cordova-plugin-actionsheet',
platforms: ['Android', 'Browser', 'iOS', 'Windows', 'Windows Phone 8']
platforms: ['Android', 'Browser', 'iOS', 'Windows', 'Windows Phone 8'],
})
@Injectable()
export class ActionSheet extends IonicNativePlugin {
@@ -111,7 +111,7 @@ export class ActionSheet extends IonicNativePlugin {
THEME_HOLO_DARK: 2,
THEME_HOLO_LIGHT: 3,
THEME_DEVICE_DEFAULT_DARK: 4,
THEME_DEVICE_DEFAULT_LIGHT: 5
THEME_DEVICE_DEFAULT_LIGHT: 5,
};
/**

View File

@@ -45,17 +45,24 @@ export class AdjustConfig {
private delayStart = 0.0;
private logLevel: AdjustLogLevel = null;
private defaultTracker: string = null;
private urlStrategy: AdjustUrlStrategy = null;
private externalDeviceId: string = null;
private sendInBackground: boolean = null;
private shouldLaunchDeeplink: boolean = null;
private eventBufferingEnabled: boolean = null;
private userAgent: string = null;
private isDeviceKnown: boolean = null;
private needsCost: 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 preinstallTrackingEnabled: boolean = null; // Android only
private allowiAdInfoReading: boolean = null; // iOS only
private allowIdfaReading: boolean = null; // iOS only
private allowAdServicesInfoReading: boolean = null; // iOS only
private attributionCallback: (attribution: AdjustAttribution) => void = null;
private eventTrackingSucceededCallback: (event: AdjustEventSuccess) => void = null;
@@ -89,6 +96,14 @@ export class AdjustConfig {
this.defaultTracker = defaultTracker;
}
setExternalDeviceId(externalDeviceId: string) {
this.externalDeviceId = externalDeviceId;
}
setUrlStrategy(urlStrategy: AdjustUrlStrategy) {
this.urlStrategy = urlStrategy;
}
setSendInBackground(sendInBackground: boolean) {
this.sendInBackground = sendInBackground;
}
@@ -109,23 +124,39 @@ export class AdjustConfig {
this.isDeviceKnown = isDeviceKnown;
}
setNeedsCost(needsCost: boolean) {
this.needsCost = needsCost;
}
setProcessName(processName: string) {
this.processName = processName;
}
setPreinstallTrackingEnabled(preinstallTrackingEnabled: boolean) {
this.preinstallTrackingEnabled = preinstallTrackingEnabled;
}
setAllowiAdInfoReading(allowiAdInfoReading: boolean) {
this.allowiAdInfoReading = allowiAdInfoReading;
}
setAllowIdfaReading(allowIdfaReading: boolean) {
this.allowIdfaReading = allowIdfaReading;
}
setAllowAdServicesInfoReading(allowAdServicesInfoReading: boolean) {
this.allowAdServicesInfoReading = allowAdServicesInfoReading;
}
setAttributionCallbackListener(attributionCallback: (attribution: AdjustAttribution) => void) {
this.attributionCallback = attributionCallback;
}
setEventTrackingSucceededCallbackListener(
eventTrackingSucceededCallback: (event: AdjustEventSuccess) => void
) {
setEventTrackingSucceededCallbackListener(eventTrackingSucceededCallback: (event: AdjustEventSuccess) => void) {
this.eventTrackingSucceededCallback = eventTrackingSucceededCallback;
}
setEventTrackingFailedCallbackListener(
eventTrackingFailedCallback: (event: AdjustEventFailure) => void
) {
setEventTrackingFailedCallbackListener(eventTrackingFailedCallback: (event: AdjustEventFailure) => void) {
this.eventTrackingFailedCallback = eventTrackingFailedCallback;
}
@@ -135,9 +166,7 @@ export class AdjustConfig {
this.sessionTrackingSucceededCallback = sessionTrackingSucceededCallback;
}
setSessionTrackingFailedCallbackListener(
sessionTrackingFailedCallback: (session: AdjustSessionFailure) => void
) {
setSessionTrackingFailedCallbackListener(sessionTrackingFailedCallback: (session: AdjustSessionFailure) => void) {
this.sessionTrackingFailedCallback = sessionTrackingFailedCallback;
}
@@ -194,6 +223,92 @@ export class AdjustConfig {
}
}
export class AdjustAppStoreSubscription {
private price: string;
private currency: string;
private transactionId: string;
private receipt: string;
private transactionDate: string;
private salesRegion: string;
private callbackParameters: string[] = [];
private partnerParameters: string[] = [];
constructor(price: string, currency: string, transactionId: string, receipt: string) {
this.price = price;
this.currency = currency;
this.transactionId = transactionId;
this.receipt = receipt;
}
setTransactionDate(transactionDate: string): void {
this.transactionDate = transactionDate;
}
setSalesRegion(salesRegion: string): void {
this.salesRegion = salesRegion;
}
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);
}
}
export class AdjustPlayStoreSubscription {
private price: string;
private currency: string;
private sku: string;
private orderId: string;
private signature: string;
private purchaseToken: string;
private purchaseTime: string;
private callbackParameters: string[] = [];
private partnerParameters: string[] = [];
constructor(price: string, currency: string, sku: string, orderId: string, signature: string, purchaseToken: string) {
this.price = price;
this.currency = currency;
this.sku = sku;
this.orderId = orderId;
this.signature = signature;
this.purchaseToken = purchaseToken;
}
setPurchaseTime(purchaseTime: string): void {
this.purchaseTime = purchaseTime;
}
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);
}
}
export class AdjustThirdPartySharing {
private isEnabled: boolean;
private granularOptions: string[] = [];
constructor(isEnabled: boolean) {
this.isEnabled = isEnabled;
}
addGranularOption(partnerName: string, key: string, value: string): void {
this.granularOptions.push(partnerName);
this.granularOptions.push(key);
this.granularOptions.push(value);
}
}
export interface AdjustAttribution {
trackerToken: string;
trackerName: string;
@@ -203,6 +318,9 @@ export interface AdjustAttribution {
creative: string;
clickLabel: string;
adid: string;
costType: string;
costAmount: string;
costCurrency: string;
}
export interface AdjustSessionSuccess {
@@ -241,7 +359,7 @@ export interface AdjustEventFailure {
export enum AdjustEnvironment {
Sandbox = 'sandbox',
Production = 'production'
Production = 'production',
}
export enum AdjustLogLevel {
@@ -251,7 +369,34 @@ export enum AdjustLogLevel {
Warn = 'WARN',
Error = 'ERROR',
Assert = 'ASSERT',
Suppress = 'SUPPRESS'
Suppress = 'SUPPRESS',
}
export enum AdjustUrlStrategy {
India = 'India',
China = 'China',
}
export enum AdjustAdRevenueSource {
AdRevenueSourceMopub = 'mopub',
AdRevenueSourceAdmob = 'admob',
AdRevenueSourceFbNativeAd = 'facebook_native_ad',
AdRevenueSourceFbAudienceNetwork = 'facebook_audience_network',
AdRevenueSourceIronsource = 'ironsource',
AdRevenueSourceFyber = 'fyber',
AdRevenueSourceAerserv = 'aerserv',
AdRevenueSourceAppodeal = 'appodeal',
AdRevenueSourceAdincube = 'adincube',
AdRevenueSourceFusePowered = 'fusepowered',
AdRevenueSourceAddapptr = 'addapptr',
AdRevenueSourceMillennialMediation = 'millennial_mediation',
AdRevenueSourceFlurry = 'flurry',
AdRevenueSourceAdmost = 'admost',
AdRevenueSourceDeltadna = 'deltadna',
AdRevenueSourceUpsight = 'upsight',
AdRevenueSourceUnityAds = 'unityads',
AdRevenueSourceAdtoapp = 'adtoapp',
AdRevenueSourceTapdaq = 'tapdaq',
}
/**
@@ -263,7 +408,7 @@ export enum AdjustLogLevel {
*
* @usage
* ```typescript
* import { Adjust, AdjustConfig, AdjustEnvironment } from '@ionic-native/adjust/ngx';
* import { Adjust, AdjustConfig, AdjustEnvironment } from '@ionic-native/adjust';
*
* constructor(private adjust: Adjust) { }
*
@@ -284,16 +429,21 @@ export enum AdjustLogLevel {
* @classes
* AdjustEvent
* AdjustConfig
* AdjustAppStoreSubscription
* AdjustPlayStoreSubscription
* AdjustThirdPartySharing
* @enums
* AdjustEnvironment
* AdjustLogLevel
* AdjustUrlStrategy
* AdjustAdRevenueSource
*/
@Plugin({
pluginName: 'Adjust',
plugin: 'com.adjust.sdk',
pluginRef: 'Adjust',
repo: 'https://github.com/adjust/cordova_sdk',
platforms: ['Android', 'iOS']
platforms: ['Android', 'iOS'],
})
@Injectable()
export class Adjust extends IonicNativePlugin {
@@ -311,6 +461,42 @@ export class Adjust extends IonicNativePlugin {
@Cordova({ sync: true })
trackEvent(event: AdjustEvent): void {}
/**
* This method tracks App Store subscription
* @param {AdjustAppStoreSubscription} subscription Adjust App Store subscription object to be tracked
*/
@Cordova({ sync: true })
trackAppStoreSubscription(subscription: AdjustAppStoreSubscription): void {}
/**
* This method tracks Play Store subscription
* @param {AdjustPlayStoreSubscription} subscription Adjust Play Store subscription object to be tracked
*/
@Cordova({ sync: true })
trackPlayStoreSubscription(subscription: AdjustPlayStoreSubscription): void {}
/**
* This method tracks third party sharing choice
* @param {AdjustThirdPartySharing} thirdPartySharing Adjust third party sharing object to be tracked
*/
@Cordova({ sync: true })
trackThirdPartySharing(thirdPartySharing: AdjustThirdPartySharing): void {}
/**
* This method tracks ad revenue data
* @param {AdjustAdRevenueSource} source Ad revenue source
* @param {string} payload Ad revenue JSON string payload
*/
@Cordova({ sync: true })
trackAdRevenue(source: AdjustAdRevenueSource, payload: string): void {}
/**
* This method tracks measurement consent choice
* @param {boolean} measurementConsent set measurement consent to true or false
*/
@Cordova({ sync: true })
trackMeasurementConsent(measurementConsent: boolean): void {}
/**
* This method sets offline mode on or off
* @param {boolean} enabled set to true for offline mode on
@@ -356,6 +542,13 @@ export class Adjust extends IonicNativePlugin {
@Cordova({ sync: true })
gdprForgetMe(): void {}
/**
* You can now notify Adjust when a user has exercised their right to stop sharing their data with partners for marketing purposes, but has allowed it to be shared for statistics purposes.
* Calling the following method will instruct the Adjust SDK to communicate the user's choice to disable data sharing to the Adjust backend
*/
@Cordova({ sync: true })
disableThirdPartySharing(): void {}
/**
* Function used to get Google AdId
* @return {Promise<string>} Returns a promise with google AdId value
@@ -458,4 +651,30 @@ export class Adjust extends IonicNativePlugin {
*/
@Cordova({ sync: true })
sendFirstPackages(): void {}
/**
* Request Adjust SDK to show pop up dialog for asking user's consent to be tracked.
* In order to do this, call this function
* @return {Promise<number>} Returns a promise with user's consent value
*/
@Cordova()
requestTrackingAuthorizationWithCompletionHandler(): Promise<number> {
return;
}
/**
* You can update SKAdNetwork conversion value with calling this method
* @param {number} conversionValue conversion value for the user
*/
@Cordova({ sync: true })
updateConversionValue(conversionValue: number): void {}
/**
* To obtain the app tracking authorization status in iOS, call this function
* @return {Promise<number>} Returns a promise with app tracking authorization status
*/
@Cordova()
getAppTrackingAuthorizationStatus(): Promise<number> {
return;
}
}

View File

@@ -15,6 +15,23 @@ export interface AdMobFreeBannerConfig {
* Auto show ad when loaded
*/
autoShow?: boolean;
/**
* Child-directed setting. Default is not calling `tagForChildDirectedTreatment`.
* Set to `true` for `tagForChildDirectedTreatment(true)`.
* Set to `false` for `tagForChildDirectedTreatment(false)`.
*/
forChild?: boolean | null;
/**
* Designed for Families setting. Android-only. Default is not calling setIsDesignedForFamilies.
* Set to `true` for `setIsDesignedForFamilies(true)`.
* Set to `false` for `setIsDesignedForFamilies(false)`.
*/
forFamily?: boolean | null;
/**
* Location targeting. It accept an array in the form of `[latitude, longitude]`.
* Android-only. Default is not calling `setLatitude` and `setLongitude`.
*/
location?: number[] | null;
/**
* Set to true, to put banner at top
*/
@@ -46,6 +63,23 @@ export interface AdMobFreeInterstitialConfig {
* Auto show ad when loaded
*/
autoShow?: boolean;
/**
* Child-directed setting. Default is not calling `tagForChildDirectedTreatment`.
* Set to `true` for `tagForChildDirectedTreatment(true)`.
* Set to `false` for `tagForChildDirectedTreatment(false)`.
*/
forChild?: boolean | null;
/**
* Designed for Families setting. Android-only. Default is not calling setIsDesignedForFamilies.
* Set to `true` for `setIsDesignedForFamilies(true)`.
* Set to `false` for `setIsDesignedForFamilies(false)`.
*/
forFamily?: boolean | null;
/**
* Location targeting. It accept an array in the form of `[latitude, longitude]`.
* Android-only. Default is not calling `setLatitude` and `setLongitude`.
*/
location?: number[] | null;
}
export interface AdMobFreeRewardVideoConfig {
@@ -61,6 +95,23 @@ export interface AdMobFreeRewardVideoConfig {
* Auto show ad when loaded
*/
autoShow?: boolean;
/**
* Child-directed setting. Default is not calling `tagForChildDirectedTreatment`.
* Set to `true` for `tagForChildDirectedTreatment(true)`.
* Set to `false` for `tagForChildDirectedTreatment(false)`.
*/
forChild?: boolean | null;
/**
* Designed for Families setting. Android-only. Default is not calling setIsDesignedForFamilies.
* Set to `true` for `setIsDesignedForFamilies(true)`.
* Set to `false` for `setIsDesignedForFamilies(false)`.
*/
forFamily?: boolean | null;
/**
* Location targeting. It accept an array in the form of `[latitude, longitude]`.
* Android-only. Default is not calling `setLatitude` and `setLongitude`.
*/
location?: number[] | null;
}
/**
@@ -112,7 +163,7 @@ export interface AdMobFreeRewardVideoConfig {
plugin: 'cordova-plugin-admob-free',
pluginRef: 'admob',
repo: 'https://github.com/ratson/cordova-plugin-admob-free',
platforms: ['Android', 'iOS']
platforms: ['Android', 'iOS'],
})
@Injectable()
export class AdMobFree extends IonicNativePlugin {
@@ -139,7 +190,7 @@ export class AdMobFree extends IonicNativePlugin {
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'
REWARD_VIDEO_REWARD: 'admob.rewardvideo.events.REWARD',
};
/**
@@ -176,7 +227,7 @@ export class AdMobFree extends IonicNativePlugin {
@Plugin({
pluginName: 'AdMobFree',
plugin: 'cordova-plugin-admob-free',
pluginRef: 'admob.banner'
pluginRef: 'admob.banner',
})
export class AdMobFreeBanner extends IonicNativePlugin {
/**
@@ -232,7 +283,7 @@ export class AdMobFreeBanner extends IonicNativePlugin {
@Plugin({
pluginName: 'AdMobFree',
plugin: 'cordova-plugin-admob-free',
pluginRef: 'admob.interstitial'
pluginRef: 'admob.interstitial',
})
export class AdMobFreeInterstitial extends IonicNativePlugin {
/**
@@ -279,7 +330,7 @@ export class AdMobFreeInterstitial extends IonicNativePlugin {
@Plugin({
pluginName: 'AdMobFree',
plugin: 'cordova-plugin-admob-free',
pluginRef: 'admob.rewardvideo'
pluginRef: 'admob.rewardvideo',
})
export class AdMobFreeRewardVideo extends IonicNativePlugin {
/**

View File

@@ -2,10 +2,12 @@ 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;
};
export type AdUnitIDOption =
| string
| {
android: string;
ios: string;
};
/**
* @name AdMob Plus
@@ -13,82 +15,87 @@ export type AdUnitIDOption = string | {
* 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']
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 })
hide(): Promise<any> {
return Promise.resolve();
}
@Cordova({ otherPromise: true })
show(opts: { id?: AdUnitIDOption }): 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',
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 })
load(opts: { id?: AdUnitIDOption }): Promise<any> {
return Promise.resolve();
}
@Cordova({ otherPromise: true })
show(): Promise<any> {
return Promise.resolve();
}
@Cordova({ otherPromise: true })
show(): Promise<any> {
return Promise.resolve();
}
}
@Plugin({
plugin: 'cordova-admob-plus',
pluginName: 'AdMob',
pluginRef: 'admob.rewardVideo',
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 })
load(opts: { id?: AdUnitIDOption }): Promise<any> {
return Promise.resolve();
}
@Cordova({ otherPromise: true })
show(): 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',
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();
banner = new Banner();
interstitial = new Interstitial();
rewardVideo = new RewardVideo();
@Cordova({ otherPromise: true })
setAppMuted(value: boolean): Promise<any> {
return Promise.resolve();
}
@Cordova({ otherPromise: true })
setAppMuted(value: boolean): Promise<any> {
return Promise.resolve();
}
@Cordova({ otherPromise: true })
setAppVolume(value: number): 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);
}
@Cordova({ sync: true })
setDevMode(value: boolean): void {
return undefined;
}
on(event: string): Observable<any> {
return fromEvent(document, event);
}
}

View File

@@ -100,6 +100,7 @@ export interface AdExtras {
/**
* @paid
* @name AdMob Pro
* @capacitorincompatible true
* @description
* Plugin for Google Ads, including AdMob / DFP (DoubleClick for publisher) and mediations to other Ad networks.
*
@@ -138,7 +139,7 @@ export interface AdExtras {
plugin: 'cordova-plugin-admobpro',
pluginRef: 'AdMob',
repo: 'https://github.com/floatinghotpot/cordova-admob-pro',
platforms: ['Android', 'iOS', 'Windows Phone 8']
platforms: ['Android', 'iOS', 'Windows Phone 8'],
})
@Injectable()
export class AdMobPro extends IonicNativePlugin {
@@ -165,7 +166,7 @@ export class AdMobPro extends IonicNativePlugin {
BOTTOM_LEFT: 7,
BOTTOM_CENTER: 8,
BOTTOM_RIGHT: 9,
POS_XY: 10
POS_XY: 10,
};
/**
@@ -182,7 +183,7 @@ export class AdMobPro extends IonicNativePlugin {
* Destroy the banner, remove it from screen.
*/
@Cordova({
sync: true
sync: true,
})
removeBanner(): void {}
@@ -191,7 +192,7 @@ export class AdMobPro extends IonicNativePlugin {
* @param {number} position Position. Use `AdMobPro.AD_POSITION` to set values.
*/
@Cordova({
sync: true
sync: true,
})
showBanner(position: number): void {}
@@ -201,7 +202,7 @@ export class AdMobPro extends IonicNativePlugin {
* @param {number} y Offset from screen top.
*/
@Cordova({
sync: true
sync: true,
})
showBannerAtXY(x: number, y: number): void {}
@@ -209,7 +210,7 @@ export class AdMobPro extends IonicNativePlugin {
* Hide the banner, remove it from screen, but can show it later
*/
@Cordova({
sync: true
sync: true,
})
hideBanner(): void {}
@@ -227,7 +228,7 @@ export class AdMobPro extends IonicNativePlugin {
* Show interstitial ad when it's ready
*/
@Cordova({
sync: true
sync: true,
})
showInterstitial(): void {}
@@ -245,7 +246,7 @@ export class AdMobPro extends IonicNativePlugin {
* Show a reward video ad
*/
@Cordova({
sync: true
sync: true,
})
showRewardVideoAd(): void {}
@@ -275,7 +276,7 @@ export class AdMobPro extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onAdFailLoad',
element: 'document'
element: 'document',
})
onAdFailLoad(): Observable<any> {
return;
@@ -288,7 +289,7 @@ export class AdMobPro extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onAdLoaded',
element: 'document'
element: 'document',
})
onAdLoaded(): Observable<any> {
return;
@@ -301,7 +302,7 @@ export class AdMobPro extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onAdPresent',
element: 'document'
element: 'document',
})
onAdPresent(): Observable<any> {
return;
@@ -314,7 +315,7 @@ export class AdMobPro extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onAdLeaveApp',
element: 'document'
element: 'document',
})
onAdLeaveApp(): Observable<any> {
return;
@@ -327,7 +328,7 @@ export class AdMobPro extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onAdDismiss',
element: 'document'
element: 'document',
})
onAdDismiss(): Observable<any> {
return;

View File

@@ -2,24 +2,45 @@ import { Injectable } from '@angular/core';
import { Cordova, CordovaProperty, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs';
export interface AdmobOptions {
export interface AdmobBaseOptions {
/**
* Your publisher id code from your AdMob account
*/
publisherId: string;
/**
* (Optional) Your interstitial id code from your AdMob account. Defaults to publisherId
* (Optional) Your interstitial id code from your AdMob account. Defaults to bannerAdId
*/
interstitialAdId?: string;
/**
* (Optional) Your rewarded id code from your AdMob account. Defaults to publisherId
* (Optional) Indicates whether to put banner ads at top when set to true or at bottom when set to false. Defaults to false
*/
rewardedAdId?: string;
bannerAtTop?: boolean;
/**
* (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
* (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;
/**
* (Optional) Auto show banner ads when available (onAdLoaded event is called). Defaults to true
*/
autoShowBanner?: boolean;
/**
* (Optional) Auto show interstitial ads when available (onAdLoaded event is called). Defaults to true
*/
autoShowInterstitial?: boolean;
}
export interface AdmobOptions extends AdmobBaseOptions {
/**
* Your banner id code from your AdMob account (https://support.google.com/admob/answer/7356431?hl=en)
*/
bannerAdId: string;
/**
* Deprecated. Now is only used in web. It will be used as a bannerAdId only in case it is undefined.
*/
publisherId?: 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;
@@ -28,16 +49,21 @@ export interface AdmobOptions {
*/
tappxIdAndroid?: string;
/**
* AdMob rewarded id (https://support.google.com/admob/answer/7356431?hl=en)
*/
rewardedAdId?: string;
/**
* (Optional) Auto show rewarded ads when available (onAdLoaded event is called). Defaults to true
*/
autoShowRewarded?: boolean;
/**
* (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
*/
@@ -53,34 +79,58 @@ export interface AdmobOptions {
*/
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;
}
export interface AdmobWebOptions extends AdmobBaseOptions {
/**
* (Required) AdSense Publisher ID (https://support.google.com/adsense/answer/105516)
*/
publisherId: string;
/**
* (Optional) Auto show banner ads when available (onAdLoaded event is called). Defaults to true
* (Required) Your ad slot code from your AdSense account. Only for browser platform https://support.google.com/adsense/answer/105516
*/
autoShowBanner?: boolean;
adSlot: string;
/**
* (Optional) Auto show interstitial asd when available (onAdLoaded event is called). Defaults to true
* (Optional) Indicates if show a close button on interstitial browser ads. Only for browser platform
*/
autoShowInterstitial?: boolean;
interstitialShowCloseButton?: boolean;
/**
* (Optional) Auto show rewarded ads when available (onAdLoaded event is called). Defaults to true
* (Optional) Indicates the number of seconds that the interstitial ad waits before show the close button. Only for browser platform
*/
autoShowRewarded?: boolean;
secondsToShowCloseButton?: number;
/**
* (Optional) Indicates the number of seconds that the interstitial ad waits before close the ad. Only for browser platform
*/
secondsToCloseInterstitial?: number;
}
export interface AdMobEvent {
/**
* (Optional) AdMob supported type as seen in AD_TYPE
*/
adType?: string;
/**
* (Optional) AdMob error code
*/
error?: number;
/**
* (Optional) AdMob error reason
*/
reason?: string;
}
/**
* @name Admob
* @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!
@@ -92,14 +142,15 @@ export interface AdmobOptions {
* - [Tappx](http://www.tappx.com/?h=dec334d63287772de859bdb4e977fce6) ads
*
* @usage
* **Note:** No ads will be served on apps with package name `io.ionic.starter`. This is the default package name for new `ionic` apps. Make sure to rename the package name so ads can be displayed.
* ```typescript
* import { Admob, AdmobOptions } from '@ionic-native/admob/ngx';
* import { Admob, AdmobOptions } from '@ionic-native/admob';
*
*
* constructor(private admob: Admob) {
* // Admob options config
* const admobOptions: AdmobOptions = {
* publisherId: 'XXX-XXXX-XXXX',
* bannerAdId: 'XXX-XXXX-XXXX',
* interstitialAdId: 'XXX-XXXX-XXXX',
* rewardedAdId: 'XXX-XXXX-XXXX',
* isTesting: true,
@@ -233,11 +284,11 @@ export interface AdmobOptions {
* ```
*/
@Plugin({
pluginName: 'Admob',
pluginName: 'AdMob',
plugin: 'cordova-admob',
pluginRef: 'admob',
repo: 'https://github.com/appfeel/admob-google-cordova',
platforms: ['Android', 'iOS']
platforms: ['Android', 'iOS', 'Browser'],
})
@Injectable()
export class Admob extends IonicNativePlugin {
@@ -273,7 +324,7 @@ export class Admob extends IonicNativePlugin {
* @return {Promise<any>} Returns a promise that resolves when the options are set
*/
@Cordova()
setOptions(options: AdmobOptions): Promise<any> {
setOptions(options: AdmobOptions | AdmobWebOptions): Promise<any> {
return;
}
@@ -283,7 +334,7 @@ export class Admob extends IonicNativePlugin {
* @return {Promise<any>} Returns a promise that resolves when the banner view is created
*/
@Cordova()
createBannerView(options?: AdmobOptions): Promise<any> {
createBannerView(options?: AdmobOptions | AdmobWebOptions): Promise<any> {
return;
}
@@ -313,7 +364,7 @@ export class Admob extends IonicNativePlugin {
* @return {Promise<any>} Returns a promise that resolves when the interstitial ad is loaded
*/
@Cordova()
requestInterstitialAd(options?: AdmobOptions): Promise<any> {
requestInterstitialAd(options?: AdmobOptions | AdmobWebOptions): Promise<any> {
return;
}
@@ -335,7 +386,7 @@ export class Admob extends IonicNativePlugin {
* @return {Promise<any>} Returns a promise that resolves when the rewarded ad is loaded
*/
@Cordova()
requestRewardedAd(options?: AdmobOptions): Promise<any> {
requestRewardedAd(options?: AdmobOptions | AdmobWebOptions): Promise<any> {
return;
}
@@ -349,108 +400,173 @@ export class Admob extends IonicNativePlugin {
}
/**
* Called when an ad is received
* @returns {Observable<any>} Returns an observable when an ad is received
* Called when an ad is received.
*
* *WARNING*: only **ionic^4**. Older versions of ionic, use:
*
* ```js
* document.addEventListener(window.admob.events.onAdLoaded, () => { });
* ```
*
* Please refer to the documentation on https://admob-ionic.com/Events.
* @returns {Observable<AdMobEvent>} Returns an observable when an ad is received
*/
@Cordova({
eventObservable: true,
event: 'appfeel.cordova.admob.onAdLoaded',
element: document
element: document,
})
onAdLoaded(): Observable<any> {
onAdLoaded(): Observable<AdMobEvent> {
return;
}
/**
* Called when an ad request failed
* @returns {Observable<any>} Returns an observable when an ad request is failed
* Called when an ad request failed.
*
* *WARNING*: only **ionic^4**. Older versions of ionic, use:
*
* ```js
* document.addEventListener(window.admob.events.onAdFailedToLoad, () => { });
* ```
*
* Please refer to the documentation on https://admob-ionic.com/Events.
* @returns {Observable<AdMobEvent>} Returns an observable when an ad request is failed
*/
@Cordova({
eventObservable: true,
event: 'appfeel.cordova.admob.onAdFailedToLoad',
element: document
element: document,
})
onAdFailedToLoad(): Observable<any> {
onAdFailedToLoad(): Observable<AdMobEvent> {
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
* Please note that onPause cordova event is raised when an interstitial is shown.
*
* *WARNING*: only **ionic^4**. Older versions of ionic, use:
*
* ```js
* document.addEventListener(window.admob.events.onAdOpened, () => { });
* ```
*
* Please refer to the documentation on https://admob-ionic.com/Events.
* @returns {Observable<AdMobEvent>} Returns an observable when an ad is opened
*/
@Cordova({
eventObservable: true,
event: 'appfeel.cordova.admob.onAdOpened',
element: document
element: document,
})
onAdOpened(): Observable<any> {
onAdOpened(): Observable<AdMobEvent> {
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
* Please note that onResume cordova event is raised when an interstitial is closed.
*
* *WARNING*: only **ionic^4**. Older versions of ionic, use:
*
* ```js
* document.addEventListener(window.admob.events.onAdClosed, () => { });
* ```
*
* Please refer to the documentation on https://admob-ionic.com/Events.
* @returns {Observable<AdMobEvent>} Returns an observable when an ad is closed
*/
@Cordova({
eventObservable: true,
event: 'appfeel.cordova.admob.onAdClosed',
element: document
element: document,
})
onAdClosed(): Observable<any> {
onAdClosed(): Observable<AdMobEvent> {
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
* @returns {Observable<AdMobEvent>} Returns an observable when an ad leaves the application.
*
* *WARNING*: only **ionic^4**. Older versions of ionic, use:
*
* ```js
* document.addEventListener(window.admob.events.onAdLeftApplication, () => { });
* ```
*
* Please refer to the documentation on https://admob-ionic.com/Events.
* @returns {Observable<AdMobEvent>} Returns an observable when application is left due to an ad click
*/
@Cordova({
eventObservable: true,
event: 'appfeel.cordova.admob.onAdLeftApplication',
element: document
element: document,
})
onAdLeftApplication(): Observable<any> {
onAdLeftApplication(): Observable<AdMobEvent> {
return;
}
/**
* Called when the user has been rewarded by an ad
* @returns {Observable<any>} Returns an observable when the user rewards an ad
* Called when the user has been rewarded by an ad.
*
* *WARNING*: only **ionic^4**. Older versions of ionic, use:
*
* ```js
* document.addEventListener(window.admob.events.onRewardedAd, () => { });
* ```
*
* Please refer to the documentation on https://admob-ionic.com/Events.
* @returns {Observable<AdMobEvent>} Returns an observable when the user rewards an ad
*/
@Cordova({
eventObservable: true,
event: 'appfeel.cordova.admob.onRewardedAd',
element: document
element: document,
})
onRewardedAd(): Observable<any> {
onRewardedAd(): Observable<AdMobEvent> {
return;
}
/**
* Called when the video of a rewarded ad started
* @returns {Observable<any>} Returns an observable when the video is started
* Called when the video of a rewarded ad started.
*
* *WARNING*: only **ionic^4**. Older versions of ionic, use:
*
* ```js
* document.addEventListener(window.admob.events.onRewardedAdVideoStarted, () => { });
* ```
*
* Please refer to the documentation on https://admob-ionic.com/Events.
* @returns {Observable<AdMobEvent>} Returns an observable when the video is started
*/
@Cordova({
eventObservable: true,
event: 'appfeel.cordova.admob.onRewardedAdVideoStarted',
element: document
element: document,
})
onRewardedAdVideoStarted(): Observable<any> {
onRewardedAdVideoStarted(): Observable<AdMobEvent> {
return;
}
/**
* Called when the video of a rewarded ad has completed
* @returns {Observable<any>} Returns an observable when the video is completed
* Called when the video of a rewarded ad has completed.
*
* *WARNING*: only **ionic^4**. Older versions of ionic, use:
*
* ```js
* document.addEventListener(window.admob.events.onRewardedAdVideoCompleted, () => { });
* ```
*
* Please refer to the documentation on https://admob-ionic.com/Events.
* @returns {Observable<AdMobEvent>} Returns an observable when the video is completed
*/
@Cordova({
eventObservable: true,
event: 'appfeel.cordova.admob.onRewardedAdVideoCompleted',
element: document
element: document,
})
onRewardedAdVideoCompleted(): Observable<any> {
onRewardedAdVideoCompleted(): Observable<AdMobEvent> {
return;
}
}

View File

@@ -52,7 +52,7 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
pluginRef: 'cordova.plugins.AES256',
repo: 'https://github.com/Ideas2IT/cordova-aes256',
platforms: ['Android', 'iOS'],
install: 'ionic cordova plugin add cordova-plugin-aes256-encryption'
install: 'ionic cordova plugin add cordova-plugin-aes256-encryption',
})
@Injectable()
export class AES256 extends IonicNativePlugin {
@@ -101,5 +101,4 @@ export class AES256 extends IonicNativePlugin {
generateSecureIV(password: string): Promise<string> {
return;
}
}

View File

@@ -34,7 +34,7 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
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']
platforms: ['Android', 'iOS'],
})
@Injectable()
export class Alipay extends IonicNativePlugin {

View File

@@ -0,0 +1,84 @@
import { Injectable } from '@angular/core';
import {
Plugin,
Cordova,
CordovaProperty,
CordovaInstance,
InstanceProperty,
IonicNativePlugin,
} from '@ionic-native/core';
import { Observable } from 'rxjs';
/**
* @name AllInOneSDK
* @description
* Paytm All-in-One SDK plugin for Cordova/Ionic Applications
* Paytm All-in-One SDK provides a swift, secure and seamless payment experience to your users by invoking the Paytm app (if installed on your users smartphone) to complete payment for your order.
* Paytm All-in-One SDK enables payment acceptance via Paytm wallet, Paytm Payments Bank, saved Debit/Credit cards, Net Banking, BHIM UPI and EMI as available in your customers Paytm account. If Paytm app is not installed on a customer's device, the transaction will be processed via web view within the All-in-One SDK.
* For more information about Paytm All-in-One SDK, please visit https://developer.paytm.com/docs/all-in-one-sdk/hybrid-apps/cordova/
*
* @usage
* ```typescript
* import { AllInOneSDK } from '@ionic-native/all-in-one-sdk/ngx';
*
*
* constructor(private allInOneSDK: AllInOneSDK) { }
*
* ...
*
* For below parameters see [documentation](https://developer.paytm.com/docs/all-in-one-sdk/hybrid-apps/cordova/)
* let paymentIntent = { mid : merchantID, orderId: orderId, txnToken: transactionToken, amount: amount, isStaging: isStaging, callbackUrl:callBackURL, restrictAppInvoke:restrictAppInvoke }
*
* this.allInOneSDK.startTransaction(paymentIntent)
* .then((res: any) => console.log(res))
* .catch((error: any) => console.error(error));
*
* ```
*
* For iOS:
* After adding the plugin, open the iOS project, you can find the same at <projectName>/platforms/ios.
* In case merchant dont have callback URL, Add an entry into Info.plist LSApplicationQueriesSchemes(Array) Item 0 (String)-> paytm
* Add a URL Scheme “paytm”+”MID”
*
*/
@Plugin({
pluginName: 'AllInOneSDK',
plugin: 'cordova-paytm-allinonesdk',
pluginRef: 'AllInOneSDK',
repo: 'https://github.com/paytm/paytm-allinonesdk-ionic-cordova.git',
platforms: ['Android', 'iOS'],
})
export class AllInOneSDK extends IonicNativePlugin {
/**
* This function checks if Paytm Application is available on the device.
* If Paytm exists then it invokes Paytm Application with the parameters sent and creates an order.
* If the Paytm Application is not available the transaction is continued on a webView within All-in-One SDK.
* @param options {PaymentIntentModel} These parameters are required and will be used to create an order.
* @return {Promise<PaytmResponse>} Returns a promise that resolves when a transaction completes(both failed and successful).
*/
@Cordova()
startTransaction(options: PaymentIntentModel): Promise<PaytmResponse> {
return;
}
}
/**
* The response that will be recieved when any transaction is completed
*/
export interface PaytmResponse {
message: string;
response: string; // A stringified response of a hashmap returned from All-in-One SDK
}
/**
* For below parameters see [documentation](https://developer.paytm.com/docs/all-in-one-sdk/hybrid-apps/cordova/)
*/
export interface PaymentIntentModel {
mid: string; // Merchant ID
orderId: string; // Order ID
txnToken: string; // Transaction Token
amount: string; // Amount
isStaging: boolean; // Environment
callbackUrl: string; // Callback URL
restrictAppInvoke: boolean; // To enable or disable the paytm app invocation
}

View File

@@ -58,7 +58,7 @@ import { Cordova, CordovaProperty, IonicNativePlugin, Plugin } from '@ionic-nati
plugin: 'cordova-plugin-analytics',
pluginRef: 'analytics',
repo: 'https://github.com/appfeel/analytics-google',
platforms: ['Android', 'iOS']
platforms: ['Android', 'iOS'],
})
@Injectable()
export class AnalyticsFirebase extends IonicNativePlugin {

View File

@@ -178,7 +178,7 @@ export interface AndroidExoPlayerControllerConfig {
plugin: 'cordova-plugin-exoplayer',
pluginRef: 'ExoPlayer',
repo: 'https://github.com/frontyard/cordova-plugin-exoplayer',
platforms: ['Android']
platforms: ['Android'],
})
@Injectable()
export class AndroidExoplayer extends IonicNativePlugin {
@@ -192,7 +192,7 @@ export class AndroidExoplayer extends IonicNativePlugin {
clearFunction: 'close',
clearWithArgs: false,
successIndex: 1,
errorIndex: 2
errorIndex: 2,
})
show(parameters: AndroidExoPlayerParams): Observable<AndroidExoplayerState> {
return;
@@ -205,10 +205,7 @@ export class AndroidExoplayer extends IonicNativePlugin {
* @return {Promise<void>}
*/
@Cordova()
setStream(
url: string,
controller: AndroidExoPlayerControllerConfig
): Promise<void> {
setStream(url: string, controller: AndroidExoPlayerControllerConfig): Promise<void> {
return;
}

View File

@@ -155,7 +155,7 @@ export interface AFADeleteOptions {
plugin: 'cordova-plugin-android-fingerprint-auth',
pluginRef: 'FingerprintAuth',
repo: 'https://github.com/mjwheatley/cordova-plugin-android-fingerprint-auth',
platforms: ['Android']
platforms: ['Android'],
})
@Injectable()
export class AndroidFingerprintAuth extends IonicNativePlugin {
@@ -199,7 +199,7 @@ export class AndroidFingerprintAuth extends IonicNativePlugin {
MISSING_ACTION_PARAMETERS: 'MISSING_ACTION_PARAMETERS',
MISSING_PARAMETERS: 'MISSING_PARAMETERS',
NO_SUCH_ALGORITHM_EXCEPTION: 'NO_SUCH_ALGORITHM_EXCEPTION',
SECURITY_EXCEPTION: 'SECURITY_EXCEPTION'
SECURITY_EXCEPTION: 'SECURITY_EXCEPTION',
};
/**

View File

@@ -25,7 +25,7 @@ export enum AndroidSystemUiFlags {
/** View would like to remain interactive when hiding the status bar with SYSTEM_UI_FLAG_FULLSCREEN and/or hiding the navigation bar with SYSTEM_UI_FLAG_HIDE_NAVIGATION. SYSTEM_UI_FLAG_IMMERSIVE_STICKY */
ImmersiveSticky = 4096,
/** Requests the status bar to draw in a mode that is compatible with light status bar backgrounds. SYSTEM_UI_FLAG_LIGHT_STATUS_BAR */
LightStatusBar = 8192
LightStatusBar = 8192,
}
/**
@@ -53,7 +53,7 @@ export enum AndroidSystemUiFlags {
plugin: 'cordova-plugin-fullscreen',
pluginRef: 'AndroidFullScreen',
repo: 'https://github.com/mesmotronic/cordova-plugin-fullscreen',
platforms: ['Android']
platforms: ['Android'],
})
@Injectable()
export class AndroidFullScreen extends IonicNativePlugin {

View File

@@ -0,0 +1,99 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Android Notch
* @description
* This plugin enables developers to get the cutout and android devices inset sizes
* It is based on the cordova plugin developed by @tobspr: https://github.com/tobspr/cordova-plugin-android-notch
* This plugin works on all android versions, but we can only detect notches starting from Android 9.
*
* @usage
* ```typescript
* import { AndroidNotch } from '@ionic-native/android-notch/ngx';
*
*
* constructor(private androidNotch: AndroidNotch) { }
*
* ...
*
*
* this.androidNotch.hasCutout()
* .then((px: number) => console.log('Inset size: '), px)
* .catch((error: any) => console.log('Error: ', error))
*
* this.androidNotch.getInsetTop()
* .then((px: number) => console.log('Inset size: '), px)
* .catch((error: any) => console.log('Error: ', error))
*
* this.androidNotch.getInsetRight()
* .then((px: number) => console.log('Inset size: '), px)
* .catch((error: any) => console.log('Error: ', error))
*
* this.androidNotch.getInsetBottom()
* .then((px: number) => console.log('Inset size: '), px)
* .catch((error: any) => console.log('Error: ', error))
*
* this.androidNotch.getInsetLeft()
* .then((px: number) => console.log('Inset size: '), px)
* .catch((error: any) => console.log('Error: ', error))
*
* ```
*/
@Plugin({
pluginName: 'AndroidNotch',
plugin: 'cordova-plugin-android-notch',
pluginRef: 'AndroidNotch',
repo: 'https://github.com/tobspr/cordova-plugin-android-notch.git',
platforms: ['Android'],
})
@Injectable()
export class AndroidNotch extends IonicNativePlugin {
/**
* Returns true if the android device has cutout
*
* @return {Promise<boolean>}
*/
@Cordova()
hasCutout(): Promise<boolean> {
return;
}
/**
* Returns the heigth of the top inset
*
* @return {Promise<number>}
*/
@Cordova()
getInsetTop(): Promise<number> {
return;
}
/**
* Returns the heigth of the right inset
*
* @return {Promise<number>}
*/
@Cordova()
getInsetRight(): Promise<number> {
return;
}
/**
* Returns the heigth of the bottom inset
* @return {Promise<number>}
*/
@Cordova()
getInsetBottom(): Promise<number> {
return;
}
/**
* Returns the heigth of the left inset
* @return {Promise<number>}
*/
@Cordova()
getInsetLeft(): Promise<number> {
return;
}
}

View File

@@ -3,6 +3,7 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name Android Permissions
* @premier android-permissions
* @description
* This plugin is designed to support Android new permissions checking mechanism.
*
@@ -33,7 +34,7 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
plugin: 'cordova-plugin-android-permissions',
pluginRef: 'cordova.plugins.permissions',
repo: 'https://github.com/NeoLSN/cordova-plugin-android-permissions',
platforms: ['Android']
platforms: ['Android'],
})
@Injectable()
export class AndroidPermissions extends IonicNativePlugin {
@@ -41,8 +42,7 @@ export class AndroidPermissions extends IonicNativePlugin {
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,14 +53,12 @@ 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',
@@ -81,15 +79,12 @@ 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',
@@ -135,8 +130,7 @@ 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',
@@ -170,8 +164,7 @@ 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',
@@ -189,8 +182,7 @@ 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',
@@ -198,7 +190,7 @@ 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',
};
/**

View File

@@ -35,7 +35,7 @@ export interface AnylineOptions {
plugin: 'io-anyline-cordova',
pluginRef: 'Anyline',
repo: 'https://github.com/Anyline/anyline-ocr-cordova-module',
platforms: ['Android', 'iOS']
platforms: ['Android', 'iOS'],
})
@Injectable()
export class Anyline extends IonicNativePlugin {

View File

@@ -37,11 +37,10 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
plugin: 'cordova-plugin-appavailability',
pluginRef: 'appAvailability',
repo: 'https://github.com/ohh2ahh/AppAvailability',
platforms: ['Android', 'iOS']
platforms: ['Android', 'iOS'],
})
@Injectable()
export class AppAvailability extends IonicNativePlugin {
/**
* Checks if an app is available on device
* @param {string} app Package name on android, or URI scheme on iOS
@@ -51,5 +50,4 @@ export class AppAvailability extends IonicNativePlugin {
check(app: string): Promise<boolean> {
return;
}
}

View File

@@ -38,9 +38,8 @@ export interface StringMap {
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']
repo: 'https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-analytics',
platforms: ['Android', 'iOS'],
})
@Injectable()
export class AppCenterAnalytics extends IonicNativePlugin {

View File

@@ -62,9 +62,8 @@ export interface AppCenterCrashReportDevice {
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']
repo: 'https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-crashes',
platforms: ['Android', 'iOS'],
})
@Injectable()
export class AppCenterCrashes extends IonicNativePlugin {

View File

@@ -0,0 +1,41 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name App Center Low Memory
* @description
* Generates a low memory warning.
* For more info, please see: https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-generate-low-memory
*
* @usage
* ```typescript
* import { LowMemory } from '@ionic-native/app-center-low-memory/ngx';
*
* ...
*
* constructor(private lowMemory: LowMemory) { }
*
* async warning() {
* await this.lowMemory.generateLowMemory();
* }
* ```
*/
@Plugin({
pluginName: 'LowMemory',
plugin: 'https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-generate-low-memory',
pluginRef: 'LowMemory',
repo: 'https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-generate-low-memory',
platforms: ['Android', 'iOS'],
})
@Injectable()
export class LowMemory extends IonicNativePlugin {
/**
* Generates a low memory warning.
* For more info, please see: https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-generate-low-memory
* @returns {Promise<void>}
*/
@Cordova()
generateLowMemory(): Promise<void> {
return;
}
}

View File

@@ -29,9 +29,8 @@ import { Observable } from 'rxjs';
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']
repo: 'https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-push',
platforms: ['Android', 'iOS'],
})
@Injectable()
export class AppCenterPush extends IonicNativePlugin {
@@ -42,7 +41,7 @@ export class AppCenterPush extends IonicNativePlugin {
*/
@Cordova({
observable: true,
clearFunction: 'removeEventListener'
clearFunction: 'removeEventListener',
})
addEventListener(eventName: string): Observable<any> {
return;

View File

@@ -0,0 +1,62 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name App Center Shared
* @capacitorincompatible true
* @description
* Exposes additional shared APIs for App Center.
*
* For more info, please see https://docs.microsoft.com/en-us/appcenter/sdk/other-apis/cordova
*
* @usage
* ```typescript
* import { AppCenter } from '@ionic-native/app-center-shared/ngx';
*
* ...
*
* constructor(private appCenterShared: AppCenter) { }
*
* async getInstallId() {
* const id = await this.appCenter.getInstallId();
* }
*
* async setUserId() {
* try{
* await this.appCenter.setUserId('i-am-john');
* } catch (e){
* console.log(e);
* }
* }
* ```
*/
@Plugin({
pluginName: 'AppCenter',
plugin: 'cordova-plugin-appcenter-shared',
pluginRef: 'AppCenter',
repo: 'https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-shared',
platforms: ['Android', 'iOS'],
})
@Injectable()
export class AppCenter extends IonicNativePlugin {
/**
* Returns AppCenter UUID.
* For more info, please see: https://docs.microsoft.com/en-us/appcenter/sdk/other-apis/cordova#identify-installations
* @returns {Promise<string>} Install ID
*/
@Cordova()
getInstallId(): Promise<string> {
return;
}
/**
* Set a user ID that's used to augment crash reports.
* For more info, please see: https://docs.microsoft.com/en-us/appcenter/sdk/other-apis/cordova#identify-users
* @param {string} userId Ex. "your-user-id"
* @returns {Promise<void>}
*/
@Cordova()
setUserId(userId: string): Promise<void> {
return;
}
}

View File

@@ -40,7 +40,7 @@ export interface AppLauncherOptions {
plugin: 'cordova-plugin-app-launcher',
pluginRef: 'window.plugins.launcher',
repo: 'https://github.com/nchutchind/cordova-plugin-app-launcher',
platforms: ['Android', 'iOS']
platforms: ['Android', 'iOS'],
})
@Injectable()
export class AppLauncher extends IonicNativePlugin {

View File

@@ -27,11 +27,10 @@ import { Injectable } from '@angular/core';
plugin: 'cordova-plugin-appminimize',
pluginRef: 'plugins.appMinimize',
repo: 'https://github.com/tomloprod/cordova-plugin-appminimize',
platforms: ['Android']
platforms: ['Android'],
})
@Injectable()
export class AppMinimize extends IonicNativePlugin {
/**
* Minimizes the application
* @return {Promise<any>}
@@ -40,5 +39,4 @@ export class AppMinimize extends IonicNativePlugin {
minimize(): Promise<any> {
return;
}
}

View File

@@ -25,15 +25,7 @@ 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 {
@@ -45,7 +37,7 @@ export class AppPreferences extends IonicNativePlugin {
* @return {Promise<any>} Returns a promise
*/
@Cordova({
callbackOrder: 'reverse'
callbackOrder: 'reverse',
})
fetch(dict: string, key?: string): Promise<any> {
return;
@@ -60,7 +52,7 @@ export class AppPreferences extends IonicNativePlugin {
* @return {Promise<any>} Returns a promise
*/
@Cordova({
callbackOrder: 'reverse'
callbackOrder: 'reverse',
})
store(dict: string, key: string, value?: any): Promise<any> {
return;
@@ -74,7 +66,7 @@ export class AppPreferences extends IonicNativePlugin {
* @return {Promise<any>} Returns a promise
*/
@Cordova({
callbackOrder: 'reverse'
callbackOrder: 'reverse',
})
remove(dict: string, key?: string): Promise<any> {
return;
@@ -86,7 +78,7 @@ export class AppPreferences extends IonicNativePlugin {
* @return {Promise<any>} Returns a promise
*/
@Cordova({
callbackOrder: 'reverse'
callbackOrder: 'reverse',
})
clearAll(): Promise<any> {
return;
@@ -98,7 +90,7 @@ export class AppPreferences extends IonicNativePlugin {
* @return {Promise<any>} Returns a promise
*/
@Cordova({
callbackOrder: 'reverse'
callbackOrder: 'reverse',
})
show(): Promise<any> {
return;
@@ -111,7 +103,7 @@ export class AppPreferences extends IonicNativePlugin {
* @return {Observable<any>} Returns an observable
*/
@Cordova({
observable: true
observable: true,
})
watch(subscribe: boolean): Observable<any> {
return;
@@ -126,7 +118,7 @@ export class AppPreferences extends IonicNativePlugin {
*/
@Cordova({
platforms: ['Android'],
sync: true
sync: true,
})
suite(suiteName: string): any {
return;
@@ -134,7 +126,7 @@ export class AppPreferences extends IonicNativePlugin {
@Cordova({
platforms: ['iOS'],
sync: true
sync: true,
})
iosSuite(suiteName: string): any {
return;
@@ -146,7 +138,7 @@ export class AppPreferences extends IonicNativePlugin {
* @returns {Object} Custom object, bound to that suite
*/
@Cordova({
platforms: ['iOS', 'Windows', 'Windows Phone 8']
platforms: ['iOS', 'Windows', 'Windows Phone 8'],
})
cloudSync(): Object {
return;
@@ -158,7 +150,7 @@ export class AppPreferences extends IonicNativePlugin {
* @returns {Object} Custom Object, bound to that suite
*/
@Cordova({
platforms: ['iOS', 'Windows', 'Windows Phone 8']
platforms: ['iOS', 'Windows', 'Windows Phone 8'],
})
defaults(): Object {
return;

View File

@@ -1,6 +1,50 @@
import { Injectable } from '@angular/core';
import { Cordova, CordovaProperty, IonicNativePlugin, Plugin } from '@ionic-native/core';
export enum AppRateReviewTypeIos {
/**
* Write review directly in your application (iOS 10.3+), limited to 3 prompts per year.
* Will fallback to 'AppStoreReview' for other iOS versions
*/
InAppReview = 'InAppReview',
/**
* Open the store within the app. Use this option as an alternative to inAppReview to avoid the rate action from doing nothing
*/
AppStoreReview = 'AppStoreReview',
/**
* Open the store using the openUrl preference (defaults to InAppBrowser). Be advised that WKWebView might not open the app store links
*/
InAppBrowser = 'InAppBrowser',
}
export enum AppRateReviewTypeAndroid {
/**
* Write review directly in your application. Will fallback to InAppBrowser if not available
*/
InAppReview = 'InAppReview',
/**
* Open the store using the openUrl preference (defaults to InAppBrowser)
*/
InAppBrowser = 'InAppBrowser',
}
export enum AppRatePromptType {
/**
* Prompt asking to rate the app.
*/
AppRatingPrompt = 'AppRatingPrompt',
/**
* Prompt asking to rate the app within the store.
*/
StoreRatingPrompt = 'StoreRatingPrompt',
/**
* Prompt asking to give feedback.
*/
FeedbackPrompt = 'FeedbackPrompt',
}
export interface AppRatePreferences {
/**
* Custom BCP 47 language tag
@@ -22,11 +66,29 @@ export interface AppRatePreferences {
*/
usesUntilPrompt?: number;
reviewType?: {
/**
* the type of review display to show the user on iOS
* Default: AppStoreReview
*/
ios?: AppRateReviewTypeIos;
/**
* the type of review display to show the user on Android
* Default: InAppBrowser
*/
android?: AppRateReviewTypeAndroid;
};
/**
* Simple Mode to display the rate dialog directly and bypass negative feedback filtering flow
*/
simpleMode?: boolean;
/**
* Disabling would skip displaying a rate dialog if in app review is set and available. Defaults to `true`
*/
showPromptForInAppReview?: boolean;
/**
* leave app or no when application page opened in app store (now supported only for iOS). Defaults to `false`
*/
@@ -51,6 +113,11 @@ export interface AppRatePreferences {
* App Store URLS
*/
storeAppURL?: AppUrls;
/**
* Open URL function
*/
openUrl?: (url: string) => void;
}
export interface AppRateCustomLocale {
@@ -88,20 +155,30 @@ export interface AppRateCustomLocale {
feedbackPromptMessage?: string;
}
export interface AppRateLocales {
addLocale(localeObject: AppRateCustomLocale): AppRateCustomLocale;
getLocale(language: string, applicationTitle?: string, customLocale?: AppRateCustomLocale);
getLocalesNames(): { [prop: string]: AppRateCustomLocale };
}
export interface AppRateCallbacks {
/**
* call back function. called when user clicked on rate-dialog buttons
*/
onButtonClicked?: Function;
onButtonClicked?: (buttonIndex: number, buttonLabel: string, promptType: AppRatePromptType) => void;
/**
* call back function. called when rate-dialog showing
*/
onRateDialogShow?: Function;
onRateDialogShow?: (rateCallback: (buttonIndex: number) => void) => void;
/**
* call back function. called when user clicked on negative feedback
*/
handleNegativeFeedback?: Function;
handleNegativeFeedback?: () => void;
done?: () => void;
}
export interface AppUrls {
@@ -133,6 +210,7 @@ export interface AppUrls {
/**
* @name App Rate
* @premier app-rate
* @description
* The AppRate plugin makes it easy to prompt the user to rate your app, either now, later, or never.
*
@@ -179,7 +257,7 @@ export interface AppUrls {
plugin: 'cordova-plugin-apprate',
pluginRef: 'AppRate',
repo: 'https://github.com/pushandplay/cordova-plugin-apprate',
platforms: ['Android', 'BlackBerry 10', 'iOS', 'Windows']
platforms: ['Android', 'BlackBerry 10', 'iOS', 'Windows'],
})
@Injectable()
export class AppRate extends IonicNativePlugin {
@@ -190,12 +268,38 @@ export class AppRate extends IonicNativePlugin {
@CordovaProperty()
preferences: AppRatePreferences;
/**
* Manager custom locales
*/
@CordovaProperty()
locales: AppRateLocales;
/**
* Set preferences
* @return void
*/
@Cordova()
setPreferences(pref: AppRatePreferences): void {
return;
}
/**
* Get preferences
* @return AppRatePreferences
*/
@Cordova()
getPreferences(): AppRatePreferences {
return;
}
/**
* Prompts the user for rating
* @param {boolean} immediately Show the rating prompt immediately.
*/
@Cordova()
promptForRating(immediately: boolean): void {}
promptForRating(immediately?: boolean): void {
return;
}
/**
* Immediately send the user to the app store rating page

View File

@@ -47,7 +47,7 @@ export interface AppUpdateOptions {
plugin: 'cordova-plugin-app-update',
pluginRef: 'AppUpdate',
repo: 'https://github.com/vaenow/cordova-plugin-app-update',
platforms: ['Android']
platforms: ['Android'],
})
@Injectable()
export class AppUpdate extends IonicNativePlugin {
@@ -58,7 +58,7 @@ export class AppUpdate extends IonicNativePlugin {
* @return {Promise<any>} Returns a promise that resolves when something happens
*/
@Cordova({
callbackOrder: 'reverse'
callbackOrder: 'reverse',
})
checkAppUpdate(updateUrl: string, options?: AppUpdateOptions): Promise<any> {
return;

View File

@@ -1,9 +1,9 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name App Version
* @premier app-version
* @description
* Reads the version of your app from the target build settings.
*
@@ -30,24 +30,27 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
plugin: 'cordova-plugin-app-version',
pluginRef: 'cordova.getAppVersion',
repo: 'https://github.com/whiteoctober/cordova-plugin-app-version',
platforms: ['Android', 'iOS', 'Windows']
platforms: ['Android', 'iOS', 'Windows'],
})
@Injectable()
export class AppVersion extends IonicNativePlugin {
/**
* Returns the name of the app, e.g.: "My Awesome App"
* @returns {Promise<string>}
*/
@Cordova()
getAppName(): Promise<string> { return; }
getAppName(): Promise<string> {
return;
}
/**
* Returns the package name of the app, e.g.: "com.example.myawesomeapp"
* @returns {Promise<string>}
*/
@Cordova()
getPackageName(): Promise<string> { return; }
getPackageName(): Promise<string> {
return;
}
/**
* Returns the build identifier of the app.
@@ -56,13 +59,16 @@ export class AppVersion extends IonicNativePlugin {
* @returns {Promise<string | number>}
*/
@Cordova()
getVersionCode(): Promise<string | number> { return; }
getVersionCode(): Promise<string | number> {
return;
}
/**
* Returns the version of the app, e.g.: "1.2.3"
* @returns {Promise<string>}
*/
@Cordova()
getVersionNumber(): Promise<string> { return; }
getVersionNumber(): Promise<string> {
return;
}
}

View File

@@ -7,13 +7,7 @@ export type IMakePayments =
| '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'
| 'failure'
@@ -24,9 +18,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 type IMerchantCapabilities = '3ds' | 'credit' | 'debit' | 'emv';
export type ISupportedNetworks = 'visa' | 'amex' | 'discover' | 'masterCard';
export interface IPaymentResponse {
billingNameFirst?: string;
@@ -84,6 +78,8 @@ export interface IOrder extends IOrderItemsAndShippingMethods {
billingAddressRequirement?: IBillingRequirement | IBillingRequirement[];
shippingAddressRequirement?: IBillingRequirement | IBillingRequirement[];
shippingType?: IShippingType;
merchantCapabilities?: IMerchantCapabilities | IMerchantCapabilities[];
supportedNetworks?: ISupportedNetworks | ISupportedNetworks[];
}
export interface ISelectedShippingContact {
@@ -151,7 +147,7 @@ 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 {
@@ -171,7 +167,7 @@ export class ApplePay extends IonicNativePlugin {
* }
*/
@Cordova({
otherPromise: true
otherPromise: true,
})
canMakePayments(): Promise<IMakePayments> {
return;
@@ -187,11 +183,9 @@ export class ApplePay extends IonicNativePlugin {
*/
@Cordova({
observable: true,
clearFunction: 'stopListeningForShippingContactSelection'
clearFunction: 'stopListeningForShippingContactSelection',
})
startListeningForShippingContactSelection(): Observable<
ISelectedShippingContact
> {
startListeningForShippingContactSelection(): Observable<ISelectedShippingContact> {
return;
}
@@ -201,7 +195,7 @@ export class ApplePay extends IonicNativePlugin {
* really only fail if this is called without starting listening
*/
@Cordova({
otherPromise: true
otherPromise: true,
})
stopListeningForShippingContactSelection(): Promise<boolean> {
return;
@@ -243,11 +237,9 @@ export class ApplePay extends IonicNativePlugin {
* });
*/
@Cordova({
otherPromise: true
otherPromise: true,
})
updateItemsAndShippingMethods(
list: IOrderItemsAndShippingMethods
): Promise<IUpdateItemsAndShippingStatus> {
updateItemsAndShippingMethods(list: IOrderItemsAndShippingMethods): Promise<IUpdateItemsAndShippingStatus> {
return;
}
@@ -322,7 +314,7 @@ export class ApplePay extends IonicNativePlugin {
* }
*/
@Cordova({
otherPromise: true
otherPromise: true,
})
makePaymentRequest(order: IOrder): Promise<IPaymentResponse> {
return;
@@ -338,11 +330,9 @@ export class ApplePay extends IonicNativePlugin {
*
*/
@Cordova({
otherPromise: true
otherPromise: true,
})
completeLastTransaction(
complete: ITransactionStatus
): Promise<ICompleteTransaction> {
completeLastTransaction(complete: ITransactionStatus): Promise<ICompleteTransaction> {
return;
}
}

View File

@@ -150,7 +150,7 @@ export interface WatchExistData {
plugin: 'cordova-apple-wallet',
pluginRef: 'AppleWallet',
repo: 'https://github.com/tomavic/cordova-apple-wallet',
platforms: ['iOS']
platforms: ['iOS'],
})
@Injectable()
export class AppleWallet extends IonicNativePlugin {

View File

@@ -25,7 +25,7 @@ import { Observable } from 'rxjs';
plugin: 'https://github.com/appodeal/appodeal-cordova-plugin.git',
pluginRef: 'Appodeal',
repo: 'https://github.com/appodeal/appodeal-cordova-plugin',
platforms: ['iOS', 'Android']
platforms: ['iOS', 'Android'],
})
@Injectable()
export class Appodeal extends IonicNativePlugin {
@@ -37,7 +37,7 @@ export class Appodeal extends IonicNativePlugin {
BANNER_BOTTOM: 8,
BANNER_TOP: 16,
REWARDED_VIDEO: 128,
NON_SKIPPABLE_VIDEO: 256
NON_SKIPPABLE_VIDEO: 256,
};
/**
@@ -361,7 +361,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onInterstitialLoaded',
element: 'document'
element: 'document',
})
onInterstitialLoaded(): Observable<any> {
return;
@@ -370,7 +370,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onInterstitialFailedToLoad',
element: 'document'
element: 'document',
})
onInterstitialFailedToLoad(): Observable<any> {
return;
@@ -379,7 +379,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onInterstitialShown',
element: 'document'
element: 'document',
})
onInterstitialShown(): Observable<any> {
return;
@@ -388,7 +388,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onInterstitialClicked',
element: 'document'
element: 'document',
})
onInterstitialClicked(): Observable<any> {
return;
@@ -397,7 +397,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onInterstitialClosed',
element: 'document'
element: 'document',
})
onInterstitialClosed(): Observable<any> {
return;
@@ -406,7 +406,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onSkippableVideoLoaded',
element: 'document'
element: 'document',
})
onSkippableVideoLoaded(): Observable<any> {
return;
@@ -415,7 +415,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onSkippableVideoFailedToLoad',
element: 'document'
element: 'document',
})
onSkippableVideoFailedToLoad(): Observable<any> {
return;
@@ -424,7 +424,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onSkippableVideoShown',
element: 'document'
element: 'document',
})
onSkippableVideoShown(): Observable<any> {
return;
@@ -433,7 +433,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onSkippableVideoFinished',
element: 'document'
element: 'document',
})
onSkippableVideoFinished(): Observable<any> {
return;
@@ -442,7 +442,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onSkippableVideoClosed',
element: 'document'
element: 'document',
})
onSkippableVideoClosed(): Observable<any> {
return;
@@ -451,7 +451,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onRewardedVideoLoaded',
element: 'document'
element: 'document',
})
onRewardedVideoLoaded(): Observable<any> {
return;
@@ -460,7 +460,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onRewardedVideoFailedToLoad',
element: 'document'
element: 'document',
})
onRewardedVideoFailedToLoad(): Observable<any> {
return;
@@ -469,7 +469,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onRewardedVideoShown',
element: 'document'
element: 'document',
})
onRewardedVideoShown(): Observable<any> {
return;
@@ -478,7 +478,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onRewardedVideoFinished',
element: 'document'
element: 'document',
})
onRewardedVideoFinished(): Observable<any> {
return;
@@ -487,7 +487,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onRewardedVideoClosed',
element: 'document'
element: 'document',
})
onRewardedVideoClosed(): Observable<any> {
return;
@@ -496,7 +496,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onNonSkippableVideoLoaded',
element: 'document'
element: 'document',
})
onNonSkippableVideoLoaded(): Observable<any> {
return;
@@ -505,7 +505,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onNonSkippableVideoFailedToLoad',
element: 'document'
element: 'document',
})
onNonSkippableVideoFailedToLoad(): Observable<any> {
return;
@@ -514,7 +514,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onNonSkippableVideoShown',
element: 'document'
element: 'document',
})
onNonSkippableVideoShown(): Observable<any> {
return;
@@ -523,7 +523,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onNonSkippableVideoFinished',
element: 'document'
element: 'document',
})
onNonSkippableVideoFinished(): Observable<any> {
return;
@@ -532,7 +532,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onNonSkippableVideoClosed',
element: 'document'
element: 'document',
})
onNonSkippableVideoClosed(): Observable<any> {
return;
@@ -541,7 +541,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onBannerClicked',
element: 'document'
element: 'document',
})
onBannerClicked(): Observable<any> {
return;
@@ -550,7 +550,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onBannerFailedToLoad',
element: 'document'
element: 'document',
})
onBannerFailedToLoad(): Observable<any> {
return;
@@ -559,7 +559,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onBannerLoaded',
element: 'document'
element: 'document',
})
onBannerLoaded(): Observable<any> {
return;
@@ -568,7 +568,7 @@ export class Appodeal extends IonicNativePlugin {
@Cordova({
eventObservable: true,
event: 'onBannerShown',
element: 'document'
element: 'document',
})
onBannerShown(): Observable<any> {
return;
@@ -590,7 +590,7 @@ export class Appodeal extends IonicNativePlugin {
}
@Cordova({
platforms: ['Android']
platforms: ['Android'],
})
showTestScreen(value: any): void {}

View File

@@ -31,6 +31,11 @@ export interface AppsflyerOptions {
* 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;
/**
* time for the sdk to wait before launch - IOS 14 ONLY!
*/
waitForATTUserAuthorization?: number;
}
export interface AppsflyerEvent {
@@ -75,7 +80,7 @@ export interface AppsflyerInviteOptions {
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'
install: 'Add to config.xml like stated on github and then start',
})
@Injectable()
export class Appsflyer extends IonicNativePlugin {
@@ -94,8 +99,8 @@ export class Appsflyer extends IonicNativePlugin {
* @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 {}
@Cordova()
logEvent(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.
@@ -109,7 +114,7 @@ export class Appsflyer extends IonicNativePlugin {
* @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 {}
Stop(isStopTracking: boolean): void {}
/**
* Get the data from Attribution
@@ -121,6 +126,7 @@ export class Appsflyer extends IonicNativePlugin {
}
/**
* @deprecated
* Enables app uninstall tracking
* @param {string} token GCM/FCM ProjectNumber
* @returns {Promise<any>}
@@ -137,6 +143,13 @@ export class Appsflyer extends IonicNativePlugin {
@Cordova({ sync: true })
updateServerUninstallToken(token: string): void {}
/**
* (iOS) Allows to pass APN Tokens that where collected by third party plugins to the AppsFlyer server. Can be used for Uninstall Tracking.
* @param {string} token APN Token
*/
@Cordova({ sync: true })
registerUninstall(token: string): void {}
/**
* Get AppsFlyers proprietary Device ID. The AppsFlyer Device ID is the main ID used by AppsFlyer in Reports and APIs.
*/
@@ -150,7 +163,7 @@ export class Appsflyer extends IonicNativePlugin {
* @param {boolean} disable Set to true to opt-out user from tracking
*/
@Cordova({ sync: true })
deviceTrackingDisabled(disable: boolean): void {}
anonymizeUser(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.
@@ -175,7 +188,7 @@ export class Appsflyer extends IonicNativePlugin {
* @param {string} campaign Promoted Campaign
*/
@Cordova({ sync: true })
trackCrossPromotionImpression(appId: string, campaign: string): void {}
logCrossPromotionImpression(appId: string, campaign: string): void {}
/**
* Use this call to track the click and launch the app store's app page (via Browser)
@@ -184,5 +197,5 @@ export class Appsflyer extends IonicNativePlugin {
* @param {Object} options Additional Parameters to track
*/
@Cordova({ sync: true })
trackAndOpenStore(appId: string, campaign: string, options: Object): void {}
logCrossPromotionAndOpenStore(appId: string, campaign: string, options: Object): void {}
}

View File

@@ -45,7 +45,7 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
plugin: 'clovelced-plugin-audiomanagement',
pluginRef: 'AudioManagement',
repo: 'https://github.com/clovelCed/cordova-plugin-audiomanagement',
platforms: ['Android']
platforms: ['Android'],
})
@Injectable()
export class AudioManagement extends IonicNativePlugin {
@@ -57,7 +57,7 @@ export class AudioManagement extends IonicNativePlugin {
*/
@Cordova({
successIndex: 1,
errorIndex: 2
errorIndex: 2,
})
setAudioMode(mode: AudioManagement.AudioMode): Promise<void> {
return;
@@ -83,7 +83,7 @@ export class AudioManagement extends IonicNativePlugin {
*/
@Cordova({
successIndex: 2,
errorIndex: 3
errorIndex: 3,
})
setVolume(type: AudioManagement.VolumeType, volume: number): Promise<void> {
return;
@@ -98,7 +98,7 @@ export class AudioManagement extends IonicNativePlugin {
*/
@Cordova({
successIndex: 1,
errorIndex: 2
errorIndex: 2,
})
getVolume(type: AudioManagement.VolumeType): Promise<{ volume: number }> {
return;
@@ -113,7 +113,7 @@ export class AudioManagement extends IonicNativePlugin {
*/
@Cordova({
successIndex: 1,
errorIndex: 2
errorIndex: 2,
})
getMaxVolume(type: AudioManagement.VolumeType): Promise<{ maxVolume: number }> {
return;
@@ -124,14 +124,14 @@ export namespace AudioManagement {
export enum AudioMode {
SILENT = 0,
VIBRATE,
NORMAL
NORMAL,
}
export enum VolumeType {
RING = 0,
MUSIC,
NOTIFICATION,
SYSTEM
SYSTEM,
}
export interface AudioModeReturn {

View File

@@ -27,23 +27,19 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
plugin: 'cordova-plugin-autostart',
pluginRef: 'cordova.plugins.autoStart',
repo: 'https://github.com/ToniKorin/cordova-plugin-autostart',
platforms: ['Android']
platforms: ['Android'],
})
@Injectable()
export class Autostart extends IonicNativePlugin {
/**
* Enable the automatic startup after the boot
*/
@Cordova({ sync: true })
enable(): void {
}
enable(): void {}
/**
* Disable the automatic startup after the boot
*/
@Cordova({ sync: true })
disable(): void {
}
disable(): void {}
}

View File

@@ -2,14 +2,12 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
export interface BackgroundFetchConfig {
/**
* Set true to cease background-fetch from operating after user "closes" the app. Defaults to true.
*/
stopOnTerminate?: boolean;
}
/**
* @name Background Fetch
* @description
@@ -57,12 +55,10 @@ export interface BackgroundFetchConfig {
plugin: 'cordova-plugin-background-fetch',
pluginRef: 'BackgroundFetch',
repo: 'https://github.com/transistorsoft/cordova-plugin-background-fetch',
platforms: ['iOS']
platforms: ['iOS'],
})
@Injectable()
export class BackgroundFetch extends IonicNativePlugin {
/**
* Configures the plugin's fetch callbackFn
*
@@ -70,7 +66,7 @@ export class BackgroundFetch extends IonicNativePlugin {
* @return {Promise<any>}
*/
@Cordova({
callbackOrder: 'reverse'
callbackOrder: 'reverse',
})
configure(config: BackgroundFetchConfig): Promise<any> {
return;
@@ -99,10 +95,9 @@ export class BackgroundFetch extends IonicNativePlugin {
* You MUST call this method in your fetch callbackFn provided to #configure in order to signal to iOS that your fetch action is complete. iOS provides only 30s of background-time for a fetch-event -- if you exceed this 30s, iOS will kill your app.
*/
@Cordova({
sync: true
sync: true,
})
finish(): void {
}
finish(taskId: string): void {}
/**
* Return the status of the background-fetch
@@ -112,5 +107,4 @@ export class BackgroundFetch extends IonicNativePlugin {
status(): Promise<any> {
return;
}
}

View File

@@ -5,20 +5,20 @@ import { Observable } from 'rxjs';
export enum BackgroundGeolocationLocationCode {
PERMISSION_DENIED = 1,
LOCATION_UNAVAILABLE = 2,
TIMEOUT = 3
TIMEOUT = 3,
}
export enum BackgroundGeolocationNativeProvider {
gps = 'gps',
network = 'network',
passive = 'passive',
fused = 'fused'
fused = 'fused',
}
export enum BackgroundGeolocationLocationProvider {
DISTANCE_FILTER_PROVIDER = 0,
ACTIVITY_PROVIDER = 1,
RAW_PROVIDER = 2
RAW_PROVIDER = 2,
}
export enum BackgroundGeolocationEvents {
@@ -32,13 +32,13 @@ export enum BackgroundGeolocationEvents {
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.
location = 'location', // Register location event listener.
}
export enum BackgroundGeolocationAuthorizationStatus {
NOT_AUTHORIZED = 0,
AUTHORIZED = 1,
AUTHORIZED_FOREGROUND = 2
AUTHORIZED_FOREGROUND = 2,
}
export enum BackgroundGeolocationLogLevel {
@@ -46,7 +46,7 @@ export enum BackgroundGeolocationLogLevel {
DEBUG = 'DEBUG',
INFO = 'INFO',
WARN = 'WARN',
ERROR = 'ERROR'
ERROR = 'ERROR',
}
export interface BackgroundGeolocationLogEntry {
@@ -444,7 +444,7 @@ export interface BackgroundGeolocationConfig {
*/
export declare enum BackgroundGeolocationProvider {
ANDROID_DISTANCE_FILTER_PROVIDER = 0,
ANDROID_ACTIVITY_PROVIDER = 1
ANDROID_ACTIVITY_PROVIDER = 1,
}
/**
@@ -464,7 +464,7 @@ export declare enum BackgroundGeolocationAccuracy {
HIGH = 0,
MEDIUM = 10,
LOW = 100,
PASSIVE = 1000
PASSIVE = 1000,
}
/**
@@ -478,14 +478,14 @@ export declare enum BackgroundGeolocationAccuracy {
*/
export declare enum BackgroundGeolocationMode {
BACKGROUND = 0,
FOREGROUND = 1
FOREGROUND = 1,
}
export declare enum BackgroundGeolocationIOSActivity {
AutomotiveNavigation = 'AutomotiveNavigation',
OtherNavigation = 'OtherNavigation',
Fitness = 'Fitness',
Other = 'Other'
Other = 'Other',
}
/**
@@ -543,7 +543,7 @@ export declare enum BackgroundGeolocationIOSActivity {
plugin: '@mauron85/cordova-plugin-background-geolocation',
pluginRef: 'BackgroundGeolocation',
repo: 'https://github.com/mauron85/cordova-plugin-background-geolocation',
platforms: ['Android', 'iOS']
platforms: ['Android', 'iOS'],
})
@Injectable()
export class BackgroundGeolocation extends IonicNativePlugin {
@@ -582,7 +582,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* @returns {Promise<any>}
*/
@Cordova({
platforms: ['iOS']
platforms: ['iOS'],
})
finish(): Promise<any> {
return;
@@ -594,7 +594,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* @returns {Promise<any>}
*/
@Cordova({
platforms: ['iOS']
platforms: ['iOS'],
})
changePace(isMoving: boolean): Promise<any> {
return;
@@ -606,7 +606,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* @returns {Promise<any>}
*/
@Cordova({
callbackOrder: 'reverse'
callbackOrder: 'reverse',
})
setConfig(options: BackgroundGeolocationConfig): Promise<any> {
return;
@@ -617,7 +617,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* @returns {Promise<Location>}
*/
@Cordova({
platforms: ['iOS']
platforms: ['iOS'],
})
getStationaryLocation(): Promise<BackgroundGeolocationResponse> {
return;
@@ -629,7 +629,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* @returns {Promise<any>}
*/
@Cordova({
platforms: ['iOS']
platforms: ['iOS'],
})
onStationary(): Promise<any> {
return;
@@ -640,7 +640,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* @returns {Promise<number>} Returns a promise with int argument that takes values 0, 1 (true).
*/
@Cordova({
platforms: ['Android']
platforms: ['Android'],
})
isLocationEnabled(): Promise<number> {
return;
@@ -666,7 +666,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
*/
@Cordova({
platforms: ['Android'],
observable: true
observable: true,
})
watchLocationMode(): Observable<number> {
return;
@@ -677,7 +677,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* @returns {Promise<any>}
*/
@Cordova({
platforms: ['Android']
platforms: ['Android'],
})
stopWatchingLocationMode(): Promise<any> {
return;
@@ -693,7 +693,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* @returns {Promise<any>}
*/
@Cordova({
platforms: ['Android']
platforms: ['Android'],
})
getLocations(): Promise<any> {
return;
@@ -714,7 +714,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* @returns {Promise<any>}
*/
@Cordova({
platforms: ['Android']
platforms: ['Android'],
})
deleteLocation(locationId: number): Promise<any> {
return;
@@ -725,7 +725,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* @returns {Promise<any>}
*/
@Cordova({
platforms: ['Android']
platforms: ['Android'],
})
deleteAllLocations(): Promise<any> {
return;
@@ -745,7 +745,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* @returns {Promise<any>}
*/
@Cordova({
platforms: ['iOS']
platforms: ['iOS'],
})
switchMode(modeId: number): Promise<any> {
return;
@@ -788,11 +788,9 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* @returns {Promise<any>}
*/
@Cordova({
callbackOrder: 'reverse'
callbackOrder: 'reverse',
})
getCurrentLocation(
options?: BackgroundGeolocationCurrentPositionConfig
): Promise<BackgroundGeolocationResponse> {
getCurrentLocation(options?: BackgroundGeolocationCurrentPositionConfig): Promise<BackgroundGeolocationResponse> {
return;
}
@@ -814,7 +812,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* @returns {Promise<number>} taskKey
*/
@Cordova({
platforms: ['IOS']
platforms: ['IOS'],
})
startTask(): Promise<number> {
return;
@@ -824,7 +822,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* End background task indentified by taskKey (iOS only)
*/
@Cordova({
platforms: ['IOS']
platforms: ['IOS'],
})
endTask(taskKey: number): Promise<any> {
return;
@@ -876,7 +874,7 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* @param callbackFn
*/
@Cordova({
observable: true
observable: true,
})
on(event: BackgroundGeolocationEvents): Observable<BackgroundGeolocationResponse> {
return;

View File

@@ -74,7 +74,7 @@ export interface BackgroundModeConfiguration {
plugin: 'cordova-plugin-background-mode',
pluginRef: 'cordova.plugins.backgroundMode',
repo: 'https://github.com/katzer/cordova-plugin-background-mode',
platforms: ['AmazonFire OS', 'Android', 'Browser', 'iOS', 'Windows']
platforms: ['AmazonFire OS', 'Android', 'Browser', 'iOS', 'Windows'],
})
@Injectable()
export class BackgroundMode extends IonicNativePlugin {
@@ -83,7 +83,7 @@ export class BackgroundMode extends IonicNativePlugin {
* Once called, prevents the app from being paused while in background.
*/
@Cordova({
sync: true
sync: true,
})
enable(): void {}
@@ -92,7 +92,7 @@ export class BackgroundMode extends IonicNativePlugin {
* Once the background mode has been disabled, the app will be paused when in background.
*/
@Cordova({
sync: true
sync: true,
})
disable(): void {
return;
@@ -106,7 +106,7 @@ export class BackgroundMode extends IonicNativePlugin {
* @return {void}
*/
@Cordova({
sync: true
sync: true,
})
setEnabled(enable: boolean): void {}
@@ -119,7 +119,7 @@ export class BackgroundMode extends IonicNativePlugin {
* @return {string}
*/
@Cordova({
sync: true
sync: true,
})
fireEvent(event: string, ...args: any[]): string {
return;
@@ -130,7 +130,7 @@ export class BackgroundMode extends IonicNativePlugin {
* @returns {boolean} returns a boolean that indicates if the background mode is enabled.
*/
@Cordova({
sync: true
sync: true,
})
isEnabled(): boolean {
return;
@@ -141,7 +141,7 @@ export class BackgroundMode extends IonicNativePlugin {
* @returns {boolean} returns a boolean that indicates if the background mode is active.
*/
@Cordova({
sync: true
sync: true,
})
isActive(): boolean {
return;
@@ -154,7 +154,7 @@ export class BackgroundMode extends IonicNativePlugin {
* @returns {Promise<any>}
*/
@Cordova({
platforms: ['Android']
platforms: ['Android'],
})
setDefaults(overrides?: BackgroundModeConfiguration): void {}
@@ -165,7 +165,7 @@ export class BackgroundMode extends IonicNativePlugin {
*/
@Cordova({
platforms: ['Android'],
sync: true
sync: true,
})
configure(options?: BackgroundModeConfiguration): void {}
@@ -178,7 +178,7 @@ export class BackgroundMode extends IonicNativePlugin {
@Cordova({
observable: true,
clearFunction: 'un',
clearWithArgs: true
clearWithArgs: true,
})
on(event: string): Observable<any> {
return;
@@ -200,7 +200,7 @@ export class BackgroundMode extends IonicNativePlugin {
*/
@Cordova({
platforms: ['Android'],
sync: true
sync: true,
})
moveToBackground(): void {}
@@ -209,7 +209,7 @@ export class BackgroundMode extends IonicNativePlugin {
*/
@Cordova({
platforms: ['Android'],
sync: true
sync: true,
})
disableWebViewOptimizations(): void {}
@@ -218,7 +218,7 @@ export class BackgroundMode extends IonicNativePlugin {
*/
@Cordova({
platforms: ['Android'],
sync: true
sync: true,
})
moveToForeground(): void {}
@@ -227,7 +227,7 @@ export class BackgroundMode extends IonicNativePlugin {
*/
@Cordova({
platforms: ['Android'],
sync: true
sync: true,
})
overrideBackButton(): void {}
@@ -236,7 +236,7 @@ export class BackgroundMode extends IonicNativePlugin {
*/
@Cordova({
platforms: ['Android'],
sync: true
sync: true,
})
excludeFromTaskList(): void {}
@@ -246,7 +246,7 @@ export class BackgroundMode extends IonicNativePlugin {
* @returns {Promise<boolean>}
*/
@Cordova({
platforms: ['Android']
platforms: ['Android'],
})
isScreenOff(fn: (arg0: boolean) => void): void {}
@@ -255,7 +255,7 @@ export class BackgroundMode extends IonicNativePlugin {
*/
@Cordova({
platforms: ['Android'],
sync: true
sync: true,
})
wakeUp(): void {}
@@ -264,7 +264,7 @@ export class BackgroundMode extends IonicNativePlugin {
*/
@Cordova({
platforms: ['Android'],
sync: true
sync: true,
})
unlock(): void {}
@@ -273,7 +273,7 @@ export class BackgroundMode extends IonicNativePlugin {
*/
@Cordova({
platforms: ['Android'],
sync: true
sync: true,
})
disableBatteryOptimizations(): void {}
}

View File

@@ -0,0 +1,112 @@
import { Injectable } from '@angular/core';
import { Plugin, CordovaInstance, IonicNativePlugin } from '@ionic-native/core';
declare const window: any;
export enum UploadState {
UPLOADED = 'UPLOADED',
FAILED = 'FAILED',
UPLOADING = 'UPLOADING',
INITIALIZED = 'INITIALIZED',
}
export type UploadStateType = keyof typeof UploadState;
export interface UploadEvent {
id?: string; // id of the upload
state?: UploadStateType; // state of the upload (either UPLOADING, UPLOADED or FAILED)
statusCode?: number; // response code returned by server after upload is completed
serverResponse?: any; // server response received after upload is completed
error?: any; // error message in case of failure
errorCode?: number; // error code for any exception encountered
progress?: any; // progress for ongoing upload
eventId?: string; // id of the event
}
export interface FTMPayloadOptions {
id: string;
filePath: string;
fileKey?: string;
serverUrl: string;
notificationTitle?: string;
headers?: {
[name: string]: string;
};
parameters?: {
[name: string]: string;
};
[prop: string]: any;
}
export interface FTMOptions {
callBack: (event: UploadEvent) => any;
config?: {
parallelUploadsLimit?: number;
};
}
export class FileTransferManager {
private _objectInstance: any;
constructor(options: FTMOptions) {
this._objectInstance = window.FileTransferManager.init(options.config, options.callBack);
}
@CordovaInstance()
startUpload(payload: FTMPayloadOptions): void {
return;
}
@CordovaInstance()
removeUpload(id: any): Promise<any> {
return;
}
@CordovaInstance()
acknowledgeEvent(id: string): Promise<any> {
return;
}
@CordovaInstance()
destroy(): Promise<any> {
return;
}
}
/**
* @name BackgroundUpload
* @description
* This plugin does something
*
* @usage
* ```typescript
* import { BackgroundUpload } from '@ionic-native/background-upload/ngx';
*
*
* constructor(private backgroundUpload: BackgroundUpload) { }
*
* ...
*
*
* this.backgroundUpload.init({})
* .then((res: any) => console.log(res))
* .catch((error: any) => console.error(error));
*
* ```
*/
@Plugin({
pluginName: 'BackgroundUpload',
plugin: 'cordova-plugin-background-upload',
pluginRef: 'FileTransferManager',
repo: 'https://github.com/spoonconsulting/cordova-plugin-background-upload',
install: 'ionic cordova plugin add cordova-plugin-background-upload',
platforms: ['Android', 'iOS'],
})
@Injectable()
export class BackgroundUpload extends IonicNativePlugin {
FileTransferManager = FileTransferManager;
init(options: FTMOptions): FileTransferManager {
return new FileTransferManager(options);
}
}

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