@untemps/user-permissions-utils 1.2.4 → 1.3.0
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/README.md +26 -10
- package/dist/index.d.ts +2 -1
- package/dist/index.es.js +2 -2
- package/dist/index.js +1 -1
- package/dist/index.umd.js +1 -1
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -54,27 +54,44 @@ controller.abort()
|
|
|
54
54
|
|
|
55
55
|
`getUserMediaStream`:
|
|
56
56
|
|
|
57
|
-
Returns a promise resolved when the permission is granted and the stream is retrieved
|
|
57
|
+
Returns a promise resolved when the permission is granted and the stream is retrieved. Accepts an optional `signal` to cancel the entire operation.
|
|
58
58
|
|
|
59
59
|
```javascript
|
|
60
60
|
import { getUserMediaStream } from '@untemps/user-permissions-utils'
|
|
61
61
|
|
|
62
62
|
const init = async () => {
|
|
63
63
|
try {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
...
|
|
69
|
-
} else {
|
|
70
|
-
console.error('Stream is not available')
|
|
71
|
-
}
|
|
64
|
+
const stream = await getUserMediaStream('microphone', { audio: true })
|
|
65
|
+
const audioContext = new AudioContext()
|
|
66
|
+
const streamNode = audioContext.createMediaStreamSource(stream)
|
|
67
|
+
...
|
|
72
68
|
} catch (error) {
|
|
73
69
|
console.error(error)
|
|
74
70
|
}
|
|
75
71
|
}
|
|
76
72
|
```
|
|
77
73
|
|
|
74
|
+
To cancel a pending stream acquisition:
|
|
75
|
+
|
|
76
|
+
```javascript
|
|
77
|
+
import { getUserMediaStream } from '@untemps/user-permissions-utils'
|
|
78
|
+
|
|
79
|
+
const controller = new AbortController()
|
|
80
|
+
|
|
81
|
+
const init = async () => {
|
|
82
|
+
try {
|
|
83
|
+
const stream = await getUserMediaStream('microphone', { audio: true }, { signal: controller.signal })
|
|
84
|
+
...
|
|
85
|
+
} catch (error) {
|
|
86
|
+
if (error.name === 'AbortError') return
|
|
87
|
+
console.error(error)
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Cancel the operation at any point (permission wait or stream acquisition)
|
|
92
|
+
controller.abort()
|
|
93
|
+
```
|
|
94
|
+
|
|
78
95
|
`isNavigatorPermissionsSupported`:
|
|
79
96
|
|
|
80
97
|
Returns `true` if the browser supports `navigator.permissions`
|
|
@@ -106,4 +123,3 @@ if (!isNavigatorMediaDevicesSupported()) {
|
|
|
106
123
|
- geolocation
|
|
107
124
|
- notification
|
|
108
125
|
- ...
|
|
109
|
-
- Add commitlint to ensure commit logs are valid
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,8 @@ export declare function getPermission(
|
|
|
4
4
|
): Promise<'granted'>
|
|
5
5
|
export declare function getUserMediaStream(
|
|
6
6
|
permissionName: PermissionName,
|
|
7
|
-
constraints: MediaStreamConstraints
|
|
7
|
+
constraints: MediaStreamConstraints,
|
|
8
|
+
options?: { signal?: AbortSignal }
|
|
8
9
|
): Promise<MediaStream>
|
|
9
10
|
export declare function isNavigatorPermissionsSupported(): boolean
|
|
10
11
|
export declare function isNavigatorMediaDevicesSupported(): boolean
|
package/dist/index.es.js
CHANGED
|
@@ -20,9 +20,9 @@ var e = () => !!navigator.permissions, t = () => !!navigator.mediaDevices, n = a
|
|
|
20
20
|
}, r = (e) => {
|
|
21
21
|
if (e === "denied") throw new DOMException("Permission denied", "NOT_ALLOWED_ERR");
|
|
22
22
|
return e;
|
|
23
|
-
}, i = async (r, i) => {
|
|
23
|
+
}, i = async (r, i, { signal: a } = {}) => {
|
|
24
24
|
if (!e() || !t()) throw new DOMException("Navigator API: permissions or Navigator API: mediaDevices not supported", "NOT_SUPPORTED_ERR");
|
|
25
|
-
return await n(r), navigator.mediaDevices.getUserMedia(i);
|
|
25
|
+
return await n(r, { signal: a }), a?.throwIfAborted(), navigator.mediaDevices.getUserMedia(i);
|
|
26
26
|
};
|
|
27
27
|
//#endregion
|
|
28
28
|
export { n as getPermission, i as getUserMediaStream, t as isNavigatorMediaDevicesSupported, e as isNavigatorPermissionsSupported };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=()=>!!navigator.permissions,t=()=>!!navigator.mediaDevices,n=async(t,{signal:n}={})=>{if(!e())throw new DOMException(`Navigator API: permissions not supported`,`NOT_SUPPORTED_ERR`);n?.throwIfAborted();let i=await navigator.permissions.query({name:t});return i.state===`prompt`?new Promise((e,t)=>{n?.throwIfAborted();let a=s=>{i.removeEventListener(`change`,a),n?.removeEventListener(`abort`,o);try{e(r(s.target.state))}catch(e){t(e)}},o=()=>{i.removeEventListener(`change`,a),t(n.reason)};i.addEventListener(`change`,a),n?.addEventListener(`abort`,o,{once:!0})}):r(i.state)},r=e=>{if(e===`denied`)throw new DOMException(`Permission denied`,`NOT_ALLOWED_ERR`);return e},i=async(r,i)=>{if(!e()||!t())throw new DOMException(`Navigator API: permissions or Navigator API: mediaDevices not supported`,`NOT_SUPPORTED_ERR`);return await n(r),navigator.mediaDevices.getUserMedia(i)};exports.getPermission=n,exports.getUserMediaStream=i,exports.isNavigatorMediaDevicesSupported=t,exports.isNavigatorPermissionsSupported=e;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=()=>!!navigator.permissions,t=()=>!!navigator.mediaDevices,n=async(t,{signal:n}={})=>{if(!e())throw new DOMException(`Navigator API: permissions not supported`,`NOT_SUPPORTED_ERR`);n?.throwIfAborted();let i=await navigator.permissions.query({name:t});return i.state===`prompt`?new Promise((e,t)=>{n?.throwIfAborted();let a=s=>{i.removeEventListener(`change`,a),n?.removeEventListener(`abort`,o);try{e(r(s.target.state))}catch(e){t(e)}},o=()=>{i.removeEventListener(`change`,a),t(n.reason)};i.addEventListener(`change`,a),n?.addEventListener(`abort`,o,{once:!0})}):r(i.state)},r=e=>{if(e===`denied`)throw new DOMException(`Permission denied`,`NOT_ALLOWED_ERR`);return e},i=async(r,i,{signal:a}={})=>{if(!e()||!t())throw new DOMException(`Navigator API: permissions or Navigator API: mediaDevices not supported`,`NOT_SUPPORTED_ERR`);return await n(r,{signal:a}),a?.throwIfAborted(),navigator.mediaDevices.getUserMedia(i)};exports.getPermission=n,exports.getUserMediaStream=i,exports.isNavigatorMediaDevicesSupported=t,exports.isNavigatorPermissionsSupported=e;
|
package/dist/index.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UserPermissionsUtils={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=()=>!!navigator.permissions,n=()=>!!navigator.mediaDevices,r=async(e,{signal:n}={})=>{if(!t())throw new DOMException(`Navigator API: permissions not supported`,`NOT_SUPPORTED_ERR`);n?.throwIfAborted();let r=await navigator.permissions.query({name:e});return r.state===`prompt`?new Promise((e,t)=>{n?.throwIfAborted();let a=s=>{r.removeEventListener(`change`,a),n?.removeEventListener(`abort`,o);try{e(i(s.target.state))}catch(e){t(e)}},o=()=>{r.removeEventListener(`change`,a),t(n.reason)};r.addEventListener(`change`,a),n?.addEventListener(`abort`,o,{once:!0})}):i(r.state)},i=e=>{if(e===`denied`)throw new DOMException(`Permission denied`,`NOT_ALLOWED_ERR`);return e};e.getPermission=r,e.getUserMediaStream=async(e,i)=>{if(!t()||!n())throw new DOMException(`Navigator API: permissions or Navigator API: mediaDevices not supported`,`NOT_SUPPORTED_ERR`);return await r(e),navigator.mediaDevices.getUserMedia(i)},e.isNavigatorMediaDevicesSupported=n,e.isNavigatorPermissionsSupported=t});
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UserPermissionsUtils={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=()=>!!navigator.permissions,n=()=>!!navigator.mediaDevices,r=async(e,{signal:n}={})=>{if(!t())throw new DOMException(`Navigator API: permissions not supported`,`NOT_SUPPORTED_ERR`);n?.throwIfAborted();let r=await navigator.permissions.query({name:e});return r.state===`prompt`?new Promise((e,t)=>{n?.throwIfAborted();let a=s=>{r.removeEventListener(`change`,a),n?.removeEventListener(`abort`,o);try{e(i(s.target.state))}catch(e){t(e)}},o=()=>{r.removeEventListener(`change`,a),t(n.reason)};r.addEventListener(`change`,a),n?.addEventListener(`abort`,o,{once:!0})}):i(r.state)},i=e=>{if(e===`denied`)throw new DOMException(`Permission denied`,`NOT_ALLOWED_ERR`);return e};e.getPermission=r,e.getUserMediaStream=async(e,i,{signal:a}={})=>{if(!t()||!n())throw new DOMException(`Navigator API: permissions or Navigator API: mediaDevices not supported`,`NOT_SUPPORTED_ERR`);return await r(e,{signal:a}),a?.throwIfAborted(),navigator.mediaDevices.getUserMedia(i)},e.isNavigatorMediaDevicesSupported=n,e.isNavigatorPermissionsSupported=t});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@untemps/user-permissions-utils",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Collection of utility functions to manage user permissions",
|
|
5
5
|
"repository": "git@github.com:untemps/user-permissions-utils.git",
|
|
6
6
|
"keywords": [
|
|
@@ -32,6 +32,8 @@
|
|
|
32
32
|
"dist"
|
|
33
33
|
],
|
|
34
34
|
"devDependencies": {
|
|
35
|
+
"@commitlint/cli": "^21.0.1",
|
|
36
|
+
"@commitlint/config-conventional": "^21.0.1",
|
|
35
37
|
"@eslint/js": "^10.0.1",
|
|
36
38
|
"@semantic-release/changelog": "^6.0.1",
|
|
37
39
|
"@semantic-release/git": "^10.0.1",
|