kasten-js 0.1.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 ADDED
@@ -0,0 +1,27 @@
1
+ # Kasten : TypeScript Toolbox of Codecs and Cryptgraphies
2
+
3
+ ## Features
4
+
5
+ - Base 64 Encoding/Decoding
6
+ - Base 32 Encoding/Decoding
7
+ - Base 16 Encoding/Decoding
8
+ - Run-Length Encoding/Decoding (WIP)
9
+ - LZ77 Encoding/Decoding (WIP)
10
+
11
+ ## Usage
12
+
13
+ Create codec instance with static methods of `Kasten`.
14
+
15
+ ```ts
16
+ const data: Uint8Array = ...;
17
+
18
+ const base64 = Kasten.base64('rfc4648');
19
+
20
+ const encoded: string = base64.encode(data);
21
+
22
+ const decoded: Uint8Array = base64.decode(encoded);
23
+ ```
24
+
25
+ ## Linsence
26
+
27
+ This project is licensed under the MIT License.
@@ -0,0 +1,102 @@
1
+ //#region src/base16/index.d.ts
2
+ declare abstract class Base16 {
3
+ /**
4
+ * Encodes bytes to Base16 string.
5
+ * @param bytes Bytes to be encoded.
6
+ */
7
+ abstract encode(bytes: Uint8Array): string;
8
+ /**
9
+ * Decodes Base16 string to bytes.
10
+ * @param base16 Base16 string to be decoded.
11
+ */
12
+ abstract decode(base16: string): Uint8Array;
13
+ }
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
+ //#region src/base32/index.d.ts
29
+ type Base32Category = typeof Base32Categories[number];
30
+ declare const Base32Categories: readonly ["rfc4649", "rfc464hex"];
31
+ declare abstract class Base32 {
32
+ protected static readonly textDecoder: TextDecoder;
33
+ /**
34
+ * Encodes bytes to Base32 string
35
+ * @param bytes Bytes to be encoded.
36
+ */
37
+ abstract encode(bytes: Uint8Array): string;
38
+ /**
39
+ * Decodes Base32 string to bytes.
40
+ * @param base32 Base32 string to be decoded.
41
+ */
42
+ abstract decode(base32: string): Uint8Array;
43
+ }
44
+ //#endregion
45
+ //#region src/base64/index.d.ts
46
+ type Base64Catgory = typeof Base64Categories[number];
47
+ declare const Base64Categories: readonly ["rfc4648", "rfc4648-url", "rfc2025"];
48
+ /**
49
+ * Base64 codec.
50
+ */
51
+ declare abstract class Base64 {
52
+ /**
53
+ * Encodes byte array to string.
54
+ */
55
+ abstract encode(bytes: Uint8Array): string;
56
+ /**
57
+ * Decodes string to byte array.
58
+ * @param base64 Base64 string
59
+ */
60
+ abstract decode(base64: string): Uint8Array;
61
+ }
62
+ //#endregion
63
+ //#region src/run-length/index.d.ts
64
+ declare const RunLengthCatgories: readonly ["basic"];
65
+ type RunLengthCatgory = typeof RunLengthCatgories[number];
66
+ /**
67
+ * Run-Length encoding and decoding.
68
+ */
69
+ declare abstract class RunLength {
70
+ /**
71
+ * Encodes bytes to Run-Length encoded bytes.
72
+ * @param bytes
73
+ */
74
+ abstract encode(bytes: Uint8Array): Uint8Array;
75
+ /**
76
+ * Decodes Run-Length encoded bytes to original bytes.
77
+ * @param runLength
78
+ */
79
+ abstract decode(runLength: Uint8Array): Uint8Array;
80
+ }
81
+ //#endregion
82
+ //#region src/api.d.ts
83
+ declare class Casten {
84
+ private constructor();
85
+ /**
86
+ * Creates Base 64 codec instance.
87
+ * @param category Base 64 category.
88
+ */
89
+ static base64: (category?: Base64Catgory) => Base64;
90
+ /**
91
+ * Creates Base 32 codec instance.
92
+ * @param category Base 32 category.
93
+ */
94
+ static base32: (category?: Base32Category) => Base32;
95
+ /**
96
+ * Create Base 16 codec instance.
97
+ */
98
+ static base16: () => RFC4648Base16;
99
+ static runLength: (category?: RunLengthCatgory) => RunLength;
100
+ }
101
+ //#endregion
102
+ export { Base16, Base32, Base64, Casten as Kasten, RunLength };
package/dist/index.js ADDED
@@ -0,0 +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};
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "kasten-js",
3
+ "version": "0.1.0",
4
+ "description": "TypeScript Toolbox of Codecs and Cryptgraphies",
5
+ "keywords": ["codec", "base64", "encoding", "decoding", "encode", "decode"],
6
+ "author": "kkatou7209@gmail.com",
7
+ "type": "module",
8
+ "license": "MIT",
9
+ "main": "./dist/index.js",
10
+ "types": "./dist/index.d.ts",
11
+ "module": "./dist/index.ts",
12
+ "files": ["dist"],
13
+ "exports": {
14
+ ".": {
15
+ "import": "./dist/index.js",
16
+ "require": "./dist/index.js",
17
+ "types": "./dist/index.d.ts"
18
+ }
19
+ },
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "https://github.com/kkatou7209/kasten"
23
+ },
24
+ "scripts": {
25
+ "build": "rolldown -c rolldown.config.ts"
26
+ },
27
+ "devDependencies": {
28
+ "@types/bun": "latest",
29
+ "@types/node": "^25.5.0",
30
+ "rolldown": "^1.0.0-rc.9",
31
+ "rolldown-plugin-dts": "^0.22.5"
32
+ },
33
+ "peerDependencies": {
34
+ "typescript": "^5"
35
+ }
36
+ }