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

jam-core-react

Package Overview
Dependencies
Maintainers
1
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jam-core-react - npm Package Compare versions

Comparing version 0.3.13 to 0.3.14

107

dist/index.js

@@ -306,2 +306,4 @@ // ../../jam-core-react/backend-hooks.ts

prop._deps.set(fragment, (value) => {
if (pureObj[key] === value)
return;
pureObj[key] = value;

@@ -442,7 +444,80 @@ emit(fragment, pureObj, [key]);

// ../../lib/identity-utils.js
import base64 from "compact-base64";
import ssr from "simple-signed-records-engine";
import { toBytes as toBytes2, toBase64 as toBase642 } from "fast-base64/js";
import { toUrl, fromUrl } from "fast-base64/url";
// ../../lib/watsign-records.js
import { sign, verify } from "watsign";
import { toBytes, toBase64 } from "fast-base64";
// ../../lib/util.js
function mergeObject(obj, partialObj) {
for (let key in partialObj) {
let value = partialObj[key];
if (value !== void 0) {
obj[key] = value;
}
}
}
function concatBytes(...arrays) {
if (!arrays.length)
return null;
let totalLength = arrays.reduce((acc, value) => acc + value.length, 0);
let result = new Uint8Array(totalLength);
let length = 0;
for (let array of arrays) {
result.set(array, length);
length += array.length;
}
return result;
}
// ../../lib/watsign-records.js
async function signData({ record, keypair: keypair2, validSeconds, validUntil }) {
let Certified = await toBase64(new TextEncoder().encode(JSON.stringify(record)));
let Expiration = validUntil || (validSeconds || 1800) + Math.floor(Date.now() / 1e3);
let bytesToSign = await createBytesToSign({
Version: 0,
Expiration,
KeyType: "ed25519",
Certified
});
let Signatures = [];
try {
Signatures.push(await createSignature(bytesToSign, keypair2));
} catch {
}
return {
Version: 0,
Expiration,
KeyType: "ed25519",
Certified,
Signatures
};
}
async function createSignature(bytesToSign, { publicKey, secretKey }) {
let signatureBytes = await sign(bytesToSign, secretKey);
let signature = await toBase64(signatureBytes);
return {
Identity: await toBase64(publicKey),
Payload: signature
};
}
async function createBytesToSign({ Version, Expiration, KeyType, Certified }) {
let versionBytes = new Uint8Array(4);
let expirationBytes = new Uint8Array(8);
let keyTypeBytes = new TextEncoder().encode(KeyType);
let payloadBytes = await toBytes(Certified);
for (let i = 0; i < 4; i++) {
versionBytes[i] = Version >> 8 * i & 255;
}
for (let i = 0; i < 8; i++) {
expirationBytes[i] = Expiration >> 8 * i & 255;
}
return concatBytes(versionBytes, expirationBytes, keyTypeBytes, payloadBytes);
}
// ../../lib/identity-utils.js
var MESSAGE_VALIDITY_SECONDS = 300;
function signData(identity, data) {
return ssr.sign({
async function signData2(identity, data) {
return signData({
record: data,

@@ -453,4 +528,5 @@ keypair: keypair(identity),

}
function signedToken(identity) {
return base64.encodeUrl(JSON.stringify(signData(identity, {})));
async function signedToken(identity) {
let signed = await signData2(identity, {});
return encode(new TextEncoder().encode(JSON.stringify(signed)));
}

@@ -464,4 +540,7 @@ function keypair(identity) {

function decode(base64String) {
return Uint8Array.from(base64.decodeUrl(base64String, "binary"));
return toBytes2(fromUrl(base64String));
}
function encode(binaryData) {
return toUrl(toBase642(binaryData));
}

@@ -473,14 +552,2 @@ // ../../jam-core-react/backend-hooks.ts

import { update } from "minimal-state";
// ../../lib/util.js
function mergeObject(obj, partialObj) {
for (let key in partialObj) {
let value = partialObj[key];
if (value !== void 0) {
obj[key] = value;
}
}
}
// ../../lib/GetRequest.js
function GetRequest({ path, dontFetch, fetchOnMount, getToken }) {

@@ -517,3 +584,3 @@ let ourState = "idle";

if (getToken)
headers.Authorization = `Token ${getToken()}`;
headers.Authorization = `Token ${await getToken()}`;
let res = await fetch(path, { headers }).catch(console.warn);

@@ -520,0 +587,0 @@ let { state, data, status } = getCache(path);

17

dist/jam-core-react/JamContext.d.ts

@@ -26,3 +26,3 @@ import React from 'react';

setState: {
<L extends "identities" | "roomId" | "myIdentity" | "myId" | "swarm" | "micMuted" | "handRaised" | "inRoom" | "room" | "hasRoom" | "isRoomLoading" | "iAmSpeaker" | "iAmModerator" | "otherDeviceInRoom" | "peers" | "peerState" | "myPeerState" | "reactions" | "soundMuted" | "audioFile" | "audioFileElement" | "myAudio" | "audioPlayError" | "speaking" | "isRecording" | "isSomeoneRecording" | "recordedAudio">(key: L, value: {
<L extends "identities" | "swarm" | "roomId" | "myIdentity" | "myId" | "micMuted" | "handRaised" | "inRoom" | "room" | "hasRoom" | "isRoomLoading" | "iAmSpeaker" | "iAmModerator" | "otherDeviceInRoom" | "peers" | "peerState" | "myPeerState" | "reactions" | "soundMuted" | "audioFile" | "audioFileElement" | "myAudio" | "audioPlayError" | "hasMicFailed" | "speaking" | "isRecording" | "isSomeoneRecording" | "recordedAudio">(key: L, value: {
myIdentity: import("../jam-core/state").IdentityType | null;

@@ -61,2 +61,3 @@ myId: string | null;

audioPlayError: boolean;
hasMicFailed: boolean;
speaking: Set<string>;

@@ -101,2 +102,3 @@ isRecording: boolean;

audioPlayError: boolean;
hasMicFailed: boolean;
speaking: Set<string>;

@@ -108,3 +110,3 @@ isRecording: boolean;

};
onState: (key: "identities" | "roomId" | "myIdentity" | "myId" | "swarm" | "micMuted" | "handRaised" | "inRoom" | "room" | "hasRoom" | "isRoomLoading" | "iAmSpeaker" | "iAmModerator" | "otherDeviceInRoom" | "peers" | "peerState" | "myPeerState" | "reactions" | "soundMuted" | "audioFile" | "audioFileElement" | "myAudio" | "audioPlayError" | "speaking" | "isRecording" | "isSomeoneRecording" | "recordedAudio" | undefined, listener: (...args: unknown[]) => void) => () => void;
onState: (key: "identities" | "swarm" | "roomId" | "myIdentity" | "myId" | "micMuted" | "handRaised" | "inRoom" | "room" | "hasRoom" | "isRoomLoading" | "iAmSpeaker" | "iAmModerator" | "otherDeviceInRoom" | "peers" | "peerState" | "myPeerState" | "reactions" | "soundMuted" | "audioFile" | "audioFileElement" | "myAudio" | "audioPlayError" | "hasMicFailed" | "speaking" | "isRecording" | "isSomeoneRecording" | "recordedAudio" | undefined, listener: (...args: unknown[]) => void) => () => void;
createRoom: (roomId: string, partialRoom?: Partial<import("../jam-core/state").RoomType> | undefined) => Promise<boolean>;

@@ -129,2 +131,4 @@ updateRoom: (roomId: string, room: import("../jam-core/state").RoomType) => Promise<boolean>;

downloadRecording: (fileName?: string | undefined) => Promise<void>;
startPodcastRecording: () => Promise<void>;
stopPodcastRecording: () => Promise<void>;
};

@@ -172,2 +176,3 @@ declare function JamProvider({ children, state, api, options, onState, }: {

audioPlayError: boolean;
hasMicFailed: boolean;
speaking: Set<string>;

@@ -199,3 +204,3 @@ isRecording: boolean;

setState: {
<L extends "identities" | "roomId" | "myIdentity" | "myId" | "swarm" | "micMuted" | "handRaised" | "inRoom" | "room" | "hasRoom" | "isRoomLoading" | "iAmSpeaker" | "iAmModerator" | "otherDeviceInRoom" | "peers" | "peerState" | "myPeerState" | "reactions" | "soundMuted" | "audioFile" | "audioFileElement" | "myAudio" | "audioPlayError" | "speaking" | "isRecording" | "isSomeoneRecording" | "recordedAudio">(key: L, value: {
<L extends "identities" | "swarm" | "roomId" | "myIdentity" | "myId" | "micMuted" | "handRaised" | "inRoom" | "room" | "hasRoom" | "isRoomLoading" | "iAmSpeaker" | "iAmModerator" | "otherDeviceInRoom" | "peers" | "peerState" | "myPeerState" | "reactions" | "soundMuted" | "audioFile" | "audioFileElement" | "myAudio" | "audioPlayError" | "hasMicFailed" | "speaking" | "isRecording" | "isSomeoneRecording" | "recordedAudio">(key: L, value: {
myIdentity: import("../jam-core/state").IdentityType | null;

@@ -234,2 +239,3 @@ myId: string | null;

audioPlayError: boolean;
hasMicFailed: boolean;
speaking: Set<string>;

@@ -274,2 +280,3 @@ isRecording: boolean;

audioPlayError: boolean;
hasMicFailed: boolean;
speaking: Set<string>;

@@ -281,3 +288,3 @@ isRecording: boolean;

};
onState: (key: "identities" | "roomId" | "myIdentity" | "myId" | "swarm" | "micMuted" | "handRaised" | "inRoom" | "room" | "hasRoom" | "isRoomLoading" | "iAmSpeaker" | "iAmModerator" | "otherDeviceInRoom" | "peers" | "peerState" | "myPeerState" | "reactions" | "soundMuted" | "audioFile" | "audioFileElement" | "myAudio" | "audioPlayError" | "speaking" | "isRecording" | "isSomeoneRecording" | "recordedAudio" | undefined, listener: (...args: unknown[]) => void) => () => void;
onState: (key: "identities" | "swarm" | "roomId" | "myIdentity" | "myId" | "micMuted" | "handRaised" | "inRoom" | "room" | "hasRoom" | "isRoomLoading" | "iAmSpeaker" | "iAmModerator" | "otherDeviceInRoom" | "peers" | "peerState" | "myPeerState" | "reactions" | "soundMuted" | "audioFile" | "audioFileElement" | "myAudio" | "audioPlayError" | "hasMicFailed" | "speaking" | "isRecording" | "isSomeoneRecording" | "recordedAudio" | undefined, listener: (...args: unknown[]) => void) => () => void;
createRoom: (roomId: string, partialRoom?: Partial<import("../jam-core/state").RoomType> | undefined) => Promise<boolean>;

@@ -302,2 +309,4 @@ updateRoom: (roomId: string, room: import("../jam-core/state").RoomType) => Promise<boolean>;

downloadRecording: (fileName?: string | undefined) => Promise<void>;
startPodcastRecording: () => Promise<void>;
stopPodcastRecording: () => Promise<void>;
}];

@@ -304,0 +313,0 @@ declare type T = StateType;

@@ -48,2 +48,4 @@ import { is, set, on, update, until } from 'minimal-state';

downloadRecording: (fileName?: string | undefined) => Promise<void>;
startPodcastRecording: () => Promise<void>;
stopPodcastRecording: () => Promise<void>;
};

@@ -101,6 +103,6 @@ declare function createJam({ jamConfig, initialProps, cachedRooms, debug: debug_ }?: {

setState: {
<L extends "identities" | "roomId" | "myIdentity" | "myId" | "swarm" | "micMuted" | "handRaised" | "inRoom" | "room" | "hasRoom" | "isRoomLoading" | "iAmSpeaker" | "iAmModerator" | "otherDeviceInRoom" | "peers" | "peerState" | "myPeerState" | "reactions" | "soundMuted" | "audioFile" | "audioFileElement" | "myAudio" | "audioPlayError" | "speaking" | "isRecording" | "isSomeoneRecording" | "recordedAudio">(key: L, value: StateType[L]): void;
<L extends "identities" | "swarm" | "roomId" | "myIdentity" | "myId" | "micMuted" | "handRaised" | "inRoom" | "room" | "hasRoom" | "isRoomLoading" | "iAmSpeaker" | "iAmModerator" | "otherDeviceInRoom" | "peers" | "peerState" | "myPeerState" | "reactions" | "soundMuted" | "audioFile" | "audioFileElement" | "myAudio" | "audioPlayError" | "hasMicFailed" | "speaking" | "isRecording" | "isSomeoneRecording" | "recordedAudio">(key: L, value: StateType[L]): void;
(state: Partial<StateType>): void;
};
onState: (key: "identities" | "roomId" | "myIdentity" | "myId" | "swarm" | "micMuted" | "handRaised" | "inRoom" | "room" | "hasRoom" | "isRoomLoading" | "iAmSpeaker" | "iAmModerator" | "otherDeviceInRoom" | "peers" | "peerState" | "myPeerState" | "reactions" | "soundMuted" | "audioFile" | "audioFileElement" | "myAudio" | "audioPlayError" | "speaking" | "isRecording" | "isSomeoneRecording" | "recordedAudio" | undefined, listener: (...args: unknown[]) => void) => () => void;
onState: (key: "identities" | "swarm" | "roomId" | "myIdentity" | "myId" | "micMuted" | "handRaised" | "inRoom" | "room" | "hasRoom" | "isRoomLoading" | "iAmSpeaker" | "iAmModerator" | "otherDeviceInRoom" | "peers" | "peerState" | "myPeerState" | "reactions" | "soundMuted" | "audioFile" | "audioFileElement" | "myAudio" | "audioPlayError" | "hasMicFailed" | "speaking" | "isRecording" | "isSomeoneRecording" | "recordedAudio" | undefined, listener: (...args: unknown[]) => void) => () => void;
createRoom: (roomId: string, partialRoom?: Partial<RoomType> | undefined) => Promise<boolean>;

@@ -125,2 +127,4 @@ updateRoom: (roomId: string, room: RoomType) => Promise<boolean>;

downloadRecording: (fileName?: string | undefined) => Promise<void>;
startPodcastRecording: () => Promise<void>;
stopPodcastRecording: () => Promise<void>;
}];
import { IdentityInfo, IdentityType } from './state';
export { Identity, importDefaultIdentity, importRoomIdentity, updateInfo };
declare function Identity(): ({ roomId }: {
declare function Identity({ swarm }: {
swarm: any;
}): ({ roomId }: {
roomId: any;

@@ -9,5 +11,5 @@ }) => any;

seed?: string;
}): void;
}): Promise<void>;
declare function importRoomIdentity(roomId: string, identity: Partial<IdentityType> & {
seed?: string;
}): void;
}): Promise<void>;

@@ -75,2 +75,3 @@ export { defaultProps, defaultState };

audioPlayError: boolean;
hasMicFailed: boolean;
speaking: Set<string>;

@@ -77,0 +78,0 @@ isRecording: boolean;

{
"name": "jam-core-react",
"description": "React hooks for creating custom audio spaces like Clubhouse / Twitter Spaces, made with WebRTC",
"version": "0.3.13",
"version": "0.3.14",
"main": "dist/index.js",

@@ -22,7 +22,7 @@ "license": "AGPL-3.0",

"dependencies": {
"compact-base64": "^2.1.2",
"jam-core": "0.3.13",
"fast-base64": "^0.1.6",
"jam-core": "0.3.14",
"minimal-state": "^5.6.0",
"simple-signed-records-engine": "0.1.2",
"use-minimal-state": "^3.5.0"
"use-minimal-state": "^3.5.0",
"watsign": "^0.1.6"
},

@@ -29,0 +29,0 @@ "peerDependencies": {

Sorry, the diff of this file is too big to display

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