Compare commits

..

208 Commits

Author SHA1 Message Date
Ibby Hadeed
955476b45b chore(): update changelog 2017-04-27 01:01:19 -04:00
Ibby Hadeed
95aa3e2f26 3.6.0 2017-04-27 01:01:08 -04:00
Ibby Hadeed
facdcdc956 docs(): add save flag
closes #1385
2017-04-27 00:55:23 -04:00
Ibby Hadeed
ab782f7093 chore(): update templates 2017-04-27 00:53:06 -04:00
Ibby Hadeed
6811750711 docs(secure-storage): fix types
closes #1416
2017-04-27 00:51:57 -04:00
Ibby Hadeed
c3d23b0ee9 refactor(): cleanup 2017-04-27 00:49:23 -04:00
Ibby Hadeed
17366a29da feat(): add IonicNativePlugin base class (#1425)
* add base class

* properties are static

* some fixes

* tslint
2017-04-27 00:36:12 -04:00
Matt Thiessen
39eaebfafd docs(): fix docs (#1423) 2017-04-27 00:36:01 -04:00
Andrew Crites
66874cc598 chore(build): allow option to specify plugins to build (#1421) 2017-04-27 00:35:47 -04:00
Andrew Crites
16dc71ab71 feat(keychain): add Keychain plugin (#1420)
* feat(keychain): adding keychain plugin

ionic-native for cordova ios keychain plugin

* feat(keychain): make touchID params optional in type def
2017-04-27 00:35:29 -04:00
Ronald Mak
b58149f2f2 fix(media): function 'create' never returns media object (#1419)
The function never returns an object of MediaObject. The onSuccess callback is wrongly used to return the object. In fact, onSuccess/onError callbacks are only invoked after the current play, record, or stop action is called.
2017-04-27 00:34:43 -04:00
Kendall González León
b6afc19e72 docs(): fix docs (#1418)
On line 11 there was not closing single quote.
2017-04-27 00:34:22 -04:00
Daniel Sogl
52d731e7d9 chore(): update to Angular 4 (#1391)
Since Ionic 3.0 released, the package should be able  to support Angular 4.0.0.
I updated the dependencies for that.
2017-04-18 17:52:34 -04:00
Ibby Hadeed
7df7a557da chore(): update changelog 2017-04-18 17:48:08 -04:00
Ibby Hadeed
c720bfead1 3.5.0 2017-04-18 17:48:00 -04:00
Ibby Hadeed
b4102310e7 tslint 2017-04-18 17:47:24 -04:00
Ibby Hadeed
1b84db035f feat(camera-preview): add new plugin methods
New methods and constants available for CameraPreview
2017-04-18 17:44:01 -04:00
Ibby Hadeed
37e8eddd86 feat(background-fetch): add new status method
feat(background-fetch): add status method
2017-04-18 17:42:00 -04:00
Ibby Hadeed
4fb9b949d7 feat(action-sheet): update to match latest version
feat(action-sheet): update to newest version
2017-04-18 17:41:11 -04:00
Ibby Hadeed
66bc034c80 fix(google-maps): fix Geocoder pluginRef
Fix Geocoder's pluginRef
2017-04-18 17:40:33 -04:00
Ibby Hadeed
593c1ee6ca feat(health): update datatypes
Update datatypes to match recent release of plugin
2017-04-18 17:39:47 -04:00
Ibby Hadeed
91439be0bd feat(native-geocoder): add district property
native-geocoder: added district for larger cities
2017-04-18 17:38:17 -04:00
Ibby Hadeed
4ae50561b4 feat(flurry-analytics): add flurry analytics plugin
Added Flurry Analytics wrapper
2017-04-18 17:37:39 -04:00
Ibby Hadeed
1f0986fa6f docs(): fix reference
change executeSql doc to mention create instead of openDatabase
2017-04-18 17:36:39 -04:00
Ibby Hadeed
1be4c1c669 docs(): battery-status example fix (#1387)
Closes #1383
2017-04-18 17:36:15 -04:00
Dylan v.d Merwe
c7a6e6625a docs(): fix typo in media example (#1386) 2017-04-18 17:35:27 -04:00
SVANNER
0a7f56d960 New methods and constants available 2017-04-18 07:15:15 +02:00
Dylan v.d Merwe
f7044a08de bug(doc): battery-status example fix
Fix for https://github.com/driftyco/ionic-native/issues/1383
2017-04-17 23:26:56 +02:00
John-Luke
6168eaee47 feat(background-fetch): add status method 2017-04-17 15:22:44 -03:00
John-Luke
9c925806ed feat(action-sheet): update to newest version 2017-04-17 14:27:13 -03:00
Robert Coie
3e8211461a change executeSql doc to mention create instead of openDatabase 2017-04-16 16:27:09 -07:00
hodak
b2120c68e2 Fix Geocoder's pluginRef 2017-04-15 13:29:10 +02:00
Ankush Aggarwal
1da12b9330 added HealthDataType interface and usage instructions 2017-04-14 08:21:45 -07:00
Amit Moryossef
4bd6aaba2b fix(core): fix bug when checking if plugin exists (#1348)
* fix(cordova-plugin): add check if method exists

For https://github.com/driftyco/ionic-native/issues/1327

* fix(plugin): add typeof to undefined check
2017-04-14 09:49:57 -04:00
Ibby Hadeed
f396940044 fix(rollbar): fix pluginRef 2017-04-14 09:42:46 -04:00
Ibby Hadeed
6bba72d32a fix(media): fix issue with create method
closes #1333
2017-04-14 09:19:25 -04:00
Juan J. San Emeterio
d30b534150 docs(google-plus): options parameter is required (#1368)
Issue reported: https://forum.ionicframework.com/t/ionic-native-googleplus-unrecognized-selector-sent-to-instance/81944/3

In order to correctly call the login method on the GooglePlus provider you need to pass it the 'options' parameter even if it's empty.
2017-04-14 09:14:41 -04:00
Kendall González León
8edc27079c docs(): fix example (#1362)
Line 224 fixed, Incorrect single quotes in the string.
(don't -> do not) remove quotes for avoid bad format.
2017-04-14 09:13:52 -04:00
Stefan Huber
55f9943f86 docs(media): minor fix (#1358)
`getDuration` is synchronous, inside the example it was used with a promise, which is quite missleading...
2017-04-14 09:07:27 -04:00
Ctibor Laky
352ad7ab2f docs(): fix example (#1355) 2017-04-14 09:04:46 -04:00
Gianfrancø Palumbo
15bf509ae0 docs(): fix typo (#1354) 2017-04-14 09:04:32 -04:00
Nikhil
6b9f650a19 docs(social-sharing): fix example (#1351)
ShareViaEmail parameter for providing email "must be null or an array" because it's type is "string:[]" and the provided syntax is wrong, so i have updated that syntax.
2017-04-14 09:04:11 -04:00
Leonardo Ruhland
b30883a876 docs(): fix package name (#1340)
Fixes documentation with the new import syntax
2017-04-14 08:59:15 -04:00
Garry-H
caec80b661 docs(nfc): enhance docs (#1325)
labeled methods with classes, improved method descriptions
2017-04-14 08:58:53 -04:00
LAÉCIO FERREIRA MORAIS
620289f54b docs(): fix typo (#1324) 2017-04-14 08:58:01 -04:00
Lenglet Anthony
5a6246425f docs(): fix typo (#1323) 2017-04-14 08:57:41 -04:00
Ankush Aggarwal
43b75af58b changed any to specific types 2017-04-13 17:56:59 -07:00
Ankush Aggarwal
44957e2197 Update datatypes to match recent release of plugin
I made changes to cordova-plugin-health to accept the following array as datatypes. Earlier it was just an array of strings. Now it also contains an object with `read` and `write` array.

```
[
  'calories', 'distance',   //read and write permissions
  {
    read : ['steps'],       //read only permission
    write : ['height', 'weight']  //write only permission
  }
]
```

Don't know how to specify this array in typescript so just replaced by 'any'
2017-04-11 09:39:24 -07:00
fredroo
c15c11cf95 docs(): enhance example (#1336) 2017-04-08 16:58:36 -04:00
Ankush Aggarwal
1b429638fe docs(): add types (#1342)
Resolves - https://github.com/driftyco/ionic-native/issues/1331
2017-04-08 16:58:07 -04:00
Andréas Hanss
99576d823d Edit for 3.0 (#1345) 2017-04-08 16:57:38 -04:00
Robert Herhold
0147704a4f docs(): fix typo (#1329) 2017-04-05 23:37:08 -04:00
Yasin Simsek
f6a7e5fe9b native-geocoder: added district for larger cities 2017-04-03 12:49:29 +02:00
anastasia
ebb47ce591 fixed doc of flurry analytics wrapper 2017-04-03 13:14:08 +03:00
gujiman
57eabc002a docs(paypal): fix package name in example (#1313)
The import ref for paypal is incorrect. I've added the correct name.
2017-04-01 22:38:42 -04:00
Joel Szwarga
24c8d5d627 docs(music-controls): fix example code (#1315)
The sample code does not work...this change returns the observable first with subscribe() before actually calling the Observable's subscribe method.

In fact, the way it's written in the example, the code would not build because of typescript errors.
2017-04-01 22:38:17 -04:00
Ibby Hadeed
4ceb340630 docs(admob-free): fix plugin name 2017-03-31 23:15:27 -04:00
anastasia
ec8d318280 Finish flurry-analytics 2017-03-31 17:38:11 +03:00
anastasia
8add83612d added flurry analytics wrapper 2017-03-31 17:36:09 +03:00
Gengjun Wu
0beefb3079 docs(flashlight): fix typo (#1306)
There is a typo on line 14, changed from

 * constructor(private flashlight: FlashLight) { }

to

 * constructor(private flashlight: Flashlight) { }
2017-03-31 03:02:39 -04:00
Ibby Hadeed
4d2f720b01 chore(): update changelog 2017-03-30 15:58:15 -04:00
Ibby Hadeed
d29ca88b18 3.4.4 2017-03-30 15:58:12 -04:00
Ibby Hadeed
c94dd41f92 Merge branch 'master' of github.com:driftyco/ionic-native 2017-03-30 15:58:11 -04:00
gurnard123
b005efc52b docs(intel-security): fix references (#1305)
corrected the documentation to correct the read code snippet. As detailed here:
https://forum.ionicframework.com/t/crypto-libraries-with-ionic-2/84629
2017-03-30 15:50:26 -04:00
mugenyi henry
f4c4317f16 docs(admob): fix package name (#1301)
remove the dash "import { AdMob, AdMobOptions, AdSize, AdExtras } from '@ionic-native/ad-mob';" to import { AdMob, AdMobOptions, AdSize, AdExtras } from '@ionic-native/admob' because typescript will not import the specified clases
2017-03-30 15:50:02 -04:00
Ibby Hadeed
145577f9bc fix(push): hasPermission is part of Push object
addresses comment in #1297
2017-03-30 15:48:46 -04:00
Ibby Hadeed
390f474ad5 chore(): update changelog 2017-03-29 19:21:14 -04:00
Ibby Hadeed
d8655f055e 3.4.3 2017-03-29 19:21:07 -04:00
Ibby Hadeed
65cf94b67b fix(app-preferences): fix bug with fetch method
closes #1299
2017-03-29 19:20:46 -04:00
Ibby Hadeed
b91757e7e9 fix(secure-storage): return unfunctional SecureStorageObject if plugin doesn't exist 2017-03-29 19:15:54 -04:00
Ibby Hadeed
612cb963e1 Merge branch 'master' of github.com:driftyco/ionic-native 2017-03-29 19:11:01 -04:00
Odd Christer Brovig
8b31d72139 feat(secure-storage): add keys() and clear() methods (#1281) 2017-03-29 19:10:49 -04:00
mchristofersenrealnets
3b9e7253db docs(admob): @ionic-native (#1298)
Can't import from 'ionic-native'. need to use "@ionic-native/admob-free".
2017-03-29 19:08:54 -04:00
Ibby Hadeed
8b86a12e07 docs(native-storage): add platforms info 2017-03-29 19:02:12 -04:00
Josh Babb
543ae7abf8 docs(jins-meme): add extended usage example (#1286) 2017-03-29 18:56:35 -04:00
Ibby Hadeed
6ccf3a66bb docs(native-page-transitions): improve docs
closes #1294
2017-03-29 18:56:15 -04:00
Ibby Hadeed
2b94ffdc44 fix(admob): add missing license property
fixes #1291
2017-03-29 18:39:46 -04:00
Ibby Hadeed
208748a660 fix(push): add missing plugin decorator
closes #1297
2017-03-29 18:34:02 -04:00
perry
47b593b43d chore(docs): moving docs from /docs/v2/native to /docs/native 2017-03-29 11:19:31 -05:00
Perry Govier
947bf227d0 Running CI2 on master 2017-03-29 10:23:28 -05:00
Perry Govier
4f7718b03e Merge pull request #1289 from driftyco/cci2
chore(): use CircleCI 2
2017-03-29 10:22:41 -05:00
Ibby Hadeed
31d0f71cc9 works 100% 2017-03-28 20:32:14 -04:00
Ibby Hadeed
723ac779df test doc update 2017-03-28 20:30:41 -04:00
Ibby Hadeed
ebd272e30a revert last test commit 2017-03-28 20:28:27 -04:00
Ibby Hadeed
029a196f38 test doc update 2017-03-28 20:27:35 -04:00
Ibby Hadeed
b872bd01ce docs(): update docs 2017-03-28 20:26:43 -04:00
Ibby Hadeed
d6711080e3 update docs on master only 2017-03-28 20:22:34 -04:00
Ibby Hadeed
3e124f1807 update docs only master 2017-03-28 20:13:44 -04:00
Ibby Hadeed
e474b2987f replace cache pattern since we messed it up 2017-03-28 20:06:28 -04:00
Ibby Hadeed
75ee0418bf replace cache pattern since we messed it up 2017-03-28 20:04:03 -04:00
Ibby Hadeed
7c8c71bdc8 fix node_modules path 2017-03-28 20:02:33 -04:00
Ibby Hadeed
3d82d0d592 fix restore cache key 2017-03-28 20:01:17 -04:00
Ibby Hadeed
3f2a983c6e more caching 2017-03-28 19:59:33 -04:00
Ibby Hadeed
7953ca0e72 fixes 2017-03-28 19:46:17 -04:00
Ibby Hadeed
117b0578b0 fixes 2017-03-28 19:45:44 -04:00
Ibby Hadeed
cadafaa3b6 build timeouts 2017-03-28 19:41:50 -04:00
Ibby Hadeed
4778637bd5 Remove machine option 2017-03-28 19:37:52 -04:00
Ibby Hadeed
a1ff059e90 try building 2017-03-28 19:37:05 -04:00
Ibby Hadeed
15237ea983 fix syntax 2017-03-28 19:32:07 -04:00
Ibby Hadeed
b0710cad1e test cci2 2017-03-28 19:31:39 -04:00
Ibby Hadeed
ee269669aa 3.4.2 2017-03-28 11:23:37 -04:00
Ibby Hadeed
97307a2b8c amend(network): fix observable import 2017-03-28 09:41:12 -04:00
Ibby Hadeed
0ae3cb0d00 chore(): update changelog 2017-03-28 09:34:55 -04:00
Ibby Hadeed
0dee3500f7 3.4.1 2017-03-28 09:34:37 -04:00
Ibby Hadeed
b53af8e3c9 fix(admob): fix event listeners
fixes #1165
2017-03-28 09:28:02 -04:00
Ibby Hadeed
006f7dc2ad fix(network): fix onchange method
fixes #1173
2017-03-28 09:07:12 -04:00
Ibby Hadeed
19bc8419e0 fix(network): remove ontypechange method 2017-03-28 09:04:45 -04:00
Ibby Hadeed
d3d8f8264c docs(): add platforms tag 2017-03-28 08:54:40 -04:00
Ibby Hadeed
8262219d05 docs(): update developer docs
closes #1210
2017-03-28 08:49:36 -04:00
Ibby Hadeed
39a91d9520 chore(): update changelog 2017-03-28 08:26:22 -04:00
Ibby Hadeed
88a19af21e 3.4.0 2017-03-28 08:25:59 -04:00
Ibby Hadeed
1dccff5e49 3.3.2 2017-03-28 08:25:38 -04:00
Ibby Hadeed
689f0f159c chore(): add platforms tag 2017-03-28 08:25:07 -04:00
Ibby Hadeed
5aa484c024 docs(): add platforms 2017-03-28 08:24:04 -04:00
Ibby Hadeed
ea88c9e4a8 fix(sqlite): fix SQLiteDatabaseConfig interface
closes #1280
2017-03-28 08:09:07 -04:00
Ibby Hadeed
bc364d1cb1 docs(admob-free): improve docs 2017-03-28 06:54:03 -04:00
Ibby Hadeed
ffa37e2932 feat(taptic-engine): add taptic engine plugin support (#1271)
* Added taptic plugin. #571

* docs(taptic): improve docs

* update to v3
2017-03-28 06:49:32 -04:00
Ibby Hadeed
f911366c54 feat(sqlite-porter): add SQLite porter plugin (#1273)
closes #485
2017-03-28 06:49:27 -04:00
Ibby Hadeed
0ef4a7394e feat(admob-free): add AdMobFree plugin (#1272)
closes #1170
2017-03-28 06:49:22 -04:00
Thomas Kemmer
68d99461c6 feat(zeroconf): add cordova-plugin-zeroconf support (#1260)
* feat(zeroconf): add cordova-plugin-zeroconf support

* feat(zeroconf): restructure documentation
2017-03-28 06:48:43 -04:00
Ibby Hadeed
6a458b52cc chore(): update changelog 2017-03-28 04:45:08 -04:00
Ibby Hadeed
a1a4ef94cc 3.3.1 2017-03-28 04:44:59 -04:00
Ibby Hadeed
6e20137340 fix(contacts): fix major bug 2017-03-28 04:44:48 -04:00
Ibby Hadeed
961727ee61 fix(contacts): handle cordova_not_found errors 2017-03-28 04:37:35 -04:00
Ibby Hadeed
9c30a1d0dd fix(background-mode): add missing config options
closes #1277
2017-03-28 04:31:53 -04:00
Ibby Hadeed
ee79278503 docs(sqlite): improve echoTest and deleteDatabase docs 2017-03-28 04:27:49 -04:00
Ibby Hadeed
544e7ef4fc feat(sqlite): add SQLiteDatabaseConfig interface 2017-03-28 04:13:29 -04:00
Ibby Hadeed
01aece1fbb fix(sqlite): fixes echoTest and deleteDatabase
echoTest and deleteDatabase methods belong to the SQLite class, and not the SQLiteObject class

closes #1275
2017-03-28 04:11:19 -04:00
MobGG
a7854b7fad docs(google-map): change GoogleMapsLatLng to LatLng
change GoogleMapsLatLng to LatLng
2017-03-28 02:16:48 -04:00
Ibby Hadeed
27d3d2d1c9 chore(templates): fix variable 2017-03-27 15:07:48 -04:00
Ibby Hadeed
9074362cae fix(core): handle unexpected errors in wrapOtherPromise
fixes #1185
2017-03-27 15:00:04 -04:00
Ibby Hadeed
fd0a2e9acd fix(core): return errors from CordovaCheck decorators
fixes comment mentioned in #1268
2017-03-27 14:54:25 -04:00
Ibby Hadeed
9348415cf5 chore(): update changelog 2017-03-27 14:22:50 -04:00
Ibby Hadeed
ad8c04bf9f 3.3.0 2017-03-27 14:22:43 -04:00
Ibby Hadeed
667f9bdde9 refactor(intel-security): cleanup 2017-03-27 14:22:13 -04:00
Eric Horodyski
aedc9d65c8 feat(intel-security): add com-intel-security-cordova-plugin support (#1256)
* Initial plugin pass

* Remove unneeded imports, or else plugins will not build.

* Add try-catch blocks.
Applications will not bomb if the plugin is not installed or user is running in browser.

* handle missing intel variable.

* Add documentation

* Conform to Cordova decorators.

* Add IntelSecurityDataOptions

* Update plugin to use plain `return` method statements.

* Better conform to Ionic Native
2017-03-27 14:18:23 -04:00
Ibby Hadeed
2869c644ed docs(secure-storage): remove browser from platforms
fixes #1268
2017-03-27 13:26:47 -04:00
Ibby Hadeed
200618dee7 Merge branch 'master' of github.com:driftyco/ionic-native 2017-03-27 13:22:55 -04:00
Ibby Hadeed
5d14b16d73 refactor(): revert last commit 2017-03-27 13:22:39 -04:00
Thomas Kemmer
b08e3a8ee1 feat(android-full-screen): add cordova-plugin-fullscreen support (#1255) 2017-03-26 04:02:53 -04:00
eddyTheDove
3511f24a26 docs(); fix typo (#1257)
In the documentation, when calling `show()`, you logged 'any' in the console, instead of logging 'result'
2017-03-26 04:02:12 -04:00
eddyTheDove
fa803f2258 docs(music-controls): remove duplicate subscribe (#1258)
There was a double .subscribe() function in `this.musicControls.subscribe()`
2017-03-26 04:01:55 -04:00
Ibby Hadeed
d23f13f837 chore(): update changelog 2017-03-26 02:00:57 -04:00
Ibby Hadeed
d4c876d009 chore(): add postchangelog script 2017-03-26 02:00:52 -04:00
Ibby Hadeed
d2ef40ccb7 3.2.4 2017-03-26 01:59:37 -04:00
Ibby Hadeed
8cf332f0ff refactor(decorators): use arrow functions 2017-03-26 01:58:46 -04:00
Ibby Hadeed
be345ea829 chore(build): ship source maps 2017-03-26 01:53:54 -04:00
Ibby Hadeed
c52bb832b4 chore(): fix plugin create command and templtes 2017-03-25 21:48:45 -04:00
Guille
1eebea9df5 docs(google-maps): fix plugin reference (#1251) 2017-03-24 15:45:05 -04:00
Ibby Hadeed
150b236468 chore(publish): a way to re-try in case something happens 2017-03-24 15:42:52 -04:00
Ibby Hadeed
df64486a13 chore(changelog): update 2017-03-24 15:28:17 -04:00
Ibby Hadeed
a1e68a0934 3.2.3 2017-03-24 15:28:05 -04:00
Ibby Hadeed
a9a511d0f1 fix(contacts): fix crash if plugin is unavailable
closes #1250
2017-03-24 15:25:21 -04:00
Ibby Hadeed
b6d0e3125d Merge branch 'es6-docs' 2017-03-24 15:18:03 -04:00
Ibby Hadeed
d4a9abfc61 docs(camera-preview): mark params as optional 2017-03-24 15:17:35 -04:00
Ibby Hadeed
a5ed62e56a docs(camera-preview): fix package name 2017-03-24 15:16:27 -04:00
Lucas A. Moulin
7d0f1bd3ff docs(network): fix plugin reference (#1247) 2017-03-24 15:14:17 -04:00
Ibby Hadeed
a151295654 fix(core): make properties enumerable 2017-03-24 15:07:44 -04:00
Perry Govier
e4fc01a23c Merge pull request #1243 from driftyco/es6-docs
chore(docs): cleanup and enhancements
2017-03-24 11:11:48 -05:00
Ionitron
2fdf61ad5c docs(onesignal): add a quirk for getTags method
addresses #1100
2017-03-24 08:07:06 -04:00
Ionitron
25d5169251 revert circle-ci changes 2017-03-23 23:03:53 -04:00
Ibby
cd7612e32e fix directives order 2017-03-23 22:50:14 -04:00
Ibby
4e5b3fa910 chore(docs): some fixes 2017-03-23 22:39:12 -04:00
Ibby
5589f4d2ff test ci 2017-03-23 22:09:26 -04:00
Ibby
841f151b4d test ci 2017-03-23 22:08:54 -04:00
Ibby
ead99b1a4f chore(docs): cleanup + es6 2017-03-23 22:07:59 -04:00
Ibby
cd5ff68bc1 chore(docs): new approach to parsing npmid 2017-03-23 18:20:10 -04:00
Ibby
261e9cc249 chore(docs): do not syntax highlight install command 2017-03-23 17:55:15 -04:00
Ibby
0e2d5ac1de Merge branch 'master' of github.com:driftyco/ionic-native 2017-03-23 15:59:42 -04:00
Ibby
87916aec20 chore(docs): parse optional 2017-03-23 15:59:33 -04:00
Ibby
072fe8df94 docs(location-accuracy): fix docs url 2017-03-23 15:38:50 -04:00
Ibby
0750e03e04 docs(): properly document optional params 2017-03-23 15:37:17 -04:00
Ibby
bf2ba2e9e7 chore(docs): fix native menu rendering 2017-03-23 15:19:31 -04:00
Ibby
91c879af27 docs(): add overview and browser usage to menu 2017-03-23 15:19:31 -04:00
Swapnil Patwa
ee40475891 docs(browser-tab): fix method name (#1230) 2017-03-23 14:18:54 -04:00
Daniel Cregg
b012bb62d7 docs(camera): fix typo (#1231) 2017-03-23 14:18:25 -04:00
JamesLeeTrigg
5ccc558380 docs(secure-storage): fix typo (#1236)
SecureStorageObject has a capital B
2017-03-23 14:17:36 -04:00
Ferdy Fauzi
5d775978c6 docs(camera): fix typo
Fix typing error for line 104 & 107
- change constant to const
- change enodingType to encodingType
2017-03-23 14:16:12 -04:00
Ibby
047c236191 docs(media): rename docs page name 2017-03-23 14:09:49 -04:00
Ibby
1536e98ba4 chore(): update changelog 2017-03-23 14:04:12 -04:00
Ibby
baee422090 3.2.2 2017-03-23 14:03:57 -04:00
Ibby
07de25c90f chore(): update peer dependencies 2017-03-23 14:03:48 -04:00
Ibby
027b10a6dd amend(): greater than should be equal 2017-03-22 22:42:21 -04:00
Ibby
bb4308e7d8 amend(): remove unecessary line 2017-03-22 22:40:24 -04:00
Ibby
eb31e9b2a1 chore(): fix git repo check 2017-03-22 22:40:02 -04:00
Ibby
7af7715f90 chore(): update changelog 2017-03-22 22:16:19 -04:00
Ibby
934e63d34a 3.2.1 2017-03-22 22:16:05 -04:00
Mike Roberts
baff7b3d7c fix(secure-storage): update the pluginRef (#1228)
Fixes the plugin not found issue by using the correct pluginRef.
2017-03-22 22:15:42 -04:00
Ibby Hadeed
acbb3382fe Update README.md 2017-03-22 20:08:30 -04:00
Ibby Hadeed
4bb44f1a18 Update README.md 2017-03-22 20:08:12 -04:00
Ibby Hadeed
edf4c75bbd chore(): modify dist paths (#1213)
* chore(): modify dist paths

* fixes
2017-03-22 19:51:59 -04:00
Ibby
fdffb055be chore(): update changelog 2017-03-22 19:17:11 -04:00
Ibby
d0c680fe3a 3.2.0 2017-03-22 19:16:52 -04:00
Ibby
5cd719d272 docs(jins-meme): fix name 2017-03-22 19:16:38 -04:00
Patrick Reames
9c88cfb577 feat(jins-meme): add support for jins meme smart glasses (#1212)
* (feat) add support for JinsMemeSDK-Plugin-Cordova

* (fix) correct jins-meme plugin name

* #feature/jins-meme initial commit

thanks @patrickr, @jins-meme,  @tjpeden

* import fixes

(no-unused-variable) @ionic-native/plugins/jins-meme/index.ts[1, 10]:
Unused import: 'Injectable'

stream.js:74
throw er; // Unhandled stream error in pipe.
^
Error: Failed to lint: @ionic-native/plugins/jins-meme/index.ts [1, 10]:
Unused import: 'Injectable'.

* update developer guide

as per https://github.com/driftyco/ionic-native/issues/1210

* removed unused import

* Revert "Feature jins meme"

* correct developer docs (#3)

* remove unused import and update documentation

* ihadeed's requested changed

see
https://github.com/driftyco/ionic-native/pull/1212#pullrequestreview-28298382

* usage update

* revert DEVELOPER.md to limit scope of PR
2017-03-22 19:16:10 -04:00
Ibby
fa047d2171 Merge branch 'master' of github.com:driftyco/ionic-native 2017-03-22 19:15:26 -04:00
Ibby
3154fea2b9 refactor(admob): rename package from ad-mob to admob
The package `@ionic-native/ad-mob` is deprecated in favor of `@ionic-native/admob`
2017-03-22 19:15:19 -04:00
Andrzej Przedecki
7b069a3e58 docs(geolocation): fix reference (#1217) 2017-03-22 19:13:21 -04:00
Ibby
602f14771c Merge branch 'master' of github.com:driftyco/ionic-native 2017-03-22 19:04:19 -04:00
Ibby
396bce1710 chore(build): make core dependency flexible 2017-03-22 19:04:13 -04:00
Vasilis Koutsopoulos
82d2ae8c4d fix(media-plugin): MediaPlugin.create promise never fires (#1220) 2017-03-22 18:53:55 -04:00
Nick Holder
0c9eb8e1dd docs(toast): fix typo
Changed thisoast to this.toast
2017-03-22 18:52:13 -04:00
Jamy Timmermans
3830de5d69 docs(deeplinks): change DeepLinks to Deeplinks (#1223) 2017-03-22 18:49:10 -04:00
Ibby
ec0e1ff3a1 docs(): fix broken doc links 2017-03-22 01:49:19 -04:00
Ibby
5d35434866 docs(text-to-speech): fix docs url 2017-03-22 01:44:49 -04:00
Ibby
016f174b53 docs(deeplinks): fix doc name
closes #1215
2017-03-22 01:41:41 -04:00
Ibby Hadeed
997f7a03aa docs(linkedin): fix import reference 2017-03-21 23:12:32 -04:00
Ibby Hadeed
5bf1cbeba3 Update README.md 2017-03-21 16:50:08 -04:00
190 changed files with 3135 additions and 1380 deletions

View File

@@ -4,8 +4,8 @@
#### There are no rules, but here are a few things to consider:
###### Before you submit an issue:
* Do a quick search to see if there are similar issues
* Make sure that you are waiting for `deviceready` to fire before interacting with any plugin. If you are using Ionic 2, this can be done using [the `Platform.ready()` function](http://ionicframework.com/docs/v2/api/platform/Platform/#ready).
* **Check that you are using the latest version of** `ionic-native`, you can install the latest version by running `npm i --save ionic-native@latest`
* Make sure that you are waiting for `deviceready` to fire before interacting with any plugin. If you are using Ionic 2, this can be done using [the `Platform.ready()` function](http://ionicframework.com/docs/api/platform/Platform/#ready).
* **Check that you are using the latest version of** `ionic-native`, you can install the latest version by running `npm i --save @ionic-native/core@latest`
###### Still having problems? submit an issue with the following details:
* Short description of the issue
@@ -16,4 +16,4 @@
## Feature request?
Have a plugin you'd like to see supported? Since Ionic Native is a thin wrapper around existing Cordova plugins, adding support for new plugins is as easy as creating a new wrapper for whatever plugin you'd like to add.
Take a look at our [Developer Guide](https://github.com/driftyco/ionic-native/blob/master/DEVELOPER.md) for more info on adding new plugins.
Take a look at our [Developer Guide](https://github.com/driftyco/ionic-native/blob/master/DEVELOPER.md) for more info on adding new plugins.

View File

@@ -1,3 +1,182 @@
<a name="3.6.0"></a>
# [3.6.0](https://github.com/driftyco/ionic-native/compare/v3.5.0...v3.6.0) (2017-04-27)
### Bug Fixes
* **media:** function 'create' never returns media object (#1419) ([b58149f](https://github.com/driftyco/ionic-native/commit/b58149f))
### Features
* **keychain:** add Keychain plugin (#1420) ([16dc71a](https://github.com/driftyco/ionic-native/commit/16dc71a))
* add IonicNativePlugin base class (#1425) ([17366a2](https://github.com/driftyco/ionic-native/commit/17366a2))
<a name="3.5.0"></a>
# [3.5.0](https://github.com/driftyco/ionic-native/compare/v3.4.4...v3.5.0) (2017-04-18)
### Bug Fixes
* **core:** fix bug when checking if plugin exists (#1348) ([4bd6aab](https://github.com/driftyco/ionic-native/commit/4bd6aab)), closes [#1348](https://github.com/driftyco/ionic-native/issues/1348)
* **media:** fix issue with create method ([6bba72d](https://github.com/driftyco/ionic-native/commit/6bba72d)), closes [#1333](https://github.com/driftyco/ionic-native/issues/1333)
* **rollbar:** fix pluginRef ([f396940](https://github.com/driftyco/ionic-native/commit/f396940))
### Features
* **action-sheet:** update to newest version ([9c92580](https://github.com/driftyco/ionic-native/commit/9c92580))
* **background-fetch:** add status method ([6168eae](https://github.com/driftyco/ionic-native/commit/6168eae))
<a name="3.4.4"></a>
## [3.4.4](https://github.com/driftyco/ionic-native/compare/v3.4.3...v3.4.4) (2017-03-30)
### Bug Fixes
* **push:** hasPermission is part of Push object ([145577f](https://github.com/driftyco/ionic-native/commit/145577f))
<a name="3.4.3"></a>
## [3.4.3](https://github.com/driftyco/ionic-native/compare/v3.4.2...v3.4.3) (2017-03-29)
### Bug Fixes
* **admob:** add missing license property ([2b94ffd](https://github.com/driftyco/ionic-native/commit/2b94ffd)), closes [#1291](https://github.com/driftyco/ionic-native/issues/1291)
* **app-preferences:** fix bug with fetch method ([65cf94b](https://github.com/driftyco/ionic-native/commit/65cf94b)), closes [#1299](https://github.com/driftyco/ionic-native/issues/1299)
* **push:** add missing plugin decorator ([208748a](https://github.com/driftyco/ionic-native/commit/208748a)), closes [#1297](https://github.com/driftyco/ionic-native/issues/1297)
* **secure-storage:** return unfunctional SecureStorageObject if plugin doesn't exist ([b91757e](https://github.com/driftyco/ionic-native/commit/b91757e))
### Features
* **secure-storage:** add keys() and clear() methods (#1281) ([8b31d72](https://github.com/driftyco/ionic-native/commit/8b31d72))
<a name="3.4.2"></a>
## [3.4.2](https://github.com/driftyco/ionic-native/compare/v3.4.1...v3.4.2) (2017-03-28)
<a name="3.4.1"></a>
## [3.4.1](https://github.com/driftyco/ionic-native/compare/v3.4.0...v3.4.1) (2017-03-28)
### Bug Fixes
* **admob:** fix event listeners ([b53af8e](https://github.com/driftyco/ionic-native/commit/b53af8e)), closes [#1165](https://github.com/driftyco/ionic-native/issues/1165)
* **network:** fix onchange method ([006f7dc](https://github.com/driftyco/ionic-native/commit/006f7dc)), closes [#1173](https://github.com/driftyco/ionic-native/issues/1173)
* **network:** remove ontypechange method ([19bc841](https://github.com/driftyco/ionic-native/commit/19bc841))
<a name="3.4.0"></a>
# [3.4.0](https://github.com/driftyco/ionic-native/compare/v3.3.2...v3.4.0) (2017-03-28)
<a name="3.3.2"></a>
## [3.3.2](https://github.com/driftyco/ionic-native/compare/v3.3.1...v3.3.2) (2017-03-28)
### Bug Fixes
* **sqlite:** fix SQLiteDatabaseConfig interface ([ea88c9e](https://github.com/driftyco/ionic-native/commit/ea88c9e)), closes [#1280](https://github.com/driftyco/ionic-native/issues/1280)
### Features
* **admob-free:** add AdMobFree plugin (#1272) ([0ef4a73](https://github.com/driftyco/ionic-native/commit/0ef4a73)), closes [#1170](https://github.com/driftyco/ionic-native/issues/1170)
* **sqlite-porter:** add SQLite porter plugin (#1273) ([f911366](https://github.com/driftyco/ionic-native/commit/f911366)), closes [#485](https://github.com/driftyco/ionic-native/issues/485)
* **taptic-engine:** add taptic engine plugin support (#1271) ([ffa37e2](https://github.com/driftyco/ionic-native/commit/ffa37e2))
* **zeroconf:** add cordova-plugin-zeroconf support (#1260) ([68d9946](https://github.com/driftyco/ionic-native/commit/68d9946))
<a name="3.3.1"></a>
## [3.3.1](https://github.com/driftyco/ionic-native/compare/v3.3.0...v3.3.1) (2017-03-28)
### Bug Fixes
* **background-mode:** add missing config options ([9c30a1d](https://github.com/driftyco/ionic-native/commit/9c30a1d)), closes [#1277](https://github.com/driftyco/ionic-native/issues/1277)
* **contacts:** fix major bug ([6e20137](https://github.com/driftyco/ionic-native/commit/6e20137))
* **contacts:** handle cordova_not_found errors ([961727e](https://github.com/driftyco/ionic-native/commit/961727e))
* **core:** handle unexpected errors in wrapOtherPromise ([9074362](https://github.com/driftyco/ionic-native/commit/9074362)), closes [#1185](https://github.com/driftyco/ionic-native/issues/1185)
* **core:** return errors from CordovaCheck decorators ([fd0a2e9](https://github.com/driftyco/ionic-native/commit/fd0a2e9)), closes [#1268](https://github.com/driftyco/ionic-native/issues/1268)
* **sqlite:** fixes echoTest and deleteDatabase ([01aece1](https://github.com/driftyco/ionic-native/commit/01aece1)), closes [#1275](https://github.com/driftyco/ionic-native/issues/1275)
### Features
* **sqlite:** add SQLiteDatabaseConfig interface ([544e7ef](https://github.com/driftyco/ionic-native/commit/544e7ef))
<a name="3.3.0"></a>
# [3.3.0](https://github.com/driftyco/ionic-native/compare/v3.2.4...v3.3.0) (2017-03-27)
### Features
* **android-full-screen:** add cordova-plugin-fullscreen support (#1255) ([b08e3a8](https://github.com/driftyco/ionic-native/commit/b08e3a8))
* **intel-security:** add com-intel-security-cordova-plugin support (#1256) ([aedc9d6](https://github.com/driftyco/ionic-native/commit/aedc9d6))
<a name="3.2.4"></a>
## [3.2.4](https://github.com/driftyco/ionic-native/compare/v3.2.3...v3.2.4) (2017-03-26)
<a name="3.2.3"></a>
## [3.2.3](https://github.com/driftyco/ionic-native/compare/v3.2.2...v3.2.3) (2017-03-24)
### Bug Fixes
* **contacts:** fix crash if plugin is unavailable ([a9a511d](https://github.com/driftyco/ionic-native/commit/a9a511d)), closes [#1250](https://github.com/driftyco/ionic-native/issues/1250)
* **core:** make properties enumerable ([a151295](https://github.com/driftyco/ionic-native/commit/a151295))
<a name="3.2.2"></a>
## [3.2.2](https://github.com/driftyco/ionic-native/compare/v3.2.1...v3.2.2) (2017-03-23)
<a name="3.2.1"></a>
## [3.2.1](https://github.com/driftyco/ionic-native/compare/v3.2.0...v3.2.1) (2017-03-23)
### Bug Fixes
* **secure-storage:** update the pluginRef (#1228) ([baff7b3](https://github.com/driftyco/ionic-native/commit/baff7b3))
<a name="3.2.0"></a>
# [3.2.0](https://github.com/driftyco/ionic-native/compare/v3.1.1...v3.2.0) (2017-03-22)
### Bug Fixes
* **media-plugin:** MediaPlugin.create promise never fires (#1220) ([82d2ae8](https://github.com/driftyco/ionic-native/commit/82d2ae8))
### Features
* **jins-meme:** add support for jins meme smart glasses (#1212) ([9c88cfb](https://github.com/driftyco/ionic-native/commit/9c88cfb))
<a name="3.1.1"></a>
## [3.1.1](https://github.com/driftyco/ionic-native/compare/v3.1.0...v3.1.1) (2017-03-21)

View File

@@ -17,6 +17,7 @@ gulp plugin:create -n PluginName
gulp plugin:create -m -n PluginName
```
Running the command above will create a new directory `src/@ionic-native/plugins/plugin-name/` with a single file in there: `index.ts`. This file is where all the plugin definitions should be.
Let's take a look at the existing plugin wrapper for Geolocation to see what goes into an Ionic Native plugin (comments have been removed for clarity):
@@ -110,7 +111,7 @@ The `@Cordova` decorator has a few more options now.
### Testing your changes
You need to run `npm run build` in the `ionic-native` project, this will create a `dist` directory. Then, you must go to your ionic application folder and replace your current `node_modules/ionic-native/dist/` with the newly generated one.
You need to run `npm run build` in the `ionic-native` project, this will create a `dist` directory. The `dist` directory will contain a sub directory `@ionic-native` with all the packages compiled in there. Copy the package(s) you created/modified to your app's node_modules under the `@ionic-native` directory. (e.g. `cp -r dist/@ionic-native/plugin-name ../my-app/node_modules/@ionic-native/`).
### Cleaning the code
@@ -147,4 +148,65 @@ 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
* 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.
#### 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
- **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
- **callbackOrder**: set to `reverse` if the success and error callbacks are the first two arguements of the method
- **callbackStyle**: set to `node` if the plugin has one callback with a node style (e.g: `function(err, result){}`), or set to `object` if the callbacks are part of an object
- **successName**: Success function property name. This must be set if callbackStyle is set to object.
- **errorName**: Error function property name. This must be set if callbackStyle is set to object.
- **successIndex**: Set a custom index for the success callback function. This doesn't work if callbackOrder or callbackStyle are set.
- **errorIndex**: Set a custom index for the error callback function. This doesn't work if callbackOrder or callbackStyle are set.
- **eventObservable**: set to true to return an observable that wraps an event listener
- **event**: Event name, this must be set if eventObservable is set to true
- **element**: Element to attach the event listener to, this is optional, defaults to `window`
- **otherPromise**: Set to true if the wrapped method returns a promise
- **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; }
@Cordova({ sync: true })
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:
- **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> {
// anything here will only run if the plugin is available
}
```

View File

@@ -1,8 +1,5 @@
[![Circle CI](https://circleci.com/gh/driftyco/ionic-native.svg?style=shield)](https://circleci.com/gh/driftyco/ionic-native) [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)
[![npm](https://img.shields.io/npm/l/express.svg)](https://www.npmjs.com/package/ionic-native)
[![Circle CI](https://circleci.com/gh/driftyco/ionic-native.svg?style=shield)](https://circleci.com/gh/driftyco/ionic-native) [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) ![](https://img.shields.io/npm/v/@ionic-native/core.svg)
[![NPM](https://nodei.co/npm/ionic-native.png?stars&downloads)](https://nodei.co/npm/ionic-native/)
[![NPM](https://nodei.co/npm-dl/ionic-native.png?months=6&height=2)](https://nodei.co/npm/ionic-native/)
# Ionic Native
@@ -17,11 +14,11 @@ Run following command to install Ionic Native in your project.
npm install @ionic-native/core --save
```
You also need to install the Ionic Native package for each plugin you want to add. Please see the [Ionic Native documentation](http://ionicframework.com/docs/v2/native/) for complete instructions on how to add and use the plugins.
You also need to install the Ionic Native package for each plugin you want to add. Please see the [Ionic Native documentation](http://ionicframework.com/docs/native/) for complete instructions on how to add and use the plugins.
## Documentation
For the full Ionic Native documentation, please visit [http://ionicframework.com/docs/v2/native/](http://ionicframework.com/docs/v2/native/).
For the full Ionic Native documentation, please visit [http://ionicframework.com/docs/native/](http://ionicframework.com/docs/native/).
### Basic Usage
@@ -43,11 +40,10 @@ import { Camera } from '@ionic-native/camera';
]
...
})
```
```
export class AppModule { }
```
```typescript
import { Geolocation } from '@ionic-native/geolocation';
import { Platform } from 'ionic-angular';

View File

@@ -1,26 +1,38 @@
machine:
node:
version: 5.5.0
ruby:
version: 2.1.2
general:
branches:
only:
- master # ignore PRs and branches
dependencies:
pre:
- ./scripts/docs/prepare.sh
cache_directories:
- "~/ionic-site" # cache ionic-site
test:
override:
- echo "No tests to run"
deployment:
staging:
branch: master
commands:
- ./scripts/docs/update_docs.sh
version: 2
jobs:
build:
working_directory: ~/ionic-native/
docker:
- image: node:7
steps:
- checkout
- restore_cache:
key: ionic-site
- run:
name: Prepare ionic-site repo
command: ./scripts/docs/prepare.sh
- save_cache:
key: ionic-site
paths:
- ~/ionic-site/
- restore_cache:
key: node_modules_{{ checksum "package.json" }}
- run:
name: Install node modules
command: npm i
- save_cache:
key: node_modules_{{ checksum "package.json" }}
paths:
- ~/ionic-native/node_modules/
- run:
name: Run tslint
command: npm run lint
- add_ssh_keys
- deploy:
name: Update docs
command: |
if [ "${CIRCLE_BRANCH}" == "master" ]; then
./scripts/docs/update_docs.sh
else
echo "We are on ${CIRCLE_BRANCH} branch, not going to update docs."
fi

View File

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

View File

@@ -1,12 +1,12 @@
{
"name": "ionic-native",
"version": "3.1.1",
"version": "3.6.0",
"description": "Native plugin wrappers for Cordova and Ionic with TypeScript, ES6+, Promise and Observable support",
"license": "MIT",
"devDependencies": {
"@angular/compiler": "2.4.8",
"@angular/compiler-cli": "2.4.8",
"@angular/core": "2.4.8",
"@angular/compiler": "4.0.0",
"@angular/compiler-cli": "4.0.0",
"@angular/core": "4.0.0",
"canonical-path": "0.0.2",
"child-process-promise": "2.2.0",
"conventional-changelog-cli": "1.2.0",
@@ -27,12 +27,12 @@
"q": "1.4.1",
"queue": "4.2.1",
"rimraf": "2.5.4",
"rxjs": "5.0.1",
"rxjs": "5.1.1",
"semver": "5.3.0",
"tslint": "3.15.1",
"tslint-ionic-rules": "0.0.7",
"typescript": "2.0.09",
"zone.js": "0.7.2"
"typescript": "2.2.1",
"zone.js": "^0.8.4"
},
"scripts": {
"start": "npm run test:watch",
@@ -40,10 +40,11 @@
"build": "npm run clean && npm run lint && npm run build:core && npm run build:modules",
"build:core": "ngc -p scripts/build/tsconfig-core.json",
"build:modules": "node scripts/build/build.js",
"clean": "rimraf dist",
"clean": "rimraf dist .tmp",
"shipit": "npm run build && gulp readmes && npm run npmpub",
"npmpub": "node scripts/build/publish.js",
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0"
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
"postchangelog": "git commit -am \"chore(): update changelog\""
},
"config": {
"commitizen": {

View File

@@ -12,14 +12,14 @@ const ROOT = path.resolve(path.join(__dirname, '../../')), // root ionic-native
PLUGIN_PACKAGE_JSON = require(path.resolve(__dirname, 'plugin-package.json')), // plugin package.json template
PLUGIN_TS_CONFIG = require(path.resolve(__dirname, 'tsconfig-plugin.json')), // plugin tsconfig template
BUILD_TMP = path.resolve(ROOT, '.tmp'), // tmp directory path
BUILD_DIST_ROOT = path.resolve(ROOT, 'dist/packages-dist/@ionic-native'), // dist directory root path
BUILD_PLUGINS_DIST = path.resolve(BUILD_DIST_ROOT, 'plugins'), // plugins dist directory path
BUILD_DIST_ROOT = path.resolve(ROOT, 'dist/@ionic-native'), // dist directory root path
BUILD_CORE_DIST = path.resolve(BUILD_DIST_ROOT, 'core'); // core dist directory path
// dependency versions
const ANGULAR_VERSION = '2.4.8',
RXJS_VERSION = '5.0.1',
const ANGULAR_VERSION = '*',
RXJS_VERSION = '^5.0.1',
MIN_CORE_VERSION = '^3.1.0',
IONIC_NATIVE_VERSION = require(path.resolve(ROOT, 'package.json')).version;
// package dependencies
@@ -28,7 +28,7 @@ const CORE_PEER_DEPS = {
};
const PLUGIN_PEER_DEPS = {
'@ionic-native/core': IONIC_NATIVE_VERSION,
'@ionic-native/core': MIN_CORE_VERSION,
'@angular/core': ANGULAR_VERSION,
'rxjs': RXJS_VERSION
};
@@ -36,18 +36,10 @@ const PLUGIN_PEER_DEPS = {
// set peer dependencies for all plugins
PLUGIN_PACKAGE_JSON.peerDependencies = PLUGIN_PEER_DEPS;
// Delete dist directory and any temporary files
console.log('Removing old TMP directory');
fs.removeSync(BUILD_TMP);
fs.removeSync(BUILD_PLUGINS_DIST);
// Create tmp/dist directories
console.log('Making new TMP directory');
fs.mkdirpSync(BUILD_TMP);
// Prepare and copy the core module's package.json
console.log('Preparing core module package.json');
CORE_PACKAGE_JSON.version = IONIC_NATIVE_VERSION;
@@ -58,6 +50,11 @@ fs.writeJsonSync(path.resolve(BUILD_CORE_DIST, 'package.json'), CORE_PACKAGE_JSO
// Fetch a list of the plugins
const PLUGINS = fs.readdirSync(PLUGINS_PATH);
// Build specific list of plugins to build from arguments, if any
let pluginsToBuild = process.argv.slice(2);
if (!pluginsToBuild.length) {
pluginsToBuild = PLUGINS;
}
// Create a queue to process tasks
const QUEUE = queue({
@@ -78,7 +75,7 @@ const addPluginToQueue = pluginName => {
let tsConfigPath;
fs.mkdirpAsync(PLUGIN_BUILD_DIR) // create tmp build dir
.then(() => fs.mkdirpAsync(path.resolve(BUILD_PLUGINS_DIST, pluginName))) // create dist dir
.then(() => fs.mkdirpAsync(path.resolve(BUILD_DIST_ROOT, pluginName))) // create dist dir
.then(() => {
// Write tsconfig.json
@@ -97,7 +94,7 @@ const addPluginToQueue = pluginName => {
packageJson.name = `@ionic-native/${pluginName}`;
packageJson.version = IONIC_NATIVE_VERSION;
return fs.writeJsonAsync(path.resolve(BUILD_PLUGINS_DIST, pluginName, 'package.json'), packageJson);
return fs.writeJsonAsync(path.resolve(BUILD_DIST_ROOT, pluginName, 'package.json'), packageJson);
})
.then(() => {
@@ -123,7 +120,7 @@ const addPluginToQueue = pluginName => {
};
PLUGINS.forEach(addPluginToQueue);
pluginsToBuild.forEach(addPluginToQueue);
QUEUE.start((err) => {

View File

@@ -7,51 +7,52 @@ const fs = require('fs-extra-promise').useFs(require('fs-extra')),
const ROOT = path.resolve(path.join(__dirname, '../../')),
DIST = path.resolve(ROOT, 'dist', 'packages-dist', '@ionic-native'),
PLUGINS_ROOT = path.resolve(DIST, 'plugins'),
CORE = path.resolve(DIST, 'core');
DIST = path.resolve(ROOT, 'dist', '@ionic-native');
const FLAGS = '--access public'; // add any flags here if you want... (example: --tag alpha)
console.log('Publishing @ionic-native/core');
exec(`npm publish ${CORE} ${FLAGS}`)
.then(() => {
const PACKAGES = fs.readdirSync(DIST);
const PLUGINS = fs.readdirSync(PLUGINS_ROOT);
const failedPackages = [];
const QUEUE = queue({
concurrency: 10
});
const QUEUE = queue({
concurrency: 10
});
PLUGINS.forEach(pluginName => {
PACKAGES.forEach(packageName => {
QUEUE.push(done => {
console.log(`Publishing plugin ${pluginName}`);
const pluginPath = path.resolve(PLUGINS_ROOT, pluginName);
exec(`npm publish ${pluginPath} ${FLAGS}`)
.then(() => done())
.catch(done);
QUEUE.push(done => {
console.log(`Publishing @ionic-native/${packageName}`);
const packagePath = path.resolve(DIST, packageName);
exec(`npm publish ${packagePath} ${FLAGS}`)
.then(() => done())
.catch((e) => {
if (e.stderr && e.stderr.indexOf('previously published version') === -1) {
failedPackages.push({
cmd: e.cmd,
stderr: e.stderr
});
}
done();
});
});
QUEUE.start((err) => {
if (err) {
console.log('Error publishing ionic-native. ', err);
} else {
console.log('Done publishing ionic-native!');
}
});
})
.catch(e => {
console.log('Publish failed');
console.log(e);
});
});
QUEUE.start((err) => {
if (err) {
console.log('Error publishing ionic-native. ', err);
} else if (failedPackages.length > 0) {
console.log(`${failedPackages.length} packages failed to publish.`);
console.log(failedPackages);
} else {
console.log('Done publishing ionic-native!');
}
});

View File

@@ -7,11 +7,13 @@
"emitDecoratorMetadata": true,
"module": "es2015",
"moduleResolution": "node",
"outDir": "../../dist/packages-dist/",
"outDir": "../../dist/",
"rootDir": "../../src/",
"target": "es5",
"skipLibCheck": true,
"lib": ["es2015", "dom"]
"lib": ["es2015", "dom"],
"sourceMap": true,
"inlineSources": true
},
"files": [
"../../src/@ionic-native/core/index.ts"

View File

@@ -7,16 +7,16 @@
"emitDecoratorMetadata": true,
"module": "es2015",
"moduleResolution": "node",
"outDir": "../../../dist/packages-dist/",
"outDir": "../../../dist/@ionic-native/",
"paths": {
"@ionic-native/core": ["../../../dist/packages-dist/@ionic-native/core"]
"@ionic-native/core": ["../../../dist/@ionic-native/core"]
},
"rootDir": "../../../src/",
"rootDir": "../../../src/@ionic-native/plugins/",
"target": "es5",
"skipLibCheck": true,
"lib": ["es2015", "dom"]
"lib": ["es2015", "dom"],
"sourceMap": true,
"inlineSources": true
},
"files": [
"../../../src/@ionic-native/plugins/{{PLUGIN}}/index.ts"
]
"files": []
}

View File

@@ -1,6 +1,6 @@
{
"sitePath": "../ionic-site",
"v2DocsDir": "docs/v2/native",
"docsDest": "../ionic-site/content/docs/v2/native",
"pluginDir": "dist/packages-dist/@ionic-native/plugins"
"v2DocsDir": "docs/native",
"docsDest": "../ionic-site/content/docs/native",
"pluginDir": "dist/@ionic-native"
}

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,9 @@
module.exports = function(templateEngine) {
// add custom filters to nunjucks
templateEngine.filters.push(
require('../filters/capital'),
require('../filters/code'),
require('../filters/dump'),
require('../filters/dashify')
);
};

View File

@@ -1,182 +1,79 @@
var Package = require('dgeni').Package;
var jsdocPackage = require('dgeni-packages/jsdoc');
var nunjucksPackage = require('dgeni-packages/nunjucks');
var typescriptPackage = require('dgeni-packages/typescript');
var linksPackage = require('dgeni-packages/links');
var path = require('path');
var semver = require('semver');
var fs = require('fs');
var _ = require('lodash');
var config = require('../config.json');
var projectPackage = require('../../package.json');
"use strict";
const Package = require('dgeni').Package,
jsdocPackage = require('dgeni-packages/jsdoc'),
nunjucksPackage = require('dgeni-packages/nunjucks'),
typescriptPackage = require('dgeni-packages/typescript'),
linksPackage = require('dgeni-packages/links'),
path = require('path'),
config = require('../config.json');
// Define the dgeni package for generating the docs
module.exports = function(currentVersion) {
module.exports = currentVersion => {
return new Package('ionic-v2-docs', [jsdocPackage, nunjucksPackage, typescriptPackage, linksPackage])
return new Package('ionic-native-docs', [jsdocPackage, nunjucksPackage, typescriptPackage, linksPackage])
// .processor(require('./processors/latest-version'))
.processor(require('./processors/jekyll'))
.processor(require('./processors/remove-private-members'))
.processor(require('./processors/hide-private-api'))
.processor(require('./processors/collect-inputs-outputs'))
.processor(require('./processors/npm-id'))
.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'))
// for debugging docs
// .processor(function test(){
// return {
//
// $runBefore: ['rendering-docs'],
// $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.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')
// // {
// // var x = exports[p];
// // console.log(x.members.quality);
// // }
// // }
// // doc.members.forEach(function(method){
// // if (method.name === "getPicture") {
// // console.log(method);
// // }
// // })
// }
// })
// }
// }
// })
.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(log) {
log.level = 'error'; //'silly', 'debug', 'info', 'warn', 'error'
})
.config(function(renderDocsProcessor, computePathsProcessor) {
.config(function(renderDocsProcessor, computePathsProcessor) {
currentVersion = {
href: '/' + config.v2DocsDir.replace('content/', ''),
folder: '',
name: currentVersion
};
versions = [];
// new version, add it to the versions list
if (currentVersion != 'nightly' && !_.includes(versions, currentVersion)) {
versions.unshift(currentVersion);
}
//First semver valid version is latest
var latestVersion = _.find(versions, semver.valid);
versions = versions.map(function(version) {
// We don't separate by versions so always put the docs in the root
var folder = '';
return {
href: '/' + config.v2DocsDir.replace('content/',''),
folder: folder,
name: version
};
});
renderDocsProcessor.extraData.version = {
list: [currentVersion],
current: currentVersion,
latest: currentVersion
};
var versionData = {
list: versions,
current: _.find(versions, {name: currentVersion}),
latest: _.find(versions, {name: latestVersion}) || _.first(versions)
};
computePathsProcessor.pathTemplates = [{
docTypes: ['class'],
getOutputPath: doc => 'content/' + config.v2DocsDir + '/' + doc.name + '/index.md'
}];
renderDocsProcessor.extraData.version = versionData;
computePathsProcessor.pathTemplates = [{
docTypes: ['class', 'var', 'function', 'let'],
getOutputPath: function(doc) {
var docPath = doc.name + '/index.md';
var path = 'content/' + config.v2DocsDir + '/' + docPath;
})
return path;
}
}];
})
//configure file reading
.config(function(readFilesProcessor, readTypeScriptModules) {
//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, '../..');
// 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'
];
})
readTypeScriptModules.basePath = path.resolve(__dirname, '../..');
readTypeScriptModules.sourceFiles = [
'./src/@ionic-native/plugins/**/*.ts'
];
})
// Configure file writing
.config(function(writeFilesProcessor) {
writeFilesProcessor.outputFolder = '../ionic-site/';
})
.config(function(parseTagsProcessor) {
parseTagsProcessor.tagDefinitions = parseTagsProcessor.tagDefinitions
.concat(require('./tag-defs/tag-defs'));
})
// Configure rendering
.config(function(templateFinder) {
// .config(function(parseTagsProcessor) {
// // We actually don't want to parse param docs in this package as we are
// // getting the data out using TS
// parseTagsProcessor.tagDefinitions.forEach(function(tagDef) {
// console.log(tagDef);
// if (tagDef.name === 'param') {
// tagDef.docProperty = 'paramData';
// tagDef.transforms = [];
// }
// });
// })
templateFinder.templateFolders.unshift(path.resolve(__dirname, 'templates'));
// Configure links
.config(function(getLinkInfo) {
getLinkInfo.useFirstAmbiguousLink = false;
})
// Configure file writing
.config(function(writeFilesProcessor) {
writeFilesProcessor.outputFolder = '../ionic-site/';
})
// Configure rendering
.config(function(templateFinder, templateEngine) {
// Nunjucks and Angular conflict in their template bindings so change the Nunjucks
// Also conflict with Jekyll
templateEngine.config.tags = {
variableStart: '<$',
variableEnd: '$>',
blockStart: '<@',
blockEnd: '@>',
commentStart: '<#',
commentEnd: '#>'
};
// add custom filters to nunjucks
templateEngine.filters.push(
require('./filters/capital'),
require('./filters/code'),
require('./filters/dump'),
require('./filters/dashify')
);
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'
];
});
// Specify how to match docs to templates.
templateFinder.templatePatterns = [
'${ doc.template }',
'${ doc.docType }.template.html',
'common.template.html'
];
});
};

View File

@@ -1,178 +1,76 @@
var Package = require('dgeni').Package;
var jsdocPackage = require('dgeni-packages/jsdoc');
var nunjucksPackage = require('dgeni-packages/nunjucks');
var typescriptPackage = require('dgeni-packages/typescript');
var linksPackage = require('dgeni-packages/links');
var path = require('path');
var semver = require('semver');
var fs = require('fs');
var _ = require('lodash');
var config = require('../config.json');
var projectPackage = require('../../package.json');
"use strict";
const Package = require('dgeni').Package,
jsdocPackage = require('dgeni-packages/jsdoc'),
nunjucksPackage = require('dgeni-packages/nunjucks'),
typescriptPackage = require('dgeni-packages/typescript'),
linksPackage = require('dgeni-packages/links'),
path = require('path'),
config = require('../config.json');
// jscs:disable validateIndentation
module.exports = currentVersion => {
// Define the dgeni package for generating the docs
module.exports = function(currentVersion) {
return new Package('ionic-native-readmes', [jsdocPackage, nunjucksPackage, typescriptPackage, linksPackage])
return new Package('ionic-v2-docs', [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/latest-version'))
.processor(require('./processors/readmes'))
.processor(require('./processors/npm-id'))
.processor(require('./processors/remove-private-members'))
.processor(require('./processors/hide-private-api'))
// .processor(require('./processors/collect-inputs-outputs'))
.config(require('./configs/log'))
.config(require('./configs/template-filters'))
.config(require('./configs/template-tags'))
.config(require('./configs/tag-defs'))
.config(require('./configs/links'))
// for debugging docs
// .processor(function test(){
// return {
//
// $runBefore: ['rendering-docs'],
// $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.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')
// // {
// // var x = exports[p];
// // console.log(x.members.quality);
// // }
// // }
// // doc.members.forEach(function(method){
// // if (method.name === "getPicture") {
// // console.log(method);
// // }
// // })
// }
// })
// }
// }
// })
.config(function(log) {
log.level = 'error'; //'silly', 'debug', 'info', 'warn', 'error'
})
.config(function(renderDocsProcessor, computePathsProcessor) {
.config(function(renderDocsProcessor, computePathsProcessor) {
versions = [];
// new version, add it to the versions list
if (currentVersion != 'nightly' && !_.includes(versions, currentVersion)) {
versions.unshift(currentVersion);
}
//First semver valid version is latest
var latestVersion = _.find(versions, semver.valid);
versions = versions.map(function(version) {
// We don't separate by versions so always put the docs in the root
var folder = '';
return {
href: '/' + config.v2DocsDir.replace('content/', ''),
folder: folder,
name: version
};
});
currentVersion = {
href: '/' + config.v2DocsDir.replace('content/', ''),
folder: '',
name: currentVersion
};
var versionData = {
list: versions,
current: _.find(versions, {name: currentVersion}),
latest: _.find(versions, {name: latestVersion}) || _.first(versions)
};
renderDocsProcessor.extraData.version = {
list: [currentVersion],
current: currentVersion,
latest: currentVersion
};
renderDocsProcessor.extraData.version = versionData;
computePathsProcessor.pathTemplates = [{
docTypes: ['class'],
getOutputPath: function(doc) {
return doc.originalModule.replace(config.pluginDir + '/', '')
.replace('/index', '') + '/README.md';
}
}];
})
computePathsProcessor.pathTemplates = [{
docTypes: ['class'],
getOutputPath: doc => doc.originalModule.replace(config.pluginDir + '/', '')
.replace('/plugins', '')
.replace('/index', '/README.md')
}];
//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, '../..');
//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'];
})
readTypeScriptModules.basePath = path.resolve(path.resolve(__dirname, '../..'));
readTypeScriptModules.sourceFiles = ['./src/@ionic-native/plugins/**/*.ts'];
})
.config(function(parseTagsProcessor) {
parseTagsProcessor.tagDefinitions = parseTagsProcessor.tagDefinitions
.concat(require('./tag-defs/tag-defs'));
})
// Configure file writing
.config(function(writeFilesProcessor) {
writeFilesProcessor.outputFolder = './dist/';
})
// .config(function(parseTagsProcessor) {
// // We actually don't want to parse param docs in this package as we are
// // getting the data out using TS
// parseTagsProcessor.tagDefinitions.forEach(function(tagDef) {
// console.log(tagDef);
// if (tagDef.name === 'param') {
// tagDef.docProperty = 'paramData';
// tagDef.transforms = [];
// }
// });
// })
// Configure rendering
.config(function(templateFinder) {
templateFinder.templateFolders.unshift(path.resolve(__dirname, 'templates'));
// Configure links
.config(function(getLinkInfo) {
getLinkInfo.useFirstAmbiguousLink = false;
})
// Configure file writing
.config(function(writeFilesProcessor) {
writeFilesProcessor.outputFolder = './dist/packages-dist/';
})
// Configure rendering
.config(function(templateFinder, templateEngine) {
// Nunjucks and Angular conflict in their template bindings so change the Nunjucks
// Also conflict with Jekyll
templateEngine.config.tags = {
variableStart: '<$',
variableEnd: '$>',
blockStart: '<@',
blockEnd: '@>',
commentStart: '<#',
commentEnd: '#>'
};
// add custom filters to nunjucks
templateEngine.filters.push(
require('./filters/capital'),
require('./filters/code'),
require('./filters/dump')
);
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'
];
});
// Specify how to match docs to templates.
templateFinder.templatePatterns = [
'${ doc.template }',
'${ doc.docType }.template.md',
'readme.template.md'
];
});
};

View File

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

View File

@@ -1,4 +1,5 @@
var encoder = new require('node-html-encoder').Encoder();
"use strict";
const encoder = new require('node-html-encoder').Encoder();
function code(str, inline, lang) {
// Encode any HTML entities in the code string
@@ -10,16 +11,14 @@ function code(str, inline, lang) {
str = '<code' + lang + '>' + str + '</code>';
// If not inline then wrap the code element in a pre element
if ( !inline ) {
if (!inline) {
str = '<pre>' + str + '</pre>';
}
return str;
};
}
module.exports = {
name: 'code',
process: function(str, lang) {
return code(str, true, lang);
}
process: (str, lang) => code(str, true, lang)
};

View File

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

View File

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

View File

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

View File

@@ -30,7 +30,7 @@ function run {
git pull origin master
fi
git rm -rf content/docs/v2/native/*/ || true
git rm -rf content/docs/native/*/ || true
}

View File

@@ -1,71 +0,0 @@
module.exports = function collectInputsOutputs() {
return {
$runBefore: ['rendering-docs'],
$process: function(docs) {
docs.forEach(function(doc) {
if (doc.statics && doc.statics.length) {
for (var i in doc.statics) {
// identify properties to differentiate from methods
if (typeof doc.statics[i].parameters == 'undefined') {
doc.statics[i].isProperty = true;
}
}
}
if (doc.members && doc.members.length) {
var members = [];
var inputs = [];
var outputs = [];
memberLoop:
for (var i in doc.members) {
// identify properties to differentiate from methods
if (typeof doc.members[i].parameters == 'undefined') {
doc.members[i].isProperty = true;
}
if (doc.members[i].decorators && doc.members[i].decorators.length) {
decoratorLoop:
for (var ii in doc.members[i].decorators) {
if (doc.members[i].decorators[ii].name == 'Input') {
inputs.push(parseMember(doc.members[i]));
continue memberLoop;
}
if (doc.members[i].decorators[ii].name == 'Output') {
outputs.push(parseMember(doc.members[i]));
continue memberLoop;
}
}
// not an input or output, must be a plain member
members.push(doc.members[i]);
} else {
members.push(doc.members[i]);
};
}
// update doc with pruned members list and add inputs and outputs
doc.members = members;
doc.inputs = inputs;
doc.outputs = outputs;
}
function parseMember(member) {
member.type = member.content.substring(
member.content.indexOf('{') + 1,
member.content.indexOf('}')
);
member.description = member.content.substring(
member.content.indexOf('}') + 1,
member.content.length
);
return member;
}
});
}
};
};

View File

@@ -0,0 +1,43 @@
"use strict";
module.exports = function test(){
return {
name: 'debug',
$runBefore: ['rendering-docs'],
$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.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')
{
var x = exports[p];
console.log(x.members.quality);
}
}
doc.members.forEach(function(method){
if (method.name === "getPicture") {
console.log(method);
}
})
}
})
}
}
}

View File

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

View File

@@ -1,38 +1,37 @@
"use strict";
module.exports = function jekyll(renderDocsProcessor) {
return {
name: 'jekyll',
description: 'Create jekyll includes',
$runAfter: ['paths-computed'],
$runBefore: ['rendering-docs'],
$process: function(docs) {
var currentVersion = renderDocsProcessor.extraData.version.current.name;
$process: docs => {
// pretty up and sort the docs object for menu generation
docs = docs.filter(function(doc) {
return (!!doc.name && !!doc.outputPath) || doc.docType === 'index-page';
});
docs.sort(function(a, b) {
textA = a.name ? a.name.toUpperCase() : '';
textB = b.name ? b.name.toUpperCase() : '';
docs = docs.filter(doc => (!!doc.name && !!doc.outputPath) || doc.docType === 'index-page');
docs.sort((a, b) => {
const textA = a.name ? a.name.toUpperCase() : '',
textB = b.name ? b.name.toUpperCase() : '';
return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;
});
docs.forEach(function(doc, i) {
docs.forEach(doc => {
doc.outputPath = doc.outputPath.toLowerCase().replace(/\s/g, '-');
docs[i].URL = doc.outputPath.replace('docs/v2//', 'docs/v2/')
.replace('/index.md', '')
.replace('content/', '');
docs[i].demo = !!docs[i].demo;
doc.URL = doc.outputPath.replace('docs//', 'docs/')
.replace('/index.md', '')
.replace('content/', '');
});
// add side menu
docs.push({
docType: 'native_menu-menu',
id: 'native_menu-menu',
docType: 'nativeMenu',
id: 'native_menu',
template: 'native_menu.template.html',
outputPath: 'content/_includes/v2_fluid/native_menu.html'
outputPath: 'content/_includes/fluid/native_menu.html'
});
// returning docs will replace docs object in the next process
return docs;
}
};

View File

@@ -1,33 +0,0 @@
var copy = require('cpr').cpr;
var mkdirp = require('mkdirp');
var path = require('canonical-path');
var q = require('q');
var fs = require('fs');
module.exports = function latestVersion(renderDocsProcessor) {
return {
name: 'latest-version',
$runAfter: ['files-written'],
description: 'Copy the latest version (that was compiled to docs/) into docs/versionName',
$process: function(docs) {
var versionData = renderDocsProcessor.extraData.version;
var docsBase = 'dist/ionic-site/content/docs/v2/';
var versionDir = path.resolve(docsBase, versionData.latest.name);
var latestDir = path.resolve(docsBase, 'api');
var deferred = q.defer();
mkdirp(versionDir, function() {
copy(latestDir, path.join(versionDir, 'api'), {
deleteFirst: true,
overwrite: true
}, function(err, files) {
deferred.resolve(docs);
});
});
return deferred.promise;
}
}
};

View File

@@ -0,0 +1,15 @@
"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;
}
}
return doc;
})
}
};

View File

@@ -1,24 +1,19 @@
"use strict";
module.exports = function npmId(renderDocsProcessor) {
return {
name: 'npm-id',
$runAfter: ['paths-computed'],
$runBefore: ['rendering-docs'],
$process: function(docs) {
var currentVersion = renderDocsProcessor.extraData.version.current.name;
$process: docs => {
// pretty up and sort the docs object for menu generation
docs = docs.filter(function(doc) {
return (!!doc.name && !!doc.outputPath) || doc.docType === 'index-page';
});
docs.forEach(function(doc, i) {
doc.npmId = doc.outputPath.replace('/README.md', '') // for readmes
.replace('@ionic-native/plugins/','') // for readmes
.replace('content/docs/v2/native/', '') // for docs
.replace('/index.md', ''); // for docs
docs.forEach(doc => {
doc.npmId = doc.id.match(/plugins\/(.*)\/index/)[1];
});
// returning docs will replace docs object in the next process
return docs;
}
};

View File

@@ -0,0 +1,22 @@
"use strict";
module.exports = function parseOptional() {
return {
$runBefore: ['rendering-docs'],
$process: docs => {
docs.forEach(doc => {
if (doc.members && doc.members.length) {
for (let i in doc.members) {
if (doc.members[i].params && doc.members[i].params.length) {
for (let ii in doc.members[i].params) {
if (doc.members[i].params[ii].optional) {
doc.members[i].params[ii].description += '<strong class="tag">Optional</strong>';
}
}
}
}
}
});
return docs;
}
}
};

View File

@@ -1,22 +1,18 @@
"use strict";
module.exports = function readmes(renderDocsProcessor) {
return {
name: 'readmes',
description: 'Create jekyll includes',
$runAfter: ['paths-computed'],
$runBefore: ['rendering-docs'],
$process: function(docs) {
var currentVersion = renderDocsProcessor.extraData.version.current.name;
$process: docs => {
// pretty up and sort the docs object for menu generation
docs = docs.filter(function(doc) {
return (!!doc.name && !!doc.outputPath) || doc.docType === 'index-page';
});
docs = docs.filter(doc => (!!doc.name && !!doc.outputPath) || doc.docType === 'index-page');
docs.forEach(function(doc, i) {
docs.forEach(doc => {
doc.outputPath = doc.outputPath.replace('src/', '');
});
// returning docs will replace docs object in the next process
return docs;
}
};

View File

@@ -1,22 +1,19 @@
"use strict";
module.exports = function removePrivateMembers() {
return {
name: 'remove-private-members',
description: 'Remove member docs with @private tags',
$runAfter: ['tags-parsed'],
$runBefore: ['rendering-docs'],
$process: function(docs) {
docs.forEach(function(doc) {
$process: docs => {
docs.forEach(doc => {
if (doc.members) {
doc.members = doc.members.filter(function(member) {
return !member.tags.tagsByName.get('hidden');
});
doc.members = doc.members.filter(member => !member.tags.tagsByName.get('hidden'));
}
if (doc.statics) {
doc.statics = doc.statics.filter(function(staticMethod) {
return !staticMethod.tags.tagsByName.get('hidden');
});
doc.statics = doc.statics.filter(staticMethod => !staticMethod.tags.tagsByName.get('hidden'));
}
});

View File

@@ -1,10 +1,8 @@
"use strict";
module.exports = [
{'name': 'advanced'},
{'name': 'demo'},
{'name': 'beta', transforms: function(doc, tag, value) {
// make the value true or undefined instead of '' or undefined
return typeof value !== 'undefined';
}},
{'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

View File

@@ -1,5 +1,5 @@
---
layout: "v2_fluid/docs_base"
layout: "fluid/docs_base"
version: "<$ version.current.name $>"
versionHref: "<$ version.current.href.replace('content/','') $>"
path: "<$ doc.path $>"
@@ -11,7 +11,7 @@ doc: "<$ doc.name $>"
docType: "<$ doc.docType $>"
---
<@ macro interfaceTable(interface) @>
<@- macro interfaceTable(interface) -@>
<@ for export in doc.moduleDoc.exports -@>
<@ if export.name == interface @>
<table class="table param-table" style="margin:0;">
@@ -33,30 +33,21 @@ docType: "<$ doc.docType $>"
</td>
<td>
<$ param.description | marked $>
<@ if param.optional @><strong class="tag">Optional</strong><@ endif @>
<@ if param.optional @><em>(optional)</em><@ endif @>
</td>
</tr>
<@ endfor @>
</tbody>
</table>
<@ endif @>
<@- endfor @>
<@ endmacro @>
<@ macro paramList(paramData) -@>
<@- if paramData -@><span class="params">(
<@- for param in paramData -@>
<span class="param"><$ param | escape $><@ if not loop.last @>, <@ endif @></span>
<@- endfor @>)</span>
<@- endif @>
<@- endmacro -@>
<@ macro githubViewLink(doc) -@>
<@- macro githubViewLink(doc) -@>
<a href="https://github.com/driftyco/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) -@>
<@- macro paramTable(params, isDirective) -@>
<table class="table param-table" style="margin:0;">
<thead>
<tr>
@@ -66,140 +57,93 @@ docType: "<$ doc.docType $>"
</tr>
</thead>
<tbody>
<@ for param in params @>
<@- for param in params @>
<tr>
<td>
<$ param.name $>
<@ if param.alias @>| <$ param.alias $><@ endif @>
<@- if param.alias @>| <$ param.alias $><@ endif -@>
</td>
<td>
<$ typeList(param.typeList) $>
</td>
<td>
<$ param.description | marked $>
<@ if param.optional @><strong class="tag">Optional</strong><@ endif @>
<@ if param.defaultValue @><p><em>(default: <$ param.defaultValue $>)</em></p><@ endif @>
<@- if param.defaultValue @><p><em>(default: <$ param.defaultValue $>)</em></p><@ endif -@>
</td>
</tr>
<@ endfor @>
<@ 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 -@>
<@- if param.type.optional @>[<@- endif -@>
<$ param.name $>
<@- if param.type.optional @>]<@ endif -@>
<@ endfor @><@- if not fn.isProperty @>)<@ endif -@></code>
<@ if fn.alias @><small>(alias: <$ fn.alias $>)</small><@ endif @>
<@ endmacro -@>
<@- if param.type.optional -@>]<@- endif -@>
<@- endfor -@><@- if not fn.isProperty @>)<@- endif -@></code>
<@- endmacro -@>
<@ macro typeList(types) -@>
<@- macro typeList(types) -@>
<@ set separator = joiner("|") @>
<@ for type in types @><$ separator() $><$ type | code $><@ endfor @>
<@- for type in types @><$ separator() $><$ type | code $><@ endfor -@>
<@- endmacro -@>
<@- macro typeInfo(fn) -@>
<$ typeList(fn.typeList) $> <$ fn.description $>
<@- endmacro -@>
<@ macro documentClass(doc) @>
<@- if doc.statics.length -@>
<h2>Static Members</h2>
<@ for method in doc.statics -@>
<@ if not method.internal @>
<div id="<$ method.name $>"></div>
<h3><$ functionSyntax(method) $></h3>
<@- macro documentPlatforms(method) -@>
<@- if method.decorators @>
<@ for prop in method.decorators[0].argumentInfo @>
<@ if prop.platforms @>
<p>
<b>Platforms:</b>
<@- for platform in prop.platforms @>
<code><$ platform $></code>&nbsp;
<@ endfor -@>
<strong>Platforms:</strong>
<@- for platform in prop.platforms -@>
<strong class="tag"><$ platform $></strong>&nbsp;
<@- endfor -@>
</p>
<@ endif @>
<@ endfor @>
<@- endif @>
<@- endmacro -@>
<$ method.description $>
<@ if method.params @>
<$ paramTable(method.params) $>
<@ endif @>
<@ if method.this -@>
<h4> Method's `this`
<$ method.this $>
</h4>
<@- 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 @>
<@ endif @>
<@ endfor -@>
<@ endif @>
<!-- methods on the class -->
<@- if doc.members and doc.members.length @>
<h2>Instance Members</h2>
<@ for method in doc.members -@>
<div id="<$ method.name $>"></div>
<h3>
<$ functionSyntax(method) $>
</h3>
<@ 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.this -@>
<h4> Method's `this`
<$ method.this $>
</h4>
<@- 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 -@>
<h2>Static Members</h2>
<@ for method in doc.statics -@>
<$ documentMethod(method) $>
<@ endfor -@>
<@ endif @>
<# --- methods in class --- #>
<@- if doc.members and doc.members.length @>
<h2>Instance Members</h2>
<@ for method in doc.members -@>
<$ documentMethod(method) $>
<@- endfor @>
<@- endif -@>
<@ endmacro @>
<@ block body @>
<@ block content @>
<@ block header @>
<h1 class="api-title">
<@ if doc.docType == "directive" @>
<$ doc.name | dashCase $>
<@ else @>
<$ doc.name $>
<@ endif @>
<@ if doc.parent @>
<br />
<small>
Child of <$ doc.parent $>
</small>
<@ endif @>
<@ if doc.delegate @>
<br/>
<small>
Delegate: <$ doc.delegate $>
</small>
<@ endif @>
<h1 class="api-title"><$ doc.name $>
<@- if doc.beta == true -@>
<span class="beta" title="beta">&beta;</span>
<@- endif -@>
@@ -209,13 +153,9 @@ docType: "<$ doc.docType $>"
Improve this doc
</a>
<@ endblock @>
<!-- decorators -->
<# --- 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
@@ -224,7 +164,8 @@ docType: "<$ doc.docType $>"
</p>
<@ endif @>
<pre><code>$ <@ if prop.install @><$ prop.install $><@ else @>ionic plugin add <$ prop.plugin $><@ endif @>
<# --- Install commands --- #>
<pre><code class="nohighlight">$ <@ if prop.install @><$ prop.install $><@ else @>ionic plugin add --save <$ prop.plugin $><@ endif @>
$ npm install --save @ionic-native/<$ doc.npmId $>
</code></pre>
<p>Repo:
@@ -233,48 +174,34 @@ $ npm install --save @ionic-native/<$ doc.npmId $>
</a>
</p>
<!-- description -->
<@ block description @>
<# --- Plugin description --- #>
<$ doc.description | marked $>
<@ endblock @>
<@- if doc.directiveInfo @>
<h2><$ doc.directiveInfo.type $></h2>
<h3><$ doc.directiveInfo.properties[0].name $>: <code><$ doc.directiveInfo.properties[0].values $></code></h3>
<@ endif -@>
<# --- Plugin supported platforms --- #>
<@ if prop.platforms @>
<!-- @platforms tag -->
<h2>Supported platforms</h2>
<@ block platforms @>
<ul>
<@ for platform in prop.platforms -@>
<li><$ platform $></li>
<@- endfor @>
</ul>
<@ endblock @>
<!-- @platforms tag end -->
<@ endif @>
<@ endfor @>
<@ endif -@><!-- if doc.decorators -->
<@ endif -@> <# --- end of: if doc.decorators --- #>
<!-- @usage tag -->
<# --- Plugin usage --- #>
<@ if doc.usage @>
<h2>Usage</h2>
<@ block usage @>
<$ doc.usage | marked $>
<@ endblock @>
<@ endif @>
<!-- @property tags -->
<@ if doc.properties @>
<# --- Plugin attributes --- #>
<@- if doc.properties -@>
<h2>Attributes:</h2>
<table class="table" style="margin:0;">
<thead>
<tr>
<th>Attribute</th>
<@ set hasTypes = false @>
<@ for prop in doc.properties @>
<@ if prop.type @>
@@ -284,12 +211,11 @@ $ npm install --save @ionic-native/<$ doc.npmId $>
<@ if hasTypes @>
<th>Type</th>
<@ endif @>
<th>Description</th>
</tr>
</thead>
<tbody>
<@ for prop in doc.properties -@>
<@- for prop in doc.properties -@>
<tr>
<td>
<$ prop.name $>
@@ -299,48 +225,44 @@ $ npm install --save @ionic-native/<$ doc.npmId $>
<$ prop.type.name $>
</td>
<@ endif @>
<td>
<$ prop.description $>
</td>
</tr>
<@- endfor @>
<@ endfor -@>
</tbody>
</table>
<@ endif @>
<@- endif -@>
<# --- Plugin class documentation --- #>
<$ documentClass(doc) $>
<@ block advanced @>
<# --- Advanced usage --- #>
<@- if doc.advanced -@>
<h2><a class="anchor" name="advanced" href="#advanced"></a>Advanced</h2>
<$ doc.advanced | marked $>
<@- endif -@>
<@ endblock @>
<!-- other classes -->
<@ for tag in doc.tags.tags -@>
<@ if tag.tagName == 'classes' -@>
<!--<h2><a class="anchor" name="related-classes" href="#related-classes"></a>Related Classes</h2>-->
<@ set classes = tag.description.split('\n') @>
<@ for item in classes -@>
<@ if item.length > 1 @>
<@ for export in doc.moduleDoc.exports -@>
<@ if export.name == item @>
<# --- 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 @>
<!-- end other classes -->
<@- endif -@>
<@- endfor -@>
<@- endif -@>
<@- endfor -@>
<@- endif -@>
<@- endfor -@>
<!-- interfaces -->
<# --- Other interfaces --- #>
<@ for tag in doc.tags.tags -@>
<@ if tag.tagName == 'interfaces' @>
<!--<h2><a class="anchor" name="interfaces" href="#interfaces"></a>Interfaces</h2>-->
<@ set interfaces = tag.description.split('\n') @>
<@ for item in interfaces -@>
<@ if item.length > 1 @>
@@ -350,21 +272,12 @@ $ npm install --save @ionic-native/<$ doc.npmId $>
<@- endfor @>
<@ endif @>
<@- endfor @>
<!-- end interfaces -->
<!-- related link -->
<# --- Related links --- #>
<@- if doc.see @>
<h2>Related</h2>
<h2><a class="anchor" name="related" href="#related"></a>Related</h2>
<@ for s in doc.see @>
<$ s | safe $>
<@- endfor -@>
<@- endif -@>
<!-- end content block -->
<@ endblock @>
<!-- end body block -->
<@ endblock @>

View File

@@ -1,9 +1,14 @@
<@ for doc in docs @><@ if doc.URL and doc.private != true and doc.beta != true @>
<li class="capitalize {% if page.id == 'overview' %}active{% endif %}">
<a href="/docs/native/">Overview</a>
</li>
<li class="capitalize {% if page.id == 'mocking' %}active{% endif %}">
<a href="/docs/native/browser.html">Browser Usage</a>
</li>
<@- for doc in docs @><@ if doc.URL and doc.private != true and doc.beta != true @>
<li class="capitalize {% if page.id == '<$ doc.name|lower|dashify $>' %}active{% endif %}">
<a href="/<$ doc.URL $>"><$ doc.name $></a>
</li><@ endif @><@ endfor @>
<@ for doc in docs @><@ if doc.URL and doc.private != true and doc.beta == true @>
<@- for doc in docs @><@ if doc.URL and doc.private != true and doc.beta == true @>
<li class="capitalize {% if page.id == '<$ doc.name|lower|dashify $>' %}active{% endif %}">
<a href="/<$ doc.URL $>"><$ doc.name $> <span class="beta">&beta;</span></a>
</li><@ endif @><@ endfor @>

View File

@@ -20,7 +20,7 @@ $ <@ if prop.install @><$ prop.install $><@ else @>ionic plugin add <$ prop.plug
$ npm install --save @ionic-native/<$ doc.npmId $>
```
## [Usage Documentation](https://ionicframework.com/docs/v2/native/<$ doc.fileInfo.relativePath|replace('/home/ubuntu/ionic-native/', '')|replace('//','/')|replace('index.ts','')|replace('src/@ionic-native/plugins/','') $>)
## [Usage Documentation](https://ionicframework.com/docs/native/<$ doc.fileInfo.relativePath|replace('/home/ubuntu/ionic-native/', '')|replace('//','/')|replace('index.ts','')|replace('src/@ionic-native/plugins/','') $>)
Plugin Repo: [<$ prop.repo $>](<$ prop.repo $>)

View File

@@ -23,16 +23,18 @@ function run {
# CD in to the site dir to commit updated docs
cd $SITE_DIR
# Add all files to git
git add .
# if no changes, don't commit
CHANGED=$(git diff-index --name-only HEAD --)
if [ -z "$CHANGED" ];
CHANGED=$(git diff-index --name-only HEAD 2>/dev/null | wc -l)
if [ $CHANGED -eq 0 ];
then
echo "-- No changes detected for the following commit, docs not updated."
echo "https://github.com/driftyco/$CIRCLE_PROJECT_REPONAME/commit/$CIRCLE_SHA1"
else
git config --global user.email "hi@ionicframework.com"
git config --global user.name "Ionitron"
git add -A
git commit -am "Automated build of native docs driftyco/$CIRCLE_PROJECT_REPONAME@$CIRCLE_SHA1"
# in case a different commit was pushed to ionic-site during doc/demo gen,
# try to rebase around it before pushing

View File

@@ -1,24 +1,30 @@
import { Plugin } from '@ionic-native/core';
import { Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
* @name Plugin Name
* @name $Plugin_Name
* @description
*
* @usage
* ```
* import { PluginName } from 'ionic-native';
* import { $PluginName } from 'ionic-native';
*
*
* constructor(private $pluginName: $PluginName) { }
*
* ...
*
*
* ```
*/
@Plugin({
pluginName: 'PluginName',
pluginName: '$PluginName',
plugin: '',
pluginRef: '',
repo: ''
repo: '',
platforms: []
})
@Injectable()
export class PluginName {
export class $PluginName extends IonicNativePlugin {
}

View File

@@ -10,34 +10,41 @@
* - Remove this note
*
*/
import { Plugin, Cordova, CordovaProperty, CordovaInstance, InstanceProperty } from '@ionic-native/core';
import { Plugin, Cordova, CordovaProperty, CordovaInstance, InstanceProperty, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
/**
* @name Plugin Name
* @name $Plugin_Name
* @description
* This plugin does something
*
* @usage
* ```
* import { PluginName } from 'ionic-native';
* import { $PluginName } from 'ionic-native';
*
* PluginName.functionName('Hello', 123)
* .then((something: any) => doSomething(something))
* .catch((error: any) => console.log(error));
*
* constructor(private $pluginName: $PluginName) { }
*
* ...
*
*
* this.$pluginName.functionName('Hello', 123)
* .then((res: any) => console.log(res))
* .catch((error: any) => console.error(error));
*
* ```
*/
@Plugin({
pluginName: 'PluginName',
pluginName: '$PluginName',
plugin: '', // npm package name, example: cordova-plugin-camera
pluginRef: '', // the variable reference to call the plugin, example: navigator.geolocation
repo: '', // the github repository URL for the plugin
install: '' // OPTIONAL install command, in case the plugin requires variables
platforms: [], // Array of platforms supported, example: ['Android', 'iOS']
install: '', // OPTIONAL install command, in case the plugin requires variables
})
@Injectable()
export class PluginName {
export class $PluginName extends IonicNativePlugin {
/**
* This function does something

View File

@@ -1,6 +1,7 @@
import { instanceAvailability, checkAvailability, wrap, wrapInstance, overrideFunction } from './plugin';
import { getPlugin, getPromise } from './util';
import { Observable } from 'rxjs/Observable';
import 'rxjs/observable/throw';
export interface PluginConfig {
/**
@@ -145,15 +146,16 @@ export function CordovaCheck(opts: CordovaCheckOptions = {}) {
return (pluginObj: Object, methodName: string, descriptor: TypedPropertyDescriptor<any>): TypedPropertyDescriptor<any> => {
return {
value: function(...args: any[]): any {
if (checkAvailability(pluginObj) === true) {
const check = checkAvailability(pluginObj);
if (check === true) {
return descriptor.value.apply(this, args);
} else {
if (opts.sync) {
return;
return null;
} else if (opts.observable) {
return new Observable<any>(() => {});
return Observable.throw(new Error(check && check.error));
}
return getPromise(() => {});
return Promise.reject(check && check.error);
}
}
};
@@ -203,15 +205,19 @@ export function Plugin(config: PluginConfig) {
cls['getPluginName'] = function() {
return config.pluginName;
};
cls['getPluginRef'] = function() {
return config.pluginRef;
};
cls['getPluginInstallName'] = function() {
return config.plugin;
};
cls['getPluginRepo'] = function() {
return config.repo;
};
cls['getSupportedPlatforms'] = function() {
return config.platforms;
};
@@ -259,6 +265,7 @@ export function CordovaInstance(opts: any = {}) {
*/
export function CordovaProperty(target: any, key: string) {
Object.defineProperty(target, key, {
enumerable: true,
get: () => {
if (checkAvailability(target, key) === true) {
return getPlugin(target.constructor.getPluginRef())[key];
@@ -282,6 +289,7 @@ export function CordovaProperty(target: any, key: string) {
*/
export function InstanceProperty(target: any, key: string) {
Object.defineProperty(target, key, {
enumerable: true,
get: function(){
return this._objectInstance[key];
},

View File

@@ -1,3 +1,4 @@
export * from './plugin';
export * from './decorators';
export * from './util';
export * from './ionic-native-plugin';

View File

@@ -0,0 +1,41 @@
export class IonicNativePlugin {
static pluginName: string;
static pluginRef: string;
static plugin: string;
static repo: string;
static platforms: string[];
static install: string;
/**
* Returns a boolean that indicates whether the plugin is installed
* @return {boolean}
*/
static installed(): boolean { return false; }
/**
* Returns the original plugin object
*/
static getPlugin(): any {}
/**
* Returns the plugin's name
*/
static getPluginName(): string { return; }
/**
* Returns the plugin's reference
*/
static getPluginRef(): string { return; }
/**
* Returns the plugin's install name
*/
static getPluginInstallName(): string { return; }
}

View File

@@ -32,7 +32,7 @@ export function checkAvailability(plugin: any, methodName?: string, pluginName?:
pluginInstance = getPlugin(pluginRef);
if (!pluginInstance || (!!methodName && pluginInstance[methodName] === 'undefined')) {
if (!pluginInstance || (!!methodName && typeof pluginInstance[methodName] === 'undefined')) {
if (!window.cordova) {
cordovaWarn(pluginName, methodName);
return {
@@ -54,7 +54,7 @@ export function checkAvailability(plugin: any, methodName?: string, pluginName?:
* @private
*/
export function instanceAvailability(pluginObj: any, methodName?: string): boolean {
return pluginObj._objectInstance && (!methodName || pluginObj._objectInstance[methodName] !== 'undefined');
return pluginObj._objectInstance && (!methodName || typeof pluginObj._objectInstance[methodName] !== 'undefined');
}
function setIndex(args: any[], opts: any = {}, resolve?: Function, reject?: Function): any {
@@ -152,11 +152,16 @@ function wrapPromise(pluginObj: any, methodName: string, args: any[], opts: any
function wrapOtherPromise(pluginObj: any, methodName: string, args: any[], opts: any= {}) {
return getPromise((resolve, reject) => {
let pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts);
if (pluginResult && pluginResult.error) {
reject(pluginResult.error);
const pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts);
if (pluginResult) {
if (pluginResult.error) {
reject(pluginResult.error);
} else if (pluginResult.then) {
pluginResult.then(resolve).catch(reject);
}
} else {
reject({ error: 'unexpected_error' });
}
pluginResult.then(resolve).catch(reject);
});
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, CordovaProperty } from '@ionic-native/core';
import { Cordova, Plugin, CordovaProperty, IonicNativePlugin } from '@ionic-native/core';
export interface ActionSheetOptions {
@@ -13,6 +13,11 @@ export interface ActionSheetOptions {
*/
title?: string;
/**
* The subtitle for the actionsheet (IOS only)
*/
subtitle?: string;
/**
* Theme to be used on Android
*/
@@ -43,6 +48,10 @@ export interface ActionSheetOptions {
*/
position?: number[];
/**
* Choose if destructive button will be the last
*/
destructiveButtonLast: boolean;
}
/**
@@ -65,10 +74,12 @@ export interface ActionSheetOptions {
*
* const options: ActionSheetOptions = {
* title: 'What do you want with this image?',
* subtitle: 'Choose an action',
* buttonLabels: buttonLabels,
* addCancelButtonWithLabel: 'Cancel',
* addDestructiveButtonWithLabel: 'Delete',
* androidTheme: this.actionSheet.ANDROID_THEMES.THEME_HOLO_DARK
* androidTheme: this.actionSheet.ANDROID_THEMES.THEME_HOLO_DARK,
* destructiveButtonLast: true
* };
*
* this.actionSheet.show(options).then((buttonIndex: number) => {
@@ -83,10 +94,10 @@ export interface ActionSheetOptions {
plugin: 'cordova-plugin-actionsheet',
pluginRef: 'plugins.actionsheet',
repo: 'https://github.com/EddyVerbruggen/cordova-plugin-actionsheet',
platforms: ['Android', 'iOS', 'Windows Phone 8']
platforms: ['Android', 'iOS', 'Windows Phone 8', 'Browser']
})
@Injectable()
export class ActionSheet {
export class ActionSheet extends IonicNativePlugin {
@CordovaProperty
ANDROID_THEMES: {

View File

@@ -0,0 +1,292 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromEvent';
export interface AdMobFreeBannerConfig {
/**
* Ad Unit ID
*/
id?: string;
/**
* Receiving test ad
*/
isTesting?: boolean;
/**
* Auto show ad when loaded
*/
autoShow?: boolean;
/**
* Set to true, to put banner at top
*/
bannerAtTop?: boolean;
/**
* Set to true, to allow banner overlap WebView
*/
overlap?: boolean;
/**
* Set to true to avoid ios7 status bar overlap
*/
offsetTopBar?: boolean;
/**
* Banner size
*/
size?: string;
}
export interface AdMobFreeInterstitialConfig {
/**
* Ad Unit ID
*/
id?: string;
/**
* Receiving test ad
*/
isTesting?: boolean;
/**
* Auto show ad when loaded
*/
autoShow?: boolean;
}
export interface AdMobFreeRewardVideoConfig {
/**
* Ad Unit ID
*/
id?: string;
/**
* Receiving test ad
*/
isTesting?: boolean;
/**
* Auto show ad when loaded
*/
autoShow?: boolean;
}
/**
* @name AdMob Free
* @description
*
* @usage
* ```
* import { AdMobFree, AdMobFreeBannerConfig } from '@ionic-native/admob-free';
*
*
* constructor(private admobFree: AdMobFree) { }
*
*
* ...
*
*
* const bannerConfig: AdMobFreeBannerConfig = {
* // add your config here
* // for the sake of this example we will just use the test config
* isTesting: true,
* autoShow: true
* };
* this.admobFree.banner.config(bannerConfig);
*
* this.admobFree.banner.prepare()
* .then(() => {
* // banner Ad is ready
* // if we set autoShow to false, then we will need to call the show method here
* })
* .catch(e => console.log(e));
*
*
* ```
*/
@Plugin({
pluginName: 'AdMobFree',
plugin: 'cordova-plugin-admob-free',
pluginRef: 'admob',
repo: 'https://github.com/ratson/cordova-plugin-admob-free',
platforms: ['Android', 'iOS']
})
@Injectable()
export class AdMobFree extends IonicNativePlugin {
/**
* Convenience constructor to get event names
*/
events = {
BANNER_LOAD: 'admob.banner.events.LOAD',
BANNER_LOAD_FAIL: 'admob.banner.events.LOAD_FAIL',
BANNER_OPEN: 'admob.banner.events.OPEN',
BANNER_CLOSE: 'admob.banner.events.CLOSE',
BANNER_EXIT_APP: 'admob.banner.events.EXIT_APP',
INTERSTITIAL_LOAD: 'admob.interstitial.events.LOAD',
INTERSTITIAL_LOAD_FAIL: 'admob.interstitial.events.LOAD_FAIL',
INTERSTITIAL_OPEN: 'admob.interstitial.events.OPEN',
INTERSTITIAL_CLOSE: 'admob.interstitial.events.CLOSE',
INTERSTITIAL_EXIT_APP: 'admob.interstitial.events.EXIT_APP',
REWARD_VIDEO_LOAD: 'admob.rewardvideo.events.LOAD',
REWARD_VIDEO_LOAD_FAIL: 'admob.rewardvideo.events.LOAD_FAIL',
REWARD_VIDEO_OPEN: 'admob.rewardvideo.events.OPEN',
REWARD_VIDEO_CLOSE: 'admob.rewardvideo.events.CLOSE',
REWARD_VIDEO_EXIT_APP: 'admob.rewardvideo.events.EXIT_APP',
REWARD_VIDEO_START: 'admob.rewardvideo.events.START',
REWARD_VIDEO_REWARD: 'admob.rewardvideo.events.REWARD'
};
/**
* Watch an event
* @param event {string} event name
* @return {Observable<any>}
*/
on(event: string): Observable<any> {
return Observable.fromEvent(document, event);
}
/**
*
* @type {AdMobFreeBanner}
*/
banner: AdMobFreeBanner = new AdMobFreeBanner();
/**
*
* @type {AdMobFreeInterstitial}
*/
interstitial: AdMobFreeInterstitial = new AdMobFreeInterstitial();
/**
*
* @type {AdMobFreeRewardVideo}
*/
rewardVideo: AdMobFreeRewardVideo = new AdMobFreeRewardVideo();
}
/**
* @hidden
*/
@Plugin({
pluginName: 'AdMobFree',
plugin: 'cordova-plugin-admob-free',
pluginRef: 'admob.banner',
})
export class AdMobFreeBanner {
/**
* Update config.
* @param options
* @return {AdMobFreeBannerConfig}
*/
@Cordova({ sync: true })
config(options: AdMobFreeBannerConfig): AdMobFreeBannerConfig { return; }
/**
* Hide the banner.
* @return {Promise<any>}
*/
@Cordova({ sync: true })
hide(): Promise<any> { return; }
/**
* Create banner.
* @return {Promise<any>}
*/
@Cordova({ sync: true })
prepare(): Promise<any> { return; }
/**
* Remove the banner.
* @return {Promise<any>}
*/
@Cordova({ sync: true })
remove(): Promise<any> { return; }
/**
* Show the banner.
* @return {Promise<any>}
*/
@Cordova({ sync: true })
show(): Promise<any> { return; }
}
/**
* @hidden
*/
@Plugin({
pluginName: 'AdMobFree',
plugin: 'cordova-plugin-admob-free',
pluginRef: 'admob.interstitial',
})
export class AdMobFreeInterstitial {
/**
* Update config.
* @param options
* @return {AdMobFreeInterstitialConfig}
*/
@Cordova({ sync: true })
config(options: AdMobFreeInterstitialConfig): AdMobFreeInterstitialConfig { return; }
/**
* Check if interstitial is ready
* @return {Promise<any>}
*/
@Cordova({ sync: true })
isReady(): Promise<any> { return; }
/**
* Prepare interstitial
* @return {Promise<any>}
*/
@Cordova({ sync: true })
prepare(): Promise<any> { return; }
/**
* Show the interstitial
* @return {Promise<any>}
*/
@Cordova({ sync: true })
show(): Promise<any> { return; }
}
/**
* @hidden
*/
@Plugin({
pluginName: 'AdMobFree',
plugin: 'cordova-plugin-admob-free',
pluginRef: 'admob.rewardvideo',
})
export class AdMobFreeRewardVideo {
/**
* Update config.
* @param options
* @return {AdMobFreeRewardVideoConfig}
*/
@Cordova({ sync: true })
config(options: AdMobFreeRewardVideoConfig): AdMobFreeRewardVideoConfig { return; }
/**
* Check if reward video is ready
* @return {Promise<any>}
*/
@Cordova({ sync: true })
isReady(): Promise<any> { return; }
/**
* Prepare reward video
* @return {Promise<any>}
*/
@Cordova({ sync: true })
prepare(): Promise<any> { return; }
/**
* Show the reward video
* @return {Promise<any>}
*/
@Cordova({ sync: true })
show(): Promise<any> { return; }
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export type AdSize = 'SMART_BANNER' | 'BANNER' | 'MEDIUM_RECTANGLE' | 'FULL_BANNER' | 'LEADERBOARD' | 'SKYSCRAPER' | 'CUSTOM';
@@ -66,6 +66,11 @@ export interface AdMobOptions {
*/
adExtras?: AdExtras;
/**
* License key for the plugin
*/
license?: any;
}
export interface AdExtras {
@@ -90,7 +95,7 @@ export interface AdExtras {
* Plugin for Google Ads, including AdMob / DFP (doubleclick for publisher) and mediations to other Ad networks.
* @usage
* ```typescript
* import { AdMob, AdMobOptions, AdSize, AdExtras } from '@ionic-native/ad-mob';
* import { AdMob, AdMobOptions, AdSize, AdExtras } from '@ionic-native/admob';
*
* constructor(private admob: AdMob){}
*
@@ -118,7 +123,7 @@ export interface AdExtras {
platforms: ['Android', 'iOS', 'Windows Phone 8']
})
@Injectable()
export class AdMob {
export class AdMob extends IonicNativePlugin {
AD_POSITION: {
NO_CHANGE: number;
@@ -242,7 +247,8 @@ export class AdMob {
*/
@Cordova({
eventObservable: true,
event: 'onAdFailLoad'
event: 'onAdFailLoad',
element: document
})
onAdFailLoad(): Observable<any> { return; }
@@ -252,7 +258,8 @@ export class AdMob {
*/
@Cordova({
eventObservable: true,
event: 'onAdLoaded'
event: 'onAdLoaded',
element: document
})
onAdLoaded(): Observable<any> { return; }
@@ -262,7 +269,8 @@ export class AdMob {
*/
@Cordova({
eventObservable: true,
event: 'onAdPresent'
event: 'onAdPresent',
element: document
})
onAdPresent(): Observable<any> { return; }
@@ -272,7 +280,8 @@ export class AdMob {
*/
@Cordova({
eventObservable: true,
event: 'onAdLeaveApp'
event: 'onAdLeaveApp',
element: document
})
onAdLeaveApp(): Observable<any> { return; }
@@ -282,7 +291,8 @@ export class AdMob {
*/
@Cordova({
eventObservable: true,
event: 'onAdDismiss'
event: 'onAdDismiss',
element: document
})
onAdDismiss(): Observable<any> { return; }

View File

@@ -1,4 +1,4 @@
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
export interface AlipayOrder {
@@ -103,7 +103,7 @@ export interface AlipayOrder {
install: 'ionic plugin add https://github.com/xueron/cordova-alipay-base --variable APP_ID=your_app_id'
})
@Injectable()
export class Alipay {
export class Alipay extends IonicNativePlugin {
/**
* Open Alipay to perform App pay
* @param order { AlipayOrder } alipay options

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface AFAAuthOptions {
@@ -144,10 +144,11 @@ export interface AFAEncryptResponse {
pluginName: 'AndroidFingerprintAuth',
plugin: 'cordova-plugin-android-fingerprint-auth',
pluginRef: 'FingerprintAuth',
repo: 'https://github.com/mjwheatley/cordova-plugin-android-fingerprint-auth'
repo: 'https://github.com/mjwheatley/cordova-plugin-android-fingerprint-auth',
platforms: ['Android']
})
@Injectable()
export class AndroidFingerprintAuth {
export class AndroidFingerprintAuth extends IonicNativePlugin {
/**
* Opens a native dialog fragment to use the device hardware fingerprint scanner to authenticate against fingerprints registered for the device.

View File

@@ -0,0 +1,95 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Android Full Screen
* @description
* This plugin enables developers to offer users a true full screen experience in their Cordova and PhoneGap apps for Android.
* Using Android 4.0+, you can use true full screen in "lean mode", the way you see in apps like YouTube, expanding the app right to the edges of the screen, hiding the status and navigation bars until the user next interacts. This is ideally suited to video or cut-scene content.
* In Android 4.4+, however, you can now enter true full screen, fully interactive immersive mode. In this mode, your app will remain in true full screen until you choose otherwise; users can swipe down from the top of the screen to temporarily display the system UI.
* @usage
* ```typescript
* import { AndroidFullScreen } from '@ionic-native/android-full-screen';
*
* constructor(private androidFullScreen: AndroidFullScreen) { }
*
* ...
*
* this.androidFullScreen.isImmersiveModeSupported()
* .then(() => this.androidFullScreen.immersiveMode())
* .catch((error: any) => console.log(error));
*
* ```
*/
@Plugin({
pluginName: 'AndroidFullScreen',
plugin: 'cordova-plugin-fullscreen',
pluginRef: 'AndroidFullScreen',
repo: 'https://github.com/mesmotronic/cordova-plugin-fullscreen',
platforms: ['Android']
})
@Injectable()
export class AndroidFullScreen extends IonicNativePlugin {
/**
* Is this plugin supported?
* @return {Promise<void>}
*/
@Cordova()
isSupported(): Promise<void> { return; }
/**
* Is immersive mode supported?
* @return {Promise<void>}
*/
@Cordova()
isImmersiveModeSupported(): Promise<void> { return; }
/**
* The width of the screen in immersive mode.
* @return {Promise<number>}
*/
@Cordova()
immersiveWidth(): Promise<number> { return; }
/**
* The height of the screen in immersive mode.
* @return {Promise<number>}
*/
@Cordova()
immersiveHeight(): Promise<number> { return; }
/**
* Hide system UI until user interacts.
* @return {Promise<void>}
*/
@Cordova()
leanMode(): Promise<void> { return; }
/**
* Show system UI.
* @return {Promise<void>}
*/
@Cordova()
showSystemUI(): Promise<void> { return; }
/**
* Extend your app underneath the status bar (Android 4.4+ only).
* @return {Promise<void>}
*/
@Cordova()
showUnderStatusBar(): Promise<void> { return; }
/**
* Extend your app underneath the system UI (Android 4.4+ only).
* @return {Promise<void>}
*/
@Cordova()
showUnderSystemUI(): Promise<void> { return; }
/**
* Hide system UI and keep it hidden (Android 4.4+ only).
* @return {Promise<void>}
*/
@Cordova()
immersiveMode(): Promise<void> { return; }
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
* @name App Availability
@@ -40,7 +40,7 @@ import { Cordova, Plugin } from '@ionic-native/core';
platforms: ['Android', 'iOS']
})
@Injectable()
export class AppAvailability {
export class AppAvailability extends IonicNativePlugin {
/**
* Checks if an app is available on device

View File

@@ -1,4 +1,4 @@
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
import { Injectable } from '@angular/core';
@@ -21,12 +21,13 @@ import { Injectable } from '@angular/core';
*/
@Plugin({
pluginName: 'AppPreferences',
plugin: 'cordova-plugin-app-preferences', // npm package name, example: cordova-plugin-camera
pluginRef: 'plugins.appPreferences', // the variable reference to call the plugin, example: navigator.geolocation
repo: 'https://github.com/apla/me.apla.cordova.app-preferences', // the github repository URL for the plugin
plugin: 'cordova-plugin-app-preferences',
pluginRef: 'plugins.appPreferences',
repo: 'https://github.com/apla/me.apla.cordova.app-preferences',
platforms: ['Android', 'BlackBerry 10', 'Browser', 'iOS', 'OS X', 'Windows 8', 'Windows Phone']
})
@Injectable()
export class AppPreferences {
export class AppPreferences extends IonicNativePlugin {
/**
* Get a preference value
@@ -36,7 +37,6 @@ export class AppPreferences {
* @return {Promise<any>} Returns a promise
*/
@Cordova({
sync: true,
callbackOrder: 'reverse'
})
fetch(dict: string, key?: string): Promise<any> { return; }

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, CordovaProperty, Plugin } from '@ionic-native/core';
import { Cordova, CordovaProperty, Plugin, IonicNativePlugin } from '@ionic-native/core';
declare var window;
@@ -134,7 +134,7 @@ export interface AppUrls {
platforms: ['Android', 'iOS', 'Windows (experimental)']
})
@Injectable()
export class AppRate {
export class AppRate extends IonicNativePlugin {
/**
* Configure various settings for the Rating View.

View File

@@ -1,4 +1,4 @@
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
@@ -42,7 +42,7 @@ import { Injectable } from '@angular/core';
platforms: ['Android']
})
@Injectable()
export class AppUpdate {
export class AppUpdate extends IonicNativePlugin {
/**
* Check and update
* @param updateUrl {string} update api url

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
@@ -34,7 +34,7 @@ import { Cordova, Plugin } from '@ionic-native/core';
platforms: ['Android', 'iOS']
})
@Injectable()
export class AppVersion {
export class AppVersion extends IonicNativePlugin {
/**
* Returns the name of the app

View File

@@ -1,4 +1,4 @@
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs';
import { Injectable } from '@angular/core';
@@ -28,10 +28,10 @@ import { Injectable } from '@angular/core';
plugin: 'https://github.com/appodeal/appodeal-cordova-plugin',
pluginRef: 'Appodeal',
repo: 'https://github.com/appodeal/appodeal-cordova-plugin.git',
platforms: [ 'ios', 'android' ]
platforms: [ 'iOS', 'Android' ]
})
@Injectable()
export class Appodeal {
export class Appodeal extends IonicNativePlugin {
// available types of advertisements
readonly AD_TYPES = {
INTERSTITIAL: 1,

View File

@@ -1,4 +1,4 @@
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
declare var window;
@@ -63,7 +63,7 @@ export interface BackgroundFetchConfig {
platforms: ['iOS']
})
@Injectable()
export class BackgroundFetch {
export class BackgroundFetch extends IonicNativePlugin {
/**
@@ -100,4 +100,11 @@ export class BackgroundFetch {
})
finish(): void { }
/**
* Return the status of the background-fetch
* @returns {Promise<any>}
*/
@Cordova()
status(): Promise<any> { return; }
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
declare var window;
@@ -311,7 +311,7 @@ export interface BackgroundGeolocationConfig {
platforms: ['iOS', 'Android', 'Windows Phone 8']
})
@Injectable()
export class BackgroundGeolocation {
export class BackgroundGeolocation extends IonicNativePlugin {
/**
* Set location service provider @see https://github.com/mauron85/cordova-plugin-background-geolocation/wiki/Android-providers

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
@@ -13,26 +13,37 @@ export interface BackgroundModeConfiguration {
*/
title?: String;
/**
* The text that scrolls itself on statusbar
*/
ticker?: String;
/**
* Description of background task
*/
text?: String;
/**
* if true plugin will not display a notification. Default is false.
* This will look for <icon name>.png in platforms/android/res/drawable|mipmap
*/
silent?: boolean;
icon?: string;
color?: string;
/**
* By default the app will come to foreground when taping on the notification. If false, plugin wont come to foreground when tapped.
*/
resume?: boolean;
hidden?: boolean;
bigText?: boolean;
/**
* The text that scrolls itself on statusbar
*/
ticker?: String;
/**
* if true plugin will not display a notification. Default is false.
*/
silent?: boolean;
}
/**
@@ -62,7 +73,7 @@ export interface BackgroundModeConfiguration {
platforms: ['Android', 'iOS', 'Windows Phone 8']
})
@Injectable()
export class BackgroundMode {
export class BackgroundMode extends IonicNativePlugin {
/**
* Enable the background mode.

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
/**
@@ -32,7 +32,7 @@ import { Plugin, Cordova } from '@ionic-native/core';
platforms: ['Android']
})
@Injectable()
export class Backlight {
export class Backlight extends IonicNativePlugin {
/**
* This function turns backlight on

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
@@ -30,7 +30,7 @@ import { Cordova, Plugin } from '@ionic-native/core';
platforms: ['Android', 'iOS', 'Browser', 'Windows', 'Amazon FireOS', 'Windows Phone 8']
})
@Injectable()
export class Badge {
export class Badge extends IonicNativePlugin {
/**
* Clear the badge of the app icon.

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface BarcodeScannerOptions {
@@ -89,7 +89,7 @@ export interface BarcodeScannerOptions {
platforms: ['Android', 'iOS', 'Windows Phone 8', 'Windows 10', 'Windows 8', 'BlackBerry 10', 'Browser']
})
@Injectable()
export class BarcodeScanner {
export class BarcodeScanner extends IonicNativePlugin {
Encode: {
TEXT_TYPE: string;

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Base64 To Gallery
@@ -28,12 +28,12 @@ import { Cordova, Plugin } from '@ionic-native/core';
platforms: ['Android', 'iOS', 'Windows Phone 8']
})
@Injectable()
export class Base64ToGallery {
export class Base64ToGallery extends IonicNativePlugin {
/**
* Converts a base64 string to an image file in the device gallery
* @param {string} data The actual base64 string that you want to save
* @param {any} options (optional) An object with properties: prefix: string, mediaScanner: boolean. Prefix will be prepended to the filename. If true, mediaScanner runs Media Scanner on Android and saves to Camera Roll on iOS; if false, saves to Library folder on iOS.
* @param {any} [options] An object with properties: prefix: string, mediaScanner: boolean. Prefix will be prepended to the filename. If true, mediaScanner runs Media Scanner on Android and saves to Camera Roll on iOS; if false, saves to Library folder on iOS.
* @returns {Promise<any>} returns a promise that resolves when the image is saved.
*/
@Cordova({

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export interface BatteryStatusResponse {
@@ -32,7 +32,7 @@ export interface BatteryStatusResponse {
*
* // watch change in battery status
* let subscription = this.batteryStatus.onChange().subscribe(
* (status: StatusObject) => {
* (status: BatteryStatusResponse) => {
* console.log(status.level, status.isPlugged);
* }
* );
@@ -52,7 +52,7 @@ export interface BatteryStatusResponse {
platforms: ['Amazon Fire OS', 'iOS', 'Android', 'BlackBerry 10', 'Windows Phone 7', 'Windows Phone 8', 'Windows', 'Firefox OS', 'Browser']
})
@Injectable()
export class BatteryStatus {
export class BatteryStatus extends IonicNativePlugin {
/**
* Watch the change in battery level

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
/**
@@ -176,7 +176,7 @@ import { Observable } from 'rxjs/Observable';
platforms: ['iOS', 'Android']
})
@Injectable()
export class BLE {
export class BLE extends IonicNativePlugin {
/**
* Scan and discover BLE peripherals for the specified amount of time.

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
/**
@@ -38,7 +38,7 @@ import { Observable } from 'rxjs/Observable';
platforms: ['Android', 'iOS', 'Windows Phone', 'Browser']
})
@Injectable()
export class BluetoothSerial {
export class BluetoothSerial extends IonicNativePlugin {
/**
* Connect to a Bluetooth device

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Brightness
@@ -29,7 +29,7 @@ import { Cordova, Plugin } from '@ionic-native/core';
platforms: ['Android', 'iOS']
})
@Injectable()
export class Brightness {
export class Brightness extends IonicNativePlugin {
/**
* Sets the brightness of the display.

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
/**
@@ -31,7 +31,7 @@ import { Observable } from 'rxjs/Observable';
platforms: ['Android', 'iOS']
})
@Injectable()
export class Broadcaster {
export class Broadcaster extends IonicNativePlugin {
/**
* This function listen to an event sent from the native code

View File

@@ -1,4 +1,4 @@
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
@@ -17,7 +17,7 @@ import { Injectable } from '@angular/core';
*
* if (isAvailable) {
*
* browserTab.open('https://ionic.io');
* browserTab.openUrl('https://ionic.io');
*
* } else {
*
@@ -40,7 +40,7 @@ import { Injectable } from '@angular/core';
platforms: ['Android', 'iOS']
})
@Injectable()
export class BrowserTab {
export class BrowserTab extends IonicNativePlugin {
/**
* Check if BrowserTab option is available

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface CalendarOptions {
@@ -60,7 +60,7 @@ export interface CalendarOptions {
*
* @usage
* ```
* import {Calendar} from '@ionic-native/calendar';
* import { Calendar } from '@ionic-native/calendar';
*
* constructor(private calendar: Calendar) { }
*
@@ -81,7 +81,7 @@ export interface CalendarOptions {
platforms: ['Android', 'iOS']
})
@Injectable()
export class Calendar {
export class Calendar extends IonicNativePlugin {
/**
* This function checks if we have permission to read/write from/to the calendar.

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Call Number
* @description
@@ -7,7 +7,7 @@ import { Plugin, Cordova } from '@ionic-native/core';
*
* @usage
* ```
* import {CallNumber} from '@ionic-native/call-number';
* import { CallNumber } from '@ionic-native/call-number';
*
* constructor(private callNumber: CallNumber) { }
*
@@ -28,7 +28,7 @@ import { Plugin, Cordova } from '@ionic-native/core';
platforms: ['iOS', 'Android']
})
@Injectable()
export class CallNumber {
export class CallNumber extends IonicNativePlugin {
/**
* Calls a phone number

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface CameraPreviewDimensions {
/** The width of the camera preview, default to window.screen.width */
@@ -57,7 +57,7 @@ export interface CameraPreviewPictureOptions {
*
* @usage
* ```typescript
* import { CameraPreview, PictureOptions, CameraPreviewOptions, CameraPreviewDimensions } from 'ionic-native';
* import { CameraPreview, PictureOptions, CameraPreviewOptions, CameraPreviewDimensions } from '@ionic-native/camera-preview';
*
* constructor(private cameraPreview: CameraPreview) { }
*
@@ -132,7 +132,39 @@ export interface CameraPreviewPictureOptions {
platforms: ['Android', 'iOS']
})
@Injectable()
export class CameraPreview {
export class CameraPreview extends IonicNativePlugin {
EXPOSURE_MODES = {
LOCK: 'lock', // IOS Only
AUTO: 'auto', // IOS Only
CONTINUOUS: 'continuous',
CUSTOM: 'custom'
};
FLASH_MODE = {
OFF: 'off',
ON: 'on',
AUTO: 'auto',
RED_EYE: 'red-eye',
TORCH: 'torch' // Android Only
};
COLOR_EFFECT = {
AQUA: 'aqua', // Android Only
BLACKBOARD: 'blackboard', // Android Only
MONO: 'mono',
NEGATIVE: 'negative',
NONE: 'none',
POSTERIZE: 'posterize',
SEPIA: 'sepia',
SOLARIZE: 'solarize', // Android Only
WHITEBOARD: 'whiteboard' // Android Only
};
CAMERA_DIRECTION = {
BACK: 'back',
FRONT: 'front'
};
/**
* Starts the camera preview instance.
@@ -149,45 +181,33 @@ export class CameraPreview {
* Stops the camera preview instance. (iOS & Android)
* @return {Promise<any>}
*/
@Cordova({
successIndex: 0,
errorIndex: 1
})
@Cordova()
stopCamera(): Promise<any> { return; }
/**
* Switch from the rear camera and front camera, if available.
* @return {Promise<any>}
*/
@Cordova({
successIndex: 0,
errorIndex: 1
})
@Cordova()
switchCamera(): Promise<any> { return; }
/**
* Hide the camera preview box.
* @return {Promise<any>}
*/
@Cordova({
successIndex: 0,
errorIndex: 1
})
@Cordova()
hide(): Promise<any> { return; }
/**
* Show the camera preview box.
* @return {Promise<any>}
*/
@Cordova({
successIndex: 0,
errorIndex: 1
})
@Cordova()
show(): Promise<any> { return; }
/**
* Take the picture (base64)
* @param options {CameraPreviewPictureOptions} optional - size and quality of the picture to take
* @param [options] {CameraPreviewPictureOptions} size and quality of the picture to take
* @return {Promise<any>}
*/
@Cordova({
@@ -211,7 +231,7 @@ export class CameraPreview {
/**
* Set the zoom (Android)
* @param zoom {number} Zoom value
* @param [zoom] {number} Zoom value
* @return {Promise<any>}
*/
@Cordova({
@@ -220,22 +240,34 @@ export class CameraPreview {
})
setZoom(zoom?: number): Promise<any> { return; }
/**
* Get the maximum zoom (Android)
* @return {Promise<any>}
*/
@Cordova()
getMaxZoom(): Promise<any> { return; }
/**
* Get current zoom (Android)
* @return {Promise<any>}
*/
@Cordova()
getZoom(): Promise<any> { return; }
/**
* Set the preview Size
* @param dimensions {CameraPreviewDimensions}
* @param [dimensions] {CameraPreviewDimensions}
* @return {Promise<any>}
*/
@Cordova({
successIndex: 1,
errorIndex: 2,
platforms: ['Android']
errorIndex: 2
})
setPreviewSize(dimensions?: CameraPreviewDimensions): Promise<any> { return; }
/**
* Set the flashmode
* @param flashMode {string} 'off' (iOS & Android), 'on' (iOS & Android), 'auto' (iOS & Android), 'torch' (Android)
* @param [flashMode] {string} 'off' (iOS & Android), 'on' (iOS & Android), 'auto' (iOS & Android), 'torch' (Android)
* @return {Promise<any>}
*/
@Cordova({
@@ -244,4 +276,68 @@ export class CameraPreview {
})
setFlashMode(flashMode?: string): Promise<any> { return; }
/**
* Get supported picture sizes
* @return {Promise<any>}
*/
@Cordova()
getSupportedPictureSizes(): Promise<any> { return; }
/**
* Get supported flash modes
* @return {Promise<any>}
*/
@Cordova()
getSupportedFlashModes(): Promise<any> { return; }
/**
* Get exposure mode
* @return {Promise<any>}
*/
@Cordova()
getExposureMode(): Promise<any> { return; }
/**
* Get exposure modes
* @return {Promise<any>}
*/
@Cordova()
getExposureModes(): Promise<any> { return; }
/**
* Set exposure mode
* @param [lock] {string}
* @return {Promise<any>}
*/
@Cordova({
successIndex: 1,
errorIndex: 2
})
setExposureMode(lock?: string): Promise<any> { return; }
/**
* Get exposure compensation (Android)
* @return {Promise<any>}
*/
@Cordova()
getExposureCompensation(): Promise<any> { return; }
/**
* Set exposure compensation (Android)
* @param [exposureCompensation] {number}
* @return {Promise<any>}
*/
@Cordova({
successIndex: 1,
errorIndex: 2
})
setExposureCompensation(exposureCompensation?: number): Promise<any> { return; }
/**
* Get exposure compensation range (Android)
* @return {Promise<any>}
*/
@Cordova()
getExposureCompensationRange(): Promise<any> { return; }
}

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface CameraOptions {
/** Picture quality in range 0-100. Default is 50 */
@@ -90,7 +90,7 @@ export interface CameraPopoverOptions {
* @description
* Take a photo or capture video.
*
* Requires {@link module:driftyco/ionic-native} and the Cordova plugin: `cordova-plugin-camera`. For more info, please see the [Cordova Camera Plugin Docs](https://github.com/apache/cordova-plugin-camera).
* Requires and the Cordova plugin: `cordova-plugin-camera`. For more info, please see the [Cordova Camera Plugin Docs](https://github.com/apache/cordova-plugin-camera).
*
* @usage
* ```typescript
@@ -101,10 +101,10 @@ export interface CameraPopoverOptions {
* ...
*
*
* constant options: CameraOptions = {
* const options: CameraOptions = {
* quality: 100,
* destinationType: this.camera.DestinationType.DATA_URL,
* enodingType: this.camera.EncodingType.JPEG,
* encodingType: this.camera.EncodingType.JPEG,
* mediaType: this.camera.MediaType.PICTURE
* }
*
@@ -120,7 +120,6 @@ export interface CameraPopoverOptions {
* CameraOptions
* CameraPopoverOptions
*/
@Injectable()
@Plugin({
pluginName: 'Camera',
plugin: 'cordova-plugin-camera',
@@ -128,7 +127,8 @@ export interface CameraPopoverOptions {
repo: 'https://github.com/apache/cordova-plugin-camera',
platforms: ['Android', 'BlackBerry', 'Browser', 'Firefox', 'FireOS', 'iOS', 'Windows', 'Windows Phone 8', 'Ubuntu']
})
export class Camera {
@Injectable()
export class Camera extends IonicNativePlugin {
/**
* Constant for possible destination types
@@ -201,7 +201,7 @@ export class Camera {
/**
* Take a picture or video, or load one from the library.
* @param {CameraOptions?} options optional. Options that you want to pass to the camera. Encoding type, quality, etc. Platform-specific quirks are described in the [Cordova plugin docs](https://github.com/apache/cordova-plugin-camera#cameraoptions-errata-).
* @param {CameraOptions} [options] Options that you want to pass to the camera. Encoding type, quality, etc. Platform-specific quirks are described in the [Cordova plugin docs](https://github.com/apache/cordova-plugin-camera#cameraoptions-errata-).
* @returns {Promise<any>} Returns a Promise that resolves with Base64 encoding of the image data, or the image file URI, depending on cameraOptions, otherwise rejects with an error.
*/
@Cordova({

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface CardIOOptions {
@@ -167,7 +167,7 @@ export interface CardIOResponse {
platforms: ['iOS', 'Android']
})
@Injectable()
export class CardIO {
export class CardIO extends IonicNativePlugin {
/**
* Check whether card scanning is currently available. (May vary by

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Clipboard
* @description
@@ -37,7 +37,7 @@ import { Cordova, Plugin } from '@ionic-native/core';
platforms: ['Amazon Fire OS', 'iOS', 'Android', 'BlackBerry 10', 'Windows Phone 7', 'Windows Phone 8', 'Windows', 'Firefox OS', 'Browser']
})
@Injectable()
export class Clipboard {
export class Clipboard extends IonicNativePlugin {
/**
* Copies the given text

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
namespace Http {
export const enum Verb {
@@ -427,7 +427,7 @@ export interface DownloadProgress {
platforms: ['Android', 'iOS']
})
@Injectable()
export class CodePush {
export class CodePush extends IonicNativePlugin {
/**
* Get the current package information.

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { CordovaInstance, InstanceProperty, Plugin, getPromise } from '@ionic-native/core';
import { CordovaInstance, InstanceProperty, Plugin, getPromise, InstanceCheck, checkAvailability, CordovaCheck, IonicNativePlugin } from '@ionic-native/core';
declare var window: any,
navigator: any;
@@ -72,9 +72,12 @@ export class Contact implements IContactProperties {
@InstanceProperty urls: IContactField[];
constructor() {
this._objectInstance = navigator.contacts.create();
if (checkAvailability('navigator.contacts', 'create', 'Contacts') === true) {
this._objectInstance = navigator.contacts.create();
}
}
@InstanceCheck()
clone(): Contact {
let newContact = new Contact();
for (let prop in this) {
@@ -87,6 +90,7 @@ export class Contact implements IContactProperties {
@CordovaInstance()
remove(): Promise<any> { return; }
@InstanceCheck()
save(): Promise<any> {
return getPromise((resolve, reject) => {
this._objectInstance.save((contact) => {
@@ -286,10 +290,11 @@ export class ContactFindOptions implements IContactFindOptions {
pluginName: 'Contacts',
plugin: 'cordova-plugin-contacts',
pluginRef: 'navigator.contacts',
repo: 'https://github.com/apache/cordova-plugin-contacts'
repo: 'https://github.com/apache/cordova-plugin-contacts',
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Ubuntu', 'Windows', 'Windows 8', 'Windows Phone']
})
@Injectable()
export class Contacts {
export class Contacts extends IonicNativePlugin {
/**
* Create a single contact.
@@ -305,6 +310,7 @@ export class Contacts {
* @param options {IContactFindOptions} Optional options for the query
* @returns {Promise<Contact[]>} Returns a Promise that resolves with the search results (an array of Contact objects)
*/
@CordovaCheck()
find(fields: ContactFieldType[], options?: IContactFindOptions): Promise<Contact[]> {
return getPromise((resolve, reject) => {
navigator.contacts.find(fields, (contacts) => {
@@ -317,6 +323,7 @@ export class Contacts {
* Select a single Contact.
* @returns {Promise<Contact>} Returns a Promise that resolves with the selected Contact
*/
@CordovaCheck()
pickContact(): Promise<Contact> {
return getPromise((resolve, reject) => {
navigator.contacts.pickContact((contact) => resolve(processContact(contact)), reject);

View File

@@ -1,4 +1,4 @@
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
@@ -26,9 +26,10 @@ import { Injectable } from '@angular/core';
plugin: 'https://github.com/couchbaselabs/Couchbase-Lite-PhoneGap-Plugin',
pluginRef: 'cblite',
repo: 'https://github.com/couchbaselabs/Couchbase-Lite-PhoneGap-Plugin',
platforms: ['Android', 'iOS']
})
@Injectable()
export class CouchbaseLite {
export class CouchbaseLite extends IonicNativePlugin {
/**
* Get the database url

View File

@@ -1,12 +1,12 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Crop
* @description Crops images
* @usage
* ```
* import {Crop} from '@ionic-native/crop';
* import { Crop } from '@ionic-native/crop';
*
* constructor(private crop: Crop) { }
*
@@ -23,10 +23,11 @@ import { Cordova, Plugin } from '@ionic-native/core';
pluginName: 'Crop',
plugin: 'cordova-plugin-crop',
pluginRef: 'plugins',
repo: 'https://github.com/jeduan/cordova-plugin-crop'
repo: 'https://github.com/jeduan/cordova-plugin-crop',
platforms: ['Android', 'iOS']
})
@Injectable()
export class Crop {
export class Crop extends IonicNativePlugin {
/**
* Crops an image

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import {Cordova, Plugin} from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface DatePickerOptions {
/**
@@ -154,7 +154,7 @@ export interface DatePickerOptions {
platforms: ['Android', 'iOS', 'Windows']
})
@Injectable()
export class DatePicker {
export class DatePicker extends IonicNativePlugin {
/**
* @hidden

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
/**
@@ -42,7 +42,7 @@ import { Observable } from 'rxjs/Observable';
platforms: ['iOS', 'Android']
})
@Injectable()
export class DBMeter {
export class DBMeter extends IonicNativePlugin {
/**
* Starts listening

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export interface DeeplinkMatch {
@@ -24,7 +24,7 @@ export interface DeeplinkMatch {
}
/**
* @name Ionic Deeplinks
* @name Deeplinks
* @description This plugin handles deeplinks on iOS and Android for both custom URL scheme links
* and Universal App Links.
*
@@ -32,9 +32,9 @@ export interface DeeplinkMatch {
* ```typescript
* import { Deeplinks } from '@ionic-native/deeplinks';
*
* constructor(private deepLinks: DeepLinks) { }
* constructor(private deeplinks: Deeplinks) { }
*
* this.deepLinks.route({
* this.deeplinks.route({
* '/about-us': AboutPage,
* '/universal-links-test': AboutPage,
* '/products/:productId': ProductPage
@@ -53,7 +53,7 @@ export interface DeeplinkMatch {
* the actual navigation for you:
*
* ```typescript
* this.deepLinks.routeWithNavController(this.navController, {
* this.deeplinks.routeWithNavController(this.navController, {
* '/about-us': AboutPage,
* '/products/:productId': ProductPage
* }).subscribe((match) => {
@@ -78,12 +78,12 @@ export interface DeeplinkMatch {
plugin: 'ionic-plugin-deeplinks',
pluginRef: 'IonicDeeplink',
repo: 'https://github.com/driftyco/ionic-plugin-deeplinks',
platforms: ['iOS', 'Android'],
platforms: ['iOS', 'Android', 'Browser'],
install: 'ionic plugin add ionic-plugin-deeplinks --variable URL_SCHEME=myapp --variable DEEPLINK_SCHEME=https --variable DEEPLINK_HOST=example.com --variable ANDROID_PATH_PREFIX=/',
installVariables: ['URL_SCHEME', 'DEEPLINK_SCHEME', 'DEEPLINK_HOST', 'ANDROID_PATH_PREFIX']
})
@Injectable()
export class Deeplinks {
export class Deeplinks extends IonicNativePlugin {
/**
* Define a set of paths to match against incoming deeplinks.

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Device Accounts
@@ -28,7 +28,7 @@ import { Cordova, Plugin } from '@ionic-native/core';
platforms: ['Android']
})
@Injectable()
export class DeviceAccounts {
export class DeviceAccounts extends IonicNativePlugin {
/**
* Gets all accounts registered on the Android Device

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Device Feedback
* @description
@@ -38,7 +38,7 @@ import { Plugin, Cordova } from '@ionic-native/core';
platforms: ['Android']
})
@Injectable()
export class DeviceFeedback {
export class DeviceFeedback extends IonicNativePlugin {
/**
* Provide sound feedback to user, nevertheless respect user's settings and current active device profile as native feedback do.

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export interface DeviceMotionAccelerationData {
@@ -71,10 +71,11 @@ export interface DeviceMotionAccelerometerOptions {
pluginName: 'DeviceMotion',
plugin: 'cordova-plugin-device-motion',
pluginRef: 'navigator.accelerometer',
repo: 'https://github.com/apache/cordova-plugin-device-motion'
repo: 'https://github.com/apache/cordova-plugin-device-motion',
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
})
@Injectable()
export class DeviceMotion {
export class DeviceMotion extends IonicNativePlugin {
/**
* Get the current acceleration along the x, y, and z axes.

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export interface DeviceOrientationCompassHeading {
@@ -76,10 +76,11 @@ export interface DeviceOrientationCompassOptions {
pluginName: 'DeviceOrientation',
plugin: 'cordova-plugin-device-orientation',
pluginRef: 'navigator.compass',
repo: 'https://github.com/apache/cordova-plugin-device-orientation'
repo: 'https://github.com/apache/cordova-plugin-device-orientation',
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
})
@Injectable()
export class DeviceOrientation {
export class DeviceOrientation extends IonicNativePlugin {
/**
* Get the current compass heading.

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { CordovaProperty, Plugin } from '@ionic-native/core';
import { CordovaProperty, Plugin, IonicNativePlugin } from '@ionic-native/core';
declare var window: any;
@@ -23,10 +23,11 @@ declare var window: any;
pluginName: 'Device',
plugin: 'cordova-plugin-device',
pluginRef: 'device',
repo: 'https://github.com/apache/cordova-plugin-device'
repo: 'https://github.com/apache/cordova-plugin-device',
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'OS X', 'Tizen', 'Ubuntu', 'Windows', 'Windows Phone']
})
@Injectable()
export class Device {
export class Device extends IonicNativePlugin {
/** Get the version of Cordova running on the device. */
@CordovaProperty

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import {Cordova, Plugin, CordovaProperty} from '@ionic-native/core';
import { Cordova, Plugin, CordovaProperty, IonicNativePlugin } from '@ionic-native/core';
/**
* @name Diagnostic
@@ -38,10 +38,11 @@ import {Cordova, Plugin, CordovaProperty} from '@ionic-native/core';
pluginName: 'Diagnostic',
plugin: 'cordova.plugins.diagnostic',
pluginRef: 'cordova.plugins.diagnostic',
repo: 'https://github.com/dpa99c/cordova-diagnostic-plugin'
repo: 'https://github.com/dpa99c/cordova-diagnostic-plugin',
platforms: ['Android', 'iOS', 'Windows']
})
@Injectable()
export class Diagnostic {
export class Diagnostic extends IonicNativePlugin {
permission = {
READ_CALENDAR: 'READ_CALENDAR',
@@ -234,7 +235,7 @@ export class Diagnostic {
* Returns the location authorization status for the application.
* Note for Android: this is intended for Android 6 / API 23 and above. Calling on Android 5 / API 22 and below will always return GRANTED status as permissions are already granted at installation time.
*
* mode - (iOS-only / optional) location authorization mode: "always" or "when_in_use". If not specified, defaults to "when_in_use".
* @param {string} [mode] iOS only: location authorization mode: "always" or "when_in_use". If not specified, defaults to "when_in_use".
* @returns {Promise<any>}
*/
@Cordova({ platforms: ['Android', 'iOS'], callbackOrder: 'reverse' })

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface DialogsPromptCallback {
@@ -45,10 +45,11 @@ export interface DialogsPromptCallback {
pluginName: 'Dialogs',
plugin: 'cordova-plugin-dialogs',
pluginRef: 'navigator.notification',
repo: 'https://github.com/apache/cordova-plugin-dialogs.git'
repo: 'https://github.com/apache/cordova-plugin-dialogs.git',
platforms: ['Android', 'BlackBerry 10', 'Firefox OS', 'iOS', 'Ubuntu', 'Windows', 'Windows Phone']
})
@Injectable()
export class Dialogs {
export class Dialogs extends IonicNativePlugin {
/**
* Shows a custom alert or dialog box.

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, CordovaCheck } from '@ionic-native/core';
import { Cordova, Plugin, CordovaCheck, IonicNativePlugin } from '@ionic-native/core';
declare var cordova: any;
@@ -79,12 +79,12 @@ export interface EmailComposerOptions {
platforms: ['Android', 'iOS']
})
@Injectable()
export class EmailComposer {
export class EmailComposer extends IonicNativePlugin {
/**
* Verifies if sending emails is supported on the device.
*
* @param app {string?} An optional app id or uri scheme.
* @param [app] {string} App id or uri scheme.
* @returns {Promise<any>} Resolves if available, rejects if not available
*/
@CordovaCheck()
@@ -123,7 +123,7 @@ export class EmailComposer {
* Displays the email composer pre-filled with data.
*
* @param options {EmailComposerOptions} Email
* @param scope {any?} An optional scope for the promise
* @param [scope] {any} Scope for the promise
* @returns {Promise<any>} Resolves promise when the EmailComposer has been opened
*/
@Cordova({

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export interface EstimoteBeaconRegion {
@@ -47,7 +47,7 @@ export interface EstimoteBeaconRegion {
platforms: ['iOS', 'Android']
})
@Injectable()
export class EstimoteBeacons {
export class EstimoteBeacons extends IonicNativePlugin {
/** Proximity value */
ProximityUnknown = 0;
@@ -381,7 +381,7 @@ export class EstimoteBeacons {
* @param [notifyEntryStateOnDisplay=false] {boolean} Set to true to detect if you
* are inside a region when the user turns display on, see
* {@link https://developer.apple.com/library/prerelease/ios/documentation/CoreLocation/Reference/CLBeaconRegion_class/index.html#//apple_ref/occ/instp/CLBeaconRegion/notifyEntryStateOnDisplay|iOS documentation}
* for further details (optional, defaults to false, iOS only).
* for further details (iOS only).
* @returns {Observable<any>} Returns an Observable that notifies of each region state discovered.
*/
@Cordova({

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin } from '@ionic-native/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface FacebookLoginResponse {
@@ -113,10 +113,11 @@ export interface FacebookLoginResponse {
pluginRef: 'facebookConnectPlugin',
repo: 'https://github.com/jeduan/cordova-plugin-facebook4',
install: 'ionic plugin add cordova-plugin-facebook4 --variable APP_ID="123456789" --variable APP_NAME="myApplication"',
installVariables: ['APP_ID', 'APP_NAME']
installVariables: ['APP_ID', 'APP_NAME'],
platforms: ['Android', 'iOS']
})
@Injectable()
export class Facebook {
export class Facebook extends IonicNativePlugin {
/**
* Browser wrapper
@@ -268,9 +269,8 @@ export class Facebook {
*
*
* @param {Object} options An object containing an [App Link](https://developers.facebook.com/docs/applinks) URL to your app and an optional image URL.
* url: [App Link](https://developers.facebook.com/docs/applinks) to your app
* picture: image to be displayed in the App Invite dialog
*
* @param {string} options.url [App Link](https://developers.facebook.com/docs/applinks) to your app
* @param {string} [options.picture] image to be displayed in the App Invite dialog
* @returns {Promise<any>} Returns a Promise that resolves with the result data, or rejects with an error
*/
@Cordova()

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
/**
* @name File Chooser
@@ -29,7 +29,7 @@ import { Plugin, Cordova } from '@ionic-native/core';
platforms: ['Android']
})
@Injectable()
export class FileChooser {
export class FileChooser extends IonicNativePlugin {
/**
* Open a file

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
/**
* @name File Opener
@@ -24,10 +24,11 @@ import { Plugin, Cordova } from '@ionic-native/core';
pluginName: 'FileOpener',
plugin: 'cordova-plugin-file-opener2',
pluginRef: 'cordova.plugins.fileOpener2',
repo: 'https://github.com/pwlin/cordova-plugin-file-opener2'
repo: 'https://github.com/pwlin/cordova-plugin-file-opener2',
platforms: ['Android', 'iOS', 'Windows', 'Windows Phone 8']
})
@Injectable()
export class FileOpener {
export class FileOpener extends IonicNativePlugin {
/**
* Open an file

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
declare var window: any;
@@ -18,8 +18,8 @@ declare var window: any;
* ...
*
* this.filePath.resolveNativePath(path)
* .then(filePath => console.log(filePath);
* .catch(err => console.log(err);
* .then(filePath => console.log(filePath))
* .catch(err => console.log(err));
*
* ```
*/
@@ -31,7 +31,7 @@ declare var window: any;
platforms: ['Android']
})
@Injectable()
export class FilePath {
export class FilePath extends IonicNativePlugin {
/**
* Resolve native path for given content URL/path.

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { CordovaProperty, Plugin, CordovaCheck } from '@ionic-native/core';
import { CordovaProperty, Plugin, CordovaCheck, IonicNativePlugin } from '@ionic-native/core';
declare var window: any;
declare var cordova: any;
@@ -367,10 +367,11 @@ export declare var FileError: {
pluginName: 'File',
plugin: 'cordova-plugin-file',
pluginRef: 'cordova.file',
repo: 'https://github.com/apache/cordova-plugin-file'
repo: 'https://github.com/apache/cordova-plugin-file',
platforms: ['Android', 'BlackBerry 10', 'Browser', 'Firefox OS', 'iOS', 'OS X', 'Ubuntu', 'Windows', 'Windows Phone']
})
@Injectable()
export class File {
export class File extends IonicNativePlugin {
/**
* Read-only directory where the application is installed.

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
export interface FingerprintOptions {
@@ -21,7 +21,7 @@ export interface FingerprintOptions {
/**
* @beta
* @name FingerprintAIO
* @name Fingerprint AIO
* @description
* Use simple fingerprint authentication on Android and iOS.
* Requires Cordova plugin: cordova-plugin-fingerprint-aio. For more info about plugin, vist: https://github.com/NiklasMerz/cordova-plugin-fingerprint-aio
@@ -30,7 +30,7 @@ export interface FingerprintOptions {
* ```typescript
* import { FingerprintAIO } from '@ionic-native/fingerprint-aio';
*
* constructor(private faio: FingerpirntAIO) { }
* constructor(private faio: FingerprintAIO) { }
*
* ...
*
@@ -39,7 +39,7 @@ export interface FingerprintOptions {
* clientSecret: "password", //Only necessary for Android
* disableBackup:true //Only for Android(optional)
* })
* .then((result: any) => console.log(any))
* .then((result: any) => console.log(result))
* .catch((error: any) => console.log(error));
*
* ```
@@ -54,7 +54,7 @@ export interface FingerprintOptions {
platforms: ['Android', 'iOS']
})
@Injectable()
export class FingerprintAIO {
export class FingerprintAIO extends IonicNativePlugin {
/**
* Check if fingerprint authentication is available

View File

@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova } from '@ionic-native/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
/**
@@ -32,7 +32,7 @@ import { Observable } from 'rxjs/Observable';
platforms: ['Android', 'iOS']
})
@Injectable()
export class Firebase {
export class Firebase extends IonicNativePlugin {
/**
* Get the device token

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