Socket
Socket
Sign inDemoInstall

biri

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

biri - npm Package Compare versions

Comparing version 0.3.0 to 0.4.0

61

index.js

@@ -7,11 +7,48 @@ let _id = null

function resolvePromises(value) {
_id = value
promises.forEach(({ resolve }) => resolve(_id))
promises.length = 0
connection.removeEventListener('icecandidate', onIceCandidate)
}
function rejectPromises() {
promises.forEach(({ reject }) =>
reject('This browser is not supported, so biri cannot provide a unique, static ID for this machine.')
)
promises.length = 0
}
function onIceCandidate({ candidate }) {
if (connection.iceGatheringState == 'complete' && _id == null) {
connection = null
return rejectPromises()
}
if(!candidate) return
// For Chrome
if (candidate.foundation) {
return resolvePromises(candidate.foundation)
}
// For Safari
if (candidate.candidate) {
const matches = /^candidate:(\d+)\s/.exec(candidate.candidate)
if (!matches || matches[1].length < 2) return
return resolvePromises(matches[1])
}
}
async function startConnection() {
if (connection) return
const peerConnectionConfig = [
{ sdpSemantics: "unified-plan" },
{ sdpSemantics: "plan-b" }
]
connection = new RTCPeerConnection()
connection = new RTCPeerConnection(peerConnectionConfig[0]);
// Required for Safari, causes an error on some other browsers.
try {
const stream = document.createElement('canvas').captureStream()
stream.getTracks().forEach((track) => connection.addTrack(track))
} catch (e) {}

@@ -25,12 +62,2 @@ connection.addEventListener('icecandidate', onIceCandidate);

connection.setLocalDescription(offer)
function onIceCandidate({ candidate }) {
if (!candidate) return
if (candidate.protocol == 'udp') {
_id = candidate.foundation
promises.forEach(resolve => resolve(_id))
promises.length = 0
}
}
}

@@ -44,5 +71,5 @@

const promise = new Promise(resolve => {
const promise = new Promise((resolve, reject) => {
startConnection()
promises.push(resolve)
promises.push({ resolve, reject })
})

@@ -49,0 +76,0 @@

{
"name": "biri",
"version": "0.3.0",
"version": "0.4.0",
"description": "A unique, static client ID generator for browser applications",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -20,3 +20,12 @@ # biri

## Browser support
# Supported
* Google Chrome +80
* Safari
* Microsoft Edge
# Not supported (yet)
* Firefox
* Opera
* PWA (it won't work offline as it needs to have a network connection)
## Installing

@@ -23,0 +32,0 @@

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