Installations
npm install jslib-html5-camera-photo
Score
94.3
Supply Chain
99.1
Quality
76.2
Maintenance
100
Vulnerability
100
License
Releases
Unable to fetch releases
Developer
Developer Guide
Module System
CommonJS
Min. Node Version
Typescript Support
No
Node Version
NPM Version
Statistics
133 Stars
151 Commits
43 Forks
4 Watching
21 Branches
1 Contributors
Updated on 26 Nov 2024
Bundle Size
10.07 kB
Minified
3.13 kB
Minified + Gzipped
Languages
JavaScript (93.06%)
HTML (6.66%)
CSS (0.28%)
Total Downloads
Cumulative downloads
Total Downloads
4,115,709
Last day
-18.1%
3,658
Compared to previous day
Last week
-2.8%
19,807
Compared to previous week
Last month
1.9%
85,325
Compared to previous month
Last year
9%
1,184,244
Compared to previous year
Daily Downloads
Weekly Downloads
Monthly Downloads
Yearly Downloads
Dev Dependencies
48
jslib-html5-camera-photo
The first objective of this package comes from the need to have a js library that can help me to capture picture from mobile or desktop camera through the browser with the HTML5 video and canvas elements. So instead of using the native navigator.mediaDevices.getUserMedia()
and manage the stream
and the constraints
, i need an abstraction it into a small lib that can switch between camera and get the desired resolution.
Another js camera ? Yes! I found webcamjs and jpeg_camera but i need to switch easily from camera environment
and user
. You need to build the constraint for getUserMedia()... Another need is to have a sizeFactor
instead of a fixing 'width' and 'height' that can not fit with the ratio of the resolution that camera can pick.
Features of the library.
- Choose between
facing mode
ordeviceId
camera, fall back to the default camera. - Set
ideal resolution
, fall back to the default resolution. - Get the
maximum resolution
of the camera, fall back to the default resolution. - Choose dataURI
image format
type betweenjpg
orpng
. - If image format is
jpg
, choose thecompression value
is the between [0, 1]. - Choose dataURI
image mirror
if you want to get an mirror dataURI of the camera.
Simple Live Demo
https://mabelanger.github.io/jslib-html5-camera-photo/
supported browsers (getUserMedia)
https://caniuse.com/#search=getUserMedia ...(as April 2018)
Available camera facingModes
FACING_MODES [] | Description |
---|---|
USER | The source is facing toward the user (a self-view camera). |
ENVIRONMENT | The source is facing away from the user (viewing the environment). |
Below is an illustration of the video facing modes in relation to the user.
src : https://www.w3.org/TR/mediacapture-streams/#dom-videofacingmodeenum
Getting started
You can use the library with vanilla JavaScript, React, Jquery, Angular...
Installation
1npm install --save jslib-html5-camera-photo
1yarn add jslib-html5-camera-photo
Usage
Constructor
1import CameraPhoto, { FACING_MODES, IMAGE_TYPES } from 'jslib-html5-camera-photo'; 2 3// get your video element with his corresponding id from the html 4let videoElement = document.getElementById('videoId'); 5 6// pass the video element to the constructor. 7let cameraPhoto = new CameraPhoto(videoElement);
parameters of startCamera
1cameraPhoto.startCamera(cameraDevice, resolution)
parameters | Description |
---|---|
cameraDevice | Is the string of the camera facingMode or deviceId |
resolution | Is the object resolution ex:. { width: 640, height: 480 } |
Start the default mode (facing Mode & resolution)
If you do not specify any prefer resolution and facing mode, the default is used. The function return a promise. If the promises success it will give you the stream if you want to use it. If it fail, it will give you the error.
1// default camera and resolution 2cameraPhoto.startCamera() 3 .then((stream)=>{/* ... */}) 4 .catch((error)=>{/* ... */});
Start with ideal facing Mode & default resolution
1// environment (camera point to environment) 2cameraPhoto.startCamera(FACING_MODES.ENVIRONMENT, {}) 3 .then((stream)=>{/* ... */}) 4 .catch((error)=>{/* ... */}); 5 6// OR user (camera point to the user) 7cameraPhoto.startCamera(FACING_MODES.USER, {}) 8 .then((stream)=>{/* ... */}) 9 .catch((error)=>{/* ... */});
Start with a user-selected deviceId & default resolution
Instead of facing mode, you can specify the deviceId (camera) that you want to use. To know the device id you can get a list of them using see Enumerate the available cameras, so you can start the camera with the deviceId
instead of facing mode, e.g.
1// OR specify the deviceId (use a specific camera) 2const deviceId = 'the_string_of_device_id'; 3cameraPhoto.startCamera(deviceId, {}) 4 .then((stream)=>{/* ... */}) 5 .catch((error)=>{/* ... */});
Start with ideal (facing Mode & resolution)
1// example of ideal resolution 640 x 480 2cameraPhoto.startCamera(facingMode, {width: 640, height: 480}) 3 .then((stream)=>{/* ... */}) 4 .catch((error)=>{/* ... */});
Start with the maximum resolution
It will try the range of width [3840, 2560, 1920, 1280, 1080, 1024, 900, 800, 640, default]
px to take the maximum width of 3840
px if it can't, 2560
px and so on ... until the fall back of the default value of the camera. The facingMode is optional.
1// It will try the best to get the maximum resolution with the specified facingMode 2cameraPhoto.startCameraMaxResolution(cameraDevice) 3 .then((stream)=>{/* ... */}) 4 .catch((error)=>{/* ... */});
getDataUri()
Function that return the dataUri
of the current frame of the camera.
To use that function build the configuration object with the corresponding properties. To use the default value, just ommit the parameter:
Parameter (object config)
-
sizeFactor (Number): Used to get a desired resolution. Example, a sizeFactor of
1
get the same resolution of the camera while sizeFactor of0.5
get the half resolution of the camera. The sizeFactor can be between range of]0, 1]
and the default value is1
. -
imageType (String): Used to get the desired image type between
jpg
orpng
. to specify the imageType use the constant IMAGE_TYPES, for example to specify jpg format use IMAGE_TYPES.JPG. The default imageType ispng
. -
imageCompression (Number): Used to get the desired compression when
jpg
is selected. choose a compression between[0, 1]
, 1 is maximum, 0 is minimum. The default value imageCompression is0.92
. -
isImageMirror (Boolean): Used to get an image mirror when is set to
true
, the result of thedataUri
is the mirror of the actual camera data. Many software that use camera mirror like hangout etc... Please note if you want to enable this option, for consistency with the camera video, you need to use csstransform: rotateY(180deg)
to the <video> tag to mirror the stream, because the stream is not mirrored. It's only apply to the canvas dataUri. The default value isfalse
(no mirror).
Available image types
IMAGE_TYPES [] | Description |
---|---|
JPG | set image image/jpeg to the data URI |
PNG | set image image/png to the data URI (the default value) |
1// Use all the default value 2const config = {}; 3let dataUri = cameraPhoto.getDataUri(config); 4 5// OR 6 7// Specify sizeFactor, imageType, imageCompression, isImageMirror 8const config = { 9 sizeFactor : 1; 10 imageType : IMAGE_TYPES.JPG 11 imageCompression : .95; 12 isImageMirror : false; 13} 14 15let dataUri = cameraPhoto.getDataUri(config);
Get the camera settings
the function return null if no stream exist (camera not started) or an object with the camera settings attributes of (aspectRatio, frameRate, height, width).
1let cameraSettigs = cameraPhoto.getCameraSettings(); 2if (cameraSettigs) { 3 let {aspectRatio, frameRate, height, width} = cameraSettigs; 4 let settingsStr = 5 `aspectRatio:${aspectRatio} ` + 6 `frameRate: ${frameRate} ` + 7 `height: ${height} ` + 8 `width: ${width}`; 9 console.log(settingsStr); 10}
Enumerate the available cameras
enumerateCameras()
Return a Promise that receives an array of MediaDeviceInfo ie:. {kind, label, deviceId}
when the promise is fulfilled. Each object in the array describes one of the available camera (only device-types for which permission has been granted are "available"). The order is significant - the default capture devices will be listed first. If the camera is open, it will only return the promise. If the camera is close, it make sure that camera is granted before returning the promise ie:. do a start/stop cycle of the camera that goes on for 20 ms.
1cameraPhoto.enumerateCameras() 2 .then((cameras)=>{ 3 cameras.forEach((camera) => { 4 let {kind, label, deviceId} = camera; 5 let cameraStr = ` 6 kind: ${kind} 7 label: ${label} 8 deviceId: ${deviceId} 9 `; 10 console.log(cameraStr) 11 }); 12})
plugin - download photo
You can download photo of the dataUri that you took and pass it to downloadPhoto()
function.
1import { downloadPhoto } from 'jslib-html5-camera-photo'; 2 3let dataUri = cameraPhoto.getDataUri(config); 4downloadPhoto(dataUri, prefixFileName, number); 5// The filename will be saved as the format : 6`${prefixFileName}-${number}.jpg|png}`
the parameters of the downloadPhoto()
function
parameters | Description |
---|---|
dataUri | Is dataUri of the photo |
prefixFileName | Is the string prefix of the fileName |
number | Is the integer number prefix of the fileName with 0 padding |
Stop the camera
Function that stop the camera. If it success, no value is returned. It can fail if they is no camera to stop because the camera has already been stopped or never started. It will give a parameter of Error('no stream to stop!')
. Note that each time we start the camera, it internally using this stop function to be able to apply new constraints.
1// It stop the camera 2cameraPhoto.stopCamera() 3 .then(()=>{/* ... */}) 4 .catch((error)=>{/* ... */});
Full example vanilla Js & HTML
HTML
1<!-- needed to by the camera stream --> 2<video id="videoId" autoplay="true"></video> 3 4<!-- needed if you want to display the image when you take a photo --> 5<img alt="imgId" id="imgId"> 6 7<!--buttons to trigger the actions --> 8<button id="takePhotoButtonId">takePhoto</button> 9<button id="stopCameraButtonId">stopCamera</button>
JavaScript
1import CameraPhoto, { FACING_MODES } from 'jslib-html5-camera-photo'; 2 3// get video and image elements from the html 4let videoElement = document.getElementById('videoId'); 5let imgElement = document.getElementById('imgId'); 6 7// get buttons elements from the html 8let takePhotoButtonElement = document.getElementById('takePhotoButtonId'); 9let stopCameraButtonElement = document.getElementById('stopCameraButtonId'); 10 11// instantiate CameraPhoto with the videoElement 12let cameraPhoto = new CameraPhoto(videoElement); 13 14/* 15 * Start the camera with ideal environment facingMode 16 * if the environment facingMode is not available, it will fallback 17 * to the default camera available. 18 */ 19cameraPhoto.startCamera(FACING_MODES.ENVIRONMENT) 20 .then(() => { 21 console.log('Camera started !'); 22 }) 23 .catch((error) => { 24 console.error('Camera not started!', error); 25 }); 26 27// function called by the buttons. 28function takePhoto () { 29 const config = {}; 30 let dataUri = cameraPhoto.getDataUri(config); 31 imgElement.src = dataUri; 32} 33 34function stopCamera () { 35 cameraPhoto.stopCamera() 36 .then(() => { 37 console.log('Camera stoped!'); 38 }) 39 .catch((error) => { 40 console.log('No camera to stop!:', error); 41 }); 42} 43 44// bind the buttons to the right functions. 45takePhotoButtonElement.onclick = takePhoto; 46stopCameraButtonElement.onclick = stopCamera;
Full example with React
A project with react is build with this library react-html5-camera-photo
1import React from 'react'; 2import CameraPhoto, { FACING_MODES } from 'jslib-html5-camera-photo'; 3 4class App extends React.Component { 5 constructor (props, context) { 6 super(props, context); 7 this.cameraPhoto = null; 8 this.videoRef = React.createRef(); 9 this.state = { 10 dataUri: '' 11 } 12 } 13 14 componentDidMount () { 15 // We need to instantiate CameraPhoto inside componentDidMount because we 16 // need the refs.video to get the videoElement so the component has to be 17 // mounted. 18 this.cameraPhoto = new CameraPhoto(this.videoRef.current); 19 } 20 21 startCamera (idealFacingMode, idealResolution) { 22 this.cameraPhoto.startCamera(idealFacingMode, idealResolution) 23 .then(() => { 24 console.log('camera is started !'); 25 }) 26 .catch((error) => { 27 console.error('Camera not started!', error); 28 }); 29 } 30 31 startCameraMaxResolution (idealFacingMode) { 32 this.cameraPhoto.startCameraMaxResolution(idealFacingMode) 33 .then(() => { 34 console.log('camera is started !'); 35 }) 36 .catch((error) => { 37 console.error('Camera not started!', error); 38 }); 39 } 40 41 takePhoto () { 42 const config = { 43 sizeFactor: 1 44 }; 45 46 let dataUri = this.cameraPhoto.getDataUri(config); 47 this.setState({ dataUri }); 48 } 49 50 stopCamera () { 51 this.cameraPhoto.stopCamera() 52 .then(() => { 53 console.log('Camera stoped!'); 54 }) 55 .catch((error) => { 56 console.log('No camera to stop!:', error); 57 }); 58 } 59 60 render () { 61 return ( 62 <div> 63 <button onClick={ () => { 64 let facingMode = FACING_MODES.ENVIRONMENT; 65 let idealResolution = { width: 640, height: 480 }; 66 this.startCamera(facingMode, idealResolution); 67 }}> Start environment facingMode resolution ideal 640 by 480 </button> 68 69 <button onClick={ () => { 70 let facingMode = FACING_MODES.USER; 71 this.startCamera(facingMode, {}); 72 }}> Start user facingMode resolution default </button> 73 74 <button onClick={ () => { 75 let facingMode = FACING_MODES.USER; 76 this.startCameraMaxResolution(facingMode); 77 }}> Start user facingMode resolution maximum </button> 78 79 <button onClick={ () => { 80 this.takePhoto(); 81 }}> Take photo </button> 82 83 <button onClick={ () => { 84 this.stopCamera(); 85 }}> Stop </button> 86 87 <video 88 ref={this.videoRef} 89 autoPlay="true" 90 /> 91 <img 92 alt="imgCamera" 93 src={this.state.dataUri} 94 /> 95 </div> 96 ); 97 } 98} 99 100export default App;
import the UMD module with HTML script tag
You can build the dist and then serve it with :
1$ npm run buildBrowser 2$ npm run serve:dist
Or you can copy the dist folder of the repo.
Example :
1<script src="/jslib-html5-camera-photo.min.js"></script> 2<script> 3 ... 4 var FACING_MODES = JslibHtml5CameraPhoto.FACING_MODES; 5 var cameraPhoto = new JslibHtml5CameraPhoto.default(videoElement); 6 ... 7</script
Development
I choose the env dev of create-react-app even if it is vanilla js library because it's simple to use and really efficient to develop but you don't necessarily need react to use it. If you want to fix bug or add functionalities please contribute :)
Documentations
Other interesting projects
No vulnerabilities found.
Reason
no binaries found in the repo
Reason
license file detected
Details
- Info: project has a license file: LICENSE:0
- Info: FSF or OSI recognized license: MIT License: LICENSE:0
Reason
0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Reason
Found 0/16 approved changesets -- score normalized to 0
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
security policy file not detected
Details
- Warn: no security policy file detected
- Warn: no security file to analyze
- Warn: no security file to analyze
- Warn: no security file to analyze
Reason
project is not fuzzed
Details
- Warn: no fuzzer integrations found
Reason
branch protection not enabled on development/release branches
Details
- Warn: branch protection not enabled for branch 'master'
Reason
SAST tool is not run on all commits -- score normalized to 0
Details
- Warn: 0 commits out of 26 are checked with a SAST tool
Reason
130 existing vulnerabilities detected
Details
- Warn: Project is vulnerable to: GHSA-6chw-6frg-f759
- Warn: Project is vulnerable to: GHSA-v88g-cgmw-v5xw
- Warn: Project is vulnerable to: GHSA-whgm-jr23-g3j9
- Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw
- Warn: Project is vulnerable to: GHSA-fwr7-v2mv-hh25
- Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92
- Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7
- Warn: Project is vulnerable to: GHSA-cwfw-4gq5-mrqx
- Warn: Project is vulnerable to: GHSA-g95f-p29q-9xw4
- Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg
- Warn: Project is vulnerable to: GHSA-x9w5-v3q2-3rhw
- Warn: Project is vulnerable to: GHSA-257v-vj4p-3w2h
- Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x
- Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275
- Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c
- Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq
- Warn: Project is vulnerable to: GHSA-3wcq-x3mq-6r9p
- Warn: Project is vulnerable to: GHSA-ff7x-qrg7-qggm
- Warn: Project is vulnerable to: GHSA-vh7m-p724-62c2
- Warn: Project is vulnerable to: GHSA-r9p9-mrjm-926w
- Warn: Project is vulnerable to: GHSA-434g-2637-qmqr
- Warn: Project is vulnerable to: GHSA-49q7-c7j4-3p7m
- Warn: Project is vulnerable to: GHSA-977x-g7h5-7qgw
- Warn: Project is vulnerable to: GHSA-f7q4-pwc6-w24p
- Warn: Project is vulnerable to: GHSA-fc9h-whq2-v747
- Warn: Project is vulnerable to: GHSA-4gmj-3p3h-gm8h
- Warn: Project is vulnerable to: GHSA-6h5x-7c5m-7cr7
- Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc
- Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx
- Warn: Project is vulnerable to: GHSA-74fj-2j2h-c42q
- Warn: Project is vulnerable to: GHSA-pw2r-vq6v-hr8c
- Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc
- Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp
- Warn: Project is vulnerable to: GHSA-8r6j-v8pm-fqw3
- Warn: Project is vulnerable to: MAL-2023-462
- Warn: Project is vulnerable to: GHSA-8mmm-9v2q-x3f9
- Warn: Project is vulnerable to: GHSA-pfrx-2q88-qq97
- Warn: Project is vulnerable to: GHSA-q42p-pg8m-cqh6
- Warn: Project is vulnerable to: GHSA-w457-6q6x-cgp9
- Warn: Project is vulnerable to: GHSA-62gr-4qp9-h98f
- Warn: Project is vulnerable to: GHSA-f52g-6jhx-586p
- Warn: Project is vulnerable to: GHSA-2cf5-4w76-r9qv
- Warn: Project is vulnerable to: GHSA-3cqr-58rm-57f8
- Warn: Project is vulnerable to: GHSA-g9r4-xpmj-mj65
- Warn: Project is vulnerable to: GHSA-q2c6-c6pm-g3gh
- Warn: Project is vulnerable to: GHSA-765h-qjxv-5f44
- Warn: Project is vulnerable to: GHSA-f2jv-r9rf-7988
- Warn: Project is vulnerable to: GHSA-43f8-2h32-f4cj
- Warn: Project is vulnerable to: GHSA-pfq8-rq6v-vf5m
- Warn: Project is vulnerable to: GHSA-6x33-pw7p-hmpq
- Warn: Project is vulnerable to: GHSA-c7qv-q95q-8v27
- Warn: Project is vulnerable to: GHSA-qqgx-2p2h-9c37
- Warn: Project is vulnerable to: GHSA-78xj-cgh5-2h22
- Warn: Project is vulnerable to: GHSA-2p57-rm9w-gvfp
- Warn: Project is vulnerable to: GHSA-7r28-3m3f-r2pr
- Warn: Project is vulnerable to: GHSA-r8j5-h5cx-65gg
- Warn: Project is vulnerable to: GHSA-2pr6-76vf-7546
- Warn: Project is vulnerable to: GHSA-8j8c-7jfh-h6hx
- Warn: Project is vulnerable to: GHSA-896r-f27r-55mw
- Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h
- Warn: Project is vulnerable to: GHSA-6c8f-qphg-qjgp
- Warn: Project is vulnerable to: GHSA-76p3-8jx3-jpfq
- Warn: Project is vulnerable to: GHSA-3rfm-jhwj-7488
- Warn: Project is vulnerable to: GHSA-hhq3-ff78-jv3g
- Warn: Project is vulnerable to: GHSA-jf85-cpcp-j695
- Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw
- Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9
- Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm
- Warn: Project is vulnerable to: GHSA-4xcv-9jjx-gfj3
- Warn: Project is vulnerable to: GHSA-7wpw-2hjm-89gp
- Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv
- Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3
- Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m / GHSA-xvch-5gv4-984h
- Warn: Project is vulnerable to: GHSA-fhjf-83wg-r2j9
- Warn: Project is vulnerable to: GHSA-92xj-mqp7-vmcj
- Warn: Project is vulnerable to: GHSA-wxgw-qj99-44c2
- Warn: Project is vulnerable to: GHSA-5rrq-pxf6-6jx5
- Warn: Project is vulnerable to: GHSA-8fr3-hfg3-gpgp
- Warn: Project is vulnerable to: GHSA-gf8q-jrpm-jvxq
- Warn: Project is vulnerable to: GHSA-2r2c-g63r-vccr
- Warn: Project is vulnerable to: GHSA-cfm4-qjh2-4765
- Warn: Project is vulnerable to: GHSA-x4jg-mjrx-434g
- Warn: Project is vulnerable to: GHSA-5fw9-fq32-wv5p
- Warn: Project is vulnerable to: GHSA-rp65-9cf3-cjxr
- Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9
- Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j
- Warn: Project is vulnerable to: GHSA-566m-qj78-rww5
- Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j
- Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp
- Warn: Project is vulnerable to: GHSA-5q6m-3h65-w53x
- Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6
- Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw
- Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg
- Warn: Project is vulnerable to: GHSA-h9rv-jmmf-4pgx
- Warn: Project is vulnerable to: GHSA-hxcc-f52p-wc94
- Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p
- Warn: Project is vulnerable to: GHSA-4g88-fppr-53pp
- Warn: Project is vulnerable to: GHSA-4jqc-8m5r-9rpr
- Warn: Project is vulnerable to: GHSA-g4rg-993r-mgx7
- Warn: Project is vulnerable to: GHSA-c9g6-9335-x697
- Warn: Project is vulnerable to: GHSA-vx3p-948g-6vhq
- Warn: Project is vulnerable to: GHSA-3jfq-g458-7qm9
- Warn: Project is vulnerable to: GHSA-r628-mhmh-qjhw
- Warn: Project is vulnerable to: GHSA-9r2w-394v-53qc
- Warn: Project is vulnerable to: GHSA-5955-9wpr-37jh
- Warn: Project is vulnerable to: GHSA-qq89-hq3f-393p
- Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36
- Warn: Project is vulnerable to: GHSA-jgrx-mgxx-jf9v
- Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3
- Warn: Project is vulnerable to: GHSA-7p7h-4mm5-852v
- Warn: Project is vulnerable to: GHSA-3329-pjwv-fjpg
- Warn: Project is vulnerable to: GHSA-p6j9-7xhc-rhwp
- Warn: Project is vulnerable to: GHSA-89gv-h8wf-cg8r
- Warn: Project is vulnerable to: GHSA-gcv8-gh4r-25x6
- Warn: Project is vulnerable to: GHSA-gmv4-r438-p67f
- Warn: Project is vulnerable to: GHSA-8h2f-7jc4-7m3m
- Warn: Project is vulnerable to: GHSA-3vjf-82ff-p4r3
- Warn: Project is vulnerable to: GHSA-g694-m8vq-gv9h
- Warn: Project is vulnerable to: GHSA-46c4-8wrp-j99v
- Warn: Project is vulnerable to: GHSA-9m6j-fcg5-2442
- Warn: Project is vulnerable to: GHSA-hh27-ffr2-f2jc
- Warn: Project is vulnerable to: GHSA-rqff-837h-mm52
- Warn: Project is vulnerable to: GHSA-8v38-pw62-9cw2
- Warn: Project is vulnerable to: GHSA-hgjh-723h-mx2j
- Warn: Project is vulnerable to: GHSA-jf5r-8hm2-f872
- Warn: Project is vulnerable to: GHSA-wr3j-pwj9-hqq6
- Warn: Project is vulnerable to: GHSA-cf66-xwfp-gvc4
- Warn: Project is vulnerable to: GHSA-g78m-2chm-r7qv
- Warn: Project is vulnerable to: GHSA-c4w7-xm78-47vh
- Warn: Project is vulnerable to: GHSA-p9pc-299p-vxgp
Score
1.7
/10
Last Scanned on 2024-11-18
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More