@@ -16,7 +16,7 @@ import { freqMap, freqMapSplitters } from './modes/freqMap.js';
1616import { segments , splitGraphemes } from './modes/segmentation.js' ;
1717import { _JSSC } from './encodings.js' ;
1818import { compressSequences , decompressSequences } from './sequences.js' ;
19- import { convertBase } from '../lib/third-party/convertBase.js' ;
19+ import { convertBase , URL as B64URL } from '../lib/third-party/convertBase.js' ;
2020import { compressB64 , decompressB64 } from './modes/base64.js' ;
2121import { encode , decode } from '@strc/utf16-to-any-base' ;
2222import utf8 from "utf8" ; const { eUTF8 } = ( ( ) => {
@@ -30,6 +30,7 @@ import lz from 'lz-string'; const { cLZ, dLZ } = (()=>{
3030import { runInWorkers , canUseWorkers , workerURL , workerMin } from './useWorker.js' ;
3131import { validateCache , setCache } from './cache.js' ;
3232import { compress as cAXOR , decompress as dAXOR } from './modes/axor.js' ;
33+ import { B64toUI8A , UI8AtoB64 } from '../lib/uint8.js' ;
3334
3435function cryptCharCode (
3536 code , get = false ,
@@ -855,19 +856,33 @@ export async function decompress(str, stringify = false) {
855856 }
856857}
857858
858- export async function compressToBase64 ( ... input ) {
859- const compressed = await compress ( ... input ) ;
860-
861- if ( compressed instanceof JSSC ) throw new Error ( prefix + 'Invalid options input.' ) ;
859+ function noDebugMode ( result ) {
860+ if ( result instanceof JSSC ) throw new Error ( prefix + 'Invalid options input.' ) ;
861+ return result ;
862+ }
862863
864+ export async function compressToBase64 ( ...input ) {
865+ const compressed = noDebugMode ( await compress ( ...input ) ) ;
863866 return B64Padding ( encode ( compressed ) ) ;
864867}
865868export async function decompressFromBase64 ( base64 , ...params ) {
866- const decompressed = await decompress ( decode ( base64 . replace ( / = + $ / , '' ) ) , ...params ) ;
869+ return noDebugMode ( await decompress ( decode ( base64 . replace ( / = + $ / , '' ) ) , ...params ) ) ;
870+ }
867871
868- if ( decompressed instanceof JSSC ) throw new Error ( prefix + 'Invalid options input.' ) ;
872+ export async function compressToBase64URL ( ...input ) {
873+ const compressed = noDebugMode ( await compress ( ...input ) ) ;
874+ return encode ( compressed , 64 , B64URL ) ;
875+ }
876+ export async function decompressFromBase64URL ( base64url , ...params ) {
877+ return noDebugMode ( await decompress ( decode ( base64url , 64 , B64URL ) , ...params ) ) ;
878+ }
869879
870- return decompressed ;
880+ export async function compressToUint8Array ( ...input ) {
881+ const compressed = await compressToBase64 ( ...input ) ;
882+ return B64toUI8A ( compressed . replace ( / = + $ / , '' ) ) ;
883+ }
884+ export async function decompressFromUint8Array ( uint8array , ...params ) {
885+ return await decompressFromBase64 ( UI8AtoB64 ( uint8array ) , ...params ) ;
871886}
872887
873888export async function compressLarge ( input , ...params ) {
@@ -883,12 +898,17 @@ export async function compressLarge(input, ...params) {
883898 return result . join ( '' ) ;
884899}
885900export async function compressLargeToBase64 ( ...input ) {
886- const compressed = await compress ( ...input ) ;
887-
888- if ( compressed instanceof JSSC ) throw new Error ( prefix + 'Invalid options input.' ) ;
889-
901+ const compressed = noDebugMode ( await compress ( ...input ) ) ;
890902 return B64Padding ( encode ( compressed ) ) ;
891903}
904+ export async function compressLargeToBase64URL ( ...input ) {
905+ const compressed = noDebugMode ( await compress ( ...input ) ) ;
906+ return encode ( compressed , 64 , B64URL ) ;
907+ }
908+ export async function compressLargeToUint8Array ( ...input ) {
909+ const compressed = await compressLargeToBase64 ( ...input ) ;
910+ return B64toUI8A ( compressed . replace ( / = + $ / , '' ) ) ;
911+ }
892912
893913async function validate ( compressed , originalInput ) {
894914 const cached = validateCache . get ( compressed ) ;
0 commit comments