@tiny-codes/react-easy 1.4.9 → 1.4.11
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/CHANGELOG.md +40 -0
- package/es/hooks/useUserMedia.d.ts +11 -4
- package/es/hooks/useUserMedia.js +10 -8
- package/es/hooks/useUserMedia.js.map +1 -1
- package/es/utils/AudioPlayer.d.ts +32 -25
- package/es/utils/AudioPlayer.js +103 -79
- package/es/utils/AudioPlayer.js.map +1 -1
- package/es/utils/crypto.d.ts +2 -0
- package/es/utils/crypto.js +130 -25
- package/es/utils/crypto.js.map +1 -1
- package/es/utils/stream.d.ts +17 -10
- package/es/utils/stream.js +13 -5
- package/es/utils/stream.js.map +1 -1
- package/lib/hooks/useUserMedia.d.ts +11 -4
- package/lib/hooks/useUserMedia.js +9 -7
- package/lib/hooks/useUserMedia.js.map +2 -2
- package/lib/utils/AudioPlayer.d.ts +32 -25
- package/lib/utils/AudioPlayer.js +81 -60
- package/lib/utils/AudioPlayer.js.map +2 -2
- package/lib/utils/crypto.d.ts +2 -0
- package/lib/utils/crypto.js +124 -25
- package/lib/utils/crypto.js.map +2 -2
- package/lib/utils/stream.d.ts +17 -10
- package/lib/utils/stream.js +9 -4
- package/lib/utils/stream.js.map +2 -2
- package/package.json +3 -1
package/es/utils/crypto.js
CHANGED
|
@@ -119,41 +119,50 @@ function _encryptAES() {
|
|
|
119
119
|
encrypted += cipher.final('base64');
|
|
120
120
|
return _context3.abrupt("return", "".concat(iv.toString('base64'), ":").concat(encrypted));
|
|
121
121
|
case 11:
|
|
122
|
-
|
|
122
|
+
if (!crypto.subtle) {
|
|
123
|
+
_context3.next = 37;
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
_context3.prev = 12;
|
|
123
127
|
_iv = crypto.getRandomValues(new Uint8Array(16));
|
|
124
128
|
encoder = new TextEncoder();
|
|
125
129
|
keyData = encoder.encode(key);
|
|
126
|
-
_context3.next =
|
|
130
|
+
_context3.next = 18;
|
|
127
131
|
return crypto.subtle.digest('SHA-256', keyData);
|
|
128
|
-
case
|
|
132
|
+
case 18:
|
|
129
133
|
hashBuffer = _context3.sent;
|
|
130
|
-
_context3.next =
|
|
134
|
+
_context3.next = 21;
|
|
131
135
|
return crypto.subtle.importKey('raw', hashBuffer, {
|
|
132
136
|
name: 'AES-CBC'
|
|
133
137
|
}, false, ['encrypt']);
|
|
134
|
-
case
|
|
138
|
+
case 21:
|
|
135
139
|
cryptoKey = _context3.sent;
|
|
136
140
|
textBytes = encoder.encode(text);
|
|
137
|
-
_context3.next =
|
|
141
|
+
_context3.next = 25;
|
|
138
142
|
return crypto.subtle.encrypt({
|
|
139
143
|
name: 'AES-CBC',
|
|
140
144
|
iv: _iv
|
|
141
145
|
}, cryptoKey, textBytes);
|
|
142
|
-
case
|
|
146
|
+
case 25:
|
|
143
147
|
encryptedBuffer = _context3.sent;
|
|
144
148
|
ivBase64 = btoa(String.fromCharCode.apply(String, _toConsumableArray(_iv)));
|
|
145
149
|
encryptedBase64 = btoa(String.fromCharCode.apply(String, _toConsumableArray(new Uint8Array(encryptedBuffer))));
|
|
146
150
|
return _context3.abrupt("return", "".concat(ivBase64, ":").concat(encryptedBase64));
|
|
147
|
-
case
|
|
148
|
-
_context3.prev =
|
|
149
|
-
_context3.t0 = _context3["catch"](
|
|
151
|
+
case 31:
|
|
152
|
+
_context3.prev = 31;
|
|
153
|
+
_context3.t0 = _context3["catch"](12);
|
|
150
154
|
console.error('Encryption error:', _context3.t0);
|
|
151
155
|
throw _context3.t0;
|
|
152
|
-
case
|
|
156
|
+
case 35:
|
|
157
|
+
_context3.next = 38;
|
|
158
|
+
break;
|
|
159
|
+
case 37:
|
|
160
|
+
return _context3.abrupt("return", encryptWithCryptoJS(text, key));
|
|
161
|
+
case 38:
|
|
153
162
|
case "end":
|
|
154
163
|
return _context3.stop();
|
|
155
164
|
}
|
|
156
|
-
}, _callee3, null, [[
|
|
165
|
+
}, _callee3, null, [[12, 31]]);
|
|
157
166
|
}));
|
|
158
167
|
return _encryptAES.apply(this, arguments);
|
|
159
168
|
}
|
|
@@ -190,7 +199,11 @@ function _decryptAES() {
|
|
|
190
199
|
decrypted = Buffer.concat([decrypted, decipher.final()]);
|
|
191
200
|
return _context4.abrupt("return", decrypted.toString('utf8'));
|
|
192
201
|
case 16:
|
|
193
|
-
|
|
202
|
+
if (!crypto.subtle) {
|
|
203
|
+
_context4.next = 34;
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
// Browsers with Web Crypto API, in secure contexts (HTTPS)
|
|
194
207
|
_iv2 = Uint8Array.from(atob(ivBase64), function (c) {
|
|
195
208
|
return c.charCodeAt(0);
|
|
196
209
|
});
|
|
@@ -199,39 +212,131 @@ function _decryptAES() {
|
|
|
199
212
|
});
|
|
200
213
|
encoder = new TextEncoder();
|
|
201
214
|
keyData = encoder.encode(key);
|
|
202
|
-
_context4.next =
|
|
215
|
+
_context4.next = 23;
|
|
203
216
|
return crypto.subtle.digest('SHA-256', keyData);
|
|
204
|
-
case
|
|
217
|
+
case 23:
|
|
205
218
|
hashBuffer = _context4.sent;
|
|
206
|
-
_context4.next =
|
|
219
|
+
_context4.next = 26;
|
|
207
220
|
return crypto.subtle.importKey('raw', hashBuffer, {
|
|
208
221
|
name: 'AES-CBC'
|
|
209
222
|
}, false, ['decrypt']);
|
|
210
|
-
case
|
|
223
|
+
case 26:
|
|
211
224
|
cryptoKey = _context4.sent;
|
|
212
|
-
_context4.next =
|
|
225
|
+
_context4.next = 29;
|
|
213
226
|
return crypto.subtle.decrypt({
|
|
214
227
|
name: 'AES-CBC',
|
|
215
228
|
iv: _iv2
|
|
216
229
|
}, cryptoKey, encryptedData);
|
|
217
|
-
case
|
|
230
|
+
case 29:
|
|
218
231
|
decryptedBuffer = _context4.sent;
|
|
219
232
|
decoder = new TextDecoder();
|
|
220
233
|
return _context4.abrupt("return", decoder.decode(decryptedBuffer));
|
|
221
|
-
case
|
|
222
|
-
_context4.
|
|
234
|
+
case 34:
|
|
235
|
+
return _context4.abrupt("return", decryptWithCryptoJS(encryptedText, key));
|
|
236
|
+
case 35:
|
|
237
|
+
_context4.next = 41;
|
|
223
238
|
break;
|
|
224
|
-
case
|
|
225
|
-
_context4.prev =
|
|
239
|
+
case 37:
|
|
240
|
+
_context4.prev = 37;
|
|
226
241
|
_context4.t0 = _context4["catch"](1);
|
|
227
242
|
console.error('Decryption error:', _context4.t0);
|
|
228
243
|
return _context4.abrupt("return", '');
|
|
229
|
-
case
|
|
244
|
+
case 41:
|
|
230
245
|
case "end":
|
|
231
246
|
return _context4.stop();
|
|
232
247
|
}
|
|
233
|
-
}, _callee4, null, [[1,
|
|
248
|
+
}, _callee4, null, [[1, 37]]);
|
|
234
249
|
}));
|
|
235
250
|
return _decryptAES.apply(this, arguments);
|
|
236
251
|
}
|
|
252
|
+
export function encryptWithCryptoJS(_x9, _x10) {
|
|
253
|
+
return _encryptWithCryptoJS.apply(this, arguments);
|
|
254
|
+
}
|
|
255
|
+
function _encryptWithCryptoJS() {
|
|
256
|
+
_encryptWithCryptoJS = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(text, key) {
|
|
257
|
+
var _yield$Promise$all, _yield$Promise$all2, _yield$Promise$all2$, CBC, WordArray, Pkcs7, Base64, Utf8, SHA256, encrypt, wordArray, keyArray, iv, encryptedBase64;
|
|
258
|
+
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
259
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
260
|
+
case 0:
|
|
261
|
+
_context5.next = 2;
|
|
262
|
+
return Promise.all([import('crypto-js/core.js'), import('crypto-js/pad-pkcs7.js'), import('crypto-js/enc-base64.js'), import('crypto-js/enc-utf8.js'), import('crypto-js/sha256.js'), import('crypto-js/aes.js')]);
|
|
263
|
+
case 2:
|
|
264
|
+
_yield$Promise$all = _context5.sent;
|
|
265
|
+
_yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 6);
|
|
266
|
+
_yield$Promise$all2$ = _yield$Promise$all2[0].default;
|
|
267
|
+
CBC = _yield$Promise$all2$.mode.CBC;
|
|
268
|
+
WordArray = _yield$Promise$all2$.lib.WordArray;
|
|
269
|
+
Pkcs7 = _yield$Promise$all2[1].default;
|
|
270
|
+
Base64 = _yield$Promise$all2[2].default;
|
|
271
|
+
Utf8 = _yield$Promise$all2[3].default;
|
|
272
|
+
SHA256 = _yield$Promise$all2[4].default;
|
|
273
|
+
encrypt = _yield$Promise$all2[5].default.encrypt;
|
|
274
|
+
_context5.prev = 12;
|
|
275
|
+
// Convert text and key to WordArray objects
|
|
276
|
+
wordArray = Utf8.parse(text);
|
|
277
|
+
keyArray = SHA256(key);
|
|
278
|
+
iv = WordArray.random(16);
|
|
279
|
+
encryptedBase64 = Base64.stringify(encrypt(wordArray, keyArray, {
|
|
280
|
+
iv: iv,
|
|
281
|
+
mode: CBC,
|
|
282
|
+
padding: Pkcs7
|
|
283
|
+
}).ciphertext);
|
|
284
|
+
return _context5.abrupt("return", "".concat(Base64.stringify(iv), ":").concat(encryptedBase64));
|
|
285
|
+
case 20:
|
|
286
|
+
_context5.prev = 20;
|
|
287
|
+
_context5.t0 = _context5["catch"](12);
|
|
288
|
+
console.error('Encryption error:', _context5.t0);
|
|
289
|
+
throw _context5.t0;
|
|
290
|
+
case 24:
|
|
291
|
+
case "end":
|
|
292
|
+
return _context5.stop();
|
|
293
|
+
}
|
|
294
|
+
}, _callee5, null, [[12, 20]]);
|
|
295
|
+
}));
|
|
296
|
+
return _encryptWithCryptoJS.apply(this, arguments);
|
|
297
|
+
}
|
|
298
|
+
export function decryptWithCryptoJS(_x11, _x12) {
|
|
299
|
+
return _decryptWithCryptoJS.apply(this, arguments);
|
|
300
|
+
}
|
|
301
|
+
function _decryptWithCryptoJS() {
|
|
302
|
+
_decryptWithCryptoJS = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(encryptedText, key) {
|
|
303
|
+
var _encryptedText$split3, _encryptedText$split4, ivBase64, encryptedBase64, _yield$Promise$all3, _yield$Promise$all4, CBC, Pkcs7, Base64, Utf8, SHA256, decrypt, iv, derivedKey, decrypted;
|
|
304
|
+
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
305
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
306
|
+
case 0:
|
|
307
|
+
_encryptedText$split3 = encryptedText.split(':'), _encryptedText$split4 = _slicedToArray(_encryptedText$split3, 2), ivBase64 = _encryptedText$split4[0], encryptedBase64 = _encryptedText$split4[1];
|
|
308
|
+
_context6.next = 3;
|
|
309
|
+
return Promise.all([import('crypto-js/core.js'), import('crypto-js/pad-pkcs7.js'), import('crypto-js/enc-base64.js'), import('crypto-js/enc-utf8.js'), import('crypto-js/sha256.js'), import('crypto-js/aes.js')]);
|
|
310
|
+
case 3:
|
|
311
|
+
_yield$Promise$all3 = _context6.sent;
|
|
312
|
+
_yield$Promise$all4 = _slicedToArray(_yield$Promise$all3, 6);
|
|
313
|
+
CBC = _yield$Promise$all4[0].default.mode.CBC;
|
|
314
|
+
Pkcs7 = _yield$Promise$all4[1].default;
|
|
315
|
+
Base64 = _yield$Promise$all4[2].default;
|
|
316
|
+
Utf8 = _yield$Promise$all4[3].default;
|
|
317
|
+
SHA256 = _yield$Promise$all4[4].default;
|
|
318
|
+
decrypt = _yield$Promise$all4[5].default.decrypt;
|
|
319
|
+
_context6.prev = 11;
|
|
320
|
+
// Convert base64 strings to WordArray objects
|
|
321
|
+
iv = Base64.parse(ivBase64); // Derive key using SHA-256 (matching native implementation)
|
|
322
|
+
derivedKey = SHA256(key);
|
|
323
|
+
decrypted = decrypt(encryptedBase64, derivedKey, {
|
|
324
|
+
iv: iv,
|
|
325
|
+
mode: CBC,
|
|
326
|
+
padding: Pkcs7
|
|
327
|
+
});
|
|
328
|
+
return _context6.abrupt("return", decrypted.toString(Utf8));
|
|
329
|
+
case 18:
|
|
330
|
+
_context6.prev = 18;
|
|
331
|
+
_context6.t0 = _context6["catch"](11);
|
|
332
|
+
console.error('Decryption error:', _context6.t0);
|
|
333
|
+
throw _context6.t0;
|
|
334
|
+
case 22:
|
|
335
|
+
case "end":
|
|
336
|
+
return _context6.stop();
|
|
337
|
+
}
|
|
338
|
+
}, _callee6, null, [[11, 18]]);
|
|
339
|
+
}));
|
|
340
|
+
return _decryptWithCryptoJS.apply(this, arguments);
|
|
341
|
+
}
|
|
237
342
|
//# sourceMappingURL=crypto.js.map
|
package/es/utils/crypto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","base64ToString","stringToBase64","random","randomChars","advancedEncrypt","_x","_x2","_advancedEncrypt","_callee","plainText","k1","b","_callee$","_context","encryptAES","substring","concat","advancedDecrypt","_x3","_x4","_advancedDecrypt","_callee2","encryptedText","decrypted","_decrypted$split","_decrypted$split2","_base64ToString$split","_base64ToString$split2","_callee2$","_context2","decryptAES","split","_slicedToArray","map","Number","_x5","_x6","_encryptAES","_callee3","text","isNode","_crypto","derivedKey","iv","cipher","encrypted","_iv","encoder","keyData","hashBuffer","cryptoKey","textBytes","encryptedBuffer","ivBase64","encryptedBase64","_callee3$","_context3","process","versions","node","crypto","require","createHash","update","digest","randomBytes","createCipheriv","final","toString","getRandomValues","Uint8Array","TextEncoder","encode","subtle","importKey","encrypt","btoa","String","fromCharCode","_toConsumableArray","t0","console","_x7","_x8","_decryptAES","_callee4","_encryptedText$split","_encryptedText$split2","_crypto2","decipher","_iv2","encryptedData","decryptedBuffer","decoder","_callee4$","_context4","Buffer","from","createDecipheriv","atob","charCodeAt","decrypt","TextDecoder","decode"],"sources":["../../src/utils/crypto.ts"],"sourcesContent":["import { base64ToString, stringToBase64 } from './base64';\nimport { random } from './math';\nimport { randomChars } from './string';\n\n/** Secret. No description provided */\nexport async function advancedEncrypt(plainText: string, key: string) {\n const k1 = randomChars(36);\n let e = await encryptAES(plainText, k1);\n const b = stringToBase64(k1);\n const l = b.length;\n const s = random(0, e.length);\n e = e.substring(0, s) + b + e.substring(s);\n const r = stringToBase64(`${s}-${l}`);\n const t = `${e}.${r}`;\n return encryptAES(t, key);\n}\n\n/** Secret. No description provided */\nexport async function advancedDecrypt(encryptedText: string, key: string) {\n const decrypted = await decryptAES(encryptedText, key);\n const [e, r] = decrypted.split('.');\n const [s, l] = base64ToString(r).split('-').map(Number);\n const k1 = base64ToString(e.substring(s, s + l));\n return decryptAES(e.substring(0, s) + e.substring(s + l), k1);\n}\n\n/**\n * **EN**: General AES encryption function - supports both Node.js and browser environments\n *\n * **CN**: 通用 AES 加密函数 - 同时支持 Node.js 和浏览器环境\n *\n * @param {string} text The text to be encrypted | 要加密的文本\n * @param {string} key The encryption key | 加密密钥\n *\n * @returns {Promise<string>} The encrypted text | 加密后的文本\n */\nexport async function encryptAES(text: string, key: string): Promise<string> {\n const isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n\n if (isNode) {\n // Node.js\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const crypto = require('crypto');\n const derivedKey = crypto.createHash('sha256').update(key).digest();\n const iv = crypto.randomBytes(16);\n const cipher = crypto.createCipheriv('aes-256-cbc', derivedKey, iv);\n let encrypted = cipher.update(text, 'utf8', 'base64');\n encrypted += cipher.final('base64');\n return `${iv.toString('base64')}:${encrypted}`;\n } else {\n // Browsers\n try {\n const iv = crypto.getRandomValues(new Uint8Array(16));\n const encoder = new TextEncoder();\n const keyData = encoder.encode(key);\n const hashBuffer = await crypto.subtle.digest('SHA-256', keyData);\n const cryptoKey = await crypto.subtle.importKey('raw', hashBuffer, { name: 'AES-CBC' }, false, ['encrypt']);\n const textBytes = encoder.encode(text);\n const encryptedBuffer = await crypto.subtle.encrypt({ name: 'AES-CBC', iv }, cryptoKey, textBytes);\n const ivBase64 = btoa(String.fromCharCode(...iv));\n const encryptedBase64 = btoa(String.fromCharCode(...new Uint8Array(encryptedBuffer)));\n return `${ivBase64}:${encryptedBase64}`;\n } catch (error) {\n console.error('Encryption error:', error);\n throw error;\n }\n }\n}\n\n/**\n * **EN**: General AES decryption function - supports both Node.js and browser environments\n *\n * **CN**: 通用 AES 解密函数 - 同时支持 Node.js 和浏览器环境\n *\n * @param encryptedText The encrypted text (format: iv:encryptedContent, base64 encoded)\n * @param key The decryption key\n *\n * @returns The decrypted text\n */\nexport async function decryptAES(encryptedText: string, key: string): Promise<string> {\n const isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n try {\n const [ivBase64, encryptedBase64] = encryptedText.split(':');\n if (!ivBase64 || !encryptedBase64) {\n throw new Error('Invalid encrypted format');\n }\n if (isNode) {\n // Node.js\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const crypto = require('crypto');\n const iv = Buffer.from(ivBase64, 'base64');\n const encryptedBuffer = Buffer.from(encryptedBase64, 'base64');\n const derivedKey = crypto.createHash('sha256').update(key).digest();\n const decipher = crypto.createDecipheriv('aes-256-cbc', derivedKey, iv);\n let decrypted = decipher.update(encryptedBuffer);\n decrypted = Buffer.concat([decrypted, decipher.final()]);\n return decrypted.toString('utf8');\n } else {\n // Browsers\n const iv = Uint8Array.from(atob(ivBase64), (c) => c.charCodeAt(0));\n const encryptedData = Uint8Array.from(atob(encryptedBase64), (c) => c.charCodeAt(0));\n const encoder = new TextEncoder();\n const keyData = encoder.encode(key);\n const hashBuffer = await crypto.subtle.digest('SHA-256', keyData);\n const cryptoKey = await crypto.subtle.importKey('raw', hashBuffer, { name: 'AES-CBC' }, false, ['decrypt']);\n const decryptedBuffer = await crypto.subtle.decrypt({ name: 'AES-CBC', iv }, cryptoKey, encryptedData);\n const decoder = new TextDecoder();\n return decoder.decode(decryptedBuffer);\n }\n } catch (error) {\n console.error('Decryption error:', error);\n return '';\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","base64ToString","stringToBase64","random","randomChars","advancedEncrypt","_x","_x2","_advancedEncrypt","_callee","plainText","k1","b","_callee$","_context","encryptAES","substring","concat","advancedDecrypt","_x3","_x4","_advancedDecrypt","_callee2","encryptedText","decrypted","_decrypted$split","_decrypted$split2","_base64ToString$split","_base64ToString$split2","_callee2$","_context2","decryptAES","split","_slicedToArray","map","Number","_x5","_x6","_encryptAES","_callee3","text","isNode","_crypto","derivedKey","iv","cipher","encrypted","_iv","encoder","keyData","hashBuffer","cryptoKey","textBytes","encryptedBuffer","ivBase64","encryptedBase64","_callee3$","_context3","process","versions","node","crypto","require","createHash","update","digest","randomBytes","createCipheriv","final","toString","subtle","getRandomValues","Uint8Array","TextEncoder","encode","importKey","encrypt","btoa","String","fromCharCode","_toConsumableArray","t0","console","encryptWithCryptoJS","_x7","_x8","_decryptAES","_callee4","_encryptedText$split","_encryptedText$split2","_crypto2","decipher","_iv2","encryptedData","decryptedBuffer","decoder","_callee4$","_context4","Buffer","from","createDecipheriv","atob","charCodeAt","decrypt","TextDecoder","decode","decryptWithCryptoJS","_x9","_x10","_encryptWithCryptoJS","_callee5","_yield$Promise$all","_yield$Promise$all2","_yield$Promise$all2$","CBC","WordArray","Pkcs7","Base64","Utf8","SHA256","wordArray","keyArray","_callee5$","_context5","all","default","mode","lib","parse","stringify","padding","ciphertext","_x11","_x12","_decryptWithCryptoJS","_callee6","_encryptedText$split3","_encryptedText$split4","_yield$Promise$all3","_yield$Promise$all4","_callee6$","_context6"],"sources":["../../src/utils/crypto.ts"],"sourcesContent":["import { base64ToString, stringToBase64 } from './base64';\nimport { random } from './math';\nimport { randomChars } from './string';\n\n/** Secret. No description provided */\nexport async function advancedEncrypt(plainText: string, key: string) {\n const k1 = randomChars(36);\n let e = await encryptAES(plainText, k1);\n const b = stringToBase64(k1);\n const l = b.length;\n const s = random(0, e.length);\n e = e.substring(0, s) + b + e.substring(s);\n const r = stringToBase64(`${s}-${l}`);\n const t = `${e}.${r}`;\n return encryptAES(t, key);\n}\n\n/** Secret. No description provided */\nexport async function advancedDecrypt(encryptedText: string, key: string) {\n const decrypted = await decryptAES(encryptedText, key);\n const [e, r] = decrypted.split('.');\n const [s, l] = base64ToString(r).split('-').map(Number);\n const k1 = base64ToString(e.substring(s, s + l));\n return decryptAES(e.substring(0, s) + e.substring(s + l), k1);\n}\n\n/**\n * **EN**: General AES encryption function - supports both Node.js and browser environments\n *\n * **CN**: 通用 AES 加密函数 - 同时支持 Node.js 和浏览器环境\n *\n * @param {string} text The text to be encrypted | 要加密的文本\n * @param {string} key The encryption key | 加密密钥\n *\n * @returns {Promise<string>} The encrypted text | 加密后的文本\n */\nexport async function encryptAES(text: string, key: string): Promise<string> {\n const isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n\n if (isNode) {\n // Node.js\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const crypto = require('crypto');\n const derivedKey = crypto.createHash('sha256').update(key).digest();\n const iv = crypto.randomBytes(16);\n const cipher = crypto.createCipheriv('aes-256-cbc', derivedKey, iv);\n let encrypted = cipher.update(text, 'utf8', 'base64');\n encrypted += cipher.final('base64');\n return `${iv.toString('base64')}:${encrypted}`;\n } else {\n if (crypto.subtle) {\n // Browsers\n try {\n const iv = crypto.getRandomValues(new Uint8Array(16));\n const encoder = new TextEncoder();\n const keyData = encoder.encode(key);\n const hashBuffer = await crypto.subtle.digest('SHA-256', keyData);\n const cryptoKey = await crypto.subtle.importKey('raw', hashBuffer, { name: 'AES-CBC' }, false, ['encrypt']);\n const textBytes = encoder.encode(text);\n const encryptedBuffer = await crypto.subtle.encrypt({ name: 'AES-CBC', iv }, cryptoKey, textBytes);\n const ivBase64 = btoa(String.fromCharCode(...iv));\n const encryptedBase64 = btoa(String.fromCharCode(...new Uint8Array(encryptedBuffer)));\n return `${ivBase64}:${encryptedBase64}`;\n } catch (error) {\n console.error('Encryption error:', error);\n throw error;\n }\n } else {\n // let encrypt: typeof CryptoJS.AES.encrypt;\n // try {\n // const aes = await import('crypto-js/aes');\n // encrypt = aes.encrypt;\n // } catch (error) {\n // console.error('Load \"crypto-js/aes\" error:', error);\n // throw error;\n // }\n // try {\n // return encrypt(text, key).toString();\n // } catch (error) {\n // console.error('Encryption error:', error);\n // throw error;\n // }\n return encryptWithCryptoJS(text, key);\n }\n }\n}\n\n/**\n * **EN**: General AES decryption function - supports both Node.js and browser environments\n *\n * **CN**: 通用 AES 解密函数 - 同时支持 Node.js 和浏览器环境\n *\n * @param encryptedText The encrypted text (format: iv:encryptedContent, base64 encoded)\n * @param key The decryption key\n *\n * @returns The decrypted text\n */\nexport async function decryptAES(encryptedText: string, key: string): Promise<string> {\n const isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n try {\n const [ivBase64, encryptedBase64] = encryptedText.split(':');\n if (!ivBase64 || !encryptedBase64) {\n throw new Error('Invalid encrypted format');\n }\n if (isNode) {\n // Node.js\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const crypto = require('crypto');\n const iv = Buffer.from(ivBase64, 'base64');\n const encryptedBuffer = Buffer.from(encryptedBase64, 'base64');\n const derivedKey = crypto.createHash('sha256').update(key).digest();\n const decipher = crypto.createDecipheriv('aes-256-cbc', derivedKey, iv);\n let decrypted = decipher.update(encryptedBuffer);\n decrypted = Buffer.concat([decrypted, decipher.final()]);\n return decrypted.toString('utf8');\n } else {\n if (crypto.subtle) {\n // Browsers with Web Crypto API, in secure contexts (HTTPS)\n const iv = Uint8Array.from(atob(ivBase64), (c) => c.charCodeAt(0));\n const encryptedData = Uint8Array.from(atob(encryptedBase64), (c) => c.charCodeAt(0));\n const encoder = new TextEncoder();\n const keyData = encoder.encode(key);\n const hashBuffer = await crypto.subtle.digest('SHA-256', keyData);\n const cryptoKey = await crypto.subtle.importKey('raw', hashBuffer, { name: 'AES-CBC' }, false, ['decrypt']);\n const decryptedBuffer = await crypto.subtle.decrypt({ name: 'AES-CBC', iv }, cryptoKey, encryptedData);\n const decoder = new TextDecoder();\n return decoder.decode(decryptedBuffer);\n } else {\n // Browsers without Web Crypto API, or insecure contexts (HTTP), fallback to CryptoJS\n // let decrypt: typeof CryptoJS.AES.decrypt;\n // let utf8: typeof CryptoJS.enc.Utf8;\n // try {\n // const [aes, encUtf8] = await Promise.all([import('crypto-js/aes'), import('crypto-js/enc-utf8')]);\n // decrypt = aes.decrypt;\n // utf8 = encUtf8.default;\n // } catch (error) {\n // console.error('Load \"crypto-js/aes\" error:', error);\n // throw error;\n // }\n // try {\n // const decrypted = decrypt(encryptedText, key);\n // return decrypted.toString(utf8);\n // } catch (error) {\n // console.error('Decryption error:', error);\n // throw error;\n // }\n return decryptWithCryptoJS(encryptedText, key);\n }\n }\n } catch (error) {\n console.error('Decryption error:', error);\n return '';\n }\n}\nexport async function encryptWithCryptoJS(text: string, key: string) {\n const [\n {\n default: {\n mode: { CBC },\n lib: { WordArray },\n },\n },\n { default: Pkcs7 },\n { default: Base64 },\n { default: Utf8 },\n { default: SHA256 },\n {\n default: { encrypt },\n },\n ] = await Promise.all([\n import('crypto-js/core.js'),\n import('crypto-js/pad-pkcs7.js'),\n import('crypto-js/enc-base64.js'),\n import('crypto-js/enc-utf8.js'),\n import('crypto-js/sha256.js'),\n import('crypto-js/aes.js'),\n ]);\n\n try {\n // Convert text and key to WordArray objects\n const wordArray = Utf8.parse(text);\n const keyArray = SHA256(key);\n const iv = WordArray.random(16);\n\n const encryptedBase64 = Base64.stringify(\n encrypt(wordArray, keyArray, {\n iv,\n mode: CBC,\n padding: Pkcs7,\n }).ciphertext\n );\n return `${Base64.stringify(iv)}:${encryptedBase64}`;\n } catch (error) {\n console.error('Encryption error:', error);\n throw error;\n }\n}\n\nexport async function decryptWithCryptoJS(encryptedText: string, key: string) {\n const [ivBase64, encryptedBase64] = encryptedText.split(':');\n\n const [\n {\n default: {\n mode: { CBC },\n },\n },\n { default: Pkcs7 },\n { default: Base64 },\n { default: Utf8 },\n { default: SHA256 },\n {\n default: { decrypt },\n },\n ] = await Promise.all([\n import('crypto-js/core.js'),\n import('crypto-js/pad-pkcs7.js'),\n import('crypto-js/enc-base64.js'),\n import('crypto-js/enc-utf8.js'),\n import('crypto-js/sha256.js'),\n import('crypto-js/aes.js'),\n ]);\n\n try {\n // Convert base64 strings to WordArray objects\n const iv = Base64.parse(ivBase64);\n // Derive key using SHA-256 (matching native implementation)\n const derivedKey = SHA256(key);\n const decrypted = decrypt(encryptedBase64, derivedKey, {\n iv,\n mode: CBC,\n padding: Pkcs7,\n });\n return decrypted.toString(Utf8);\n } catch (error) {\n console.error('Decryption error:', error);\n throw error;\n }\n}\n"],"mappings":"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"}
|
package/es/utils/stream.d.ts
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* - **CN:** 一个数据流时间切片器,用于将音频流分成固定时间段
|
|
4
4
|
*/
|
|
5
5
|
export declare class StreamTimeSlicerClass implements StreamTimeSlicer {
|
|
6
|
-
|
|
6
|
+
sliceMode: StreamTimeSlicerOptions['sliceMode'];
|
|
7
|
+
value: StreamTimeSlicerOptions['value'];
|
|
7
8
|
private readonly onSlice;
|
|
8
9
|
private channelChunks;
|
|
9
10
|
private startTs;
|
|
@@ -18,10 +19,21 @@ export declare class StreamTimeSlicerClass implements StreamTimeSlicer {
|
|
|
18
19
|
}
|
|
19
20
|
export interface StreamTimeSlicerOptions {
|
|
20
21
|
/**
|
|
21
|
-
* - **EN:**
|
|
22
|
-
*
|
|
22
|
+
* - **EN:** Mode of slicing
|
|
23
|
+
*
|
|
24
|
+
* - 'time': slice by time (ms)
|
|
25
|
+
* - 'size': slice by size (bytes)
|
|
26
|
+
* - **CN:** 切片模式
|
|
27
|
+
*
|
|
28
|
+
* - 'time': 按时间切片(毫秒)
|
|
29
|
+
* - 'size': 按大小切片(字节)
|
|
30
|
+
*/
|
|
31
|
+
sliceMode: 'time' | 'size';
|
|
32
|
+
/**
|
|
33
|
+
* - **EN:** Value for slicing (ms or bytes)
|
|
34
|
+
* - **CN:** 切片值(毫秒或字节)
|
|
23
35
|
*/
|
|
24
|
-
|
|
36
|
+
value: number;
|
|
25
37
|
/**
|
|
26
38
|
* - **EN:** Callback when a slice is reached
|
|
27
39
|
* - **CN:** 达到分片时回调
|
|
@@ -36,12 +48,7 @@ export interface StreamTimeSlicerOptions {
|
|
|
36
48
|
* - **EN:** stream time slicer
|
|
37
49
|
* - **CN:** 数据流时间切片器
|
|
38
50
|
*/
|
|
39
|
-
export interface StreamTimeSlicer {
|
|
40
|
-
/**
|
|
41
|
-
* - **EN:** Duration of each slice (ms)
|
|
42
|
-
* - **CN:** 每个分片的时长(毫秒)
|
|
43
|
-
*/
|
|
44
|
-
timeSlice: number;
|
|
51
|
+
export interface StreamTimeSlicer extends Readonly<Pick<StreamTimeSlicerOptions, 'sliceMode'>>, Pick<StreamTimeSlicerOptions, 'value'> {
|
|
45
52
|
/**
|
|
46
53
|
* - **EN:** Push a frame (multi-channel data obtained from the same callback)
|
|
47
54
|
* - **CN:** 推入一帧(同一次回调得到的多通道)
|
package/es/utils/stream.js
CHANGED
|
@@ -15,11 +15,13 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
|
|
|
15
15
|
export var StreamTimeSlicerClass = /*#__PURE__*/function () {
|
|
16
16
|
function StreamTimeSlicerClass(options) {
|
|
17
17
|
_classCallCheck(this, StreamTimeSlicerClass);
|
|
18
|
-
_defineProperty(this, "
|
|
18
|
+
_defineProperty(this, "sliceMode", void 0);
|
|
19
|
+
_defineProperty(this, "value", void 0);
|
|
19
20
|
_defineProperty(this, "onSlice", void 0);
|
|
20
21
|
_defineProperty(this, "channelChunks", []);
|
|
21
22
|
_defineProperty(this, "startTs", null);
|
|
22
|
-
this.
|
|
23
|
+
this.sliceMode = options.sliceMode;
|
|
24
|
+
this.value = options.value;
|
|
23
25
|
this.onSlice = options.onSlice;
|
|
24
26
|
}
|
|
25
27
|
_createClass(StreamTimeSlicerClass, [{
|
|
@@ -31,8 +33,14 @@ export var StreamTimeSlicerClass = /*#__PURE__*/function () {
|
|
|
31
33
|
key: "shouldEmit",
|
|
32
34
|
value: function shouldEmit(currentTs) {
|
|
33
35
|
if (this.startTs == null) return false;
|
|
34
|
-
if (this.
|
|
35
|
-
|
|
36
|
+
if (this.value <= 0) return true;
|
|
37
|
+
if (this.sliceMode === 'time') {
|
|
38
|
+
return currentTs - this.startTs >= this.value;
|
|
39
|
+
} else {
|
|
40
|
+
return this.channelChunks.reduce(function (acc, arr) {
|
|
41
|
+
return acc + arr.length;
|
|
42
|
+
}, 0) >= this.value;
|
|
43
|
+
}
|
|
36
44
|
}
|
|
37
45
|
}, {
|
|
38
46
|
key: "emit",
|
|
@@ -93,7 +101,7 @@ export var StreamTimeSlicerClass = /*#__PURE__*/function () {
|
|
|
93
101
|
_this.channelChunks[i].push(ch);
|
|
94
102
|
});
|
|
95
103
|
this.emit(false);
|
|
96
|
-
if (this.
|
|
104
|
+
if (this.value <= 0) this.emit(true); // immediate output mode
|
|
97
105
|
}
|
|
98
106
|
}, {
|
|
99
107
|
key: "flush",
|
package/es/utils/stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StreamTimeSlicerClass","options","_classCallCheck","_defineProperty","
|
|
1
|
+
{"version":3,"names":["StreamTimeSlicerClass","options","_classCallCheck","_defineProperty","sliceMode","value","onSlice","_createClass","key","now","performance","Date","shouldEmit","currentTs","startTs","channelChunks","reduce","acc","arr","length","emit","force","arguments","undefined","every","i","merged","map","chArr","total","s","a","out","Float32Array","offset","_iterator","_createForOfIteratorHelper","_step","n","done","seg","set","err","e","f","sliceDur","push","channels","_this","forEach","ch","flush","reset","duration"],"sources":["../../src/utils/stream.ts"],"sourcesContent":["/**\n * - **EN:** A stream time slicer for splitting audio streams into fixed time segments\n * - **CN:** 一个数据流时间切片器,用于将音频流分成固定时间段\n */\nexport class StreamTimeSlicerClass implements StreamTimeSlicer {\n public sliceMode: StreamTimeSlicerOptions['sliceMode'];\n public value: StreamTimeSlicerOptions['value'];\n private readonly onSlice: (channels: Float32Array[], sliceDurationMs: number) => void;\n private channelChunks: Float32Array[][] = [];\n private startTs: number | null = null;\n\n constructor(options: StreamTimeSlicerOptions) {\n this.sliceMode = options.sliceMode;\n this.value = options.value;\n this.onSlice = options.onSlice;\n }\n\n private now() {\n return typeof performance !== 'undefined' ? performance.now() : Date.now();\n }\n\n private shouldEmit(currentTs: number) {\n if (this.startTs == null) return false;\n if (this.value <= 0) return true;\n if (this.sliceMode === 'time') {\n return currentTs - this.startTs >= this.value;\n } else {\n return this.channelChunks.reduce((acc, arr) => acc + arr.length, 0) >= this.value;\n }\n }\n\n private emit(force = false) {\n if (this.startTs == null) return;\n const currentTs = this.now();\n if (!force && !this.shouldEmit(currentTs)) return;\n\n // reset start time\n if (this.channelChunks.length === 0 || this.channelChunks.every((arr) => arr.length === 0)) {\n this.startTs = null;\n for (let i = 0; i < this.channelChunks.length; i++) this.channelChunks[i] = [];\n return;\n }\n\n // Merge each channel\n const merged: Float32Array[] = this.channelChunks.map((chArr) => {\n const total = chArr.reduce((s, a) => s + a.length, 0);\n const out = new Float32Array(total);\n let offset = 0;\n for (const seg of chArr) {\n out.set(seg, offset);\n offset += seg.length;\n }\n return out;\n });\n\n const sliceDur = this.startTs != null ? currentTs - this.startTs : 0;\n this.onSlice(merged, sliceDur);\n\n // Reset start time\n for (let i = 0; i < this.channelChunks.length; i++) this.channelChunks[i] = [];\n this.startTs = null;\n }\n\n push(channels: Float32Array[]) {\n if (!channels || channels.length === 0) return;\n if (this.startTs == null) this.startTs = this.now();\n\n while (this.channelChunks.length < channels.length) {\n this.channelChunks.push([]);\n }\n channels.forEach((ch, i) => {\n this.channelChunks[i].push(ch);\n });\n\n this.emit(false);\n if (this.value <= 0) this.emit(true); // immediate output mode\n }\n\n flush() {\n this.emit(true);\n }\n\n reset() {\n for (let i = 0; i < this.channelChunks.length; i++) this.channelChunks[i] = [];\n this.startTs = null;\n }\n\n duration() {\n return this.startTs == null ? 0 : this.now() - this.startTs;\n }\n}\nexport interface StreamTimeSlicerOptions {\n /**\n * - **EN:** Mode of slicing\n *\n * - 'time': slice by time (ms)\n * - 'size': slice by size (bytes)\n * - **CN:** 切片模式\n *\n * - 'time': 按时间切片(毫秒)\n * - 'size': 按大小切片(字节)\n */\n sliceMode: 'time' | 'size';\n /**\n * - **EN:** Value for slicing (ms or bytes)\n * - **CN:** 切片值(毫秒或字节)\n */\n value: number;\n /**\n * - **EN:** Callback when a slice is reached\n * - **CN:** 达到分片时回调\n *\n * @param channels - Multi-channel data, each channel is a Float32Array | 多通道数据,每个通道是一个\n * Float32Array\n * @param sliceDuration - Duration of the slice (ms) | 分片时长(ms)\n */\n onSlice: (channels: Float32Array[], sliceDuration: number) => void;\n}\n\n/**\n * - **EN:** stream time slicer\n * - **CN:** 数据流时间切片器\n */\nexport interface StreamTimeSlicer\n extends Readonly<Pick<StreamTimeSlicerOptions, 'sliceMode'>>,\n Pick<StreamTimeSlicerOptions, 'value'> {\n /**\n * - **EN:** Push a frame (multi-channel data obtained from the same callback)\n * - **CN:** 推入一帧(同一次回调得到的多通道)\n *\n * @param channels - Multi-channel data, each channel is a Float32Array | 多通道数据,每个通道是一个\n * Float32Array\n */\n push: (channels: Float32Array[]) => void;\n /**\n * - **EN:** Force output the current accumulation (output even if not enough timeSlice)\n * - **CN:** 强制输出当前累积(不足 timeSlice 也输出)\n */\n flush: () => void;\n /**\n * - **EN:** Clear the cache (do not output)\n * - **CN:** 清空缓存(不输出)\n */\n reset: () => void;\n /**\n * - **EN:** Get the accumulated duration from start to current (ms)\n * - **CN:** 获取从开始到当前已累计的时长(ms)\n */\n duration: () => number;\n}\n"],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type StreamTimeSlicerOptions } from '../utils/stream';
|
|
1
2
|
export interface UseUserMediaProps {
|
|
2
3
|
/**
|
|
3
4
|
* - **EN:** The media constraints for the audio and video stream.
|
|
@@ -58,11 +59,17 @@ export interface UseUserMediaProps {
|
|
|
58
59
|
*/
|
|
59
60
|
disabled?: boolean;
|
|
60
61
|
/**
|
|
61
|
-
* - **EN:** The slicing
|
|
62
|
-
*
|
|
63
|
-
* - **CN:** 媒体流每个分片的切片时间段(毫秒),每个时间分片会触发一次 `onStreamChunk` 回调,默认值为 `500`。
|
|
62
|
+
* - **EN:** The slicing mode for the audio and video stream.
|
|
63
|
+
* - **CN:** 媒体流的切片模式。
|
|
64
64
|
*/
|
|
65
|
-
|
|
65
|
+
streamSliceMode?: StreamTimeSlicerOptions['sliceMode'];
|
|
66
|
+
/**
|
|
67
|
+
* - **EN:** The slicing value (milliseconds or bytes) for the audio and video stream, when
|
|
68
|
+
* `streamSliceMode` is `time`, it represents milliseconds, and when it is `size`, it represents
|
|
69
|
+
* bytes.
|
|
70
|
+
* - **CN:** 媒体流切片的切片值(毫秒或字节),当 `streamSliceMode` 为 `time` 时表示毫秒,为 `size` 时表示字节。
|
|
71
|
+
*/
|
|
72
|
+
streamSliceValue?: StreamTimeSlicerOptions['value'];
|
|
66
73
|
/**
|
|
67
74
|
* - **EN:** The silence detection threshold (0-1) for the audio stream, below which the audio is
|
|
68
75
|
* considered silent. Default is `0`.
|
|
@@ -46,7 +46,8 @@ var useUserMedia = (props) => {
|
|
|
46
46
|
media,
|
|
47
47
|
pcmAudioOptions,
|
|
48
48
|
disabled,
|
|
49
|
-
|
|
49
|
+
streamSliceMode = "time",
|
|
50
|
+
streamSliceValue,
|
|
50
51
|
soundDetectionThreshold = 0,
|
|
51
52
|
soundDetectionTimeout = 3e3,
|
|
52
53
|
onStartRecording,
|
|
@@ -85,7 +86,8 @@ var useUserMedia = (props) => {
|
|
|
85
86
|
const onPcmStreamChunkRef = (0, import_useRefValue.default)(onPcmStreamChunk);
|
|
86
87
|
const pcmStreamSlicerRef = (0, import_react.useRef)(
|
|
87
88
|
new import_stream.StreamTimeSlicerClass({
|
|
88
|
-
|
|
89
|
+
sliceMode: streamSliceMode,
|
|
90
|
+
value: streamSliceValue || 0,
|
|
89
91
|
onSlice: (channels) => {
|
|
90
92
|
var _a2;
|
|
91
93
|
(_a2 = onPcmStreamChunkRef.current) == null ? void 0 : _a2.call(onPcmStreamChunkRef, channels, pcmSampleRateRef.current);
|
|
@@ -138,8 +140,8 @@ var useUserMedia = (props) => {
|
|
|
138
140
|
onStreamChunk == null ? void 0 : onStreamChunk(event.data);
|
|
139
141
|
}
|
|
140
142
|
};
|
|
141
|
-
if (
|
|
142
|
-
recorder.start(
|
|
143
|
+
if (streamSliceMode === "time" && streamSliceValue) {
|
|
144
|
+
recorder.start(streamSliceValue);
|
|
143
145
|
} else {
|
|
144
146
|
recorder.start();
|
|
145
147
|
}
|
|
@@ -352,10 +354,10 @@ var useUserMedia = (props) => {
|
|
|
352
354
|
}
|
|
353
355
|
}, [disabled, isRecording]);
|
|
354
356
|
(0, import_react.useEffect)(() => {
|
|
355
|
-
if (
|
|
356
|
-
pcmStreamSlicerRef.current.
|
|
357
|
+
if (streamSliceValue && pcmStreamSlicerRef.current.value !== streamSliceValue) {
|
|
358
|
+
pcmStreamSlicerRef.current.value = streamSliceValue;
|
|
357
359
|
}
|
|
358
|
-
}, [
|
|
360
|
+
}, [streamSliceValue]);
|
|
359
361
|
(0, import_react.useEffect)(() => {
|
|
360
362
|
if (includeAudio && mediaStream && !isSpeakingRef.current) {
|
|
361
363
|
try {
|