kasten-js 0.1.0 → 0.2.0

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/README.md CHANGED
@@ -3,9 +3,18 @@
3
3
  ## Features
4
4
 
5
5
  - Base 64 Encoding/Decoding
6
+ - RFC2045
7
+ - RFC4648
6
8
  - Base 32 Encoding/Decoding
9
+ - RFC4648
10
+ - RFC4648 (Hex)
7
11
  - Base 16 Encoding/Decoding
8
- - Run-Length Encoding/Decoding (WIP)
12
+ - RFC4648
13
+ - Base 85
14
+ - Ascii85 (WIP)
15
+ - Run-Length Encoding/Decoding
16
+ - Basic
17
+ - PackBits
9
18
  - LZ77 Encoding/Decoding (WIP)
10
19
 
11
20
  ## Usage
package/dist/index.d.ts CHANGED
@@ -12,19 +12,6 @@ declare abstract class Base16 {
12
12
  abstract decode(base16: string): Uint8Array;
13
13
  }
14
14
  //#endregion
15
- //#region src/base16/rfc4648/rfc4648.d.ts
16
- /**
17
- * RFC 4648 Base 16 encoding.
18
- */
19
- declare class RFC4648Base16 extends Base16 {
20
- private static readonly textDecoder;
21
- private static readonly TABLE;
22
- private static readonly ENCODED_TABLE;
23
- private static readonly DECODED_TABLE;
24
- encode(bytes: Uint8Array): string;
25
- decode(base16: string): Uint8Array;
26
- }
27
- //#endregion
28
15
  //#region src/base32/index.d.ts
29
16
  type Base32Category = typeof Base32Categories[number];
30
17
  declare const Base32Categories: readonly ["rfc4649", "rfc464hex"];
@@ -61,7 +48,7 @@ declare abstract class Base64 {
61
48
  }
62
49
  //#endregion
63
50
  //#region src/run-length/index.d.ts
64
- declare const RunLengthCatgories: readonly ["basic"];
51
+ declare const RunLengthCatgories: readonly ["basic", "pack-bits"];
65
52
  type RunLengthCatgory = typeof RunLengthCatgories[number];
66
53
  /**
67
54
  * Run-Length encoding and decoding.
@@ -80,7 +67,25 @@ declare abstract class RunLength {
80
67
  }
81
68
  //#endregion
82
69
  //#region src/api.d.ts
83
- declare class Casten {
70
+ /**
71
+ * Entry point of the Kasten library.
72
+ * All encoding/decoding feature implementations are created through this class.
73
+ *
74
+ * @example
75
+ * const base64 = Kasten.base64('rfc4648');
76
+ * const encoded = base64.encode(data);
77
+ *
78
+ * @example
79
+ * const base32 = Kasten.base32('rfc464hex');
80
+ * const decoded = base32.decode(text);
81
+ *
82
+ * @example
83
+ * const base16 = Kasten.base16();
84
+ *
85
+ * @example
86
+ * const runLength = Kasten.runLength('pack-bits');
87
+ */
88
+ declare class Kasten {
84
89
  private constructor();
85
90
  /**
86
91
  * Creates Base 64 codec instance.
@@ -95,8 +100,11 @@ declare class Casten {
95
100
  /**
96
101
  * Create Base 16 codec instance.
97
102
  */
98
- static base16: () => RFC4648Base16;
103
+ static base16: () => Base16;
104
+ /**
105
+ * Creates Run-Length codec instance.
106
+ */
99
107
  static runLength: (category?: RunLengthCatgory) => RunLength;
100
108
  }
101
109
  //#endregion
