mirror of
https://github.com/danielsogl/awesome-cordova-plugins.git
synced 2026-02-04 00:06:19 +08:00
Compare commits
476 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
29bd694d9f | ||
|
|
e3aeb1ac4e | ||
|
|
7e7a3d6b8b | ||
|
|
de340c2b56 | ||
|
|
1ff54f64da | ||
|
|
50d91103cc | ||
|
|
b206b42f85 | ||
|
|
8a00ccc43b | ||
|
|
104cad14a3 | ||
|
|
d506795715 | ||
|
|
aae484dfe9 | ||
|
|
72335bfd59 | ||
|
|
f852dd9510 | ||
|
|
93b1e11898 | ||
|
|
815d1bb1f8 | ||
|
|
0c505f9748 | ||
|
|
2377b979ad | ||
|
|
0e3304e00e | ||
|
|
e2c7c93fed | ||
|
|
3fcaed8c46 | ||
|
|
83cb98f115 | ||
|
|
f64b67310a | ||
|
|
944d25147f | ||
|
|
4f13426a6d | ||
|
|
c5d606633e | ||
|
|
9dd719bb07 | ||
|
|
0dcbace822 | ||
|
|
383a88463a | ||
|
|
5a42e8cadf | ||
|
|
f19ddc7cde | ||
|
|
7736ca7747 | ||
|
|
21e8811ea9 | ||
|
|
14f900bbad | ||
|
|
0074f6fd47 | ||
|
|
ae0088d53b | ||
|
|
addfb065eb | ||
|
|
e1747d9c51 | ||
|
|
f1c7afd583 | ||
|
|
8d8608bbfa | ||
|
|
b2da307837 | ||
|
|
da4ce96be4 | ||
|
|
826f8085a4 | ||
|
|
c05b3e9672 | ||
|
|
575229412b | ||
|
|
065e80cccf | ||
|
|
50f8a452ad | ||
|
|
443515582b | ||
|
|
380a7f77d7 | ||
|
|
96162c07df | ||
|
|
a2511f5994 | ||
|
|
4d53d6d720 | ||
|
|
3450399552 | ||
|
|
16fee2268a | ||
|
|
6c99c3be03 | ||
|
|
9b2374b3bc | ||
|
|
b4227f2114 | ||
|
|
0932e113b2 | ||
|
|
bbb96ed765 | ||
|
|
31ee7efc22 | ||
|
|
2f69dd88cb | ||
|
|
f32da73a87 | ||
|
|
cc79a1edb7 | ||
|
|
4fb07fa809 | ||
|
|
3d7b777b19 | ||
|
|
2cb5f5c010 | ||
|
|
46d0cecb27 | ||
|
|
ca190db829 | ||
|
|
d698d5985b | ||
|
|
8dcb6be4ea | ||
|
|
158bf637cd | ||
|
|
9b7db588a1 | ||
|
|
5d71d0d2bb | ||
|
|
c6ad5e41ff | ||
|
|
b8de7f0721 | ||
|
|
e5f710c8bb | ||
|
|
239ae32ad3 | ||
|
|
f7a3c7127a | ||
|
|
80a537c0db | ||
|
|
2ae986727a | ||
|
|
7a4df59189 | ||
|
|
337bba62c5 | ||
|
|
a96faf1378 | ||
|
|
0467787085 | ||
|
|
0efa33f257 | ||
|
|
182b403f69 | ||
|
|
ddd269e7ab | ||
|
|
6b18c3d061 | ||
|
|
bd8fbb3e1f | ||
|
|
3d1a73ebcb | ||
|
|
96890c7b92 | ||
|
|
26fd76dad0 | ||
|
|
72c99603db | ||
|
|
e7bc1b6709 | ||
|
|
3e92f64484 | ||
|
|
de6dee7de4 | ||
|
|
bed8797a60 | ||
|
|
b4f0f07064 | ||
|
|
e4b171930d | ||
|
|
4a796cafe9 | ||
|
|
2950ff14d7 | ||
|
|
376501ef7e | ||
|
|
6b468662b6 | ||
|
|
a209c61547 | ||
|
|
07d7ace97d | ||
|
|
13f6da69ef | ||
|
|
bb1064225d | ||
|
|
78e92422ab | ||
|
|
46853b4212 | ||
|
|
f71b65d6a7 | ||
|
|
e486cfd9bf | ||
|
|
7897f28d26 | ||
|
|
0f197ad9fc | ||
|
|
d7c6f8628d | ||
|
|
af114f48e4 | ||
|
|
fd0cddc9d0 | ||
|
|
b3d5baa46e | ||
|
|
68d245ef2c | ||
|
|
4dda714761 | ||
|
|
ba39f7e9f2 | ||
|
|
52da729b8c | ||
|
|
46e0d6d396 | ||
|
|
5fc4ceada4 | ||
|
|
f04f1f479f | ||
|
|
da72795081 | ||
|
|
f3ce3c4930 | ||
|
|
5a77eabf76 | ||
|
|
99e6a5398f | ||
|
|
14ec32b83c | ||
|
|
7b0195bdf4 | ||
|
|
1f48c31a8e | ||
|
|
c62c137723 | ||
|
|
3340e9a694 | ||
|
|
4766ec7a35 | ||
|
|
a37ea81488 | ||
|
|
b5f7f952df | ||
|
|
5d1b5d5fda | ||
|
|
b2e82bea62 | ||
|
|
d2a6b13059 | ||
|
|
ce9db34e24 | ||
|
|
36ae7dcad9 | ||
|
|
adca021f39 | ||
|
|
308e0f3f33 | ||
|
|
8ce71132b0 | ||
|
|
f6bf48d9b2 | ||
|
|
579170a99e | ||
|
|
b0ffb0ec4a | ||
|
|
eec3fec7ff | ||
|
|
a010bb1869 | ||
|
|
26d10ef633 | ||
|
|
d7ccd454fb | ||
|
|
fab667f22c | ||
|
|
ccca644134 | ||
|
|
b4462d5e6c | ||
|
|
5aa5757795 | ||
|
|
85eaf92e58 | ||
|
|
1ffad79320 | ||
|
|
44f86f3ce5 | ||
|
|
25bf7437b5 | ||
|
|
f413dab4e2 | ||
|
|
68c11192cd | ||
|
|
5ec63841c3 | ||
|
|
a9294ecb51 | ||
|
|
c12aa6c9fa | ||
|
|
9f27d54f0e | ||
|
|
343cf7356f | ||
|
|
7c95e66021 | ||
|
|
9bf1eafc4e | ||
|
|
7b998b9644 | ||
|
|
7ae1df2489 | ||
|
|
b2afc131ca | ||
|
|
32203e9ac1 | ||
|
|
66896b2632 | ||
|
|
fe21b5b97c | ||
|
|
40b9295de6 | ||
|
|
2923504c7d | ||
|
|
030a78fc1b | ||
|
|
aa535844b0 | ||
|
|
be3f73a921 | ||
|
|
809d664cf4 | ||
|
|
4f2f8894d5 | ||
|
|
742ff65596 | ||
|
|
79c3284434 | ||
|
|
1aacb487a4 | ||
|
|
ef17dc5d07 | ||
|
|
324334eb28 | ||
|
|
389a3fb215 | ||
|
|
3df35b40ce | ||
|
|
7f0975803f | ||
|
|
dc6e3313bb | ||
|
|
4575cb6050 | ||
|
|
191c7a044d | ||
|
|
46bbf633e4 | ||
|
|
1567e8ff2f | ||
|
|
69117131bd | ||
|
|
8f20fc82f3 | ||
|
|
3ddd672e00 | ||
|
|
0f1cde634f | ||
|
|
4338c1c5ed | ||
|
|
511a02d50b | ||
|
|
f5133c691d | ||
|
|
12606198f6 | ||
|
|
13a8a6f1d9 | ||
|
|
e59a989fab | ||
|
|
fd8d83a48a | ||
|
|
1dfd8a017a | ||
|
|
e715498d33 | ||
|
|
809e5ac14d | ||
|
|
9892ce7a61 | ||
|
|
180b665c4b | ||
|
|
26c912092c | ||
|
|
40e2a2e291 | ||
|
|
85c3c47998 | ||
|
|
825b2d6970 | ||
|
|
ea053ccbe6 | ||
|
|
c403330c0a | ||
|
|
a3d54a34b8 | ||
|
|
3099b8c76c | ||
|
|
8eacf8817c | ||
|
|
eceb7ca1fc | ||
|
|
3d46715b9c | ||
|
|
e09592d2b9 | ||
|
|
61bbe3980c | ||
|
|
1db0ff741f | ||
|
|
a391e37f90 | ||
|
|
3e0b0750d8 | ||
|
|
b426819f92 | ||
|
|
9e2f670d9d | ||
|
|
8c25d1e311 | ||
|
|
6458640ba7 | ||
|
|
be05235a6e | ||
|
|
83196bc947 | ||
|
|
d2d5a5a96c | ||
|
|
bb80d00f58 | ||
|
|
bfee712cdc | ||
|
|
83bb4a96f9 | ||
|
|
e1350a2e7e | ||
|
|
96e9b19732 | ||
|
|
3e78462163 | ||
|
|
47b85a80a9 | ||
|
|
3af9c48f05 | ||
|
|
739fe89400 | ||
|
|
1f3bc1208c | ||
|
|
f896440ae2 | ||
|
|
96e6711776 | ||
|
|
664e257442 | ||
|
|
2d1e2db9cd | ||
|
|
58ea528ee5 | ||
|
|
5471696664 | ||
|
|
5d768b2b9e | ||
|
|
a0f91635fc | ||
|
|
7bcbca7696 | ||
|
|
52fc9f85ad | ||
|
|
fe89f2bf96 | ||
|
|
a57000a55a | ||
|
|
4091b1b37a | ||
|
|
78c3be4c9b | ||
|
|
8e9575b6aa | ||
|
|
83eace835a | ||
|
|
6277d8e997 | ||
|
|
53213bb57a | ||
|
|
18bee4e298 | ||
|
|
7277c0fbe5 | ||
|
|
b274a70ed9 | ||
|
|
a8eebb9212 | ||
|
|
300f75ef92 | ||
|
|
45218102f3 | ||
|
|
a9774e07ae | ||
|
|
6016568c86 | ||
|
|
95d402c7f5 | ||
|
|
df5f832664 | ||
|
|
6112d724f2 | ||
|
|
2913a68d8f | ||
|
|
4d346437f0 | ||
|
|
904455df9e | ||
|
|
cac9872796 | ||
|
|
d4465681cf | ||
|
|
fd3a8de693 | ||
|
|
4c07af7782 | ||
|
|
2ad03fa89b | ||
|
|
ed37c68990 | ||
|
|
66da511526 | ||
|
|
817f0d11b9 | ||
|
|
c8d3afc91d | ||
|
|
3b18135ebf | ||
|
|
614ade447f | ||
|
|
1bcaa39ffd | ||
|
|
82939763ee | ||
|
|
15ed431819 | ||
|
|
7baeab9fee | ||
|
|
41895c165c | ||
|
|
80f4ced369 | ||
|
|
95a67a813d | ||
|
|
799cf94674 | ||
|
|
2b2eb88a64 | ||
|
|
7cad3f350f | ||
|
|
4c8ec5d1fc | ||
|
|
82b632d772 | ||
|
|
240feba76b | ||
|
|
e55a1e1117 | ||
|
|
8764440087 | ||
|
|
07b958ac4e | ||
|
|
dd39c2fa85 | ||
|
|
515b82d634 | ||
|
|
ecb0bb22ed | ||
|
|
3f1fa37a8d | ||
|
|
a74c894064 | ||
|
|
4d7e937d7a | ||
|
|
fc90795a2c | ||
|
|
129ba4dbe2 | ||
|
|
8582fac076 | ||
|
|
d0f665f6fc | ||
|
|
0254cf730e | ||
|
|
92a99145f8 | ||
|
|
a22ee6ed2b | ||
|
|
1aa89ae311 | ||
|
|
6f4d23d072 | ||
|
|
ecd451ceb3 | ||
|
|
bddc221b60 | ||
|
|
27e844cbc2 | ||
|
|
b8695220ea | ||
|
|
364b30af59 | ||
|
|
860d79828d | ||
|
|
9057dc2c93 | ||
|
|
5223dc7dd5 | ||
|
|
bb77620d0d | ||
|
|
b280ef4c55 | ||
|
|
8e79890251 | ||
|
|
f4a4bb9e55 | ||
|
|
d108776981 | ||
|
|
8a65cc943a | ||
|
|
d2e4d3e5ce | ||
|
|
3440dca70f | ||
|
|
499cc5c075 | ||
|
|
f2961fb4bb | ||
|
|
48082eeaef | ||
|
|
4c56d227a8 | ||
|
|
2fd4885fb1 | ||
|
|
7d756394dd | ||
|
|
f4b03bcce4 | ||
|
|
01bfa5cc5e | ||
|
|
996bf00e85 | ||
|
|
30360fe29d | ||
|
|
88bf517697 | ||
|
|
e6ac206b8d | ||
|
|
00ef998ee5 | ||
|
|
f81e181588 | ||
|
|
08332b7c02 | ||
|
|
86cca49236 | ||
|
|
2718bccccc | ||
|
|
042e36de08 | ||
|
|
ec933011e6 | ||
|
|
2312665792 | ||
|
|
eae8c1000c | ||
|
|
509bd72dde | ||
|
|
fe38903e4b | ||
|
|
1ebf447240 | ||
|
|
4788104931 | ||
|
|
fdd38b97b6 | ||
|
|
409a985142 | ||
|
|
8534061b2f | ||
|
|
275741faed | ||
|
|
4c5d70eacd | ||
|
|
0b43c69993 | ||
|
|
fb5d47bff2 | ||
|
|
7033a1822e | ||
|
|
a840a03e33 | ||
|
|
fb540f7774 | ||
|
|
cb4d5b5064 | ||
|
|
265b4ba02f | ||
|
|
5fc13abb10 | ||
|
|
b7a4e44308 | ||
|
|
a1fb93707f | ||
|
|
a575233f23 | ||
|
|
66f2e155f0 | ||
|
|
5f16fcd292 | ||
|
|
fc6d1d0c7f | ||
|
|
acec6cfb18 | ||
|
|
f5d94d824d | ||
|
|
70d4fcd30e | ||
|
|
5cea6141c4 | ||
|
|
cb543b9841 | ||
|
|
3f172cc2b8 | ||
|
|
98b463b0d3 | ||
|
|
8940301e87 | ||
|
|
493405426c | ||
|
|
fcec2d16b3 | ||
|
|
d9ded4d164 | ||
|
|
141f0e6e41 | ||
|
|
199380c0c3 | ||
|
|
a46e308ea8 | ||
|
|
fb0ee819be | ||
|
|
1b6506f53a | ||
|
|
d539eb4f62 | ||
|
|
cfcd8d16a6 | ||
|
|
6bc1b932c8 | ||
|
|
650615e883 | ||
|
|
8b3b2a4b27 | ||
|
|
2b347fe889 | ||
|
|
8032429faa | ||
|
|
4cb97eeec4 | ||
|
|
1d878c6902 | ||
|
|
e65ce4a879 | ||
|
|
bfa4f62e2b | ||
|
|
1af96d1369 | ||
|
|
dcce3489f4 | ||
|
|
3a5c790a56 | ||
|
|
73493e222f | ||
|
|
26447d22ea | ||
|
|
a55bb60d70 | ||
|
|
4d1e0e6949 | ||
|
|
189570d255 | ||
|
|
64ca73e5cc | ||
|
|
4337515961 | ||
|
|
c0d4a2ee34 | ||
|
|
1f7e6a5d02 | ||
|
|
fd81a5e5b7 | ||
|
|
f3b8e34091 | ||
|
|
5cc91bc79a | ||
|
|
e37a7221b1 | ||
|
|
016023a7bb | ||
|
|
852df98647 | ||
|
|
7696706080 | ||
|
|
2c0aa4f124 | ||
|
|
8bcbc955e0 | ||
|
|
3bb6b59112 | ||
|
|
f6e77db7b0 | ||
|
|
acc587aca2 | ||
|
|
c77bdf17c1 | ||
|
|
0c9bf3bf49 | ||
|
|
f54b9e0797 | ||
|
|
7e08680d31 | ||
|
|
de83edb99b | ||
|
|
fac94485a0 | ||
|
|
9c9ed3518f | ||
|
|
a0779de633 | ||
|
|
50408b08c6 | ||
|
|
767391a4b4 | ||
|
|
a2f5acb48c | ||
|
|
3a3e9338e7 | ||
|
|
8badd2943a | ||
|
|
9a46ab1a6d | ||
|
|
952a5c8e11 | ||
|
|
2a995d94ec | ||
|
|
941d394da9 | ||
|
|
cc1f25c38c | ||
|
|
7aa08109ce | ||
|
|
8ce541ff9a | ||
|
|
75190f5166 | ||
|
|
c697139089 | ||
|
|
717f6864f3 | ||
|
|
e9fa3ee6f2 | ||
|
|
28ce962677 | ||
|
|
f576c5f11e | ||
|
|
f488a75e26 | ||
|
|
55fb503d81 | ||
|
|
afe95a6752 | ||
|
|
2ca8bda8f7 | ||
|
|
2b684fadb1 | ||
|
|
7f2da56a28 | ||
|
|
4a546bd11a | ||
|
|
a0f5254988 | ||
|
|
8521b32306 | ||
|
|
d52278b2d1 | ||
|
|
2fadb6b0e1 | ||
|
|
ad11ed21ac | ||
|
|
5857b9654c | ||
|
|
92d5764e01 | ||
|
|
a4db080786 | ||
|
|
54ac2bfdf5 | ||
|
|
9274083b24 | ||
|
|
d04396e631 | ||
|
|
c4b4584d2d | ||
|
|
1fc09098fe | ||
|
|
b217bdb62a | ||
|
|
1b60247807 | ||
|
|
b75f40c76e |
71
.github/workflows/codeql-analysis.yml
vendored
Normal file
71
.github/workflows/codeql-analysis.yml
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
#
|
||||
# ******** NOTE ********
|
||||
# We have attempted to detect the languages in your repository. Please check
|
||||
# the `language` matrix defined below to confirm you have the correct set of
|
||||
# supported CodeQL languages.
|
||||
#
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [ master ]
|
||||
schedule:
|
||||
- cron: '37 7 * * 2'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'javascript' ]
|
||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
||||
# Learn more:
|
||||
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v1
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v1
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v1
|
||||
46
.github/workflows/nodejs.yml
vendored
Normal file
46
.github/workflows/nodejs.yml
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
name: Node CI
|
||||
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [14.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: Cache ionic site
|
||||
id: ionic-site
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ~/ionic-site/
|
||||
key: ionic-site-${{ hashFiles('**/package-lock.json') }}
|
||||
- name: Setup git
|
||||
run: bash ./scripts/git/config.sh
|
||||
- name: Prepare ionic-site repo
|
||||
if: github.ref == 'refs/heads/master'
|
||||
run: bash ./scripts/docs/prepare.sh
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
- name: Lint
|
||||
run: npm run lint
|
||||
- name: Build
|
||||
run: npm run build
|
||||
- name: Test
|
||||
run: npm run test
|
||||
- name: Readmes
|
||||
run: npm run readmes
|
||||
- name: Deploy doc
|
||||
if: github.ref == 'refs/heads/master'
|
||||
run: bash ./scripts/docs/update_docs.sh
|
||||
env:
|
||||
GITHUB_PROJECT_REPONAME: ${{ github.repository }}
|
||||
GITHUB_SHA1: ${{ github.sha }}
|
||||
38
.github/workflows/npmpublish.yml
vendored
Normal file
38
.github/workflows/npmpublish.yml
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
name: Node.js Package
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [created]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: 14
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
- name: Lint
|
||||
run: npm run lint
|
||||
- name: Build
|
||||
run: npm run build
|
||||
- name: Test
|
||||
run: npm run test
|
||||
- name: Readmes
|
||||
run: npm run readmes
|
||||
|
||||
publish-npm:
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: 14
|
||||
registry-url: https://registry.npmjs.org/
|
||||
- run: npm ci
|
||||
- run: npm run shipit
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
|
||||
1
.husky/.gitignore
vendored
Normal file
1
.husky/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
_
|
||||
4
.husky/pre-commit
Executable file
4
.husky/pre-commit
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
. "$(dirname "$0")/_/husky.sh"
|
||||
|
||||
npx --no-install lint-staged
|
||||
4
.husky/pre-push
Executable file
4
.husky/pre-push
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
. "$(dirname "$0")/_/husky.sh"
|
||||
|
||||
npm test
|
||||
9
.prettierignore
Normal file
9
.prettierignore
Normal file
@@ -0,0 +1,9 @@
|
||||
package.json
|
||||
node_modules
|
||||
.github
|
||||
.vscode
|
||||
dist
|
||||
CHANGELOG.md
|
||||
.husky
|
||||
.prettierignore
|
||||
LICENSE
|
||||
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"typescript.tsdk": "node_modules/typescript/lib"
|
||||
}
|
||||
3948
CHANGELOG.md
3948
CHANGELOG.md
File diff suppressed because it is too large
Load Diff
66
DEVELOPER.md
66
DEVELOPER.md
@@ -2,15 +2,14 @@
|
||||
|
||||
This is a short guide on creating new plugin wrappers for Ionic Native.
|
||||
|
||||
|
||||
## Creating Plugin Wrappers
|
||||
|
||||
First, let's start by creating a new plugin wrapper from template.
|
||||
|
||||
|
||||
```
|
||||
// Call this command, and replace PluginName with the name of the plugin you wish to add
|
||||
// Make sure to capitalize the first letter, or use CamelCase if necessary.
|
||||
|
||||
|
||||
gulp plugin:create -n PluginName
|
||||
|
||||
// add -m flag to get a minimal template to start with
|
||||
@@ -71,7 +70,7 @@ export class Geolocation {
|
||||
|
||||
Here, `plugin` is the name of the plugin package on npm and used when calling `cordova plugin add`.
|
||||
|
||||
`pluginRef` refers to the where on `window` the underlying Cordova plugin is normally exposed. For example, in the case of the Cordova Geolocation plugin, normally you would make calls like `window.navigator.geolocation.getCurrentPosition({}, success, error)`, so the `pluginRef` in this case is `navigator.geolocation`.
|
||||
`pluginRef` refers to the where on `window` the underlying Cordova plugin is normally exposed. For example, in the case of the Cordova Geolocation plugin, normally you would make calls like `window.navigator.geolocation.getCurrentPosition({}, success, error)`, so the `pluginRef` in this case is `navigator.geolocation`.
|
||||
|
||||
#### Class Methods
|
||||
|
||||
@@ -86,7 +85,7 @@ Let's take a look at `getCurrentPosition` first.
|
||||
|
||||
It's just a stub. The `return` is only there to keep the TypeScript type-checker from complaining since we indicate that `getCurrentPosition` returns a `Promise<Geoposition>`.
|
||||
|
||||
By default, the `@Cordova` decorator wraps the plugin callbacks in a Promise that resolves when the success callback is called and rejects when the error callback is called. It also ensures that Cordova and the underlying plugin are available, and prints helpful diagnostics if they aren't.
|
||||
By default, the `@Cordova` decorator wraps the plugin callbacks in a Promise that resolves when the success callback is called and rejects when the error callback is called. It also ensures that Cordova and the underlying plugin are available, and prints helpful diagnostics if they aren't.
|
||||
|
||||
Next, let's look at the `watchPosition` method.
|
||||
|
||||
@@ -103,7 +102,7 @@ The `@Cordova` decorator has a few more options now.
|
||||
|
||||
`observable` indicates that this method may call its callbacks multiple times, so `@Cordova` wraps it in an [`Observable`](https://github.com/ionic-team/ionic-native#promises-and-observables) instead of a Promise.
|
||||
|
||||
`callbackOrder` refers to the method signature of the underlying Cordova plugin, and tells Ionic Native which arguments are the callbacks to map to the wrapping Promise or Observable. In this case, the signature is [`watchPosition(success, error, options)`](https://github.com/apache/cordova-plugin-geolocation#navigatorgeolocationwatchposition), so we need to tell `@Cordova` that the callbacks are the first arguments, not the last arguments. For rare cases, you can also specify the options `successIndex` and `errorIndex` to indicate where in the argument list the callbacks are located.
|
||||
`callbackOrder` refers to the method signature of the underlying Cordova plugin, and tells Ionic Native which arguments are the callbacks to map to the wrapping Promise or Observable. In this case, the signature is [`watchPosition(success, error, options)`](https://github.com/apache/cordova-plugin-geolocation#navigatorgeolocationwatchposition), so we need to tell `@Cordova` that the callbacks are the first arguments, not the last arguments. For rare cases, you can also specify the options `successIndex` and `errorIndex` to indicate where in the argument list the callbacks are located.
|
||||
|
||||
`clearFunction` is used in conjunction with the `observable` option and indicates the function to be called when the Observable is disposed.
|
||||
|
||||
@@ -126,43 +125,50 @@ We have very precise rules over how our git commit messages can be formatted. Th
|
||||
`type(scope): subject`
|
||||
|
||||
#### Type
|
||||
|
||||
Must be one of the following:
|
||||
|
||||
* **fix**: A bug fix
|
||||
* **feat**: A new feature
|
||||
* **docs**: Documentation only changes
|
||||
* **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
|
||||
* **refactor**: A code change that neither fixes a bug nor adds a feature
|
||||
* **perf**: A code change that improves performance
|
||||
* **test**: Adding missing tests
|
||||
* **chore**: Changes to the build process or auxiliary tools and libraries such as documentation generation
|
||||
- **fix**: A bug fix
|
||||
- **feat**: A new feature
|
||||
- **docs**: Documentation only changes
|
||||
- **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
|
||||
- **refactor**: A code change that neither fixes a bug nor adds a feature
|
||||
- **perf**: A code change that improves performance
|
||||
- **test**: Adding missing tests
|
||||
- **chore**: Changes to the build process or auxiliary tools and libraries such as documentation generation
|
||||
|
||||
#### Scope
|
||||
|
||||
The scope could be anything specifying place of the commit change. For example, the name of the plugin being changed
|
||||
|
||||
#### Subject
|
||||
|
||||
The subject contains succinct description of the change:
|
||||
|
||||
* use the imperative, present tense: "change" not "changed" nor "changes"
|
||||
* do not capitalize first letter
|
||||
* do not place a period (.) at the end
|
||||
* entire length of the commit message must not go over 50 characters
|
||||
|
||||
- use the imperative, present tense: "change" not "changed" nor "changes"
|
||||
- do not capitalize first letter
|
||||
- do not place a period (.) at the end
|
||||
- entire length of the commit message must not go over 50 characters
|
||||
|
||||
### Ionic Native Decorators
|
||||
|
||||
#### Plugin
|
||||
|
||||
A decorator to wrap the main plugin class, and any other classes that will use `@Cordova` or `@CordovaProperty` decorators. This decorator accepts the following configuration:
|
||||
- *pluginName*: Plugin name, this should match the class name
|
||||
- *plugin*: The plugin's NPM package, or Github URL if NPM is not available.
|
||||
- *pluginRef*: The plugin object reference. Example: 'cordova.file'.
|
||||
- *repo*: The plugin's Github Repository URL
|
||||
- *install*: (optional) Install command. This is used in case a plugin has a custom install command (takes variables).
|
||||
- *platforms*: An array of strings indicating the supported platforms.
|
||||
|
||||
- _pluginName_: Plugin name, this should match the class name
|
||||
- _plugin_: The plugin's NPM package, or Github URL if NPM is not available.
|
||||
- _pluginRef_: The plugin object reference. Example: 'cordova.file'.
|
||||
- _repo_: The plugin's Github Repository URL
|
||||
- _install_: (optional) Install command. This is used in case a plugin has a custom install command (takes variables).
|
||||
- _platforms_: An array of strings indicating the supported platforms.
|
||||
|
||||
#### Cordova
|
||||
|
||||
Checks if the plugin and the method are available before executing. By default, the decorator will wrap the callbacks of the function and return a Promise. This decorator takes the following configuration options:
|
||||
|
||||
- **observable**: set to true to return an Observable
|
||||
- **methodName**: an optional name of the cordova plugins method name (if different from wrappers method name)
|
||||
- **clearFunction**: an optional name of a method to clear the observable we returned
|
||||
- **clearWithArgs**: This can be used if clearFunction is set. Set this to true to call the clearFunction with the same arguments used in the initial function.
|
||||
- **sync**: set to true if the method should return the value as-is without wrapping with Observable/Promise
|
||||
@@ -179,6 +185,7 @@ Checks if the plugin and the method are available before executing. By default,
|
||||
- **platforms**: array of strings indicating supported platforms. Specify this if the supported platforms doesn't match the plugin's supported platforms.
|
||||
|
||||
Example:
|
||||
|
||||
```ts
|
||||
@Cordova()
|
||||
someMethod(): Promise<any> { return; }
|
||||
@@ -188,20 +195,25 @@ syncMethod(): number { }
|
||||
```
|
||||
|
||||
#### CordovaProperty
|
||||
|
||||
Checks if the plugin and property exist before getting/setting the property's value
|
||||
|
||||
Example:
|
||||
|
||||
```ts
|
||||
@CordovaProperty()
|
||||
someProperty: string;
|
||||
```
|
||||
|
||||
#### CordovaCheck
|
||||
Checks if the plugin exists before performing a custom written method. By default, the method will return a promise that will reject with an error if the plugin is not available. This wrapper accepts two optional configurations:
|
||||
|
||||
Checks if the plugin exists before performing a custom written method. By default, the method will return a promise that will reject with an error if the plugin is not available. This wrapper accepts two optional configurations:
|
||||
|
||||
- **observable**: set to true to return an empty Observable if the plugin isn't available
|
||||
- **sync**: set to true to return nothing if the plugin isn't available
|
||||
|
||||
Example:
|
||||
|
||||
```ts
|
||||
@CordovaCheck()
|
||||
someMethod(): Promise<any> {
|
||||
@@ -210,9 +222,11 @@ someMethod(): Promise<any> {
|
||||
```
|
||||
|
||||
#### CordovaFunctionOverride
|
||||
|
||||
Wrap a stub function in a call to a Cordova plugin, checking if both Cordova and the required plugin are installed.
|
||||
|
||||
Example:
|
||||
|
||||
```ts
|
||||
@CordovaFunctionOverride()
|
||||
someMethod(): Observable<any> { return; }
|
||||
|
||||
111
README.md
111
README.md
@@ -6,6 +6,14 @@ Ionic Native is a curated set of wrappers for Cordova plugins that make adding a
|
||||
|
||||
Ionic Native wraps plugin callbacks in a Promise or Observable, providing a common interface for all plugins and making it easy to use plugins with Angular change detection.
|
||||
|
||||
Ionic Native is available in two versions:
|
||||
1. Ionic Native [Community Edition](https://ionicframework.com/docs/native/community), featuring open source, community-maintained Cordova and Capacitor plugins and APIs.
|
||||
2. Ionic Native [Enterprise Edition](https://ionicframework.com/docs/enterprise), featuring a library of Premier plugins and solutions that are fully supported and maintained by the Ionic team, with access to Ionic experts and a guaranteed response SLA to mission-critical app development.
|
||||
|
||||
## Capacitor Support
|
||||
|
||||
In addition to Cordova, Ionic Native also works with [Capacitor](https://capacitor.ionicframework.com), Ionic's official native runtime. Basic usage below. For complete details, [see the Capacitor documentation](https://capacitor.ionicframework.com/docs/cordova/using-cordova-plugins).
|
||||
|
||||
## Installation
|
||||
|
||||
Run following command to install Ionic Native in your project.
|
||||
@@ -23,7 +31,8 @@ For the full Ionic Native documentation, please visit [https://ionicframework.co
|
||||
### Basic Usage
|
||||
|
||||
#### Ionic/Angular apps
|
||||
To use a plugin, import and add the plugin provider to your `@NgModule`, and then inject it where you wish to use it.
|
||||
|
||||
To use a plugin, import and add the plugin provider to your `@NgModule`, and then inject it where you wish to use it.
|
||||
Make sure to import the injectable class from the `/ngx` directory as shown in the following examples:
|
||||
|
||||
```typescript
|
||||
@@ -76,61 +85,106 @@ export class MyComponent {
|
||||
}
|
||||
```
|
||||
|
||||
#### Ionic/React apps
|
||||
|
||||
React apps must use Capacitor to build native mobile apps. However, Ionic Native (and therefore, Cordova plugins) can still be used.
|
||||
|
||||
```bash
|
||||
# Install Core library (once per project)
|
||||
npm install @ionic-native/core
|
||||
|
||||
# Install Ionic Native TypeScript wrapper
|
||||
npm install @ionic-native/barcode-scanner
|
||||
|
||||
# Install Cordova plugin
|
||||
npm install phonegap-plugin-barcodescanner
|
||||
|
||||
# Update native platform project(s) to include newly added plugin
|
||||
ionic cap sync
|
||||
```
|
||||
|
||||
Import the plugin object then use its static methods:
|
||||
|
||||
```typescript
|
||||
import { BarcodeScanner } from '@ionic-native/barcode-scanner';
|
||||
|
||||
const Tab1: React.FC = () => {
|
||||
const openScanner = async () => {
|
||||
const data = await BarcodeScanner.scan();
|
||||
console.log(`Barcode data: ${data.text}`);
|
||||
};
|
||||
return (
|
||||
<IonPage>
|
||||
<IonHeader>
|
||||
<IonToolbar>
|
||||
<IonTitle>Tab 1</IonTitle>
|
||||
</IonToolbar>
|
||||
</IonHeader>
|
||||
<IonContent>
|
||||
<IonButton onClick={openScanner}>Scan barcode</IonButton>
|
||||
</IonContent>
|
||||
</IonPage>
|
||||
);
|
||||
};
|
||||
```
|
||||
|
||||
#### ES2015+/TypeScript
|
||||
|
||||
These modules can work in any ES2015+/TypeScript app (including Angular/Ionic apps). To use any plugin, import the class from the appropriate package, and use it's static methods.
|
||||
|
||||
```js
|
||||
import { Camera } from '@ionic-native/camera';
|
||||
|
||||
document.addEventListener('deviceready', () => {
|
||||
Camera.getPicture()
|
||||
.then((data) => console.log('Took a picture!', data))
|
||||
.catch((e) => console.log('Error occurred while taking a picture', e));
|
||||
.then(data => console.log('Took a picture!', data))
|
||||
.catch(e => console.log('Error occurred while taking a picture', e));
|
||||
});
|
||||
```
|
||||
|
||||
#### AngularJS
|
||||
|
||||
Ionic Native generates an AngularJS module in runtime and prepares a service for each plugin. To use the plugins in your AngularJS app:
|
||||
|
||||
1. Download the latest bundle from the [Github releases](https://github.com/ionic-team/ionic-native/releases) page.
|
||||
2. Include it in `index.html` before your app's code.
|
||||
3. Inject `ionic.native` module in your app.
|
||||
4. Inject any plugin you would like to use with a `$cordova` prefix.
|
||||
|
||||
```js
|
||||
angular.module('myApp', ['ionic.native'])
|
||||
.controller('MyPageController', function($cordovaCamera) {
|
||||
$cordovaCamera.getPicture()
|
||||
.then(
|
||||
function(data) {
|
||||
console.log('Took a picture!', data);
|
||||
},
|
||||
function(err) {
|
||||
console.log('Error occurred while taking a picture', err);
|
||||
}
|
||||
);
|
||||
});
|
||||
angular.module('myApp', ['ionic.native']).controller('MyPageController', function ($cordovaCamera) {
|
||||
$cordovaCamera.getPicture().then(
|
||||
function (data) {
|
||||
console.log('Took a picture!', data);
|
||||
},
|
||||
function (err) {
|
||||
console.log('Error occurred while taking a picture', err);
|
||||
}
|
||||
);
|
||||
});
|
||||
```
|
||||
|
||||
#### Vanilla JS
|
||||
|
||||
To use Ionic Native in any other setup:
|
||||
|
||||
1. Download the latest bundle from the [Github releases](https://github.com/ionic-team/ionic-native/releases) page.
|
||||
2. Include it in `index.html` before your app's code.
|
||||
3. Access any plugin using the global `IonicNative` variable.
|
||||
|
||||
```js
|
||||
document.addEventListener('deviceready', function() {
|
||||
IonicNative.Camera.getPicture()
|
||||
.then(
|
||||
function(data) {
|
||||
console.log('Took a picture!', data);
|
||||
},
|
||||
function(err) {
|
||||
console.log('Error occurred while taking a picture', err);
|
||||
}
|
||||
);
|
||||
document.addEventListener('deviceready', function () {
|
||||
IonicNative.Camera.getPicture().then(
|
||||
function (data) {
|
||||
console.log('Took a picture!', data);
|
||||
},
|
||||
function (err) {
|
||||
console.log('Error occurred while taking a picture', err);
|
||||
}
|
||||
);
|
||||
});
|
||||
```
|
||||
|
||||
|
||||
### Mocking and Browser Development (Ionic/Angular apps only)
|
||||
|
||||
Ionic Native makes it possible to mock plugins and develop nearly the entirety of your app in the browser or in `ionic serve`.
|
||||
@@ -190,8 +244,8 @@ class CameraMock extends Camera {
|
||||
entryComponents: [MyApp, HomePage],
|
||||
providers: [
|
||||
{ provide: ErrorHandler, useClass: IonicErrorHandler },
|
||||
{ provide: Camera, useClass: CameraMock }
|
||||
]
|
||||
{ provide: Camera, useClass: CameraMock },
|
||||
],
|
||||
})
|
||||
export class AppModule {}
|
||||
```
|
||||
@@ -206,7 +260,6 @@ Spent way too long diagnosing an issue only to realize a plugin wasn't firing or
|
||||
|
||||
Let us know or submit a PR! Take a look at [the Developer Guide](https://github.com/ionic-team/ionic-native/blob/master/DEVELOPER.md) for more on how to contribute. :heart:
|
||||
|
||||
|
||||
# Credits
|
||||
|
||||
Ibby Hadeed - [@ihadeed](https://github.com/ihadeed)
|
||||
|
||||
@@ -11,7 +11,7 @@ const flagConfig = {
|
||||
string: ['port', 'version', 'ngVersion', 'animations'],
|
||||
boolean: ['dry-run'],
|
||||
alias: { p: 'port', v: 'version', a: 'ngVersion' },
|
||||
default: { port: 8000 }
|
||||
default: { port: 8000 },
|
||||
},
|
||||
flags = minimist(process.argv.slice(2), flagConfig);
|
||||
|
||||
@@ -24,7 +24,7 @@ gulp.task('lint', () => {
|
||||
.pipe(
|
||||
tslint({
|
||||
formatter: 'verbose',
|
||||
configuration: 'tslint.json'
|
||||
configuration: 'tslint.json',
|
||||
})
|
||||
)
|
||||
.pipe(tslint.report());
|
||||
|
||||
@@ -3,30 +3,30 @@ jobs:
|
||||
build:
|
||||
working_directory: ~/ionic-native/
|
||||
docker:
|
||||
- image: node:10
|
||||
- image: node:14
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
key: ionic-site-{{ checksum "package.json" }}
|
||||
key: ionic-site-{{ checksum "package.json" }}
|
||||
- run:
|
||||
name: Prepare ionic-site repo
|
||||
command: |
|
||||
if [ "${CIRCLE_BRANCH}" == "master" ]; then
|
||||
./scripts/docs/prepare.sh
|
||||
fi
|
||||
name: Prepare ionic-site repo
|
||||
command: |
|
||||
if [ "${CIRCLE_BRANCH}" == "master" ]; then
|
||||
./scripts/docs/prepare.sh
|
||||
fi
|
||||
- save_cache:
|
||||
key: ionic-site-{{ checksum "package.json" }}
|
||||
paths:
|
||||
- ~/ionic-site/
|
||||
key: ionic-site-{{ checksum "package.json" }}
|
||||
paths:
|
||||
- ~/ionic-site/
|
||||
- restore_cache:
|
||||
key: node_modules_{{ checksum "package.json" }}
|
||||
key: node_modules_{{ checksum "package.json" }}
|
||||
- run:
|
||||
name: Install node modules
|
||||
command: npm ci
|
||||
name: Install node modules
|
||||
command: npm ci
|
||||
- save_cache:
|
||||
key: node_modules_{{ checksum "package.json" }}
|
||||
paths:
|
||||
- ~/ionic-native/node_modules/
|
||||
key: node_modules_{{ checksum "package.json" }}
|
||||
paths:
|
||||
- ~/ionic-native/node_modules/
|
||||
- run:
|
||||
name: Run tslint
|
||||
command: npm run lint
|
||||
22970
package-lock.json
generated
22970
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
90
package.json
90
package.json
@@ -1,11 +1,12 @@
|
||||
{
|
||||
"name": "ionic-native",
|
||||
"version": "5.7.0",
|
||||
"version": "5.35.0",
|
||||
"description": "Native plugin wrappers for Cordova and Ionic with TypeScript, ES6+, Promise and Observable support",
|
||||
"homepage": "https://ionicframework.com/",
|
||||
"author": "Ionic Team <hi@ionic.io> (https://ionic.io)",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"prepare": "is-ci || husky install",
|
||||
"test": "jest",
|
||||
"test:watch": "jest --watch",
|
||||
"build:core": "tsc -p tsconfig.core.json",
|
||||
@@ -18,52 +19,62 @@
|
||||
"lint": "gulp lint",
|
||||
"readmes": "gulp readmes",
|
||||
"docs-json": "ts-node -P scripts/tsconfig.json scripts/docs-json",
|
||||
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
|
||||
"postchangelog": "git commit -am \"chore(): update changelog\"",
|
||||
"shipit": "npm run build && npm run readmes && npm run npmpub"
|
||||
"version": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0 && git add CHANGELOG.md",
|
||||
"shipit": "npm run build && npm run readmes && npm run npmpub",
|
||||
"prettier": "prettier src/**/* --write"
|
||||
},
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular/common": "^7.2.15",
|
||||
"@angular/compiler": "^7.2.15",
|
||||
"@angular/compiler-cli": "^7.2.15",
|
||||
"@angular/core": "^7.2.15",
|
||||
"@angular/common": "^11.2.14",
|
||||
"@angular/compiler": "^11.2.14",
|
||||
"@angular/compiler-cli": "^11.2.14",
|
||||
"@angular/core": "^11.2.14",
|
||||
"@types/cordova": "0.0.34",
|
||||
"@types/fs-extra": "^7.0.0",
|
||||
"@types/jest": "^24.0.13",
|
||||
"@types/lodash": "^4.14.134",
|
||||
"@types/node": "^10.14.8",
|
||||
"@types/rimraf": "^2.0.2",
|
||||
"@types/webpack": "^4.4.32",
|
||||
"ajv": "^6.10.0",
|
||||
"@types/fs-extra": "^9.0.12",
|
||||
"@types/jest": "^26.0.24",
|
||||
"@types/lodash": "^4.14.171",
|
||||
"@types/node": "^12.20.18",
|
||||
"@types/rimraf": "^3.0.1",
|
||||
"@types/webpack": "^5.28.0",
|
||||
"async-promise-queue": "^1.0.5",
|
||||
"conventional-changelog-cli": "^2.0.21",
|
||||
"cz-conventional-changelog": "^2.1.0",
|
||||
"dgeni": "^0.4.12",
|
||||
"conventional-changelog-cli": "^2.1.1",
|
||||
"cz-conventional-changelog": "^3.3.0",
|
||||
"dgeni": "^0.4.14",
|
||||
"dgeni-packages": "0.16.10",
|
||||
"fs-extra": "^8.0.1",
|
||||
"gulp": "3.9.1",
|
||||
"gulp-rename": "^1.4.0",
|
||||
"gulp-replace": "^1.0.0",
|
||||
"fs-extra": "^10.0.0",
|
||||
"gulp": "^4.0.2",
|
||||
"gulp-rename": "^2.0.0",
|
||||
"gulp-replace": "^1.1.3",
|
||||
"gulp-tslint": "^8.1.4",
|
||||
"jest": "^24.8.0",
|
||||
"lodash": "^4.17.11",
|
||||
"minimist": "1.2.0",
|
||||
"husky": "^7.0.1",
|
||||
"is-ci": "^3.0.0",
|
||||
"jest": "^27.0.6",
|
||||
"lint-staged": "^11.1.1",
|
||||
"lodash": "^4.17.21",
|
||||
"minimist": "^1.2.5",
|
||||
"natives": "^1.1.6",
|
||||
"rimraf": "^2.6.3",
|
||||
"rxjs": "^6.5.2",
|
||||
"ts-jest": "^24.0.2",
|
||||
"ts-node": "^8.2.0",
|
||||
"tslint": "^5.17.0",
|
||||
"prettier": "^2.3.2",
|
||||
"rimraf": "^3.0.2",
|
||||
"rollup": "^2.55.1",
|
||||
"rxjs": "^6.6.7",
|
||||
"ts-jest": "^27.0.4",
|
||||
"ts-node": "^10.1.0",
|
||||
"tslint": "~6.1.0",
|
||||
"tslint-config-prettier": "^1.18.0",
|
||||
"tslint-ionic-rules": "0.0.21",
|
||||
"typedoc": "^0.14.2",
|
||||
"typescript": "3.2.4",
|
||||
"uglifyjs-webpack-plugin": "^2.1.3",
|
||||
"unminified-webpack-plugin": "^2.0.0",
|
||||
"webpack": "^4.33.0",
|
||||
"winston": "^3.2.1",
|
||||
"zone.js": "^0.8.29"
|
||||
"typedoc": "^0.18.0",
|
||||
"typescript": "4.1.6",
|
||||
"typescript-tslint-plugin": "^1.0.1",
|
||||
"uglifyjs-webpack-plugin": "^2.2.0",
|
||||
"unminified-webpack-plugin": "^3.0.0",
|
||||
"webpack": "^5.48.0",
|
||||
"winston": "^3.3.3",
|
||||
"zone.js": "^0.11.4"
|
||||
},
|
||||
"jest": {
|
||||
"testEnvironment": "jsdom",
|
||||
"transform": {
|
||||
"^.+\\.tsx?$": "ts-jest"
|
||||
},
|
||||
@@ -87,5 +98,10 @@
|
||||
"commitizen": {
|
||||
"path": "./node_modules/cz-conventional-changelog"
|
||||
}
|
||||
},
|
||||
"lint-staged": {
|
||||
"*": [
|
||||
"prettier src/**/* --write"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
16
prettier.config.js
Normal file
16
prettier.config.js
Normal file
@@ -0,0 +1,16 @@
|
||||
module.exports = {
|
||||
printWidth: 120,
|
||||
tabWidth: 2,
|
||||
useTabs: false,
|
||||
semi: true,
|
||||
singleQuote: true,
|
||||
trailingComma: 'es5',
|
||||
bracketSpacing: true,
|
||||
jsxBracketSameLine: false,
|
||||
arrowParens: 'avoid',
|
||||
rangeStart: 0,
|
||||
rangeEnd: Infinity,
|
||||
requirePragma: false,
|
||||
insertPragma: false,
|
||||
proseWrap: 'preserve',
|
||||
};
|
||||
@@ -18,7 +18,11 @@ export function getDecorator(node: ts.Node, index = 0): ts.Decorator {
|
||||
}
|
||||
|
||||
export function hasDecorator(decoratorName: string, node: ts.Node): boolean {
|
||||
return node.decorators && node.decorators.length && node.decorators.findIndex(d => getDecoratorName(d) === decoratorName) > -1;
|
||||
return (
|
||||
node.decorators &&
|
||||
node.decorators.length &&
|
||||
node.decorators.findIndex(d => getDecoratorName(d) === decoratorName) > -1
|
||||
);
|
||||
}
|
||||
|
||||
export function getDecoratorName(decorator: any) {
|
||||
@@ -35,7 +39,7 @@ export function getDecoratorArgs(decorator: any) {
|
||||
const args = {};
|
||||
|
||||
properties.forEach(prop => {
|
||||
let val;
|
||||
let val: number | boolean;
|
||||
|
||||
switch (prop.initializer.kind) {
|
||||
case ts.SyntaxKind.StringLiteral:
|
||||
@@ -96,9 +100,11 @@ export function convertValueToLiteral(val: any) {
|
||||
* @returns Typescript Object Literal Expression
|
||||
*/
|
||||
function objectToObjectLiteral(obj: { [key: string]: any }): ts.ObjectLiteralExpression {
|
||||
const newProperties: ts.ObjectLiteralElementLike[] = Object.keys(obj).map((key: string): ts.ObjectLiteralElementLike => {
|
||||
return ts.createPropertyAssignment(ts.createLiteral(key), convertValueToLiteral(obj[key]) as ts.Expression);
|
||||
});
|
||||
const newProperties: ts.ObjectLiteralElementLike[] = Object.keys(obj).map(
|
||||
(key: string): ts.ObjectLiteralElementLike => {
|
||||
return ts.createPropertyAssignment(ts.createLiteral(key), convertValueToLiteral(obj[key]) as ts.Expression);
|
||||
}
|
||||
);
|
||||
|
||||
return ts.createObjectLiteral(newProperties);
|
||||
}
|
||||
@@ -116,10 +122,14 @@ function arrayToArrayLiteral(list: any[]): ts.ArrayLiteralExpression {
|
||||
|
||||
export function getMethodsForDecorator(decoratorName: string) {
|
||||
switch (decoratorName) {
|
||||
case 'CordovaProperty': return ['cordovaPropertyGet', 'cordovaPropertySet'];
|
||||
case 'InstanceProperty': return ['instancePropertyGet', 'instancePropertySet'];
|
||||
case 'CordovaCheck': return ['checkAvailability'];
|
||||
case 'InstanceCheck': return ['instanceAvailability'];
|
||||
case 'CordovaProperty':
|
||||
return ['cordovaPropertyGet', 'cordovaPropertySet'];
|
||||
case 'InstanceProperty':
|
||||
return ['instancePropertyGet', 'instancePropertySet'];
|
||||
case 'CordovaCheck':
|
||||
return ['checkAvailability'];
|
||||
case 'InstanceCheck':
|
||||
return ['instanceAvailability'];
|
||||
}
|
||||
|
||||
return [camelCase(decoratorName)];
|
||||
|
||||
@@ -1,32 +1,34 @@
|
||||
import * as ts from 'typescript';
|
||||
import * as fs from 'fs-extra';
|
||||
import * as path from 'path';
|
||||
import * as ngc from '@angular/compiler-cli';
|
||||
import * as rimraf from 'rimraf';
|
||||
import * as rollup from 'rollup';
|
||||
import { generateDeclarations } from './transpile';
|
||||
import { clone } from 'lodash';
|
||||
import { EmitFlags } from '@angular/compiler-cli';
|
||||
import { EmitFlags, createCompilerHost, CompilerOptions, CompilerHost, createProgram } from '@angular/compiler-cli';
|
||||
import { importsTransformer } from './transformers/imports';
|
||||
import { pluginClassTransformer } from './transformers/plugin-class';
|
||||
import { COMPILER_OPTIONS, PLUGIN_PATHS, ROOT } from './helpers';
|
||||
|
||||
export function getProgram(rootNames: string[] = createSourceFiles()) {
|
||||
const options: ngc.CompilerOptions = clone(COMPILER_OPTIONS);
|
||||
const options: CompilerOptions = clone(COMPILER_OPTIONS);
|
||||
options.basePath = ROOT;
|
||||
options.moduleResolution = ts.ModuleResolutionKind.NodeJs;
|
||||
options.module = ts.ModuleKind.ES2015;
|
||||
options.target = ts.ScriptTarget.ES5;
|
||||
options.lib = ['dom', 'es2017'];
|
||||
options.inlineSourceMap = true;
|
||||
options.importHelpers = true;
|
||||
options.inlineSources = true;
|
||||
options.enableIvy = false;
|
||||
|
||||
delete options.baseUrl;
|
||||
|
||||
const host: ngc.CompilerHost = ngc.createCompilerHost({ options });
|
||||
|
||||
return ngc.createProgram({
|
||||
const host: CompilerHost = createCompilerHost({ options });
|
||||
return createProgram({
|
||||
rootNames,
|
||||
options,
|
||||
host
|
||||
host,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -34,8 +36,9 @@ export function getProgram(rootNames: string[] = createSourceFiles()) {
|
||||
export function transpileNgxCore() {
|
||||
getProgram([path.resolve(ROOT, 'src/@ionic-native/core/index.ts')]).emit({
|
||||
emitFlags: EmitFlags.Metadata,
|
||||
emitCallback: ({ program, writeFile, customTransformers, cancellationToken, targetSourceFile }) =>
|
||||
program.emit(targetSourceFile, writeFile, cancellationToken, true, customTransformers)
|
||||
emitCallback: ({ program, writeFile, customTransformers, cancellationToken, targetSourceFile }) => {
|
||||
return program.emit(targetSourceFile, writeFile, cancellationToken, true, customTransformers);
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
@@ -43,11 +46,8 @@ export function transpileNgx() {
|
||||
getProgram().emit({
|
||||
emitFlags: EmitFlags.Metadata,
|
||||
customTransformers: {
|
||||
beforeTs: [
|
||||
importsTransformer(true),
|
||||
pluginClassTransformer(true)
|
||||
]
|
||||
}
|
||||
beforeTs: [importsTransformer(true), pluginClassTransformer(true)],
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
@@ -55,30 +55,59 @@ export function generateDeclarationFiles() {
|
||||
generateDeclarations(PLUGIN_PATHS.map(p => p.replace('index.ts', 'ngx/index.ts')));
|
||||
}
|
||||
|
||||
export function generateLegacyBundles() {
|
||||
[
|
||||
path.resolve(ROOT, 'dist/@ionic-native/core/index.js'),
|
||||
...PLUGIN_PATHS.map(p =>
|
||||
p.replace(path.join(ROOT, 'src'), path.join(ROOT, 'dist')).replace('index.ts', 'ngx/index.js')
|
||||
),
|
||||
].forEach(p =>
|
||||
rollup
|
||||
.rollup({
|
||||
input: p,
|
||||
onwarn(warning, warn) {
|
||||
if (warning.code === 'UNUSED_EXTERNAL_IMPORT') return;
|
||||
warn(warning);
|
||||
},
|
||||
external: ['@angular/core', '@ionic-native/core', 'rxjs', 'tslib'],
|
||||
})
|
||||
.then(bundle =>
|
||||
bundle.write({
|
||||
file: path.join(path.dirname(p), 'bundle.js'),
|
||||
format: 'cjs',
|
||||
})
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// remove reference to @ionic-native/core decorators
|
||||
export function modifyMetadata() {
|
||||
PLUGIN_PATHS.map(p => p.replace(path.join(ROOT, 'src'), path.join(ROOT, 'dist')).replace('index.ts', 'ngx/index.metadata.json'))
|
||||
.forEach(p => {
|
||||
const content = fs.readJSONSync(p);
|
||||
let _prop;
|
||||
for (const prop in content[0].metadata) {
|
||||
_prop = content[0].metadata[prop];
|
||||
removeIonicNativeDecorators(_prop);
|
||||
debugger;
|
||||
PLUGIN_PATHS.map(p =>
|
||||
p.replace(path.join(ROOT, 'src'), path.join(ROOT, 'dist')).replace('index.ts', 'ngx/index.metadata.json')
|
||||
).forEach(p => {
|
||||
const content = fs.readJSONSync(p);
|
||||
let _prop: { members: { [x: string]: any[] } };
|
||||
for (const prop in content[0].metadata) {
|
||||
_prop = content[0].metadata[prop];
|
||||
removeIonicNativeDecorators(_prop);
|
||||
|
||||
if (_prop.members) {
|
||||
for (const memberProp in _prop.members) {
|
||||
removeIonicNativeDecorators(_prop.members[memberProp][0]);
|
||||
}
|
||||
if (_prop.members) {
|
||||
for (const memberProp in _prop.members) {
|
||||
removeIonicNativeDecorators(_prop.members[memberProp][0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fs.writeJSONSync(p, content);
|
||||
});
|
||||
fs.writeJSONSync(p, content);
|
||||
});
|
||||
}
|
||||
|
||||
function removeIonicNativeDecorators(node: any) {
|
||||
if (node.decorators && node.decorators.length) {
|
||||
node.decorators = node.decorators.filter((d, i) => d.expression.module !== '@ionic-native/core');
|
||||
node.decorators = node.decorators.filter(
|
||||
(d: { expression: { module: string } }) => d.expression.module !== '@ionic-native/core'
|
||||
);
|
||||
}
|
||||
|
||||
if (node.decorators && !node.decorators.length) delete node.decorators;
|
||||
@@ -99,7 +128,5 @@ function createSourceFiles(): string[] {
|
||||
}
|
||||
|
||||
export function cleanupNgx() {
|
||||
PLUGIN_PATHS.forEach((indexPath: string) =>
|
||||
rimraf.sync(indexPath.replace('index.ts', 'ngx'))
|
||||
);
|
||||
PLUGIN_PATHS.forEach((indexPath: string) => rimraf.sync(indexPath.replace('index.ts', 'ngx')));
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ export function extractInjectables() {
|
||||
injectableClasses.push({
|
||||
file: tsSourceFile.path,
|
||||
className: (node as ts.ClassDeclaration).name.text,
|
||||
dirName: tsSourceFile.path.split(/[\\\/]+/).reverse()[1]
|
||||
dirName: tsSourceFile.path.split(/[\\\/]+/).reverse()[1],
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
@@ -4,7 +4,10 @@ import { getMethodsForDecorator } from '../helpers';
|
||||
function transformImports(file: ts.SourceFile, ctx: ts.TransformationContext, ngcBuild?: boolean) {
|
||||
// remove angular imports
|
||||
if (!ngcBuild) {
|
||||
file.statements = (file.statements as any).filter((s: any) => !(s.kind === ts.SyntaxKind.ImportDeclaration && s.moduleSpecifier.text === '@angular/core'));
|
||||
// @ts-expect-error
|
||||
file.statements = (file.statements as any).filter(
|
||||
(s: any) => !(s.kind === ts.SyntaxKind.ImportDeclaration && s.moduleSpecifier.text === '@angular/core')
|
||||
);
|
||||
}
|
||||
|
||||
// find the @ionic-native/core import statement
|
||||
@@ -19,9 +22,9 @@ function transformImports(file: ts.SourceFile, ctx: ts.TransformationContext, ng
|
||||
|
||||
const decoratorRegex: RegExp = /@([a-zA-Z]+)\(/g;
|
||||
|
||||
const ignored: string [] = ['Plugin', 'Component', 'Injectable'];
|
||||
const ignored: string[] = ['Plugin', 'Component', 'Injectable'];
|
||||
|
||||
const keep: string [] = ['getPromise', 'checkAvailability'];
|
||||
const keep: string[] = ['getPromise', 'checkAvailability'];
|
||||
|
||||
let m;
|
||||
|
||||
@@ -35,17 +38,17 @@ function transformImports(file: ts.SourceFile, ctx: ts.TransformationContext, ng
|
||||
if (decorators.length) {
|
||||
let methods = [];
|
||||
|
||||
decorators.forEach(d => methods = getMethodsForDecorator(d).concat(methods));
|
||||
decorators.forEach(d => (methods = getMethodsForDecorator(d).concat(methods)));
|
||||
|
||||
const methodElements = methods.map(m => ts.createIdentifier(m));
|
||||
const methodNames = methodElements.map((el) => el.escapedText);
|
||||
const methodNames = methodElements.map(el => el.escapedText);
|
||||
|
||||
importStatement.importClause.namedBindings.elements = [
|
||||
ts.createIdentifier('IonicNativePlugin'),
|
||||
...methodElements,
|
||||
...importStatement.importClause.namedBindings.elements.filter(
|
||||
el => keep.indexOf(el.name.text) !== -1 && methodNames.indexOf(el.name.text) === -1
|
||||
)
|
||||
),
|
||||
];
|
||||
|
||||
if (ngcBuild) {
|
||||
@@ -53,7 +56,7 @@ function transformImports(file: ts.SourceFile, ctx: ts.TransformationContext, ng
|
||||
binding => {
|
||||
if (binding.escapedText) {
|
||||
binding.name = {
|
||||
text: binding.escapedText
|
||||
text: binding.escapedText,
|
||||
};
|
||||
}
|
||||
return binding;
|
||||
|
||||
@@ -31,7 +31,3 @@ export function transformMembers(cls: ts.ClassDeclaration) {
|
||||
|
||||
return members;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
import * as ts from 'typescript';
|
||||
import { Logger } from '../../logger';
|
||||
import { convertValueToLiteral, getDecorator, getDecoratorArgs, getDecoratorName, getMethodsForDecorator } from '../helpers';
|
||||
import {
|
||||
convertValueToLiteral,
|
||||
getDecorator,
|
||||
getDecoratorArgs,
|
||||
getDecoratorName,
|
||||
getMethodsForDecorator,
|
||||
} from '../helpers';
|
||||
|
||||
export function transformMethod(method: ts.MethodDeclaration) {
|
||||
if (!method) return;
|
||||
@@ -10,11 +16,17 @@ export function transformMethod(method: ts.MethodDeclaration) {
|
||||
decoratorArgs = getDecoratorArgs(decorator);
|
||||
|
||||
try {
|
||||
return ts.createMethod(undefined, undefined, undefined, method.name, undefined, method.typeParameters, method.parameters, method.type, ts.createBlock([
|
||||
ts.createReturn(
|
||||
getMethodBlock(method, decoratorName, decoratorArgs)
|
||||
)
|
||||
]));
|
||||
return ts.createMethod(
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
method.name,
|
||||
undefined,
|
||||
method.typeParameters,
|
||||
method.parameters,
|
||||
method.type,
|
||||
ts.createBlock([ts.createReturn(getMethodBlock(method, decoratorName, decoratorArgs))])
|
||||
);
|
||||
} catch (e) {
|
||||
Logger.error('Error transforming method: ' + (method.name as any).text);
|
||||
Logger.error(e.message);
|
||||
@@ -28,22 +40,23 @@ function getMethodBlock(method: ts.MethodDeclaration, decoratorName: string, dec
|
||||
case 'CordovaCheck':
|
||||
case 'InstanceCheck':
|
||||
// TODO remove function wrapper
|
||||
return ts.createImmediatelyInvokedArrowFunction([ts.createIf(
|
||||
ts.createBinary(
|
||||
ts.createCall(ts.createIdentifier(decoratorMethod), undefined, [ts.createThis()]),
|
||||
ts.SyntaxKind.EqualsEqualsEqualsToken,
|
||||
ts.createTrue()
|
||||
return ts.createImmediatelyInvokedArrowFunction([
|
||||
ts.createIf(
|
||||
ts.createBinary(
|
||||
ts.createCall(ts.createIdentifier(decoratorMethod), undefined, [ts.createThis()]),
|
||||
ts.SyntaxKind.EqualsEqualsEqualsToken,
|
||||
ts.createTrue()
|
||||
),
|
||||
method.body
|
||||
),
|
||||
method.body
|
||||
)]);
|
||||
]);
|
||||
|
||||
default:
|
||||
return ts.createCall(ts.createIdentifier(decoratorMethod), undefined, [
|
||||
ts.createThis(),
|
||||
ts.createLiteral((method.name as any).text),
|
||||
ts.createLiteral(decoratorArgs?.methodName || (method.name as any).text),
|
||||
convertValueToLiteral(decoratorArgs),
|
||||
ts.createIdentifier('arguments')
|
||||
ts.createIdentifier('arguments'),
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,12 +1,7 @@
|
||||
import * as ts from 'typescript';
|
||||
|
||||
import { Logger } from '../../logger';
|
||||
import {
|
||||
convertValueToLiteral,
|
||||
getDecorator,
|
||||
getDecoratorArgs,
|
||||
getDecoratorName
|
||||
} from '../helpers';
|
||||
import { convertValueToLiteral, getDecorator, getDecoratorArgs, getDecoratorName } from '../helpers';
|
||||
import { transformMembers } from './members';
|
||||
|
||||
function transformClass(cls: any, ngcBuild?: boolean) {
|
||||
@@ -48,17 +43,15 @@ function transformClass(cls: any, ngcBuild?: boolean) {
|
||||
return cls;
|
||||
}
|
||||
|
||||
function transformClasses(
|
||||
file: ts.SourceFile,
|
||||
ctx: ts.TransformationContext,
|
||||
ngcBuild?: boolean
|
||||
) {
|
||||
function transformClasses(file: ts.SourceFile, ctx: ts.TransformationContext, ngcBuild?: boolean) {
|
||||
Logger.silly('Transforming file: ' + file.fileName);
|
||||
return ts.visitEachChild(
|
||||
file,
|
||||
node => {
|
||||
if (node.kind !== ts.SyntaxKind.ClassDeclaration
|
||||
|| (node.modifiers && node.modifiers.find(v => v.kind === ts.SyntaxKind.DeclareKeyword))) {
|
||||
if (
|
||||
node.kind !== ts.SyntaxKind.ClassDeclaration ||
|
||||
(node.modifiers && node.modifiers.find(v => v.kind === ts.SyntaxKind.DeclareKeyword))
|
||||
) {
|
||||
return node;
|
||||
}
|
||||
return transformClass(node, ngcBuild);
|
||||
@@ -67,9 +60,7 @@ function transformClasses(
|
||||
);
|
||||
}
|
||||
|
||||
export function pluginClassTransformer(
|
||||
ngcBuild?: boolean
|
||||
): ts.TransformerFactory<ts.SourceFile> {
|
||||
export function pluginClassTransformer(ngcBuild?: boolean): ts.TransformerFactory<ts.SourceFile> {
|
||||
return (ctx: ts.TransformationContext) => {
|
||||
return tsSourceFile => {
|
||||
if (tsSourceFile.fileName.indexOf('src/@ionic-native/plugins') > -1)
|
||||
|
||||
@@ -32,9 +32,9 @@ export function transformProperty(members: any[], index: number) {
|
||||
ts.createReturn(
|
||||
ts.createCall(ts.createIdentifier(type + 'PropertyGet'), undefined, [
|
||||
ts.createThis(),
|
||||
ts.createLiteral((property.name as any).text)
|
||||
ts.createLiteral((property.name as any).text),
|
||||
])
|
||||
)
|
||||
),
|
||||
])
|
||||
);
|
||||
|
||||
@@ -42,24 +42,15 @@ export function transformProperty(members: any[], index: number) {
|
||||
undefined,
|
||||
undefined,
|
||||
property.name,
|
||||
[
|
||||
ts.createParameter(
|
||||
undefined,
|
||||
undefined,
|
||||
undefined,
|
||||
'value',
|
||||
undefined,
|
||||
property.type
|
||||
)
|
||||
],
|
||||
[ts.createParameter(undefined, undefined, undefined, 'value', undefined, property.type)],
|
||||
ts.createBlock([
|
||||
ts.createStatement(
|
||||
ts.createCall(ts.createIdentifier(type + 'PropertySet'), undefined, [
|
||||
ts.createThis(),
|
||||
ts.createLiteral((property.name as any).text),
|
||||
ts.createIdentifier('value')
|
||||
ts.createIdentifier('value'),
|
||||
])
|
||||
)
|
||||
),
|
||||
])
|
||||
);
|
||||
|
||||
|
||||
@@ -13,22 +13,16 @@ export function getCompilerHost() {
|
||||
}
|
||||
|
||||
export function getProgram(declaration = false, pluginPaths: string[] = PLUGIN_PATHS) {
|
||||
const compilerOptions: ts.CompilerOptions = clone(COMPILER_OPTIONS);
|
||||
compilerOptions.declaration = declaration;
|
||||
compilerOptions.moduleResolution = ts.ModuleResolutionKind.NodeJs;
|
||||
compilerOptions.target = ts.ScriptTarget.ES5;
|
||||
compilerOptions.module = ts.ModuleKind.ES2015;
|
||||
compilerOptions.inlineSourceMap = true;
|
||||
compilerOptions.inlineSources = true;
|
||||
compilerOptions.lib = [
|
||||
'lib.dom.d.ts',
|
||||
'lib.es5.d.ts',
|
||||
'lib.es2015.d.ts',
|
||||
'lib.es2016.d.ts',
|
||||
'lib.es2017.d.ts'
|
||||
];
|
||||
const compilerOptions: ts.CompilerOptions = clone(COMPILER_OPTIONS);
|
||||
compilerOptions.declaration = declaration;
|
||||
compilerOptions.moduleResolution = ts.ModuleResolutionKind.NodeJs;
|
||||
compilerOptions.target = ts.ScriptTarget.ES5;
|
||||
compilerOptions.module = ts.ModuleKind.ES2015;
|
||||
compilerOptions.inlineSourceMap = true;
|
||||
compilerOptions.inlineSources = true;
|
||||
compilerOptions.lib = ['lib.dom.d.ts', 'lib.es5.d.ts', 'lib.es2015.d.ts', 'lib.es2016.d.ts', 'lib.es2017.d.ts'];
|
||||
|
||||
return ts.createProgram(pluginPaths, compilerOptions, getCompilerHost());
|
||||
return ts.createProgram(pluginPaths, compilerOptions, getCompilerHost());
|
||||
}
|
||||
|
||||
export function generateDeclarations(sourceFiles?: string[]) {
|
||||
@@ -37,15 +31,10 @@ export function generateDeclarations(sourceFiles?: string[]) {
|
||||
|
||||
export function transpile() {
|
||||
const emitResult = getProgram().emit(undefined, getCompilerHost().writeFile, undefined, false, {
|
||||
before: [
|
||||
extractInjectables(),
|
||||
importsTransformer(),
|
||||
pluginClassTransformer(),
|
||||
]
|
||||
before: [extractInjectables(), importsTransformer(), pluginClassTransformer()],
|
||||
});
|
||||
|
||||
emitInjectableClasses();
|
||||
|
||||
return emitResult;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import * as fs from 'fs-extra';
|
||||
import { Application } from 'typedoc';
|
||||
import { basename, dirname, resolve } from 'path';
|
||||
import { Application } from 'typedoc';
|
||||
import TypeDoc = require('typedoc');
|
||||
import { runInNewContext } from 'vm';
|
||||
|
||||
interface Plugin {
|
||||
@@ -10,18 +11,25 @@ interface Plugin {
|
||||
platforms: string[];
|
||||
usage: string;
|
||||
repo: string;
|
||||
installVariables: string[];
|
||||
cordovaPlugin: {
|
||||
name: string;
|
||||
};
|
||||
premierSlug: string;
|
||||
capacitorIncompatible: boolean;
|
||||
}
|
||||
|
||||
const rootDir = resolve(__dirname, '../..');
|
||||
const typedocTmp = resolve(__dirname, 'typedoc.tmp.json');
|
||||
const pluginsDir = resolve(rootDir, 'src/@ionic-native/plugins');
|
||||
const typedoc = new Application({
|
||||
const typedoc = new Application();
|
||||
|
||||
typedoc.options.addReader(new TypeDoc.TSConfigReader());
|
||||
typedoc.options.addReader(new TypeDoc.TypeDocReader());
|
||||
|
||||
typedoc.bootstrap({
|
||||
mode: 'modules',
|
||||
tsconfig: resolve(rootDir, 'tsconfig.json'),
|
||||
ignoreCompilerErrors: true
|
||||
ignoreCompilerErrors: true,
|
||||
});
|
||||
|
||||
run(pluginsDir);
|
||||
@@ -31,7 +39,7 @@ async function run(pluginsDir: string) {
|
||||
const modules = typedocData.children.filter(isModule);
|
||||
const plugins = modules.filter(hasPlugin).map(processPlugin);
|
||||
await fs.outputJson(resolve(__dirname, 'plugins.json'), plugins, {
|
||||
spaces: 2
|
||||
spaces: 2,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -49,6 +57,9 @@ function processPlugin(pluginModule): Plugin {
|
||||
const displayName = getTag(pluginClass, 'name');
|
||||
const usage = getTag(pluginClass, 'usage');
|
||||
const description = getTag(pluginClass, 'description');
|
||||
const premierSlug = getTag(pluginClass, 'premier');
|
||||
const capIncompat = getTag(pluginClass, 'capacitorincompatible');
|
||||
const capacitorIncompatible = capIncompat ? true : undefined;
|
||||
return {
|
||||
packageName,
|
||||
displayName,
|
||||
@@ -56,9 +67,12 @@ function processPlugin(pluginModule): Plugin {
|
||||
usage,
|
||||
platforms: decorator.platforms,
|
||||
repo: decorator.repo,
|
||||
installVariables: decorator.installVariables,
|
||||
cordovaPlugin: {
|
||||
name: decorator.plugin
|
||||
}
|
||||
name: decorator.plugin,
|
||||
},
|
||||
premierSlug,
|
||||
capacitorIncompatible,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -83,17 +97,16 @@ const getTag = (child: any, tagName: string): string => {
|
||||
}
|
||||
};
|
||||
|
||||
const isModule = (child: any): boolean =>
|
||||
child.kind === 1;
|
||||
const isModule = (child: any): boolean => child.kind === 1;
|
||||
|
||||
const isClass = (child: any): boolean =>
|
||||
child.kind === 128;
|
||||
const isClass = (child: any): boolean => child.kind === 128;
|
||||
|
||||
const isPlugin = (child: any): boolean =>
|
||||
isClass(child) && hasTags(child) && Array.isArray(child.decorators) && child.decorators.some(d => d.name === 'Plugin');
|
||||
isClass(child) &&
|
||||
hasTags(child) &&
|
||||
Array.isArray(child.decorators) &&
|
||||
child.decorators.some(d => d.name === 'Plugin');
|
||||
|
||||
const hasPlugin = (child: any): boolean =>
|
||||
child.children.some(isPlugin);
|
||||
const hasPlugin = (child: any): boolean => child.children.some(isPlugin);
|
||||
|
||||
const hasTags = (child: any): boolean =>
|
||||
child.comment && Array.isArray(child.comment.tags);
|
||||
const hasTags = (child: any): boolean => child.comment && Array.isArray(child.comment.tags);
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
# docs-json
|
||||
|
||||
This script reads and generates [typedoc](https://github.com/TypeStrong/typedoc) data for each of the plugins in `src/@ionic-native/plugins`. That data is then formatted and output as `plugins.json` in this directory.
|
||||
This script reads and generates [typedoc](https://github.com/TypeStrong/typedoc) data for each of the plugins in `src/@ionic-native/plugins`. That data is then formatted and output as `plugins.json` in this directory.
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
module.exports = function(getLinkInfo) {
|
||||
module.exports = function (getLinkInfo) {
|
||||
getLinkInfo.useFirstAmbiguousLink = false;
|
||||
};
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
module.exports = function(log) {
|
||||
module.exports = function (log) {
|
||||
log.level = 'error'; //'silly', 'debug', 'info', 'warn', 'error'
|
||||
};
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
module.exports = function(parseTagsProcessor) {
|
||||
parseTagsProcessor.tagDefinitions = parseTagsProcessor.tagDefinitions
|
||||
.concat(require('../tag-defs/tag-defs'));
|
||||
module.exports = function (parseTagsProcessor) {
|
||||
parseTagsProcessor.tagDefinitions = parseTagsProcessor.tagDefinitions.concat(require('../tag-defs/tag-defs'));
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
module.exports = function(templateEngine) {
|
||||
module.exports = function (templateEngine) {
|
||||
// Nunjucks and Angular conflict in their template bindings so change the Nunjucks
|
||||
// Also conflict with Jekyll
|
||||
templateEngine.config.tags = {
|
||||
@@ -7,6 +7,6 @@ module.exports = function(templateEngine) {
|
||||
blockStart: '<@',
|
||||
blockEnd: '@>',
|
||||
commentStart: '<#',
|
||||
commentEnd: '#>'
|
||||
commentEnd: '#>',
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
module.exports = function(templateEngine) {
|
||||
module.exports = function (templateEngine) {
|
||||
// add custom filters to nunjucks
|
||||
templateEngine.filters.push(
|
||||
require('../filters/capital'),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"use strict";
|
||||
'use strict';
|
||||
const Package = require('dgeni').Package,
|
||||
jsdocPackage = require('dgeni-packages/jsdoc'),
|
||||
nunjucksPackage = require('dgeni-packages/nunjucks'),
|
||||
@@ -8,72 +8,68 @@ const Package = require('dgeni').Package,
|
||||
config = require('../config.json');
|
||||
|
||||
module.exports = currentVersion => {
|
||||
return (
|
||||
new Package('ionic-native-docs', [jsdocPackage, nunjucksPackage, typescriptPackage, linksPackage])
|
||||
|
||||
return new Package('ionic-native-docs', [jsdocPackage, nunjucksPackage, typescriptPackage, linksPackage])
|
||||
.processor(require('./processors/remove-private-members'))
|
||||
.processor(require('./processors/hide-private-api'))
|
||||
.processor(require('./processors/parse-optional'))
|
||||
.processor(require('./processors/mark-properties'))
|
||||
.processor(require('./processors/npm-id'))
|
||||
.processor(require('./processors/jekyll'))
|
||||
|
||||
.processor(require('./processors/remove-private-members'))
|
||||
.processor(require('./processors/hide-private-api'))
|
||||
.processor(require('./processors/parse-optional'))
|
||||
.processor(require('./processors/mark-properties'))
|
||||
.processor(require('./processors/npm-id'))
|
||||
.processor(require('./processors/jekyll'))
|
||||
.config(require('./configs/log'))
|
||||
.config(require('./configs/template-filters'))
|
||||
.config(require('./configs/template-tags'))
|
||||
.config(require('./configs/tag-defs'))
|
||||
.config(require('./configs/links'))
|
||||
|
||||
.config(require('./configs/log'))
|
||||
.config(require('./configs/template-filters'))
|
||||
.config(require('./configs/template-tags'))
|
||||
.config(require('./configs/tag-defs'))
|
||||
.config(require('./configs/links'))
|
||||
.config(function (renderDocsProcessor, computePathsProcessor) {
|
||||
currentVersion = {
|
||||
href: '/' + config.v2DocsDir.replace('content/', ''),
|
||||
folder: '',
|
||||
name: currentVersion,
|
||||
};
|
||||
|
||||
.config(function(renderDocsProcessor, computePathsProcessor) {
|
||||
renderDocsProcessor.extraData.version = {
|
||||
list: [currentVersion],
|
||||
current: currentVersion,
|
||||
latest: currentVersion,
|
||||
};
|
||||
|
||||
currentVersion = {
|
||||
href: '/' + config.v2DocsDir.replace('content/', ''),
|
||||
folder: '',
|
||||
name: currentVersion
|
||||
};
|
||||
computePathsProcessor.pathTemplates = [
|
||||
{
|
||||
docTypes: ['class'],
|
||||
getOutputPath: doc => 'content/' + config.v2DocsDir + '/' + doc.name + '/index.md',
|
||||
},
|
||||
];
|
||||
})
|
||||
|
||||
renderDocsProcessor.extraData.version = {
|
||||
list: [currentVersion],
|
||||
current: currentVersion,
|
||||
latest: currentVersion
|
||||
};
|
||||
//configure file reading
|
||||
.config(function (readFilesProcessor, readTypeScriptModules) {
|
||||
// Don't run unwanted processors since we are not using the normal file reading processor
|
||||
readFilesProcessor.$enabled = false;
|
||||
readFilesProcessor.basePath = path.resolve(__dirname, '../../..');
|
||||
|
||||
computePathsProcessor.pathTemplates = [{
|
||||
docTypes: ['class'],
|
||||
getOutputPath: doc => 'content/' + config.v2DocsDir + '/' + doc.name + '/index.md'
|
||||
}];
|
||||
readTypeScriptModules.basePath = path.resolve(__dirname, '../../..');
|
||||
readTypeScriptModules.sourceFiles = ['./src/@ionic-native/plugins/**/*.ts'];
|
||||
})
|
||||
|
||||
})
|
||||
// Configure file writing
|
||||
.config(function (writeFilesProcessor) {
|
||||
writeFilesProcessor.outputFolder = '../ionic-site/';
|
||||
})
|
||||
|
||||
//configure file reading
|
||||
.config(function(readFilesProcessor, readTypeScriptModules) {
|
||||
|
||||
// Don't run unwanted processors since we are not using the normal file reading processor
|
||||
readFilesProcessor.$enabled = false;
|
||||
readFilesProcessor.basePath = path.resolve(__dirname, '../../..');
|
||||
|
||||
readTypeScriptModules.basePath = path.resolve(__dirname, '../../..');
|
||||
readTypeScriptModules.sourceFiles = [
|
||||
'./src/@ionic-native/plugins/**/*.ts'
|
||||
];
|
||||
})
|
||||
|
||||
// Configure file writing
|
||||
.config(function(writeFilesProcessor) {
|
||||
writeFilesProcessor.outputFolder = '../ionic-site/';
|
||||
})
|
||||
|
||||
// Configure rendering
|
||||
.config(function(templateFinder) {
|
||||
|
||||
templateFinder.templateFolders.unshift(path.resolve(__dirname, 'templates'));
|
||||
|
||||
// Specify how to match docs to templates.
|
||||
templateFinder.templatePatterns = [
|
||||
'${ doc.template }',
|
||||
'${ doc.docType }.template.html',
|
||||
'common.template.html'
|
||||
];
|
||||
});
|
||||
// Configure rendering
|
||||
.config(function (templateFinder) {
|
||||
templateFinder.templateFolders.unshift(path.resolve(__dirname, 'templates'));
|
||||
|
||||
// Specify how to match docs to templates.
|
||||
templateFinder.templatePatterns = [
|
||||
'${ doc.template }',
|
||||
'${ doc.docType }.template.html',
|
||||
'common.template.html',
|
||||
];
|
||||
})
|
||||
);
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"use strict";
|
||||
'use strict';
|
||||
const Package = require('dgeni').Package,
|
||||
jsdocPackage = require('dgeni-packages/jsdoc'),
|
||||
nunjucksPackage = require('dgeni-packages/nunjucks'),
|
||||
@@ -8,68 +8,63 @@ const Package = require('dgeni').Package,
|
||||
config = require('../config.json');
|
||||
|
||||
module.exports = currentVersion => {
|
||||
return (
|
||||
new Package('ionic-native-readmes', [jsdocPackage, nunjucksPackage, typescriptPackage, linksPackage])
|
||||
|
||||
return new Package('ionic-native-readmes', [jsdocPackage, nunjucksPackage, typescriptPackage, linksPackage])
|
||||
.processor(require('./processors/readmes'))
|
||||
.processor(require('./processors/remove-private-members'))
|
||||
.processor(require('./processors/hide-private-api'))
|
||||
.processor(require('./processors/npm-id'))
|
||||
|
||||
.processor(require('./processors/readmes'))
|
||||
.processor(require('./processors/remove-private-members'))
|
||||
.processor(require('./processors/hide-private-api'))
|
||||
.processor(require('./processors/npm-id'))
|
||||
.config(require('./configs/log'))
|
||||
.config(require('./configs/template-filters'))
|
||||
.config(require('./configs/template-tags'))
|
||||
.config(require('./configs/tag-defs'))
|
||||
.config(require('./configs/links'))
|
||||
|
||||
.config(require('./configs/log'))
|
||||
.config(require('./configs/template-filters'))
|
||||
.config(require('./configs/template-tags'))
|
||||
.config(require('./configs/tag-defs'))
|
||||
.config(require('./configs/links'))
|
||||
.config(function (renderDocsProcessor, computePathsProcessor) {
|
||||
currentVersion = {
|
||||
href: '/' + config.v2DocsDir.replace('content/', ''),
|
||||
folder: '',
|
||||
name: currentVersion,
|
||||
};
|
||||
|
||||
renderDocsProcessor.extraData.version = {
|
||||
list: [currentVersion],
|
||||
current: currentVersion,
|
||||
latest: currentVersion,
|
||||
};
|
||||
|
||||
.config(function(renderDocsProcessor, computePathsProcessor) {
|
||||
computePathsProcessor.pathTemplates = [
|
||||
{
|
||||
docTypes: ['class'],
|
||||
getOutputPath: doc =>
|
||||
doc.originalModule.replace(config.pluginDir + '/', '').replace(/\/index$/, '/README.md'),
|
||||
},
|
||||
];
|
||||
})
|
||||
|
||||
currentVersion = {
|
||||
href: '/' + config.v2DocsDir.replace('content/', ''),
|
||||
folder: '',
|
||||
name: currentVersion
|
||||
};
|
||||
//configure file reading
|
||||
.config(function (readFilesProcessor, readTypeScriptModules) {
|
||||
// Don't run unwanted processors since we are not using the normal file reading processor
|
||||
readFilesProcessor.$enabled = false;
|
||||
readFilesProcessor.basePath = path.resolve(__dirname, '../../..');
|
||||
|
||||
renderDocsProcessor.extraData.version = {
|
||||
list: [currentVersion],
|
||||
current: currentVersion,
|
||||
latest: currentVersion
|
||||
};
|
||||
readTypeScriptModules.basePath = path.resolve(path.resolve(__dirname, '../../..'));
|
||||
readTypeScriptModules.sourceFiles = ['./src/@ionic-native/plugins/**/*.ts'];
|
||||
})
|
||||
|
||||
computePathsProcessor.pathTemplates = [{
|
||||
docTypes: ['class'],
|
||||
getOutputPath: doc => doc.originalModule.replace(config.pluginDir + '/', '')
|
||||
.replace(/\/index$/, '/README.md')
|
||||
}];
|
||||
// Configure file writing
|
||||
.config(function (writeFilesProcessor) {
|
||||
writeFilesProcessor.outputFolder = './dist/@ionic-native/';
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
//configure file reading
|
||||
.config(function(readFilesProcessor, readTypeScriptModules) {
|
||||
// Don't run unwanted processors since we are not using the normal file reading processor
|
||||
readFilesProcessor.$enabled = false;
|
||||
readFilesProcessor.basePath = path.resolve(__dirname, '../../..');
|
||||
|
||||
readTypeScriptModules.basePath = path.resolve(path.resolve(__dirname, '../../..'));
|
||||
readTypeScriptModules.sourceFiles = ['./src/@ionic-native/plugins/**/*.ts'];
|
||||
})
|
||||
|
||||
// Configure file writing
|
||||
.config(function(writeFilesProcessor) {
|
||||
writeFilesProcessor.outputFolder = './dist/@ionic-native/';
|
||||
})
|
||||
|
||||
// Configure rendering
|
||||
.config(function(templateFinder) {
|
||||
templateFinder.templateFolders.unshift(path.resolve(__dirname, 'templates'));
|
||||
|
||||
// Specify how to match docs to templates.
|
||||
templateFinder.templatePatterns = [
|
||||
'${ doc.template }',
|
||||
'${ doc.docType }.template.md',
|
||||
'readme.template.md'
|
||||
];
|
||||
});
|
||||
// Configure rendering
|
||||
.config(function (templateFinder) {
|
||||
templateFinder.templateFolders.unshift(path.resolve(__dirname, 'templates'));
|
||||
|
||||
// Specify how to match docs to templates.
|
||||
templateFinder.templatePatterns = ['${ doc.template }', '${ doc.docType }.template.md', 'readme.template.md'];
|
||||
})
|
||||
);
|
||||
};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
"use strict";
|
||||
'use strict';
|
||||
module.exports = {
|
||||
name: 'capital',
|
||||
process: str => str? str.charAt(0).toUpperCase() + str.substring(1) : ''
|
||||
process: str => (str ? str.charAt(0).toUpperCase() + str.substring(1) : ''),
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"use strict";
|
||||
'use strict';
|
||||
const encoder = new require('node-html-encoder').Encoder();
|
||||
|
||||
function code(str, inline, lang) {
|
||||
@@ -20,5 +20,5 @@ function code(str, inline, lang) {
|
||||
|
||||
module.exports = {
|
||||
name: 'code',
|
||||
process: (str, lang) => code(str, true, lang)
|
||||
process: (str, lang) => code(str, true, lang),
|
||||
};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
"use strict";
|
||||
'use strict';
|
||||
module.exports = {
|
||||
name: 'dashify',
|
||||
process: str => str? str.replace(/\s/g, '-') : ''
|
||||
process: str => (str ? str.replace(/\s/g, '-') : ''),
|
||||
};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
"use strict";
|
||||
'use strict';
|
||||
module.exports = {
|
||||
name: 'dump',
|
||||
process: obj => console.log(obj)
|
||||
process: obj => console.log(obj),
|
||||
};
|
||||
|
||||
@@ -1,43 +1,39 @@
|
||||
"use strict";
|
||||
module.exports = function test(){
|
||||
'use strict';
|
||||
module.exports = function test() {
|
||||
return {
|
||||
name: 'debug',
|
||||
$runBefore: ['rendering-docs'],
|
||||
$process: function(docs){
|
||||
docs.forEach(function(doc){
|
||||
if (doc.name == "Camera"){
|
||||
|
||||
$process: function (docs) {
|
||||
docs.forEach(function (doc) {
|
||||
if (doc.name == 'Camera') {
|
||||
console.log(doc.tags);
|
||||
doc.tags.forEach(function(tag){
|
||||
if(tag.tagName == 'classes'){
|
||||
|
||||
doc.tags.forEach(function (tag) {
|
||||
if (tag.tagName == 'classes') {
|
||||
}
|
||||
});
|
||||
|
||||
doc.moduleDoc.exports.forEach(function(d,i){
|
||||
if(d.name === 'CameraOptions') {
|
||||
doc.moduleDoc.exports.forEach(function (d, i) {
|
||||
if (d.name === 'CameraOptions') {
|
||||
console.log('Name: ' + d.name);
|
||||
console.log('Type: ' + d.docType);
|
||||
console.log('First member: ', d.members[0]);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
var exports = doc.exportSymbol.parent.exports;
|
||||
for(var p in exports) {
|
||||
if(p == 'CameraOptions')
|
||||
{
|
||||
for (var p in exports) {
|
||||
if (p == 'CameraOptions') {
|
||||
var x = exports[p];
|
||||
console.log(x.members.quality);
|
||||
}
|
||||
}
|
||||
doc.members.forEach(function(method){
|
||||
if (method.name === "getPicture") {
|
||||
doc.members.forEach(function (method) {
|
||||
if (method.name === 'getPicture') {
|
||||
console.log(method);
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
"use strict";
|
||||
'use strict';
|
||||
module.exports = function removePrivateApi() {
|
||||
return {
|
||||
name: 'remove-private-api',
|
||||
description: 'Prevent the private apis from being rendered',
|
||||
$runBefore: ['rendering-docs'],
|
||||
$process: docs => docs.filter(doc => !doc.private && (!doc.tags || !doc.tags.tagsByName.get('hidden')))
|
||||
$process: docs => docs.filter(doc => !doc.private && (!doc.tags || !doc.tags.tagsByName.get('hidden'))),
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"use strict";
|
||||
'use strict';
|
||||
module.exports = function jekyll(renderDocsProcessor) {
|
||||
return {
|
||||
name: 'jekyll',
|
||||
@@ -6,7 +6,6 @@ module.exports = function jekyll(renderDocsProcessor) {
|
||||
$runAfter: ['paths-computed'],
|
||||
$runBefore: ['rendering-docs'],
|
||||
$process: docs => {
|
||||
|
||||
// pretty up and sort the docs object for menu generation
|
||||
docs = docs.filter(doc => (!!doc.name && !!doc.outputPath) || doc.docType === 'index-page');
|
||||
|
||||
@@ -20,7 +19,7 @@ module.exports = function jekyll(renderDocsProcessor) {
|
||||
const textA = a.name ? a.name.toUpperCase() : '',
|
||||
textB = b.name ? b.name.toUpperCase() : '';
|
||||
|
||||
return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;
|
||||
return textA < textB ? -1 : textA > textB ? 1 : 0;
|
||||
});
|
||||
|
||||
docs.forEach(doc => {
|
||||
@@ -29,11 +28,9 @@ module.exports = function jekyll(renderDocsProcessor) {
|
||||
}
|
||||
|
||||
doc.outputPath = doc.outputPath.toLowerCase().replace(/\s/g, '-');
|
||||
doc.URL = doc.outputPath.replace('docs//', 'docs/')
|
||||
.replace('/index.md', '')
|
||||
.replace('content/', '');
|
||||
doc.URL = doc.outputPath.replace('docs//', 'docs/').replace('/index.md', '').replace('content/', '');
|
||||
// add trailing slash to plugin pages
|
||||
if(!doc.URL.endsWith("/") && !doc.URL.endsWith(".html")) {
|
||||
if (!doc.URL.endsWith('/') && !doc.URL.endsWith('.html')) {
|
||||
doc.URL = doc.URL + '/';
|
||||
}
|
||||
|
||||
@@ -57,10 +54,10 @@ module.exports = function jekyll(renderDocsProcessor) {
|
||||
docType: 'nativeMenu',
|
||||
id: 'native_menu',
|
||||
template: 'native_menu.template.html',
|
||||
outputPath: 'content/_includes/fluid/native_menu.html'
|
||||
outputPath: 'content/_includes/fluid/native_menu.html',
|
||||
});
|
||||
|
||||
return docs;
|
||||
}
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
"use strict";
|
||||
'use strict';
|
||||
module.exports = function markProperties() {
|
||||
return {
|
||||
name: 'mark-properties',
|
||||
$runBefore: ['rendering-docs'],
|
||||
$process: docs => docs.map(doc => {
|
||||
for (let i in doc.members) {
|
||||
if (doc.members.hasOwnProperty(i) && typeof doc.members[i].parameters === 'undefined') {
|
||||
doc.members[i].isProperty = true;
|
||||
$process: docs =>
|
||||
docs.map(doc => {
|
||||
for (let i in doc.members) {
|
||||
if (doc.members.hasOwnProperty(i) && typeof doc.members[i].parameters === 'undefined') {
|
||||
doc.members[i].isProperty = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return doc;
|
||||
})
|
||||
}
|
||||
return doc;
|
||||
}),
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"use strict";
|
||||
'use strict';
|
||||
module.exports = function npmId(renderDocsProcessor) {
|
||||
return {
|
||||
name: 'npm-id',
|
||||
@@ -6,7 +6,7 @@ module.exports = function npmId(renderDocsProcessor) {
|
||||
$runBefore: ['rendering-docs'],
|
||||
$process: docs => {
|
||||
// pretty up and sort the docs object for menu generation
|
||||
docs = docs.filter(function(doc) {
|
||||
docs = docs.filter(function (doc) {
|
||||
return (!!doc.name && !!doc.outputPath) || doc.docType === 'index-page';
|
||||
});
|
||||
|
||||
@@ -15,6 +15,6 @@ module.exports = function npmId(renderDocsProcessor) {
|
||||
});
|
||||
|
||||
return docs;
|
||||
}
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"use strict";
|
||||
'use strict';
|
||||
module.exports = function parseOptional() {
|
||||
return {
|
||||
$runBefore: ['rendering-docs'],
|
||||
@@ -17,6 +17,6 @@ module.exports = function parseOptional() {
|
||||
}
|
||||
});
|
||||
return docs;
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"use strict";
|
||||
'use strict';
|
||||
module.exports = function readmes(renderDocsProcessor) {
|
||||
return {
|
||||
name: 'readmes',
|
||||
@@ -14,6 +14,6 @@ module.exports = function readmes(renderDocsProcessor) {
|
||||
});
|
||||
|
||||
return docs;
|
||||
}
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"use strict";
|
||||
'use strict';
|
||||
module.exports = function removePrivateMembers() {
|
||||
return {
|
||||
name: 'remove-private-members',
|
||||
@@ -7,7 +7,6 @@ module.exports = function removePrivateMembers() {
|
||||
$runBefore: ['rendering-docs'],
|
||||
$process: docs => {
|
||||
docs.forEach(doc => {
|
||||
|
||||
if (doc.members) {
|
||||
doc.members = doc.members.filter(member => !member.tags.tagsByName.get('hidden'));
|
||||
}
|
||||
@@ -15,10 +14,9 @@ module.exports = function removePrivateMembers() {
|
||||
if (doc.statics) {
|
||||
doc.statics = doc.statics.filter(staticMethod => !staticMethod.tags.tagsByName.get('hidden'));
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
return docs;
|
||||
}
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
"use strict";
|
||||
'use strict';
|
||||
module.exports = [
|
||||
{'name': 'advanced'},
|
||||
{'name': 'demo'},
|
||||
{'name': 'beta', transforms: (doc, tag, value) => typeof value !== 'undefined'}, // make the value true or undefined instead of '' or undefined
|
||||
{'name': 'usage'},
|
||||
{'name': 'hidden'}, // hide from docs
|
||||
{'name': 'classes'}, // related classes
|
||||
{'name': 'interfaces'}, // related interfaces
|
||||
{'name': 'paid', transforms: (doc, tag, value) => typeof value !== 'undefined'} // paid plugin, set value to true
|
||||
{ name: 'advanced' },
|
||||
{ name: 'demo' },
|
||||
{ name: 'beta', transforms: (doc, tag, value) => typeof value !== 'undefined' }, // make the value true or undefined instead of '' or undefined
|
||||
{ name: 'usage' },
|
||||
{ name: 'hidden' }, // hide from docs
|
||||
{ name: 'classes' }, // related classes
|
||||
{ name: 'interfaces' }, // related interfaces
|
||||
{ name: 'paid', transforms: (doc, tag, value) => typeof value !== 'undefined' }, // paid plugin, set value to true
|
||||
];
|
||||
|
||||
@@ -11,172 +11,124 @@ doc: "<$ doc.name $>"
|
||||
docType: "<$ doc.docType $>"
|
||||
---
|
||||
|
||||
<@- macro interfaceTable(interface) -@>
|
||||
<@ for export in doc.moduleDoc.exports -@>
|
||||
<@ if export.name == interface @>
|
||||
<table class="table param-table" style="margin:0;">
|
||||
<@- macro interfaceTable(interface) -@> <@ for export in doc.moduleDoc.exports -@> <@ if export.name == interface @>
|
||||
<table class="table param-table" style="margin: 0;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Param</th>
|
||||
<th>Type</th>
|
||||
<th>Details</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Param</th>
|
||||
<th>Type</th>
|
||||
<th>Details</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<@ for param in export.members @>
|
||||
<tr>
|
||||
<td>
|
||||
<$ param.name $>
|
||||
</td>
|
||||
<td>
|
||||
<code><$ param.returnType | escape $></code>
|
||||
</td>
|
||||
<td>
|
||||
<$ param.description | marked $>
|
||||
<@ if param.optional @><em>(optional)</em><@ endif @>
|
||||
</td>
|
||||
</tr>
|
||||
<@ endfor @>
|
||||
<@ for param in export.members @>
|
||||
<tr>
|
||||
<td>
|
||||
<$ param.name $>
|
||||
</td>
|
||||
<td>
|
||||
<code><$ param.returnType | escape $></code>
|
||||
</td>
|
||||
<td>
|
||||
<$ param.description | marked $> <@ if param.optional @><em>(optional)</em><@ endif @>
|
||||
</td>
|
||||
</tr>
|
||||
<@ endfor @>
|
||||
</tbody>
|
||||
</table>
|
||||
<@ endif @>
|
||||
<@- endfor @>
|
||||
<@- endmacro -@>
|
||||
|
||||
<@- macro githubViewLink(doc) -@>
|
||||
<a href="https://github.com/ionic-team/ionic-native/tree/master/<$ doc.fileInfo.relativePath $>#L<$ doc.location.start.line+1 $>-L<$ doc.location.end.line+1 $>"><$ doc.fileInfo.relativePath $> (line <$ doc.location.start.line+1 $>)</a>
|
||||
<@- endmacro -@>
|
||||
|
||||
<@- macro paramTable(params, isDirective) -@>
|
||||
<table class="table param-table" style="margin:0;">
|
||||
<@ endif @> <@- endfor @> <@- endmacro -@> <@- macro githubViewLink(doc) -@>
|
||||
<a
|
||||
href="https://github.com/ionic-team/ionic-native/tree/master/<$ doc.fileInfo.relativePath $>#L<$ doc.location.start.line+1 $>-L<$ doc.location.end.line+1 $>"
|
||||
><$ doc.fileInfo.relativePath $> (line <$ doc.location.start.line+1 $>)</a
|
||||
>
|
||||
<@- endmacro -@> <@- macro paramTable(params, isDirective) -@>
|
||||
<table class="table param-table" style="margin: 0;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><@ if isDirective @>Attr<@ else @>Param<@ endif @></th>
|
||||
<th>Type</th>
|
||||
<th>Details</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><@ if isDirective @>Attr<@ else @>Param<@ endif @></th>
|
||||
<th>Type</th>
|
||||
<th>Details</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<@- for param in params @>
|
||||
<tr>
|
||||
<td>
|
||||
<$ param.name $>
|
||||
<@- if param.alias @>| <$ param.alias $><@ endif -@>
|
||||
</td>
|
||||
<td>
|
||||
<$ typeList(param.typeList) $>
|
||||
</td>
|
||||
<td>
|
||||
<$ param.description | marked $>
|
||||
<@- if param.defaultValue @><p><em>(default: <$ param.defaultValue $>)</em></p><@ endif -@>
|
||||
</td>
|
||||
</tr>
|
||||
<@ endfor -@>
|
||||
<@- for param in params @>
|
||||
<tr>
|
||||
<td>
|
||||
<$ param.name $> <@- if param.alias @>| <$ param.alias $><@ endif -@>
|
||||
</td>
|
||||
<td>
|
||||
<$ typeList(param.typeList) $>
|
||||
</td>
|
||||
<td>
|
||||
<$ param.description | marked $> <@- if param.defaultValue @>
|
||||
<p><em>(default: <$ param.defaultValue $>)</em></p>
|
||||
<@ endif -@>
|
||||
</td>
|
||||
</tr>
|
||||
<@ endfor -@>
|
||||
</tbody>
|
||||
</table>
|
||||
<@- endmacro -@>
|
||||
|
||||
<@- macro functionSyntax(fn) @>
|
||||
<@- set sep = joiner(', ') -@>
|
||||
<code><$ fn.name $><@- if not fn.isProperty @>(<@ endif -@><@- for param in fn.params @><$ sep() $>
|
||||
<@- if param.type.optional @>[<@- endif -@>
|
||||
<$ param.name $>
|
||||
<@- if param.type.optional -@>]<@- endif -@>
|
||||
<@- endfor -@><@- if not fn.isProperty @>)<@- endif -@></code>
|
||||
<@- endmacro -@>
|
||||
|
||||
<@- macro typeList(types) -@>
|
||||
<@ set separator = joiner("|") @>
|
||||
<@- for type in types @><$ separator() $><$ type | code $><@ endfor -@>
|
||||
<@- endmacro -@>
|
||||
|
||||
<@- macro typeInfo(fn) -@>
|
||||
<$ typeList(fn.typeList) $> <$ fn.description $>
|
||||
<@- endmacro -@>
|
||||
|
||||
<@- macro documentPlatforms(method) -@>
|
||||
<@- if method.decorators @>
|
||||
<@ for prop in method.decorators[0].argumentInfo @>
|
||||
<@ if prop.platforms @>
|
||||
<@- endmacro -@> <@- macro functionSyntax(fn) @> <@- set sep = joiner(', ') -@>
|
||||
<code
|
||||
><$ fn.name $><@- if not fn.isProperty @>(<@ endif -@><@- for param in fn.params @><$ sep() $> <@- if
|
||||
param.type.optional @>[<@- endif -@> <$ param.name $> <@- if param.type.optional -@>]<@- endif -@> <@- endfor -@><@-
|
||||
if not fn.isProperty @>)<@- endif -@></code
|
||||
>
|
||||
<@- endmacro -@> <@- macro typeList(types) -@> <@ set separator = joiner("|") @> <@- for type in types @><$ separator()
|
||||
$><$ type | code $><@ endfor -@> <@- endmacro -@> <@- macro typeInfo(fn) -@> <$ typeList(fn.typeList) $> <$
|
||||
fn.description $> <@- endmacro -@> <@- macro documentPlatforms(method) -@> <@- if method.decorators @> <@ for prop in
|
||||
method.decorators[0].argumentInfo @> <@ if prop.platforms @>
|
||||
<p>
|
||||
<strong>Platforms:</strong>
|
||||
<@- for platform in prop.platforms -@>
|
||||
<strong class="tag"><$ platform $></strong>
|
||||
<@- endfor -@>
|
||||
<strong class="tag"><$ platform $></strong> <@- endfor -@>
|
||||
</p>
|
||||
<@ endif @>
|
||||
<@ endfor @>
|
||||
<@- endif @>
|
||||
<@- endmacro -@>
|
||||
|
||||
<@ macro documentMethod(method) -@>
|
||||
<@ endif @> <@ endfor @> <@- endif @> <@- endmacro -@> <@ macro documentMethod(method) -@>
|
||||
<h3><a class="anchor" name="<$ method.name $>" href="#<$ method.name $>"></a><$ functionSyntax(method) $></h3>
|
||||
<$ documentPlatforms(method) $>
|
||||
<$ method.description $>
|
||||
<@ if method.params -@>
|
||||
<$ paramTable(method.params) $>
|
||||
<@- endif @>
|
||||
|
||||
<@ if method.returns -@>
|
||||
<$ documentPlatforms(method) $> <$ method.description $> <@ if method.params -@> <$ paramTable(method.params) $> <@-
|
||||
endif @> <@ if method.returns -@>
|
||||
<div class="return-value" markdown="1">
|
||||
<i class="icon ion-arrow-return-left"></i>
|
||||
<b>Returns:</b> <$ typeInfo(method.returns) $>
|
||||
</div>
|
||||
<@- endif @>
|
||||
<@- endmacro -@>
|
||||
|
||||
<@- macro documentClass(doc) @>
|
||||
<@- if doc.statics.length -@>
|
||||
<@- endif @> <@- endmacro -@> <@- macro documentClass(doc) @> <@- if doc.statics.length -@>
|
||||
<h2><a class="anchor" name="static-members" href="#static-members"></a>Static Members</h2>
|
||||
<@ for method in doc.statics -@>
|
||||
<$ documentMethod(method) $>
|
||||
<@ endfor -@>
|
||||
<@ endif @>
|
||||
|
||||
<# --- methods in class --- #>
|
||||
<@ for method in doc.statics -@> <$ documentMethod(method) $> <@ endfor -@> <@ endif @> <# --- methods in class --- #>
|
||||
<@- if doc.members and doc.members.length @>
|
||||
|
||||
<h2><a class="anchor" name="instance-members" href="#instance-members"></a>Instance Members</h2>
|
||||
<@ for method in doc.members -@>
|
||||
<$ documentMethod(method) $>
|
||||
<@- endfor @>
|
||||
<@- endif -@>
|
||||
<@ endmacro @>
|
||||
<@ for method in doc.members -@> <$ documentMethod(method) $> <@- endfor @> <@- endif -@> <@ endmacro @>
|
||||
|
||||
<h1 class="api-title"><$ doc.name $>
|
||||
<@- if doc.beta == true -@>
|
||||
<span class="beta" title="beta">β</span>
|
||||
<@- endif -@>
|
||||
<@- if doc.paid == true -@>
|
||||
<span class="paid" title="paid">Paid</span>
|
||||
<h1 class="api-title">
|
||||
<$ doc.name $> <@- if doc.beta == true -@>
|
||||
<span class="beta" title="beta">β</span>
|
||||
<@- endif -@> <@- if doc.paid == true -@>
|
||||
<span class="paid" title="paid">Paid</span>
|
||||
<@- endif -@>
|
||||
</h1>
|
||||
|
||||
<a class="improve-v2-docs" href="http://github.com/ionic-team/ionic-native/edit/master/<$ doc.fileInfo.relativePath|replace('/home/ubuntu/ionic-native/', '')|replace('//','/') $>#L<$ doc.location.start.line $>">
|
||||
<a
|
||||
class="improve-v2-docs"
|
||||
href="http://github.com/ionic-team/ionic-native/edit/master/<$ doc.fileInfo.relativePath|replace('/home/ubuntu/ionic-native/', '')|replace('//','/') $>#L<$ doc.location.start.line $>"
|
||||
>
|
||||
Improve this doc
|
||||
</a>
|
||||
|
||||
<# --- Decorators --- #>
|
||||
<@- if doc.decorators @>
|
||||
<@ for prop in doc.decorators[0].argumentInfo @>
|
||||
<@ if doc.beta == true @>
|
||||
<# --- Decorators --- #> <@- if doc.decorators @> <@ for prop in doc.decorators[0].argumentInfo @> <@ if doc.beta ==
|
||||
true @>
|
||||
<p class="beta-notice">
|
||||
This plugin is still in beta stage and may not work as expected. Please
|
||||
submit any issues to the <a target="_blank"
|
||||
href="<$ prop.repo $>/issues">plugin repo</a>.
|
||||
This plugin is still in beta stage and may not work as expected. Please submit any issues to the
|
||||
<a target="_blank" href="<$ prop.repo $>/issues">plugin repo</a>.
|
||||
</p>
|
||||
<@ endif @>
|
||||
<@ if doc.paid == true @>
|
||||
<@ endif @> <@ if doc.paid == true @>
|
||||
<p class="paid-notice">
|
||||
This plugin might require a paid license, or might take a share of your app's earnings.
|
||||
Check the <a target="_blank" rel="nofollow" href="<$ prop.repo $>">plugin's repo</a> for more information.
|
||||
This plugin might require a paid license, or might take a share of your app's earnings. Check the
|
||||
<a target="_blank" rel="nofollow" href="<$ prop.repo $>">plugin's repo</a> for more information.
|
||||
</p>
|
||||
<@ endif @>
|
||||
<@ endif @> <# --- Plugin description --- #> <$ doc.description | marked $>
|
||||
|
||||
<# --- Plugin description --- #>
|
||||
<$ doc.description | marked $>
|
||||
|
||||
<p>Repo:
|
||||
<p>
|
||||
Repo:
|
||||
<a href="<$ prop.repo $>">
|
||||
<$ prop.repo $>
|
||||
</a>
|
||||
@@ -185,115 +137,72 @@ docType: "<$ doc.docType $>"
|
||||
<# --- Install commands --- #>
|
||||
<h2><a class="anchor" name="installation" href="#installation"></a>Installation</h2>
|
||||
<ol class="installation">
|
||||
<li>Install the Cordova and Ionic Native plugins:<br>
|
||||
<li>
|
||||
Install the Cordova and Ionic Native plugins:<br />
|
||||
<pre><code class="nohighlight">$ <@ if prop.install @><$ prop.install | replace('<', '<').replace('>', '>') $><@ else @>ionic cordova plugin add <$ prop.plugin $><@ endif @>
|
||||
$ npm install @ionic-native/<$ doc.npmId $>
|
||||
</code></pre>
|
||||
</li>
|
||||
<li><a href="https://ionicframework.com/docs/native/#Add_Plugins_to_Your_App_Module">Add this plugin to your app's module</a></li>
|
||||
<li>
|
||||
<a href="https://ionicframework.com/docs/native/#Add_Plugins_to_Your_App_Module"
|
||||
>Add this plugin to your app's module</a
|
||||
>
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
<# --- Plugin supported platforms --- #>
|
||||
<@ if prop.platforms @>
|
||||
<# --- Plugin supported platforms --- #> <@ if prop.platforms @>
|
||||
<h2><a class="anchor" name="platforms" href="#platforms"></a>Supported platforms</h2>
|
||||
<ul>
|
||||
<@ for platform in prop.platforms -@>
|
||||
<li><$ platform $></li>
|
||||
<@- endfor @>
|
||||
</ul>
|
||||
<@ endif @>
|
||||
<@ endfor @>
|
||||
<@ endif -@> <# --- end of: if doc.decorators --- #>
|
||||
|
||||
<# --- Plugin usage --- #>
|
||||
<@ if doc.usage @>
|
||||
<@ endif @> <@ endfor @> <@ endif -@> <# --- end of: if doc.decorators --- #> <# --- Plugin usage --- #> <@ if doc.usage
|
||||
@>
|
||||
<h2><a class="anchor" name="usage" href="#usage"></a>Usage</h2>
|
||||
<$ doc.usage | marked $>
|
||||
<@ endif @>
|
||||
|
||||
<# --- Plugin attributes --- #>
|
||||
<@- if doc.properties -@>
|
||||
<$ doc.usage | marked $> <@ endif @> <# --- Plugin attributes --- #> <@- if doc.properties -@>
|
||||
<h2><a class="anchor" name="attributes" href="#attributes"></a>Attributes:</h2>
|
||||
<table class="table" style="margin:0;">
|
||||
<table class="table" style="margin: 0;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Attribute</th>
|
||||
<@ set hasTypes = false @>
|
||||
<@ for prop in doc.properties @>
|
||||
<@ if prop.type @>
|
||||
<@ set hasTypes = true @>
|
||||
<@ endif @>
|
||||
<@ endfor @>
|
||||
<@ if hasTypes @>
|
||||
<th>Type</th>
|
||||
<@ endif @>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Attribute</th>
|
||||
<@ set hasTypes = false @> <@ for prop in doc.properties @> <@ if prop.type @> <@ set hasTypes = true @> <@ endif
|
||||
@> <@ endfor @> <@ if hasTypes @>
|
||||
<th>Type</th>
|
||||
<@ endif @>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<@- for prop in doc.properties -@>
|
||||
<tr>
|
||||
<td>
|
||||
<$ prop.name $>
|
||||
</td>
|
||||
<@ if hasTypes @>
|
||||
<td>
|
||||
<$ prop.type.name $>
|
||||
</td>
|
||||
<@ endif @>
|
||||
<td>
|
||||
<$ prop.description $>
|
||||
</td>
|
||||
</tr>
|
||||
<@ endfor -@>
|
||||
<@- for prop in doc.properties -@>
|
||||
<tr>
|
||||
<td>
|
||||
<$ prop.name $>
|
||||
</td>
|
||||
<@ if hasTypes @>
|
||||
<td>
|
||||
<$ prop.type.name $>
|
||||
</td>
|
||||
<@ endif @>
|
||||
<td>
|
||||
<$ prop.description $>
|
||||
</td>
|
||||
</tr>
|
||||
<@ endfor -@>
|
||||
</tbody>
|
||||
</table>
|
||||
<@- endif -@>
|
||||
|
||||
<# --- Plugin class documentation --- #>
|
||||
<$ documentClass(doc) $>
|
||||
|
||||
<# --- Advanced usage --- #>
|
||||
<@- if doc.advanced -@>
|
||||
<@- endif -@> <# --- Plugin class documentation --- #> <$ documentClass(doc) $> <# --- Advanced usage --- #> <@- if
|
||||
doc.advanced -@>
|
||||
<h2><a class="anchor" name="advanced" href="#advanced"></a>Advanced</h2>
|
||||
<$ doc.advanced | marked $>
|
||||
<@- endif -@>
|
||||
|
||||
<# --- Other classes --- #>
|
||||
<@- for tag in doc.tags.tags -@>
|
||||
<@- if tag.tagName == 'classes' -@>
|
||||
<@- set classes = tag.description.split('\n') -@>
|
||||
<@- for item in classes -@>
|
||||
<@- if item.length > 1 -@>
|
||||
<@- for export in doc.moduleDoc.exports -@>
|
||||
<@- if export.name == item -@>
|
||||
<$ doc.advanced | marked $> <@- endif -@> <# --- Other classes --- #> <@- for tag in doc.tags.tags -@> <@- if
|
||||
tag.tagName == 'classes' -@> <@- set classes = tag.description.split('\n') -@> <@- for item in classes -@> <@- if
|
||||
item.length > 1 -@> <@- for export in doc.moduleDoc.exports -@> <@- if export.name == item -@>
|
||||
<h2><a class="anchor" name="<$ item $>" href="#<$ item $>"></a><$ item $></h2>
|
||||
<$ documentClass(export) $>
|
||||
<@- endif -@>
|
||||
<@- endfor -@>
|
||||
<@- endif -@>
|
||||
<@- endfor -@>
|
||||
<@- endif -@>
|
||||
<@- endfor -@>
|
||||
|
||||
<# --- Other interfaces --- #>
|
||||
<@ for tag in doc.tags.tags -@>
|
||||
<@ if tag.tagName == 'interfaces' @>
|
||||
<@ set interfaces = tag.description.split('\n') @>
|
||||
<@ for item in interfaces -@>
|
||||
<@ if item.length > 1 @>
|
||||
<$ documentClass(export) $> <@- endif -@> <@- endfor -@> <@- endif -@> <@- endfor -@> <@- endif -@> <@- endfor -@> <#
|
||||
--- Other interfaces --- #> <@ for tag in doc.tags.tags -@> <@ if tag.tagName == 'interfaces' @> <@ set interfaces =
|
||||
tag.description.split('\n') @> <@ for item in interfaces -@> <@ if item.length > 1 @>
|
||||
<h2><a class="anchor" name="<$ item $>" href="#<$ item $>"></a><$ item $></h2>
|
||||
<$ interfaceTable(item) $>
|
||||
<@ endif @>
|
||||
<@- endfor @>
|
||||
<@ endif @>
|
||||
<@- endfor @>
|
||||
|
||||
|
||||
<# --- Related links --- #>
|
||||
<@- if doc.see @>
|
||||
<$ interfaceTable(item) $> <@ endif @> <@- endfor @> <@ endif @> <@- endfor @> <# --- Related links --- #> <@- if
|
||||
doc.see @>
|
||||
<h2><a class="anchor" name="related" href="#related"></a>Related</h2>
|
||||
<@ for s in doc.see @>
|
||||
<$ s | safe $>
|
||||
<@- endfor -@>
|
||||
<@- endif -@>
|
||||
<@ for s in doc.see @> <$ s | safe $> <@- endfor -@> <@- endif -@>
|
||||
|
||||
@@ -6,5 +6,9 @@
|
||||
</li>
|
||||
<@- for doc in docs @><@ if doc.URL and doc.private != true @>
|
||||
<li class="capitalize {% if page.id == '<$ doc.name|lower|dashify $>' %}active{% endif %}">
|
||||
<a href="<$ doc.URL $>"><$ doc.name $><@ if doc.paid == true @> <span class="paid">Paid</span><@ endif @><@ if doc.beta == true @> <span class="beta">β</span><@ endif @></a>
|
||||
</li><@ endif @><@ endfor @>
|
||||
<a href="<$ doc.URL $>"
|
||||
><$ doc.name $><@ if doc.paid == true @> <span class="paid">Paid</span><@ endif @><@ if doc.beta == true @>
|
||||
<span class="beta">β</span><@ endif @></a
|
||||
>
|
||||
</li>
|
||||
<@ endif @><@ endfor @>
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
# <$ doc.name $>
|
||||
|
||||
<@- if doc.beta == true @>
|
||||
|
||||
<p style="color:orange">
|
||||
This plugin is still in beta stage and may not work as expected. Please
|
||||
submit any issues to the <a target="_blank"
|
||||
@@ -12,7 +13,6 @@
|
||||
</p>
|
||||
<@ endif -@>
|
||||
|
||||
|
||||
<@ for prop in doc.decorators[0].argumentInfo @>
|
||||
|
||||
```
|
||||
@@ -29,9 +29,11 @@ Plugin Repo: [<$ prop.repo $>](<$ prop.repo $>)
|
||||
<@- if prop.platforms @>
|
||||
|
||||
## Supported platforms
|
||||
|
||||
<@ for platform in prop.platforms -@>
|
||||
|
||||
- <$ platform $>
|
||||
<@ endfor @>
|
||||
<@ endfor @>
|
||||
|
||||
<@ endif -@>
|
||||
|
||||
|
||||
@@ -6,35 +6,27 @@ const config = require('./config.json'),
|
||||
Dgeni = require('dgeni');
|
||||
|
||||
module.exports = gulp => {
|
||||
gulp.task('docs', [], () => {
|
||||
gulp.task('docs', () => {
|
||||
try {
|
||||
const ionicPackage = require('./dgeni/dgeni-config')(
|
||||
projectPackage.version
|
||||
),
|
||||
const ionicPackage = require('./dgeni/dgeni-config')(projectPackage.version),
|
||||
dgeni = new Dgeni([ionicPackage]);
|
||||
|
||||
return dgeni
|
||||
.generate()
|
||||
.then(docs => console.log(docs.length + ' docs generated'));
|
||||
return dgeni.generate().then(docs => console.log(docs.length + ' docs generated'));
|
||||
} catch (err) {
|
||||
console.log(err.stack);
|
||||
}
|
||||
});
|
||||
|
||||
gulp.task('readmes', [], function() {
|
||||
gulp.task('readmes', () => {
|
||||
fs.copySync(
|
||||
path.resolve(__dirname, '..', '..', 'README.md'),
|
||||
path.resolve(__dirname, '..', '..', config.pluginDir, 'core', 'README.md')
|
||||
);
|
||||
|
||||
try {
|
||||
const ionicPackage = require('./dgeni/dgeni-readmes-config')(
|
||||
projectPackage.version
|
||||
),
|
||||
const ionicPackage = require('./dgeni/dgeni-readmes-config')(projectPackage.version),
|
||||
dgeni = new Dgeni([ionicPackage]);
|
||||
return dgeni
|
||||
.generate()
|
||||
.then(docs => console.log(docs.length + ' README files generated'));
|
||||
return dgeni.generate().then(docs => console.log(docs.length + ' README files generated'));
|
||||
} catch (err) {
|
||||
console.log(err.stack);
|
||||
}
|
||||
|
||||
@@ -31,11 +31,11 @@ function run {
|
||||
if [ $CHANGED -eq 0 ];
|
||||
then
|
||||
echo "-- No changes detected for the following commit, docs not updated."
|
||||
echo "https://github.com/ionic-team/$CIRCLE_PROJECT_REPONAME/commit/$CIRCLE_SHA1"
|
||||
echo "https://github.com/ionic-team/$GITHUB_PROJECT_REPONAME/commit/$GITHUB_SHA1"
|
||||
else
|
||||
git config --global user.email "hi@ionicframework.com"
|
||||
git config --global user.name "Ionitron"
|
||||
git commit -am "Automated build of native docs ionic-team/$CIRCLE_PROJECT_REPONAME@$CIRCLE_SHA1"
|
||||
git commit -am "Automated build of native docs ionic-team/$GITHUB_PROJECT_REPONAME@$GITHUB_SHA1"
|
||||
# in case a different commit was pushed to ionic-site during doc/demo gen,
|
||||
# try to rebase around it before pushing
|
||||
git fetch
|
||||
|
||||
@@ -7,5 +7,5 @@ const LOG_LEVEL = 'verbose';
|
||||
export const Logger = createLogger({
|
||||
level: LOG_LEVEL,
|
||||
format: combine(colorize(), simple()),
|
||||
transports: [new transports.Console({ level: LOG_LEVEL })]
|
||||
transports: [new transports.Console({ level: LOG_LEVEL })],
|
||||
});
|
||||
|
||||
@@ -5,26 +5,20 @@ import * as unminifiedPlugin from 'unminified-webpack-plugin';
|
||||
import * as webpack from 'webpack';
|
||||
|
||||
import { ROOT } from '../build/helpers';
|
||||
import {
|
||||
cleanEmittedData,
|
||||
EMIT_PATH,
|
||||
InjectableClassEntry
|
||||
} from '../build/transformers/extract-injectables';
|
||||
import { cleanEmittedData, EMIT_PATH, InjectableClassEntry } from '../build/transformers/extract-injectables';
|
||||
import { Logger } from '../logger';
|
||||
|
||||
const DIST = path.resolve(ROOT, 'dist');
|
||||
const INDEX_PATH = path.resolve(DIST, 'index.js');
|
||||
const INJECTABLE_CLASSES = fs
|
||||
.readJSONSync(EMIT_PATH)
|
||||
.map((item: InjectableClassEntry) => {
|
||||
item.file =
|
||||
'./' +
|
||||
item.file
|
||||
.split(/[\/\\]+/)
|
||||
.slice(-4, -1)
|
||||
.join('/');
|
||||
return item;
|
||||
});
|
||||
const INJECTABLE_CLASSES = fs.readJSONSync(EMIT_PATH).map((item: InjectableClassEntry) => {
|
||||
item.file =
|
||||
'./' +
|
||||
item.file
|
||||
.split(/[\/\\]+/)
|
||||
.slice(-4, -1)
|
||||
.join('/');
|
||||
return item;
|
||||
});
|
||||
|
||||
const webpackConfig: webpack.Configuration = {
|
||||
mode: 'production',
|
||||
@@ -33,36 +27,35 @@ const webpackConfig: webpack.Configuration = {
|
||||
target: 'web',
|
||||
output: {
|
||||
path: DIST,
|
||||
filename: 'ionic-native.min.js'
|
||||
filename: 'ionic-native.min.js',
|
||||
},
|
||||
resolve: {
|
||||
modules: ['node_modules'],
|
||||
extensions: ['.js'],
|
||||
alias: {
|
||||
'@ionic-native/core': path.resolve(DIST, '@ionic-native/core/index.js')
|
||||
}
|
||||
'@ionic-native/core': path.resolve(DIST, '@ionic-native/core/index.js'),
|
||||
},
|
||||
},
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.js$/,
|
||||
use: path.resolve(ROOT, 'scripts/build/remove-tslib-helpers.js')
|
||||
}
|
||||
]
|
||||
use: path.resolve(ROOT, 'scripts/build/remove-tslib-helpers.js'),
|
||||
},
|
||||
],
|
||||
},
|
||||
plugins: [
|
||||
new webpack.ProvidePlugin({
|
||||
__extends: ['tslib', '__extends']
|
||||
__extends: ['tslib', '__extends'],
|
||||
}),
|
||||
new webpack.optimize.OccurrenceOrderPlugin(true),
|
||||
new webpack.DefinePlugin({
|
||||
'process.env.NODE_ENV': JSON.stringify('production')
|
||||
'process.env.NODE_ENV': JSON.stringify('production'),
|
||||
}),
|
||||
new uglifyJsPlugin({
|
||||
sourceMap: true
|
||||
sourceMap: true,
|
||||
}),
|
||||
new unminifiedPlugin()
|
||||
]
|
||||
new unminifiedPlugin(),
|
||||
],
|
||||
};
|
||||
|
||||
function getPluginImport(entry: InjectableClassEntry) {
|
||||
|
||||
@@ -14,30 +14,21 @@ const outDirs = PLUGIN_PATHS.map(p =>
|
||||
const injectableClasses = fs.readJSONSync(EMIT_PATH);
|
||||
|
||||
outDirs.forEach(dir => {
|
||||
const classes = injectableClasses.filter(
|
||||
entry => entry.dirName === dir.split(/[\\/]+/).pop()
|
||||
);
|
||||
const classes = injectableClasses.filter(entry => entry.dirName === dir.split(/[\\/]+/).pop());
|
||||
|
||||
let jsFile: string = fs.readFileSync(path.join(dir, 'index.js'), 'utf-8'),
|
||||
dtsFile: string = fs.readFileSync(path.join(dir, 'index.d.ts'), 'utf-8');
|
||||
|
||||
classes.forEach(entry => {
|
||||
dtsFile = dtsFile.replace(
|
||||
`class ${entry.className} `,
|
||||
'class ' + entry.className + 'Original '
|
||||
);
|
||||
dtsFile += `\nexport declare const ${entry.className}: ${
|
||||
entry.className
|
||||
}Original;`;
|
||||
dtsFile = dtsFile.replace(`class ${entry.className} `, 'class ' + entry.className + 'Original ');
|
||||
dtsFile += `\nexport declare const ${entry.className}: ${entry.className}Original;`;
|
||||
jsFile = jsFile.replace(
|
||||
new RegExp(`([\\s\\(])${entry.className}([\\s\\.;\\(,])`, 'g'),
|
||||
'$1' + entry.className + 'Original$2'
|
||||
);
|
||||
jsFile = jsFile.replace(
|
||||
`export { ${entry.className}Original }`,
|
||||
`var ${entry.className} = new ${entry.className}Original();\nexport { ${
|
||||
entry.className
|
||||
} }`
|
||||
`var ${entry.className} = new ${entry.className}Original();\nexport { ${entry.className} }`
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
import {
|
||||
cleanupNgx,
|
||||
generateLegacyBundles,
|
||||
generateDeclarationFiles,
|
||||
modifyMetadata,
|
||||
transpileNgx,
|
||||
transpileNgxCore
|
||||
transpileNgxCore,
|
||||
} from '../build/ngx';
|
||||
|
||||
transpileNgxCore();
|
||||
transpileNgx();
|
||||
generateLegacyBundles();
|
||||
generateDeclarationFiles();
|
||||
modifyMetadata();
|
||||
cleanupNgx();
|
||||
|
||||
@@ -15,14 +15,15 @@ const FLAGS = '--access public';
|
||||
|
||||
const PACKAGE_JSON_BASE = {
|
||||
description: 'Ionic Native - Native plugins for ionic apps',
|
||||
main: 'bundle.js',
|
||||
module: 'index.js',
|
||||
typings: 'index.d.ts',
|
||||
author: 'ionic',
|
||||
license: 'MIT',
|
||||
repository: {
|
||||
type: 'git',
|
||||
url: 'https://github.com/ionic-team/ionic-native.git'
|
||||
}
|
||||
url: 'https://github.com/ionic-team/ionic-native.git',
|
||||
},
|
||||
};
|
||||
|
||||
const DIST = path.resolve(ROOT, 'dist/@ionic-native');
|
||||
@@ -30,11 +31,11 @@ const DIST = path.resolve(ROOT, 'dist/@ionic-native');
|
||||
const PACKAGES = [];
|
||||
|
||||
const MIN_CORE_VERSION = '^5.1.0';
|
||||
const RXJS_VERSION = '^6.5.0';
|
||||
const RXJS_VERSION = '^5.5.0 || ^6.5.0';
|
||||
|
||||
const PLUGIN_PEER_DEPENDENCIES = {
|
||||
'@ionic-native/core': MIN_CORE_VERSION,
|
||||
rxjs: RXJS_VERSION
|
||||
rxjs: RXJS_VERSION,
|
||||
};
|
||||
|
||||
function getPackageJsonContent(name: string, peerDependencies = {}, dependencies = {}) {
|
||||
@@ -42,7 +43,7 @@ function getPackageJsonContent(name: string, peerDependencies = {}, dependencies
|
||||
name: '@ionic-native/' + name,
|
||||
dependencies,
|
||||
peerDependencies,
|
||||
version: VERSION
|
||||
version: VERSION,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -51,7 +52,10 @@ function writePackageJson(data: any, dir: string) {
|
||||
fs.writeJSONSync(filePath, data);
|
||||
PACKAGES.push(dir);
|
||||
}
|
||||
|
||||
function writeNGXPackageJson(data: any, dir: string) {
|
||||
const filePath = path.resolve(dir, 'package.json');
|
||||
fs.writeJSONSync(filePath, data);
|
||||
}
|
||||
function prepare() {
|
||||
// write @ionic-native/core package.json
|
||||
writePackageJson(
|
||||
@@ -64,8 +68,9 @@ function prepare() {
|
||||
const pluginName = pluginPath.split(/[\/\\]+/).slice(-2)[0];
|
||||
const packageJsonContents = getPackageJsonContent(pluginName, PLUGIN_PEER_DEPENDENCIES);
|
||||
const dir = path.resolve(DIST, 'plugins', pluginName);
|
||||
|
||||
const ngxDir = path.join(dir, 'ngx');
|
||||
writePackageJson(packageJsonContents, dir);
|
||||
writeNGXPackageJson(packageJsonContents, ngxDir);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -74,7 +79,7 @@ async function publish(ignoreErrors = false) {
|
||||
// upload 1 package per CPU thread at a time
|
||||
const worker = Queue.async.asyncify(
|
||||
(pkg: any) =>
|
||||
new Promise<any>((resolve, reject) => {
|
||||
new Promise<string | void>((resolve, reject) => {
|
||||
exec(`npm publish ${pkg} ${FLAGS}`, (err, stdout) => {
|
||||
if (stdout) {
|
||||
Logger.verbose(stdout.trim());
|
||||
@@ -82,9 +87,7 @@ async function publish(ignoreErrors = false) {
|
||||
}
|
||||
if (err) {
|
||||
if (!ignoreErrors) {
|
||||
if (
|
||||
err.message.includes('You cannot publish over the previously published version')
|
||||
) {
|
||||
if (err.message.includes('You cannot publish over the previously published version')) {
|
||||
Logger.verbose('Ignoring duplicate version error.');
|
||||
return resolve();
|
||||
}
|
||||
|
||||
@@ -6,7 +6,5 @@
|
||||
"noImplicitAny": false,
|
||||
"lib": ["es6"]
|
||||
},
|
||||
"exclude": [
|
||||
"node_modules"
|
||||
]
|
||||
"exclude": ["node_modules"]
|
||||
}
|
||||
|
||||
@@ -22,9 +22,7 @@ export function getPromise<T>(callback: (resolve: Function, reject?: Function) =
|
||||
|
||||
if (typeof window !== 'undefined' && window.angular) {
|
||||
const doc = window.document;
|
||||
const injector = window.angular
|
||||
.element(doc.querySelector('[ng-app]') || doc.body)
|
||||
.injector();
|
||||
const injector = window.angular.element(doc.querySelector('[ng-app]') || doc.body).injector();
|
||||
if (injector) {
|
||||
const $q = injector.get('$q');
|
||||
return $q((resolve: Function, reject: Function) => {
|
||||
@@ -39,12 +37,7 @@ export function getPromise<T>(callback: (resolve: Function, reject?: Function) =
|
||||
return tryNativePromise();
|
||||
}
|
||||
|
||||
export function wrapPromise(
|
||||
pluginObj: any,
|
||||
methodName: string,
|
||||
args: any[],
|
||||
opts: CordovaOptions = {}
|
||||
) {
|
||||
export function wrapPromise(pluginObj: any, methodName: string, args: any[], opts: CordovaOptions = {}) {
|
||||
let pluginResult: any, rej: Function;
|
||||
const p = getPromise((resolve: Function, reject: Function) => {
|
||||
if (opts.destruct) {
|
||||
@@ -149,7 +142,10 @@ function wrapObservable(pluginObj: any, methodName: string, args: any[], opts: a
|
||||
* @returns {Observable}
|
||||
*/
|
||||
function wrapEventObservable(event: string, element: any): Observable<any> {
|
||||
element = (typeof window !== 'undefined' && element) ? get(window, element) : element || typeof window !== 'undefined' || {};
|
||||
element =
|
||||
typeof window !== 'undefined' && element
|
||||
? get(window, element)
|
||||
: element || (typeof window !== 'undefined' ? window : {});
|
||||
return fromEvent(element, event);
|
||||
}
|
||||
|
||||
@@ -168,11 +164,7 @@ export function checkAvailability(
|
||||
methodName?: string,
|
||||
pluginName?: string
|
||||
): boolean | { error: string };
|
||||
export function checkAvailability(
|
||||
plugin: any,
|
||||
methodName?: string,
|
||||
pluginName?: string
|
||||
): boolean | { error: string } {
|
||||
export function checkAvailability(plugin: any, methodName?: string, pluginName?: string): boolean | { error: string } {
|
||||
let pluginRef, pluginInstance, pluginPackage;
|
||||
|
||||
if (typeof plugin === 'string') {
|
||||
@@ -203,10 +195,7 @@ export function checkAvailability(
|
||||
* @private
|
||||
*/
|
||||
export function instanceAvailability(pluginObj: any, methodName?: string): boolean {
|
||||
return (
|
||||
pluginObj._objectInstance &&
|
||||
(!methodName || typeof pluginObj._objectInstance[methodName] !== 'undefined')
|
||||
);
|
||||
return pluginObj._objectInstance && (!methodName || typeof pluginObj._objectInstance[methodName] !== 'undefined');
|
||||
}
|
||||
|
||||
export function setIndex(args: any[], opts: any = {}, resolve?: Function, reject?: Function): any {
|
||||
@@ -328,13 +317,7 @@ export function get(element: Element | Window, path: string) {
|
||||
export function pluginWarn(pluginName: string, plugin?: string, method?: string): void {
|
||||
if (method) {
|
||||
console.warn(
|
||||
'Native: tried calling ' +
|
||||
pluginName +
|
||||
'.' +
|
||||
method +
|
||||
', but the ' +
|
||||
pluginName +
|
||||
' plugin is not installed.'
|
||||
'Native: tried calling ' + pluginName + '.' + method + ', but the ' + pluginName + ' plugin is not installed.'
|
||||
);
|
||||
} else {
|
||||
console.warn(`Native: tried accessing the ${pluginName} plugin but it's not installed.`);
|
||||
|
||||
@@ -17,10 +17,6 @@ function overrideFunction(pluginObj: any, methodName: string): Observable<any> {
|
||||
});
|
||||
}
|
||||
|
||||
export function cordovaFunctionOverride(
|
||||
pluginObj: any,
|
||||
methodName: string,
|
||||
args: IArguments | any[] = []
|
||||
) {
|
||||
export function cordovaFunctionOverride(pluginObj: any, methodName: string, args: IArguments | any[] = []) {
|
||||
return overrideFunction(pluginObj, methodName);
|
||||
}
|
||||
|
||||
@@ -1,12 +1,7 @@
|
||||
import { wrapInstance } from './common';
|
||||
import { CordovaOptions } from './interfaces';
|
||||
|
||||
export function cordovaInstance(
|
||||
pluginObj: any,
|
||||
methodName: string,
|
||||
config: CordovaOptions,
|
||||
args: IArguments | any[]
|
||||
) {
|
||||
export function cordovaInstance(pluginObj: any, methodName: string, config: CordovaOptions, args: IArguments | any[]) {
|
||||
args = Array.from(args);
|
||||
return wrapInstance(pluginObj, methodName, config).apply(this, args);
|
||||
}
|
||||
|
||||
@@ -1,11 +1,6 @@
|
||||
import { wrap } from './common';
|
||||
import { CordovaOptions } from './interfaces';
|
||||
|
||||
export function cordova(
|
||||
pluginObj: any,
|
||||
methodName: string,
|
||||
config: CordovaOptions,
|
||||
args: IArguments | any[]
|
||||
) {
|
||||
export function cordova(pluginObj: any, methodName: string, config: CordovaOptions, args: IArguments | any[]) {
|
||||
return wrap(pluginObj, methodName, config).apply(this, args);
|
||||
}
|
||||
|
||||
@@ -33,6 +33,10 @@ export interface PluginConfig {
|
||||
|
||||
export interface CordovaOptions {
|
||||
destruct?: boolean;
|
||||
/**
|
||||
* If the method-name of the cordova plugin is different from the wrappers one, it can be defined here
|
||||
*/
|
||||
methodName?: string;
|
||||
/**
|
||||
* Set to true if the wrapped method is a sync function
|
||||
*/
|
||||
|
||||
@@ -2,24 +2,20 @@ import { checkAvailability } from './decorators/common';
|
||||
import { get } from './util';
|
||||
|
||||
export class IonicNativePlugin {
|
||||
static pluginName: string;
|
||||
|
||||
static pluginRef: string;
|
||||
|
||||
static plugin: string;
|
||||
|
||||
static repo: string;
|
||||
|
||||
static platforms: string[];
|
||||
|
||||
static install: string;
|
||||
static pluginName = '';
|
||||
static pluginRef = '';
|
||||
static plugin = '';
|
||||
static repo = '';
|
||||
static platforms: string[] = [];
|
||||
static install = '';
|
||||
|
||||
/**
|
||||
* Returns a boolean that indicates whether the plugin is installed
|
||||
* @return {boolean}
|
||||
*/
|
||||
static installed(): boolean {
|
||||
return checkAvailability(this.pluginRef) === true;
|
||||
const isAvailable = checkAvailability(this.pluginRef) === true;
|
||||
return isAvailable;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -36,27 +32,31 @@ export class IonicNativePlugin {
|
||||
* Returns the plugin's name
|
||||
*/
|
||||
static getPluginName(): string {
|
||||
return this.pluginName;
|
||||
const pluginName = this.pluginName;
|
||||
return pluginName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the plugin's reference
|
||||
*/
|
||||
static getPluginRef(): string {
|
||||
return this.pluginRef;
|
||||
const pluginRef = this.pluginRef;
|
||||
return pluginRef;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the plugin's install name
|
||||
*/
|
||||
static getPluginInstallName(): string {
|
||||
return this.plugin;
|
||||
const plugin = this.plugin;
|
||||
return plugin;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the plugin's supported platforms
|
||||
*/
|
||||
static getSupportedPlatforms(): string[] {
|
||||
return this.platforms || [];
|
||||
const platform = this.platforms;
|
||||
return platform;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ export function initAngular1(plugins: any) {
|
||||
const funcs = window.angular.copy(cls);
|
||||
funcs.__proto__['name'] = name;
|
||||
return funcs;
|
||||
}
|
||||
},
|
||||
]);
|
||||
})(serviceName, cls, name);
|
||||
}
|
||||
|
||||
@@ -299,7 +299,7 @@ export interface DataCaptureResult {
|
||||
pluginRef: 'AbbyyRtrSdk',
|
||||
repo: 'https://github.com/abbyysdk/RTR-SDK.Cordova',
|
||||
install: 'ionic cordova plugin add cordova-plugin-abbyy-rtr-sdk',
|
||||
platforms: ['Android', 'iOS']
|
||||
platforms: ['Android', 'iOS'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AbbyyRTR extends IonicNativePlugin {
|
||||
|
||||
@@ -93,7 +93,7 @@ export interface ActionSheetOptions {
|
||||
plugin: 'cordova-plugin-actionsheet',
|
||||
pluginRef: 'plugins.actionsheet',
|
||||
repo: 'https://github.com/EddyVerbruggen/cordova-plugin-actionsheet',
|
||||
platforms: ['Android', 'Browser', 'iOS', 'Windows', 'Windows Phone 8']
|
||||
platforms: ['Android', 'Browser', 'iOS', 'Windows', 'Windows Phone 8'],
|
||||
})
|
||||
@Injectable()
|
||||
export class ActionSheet extends IonicNativePlugin {
|
||||
@@ -111,7 +111,7 @@ export class ActionSheet extends IonicNativePlugin {
|
||||
THEME_HOLO_DARK: 2,
|
||||
THEME_HOLO_LIGHT: 3,
|
||||
THEME_DEVICE_DEFAULT_DARK: 4,
|
||||
THEME_DEVICE_DEFAULT_LIGHT: 5
|
||||
THEME_DEVICE_DEFAULT_LIGHT: 5,
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -45,17 +45,24 @@ export class AdjustConfig {
|
||||
private delayStart = 0.0;
|
||||
private logLevel: AdjustLogLevel = null;
|
||||
private defaultTracker: string = null;
|
||||
private urlStrategy: AdjustUrlStrategy = null;
|
||||
private externalDeviceId: string = null;
|
||||
private sendInBackground: boolean = null;
|
||||
private shouldLaunchDeeplink: boolean = null;
|
||||
private eventBufferingEnabled: boolean = null;
|
||||
private userAgent: string = null;
|
||||
private isDeviceKnown: boolean = null;
|
||||
private needsCost: boolean = null;
|
||||
private secretId: number = null;
|
||||
private info1: number = null;
|
||||
private info2: number = null;
|
||||
private info3: number = null;
|
||||
private info4: number = null;
|
||||
private processName: string = null; // Android only
|
||||
private preinstallTrackingEnabled: boolean = null; // Android only
|
||||
private allowiAdInfoReading: boolean = null; // iOS only
|
||||
private allowIdfaReading: boolean = null; // iOS only
|
||||
private allowAdServicesInfoReading: boolean = null; // iOS only
|
||||
|
||||
private attributionCallback: (attribution: AdjustAttribution) => void = null;
|
||||
private eventTrackingSucceededCallback: (event: AdjustEventSuccess) => void = null;
|
||||
@@ -89,6 +96,14 @@ export class AdjustConfig {
|
||||
this.defaultTracker = defaultTracker;
|
||||
}
|
||||
|
||||
setExternalDeviceId(externalDeviceId: string) {
|
||||
this.externalDeviceId = externalDeviceId;
|
||||
}
|
||||
|
||||
setUrlStrategy(urlStrategy: AdjustUrlStrategy) {
|
||||
this.urlStrategy = urlStrategy;
|
||||
}
|
||||
|
||||
setSendInBackground(sendInBackground: boolean) {
|
||||
this.sendInBackground = sendInBackground;
|
||||
}
|
||||
@@ -109,23 +124,39 @@ export class AdjustConfig {
|
||||
this.isDeviceKnown = isDeviceKnown;
|
||||
}
|
||||
|
||||
setNeedsCost(needsCost: boolean) {
|
||||
this.needsCost = needsCost;
|
||||
}
|
||||
|
||||
setProcessName(processName: string) {
|
||||
this.processName = processName;
|
||||
}
|
||||
|
||||
setPreinstallTrackingEnabled(preinstallTrackingEnabled: boolean) {
|
||||
this.preinstallTrackingEnabled = preinstallTrackingEnabled;
|
||||
}
|
||||
|
||||
setAllowiAdInfoReading(allowiAdInfoReading: boolean) {
|
||||
this.allowiAdInfoReading = allowiAdInfoReading;
|
||||
}
|
||||
|
||||
setAllowIdfaReading(allowIdfaReading: boolean) {
|
||||
this.allowIdfaReading = allowIdfaReading;
|
||||
}
|
||||
|
||||
setAllowAdServicesInfoReading(allowAdServicesInfoReading: boolean) {
|
||||
this.allowAdServicesInfoReading = allowAdServicesInfoReading;
|
||||
}
|
||||
|
||||
setAttributionCallbackListener(attributionCallback: (attribution: AdjustAttribution) => void) {
|
||||
this.attributionCallback = attributionCallback;
|
||||
}
|
||||
|
||||
setEventTrackingSucceededCallbackListener(
|
||||
eventTrackingSucceededCallback: (event: AdjustEventSuccess) => void
|
||||
) {
|
||||
setEventTrackingSucceededCallbackListener(eventTrackingSucceededCallback: (event: AdjustEventSuccess) => void) {
|
||||
this.eventTrackingSucceededCallback = eventTrackingSucceededCallback;
|
||||
}
|
||||
|
||||
setEventTrackingFailedCallbackListener(
|
||||
eventTrackingFailedCallback: (event: AdjustEventFailure) => void
|
||||
) {
|
||||
setEventTrackingFailedCallbackListener(eventTrackingFailedCallback: (event: AdjustEventFailure) => void) {
|
||||
this.eventTrackingFailedCallback = eventTrackingFailedCallback;
|
||||
}
|
||||
|
||||
@@ -135,9 +166,7 @@ export class AdjustConfig {
|
||||
this.sessionTrackingSucceededCallback = sessionTrackingSucceededCallback;
|
||||
}
|
||||
|
||||
setSessionTrackingFailedCallbackListener(
|
||||
sessionTrackingFailedCallback: (session: AdjustSessionFailure) => void
|
||||
) {
|
||||
setSessionTrackingFailedCallbackListener(sessionTrackingFailedCallback: (session: AdjustSessionFailure) => void) {
|
||||
this.sessionTrackingFailedCallback = sessionTrackingFailedCallback;
|
||||
}
|
||||
|
||||
@@ -194,6 +223,92 @@ export class AdjustConfig {
|
||||
}
|
||||
}
|
||||
|
||||
export class AdjustAppStoreSubscription {
|
||||
private price: string;
|
||||
private currency: string;
|
||||
private transactionId: string;
|
||||
private receipt: string;
|
||||
private transactionDate: string;
|
||||
private salesRegion: string;
|
||||
private callbackParameters: string[] = [];
|
||||
private partnerParameters: string[] = [];
|
||||
|
||||
constructor(price: string, currency: string, transactionId: string, receipt: string) {
|
||||
this.price = price;
|
||||
this.currency = currency;
|
||||
this.transactionId = transactionId;
|
||||
this.receipt = receipt;
|
||||
}
|
||||
|
||||
setTransactionDate(transactionDate: string): void {
|
||||
this.transactionDate = transactionDate;
|
||||
}
|
||||
|
||||
setSalesRegion(salesRegion: string): void {
|
||||
this.salesRegion = salesRegion;
|
||||
}
|
||||
|
||||
addCallbackParameter(key: string, value: string): void {
|
||||
this.callbackParameters.push(key);
|
||||
this.callbackParameters.push(value);
|
||||
}
|
||||
|
||||
addPartnerParameter(key: string, value: string): void {
|
||||
this.partnerParameters.push(key);
|
||||
this.partnerParameters.push(value);
|
||||
}
|
||||
}
|
||||
|
||||
export class AdjustPlayStoreSubscription {
|
||||
private price: string;
|
||||
private currency: string;
|
||||
private sku: string;
|
||||
private orderId: string;
|
||||
private signature: string;
|
||||
private purchaseToken: string;
|
||||
private purchaseTime: string;
|
||||
private callbackParameters: string[] = [];
|
||||
private partnerParameters: string[] = [];
|
||||
|
||||
constructor(price: string, currency: string, sku: string, orderId: string, signature: string, purchaseToken: string) {
|
||||
this.price = price;
|
||||
this.currency = currency;
|
||||
this.sku = sku;
|
||||
this.orderId = orderId;
|
||||
this.signature = signature;
|
||||
this.purchaseToken = purchaseToken;
|
||||
}
|
||||
|
||||
setPurchaseTime(purchaseTime: string): void {
|
||||
this.purchaseTime = purchaseTime;
|
||||
}
|
||||
|
||||
addCallbackParameter(key: string, value: string): void {
|
||||
this.callbackParameters.push(key);
|
||||
this.callbackParameters.push(value);
|
||||
}
|
||||
|
||||
addPartnerParameter(key: string, value: string): void {
|
||||
this.partnerParameters.push(key);
|
||||
this.partnerParameters.push(value);
|
||||
}
|
||||
}
|
||||
|
||||
export class AdjustThirdPartySharing {
|
||||
private isEnabled: boolean;
|
||||
private granularOptions: string[] = [];
|
||||
|
||||
constructor(isEnabled: boolean) {
|
||||
this.isEnabled = isEnabled;
|
||||
}
|
||||
|
||||
addGranularOption(partnerName: string, key: string, value: string): void {
|
||||
this.granularOptions.push(partnerName);
|
||||
this.granularOptions.push(key);
|
||||
this.granularOptions.push(value);
|
||||
}
|
||||
}
|
||||
|
||||
export interface AdjustAttribution {
|
||||
trackerToken: string;
|
||||
trackerName: string;
|
||||
@@ -203,6 +318,9 @@ export interface AdjustAttribution {
|
||||
creative: string;
|
||||
clickLabel: string;
|
||||
adid: string;
|
||||
costType: string;
|
||||
costAmount: string;
|
||||
costCurrency: string;
|
||||
}
|
||||
|
||||
export interface AdjustSessionSuccess {
|
||||
@@ -241,7 +359,7 @@ export interface AdjustEventFailure {
|
||||
|
||||
export enum AdjustEnvironment {
|
||||
Sandbox = 'sandbox',
|
||||
Production = 'production'
|
||||
Production = 'production',
|
||||
}
|
||||
|
||||
export enum AdjustLogLevel {
|
||||
@@ -251,7 +369,34 @@ export enum AdjustLogLevel {
|
||||
Warn = 'WARN',
|
||||
Error = 'ERROR',
|
||||
Assert = 'ASSERT',
|
||||
Suppress = 'SUPPRESS'
|
||||
Suppress = 'SUPPRESS',
|
||||
}
|
||||
|
||||
export enum AdjustUrlStrategy {
|
||||
India = 'India',
|
||||
China = 'China',
|
||||
}
|
||||
|
||||
export enum AdjustAdRevenueSource {
|
||||
AdRevenueSourceMopub = 'mopub',
|
||||
AdRevenueSourceAdmob = 'admob',
|
||||
AdRevenueSourceFbNativeAd = 'facebook_native_ad',
|
||||
AdRevenueSourceFbAudienceNetwork = 'facebook_audience_network',
|
||||
AdRevenueSourceIronsource = 'ironsource',
|
||||
AdRevenueSourceFyber = 'fyber',
|
||||
AdRevenueSourceAerserv = 'aerserv',
|
||||
AdRevenueSourceAppodeal = 'appodeal',
|
||||
AdRevenueSourceAdincube = 'adincube',
|
||||
AdRevenueSourceFusePowered = 'fusepowered',
|
||||
AdRevenueSourceAddapptr = 'addapptr',
|
||||
AdRevenueSourceMillennialMediation = 'millennial_mediation',
|
||||
AdRevenueSourceFlurry = 'flurry',
|
||||
AdRevenueSourceAdmost = 'admost',
|
||||
AdRevenueSourceDeltadna = 'deltadna',
|
||||
AdRevenueSourceUpsight = 'upsight',
|
||||
AdRevenueSourceUnityAds = 'unityads',
|
||||
AdRevenueSourceAdtoapp = 'adtoapp',
|
||||
AdRevenueSourceTapdaq = 'tapdaq',
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -263,7 +408,7 @@ export enum AdjustLogLevel {
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { Adjust, AdjustConfig, AdjustEnvironment } from '@ionic-native/adjust/ngx';
|
||||
* import { Adjust, AdjustConfig, AdjustEnvironment } from '@ionic-native/adjust';
|
||||
*
|
||||
* constructor(private adjust: Adjust) { }
|
||||
*
|
||||
@@ -284,16 +429,21 @@ export enum AdjustLogLevel {
|
||||
* @classes
|
||||
* AdjustEvent
|
||||
* AdjustConfig
|
||||
* AdjustAppStoreSubscription
|
||||
* AdjustPlayStoreSubscription
|
||||
* AdjustThirdPartySharing
|
||||
* @enums
|
||||
* AdjustEnvironment
|
||||
* AdjustLogLevel
|
||||
* AdjustUrlStrategy
|
||||
* AdjustAdRevenueSource
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'Adjust',
|
||||
plugin: 'com.adjust.sdk',
|
||||
pluginRef: 'Adjust',
|
||||
repo: 'https://github.com/adjust/cordova_sdk',
|
||||
platforms: ['Android', 'iOS']
|
||||
platforms: ['Android', 'iOS'],
|
||||
})
|
||||
@Injectable()
|
||||
export class Adjust extends IonicNativePlugin {
|
||||
@@ -311,6 +461,42 @@ export class Adjust extends IonicNativePlugin {
|
||||
@Cordova({ sync: true })
|
||||
trackEvent(event: AdjustEvent): void {}
|
||||
|
||||
/**
|
||||
* This method tracks App Store subscription
|
||||
* @param {AdjustAppStoreSubscription} subscription Adjust App Store subscription object to be tracked
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
trackAppStoreSubscription(subscription: AdjustAppStoreSubscription): void {}
|
||||
|
||||
/**
|
||||
* This method tracks Play Store subscription
|
||||
* @param {AdjustPlayStoreSubscription} subscription Adjust Play Store subscription object to be tracked
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
trackPlayStoreSubscription(subscription: AdjustPlayStoreSubscription): void {}
|
||||
|
||||
/**
|
||||
* This method tracks third party sharing choice
|
||||
* @param {AdjustThirdPartySharing} thirdPartySharing Adjust third party sharing object to be tracked
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
trackThirdPartySharing(thirdPartySharing: AdjustThirdPartySharing): void {}
|
||||
|
||||
/**
|
||||
* This method tracks ad revenue data
|
||||
* @param {AdjustAdRevenueSource} source Ad revenue source
|
||||
* @param {string} payload Ad revenue JSON string payload
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
trackAdRevenue(source: AdjustAdRevenueSource, payload: string): void {}
|
||||
|
||||
/**
|
||||
* This method tracks measurement consent choice
|
||||
* @param {boolean} measurementConsent set measurement consent to true or false
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
trackMeasurementConsent(measurementConsent: boolean): void {}
|
||||
|
||||
/**
|
||||
* This method sets offline mode on or off
|
||||
* @param {boolean} enabled set to true for offline mode on
|
||||
@@ -356,6 +542,13 @@ export class Adjust extends IonicNativePlugin {
|
||||
@Cordova({ sync: true })
|
||||
gdprForgetMe(): void {}
|
||||
|
||||
/**
|
||||
* You can now notify Adjust when a user has exercised their right to stop sharing their data with partners for marketing purposes, but has allowed it to be shared for statistics purposes.
|
||||
* Calling the following method will instruct the Adjust SDK to communicate the user's choice to disable data sharing to the Adjust backend
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
disableThirdPartySharing(): void {}
|
||||
|
||||
/**
|
||||
* Function used to get Google AdId
|
||||
* @return {Promise<string>} Returns a promise with google AdId value
|
||||
@@ -458,4 +651,30 @@ export class Adjust extends IonicNativePlugin {
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
sendFirstPackages(): void {}
|
||||
|
||||
/**
|
||||
* Request Adjust SDK to show pop up dialog for asking user's consent to be tracked.
|
||||
* In order to do this, call this function
|
||||
* @return {Promise<number>} Returns a promise with user's consent value
|
||||
*/
|
||||
@Cordova()
|
||||
requestTrackingAuthorizationWithCompletionHandler(): Promise<number> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* You can update SKAdNetwork conversion value with calling this method
|
||||
* @param {number} conversionValue conversion value for the user
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
updateConversionValue(conversionValue: number): void {}
|
||||
|
||||
/**
|
||||
* To obtain the app tracking authorization status in iOS, call this function
|
||||
* @return {Promise<number>} Returns a promise with app tracking authorization status
|
||||
*/
|
||||
@Cordova()
|
||||
getAppTrackingAuthorizationStatus(): Promise<number> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,23 @@ export interface AdMobFreeBannerConfig {
|
||||
* Auto show ad when loaded
|
||||
*/
|
||||
autoShow?: boolean;
|
||||
/**
|
||||
* Child-directed setting. Default is not calling `tagForChildDirectedTreatment`.
|
||||
* Set to `true` for `tagForChildDirectedTreatment(true)`.
|
||||
* Set to `false` for `tagForChildDirectedTreatment(false)`.
|
||||
*/
|
||||
forChild?: boolean | null;
|
||||
/**
|
||||
* Designed for Families setting. Android-only. Default is not calling setIsDesignedForFamilies.
|
||||
* Set to `true` for `setIsDesignedForFamilies(true)`.
|
||||
* Set to `false` for `setIsDesignedForFamilies(false)`.
|
||||
*/
|
||||
forFamily?: boolean | null;
|
||||
/**
|
||||
* Location targeting. It accept an array in the form of `[latitude, longitude]`.
|
||||
* Android-only. Default is not calling `setLatitude` and `setLongitude`.
|
||||
*/
|
||||
location?: number[] | null;
|
||||
/**
|
||||
* Set to true, to put banner at top
|
||||
*/
|
||||
@@ -46,6 +63,23 @@ export interface AdMobFreeInterstitialConfig {
|
||||
* Auto show ad when loaded
|
||||
*/
|
||||
autoShow?: boolean;
|
||||
/**
|
||||
* Child-directed setting. Default is not calling `tagForChildDirectedTreatment`.
|
||||
* Set to `true` for `tagForChildDirectedTreatment(true)`.
|
||||
* Set to `false` for `tagForChildDirectedTreatment(false)`.
|
||||
*/
|
||||
forChild?: boolean | null;
|
||||
/**
|
||||
* Designed for Families setting. Android-only. Default is not calling setIsDesignedForFamilies.
|
||||
* Set to `true` for `setIsDesignedForFamilies(true)`.
|
||||
* Set to `false` for `setIsDesignedForFamilies(false)`.
|
||||
*/
|
||||
forFamily?: boolean | null;
|
||||
/**
|
||||
* Location targeting. It accept an array in the form of `[latitude, longitude]`.
|
||||
* Android-only. Default is not calling `setLatitude` and `setLongitude`.
|
||||
*/
|
||||
location?: number[] | null;
|
||||
}
|
||||
|
||||
export interface AdMobFreeRewardVideoConfig {
|
||||
@@ -61,6 +95,23 @@ export interface AdMobFreeRewardVideoConfig {
|
||||
* Auto show ad when loaded
|
||||
*/
|
||||
autoShow?: boolean;
|
||||
/**
|
||||
* Child-directed setting. Default is not calling `tagForChildDirectedTreatment`.
|
||||
* Set to `true` for `tagForChildDirectedTreatment(true)`.
|
||||
* Set to `false` for `tagForChildDirectedTreatment(false)`.
|
||||
*/
|
||||
forChild?: boolean | null;
|
||||
/**
|
||||
* Designed for Families setting. Android-only. Default is not calling setIsDesignedForFamilies.
|
||||
* Set to `true` for `setIsDesignedForFamilies(true)`.
|
||||
* Set to `false` for `setIsDesignedForFamilies(false)`.
|
||||
*/
|
||||
forFamily?: boolean | null;
|
||||
/**
|
||||
* Location targeting. It accept an array in the form of `[latitude, longitude]`.
|
||||
* Android-only. Default is not calling `setLatitude` and `setLongitude`.
|
||||
*/
|
||||
location?: number[] | null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -112,7 +163,7 @@ export interface AdMobFreeRewardVideoConfig {
|
||||
plugin: 'cordova-plugin-admob-free',
|
||||
pluginRef: 'admob',
|
||||
repo: 'https://github.com/ratson/cordova-plugin-admob-free',
|
||||
platforms: ['Android', 'iOS']
|
||||
platforms: ['Android', 'iOS'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AdMobFree extends IonicNativePlugin {
|
||||
@@ -139,7 +190,7 @@ export class AdMobFree extends IonicNativePlugin {
|
||||
REWARD_VIDEO_CLOSE: 'admob.rewardvideo.events.CLOSE',
|
||||
REWARD_VIDEO_EXIT_APP: 'admob.rewardvideo.events.EXIT_APP',
|
||||
REWARD_VIDEO_START: 'admob.rewardvideo.events.START',
|
||||
REWARD_VIDEO_REWARD: 'admob.rewardvideo.events.REWARD'
|
||||
REWARD_VIDEO_REWARD: 'admob.rewardvideo.events.REWARD',
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -176,7 +227,7 @@ export class AdMobFree extends IonicNativePlugin {
|
||||
@Plugin({
|
||||
pluginName: 'AdMobFree',
|
||||
plugin: 'cordova-plugin-admob-free',
|
||||
pluginRef: 'admob.banner'
|
||||
pluginRef: 'admob.banner',
|
||||
})
|
||||
export class AdMobFreeBanner extends IonicNativePlugin {
|
||||
/**
|
||||
@@ -232,7 +283,7 @@ export class AdMobFreeBanner extends IonicNativePlugin {
|
||||
@Plugin({
|
||||
pluginName: 'AdMobFree',
|
||||
plugin: 'cordova-plugin-admob-free',
|
||||
pluginRef: 'admob.interstitial'
|
||||
pluginRef: 'admob.interstitial',
|
||||
})
|
||||
export class AdMobFreeInterstitial extends IonicNativePlugin {
|
||||
/**
|
||||
@@ -279,7 +330,7 @@ export class AdMobFreeInterstitial extends IonicNativePlugin {
|
||||
@Plugin({
|
||||
pluginName: 'AdMobFree',
|
||||
plugin: 'cordova-plugin-admob-free',
|
||||
pluginRef: 'admob.rewardvideo'
|
||||
pluginRef: 'admob.rewardvideo',
|
||||
})
|
||||
export class AdMobFreeRewardVideo extends IonicNativePlugin {
|
||||
/**
|
||||
|
||||
@@ -2,10 +2,12 @@ import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
import { Observable, fromEvent } from 'rxjs';
|
||||
|
||||
export type AdUnitIDOption = string | {
|
||||
android: string;
|
||||
ios: string;
|
||||
};
|
||||
export type AdUnitIDOption =
|
||||
| string
|
||||
| {
|
||||
android: string;
|
||||
ios: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* @name AdMob Plus
|
||||
@@ -13,82 +15,87 @@ export type AdUnitIDOption = string | {
|
||||
* AdMob Plus is the successor of cordova-plugin-admob-free, which provides a cleaner API and build with modern tools.
|
||||
*/
|
||||
@Plugin({
|
||||
plugin: 'cordova-admob-plus',
|
||||
pluginName: 'AdMob',
|
||||
pluginRef: 'admob.banner',
|
||||
repo: 'https://github.com/admob-plus/admob-plus',
|
||||
platforms: ['Android', 'iOS']
|
||||
plugin: 'cordova-admob-plus',
|
||||
pluginName: 'AdMob',
|
||||
pluginRef: 'admob.banner',
|
||||
repo: 'https://github.com/admob-plus/admob-plus',
|
||||
platforms: ['Android', 'iOS'],
|
||||
})
|
||||
export class Banner {
|
||||
@Cordova({ otherPromise: true })
|
||||
hide(): Promise<any> {
|
||||
return Promise.resolve();
|
||||
}
|
||||
@Cordova({ otherPromise: true })
|
||||
hide(): Promise<any> {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
@Cordova({ otherPromise: true })
|
||||
show(opts: { id?: AdUnitIDOption }): Promise<any> {
|
||||
return Promise.resolve();
|
||||
}
|
||||
@Cordova({ otherPromise: true })
|
||||
show(opts: { id?: AdUnitIDOption }): Promise<any> {
|
||||
return Promise.resolve();
|
||||
}
|
||||
}
|
||||
|
||||
@Plugin({
|
||||
plugin: 'cordova-admob-plus',
|
||||
pluginName: 'AdMob',
|
||||
pluginRef: 'admob.interstitial',
|
||||
plugin: 'cordova-admob-plus',
|
||||
pluginName: 'AdMob',
|
||||
pluginRef: 'admob.interstitial',
|
||||
})
|
||||
export class Interstitial {
|
||||
@Cordova({ otherPromise: true })
|
||||
load(opts: { id?: AdUnitIDOption }): Promise<any> {
|
||||
return Promise.resolve();
|
||||
}
|
||||
@Cordova({ otherPromise: true })
|
||||
load(opts: { id?: AdUnitIDOption }): Promise<any> {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
@Cordova({ otherPromise: true })
|
||||
show(): Promise<any> {
|
||||
return Promise.resolve();
|
||||
}
|
||||
@Cordova({ otherPromise: true })
|
||||
show(): Promise<any> {
|
||||
return Promise.resolve();
|
||||
}
|
||||
}
|
||||
|
||||
@Plugin({
|
||||
plugin: 'cordova-admob-plus',
|
||||
pluginName: 'AdMob',
|
||||
pluginRef: 'admob.rewardVideo',
|
||||
plugin: 'cordova-admob-plus',
|
||||
pluginName: 'AdMob',
|
||||
pluginRef: 'admob.rewardVideo',
|
||||
})
|
||||
export class RewardVideo {
|
||||
@Cordova({ otherPromise: true })
|
||||
load(opts: { id?: AdUnitIDOption }): Promise<any> {
|
||||
return Promise.resolve();
|
||||
}
|
||||
@Cordova({ otherPromise: true })
|
||||
load(opts: { id?: AdUnitIDOption }): Promise<any> {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
@Cordova({ otherPromise: true })
|
||||
show(): Promise<any> {
|
||||
return Promise.resolve();
|
||||
}
|
||||
@Cordova({ otherPromise: true })
|
||||
show(): Promise<any> {
|
||||
return Promise.resolve();
|
||||
}
|
||||
}
|
||||
|
||||
@Plugin({
|
||||
platforms: ['Android', 'iOS'],
|
||||
plugin: 'cordova-admob-plus',
|
||||
pluginName: 'AdMob',
|
||||
pluginRef: 'admob',
|
||||
repo: 'https://github.com/admob-plus/admob-plus',
|
||||
platforms: ['Android', 'iOS'],
|
||||
plugin: 'cordova-admob-plus',
|
||||
pluginName: 'AdMob',
|
||||
pluginRef: 'admob',
|
||||
repo: 'https://github.com/admob-plus/admob-plus',
|
||||
})
|
||||
@Injectable()
|
||||
export class AdMob extends IonicNativePlugin {
|
||||
banner = new Banner();
|
||||
interstitial = new Interstitial();
|
||||
rewardVideo = new RewardVideo();
|
||||
banner = new Banner();
|
||||
interstitial = new Interstitial();
|
||||
rewardVideo = new RewardVideo();
|
||||
|
||||
@Cordova({ otherPromise: true })
|
||||
setAppMuted(value: boolean): Promise<any> {
|
||||
return Promise.resolve();
|
||||
}
|
||||
@Cordova({ otherPromise: true })
|
||||
setAppMuted(value: boolean): Promise<any> {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
@Cordova({ otherPromise: true })
|
||||
setAppVolume(value: number): Promise<any> {
|
||||
return Promise.resolve();
|
||||
}
|
||||
@Cordova({ otherPromise: true })
|
||||
setAppVolume(value: number): Promise<any> {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
on(event: string): Observable<any> {
|
||||
return fromEvent(document, event);
|
||||
}
|
||||
@Cordova({ sync: true })
|
||||
setDevMode(value: boolean): void {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
on(event: string): Observable<any> {
|
||||
return fromEvent(document, event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,6 +100,7 @@ export interface AdExtras {
|
||||
/**
|
||||
* @paid
|
||||
* @name AdMob Pro
|
||||
* @capacitorincompatible true
|
||||
* @description
|
||||
* Plugin for Google Ads, including AdMob / DFP (DoubleClick for publisher) and mediations to other Ad networks.
|
||||
*
|
||||
@@ -138,7 +139,7 @@ export interface AdExtras {
|
||||
plugin: 'cordova-plugin-admobpro',
|
||||
pluginRef: 'AdMob',
|
||||
repo: 'https://github.com/floatinghotpot/cordova-admob-pro',
|
||||
platforms: ['Android', 'iOS', 'Windows Phone 8']
|
||||
platforms: ['Android', 'iOS', 'Windows Phone 8'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AdMobPro extends IonicNativePlugin {
|
||||
@@ -165,7 +166,7 @@ export class AdMobPro extends IonicNativePlugin {
|
||||
BOTTOM_LEFT: 7,
|
||||
BOTTOM_CENTER: 8,
|
||||
BOTTOM_RIGHT: 9,
|
||||
POS_XY: 10
|
||||
POS_XY: 10,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -182,7 +183,7 @@ export class AdMobPro extends IonicNativePlugin {
|
||||
* Destroy the banner, remove it from screen.
|
||||
*/
|
||||
@Cordova({
|
||||
sync: true
|
||||
sync: true,
|
||||
})
|
||||
removeBanner(): void {}
|
||||
|
||||
@@ -191,7 +192,7 @@ export class AdMobPro extends IonicNativePlugin {
|
||||
* @param {number} position Position. Use `AdMobPro.AD_POSITION` to set values.
|
||||
*/
|
||||
@Cordova({
|
||||
sync: true
|
||||
sync: true,
|
||||
})
|
||||
showBanner(position: number): void {}
|
||||
|
||||
@@ -201,7 +202,7 @@ export class AdMobPro extends IonicNativePlugin {
|
||||
* @param {number} y Offset from screen top.
|
||||
*/
|
||||
@Cordova({
|
||||
sync: true
|
||||
sync: true,
|
||||
})
|
||||
showBannerAtXY(x: number, y: number): void {}
|
||||
|
||||
@@ -209,7 +210,7 @@ export class AdMobPro extends IonicNativePlugin {
|
||||
* Hide the banner, remove it from screen, but can show it later
|
||||
*/
|
||||
@Cordova({
|
||||
sync: true
|
||||
sync: true,
|
||||
})
|
||||
hideBanner(): void {}
|
||||
|
||||
@@ -227,7 +228,7 @@ export class AdMobPro extends IonicNativePlugin {
|
||||
* Show interstitial ad when it's ready
|
||||
*/
|
||||
@Cordova({
|
||||
sync: true
|
||||
sync: true,
|
||||
})
|
||||
showInterstitial(): void {}
|
||||
|
||||
@@ -245,7 +246,7 @@ export class AdMobPro extends IonicNativePlugin {
|
||||
* Show a reward video ad
|
||||
*/
|
||||
@Cordova({
|
||||
sync: true
|
||||
sync: true,
|
||||
})
|
||||
showRewardVideoAd(): void {}
|
||||
|
||||
@@ -275,7 +276,7 @@ export class AdMobPro extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onAdFailLoad',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onAdFailLoad(): Observable<any> {
|
||||
return;
|
||||
@@ -288,7 +289,7 @@ export class AdMobPro extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onAdLoaded',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onAdLoaded(): Observable<any> {
|
||||
return;
|
||||
@@ -301,7 +302,7 @@ export class AdMobPro extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onAdPresent',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onAdPresent(): Observable<any> {
|
||||
return;
|
||||
@@ -314,7 +315,7 @@ export class AdMobPro extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onAdLeaveApp',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onAdLeaveApp(): Observable<any> {
|
||||
return;
|
||||
@@ -327,7 +328,7 @@ export class AdMobPro extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onAdDismiss',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onAdDismiss(): Observable<any> {
|
||||
return;
|
||||
|
||||
@@ -2,24 +2,45 @@ import { Injectable } from '@angular/core';
|
||||
import { Cordova, CordovaProperty, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
import { Observable } from 'rxjs';
|
||||
|
||||
export interface AdmobOptions {
|
||||
export interface AdmobBaseOptions {
|
||||
/**
|
||||
* Your publisher id code from your AdMob account
|
||||
*/
|
||||
publisherId: string;
|
||||
|
||||
/**
|
||||
* (Optional) Your interstitial id code from your AdMob account. Defaults to publisherId
|
||||
* (Optional) Your interstitial id code from your AdMob account. Defaults to bannerAdId
|
||||
*/
|
||||
interstitialAdId?: string;
|
||||
|
||||
/**
|
||||
* (Optional) Your rewarded id code from your AdMob account. Defaults to publisherId
|
||||
* (Optional) Indicates whether to put banner ads at top when set to true or at bottom when set to false. Defaults to false
|
||||
*/
|
||||
rewardedAdId?: string;
|
||||
bannerAtTop?: boolean;
|
||||
|
||||
/**
|
||||
* (Optional) Your tappx id for iOS apps. If Admob is configured, it is also used to backfill your lost inventory when there are no Admob ads available
|
||||
* (Optional) Set to true to receive test ads (do not test with real ads as your account may be banned). Defaults to false
|
||||
*/
|
||||
isTesting?: boolean;
|
||||
|
||||
/**
|
||||
* (Optional) Auto show banner ads when available (onAdLoaded event is called). Defaults to true
|
||||
*/
|
||||
autoShowBanner?: boolean;
|
||||
|
||||
/**
|
||||
* (Optional) Auto show interstitial ads when available (onAdLoaded event is called). Defaults to true
|
||||
*/
|
||||
autoShowInterstitial?: boolean;
|
||||
}
|
||||
export interface AdmobOptions extends AdmobBaseOptions {
|
||||
/**
|
||||
* Your banner id code from your AdMob account (https://support.google.com/admob/answer/7356431?hl=en)
|
||||
*/
|
||||
bannerAdId: string;
|
||||
|
||||
/**
|
||||
* Deprecated. Now is only used in web. It will be used as a bannerAdId only in case it is undefined.
|
||||
*/
|
||||
publisherId?: string;
|
||||
|
||||
/**
|
||||
* (Optional) Your tappx id for iOS apps. If Admob is configured, it is also used to backfill your lost inventory (when there are no Admob ads available)
|
||||
*/
|
||||
tappxIdiOS?: string;
|
||||
|
||||
@@ -28,16 +49,21 @@ export interface AdmobOptions {
|
||||
*/
|
||||
tappxIdAndroid?: string;
|
||||
|
||||
/**
|
||||
* AdMob rewarded id (https://support.google.com/admob/answer/7356431?hl=en)
|
||||
*/
|
||||
rewardedAdId?: string;
|
||||
|
||||
/**
|
||||
* (Optional) Auto show rewarded ads when available (onAdLoaded event is called). Defaults to true
|
||||
*/
|
||||
autoShowRewarded?: boolean;
|
||||
|
||||
/**
|
||||
* (Optional) If any of tappxId is present, it tells the percentage of traffic diverted to tappx. Defaults to 0.5 (50% of the traffic will be requested to Tappx)
|
||||
*/
|
||||
tappxShare?: number;
|
||||
|
||||
/**
|
||||
* (Optional) Indicates whether to put banner ads at top when set to true or at bottom when set to false. Defaults to false
|
||||
*/
|
||||
bannerAtTop?: boolean;
|
||||
|
||||
/**
|
||||
* (Optional) Indicates the size of banner ads
|
||||
*/
|
||||
@@ -53,34 +79,58 @@ export interface AdmobOptions {
|
||||
*/
|
||||
offsetStatusBar?: boolean;
|
||||
|
||||
/**
|
||||
* (Optional) Set to true to receive test ads (do not test with real ads as your account may be banned). Defaults to false
|
||||
*/
|
||||
isTesting?: boolean;
|
||||
|
||||
/**
|
||||
* (Options) A JSON object with additional {key: value} pairs
|
||||
*/
|
||||
adExtras?: any;
|
||||
}
|
||||
|
||||
export interface AdmobWebOptions extends AdmobBaseOptions {
|
||||
/**
|
||||
* (Required) AdSense Publisher ID (https://support.google.com/adsense/answer/105516)
|
||||
*/
|
||||
publisherId: string;
|
||||
|
||||
/**
|
||||
* (Optional) Auto show banner ads when available (onAdLoaded event is called). Defaults to true
|
||||
* (Required) Your ad slot code from your AdSense account. Only for browser platform https://support.google.com/adsense/answer/105516
|
||||
*/
|
||||
autoShowBanner?: boolean;
|
||||
adSlot: string;
|
||||
|
||||
/**
|
||||
* (Optional) Auto show interstitial asd when available (onAdLoaded event is called). Defaults to true
|
||||
* (Optional) Indicates if show a close button on interstitial browser ads. Only for browser platform
|
||||
*/
|
||||
autoShowInterstitial?: boolean;
|
||||
interstitialShowCloseButton?: boolean;
|
||||
|
||||
/**
|
||||
* (Optional) Auto show rewarded ads when available (onAdLoaded event is called). Defaults to true
|
||||
* (Optional) Indicates the number of seconds that the interstitial ad waits before show the close button. Only for browser platform
|
||||
*/
|
||||
autoShowRewarded?: boolean;
|
||||
secondsToShowCloseButton?: number;
|
||||
|
||||
/**
|
||||
* (Optional) Indicates the number of seconds that the interstitial ad waits before close the ad. Only for browser platform
|
||||
*/
|
||||
secondsToCloseInterstitial?: number;
|
||||
}
|
||||
|
||||
export interface AdMobEvent {
|
||||
/**
|
||||
* (Optional) AdMob supported type as seen in AD_TYPE
|
||||
*/
|
||||
adType?: string;
|
||||
|
||||
/**
|
||||
* (Optional) AdMob error code
|
||||
*/
|
||||
error?: number;
|
||||
|
||||
/**
|
||||
* (Optional) AdMob error reason
|
||||
*/
|
||||
reason?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Admob
|
||||
* @name AdMob
|
||||
* @description
|
||||
* Most complete Admob plugin with support for [Tappx](http://www.tappx.com/?h=dec334d63287772de859bdb4e977fce6) ads.
|
||||
* Monetize your apps and games with AdMob ads, using latest Google AdMob SDK. With this plugin you can show AdMob ads easily!
|
||||
@@ -92,14 +142,15 @@ export interface AdmobOptions {
|
||||
* - [Tappx](http://www.tappx.com/?h=dec334d63287772de859bdb4e977fce6) ads
|
||||
*
|
||||
* @usage
|
||||
* **Note:** No ads will be served on apps with package name `io.ionic.starter`. This is the default package name for new `ionic` apps. Make sure to rename the package name so ads can be displayed.
|
||||
* ```typescript
|
||||
* import { Admob, AdmobOptions } from '@ionic-native/admob/ngx';
|
||||
* import { Admob, AdmobOptions } from '@ionic-native/admob';
|
||||
*
|
||||
*
|
||||
* constructor(private admob: Admob) {
|
||||
* // Admob options config
|
||||
* const admobOptions: AdmobOptions = {
|
||||
* publisherId: 'XXX-XXXX-XXXX',
|
||||
* bannerAdId: 'XXX-XXXX-XXXX',
|
||||
* interstitialAdId: 'XXX-XXXX-XXXX',
|
||||
* rewardedAdId: 'XXX-XXXX-XXXX',
|
||||
* isTesting: true,
|
||||
@@ -233,11 +284,11 @@ export interface AdmobOptions {
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'Admob',
|
||||
pluginName: 'AdMob',
|
||||
plugin: 'cordova-admob',
|
||||
pluginRef: 'admob',
|
||||
repo: 'https://github.com/appfeel/admob-google-cordova',
|
||||
platforms: ['Android', 'iOS']
|
||||
platforms: ['Android', 'iOS', 'Browser'],
|
||||
})
|
||||
@Injectable()
|
||||
export class Admob extends IonicNativePlugin {
|
||||
@@ -273,7 +324,7 @@ export class Admob extends IonicNativePlugin {
|
||||
* @return {Promise<any>} Returns a promise that resolves when the options are set
|
||||
*/
|
||||
@Cordova()
|
||||
setOptions(options: AdmobOptions): Promise<any> {
|
||||
setOptions(options: AdmobOptions | AdmobWebOptions): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -283,7 +334,7 @@ export class Admob extends IonicNativePlugin {
|
||||
* @return {Promise<any>} Returns a promise that resolves when the banner view is created
|
||||
*/
|
||||
@Cordova()
|
||||
createBannerView(options?: AdmobOptions): Promise<any> {
|
||||
createBannerView(options?: AdmobOptions | AdmobWebOptions): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -313,7 +364,7 @@ export class Admob extends IonicNativePlugin {
|
||||
* @return {Promise<any>} Returns a promise that resolves when the interstitial ad is loaded
|
||||
*/
|
||||
@Cordova()
|
||||
requestInterstitialAd(options?: AdmobOptions): Promise<any> {
|
||||
requestInterstitialAd(options?: AdmobOptions | AdmobWebOptions): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -335,7 +386,7 @@ export class Admob extends IonicNativePlugin {
|
||||
* @return {Promise<any>} Returns a promise that resolves when the rewarded ad is loaded
|
||||
*/
|
||||
@Cordova()
|
||||
requestRewardedAd(options?: AdmobOptions): Promise<any> {
|
||||
requestRewardedAd(options?: AdmobOptions | AdmobWebOptions): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -349,108 +400,173 @@ export class Admob extends IonicNativePlugin {
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when an ad is received
|
||||
* @returns {Observable<any>} Returns an observable when an ad is received
|
||||
* Called when an ad is received.
|
||||
*
|
||||
* *WARNING*: only **ionic^4**. Older versions of ionic, use:
|
||||
*
|
||||
* ```js
|
||||
* document.addEventListener(window.admob.events.onAdLoaded, () => { });
|
||||
* ```
|
||||
*
|
||||
* Please refer to the documentation on https://admob-ionic.com/Events.
|
||||
* @returns {Observable<AdMobEvent>} Returns an observable when an ad is received
|
||||
*/
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'appfeel.cordova.admob.onAdLoaded',
|
||||
element: document
|
||||
element: document,
|
||||
})
|
||||
onAdLoaded(): Observable<any> {
|
||||
onAdLoaded(): Observable<AdMobEvent> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when an ad request failed
|
||||
* @returns {Observable<any>} Returns an observable when an ad request is failed
|
||||
* Called when an ad request failed.
|
||||
*
|
||||
* *WARNING*: only **ionic^4**. Older versions of ionic, use:
|
||||
*
|
||||
* ```js
|
||||
* document.addEventListener(window.admob.events.onAdFailedToLoad, () => { });
|
||||
* ```
|
||||
*
|
||||
* Please refer to the documentation on https://admob-ionic.com/Events.
|
||||
* @returns {Observable<AdMobEvent>} Returns an observable when an ad request is failed
|
||||
*/
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'appfeel.cordova.admob.onAdFailedToLoad',
|
||||
element: document
|
||||
element: document,
|
||||
})
|
||||
onAdFailedToLoad(): Observable<any> {
|
||||
onAdFailedToLoad(): Observable<AdMobEvent> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when an ad opens an overlay that covers the screen.
|
||||
* Please note that onPause cordova event is raised when an interstitial is shown
|
||||
* @returns {Observable<any>} Returns an observable when an ad is opened
|
||||
* Please note that onPause cordova event is raised when an interstitial is shown.
|
||||
*
|
||||
* *WARNING*: only **ionic^4**. Older versions of ionic, use:
|
||||
*
|
||||
* ```js
|
||||
* document.addEventListener(window.admob.events.onAdOpened, () => { });
|
||||
* ```
|
||||
*
|
||||
* Please refer to the documentation on https://admob-ionic.com/Events.
|
||||
* @returns {Observable<AdMobEvent>} Returns an observable when an ad is opened
|
||||
*/
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'appfeel.cordova.admob.onAdOpened',
|
||||
element: document
|
||||
element: document,
|
||||
})
|
||||
onAdOpened(): Observable<any> {
|
||||
onAdOpened(): Observable<AdMobEvent> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the user is about to return to the application after clicking on an ad.
|
||||
* Please note that onResume cordova event is raised when an interstitial is closed
|
||||
* @returns {Observable<any>} Returns an observable when an ad is closed
|
||||
* Please note that onResume cordova event is raised when an interstitial is closed.
|
||||
*
|
||||
* *WARNING*: only **ionic^4**. Older versions of ionic, use:
|
||||
*
|
||||
* ```js
|
||||
* document.addEventListener(window.admob.events.onAdClosed, () => { });
|
||||
* ```
|
||||
*
|
||||
* Please refer to the documentation on https://admob-ionic.com/Events.
|
||||
* @returns {Observable<AdMobEvent>} Returns an observable when an ad is closed
|
||||
*/
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'appfeel.cordova.admob.onAdClosed',
|
||||
element: document
|
||||
element: document,
|
||||
})
|
||||
onAdClosed(): Observable<any> {
|
||||
onAdClosed(): Observable<AdMobEvent> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the user leaves the application after clicking an ad (e.g., to go to the browser)
|
||||
* @returns {Observable<any>} Returns an observable when an ad leaves the application
|
||||
* @returns {Observable<AdMobEvent>} Returns an observable when an ad leaves the application.
|
||||
*
|
||||
* *WARNING*: only **ionic^4**. Older versions of ionic, use:
|
||||
*
|
||||
* ```js
|
||||
* document.addEventListener(window.admob.events.onAdLeftApplication, () => { });
|
||||
* ```
|
||||
*
|
||||
* Please refer to the documentation on https://admob-ionic.com/Events.
|
||||
* @returns {Observable<AdMobEvent>} Returns an observable when application is left due to an ad click
|
||||
*/
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'appfeel.cordova.admob.onAdLeftApplication',
|
||||
element: document
|
||||
element: document,
|
||||
})
|
||||
onAdLeftApplication(): Observable<any> {
|
||||
onAdLeftApplication(): Observable<AdMobEvent> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the user has been rewarded by an ad
|
||||
* @returns {Observable<any>} Returns an observable when the user rewards an ad
|
||||
* Called when the user has been rewarded by an ad.
|
||||
*
|
||||
* *WARNING*: only **ionic^4**. Older versions of ionic, use:
|
||||
*
|
||||
* ```js
|
||||
* document.addEventListener(window.admob.events.onRewardedAd, () => { });
|
||||
* ```
|
||||
*
|
||||
* Please refer to the documentation on https://admob-ionic.com/Events.
|
||||
* @returns {Observable<AdMobEvent>} Returns an observable when the user rewards an ad
|
||||
*/
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'appfeel.cordova.admob.onRewardedAd',
|
||||
element: document
|
||||
element: document,
|
||||
})
|
||||
onRewardedAd(): Observable<any> {
|
||||
onRewardedAd(): Observable<AdMobEvent> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the video of a rewarded ad started
|
||||
* @returns {Observable<any>} Returns an observable when the video is started
|
||||
* Called when the video of a rewarded ad started.
|
||||
*
|
||||
* *WARNING*: only **ionic^4**. Older versions of ionic, use:
|
||||
*
|
||||
* ```js
|
||||
* document.addEventListener(window.admob.events.onRewardedAdVideoStarted, () => { });
|
||||
* ```
|
||||
*
|
||||
* Please refer to the documentation on https://admob-ionic.com/Events.
|
||||
* @returns {Observable<AdMobEvent>} Returns an observable when the video is started
|
||||
*/
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'appfeel.cordova.admob.onRewardedAdVideoStarted',
|
||||
element: document
|
||||
element: document,
|
||||
})
|
||||
onRewardedAdVideoStarted(): Observable<any> {
|
||||
onRewardedAdVideoStarted(): Observable<AdMobEvent> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the video of a rewarded ad has completed
|
||||
* @returns {Observable<any>} Returns an observable when the video is completed
|
||||
* Called when the video of a rewarded ad has completed.
|
||||
*
|
||||
* *WARNING*: only **ionic^4**. Older versions of ionic, use:
|
||||
*
|
||||
* ```js
|
||||
* document.addEventListener(window.admob.events.onRewardedAdVideoCompleted, () => { });
|
||||
* ```
|
||||
*
|
||||
* Please refer to the documentation on https://admob-ionic.com/Events.
|
||||
* @returns {Observable<AdMobEvent>} Returns an observable when the video is completed
|
||||
*/
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'appfeel.cordova.admob.onRewardedAdVideoCompleted',
|
||||
element: document
|
||||
element: document,
|
||||
})
|
||||
onRewardedAdVideoCompleted(): Observable<any> {
|
||||
onRewardedAdVideoCompleted(): Observable<AdMobEvent> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
pluginRef: 'cordova.plugins.AES256',
|
||||
repo: 'https://github.com/Ideas2IT/cordova-aes256',
|
||||
platforms: ['Android', 'iOS'],
|
||||
install: 'ionic cordova plugin add cordova-plugin-aes256-encryption'
|
||||
install: 'ionic cordova plugin add cordova-plugin-aes256-encryption',
|
||||
})
|
||||
@Injectable()
|
||||
export class AES256 extends IonicNativePlugin {
|
||||
@@ -101,5 +101,4 @@ export class AES256 extends IonicNativePlugin {
|
||||
generateSecureIV(password: string): Promise<string> {
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
* constructor(private alipay: Alipay) {
|
||||
*
|
||||
* //alipayOrder is a string that has been generated and signed by the server side.
|
||||
* this.alipay.pay(alipayOrder)
|
||||
* this.alipay.pay(alipayOrder, success, error)
|
||||
* .then(result => {
|
||||
* console.log(result); // Success
|
||||
* })
|
||||
@@ -30,11 +30,11 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
@Plugin({
|
||||
pluginName: 'Alipay',
|
||||
plugin: 'cordova-plugin-gubnoi-alipay',
|
||||
pluginRef: 'Alipay',
|
||||
pluginRef: 'cordova.plugins.alipay',
|
||||
repo: 'https://github.com/jing-zhou/cordova-plugin-alipay',
|
||||
install: 'ionic cordova plugin add cordova-plugin-gubnoi-alipay --variable APP_ID=your_app_id',
|
||||
installVariables: ['APP_ID'],
|
||||
platforms: ['Android', 'iOS']
|
||||
platforms: ['Android', 'iOS'],
|
||||
})
|
||||
@Injectable()
|
||||
export class Alipay extends IonicNativePlugin {
|
||||
@@ -44,7 +44,7 @@ export class Alipay extends IonicNativePlugin {
|
||||
* @returns {Promise<any>} Returns a Promise that resolves with the success return, or rejects with an error.
|
||||
*/
|
||||
@Cordova()
|
||||
pay(order: string): Promise<any> {
|
||||
pay(order: string, success?: (res?: any) => void, error?: (err?: any) => void): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
84
src/@ionic-native/plugins/all-in-one-sdk/index.ts
Normal file
84
src/@ionic-native/plugins/all-in-one-sdk/index.ts
Normal file
@@ -0,0 +1,84 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import {
|
||||
Plugin,
|
||||
Cordova,
|
||||
CordovaProperty,
|
||||
CordovaInstance,
|
||||
InstanceProperty,
|
||||
IonicNativePlugin,
|
||||
} from '@ionic-native/core';
|
||||
import { Observable } from 'rxjs';
|
||||
|
||||
/**
|
||||
* @name AllInOneSDK
|
||||
* @description
|
||||
* Paytm All-in-One SDK plugin for Cordova/Ionic Applications
|
||||
* Paytm All-in-One SDK provides a swift, secure and seamless payment experience to your users by invoking the Paytm app (if installed on your user’s smartphone) to complete payment for your order.
|
||||
* Paytm All-in-One SDK enables payment acceptance via Paytm wallet, Paytm Payments Bank, saved Debit/Credit cards, Net Banking, BHIM UPI and EMI as available in your customer’s Paytm account. If Paytm app is not installed on a customer's device, the transaction will be processed via web view within the All-in-One SDK.
|
||||
* For more information about Paytm All-in-One SDK, please visit https://developer.paytm.com/docs/all-in-one-sdk/hybrid-apps/cordova/
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { AllInOneSDK } from '@ionic-native/all-in-one-sdk/ngx';
|
||||
*
|
||||
*
|
||||
* constructor(private allInOneSDK: AllInOneSDK) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* For below parameters see [documentation](https://developer.paytm.com/docs/all-in-one-sdk/hybrid-apps/cordova/)
|
||||
* let paymentIntent = { mid : merchantID, orderId: orderId, txnToken: transactionToken, amount: amount, isStaging: isStaging, callbackUrl:callBackURL, restrictAppInvoke:restrictAppInvoke }
|
||||
*
|
||||
* this.allInOneSDK.startTransaction(paymentIntent)
|
||||
* .then((res: any) => console.log(res))
|
||||
* .catch((error: any) => console.error(error));
|
||||
*
|
||||
* ```
|
||||
*
|
||||
* For iOS:
|
||||
* After adding the plugin, open the iOS project, you can find the same at <projectName>/platforms/ios.
|
||||
* In case merchant don’t have callback URL, Add an entry into Info.plist LSApplicationQueriesSchemes(Array) Item 0 (String)-> paytm
|
||||
* Add a URL Scheme “paytm”+”MID”
|
||||
*
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'AllInOneSDK',
|
||||
plugin: 'cordova-paytm-allinonesdk',
|
||||
pluginRef: 'AllInOneSDK',
|
||||
repo: 'https://github.com/paytm/paytm-allinonesdk-ionic-cordova.git',
|
||||
platforms: ['Android', 'iOS'],
|
||||
})
|
||||
export class AllInOneSDK extends IonicNativePlugin {
|
||||
/**
|
||||
* This function checks if Paytm Application is available on the device.
|
||||
* If Paytm exists then it invokes Paytm Application with the parameters sent and creates an order.
|
||||
* If the Paytm Application is not available the transaction is continued on a webView within All-in-One SDK.
|
||||
* @param options {PaymentIntentModel} These parameters are required and will be used to create an order.
|
||||
* @return {Promise<PaytmResponse>} Returns a promise that resolves when a transaction completes(both failed and successful).
|
||||
*/
|
||||
@Cordova()
|
||||
startTransaction(options: PaymentIntentModel): Promise<PaytmResponse> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The response that will be recieved when any transaction is completed
|
||||
*/
|
||||
export interface PaytmResponse {
|
||||
message: string;
|
||||
response: string; // A stringified response of a hashmap returned from All-in-One SDK
|
||||
}
|
||||
|
||||
/**
|
||||
* For below parameters see [documentation](https://developer.paytm.com/docs/all-in-one-sdk/hybrid-apps/cordova/)
|
||||
*/
|
||||
export interface PaymentIntentModel {
|
||||
mid: string; // Merchant ID
|
||||
orderId: string; // Order ID
|
||||
txnToken: string; // Transaction Token
|
||||
amount: string; // Amount
|
||||
isStaging: boolean; // Environment
|
||||
callbackUrl: string; // Callback URL
|
||||
restrictAppInvoke: boolean; // To enable or disable the paytm app invocation
|
||||
}
|
||||
@@ -58,7 +58,7 @@ import { Cordova, CordovaProperty, IonicNativePlugin, Plugin } from '@ionic-nati
|
||||
plugin: 'cordova-plugin-analytics',
|
||||
pluginRef: 'analytics',
|
||||
repo: 'https://github.com/appfeel/analytics-google',
|
||||
platforms: ['Android', 'iOS']
|
||||
platforms: ['Android', 'iOS'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AnalyticsFirebase extends IonicNativePlugin {
|
||||
|
||||
@@ -178,7 +178,7 @@ export interface AndroidExoPlayerControllerConfig {
|
||||
plugin: 'cordova-plugin-exoplayer',
|
||||
pluginRef: 'ExoPlayer',
|
||||
repo: 'https://github.com/frontyard/cordova-plugin-exoplayer',
|
||||
platforms: ['Android']
|
||||
platforms: ['Android'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AndroidExoplayer extends IonicNativePlugin {
|
||||
@@ -192,7 +192,7 @@ export class AndroidExoplayer extends IonicNativePlugin {
|
||||
clearFunction: 'close',
|
||||
clearWithArgs: false,
|
||||
successIndex: 1,
|
||||
errorIndex: 2
|
||||
errorIndex: 2,
|
||||
})
|
||||
show(parameters: AndroidExoPlayerParams): Observable<AndroidExoplayerState> {
|
||||
return;
|
||||
@@ -205,10 +205,7 @@ export class AndroidExoplayer extends IonicNativePlugin {
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
@Cordova()
|
||||
setStream(
|
||||
url: string,
|
||||
controller: AndroidExoPlayerControllerConfig
|
||||
): Promise<void> {
|
||||
setStream(url: string, controller: AndroidExoPlayerControllerConfig): Promise<void> {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -155,7 +155,7 @@ export interface AFADeleteOptions {
|
||||
plugin: 'cordova-plugin-android-fingerprint-auth',
|
||||
pluginRef: 'FingerprintAuth',
|
||||
repo: 'https://github.com/mjwheatley/cordova-plugin-android-fingerprint-auth',
|
||||
platforms: ['Android']
|
||||
platforms: ['Android'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AndroidFingerprintAuth extends IonicNativePlugin {
|
||||
@@ -199,7 +199,7 @@ export class AndroidFingerprintAuth extends IonicNativePlugin {
|
||||
MISSING_ACTION_PARAMETERS: 'MISSING_ACTION_PARAMETERS',
|
||||
MISSING_PARAMETERS: 'MISSING_PARAMETERS',
|
||||
NO_SUCH_ALGORITHM_EXCEPTION: 'NO_SUCH_ALGORITHM_EXCEPTION',
|
||||
SECURITY_EXCEPTION: 'SECURITY_EXCEPTION'
|
||||
SECURITY_EXCEPTION: 'SECURITY_EXCEPTION',
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -25,7 +25,7 @@ export enum AndroidSystemUiFlags {
|
||||
/** View would like to remain interactive when hiding the status bar with SYSTEM_UI_FLAG_FULLSCREEN and/or hiding the navigation bar with SYSTEM_UI_FLAG_HIDE_NAVIGATION. SYSTEM_UI_FLAG_IMMERSIVE_STICKY */
|
||||
ImmersiveSticky = 4096,
|
||||
/** Requests the status bar to draw in a mode that is compatible with light status bar backgrounds. SYSTEM_UI_FLAG_LIGHT_STATUS_BAR */
|
||||
LightStatusBar = 8192
|
||||
LightStatusBar = 8192,
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -53,7 +53,7 @@ export enum AndroidSystemUiFlags {
|
||||
plugin: 'cordova-plugin-fullscreen',
|
||||
pluginRef: 'AndroidFullScreen',
|
||||
repo: 'https://github.com/mesmotronic/cordova-plugin-fullscreen',
|
||||
platforms: ['Android']
|
||||
platforms: ['Android'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AndroidFullScreen extends IonicNativePlugin {
|
||||
@@ -71,7 +71,7 @@ export class AndroidFullScreen extends IonicNativePlugin {
|
||||
* @return {Promise<void>}
|
||||
*/
|
||||
@Cordova()
|
||||
isImmersiveModeSupported(): Promise<void> {
|
||||
isImmersiveModeSupported(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
99
src/@ionic-native/plugins/android-notch/index.ts
Normal file
99
src/@ionic-native/plugins/android-notch/index.ts
Normal file
@@ -0,0 +1,99 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
|
||||
|
||||
/**
|
||||
* @name Android Notch
|
||||
* @description
|
||||
* This plugin enables developers to get the cutout and android devices inset sizes
|
||||
* It is based on the cordova plugin developed by @tobspr: https://github.com/tobspr/cordova-plugin-android-notch
|
||||
* This plugin works on all android versions, but we can only detect notches starting from Android 9.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { AndroidNotch } from '@ionic-native/android-notch/ngx';
|
||||
*
|
||||
*
|
||||
* constructor(private androidNotch: AndroidNotch) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
*
|
||||
* this.androidNotch.hasCutout()
|
||||
* .then((px: number) => console.log('Inset size: '), px)
|
||||
* .catch((error: any) => console.log('Error: ', error))
|
||||
*
|
||||
* this.androidNotch.getInsetTop()
|
||||
* .then((px: number) => console.log('Inset size: '), px)
|
||||
* .catch((error: any) => console.log('Error: ', error))
|
||||
*
|
||||
* this.androidNotch.getInsetRight()
|
||||
* .then((px: number) => console.log('Inset size: '), px)
|
||||
* .catch((error: any) => console.log('Error: ', error))
|
||||
*
|
||||
* this.androidNotch.getInsetBottom()
|
||||
* .then((px: number) => console.log('Inset size: '), px)
|
||||
* .catch((error: any) => console.log('Error: ', error))
|
||||
*
|
||||
* this.androidNotch.getInsetLeft()
|
||||
* .then((px: number) => console.log('Inset size: '), px)
|
||||
* .catch((error: any) => console.log('Error: ', error))
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'AndroidNotch',
|
||||
plugin: 'cordova-plugin-android-notch',
|
||||
pluginRef: 'AndroidNotch',
|
||||
repo: 'https://github.com/tobspr/cordova-plugin-android-notch.git',
|
||||
platforms: ['Android'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AndroidNotch extends IonicNativePlugin {
|
||||
/**
|
||||
* Returns true if the android device has cutout
|
||||
*
|
||||
* @return {Promise<boolean>}
|
||||
*/
|
||||
@Cordova()
|
||||
hasCutout(): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the heigth of the top inset
|
||||
*
|
||||
* @return {Promise<number>}
|
||||
*/
|
||||
@Cordova()
|
||||
getInsetTop(): Promise<number> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the heigth of the right inset
|
||||
*
|
||||
* @return {Promise<number>}
|
||||
*/
|
||||
@Cordova()
|
||||
getInsetRight(): Promise<number> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the heigth of the bottom inset
|
||||
* @return {Promise<number>}
|
||||
*/
|
||||
@Cordova()
|
||||
getInsetBottom(): Promise<number> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the heigth of the left inset
|
||||
* @return {Promise<number>}
|
||||
*/
|
||||
@Cordova()
|
||||
getInsetLeft(): Promise<number> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
/**
|
||||
* @name Android Permissions
|
||||
* @premier android-permissions
|
||||
* @description
|
||||
* This plugin is designed to support Android new permissions checking mechanism.
|
||||
*
|
||||
@@ -33,7 +34,7 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
plugin: 'cordova-plugin-android-permissions',
|
||||
pluginRef: 'cordova.plugins.permissions',
|
||||
repo: 'https://github.com/NeoLSN/cordova-plugin-android-permissions',
|
||||
platforms: ['Android']
|
||||
platforms: ['Android'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AndroidPermissions extends IonicNativePlugin {
|
||||
@@ -41,8 +42,7 @@ export class AndroidPermissions extends IonicNativePlugin {
|
||||
ACCESS_CHECKIN_PROPERTIES: 'android.permission.ACCESS_CHECKIN_PROPERTIES',
|
||||
ACCESS_COARSE_LOCATION: 'android.permission.ACCESS_COARSE_LOCATION',
|
||||
ACCESS_FINE_LOCATION: 'android.permission.ACCESS_FINE_LOCATION',
|
||||
ACCESS_LOCATION_EXTRA_COMMANDS:
|
||||
'android.permission.ACCESS_LOCATION_EXTRA_COMMANDS',
|
||||
ACCESS_LOCATION_EXTRA_COMMANDS: 'android.permission.ACCESS_LOCATION_EXTRA_COMMANDS',
|
||||
ACCESS_MOCK_LOCATION: 'android.permission.ACCESS_MOCK_LOCATION',
|
||||
ACCESS_NETWORK_STATE: 'android.permission.ACCESS_NETWORK_STATE',
|
||||
ACCESS_SURFACE_FLINGER: 'android.permission.ACCESS_SURFACE_FLINGER',
|
||||
@@ -53,14 +53,12 @@ export class AndroidPermissions extends IonicNativePlugin {
|
||||
BATTERY_STATS: 'android.permission.BATTERY_STATS',
|
||||
BIND_ACCESSIBILITY_SERVICE: 'android.permission.BIND_ACCESSIBILITY_SERVICE',
|
||||
BIND_APPWIDGET: 'android.permission.BIND_APPWIDGET',
|
||||
BIND_CARRIER_MESSAGING_SERVICE:
|
||||
'android.permission.BIND_CARRIER_MESSAGING_SERVICE',
|
||||
BIND_CARRIER_MESSAGING_SERVICE: 'android.permission.BIND_CARRIER_MESSAGING_SERVICE',
|
||||
BIND_DEVICE_ADMIN: 'android.permission.BIND_DEVICE_ADMIN',
|
||||
BIND_DREAM_SERVICE: 'android.permission.BIND_DREAM_SERVICE',
|
||||
BIND_INPUT_METHOD: 'android.permission.BIND_INPUT_METHOD',
|
||||
BIND_NFC_SERVICE: 'android.permission.BIND_NFC_SERVICE',
|
||||
BIND_NOTIFICATION_LISTENER_SERVICE:
|
||||
'android.permission.BIND_NOTIFICATION_LISTENER_SERVICE',
|
||||
BIND_NOTIFICATION_LISTENER_SERVICE: 'android.permission.BIND_NOTIFICATION_LISTENER_SERVICE',
|
||||
BIND_PRINT_SERVICE: 'android.permission.BIND_PRINT_SERVICE',
|
||||
BIND_REMOTEVIEWS: 'android.permission.BIND_REMOTEVIEWS',
|
||||
BIND_TEXT_SERVICE: 'android.permission.BIND_TEXT_SERVICE',
|
||||
@@ -81,15 +79,12 @@ export class AndroidPermissions extends IonicNativePlugin {
|
||||
CALL_PRIVILEGED: 'android.permission.CALL_PRIVILEGED',
|
||||
CAMERA: 'android.permission.CAMERA',
|
||||
CAPTURE_AUDIO_OUTPUT: 'android.permission.CAPTURE_AUDIO_OUTPUT',
|
||||
CAPTURE_SECURE_VIDEO_OUTPUT:
|
||||
'android.permission.CAPTURE_SECURE_VIDEO_OUTPUT',
|
||||
CAPTURE_SECURE_VIDEO_OUTPUT: 'android.permission.CAPTURE_SECURE_VIDEO_OUTPUT',
|
||||
CAPTURE_VIDEO_OUTPUT: 'android.permission.CAPTURE_VIDEO_OUTPUT',
|
||||
CHANGE_COMPONENT_ENABLED_STATE:
|
||||
'android.permission.CHANGE_COMPONENT_ENABLED_STATE',
|
||||
CHANGE_COMPONENT_ENABLED_STATE: 'android.permission.CHANGE_COMPONENT_ENABLED_STATE',
|
||||
CHANGE_CONFIGURATION: 'android.permission.CHANGE_CONFIGURATION',
|
||||
CHANGE_NETWORK_STATE: 'android.permission.CHANGE_NETWORK_STATE',
|
||||
CHANGE_WIFI_MULTICAST_STATE:
|
||||
'android.permission.CHANGE_WIFI_MULTICAST_STATE',
|
||||
CHANGE_WIFI_MULTICAST_STATE: 'android.permission.CHANGE_WIFI_MULTICAST_STATE',
|
||||
CHANGE_WIFI_STATE: 'android.permission.CHANGE_WIFI_STATE',
|
||||
CLEAR_APP_CACHE: 'android.permission.CLEAR_APP_CACHE',
|
||||
CLEAR_APP_USER_DATA: 'android.permission.CLEAR_APP_USER_DATA',
|
||||
@@ -135,8 +130,7 @@ export class AndroidPermissions extends IonicNativePlugin {
|
||||
READ_CONTACTS: 'android.permission.READ_CONTACTS',
|
||||
READ_EXTERNAL_STORAGE: 'android.permission.READ_EXTERNAL_STORAGE',
|
||||
READ_FRAME_BUFFER: 'android.permission.READ_FRAME_BUFFER',
|
||||
READ_HISTORY_BOOKMARKS:
|
||||
'com.android.browser.permission.READ_HISTORY_BOOKMARKS',
|
||||
READ_HISTORY_BOOKMARKS: 'com.android.browser.permission.READ_HISTORY_BOOKMARKS',
|
||||
READ_INPUT_STATE: 'android.permission.READ_INPUT_STATE',
|
||||
READ_LOGS: 'android.permission.READ_LOGS',
|
||||
READ_PHONE_STATE: 'android.permission.READ_PHONE_STATE',
|
||||
@@ -170,8 +164,7 @@ export class AndroidPermissions extends IonicNativePlugin {
|
||||
SET_TIME_ZONE: 'android.permission.SET_TIME_ZONE',
|
||||
SET_WALLPAPER: 'android.permission.SET_WALLPAPER',
|
||||
SET_WALLPAPER_HINTS: 'android.permission.SET_WALLPAPER_HINTS',
|
||||
SIGNAL_PERSISTENT_PROCESSES:
|
||||
'android.permission.SIGNAL_PERSISTENT_PROCESSES',
|
||||
SIGNAL_PERSISTENT_PROCESSES: 'android.permission.SIGNAL_PERSISTENT_PROCESSES',
|
||||
STATUS_BAR: 'android.permission.STATUS_BAR',
|
||||
SUBSCRIBED_FEEDS_READ: 'android.permission.SUBSCRIBED_FEEDS_READ',
|
||||
SUBSCRIBED_FEEDS_WRITE: 'android.permission.SUBSCRIBED_FEEDS_WRITE',
|
||||
@@ -189,8 +182,7 @@ export class AndroidPermissions extends IonicNativePlugin {
|
||||
WRITE_CONTACTS: 'android.permission.WRITE_CONTACTS',
|
||||
WRITE_EXTERNAL_STORAGE: 'android.permission.WRITE_EXTERNAL_STORAGE',
|
||||
WRITE_GSERVICES: 'android.permission.WRITE_GSERVICES',
|
||||
WRITE_HISTORY_BOOKMARKS:
|
||||
'com.android.browser.permission.WRITE_HISTORY_BOOKMARKS',
|
||||
WRITE_HISTORY_BOOKMARKS: 'com.android.browser.permission.WRITE_HISTORY_BOOKMARKS',
|
||||
WRITE_PROFILE: 'android.permission.WRITE_PROFILE',
|
||||
WRITE_SECURE_SETTINGS: 'android.permission.WRITE_SECURE_SETTINGS',
|
||||
WRITE_SETTINGS: 'android.permission.WRITE_SETTINGS',
|
||||
@@ -198,26 +190,26 @@ export class AndroidPermissions extends IonicNativePlugin {
|
||||
WRITE_SOCIAL_STREAM: 'android.permission.WRITE_SOCIAL_STREAM',
|
||||
WRITE_SYNC_SETTINGS: 'android.permission.WRITE_SYNC_SETTINGS',
|
||||
WRITE_USER_DICTIONARY: 'android.permission.WRITE_USER_DICTIONARY',
|
||||
WRITE_VOICEMAIL: 'com.android.voicemail.permission.WRITE_VOICEMAIL'
|
||||
WRITE_VOICEMAIL: 'com.android.voicemail.permission.WRITE_VOICEMAIL',
|
||||
};
|
||||
|
||||
/**
|
||||
* Check permission
|
||||
* @param {string} permission The name of the permission
|
||||
* @return {Promise<any>} Returns a promise
|
||||
* @return {Promise<AndroidPermissionResponse>} Returns a promise
|
||||
*/
|
||||
@Cordova()
|
||||
checkPermission(permission: string): Promise<any> {
|
||||
checkPermission(permission: string): Promise<AndroidPermissionResponse> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Request permission
|
||||
* @param {string} permission The name of the permission to request
|
||||
* @return {Promise<any>}
|
||||
* @return {Promise<AndroidPermissionResponse>}
|
||||
*/
|
||||
@Cordova()
|
||||
requestPermission(permission: string): Promise<any> {
|
||||
requestPermission(permission: string): Promise<AndroidPermissionResponse> {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -234,10 +226,14 @@ export class AndroidPermissions extends IonicNativePlugin {
|
||||
/**
|
||||
* This function still works now, will not support in the future.
|
||||
* @param {string} permission The name of the permission
|
||||
* @return {Promise<any>} Returns a promise
|
||||
* @return {Promise<AndroidPermissionResponse>} Returns a promise
|
||||
*/
|
||||
@Cordova()
|
||||
hasPermission(permission: string): Promise<any> {
|
||||
hasPermission(permission: string): Promise<AndroidPermissionResponse> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
export interface AndroidPermissionResponse {
|
||||
hasPermission: boolean;
|
||||
}
|
||||
|
||||
51
src/@ionic-native/plugins/anyline/index.ts
Normal file
51
src/@ionic-native/plugins/anyline/index.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface AnylineOptions {
|
||||
// Valid License Key
|
||||
licenseKey: string;
|
||||
|
||||
// Scanning options
|
||||
config: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Anyline
|
||||
* @description
|
||||
* Anyline provides an easy-to-use SDK for applications to enable Optical Character Recognition (OCR) on mobile devices.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { Anyline } from '@ionic-native/anyline/ngx';
|
||||
*
|
||||
*
|
||||
* constructor(private anyline: Anyline) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
*
|
||||
* this.anyline.scan(options)
|
||||
* .then((res: any) => console.log(res))
|
||||
* .catch((error: any) => console.error(error));
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'Anyline',
|
||||
plugin: 'io-anyline-cordova',
|
||||
pluginRef: 'Anyline',
|
||||
repo: 'https://github.com/Anyline/anyline-ocr-cordova-module',
|
||||
platforms: ['Android', 'iOS'],
|
||||
})
|
||||
@Injectable()
|
||||
export class Anyline extends IonicNativePlugin {
|
||||
/**
|
||||
* Scan
|
||||
* @param options {AnylineOptions} Scanning options
|
||||
* @return {Promise<any>} Returns a promise that resolves when Code is captured
|
||||
*/
|
||||
@Cordova()
|
||||
scan(options: AnylineOptions): Promise<any> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -37,11 +37,10 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
plugin: 'cordova-plugin-appavailability',
|
||||
pluginRef: 'appAvailability',
|
||||
repo: 'https://github.com/ohh2ahh/AppAvailability',
|
||||
platforms: ['Android', 'iOS']
|
||||
platforms: ['Android', 'iOS'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AppAvailability extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Checks if an app is available on device
|
||||
* @param {string} app Package name on android, or URI scheme on iOS
|
||||
@@ -51,5 +50,4 @@ export class AppAvailability extends IonicNativePlugin {
|
||||
check(app: string): Promise<boolean> {
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -38,9 +38,8 @@ export interface StringMap {
|
||||
pluginName: 'AppCenterAnalytics',
|
||||
plugin: 'cordova-plugin-appcenter-analytics',
|
||||
pluginRef: 'AppCenter.Analytics',
|
||||
repo:
|
||||
'https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-analytics',
|
||||
platforms: ['Android', 'iOS']
|
||||
repo: 'https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-analytics',
|
||||
platforms: ['Android', 'iOS'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AppCenterAnalytics extends IonicNativePlugin {
|
||||
|
||||
@@ -62,9 +62,8 @@ export interface AppCenterCrashReportDevice {
|
||||
pluginName: 'AppCenterCrashes',
|
||||
plugin: 'cordova-plugin-appcenter-crashes',
|
||||
pluginRef: 'AppCenter.Crashes',
|
||||
repo:
|
||||
'https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-crashes',
|
||||
platforms: ['Android', 'iOS']
|
||||
repo: 'https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-crashes',
|
||||
platforms: ['Android', 'iOS'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AppCenterCrashes extends IonicNativePlugin {
|
||||
|
||||
41
src/@ionic-native/plugins/app-center-low-memory/index.ts
Normal file
41
src/@ionic-native/plugins/app-center-low-memory/index.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
/**
|
||||
* @name App Center Low Memory
|
||||
* @description
|
||||
* Generates a low memory warning.
|
||||
* For more info, please see: https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-generate-low-memory
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { LowMemory } from '@ionic-native/app-center-low-memory/ngx';
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* constructor(private lowMemory: LowMemory) { }
|
||||
*
|
||||
* async warning() {
|
||||
* await this.lowMemory.generateLowMemory();
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'LowMemory',
|
||||
plugin: 'https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-generate-low-memory',
|
||||
pluginRef: 'LowMemory',
|
||||
repo: 'https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-generate-low-memory',
|
||||
platforms: ['Android', 'iOS'],
|
||||
})
|
||||
@Injectable()
|
||||
export class LowMemory extends IonicNativePlugin {
|
||||
/**
|
||||
* Generates a low memory warning.
|
||||
* For more info, please see: https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-generate-low-memory
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
@Cordova()
|
||||
generateLowMemory(): Promise<void> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -29,9 +29,8 @@ import { Observable } from 'rxjs';
|
||||
pluginName: 'AppCenterPush',
|
||||
plugin: 'cordova-plugin-appcenter-push',
|
||||
pluginRef: 'AppCenter.Push',
|
||||
repo:
|
||||
'https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-push',
|
||||
platforms: ['Android', 'iOS']
|
||||
repo: 'https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-push',
|
||||
platforms: ['Android', 'iOS'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AppCenterPush extends IonicNativePlugin {
|
||||
@@ -42,7 +41,7 @@ export class AppCenterPush extends IonicNativePlugin {
|
||||
*/
|
||||
@Cordova({
|
||||
observable: true,
|
||||
clearFunction: 'removeEventListener'
|
||||
clearFunction: 'removeEventListener',
|
||||
})
|
||||
addEventListener(eventName: string): Observable<any> {
|
||||
return;
|
||||
|
||||
62
src/@ionic-native/plugins/app-center-shared/index.ts
Normal file
62
src/@ionic-native/plugins/app-center-shared/index.ts
Normal file
@@ -0,0 +1,62 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
/**
|
||||
* @name App Center Shared
|
||||
* @capacitorincompatible true
|
||||
* @description
|
||||
* Exposes additional shared APIs for App Center.
|
||||
*
|
||||
* For more info, please see https://docs.microsoft.com/en-us/appcenter/sdk/other-apis/cordova
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { AppCenter } from '@ionic-native/app-center-shared/ngx';
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* constructor(private appCenterShared: AppCenter) { }
|
||||
*
|
||||
* async getInstallId() {
|
||||
* const id = await this.appCenter.getInstallId();
|
||||
* }
|
||||
*
|
||||
* async setUserId() {
|
||||
* try{
|
||||
* await this.appCenter.setUserId('i-am-john');
|
||||
* } catch (e){
|
||||
* console.log(e);
|
||||
* }
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'AppCenter',
|
||||
plugin: 'cordova-plugin-appcenter-shared',
|
||||
pluginRef: 'AppCenter',
|
||||
repo: 'https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-shared',
|
||||
platforms: ['Android', 'iOS'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AppCenter extends IonicNativePlugin {
|
||||
/**
|
||||
* Returns AppCenter UUID.
|
||||
* For more info, please see: https://docs.microsoft.com/en-us/appcenter/sdk/other-apis/cordova#identify-installations
|
||||
* @returns {Promise<string>} Install ID
|
||||
*/
|
||||
@Cordova()
|
||||
getInstallId(): Promise<string> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a user ID that's used to augment crash reports.
|
||||
* For more info, please see: https://docs.microsoft.com/en-us/appcenter/sdk/other-apis/cordova#identify-users
|
||||
* @param {string} userId Ex. "your-user-id"
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
@Cordova()
|
||||
setUserId(userId: string): Promise<void> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -40,7 +40,7 @@ export interface AppLauncherOptions {
|
||||
plugin: 'cordova-plugin-app-launcher',
|
||||
pluginRef: 'window.plugins.launcher',
|
||||
repo: 'https://github.com/nchutchind/cordova-plugin-app-launcher',
|
||||
platforms: ['Android', 'iOS']
|
||||
platforms: ['Android', 'iOS'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AppLauncher extends IonicNativePlugin {
|
||||
|
||||
@@ -27,11 +27,10 @@ import { Injectable } from '@angular/core';
|
||||
plugin: 'cordova-plugin-appminimize',
|
||||
pluginRef: 'plugins.appMinimize',
|
||||
repo: 'https://github.com/tomloprod/cordova-plugin-appminimize',
|
||||
platforms: ['Android']
|
||||
platforms: ['Android'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AppMinimize extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Minimizes the application
|
||||
* @return {Promise<any>}
|
||||
@@ -40,5 +39,4 @@ export class AppMinimize extends IonicNativePlugin {
|
||||
minimize(): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -25,15 +25,7 @@ import { Injectable } from '@angular/core';
|
||||
plugin: 'cordova-plugin-app-preferences',
|
||||
pluginRef: 'plugins.appPreferences',
|
||||
repo: 'https://github.com/apla/me.apla.cordova.app-preferences',
|
||||
platforms: [
|
||||
'Android',
|
||||
'BlackBerry 10',
|
||||
'Browser',
|
||||
'iOS',
|
||||
'macOS',
|
||||
'Windows 8',
|
||||
'Windows Phone'
|
||||
]
|
||||
platforms: ['Android', 'BlackBerry 10', 'Browser', 'iOS', 'macOS', 'Windows 8', 'Windows Phone'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AppPreferences extends IonicNativePlugin {
|
||||
@@ -45,7 +37,7 @@ export class AppPreferences extends IonicNativePlugin {
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova({
|
||||
callbackOrder: 'reverse'
|
||||
callbackOrder: 'reverse',
|
||||
})
|
||||
fetch(dict: string, key?: string): Promise<any> {
|
||||
return;
|
||||
@@ -60,7 +52,7 @@ export class AppPreferences extends IonicNativePlugin {
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova({
|
||||
callbackOrder: 'reverse'
|
||||
callbackOrder: 'reverse',
|
||||
})
|
||||
store(dict: string, key: string, value?: any): Promise<any> {
|
||||
return;
|
||||
@@ -74,7 +66,7 @@ export class AppPreferences extends IonicNativePlugin {
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova({
|
||||
callbackOrder: 'reverse'
|
||||
callbackOrder: 'reverse',
|
||||
})
|
||||
remove(dict: string, key?: string): Promise<any> {
|
||||
return;
|
||||
@@ -86,7 +78,7 @@ export class AppPreferences extends IonicNativePlugin {
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova({
|
||||
callbackOrder: 'reverse'
|
||||
callbackOrder: 'reverse',
|
||||
})
|
||||
clearAll(): Promise<any> {
|
||||
return;
|
||||
@@ -98,7 +90,7 @@ export class AppPreferences extends IonicNativePlugin {
|
||||
* @return {Promise<any>} Returns a promise
|
||||
*/
|
||||
@Cordova({
|
||||
callbackOrder: 'reverse'
|
||||
callbackOrder: 'reverse',
|
||||
})
|
||||
show(): Promise<any> {
|
||||
return;
|
||||
@@ -111,7 +103,7 @@ export class AppPreferences extends IonicNativePlugin {
|
||||
* @return {Observable<any>} Returns an observable
|
||||
*/
|
||||
@Cordova({
|
||||
observable: true
|
||||
observable: true,
|
||||
})
|
||||
watch(subscribe: boolean): Observable<any> {
|
||||
return;
|
||||
@@ -126,7 +118,7 @@ export class AppPreferences extends IonicNativePlugin {
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['Android'],
|
||||
sync: true
|
||||
sync: true,
|
||||
})
|
||||
suite(suiteName: string): any {
|
||||
return;
|
||||
@@ -134,7 +126,7 @@ export class AppPreferences extends IonicNativePlugin {
|
||||
|
||||
@Cordova({
|
||||
platforms: ['iOS'],
|
||||
sync: true
|
||||
sync: true,
|
||||
})
|
||||
iosSuite(suiteName: string): any {
|
||||
return;
|
||||
@@ -146,7 +138,7 @@ export class AppPreferences extends IonicNativePlugin {
|
||||
* @returns {Object} Custom object, bound to that suite
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['iOS', 'Windows', 'Windows Phone 8']
|
||||
platforms: ['iOS', 'Windows', 'Windows Phone 8'],
|
||||
})
|
||||
cloudSync(): Object {
|
||||
return;
|
||||
@@ -158,7 +150,7 @@ export class AppPreferences extends IonicNativePlugin {
|
||||
* @returns {Object} Custom Object, bound to that suite
|
||||
*/
|
||||
@Cordova({
|
||||
platforms: ['iOS', 'Windows', 'Windows Phone 8']
|
||||
platforms: ['iOS', 'Windows', 'Windows Phone 8'],
|
||||
})
|
||||
defaults(): Object {
|
||||
return;
|
||||
|
||||
@@ -1,6 +1,50 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, CordovaProperty, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export enum AppRateReviewTypeIos {
|
||||
/**
|
||||
* Write review directly in your application (iOS 10.3+), limited to 3 prompts per year.
|
||||
* Will fallback to 'AppStoreReview' for other iOS versions
|
||||
*/
|
||||
InAppReview = 'InAppReview',
|
||||
/**
|
||||
* Open the store within the app. Use this option as an alternative to inAppReview to avoid the rate action from doing nothing
|
||||
*/
|
||||
AppStoreReview = 'AppStoreReview',
|
||||
/**
|
||||
* Open the store using the openUrl preference (defaults to InAppBrowser). Be advised that WKWebView might not open the app store links
|
||||
*/
|
||||
InAppBrowser = 'InAppBrowser',
|
||||
}
|
||||
|
||||
export enum AppRateReviewTypeAndroid {
|
||||
/**
|
||||
* Write review directly in your application. Will fallback to InAppBrowser if not available
|
||||
*/
|
||||
InAppReview = 'InAppReview',
|
||||
/**
|
||||
* Open the store using the openUrl preference (defaults to InAppBrowser)
|
||||
*/
|
||||
InAppBrowser = 'InAppBrowser',
|
||||
}
|
||||
|
||||
export enum AppRatePromptType {
|
||||
/**
|
||||
* Prompt asking to rate the app.
|
||||
*/
|
||||
AppRatingPrompt = 'AppRatingPrompt',
|
||||
|
||||
/**
|
||||
* Prompt asking to rate the app within the store.
|
||||
*/
|
||||
StoreRatingPrompt = 'StoreRatingPrompt',
|
||||
|
||||
/**
|
||||
* Prompt asking to give feedback.
|
||||
*/
|
||||
FeedbackPrompt = 'FeedbackPrompt',
|
||||
}
|
||||
|
||||
export interface AppRatePreferences {
|
||||
/**
|
||||
* Custom BCP 47 language tag
|
||||
@@ -22,20 +66,28 @@ export interface AppRatePreferences {
|
||||
*/
|
||||
usesUntilPrompt?: number;
|
||||
|
||||
reviewType?: {
|
||||
/**
|
||||
* the type of review display to show the user on iOS
|
||||
* Default: AppStoreReview
|
||||
*/
|
||||
ios?: AppRateReviewTypeIos;
|
||||
/**
|
||||
* the type of review display to show the user on Android
|
||||
* Default: InAppBrowser
|
||||
*/
|
||||
android?: AppRateReviewTypeAndroid;
|
||||
};
|
||||
|
||||
/**
|
||||
* Simple Mode to display the rate dialog directly and bypass negative feedback filtering flow
|
||||
*/
|
||||
simpleMode?: boolean;
|
||||
|
||||
/**
|
||||
* leave app or no when application page opened in app store (now supported only for iOS). Defaults to `false`
|
||||
* Disabling would skip displaying a rate dialog if in app review is set and available. Defaults to `true`
|
||||
*/
|
||||
inAppReview?: boolean;
|
||||
|
||||
/**
|
||||
* use custom view for rate dialog. Defaults to `false`
|
||||
*/
|
||||
useCustomRateDialog?: boolean;
|
||||
showPromptForInAppReview?: boolean;
|
||||
|
||||
/**
|
||||
* Custom locale object
|
||||
@@ -51,6 +103,11 @@ export interface AppRatePreferences {
|
||||
* App Store URLS
|
||||
*/
|
||||
storeAppURL?: AppUrls;
|
||||
|
||||
/**
|
||||
* Open URL function
|
||||
*/
|
||||
openUrl?: (url: string) => void;
|
||||
}
|
||||
|
||||
export interface AppRateCustomLocale {
|
||||
@@ -80,22 +137,38 @@ export interface AppRateCustomLocale {
|
||||
|
||||
/** Feedback prompt title */
|
||||
feedbackPromptTitle?: string;
|
||||
|
||||
/** Feedback prompt message */
|
||||
appRatePromptMessage?: string;
|
||||
|
||||
/** Feedback prompt message */
|
||||
feedbackPromptMessage?: string;
|
||||
}
|
||||
|
||||
export interface AppRateLocales {
|
||||
addLocale(localeObject: AppRateCustomLocale): AppRateCustomLocale;
|
||||
|
||||
getLocale(language: string, applicationTitle?: string, customLocale?: AppRateCustomLocale): AppRateCustomLocale;
|
||||
|
||||
getLocalesNames(): { [prop: string]: AppRateCustomLocale };
|
||||
}
|
||||
|
||||
export interface AppRateCallbacks {
|
||||
/**
|
||||
* call back function. called when user clicked on rate-dialog buttons
|
||||
*/
|
||||
onButtonClicked?: Function;
|
||||
onButtonClicked?: (buttonIndex: number, buttonLabel: string, promptType: AppRatePromptType) => void;
|
||||
|
||||
/**
|
||||
* call back function. called when rate-dialog showing
|
||||
*/
|
||||
onRateDialogShow?: Function;
|
||||
onRateDialogShow?: (rateCallback: (buttonIndex: number) => void) => void;
|
||||
/**
|
||||
* call back function. called when user clicked on negative feedback
|
||||
*/
|
||||
handleNegativeFeedback?: Function;
|
||||
handleNegativeFeedback?: () => void;
|
||||
|
||||
done?: () => void;
|
||||
}
|
||||
|
||||
export interface AppUrls {
|
||||
@@ -127,6 +200,7 @@ export interface AppUrls {
|
||||
|
||||
/**
|
||||
* @name App Rate
|
||||
* @premier app-rate
|
||||
* @description
|
||||
* The AppRate plugin makes it easy to prompt the user to rate your app, either now, later, or never.
|
||||
*
|
||||
@@ -173,7 +247,7 @@ export interface AppUrls {
|
||||
plugin: 'cordova-plugin-apprate',
|
||||
pluginRef: 'AppRate',
|
||||
repo: 'https://github.com/pushandplay/cordova-plugin-apprate',
|
||||
platforms: ['Android', 'BlackBerry 10', 'iOS', 'Windows']
|
||||
platforms: ['Android', 'BlackBerry 10', 'iOS', 'Windows'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AppRate extends IonicNativePlugin {
|
||||
@@ -184,12 +258,38 @@ export class AppRate extends IonicNativePlugin {
|
||||
@CordovaProperty()
|
||||
preferences: AppRatePreferences;
|
||||
|
||||
/**
|
||||
* Manager custom locales
|
||||
*/
|
||||
@CordovaProperty()
|
||||
locales: AppRateLocales;
|
||||
|
||||
/**
|
||||
* Set preferences
|
||||
* @return void
|
||||
*/
|
||||
@Cordova()
|
||||
setPreferences(pref: AppRatePreferences): void {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get preferences
|
||||
* @return AppRatePreferences
|
||||
*/
|
||||
@Cordova()
|
||||
getPreferences(): AppRatePreferences {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prompts the user for rating
|
||||
* @param {boolean} immediately Show the rating prompt immediately.
|
||||
*/
|
||||
@Cordova()
|
||||
promptForRating(immediately: boolean): void {}
|
||||
promptForRating(immediately?: boolean): void {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Immediately send the user to the app store rating page
|
||||
|
||||
@@ -2,9 +2,11 @@ import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface AppUpdateOptions {
|
||||
authType: string;
|
||||
authType?: string;
|
||||
username?: string;
|
||||
password?: string;
|
||||
skipPromptDialog?: boolean;
|
||||
skipProgressDialog?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -45,7 +47,7 @@ export interface AppUpdateOptions {
|
||||
plugin: 'cordova-plugin-app-update',
|
||||
pluginRef: 'AppUpdate',
|
||||
repo: 'https://github.com/vaenow/cordova-plugin-app-update',
|
||||
platforms: ['Android']
|
||||
platforms: ['Android'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AppUpdate extends IonicNativePlugin {
|
||||
@@ -56,7 +58,7 @@ export class AppUpdate extends IonicNativePlugin {
|
||||
* @return {Promise<any>} Returns a promise that resolves when something happens
|
||||
*/
|
||||
@Cordova({
|
||||
callbackOrder: 'reverse'
|
||||
callbackOrder: 'reverse',
|
||||
})
|
||||
checkAppUpdate(updateUrl: string, options?: AppUpdateOptions): Promise<any> {
|
||||
return;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
|
||||
/**
|
||||
* @name App Version
|
||||
* @premier app-version
|
||||
* @description
|
||||
* Reads the version of your app from the target build settings.
|
||||
*
|
||||
@@ -30,24 +30,27 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
plugin: 'cordova-plugin-app-version',
|
||||
pluginRef: 'cordova.getAppVersion',
|
||||
repo: 'https://github.com/whiteoctober/cordova-plugin-app-version',
|
||||
platforms: ['Android', 'iOS', 'Windows']
|
||||
platforms: ['Android', 'iOS', 'Windows'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AppVersion extends IonicNativePlugin {
|
||||
|
||||
/**
|
||||
* Returns the name of the app, e.g.: "My Awesome App"
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
@Cordova()
|
||||
getAppName(): Promise<string> { return; }
|
||||
getAppName(): Promise<string> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the package name of the app, e.g.: "com.example.myawesomeapp"
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
@Cordova()
|
||||
getPackageName(): Promise<string> { return; }
|
||||
getPackageName(): Promise<string> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the build identifier of the app.
|
||||
@@ -56,13 +59,16 @@ export class AppVersion extends IonicNativePlugin {
|
||||
* @returns {Promise<string | number>}
|
||||
*/
|
||||
@Cordova()
|
||||
getVersionCode(): Promise<string | number> { return; }
|
||||
getVersionCode(): Promise<string | number> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the version of the app, e.g.: "1.2.3"
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
@Cordova()
|
||||
getVersionNumber(): Promise<string> { return; }
|
||||
|
||||
getVersionNumber(): Promise<string> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,13 +7,7 @@ export type IMakePayments =
|
||||
| 'This device cannot make payments.'
|
||||
| 'This device can make payments but has no supported cards';
|
||||
export type IShippingType = 'shipping' | 'delivery' | 'store' | 'service';
|
||||
export type IBillingRequirement =
|
||||
| 'none'
|
||||
| 'all'
|
||||
| 'postcode'
|
||||
| 'name'
|
||||
| 'email'
|
||||
| 'phone';
|
||||
export type IBillingRequirement = 'none' | 'all' | 'postcode' | 'name' | 'email' | 'phone';
|
||||
export type ITransactionStatus =
|
||||
| 'success'
|
||||
| 'failure'
|
||||
@@ -24,9 +18,9 @@ export type ITransactionStatus =
|
||||
| 'incorrect-pin'
|
||||
| 'locked-pin';
|
||||
export type ICompleteTransaction = 'Payment status applied.';
|
||||
export type IUpdateItemsAndShippingStatus =
|
||||
| 'Updated List Info'
|
||||
| 'Did you make a payment request?';
|
||||
export type IUpdateItemsAndShippingStatus = 'Updated List Info' | 'Did you make a payment request?';
|
||||
export type IMerchantCapabilities = '3ds' | 'credit' | 'debit' | 'emv';
|
||||
export type ISupportedNetworks = 'visa' | 'amex' | 'discover' | 'masterCard';
|
||||
|
||||
export interface IPaymentResponse {
|
||||
billingNameFirst?: string;
|
||||
@@ -84,6 +78,8 @@ export interface IOrder extends IOrderItemsAndShippingMethods {
|
||||
billingAddressRequirement?: IBillingRequirement | IBillingRequirement[];
|
||||
shippingAddressRequirement?: IBillingRequirement | IBillingRequirement[];
|
||||
shippingType?: IShippingType;
|
||||
merchantCapabilities?: IMerchantCapabilities | IMerchantCapabilities[];
|
||||
supportedNetworks?: ISupportedNetworks | ISupportedNetworks[];
|
||||
}
|
||||
|
||||
export interface ISelectedShippingContact {
|
||||
@@ -151,7 +147,7 @@ export interface ISelectedShippingContact {
|
||||
plugin: 'cordova-plugin-applepay',
|
||||
pluginRef: 'ApplePay',
|
||||
repo: 'https://github.com/samkelleher/cordova-plugin-applepay',
|
||||
platforms: ['iOS']
|
||||
platforms: ['iOS'],
|
||||
})
|
||||
@Injectable()
|
||||
export class ApplePay extends IonicNativePlugin {
|
||||
@@ -171,7 +167,7 @@ export class ApplePay extends IonicNativePlugin {
|
||||
* }
|
||||
*/
|
||||
@Cordova({
|
||||
otherPromise: true
|
||||
otherPromise: true,
|
||||
})
|
||||
canMakePayments(): Promise<IMakePayments> {
|
||||
return;
|
||||
@@ -187,11 +183,9 @@ export class ApplePay extends IonicNativePlugin {
|
||||
*/
|
||||
@Cordova({
|
||||
observable: true,
|
||||
clearFunction: 'stopListeningForShippingContactSelection'
|
||||
clearFunction: 'stopListeningForShippingContactSelection',
|
||||
})
|
||||
startListeningForShippingContactSelection(): Observable<
|
||||
ISelectedShippingContact
|
||||
> {
|
||||
startListeningForShippingContactSelection(): Observable<ISelectedShippingContact> {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -201,7 +195,7 @@ export class ApplePay extends IonicNativePlugin {
|
||||
* really only fail if this is called without starting listening
|
||||
*/
|
||||
@Cordova({
|
||||
otherPromise: true
|
||||
otherPromise: true,
|
||||
})
|
||||
stopListeningForShippingContactSelection(): Promise<boolean> {
|
||||
return;
|
||||
@@ -243,11 +237,9 @@ export class ApplePay extends IonicNativePlugin {
|
||||
* });
|
||||
*/
|
||||
@Cordova({
|
||||
otherPromise: true
|
||||
otherPromise: true,
|
||||
})
|
||||
updateItemsAndShippingMethods(
|
||||
list: IOrderItemsAndShippingMethods
|
||||
): Promise<IUpdateItemsAndShippingStatus> {
|
||||
updateItemsAndShippingMethods(list: IOrderItemsAndShippingMethods): Promise<IUpdateItemsAndShippingStatus> {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -322,7 +314,7 @@ export class ApplePay extends IonicNativePlugin {
|
||||
* }
|
||||
*/
|
||||
@Cordova({
|
||||
otherPromise: true
|
||||
otherPromise: true,
|
||||
})
|
||||
makePaymentRequest(order: IOrder): Promise<IPaymentResponse> {
|
||||
return;
|
||||
@@ -338,11 +330,9 @@ export class ApplePay extends IonicNativePlugin {
|
||||
*
|
||||
*/
|
||||
@Cordova({
|
||||
otherPromise: true
|
||||
otherPromise: true,
|
||||
})
|
||||
completeLastTransaction(
|
||||
complete: ITransactionStatus
|
||||
): Promise<ICompleteTransaction> {
|
||||
completeLastTransaction(complete: ITransactionStatus): Promise<ICompleteTransaction> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,7 +150,7 @@ export interface WatchExistData {
|
||||
plugin: 'cordova-apple-wallet',
|
||||
pluginRef: 'AppleWallet',
|
||||
repo: 'https://github.com/tomavic/cordova-apple-wallet',
|
||||
platforms: ['iOS']
|
||||
platforms: ['iOS'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AppleWallet extends IonicNativePlugin {
|
||||
|
||||
@@ -25,7 +25,7 @@ import { Observable } from 'rxjs';
|
||||
plugin: 'https://github.com/appodeal/appodeal-cordova-plugin.git',
|
||||
pluginRef: 'Appodeal',
|
||||
repo: 'https://github.com/appodeal/appodeal-cordova-plugin',
|
||||
platforms: ['iOS', 'Android']
|
||||
platforms: ['iOS', 'Android'],
|
||||
})
|
||||
@Injectable()
|
||||
export class Appodeal extends IonicNativePlugin {
|
||||
@@ -37,7 +37,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
BANNER_BOTTOM: 8,
|
||||
BANNER_TOP: 16,
|
||||
REWARDED_VIDEO: 128,
|
||||
NON_SKIPPABLE_VIDEO: 256
|
||||
NON_SKIPPABLE_VIDEO: 256,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -361,7 +361,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onInterstitialLoaded',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onInterstitialLoaded(): Observable<any> {
|
||||
return;
|
||||
@@ -370,7 +370,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onInterstitialFailedToLoad',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onInterstitialFailedToLoad(): Observable<any> {
|
||||
return;
|
||||
@@ -379,7 +379,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onInterstitialShown',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onInterstitialShown(): Observable<any> {
|
||||
return;
|
||||
@@ -388,7 +388,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onInterstitialClicked',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onInterstitialClicked(): Observable<any> {
|
||||
return;
|
||||
@@ -397,7 +397,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onInterstitialClosed',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onInterstitialClosed(): Observable<any> {
|
||||
return;
|
||||
@@ -406,7 +406,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onSkippableVideoLoaded',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onSkippableVideoLoaded(): Observable<any> {
|
||||
return;
|
||||
@@ -415,7 +415,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onSkippableVideoFailedToLoad',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onSkippableVideoFailedToLoad(): Observable<any> {
|
||||
return;
|
||||
@@ -424,7 +424,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onSkippableVideoShown',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onSkippableVideoShown(): Observable<any> {
|
||||
return;
|
||||
@@ -433,7 +433,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onSkippableVideoFinished',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onSkippableVideoFinished(): Observable<any> {
|
||||
return;
|
||||
@@ -442,7 +442,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onSkippableVideoClosed',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onSkippableVideoClosed(): Observable<any> {
|
||||
return;
|
||||
@@ -451,7 +451,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onRewardedVideoLoaded',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onRewardedVideoLoaded(): Observable<any> {
|
||||
return;
|
||||
@@ -460,7 +460,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onRewardedVideoFailedToLoad',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onRewardedVideoFailedToLoad(): Observable<any> {
|
||||
return;
|
||||
@@ -469,7 +469,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onRewardedVideoShown',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onRewardedVideoShown(): Observable<any> {
|
||||
return;
|
||||
@@ -478,7 +478,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onRewardedVideoFinished',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onRewardedVideoFinished(): Observable<any> {
|
||||
return;
|
||||
@@ -487,7 +487,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onRewardedVideoClosed',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onRewardedVideoClosed(): Observable<any> {
|
||||
return;
|
||||
@@ -496,7 +496,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onNonSkippableVideoLoaded',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onNonSkippableVideoLoaded(): Observable<any> {
|
||||
return;
|
||||
@@ -505,7 +505,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onNonSkippableVideoFailedToLoad',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onNonSkippableVideoFailedToLoad(): Observable<any> {
|
||||
return;
|
||||
@@ -514,7 +514,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onNonSkippableVideoShown',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onNonSkippableVideoShown(): Observable<any> {
|
||||
return;
|
||||
@@ -523,7 +523,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onNonSkippableVideoFinished',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onNonSkippableVideoFinished(): Observable<any> {
|
||||
return;
|
||||
@@ -532,7 +532,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onNonSkippableVideoClosed',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onNonSkippableVideoClosed(): Observable<any> {
|
||||
return;
|
||||
@@ -541,7 +541,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onBannerClicked',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onBannerClicked(): Observable<any> {
|
||||
return;
|
||||
@@ -550,7 +550,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onBannerFailedToLoad',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onBannerFailedToLoad(): Observable<any> {
|
||||
return;
|
||||
@@ -559,7 +559,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onBannerLoaded',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onBannerLoaded(): Observable<any> {
|
||||
return;
|
||||
@@ -568,7 +568,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
@Cordova({
|
||||
eventObservable: true,
|
||||
event: 'onBannerShown',
|
||||
element: 'document'
|
||||
element: 'document',
|
||||
})
|
||||
onBannerShown(): Observable<any> {
|
||||
return;
|
||||
@@ -590,7 +590,7 @@ export class Appodeal extends IonicNativePlugin {
|
||||
}
|
||||
|
||||
@Cordova({
|
||||
platforms: ['Android']
|
||||
platforms: ['Android'],
|
||||
})
|
||||
showTestScreen(value: any): void {}
|
||||
|
||||
|
||||
747
src/@ionic-native/plugins/approov-advanced-http/index.ts
Normal file
747
src/@ionic-native/plugins/approov-advanced-http/index.ts
Normal file
@@ -0,0 +1,747 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Cordova, CordovaProperty, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
|
||||
export interface HTTPResponse {
|
||||
/**
|
||||
* The HTTP status number of the response or a negative internal error code.
|
||||
*/
|
||||
status: number;
|
||||
/**
|
||||
* The headers of the response.
|
||||
*/
|
||||
headers: { [key: string]: string };
|
||||
/**
|
||||
* The URL of the response. This property will be the final URL obtained after any redirects.
|
||||
*/
|
||||
url: string;
|
||||
/**
|
||||
* The data that is in the response. This property usually exists when a promise returned by a request method resolves.
|
||||
*/
|
||||
data?: any;
|
||||
/**
|
||||
* Error response from the server. This property usually exists when a promise returned by a request method rejects.
|
||||
*/
|
||||
error?: string;
|
||||
}
|
||||
|
||||
interface AbortedResponse {
|
||||
aborted: boolean;
|
||||
}
|
||||
|
||||
export interface ApproovLoggableToken {
|
||||
/**
|
||||
* Expiry
|
||||
* The only mandatory claim for Approov tokens. It specifies the expiry time for the token as a Unix timestamp.
|
||||
*/
|
||||
exp: number;
|
||||
|
||||
/**
|
||||
* Device ID
|
||||
* This claim identifies the device for which the token was issued. This is a base64 encoded string representing a 128-bit device identifier.
|
||||
* Note that this is not, strictly speaking, a device identifier as it is also influenced by the app identifier
|
||||
* and may change if the same app is uninstalled and then reinstalled on the same device.
|
||||
*/
|
||||
did?: string;
|
||||
|
||||
/**
|
||||
* Attestation Response Code
|
||||
* This is an optional claim that encodes information about a subset of the device property flags and also whether the attestation was a pass or fail.
|
||||
* The claim is encoded in base32 and is typically 10 characters long (although it may be longer in some circumstances).
|
||||
* This claim is not included by tokens from the failover.
|
||||
*/
|
||||
arc?: string;
|
||||
|
||||
/**
|
||||
* IP Address
|
||||
* This holds the IP address of the device as seen by the Approov cloud service. It is provided in a human readable IP address format (in either IPv4 or IPv6 format).
|
||||
* In practice this value can often change between the time a token is issued and the time it is sent to your backend, so you should never block if it differs, but you may include it as a signal that tokens have somehow been stolen and are being replayed.
|
||||
* This claim is not included by tokens from the failover or if the IP Tracking Policy for the account has been set to none.
|
||||
*/
|
||||
ip?: string;
|
||||
|
||||
/**
|
||||
* Issuer
|
||||
* An optional claim that is added if the issuer inclusion option is enabled. This provides the Approov account ID that was used to issue the token (suffixed with approov.io).
|
||||
* It can be used as an additional layer of backend verification if signing keys are shared between multiple accounts.
|
||||
* It indicates that tokens were issued from the expected Approov account. This claim may also be set to an explicit value for long lived Approov tokens.
|
||||
* This flexibility is designed for use with server-to-server communication (which may only be signed with the account specific secret keys).
|
||||
*/
|
||||
iss?: string;
|
||||
|
||||
/**
|
||||
* Annotation
|
||||
* This is an embedded JSON array of strings showing the list of flags that are set and are in the annotation set for the security policy that is selected.
|
||||
* This allows additional information to be collected about the state of a particular device without necessarily causing an attestation failure.
|
||||
* Note that if there are no possible annotations then this claim is not present at all. This claim is not included by tokens from the failover.
|
||||
*/
|
||||
anno?: string[];
|
||||
|
||||
/**
|
||||
* Payload Hash
|
||||
* An optional claim that is added if the protected app passes a token binding argument to the setDataHashInToken method.
|
||||
* The claim value is set to the base64 encoded SHA256 hash of the provided payload string.
|
||||
* This is typically used to bind an Approov token to some other data used by your app to enhance security (like a user auth token).
|
||||
*/
|
||||
pay?: string;
|
||||
|
||||
/**
|
||||
* Audience
|
||||
* An optional claim that is added if the audience inclusion option is enabled. This provides the domain for which the token was issued.
|
||||
* It can be used as an additional layer of backend verification to ensure that tokens intended for one domain cannot be used on to access a different one.
|
||||
*/
|
||||
aud?: string;
|
||||
|
||||
/**
|
||||
* Message Siging Key ID
|
||||
* This is an optional claim that encodes the ID of a key being used for Message Signing.
|
||||
* This is only present in Approov tokens for which message signing is active. This claim is not included by tokens from the failover.
|
||||
*/
|
||||
mskid?: string;
|
||||
|
||||
/**
|
||||
* Measurement Proof Key
|
||||
* An optional claim to provide the measurement proof key if a measurement has been requested by the SDK on the domain for which the token is issued.
|
||||
* This is a base64 encoded 128-bit proof key value. Note that if measurement is being used, then JWE tokens will be used to keep this claim secret.
|
||||
*/
|
||||
mpk?: string;
|
||||
|
||||
/**
|
||||
* Integrity Measurement Hash
|
||||
* An optional claim to provide the integrity measurement hash if a measurement has been requested by the SDK on the domain for which the token is issued.
|
||||
* This is a base64 encoded 256-bit SHA256 measurement value. Note that if measurement is being used, then JWE tokens will be used to keep this claim secret.
|
||||
*/
|
||||
imh?: string;
|
||||
|
||||
/**
|
||||
* Device Measurement Hash
|
||||
* An optional claim to provide the device measurement hash if a measurement has been requested by the SDK on the domain for which the token is issued.
|
||||
* This is a base64 encoded 256-bit SHA256 measurement value. Note that if measurement is being used, then JWE tokens will be used to keep this claim secret
|
||||
*/
|
||||
dmh?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name HTTP
|
||||
* @description
|
||||
* Cordova / Phonegap plugin for communicating with HTTP servers. Supports iOS and Android.
|
||||
*
|
||||
* Advantages over Javascript requests:
|
||||
* - SSL / TLS Pinning
|
||||
* - CORS restrictions do not apply
|
||||
* - Handling of HTTP code 401 - read more at [Issue CB-2415](https://issues.apache.org/jira/browse/CB-2415)
|
||||
*
|
||||
* Note: This plugin extends the pre-existing [cordova-advanced-http-plugin](https://github.com/silkimen/cordova-plugin-advanced-http),
|
||||
* we have only added approov functionality on top of it. All credit goes to the actual plugin developer.
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { ApproovHttp } from '@ionic-native/http/ngx';
|
||||
*
|
||||
* constructor(private http: ApproovHttp) {}
|
||||
*
|
||||
* ...
|
||||
*
|
||||
* this.http.get('http://ionic.io', {}, {})
|
||||
* .then(data => {
|
||||
*
|
||||
* console.log(data.status);
|
||||
* console.log(data.data); // data received by server
|
||||
* console.log(data.headers);
|
||||
*
|
||||
* })
|
||||
* .catch(error => {
|
||||
*
|
||||
* console.log(error.status);
|
||||
* console.log(error.error); // error message as string
|
||||
* console.log(error.headers);
|
||||
*
|
||||
* });
|
||||
*
|
||||
* ```
|
||||
* @interfaces
|
||||
* HTTPResponse
|
||||
*/
|
||||
@Plugin({
|
||||
pluginName: 'ApproovHttp',
|
||||
plugin: 'cordova-approov-advanced-http',
|
||||
pluginRef: 'cordova.plugin.ApproovHttp',
|
||||
repo: 'https://github.com/approov/quickstart-ionic-advancedhttp',
|
||||
platforms: ['Android', 'iOS'],
|
||||
})
|
||||
@Injectable()
|
||||
export class ApproovHttp extends IonicNativePlugin {
|
||||
/**
|
||||
* This enum represents the internal error codes which can be returned in a HTTPResponse object.
|
||||
* @readonly
|
||||
*/
|
||||
@CordovaProperty()
|
||||
readonly ErrorCode: {
|
||||
GENERIC: number;
|
||||
SSL_EXCEPTION: number;
|
||||
SERVER_NOT_FOUND: number;
|
||||
TIMEOUT: number;
|
||||
UNSUPPORTED_URL: number;
|
||||
NOT_CONNECTED: number;
|
||||
POST_PROCESSING_FAILED: number;
|
||||
ABORTED: number;
|
||||
};
|
||||
|
||||
/**
|
||||
* This returns an object representing a basic HTTP Authorization header of the form.
|
||||
* @param username {string} Username
|
||||
* @param password {string} Password
|
||||
* @returns {Object} an object representing a basic HTTP Authorization header of the form {'Authorization': 'Basic base64EncodedUsernameAndPassword'}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
getBasicAuthHeader(username: string, password: string): { Authorization: string } {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* This sets up all future requests to use Basic HTTP authentication with the given username and password.
|
||||
* @param username {string} Username
|
||||
* @param password {string} Password
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
useBasicAuth(username: string, password: string): void {}
|
||||
|
||||
/**
|
||||
* Get all headers defined for a given hostname.
|
||||
* @param host {string} The hostname
|
||||
* @returns {string} return all headers defined for the hostname
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
getHeaders(host: string): string {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a header for all future requests. Takes a hostname, a header and a value.
|
||||
* @param host {string} The hostname to be used for scoping this header
|
||||
* @param header {string} The name of the header
|
||||
* @param value {string} The value of the header
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
setHeader(host: string, header: string, value: string): void {}
|
||||
|
||||
/**
|
||||
* Get the name of the data serializer which will be used for all future POST and PUT requests.
|
||||
* @returns {string} returns the name of the configured data serializer
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
getDataSerializer(): string {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the data serializer which will be used for all future POST, PUT and PATCH requests. Takes a string representing the name of the serializer.
|
||||
* @param serializer {string} The name of the serializer.
|
||||
* @see https://github.com/silkimen/cordova-plugin-advanced-http#setdataserializer
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
setDataSerializer(serializer: 'urlencoded' | 'json' | 'utf8' | 'multipart' | 'raw'): void {}
|
||||
|
||||
/**
|
||||
* Add a custom cookie.
|
||||
* @param url {string} Scope of the cookie
|
||||
* @param cookie {string} RFC compliant cookie string
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
setCookie(url: string, cookie: string): void {}
|
||||
|
||||
/**
|
||||
* Clear all cookies.
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
clearCookies(): void {}
|
||||
|
||||
/**
|
||||
* Remove cookies for given URL.
|
||||
* @param url {string}
|
||||
* @param cb
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
removeCookies(url: string, cb: () => void): void {}
|
||||
|
||||
/**
|
||||
* Resolve cookie string for given URL.
|
||||
* @param url {string}
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
getCookieString(url: string): string {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get global request timeout value in seconds.
|
||||
* @returns {number} returns the global request timeout value
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
getRequestTimeout(): number {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set global request timeout value in seconds.
|
||||
* @param timeout {number} The timeout in seconds. Default 60
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
setRequestTimeout(timeout: number): void {}
|
||||
|
||||
/**
|
||||
* Resolve if it should follow redirects automatically.
|
||||
* @returns {boolean} returns true if it is configured to follow redirects automatically
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
getFollowRedirect(): boolean {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure if it should follow redirects automatically.
|
||||
* @param follow {boolean} Set to false to disable following redirects automatically
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
setFollowRedirect(follow: boolean): void {}
|
||||
|
||||
/**
|
||||
* Set server trust mode, being one of the following values:
|
||||
* default: default SSL trustship and hostname verification handling using system's CA certs;
|
||||
* legacy: use legacy default behavior (< 2.0.3), excluding user installed CA certs (only for Android);
|
||||
* nocheck: disable SSL certificate checking and hostname verification, trusting all certs (meant to be used only for testing purposes);
|
||||
* pinned: trust only provided certificates;
|
||||
* @see https://github.com/silkimen/cordova-plugin-advanced-http#setservertrustmode
|
||||
* @param {string} mode server trust mode
|
||||
*/
|
||||
@Cordova()
|
||||
setServerTrustMode(mode: 'default' | 'legacy' | 'nocheck' | 'pinned'): Promise<void> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a POST request
|
||||
* @param url {string} The url to send the request to
|
||||
* @param body {Object} The body of the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @returns {Promise<HTTPResponse>} returns a promise that will resolve on success, and reject on failure
|
||||
*/
|
||||
@Cordova()
|
||||
post(url: string, body: any, headers: any): Promise<HTTPResponse> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a sync POST request
|
||||
* @param url {string} The url to send the request to
|
||||
* @param body {Object} The body of the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @param success {function} A callback that is called when the request succeed
|
||||
* @param failure {function} A callback that is called when the request failed
|
||||
* @returns {string} returns a string that represents the requestId
|
||||
*/
|
||||
@Cordova({
|
||||
methodName: 'post',
|
||||
sync: true,
|
||||
})
|
||||
postSync(
|
||||
url: string,
|
||||
body: any,
|
||||
headers: any,
|
||||
success: (result: HTTPResponse) => void,
|
||||
failure: (error: any) => void
|
||||
): string {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a GET request
|
||||
* @param url {string} The url to send the request to
|
||||
* @param parameters {Object} Parameters to send with the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @returns {Promise<HTTPResponse>} returns a promise that will resolve on success, and reject on failure
|
||||
*/
|
||||
@Cordova()
|
||||
get(url: string, parameters: any, headers: any): Promise<HTTPResponse> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a sync GET request
|
||||
* @param url {string} The url to send the request to
|
||||
* @param parameters {Object} Parameters to send with the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @param success {function} A callback that is called when the request succeed
|
||||
* @param failure {function} A callback that is called when the request failed
|
||||
* @returns {string} returns a string that represents the requestId
|
||||
*/
|
||||
@Cordova({
|
||||
methodName: 'get',
|
||||
sync: true,
|
||||
})
|
||||
getSync(
|
||||
url: string,
|
||||
parameters: any,
|
||||
headers: any,
|
||||
success: (result: HTTPResponse) => void,
|
||||
failure: (error: any) => void
|
||||
): string {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a PUT request
|
||||
* @param url {string} The url to send the request to
|
||||
* @param body {Object} The body of the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @returns {Promise<HTTPResponse>} returns a promise that will resolve on success, and reject on failure
|
||||
*/
|
||||
@Cordova()
|
||||
put(url: string, body: any, headers: any): Promise<HTTPResponse> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a sync PUT request
|
||||
* @param url {string} The url to send the request to
|
||||
* @param body {Object} The body of the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @param success {function} A callback that is called when the request succeed
|
||||
* @param failure {function} A callback that is called when the request failed
|
||||
* @returns {string} returns a string that represents the requestId
|
||||
*/
|
||||
@Cordova({
|
||||
methodName: 'put',
|
||||
sync: true,
|
||||
})
|
||||
putSync(
|
||||
url: string,
|
||||
body: any,
|
||||
headers: any,
|
||||
success: (result: HTTPResponse) => void,
|
||||
failure: (error: any) => void
|
||||
): string {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a PATCH request
|
||||
* @param url {string} The url to send the request to
|
||||
* @param body {Object} The body of the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @returns {Promise<HTTPResponse>} returns a promise that will resolve on success, and reject on failure
|
||||
*/
|
||||
@Cordova()
|
||||
patch(url: string, body: any, headers: any): Promise<HTTPResponse> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a sync PATCH request
|
||||
* @param url {string} The url to send the request to
|
||||
* @param body {Object} The body of the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @param success {function} A callback that is called when the request succeed
|
||||
* @param failure {function} A callback that is called when the request failed
|
||||
* @returns {string} returns a string that represents the requestId
|
||||
*/
|
||||
@Cordova({
|
||||
methodName: 'patch',
|
||||
sync: true,
|
||||
})
|
||||
patchSync(
|
||||
url: string,
|
||||
body: any,
|
||||
headers: any,
|
||||
success: (result: HTTPResponse) => void,
|
||||
failure: (error: any) => void
|
||||
): string {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a DELETE request
|
||||
* @param url {string} The url to send the request to
|
||||
* @param parameters {Object} Parameters to send with the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @returns {Promise<HTTPResponse>} returns a promise that will resolve on success, and reject on failure
|
||||
*/
|
||||
@Cordova()
|
||||
delete(url: string, parameters: any, headers: any): Promise<HTTPResponse> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a sync DELETE request
|
||||
* @param url {string} The url to send the request to
|
||||
* @param parameters {Object} Parameters to send with the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @param success {function} A callback that is called when the request succeed
|
||||
* @param failure {function} A callback that is called when the request failed
|
||||
* @returns {string} returns a string that represents the requestId
|
||||
*/
|
||||
@Cordova({
|
||||
methodName: 'delete',
|
||||
sync: true,
|
||||
})
|
||||
deleteSync(
|
||||
url: string,
|
||||
parameters: any,
|
||||
headers: any,
|
||||
success: (result: HTTPResponse) => void,
|
||||
failure: (error: any) => void
|
||||
): string {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a HEAD request
|
||||
* @param url {string} The url to send the request to
|
||||
* @param parameters {Object} Parameters to send with the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @returns {Promise<HTTPResponse>} returns a promise that will resolve on success, and reject on failure
|
||||
*/
|
||||
@Cordova()
|
||||
head(url: string, parameters: any, headers: any): Promise<HTTPResponse> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a sync HEAD request
|
||||
* @param url {string} The url to send the request to
|
||||
* @param parameters {Object} Parameters to send with the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @param success {function} A callback that is called when the request succeed
|
||||
* @param failure {function} A callback that is called when the request failed
|
||||
* @returns {string} returns a string that represents the requestId
|
||||
*/
|
||||
@Cordova({
|
||||
methodName: 'head',
|
||||
sync: true,
|
||||
})
|
||||
headSync(
|
||||
url: string,
|
||||
parameters: any,
|
||||
headers: any,
|
||||
success: (result: HTTPResponse) => void,
|
||||
failure: (error: any) => void
|
||||
): string {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make an OPTIONS request
|
||||
* @param url {string} The url to send the request to
|
||||
* @param parameters {Object} Parameters to send with the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @returns {Promise<HTTPResponse>} returns a promise that will resolve on success, and reject on failure
|
||||
*/
|
||||
@Cordova()
|
||||
options(url: string, parameters: any, headers: any): Promise<HTTPResponse> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make an sync OPTIONS request
|
||||
* @param url {string} The url to send the request to
|
||||
* @param parameters {Object} Parameters to send with the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @param success {function} A callback that is called when the request succeed
|
||||
* @param failure {function} A callback that is called when the request failed
|
||||
* @returns {string} returns a string that represents the requestId
|
||||
*/
|
||||
@Cordova({
|
||||
methodName: 'options',
|
||||
sync: true,
|
||||
})
|
||||
optionsSync(
|
||||
url: string,
|
||||
parameters: any,
|
||||
headers: any,
|
||||
success: (result: HTTPResponse) => void,
|
||||
failure: (error: any) => void
|
||||
): string {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param url {string} The url to send the request to
|
||||
* @param body {Object} The body of the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @param filePath {string} The local path(s) of the file(s) to upload
|
||||
* @param name {string} The name(s) of the parameter to pass the file(s) along as
|
||||
* @returns {Promise<any>} returns a FileEntry promise that will resolve on success, and reject on failure
|
||||
*/
|
||||
@Cordova()
|
||||
uploadFile(url: string, body: any, headers: any, filePath: string | string[], name: string | string[]): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param url {string} The url to send the request to
|
||||
* @param body {Object} The body of the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @param filePath {string} The local path(s) of the file(s) to upload
|
||||
* @param name {string} The name(s) of the parameter to pass the file(s) along as
|
||||
* @param success {function} A callback that is called when the request succeed
|
||||
* @param failure {function} A callback that is called when the request failed
|
||||
* @returns {string} returns a string that represents the requestId
|
||||
*/
|
||||
@Cordova({
|
||||
methodName: 'uploadFile',
|
||||
sync: true,
|
||||
})
|
||||
uploadFileSync(
|
||||
url: string,
|
||||
body: any,
|
||||
headers: any,
|
||||
filePath: string | string[],
|
||||
name: string | string[],
|
||||
success: (result: any) => void,
|
||||
failure: (error: any) => void
|
||||
): string {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param url {string} The url to send the request to
|
||||
* @param body {Object} The body of the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @param filePath {string} The path to download the file to, including the file name.
|
||||
* @returns {Promise<any>} returns a FileEntry promise that will resolve on success, and reject on failure
|
||||
*/
|
||||
@Cordova()
|
||||
downloadFile(url: string, body: any, headers: any, filePath: string): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param url {string} The url to send the request to
|
||||
* @param body {Object} The body of the request
|
||||
* @param headers {Object} The headers to set for this request
|
||||
* @param filePath {string} The path to download the file to, including the file name.
|
||||
* @param success {function} A callback that is called when the request succeed
|
||||
* @param failure {function} A callback that is called when the request failed
|
||||
* @returns {string} returns a string that represents the requestId
|
||||
*/
|
||||
@Cordova({
|
||||
methodName: 'downloadFile',
|
||||
sync: true,
|
||||
})
|
||||
downloadFileSync(
|
||||
url: string,
|
||||
body: any,
|
||||
headers: any,
|
||||
filePath: string,
|
||||
success: (result: any) => void,
|
||||
failure: (error: any) => void
|
||||
): string {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param url {string} The url to send the request to
|
||||
* @param options {Object} options for individual request
|
||||
* @param options.method {string} request method
|
||||
* @param options.data {Object} payload to be send to the server (only applicable on post, put or patch methods)
|
||||
* @param options.params {Object} query params to be appended to the URL (only applicable on get, head, delete, upload or download methods)
|
||||
* @param options.serializer {string} data serializer to be used (only applicable on post, put or patch methods), defaults to global serializer value, see setDataSerializer for supported values
|
||||
* @param options.timeout {number} timeout value for the request in seconds, defaults to global timeout value
|
||||
* @param options.headers {Object} headers object (key value pair), will be merged with global values
|
||||
* @param options.filePath {string} file path(s) to be used during upload and download see uploadFile and downloadFile for detailed information
|
||||
* @param options.name {string} name(s) to be used during upload see uploadFile for detailed information
|
||||
* @param options.responseType {string} response type, defaults to text
|
||||
*
|
||||
* @returns {Promise<HTTPResponse>} returns a promise that will resolve on success, and reject on failure
|
||||
*/
|
||||
@Cordova()
|
||||
sendRequest(
|
||||
url: string,
|
||||
options: {
|
||||
method: 'get' | 'post' | 'put' | 'patch' | 'head' | 'delete' | 'options' | 'upload' | 'download';
|
||||
data?: { [index: string]: any };
|
||||
params?: { [index: string]: string | number };
|
||||
serializer?: 'json' | 'urlencoded' | 'utf8' | 'multipart' | 'raw';
|
||||
timeout?: number;
|
||||
headers?: { [index: string]: string };
|
||||
filePath?: string | string[];
|
||||
name?: string | string[];
|
||||
responseType?: 'text' | 'arraybuffer' | 'blob' | 'json';
|
||||
}
|
||||
): Promise<HTTPResponse> {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param url {string} The url to send the request to
|
||||
* @param options {Object} options for individual request
|
||||
* @param options.method {string} request method
|
||||
* @param options.data {Object} payload to be send to the server (only applicable on post, put or patch methods)
|
||||
* @param options.params {Object} query params to be appended to the URL (only applicable on get, head, delete, upload or download methods)
|
||||
* @param options.serializer {string} data serializer to be used (only applicable on post, put or patch methods), defaults to global serializer value, see setDataSerializer for supported values
|
||||
* @param options.timeout {number} timeout value for the request in seconds, defaults to global timeout value
|
||||
* @param options.headers {Object} headers object (key value pair), will be merged with global values
|
||||
* @param options.filePath {string} file path(s) to be used during upload and download see uploadFile and downloadFile for detailed information
|
||||
* @param options.name {string} name(s) to be used during upload see uploadFile for detailed information
|
||||
* @param options.responseType {string} response type, defaults to text
|
||||
* @param success {function} A callback that is called when the request succeed
|
||||
* @param failure {function} A callback that is called when the request failed
|
||||
*
|
||||
* @returns {string} returns a string that represents the requestId
|
||||
*/
|
||||
@Cordova({
|
||||
methodName: 'sendRequest',
|
||||
sync: true,
|
||||
})
|
||||
sendRequestSync(
|
||||
url: string,
|
||||
options: {
|
||||
method: 'get' | 'post' | 'put' | 'patch' | 'head' | 'delete' | 'options' | 'upload' | 'download';
|
||||
data?: { [index: string]: any };
|
||||
params?: { [index: string]: string | number };
|
||||
serializer?: 'json' | 'urlencoded' | 'utf8' | 'multipart';
|
||||
timeout?: number;
|
||||
headers?: { [index: string]: string };
|
||||
filePath?: string | string[];
|
||||
name?: string | string[];
|
||||
responseType?: 'text' | 'arraybuffer' | 'blob' | 'json';
|
||||
},
|
||||
success: (result: HTTPResponse) => void,
|
||||
failure: (error: any) => void
|
||||
): string {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param requestId {string} The RequestId of the request to abort
|
||||
*/
|
||||
@Cordova()
|
||||
abort(requestId: string): Promise<AbortedResponse> {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({ sync: true })
|
||||
initializeApproov(): void {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({ sync: true })
|
||||
approovSetDataHashInToken(dataHash: string): void {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova({ sync: true })
|
||||
approovSetBindingHeader(header: string): void {
|
||||
return;
|
||||
}
|
||||
|
||||
@Cordova()
|
||||
getApproovLoggableToken(host: string): Promise<ApproovLoggableToken> {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -31,6 +31,11 @@ export interface AppsflyerOptions {
|
||||
* default false Accessing AppsFlyer Attribution / Conversion Data from the SDK (Deferred Deeplinking). Read more: Android, iOS. AppsFlyer plugin will return attribution data in onSuccess callback.
|
||||
*/
|
||||
onInstallConversionDataListener?: boolean;
|
||||
|
||||
/**
|
||||
* time for the sdk to wait before launch - IOS 14 ONLY!
|
||||
*/
|
||||
waitForATTUserAuthorization?: number;
|
||||
}
|
||||
|
||||
export interface AppsflyerEvent {
|
||||
@@ -75,7 +80,7 @@ export interface AppsflyerInviteOptions {
|
||||
pluginRef: 'window.plugins.appsFlyer',
|
||||
repo: 'https://github.com/AppsFlyerSDK/cordova-plugin-appsflyer-sdk',
|
||||
platforms: ['iOS', 'Android'],
|
||||
install: 'Add to config.xml like stated on github and then start'
|
||||
install: 'Add to config.xml like stated on github and then start',
|
||||
})
|
||||
@Injectable()
|
||||
export class Appsflyer extends IonicNativePlugin {
|
||||
@@ -94,8 +99,8 @@ export class Appsflyer extends IonicNativePlugin {
|
||||
* @param {string} eventName custom event name, is presented in your dashboard
|
||||
* @param {AppsflyerEvent} eventValues event details
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
trackEvent(eventName: string, eventValues: AppsflyerEvent): void {}
|
||||
@Cordova()
|
||||
logEvent(eventName: string, eventValues: AppsflyerEvent): void {}
|
||||
|
||||
/**
|
||||
* Setting your own Custom ID enables you to cross-reference your own unique ID with AppsFlyer’s user ID and the other devices’ IDs. This ID is available in AppsFlyer CSV reports along with postbacks APIs for cross-referencing with you internal IDs.
|
||||
@@ -109,7 +114,7 @@ export class Appsflyer extends IonicNativePlugin {
|
||||
* @param {boolean} customerUserId In some extreme cases you might want to shut down all SDK tracking due to legal and privacy compliance. This can be achieved with the isStopTracking API. Once this API is invoked, our SDK will no longer communicate with our servers and stop functioning.
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
stopTracking(isStopTracking: boolean): void {}
|
||||
Stop(isStopTracking: boolean): void {}
|
||||
|
||||
/**
|
||||
* Get the data from Attribution
|
||||
@@ -121,6 +126,7 @@ export class Appsflyer extends IonicNativePlugin {
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* Enables app uninstall tracking
|
||||
* @param {string} token GCM/FCM ProjectNumber
|
||||
* @returns {Promise<any>}
|
||||
@@ -137,6 +143,13 @@ export class Appsflyer extends IonicNativePlugin {
|
||||
@Cordova({ sync: true })
|
||||
updateServerUninstallToken(token: string): void {}
|
||||
|
||||
/**
|
||||
* (iOS) Allows to pass APN Tokens that where collected by third party plugins to the AppsFlyer server. Can be used for Uninstall Tracking.
|
||||
* @param {string} token APN Token
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
registerUninstall(token: string): void {}
|
||||
|
||||
/**
|
||||
* Get AppsFlyer’s proprietary Device ID. The AppsFlyer Device ID is the main ID used by AppsFlyer in Reports and APIs.
|
||||
*/
|
||||
@@ -150,7 +163,7 @@ export class Appsflyer extends IonicNativePlugin {
|
||||
* @param {boolean} disable Set to true to opt-out user from tracking
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
deviceTrackingDisabled(disable: boolean): void {}
|
||||
anonymizeUser(disable: boolean): void {}
|
||||
|
||||
/**
|
||||
* Set AppsFlyer’s OneLink ID. Setting a valid OneLink ID will result in shortened User Invite links, when one is generated. The OneLink ID can be obtained on the AppsFlyer Dashboard.
|
||||
@@ -175,7 +188,7 @@ export class Appsflyer extends IonicNativePlugin {
|
||||
* @param {string} campaign Promoted Campaign
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
trackCrossPromotionImpression(appId: string, campaign: string): void {}
|
||||
logCrossPromotionImpression(appId: string, campaign: string): void {}
|
||||
|
||||
/**
|
||||
* Use this call to track the click and launch the app store's app page (via Browser)
|
||||
@@ -184,5 +197,5 @@ export class Appsflyer extends IonicNativePlugin {
|
||||
* @param {Object} options Additional Parameters to track
|
||||
*/
|
||||
@Cordova({ sync: true })
|
||||
trackAndOpenStore(appId: string, campaign: string, options: Object): void {}
|
||||
logCrossPromotionAndOpenStore(appId: string, campaign: string, options: Object): void {}
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
|
||||
plugin: 'clovelced-plugin-audiomanagement',
|
||||
pluginRef: 'AudioManagement',
|
||||
repo: 'https://github.com/clovelCed/cordova-plugin-audiomanagement',
|
||||
platforms: ['Android']
|
||||
platforms: ['Android'],
|
||||
})
|
||||
@Injectable()
|
||||
export class AudioManagement extends IonicNativePlugin {
|
||||
@@ -57,7 +57,7 @@ export class AudioManagement extends IonicNativePlugin {
|
||||
*/
|
||||
@Cordova({
|
||||
successIndex: 1,
|
||||
errorIndex: 2
|
||||
errorIndex: 2,
|
||||
})
|
||||
setAudioMode(mode: AudioManagement.AudioMode): Promise<void> {
|
||||
return;
|
||||
@@ -83,7 +83,7 @@ export class AudioManagement extends IonicNativePlugin {
|
||||
*/
|
||||
@Cordova({
|
||||
successIndex: 2,
|
||||
errorIndex: 3
|
||||
errorIndex: 3,
|
||||
})
|
||||
setVolume(type: AudioManagement.VolumeType, volume: number): Promise<void> {
|
||||
return;
|
||||
@@ -98,7 +98,7 @@ export class AudioManagement extends IonicNativePlugin {
|
||||
*/
|
||||
@Cordova({
|
||||
successIndex: 1,
|
||||
errorIndex: 2
|
||||
errorIndex: 2,
|
||||
})
|
||||
getVolume(type: AudioManagement.VolumeType): Promise<{ volume: number }> {
|
||||
return;
|
||||
@@ -113,7 +113,7 @@ export class AudioManagement extends IonicNativePlugin {
|
||||
*/
|
||||
@Cordova({
|
||||
successIndex: 1,
|
||||
errorIndex: 2
|
||||
errorIndex: 2,
|
||||
})
|
||||
getMaxVolume(type: AudioManagement.VolumeType): Promise<{ maxVolume: number }> {
|
||||
return;
|
||||
@@ -124,14 +124,14 @@ export namespace AudioManagement {
|
||||
export enum AudioMode {
|
||||
SILENT = 0,
|
||||
VIBRATE,
|
||||
NORMAL
|
||||
NORMAL,
|
||||
}
|
||||
|
||||
export enum VolumeType {
|
||||
RING = 0,
|
||||
MUSIC,
|
||||
NOTIFICATION,
|
||||
SYSTEM
|
||||
SYSTEM,
|
||||
}
|
||||
|
||||
export interface AudioModeReturn {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user