typepki-strconv 0.1.0 → 0.3.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 +3 -0
- package/dist/import/checker.d.mts +11 -0
- package/dist/import/checker.d.mts.map +1 -0
- package/dist/import/conv_ba.d.mts +13 -1
- package/dist/import/conv_ba.d.mts.map +1 -1
- package/dist/import/index.d.mts +4 -2
- package/dist/import/index.d.mts.map +1 -1
- package/dist/import/index.mjs +4 -4
- package/dist/require/index.cjs +4 -4
- package/package.json +3 -2
- package/src/checker.mts +14 -0
- package/src/checker.test.mts +9 -0
- package/src/conv_ba.mts +20 -1
- package/src/conv_ba.test.mts +10 -0
- package/src/index.mts +6 -3
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
typepki-strconv: TypePKI string converters and utilities sub module for TypePKI library
|
|
2
2
|
====================================================================================
|
|
3
3
|
|
|
4
|
+
[TOP](https://kjur.github.io/typepki-strconv/) | [github](https://github.com/kjur/typepki-strconv) | [npm](https://www.npmjs.com/package/typepki-strconv) | [TypePKI](https://kjur.github.com/typepki/)
|
|
5
|
+
|
|
4
6
|
The 'TypePKI' library is an opensource free TypeScript PKI library which is the successor of the long lived [jsrsasign](https://kjur.github.io/jsrsasign) library.
|
|
5
7
|
|
|
6
8
|
The 'typepki-strconv' is a TypeScript string converters and utilities sub module for TypePKI library.
|
|
@@ -9,6 +11,7 @@ Following string types are supported:
|
|
|
9
11
|
- Base64 and Base64URL encoded string
|
|
10
12
|
- hexadecimal string
|
|
11
13
|
- ArrayBuffer
|
|
14
|
+
- byte array
|
|
12
15
|
- Zule time
|
|
13
16
|
- UTF8 string
|
|
14
17
|
- raw string
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* function to check if a string is a hexadecimal string
|
|
3
|
+
* @param h hexadecimal string
|
|
4
|
+
* @return checking result
|
|
5
|
+
* @example
|
|
6
|
+
* ishex("12ab") -> true
|
|
7
|
+
* ishex( "2ab") -> false
|
|
8
|
+
* ishex("12zz") -> false
|
|
9
|
+
*/
|
|
10
|
+
export declare function ishex(h: string): boolean;
|
|
11
|
+
//# sourceMappingURL=checker.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checker.d.mts","sourceRoot":"","sources":["../../src/checker.mts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAIxC"}
|
|
@@ -8,10 +8,22 @@
|
|
|
8
8
|
export declare function stohex(s: string): string;
|
|
9
9
|
/**
|
|
10
10
|
* convert an array of bytes(Number) to hexadecimal string.
|
|
11
|
-
* @param a -
|
|
11
|
+
* @param a - an array of byte
|
|
12
12
|
* @return hexadecimal string
|
|
13
|
+
* @see {@link hextoBA}
|
|
14
|
+
* @example
|
|
15
|
+
* hextoBA([97, 97, 97]) -> "616161"
|
|
13
16
|
*/
|
|
14
17
|
export declare function BAtohex(a: Array<number>): string;
|
|
18
|
+
/**
|
|
19
|
+
* convert an hexadecimal string to array of numbers.
|
|
20
|
+
* @param h - a hexadecimal string
|
|
21
|
+
* @return array of numbers
|
|
22
|
+
* @see {@link BAtohex}
|
|
23
|
+
* @example
|
|
24
|
+
* hextoBA("616161") -> [97, 97, 97]
|
|
25
|
+
*/
|
|
26
|
+
export declare function hextoBA(h: string): Array<number>;
|
|
15
27
|
/**
|
|
16
28
|
* convert a string to an array of character codes
|
|
17
29
|
* @param s - string
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conv_ba.d.mts","sourceRoot":"","sources":["../../src/conv_ba.mts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAExC;AAED
|
|
1
|
+
{"version":3,"file":"conv_ba.d.mts","sourceRoot":"","sources":["../../src/conv_ba.mts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAExC;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAQhD;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAMhD;AAGD;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAM9C;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAM9C"}
|
package/dist/import/index.d.mts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
declare const VERSION: string;
|
|
2
2
|
export { VERSION };
|
|
3
|
-
import {
|
|
4
|
-
export {
|
|
3
|
+
import { ishex } from "./checker.mts";
|
|
4
|
+
export { ishex };
|
|
5
|
+
import { BAtohex, BAtos, hextoBA, stoBA, stohex } from "./conv_ba.mts";
|
|
6
|
+
export { stohex, BAtohex, hextoBA, stoBA, BAtos };
|
|
5
7
|
import { Dictionary, aryval, b64tob64u, b64tohex, b64toutf8, b64utob64, b64utohex, b64utoutf8, binstrtobitstr, bitstrtobinstr, hextob64, hextob64u, hextorstr, hextoutf8, inttobitstr, namearraytobinstr, rstrtob64, rstrtohex, strpad, utf8tob64, utf8tob64u, utf8tohex } from "./conv.mts";
|
|
6
8
|
export { b64tohex, hextob64, b64toutf8, utf8tob64, b64utoutf8, utf8tob64u, hextoutf8, utf8tohex, b64utohex, hextob64u, b64tob64u, b64utob64, hextorstr, rstrtohex, binstrtobitstr, bitstrtobinstr, inttobitstr, strpad, namearraytobinstr, aryval, rstrtob64, };
|
|
7
9
|
export type { Dictionary };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/index.mts"],"names":[],"mappings":"AAAA,QAAA,MAAM,OAAO,EAAE,MAA+D,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/index.mts"],"names":[],"mappings":"AAAA,QAAA,MAAM,OAAO,EAAE,MAA+D,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAElD,OAAO,EACL,UAAU,EACV,MAAM,EACN,SAAS,EACT,QAAQ,EACR,SAAS,EACT,SAAS,EACT,SAAS,EACT,UAAU,EACV,cAAc,EACd,cAAc,EACd,QAAQ,EACR,SAAS,EACT,SAAS,EACT,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,SAAS,EACT,MAAM,EACN,SAAS,EACT,UAAU,EACV,SAAS,EACV,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,cAAc,EACd,cAAc,EACd,WAAW,EACX,MAAM,EACN,iBAAiB,EACjB,MAAM,EACN,SAAS,GACV,CAAC;AACF,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;AAEhD,OAAO,EACL,UAAU,EACV,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACT,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAEtE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;AAE9C,OAAO,EACL,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AAEhF,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AAE3D,OAAO,EACL,OAAO,EACP,SAAS,EACT,SAAS,EACT,WAAW,EACX,OAAO,EACP,SAAS,EACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/import/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function x(r){return C(
|
|
2
|
-
`){return`-----BEGIN ${t}-----${e}${d(h(r),64)}${e}-----END ${t}-----${e}`}function
|
|
3
|
-
`){return`-----BEGIN ${t}-----${e}${d(r,64,e)}${e}-----END ${t}-----${e}`}function
|
|
4
|
-
`){let n=r;return n=n.replace(new RegExp(`(.{${t}})`,"g"),`$1${e}`),n=n.replace(/\s+$/,""),n}function
|
|
1
|
+
function z(r){return!(r.length%2===1||r.match(/^[0-9a-f]+$/)==null)}function x(r){return B(C(r))}function B(r){let t="";for(let e=0;e<r.length;e++){let n=r[e].toString(16);n.length===1&&(n=`0${n}`),t=t+n}return t}function j(r){let t=[];for(let e=0;e<r.length;e+=2)t.push(parseInt(r.slice(e,e+2),16));return t}function C(r){let t=new Array;for(let e=0;e<r.length;e++)t[e]=r.charCodeAt(e);return t}function N(r){let t="";for(let e=0;e<r.length;e++)t=t+String.fromCharCode(r[e]);return t}function a(r){return Buffer.from(r,"base64").toString("hex")}function h(r){return Buffer.from(r,"hex").toString("base64")}function k(r){return Buffer.from(r,"base64").toString("utf8")}function F(r){return Buffer.from(r,"utf8").toString("base64")}function R(r){return Buffer.from($(r),"base64").toString("utf8")}function Z(r){return b(Buffer.from(r,"utf8").toString("base64"))}function c(r){return Buffer.from(r,"hex").toString("utf8")}function m(r){return Buffer.from(r,"utf8").toString("hex")}function G(r){return a($(r))}function V(r){return b(h(r))}function _(r){let t="";for(let e=0;e<r.length;e+=2){let n=parseInt(r.substr(e,2),16);t+=String.fromCharCode(n)}return t}function L(r){let t="";for(let e=0;e<r.length;e++)t+=`0${r.charCodeAt(e).toString(16)}`.slice(-2);return t}function O(r){return Buffer.from(r).toString("base64")}function b(r){let t=r;return t=t.replace(/\=/g,""),t=t.replace(/\+/g,"-"),t=t.replace(/\//g,"_"),t}function $(r){let t=r;return t.length%4===2?t=`${t}==`:t.length%4===3&&(t=`${t}=`),t=t.replace(/-/g,"+"),t=t.replace(/_/g,"/"),t}var P=r=>{if(r.match(/^[01]+$/)==null)return null;try{let t=parseInt(r,2);return E(t)}catch{return null}};function Y(r){if(typeof r!="string"||r.length%2!==0||!r.match(/^[0-9a-f]+$/))return null;try{let t=parseInt(r.substr(0,2),16);if(t<0||7<t)return null;let e=r.substr(2),n="";for(let i=0;i<e.length;i+=2){let o=e.substr(i,2),s=parseInt(o,16).toString(2);s=`0000000${s}`.slice(-8),n+=s}return n.substr(0,n.length-t)}catch{return null}}function E(r){if(typeof r!="number"||r<0)return null;let t=Number(r).toString(2),e=8-t.length%8;e===8&&(e=0),t=t+U("",e,"0");let n=parseInt(t,2).toString(16);return n.length%2===1&&(n=`0${n}`),`0${e}`+n}var U=(r,t,e)=>{let n=e===void 0?"0":e;return r.length>=t?r:new Array(t-r.length+1).join(n)+r};function q(r,t){let e=0;for(let o=0;o<r.length;o++)e|=1<<t[r[o]];let n=e.toString(2),i="";for(let o=n.length-1;o>=0;o--)i+=n[o];return i}function J(r,t,e){let n=r,i=t.split(".");for(let o=0;o<i.length&&n;o++){let s=i[o];if(typeof n=="object"&&"length"in n&&s.match(/^[0-9]+$/))n=n[parseInt(s)];else if(typeof n=="object"&&s in n)n=n[s];else return e}return n||n===!1?n:e}function K(r){return c(W(r))}function Q(r){return X(m(r))}function W(r){let t=r.match(/.{1,2}/g);if(t==null)return"";let e=[];for(let n=0;n<t.length;n++){let i=parseInt(t[n],16);161<=i&&i<=191?(e.push("c2"),e.push(t[n])):192<=i&&i<=255?(e.push("c3"),e.push((i-64).toString(16))):e.push(t[n])}return e.join("")}function X(r){let t=r.match(/.{1,2}/g);if(t==null)return"";let e=[];for(let n=0;n<t.length;n++)if(t[n]==="c2")n++,e.push(t[n]);else if(t[n]==="c3"){n++;let i=parseInt(t[n],16)+64;e.push(i.toString(16))}else e.push(t[n]);return e.join("")}function H(r,t,e=`\r
|
|
2
|
+
`){return`-----BEGIN ${t}-----${e}${d(h(r),64)}${e}-----END ${t}-----${e}`}function tt(r,t){return a(T(r,t))}function T(r,t){let e=r;if(e.indexOf("-----BEGIN ")===-1)throw new Error("can't find PEM header");return t!==void 0?(e=e.replace(new RegExp(`^[^-]*-----BEGIN ${t}-----`),""),e=e.replace(new RegExp(`-----END ${t}-----[^-]*$`),"")):(e=e.replace(/^[^-]*-----BEGIN [^-]+-----/,""),e=e.replace(/-----END [^-]+-----[^-]*$/,"")),e.replace(/\s+/g,"")}function rt(r,t,e=`\r
|
|
3
|
+
`){return`-----BEGIN ${t}-----${e}${d(r,64,e)}${e}-----END ${t}-----${e}`}function et(r){let t=r.replace(/[^0-9A-Za-z\/+=]*/g,"");return a(t)}function d(r,t,e=`\r
|
|
4
|
+
`){let n=r;return n=n.replace(new RegExp(`(.{${t}})`,"g"),`$1${e}`),n=n.replace(/\s+$/,""),n}function nt(r){if(r.length%2!==0)throw"input is not even length";if(r.match(/^[0-9A-Fa-f]+$/)==null)throw"input is not hexadecimal";let t=new ArrayBuffer(r.length/2),e=new DataView(t);for(let n=0;n<r.length/2;n++)e.setUint8(n,parseInt(r.substr(n*2,2),16));return t}function ot(r){let t="",e=new DataView(r);for(let n=0;n<r.byteLength;n++)t+=`00${e.getUint8(n).toString(16)}`.slice(-2);return t}function y(r){let t=r,e,n,i,o,s,f,u,g,p;t=v(t);let l=t.match(/^(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(|\.\d+)Z$/);if(l)return e=parseInt(l[1]),n=parseInt(l[2])-1,i=parseInt(l[3]),o=parseInt(l[4]),s=parseInt(l[5]),f=parseInt(l[6]),u=0,g=l[7],g!==""&&(p=`${g.substr(1)}00`.substr(0,3),u=parseInt(p)),Date.UTC(e,n,i,o,s,f,u);throw new Error(`unsupported zulu format: ${t}`)}function it(r){let t=new Date(r),e=`0000${t.getUTCFullYear()}`.slice(-4),n=`00${t.getUTCMonth()+1}`.slice(-2),i=`00${t.getUTCDate()}`.slice(-2),o=`00${t.getUTCHours()}`.slice(-2),s=`00${t.getUTCMinutes()}`.slice(-2),f=`00${t.getUTCSeconds()}`.slice(-2),u=`000${t.getUTCMilliseconds()}`.slice(-3);return u=u.replace(/0+$/,""),u=u!==""?`.${u}`:u,`${e+n+i+o+s+f+u}Z`}function st(r){return Math.round(y(r)/1e3)}function ut(r){return new Date(y(r))}function lt(r,t=!1,e=!1){let n,i=r.getUTCFullYear();if(t){if(i<1950||2049<i)throw new Error(`not proper year for UTCTime: ${i}`);n=`${i}`.slice(-2)}else n=`000${i}`.slice(-4);if(n+=`0${r.getUTCMonth()+1}`.slice(-2),n+=`0${r.getUTCDate()}`.slice(-2),n+=`0${r.getUTCHours()}`.slice(-2),n+=`0${r.getUTCMinutes()}`.slice(-2),n+=`0${r.getUTCSeconds()}`.slice(-2),e){let o=r.getUTCMilliseconds();if(o!==0){let s=`00${o}`.slice(-3);s=s.replace(/0+$/g,""),n+=`.${s}`}}return n+="Z",n}function v(r){return r.match(/^[0-9]{12}Z$/)||r.match(/^[0-9]{12}[.][0-9]*Z$/)?r.match(/^[0-4]/)?`20${r}`:`19${r}`:r}function ft(r){return r.replace(/%/g,"")}function ct(r){return r.replace(/(..)/g,"%$1")}function gt(r){let t=encodeURIComponent(r),e="";for(let n=0;n<t.length;n++)t[n]==="%"?(e=e+t.substr(n,3),n=n+2):e=`${e}%${x(t[n])}`;return e}function w(r){let t=r,e="malformed IPv6 address";if(!t.match(/^[0-9A-Fa-f:]+$/))throw e;t=t.toLowerCase();let n=t.split(":").length-1;if(n<2)throw e;let i=":".repeat(7-n+2);t=t.replace("::",i);let o=t.split(":");if(o.length!==8)throw e;for(let s=0;s<8;s++)o[s]=`0000${o[s]}`.slice(-4);return o.join("")}function I(r){let t=r;if(!t.match(/^[0-9A-Fa-f]{32}$/))throw new Error(`malformed IPv6 address: ${t}`);t=t.toLowerCase();let e=t.match(/.{1,4}/g)||[];e=e.map(o=>o.replace(/^0+/,"")),e=e.map(o=>o===""?"0":o),t=`:${e.join(":")}:`;let n=t.match(/:(0:){2,}/g);if(n==null)return t.slice(1,-1);let i=n.sort().slice(-1)[0];return t=t.replace(i.substr(0,i.length-1),":"),t.substr(0,2)!=="::"&&(t=t.substr(1)),t.substr(-2,2)!=="::"&&(t=t.substr(0,t.length-1)),t}function D(r){let t=new Error("malformed hex value");if(!r.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/))throw t;if(r.length===8){let e;try{return e=`${parseInt(r.substr(0,2),16)}.${parseInt(r.substr(2,2),16)}.${parseInt(r.substr(4,2),16)}.${parseInt(r.substr(6,2),16)}`,e}catch{throw t}}else if(r.length===16)try{return`${D(r.substr(0,8))}/${A(r.substr(8))}`}catch{throw t}else{if(r.length===32)return I(r);if(r.length===64)try{return`${I(r.substr(0,32))}/${A(r.substr(32))}`}catch{throw t}else return r}}function M(r){let t=r,e=new Error("malformed IP address");if(t=t.toLowerCase(),!t.match(/^[0-9a-f.:/]+$/))throw e;if(t.match(/^[0-9.]+$/)){let n=t.split(".");if(n.length!==4)throw e;let i="";try{for(let o=0;o<4;o++){let s=parseInt(n[o]);i+=`0${s.toString(16)}`.slice(-2)}return i}catch{throw e}}else if(t.match(/^[0-9.]+\/[0-9]+$/)){let n=t.split("/");return M(n[0])+S(parseInt(n[1]),32)}else{if(t.match(/^[0-9a-f:]+$/)&&t.indexOf(":")!==-1)return w(t);if(t.match(/^[0-9a-f:]+\/[0-9]+$/)&&t.indexOf(":")!==-1){let n=t.split("/");return w(n[0])+S(parseInt(n[1]),128)}else throw e}}function A(r){let t=new Error("malformed mask"),e;try{e=parseInt(r,16).toString(2)}catch{throw t}if(!e.match(/^1*0*$/))throw t;return e.replace(/0+$/,"").length}function S(r,t){if(t===32&&r===0)return"00000000";if(t===128&&r===0)return"00000000000000000000000000000000";let e=Array(r+1).join("1")+Array(t-r+1).join("0");return parseInt(e,2).toString(16)}function at(r){function t(i){let o=parseInt(i.substr(0,2),16),s=parseInt(i.substr(2),16);if(o===0&&s<128)return String.fromCharCode(s);if(o<8){let p=192|(o&7)<<3|(s&192)>>6,l=128|s&63;return c(p.toString(16)+l.toString(16))}let f=224|(o&240)>>4,u=128|(o&15)<<2|(s&192)>>6,g=128|s&63;return c(f.toString(16)+u.toString(16)+g.toString(16))}let e=r.match(/.{4}/g);return e==null?"":e.map(t).join("")}var Et="typepki-strconv 0.3.0 kjur.github.io/typepki-strconv";export{ot as ArrayBuffertohex,B as BAtohex,N as BAtos,Et as VERSION,J as aryval,et as b64nltohex,b as b64tob64u,a as b64tohex,rt as b64topem,k as b64toutf8,$ as b64utob64,G as b64utohex,R as b64utoutf8,P as binstrtobitstr,Y as bitstrtobinstr,lt as datetozulu,gt as encodeURIComponentAll,d as foldnl,nt as hextoArrayBuffer,j as hextoBA,h as hextob64,V as hextob64u,D as hextoip,I as hextoipv6,H as hextopem,_ as hextorstr,ct as hextouricmp,c as hextoutf8,E as inttobitstr,S as ipnetmask,A as ipprefixlen,M as iptohex,w as ipv6tohex,z as ishex,K as iso88591hextoutf8,it as msectozulu,q as namearraytobinstr,T as pemtob64,tt as pemtohex,O as rstrtob64,L as rstrtohex,C as stoBA,x as stohex,U as strpad,v as timetogen,at as ucs2hextoutf8,ft as uricmptohex,F as utf8tob64,Z as utf8tob64u,m as utf8tohex,Q as utf8toiso88591hex,ut as zulutodate,y as zulutomsec,st as zulutosec};
|
package/dist/require/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var E=Object.defineProperty;var
|
|
2
|
-
`){return`-----BEGIN ${t}-----${e}${w(h(r),64)}${e}-----END ${t}-----${e}`}function
|
|
3
|
-
`){return`-----BEGIN ${t}-----${e}${w(r,64,e)}${e}-----END ${t}-----${e}`}function
|
|
4
|
-
`){let n=r;return n=n.replace(new RegExp(`(.{${t}})`,"g"),`$1${e}`),n=n.replace(/\s+$/,""),n}var
|
|
1
|
+
"use strict";var E=Object.defineProperty;var Bt=Object.getOwnPropertyDescriptor;var Ct=Object.getOwnPropertyNames;var Et=Object.prototype.hasOwnProperty;var l=(r,t)=>()=>(r&&(t=r(r=0)),t);var Ut=(r,t)=>{for(var e in t)E(r,e,{get:t[e],enumerable:!0})},Tt=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ct(t))!Et.call(r,o)&&o!==e&&E(r,o,{get:()=>t[o],enumerable:!(n=Bt(t,o))||n.enumerable});return r};var vt=r=>Tt(E({},"__esModule",{value:!0}),r);function F(r){return!(r.length%2===1||r.match(/^[0-9a-f]+$/)==null)}var R=l(()=>{"use strict"});function b(r){return U(T(r))}function U(r){let t="";for(let e=0;e<r.length;e++){let n=r[e].toString(16);n.length===1&&(n=`0${n}`),t=t+n}return t}function Z(r){let t=[];for(let e=0;e<r.length;e+=2)t.push(parseInt(r.slice(e,e+2),16));return t}function T(r){let t=new Array;for(let e=0;e<r.length;e++)t[e]=r.charCodeAt(e);return t}function G(r){let t="";for(let e=0;e<r.length;e++)t=t+String.fromCharCode(r[e]);return t}var v=l(()=>{"use strict"});function a(r){return Buffer.from(r,"base64").toString("hex")}function h(r){return Buffer.from(r,"hex").toString("base64")}function V(r){return Buffer.from(r,"base64").toString("utf8")}function _(r){return Buffer.from(r,"utf8").toString("base64")}function L(r){return Buffer.from(y(r),"base64").toString("utf8")}function O(r){return d(Buffer.from(r,"utf8").toString("base64"))}function c(r){return Buffer.from(r,"hex").toString("utf8")}function $(r){return Buffer.from(r,"utf8").toString("hex")}function P(r){return a(y(r))}function Y(r){return d(h(r))}function q(r){let t="";for(let e=0;e<r.length;e+=2){let n=parseInt(r.substr(e,2),16);t+=String.fromCharCode(n)}return t}function J(r){let t="";for(let e=0;e<r.length;e++)t+=`0${r.charCodeAt(e).toString(16)}`.slice(-2);return t}function K(r){return Buffer.from(r).toString("base64")}function d(r){let t=r;return t=t.replace(/\=/g,""),t=t.replace(/\+/g,"-"),t=t.replace(/\//g,"_"),t}function y(r){let t=r;return t.length%4===2?t=`${t}==`:t.length%4===3&&(t=`${t}=`),t=t.replace(/-/g,"+"),t=t.replace(/_/g,"/"),t}function W(r){if(typeof r!="string"||r.length%2!==0||!r.match(/^[0-9a-f]+$/))return null;try{let t=parseInt(r.substr(0,2),16);if(t<0||7<t)return null;let e=r.substr(2),n="";for(let o=0;o<e.length;o+=2){let i=e.substr(o,2),s=parseInt(i,16).toString(2);s=`0000000${s}`.slice(-8),n+=s}return n.substr(0,n.length-t)}catch{return null}}function D(r){if(typeof r!="number"||r<0)return null;let t=Number(r).toString(2),e=8-t.length%8;e===8&&(e=0),t=t+M("",e,"0");let n=parseInt(t,2).toString(16);return n.length%2===1&&(n=`0${n}`),`0${e}`+n}function X(r,t){let e=0;for(let i=0;i<r.length;i++)e|=1<<t[r[i]];let n=e.toString(2),o="";for(let i=n.length-1;i>=0;i--)o+=n[i];return o}function H(r,t,e){let n=r,o=t.split(".");for(let i=0;i<o.length&&n;i++){let s=o[i];if(typeof n=="object"&&"length"in n&&s.match(/^[0-9]+$/))n=n[parseInt(s)];else if(typeof n=="object"&&s in n)n=n[s];else return e}return n||n===!1?n:e}var Q,M,x=l(()=>{"use strict";Q=r=>{if(r.match(/^[01]+$/)==null)return null;try{let t=parseInt(r,2);return D(t)}catch{return null}};M=(r,t,e)=>{let n=e===void 0?"0":e;return r.length>=t?r:new Array(t-r.length+1).join(n)+r}});function tt(r){return c(Dt(r))}function rt(r){return Mt($(r))}function Dt(r){let t=r.match(/.{1,2}/g);if(t==null)return"";let e=[];for(let n=0;n<t.length;n++){let o=parseInt(t[n],16);161<=o&&o<=191?(e.push("c2"),e.push(t[n])):192<=o&&o<=255?(e.push("c3"),e.push((o-64).toString(16))):e.push(t[n])}return e.join("")}function Mt(r){let t=r.match(/.{1,2}/g);if(t==null)return"";let e=[];for(let n=0;n<t.length;n++)if(t[n]==="c2")n++,e.push(t[n]);else if(t[n]==="c3"){n++;let o=parseInt(t[n],16)+64;e.push(o.toString(16))}else e.push(t[n]);return e.join("")}var et=l(()=>{"use strict";x()});function nt(r,t,e=`\r
|
|
2
|
+
`){return`-----BEGIN ${t}-----${e}${w(h(r),64)}${e}-----END ${t}-----${e}`}function ot(r,t){return a(z(r,t))}function z(r,t){let e=r;if(e.indexOf("-----BEGIN ")===-1)throw new Error("can't find PEM header");return t!==void 0?(e=e.replace(new RegExp(`^[^-]*-----BEGIN ${t}-----`),""),e=e.replace(new RegExp(`-----END ${t}-----[^-]*$`),"")):(e=e.replace(/^[^-]*-----BEGIN [^-]+-----/,""),e=e.replace(/-----END [^-]+-----[^-]*$/,"")),e.replace(/\s+/g,"")}function it(r,t,e=`\r
|
|
3
|
+
`){return`-----BEGIN ${t}-----${e}${w(r,64,e)}${e}-----END ${t}-----${e}`}function st(r){let t=r.replace(/[^0-9A-Za-z\/+=]*/g,"");return a(t)}function w(r,t,e=`\r
|
|
4
|
+
`){let n=r;return n=n.replace(new RegExp(`(.{${t}})`,"g"),`$1${e}`),n=n.replace(/\s+$/,""),n}var ut=l(()=>{"use strict";x()});function lt(r){if(r.length%2!==0)throw"input is not even length";if(r.match(/^[0-9A-Fa-f]+$/)==null)throw"input is not hexadecimal";let t=new ArrayBuffer(r.length/2),e=new DataView(t);for(let n=0;n<r.length/2;n++)e.setUint8(n,parseInt(r.substr(n*2,2),16));return t}function ft(r){let t="",e=new DataView(r);for(let n=0;n<r.byteLength;n++)t+=`00${e.getUint8(n).toString(16)}`.slice(-2);return t}var ct=l(()=>{"use strict"});function I(r){let t=r,e,n,o,i,s,g,u,p,m;t=j(t);let f=t.match(/^(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(|\.\d+)Z$/);if(f)return e=parseInt(f[1]),n=parseInt(f[2])-1,o=parseInt(f[3]),i=parseInt(f[4]),s=parseInt(f[5]),g=parseInt(f[6]),u=0,p=f[7],p!==""&&(m=`${p.substr(1)}00`.substr(0,3),u=parseInt(m)),Date.UTC(e,n,o,i,s,g,u);throw new Error(`unsupported zulu format: ${t}`)}function gt(r){let t=new Date(r),e=`0000${t.getUTCFullYear()}`.slice(-4),n=`00${t.getUTCMonth()+1}`.slice(-2),o=`00${t.getUTCDate()}`.slice(-2),i=`00${t.getUTCHours()}`.slice(-2),s=`00${t.getUTCMinutes()}`.slice(-2),g=`00${t.getUTCSeconds()}`.slice(-2),u=`000${t.getUTCMilliseconds()}`.slice(-3);return u=u.replace(/0+$/,""),u=u!==""?`.${u}`:u,`${e+n+o+i+s+g+u}Z`}function at(r){return Math.round(I(r)/1e3)}function pt(r){return new Date(I(r))}function ht(r,t=!1,e=!1){let n,o=r.getUTCFullYear();if(t){if(o<1950||2049<o)throw new Error(`not proper year for UTCTime: ${o}`);n=`${o}`.slice(-2)}else n=`000${o}`.slice(-4);if(n+=`0${r.getUTCMonth()+1}`.slice(-2),n+=`0${r.getUTCDate()}`.slice(-2),n+=`0${r.getUTCHours()}`.slice(-2),n+=`0${r.getUTCMinutes()}`.slice(-2),n+=`0${r.getUTCSeconds()}`.slice(-2),e){let i=r.getUTCMilliseconds();if(i!==0){let s=`00${i}`.slice(-3);s=s.replace(/0+$/g,""),n+=`.${s}`}}return n+="Z",n}function j(r){return r.match(/^[0-9]{12}Z$/)||r.match(/^[0-9]{12}[.][0-9]*Z$/)?r.match(/^[0-4]/)?`20${r}`:`19${r}`:r}var xt=l(()=>{"use strict"});function mt(r){return r.replace(/%/g,"")}function bt(r){return r.replace(/(..)/g,"%$1")}function $t(r){let t=encodeURIComponent(r),e="";for(let n=0;n<t.length;n++)t[n]==="%"?(e=e+t.substr(n,3),n=n+2):e=`${e}%${b(t[n])}`;return e}var dt=l(()=>{"use strict";v()});function A(r){let t=r,e="malformed IPv6 address";if(!t.match(/^[0-9A-Fa-f:]+$/))throw e;t=t.toLowerCase();let n=t.split(":").length-1;if(n<2)throw e;let o=":".repeat(7-n+2);t=t.replace("::",o);let i=t.split(":");if(i.length!==8)throw e;for(let s=0;s<8;s++)i[s]=`0000${i[s]}`.slice(-4);return i.join("")}function S(r){let t=r;if(!t.match(/^[0-9A-Fa-f]{32}$/))throw new Error(`malformed IPv6 address: ${t}`);t=t.toLowerCase();let e=t.match(/.{1,4}/g)||[];e=e.map(i=>i.replace(/^0+/,"")),e=e.map(i=>i===""?"0":i),t=`:${e.join(":")}:`;let n=t.match(/:(0:){2,}/g);if(n==null)return t.slice(1,-1);let o=n.sort().slice(-1)[0];return t=t.replace(o.substr(0,o.length-1),":"),t.substr(0,2)!=="::"&&(t=t.substr(1)),t.substr(-2,2)!=="::"&&(t=t.substr(0,t.length-1)),t}function N(r){let t=new Error("malformed hex value");if(!r.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/))throw t;if(r.length===8){let e;try{return e=`${parseInt(r.substr(0,2),16)}.${parseInt(r.substr(2,2),16)}.${parseInt(r.substr(4,2),16)}.${parseInt(r.substr(6,2),16)}`,e}catch{throw t}}else if(r.length===16)try{return`${N(r.substr(0,8))}/${B(r.substr(8))}`}catch{throw t}else{if(r.length===32)return S(r);if(r.length===64)try{return`${S(r.substr(0,32))}/${B(r.substr(32))}`}catch{throw t}else return r}}function k(r){let t=r,e=new Error("malformed IP address");if(t=t.toLowerCase(),!t.match(/^[0-9a-f.:/]+$/))throw e;if(t.match(/^[0-9.]+$/)){let n=t.split(".");if(n.length!==4)throw e;let o="";try{for(let i=0;i<4;i++){let s=parseInt(n[i]);o+=`0${s.toString(16)}`.slice(-2)}return o}catch{throw e}}else if(t.match(/^[0-9.]+\/[0-9]+$/)){let n=t.split("/");return k(n[0])+C(parseInt(n[1]),32)}else{if(t.match(/^[0-9a-f:]+$/)&&t.indexOf(":")!==-1)return A(t);if(t.match(/^[0-9a-f:]+\/[0-9]+$/)&&t.indexOf(":")!==-1){let n=t.split("/");return A(n[0])+C(parseInt(n[1]),128)}else throw e}}function B(r){let t=new Error("malformed mask"),e;try{e=parseInt(r,16).toString(2)}catch{throw t}if(!e.match(/^1*0*$/))throw t;return e.replace(/0+$/,"").length}function C(r,t){if(t===32&&r===0)return"00000000";if(t===128&&r===0)return"00000000000000000000000000000000";let e=Array(r+1).join("1")+Array(t-r+1).join("0");return parseInt(e,2).toString(16)}var yt=l(()=>{"use strict"});function wt(r){function t(o){let i=parseInt(o.substr(0,2),16),s=parseInt(o.substr(2),16);if(i===0&&s<128)return String.fromCharCode(s);if(i<8){let m=192|(i&7)<<3|(s&192)>>6,f=128|s&63;return c(m.toString(16)+f.toString(16))}let g=224|(i&240)>>4,u=128|(i&15)<<2|(s&192)>>6,p=128|s&63;return c(g.toString(16)+u.toString(16)+p.toString(16))}let e=r.match(/.{4}/g);return e==null?"":e.map(t).join("")}var It=l(()=>{"use strict";x()});var At={};Ut(At,{ArrayBuffertohex:()=>ft,BAtohex:()=>U,BAtos:()=>G,VERSION:()=>zt,aryval:()=>H,b64nltohex:()=>st,b64tob64u:()=>d,b64tohex:()=>a,b64topem:()=>it,b64toutf8:()=>V,b64utob64:()=>y,b64utohex:()=>P,b64utoutf8:()=>L,binstrtobitstr:()=>Q,bitstrtobinstr:()=>W,datetozulu:()=>ht,encodeURIComponentAll:()=>$t,foldnl:()=>w,hextoArrayBuffer:()=>lt,hextoBA:()=>Z,hextob64:()=>h,hextob64u:()=>Y,hextoip:()=>N,hextoipv6:()=>S,hextopem:()=>nt,hextorstr:()=>q,hextouricmp:()=>bt,hextoutf8:()=>c,inttobitstr:()=>D,ipnetmask:()=>C,ipprefixlen:()=>B,iptohex:()=>k,ipv6tohex:()=>A,ishex:()=>F,iso88591hextoutf8:()=>tt,msectozulu:()=>gt,namearraytobinstr:()=>X,pemtob64:()=>z,pemtohex:()=>ot,rstrtob64:()=>K,rstrtohex:()=>J,stoBA:()=>T,stohex:()=>b,strpad:()=>M,timetogen:()=>j,ucs2hextoutf8:()=>wt,uricmptohex:()=>mt,utf8tob64:()=>_,utf8tob64u:()=>O,utf8tohex:()=>$,utf8toiso88591hex:()=>rt,zulutodate:()=>pt,zulutomsec:()=>I,zulutosec:()=>at});var zt,St=l(()=>{"use strict";R();v();x();et();ut();ct();xt();dt();yt();It();zt="typepki-strconv 0.3.0 kjur.github.io/typepki-strconv"});module.exports=(St(),vt(At));
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "typepki-strconv",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"author": "Kenji Urushima <kenji.urushima@gmail.com>",
|
|
5
|
-
"description": "TypeScript string converters and utilities sub module for TypePKI library (
|
|
5
|
+
"description": "TypeScript string converters and utilities sub module for TypePKI library (alpha version)",
|
|
6
6
|
"homepage": "https://kjur.github.io/typepki-strconv",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"jest": "^29.7.0",
|
|
68
68
|
"run-z": "^2.0.0",
|
|
69
69
|
"typedoc": "^0.25.13",
|
|
70
|
+
"typepki-strconv": "^0.2.0",
|
|
70
71
|
"typescript": "^5.4.5"
|
|
71
72
|
}
|
|
72
73
|
}
|
package/src/checker.mts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* function to check if a string is a hexadecimal string
|
|
3
|
+
* @param h hexadecimal string
|
|
4
|
+
* @return checking result
|
|
5
|
+
* @example
|
|
6
|
+
* ishex("12ab") -> true
|
|
7
|
+
* ishex( "2ab") -> false
|
|
8
|
+
* ishex("12zz") -> false
|
|
9
|
+
*/
|
|
10
|
+
export function ishex(h: string): boolean {
|
|
11
|
+
if (h.length % 2 === 1) return false;
|
|
12
|
+
if (h.match(/^[0-9a-f]+$/) == null) return false;
|
|
13
|
+
return true;
|
|
14
|
+
}
|
package/src/conv_ba.mts
CHANGED
|
@@ -11,8 +11,11 @@ export function stohex(s: string): string {
|
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* convert an array of bytes(Number) to hexadecimal string.
|
|
14
|
-
* @param a -
|
|
14
|
+
* @param a - an array of byte
|
|
15
15
|
* @return hexadecimal string
|
|
16
|
+
* @see {@link hextoBA}
|
|
17
|
+
* @example
|
|
18
|
+
* hextoBA([97, 97, 97]) -> "616161"
|
|
16
19
|
*/
|
|
17
20
|
export function BAtohex(a: Array<number>): string {
|
|
18
21
|
let s = "";
|
|
@@ -24,6 +27,22 @@ export function BAtohex(a: Array<number>): string {
|
|
|
24
27
|
return s;
|
|
25
28
|
}
|
|
26
29
|
|
|
30
|
+
/**
|
|
31
|
+
* convert an hexadecimal string to array of numbers.
|
|
32
|
+
* @param h - a hexadecimal string
|
|
33
|
+
* @return array of numbers
|
|
34
|
+
* @see {@link BAtohex}
|
|
35
|
+
* @example
|
|
36
|
+
* hextoBA("616161") -> [97, 97, 97]
|
|
37
|
+
*/
|
|
38
|
+
export function hextoBA(h: string): Array<number> {
|
|
39
|
+
const a: Array<number> = [];
|
|
40
|
+
for (let i = 0; i < h.length; i += 2) {
|
|
41
|
+
a.push(parseInt(h.slice(i, i + 2), 16));
|
|
42
|
+
}
|
|
43
|
+
return a;
|
|
44
|
+
}
|
|
45
|
+
|
|
27
46
|
// ==== string / byte array ================================
|
|
28
47
|
/**
|
|
29
48
|
* convert a string to an array of character codes
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { describe, expect, test } from "bun:test";
|
|
2
|
+
import { BAtohex, hextoBA } from "./conv_ba.mts";
|
|
3
|
+
|
|
4
|
+
test("BAtohex", () => {
|
|
5
|
+
expect(BAtohex([97, 97, 97])).toBe("616161");
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
test("hextoBA", () => {
|
|
9
|
+
expect(hextoBA("616161")).toEqual([97, 97, 97]);
|
|
10
|
+
});
|
package/src/index.mts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
const VERSION: string = "typepki-strconv 0.
|
|
1
|
+
const VERSION: string = "typepki-strconv 0.3.0 kjur.github.io/typepki-strconv";
|
|
2
2
|
export { VERSION };
|
|
3
3
|
|
|
4
|
-
import {
|
|
5
|
-
export {
|
|
4
|
+
import { ishex } from "./checker.mts";
|
|
5
|
+
export { ishex };
|
|
6
|
+
|
|
7
|
+
import { BAtohex, BAtos, hextoBA, stoBA, stohex } from "./conv_ba.mts";
|
|
8
|
+
export { stohex, BAtohex, hextoBA, stoBA, BAtos };
|
|
6
9
|
|
|
7
10
|
import {
|
|
8
11
|
Dictionary,
|