diff --git a/deps.pure_ext.ts b/deps.pure_ext.ts index 764c244..8783d80 100644 --- a/deps.pure_ext.ts +++ b/deps.pure_ext.ts @@ -1,7 +1,7 @@ // @deno-types="https://deno.land/std@0.223.0/csv/mod.ts" export {parse, stringify} from "https://esm.sh/gh/denoland/deno_std@0.223.0/csv/mod.ts?bundle&target=esnext"; -// @deno-types="https://deno.land/x/zipjs@v2.7.41/index.d.ts" -export {ZipReader, ZipWriter, Uint8ArrayReader, Uint8ArrayWriter} from "https://esm.sh/gh/gildas-lormeau/zip.js@v2.7.41/index.js?bundle&target=esnext"; +// @deno-types="https://deno.land/x/zipjs@v2.7.43/index.d.ts" +export {ZipReader, ZipWriter, Uint8ArrayReader, Uint8ArrayWriter} from "https://esm.sh/gh/gildas-lormeau/zip.js@v2.7.43/index.js?bundle&target=esnext"; // @deno-types="https://cdn.sheetjs.com/xlsx-0.20.2/package/types/index.d.ts" export {type WorkBook as RawWorkBook, type WorkSheet as RawWorkSheet, type CellObject as RawWorkCell, set_cptable, read as xlsxRead, write as xlsxWrite, utils as xlsxUtil} from "https://cdn.sheetjs.com/xlsx-0.20.2/package/xlsx.mjs"; diff --git a/src/pure/base64.ts b/src/pure/base64.ts index cb47496..822fb25 100644 --- a/src/pure/base64.ts +++ b/src/pure/base64.ts @@ -12,27 +12,27 @@ export function base64Encode(data:Uint8Array):string{ } /** -* Convert from base64 encoded string to binary. +* Convert from binary to base64 encoded DataURL. +* Default MIME type is `application/octet-stream`. * @example * ```ts * const bin = await Deno.readFile("./file"); -* const encode = base64Encode(bin); -* const decode = base64Decode(encode); +* const data = base64EncodeDataURL(bin); * ``` */ -export function base64Decode(data:string):Uint8Array{ - return new Uint8Array([...atob(data)].map(v => v.charCodeAt(0))); +export function base64EncodeDataURL(data:Uint8Array, type?:string):string{ + return `data:${type ?? "application/octet-stream"};base64,${base64Encode(data)}`; } /** -* Convert from binary to base64 encoded DataURL. -* Default MIME type is `application/octet-stream`. +* Convert from base64 encoded string to binary. * @example * ```ts * const bin = await Deno.readFile("./file"); -* const data = base64DataURL(bin); +* const encode = base64Encode(bin); +* const decode = base64Decode(encode); * ``` */ -export function base64DataURL(data:Uint8Array, type?:string):string{ - return `data:${type ?? "application/octet-stream"};base64,${base64Encode(data)}`; +export function base64Decode(data:string):Uint8Array{ + return new Uint8Array([...atob(data)].map(v => v.charCodeAt(0))); } \ No newline at end of file diff --git a/src/pure/text.ts b/src/pure/text.ts index a6f4125..fd3ac65 100644 --- a/src/pure/text.ts +++ b/src/pure/text.ts @@ -42,11 +42,11 @@ export function textDecodeAny(data:Uint8Array, codec?:string):string{ * @example * ```ts * const bin = await Deno.readFile("./file"); -* const encode = textEncodeHex(bin); -* const decode = textDecodeHex(encode); +* const encode = textHexEncode(bin); +* const decode = textHexDecode(encode); * ``` */ -export function textEncodeHex(data:Uint8Array):string{ +export function textHexEncode(data:Uint8Array):string{ return [...data].map(v => textPadZero(v, 2, 16)).join(""); } @@ -55,11 +55,11 @@ export function textEncodeHex(data:Uint8Array):string{ * @example * ```ts * const bin = await Deno.readFile("./file"); -* const encode = textEncodeHex(bin); -* const decode = textDecodeHex(encode); +* const encode = textHexEncode(bin); +* const decode = textHexDecode(encode); * ``` */ -export function textDecodeHex(data:string):Uint8Array{ +export function textHexDecode(data:string):Uint8Array{ return new Uint8Array(data.match(/[0-9a-fA-F]{2}/g)?.map(v => Number(`0x${v}`)) ?? []); } @@ -129,10 +129,10 @@ export function textGetReady(data:string):string{ * Useful for calculate number of characters with string contains emoji. * @example * ```ts -* const characters = textSplit("😀😃😄😁😆😅😂🤣"); +* const characters = textSplitBySegment("😀😃😄😁😆😅😂🤣"); * ``` */ -export function textSplit(data:string):string[]{ +export function textSplitBySegment(data:string):string[]{ return [...new Intl.Segmenter().segment(data)].map(({segment}) => segment); } diff --git a/test/pure/base64.test.ts b/test/pure/base64.test.ts index 4b8860e..79dab37 100644 --- a/test/pure/base64.test.ts +++ b/test/pure/base64.test.ts @@ -1,5 +1,5 @@ import {assertEquals} from "../../deps.test.ts"; -import {base64Encode, base64Decode, base64DataURL} from "../../src/pure/base64.ts"; +import {base64Encode, base64Decode, base64EncodeDataURL} from "../../src/pure/base64.ts"; const sample1 = new Uint8Array([ 0x58, 0x0D, 0xC7, 0x64, 0x21, 0x42, 0x27, 0x76, @@ -31,7 +31,7 @@ Deno.test({ Deno.test({ name: "Base64: DataURL", fn(){ - const encode = base64DataURL(sample1); + const encode = base64EncodeDataURL(sample1); assertEquals(encode, `data:application/octet-stream;base64,${sample2}`); } diff --git a/test/pure/text.test.ts b/test/pure/text.test.ts index 17fae98..5477c7d 100644 --- a/test/pure/text.test.ts +++ b/test/pure/text.test.ts @@ -1,5 +1,5 @@ import {assertEquals} from "../../deps.test.ts"; -import {textEncode, textDecode, textDecodeAny, textEncodeHex, textDecodeHex, textPurgeSuperfluous, textFixWidth, textGetReady, textSplit, textPadZero} from "../../src/pure/text.ts"; +import {textEncode, textDecode, textDecodeAny, textHexEncode, textHexDecode, textPurgeSuperfluous, textFixWidth, textGetReady, textSplitBySegment, textPadZero} from "../../src/pure/text.ts"; const sampleText = " Lorem ipsum\r dolor sit \r\r amet. "; const sampleBin = new Uint8Array([ @@ -34,8 +34,8 @@ Deno.test({ Deno.test({ name: "Text: HEX Encode and Decode", fn(){ - const encode = textEncodeHex(sampleBin); - const decode = textDecodeHex(encode); + const encode = textHexEncode(sampleBin); + const decode = textHexDecode(encode); assertEquals(decode, sampleBin); } @@ -71,7 +71,7 @@ Deno.test({ Deno.test({ name: "Text: Segment", fn(){ - const {length} = textSplit("😄😁😆😅😂"); + const {length} = textSplitBySegment("😄😁😆😅😂"); assertEquals(length, 5); }