@aparajita/capacitor-biometric-auth 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/definitions.d.ts +2 -1
- package/dist/esm/definitions.js +0 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/package.json +112 -0
- package/dist/esm/web.js +0 -1
- package/dist/plugin.cjs.js +4 -1
- package/dist/plugin.js +4 -1
- package/package.json +17 -13
- package/dist/esm/definitions.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/web.js.map +0 -1
- package/dist/plugin.cjs.js.map +0 -1
- package/dist/plugin.js.map +0 -1
|
@@ -28,7 +28,8 @@ export declare enum BiometryType {
|
|
|
28
28
|
}
|
|
29
29
|
export interface AuthenticateOptions {
|
|
30
30
|
/**
|
|
31
|
-
* The reason for requesting authentication. Displays in the authentication dialog
|
|
31
|
+
* The reason for requesting authentication. Displays in the authentication dialog
|
|
32
|
+
* presented to the user. If not supplied, a default message is displayed.
|
|
32
33
|
*/
|
|
33
34
|
reason?: string;
|
|
34
35
|
/**
|
package/dist/esm/definitions.js
CHANGED
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { registerPlugin } from '@capacitor/core';
|
|
2
2
|
import { kPluginName } from './definitions';
|
|
3
|
+
import { name, version } from './package.json';
|
|
3
4
|
import { BiometricAuth } from './web';
|
|
5
|
+
console.log(`loaded ${name} v${version}`);
|
|
4
6
|
// Because we are using @aparajita/capacitor-native-decorator,
|
|
5
7
|
// we have one version of the TS code to rule them all, and there
|
|
6
8
|
// is no need to lazy load. 😁
|
|
@@ -14,4 +16,3 @@ const biometricAuth = registerPlugin(kPluginName, {
|
|
|
14
16
|
export * from './definitions';
|
|
15
17
|
export { biometricAuth as BiometricAuth };
|
|
16
18
|
export { getBiometryName } from './web';
|
|
17
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@aparajita/capacitor-biometric-auth",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Provides access to the native biometric auth APIs for Capacitor apps",
|
|
5
|
+
"author": "Aparajita Fishman",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"main": "dist/plugin.cjs.js",
|
|
8
|
+
"module": "dist/esm/index.js",
|
|
9
|
+
"types": "dist/esm/index.d.ts",
|
|
10
|
+
"unpkg": "dist/plugin.js",
|
|
11
|
+
"engines": {
|
|
12
|
+
"node": ">=16.15.1"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"android/src/main/",
|
|
16
|
+
"android/build.gradle",
|
|
17
|
+
"dist/",
|
|
18
|
+
"ios/Plugin/",
|
|
19
|
+
"*.podspec",
|
|
20
|
+
"LICENSE"
|
|
21
|
+
],
|
|
22
|
+
"scripts": {
|
|
23
|
+
"clean": "rimraf ./dist",
|
|
24
|
+
"build": "pnpm check && pnpm build.only",
|
|
25
|
+
"build.dev": "pnpm check && pnpm build.only.dev",
|
|
26
|
+
"build.only": "pnpm clean && tsc $SOURCE_MAP && pnpm rollup && make-ios-plugin && pnpm docgen",
|
|
27
|
+
"build.only.dev": "SOURCE_MAP=--sourceMap pnpm build.only",
|
|
28
|
+
"rollup": "rollup -c rollup.config.mjs",
|
|
29
|
+
"watch": "nodemon -w ./src -w tsconfig.json -w rollup.config.mjs --exec 'pnpm build --silent' -e ts",
|
|
30
|
+
"lint": "eslint . && pnpm typecheck",
|
|
31
|
+
"lint.fix": "eslint --fix . && pnpm typecheck",
|
|
32
|
+
"typecheck": "tsc --noEmit",
|
|
33
|
+
"lint.swift": "pnpm swiftlint",
|
|
34
|
+
"prettier": "prettier --check \"**/*.{css,html,ts,js,json,java}\"",
|
|
35
|
+
"prettier.fix": "pnpm prettier --write",
|
|
36
|
+
"swiftlint": "swiftly ios",
|
|
37
|
+
"swiftlint.fix": "swiftly --fix ios",
|
|
38
|
+
"check": "pnpm lint && pnpm prettier && pnpm swiftlint",
|
|
39
|
+
"check.fix": "pnpm lint.fix && pnpm prettier.fix && pnpm swiftlint.fix",
|
|
40
|
+
"docgen": "docgen --api BiometricAuthPlugin --output-readme README.md && docgen-format",
|
|
41
|
+
"verify": "pnpm verify:ios && pnpm verify:android && pnpm verify:web",
|
|
42
|
+
"verify:ios": "cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin && cd ..",
|
|
43
|
+
"verify:android": "cd android && ./gradlew clean build test && cd ..",
|
|
44
|
+
"verify:web": "pnpm build",
|
|
45
|
+
"release": "commit-and-tag-version",
|
|
46
|
+
"push": "git push --follow-tags origin main"
|
|
47
|
+
},
|
|
48
|
+
"keywords": [
|
|
49
|
+
"capacitor",
|
|
50
|
+
"plugin",
|
|
51
|
+
"native",
|
|
52
|
+
"biometry",
|
|
53
|
+
"biometric",
|
|
54
|
+
"auth",
|
|
55
|
+
"faceid",
|
|
56
|
+
"touchid"
|
|
57
|
+
],
|
|
58
|
+
"capacitor": {
|
|
59
|
+
"ios": {
|
|
60
|
+
"src": "ios"
|
|
61
|
+
},
|
|
62
|
+
"android": {
|
|
63
|
+
"src": "android"
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"swiftlint": "@ionic/swiftlint-config",
|
|
67
|
+
"repository": {
|
|
68
|
+
"type": "git",
|
|
69
|
+
"url": "https://github.com/aparajita/capacitor-biometric-auth"
|
|
70
|
+
},
|
|
71
|
+
"bugs": {
|
|
72
|
+
"url": "https://github.com/aparajita/capacitor-biometric-auth/issues"
|
|
73
|
+
},
|
|
74
|
+
"devDependencies": {
|
|
75
|
+
"@aparajita/capacitor-docgen": "github:aparajita/capacitor-docgen",
|
|
76
|
+
"@aparajita/capacitor-docgen-format": "github:aparajita/capacitor-docgen-format",
|
|
77
|
+
"@aparajita/eslint-config-base": "^1.1.2",
|
|
78
|
+
"@aparajita/prettier-config": "^1.0.0",
|
|
79
|
+
"@aparajita/swiftly": "^1.0.0",
|
|
80
|
+
"@capacitor/core": "^3.6.0",
|
|
81
|
+
"@ionic/swiftlint-config": "^1.1.2",
|
|
82
|
+
"@rollup/plugin-json": "^4.1.0",
|
|
83
|
+
"@types/node": "^18.0.0",
|
|
84
|
+
"@typescript-eslint/eslint-plugin": "^5.30.3",
|
|
85
|
+
"@typescript-eslint/parser": "^5.30.3",
|
|
86
|
+
"chalk": "^5.0.1",
|
|
87
|
+
"commit-and-tag-version": "^10.0.1",
|
|
88
|
+
"eslint": "^8.19.0",
|
|
89
|
+
"eslint-config-prettier": "^8.5.0",
|
|
90
|
+
"eslint-config-standard": "^17.0.0",
|
|
91
|
+
"eslint-import-resolver-typescript": "^3.1.4",
|
|
92
|
+
"eslint-plugin-import": "^2.26.0",
|
|
93
|
+
"eslint-plugin-n": "^15.2.3",
|
|
94
|
+
"eslint-plugin-prettier": "^4.2.1",
|
|
95
|
+
"eslint-plugin-promise": "^6.0.0",
|
|
96
|
+
"nodemon": "^2.0.18",
|
|
97
|
+
"prettier": "^2.7.1",
|
|
98
|
+
"prettier-plugin-java": "^1.6.2",
|
|
99
|
+
"rimraf": "^3.0.2",
|
|
100
|
+
"rollup": "^2.75.7",
|
|
101
|
+
"typescript": "~4.7.4"
|
|
102
|
+
},
|
|
103
|
+
"dependencies": {
|
|
104
|
+
"@aparajita/capacitor-native-decorator": "^2.0.2",
|
|
105
|
+
"@capacitor/android": "^3.6.0",
|
|
106
|
+
"@capacitor/app": "^1.1.1",
|
|
107
|
+
"@capacitor/ios": "^3.6.0"
|
|
108
|
+
},
|
|
109
|
+
"peerDependencies": {
|
|
110
|
+
"@capacitor/core": "^3.6.0"
|
|
111
|
+
}
|
|
112
|
+
}
|
package/dist/esm/web.js
CHANGED
package/dist/plugin.cjs.js
CHANGED
|
@@ -64,6 +64,9 @@ class BiometryError {
|
|
|
64
64
|
}
|
|
65
65
|
const kPluginName = 'BiometricAuth';
|
|
66
66
|
|
|
67
|
+
const name = "@aparajita/capacitor-biometric-auth";
|
|
68
|
+
const version = "2.0.0";
|
|
69
|
+
|
|
67
70
|
var __decorate = (window && window.__decorate) || function (decorators, target, key, desc) {
|
|
68
71
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
69
72
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -152,6 +155,7 @@ function getBiometryName(type) {
|
|
|
152
155
|
return kBiometryTypeNameMap[type] || '';
|
|
153
156
|
}
|
|
154
157
|
|
|
158
|
+
console.log(`loaded ${name} v${version}`);
|
|
155
159
|
// Because we are using @aparajita/capacitor-native-decorator,
|
|
156
160
|
// we have one version of the TS code to rule them all, and there
|
|
157
161
|
// is no need to lazy load. 😁
|
|
@@ -167,4 +171,3 @@ exports.BiometricAuth = biometricAuth;
|
|
|
167
171
|
exports.BiometryError = BiometryError;
|
|
168
172
|
exports.getBiometryName = getBiometryName;
|
|
169
173
|
exports.kPluginName = kPluginName;
|
|
170
|
-
//# sourceMappingURL=plugin.cjs.js.map
|
package/dist/plugin.js
CHANGED
|
@@ -59,6 +59,9 @@ var capacitorBiometricAuth = (function (exports, core, capacitorNativeDecorator,
|
|
|
59
59
|
}
|
|
60
60
|
const kPluginName = 'BiometricAuth';
|
|
61
61
|
|
|
62
|
+
const name = "@aparajita/capacitor-biometric-auth";
|
|
63
|
+
const version = "2.0.0";
|
|
64
|
+
|
|
62
65
|
var __decorate = (window && window.__decorate) || function (decorators, target, key, desc) {
|
|
63
66
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
64
67
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -147,6 +150,7 @@ var capacitorBiometricAuth = (function (exports, core, capacitorNativeDecorator,
|
|
|
147
150
|
return kBiometryTypeNameMap[type] || '';
|
|
148
151
|
}
|
|
149
152
|
|
|
153
|
+
console.log(`loaded ${name} v${version}`);
|
|
150
154
|
// Because we are using @aparajita/capacitor-native-decorator,
|
|
151
155
|
// we have one version of the TS code to rule them all, and there
|
|
152
156
|
// is no need to lazy load. 😁
|
|
@@ -168,4 +172,3 @@ var capacitorBiometricAuth = (function (exports, core, capacitorNativeDecorator,
|
|
|
168
172
|
return exports;
|
|
169
173
|
|
|
170
174
|
})({}, capacitorExports, capacitorNativeDecorator, app);
|
|
171
|
-
//# sourceMappingURL=plugin.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aparajita/capacitor-biometric-auth",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "Provides access to the native biometric auth APIs for Capacitor apps",
|
|
5
5
|
"author": "Aparajita Fishman",
|
|
6
6
|
"license": "MIT",
|
|
@@ -53,12 +53,13 @@
|
|
|
53
53
|
"@aparajita/swiftly": "^1.0.0",
|
|
54
54
|
"@capacitor/core": "^3.6.0",
|
|
55
55
|
"@ionic/swiftlint-config": "^1.1.2",
|
|
56
|
+
"@rollup/plugin-json": "^4.1.0",
|
|
56
57
|
"@types/node": "^18.0.0",
|
|
57
|
-
"@typescript-eslint/eslint-plugin": "^5.30.
|
|
58
|
-
"@typescript-eslint/parser": "^5.30.
|
|
58
|
+
"@typescript-eslint/eslint-plugin": "^5.30.3",
|
|
59
|
+
"@typescript-eslint/parser": "^5.30.3",
|
|
59
60
|
"chalk": "^5.0.1",
|
|
60
61
|
"commit-and-tag-version": "^10.0.1",
|
|
61
|
-
"eslint": "^8.
|
|
62
|
+
"eslint": "^8.19.0",
|
|
62
63
|
"eslint-config-prettier": "^8.5.0",
|
|
63
64
|
"eslint-config-standard": "^17.0.0",
|
|
64
65
|
"eslint-import-resolver-typescript": "^3.1.4",
|
|
@@ -74,7 +75,7 @@
|
|
|
74
75
|
"typescript": "~4.7.4"
|
|
75
76
|
},
|
|
76
77
|
"dependencies": {
|
|
77
|
-
"@aparajita/capacitor-native-decorator": "
|
|
78
|
+
"@aparajita/capacitor-native-decorator": "^2.0.2",
|
|
78
79
|
"@capacitor/android": "^3.6.0",
|
|
79
80
|
"@capacitor/app": "^1.1.1",
|
|
80
81
|
"@capacitor/ios": "^3.6.0"
|
|
@@ -84,24 +85,27 @@
|
|
|
84
85
|
},
|
|
85
86
|
"scripts": {
|
|
86
87
|
"clean": "rimraf ./dist",
|
|
87
|
-
"
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"watch": "nodemon -w ./src -w tsconfig.json -w rollup.config.js --exec 'pnpm build --silent' -e ts",
|
|
88
|
+
"build": "pnpm check && pnpm build.only",
|
|
89
|
+
"build.dev": "pnpm check && pnpm build.only.dev",
|
|
90
|
+
"build.only": "pnpm clean && tsc $SOURCE_MAP && pnpm rollup && make-ios-plugin && pnpm docgen",
|
|
91
|
+
"build.only.dev": "SOURCE_MAP=--sourceMap pnpm build.only",
|
|
92
|
+
"rollup": "rollup -c rollup.config.mjs",
|
|
93
|
+
"watch": "nodemon -w ./src -w tsconfig.json -w rollup.config.mjs --exec 'pnpm build --silent' -e ts",
|
|
94
94
|
"lint": "eslint . && pnpm typecheck",
|
|
95
95
|
"lint.fix": "eslint --fix . && pnpm typecheck",
|
|
96
96
|
"typecheck": "tsc --noEmit",
|
|
97
97
|
"lint.swift": "pnpm swiftlint",
|
|
98
|
-
"prettier": "prettier --check \"**/*.{css,html,ts,js,java}\"",
|
|
98
|
+
"prettier": "prettier --check \"**/*.{css,html,ts,js,json,java}\"",
|
|
99
99
|
"prettier.fix": "pnpm prettier --write",
|
|
100
100
|
"swiftlint": "swiftly ios",
|
|
101
101
|
"swiftlint.fix": "swiftly --fix ios",
|
|
102
102
|
"check": "pnpm lint && pnpm prettier && pnpm swiftlint",
|
|
103
103
|
"check.fix": "pnpm lint.fix && pnpm prettier.fix && pnpm swiftlint.fix",
|
|
104
104
|
"docgen": "docgen --api BiometricAuthPlugin --output-readme README.md && docgen-format",
|
|
105
|
+
"verify": "pnpm verify:ios && pnpm verify:android && pnpm verify:web",
|
|
106
|
+
"verify:ios": "cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin && cd ..",
|
|
107
|
+
"verify:android": "cd android && ./gradlew clean build test && cd ..",
|
|
108
|
+
"verify:web": "pnpm build",
|
|
105
109
|
"release": "commit-and-tag-version",
|
|
106
110
|
"push": "git push --follow-tags origin main"
|
|
107
111
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,YA8BX;AA9BD,WAAY,YAAY;IACtB;;OAEG;IACH,+CAAI,CAAA;IAEJ;;OAEG;IACH,qDAAO,CAAA;IAEP;;OAEG;IACH,mDAAM,CAAA;IAEN;;OAEG;IACH,yFAAyB,CAAA;IAEzB;;OAEG;IACH,2EAAkB,CAAA;IAElB;;OAEG;IACH,2EAAkB,CAAA;AACpB,CAAC,EA9BW,YAAY,KAAZ,YAAY,QA8BvB;AAyFD;;;;;;;GAOG;AACH,MAAM,CAAN,IAAY,iBAaX;AAbD,WAAY,iBAAiB;IAC3B,mEAAS,CAAA;IACT,yFAAoB,CAAA;IACpB,6EAAc,CAAA;IACd,6EAAc,CAAA;IACd,6EAAc,CAAA;IACd,yEAAY,CAAA;IACZ,qEAAU,CAAA;IACV,yEAAY,CAAA;IACZ,+EAAe,CAAA;IACf,yFAAoB,CAAA;IACpB,wFAAmB,CAAA;IACnB,sFAAkB,CAAA;AACpB,CAAC,EAbW,iBAAiB,KAAjB,iBAAiB,QAa5B;AAMD,MAAM,OAAO,aAAa;IAIxB,YAAY,OAAe,EAAE,IAAuB;QAClD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC;CACF;AAuED,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAA","sourcesContent":["import type { DecoratedNativePlugin } from '@aparajita/capacitor-native-decorator'\nimport type { PluginListenerHandle, PluginResultError } from '@capacitor/core'\n\nexport enum BiometryType {\n /**\n * No biometry is available\n */\n none,\n\n /**\n * iOS Touch ID is available\n */\n touchId,\n\n /**\n * iOS Face ID is available\n */\n faceId,\n\n /**\n * Android fingerprint authentication is available\n */\n fingerprintAuthentication,\n\n /**\n * Android face authentication is available\n */\n faceAuthentication,\n\n /**\n * Android iris authentication is available\n */\n irisAuthentication\n}\n\nexport interface AuthenticateOptions {\n /**\n * The reason for requesting authentication. Displays in the authentication dialog presented to the user. If not supplied, a default message is displayed.\n */\n reason?: string\n\n /**\n * iOS:\n * The system presents a cancel button during biometric authentication\n * to let the user abort the authentication attempt. The button appears\n * every time the system asks the user to present a finger registered with\n * Touch ID. For Face ID, the button only appears if authentication fails\n * and the user is prompted to try again. Either way, the user can stop\n * trying to authenticate by tapping the button.\n *\n * Android:\n * The text for the negative button. This would typically be used as a \"Cancel\" button,\n * but may be also used to show an alternative method for authentication, such as a\n * screen that asks for a backup password.\n *\n * Default: \"Cancel\"\n */\n cancelTitle?: string\n\n /**\n * If true, allows for authentication using device unlock credentials. Default is false.\n *\n * iOS:\n * If biometry is available, enrolled, and not disabled, the system uses that first.\n * After the first Touch ID failure or second Face ID failure, if `iosFallbackTitle`\n * is not an empty string, a fallback button appears in the authentication dialog.\n * If the user taps the fallback button, the system prompts the user for the device\n * passcode or the user’s password. If `iosFallbackTitle` is an empty string, no\n * fallback button will appear.\n *\n * If biometry is not available, enrolled and enabled, and a passcode is set,\n * the system immediately prompts the user for the device passcode or user’s password.\n * Authentication fails with the error code `passcodeNotSet` if the device passcode isn’t enabled.\n *\n * If a passcode is not set on the device, a `passcodeNotSet` error is returned.\n *\n * The system disables passcode authentication after 6 unsuccessful attempts, with progressively\n * increasing delays between attempts.\n *\n * The title of the fallback button may be customized by setting `iosFallbackTitle` to\n * a non-empty string.\n *\n * Android:\n * The user will first be prompted to authenticate with biometrics, but also given\n * the option to authenticate with their device PIN, pattern, or password by tapping\n * a button in the authentication dialog. The title of the button is supplied by\n * the system.\n */\n allowDeviceCredential?: boolean\n\n /**\n * The system presents a fallback button when biometric authentication fails\n * — for example, because the system doesn’t recognize the presented finger,\n * or after several failed attempts to recognize the user’s face.\n *\n * If `allowDeviceCredential` is false, tapping this button dismisses the\n * authentication dialog and returns the error code userFallback. If undefined,\n * the localized systetm default title is used. Passing an empty string\n * hides the fallback button completely.\n *\n * If `allowDeviceCredential` is true and this is undefined,\n * the localized system default title is used.\n */\n iosFallbackTitle?: string\n\n /**\n * Title for the Android dialog. If not supplied, the system default is used.\n */\n androidTitle?: string\n\n /**\n * Subtitle for the Android dialog. If not supplied, the system default is used.\n */\n androidSubtitle?: string\n\n /**\n * The maximum number of failed biometric verification attempts before\n * returning `BiometryError.authenticationFailed`. The default is 3.\n */\n androidMaxAttempts?: number\n}\n\n/**\n * If the `authenticate()` method throws an exception, the error object\n * contains a .code property which will contain one of these strings,\n * indicating what the error was.\n *\n * See https://developer.apple.com/documentation/localauthentication/laerror\n * for a description of each error code.\n */\nexport enum BiometryErrorType {\n appCancel,\n authenticationFailed,\n invalidContext,\n notInteractive,\n passcodeNotSet,\n systemCancel,\n userCancel,\n userFallback,\n biometryLockout,\n biometryNotAvailable,\n biometryNotEnrolled,\n noDeviceCredential\n}\n\nexport interface ResultError extends PluginResultError {\n code: string\n}\n\nexport class BiometryError implements ResultError {\n message: string\n code: string\n\n constructor(message: string, code: BiometryErrorType) {\n this.message = message\n this.code = BiometryErrorType[code]\n }\n}\n\nexport interface CheckBiometryResult {\n /**\n * True if the device has biometric authentication capability\n * and the current user has enrolled in biometry.\n */\n isAvailable: boolean\n\n /**\n * The type of biometry available on the device.\n */\n biometryType: BiometryType\n\n /**\n * If biometry is not available and the system gives a reason why,\n * it will be returned here. Otherwise it's an empty string.\n */\n reason: string\n}\n\n/**\n * The signature of the callback passed to `addResumeListener()`.\n */\nexport type ResumeListener = (info: CheckBiometryResult) => void\n\nexport interface BiometricAuthPlugin extends DecoratedNativePlugin {\n /**\n * Check to see what biometry type (if any) is available.\n */\n checkBiometry: () => Promise<CheckBiometryResult>\n\n /**\n * web only\n *\n * On the web, this method allows you to dynamically simulate\n * different types of biometry. You may either pass a `BiometryType` enum\n * or the string name of a `BiometryType`. If a string is passed and\n * it isn't a valid value, nothing happens.\n */\n setBiometryType: (type: BiometryType | string | undefined) => void\n\n /**\n * Prompt the user for authentication. If authorization fails for any reason,\n * the promise is rejected with a `BiometryError`.\n *\n * @param {AuthenticateOptions} options\n * @returns {Promise<void>}\n * @rejects {BiometryError}\n */\n authenticate: (options?: AuthenticateOptions) => Promise<void>\n\n /**\n * Register a function that will be called when the app resumes.\n * The function will be passed the result of `checkBiometry()`.\n *\n * @param {ResumeListener} listener\n * @returns {boolean} true if the listener is successfully added\n */\n addResumeListener: (listener: ResumeListener) => Promise<PluginListenerHandle>\n}\n\n/**\n * Return a human-readable name for a `BiometryType`.\n *\n * @param {BiometryType} type\n * @returns {string}\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ndeclare function getBiometryName(type: BiometryType): string\n\nexport const kPluginName = 'BiometricAuth'\n"]}
|
package/dist/esm/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAErC,8DAA8D;AAC9D,iEAAiE;AACjE,8BAA8B;AAC9B,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAA;AAElC,gEAAgE;AAChE,MAAM,aAAa,GAAG,cAAc,CAAsB,WAAW,EAAE;IACrE,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;IACX,OAAO,EAAE,MAAM;CAChB,CAAC,CAAA;AAEF,cAAc,eAAe,CAAA;AAC7B,OAAO,EAAE,aAAa,IAAI,aAAa,EAAE,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA","sourcesContent":["import { registerPlugin } from '@capacitor/core'\nimport { kPluginName } from './definitions'\nimport type { BiometricAuthPlugin } from './definitions'\nimport { BiometricAuth } from './web'\n\n// Because we are using @aparajita/capacitor-native-decorator,\n// we have one version of the TS code to rule them all, and there\n// is no need to lazy load. 😁\nconst plugin = new BiometricAuth()\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst biometricAuth = registerPlugin<BiometricAuthPlugin>(kPluginName, {\n web: plugin,\n ios: plugin,\n android: plugin\n})\n\nexport * from './definitions'\nexport { biometricAuth as BiometricAuth }\nexport { getBiometryName } from './web'\n"]}
|
package/dist/esm/web.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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","sourcesContent":["import { native } from '@aparajita/capacitor-native-decorator'\nimport { App } from '@capacitor/app'\nimport { WebPlugin } from '@capacitor/core'\nimport type { PluginListenerHandle } from '@capacitor/core'\nimport type {\n AuthenticateOptions,\n BiometricAuthPlugin,\n CheckBiometryResult,\n ResumeListener\n} from './definitions'\nimport {\n BiometryError,\n BiometryErrorType,\n BiometryType,\n kPluginName\n} from './definitions'\n\nconst kBiometryTypeNameMap = {\n [BiometryType.none]: '',\n [BiometryType.touchId]: 'Touch ID',\n [BiometryType.faceId]: 'Face ID',\n [BiometryType.fingerprintAuthentication]: 'Fingerprint Authentication',\n [BiometryType.faceAuthentication]: 'Face Authentication',\n [BiometryType.irisAuthentication]: 'Iris Authentication'\n}\n\nexport class BiometricAuth extends WebPlugin implements BiometricAuthPlugin {\n private biometryType: BiometryType = BiometryType.none\n\n getRegisteredPluginName(): string {\n return kPluginName\n }\n\n setBiometryType(type: BiometryType | string | undefined): void {\n if (typeof type === 'undefined') {\n return\n }\n\n if (typeof type === 'string') {\n // eslint-disable-next-line no-prototype-builtins\n if (BiometryType.hasOwnProperty(type)) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n this.biometryType = BiometryType[type as keyof typeof BiometryType]\n }\n } else {\n this.biometryType = type\n }\n }\n\n @native()\n async checkBiometry(): Promise<CheckBiometryResult> {\n return Promise.resolve({\n isAvailable: this.biometryType !== BiometryType.none,\n biometryType: this.biometryType,\n reason: ''\n })\n }\n\n @native()\n async authenticate(options?: AuthenticateOptions): Promise<void> {\n return this.checkBiometry().then(({ isAvailable, biometryType }) => {\n if (isAvailable) {\n if (\n // eslint-disable-next-line no-alert\n confirm(\n options?.reason ||\n `Authenticate with ${kBiometryTypeNameMap[biometryType]}?`\n )\n ) {\n return\n }\n\n throw new BiometryError('User cancelled', BiometryErrorType.userCancel)\n }\n\n throw new BiometryError(\n 'Biometry not available',\n BiometryErrorType.biometryNotAvailable\n )\n })\n }\n\n addResumeListener(\n listener: ResumeListener\n ): Promise<PluginListenerHandle> & PluginListenerHandle {\n return App.addListener('appStateChange', ({ isActive }): void => {\n if (isActive) {\n this.checkBiometry()\n .then((info: CheckBiometryResult) => {\n listener(info)\n })\n .catch((error: Error) => {\n console.error(error.message)\n })\n }\n })\n }\n}\n\n/**\n * Return a human-readable name for a BiometryType.\n *\n * @param {BiometryType} type\n * @returns {string}\n */\nexport function getBiometryName(type: BiometryType): string {\n return kBiometryTypeNameMap[type] || ''\n}\n"]}
|
package/dist/plugin.cjs.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.cjs.js","sources":["esm/definitions.js","esm/web.js","esm/index.js"],"sourcesContent":["export var BiometryType;\n(function (BiometryType) {\n /**\n * No biometry is available\n */\n BiometryType[BiometryType[\"none\"] = 0] = \"none\";\n /**\n * iOS Touch ID is available\n */\n BiometryType[BiometryType[\"touchId\"] = 1] = \"touchId\";\n /**\n * iOS Face ID is available\n */\n BiometryType[BiometryType[\"faceId\"] = 2] = \"faceId\";\n /**\n * Android fingerprint authentication is available\n */\n BiometryType[BiometryType[\"fingerprintAuthentication\"] = 3] = \"fingerprintAuthentication\";\n /**\n * Android face authentication is available\n */\n BiometryType[BiometryType[\"faceAuthentication\"] = 4] = \"faceAuthentication\";\n /**\n * Android iris authentication is available\n */\n BiometryType[BiometryType[\"irisAuthentication\"] = 5] = \"irisAuthentication\";\n})(BiometryType || (BiometryType = {}));\n/**\n * If the `authenticate()` method throws an exception, the error object\n * contains a .code property which will contain one of these strings,\n * indicating what the error was.\n *\n * See https://developer.apple.com/documentation/localauthentication/laerror\n * for a description of each error code.\n */\nexport var BiometryErrorType;\n(function (BiometryErrorType) {\n BiometryErrorType[BiometryErrorType[\"appCancel\"] = 0] = \"appCancel\";\n BiometryErrorType[BiometryErrorType[\"authenticationFailed\"] = 1] = \"authenticationFailed\";\n BiometryErrorType[BiometryErrorType[\"invalidContext\"] = 2] = \"invalidContext\";\n BiometryErrorType[BiometryErrorType[\"notInteractive\"] = 3] = \"notInteractive\";\n BiometryErrorType[BiometryErrorType[\"passcodeNotSet\"] = 4] = \"passcodeNotSet\";\n BiometryErrorType[BiometryErrorType[\"systemCancel\"] = 5] = \"systemCancel\";\n BiometryErrorType[BiometryErrorType[\"userCancel\"] = 6] = \"userCancel\";\n BiometryErrorType[BiometryErrorType[\"userFallback\"] = 7] = \"userFallback\";\n BiometryErrorType[BiometryErrorType[\"biometryLockout\"] = 8] = \"biometryLockout\";\n BiometryErrorType[BiometryErrorType[\"biometryNotAvailable\"] = 9] = \"biometryNotAvailable\";\n BiometryErrorType[BiometryErrorType[\"biometryNotEnrolled\"] = 10] = \"biometryNotEnrolled\";\n BiometryErrorType[BiometryErrorType[\"noDeviceCredential\"] = 11] = \"noDeviceCredential\";\n})(BiometryErrorType || (BiometryErrorType = {}));\nexport class BiometryError {\n constructor(message, code) {\n this.message = message;\n this.code = BiometryErrorType[code];\n }\n}\nexport const kPluginName = 'BiometricAuth';\n//# sourceMappingURL=definitions.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { native } from '@aparajita/capacitor-native-decorator';\nimport { App } from '@capacitor/app';\nimport { WebPlugin } from '@capacitor/core';\nimport { BiometryError, BiometryErrorType, BiometryType, kPluginName } from './definitions';\nconst kBiometryTypeNameMap = {\n [BiometryType.none]: '',\n [BiometryType.touchId]: 'Touch ID',\n [BiometryType.faceId]: 'Face ID',\n [BiometryType.fingerprintAuthentication]: 'Fingerprint Authentication',\n [BiometryType.faceAuthentication]: 'Face Authentication',\n [BiometryType.irisAuthentication]: 'Iris Authentication'\n};\nexport class BiometricAuth extends WebPlugin {\n constructor() {\n super(...arguments);\n this.biometryType = BiometryType.none;\n }\n getRegisteredPluginName() {\n return kPluginName;\n }\n setBiometryType(type) {\n if (typeof type === 'undefined') {\n return;\n }\n if (typeof type === 'string') {\n // eslint-disable-next-line no-prototype-builtins\n if (BiometryType.hasOwnProperty(type)) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n this.biometryType = BiometryType[type];\n }\n }\n else {\n this.biometryType = type;\n }\n }\n async checkBiometry() {\n return Promise.resolve({\n isAvailable: this.biometryType !== BiometryType.none,\n biometryType: this.biometryType,\n reason: ''\n });\n }\n async authenticate(options) {\n return this.checkBiometry().then(({ isAvailable, biometryType }) => {\n if (isAvailable) {\n if (\n // eslint-disable-next-line no-alert\n confirm((options === null || options === void 0 ? void 0 : options.reason) ||\n `Authenticate with ${kBiometryTypeNameMap[biometryType]}?`)) {\n return;\n }\n throw new BiometryError('User cancelled', BiometryErrorType.userCancel);\n }\n throw new BiometryError('Biometry not available', BiometryErrorType.biometryNotAvailable);\n });\n }\n addResumeListener(listener) {\n return App.addListener('appStateChange', ({ isActive }) => {\n if (isActive) {\n this.checkBiometry()\n .then((info) => {\n listener(info);\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n });\n }\n}\n__decorate([\n native()\n], BiometricAuth.prototype, \"checkBiometry\", null);\n__decorate([\n native()\n], BiometricAuth.prototype, \"authenticate\", null);\n/**\n * Return a human-readable name for a BiometryType.\n *\n * @param {BiometryType} type\n * @returns {string}\n */\nexport function getBiometryName(type) {\n return kBiometryTypeNameMap[type] || '';\n}\n//# sourceMappingURL=web.js.map","import { registerPlugin } from '@capacitor/core';\nimport { kPluginName } from './definitions';\nimport { BiometricAuth } from './web';\n// Because we are using @aparajita/capacitor-native-decorator,\n// we have one version of the TS code to rule them all, and there\n// is no need to lazy load. 😁\nconst plugin = new BiometricAuth();\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst biometricAuth = registerPlugin(kPluginName, {\n web: plugin,\n ios: plugin,\n android: plugin\n});\nexport * from './definitions';\nexport { biometricAuth as BiometricAuth };\nexport { getBiometryName } from './web';\n//# sourceMappingURL=index.js.map"],"names":["BiometryType","BiometryErrorType","this","WebPlugin","App","native","registerPlugin"],"mappings":"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"}
|
package/dist/plugin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["esm/definitions.js","esm/web.js","esm/index.js"],"sourcesContent":["export var BiometryType;\n(function (BiometryType) {\n /**\n * No biometry is available\n */\n BiometryType[BiometryType[\"none\"] = 0] = \"none\";\n /**\n * iOS Touch ID is available\n */\n BiometryType[BiometryType[\"touchId\"] = 1] = \"touchId\";\n /**\n * iOS Face ID is available\n */\n BiometryType[BiometryType[\"faceId\"] = 2] = \"faceId\";\n /**\n * Android fingerprint authentication is available\n */\n BiometryType[BiometryType[\"fingerprintAuthentication\"] = 3] = \"fingerprintAuthentication\";\n /**\n * Android face authentication is available\n */\n BiometryType[BiometryType[\"faceAuthentication\"] = 4] = \"faceAuthentication\";\n /**\n * Android iris authentication is available\n */\n BiometryType[BiometryType[\"irisAuthentication\"] = 5] = \"irisAuthentication\";\n})(BiometryType || (BiometryType = {}));\n/**\n * If the `authenticate()` method throws an exception, the error object\n * contains a .code property which will contain one of these strings,\n * indicating what the error was.\n *\n * See https://developer.apple.com/documentation/localauthentication/laerror\n * for a description of each error code.\n */\nexport var BiometryErrorType;\n(function (BiometryErrorType) {\n BiometryErrorType[BiometryErrorType[\"appCancel\"] = 0] = \"appCancel\";\n BiometryErrorType[BiometryErrorType[\"authenticationFailed\"] = 1] = \"authenticationFailed\";\n BiometryErrorType[BiometryErrorType[\"invalidContext\"] = 2] = \"invalidContext\";\n BiometryErrorType[BiometryErrorType[\"notInteractive\"] = 3] = \"notInteractive\";\n BiometryErrorType[BiometryErrorType[\"passcodeNotSet\"] = 4] = \"passcodeNotSet\";\n BiometryErrorType[BiometryErrorType[\"systemCancel\"] = 5] = \"systemCancel\";\n BiometryErrorType[BiometryErrorType[\"userCancel\"] = 6] = \"userCancel\";\n BiometryErrorType[BiometryErrorType[\"userFallback\"] = 7] = \"userFallback\";\n BiometryErrorType[BiometryErrorType[\"biometryLockout\"] = 8] = \"biometryLockout\";\n BiometryErrorType[BiometryErrorType[\"biometryNotAvailable\"] = 9] = \"biometryNotAvailable\";\n BiometryErrorType[BiometryErrorType[\"biometryNotEnrolled\"] = 10] = \"biometryNotEnrolled\";\n BiometryErrorType[BiometryErrorType[\"noDeviceCredential\"] = 11] = \"noDeviceCredential\";\n})(BiometryErrorType || (BiometryErrorType = {}));\nexport class BiometryError {\n constructor(message, code) {\n this.message = message;\n this.code = BiometryErrorType[code];\n }\n}\nexport const kPluginName = 'BiometricAuth';\n//# sourceMappingURL=definitions.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { native } from '@aparajita/capacitor-native-decorator';\nimport { App } from '@capacitor/app';\nimport { WebPlugin } from '@capacitor/core';\nimport { BiometryError, BiometryErrorType, BiometryType, kPluginName } from './definitions';\nconst kBiometryTypeNameMap = {\n [BiometryType.none]: '',\n [BiometryType.touchId]: 'Touch ID',\n [BiometryType.faceId]: 'Face ID',\n [BiometryType.fingerprintAuthentication]: 'Fingerprint Authentication',\n [BiometryType.faceAuthentication]: 'Face Authentication',\n [BiometryType.irisAuthentication]: 'Iris Authentication'\n};\nexport class BiometricAuth extends WebPlugin {\n constructor() {\n super(...arguments);\n this.biometryType = BiometryType.none;\n }\n getRegisteredPluginName() {\n return kPluginName;\n }\n setBiometryType(type) {\n if (typeof type === 'undefined') {\n return;\n }\n if (typeof type === 'string') {\n // eslint-disable-next-line no-prototype-builtins\n if (BiometryType.hasOwnProperty(type)) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n this.biometryType = BiometryType[type];\n }\n }\n else {\n this.biometryType = type;\n }\n }\n async checkBiometry() {\n return Promise.resolve({\n isAvailable: this.biometryType !== BiometryType.none,\n biometryType: this.biometryType,\n reason: ''\n });\n }\n async authenticate(options) {\n return this.checkBiometry().then(({ isAvailable, biometryType }) => {\n if (isAvailable) {\n if (\n // eslint-disable-next-line no-alert\n confirm((options === null || options === void 0 ? void 0 : options.reason) ||\n `Authenticate with ${kBiometryTypeNameMap[biometryType]}?`)) {\n return;\n }\n throw new BiometryError('User cancelled', BiometryErrorType.userCancel);\n }\n throw new BiometryError('Biometry not available', BiometryErrorType.biometryNotAvailable);\n });\n }\n addResumeListener(listener) {\n return App.addListener('appStateChange', ({ isActive }) => {\n if (isActive) {\n this.checkBiometry()\n .then((info) => {\n listener(info);\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n });\n }\n}\n__decorate([\n native()\n], BiometricAuth.prototype, \"checkBiometry\", null);\n__decorate([\n native()\n], BiometricAuth.prototype, \"authenticate\", null);\n/**\n * Return a human-readable name for a BiometryType.\n *\n * @param {BiometryType} type\n * @returns {string}\n */\nexport function getBiometryName(type) {\n return kBiometryTypeNameMap[type] || '';\n}\n//# sourceMappingURL=web.js.map","import { registerPlugin } from '@capacitor/core';\nimport { kPluginName } from './definitions';\nimport { BiometricAuth } from './web';\n// Because we are using @aparajita/capacitor-native-decorator,\n// we have one version of the TS code to rule them all, and there\n// is no need to lazy load. 😁\nconst plugin = new BiometricAuth();\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst biometricAuth = registerPlugin(kPluginName, {\n web: plugin,\n ios: plugin,\n android: plugin\n});\nexport * from './definitions';\nexport { biometricAuth as BiometricAuth };\nexport { getBiometryName } from './web';\n//# sourceMappingURL=index.js.map"],"names":["BiometryType","BiometryErrorType","this","WebPlugin","App","native","registerPlugin"],"mappings":"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"}
|