New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@nativescript-community/perms

Package Overview
Dependencies
Maintainers
14
Versions
45
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@nativescript-community/perms - npm Package Compare versions

Comparing version 2.2.2 to 2.2.3

8

CHANGELOG.md

@@ -6,2 +6,10 @@ # Change Log

## [2.2.3](https://github.com/nativescript-community/perms/compare/v2.2.2...v2.2.3) (2022-02-17)
**Note:** Version bump only for package @nativescript-community/perms
## [2.2.2](https://github.com/nativescript-community/perms/compare/v2.2.1...v2.2.2) (2022-01-10)

@@ -8,0 +16,0 @@

4

package.json
{
"name": "@nativescript-community/perms",
"version": "2.2.2",
"version": "2.2.3",
"description": "An unified permissions API for NativeScript on iOS and Android.",

@@ -35,3 +35,3 @@ "main": "./permissions",

"readmeFilename": "README.md",
"gitHead": "2a43fd40f931e451666c09af2cb1dbbf776bfc45"
"gitHead": "16b806ca168ab64c3b46fc3386dd4f561ce11db8"
}
import { CheckOptions, Permissions as PermissionsType, RequestOptions, Status } from './permissions';
export * from './permissions.common';
export declare const permissionTypes: {
readonly location: string[];
readonly camera: string;
readonly microphone: string;
readonly contacts: string;
readonly event: string;
readonly storage: string[];
readonly photo: string;
readonly callPhone: string;
readonly readSms: string;
readonly receiveSms: string;
};
export declare enum PermissionStatus {

@@ -22,7 +10,7 @@ GRANTED = "authorized",

export declare function openSettings(): Promise<void>;
export declare function getTypes(): string[];
export declare function getTypes(): PermissionsType[];
export declare function check(permission: PermissionsType, options?: CheckOptions): Promise<[Status, boolean]>;
export declare function request(permission: PermissionsType, options?: RequestOptions): Promise<[Status, boolean] | {
export declare function request(permission: PermissionsType | string[], options?: RequestOptions): Promise<[Status, boolean] | {
[permission: string]: [Status, boolean];
}>;
export declare function checkMultiple(permissions: PermissionsType[]): Promise<any>;

@@ -14,37 +14,72 @@ import { Trace } from '@nativescript/core';

const JELLY_BEAN = 18;
const LOLLIPOP = 21;
const MARSHMALLOW = 23;
const ANDROIDQ = 29;
export const permissionTypes = {
get location() {
return [android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION];
},
get camera() {
return android.Manifest.permission.CAMERA;
},
get microphone() {
return android.Manifest.permission.RECORD_AUDIO;
},
get contacts() {
return android.Manifest.permission.READ_CONTACTS;
},
get event() {
return android.Manifest.permission.READ_CALENDAR;
},
get storage() {
return [android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.READ_EXTERNAL_STORAGE];
},
get photo() {
return android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
},
get callPhone() {
return android.Manifest.permission.CALL_PHONE;
},
get readSms() {
return android.Manifest.permission.READ_SMS;
},
get receiveSms() {
return android.Manifest.permission.RECEIVE_SMS;
const ANDROIDS = 31;
const NativePermissionsTypes = ['location', 'camera', 'mediaLocation', 'microphone', 'contacts', 'event', 'storage', 'photo', 'callPhone', 'readSms', 'receiveSms', 'bluetoothScan', 'bluetoothConnect', 'bluetooth'];
function getNativePermissions(permission, options) {
switch (permission) {
case 'location': {
const result = [android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION];
if (getAndroidSDK() >= ANDROIDQ) {
const type = typeof options === 'string' ? options : options && options.type;
if (type === 'always') {
result.push(android.Manifest.permission.ACCESS_BACKGROUND_LOCATION);
}
}
return result;
}
case 'camera': {
return [android.Manifest.permission.CAMERA];
}
case 'mediaLocation': {
if (getAndroidSDK() >= ANDROIDQ) {
return [android.Manifest.permission.ACCESS_MEDIA_LOCATION];
}
break;
}
case 'microphone': {
return [android.Manifest.permission.RECORD_AUDIO];
}
case 'contacts': {
return [android.Manifest.permission.READ_CONTACTS];
}
case 'event': {
return [android.Manifest.permission.READ_CALENDAR];
}
case 'storage': {
return [android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.READ_EXTERNAL_STORAGE];
}
case 'photo': {
return [android.Manifest.permission.WRITE_EXTERNAL_STORAGE];
}
case 'callPhone': {
return [android.Manifest.permission.CALL_PHONE];
}
case 'readSms': {
return [android.Manifest.permission.READ_SMS];
}
case 'receiveSms': {
return [android.Manifest.permission.RECEIVE_SMS];
}
case 'bluetoothScan': {
if (getAndroidSDK() >= ANDROIDS) {
return [android.Manifest.permission.BLUETOOTH_SCAN];
}
break;
}
case 'bluetoothConnect': {
if (getAndroidSDK() >= ANDROIDS) {
return [android.Manifest.permission.BLUETOOTH_CONNECT];
}
break;
}
case 'bluetooth': {
if (getAndroidSDK() >= ANDROIDS) {
return [android.Manifest.permission.BLUETOOTH_ADVERTISE];
}
break;
}
}
};
return null;
}
const STORAGE_KEY = '@NSPermissions:didAskPermission:';

@@ -220,3 +255,3 @@ const setDidAskOnce = (permission) => Promise.resolve().then(() => setBoolean(STORAGE_KEY + permission, true));

const intent = new android.content.Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(android.net.Uri.parse("package:" + activity.getPackageName()));
intent.setData(android.net.Uri.parse('package:' + activity.getPackageName()));
activity.startActivityForResult(intent, 5140);

@@ -226,3 +261,3 @@ });

export function getTypes() {
return Object.keys(permissionTypes);
return NativePermissionsTypes;
}

@@ -233,7 +268,4 @@ export async function check(permission, options) {

}
const perms = permissionTypes[permission];
const perms = getNativePermissions(permission, options);
if (!perms) {
if (Trace.isEnabled()) {
CLog(CLogTypes.warning, permission, 'is not a valid permission type on Android');
}
return ['authorized', true];

@@ -263,26 +295,28 @@ }

}
let types = permissionTypes[permission];
if (!types) {
if (Trace.isEnabled()) {
CLog(CLogTypes.warning, permission, 'is not a valid permission type on Android');
let types = [];
if (Array.isArray(permission)) {
permission.forEach(s => s.startsWith('android.permission.') && types.push(s));
}
else {
if (permission.startsWith('android.permission.')) {
types.push(permission);
}
else {
types = getNativePermissions(permission, options);
}
}
if (types.length === 0) {
return Promise.resolve(['authorized', true]);
}
if (getAndroidSDK() >= ANDROIDQ) {
const type = typeof options === 'string' ? options : options && options.type;
if (permission === 'location' && type === 'always') {
if (!Array.isArray(types)) {
types = [types];
}
types.push(android.Manifest.permission.ACCESS_BACKGROUND_LOCATION);
}
}
const rationale = typeof options === 'string' ? undefined : options && options.rationale;
if (Array.isArray(types)) {
if (types.length > 1) {
return requestMultiplePermissions(types);
}
return PermissionsAndroid.request(types, rationale).then(result => {
return PermissionsAndroid.request(types[0], rationale).then(result => {
if (typeof result === 'boolean') {
return [result ? 'authorized' : 'denied', true];
}
if (Array.isArray(permission)) {
return Promise.all(permission.map(setDidAskOnce)).then(() => [result, true]);
}
return setDidAskOnce(permission).then(() => [result, true]);

@@ -289,0 +323,0 @@ });

@@ -13,5 +13,8 @@ export type Status = 'authorized' | 'denied' | 'limited' | 'restricted' | 'undetermined';

| 'bluetooth'
| 'bluetoothConnect'
| 'bluetoothScan'
| 'notification'
| 'backgroundRefresh'
| 'speechRecognition'
| 'mediaLocation'
| 'mediaLibrary'

@@ -39,6 +42,6 @@ | 'motion'

export function check(permission: Permissions, options?: CheckOptions): Promise<[Status, boolean]>;
export function check(permission: Permissions | string[], options?: CheckOptions): Promise<[Status, boolean]>;
export function request(permission: Permissions, options?: RequestOptions): Promise<[Status, boolean]>;
export function request(permission: Permissions | string[], options?: RequestOptions): Promise<[Status, boolean]>;
export function checkMultiple(permissions: Permissions[]): Promise<{ [k: string]: string }>;

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc