@untemps/user-permissions-utils 1.1.32 → 1.1.34

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 CHANGED
@@ -54,6 +54,30 @@ const init = async () => {
54
54
  }
55
55
  ```
56
56
 
57
+ `isNavigatorPermissionsSupported`:
58
+
59
+ Returns `true` if the browser supports `navigator.permissions`
60
+
61
+ ```javascript
62
+ import { isNavigatorPermissionsSupported } from '@untemps/user-permissions-utils'
63
+
64
+ if (!isNavigatorPermissionsSupported()) {
65
+ console.warn('Navigator Permissions API is not supported in this browser')
66
+ }
67
+ ```
68
+
69
+ `isNavigatorMediaDevicesSupported`:
70
+
71
+ Returns `true` if the browser supports `navigator.mediaDevices`
72
+
73
+ ```javascript
74
+ import { isNavigatorMediaDevicesSupported } from '@untemps/user-permissions-utils'
75
+
76
+ if (!isNavigatorMediaDevicesSupported()) {
77
+ console.warn('Navigator MediaDevices API is not supported in this browser')
78
+ }
79
+ ```
80
+
57
81
  ## Todos
58
82
 
59
83
  - Add permissions-based API:
package/dist/index.es.js CHANGED
@@ -18,8 +18,7 @@ var e = () => !!navigator.permissions, t = () => !!navigator.mediaDevices, n = a
18
18
  return e;
19
19
  }, i = async (r, i) => {
20
20
  if (!e() || !t()) throw new DOMException("Navigator API: permissions or Navigator API: mediaDevices not supported", "NOT_SUPPORTED_ERR");
21
- let [, a] = await Promise.all([await n(r), await navigator.mediaDevices.getUserMedia(i)]);
22
- return a;
21
+ return await n(r), navigator.mediaDevices.getUserMedia(i);
23
22
  };
24
23
  //#endregion
25
24
  export { n as getPermission, i as getUserMediaStream, t as isNavigatorMediaDevicesSupported, e as isNavigatorPermissionsSupported };
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","names":["isNavigatorPermissionsSupported","isNavigatorPermissionsSupported","isNavigatorMediaDevicesSupported","getPermission"],"sources":["../src/isNavigatorPermissionsSupported.js","../src/isNavigatorMediaDevicesSupported.js","../src/getPermission.js","../src/getUserMediaStream.js"],"sourcesContent":["/**\n * Check whether Navigator API: permissions is supported by the current browser\n * @returns {boolean}\n */\nexport default () => !!navigator.permissions\n","/**\n * Check whether Navigator API: mediaDevices is supported by the current browser\n * @returns {boolean}\n */\nexport default () => !!navigator.mediaDevices\n","import isNavigatorPermissionsSupported from './isNavigatorPermissionsSupported'\n\n/**\n * Returns a promise resolved when the permission is granted by the user\n * @param permissionName Name of the permission. @see https://w3c.github.io/permissions/#enumdef-permissionname\n * @returns {Promise}\n */\nexport default async (permissionName) => {\n\tif (!isNavigatorPermissionsSupported()) {\n\t\tthrow new DOMException('Navigator API: permissions not supported', 'NOT_SUPPORTED_ERR')\n\t}\n\n\tconst permissionStatus = await navigator.permissions.query({ name: permissionName })\n\n\tif (permissionStatus.state === 'prompt') {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst onChange = (event) => {\n\t\t\t\tpermissionStatus.removeEventListener('change', onChange)\n\t\t\t\ttry {\n\t\t\t\t\tresolve(resolveOrRejectBasedOnState(event.target.state))\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error)\n\t\t\t\t}\n\t\t\t}\n\t\t\tpermissionStatus.addEventListener('change', onChange)\n\t\t})\n\t}\n\n\treturn resolveOrRejectBasedOnState(permissionStatus.state)\n}\n\nconst resolveOrRejectBasedOnState = (state) => {\n\tif (state === 'denied') {\n\t\tthrow new DOMException('Permission denied', 'NOT_ALLOWED_ERR')\n\t}\n\treturn state\n}\n","import isNavigatorPermissionsSupported from './isNavigatorPermissionsSupported'\nimport isNavigatorMediaDevicesSupported from './isNavigatorMediaDevicesSupported'\nimport getPermission from './getPermission'\n\n/**\n * Returns a promise resolved when the permission is granted by the user and the stream is retrieved\n * @param permissionName Name of the permission. @see https://w3c.github.io/permissions/#enumdef-permissionname\n * @param mediaStreamConstraints Constraints object. @see https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamConstraints\n * @returns {Promise}\n */\nexport default async (permissionName, mediaStreamConstraints) => {\n\tif (!isNavigatorPermissionsSupported() || !isNavigatorMediaDevicesSupported()) {\n\t\tthrow new DOMException(\n\t\t\t'Navigator API: permissions or Navigator API: mediaDevices not supported',\n\t\t\t'NOT_SUPPORTED_ERR'\n\t\t)\n\t}\n\n\tconst [, stream] = await Promise.all([\n\t\tawait getPermission(permissionName),\n\t\tawait navigator.mediaDevices.getUserMedia(mediaStreamConstraints),\n\t])\n\treturn stream\n}\n"],"mappings":";AAIA,IAAA,UAAqB,CAAC,CAAC,UAAU,aCAjC,UAAqB,CAAC,CAAC,UAAU,cCGjC,IAAe,OAAO,MAAmB;CACxC,IAAI,CAACA,GAAiC,EACrC,MAAM,IAAI,aAAa,4CAA4C,oBAAoB;CAGxF,IAAM,IAAmB,MAAM,UAAU,YAAY,MAAM,EAAE,MAAM,GAAgB,CAAC;CAgBpF,OAdI,EAAiB,UAAU,WACvB,IAAI,SAAS,GAAS,MAAW;EACvC,IAAM,KAAY,MAAU;GAC3B,EAAiB,oBAAoB,UAAU,EAAS;GACxD,IAAI;IACH,EAAQ,EAA4B,EAAM,OAAO,MAAM,CAAC;YAChD,GAAO;IACf,EAAO,EAAM;;;EAGf,EAAiB,iBAAiB,UAAU,EAAS;GACpD,GAGI,EAA4B,EAAiB,MAAM;GAGrD,KAA+B,MAAU;CAC9C,IAAI,MAAU,UACb,MAAM,IAAI,aAAa,qBAAqB,kBAAkB;CAE/D,OAAO;GCzBR,IAAe,OAAO,GAAgB,MAA2B;CAChE,IAAI,CAACC,GAAiC,IAAI,CAACC,GAAkC,EAC5E,MAAM,IAAI,aACT,2EACA,oBACA;CAGF,IAAM,GAAG,KAAU,MAAM,QAAQ,IAAI,CACpC,MAAMC,EAAc,EAAe,EACnC,MAAM,UAAU,aAAa,aAAa,EAAuB,CACjE,CAAC;CACF,OAAO"}
1
+ {"version":3,"file":"index.es.js","names":["isNavigatorPermissionsSupported","isNavigatorPermissionsSupported","isNavigatorMediaDevicesSupported","getPermission"],"sources":["../src/isNavigatorPermissionsSupported.js","../src/isNavigatorMediaDevicesSupported.js","../src/getPermission.js","../src/getUserMediaStream.js"],"sourcesContent":["/**\n * Check whether Navigator API: permissions is supported by the current browser\n * @returns {boolean}\n */\nexport default () => !!navigator.permissions\n","/**\n * Check whether Navigator API: mediaDevices is supported by the current browser\n * @returns {boolean}\n */\nexport default () => !!navigator.mediaDevices\n","import isNavigatorPermissionsSupported from './isNavigatorPermissionsSupported'\n\n/**\n * Returns a promise resolved when the permission is granted by the user\n * @param permissionName Name of the permission. @see https://w3c.github.io/permissions/#enumdef-permissionname\n * @returns {Promise}\n */\nexport default async (permissionName) => {\n\tif (!isNavigatorPermissionsSupported()) {\n\t\tthrow new DOMException('Navigator API: permissions not supported', 'NOT_SUPPORTED_ERR')\n\t}\n\n\tconst permissionStatus = await navigator.permissions.query({ name: permissionName })\n\n\tif (permissionStatus.state === 'prompt') {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst onChange = (event) => {\n\t\t\t\tpermissionStatus.removeEventListener('change', onChange)\n\t\t\t\ttry {\n\t\t\t\t\tresolve(resolveOrRejectBasedOnState(event.target.state))\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error)\n\t\t\t\t}\n\t\t\t}\n\t\t\tpermissionStatus.addEventListener('change', onChange)\n\t\t})\n\t}\n\n\treturn resolveOrRejectBasedOnState(permissionStatus.state)\n}\n\nconst resolveOrRejectBasedOnState = (state) => {\n\tif (state === 'denied') {\n\t\tthrow new DOMException('Permission denied', 'NOT_ALLOWED_ERR')\n\t}\n\treturn state\n}\n","import isNavigatorPermissionsSupported from './isNavigatorPermissionsSupported'\nimport isNavigatorMediaDevicesSupported from './isNavigatorMediaDevicesSupported'\nimport getPermission from './getPermission'\n\n/**\n * Returns a promise resolved when the permission is granted by the user and the stream is retrieved\n * @param permissionName Name of the permission. @see https://w3c.github.io/permissions/#enumdef-permissionname\n * @param mediaStreamConstraints Constraints object. @see https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamConstraints\n * @returns {Promise}\n */\nexport default async (permissionName, mediaStreamConstraints) => {\n\tif (!isNavigatorPermissionsSupported() || !isNavigatorMediaDevicesSupported()) {\n\t\tthrow new DOMException(\n\t\t\t'Navigator API: permissions or Navigator API: mediaDevices not supported',\n\t\t\t'NOT_SUPPORTED_ERR'\n\t\t)\n\t}\n\n\tawait getPermission(permissionName)\n\treturn navigator.mediaDevices.getUserMedia(mediaStreamConstraints)\n}\n"],"mappings":";AAIA,IAAA,UAAqB,CAAC,CAAC,UAAU,aCAjC,UAAqB,CAAC,CAAC,UAAU,cCGjC,IAAe,OAAO,MAAmB;CACxC,IAAI,CAACA,GAAiC,EACrC,MAAM,IAAI,aAAa,4CAA4C,oBAAoB;CAGxF,IAAM,IAAmB,MAAM,UAAU,YAAY,MAAM,EAAE,MAAM,GAAgB,CAAC;CAgBpF,OAdI,EAAiB,UAAU,WACvB,IAAI,SAAS,GAAS,MAAW;EACvC,IAAM,KAAY,MAAU;GAC3B,EAAiB,oBAAoB,UAAU,EAAS;GACxD,IAAI;IACH,EAAQ,EAA4B,EAAM,OAAO,MAAM,CAAC;YAChD,GAAO;IACf,EAAO,EAAM;;;EAGf,EAAiB,iBAAiB,UAAU,EAAS;GACpD,GAGI,EAA4B,EAAiB,MAAM;GAGrD,KAA+B,MAAU;CAC9C,IAAI,MAAU,UACb,MAAM,IAAI,aAAa,qBAAqB,kBAAkB;CAE/D,OAAO;GCzBR,IAAe,OAAO,GAAgB,MAA2B;CAChE,IAAI,CAACC,GAAiC,IAAI,CAACC,GAAkC,EAC5E,MAAM,IAAI,aACT,2EACA,oBACA;CAIF,OADA,MAAMC,EAAc,EAAe,EAC5B,UAAU,aAAa,aAAa,EAAuB"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=()=>!!navigator.permissions,t=()=>!!navigator.mediaDevices,n=async t=>{if(!e())throw new DOMException(`Navigator API: permissions not supported`,`NOT_SUPPORTED_ERR`);let n=await navigator.permissions.query({name:t});return n.state===`prompt`?new Promise((e,t)=>{let i=a=>{n.removeEventListener(`change`,i);try{e(r(a.target.state))}catch(e){t(e)}};n.addEventListener(`change`,i)}):r(n.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`);let[,a]=await Promise.all([await n(r),await navigator.mediaDevices.getUserMedia(i)]);return a};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=>{if(!e())throw new DOMException(`Navigator API: permissions not supported`,`NOT_SUPPORTED_ERR`);let n=await navigator.permissions.query({name:t});return n.state===`prompt`?new Promise((e,t)=>{let i=a=>{n.removeEventListener(`change`,i);try{e(r(a.target.state))}catch(e){t(e)}};n.addEventListener(`change`,i)}):r(n.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;
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["isNavigatorPermissionsSupported","isNavigatorPermissionsSupported","isNavigatorMediaDevicesSupported","getPermission"],"sources":["../src/isNavigatorPermissionsSupported.js","../src/isNavigatorMediaDevicesSupported.js","../src/getPermission.js","../src/getUserMediaStream.js"],"sourcesContent":["/**\n * Check whether Navigator API: permissions is supported by the current browser\n * @returns {boolean}\n */\nexport default () => !!navigator.permissions\n","/**\n * Check whether Navigator API: mediaDevices is supported by the current browser\n * @returns {boolean}\n */\nexport default () => !!navigator.mediaDevices\n","import isNavigatorPermissionsSupported from './isNavigatorPermissionsSupported'\n\n/**\n * Returns a promise resolved when the permission is granted by the user\n * @param permissionName Name of the permission. @see https://w3c.github.io/permissions/#enumdef-permissionname\n * @returns {Promise}\n */\nexport default async (permissionName) => {\n\tif (!isNavigatorPermissionsSupported()) {\n\t\tthrow new DOMException('Navigator API: permissions not supported', 'NOT_SUPPORTED_ERR')\n\t}\n\n\tconst permissionStatus = await navigator.permissions.query({ name: permissionName })\n\n\tif (permissionStatus.state === 'prompt') {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst onChange = (event) => {\n\t\t\t\tpermissionStatus.removeEventListener('change', onChange)\n\t\t\t\ttry {\n\t\t\t\t\tresolve(resolveOrRejectBasedOnState(event.target.state))\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error)\n\t\t\t\t}\n\t\t\t}\n\t\t\tpermissionStatus.addEventListener('change', onChange)\n\t\t})\n\t}\n\n\treturn resolveOrRejectBasedOnState(permissionStatus.state)\n}\n\nconst resolveOrRejectBasedOnState = (state) => {\n\tif (state === 'denied') {\n\t\tthrow new DOMException('Permission denied', 'NOT_ALLOWED_ERR')\n\t}\n\treturn state\n}\n","import isNavigatorPermissionsSupported from './isNavigatorPermissionsSupported'\nimport isNavigatorMediaDevicesSupported from './isNavigatorMediaDevicesSupported'\nimport getPermission from './getPermission'\n\n/**\n * Returns a promise resolved when the permission is granted by the user and the stream is retrieved\n * @param permissionName Name of the permission. @see https://w3c.github.io/permissions/#enumdef-permissionname\n * @param mediaStreamConstraints Constraints object. @see https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamConstraints\n * @returns {Promise}\n */\nexport default async (permissionName, mediaStreamConstraints) => {\n\tif (!isNavigatorPermissionsSupported() || !isNavigatorMediaDevicesSupported()) {\n\t\tthrow new DOMException(\n\t\t\t'Navigator API: permissions or Navigator API: mediaDevices not supported',\n\t\t\t'NOT_SUPPORTED_ERR'\n\t\t)\n\t}\n\n\tconst [, stream] = await Promise.all([\n\t\tawait getPermission(permissionName),\n\t\tawait navigator.mediaDevices.getUserMedia(mediaStreamConstraints),\n\t])\n\treturn stream\n}\n"],"mappings":"mEAIA,IAAA,MAAqB,CAAC,CAAC,UAAU,YCAjC,MAAqB,CAAC,CAAC,UAAU,aCGjC,EAAe,KAAO,IAAmB,CACxC,GAAI,CAACA,GAAiC,CACrC,MAAM,IAAI,aAAa,2CAA4C,oBAAoB,CAGxF,IAAM,EAAmB,MAAM,UAAU,YAAY,MAAM,CAAE,KAAM,EAAgB,CAAC,CAgBpF,OAdI,EAAiB,QAAU,SACvB,IAAI,SAAS,EAAS,IAAW,CACvC,IAAM,EAAY,GAAU,CAC3B,EAAiB,oBAAoB,SAAU,EAAS,CACxD,GAAI,CACH,EAAQ,EAA4B,EAAM,OAAO,MAAM,CAAC,OAChD,EAAO,CACf,EAAO,EAAM,GAGf,EAAiB,iBAAiB,SAAU,EAAS,EACpD,CAGI,EAA4B,EAAiB,MAAM,EAGrD,EAA+B,GAAU,CAC9C,GAAI,IAAU,SACb,MAAM,IAAI,aAAa,oBAAqB,kBAAkB,CAE/D,OAAO,GCzBR,EAAe,MAAO,EAAgB,IAA2B,CAChE,GAAI,CAACC,GAAiC,EAAI,CAACC,GAAkC,CAC5E,MAAM,IAAI,aACT,0EACA,oBACA,CAGF,GAAM,EAAG,GAAU,MAAM,QAAQ,IAAI,CACpC,MAAMC,EAAc,EAAe,CACnC,MAAM,UAAU,aAAa,aAAa,EAAuB,CACjE,CAAC,CACF,OAAO"}
1
+ {"version":3,"file":"index.js","names":["isNavigatorPermissionsSupported","isNavigatorPermissionsSupported","isNavigatorMediaDevicesSupported","getPermission"],"sources":["../src/isNavigatorPermissionsSupported.js","../src/isNavigatorMediaDevicesSupported.js","../src/getPermission.js","../src/getUserMediaStream.js"],"sourcesContent":["/**\n * Check whether Navigator API: permissions is supported by the current browser\n * @returns {boolean}\n */\nexport default () => !!navigator.permissions\n","/**\n * Check whether Navigator API: mediaDevices is supported by the current browser\n * @returns {boolean}\n */\nexport default () => !!navigator.mediaDevices\n","import isNavigatorPermissionsSupported from './isNavigatorPermissionsSupported'\n\n/**\n * Returns a promise resolved when the permission is granted by the user\n * @param permissionName Name of the permission. @see https://w3c.github.io/permissions/#enumdef-permissionname\n * @returns {Promise}\n */\nexport default async (permissionName) => {\n\tif (!isNavigatorPermissionsSupported()) {\n\t\tthrow new DOMException('Navigator API: permissions not supported', 'NOT_SUPPORTED_ERR')\n\t}\n\n\tconst permissionStatus = await navigator.permissions.query({ name: permissionName })\n\n\tif (permissionStatus.state === 'prompt') {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst onChange = (event) => {\n\t\t\t\tpermissionStatus.removeEventListener('change', onChange)\n\t\t\t\ttry {\n\t\t\t\t\tresolve(resolveOrRejectBasedOnState(event.target.state))\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error)\n\t\t\t\t}\n\t\t\t}\n\t\t\tpermissionStatus.addEventListener('change', onChange)\n\t\t})\n\t}\n\n\treturn resolveOrRejectBasedOnState(permissionStatus.state)\n}\n\nconst resolveOrRejectBasedOnState = (state) => {\n\tif (state === 'denied') {\n\t\tthrow new DOMException('Permission denied', 'NOT_ALLOWED_ERR')\n\t}\n\treturn state\n}\n","import isNavigatorPermissionsSupported from './isNavigatorPermissionsSupported'\nimport isNavigatorMediaDevicesSupported from './isNavigatorMediaDevicesSupported'\nimport getPermission from './getPermission'\n\n/**\n * Returns a promise resolved when the permission is granted by the user and the stream is retrieved\n * @param permissionName Name of the permission. @see https://w3c.github.io/permissions/#enumdef-permissionname\n * @param mediaStreamConstraints Constraints object. @see https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamConstraints\n * @returns {Promise}\n */\nexport default async (permissionName, mediaStreamConstraints) => {\n\tif (!isNavigatorPermissionsSupported() || !isNavigatorMediaDevicesSupported()) {\n\t\tthrow new DOMException(\n\t\t\t'Navigator API: permissions or Navigator API: mediaDevices not supported',\n\t\t\t'NOT_SUPPORTED_ERR'\n\t\t)\n\t}\n\n\tawait getPermission(permissionName)\n\treturn navigator.mediaDevices.getUserMedia(mediaStreamConstraints)\n}\n"],"mappings":"mEAIA,IAAA,MAAqB,CAAC,CAAC,UAAU,YCAjC,MAAqB,CAAC,CAAC,UAAU,aCGjC,EAAe,KAAO,IAAmB,CACxC,GAAI,CAACA,GAAiC,CACrC,MAAM,IAAI,aAAa,2CAA4C,oBAAoB,CAGxF,IAAM,EAAmB,MAAM,UAAU,YAAY,MAAM,CAAE,KAAM,EAAgB,CAAC,CAgBpF,OAdI,EAAiB,QAAU,SACvB,IAAI,SAAS,EAAS,IAAW,CACvC,IAAM,EAAY,GAAU,CAC3B,EAAiB,oBAAoB,SAAU,EAAS,CACxD,GAAI,CACH,EAAQ,EAA4B,EAAM,OAAO,MAAM,CAAC,OAChD,EAAO,CACf,EAAO,EAAM,GAGf,EAAiB,iBAAiB,SAAU,EAAS,EACpD,CAGI,EAA4B,EAAiB,MAAM,EAGrD,EAA+B,GAAU,CAC9C,GAAI,IAAU,SACb,MAAM,IAAI,aAAa,oBAAqB,kBAAkB,CAE/D,OAAO,GCzBR,EAAe,MAAO,EAAgB,IAA2B,CAChE,GAAI,CAACC,GAAiC,EAAI,CAACC,GAAkC,CAC5E,MAAM,IAAI,aACT,0EACA,oBACA,CAIF,OADA,MAAMC,EAAc,EAAe,CAC5B,UAAU,aAAa,aAAa,EAAuB"}
package/dist/index.umd.js CHANGED
@@ -1,2 +1,2 @@
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=>{if(!t())throw new DOMException(`Navigator API: permissions not supported`,`NOT_SUPPORTED_ERR`);let n=await navigator.permissions.query({name:e});return n.state===`prompt`?new Promise((e,t)=>{let r=a=>{n.removeEventListener(`change`,r);try{e(i(a.target.state))}catch(e){t(e)}};n.addEventListener(`change`,r)}):i(n.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`);let[,a]=await Promise.all([await r(e),await navigator.mediaDevices.getUserMedia(i)]);return a},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=>{if(!t())throw new DOMException(`Navigator API: permissions not supported`,`NOT_SUPPORTED_ERR`);let n=await navigator.permissions.query({name:e});return n.state===`prompt`?new Promise((e,t)=>{let r=a=>{n.removeEventListener(`change`,r);try{e(i(a.target.state))}catch(e){t(e)}};n.addEventListener(`change`,r)}):i(n.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});
2
2
  //# sourceMappingURL=index.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","names":["isNavigatorPermissionsSupported","isNavigatorPermissionsSupported","isNavigatorMediaDevicesSupported","getPermission"],"sources":["../src/isNavigatorPermissionsSupported.js","../src/isNavigatorMediaDevicesSupported.js","../src/getPermission.js","../src/getUserMediaStream.js"],"sourcesContent":["/**\n * Check whether Navigator API: permissions is supported by the current browser\n * @returns {boolean}\n */\nexport default () => !!navigator.permissions\n","/**\n * Check whether Navigator API: mediaDevices is supported by the current browser\n * @returns {boolean}\n */\nexport default () => !!navigator.mediaDevices\n","import isNavigatorPermissionsSupported from './isNavigatorPermissionsSupported'\n\n/**\n * Returns a promise resolved when the permission is granted by the user\n * @param permissionName Name of the permission. @see https://w3c.github.io/permissions/#enumdef-permissionname\n * @returns {Promise}\n */\nexport default async (permissionName) => {\n\tif (!isNavigatorPermissionsSupported()) {\n\t\tthrow new DOMException('Navigator API: permissions not supported', 'NOT_SUPPORTED_ERR')\n\t}\n\n\tconst permissionStatus = await navigator.permissions.query({ name: permissionName })\n\n\tif (permissionStatus.state === 'prompt') {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst onChange = (event) => {\n\t\t\t\tpermissionStatus.removeEventListener('change', onChange)\n\t\t\t\ttry {\n\t\t\t\t\tresolve(resolveOrRejectBasedOnState(event.target.state))\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error)\n\t\t\t\t}\n\t\t\t}\n\t\t\tpermissionStatus.addEventListener('change', onChange)\n\t\t})\n\t}\n\n\treturn resolveOrRejectBasedOnState(permissionStatus.state)\n}\n\nconst resolveOrRejectBasedOnState = (state) => {\n\tif (state === 'denied') {\n\t\tthrow new DOMException('Permission denied', 'NOT_ALLOWED_ERR')\n\t}\n\treturn state\n}\n","import isNavigatorPermissionsSupported from './isNavigatorPermissionsSupported'\nimport isNavigatorMediaDevicesSupported from './isNavigatorMediaDevicesSupported'\nimport getPermission from './getPermission'\n\n/**\n * Returns a promise resolved when the permission is granted by the user and the stream is retrieved\n * @param permissionName Name of the permission. @see https://w3c.github.io/permissions/#enumdef-permissionname\n * @param mediaStreamConstraints Constraints object. @see https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamConstraints\n * @returns {Promise}\n */\nexport default async (permissionName, mediaStreamConstraints) => {\n\tif (!isNavigatorPermissionsSupported() || !isNavigatorMediaDevicesSupported()) {\n\t\tthrow new DOMException(\n\t\t\t'Navigator API: permissions or Navigator API: mediaDevices not supported',\n\t\t\t'NOT_SUPPORTED_ERR'\n\t\t)\n\t}\n\n\tconst [, stream] = await Promise.all([\n\t\tawait getPermission(permissionName),\n\t\tawait navigator.mediaDevices.getUserMedia(mediaStreamConstraints),\n\t])\n\treturn stream\n}\n"],"mappings":"4RAIA,IAAA,MAAqB,CAAC,CAAC,UAAU,YCAjC,MAAqB,CAAC,CAAC,UAAU,aCGjC,EAAe,KAAO,IAAmB,CACxC,GAAI,CAACA,GAAiC,CACrC,MAAM,IAAI,aAAa,2CAA4C,oBAAoB,CAGxF,IAAM,EAAmB,MAAM,UAAU,YAAY,MAAM,CAAE,KAAM,EAAgB,CAAC,CAgBpF,OAdI,EAAiB,QAAU,SACvB,IAAI,SAAS,EAAS,IAAW,CACvC,IAAM,EAAY,GAAU,CAC3B,EAAiB,oBAAoB,SAAU,EAAS,CACxD,GAAI,CACH,EAAQ,EAA4B,EAAM,OAAO,MAAM,CAAC,OAChD,EAAO,CACf,EAAO,EAAM,GAGf,EAAiB,iBAAiB,SAAU,EAAS,EACpD,CAGI,EAA4B,EAAiB,MAAM,EAGrD,EAA+B,GAAU,CAC9C,GAAI,IAAU,SACb,MAAM,IAAI,aAAa,oBAAqB,kBAAkB,CAE/D,OAAO,gDCzBc,EAAgB,IAA2B,CAChE,GAAI,CAACC,GAAiC,EAAI,CAACC,GAAkC,CAC5E,MAAM,IAAI,aACT,0EACA,oBACA,CAGF,GAAM,EAAG,GAAU,MAAM,QAAQ,IAAI,CACpC,MAAMC,EAAc,EAAe,CACnC,MAAM,UAAU,aAAa,aAAa,EAAuB,CACjE,CAAC,CACF,OAAO"}
1
+ {"version":3,"file":"index.umd.js","names":["isNavigatorPermissionsSupported","isNavigatorPermissionsSupported","isNavigatorMediaDevicesSupported","getPermission"],"sources":["../src/isNavigatorPermissionsSupported.js","../src/isNavigatorMediaDevicesSupported.js","../src/getPermission.js","../src/getUserMediaStream.js"],"sourcesContent":["/**\n * Check whether Navigator API: permissions is supported by the current browser\n * @returns {boolean}\n */\nexport default () => !!navigator.permissions\n","/**\n * Check whether Navigator API: mediaDevices is supported by the current browser\n * @returns {boolean}\n */\nexport default () => !!navigator.mediaDevices\n","import isNavigatorPermissionsSupported from './isNavigatorPermissionsSupported'\n\n/**\n * Returns a promise resolved when the permission is granted by the user\n * @param permissionName Name of the permission. @see https://w3c.github.io/permissions/#enumdef-permissionname\n * @returns {Promise}\n */\nexport default async (permissionName) => {\n\tif (!isNavigatorPermissionsSupported()) {\n\t\tthrow new DOMException('Navigator API: permissions not supported', 'NOT_SUPPORTED_ERR')\n\t}\n\n\tconst permissionStatus = await navigator.permissions.query({ name: permissionName })\n\n\tif (permissionStatus.state === 'prompt') {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst onChange = (event) => {\n\t\t\t\tpermissionStatus.removeEventListener('change', onChange)\n\t\t\t\ttry {\n\t\t\t\t\tresolve(resolveOrRejectBasedOnState(event.target.state))\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error)\n\t\t\t\t}\n\t\t\t}\n\t\t\tpermissionStatus.addEventListener('change', onChange)\n\t\t})\n\t}\n\n\treturn resolveOrRejectBasedOnState(permissionStatus.state)\n}\n\nconst resolveOrRejectBasedOnState = (state) => {\n\tif (state === 'denied') {\n\t\tthrow new DOMException('Permission denied', 'NOT_ALLOWED_ERR')\n\t}\n\treturn state\n}\n","import isNavigatorPermissionsSupported from './isNavigatorPermissionsSupported'\nimport isNavigatorMediaDevicesSupported from './isNavigatorMediaDevicesSupported'\nimport getPermission from './getPermission'\n\n/**\n * Returns a promise resolved when the permission is granted by the user and the stream is retrieved\n * @param permissionName Name of the permission. @see https://w3c.github.io/permissions/#enumdef-permissionname\n * @param mediaStreamConstraints Constraints object. @see https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamConstraints\n * @returns {Promise}\n */\nexport default async (permissionName, mediaStreamConstraints) => {\n\tif (!isNavigatorPermissionsSupported() || !isNavigatorMediaDevicesSupported()) {\n\t\tthrow new DOMException(\n\t\t\t'Navigator API: permissions or Navigator API: mediaDevices not supported',\n\t\t\t'NOT_SUPPORTED_ERR'\n\t\t)\n\t}\n\n\tawait getPermission(permissionName)\n\treturn navigator.mediaDevices.getUserMedia(mediaStreamConstraints)\n}\n"],"mappings":"4RAIA,IAAA,MAAqB,CAAC,CAAC,UAAU,YCAjC,MAAqB,CAAC,CAAC,UAAU,aCGjC,EAAe,KAAO,IAAmB,CACxC,GAAI,CAACA,GAAiC,CACrC,MAAM,IAAI,aAAa,2CAA4C,oBAAoB,CAGxF,IAAM,EAAmB,MAAM,UAAU,YAAY,MAAM,CAAE,KAAM,EAAgB,CAAC,CAgBpF,OAdI,EAAiB,QAAU,SACvB,IAAI,SAAS,EAAS,IAAW,CACvC,IAAM,EAAY,GAAU,CAC3B,EAAiB,oBAAoB,SAAU,EAAS,CACxD,GAAI,CACH,EAAQ,EAA4B,EAAM,OAAO,MAAM,CAAC,OAChD,EAAO,CACf,EAAO,EAAM,GAGf,EAAiB,iBAAiB,SAAU,EAAS,EACpD,CAGI,EAA4B,EAAiB,MAAM,EAGrD,EAA+B,GAAU,CAC9C,GAAI,IAAU,SACb,MAAM,IAAI,aAAa,oBAAqB,kBAAkB,CAE/D,OAAO,gDCzBc,EAAgB,IAA2B,CAChE,GAAI,CAACC,GAAiC,EAAI,CAACC,GAAkC,CAC5E,MAAM,IAAI,aACT,0EACA,oBACA,CAIF,OADA,MAAMC,EAAc,EAAe,CAC5B,UAAU,aAAa,aAAa,EAAuB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@untemps/user-permissions-utils",
3
- "version": "1.1.32",
3
+ "version": "1.1.34",
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": [
@@ -16,6 +16,13 @@
16
16
  },
17
17
  "main": "dist/index.js",
18
18
  "module": "dist/index.es.js",
19
+ "exports": {
20
+ ".": {
21
+ "import": "./dist/index.es.js",
22
+ "require": "./dist/index.js",
23
+ "default": "./dist/index.es.js"
24
+ }
25
+ },
19
26
  "files": [
20
27
  "dist"
21
28
  ],