102
- export { Base16, Base32, Base64, Casten as Kasten, RunLength };
110
+ export { type Base16, type Base32, type Base32Category, type Base64, type Base64Catgory, type Kasten, type RunLength, type RunLengthCatgory };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var e=class{},t=class{static CR=13;static LF=10;static SP=32;static HT=9;constructor(){}},n=class extends Error{},r=class extends n{},i=class extends r{},a=class n extends e{static textDecoder=new TextDecoder;static TABLE=`0123456789ABCDEF`;static ENCODED_TABLE=new Uint8Array([...this.TABLE].map(e=>e.charCodeAt(0)));static DECODED_TABLE=new Uint8Array(256);static{this.DECODED_TABLE.fill(255);for(let e=0;e<this.TABLE.length;e++)this.DECODED_TABLE[this.TABLE.charCodeAt(e)]=e}encode(e){let t=n.ENCODED_TABLE,r=new Uint8Array(e.length*2),i=0;for(let n of e){let e=(n&240)>>4,a=n&15,o=t[e],s=t[a];r[i++]=o,r[i++]=s}return n.textDecoder.decode(r)}decode(e){let r=n.DECODED_TABLE,{CR:a,LF:o,SP:s,HT:c}=t,l=e.toUpperCase(),u=new Uint8Array(e.length),d=0;for(let t=0;t<e.length;t++){let n=l.charCodeAt(t);if(!(n===a||n===o||n===s||n===c)){if(!r[n]||r[n]==255)throw new i(`Invalid Base16 character: ${e.charAt(t)}`);u[d++]=n}}if(d%2!=0)throw new i(`Invalid Base16`);let f=new Uint8Array(Math.ceil(e.length/2)),p=0;for(let e=0;e<d;e+=2){let t=u[e],n=u[e+1],i=r[t],a=r[n],o=(i&15)<<4|a&15;f[p++]=o}return f.subarray(0,p)}},o=class{static textDecoder=new TextDecoder},s=class extends n{},c=class extends s{},l=class e extends o{static PADDING_CHAR_CODE=61;static TABLE=`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567`;static ENCODED_TABLE=new Uint8Array([...this.TABLE].map(e=>e.charCodeAt(0)));static DECODED_TABLE=new Uint8Array(256);static{this.DECODED_TABLE.fill(255);for(let e=0;e<this.TABLE.length;e++)this.DECODED_TABLE[this.TABLE.charCodeAt(e)]=e}encode(t){let n=e.ENCODED_TABLE,r=new Uint8Array(Math.ceil(t.length/5)*8),i=0;for(let e=0;e<t.length;e+=5){let a=t[e],o=t[e+1]??0,s=t[e+2]??0,c=t[e+3]??0,l=t[e+4]??0,u=(a&255)>>3,d=(a&7)<<2|(o&192)>>6,f=(o&62)>>1,p=(o&1)<<4|(s&240)>>4,m=(s&15)<<1|(c&128)>>7,h=(c&124)>>2,g=(c&3)<<3|(l&224)>>5,_=l&31,v=n[u],y=n[d],b=n[f],x=n[p],S=n[m],C=n[h],w=n[g],T=n[_];r[i++]=v,r[i++]=y,r[i++]=b,r[i++]=x,r[i++]=S,r[i++]=C,r[i++]=w,r[i++]=T}let a=t.length%5,s=a===4?1:a===3?3:a===2?4:a===1?6:0;for(let t=s;t>0;t--)r[i-t]=e.PADDING_CHAR_CODE;return o.textDecoder.decode(r.subarray(0,i))}decode(n){let r=n.toUpperCase(),i=e.DECODED_TABLE,a=e.PADDING_CHAR_CODE,{CR:o,LF:s,SP:l,HT:u}=t,d=new Uint8Array(n.length),f=0;for(let e=0;e<n.length;e++){let t=r.charCodeAt(e);t!==o&&t!==s&&t!==l&&t!==u&&(d[f++]=t)}if(f%8!=0)throw new c(`Invalid length string.`);let p=-1;for(let e=0;e<f;e++)if(d[e]===a){p=e;break}let m=0;if(p!==-1){if(p<f-6)throw new c(`Invalid padding position.`);for(let e=p;e<f;e++)if(d[e]!==a)throw new c(`Invalid padding`);if(m=f-p,m!==1&&m!==3&&m!==4&&m!==6)throw new c(`Invalid padding`)}let h=new Uint8Array(Math.floor((f-m)*5/8)),g=0;for(let e=0;e<f;e+=8){let t=d[e],n=d[e+1],r=d[e+2],o=d[e+3],s=d[e+4],l=d[e+5],u=d[e+6],f=d[e+7],p=i[t],m=i[n],_=r===a?0:i[r],v=o===a?0:i[o],y=s===a?0:i[s],b=l===a?0:i[l],x=u===a?0:i[u],S=f===a?0:i[f];if(p===255||m===255||_===255||v===255||y===255||b===255||x===255||S===255)throw new c(`Invalid Base32`);let C=(p&31)<<3|(m&28)>>2,w=(m&3)<<6|(_&31)<<1|(v&16)>>4,T=(v&15)<<4|(y&30)>>1,E=(y&1)<<7|(b&31)<<2|(x&24)>>3,D=(x&7)<<5|S&31;h[g++]=C,g<h.length&&(h[g++]=w),g<h.length&&(h[g++]=T),g<h.length&&s!==a&&(h[g++]=E),g<h.length&&u!=a&&(h[g++]=D)}return h.subarray(0,g)}},u=class e extends o{static PADDING_CHAR_CODE=61;static TABLE=`0123456789ABCDEFGHIJKLMNOPQRSTUV`;static ENCODED_TABLE=new Uint8Array([...this.TABLE].map(e=>e.charCodeAt(0)));static DECODED_TABLE=new Uint8Array(256);static{this.DECODED_TABLE.fill(255);for(let e=0;e<this.TABLE.length;e++)this.DECODED_TABLE[this.TABLE.charCodeAt(e)]=e}encode(t){let n=e.ENCODED_TABLE,r=new Uint8Array(Math.ceil(t.length/5)*8),i=0;for(let e=0;e<t.length;e+=5){let a=t[e],o=t[e+1]??0,s=t[e+2]??0,c=t[e+3]??0,l=t[e+4]??0,u=(a&255)>>3,d=(a&7)<<2|(o&192)>>6,f=(o&62)>>1,p=(o&1)<<4|(s&240)>>4,m=(s&15)<<1|(c&128)>>7,h=(c&124)>>2,g=(c&3)<<3|(l&224)>>5,_=l&31,v=n[u],y=n[d],b=n[f],x=n[p],S=n[m],C=n[h],w=n[g],T=n[_];r[i++]=v,r[i++]=y,r[i++]=b,r[i++]=x,r[i++]=S,r[i++]=C,r[i++]=w,r[i++]=T}let a=t.length%5,s=a===4?1:a===3?3:a===2?4:a===1?6:0;for(let t=s;t>0;t--)r[i-t]=e.PADDING_CHAR_CODE;return o.textDecoder.decode(r.subarray(0,i))}decode(n){let r=n.toUpperCase(),i=e.DECODED_TABLE,a=e.PADDING_CHAR_CODE,{CR:o,LF:s,SP:l,HT:u}=t,d=new Uint8Array(n.length),f=0;for(let e=0;e<n.length;e++){let t=r.charCodeAt(e);t!==o&&t!==s&&t!==l&&t!==u&&(d[f++]=t)}if(f%8!=0)throw new c(`Invalid length string.`);let p=-1;for(let e=0;e<f;e++)if(d[e]===a){p=e;break}let m=0;if(p!==-1){if(p<f-6)throw new c(`Invalid padding position.`);for(let e=p;e<f;e++)if(d[e]!==a)throw new c(`Invalid padding`);if(m=f-p,m!==1&&m!==3&&m!==4&&m!==6)throw new c(`Invalid padding`)}let h=new Uint8Array(Math.floor((f-m)*5/8)),g=0;for(let e=0;e<f;e+=8){let t=d[e],n=d[e+1],r=d[e+2],o=d[e+3],s=d[e+4],l=d[e+5],u=d[e+6],f=d[e+7],p=i[t],m=i[n],_=r===a?0:i[r],v=o===a?0:i[o],y=s===a?0:i[s],b=l===a?0:i[l],x=u===a?0:i[u],S=f===a?0:i[f];if(p===255||m===255||_===255||v===255||y===255||b===255||x===255||S===255)throw new c(`Invalid Base32`);let C=(p&31)<<3|(m&28)>>2,w=(m&3)<<6|(_&31)<<1|(v&16)>>4,T=(v&15)<<4|(y&30)>>1,E=(y&1)<<7|(b&31)<<2|(x&24)>>3,D=(x&7)<<5|S&31;h[g++]=C,g<h.length&&(h[g++]=w),g<h.length&&(h[g++]=T),g<h.length&&s!==a&&(h[g++]=E),g<h.length&&u!=a&&(h[g++]=D)}return h.subarray(0,g)}},d=class{},f=class extends n{},p=class extends f{},m=class e extends d{static PADDING_CHAR_CODE=61;static TABLE=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`;static DECODE_TABLE=new Uint8Array(256);static ENCODE_TABLE=new Uint8Array([...this.TABLE].map(e=>e.charCodeAt(0)));static decoder=new TextDecoder;static{this.DECODE_TABLE.fill(255);for(let e=0;e<this.TABLE.length;e++)this.DECODE_TABLE[this.TABLE.charCodeAt(e)]=e}encode=n=>{if(n.length===0)return``;let r=e.ENCODE_TABLE,i=Math.ceil(n.length/3)*4,a=Math.floor((i-1)/76),o=new Uint8Array(i+a*2),s=0,c=0;for(let e=0;e<n.length;e+=3){let i=n[e],a=n[e+1]??0,l=n[e+2]??0,u=i>>2,d=(i&3)<<4|a>>4,f=(a&15)<<2|l>>6,p=l&63;o[s++]=r[u],o[s++]=r[d],o[s++]=r[f],o[s++]=r[p],c+=4,c===76&&s<o.length&&(c=0,o[s++]=t.CR,o[s++]=t.LF)}let l=n.length%3;return l===1?(o[s-2]=e.PADDING_CHAR_CODE,o[s-1]=e.PADDING_CHAR_CODE):l===2&&(o[s-1]=e.PADDING_CHAR_CODE),e.decoder.decode(o.subarray(0,s))};decode=n=>{let r=e.DECODE_TABLE,i=new Uint8Array(n.length),a=0;for(let e=0;e<n.length;e++){let r=n.charCodeAt(e);r!==t.CR&&r!==t.LF&&r!==t.SP&&r!==t.HT&&(i[a++]=r)}if(a%4!=0)throw new p(`Invalid length string`);let o=-1;for(let t=0;t<a;t++)if(i[t]===e.PADDING_CHAR_CODE){o=t;break}if(o!==-1){if(o<a-2)throw new p(`Invalid padding position`);for(let t=o;t<a;t++)if(i[t]!==e.PADDING_CHAR_CODE)throw new p(`Invalid padding`);let t=a-o;if(t!==1&&t!==2)throw new p(`Invalid padding`)}let s=a,c=i[s-1]===e.PADDING_CHAR_CODE?i[s-2]===e.PADDING_CHAR_CODE?2:1:0,l=new Uint8Array(a/4*3-c),u=0;for(let t=0;t<a;t+=4){let n=i[t],a=i[t+1],o=i[t+2],s=i[t+3],c=r[n],d=r[a],f=o===e.PADDING_CHAR_CODE?0:r[o],m=s===e.PADDING_CHAR_CODE?0:r[s];if(c===255||d===255||o!==e.PADDING_CHAR_CODE&&f===255||s!==e.PADDING_CHAR_CODE&&m===255)throw new p(`Invalid Base64`);let h=c<<2|d>>4,g=(d&15)<<4|f>>2,_=(f&3)<<6|m;l[u++]=h,o!==e.PADDING_CHAR_CODE&&(l[u++]=g),s!==e.PADDING_CHAR_CODE&&(l[u++]=_)}return l}},h=class e extends d{static PADDING_CHAR_CODE=61;static TABLE=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`;static DECODE_TABLE=new Uint8Array(256);static ENCODE_TABLE=new Uint8Array([...this.TABLE].map(e=>e.charCodeAt(0)));static decoder=new TextDecoder;static{this.DECODE_TABLE.fill(255);for(let e=0;e<this.TABLE.length;e++)this.DECODE_TABLE[this.TABLE.charCodeAt(e)]=e}encode=t=>{if(t.length===0)return``;let n=e.ENCODE_TABLE,r=Math.ceil(t.length/3)*4,i=Math.floor((r-1)/76),a=new Uint8Array(r+i*2),o=0;for(let e=0;e<t.length;e+=3){let r=t[e],i=t[e+1]??0,s=t[e+2]??0,c=r>>2,l=(r&3)<<4|i>>4,u=(i&15)<<2|s>>6,d=s&63;a[o++]=n[c],a[o++]=n[l],a[o++]=n[u],a[o++]=n[d]}let s=t.length%3;return s===1?(a[o-2]=e.PADDING_CHAR_CODE,a[o-1]=e.PADDING_CHAR_CODE):s===2&&(a[o-1]=e.PADDING_CHAR_CODE),e.decoder.decode(a.subarray(0,o))};decode=n=>{let r=e.DECODE_TABLE,i=new Uint8Array(n.length),a=0;for(let e=0;e<n.length;e++){let r=n.charCodeAt(e);r!==t.CR&&r!==t.LF&&r!==t.SP&&r!==t.HT&&(i[a++]=r)}if(a%4!=0)throw new p(`Invalid length string`);let o=-1;for(let t=0;t<a;t++)if(i[t]===e.PADDING_CHAR_CODE){o=t;break}if(o!==-1){if(o<a-2)throw new p(`Invalid padding position`);for(let t=o;t<a;t++)if(i[t]!==e.PADDING_CHAR_CODE)throw new p(`Invalid padding`);let t=a-o;if(t!==1&&t!==2)throw new p(`Invalid padding`)}let s=a,c=i[s-1]===e.PADDING_CHAR_CODE?i[s-2]===e.PADDING_CHAR_CODE?2:1:0,l=new Uint8Array(a/4*3-c),u=0;for(let t=0;t<a;t+=4){let n=i[t],a=i[t+1],o=i[t+2],s=i[t+3],c=r[n],d=r[a],f=o===e.PADDING_CHAR_CODE?0:r[o],m=s===e.PADDING_CHAR_CODE?0:r[s];if(c===255||d===255||o!==e.PADDING_CHAR_CODE&&f===255||s!==e.PADDING_CHAR_CODE&&m===255)throw new p(`Invalid Base64`);let h=c<<2|d>>4,g=(d&15)<<4|f>>2,_=(f&3)<<6|m;l[u++]=h,o!==e.PADDING_CHAR_CODE&&(l[u++]=g),s!==e.PADDING_CHAR_CODE&&(l[u++]=_)}return l}},g=class e extends d{static PADDING_CHAR_CODE=61;static TABLE=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`;static DECODE_TABLE=new Uint8Array(256);static ENCODE_TABLE=new Uint8Array([...this.TABLE].map(e=>e.charCodeAt(0)));static decoder=new TextDecoder;static{this.DECODE_TABLE.fill(255);for(let e=0;e<this.TABLE.length;e++)this.DECODE_TABLE[this.TABLE.charCodeAt(e)]=e}encode=n=>{if(n.length===0)return``;let r=e.ENCODE_TABLE,i=Math.ceil(n.length/3)*4,a=Math.floor((i-1)/76),o=new Uint8Array(i+a*2),s=0,c=0;for(let e=0;e<n.length;e+=3){let i=n[e],a=n[e+1]??0,l=n[e+2]??0,u=i>>2,d=(i&3)<<4|a>>4,f=(a&15)<<2|l>>6,p=l&63;o[s++]=r[u],o[s++]=r[d],o[s++]=r[f],o[s++]=r[p],c+=4,c===76&&s<o.length&&(c=0,o[s++]=t.CR,o[s++]=t.LF)}let l=n.length%3;return l===1?(o[s-2]=e.PADDING_CHAR_CODE,o[s-1]=e.PADDING_CHAR_CODE):l===2&&(o[s-1]=e.PADDING_CHAR_CODE),e.decoder.decode(o.subarray(0,s))};decode=n=>{let r=e.DECODE_TABLE,i=new Uint8Array(n.length),a=0;for(let e=0;e<n.length;e++){let r=n.charCodeAt(e);r!==t.CR&&r!==t.LF&&r!==t.SP&&r!==t.HT&&(i[a++]=r)}if(a%4!=0)throw new p(`Invalid length string`);let o=-1;for(let t=0;t<a;t++)if(i[t]===e.PADDING_CHAR_CODE){o=t;break}if(o!==-1){if(o<a-2)throw new p(`Invalid padding position`);for(let t=o;t<a;t++)if(i[t]!==e.PADDING_CHAR_CODE)throw new p(`Invalid padding`);let t=a-o;if(t!==1&&t!==2)throw new p(`Invalid padding`)}let s=a,c=i[s-1]===e.PADDING_CHAR_CODE?i[s-2]===e.PADDING_CHAR_CODE?2:1:0,l=new Uint8Array(a/4*3-c),u=0;for(let t=0;t<a;t+=4){let n=i[t],a=i[t+1],o=i[t+2],s=i[t+3],c=r[n],d=r[a],f=o===e.PADDING_CHAR_CODE?0:r[o],m=s===e.PADDING_CHAR_CODE?0:r[s];if(c===255||d===255||o!==e.PADDING_CHAR_CODE&&f===255||s!==e.PADDING_CHAR_CODE&&m===255)throw new p(`Invalid Base64`);let h=c<<2|d>>4,g=(d&15)<<4|f>>2,_=(f&3)<<6|m;l[u++]=h,o!==e.PADDING_CHAR_CODE&&(l[u++]=g),s!==e.PADDING_CHAR_CODE&&(l[u++]=_)}return l}},_=class{},v=class extends _{encode(e){let t=new Uint8Array(e.length*2),n=0,r=null,i=0;for(let a=0;a<e.length;a++){let o=e[a];if(r===null){r=o,i=1;continue}if(r===o&&i<255){i++;continue}t[n++]=i,t[n++]=r,r=o,i=1}return r!==null&&(t[n++]=i,t[n++]=r),t.subarray(0,n)}decode(e){let t=[];for(let n=0;n<e.length;n+=2){let r=e[n],i=e[n+1];for(let e=0;e<r;e++)t.push(i)}return new Uint8Array(t)}},y=class{constructor(){}static base64=e=>{switch(e){case`rfc4648`:return new h;case`rfc4648-url`:return new g;case`rfc2025`:return new m;default:return new h}};static base32=e=>{switch(e){case`rfc4649`:return new l;case`rfc464hex`:return new u;default:return new l}};static base16=()=>new a;static runLength=e=>{switch(e){default:return new v}}};export{e as Base16,o as Base32,d as Base64,y as Kasten,_ as RunLength};
1
+ var e=class{},t=class{static CR=13;static LF=10;static SP=32;static HT=9;constructor(){}},n=class extends Error{},r=class extends n{},i=class extends r{};(class n extends e{static textDecoder=new TextDecoder;static TABLE=`0123456789ABCDEF`;static ENCODED_TABLE=new Uint8Array([...this.TABLE].map(e=>e.charCodeAt(0)));static DECODED_TABLE=new Uint8Array(256);static{this.DECODED_TABLE.fill(255);for(let e=0;e<this.TABLE.length;e++)this.DECODED_TABLE[this.TABLE.charCodeAt(e)]=e}encode(e){let t=n.ENCODED_TABLE,r=new Uint8Array(e.length*2),i=0;for(let n of e){let e=(n&240)>>4,a=n&15,o=t[e],s=t[a];r[i++]=o,r[i++]=s}return n.textDecoder.decode(r)}decode(e){let r=n.DECODED_TABLE,{CR:a,LF:o,SP:s,HT:c}=t,l=e.toUpperCase(),u=new Uint8Array(e.length),d=0;for(let t=0;t<e.length;t++){let n=l.charCodeAt(t);if(!(n===a||n===o||n===s||n===c)){if(!r[n]||r[n]==255)throw new i(`Invalid Base16 character: ${e.charAt(t)}`);u[d++]=n}}if(d%2!=0)throw new i(`Invalid Base16`);let f=new Uint8Array(Math.ceil(e.length/2)),p=0;for(let e=0;e<d;e+=2){let t=u[e],n=u[e+1],i=r[t],a=r[n],o=(i&15)<<4|a&15;f[p++]=o}return f.subarray(0,p)}});var a=class{static textDecoder=new TextDecoder},o=class extends n{},s=class extends o{};(class e extends a{static PADDING_CHAR_CODE=61;static TABLE=`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567`;static ENCODED_TABLE=new Uint8Array([...this.TABLE].map(e=>e.charCodeAt(0)));static DECODED_TABLE=new Uint8Array(256);static{this.DECODED_TABLE.fill(255);for(let e=0;e<this.TABLE.length;e++)this.DECODED_TABLE[this.TABLE.charCodeAt(e)]=e}encode(t){let n=e.ENCODED_TABLE,r=new Uint8Array(Math.ceil(t.length/5)*8),i=0;for(let e=0;e<t.length;e+=5){let a=t[e],o=t[e+1]??0,s=t[e+2]??0,c=t[e+3]??0,l=t[e+4]??0,u=(a&255)>>3,d=(a&7)<<2|(o&192)>>6,f=(o&62)>>1,p=(o&1)<<4|(s&240)>>4,m=(s&15)<<1|(c&128)>>7,h=(c&124)>>2,g=(c&3)<<3|(l&224)>>5,_=l&31,v=n[u],y=n[d],b=n[f],x=n[p],S=n[m],C=n[h],w=n[g],T=n[_];r[i++]=v,r[i++]=y,r[i++]=b,r[i++]=x,r[i++]=S,r[i++]=C,r[i++]=w,r[i++]=T}let o=t.length%5,s=o===4?1:o===3?3:o===2?4:o===1?6:0;for(let t=s;t>0;t--)r[i-t]=e.PADDING_CHAR_CODE;return a.textDecoder.decode(r.subarray(0,i))}decode(n){let r=n.toUpperCase(),i=e.DECODED_TABLE,a=e.PADDING_CHAR_CODE,{CR:o,LF:c,SP:l,HT:u}=t,d=new Uint8Array(n.length),f=0;for(let e=0;e<n.length;e++){let t=r.charCodeAt(e);t!==o&&t!==c&&t!==l&&t!==u&&(d[f++]=t)}if(f%8!=0)throw new s(`Invalid length string.`);let p=-1;for(let e=0;e<f;e++)if(d[e]===a){p=e;break}let m=0;if(p!==-1){if(p<f-6)throw new s(`Invalid padding position.`);for(let e=p;e<f;e++)if(d[e]!==a)throw new s(`Invalid padding`);if(m=f-p,m!==1&&m!==3&&m!==4&&m!==6)throw new s(`Invalid padding`)}let h=new Uint8Array(Math.floor((f-m)*5/8)),g=0;for(let e=0;e<f;e+=8){let t=d[e],n=d[e+1],r=d[e+2],o=d[e+3],c=d[e+4],l=d[e+5],u=d[e+6],f=d[e+7],p=i[t],m=i[n],_=r===a?0:i[r],v=o===a?0:i[o],y=c===a?0:i[c],b=l===a?0:i[l],x=u===a?0:i[u],S=f===a?0:i[f];if(p===255||m===255||_===255||v===255||y===255||b===255||x===255||S===255)throw new s(`Invalid Base32`);let C=(p&31)<<3|(m&28)>>2,w=(m&3)<<6|(_&31)<<1|(v&16)>>4,T=(v&15)<<4|(y&30)>>1,E=(y&1)<<7|(b&31)<<2|(x&24)>>3,D=(x&7)<<5|S&31;h[g++]=C,g<h.length&&(h[g++]=w),g<h.length&&(h[g++]=T),g<h.length&&c!==a&&(h[g++]=E),g<h.length&&u!=a&&(h[g++]=D)}return h.subarray(0,g)}}),class e extends a{static PADDING_CHAR_CODE=61;static TABLE=`0123456789ABCDEFGHIJKLMNOPQRSTUV`;static ENCODED_TABLE=new Uint8Array([...this.TABLE].map(e=>e.charCodeAt(0)));static DECODED_TABLE=new Uint8Array(256);static{this.DECODED_TABLE.fill(255);for(let e=0;e<this.TABLE.length;e++)this.DECODED_TABLE[this.TABLE.charCodeAt(e)]=e}encode(t){let n=e.ENCODED_TABLE,r=new Uint8Array(Math.ceil(t.length/5)*8),i=0;for(let e=0;e<t.length;e+=5){let a=t[e],o=t[e+1]??0,s=t[e+2]??0,c=t[e+3]??0,l=t[e+4]??0,u=(a&255)>>3,d=(a&7)<<2|(o&192)>>6,f=(o&62)>>1,p=(o&1)<<4|(s&240)>>4,m=(s&15)<<1|(c&128)>>7,h=(c&124)>>2,g=(c&3)<<3|(l&224)>>5,_=l&31,v=n[u],y=n[d],b=n[f],x=n[p],S=n[m],C=n[h],w=n[g],T=n[_];r[i++]=v,r[i++]=y,r[i++]=b,r[i++]=x,r[i++]=S,r[i++]=C,r[i++]=w,r[i++]=T}let o=t.length%5,s=o===4?1:o===3?3:o===2?4:o===1?6:0;for(let t=s;t>0;t--)r[i-t]=e.PADDING_CHAR_CODE;return a.textDecoder.decode(r.subarray(0,i))}decode(n){let r=n.toUpperCase(),i=e.DECODED_TABLE,a=e.PADDING_CHAR_CODE,{CR:o,LF:c,SP:l,HT:u}=t,d=new Uint8Array(n.length),f=0;for(let e=0;e<n.length;e++){let t=r.charCodeAt(e);t!==o&&t!==c&&t!==l&&t!==u&&(d[f++]=t)}if(f%8!=0)throw new s(`Invalid length string.`);let p=-1;for(let e=0;e<f;e++)if(d[e]===a){p=e;break}let m=0;if(p!==-1){if(p<f-6)throw new s(`Invalid padding position.`);for(let e=p;e<f;e++)if(d[e]!==a)throw new s(`Invalid padding`);if(m=f-p,m!==1&&m!==3&&m!==4&&m!==6)throw new s(`Invalid padding`)}let h=new Uint8Array(Math.floor((f-m)*5/8)),g=0;for(let e=0;e<f;e+=8){let t=d[e],n=d[e+1],r=d[e+2],o=d[e+3],c=d[e+4],l=d[e+5],u=d[e+6],f=d[e+7],p=i[t],m=i[n],_=r===a?0:i[r],v=o===a?0:i[o],y=c===a?0:i[c],b=l===a?0:i[l],x=u===a?0:i[u],S=f===a?0:i[f];if(p===255||m===255||_===255||v===255||y===255||b===255||x===255||S===255)throw new s(`Invalid Base32`);let C=(p&31)<<3|(m&28)>>2,w=(m&3)<<6|(_&31)<<1|(v&16)>>4,T=(v&15)<<4|(y&30)>>1,E=(y&1)<<7|(b&31)<<2|(x&24)>>3,D=(x&7)<<5|S&31;h[g++]=C,g<h.length&&(h[g++]=w),g<h.length&&(h[g++]=T),g<h.length&&c!==a&&(h[g++]=E),g<h.length&&u!=a&&(h[g++]=D)}return h.subarray(0,g)}};var c=class{},l=class extends n{},u=class extends l{};(class e extends c{static PADDING_CHAR_CODE=61;static TABLE=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`;static DECODE_TABLE=new Uint8Array(256);static ENCODE_TABLE=new Uint8Array([...this.TABLE].map(e=>e.charCodeAt(0)));static decoder=new TextDecoder;static{this.DECODE_TABLE.fill(255);for(let e=0;e<this.TABLE.length;e++)this.DECODE_TABLE[this.TABLE.charCodeAt(e)]=e}encode=n=>{if(n.length===0)return``;let r=e.ENCODE_TABLE,i=Math.ceil(n.length/3)*4,a=Math.floor((i-1)/76),o=new Uint8Array(i+a*2),s=0,c=0;for(let e=0;e<n.length;e+=3){let i=n[e],a=n[e+1]??0,l=n[e+2]??0,u=i>>2,d=(i&3)<<4|a>>4,f=(a&15)<<2|l>>6,p=l&63;o[s++]=r[u],o[s++]=r[d],o[s++]=r[f],o[s++]=r[p],c+=4,c===76&&s<o.length&&(c=0,o[s++]=t.CR,o[s++]=t.LF)}let l=n.length%3;return l===1?(o[s-2]=e.PADDING_CHAR_CODE,o[s-1]=e.PADDING_CHAR_CODE):l===2&&(o[s-1]=e.PADDING_CHAR_CODE),e.decoder.decode(o.subarray(0,s))};decode=n=>{let r=e.DECODE_TABLE,i=new Uint8Array(n.length),a=0;for(let e=0;e<n.length;e++){let r=n.charCodeAt(e);r!==t.CR&&r!==t.LF&&r!==t.SP&&r!==t.HT&&(i[a++]=r)}if(a%4!=0)throw new u(`Invalid length string`);let o=-1;for(let t=0;t<a;t++)if(i[t]===e.PADDING_CHAR_CODE){o=t;break}if(o!==-1){if(o<a-2)throw new u(`Invalid padding position`);for(let t=o;t<a;t++)if(i[t]!==e.PADDING_CHAR_CODE)throw new u(`Invalid padding`);let t=a-o;if(t!==1&&t!==2)throw new u(`Invalid padding`)}let s=a,c=i[s-1]===e.PADDING_CHAR_CODE?i[s-2]===e.PADDING_CHAR_CODE?2:1:0,l=new Uint8Array(a/4*3-c),d=0;for(let t=0;t<a;t+=4){let n=i[t],a=i[t+1],o=i[t+2],s=i[t+3],c=r[n],f=r[a],p=o===e.PADDING_CHAR_CODE?0:r[o],m=s===e.PADDING_CHAR_CODE?0:r[s];if(c===255||f===255||o!==e.PADDING_CHAR_CODE&&p===255||s!==e.PADDING_CHAR_CODE&&m===255)throw new u(`Invalid Base64`);let h=c<<2|f>>4,g=(f&15)<<4|p>>2,_=(p&3)<<6|m;l[d++]=h,o!==e.PADDING_CHAR_CODE&&(l[d++]=g),s!==e.PADDING_CHAR_CODE&&(l[d++]=_)}return l}}),class e extends c{static PADDING_CHAR_CODE=61;static TABLE=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`;static DECODE_TABLE=new Uint8Array(256);static ENCODE_TABLE=new Uint8Array([...this.TABLE].map(e=>e.charCodeAt(0)));static decoder=new TextDecoder;static{this.DECODE_TABLE.fill(255);for(let e=0;e<this.TABLE.length;e++)this.DECODE_TABLE[this.TABLE.charCodeAt(e)]=e}encode=t=>{if(t.length===0)return``;let n=e.ENCODE_TABLE,r=Math.ceil(t.length/3)*4,i=Math.floor((r-1)/76),a=new Uint8Array(r+i*2),o=0;for(let e=0;e<t.length;e+=3){let r=t[e],i=t[e+1]??0,s=t[e+2]??0,c=r>>2,l=(r&3)<<4|i>>4,u=(i&15)<<2|s>>6,d=s&63;a[o++]=n[c],a[o++]=n[l],a[o++]=n[u],a[o++]=n[d]}let s=t.length%3;return s===1?(a[o-2]=e.PADDING_CHAR_CODE,a[o-1]=e.PADDING_CHAR_CODE):s===2&&(a[o-1]=e.PADDING_CHAR_CODE),e.decoder.decode(a.subarray(0,o))};decode=n=>{let r=e.DECODE_TABLE,i=new Uint8Array(n.length),a=0;for(let e=0;e<n.length;e++){let r=n.charCodeAt(e);r!==t.CR&&r!==t.LF&&r!==t.SP&&r!==t.HT&&(i[a++]=r)}if(a%4!=0)throw new u(`Invalid length string`);let o=-1;for(let t=0;t<a;t++)if(i[t]===e.PADDING_CHAR_CODE){o=t;break}if(o!==-1){if(o<a-2)throw new u(`Invalid padding position`);for(let t=o;t<a;t++)if(i[t]!==e.PADDING_CHAR_CODE)throw new u(`Invalid padding`);let t=a-o;if(t!==1&&t!==2)throw new u(`Invalid padding`)}let s=a,c=i[s-1]===e.PADDING_CHAR_CODE?i[s-2]===e.PADDING_CHAR_CODE?2:1:0,l=new Uint8Array(a/4*3-c),d=0;for(let t=0;t<a;t+=4){let n=i[t],a=i[t+1],o=i[t+2],s=i[t+3],c=r[n],f=r[a],p=o===e.PADDING_CHAR_CODE?0:r[o],m=s===e.PADDING_CHAR_CODE?0:r[s];if(c===255||f===255||o!==e.PADDING_CHAR_CODE&&p===255||s!==e.PADDING_CHAR_CODE&&m===255)throw new u(`Invalid Base64`);let h=c<<2|f>>4,g=(f&15)<<4|p>>2,_=(p&3)<<6|m;l[d++]=h,o!==e.PADDING_CHAR_CODE&&(l[d++]=g),s!==e.PADDING_CHAR_CODE&&(l[d++]=_)}return l}},class e extends c{static PADDING_CHAR_CODE=61;static TABLE=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`;static DECODE_TABLE=new Uint8Array(256);static ENCODE_TABLE=new Uint8Array([...this.TABLE].map(e=>e.charCodeAt(0)));static decoder=new TextDecoder;static{this.DECODE_TABLE.fill(255);for(let e=0;e<this.TABLE.length;e++)this.DECODE_TABLE[this.TABLE.charCodeAt(e)]=e}encode=n=>{if(n.length===0)return``;let r=e.ENCODE_TABLE,i=Math.ceil(n.length/3)*4,a=Math.floor((i-1)/76),o=new Uint8Array(i+a*2),s=0,c=0;for(let e=0;e<n.length;e+=3){let i=n[e],a=n[e+1]??0,l=n[e+2]??0,u=i>>2,d=(i&3)<<4|a>>4,f=(a&15)<<2|l>>6,p=l&63;o[s++]=r[u],o[s++]=r[d],o[s++]=r[f],o[s++]=r[p],c+=4,c===76&&s<o.length&&(c=0,o[s++]=t.CR,o[s++]=t.LF)}let l=n.length%3;return l===1?(o[s-2]=e.PADDING_CHAR_CODE,o[s-1]=e.PADDING_CHAR_CODE):l===2&&(o[s-1]=e.PADDING_CHAR_CODE),e.decoder.decode(o.subarray(0,s))};decode=n=>{let r=e.DECODE_TABLE,i=new Uint8Array(n.length),a=0;for(let e=0;e<n.length;e++){let r=n.charCodeAt(e);r!==t.CR&&r!==t.LF&&r!==t.SP&&r!==t.HT&&(i[a++]=r)}if(a%4!=0)throw new u(`Invalid length string`);let o=-1;for(let t=0;t<a;t++)if(i[t]===e.PADDING_CHAR_CODE){o=t;break}if(o!==-1){if(o<a-2)throw new u(`Invalid padding position`);for(let t=o;t<a;t++)if(i[t]!==e.PADDING_CHAR_CODE)throw new u(`Invalid padding`);let t=a-o;if(t!==1&&t!==2)throw new u(`Invalid padding`)}let s=a,c=i[s-1]===e.PADDING_CHAR_CODE?i[s-2]===e.PADDING_CHAR_CODE?2:1:0,l=new Uint8Array(a/4*3-c),d=0;for(let t=0;t<a;t+=4){let n=i[t],a=i[t+1],o=i[t+2],s=i[t+3],c=r[n],f=r[a],p=o===e.PADDING_CHAR_CODE?0:r[o],m=s===e.PADDING_CHAR_CODE?0:r[s];if(c===255||f===255||o!==e.PADDING_CHAR_CODE&&p===255||s!==e.PADDING_CHAR_CODE&&m===255)throw new u(`Invalid Base64`);let h=c<<2|f>>4,g=(f&15)<<4|p>>2,_=(p&3)<<6|m;l[d++]=h,o!==e.PADDING_CHAR_CODE&&(l[d++]=g),s!==e.PADDING_CHAR_CODE&&(l[d++]=_)}return l}};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kasten-js",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "TypeScript Toolbox of Codecs and Cryptgraphies",
5
5
  "keywords": ["codec", "base64", "encoding", "decoding", "encode", "decode"],
6
6
  "author": "kkatou7209@gmail.com",